Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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

+10 -43
+2
arch/xtensa/include/asm/Kbuild
··· 1 1 generic-y += bug.h 2 2 generic-y += clkdev.h 3 + generic-y += device.h 3 4 generic-y += div64.h 4 5 generic-y += dma-contiguous.h 5 6 generic-y += emergency-restart.h ··· 18 17 generic-y += local64.h 19 18 generic-y += mcs_spinlock.h 20 19 generic-y += mm-arch-hooks.h 20 + generic-y += param.h 21 21 generic-y += percpu.h 22 22 generic-y += preempt.h 23 23 generic-y += rwsem.h
-15
arch/xtensa/include/asm/device.h
··· 1 - /* 2 - * Arch specific extensions to struct device 3 - * 4 - * This file is released under the GPLv2 5 - */ 6 - #ifndef _ASM_XTENSA_DEVICE_H 7 - #define _ASM_XTENSA_DEVICE_H 8 - 9 - struct dev_archdata { 10 - }; 11 - 12 - struct pdev_archdata { 13 - }; 14 - 15 - #endif /* _ASM_XTENSA_DEVICE_H */
-18
arch/xtensa/include/asm/param.h
··· 1 - /* 2 - * include/asm-xtensa/param.h 3 - * 4 - * This file is subject to the terms and conditions of the GNU General Public 5 - * License. See the file "COPYING" in the main directory of this archive 6 - * for more details. 7 - * 8 - * Copyright (C) 2001 - 2005 Tensilica Inc. 9 - */ 10 - #ifndef _XTENSA_PARAM_H 11 - #define _XTENSA_PARAM_H 12 - 13 - #include <uapi/asm/param.h> 14 - 15 - # define HZ CONFIG_HZ /* internal timer frequency */ 16 - # define USER_HZ 100 /* for user interfaces in "ticks" */ 17 - # define CLOCKS_PER_SEC (USER_HZ) /* frequnzy at which times() counts */ 18 - #endif /* _XTENSA_PARAM_H */
-2
arch/xtensa/kernel/xtensa_ksyms.c
··· 94 94 } 95 95 EXPORT_SYMBOL(__sync_fetch_and_or_4); 96 96 97 - #ifdef CONFIG_NET 98 97 /* 99 98 * Networking support 100 99 */ 101 100 EXPORT_SYMBOL(csum_partial); 102 101 EXPORT_SYMBOL(csum_partial_copy_generic); 103 - #endif /* CONFIG_NET */ 104 102 105 103 /* 106 104 * Architecture-specific symbols
+8 -8
arch/xtensa/mm/cache.c
··· 103 103 clear_page_alias(kvaddr, paddr); 104 104 preempt_enable(); 105 105 } 106 + EXPORT_SYMBOL(clear_user_highpage); 106 107 107 108 void copy_user_highpage(struct page *dst, struct page *src, 108 109 unsigned long vaddr, struct vm_area_struct *vma) ··· 120 119 copy_page_alias(dst_vaddr, src_vaddr, dst_paddr, src_paddr); 121 120 preempt_enable(); 122 121 } 123 - 124 - #endif /* DCACHE_WAY_SIZE > PAGE_SIZE */ 125 - 126 - #if (DCACHE_WAY_SIZE > PAGE_SIZE) && XCHAL_DCACHE_IS_WRITEBACK 122 + EXPORT_SYMBOL(copy_user_highpage); 127 123 128 124 /* 129 125 * Any time the kernel writes to a user page cache page, or it is about to ··· 174 176 175 177 /* There shouldn't be an entry in the cache for this page anymore. */ 176 178 } 177 - 179 + EXPORT_SYMBOL(flush_dcache_page); 178 180 179 181 /* 180 182 * For now, flush the whole cache. FIXME?? ··· 186 188 __flush_invalidate_dcache_all(); 187 189 __invalidate_icache_all(); 188 190 } 191 + EXPORT_SYMBOL(local_flush_cache_range); 189 192 190 193 /* 191 194 * Remove any entry in the cache for this page. ··· 206 207 __flush_invalidate_dcache_page_alias(virt, phys); 207 208 __invalidate_icache_page_alias(virt, phys); 208 209 } 210 + EXPORT_SYMBOL(local_flush_cache_page); 209 211 210 - #endif 212 + #endif /* DCACHE_WAY_SIZE > PAGE_SIZE */ 211 213 212 214 void 213 215 update_mmu_cache(struct vm_area_struct * vma, unsigned long addr, pte_t *ptep) ··· 225 225 226 226 flush_tlb_page(vma, addr); 227 227 228 - #if (DCACHE_WAY_SIZE > PAGE_SIZE) && XCHAL_DCACHE_IS_WRITEBACK 228 + #if (DCACHE_WAY_SIZE > PAGE_SIZE) 229 229 230 230 if (!PageReserved(page) && test_bit(PG_arch_1, &page->flags)) { 231 231 unsigned long phys = page_to_phys(page); ··· 256 256 * flush_dcache_page() on the page. 257 257 */ 258 258 259 - #if (DCACHE_WAY_SIZE > PAGE_SIZE) && XCHAL_DCACHE_IS_WRITEBACK 259 + #if (DCACHE_WAY_SIZE > PAGE_SIZE) 260 260 261 261 void copy_to_user_page(struct vm_area_struct *vma, struct page *page, 262 262 unsigned long vaddr, void *dst, const void *src,