All of lore.kernel.org
 help / color / mirror / Atom feed
From: "tip-bot2 for Thomas Gleixner" <tip-bot2@linutronix.de>
To: linux-tip-commits@vger.kernel.org
Cc: Thomas Gleixner <tglx@linutronix.de>,
	Linus Torvalds <torvalds@linuxfoundation.org>,
	Christoph Hellwig <hch@lst.de>,
	Andrew Morton <akpm@linux-foundation.org>, x86 <x86@kernel.org>,
	LKML <linux-kernel@vger.kernel.org>
Subject: [tip: core/mm] highmem: Provide generic variant of kmap_atomic*
Date: Fri, 06 Nov 2020 23:27:25 -0000	[thread overview]
Message-ID: <160470524534.397.16838107064883371863.tip-bot2@tip-bot2> (raw)
In-Reply-To: <20201103095857.175939340@linutronix.de>

The following commit has been merged into the core/mm branch of tip:

Commit-ID:     298fa1ad5571f59cb3ca5497a9455f36867f065e
Gitweb:        https://git.kernel.org/tip/298fa1ad5571f59cb3ca5497a9455f36867f065e
Author:        Thomas Gleixner <tglx@linutronix.de>
AuthorDate:    Tue, 03 Nov 2020 10:27:18 +01:00
Committer:     Thomas Gleixner <tglx@linutronix.de>
CommitterDate: Fri, 06 Nov 2020 23:14:54 +01:00

highmem: Provide generic variant of kmap_atomic*

The kmap_atomic* interfaces in all architectures are pretty much the same
except for post map operations (flush) and pre- and post unmap operations.

Provide a generic variant for that.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Linus Torvalds <torvalds@linuxfoundation.org>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Andrew Morton <akpm@linux-foundation.org>
Link: https://lore.kernel.org/r/20201103095857.175939340@linutronix.de

---
 include/linux/highmem.h |  82 +++++++++++++++++-----
 mm/Kconfig              |   3 +-
 mm/highmem.c            | 144 ++++++++++++++++++++++++++++++++++++++-
 3 files changed, 211 insertions(+), 18 deletions(-)

diff --git a/include/linux/highmem.h b/include/linux/highmem.h
index f5c3133..f5ecee9 100644
--- a/include/linux/highmem.h
+++ b/include/linux/highmem.h
@@ -31,9 +31,16 @@ static inline void invalidate_kernel_vmap_range(void *vaddr, int size)
 
 #include <asm/kmap_types.h>
 
+/*
+ * Outside of CONFIG_HIGHMEM to support X86 32bit iomap_atomic() cruft.
+ */
+#ifdef CONFIG_KMAP_LOCAL
+void *__kmap_local_pfn_prot(unsigned long pfn, pgprot_t prot);
+void *__kmap_local_page_prot(struct page *page, pgprot_t prot);
+void kunmap_local_indexed(void *vaddr);
+#endif
+
 #ifdef CONFIG_HIGHMEM
-extern void *kmap_atomic_high_prot(struct page *page, pgprot_t prot);
-extern void kunmap_atomic_high(void *kvaddr);
 #include <asm/highmem.h>
 
 #ifndef ARCH_HAS_KMAP_FLUSH_TLB
@@ -81,6 +88,11 @@ 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();
@@ -89,7 +101,38 @@ static inline void *kmap_atomic_prot(struct page *page, pgprot_t prot)
 		return page_address(page);
 	return kmap_atomic_high_prot(page, prot);
 }
-#define kmap_atomic(page)	kmap_atomic_prot(page, kmap_prot)
+
+static inline void __kunmap_atomic(void *vaddr)
+{
+	kunmap_atomic_high(vaddr);
+}
+#else /* !CONFIG_KMAP_LOCAL */
+
+static inline void *kmap_atomic_prot(struct page *page, pgprot_t prot)
+{
+	preempt_disable();
+	pagefault_disable();
+	return __kmap_local_page_prot(page, prot);
+}
+
+static inline void *kmap_atomic_pfn(unsigned long pfn)
+{
+	preempt_disable();
+	pagefault_disable();
+	return __kmap_local_pfn_prot(pfn, kmap_prot);
+}
+
+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);
@@ -147,25 +190,33 @@ static inline void *kmap_atomic(struct page *page)
 	pagefault_disable();
 	return page_address(page);
 }
