+From 2c58080407554e1bac8fd50d23cb02420524caed Mon Sep 17 00:00:00 2001
+From: Felix Fietkau <nbd@openwrt.org>
+Date: Mon, 12 Aug 2013 12:50:22 +0200
+Subject: [PATCH] MIPS: partially inline dma ops
+
+Several DMA ops are no-op on many platforms, and the indirection through
+the mips_dma_map_ops function table is causing the compiler to emit
+unnecessary code.
+
+Inlining visibly improves network performance in my tests (on a 24Kc
+based system), and also slightly reduces code size of a few drivers.
+
+Signed-off-by: Felix Fietkau <nbd@openwrt.org>
+---
+ arch/mips/Kconfig | 4 +
+ arch/mips/include/asm/dma-mapping.h | 360 +++++++++++++++++++++++++++++++++++-
+ arch/mips/mm/dma-default.c | 163 ++--------------
+ 3 files changed, 373 insertions(+), 154 deletions(-)
+
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
-@@ -1377,6 +1377,7 @@ config CPU_CAVIUM_OCTEON
+@@ -1145,6 +1145,7 @@ config CPU_LOONGSON2F
+ depends on SYS_HAS_CPU_LOONGSON2F
+ select CPU_LOONGSON2
+ select ARCH_REQUIRE_GPIOLIB
++ select SYS_HAS_DMA_OPS
+ help
+ The Loongson 2F processor implements the MIPS III instruction set
+ with many extensions.
+@@ -1377,6 +1378,7 @@ config CPU_CAVIUM_OCTEON
select LIBFDT
select USE_OF
select USB_EHCI_BIG_ENDIAN_MMIO
help
The Cavium Octeon processor is a highly integrated chip containing
many ethernet hardware widgets for networking tasks. The processor
-@@ -1599,6 +1600,9 @@ config SYS_HAS_CPU_XLR
+@@ -1599,6 +1601,9 @@ config SYS_HAS_CPU_XLR
config SYS_HAS_CPU_XLP
bool
config CEVT_BCM1480
bool
-@@ -2349,6 +2346,18 @@ config USE_OF
+@@ -2350,6 +2347,18 @@ config USE_OF
select OF_EARLY_FLATTREE
select IRQ_DOMAIN
-Index: linux-3.14.16/arch/mips/boot/compressed/string.c
-===================================================================
---- linux-3.14.16.orig/arch/mips/boot/compressed/string.c 2014-08-07 16:50:59.000000000 -0700
-+++ linux-3.14.16/arch/mips/boot/compressed/string.c 2014-10-23 16:42:01.015003995 -0700
-@@ -26,3 +26,19 @@
+--- a/arch/mips/boot/compressed/string.c
++++ b/arch/mips/boot/compressed/string.c
+@@ -26,3 +26,19 @@ void *memset(void *s, int c, size_t n)
ss[i] = c;
return s;
}
+From 2c58080407554e1bac8fd50d23cb02420524caed Mon Sep 17 00:00:00 2001
+From: Felix Fietkau <nbd@openwrt.org>
+Date: Mon, 12 Aug 2013 12:50:22 +0200
+Subject: [PATCH] MIPS: partially inline dma ops
+
+Several DMA ops are no-op on many platforms, and the indirection through
+the mips_dma_map_ops function table is causing the compiler to emit
+unnecessary code.
+
+Inlining visibly improves network performance in my tests (on a 24Kc
+based system), and also slightly reduces code size of a few drivers.
+
+Signed-off-by: Felix Fietkau <nbd@openwrt.org>
+---
+ arch/mips/Kconfig | 4 +
+ arch/mips/include/asm/dma-mapping.h | 360 +++++++++++++++++++++++++++++++++++-
+ arch/mips/mm/dma-default.c | 163 ++--------------
+ 3 files changed, 373 insertions(+), 154 deletions(-)
+
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -1620,6 +1620,9 @@ config SYS_HAS_CPU_XLR
+From 2c58080407554e1bac8fd50d23cb02420524caed Mon Sep 17 00:00:00 2001
+From: Felix Fietkau <nbd@openwrt.org>
+Date: Mon, 12 Aug 2013 12:50:22 +0200
+Subject: [PATCH] MIPS: partially inline dma ops
+
+Several DMA ops are no-op on many platforms, and the indirection through
+the mips_dma_map_ops function table is causing the compiler to emit
+unnecessary code.
+
+Inlining visibly improves network performance in my tests (on a 24Kc
+based system), and also slightly reduces code size of a few drivers.
+
+Signed-off-by: Felix Fietkau <nbd@openwrt.org>
+---
+ arch/mips/Kconfig | 4 +
+ arch/mips/include/asm/dma-mapping.h | 360 +++++++++++++++++++++++++++++++++++-
+ arch/mips/mm/dma-default.c | 163 ++--------------
+ 3 files changed, 373 insertions(+), 154 deletions(-)
+
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
-@@ -1705,6 +1705,9 @@ config MIPS_MALTA_PM
+@@ -1450,6 +1450,7 @@ config CPU_CAVIUM_OCTEON
+ select CPU_SUPPORTS_HUGEPAGES
+ select USB_EHCI_BIG_ENDIAN_MMIO
+ select MIPS_L1_CACHE_SHIFT_7
++ select SYS_HAS_DMA_OPS
+ help
+ The Cavium Octeon processor is a highly integrated chip containing
+ many ethernet hardware widgets for networking tasks. The processor
+@@ -1705,6 +1706,9 @@ config MIPS_MALTA_PM
bool
default y
config CEVT_BCM1480
bool
-@@ -2492,6 +2489,18 @@ config USE_OF
+@@ -2493,6 +2490,18 @@ config USE_OF
config BUILTIN_DTB
bool
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
-@@ -2484,6 +2484,20 @@ config MIPS_O32_FP64_SUPPORT
+@@ -2485,6 +2485,20 @@ config MIPS_O32_FP64_SUPPORT
If unsure, say N.