summaryrefslogtreecommitdiffstats
path: root/debian/patches-rt/0052-ARM-mm-Replace-kmap_atomic_pfn.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches-rt/0052-ARM-mm-Replace-kmap_atomic_pfn.patch')
-rw-r--r--debian/patches-rt/0052-ARM-mm-Replace-kmap_atomic_pfn.patch71
1 files changed, 71 insertions, 0 deletions
diff --git a/debian/patches-rt/0052-ARM-mm-Replace-kmap_atomic_pfn.patch b/debian/patches-rt/0052-ARM-mm-Replace-kmap_atomic_pfn.patch
new file mode 100644
index 000000000..ba46ccc69
--- /dev/null
+++ b/debian/patches-rt/0052-ARM-mm-Replace-kmap_atomic_pfn.patch
@@ -0,0 +1,71 @@
+From d74735ac58543c778598c75bccd45aa527acf03c Mon Sep 17 00:00:00 2001
+From: Thomas Gleixner <tglx@linutronix.de>
+Date: Tue, 3 Nov 2020 10:27:41 +0100
+Subject: [PATCH 052/323] ARM: mm: Replace kmap_atomic_pfn()
+Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/5.10/older/patches-5.10.204-rt100.tar.xz
+
+There is no requirement to disable pagefaults and preemption for these
+cache management mappings.
+
+Replace kmap_atomic_pfn() with kmap_local_pfn(). This allows to remove
+kmap_atomic_pfn() in the next step.
+
+Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
+Cc: Russell King <linux@armlinux.org.uk>
+Cc: linux-arm-kernel@lists.infradead.org
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+---
+ arch/arm/mm/cache-feroceon-l2.c | 6 +++---
+ arch/arm/mm/cache-xsc3l2.c | 4 ++--
+ 2 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/arch/arm/mm/cache-feroceon-l2.c b/arch/arm/mm/cache-feroceon-l2.c
+index 5c1b7a7b9af6..87328766e910 100644
+--- a/arch/arm/mm/cache-feroceon-l2.c
++++ b/arch/arm/mm/cache-feroceon-l2.c
+@@ -49,9 +49,9 @@ static inline unsigned long l2_get_va(unsigned long paddr)
+ * we simply install a virtual mapping for it only for the
+ * TLB lookup to occur, hence no need to flush the untouched
+ * memory mapping afterwards (note: a cache flush may happen
+- * in some circumstances depending on the path taken in kunmap_atomic).
++ * in some circumstances depending on the path taken in kunmap_local).
+ */
+- void *vaddr = kmap_atomic_pfn(paddr >> PAGE_SHIFT);
++ void *vaddr = kmap_local_pfn(paddr >> PAGE_SHIFT);
+ return (unsigned long)vaddr + (paddr & ~PAGE_MASK);
+ #else
+ return __phys_to_virt(paddr);
+@@ -61,7 +61,7 @@ static inline unsigned long l2_get_va(unsigned long paddr)
+ static inline void l2_put_va(unsigned long vaddr)
+ {
+ #ifdef CONFIG_HIGHMEM
+- kunmap_atomic((void *)vaddr);
++ kunmap_local((void *)vaddr);
+ #endif
+ }
+
+diff --git a/arch/arm/mm/cache-xsc3l2.c b/arch/arm/mm/cache-xsc3l2.c
+index d20d7af02d10..0e0a3abd8174 100644
+--- a/arch/arm/mm/cache-xsc3l2.c
++++ b/arch/arm/mm/cache-xsc3l2.c
+@@ -59,7 +59,7 @@ static inline void l2_unmap_va(unsigned long va)
+ {
+ #ifdef CONFIG_HIGHMEM
+ if (va != -1)
+- kunmap_atomic((void *)va);
++ kunmap_local((void *)va);
+ #endif
+ }
+
+@@ -75,7 +75,7 @@ static inline unsigned long l2_map_va(unsigned long pa, unsigned long prev_va)
+ * in place for it.
+ */
+ l2_unmap_va(prev_va);
+- va = (unsigned long)kmap_atomic_pfn(pa >> PAGE_SHIFT);
++ va = (unsigned long)kmap_local_pfn(pa >> PAGE_SHIFT);
+ }
+ return va + (pa_offset >> (32 - PAGE_SHIFT));
+ #else
+--
+2.43.0
+