diff options
author | Felix Fietkau <nbd@openwrt.org> | 2013-08-15 09:23:07 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2013-08-15 09:23:07 +0000 |
commit | c03bfe942c42f987ea7044212de5dcdc894946cf (patch) | |
tree | 6864c8d969134283e73c35fa5ee36df299c7df7a /target/linux/generic/patches-3.10/131-improve_noncoherent_dma_checks.patch | |
parent | 8ec906f328d3c80c8e30149c7663c7255e645f6a (diff) | |
download | upstream-c03bfe942c42f987ea7044212de5dcdc894946cf.tar.gz upstream-c03bfe942c42f987ea7044212de5dcdc894946cf.tar.bz2 upstream-c03bfe942c42f987ea7044212de5dcdc894946cf.zip |
kernel: improve dma ops inlining patches
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@37790 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/generic/patches-3.10/131-improve_noncoherent_dma_checks.patch')
-rw-r--r-- | target/linux/generic/patches-3.10/131-improve_noncoherent_dma_checks.patch | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/target/linux/generic/patches-3.10/131-improve_noncoherent_dma_checks.patch b/target/linux/generic/patches-3.10/131-improve_noncoherent_dma_checks.patch new file mode 100644 index 0000000000..c18e7a3e21 --- /dev/null +++ b/target/linux/generic/patches-3.10/131-improve_noncoherent_dma_checks.patch @@ -0,0 +1,89 @@ +From d593f8fc627f8cdaee9c14e4d22b0770a09baaf1 Mon Sep 17 00:00:00 2001 +From: Felix Fietkau <nbd@openwrt.org> +Date: Thu, 15 Aug 2013 10:47:47 +0200 +Subject: [PATCH] MIPS: improve checks for noncoherent DMA + +Only one MIPS development board actually supports enabling/disabling DMA +coherency at runtime, so it's not a good idea to push the overhead of +checking that configuration setting onto every other supported target as +well. + +Signed-off-by: Felix Fietkau <nbd@openwrt.org> +--- + arch/mips/Kconfig | 6 +++++- + arch/mips/include/asm/dma-coherence.h | 7 +++++++ + arch/mips/include/asm/mach-generic/dma-coherence.h | 4 ---- + arch/mips/mm/dma-default.c | 2 ++ + 4 files changed, 14 insertions(+), 5 deletions(-) + +--- a/arch/mips/Kconfig ++++ b/arch/mips/Kconfig +@@ -296,7 +296,7 @@ config MIPS_MALTA + select CEVT_R4K + select CSRC_R4K + select CSRC_GIC +- select DMA_NONCOHERENT ++ select DMA_MAYBE_COHERENT + select GENERIC_ISA_DMA + select HAVE_PCSPKR_PLATFORM + select IRQ_CPU +@@ -947,6 +947,10 @@ config FW_CFE + config ARCH_DMA_ADDR_T_64BIT + def_bool (HIGHMEM && 64BIT_PHYS_ADDR) || 64BIT + ++config DMA_MAYBE_COHERENT ++ select DMA_NONCOHERENT ++ bool ++ + config DMA_COHERENT + bool + +--- a/arch/mips/include/asm/dma-coherence.h ++++ b/arch/mips/include/asm/dma-coherence.h +@@ -9,7 +9,14 @@ + #ifndef __ASM_DMA_COHERENCE_H + #define __ASM_DMA_COHERENCE_H + ++#ifdef CONFIG_DMA_MAYBE_COHERENT + extern int coherentio; + extern int hw_coherentio; ++#elif defined(CONFIG_DMA_COHERENT) ++#define coherentio 1 ++#else ++#define coherentio 0 ++#endif ++#define hw_coherentio 0 + + #endif +--- a/arch/mips/include/asm/mach-generic/dma-coherence.h ++++ b/arch/mips/include/asm/mach-generic/dma-coherence.h +@@ -49,11 +49,7 @@ static inline int plat_dma_supported(str + + static inline int plat_device_is_coherent(struct device *dev) + { +-#ifdef CONFIG_DMA_COHERENT +- return 1; +-#else + return coherentio; +-#endif + } + + #endif /* __ASM_MACH_GENERIC_DMA_COHERENCE_H */ +--- a/arch/mips/mm/dma-default.c ++++ b/arch/mips/mm/dma-default.c +@@ -22,6 +22,7 @@ + + #include <dma-coherence.h> + ++#ifdef CONFIG_DMA_MAYBE_COHERENT + int coherentio = 0; /* User defined DMA coherency from command line. */ + EXPORT_SYMBOL_GPL(coherentio); + int hw_coherentio = 0; /* Actual hardware supported DMA coherency setting. */ +@@ -41,6 +42,7 @@ static int __init setnocoherentio(char * + return 0; + } + early_param("nocoherentio", setnocoherentio); ++#endif + + static inline struct page *dma_addr_to_page(struct device *dev, + dma_addr_t dma_addr) |