diff options
author | Hauke Mehrtens <hauke@hauke-m.de> | 2017-10-29 19:32:10 +0100 |
---|---|---|
committer | Hauke Mehrtens <hauke@hauke-m.de> | 2017-12-16 22:11:19 +0100 |
commit | b3f95490b9bec020314eb32016988ee262d52884 (patch) | |
tree | f8289c19587108bb3b687575776f559eee6f01fd /target/linux/generic/pending-4.14/341-MIPS-mm-remove-no-op-dma_map_ops-where-possible.patch | |
parent | a362df6f253e4460504fd870d6a7af40ef86ad70 (diff) | |
download | upstream-b3f95490b9bec020314eb32016988ee262d52884.tar.gz upstream-b3f95490b9bec020314eb32016988ee262d52884.tar.bz2 upstream-b3f95490b9bec020314eb32016988ee262d52884.zip |
kernel: generic: Add kernel 4.14 support
This adds initial support for kernel 4.14 based on the patches for
kernel 4.9.
In the configuration I deactivated some of the new possible security
features like:
CONFIG_REFCOUNT_FULL
CONFIG_SLAB_FREELIST_HARDENED
CONFIG_SOFTLOCKUP_DETECTOR
CONFIG_WARN_ALL_UNSEEDED_RANDOM
And these overlay FS options are also deactivated:
CONFIG_OVERLAY_FS_INDEX
CONFIG_OVERLAY_FS_REDIRECT_DIR
I activated this:
CONFIG_FORTIFY_SOURCE
CONFIG_POSIX_TIMERS
CONFIG_SLAB_MERGE_DEFAULT
CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED
I am not sure if I did the porting correct for the following patches:
target/linux/generic/backport-4.14/020-backport_netfilter_rtcache.patch
target/linux/generic/hack-4.14/220-gc_sections.patch
target/linux/generic/hack-4.14/321-powerpc_crtsavres_prereq.patch
target/linux/generic/pending-4.14/305-mips_module_reloc.patch
target/linux/generic/pending-4.14/611-netfilter_match_bypass_default_table.patch
target/linux/generic/pending-4.14/680-NET-skip-GRO-for-foreign-MAC-addresses.patch
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Diffstat (limited to 'target/linux/generic/pending-4.14/341-MIPS-mm-remove-no-op-dma_map_ops-where-possible.patch')
-rw-r--r-- | target/linux/generic/pending-4.14/341-MIPS-mm-remove-no-op-dma_map_ops-where-possible.patch | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/target/linux/generic/pending-4.14/341-MIPS-mm-remove-no-op-dma_map_ops-where-possible.patch b/target/linux/generic/pending-4.14/341-MIPS-mm-remove-no-op-dma_map_ops-where-possible.patch new file mode 100644 index 0000000000..3cd87861a4 --- /dev/null +++ b/target/linux/generic/pending-4.14/341-MIPS-mm-remove-no-op-dma_map_ops-where-possible.patch @@ -0,0 +1,140 @@ +From: Felix Fietkau <nbd@nbd.name> +Date: Tue, 5 Dec 2017 12:46:01 +0100 +Subject: [PATCH] MIPS: mm: remove no-op dma_map_ops where possible + +If no post-DMA flush is required, and the platform does not provide +plat_unmap_dma_mem(), there is no need to include unmap or sync_for_cpu +ops. + +With this patch they are compiled out to improve icache footprint +on devices that handle lots of DMA traffic (especially network routers). + +Signed-off-by: Felix Fietkau <nbd@nbd.name> +--- + +--- a/arch/mips/Kconfig ++++ b/arch/mips/Kconfig +@@ -220,6 +220,7 @@ config BMIPS_GENERIC + select BRCMSTB_L2_IRQ + select IRQ_MIPS_CPU + select DMA_NONCOHERENT ++ select DMA_UNMAP_POST_FLUSH + select SYS_SUPPORTS_32BIT_KERNEL + select SYS_SUPPORTS_LITTLE_ENDIAN + select SYS_SUPPORTS_BIG_ENDIAN +@@ -345,6 +346,7 @@ config MACH_JAZZ + select CSRC_R4K + select DEFAULT_SGI_PARTITION if CPU_BIG_ENDIAN + select GENERIC_ISA_DMA ++ select DMA_UNMAP_POST_FLUSH + select HAVE_PCSPKR_PLATFORM + select IRQ_MIPS_CPU + select I8253 +@@ -1127,6 +1129,9 @@ config DMA_NONCOHERENT + bool + select NEED_DMA_MAP_STATE + ++config DMA_UNMAP_POST_FLUSH ++ bool ++ + config NEED_DMA_MAP_STATE + bool + +@@ -1651,6 +1656,7 @@ config CPU_R10000 + select CPU_SUPPORTS_64BIT_KERNEL + select CPU_SUPPORTS_HIGHMEM + select CPU_SUPPORTS_HUGEPAGES ++ select DMA_UNMAP_POST_FLUSH + help + MIPS Technologies R10000-series processors. + +@@ -1899,9 +1905,11 @@ config SYS_HAS_CPU_MIPS32_R3_5 + bool + + config SYS_HAS_CPU_MIPS32_R5 ++ select DMA_UNMAP_POST_FLUSH + bool + + config SYS_HAS_CPU_MIPS32_R6 ++ select DMA_UNMAP_POST_FLUSH + bool + + config SYS_HAS_CPU_MIPS64_R1 +@@ -1911,6 +1919,7 @@ config SYS_HAS_CPU_MIPS64_R2 + bool + + config SYS_HAS_CPU_MIPS64_R6 ++ select DMA_UNMAP_POST_FLUSH + bool + + config SYS_HAS_CPU_R3000 +--- a/arch/mips/mm/dma-default.c ++++ b/arch/mips/mm/dma-default.c +@@ -267,8 +267,9 @@ static inline void __dma_sync(struct pag + } while (left); + } + +-static void mips_dma_unmap_page(struct device *dev, dma_addr_t dma_addr, +- size_t size, enum dma_data_direction direction, unsigned long attrs) ++static void __maybe_unused ++mips_dma_unmap_page(struct device *dev, dma_addr_t dma_addr, size_t size, ++ enum dma_data_direction direction, unsigned long attrs) + { + if (cpu_needs_post_dma_flush(dev) && !(attrs & DMA_ATTR_SKIP_CPU_SYNC)) + __dma_sync(dma_addr_to_page(dev, dma_addr), +@@ -308,9 +309,10 @@ static dma_addr_t mips_dma_map_page(stru + return plat_map_dma_mem_page(dev, page) + offset; + } + +-static void mips_dma_unmap_sg(struct device *dev, struct scatterlist *sglist, +- int nhwentries, enum dma_data_direction direction, +- unsigned long attrs) ++static void __maybe_unused ++mips_dma_unmap_sg(struct device *dev, struct scatterlist *sglist, ++ int nhwentries, enum dma_data_direction direction, ++ unsigned long attrs) + { + int i; + struct scatterlist *sg; +@@ -325,8 +327,9 @@ static void mips_dma_unmap_sg(struct dev + } + } + +-static void mips_dma_sync_single_for_cpu(struct device *dev, +- dma_addr_t dma_handle, size_t size, enum dma_data_direction direction) ++static void __maybe_unused ++mips_dma_sync_single_for_cpu(struct device *dev, dma_addr_t dma_handle, ++ size_t size, enum dma_data_direction direction) + { + if (cpu_needs_post_dma_flush(dev)) + __dma_sync(dma_addr_to_page(dev, dma_handle), +@@ -342,9 +345,9 @@ static void mips_dma_sync_single_for_dev + dma_handle & ~PAGE_MASK, size, direction); + } + +-static void mips_dma_sync_sg_for_cpu(struct device *dev, +- struct scatterlist *sglist, int nelems, +- enum dma_data_direction direction) ++static void __maybe_unused ++mips_dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sglist, ++ int nelems, enum dma_data_direction direction) + { + int i; + struct scatterlist *sg; +@@ -394,12 +397,14 @@ static const struct dma_map_ops mips_def + .free = mips_dma_free_coherent, + .mmap = mips_dma_mmap, + .map_page = mips_dma_map_page, +- .unmap_page = mips_dma_unmap_page, + .map_sg = mips_dma_map_sg, ++#ifdef CONFIG_DMA_UNMAP_POST_FLUSH ++ .unmap_page = mips_dma_unmap_page, + .unmap_sg = mips_dma_unmap_sg, + .sync_single_for_cpu = mips_dma_sync_single_for_cpu, +- .sync_single_for_device = mips_dma_sync_single_for_device, + .sync_sg_for_cpu = mips_dma_sync_sg_for_cpu, ++#endif ++ .sync_single_for_device = mips_dma_sync_single_for_device, + .sync_sg_for_device = mips_dma_sync_sg_for_device, + .dma_supported = mips_dma_supported + }; |