diff options
author | John Crispin <john@openwrt.org> | 2014-12-05 00:20:41 +0000 |
---|---|---|
committer | John Crispin <john@openwrt.org> | 2014-12-05 00:20:41 +0000 |
commit | e553dfc356b7087e362f0daa283239ee01ae81f5 (patch) | |
tree | f91fac0c53ff97a1c3ceabce64fb9dd62933a3d2 /target/linux/oxnas/patches-3.14/010-arm_introduce-dma-fiq-irq-broadcast.patch | |
parent | dcc8a8ca9eac90b3e70104c893464c27e62daed5 (diff) | |
download | master-31e0f0ae-e553dfc356b7087e362f0daa283239ee01ae81f5.tar.gz master-31e0f0ae-e553dfc356b7087e362f0daa283239ee01ae81f5.tar.bz2 master-31e0f0ae-e553dfc356b7087e362f0daa283239ee01ae81f5.zip |
oxnas: re-add support for kernel 3.14
This reverts commit c81ddddde5fd193802d511b42eb7b108aac17136 on
https://gitorious.org/openwrt-oxnas/openwrt-oxnas.git
which removed patches and config for 3.14.
[arm_introduce-dma-fiq-irq-broadcast patch was renamed to match 3.18]
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
SVN-Revision: 43520
Diffstat (limited to 'target/linux/oxnas/patches-3.14/010-arm_introduce-dma-fiq-irq-broadcast.patch')
-rw-r--r-- | target/linux/oxnas/patches-3.14/010-arm_introduce-dma-fiq-irq-broadcast.patch | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/target/linux/oxnas/patches-3.14/010-arm_introduce-dma-fiq-irq-broadcast.patch b/target/linux/oxnas/patches-3.14/010-arm_introduce-dma-fiq-irq-broadcast.patch new file mode 100644 index 0000000000..ed01fe128e --- /dev/null +++ b/target/linux/oxnas/patches-3.14/010-arm_introduce-dma-fiq-irq-broadcast.patch @@ -0,0 +1,62 @@ +Index: linux-3.14.18/arch/arm/include/asm/glue-cache.h +=================================================================== +--- linux-3.14.18.orig/arch/arm/include/asm/glue-cache.h ++++ linux-3.14.18/arch/arm/include/asm/glue-cache.h +@@ -156,11 +156,19 @@ extern inline void nop_dma_unmap_area(co + #define __cpuc_flush_user_range __glue(_CACHE,_flush_user_cache_range) + #define __cpuc_coherent_kern_range __glue(_CACHE,_coherent_kern_range) + #define __cpuc_coherent_user_range __glue(_CACHE,_coherent_user_range) ++#ifndef CONFIG_DMA_CACHE_FIQ_BROADCAST + #define __cpuc_flush_dcache_area __glue(_CACHE,_flush_kern_dcache_area) + + #define dmac_map_area __glue(_CACHE,_dma_map_area) + #define dmac_unmap_area __glue(_CACHE,_dma_unmap_area) + #define dmac_flush_range __glue(_CACHE,_dma_flush_range) ++#else ++#define __cpuc_flush_dcache_area __glue(fiq,_flush_kern_dcache_area) ++ ++#define dmac_map_area __glue(fiq,_dma_map_area) ++#define dmac_unmap_area __glue(fiq,_dma_unmap_area) ++#define dmac_flush_range __glue(fiq,_dma_flush_range) ++#endif /* CONFIG_DMA_CACHE_FIQ_BROADCAST */ + #endif + + #endif +Index: linux-3.14.18/arch/arm/mm/Kconfig +=================================================================== +--- linux-3.14.18.orig/arch/arm/mm/Kconfig ++++ linux-3.14.18/arch/arm/mm/Kconfig +@@ -843,6 +843,17 @@ config DMA_CACHE_RWFO + in hardware, other workarounds are needed (e.g. cache + maintenance broadcasting in software via FIQ). + ++config DMA_CACHE_FIQ_BROADCAST ++ bool "Enable fiq broadcast DMA cache maintenance" ++ depends on CPU_V6K && SMP ++ select FIQ ++ help ++ The Snoop Control Unit on ARM11MPCore does not detect the ++ cache maintenance operations and the dma_{map,unmap}_area() ++ functions may leave stale cache entries on other CPUs. By ++ enabling this option, fiq broadcast in the ARMv6 ++ DMA cache maintenance functions is performed. ++ + config OUTER_CACHE + bool + +Index: linux-3.14.18/arch/arm/mm/flush.c +=================================================================== +--- linux-3.14.18.orig/arch/arm/mm/flush.c ++++ linux-3.14.18/arch/arm/mm/flush.c +@@ -291,7 +291,11 @@ void flush_dcache_page(struct page *page + + mapping = page_mapping(page); + ++#ifndef CONFIG_DMA_CACHE_FIQ_BROADCAST + if (!cache_ops_need_broadcast() && ++#else ++ if ( ++#endif + mapping && !page_mapped(page)) + clear_bit(PG_dcache_clean, &page->flags); + else { |