-#define kmap_atomic_prot(page, prot)	kmap_atomic(page)
 
-static inline void kunmap_atomic_high(void *addr)
+static inline void *kmap_atomic_prot(struct page *page, pgprot_t prot)
+{
+	return kmap_atomic(page);
+}
+
+static inline void *kmap_atomic_pfn(unsigned long pfn)
+{
+	return kmap_atomic(pfn_to_page(pfn));
+}
+
+static inline void __kunmap_atomic(void *addr)
 {
 	/*
 	 * Mostly nothing to do in the CONFIG_HIGHMEM=n case as kunmap_atomic()
-	 * handles re-enabling faults + preemption
+	 * handles re-enabling faults and preemption
 	 */
 #ifdef ARCH_HAS_FLUSH_ON_KUNMAP
 	kunmap_flush_on_unmap(addr);
 #endif
 }
 
-#define kmap_atomic_pfn(pfn)	kmap_atomic(pfn_to_page(pfn))
-
 #define kmap_flush_unused()	do {} while(0)
 
 #endif /* CONFIG_HIGHMEM */
 
+#if !defined(CONFIG_KMAP_LOCAL)
 #if defined(CONFIG_HIGHMEM) || defined(CONFIG_X86_32)
 
 DECLARE_PER_CPU(int, __kmap_atomic_idx);
@@ -196,22 +247,21 @@ static inline void kmap_atomic_idx_pop(void)
 	__this_cpu_dec(__kmap_atomic_idx);
 #endif
 }
-
+#endif
 #endif
 
 /*
  * Prevent people trying to call kunmap_atomic() as if it were kunmap()
  * kunmap_atomic() should get the return value of kmap_atomic, not the page.
  */
