Xtensa fixes for v4.13-rc4
- use asm-generic instances of asm/param.h and asm/device.h instead of exact copies in arch/xtensa/include/asm; - fix build error for xtensa cores with aliasing WT cache: define cache flushing functions and copy_{to,from}_user_page; - add missing EXPORT_SYMBOLs for clear_user_highpage, copy_user_highpage, flush_dcache_page, local_flush_cache_range, local_flush_cache_page, csum_partial and csum_partial_copy_generic. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABAgAGBQJZiOctAAoJEFH5zJH4P6BEqsMQAIgyKC3QvZpJWzKRe4ET0sdr cKH5/XOsk1C0TiBkG0O3+BrvfYSnK+qdksByI/KjuP2BCPqH8iwGiY8zvSHP+m7S xRqivIp6J+N9jZGn4buxdAQ6zgqS1MtKwZkp3H1LtfIPh7jXTn9HvSrG+4jqhXNl Jjejd4so/m7XSrbCgMEt98WoFSPJ1QUVmPmTdOdEbv4Q+4Vf15mqnoMQ/L8uBu0o dqmSRYp3zUKNU2kr1DC56x56OVD6WRr9jxaaW0MtuUxG01YBfy3PELxbHmEFJi0X Po1TRF06B42Z1+6MVQR8R1um7cHM8PyHZh+WBCEpvDhfUUslKtKpZkKfSkLdskTv Cyf6h2hazCYA1Tmtirk2IKkJuzXvLh3639X/jXsC27t5NGX43gJ/3mm+PfEX5h0r Lm+dMsghFXLR3v+hNv1xv8w3lSZcRnrAaTTBnehgUNCwHMyToUqEQgHpIhH0LrjY +z813FeLaCwekhbFXoYCJLngwJ6RKPeDNyhebcvYwC66btIr/SYLcZS4ysFA5HQw qTAHghdaMlGjkqXYYc6OLHDHbEKIhhfk3qVHe/fYPtxrb4QxZId0aiLMehRrKWCD 440PE4TmkkPFU4Rfn2/um90lQS/69RouWVbyethHhYrLrq68qmpH9/ukB76phroU TN/MK50EjZ+v5ZHUSUVH =I9hz -----END PGP SIGNATURE----- Merge tag 'xtensa-20170807' of git://github.com/jcmvbkbc/linux-xtensa Pull Xtensa fixes from Max Filippov: - use asm-generic instances of asm/param.h and asm/device.h instead of exact copies in arch/xtensa/include/asm; - fix build error for xtensa cores with aliasing WT cache: define cache flushing functions and copy_{to,from}_user_page; - add missing EXPORT_SYMBOLs for clear_user_highpage, copy_user_highpage, flush_dcache_page, local_flush_cache_range, local_flush_cache_page, csum_partial and csum_partial_copy_generic. * tag 'xtensa-20170807' of git://github.com/jcmvbkbc/linux-xtensa: xtensa: mm/cache: add missing EXPORT_SYMBOLs xtensa: don't limit csum_partial export by CONFIG_NET xtensa: fix cache aliasing handling code for WT cache xtensa: remove wrapper header for asm/param.h xtensa: remove wrapper header for asm/device.h
This commit is contained in:
commit
623ce34566
|
@ -1,5 +1,6 @@
|
||||||
generic-y += bug.h
|
generic-y += bug.h
|
||||||
generic-y += clkdev.h
|
generic-y += clkdev.h
|
||||||
|
generic-y += device.h
|
||||||
generic-y += div64.h
|
generic-y += div64.h
|
||||||
generic-y += dma-contiguous.h
|
generic-y += dma-contiguous.h
|
||||||
generic-y += emergency-restart.h
|
generic-y += emergency-restart.h
|
||||||
|
@ -17,6 +18,7 @@ generic-y += local.h
|
||||||
generic-y += local64.h
|
generic-y += local64.h
|
||||||
generic-y += mcs_spinlock.h
|
generic-y += mcs_spinlock.h
|
||||||
generic-y += mm-arch-hooks.h
|
generic-y += mm-arch-hooks.h
|
||||||
|
generic-y += param.h
|
||||||
generic-y += percpu.h
|
generic-y += percpu.h
|
||||||
generic-y += preempt.h
|
generic-y += preempt.h
|
||||||
generic-y += rwsem.h
|
generic-y += rwsem.h
|
||||||
|
|
|
@ -1,15 +0,0 @@
|
||||||
/*
|
|
||||||
* Arch specific extensions to struct device
|
|
||||||
*
|
|
||||||
* This file is released under the GPLv2
|
|
||||||
*/
|
|
||||||
#ifndef _ASM_XTENSA_DEVICE_H
|
|
||||||
#define _ASM_XTENSA_DEVICE_H
|
|
||||||
|
|
||||||
struct dev_archdata {
|
|
||||||
};
|
|
||||||
|
|
||||||
struct pdev_archdata {
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif /* _ASM_XTENSA_DEVICE_H */
|
|
|
@ -1,18 +0,0 @@
|
||||||
/*
|
|
||||||
* include/asm-xtensa/param.h
|
|
||||||
*
|
|
||||||
* This file is subject to the terms and conditions of the GNU General Public
|
|
||||||
* License. See the file "COPYING" in the main directory of this archive
|
|
||||||
* for more details.
|
|
||||||
*
|
|
||||||
* Copyright (C) 2001 - 2005 Tensilica Inc.
|
|
||||||
*/
|
|
||||||
#ifndef _XTENSA_PARAM_H
|
|
||||||
#define _XTENSA_PARAM_H
|
|
||||||
|
|
||||||
#include <uapi/asm/param.h>
|
|
||||||
|
|
||||||
# define HZ CONFIG_HZ /* internal timer frequency */
|
|
||||||
# define USER_HZ 100 /* for user interfaces in "ticks" */
|
|
||||||
# define CLOCKS_PER_SEC (USER_HZ) /* frequnzy at which times() counts */
|
|
||||||
#endif /* _XTENSA_PARAM_H */
|
|
|
@ -94,13 +94,11 @@ unsigned long __sync_fetch_and_or_4(unsigned long *p, unsigned long v)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(__sync_fetch_and_or_4);
|
EXPORT_SYMBOL(__sync_fetch_and_or_4);
|
||||||
|
|
||||||
#ifdef CONFIG_NET
|
|
||||||
/*
|
/*
|
||||||
* Networking support
|
* Networking support
|
||||||
*/
|
*/
|
||||||
EXPORT_SYMBOL(csum_partial);
|
EXPORT_SYMBOL(csum_partial);
|
||||||
EXPORT_SYMBOL(csum_partial_copy_generic);
|
EXPORT_SYMBOL(csum_partial_copy_generic);
|
||||||
#endif /* CONFIG_NET */
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Architecture-specific symbols
|
* Architecture-specific symbols
|
||||||
|
|
|
@ -103,6 +103,7 @@ void clear_user_highpage(struct page *page, unsigned long vaddr)
|
||||||
clear_page_alias(kvaddr, paddr);
|
clear_page_alias(kvaddr, paddr);
|
||||||
preempt_enable();
|
preempt_enable();
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(clear_user_highpage);
|
||||||
|
|
||||||
void copy_user_highpage(struct page *dst, struct page *src,
|
void copy_user_highpage(struct page *dst, struct page *src,
|
||||||
unsigned long vaddr, struct vm_area_struct *vma)
|
unsigned long vaddr, struct vm_area_struct *vma)
|
||||||
|
@ -119,10 +120,7 @@ void copy_user_highpage(struct page *dst, struct page *src,
|
||||||
copy_page_alias(dst_vaddr, src_vaddr, dst_paddr, src_paddr);
|
copy_page_alias(dst_vaddr, src_vaddr, dst_paddr, src_paddr);
|
||||||
preempt_enable();
|
preempt_enable();
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(copy_user_highpage);
|
||||||
#endif /* DCACHE_WAY_SIZE > PAGE_SIZE */
|
|
||||||
|
|
||||||
#if (DCACHE_WAY_SIZE > PAGE_SIZE) && XCHAL_DCACHE_IS_WRITEBACK
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Any time the kernel writes to a user page cache page, or it is about to
|
* Any time the kernel writes to a user page cache page, or it is about to
|
||||||
|
@ -176,7 +174,7 @@ void flush_dcache_page(struct page *page)
|
||||||
|
|
||||||
/* There shouldn't be an entry in the cache for this page anymore. */
|
/* There shouldn't be an entry in the cache for this page anymore. */
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(flush_dcache_page);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* For now, flush the whole cache. FIXME??
|
* For now, flush the whole cache. FIXME??
|
||||||
|
@ -188,6 +186,7 @@ void local_flush_cache_range(struct vm_area_struct *vma,
|
||||||
__flush_invalidate_dcache_all();
|
__flush_invalidate_dcache_all();
|
||||||
__invalidate_icache_all();
|
__invalidate_icache_all();
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(local_flush_cache_range);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Remove any entry in the cache for this page.
|
* Remove any entry in the cache for this page.
|
||||||
|
@ -207,8 +206,9 @@ void local_flush_cache_page(struct vm_area_struct *vma, unsigned long address,
|
||||||
__flush_invalidate_dcache_page_alias(virt, phys);
|
__flush_invalidate_dcache_page_alias(virt, phys);
|
||||||
__invalidate_icache_page_alias(virt, phys);
|
__invalidate_icache_page_alias(virt, phys);
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(local_flush_cache_page);
|
||||||
|
|
||||||
#endif
|
#endif /* DCACHE_WAY_SIZE > PAGE_SIZE */
|
||||||
|
|
||||||
void
|
void
|
||||||
update_mmu_cache(struct vm_area_struct * vma, unsigned long addr, pte_t *ptep)
|
update_mmu_cache(struct vm_area_struct * vma, unsigned long addr, pte_t *ptep)
|
||||||
|
@ -225,7 +225,7 @@ update_mmu_cache(struct vm_area_struct * vma, unsigned long addr, pte_t *ptep)
|
||||||
|
|
||||||
flush_tlb_page(vma, addr);
|
flush_tlb_page(vma, addr);
|
||||||
|
|
||||||
#if (DCACHE_WAY_SIZE > PAGE_SIZE) && XCHAL_DCACHE_IS_WRITEBACK
|
#if (DCACHE_WAY_SIZE > PAGE_SIZE)
|
||||||
|
|
||||||
if (!PageReserved(page) && test_bit(PG_arch_1, &page->flags)) {
|
if (!PageReserved(page) && test_bit(PG_arch_1, &page->flags)) {
|
||||||
unsigned long phys = page_to_phys(page);
|
unsigned long phys = page_to_phys(page);
|
||||||
|
@ -256,7 +256,7 @@ update_mmu_cache(struct vm_area_struct * vma, unsigned long addr, pte_t *ptep)
|
||||||
* flush_dcache_page() on the page.
|
* flush_dcache_page() on the page.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if (DCACHE_WAY_SIZE > PAGE_SIZE) && XCHAL_DCACHE_IS_WRITEBACK
|
#if (DCACHE_WAY_SIZE > PAGE_SIZE)
|
||||||
|
|
||||||
void copy_to_user_page(struct vm_area_struct *vma, struct page *page,
|
void copy_to_user_page(struct vm_area_struct *vma, struct page *page,
|
||||||
unsigned long vaddr, void *dst, const void *src,
|
unsigned long vaddr, void *dst, const void *src,
|
||||||
|
|
Loading…
Reference in New Issue