From: Greg Kroah-Hartman Date: Mon, 2 Dec 2024 13:15:19 +0000 (+0100) Subject: 6.1-stable patches X-Git-Tag: v4.19.325~92 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4a5dc6e6db9e20ced04e43fbf28f36a19ea16916;p=thirdparty%2Fkernel%2Fstable-queue.git 6.1-stable patches added patches: dma-allow-dma_get_cache_alignment-to-be-overridden-by-the-arch-code.patch mm-slab-decouple-arch_kmalloc_minalign-from-arch_dma_minalign.patch --- diff --git a/queue-6.1/dma-allow-dma_get_cache_alignment-to-be-overridden-by-the-arch-code.patch b/queue-6.1/dma-allow-dma_get_cache_alignment-to-be-overridden-by-the-arch-code.patch new file mode 100644 index 00000000000..e3306e11311 --- /dev/null +++ b/queue-6.1/dma-allow-dma_get_cache_alignment-to-be-overridden-by-the-arch-code.patch @@ -0,0 +1,63 @@ +From 8c57da28dc3df4e091474a004b5596c9b88a3be0 Mon Sep 17 00:00:00 2001 +From: Catalin Marinas +Date: Mon, 12 Jun 2023 16:31:46 +0100 +Subject: dma: allow dma_get_cache_alignment() to be overridden by the arch code + +From: Catalin Marinas + +commit 8c57da28dc3df4e091474a004b5596c9b88a3be0 upstream. + +On arm64, ARCH_DMA_MINALIGN is larger than most cache line size +configurations deployed. Allow an architecture to override +dma_get_cache_alignment() in order to return a run-time probed value (e.g. +cache_line_size()). + +Link: https://lkml.kernel.org/r/20230612153201.554742-3-catalin.marinas@arm.com +Signed-off-by: Catalin Marinas +Reviewed-by: Christoph Hellwig +Tested-by: Isaac J. Manjarres +Cc: Robin Murphy +Cc: Will Deacon +Cc: Alasdair Kergon +Cc: Ard Biesheuvel +Cc: Arnd Bergmann +Cc: Daniel Vetter +Cc: Greg Kroah-Hartman +Cc: Herbert Xu +Cc: Jerry Snitselaar +Cc: Joerg Roedel +Cc: Jonathan Cameron +Cc: Jonathan Cameron +Cc: Lars-Peter Clausen +Cc: Logan Gunthorpe +Cc: Marc Zyngier +Cc: Mark Brown +Cc: Mike Snitzer +Cc: "Rafael J. Wysocki" +Cc: Saravana Kannan +Cc: Vlastimil Babka +Signed-off-by: Andrew Morton +Cc: Guenter Roeck +Signed-off-by: Greg Kroah-Hartman +--- + include/linux/dma-mapping.h | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/include/linux/dma-mapping.h ++++ b/include/linux/dma-mapping.h +@@ -544,6 +544,7 @@ static inline int dma_set_min_align_mask + return 0; + } + ++#ifndef dma_get_cache_alignment + static inline int dma_get_cache_alignment(void) + { + #ifdef ARCH_HAS_DMA_MINALIGN +@@ -551,6 +552,7 @@ static inline int dma_get_cache_alignmen + #endif + return 1; + } ++#endif + + static inline void *dmam_alloc_coherent(struct device *dev, size_t size, + dma_addr_t *dma_handle, gfp_t gfp) diff --git a/queue-6.1/mm-slab-decouple-arch_kmalloc_minalign-from-arch_dma_minalign.patch b/queue-6.1/mm-slab-decouple-arch_kmalloc_minalign-from-arch_dma_minalign.patch new file mode 100644 index 00000000000..2d851b11f71 --- /dev/null +++ b/queue-6.1/mm-slab-decouple-arch_kmalloc_minalign-from-arch_dma_minalign.patch @@ -0,0 +1,131 @@ +From 4ab5f8ec7d71aea5fe13a48248242130f84ac6bb Mon Sep 17 00:00:00 2001 +From: Catalin Marinas +Date: Mon, 12 Jun 2023 16:31:45 +0100 +Subject: mm/slab: decouple ARCH_KMALLOC_MINALIGN from ARCH_DMA_MINALIGN + +From: Catalin Marinas + +commit 4ab5f8ec7d71aea5fe13a48248242130f84ac6bb upstream. + +Patch series "mm, dma, arm64: Reduce ARCH_KMALLOC_MINALIGN to 8", v7. + +A series reducing the kmalloc() minimum alignment on arm64 to 8 (from +128). + + +This patch (of 17): + +In preparation for supporting a kmalloc() minimum alignment smaller than +the arch DMA alignment, decouple the two definitions. This requires that +either the kmalloc() caches are aligned to a (run-time) cache-line size or +the DMA API bounces unaligned kmalloc() allocations. Subsequent patches +will implement both options. + +After this patch, ARCH_DMA_MINALIGN is expected to be used in static +alignment annotations and defined by an architecture to be the maximum +alignment for all supported configurations/SoCs in a single Image. +Architectures opting in to a smaller ARCH_KMALLOC_MINALIGN will need to +define its value in the arch headers. + +Since ARCH_DMA_MINALIGN is now always defined, adjust the #ifdef in +dma_get_cache_alignment() so that there is no change for architectures not +requiring a minimum DMA alignment. + +Link: https://lkml.kernel.org/r/20230612153201.554742-1-catalin.marinas@arm.com +Link: https://lkml.kernel.org/r/20230612153201.554742-2-catalin.marinas@arm.com +Signed-off-by: Catalin Marinas +Tested-by: Isaac J. Manjarres +Cc: Vlastimil Babka +Cc: Christoph Hellwig +Cc: Robin Murphy +Cc: Alasdair Kergon +Cc: Ard Biesheuvel +Cc: Arnd Bergmann +Cc: Daniel Vetter +Cc: Greg Kroah-Hartman +Cc: Herbert Xu +Cc: Joerg Roedel +Cc: Jonathan Cameron +Cc: Marc Zyngier +Cc: Mark Brown +Cc: Mike Snitzer +Cc: Rafael J. Wysocki +Cc: Saravana Kannan +Cc: Will Deacon +Cc: Jerry Snitselaar +Cc: Jonathan Cameron +Cc: Lars-Peter Clausen +Cc: Logan Gunthorpe +Signed-off-by: Andrew Morton +Cc: Guenter Roeck +Signed-off-by: Greg Kroah-Hartman +--- + include/linux/cache.h | 6 ++++++ + include/linux/dma-mapping.h | 3 ++- + include/linux/slab.h | 14 ++++++++++---- + 3 files changed, 18 insertions(+), 5 deletions(-) + +--- a/include/linux/cache.h ++++ b/include/linux/cache.h +@@ -98,4 +98,10 @@ struct cacheline_padding { + #define CACHELINE_PADDING(name) + #endif + ++#ifdef ARCH_DMA_MINALIGN ++#define ARCH_HAS_DMA_MINALIGN ++#else ++#define ARCH_DMA_MINALIGN __alignof__(unsigned long long) ++#endif ++ + #endif /* __LINUX_CACHE_H */ +--- a/include/linux/dma-mapping.h ++++ b/include/linux/dma-mapping.h +@@ -2,6 +2,7 @@ + #ifndef _LINUX_DMA_MAPPING_H + #define _LINUX_DMA_MAPPING_H + ++#include + #include + #include + #include +@@ -545,7 +546,7 @@ static inline int dma_set_min_align_mask + + static inline int dma_get_cache_alignment(void) + { +-#ifdef ARCH_DMA_MINALIGN ++#ifdef ARCH_HAS_DMA_MINALIGN + return ARCH_DMA_MINALIGN; + #endif + return 1; +--- a/include/linux/slab.h ++++ b/include/linux/slab.h +@@ -12,6 +12,7 @@ + #ifndef _LINUX_SLAB_H + #define _LINUX_SLAB_H + ++#include + #include + #include + #include +@@ -225,12 +226,17 @@ static inline bool kmem_dump_obj(void *o + * alignment larger than the alignment of a 64-bit integer. + * Setting ARCH_DMA_MINALIGN in arch headers allows that. + */ +-#if defined(ARCH_DMA_MINALIGN) && ARCH_DMA_MINALIGN > 8 ++#ifdef ARCH_HAS_DMA_MINALIGN ++#if ARCH_DMA_MINALIGN > 8 && !defined(ARCH_KMALLOC_MINALIGN) + #define ARCH_KMALLOC_MINALIGN ARCH_DMA_MINALIGN +-#define KMALLOC_MIN_SIZE ARCH_DMA_MINALIGN +-#define KMALLOC_SHIFT_LOW ilog2(ARCH_DMA_MINALIGN) +-#else ++#endif ++#endif ++ ++#ifndef ARCH_KMALLOC_MINALIGN + #define ARCH_KMALLOC_MINALIGN __alignof__(unsigned long long) ++#elif ARCH_KMALLOC_MINALIGN > 8 ++#define KMALLOC_MIN_SIZE ARCH_KMALLOC_MINALIGN ++#define KMALLOC_SHIFT_LOW ilog2(KMALLOC_MIN_SIZE) + #endif + + /* diff --git a/queue-6.1/series b/queue-6.1/series index 6e1177802dd..bb8d8de698c 100644 --- a/queue-6.1/series +++ b/queue-6.1/series @@ -364,3 +364,5 @@ mlxsw-spectrum_acl_tcam-fix-null-pointer-dereference-in-error-path.patch alsa-usb-audio-fix-potential-out-of-bound-accesses-for-extigy-and-mbox-devices.patch revert-arm64-dts-mediatek-mt8195-cherry-mark-usb-3.0-on-xhci1-as-disabled.patch arm64-dts-mediatek-mt8195-cherry-mark-usb-3.0-on-xhci1-as-disabled.patch +mm-slab-decouple-arch_kmalloc_minalign-from-arch_dma_minalign.patch +dma-allow-dma_get_cache_alignment-to-be-overridden-by-the-arch-code.patch