diff options
Diffstat (limited to 'debian/patches-rt/0042-mm-highmem-Remove-the-old-kmap_atomic-cruft.patch')
-rw-r--r-- | debian/patches-rt/0042-mm-highmem-Remove-the-old-kmap_atomic-cruft.patch | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/debian/patches-rt/0042-mm-highmem-Remove-the-old-kmap_atomic-cruft.patch b/debian/patches-rt/0042-mm-highmem-Remove-the-old-kmap_atomic-cruft.patch new file mode 100644 index 000000000..112ed0a87 --- /dev/null +++ b/debian/patches-rt/0042-mm-highmem-Remove-the-old-kmap_atomic-cruft.patch @@ -0,0 +1,139 @@ +From 2840eec439f3e1788047259d10994b555020de40 Mon Sep 17 00:00:00 2001 +From: Thomas Gleixner <tglx@linutronix.de> +Date: Tue, 3 Nov 2020 10:27:31 +0100 +Subject: [PATCH 042/323] mm/highmem: Remove the old kmap_atomic cruft +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/5.10/older/patches-5.10.204-rt100.tar.xz + +All users gone. + +Signed-off-by: Thomas Gleixner <tglx@linutronix.de> +Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> +--- + include/linux/highmem.h | 63 +++-------------------------------------- + mm/highmem.c | 7 +---- + 2 files changed, 5 insertions(+), 65 deletions(-) + +diff --git a/include/linux/highmem.h b/include/linux/highmem.h +index a5ce45dceae0..e632774cce87 100644 +--- a/include/linux/highmem.h ++++ b/include/linux/highmem.h +@@ -86,31 +86,16 @@ static inline void kunmap(struct page *page) + * be used in IRQ contexts, so in some (very limited) cases we need + * it. + */ +- +-#ifndef CONFIG_KMAP_LOCAL +-void *kmap_atomic_high_prot(struct page *page, pgprot_t prot); +-void kunmap_atomic_high(void *kvaddr); +- + static inline void *kmap_atomic_prot(struct page *page, pgprot_t prot) + { + preempt_disable(); + pagefault_disable(); +- if (!PageHighMem(page)) +- return page_address(page); +- return kmap_atomic_high_prot(page, prot); +-} +- +-static inline void __kunmap_atomic(void *vaddr) +-{ +- kunmap_atomic_high(vaddr); ++ return __kmap_local_page_prot(page, prot); + } +-#else /* !CONFIG_KMAP_LOCAL */ + +-static inline void *kmap_atomic_prot(struct page *page, pgprot_t prot) ++static inline void *kmap_atomic(struct page *page) + { +- preempt_disable(); +- pagefault_disable(); +- return __kmap_local_page_prot(page, prot); ++ return kmap_atomic_prot(page, kmap_prot); + } + + static inline void *kmap_atomic_pfn(unsigned long pfn) +@@ -125,13 +110,6 @@ static inline void __kunmap_atomic(void *addr) + kunmap_local_indexed(addr); + } + +-#endif /* CONFIG_KMAP_LOCAL */ +- +-static inline void *kmap_atomic(struct page *page) +-{ +- return kmap_atomic_prot(page, kmap_prot); +-} +- + /* declarations for linux/mm/highmem.c */ + unsigned int nr_free_highpages(void); + extern atomic_long_t _totalhigh_pages; +@@ -212,41 +190,8 @@ static inline void __kunmap_atomic(void *addr) + + #define kmap_flush_unused() do {} while(0) + +-#endif /* CONFIG_HIGHMEM */ +- +-#if !defined(CONFIG_KMAP_LOCAL) +-#if defined(CONFIG_HIGHMEM) +- +-DECLARE_PER_CPU(int, __kmap_atomic_idx); +- +-static inline int kmap_atomic_idx_push(void) +-{ +- int idx = __this_cpu_inc_return(__kmap_atomic_idx) - 1; +- +-#ifdef CONFIG_DEBUG_HIGHMEM +- WARN_ON_ONCE(in_irq() && !irqs_disabled()); +- BUG_ON(idx >= KM_TYPE_NR); +-#endif +- return idx; +-} +- +-static inline int kmap_atomic_idx(void) +-{ +- return __this_cpu_read(__kmap_atomic_idx) - 1; +-} + +-static inline void kmap_atomic_idx_pop(void) +-{ +-#ifdef CONFIG_DEBUG_HIGHMEM +- int idx = __this_cpu_dec_return(__kmap_atomic_idx); +- +- BUG_ON(idx < 0); +-#else +- __this_cpu_dec(__kmap_atomic_idx); +-#endif +-} +-#endif +-#endif ++#endif /* CONFIG_HIGHMEM */ + + /* + * Prevent people trying to call kunmap_atomic() as if it were kunmap() +diff --git a/mm/highmem.c b/mm/highmem.c +index 77677c6844f7..499dfafd36b7 100644 +--- a/mm/highmem.c ++++ b/mm/highmem.c +@@ -31,12 +31,6 @@ + #include <asm/tlbflush.h> + #include <linux/vmalloc.h> + +-#ifndef CONFIG_KMAP_LOCAL +-#ifdef CONFIG_HIGHMEM +-DEFINE_PER_CPU(int, __kmap_atomic_idx); +-#endif +-#endif +- + /* + * Virtual_count is not a pure "count". + * 0 means that it is not mapped, and has not been mapped +@@ -410,6 +404,7 @@ static inline void kmap_local_idx_pop(void) + #ifndef arch_kmap_local_post_map + # define arch_kmap_local_post_map(vaddr, pteval) do { } while (0) + #endif ++ + #ifndef arch_kmap_local_pre_unmap + # define arch_kmap_local_pre_unmap(vaddr) do { } while (0) + #endif +-- +2.43.0 + |