-#define kunmap_atomic(addr)                                     \
-do {                                                            \
-	BUILD_BUG_ON(__same_type((addr), struct page *));       \
-	kunmap_atomic_high(addr);                                  \
-	pagefault_enable();                                     \
-	preempt_enable();                                       \
+#define kunmap_atomic(__addr)					\
+do {								\
+	BUILD_BUG_ON(__same_type((__addr), struct page *));	\
+	__kunmap_atomic(__addr);				\
+	pagefault_enable();					\
+	preempt_enable();					\
 } while (0)
 
-
 /* when CONFIG_HIGHMEM is not set these will be plain clear/copy_page */
 #ifndef clear_user_highpage
 static inline void clear_user_highpage(struct page *page, unsigned long vaddr)
diff --git a/mm/Kconfig b/mm/Kconfig
index d42423f..a1ccf98 100644
--- a/mm/Kconfig
+++ b/mm/Kconfig
@@ -872,4 +872,7 @@ config ARCH_HAS_HUGEPD
 config MAPPING_DIRTY_HELPERS
         bool
 
+config KMAP_LOCAL
+	bool
+
 endmenu
diff --git a/mm/highmem.c b/mm/highmem.c
index 6abfd76..bb4ce13 100644
--- a/mm/highmem.c
+++ b/mm/highmem.c
@@ -31,9 +31,11 @@
 #include <asm/tlbflush.h>
 #include <linux/vmalloc.h>
 
+#ifndef CONFIG_KMAP_LOCAL
 #if defined(CONFIG_HIGHMEM) || defined(CONFIG_X86_32)
 DEFINE_PER_CPU(int, __kmap_atomic_idx);
 #endif
+#endif
 
 /*
  * Virtual_count is not a pure "count".
@@ -365,9 +367,147 @@ void kunmap_high(struct page *page)
 	if (need_wakeup)
 		wake_up(pkmap_map_wait);
 }
-
 EXPORT_SYMBOL(kunmap_high);
-#endif	/* CONFIG_HIGHMEM */
+#endif /* CONFIG_HIGHMEM */
+
+#ifdef CONFIG_KMAP_LOCAL
+
+#include <asm/kmap_size.h>
+
+static DEFINE_PER_CPU(int, __kmap_local_idx);
+
+static inline int kmap_local_idx_push(void)
+{
+	int idx = __this_cpu_inc_return(__kmap_local_idx) - 1;
+
+	WARN_ON_ONCE(in_irq() && !irqs_disabled());
+	BUG_ON(idx >= KM_MAX_IDX);
+	return idx;
+}
+
+static inline int kmap_local_idx(void)
+{
+	return __this_cpu_read(__kmap_local_idx) - 1;
+}
+
+static inline void kmap_local_idx_pop(void)
+{
+	int idx = __this_cpu_dec_return(__kmap_local_idx);
+
+	BUG_ON(idx < 0);
+}
+
+#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
+
+#ifndef arch_kmap_local_post_unmap
+# define arch_kmap_local_post_unmap(vaddr)		do { } while (0)
+#endif
+
+#ifndef arch_kmap_local_map_idx
+#define arch_kmap_local_map_idx(idx, pfn)	kmap_local_calc_idx(idx)
+#endif
+
+#ifndef arch_kmap_local_unmap_idx
+#define arch_kmap_local_unmap_idx(idx, vaddr)	kmap_local_calc_idx(idx)
+#endif
+
+#ifndef arch_kmap_local_high_get
+static inline void *arch_kmap_local_high_get(struct page *page)
+{
+	return NULL;
+}
+#endif
+
+/* Unmap a local mapping which was obtained by kmap_high_get() */
+static inline void kmap_high_unmap_local(unsigned long vaddr)
+{
+#ifdef ARCH_NEEDS_KMAP_HIGH_GET
+	if (vaddr >= PKMAP_ADDR(0) && vaddr < PKMAP_ADDR(LAST_PKMAP))
+		kunmap_high(pte_page(pkmap_page_table[PKMAP_NR(vaddr)]));
+#endif
+}
+
+static inline int kmap_local_calc_idx(int idx)
+{
+	return idx + KM_MAX_IDX * smp_processor_id();
+}
+
+static pte_t *__kmap_pte;
+
+static pte_t *kmap_get_pte(void)
+{
+	if (!__kmap_pte)
+		__kmap_pte = virt_to_kpte(__fix_to_virt(FIX_KMAP_BEGIN));
+	return __kmap_pte;
+}
+
+void *__kmap_local_pfn_prot(unsigned long pfn, pgprot_t prot)
+{
+	pte_t pteval, *kmap_pte = kmap_get_pte();
+	unsigned long vaddr;
+	int idx;
+
+	preempt_disable();
+	idx = arch_kmap_local_map_idx(kmap_local_idx_push(), pfn);
+	vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx);
+	BUG_ON(!pte_none(*(kmap_pte - idx)));
+	pteval = pfn_pte(pfn, prot);
+	set_pte_at(&init_mm, vaddr, kmap_pte - idx, pteval);
+	arch_kmap_local_post_map(vaddr, pteval);
+	preempt_enable();
+
+	return (void *)vaddr;
+}
+EXPORT_SYMBOL_GPL(__kmap_local_pfn_prot);
+
+void *__kmap_local_page_prot(struct page *page, pgprot_t prot)
+{
+	void *kmap;
+
+	if (!PageHighMem(page))
+		return page_address(page);
+
+	/* Try kmap_high_get() if architecture has it enabled */
+	kmap = arch_kmap_local_high_get(page);
+	if (kmap)
+		return kmap;
+
+	return __kmap_local_pfn_prot(page_to_pfn(page), prot);
+}
+EXPORT_SYMBOL(__kmap_local_page_prot);
+
+void kunmap_local_indexed(void *vaddr)
+{
+	unsigned long addr = (unsigned long) vaddr & PAGE_MASK;
+	pte_t *kmap_pte = kmap_get_pte();
+	int idx;
+
+	if (addr < __fix_to_virt(FIX_KMAP_END) ||
+	    addr > __fix_to_virt(FIX_KMAP_BEGIN)) {
+		WARN_ON_ONCE(addr < PAGE_OFFSET);
+
+		/* Handle mappings which were obtained by kmap_high_get() */
+		kmap_high_unmap_local(addr);
+		return;
+	}
+
+	preempt_disable();
+	idx = arch_kmap_local_unmap_idx(kmap_local_idx(), addr);
+	WARN_ON_ONCE(addr != __fix_to_virt(FIX_KMAP_BEGIN + idx));
+
+	arch_kmap_local_pre_unmap(addr);
+	pte_clear(&init_mm, addr, kmap_pte - idx);
+	arch_kmap_local_post_unmap(addr);
+	kmap_local_idx_pop();
+	preempt_enable();
+}
+EXPORT_SYMBOL(kunmap_local_indexed);
+#endif
 
 #if defined(HASHED_PAGE_VIRTUAL)
 

  reply	other threads:[~2020-11-06 23:27 UTC|newest]

