diff options
author | Daniel Golle <daniel@makrotopia.org> | 2016-06-23 13:42:20 +0200 |
---|---|---|
committer | Zoltan HERPAI <wigyori@uid0.hu> | 2016-06-23 13:42:20 +0200 |
commit | c6c0c05c434e0e7ddb8741f934e2f34e90bec27c (patch) | |
tree | 10c82770a464a03d1de42eee6d97ebb124f3f8b6 /target | |
parent | 5fdc19893e17ef93dd1f8c08e240f6dc3bbd5186 (diff) | |
download | master-187ad058-c6c0c05c434e0e7ddb8741f934e2f34e90bec27c.tar.gz master-187ad058-c6c0c05c434e0e7ddb8741f934e2f34e90bec27c.tar.bz2 master-187ad058-c6c0c05c434e0e7ddb8741f934e2f34e90bec27c.zip |
oxnas: sync 010-arm_introduce-dma-fiq-irq-broadcast with cns3xxx
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
Diffstat (limited to 'target')
-rw-r--r-- | target/linux/oxnas/patches-4.4/010-arm_introduce-dma-fiq-irq-broadcast.patch | 42 |
1 files changed, 27 insertions, 15 deletions
diff --git a/target/linux/oxnas/patches-4.4/010-arm_introduce-dma-fiq-irq-broadcast.patch b/target/linux/oxnas/patches-4.4/010-arm_introduce-dma-fiq-irq-broadcast.patch index b59c06e2ab..024675e599 100644 --- a/target/linux/oxnas/patches-4.4/010-arm_introduce-dma-fiq-irq-broadcast.patch +++ b/target/linux/oxnas/patches-4.4/010-arm_introduce-dma-fiq-irq-broadcast.patch @@ -4,15 +4,17 @@ #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 __cpuc_flush_dcache_area __glue(_CACHE,_flush_kern_dcache_area) - #define dmac_flush_range __glue(_CACHE,_dma_flush_range) +-#define dmac_flush_range __glue(_CACHE,_dma_flush_range) ++#ifndef CONFIG_DMA_CACHE_FIQ_BROADCAST ++# define __cpuc_flush_dcache_area __glue(_CACHE,_flush_kern_dcache_area) ++# define dmac_flush_range __glue(_CACHE,_dma_flush_range) +#else -+#define __cpuc_flush_dcache_area __glue(fiq,_flush_kern_dcache_area) ++# define __cpuc_flush_dcache_area __glue(fiq,_flush_kern_dcache_area) ++# define dmac_flush_range __glue(fiq,_dma_flush_range) ++#endif + -+#define dmac_flush_range __glue(fiq,_dma_flush_range) -+#endif /* CONFIG_DMA_CACHE_FIQ_BROADCAST */ #endif #endif @@ -38,15 +40,23 @@ --- a/arch/arm/mm/flush.c +++ b/arch/arm/mm/flush.c -@@ -329,7 +329,11 @@ void flush_dcache_page(struct page *page +@@ -319,6 +319,7 @@ void __sync_icache_dcache(pte_t pteval) + void flush_dcache_page(struct page *page) + { + struct address_space *mapping; ++ bool skip_broadcast = true; + + /* + * The zero page is never written to, so never has any dirty +@@ -329,7 +330,10 @@ void flush_dcache_page(struct page *page mapping = page_mapping(page); +- if (!cache_ops_need_broadcast() && +#ifndef CONFIG_DMA_CACHE_FIQ_BROADCAST - if (!cache_ops_need_broadcast() && -+#else -+ if ( ++ skip_broadcast = !cache_ops_need_broadcast(); +#endif ++ if (skip_broadcast && mapping && !page_mapped(page)) clear_bit(PG_dcache_clean, &page->flags); else { @@ -56,13 +66,15 @@ #include <asm/glue-cache.h> #ifndef MULTI_CACHE +-#define dmac_map_area __glue(_CACHE,_dma_map_area) +-#define dmac_unmap_area __glue(_CACHE,_dma_unmap_area) +#ifndef CONFIG_DMA_CACHE_FIQ_BROADCAST - #define dmac_map_area __glue(_CACHE,_dma_map_area) - #define dmac_unmap_area __glue(_CACHE,_dma_unmap_area) ++# define dmac_map_area __glue(_CACHE,_dma_map_area) ++# define dmac_unmap_area __glue(_CACHE,_dma_unmap_area) +#else -+#define dmac_map_area __glue(fiq,_dma_map_area) -+#define dmac_unmap_area __glue(fiq,_dma_unmap_area) -+#endif /* CONFIG_DMA_CACHE_FIQ_BROADCAST */ ++# define dmac_map_area __glue(fiq,_dma_map_area) ++# define dmac_unmap_area __glue(fiq,_dma_unmap_area) ++#endif /* * These are private to the dma-mapping API. Do not use directly. |