Thread overview: 401+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-03  9:27 [patch V3 00/37] mm/highmem: Preemptible variant of kmap_atomic & friends Thomas Gleixner
2020-11-03  9:27 ` [Intel-gfx] " Thomas Gleixner
2020-11-03  9:27 ` Thomas Gleixner
2020-11-03  9:27 ` Thomas Gleixner
2020-11-03  9:27 ` Thomas Gleixner
2020-11-03  9:27 ` Thomas Gleixner
2020-11-03  9:27 ` Thomas Gleixner
2020-11-03  9:27 ` Thomas Gleixner
2020-11-03  9:27 ` [patch V3 01/37] mm/highmem: Un-EXPORT __kmap_atomic_idx() Thomas Gleixner
2020-11-03  9:27   ` [Intel-gfx] " Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-06 23:27   ` [tip: core/mm] " tip-bot2 for Thomas Gleixner
2020-11-03  9:27 ` [patch V3 02/37] highmem: Remove unused functions Thomas Gleixner
2020-11-03  9:27   ` [Intel-gfx] " Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-06 23:27   ` [tip: core/mm] " tip-bot2 for Thomas Gleixner
2020-11-03  9:27 ` [patch V3 03/37] fs: Remove asm/kmap_types.h includes Thomas Gleixner
2020-11-03  9:27   ` [Intel-gfx] " Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03 11:12   ` David Sterba
2020-11-03 11:12     ` [Intel-gfx] " David Sterba
2020-11-03 11:12     ` David Sterba
2020-11-03 11:12     ` David Sterba
2020-11-03 11:12     ` David Sterba
2020-11-03 11:12     ` David Sterba
2020-11-03 11:12     ` David Sterba
2020-11-03 11:12     ` David Sterba
2020-11-06 23:27   ` [tip: core/mm] " tip-bot2 for Thomas Gleixner
2020-11-03  9:27 ` [patch V3 04/37] sh/highmem: Remove all traces of unused cruft Thomas Gleixner
2020-11-03  9:27   ` [Intel-gfx] " Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-06 23:27   ` [tip: core/mm] " tip-bot2 for Thomas Gleixner
2020-11-03  9:27 ` [patch V3 05/37] asm-generic: Provide kmap_size.h Thomas Gleixner
2020-11-03  9:27   ` [Intel-gfx] " Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03 12:25   ` Arnd Bergmann
2020-11-03 12:25     ` [Intel-gfx] " Arnd Bergmann
2020-11-03 12:25     ` Arnd Bergmann
2020-11-03 12:25     ` Arnd Bergmann
2020-11-03 12:25     ` Arnd Bergmann
2020-11-03 12:25     ` Arnd Bergmann
2020-11-03 12:25     ` Arnd Bergmann
2020-11-03 12:25     ` Arnd Bergmann
2020-11-06 23:27   ` [tip: core/mm] " tip-bot2 for Thomas Gleixner
2020-11-03  9:27 ` [patch V3 06/37] highmem: Provide generic variant of kmap_atomic* Thomas Gleixner
2020-11-03  9:27   ` [Intel-gfx] " Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-06 23:27   ` tip-bot2 for Thomas Gleixner [this message]
2020-11-03  9:27 ` [patch V3 07/37] highmem: Make DEBUG_HIGHMEM functional Thomas Gleixner
2020-11-03  9:27   ` [Intel-gfx] " Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-06 23:27   ` [tip: core/mm] " tip-bot2 for Thomas Gleixner
2020-11-03  9:27 ` [patch V3 08/37] x86/mm/highmem: Use generic kmap atomic implementation Thomas Gleixner
2020-11-03  9:27   ` [Intel-gfx] " Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-06 23:27   ` [tip: core/mm] " tip-bot2 for Thomas Gleixner
2020-11-03  9:27 ` [patch V3 09/37] arc/mm/highmem: " Thomas Gleixner
2020-11-03  9:27   ` [Intel-gfx] " Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-06 23:27   ` [tip: core/mm] " tip-bot2 for Thomas Gleixner
2020-11-03  9:27 ` [patch V3 10/37] ARM: highmem: Switch to generic kmap atomic Thomas Gleixner
2020-11-03  9:27   ` [Intel-gfx] " Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-06 23:27   ` [tip: core/mm] " tip-bot2 for Thomas Gleixner
     [not found]   ` <CGME20201112081036eucas1p14e135a370d3bccab311727fd2e89f4df@eucas1p1.samsung.com>
2020-11-12  8:10     ` [patch V3 10/37] " Marek Szyprowski
2020-11-12  8:10       ` Marek Szyprowski
2020-11-12  8:10       ` Marek Szyprowski
2020-11-12  8:10       ` Marek Szyprowski
2020-11-12  8:10       ` Marek Szyprowski
2020-11-12  8:10       ` Marek Szyprowski
2020-11-12  8:10       ` Marek Szyprowski
2020-11-12 11:03       ` Thomas Gleixner
2020-11-12 11:03         ` Thomas Gleixner
2020-11-12 11:03         ` Thomas Gleixner
2020-11-12 11:03         ` Thomas Gleixner
2020-11-12 11:03         ` Thomas Gleixner
2020-11-12 11:03         ` Thomas Gleixner
2020-11-12 11:03         ` Thomas Gleixner
2020-11-12 11:03         ` Thomas Gleixner
2020-11-12 11:07       ` Sebastian Andrzej Siewior
2020-11-12 11:07         ` Sebastian Andrzej Siewior
2020-11-12 11:07         ` Sebastian Andrzej Siewior
2020-11-12 11:07         ` Sebastian Andrzej Siewior
2020-11-12 11:07         ` Sebastian Andrzej Siewior
2020-11-12 11:07         ` Sebastian Andrzej Siewior
2020-11-12 11:07         ` Sebastian Andrzej Siewior
2020-11-12 11:07         ` Sebastian Andrzej Siewior
2020-11-03  9:27 ` [patch V3 11/37] csky/mm/highmem: " Thomas Gleixner
2020-11-03  9:27   ` [Intel-gfx] " Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-06 23:27   ` [tip: core/mm] " tip-bot2 for Thomas Gleixner
2020-11-03  9:27 ` [patch V3 12/37] microblaze/mm/highmem: " Thomas Gleixner
2020-11-03  9:27   ` [Intel-gfx] " Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-06 23:27   ` [tip: core/mm] " tip-bot2 for Thomas Gleixner
2020-11-03  9:27 ` [patch V3 13/37] mips/mm/highmem: " Thomas Gleixner
2020-11-03  9:27   ` [Intel-gfx] " Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-06 23:27   ` [tip: core/mm] " tip-bot2 for Thomas Gleixner
2020-11-03  9:27 ` [patch V3 14/37] nds32/mm/highmem: " Thomas Gleixner
2020-11-03  9:27   ` [Intel-gfx] " Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-06 23:27   ` [tip: core/mm] " tip-bot2 for Thomas Gleixner
2020-11-03  9:27 ` [patch V3 15/37] powerpc/mm/highmem: " Thomas Gleixner
2020-11-03  9:27   ` [Intel-gfx] " Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-06 23:27   ` [tip: core/mm] " tip-bot2 for Thomas Gleixner
2020-11-03  9:27 ` [patch V3 16/37] sparc/mm/highmem: " Thomas Gleixner
2020-11-03  9:27   ` [Intel-gfx] " Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-06 23:27   ` [tip: core/mm] " tip-bot2 for Thomas Gleixner
2020-11-03  9:27 ` [patch V3 17/37] xtensa/mm/highmem: " Thomas Gleixner
2020-11-03  9:27   ` [Intel-gfx] " Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-06 23:27   ` [tip: core/mm] " tip-bot2 for Thomas Gleixner
2020-11-03  9:27 ` [patch V3 18/37] highmem: Get rid of kmap_types.h Thomas Gleixner
2020-11-03  9:27   ` [Intel-gfx] " Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-06 23:27   ` [tip: core/mm] " tip-bot2 for Thomas Gleixner
2020-11-03  9:27 ` [patch V3 19/37] mm/highmem: Remove the old kmap_atomic cruft Thomas Gleixner
2020-11-03  9:27   ` [Intel-gfx] " Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-06 23:27   ` [tip: core/mm] " tip-bot2 for Thomas Gleixner
2020-11-03  9:27 ` [patch V3 20/37] io-mapping: Cleanup atomic iomap Thomas Gleixner
2020-11-03  9:27   ` [Intel-gfx] " Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-06 23:27   ` [tip: core/mm] " tip-bot2 for Thomas Gleixner
2020-11-03  9:27 ` [patch V3 21/37] Documentation/io-mapping: Remove outdated blurb Thomas Gleixner
2020-11-03  9:27   ` [Intel-gfx] " Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-06 23:27   ` [tip: core/mm] " tip-bot2 for Thomas Gleixner
2020-11-03  9:27 ` [patch V3 22/37] highmem: High implementation details and document API Thomas Gleixner
2020-11-03  9:27   ` [Intel-gfx] " Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03 17:48   ` Linus Torvalds
2020-11-03 17:48     ` [Intel-gfx] " Linus Torvalds
2020-11-03 17:48     ` Linus Torvalds
2020-11-03 17:48     ` Linus Torvalds
2020-11-03 17:48     ` Linus Torvalds
2020-11-03 17:48     ` Linus Torvalds
2020-11-03 17:48     ` Linus Torvalds
2020-11-03 17:48     ` Linus Torvalds
2020-11-03 17:48     ` Linus Torvalds
2020-11-03 19:00     ` Thomas Gleixner
2020-11-03 19:00       ` [Intel-gfx] " Thomas Gleixner
2020-11-03 19:00       ` Thomas Gleixner
2020-11-03 19:00       ` Thomas Gleixner
2020-11-03 19:00       ` Thomas Gleixner
2020-11-03 19:00       ` Thomas Gleixner
2020-11-03 19:00       ` Thomas Gleixner
2020-11-03 19:00       ` Thomas Gleixner
2020-11-03 19:00       ` Thomas Gleixner
2020-11-06 23:27   ` [tip: core/mm] " tip-bot2 for Thomas Gleixner
2020-11-03  9:27 ` [patch V3 23/37] sched: Make migrate_disable/enable() independent of RT Thomas Gleixner
2020-11-03  9:27   ` [Intel-gfx] " Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27 ` [patch V3 24/37] sched: highmem: Store local kmaps in task struct Thomas Gleixner
2020-11-03  9:27   ` [Intel-gfx] " Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03 13:49   ` Thomas Gleixner
2020-11-03 13:49     ` [Intel-gfx] " Thomas Gleixner
2020-11-03 13:49     ` Thomas Gleixner
2020-11-03 13:49     ` Thomas Gleixner
2020-11-03 13:49     ` Thomas Gleixner
2020-11-03 13:49     ` Thomas Gleixner
2020-11-03 13:49     ` Thomas Gleixner
2020-11-03 13:49     ` Thomas Gleixner
2020-11-03 13:51   ` [patch V4 " Thomas Gleixner
2020-11-03 13:51     ` [Intel-gfx] " Thomas Gleixner
2020-11-03 13:51     ` Thomas Gleixner
2020-11-03 13:51     ` Thomas Gleixner
2020-11-03 13:51     ` Thomas Gleixner
2020-11-03 13:51     ` Thomas Gleixner
2020-11-03 13:51     ` Thomas Gleixner
2020-11-03 13:51     ` Thomas Gleixner
2020-11-03  9:27 ` [patch V3 25/37] mm/highmem: Provide kmap_local* Thomas Gleixner
2020-11-03  9:27   ` [Intel-gfx] " Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27 ` [patch V3 26/37] io-mapping: Provide iomap_local variant Thomas Gleixner
2020-11-03  9:27   ` [Intel-gfx] " Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27 ` [patch V3 27/37] x86/crashdump/32: Simplify copy_oldmem_page() Thomas Gleixner
2020-11-03  9:27   ` [Intel-gfx] " Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27 ` [patch V3 28/37] mips/crashdump: " Thomas Gleixner
2020-11-03  9:27   ` [Intel-gfx] " Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27 ` [patch V3 29/37] ARM: mm: Replace kmap_atomic_pfn() Thomas Gleixner
2020-11-03  9:27   ` [Intel-gfx] " Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27 ` [patch V3 30/37] highmem: Remove kmap_atomic_pfn() Thomas Gleixner
2020-11-03  9:27   ` [Intel-gfx] " Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27 ` [patch V3 31/37] drm/ttm: Replace kmap_atomic() usage Thomas Gleixner
2020-11-03  9:27   ` [Intel-gfx] " Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27 ` [patch V3 32/37] drm/vmgfx: Replace kmap_atomic() Thomas Gleixner
2020-11-03  9:27   ` [Intel-gfx] " Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27 ` [patch V3 33/37] highmem: Remove kmap_atomic_prot() Thomas Gleixner
2020-11-03  9:27   ` [Intel-gfx] " Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27 ` [patch V3 34/37] drm/qxl: Replace io_mapping_map_atomic_wc() Thomas Gleixner
2020-11-03  9:27   ` [Intel-gfx] " Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27 ` [patch V3 35/37] drm/nouveau/device: " Thomas Gleixner
2020-11-03  9:27   ` [Intel-gfx] " Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27 ` [patch V3 36/37] drm/i915: " Thomas Gleixner
2020-11-03  9:27   ` [Intel-gfx] " Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27 ` [patch V3 37/37] io-mapping: Remove io_mapping_map_atomic_wc() Thomas Gleixner
2020-11-03  9:27   ` [Intel-gfx] " Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03  9:27   ` Thomas Gleixner
2020-11-03 13:33 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for mm/highmem: Preemptible variant of kmap_atomic & friends Patchwork
2020-11-03 13:57 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for mm/highmem: Preemptible variant of kmap_atomic & friends (rev2) Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=160470524534.397.16838107064883371863.tip-bot2@tip-bot2 \
    --to=tip-bot2@linutronix.de \
    --cc=akpm@linux-foundation.org \
    --cc=hch@lst.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linuxfoundation.org \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.