From: Andrew Morton <akpm@linux-foundation.org>
To: arnd@arndb.de, bcain@codeaurora.org, bp@alien8.de,
catalin.marinas@arm.com, chris@zankel.net, dalias@libc.org,
davem@davemloft.net, deanbo422@gmail.com, deller@gmx.de,
geert@linux-m68k.org, gerg@linux-m68k.org, green.hu@gmail.com,
guoren@kernel.org, gxt@pku.edu.cn, heiko.carstens@de.ibm.com,
jcmvbkbc@gmail.com, ley.foon.tan@intel.com,
linux@armlinux.org.uk, mattst88@gmail.com, mingo@redhat.com,
mm-commits@vger.kernel.org, monstr@monstr.eu, mpe@ellerman.id.au,
msalter@redhat.com, nickhu@andestech.com,
paul.walmsley@sifive.com, richard@nod.at, rppt@linux.ibm.com,
shorne@gmail.com, tglx@linutronix.de, tony.luck@intel.com,
tsbogend@alpha.franken.de, vgupta@synopsys.com, will@kernel.org,
willy@infradead.org, ysato@users.sourceforge.jp
Subject: + mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte.patch added to -mm tree
Date: Fri, 15 May 2020 14:15:39 -0700 [thread overview]
Message-ID: <20200515211539.R1b61bzeQ%akpm@linux-foundation.org> (raw)
In-Reply-To: <20200513175005.1f4839360c18c0238df292d1@linux-foundation.org>
The patch titled
Subject: mm: pgtable: add shortcuts for accessing kernel PMD and PTE
has been added to the -mm tree. Its filename is
mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte.patch
This patch should soon appear at
http://ozlabs.org/~akpm/mmots/broken-out/mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte.patch
and later at
http://ozlabs.org/~akpm/mmotm/broken-out/mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte.patch
Before you just go and hit "reply", please:
a) Consider who else should be cc'ed
b) Prefer to cc a suitable mailing list as well
c) Ideally: find the original patch on the mailing list and do a
reply-to-all to that, adding suitable additional cc's
*** Remember to use Documentation/process/submit-checklist.rst when testing your code ***
The -mm tree is included into linux-next and is updated
there every 3-4 working days
------------------------------------------------------
From: Mike Rapoport <rppt@linux.ibm.com>
Subject: mm: pgtable: add shortcuts for accessing kernel PMD and PTE
The powerpc 32-bit implementation of pgtable has nice shortcuts for
accessing kernel PMD and PTE for a given virtual address. Make this
helpers available for all architectures.
Link: http://lkml.kernel.org/r/20200514170327.31389-9-rppt@kernel.org
Signed-off-by: Mike Rapoport <rppt@linux.ibm.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Brian Cain <bcain@codeaurora.org>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Chris Zankel <chris@zankel.net>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Greentime Hu <green.hu@gmail.com>
Cc: Greg Ungerer <gerg@linux-m68k.org>
Cc: Guan Xuetao <gxt@pku.edu.cn>
Cc: Guo Ren <guoren@kernel.org>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Helge Deller <deller@gmx.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Ley Foon Tan <ley.foon.tan@intel.com>
Cc: Mark Salter <msalter@redhat.com>
Cc: Matthew Wilcox <willy@infradead.org>
Cc: Matt Turner <mattst88@gmail.com>
Cc: Max Filippov <jcmvbkbc@gmail.com>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Michal Simek <monstr@monstr.eu>
Cc: Nick Hu <nickhu@andestech.com>
Cc: Paul Walmsley <paul.walmsley@sifive.com>
Cc: Richard Weinberger <richard@nod.at>
Cc: Rich Felker <dalias@libc.org>
Cc: Russell King <linux@armlinux.org.uk>
Cc: Stafford Horne <shorne@gmail.com>
Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Tony Luck <tony.luck@intel.com>
Cc: Vincent Chen <deanbo422@gmail.com>
Cc: Vineet Gupta <vgupta@synopsys.com>
Cc: Will Deacon <will@kernel.org>
Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
arch/arc/mm/highmem.c | 10 -------
arch/arm/mach-sa1100/assabet.c | 2 -
arch/arm/mm/highmem.c | 4 +-
arch/arm/mm/ioremap.c | 31 ++-------------------
arch/arm/mm/mm.h | 5 ---
arch/arm/mm/mmu.c | 7 ----
arch/hexagon/include/asm/fixmap.h | 4 --
arch/m68k/mm/motorola.c | 22 +--------------
arch/microblaze/kernel/signal.c | 8 -----
arch/microblaze/mm/init.c | 9 ------
arch/mips/include/asm/fixmap.h | 3 --
arch/mips/mm/c-r3k.c | 10 +------
arch/mips/mm/c-r4k.c | 10 +------
arch/mips/mm/c-tx39.c | 10 +------
arch/mips/mm/highmem.c | 2 -
arch/nds32/include/asm/pgtable.h | 2 -
arch/nds32/mm/init.c | 13 +--------
arch/nds32/mm/proc.c | 6 ----
arch/parisc/mm/fixmap.c | 6 ----
arch/powerpc/include/asm/pgtable.h | 19 -------------
arch/powerpc/mm/book3s32/mmu.c | 2 -
arch/powerpc/mm/book3s32/tlb.c | 4 +-
arch/powerpc/mm/kasan/kasan_init_32.c | 8 ++---
arch/powerpc/mm/nohash/40x.c | 4 +-
arch/powerpc/mm/pgtable_32.c | 2 -
arch/s390/mm/pageattr.c | 10 -------
arch/sh/mm/cache-sh4.c | 8 -----
arch/sh/mm/kmap.c | 5 ---
arch/sparc/mm/highmem.c | 12 +-------
arch/sparc/mm/init_64.c | 6 ----
arch/sparc/mm/io-unit.c | 10 +------
arch/sparc/mm/iommu.c | 8 -----
arch/sparc/mm/srmmu.c | 34 ++----------------------
arch/um/kernel/mem.c | 10 -------
arch/um/kernel/trap.c | 8 -----
arch/unicore32/mm/mm.h | 10 -------
arch/x86/mm/init_32.c | 26 ++----------------
arch/xtensa/include/asm/fixmap.h | 8 -----
arch/xtensa/mm/highmem.c | 2 -
arch/xtensa/mm/kasan_init.c | 10 +------
arch/xtensa/mm/mmu.c | 5 ---
include/linux/pgtable.h | 24 ++++++++++++++++
42 files changed, 78 insertions(+), 321 deletions(-)
--- a/arch/arc/mm/highmem.c~mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte
+++ a/arch/arc/mm/highmem.c
@@ -92,17 +92,9 @@ EXPORT_SYMBOL(kunmap_atomic_high);
static noinline pte_t * __init alloc_kmap_pgtable(unsigned long kvaddr)
{
- pgd_t *pgd_k;
- p4d_t *p4d_k;
- pud_t *pud_k;
- pmd_t *pmd_k;
+ pmd_t *pmd_k = pmd_off_k(kvaddr);
pte_t *pte_k;
- pgd_k = pgd_offset_k(kvaddr);
- p4d_k = p4d_offset(pgd_k, kvaddr);
- pud_k = pud_offset(p4d_k, kvaddr);
- pmd_k = pmd_offset(pud_k, kvaddr);
-
pte_k = (pte_t *)memblock_alloc_low(PAGE_SIZE, PAGE_SIZE);
if (!pte_k)
panic("%s: Failed to allocate %lu bytes align=0x%lx\n",
--- a/arch/arm/mach-sa1100/assabet.c~mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte
+++ a/arch/arm/mach-sa1100/assabet.c
@@ -632,7 +632,7 @@ static void __init map_sa1100_gpio_regs(
int prot = PMD_TYPE_SECT | PMD_SECT_AP_WRITE | PMD_DOMAIN(DOMAIN_IO);
pmd_t *pmd;
- pmd = pmd_offset(pud_offset(p4d_offset(pgd_offset_k(virt), virt), virt), virt);
+ pmd = pmd_off_k(virt);
*pmd = __pmd(phys | prot);
flush_pmd_entry(pmd);
}
--- a/arch/arm/mm/highmem.c~mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte
+++ a/arch/arm/mm/highmem.c
@@ -18,7 +18,7 @@
static inline void set_fixmap_pte(int idx, pte_t pte)
{
unsigned long vaddr = __fix_to_virt(idx);
- pte_t *ptep = pte_offset_kernel(pmd_off_k(vaddr), vaddr);
+ pte_t *ptep = virt_to_kpte(vaddr);
set_pte_ext(ptep, pte, 0);
local_flush_tlb_kernel_page(vaddr);
@@ -26,7 +26,7 @@ static inline void set_fixmap_pte(int id
static inline pte_t get_fixmap_pte(unsigned long vaddr)
{
- pte_t *ptep = pte_offset_kernel(pmd_off_k(vaddr), vaddr);
+ pte_t *ptep = virt_to_kpte(vaddr);
return *ptep;
}
--- a/arch/arm/mm/ioremap.c~mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte
+++ a/arch/arm/mm/ioremap.c
@@ -141,16 +141,8 @@ void __check_vmalloc_seq(struct mm_struc
static void unmap_area_sections(unsigned long virt, unsigned long size)
{
unsigned long addr = virt, end = virt + (size & ~(SZ_1M - 1));
- pgd_t *pgd;
- p4d_t *p4d;
- pud_t *pud;
- pmd_t *pmdp;
-
- flush_cache_vunmap(addr, end);
- pgd = pgd_offset_k(addr);
- p4d = p4d_offset(pgd, addr);
- pud = pud_offset(p4d, addr);
- pmdp = pmd_offset(pud, addr);
+ pmd_t *pmdp = pmd_off_k(addr);
+
do {
pmd_t pmd = *pmdp;
@@ -191,10 +183,7 @@ remap_area_sections(unsigned long virt,
size_t size, const struct mem_type *type)
{
unsigned long addr = virt, end = virt + size;
- pgd_t *pgd;
- p4d_t *p4d;
- pud_t *pud;
- pmd_t *pmd;
+ pmd_t *pmd = pmd_off_k(addr);
/*
* Remove and free any PTE-based mapping, and
@@ -202,10 +191,6 @@ remap_area_sections(unsigned long virt,
*/
unmap_area_sections(virt, size);
- pgd = pgd_offset_k(addr);
- p4d = p4d_offset(pgd, addr);
- pud = pud_offset(p4d, addr);
- pmd = pmd_offset(pud, addr);
do {
pmd[0] = __pmd(__pfn_to_phys(pfn) | type->prot_sect);
pfn += SZ_1M >> PAGE_SHIFT;
@@ -225,21 +210,13 @@ remap_area_supersections(unsigned long v
size_t size, const struct mem_type *type)
{
unsigned long addr = virt, end = virt + size;
- pgd_t *pgd;
- p4d_t *p4d;
- pud_t *pud;
- pmd_t *pmd;
+ pmd_t *pmd = pmd_off_k(addr);
/*
* Remove and free any PTE-based mapping, and
* sync the current kernel mapping.
*/
unmap_area_sections(virt, size);
-
- pgd = pgd_offset_k(virt);
- p4d = p4d_offset(pgd, addr);
- pud = pud_offset(p4d, addr);
- pmd = pmd_offset(pud, addr);
do {
unsigned long super_pmd_val, i;
--- a/arch/arm/mm/mm.h~mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte
+++ a/arch/arm/mm/mm.h
@@ -35,11 +35,6 @@ static inline pte_t get_top_pte(unsigned
return *ptep;
}
-static inline pmd_t *pmd_off_k(unsigned long virt)
-{
- return pmd_offset(pud_offset(p4d_offset(pgd_offset_k(virt), virt), virt), virt);
-}
-
struct mem_type {
pteval_t prot_pte;
pteval_t prot_pte_s2;
--- a/arch/arm/mm/mmu.c~mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte
+++ a/arch/arm/mm/mmu.c
@@ -356,12 +356,7 @@ static pte_t *pte_offset_late_fixmap(pmd
static inline pmd_t * __init fixmap_pmd(unsigned long addr)
{
- pgd_t *pgd = pgd_offset_k(addr);
- p4d_t *p4d = p4d_offset(pgd, addr);
- pud_t *pud = pud_offset(p4d, addr);
- pmd_t *pmd = pmd_offset(pud, addr);
-
- return pmd;
+ return pmd_off_k(addr);
}
void __init early_fixmap_init(void)
--- a/arch/hexagon/include/asm/fixmap.h~mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte
+++ a/arch/hexagon/include/asm/fixmap.h
@@ -15,8 +15,4 @@
#include <asm-generic/fixmap.h>
-#define kmap_get_fixmap_pte(vaddr) \
- pte_offset_kernel(pmd_offset(pud_offset(p4d_offset(pgd_offset_k(vaddr), \
- (vaddr)), (vaddr)), (vaddr)), (vaddr))
-
#endif
--- a/arch/m68k/mm/motorola.c~mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte
+++ a/arch/m68k/mm/motorola.c
@@ -54,17 +54,8 @@ static inline void nocache_page(void *va
unsigned long addr = (unsigned long)vaddr;
if (CPU_IS_040_OR_060) {
- pgd_t *dir;
- p4d_t *p4dp;
- pud_t *pudp;
- pmd_t *pmdp;
- pte_t *ptep;
+ pte_t *ptep = virt_to_kpte(addr);
- dir = pgd_offset_k(addr);
- p4dp = p4d_offset(dir, addr);
- pudp = pud_offset(p4dp, addr);
- pmdp = pmd_offset(pudp, addr);
- ptep = pte_offset_kernel(pmdp, addr);
*ptep = pte_mknocache(*ptep);
}
}
@@ -74,17 +65,8 @@ static inline void cache_page(void *vadd
unsigned long addr = (unsigned long)vaddr;
if (CPU_IS_040_OR_060) {
- pgd_t *dir;
- p4d_t *p4dp;
- pud_t *pudp;
- pmd_t *pmdp;
- pte_t *ptep;
+ pte_t *ptep = virt_to_kpte(addr);
- dir = pgd_offset_k(addr);
- p4dp = p4d_offset(dir, addr);
- pudp = pud_offset(p4dp, addr);
- pmdp = pmd_offset(pudp, addr);
- ptep = pte_offset_kernel(pmdp, addr);
*ptep = pte_mkcache(*ptep);
}
}
--- a/arch/microblaze/kernel/signal.c~mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte
+++ a/arch/microblaze/kernel/signal.c
@@ -159,9 +159,6 @@ static int setup_rt_frame(struct ksignal
int err = 0, sig = ksig->sig;
unsigned long address = 0;
#ifdef CONFIG_MMU
- pgd_t *pgdp;
- p4d_t *p4dp;
- pud_t *pudp;
pmd_t *pmdp;
pte_t *ptep;
#endif
@@ -197,10 +194,7 @@ static int setup_rt_frame(struct ksignal
address = ((unsigned long)frame->tramp);
#ifdef CONFIG_MMU
- pgdp = pgd_offset(current->mm, address);
- p4dp = p4d_offset(pgdp, address);
- pudp = pud_offset(p4dp, address);
- pmdp = pmd_offset(pudp, address);
+ pmdp = pmd_off_k(address);
preempt_disable();
ptep = pte_offset_map(pmdp, address);
--- a/arch/microblaze/mm/init.c~mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte
+++ a/arch/microblaze/mm/init.c
@@ -50,15 +50,6 @@ unsigned long lowmem_size;
pte_t *kmap_pte;
EXPORT_SYMBOL(kmap_pte);
-static inline pte_t *virt_to_kpte(unsigned long vaddr)
-{
- pgd_t *pgd = pgd_offset_k(vaddr);
- p4d_t *p4d = p4d_offset(pgd, vaddr);
- pud_t *pud = pud_offset(p4d, vaddr);
-
- return pte_offset_kernel(pmd_offset(pud, vaddr), vaddr);
-}
-
static void __init highmem_init(void)
{
pr_debug("%x\n", (u32)PKMAP_BASE);
--- a/arch/mips/include/asm/fixmap.h~mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte
+++ a/arch/mips/include/asm/fixmap.h
@@ -69,9 +69,6 @@ enum fixed_addresses {
#include <asm-generic/fixmap.h>
-#define kmap_get_fixmap_pte(vaddr) \
- pte_offset_kernel(pmd_offset(pud_offset(p4d_offset(pgd_offset_k(vaddr), (vaddr)), (vaddr)), (vaddr)), (vaddr))
-
/*
* Called from pgtable_init()
*/
--- a/arch/mips/mm/c-r3k.c~mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte
+++ a/arch/mips/mm/c-r3k.c
@@ -239,9 +239,6 @@ static void r3k_flush_cache_page(struct
unsigned long kaddr = KSEG0ADDR(pfn << PAGE_SHIFT);
int exec = vma->vm_flags & VM_EXEC;
struct mm_struct *mm = vma->vm_mm;
- pgd_t *pgdp;
- p4d_t *p4dp;
- pud_t *pudp;
pmd_t *pmdp;
pte_t *ptep;
@@ -252,11 +249,8 @@ static void r3k_flush_cache_page(struct
if (cpu_context(smp_processor_id(), mm) == 0)
return;
- pgdp = pgd_offset(mm, addr);
- p4dp = p4d_offset(pgdp, addr);
- pudp = pud_offset(p4dp, addr);
- pmdp = pmd_offset(pudp, addr);
- ptep = pte_offset(pmdp, addr);
+ pmdp = pmd_off(mm, addr);
+ ptep = pte_offset_kernel(pmdp, addr);
/* Invalid => no such page in the cache. */
if (!(pte_val(*ptep) & _PAGE_PRESENT))
--- a/arch/mips/mm/c-r4k.c~mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte
+++ a/arch/mips/mm/c-r4k.c
@@ -652,9 +652,6 @@ static inline void local_r4k_flush_cache
int exec = vma->vm_flags & VM_EXEC;
struct mm_struct *mm = vma->vm_mm;
int map_coherent = 0;
- pgd_t *pgdp;
- p4d_t *p4dp;
- pud_t *pudp;
pmd_t *pmdp;
pte_t *ptep;
void *vaddr;
@@ -667,11 +664,8 @@ static inline void local_r4k_flush_cache
return;
addr &= PAGE_MASK;
- pgdp = pgd_offset(mm, addr);
- p4dp = p4d_offset(pgdp, addr);
- pudp = pud_offset(p4dp, addr);
- pmdp = pmd_offset(pudp, addr);
- ptep = pte_offset(pmdp, addr);
+ pmdp = pmd_off(mm, addr);
+ ptep = pte_offset_kernel(pmdp, addr);
/*
* If the page isn't marked valid, the page cannot possibly be
--- a/arch/mips/mm/c-tx39.c~mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte
+++ a/arch/mips/mm/c-tx39.c
@@ -168,9 +168,6 @@ static void tx39_flush_cache_page(struct
{
int exec = vma->vm_flags & VM_EXEC;
struct mm_struct *mm = vma->vm_mm;
- pgd_t *pgdp;
- p4d_t *p4dp;
- pud_t *pudp;
pmd_t *pmdp;
pte_t *ptep;
@@ -182,11 +179,8 @@ static void tx39_flush_cache_page(struct
return;
page &= PAGE_MASK;
- pgdp = pgd_offset(mm, page);
- p4dp = p4d_offset(pgdp, page);
- pudp = pud_offset(p4dp, page);
- pmdp = pmd_offset(pudp, page);
- ptep = pte_offset(pmdp, page);
+ pmdp = pmd_off(mm, page);
+ ptep = pte_offset_kernel(pmdp, page);
/*
* If the page isn't marked valid, the page cannot possibly be
--- a/arch/mips/mm/highmem.c~mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte
+++ a/arch/mips/mm/highmem.c
@@ -93,5 +93,5 @@ void __init kmap_init(void)
/* cache the first kmap pte */
kmap_vstart = __fix_to_virt(FIX_KMAP_BEGIN);
- kmap_pte = kmap_get_fixmap_pte(kmap_vstart);
+ kmap_pte = virt_to_kpte(kmap_vstart);
}
--- a/arch/nds32/include/asm/pgtable.h~mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte
+++ a/arch/nds32/include/asm/pgtable.h
@@ -195,8 +195,6 @@ extern void paging_init(void);
#define pte_unmap(pte) do { } while (0)
#define pte_unmap_nested(pte) do { } while (0)
-#define pmd_off_k(address) pmd_offset(pud_offset(p4d_offset(pgd_offset_k(address), (address)), (address)), (address))
-
#define set_pte_at(mm,addr,ptep,pteval) set_pte(ptep,pteval)
/*
* Set a level 1 translation table entry, and clean it out of
--- a/arch/nds32/mm/init.c~mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte
+++ a/arch/nds32/mm/init.c
@@ -98,9 +98,6 @@ static pmd_t *fixmap_pmd_p;
static void __init fixedrange_init(void)
{
unsigned long vaddr;
- pgd_t *pgd;
- p4d_t *p4d;
- pud_t *pud;
pmd_t *pmd;
#ifdef CONFIG_HIGHMEM
pte_t *pte;
@@ -110,10 +107,7 @@ static void __init fixedrange_init(void)
* Fixed mappings:
*/
vaddr = __fix_to_virt(__end_of_fixed_addresses - 1);
- pgd = swapper_pg_dir + pgd_index(vaddr);
- p4d = p4d_offset(pgd, vaddr);
- pud = pud_offset(p4d, vaddr);
- pmd = pmd_offset(pud, vaddr);
+ pmd = pmd_off_k(vaddr);
fixmap_pmd_p = memblock_alloc(PAGE_SIZE, PAGE_SIZE);
if (!fixmap_pmd_p)
panic("%s: Failed to allocate %lu bytes align=0x%lx\n",
@@ -126,10 +120,7 @@ static void __init fixedrange_init(void)
*/
vaddr = PKMAP_BASE;
- pgd = swapper_pg_dir + pgd_index(vaddr);
- p4d = p4d_offset(pgd, vaddr);
- pud = pud_offset(p4d, vaddr);
- pmd = pmd_offset(pud, vaddr);
+ pmd = pmd_off_k(vaddr);
pte = memblock_alloc(PAGE_SIZE, PAGE_SIZE);
if (!pte)
panic("%s: Failed to allocate %lu bytes align=0x%lx\n",
--- a/arch/nds32/mm/proc.c~mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte
+++ a/arch/nds32/mm/proc.c
@@ -15,14 +15,10 @@ extern struct cache_info L1_cache_info[2
int va_kernel_present(unsigned long addr)
{
- p4d_t *p4d;
- pud_t *pud;
pmd_t *pmd;
pte_t *ptep, pte;
- p4d = p4d_offset(pgd_offset_k(addr), addr);
- pud = pud_offset(p4d, addr);
- pmd = pmd_offset(pud, addr);
+ pmd = pmd_off_k(addr);
if (!pmd_none(*pmd)) {
ptep = pte_offset_map(pmd, addr);
pte = *ptep;
--- a/arch/parisc/mm/fixmap.c~mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte
+++ a/arch/parisc/mm/fixmap.c
@@ -33,11 +33,7 @@ void notrace set_fixmap(enum fixed_addre
void notrace clear_fixmap(enum fixed_addresses idx)
{
unsigned long vaddr = __fix_to_virt(idx);
- pgd_t *pgd = pgd_offset_k(vaddr);
- p4d_t *p4d = p4d_offset(pgd, vaddr);
- pud_t *pud = pud_offset(p4d, vaddr);
- pmd_t *pmd = pmd_offset(pud, vaddr);
- pte_t *pte = pte_offset_kernel(pmd, vaddr);
+ pte_t *pte = virt_to_kpte(vaddr);
if (WARN_ON(pte_none(*pte)))
return;
--- a/arch/powerpc/include/asm/pgtable.h~mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte
+++ a/arch/powerpc/include/asm/pgtable.h
@@ -41,25 +41,6 @@ struct mm_struct;
#ifndef __ASSEMBLY__
-#ifdef CONFIG_PPC32
-static inline pmd_t *pmd_ptr(struct mm_struct *mm, unsigned long va)
-{
- return pmd_offset(pud_offset(p4d_offset(pgd_offset(mm, va), va), va), va);
-}
-
-static inline pmd_t *pmd_ptr_k(unsigned long va)
-{
- return pmd_offset(pud_offset(p4d_offset(pgd_offset_k(va), va), va), va);
-}
-
-static inline pte_t *virt_to_kpte(unsigned long vaddr)
-{
- pmd_t *pmd = pmd_ptr_k(vaddr);
-
- return pmd_none(*pmd) ? NULL : pte_offset_kernel(pmd, vaddr);
-}
-#endif
-
#include <asm/tlbflush.h>
/* Keep these as a macros to avoid include dependency mess */
--- a/arch/powerpc/mm/book3s32/mmu.c~mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte
+++ a/arch/powerpc/mm/book3s32/mmu.c
@@ -312,7 +312,7 @@ void hash_preload(struct mm_struct *mm,
if (!Hash)
return;
- pmd = pmd_ptr(mm, ea);
+ pmd = pmd_off(mm, ea);
if (!pmd_none(*pmd))
add_hash_page(mm->context.id, ea, pmd_val(*pmd));
}
--- a/arch/powerpc/mm/book3s32/tlb.c~mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte
+++ a/arch/powerpc/mm/book3s32/tlb.c
@@ -90,7 +90,7 @@ static void flush_range(struct mm_struct
if (start >= end)
return;
end = (end - 1) | ~PAGE_MASK;
- pmd = pmd_ptr(mm, start);
+ pmd = pmd_off(mm, start);
for (;;) {
pmd_end = ((start + PGDIR_SIZE) & PGDIR_MASK) - 1;
if (pmd_end > end)
@@ -148,7 +148,7 @@ void flush_tlb_page(struct vm_area_struc
return;
}
mm = (vmaddr < TASK_SIZE)? vma->vm_mm: &init_mm;
- pmd = pmd_ptr(mm, vmaddr);
+ pmd = pmd_off(mm, vmaddr);
if (!pmd_none(*pmd))
flush_hash_pages(mm->context.id, vmaddr, pmd_val(*pmd), 1);
}
--- a/arch/powerpc/mm/kasan/kasan_init_32.c~mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte
+++ a/arch/powerpc/mm/kasan/kasan_init_32.c
@@ -36,7 +36,7 @@ static int __init kasan_init_shadow_page
unsigned long k_cur, k_next;
pte_t *new = NULL;
- pmd = pmd_ptr_k(k_start);
+ pmd = pmd_off_k(k_start);
for (k_cur = k_start; k_cur != k_end; k_cur = k_next, pmd++) {
k_next = pgd_addr_end(k_cur, k_end);
@@ -78,7 +78,7 @@ static int __init kasan_init_region(void
block = memblock_alloc(k_end - k_start, PAGE_SIZE);
for (k_cur = k_start & PAGE_MASK; k_cur < k_end; k_cur += PAGE_SIZE) {
- pmd_t *pmd = pmd_ptr_k(k_cur);
+ pmd_t *pmd = pmd_off_k(k_cur);
void *va = block + k_cur - k_start;
pte_t pte = pfn_pte(PHYS_PFN(__pa(va)), PAGE_KERNEL);
@@ -102,7 +102,7 @@ static void __init kasan_remap_early_sha
kasan_populate_pte(kasan_early_shadow_pte, prot);
for (k_cur = k_start & PAGE_MASK; k_cur != k_end; k_cur += PAGE_SIZE) {
- pmd_t *pmd = pmd_ptr_k(k_cur);
+ pmd_t *pmd = pmd_off_k(k_cur);
pte_t *ptep = pte_offset_kernel(pmd, k_cur);
if ((pte_val(*ptep) & PTE_RPN_MASK) != pa)
@@ -196,7 +196,7 @@ void __init kasan_early_init(void)
unsigned long addr = KASAN_SHADOW_START;
unsigned long end = KASAN_SHADOW_END;
unsigned long next;
- pmd_t *pmd = pmd_ptr_k(addr);
+ pmd_t *pmd = pmd_off_k(addr);
BUILD_BUG_ON(KASAN_SHADOW_START & ~PGDIR_MASK);
--- a/arch/powerpc/mm/nohash/40x.c~mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte
+++ a/arch/powerpc/mm/nohash/40x.c
@@ -103,7 +103,7 @@ unsigned long __init mmu_mapin_ram(unsig
pmd_t *pmdp;
unsigned long val = p | _PMD_SIZE_16M | _PAGE_EXEC | _PAGE_HWWRITE;
- pmdp = pmd_ptr_k(v);
+ pmdp = pmd_off_k(v);
*pmdp++ = __pmd(val);
*pmdp++ = __pmd(val);
*pmdp++ = __pmd(val);
@@ -118,7 +118,7 @@ unsigned long __init mmu_mapin_ram(unsig
pmd_t *pmdp;
unsigned long val = p | _PMD_SIZE_4M | _PAGE_EXEC | _PAGE_HWWRITE;
- pmdp = pmd_ptr_k(v);
+ pmdp = pmd_off_k(v);
*pmdp = __pmd(val);
v += LARGE_PAGE_SIZE_4M;
--- a/arch/powerpc/mm/pgtable_32.c~mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte
+++ a/arch/powerpc/mm/pgtable_32.c
@@ -62,7 +62,7 @@ int __ref map_kernel_page(unsigned long
int err = -ENOMEM;
/* Use upper 10 bits of VA to index the first level map */
- pd = pmd_ptr_k(va);
+ pd = pmd_off_k(va);
/* Use middle 10 bits of VA to index the second-level map */
if (likely(slab_is_available()))
pg = pte_alloc_kernel(pd, va);
--- a/arch/s390/mm/pageattr.c~mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte
+++ a/arch/s390/mm/pageattr.c
@@ -337,19 +337,11 @@ void __kernel_map_pages(struct page *pag
{
unsigned long address;
int nr, i, j;
- pgd_t *pgd;
- p4d_t *p4d;
- pud_t *pud;
- pmd_t *pmd;
pte_t *pte;
for (i = 0; i < numpages;) {
address = page_to_phys(page + i);
- pgd = pgd_offset_k(address);
- p4d = p4d_offset(pgd, address);
- pud = pud_offset(p4d, address);
- pmd = pmd_offset(pud, address);
- pte = pte_offset_kernel(pmd, address);
+ pte = virt_to_kpte(address);
nr = (unsigned long)pte >> ilog2(sizeof(long));
nr = PTRS_PER_PTE - (nr & (PTRS_PER_PTE - 1));
nr = min(numpages - i, nr);
--- a/arch/sh/mm/cache-sh4.c~mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte
+++ a/arch/sh/mm/cache-sh4.c
@@ -207,9 +207,6 @@ static void sh4_flush_cache_page(void *a
struct page *page;
unsigned long address, pfn, phys;
int map_coherent = 0;
- pgd_t *pgd;
- p4d_t *p4d;
- pud_t *pud;
pmd_t *pmd;
pte_t *pte;
void *vaddr;
@@ -223,10 +220,7 @@ static void sh4_flush_cache_page(void *a
if (cpu_context(smp_processor_id(), vma->vm_mm) == NO_CONTEXT)
return;
- pgd = pgd_offset(vma->vm_mm, address);
- p4d = p4d_offset(pgd, address);
- pud = pud_offset(p4d, address);
- pmd = pmd_offset(pud, address);
+ pmd = pmd_off(vma->vm_mm, address);
pte = pte_offset_kernel(pmd, address);
/* If the page isn't present, there is nothing to do here. */
--- a/arch/sh/mm/kmap.c~mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte
+++ a/arch/sh/mm/kmap.c
@@ -14,9 +14,6 @@
#include <asm/mmu_context.h>
#include <asm/cacheflush.h>
-#define kmap_get_fixmap_pte(vaddr) \
- pte_offset_kernel(pmd_offset(pud_offset(p4d_offset(pgd_offset_k(vaddr), (vaddr)), (vaddr)), (vaddr)), vaddr)
-
static pte_t *kmap_coherent_pte;
void __init kmap_coherent_init(void)
@@ -25,7 +22,7 @@ void __init kmap_coherent_init(void)
/* cache the first coherent kmap pte */
vaddr = __fix_to_virt(FIX_CMAP_BEGIN);
- kmap_coherent_pte = kmap_get_fixmap_pte(vaddr);
+ kmap_coherent_pte = virt_to_kpte(vaddr);
}
void *kmap_coherent(struct page *page, unsigned long addr)
--- a/arch/sparc/mm/highmem.c~mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte
+++ a/arch/sparc/mm/highmem.c
@@ -36,18 +36,10 @@ static pte_t *kmap_pte;
void __init kmap_init(void)
{
- unsigned long address;
- p4d_t *p4d;
- pud_t *pud;
- pmd_t *dir;
-
- address = __fix_to_virt(FIX_KMAP_BEGIN);
- p4d = p4d_offset(pgd_offset_k(address), address);
- pud = pud_offset(p4d, address);
- dir = pmd_offset(pud, address);
+ unsigned long address = __fix_to_virt(FIX_KMAP_BEGIN);
/* cache the first kmap pte */
- kmap_pte = pte_offset_kernel(dir, address);
+ kmap_pte = virt_to_kpte(address);
}
void *kmap_atomic_high_prot(struct page *page, pgprot_t prot)
--- a/arch/sparc/mm/init_64.c~mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte
+++ a/arch/sparc/mm/init_64.c
@@ -503,11 +503,7 @@ void __kprobes flush_icache_range(unsign
if (kaddr >= PAGE_OFFSET)
paddr = kaddr & mask;
else {
- pgd_t *pgdp = pgd_offset_k(kaddr);
- p4d_t *p4dp = p4d_offset(pgdp, kaddr);
- pud_t *pudp = pud_offset(p4dp, kaddr);
- pmd_t *pmdp = pmd_offset(pudp, kaddr);
- pte_t *ptep = pte_offset_kernel(pmdp, kaddr);
+ pte_t *ptep = virt_to_kpte(kaddr);
paddr = pte_val(*ptep) & mask;
}
--- a/arch/sparc/mm/iommu.c~mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte
+++ a/arch/sparc/mm/iommu.c
@@ -348,9 +348,6 @@ static void *sbus_iommu_alloc(struct dev
while(addr < end) {
page = va;
{
- pgd_t *pgdp;
- p4d_t *p4dp;
- pud_t *pudp;
pmd_t *pmdp;
pte_t *ptep;
@@ -361,10 +358,7 @@ static void *sbus_iommu_alloc(struct dev
else
__flush_page_to_ram(page);
- pgdp = pgd_offset(&init_mm, addr);
- p4dp = p4d_offset(pgdp, addr);
- pudp = pud_offset(p4dp, addr);
- pmdp = pmd_offset(pudp, addr);
+ pmdp = pmd_off_k(addr);
ptep = pte_offset_map(pmdp, addr);
set_pte(ptep, mk_pte(virt_to_page(page), dvma_prot));
--- a/arch/sparc/mm/io-unit.c~mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte
+++ a/arch/sparc/mm/io-unit.c
@@ -240,21 +240,15 @@ static void *iounit_alloc(struct device
while(addr < end) {
page = va;
{
- pgd_t *pgdp;
- p4d_t *p4dp;
- pud_t *pudp;
pmd_t *pmdp;
pte_t *ptep;
long i;
- pgdp = pgd_offset(&init_mm, addr);
- p4dp = p4d_offset(pgdp, addr);
- pudp = pud_offset(p4dp, addr);
- pmdp = pmd_offset(pudp, addr);
+ pmdp = pmd_off_k(addr);
ptep = pte_offset_map(pmdp, addr);
set_pte(ptep, mk_pte(virt_to_page(page), dvma_prot));
-
+
i = ((addr - IOUNIT_DMA_BASE) >> PAGE_SHIFT);
iopte = iounit->page_table + i;
--- a/arch/sparc/mm/srmmu.c~mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte
+++ a/arch/sparc/mm/srmmu.c
@@ -495,19 +495,10 @@ void switch_mm(struct mm_struct *old_mm,
static inline void srmmu_mapioaddr(unsigned long physaddr,
unsigned long virt_addr, int bus_type)
{
- pgd_t *pgdp;
- p4d_t *p4dp;
- pud_t *pudp;
- pmd_t *pmdp;
- pte_t *ptep;
+ pte_t *ptep = virt_to_kpte(virt_addr);
unsigned long tmp;
physaddr &= PAGE_MASK;
- pgdp = pgd_offset_k(virt_addr);
- p4dp = p4d_offset(pgdp, virt_addr);
- pudp = pud_offset(p4dp, virt_addr);
- pmdp = pmd_offset(pudp, virt_addr);
- ptep = pte_offset_kernel(pmdp, virt_addr);
tmp = (physaddr >> 4) | SRMMU_ET_PTE;
/* I need to test whether this is consistent over all
@@ -534,18 +525,7 @@ void srmmu_mapiorange(unsigned int bus,
static inline void srmmu_unmapioaddr(unsigned long virt_addr)
{
- pgd_t *pgdp;
- p4d_t *p4dp;
- pud_t *pudp;
- pmd_t *pmdp;
- pte_t *ptep;
-
-
- pgdp = pgd_offset_k(virt_addr);
- p4dp = p4d_offset(pgdp, virt_addr);
- pudp = pud_offset(p4dp, virt_addr);
- pmdp = pmd_offset(pudp, virt_addr);
- ptep = pte_offset_kernel(pmdp, virt_addr);
+ pte_t *ptep = virt_to_kpte(virt_addr);
/* No need to flush uncacheable page. */
__pte_clear(ptep);
@@ -898,10 +878,6 @@ void __init srmmu_paging_init(void)
int i;
phandle cpunode;
char node_str[128];
- pgd_t *pgd;
- p4d_t *p4d;
- pud_t *pud;
- pmd_t *pmd;
pte_t *pte;
unsigned long pages_avail;
@@ -961,11 +937,7 @@ void __init srmmu_paging_init(void)
__fix_to_virt(__end_of_fixed_addresses - 1), FIXADDR_TOP);
srmmu_allocate_ptable_skeleton(PKMAP_BASE, PKMAP_END);
- pgd = pgd_offset_k(PKMAP_BASE);
- p4d = p4d_offset(pgd, PKMAP_BASE);
- pud = pud_offset(p4d, PKMAP_BASE);
- pmd = pmd_offset(pud, PKMAP_BASE);
- pte = pte_offset_kernel(pmd, PKMAP_BASE);
+ pte = virt_to_kpte(PKMAP_BASE);
pkmap_page_table = pte;
flush_cache_all();
--- a/arch/um/kernel/mem.c~mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte
+++ a/arch/um/kernel/mem.c
@@ -125,10 +125,6 @@ static void __init fixaddr_user_init( vo
{
#ifdef CONFIG_ARCH_REUSE_HOST_VSYSCALL_AREA
long size = FIXADDR_USER_END - FIXADDR_USER_START;
- pgd_t *pgd;
- p4d_t *p4d;
- pud_t *pud;
- pmd_t *pmd;
pte_t *pte;
phys_t p;
unsigned long v, vaddr = FIXADDR_USER_START;
@@ -146,11 +142,7 @@ static void __init fixaddr_user_init( vo
p = __pa(v);
for ( ; size > 0; size -= PAGE_SIZE, vaddr += PAGE_SIZE,
p += PAGE_SIZE) {
- pgd = swapper_pg_dir + pgd_index(vaddr);
- p4d = p4d_offset(pgd, vaddr);
- pud = pud_offset(p4d, vaddr);
- pmd = pmd_offset(pud, vaddr);
- pte = pte_offset_kernel(pmd, vaddr);
+ pte = virt_to_kpte(vaddr);
pte_set_val(*pte, p, PAGE_READONLY);
}
#endif
--- a/arch/um/kernel/trap.c~mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte
+++ a/arch/um/kernel/trap.c
@@ -26,9 +26,6 @@ int handle_page_fault(unsigned long addr
{
struct mm_struct *mm = current->mm;
struct vm_area_struct *vma;
- pgd_t *pgd;
- p4d_t *p4d;
- pud_t *pud;
pmd_t *pmd;
pte_t *pte;
int err = -EFAULT;
@@ -102,10 +99,7 @@ good_area:
}
}
- pgd = pgd_offset(mm, address);
- p4d = p4d_offset(pgd, address);
- pud = pud_offset(p4d, address);
- pmd = pmd_offset(pud, address);
+ pmd = pmd_off(mm, address);
pte = pte_offset_kernel(pmd, address);
} while (!pte_present(*pte));
err = 0;
--- a/arch/unicore32/mm/mm.h~mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte
+++ a/arch/unicore32/mm/mm.h
@@ -14,16 +14,6 @@ extern int sysctl_overcommit_memory;
#define TOP_PTE(x) pte_offset_kernel(top_pmd, x)
-static inline pmd_t *pmd_off(pgd_t *pgd, unsigned long virt)
-{
- return pmd_offset((pud_t *)pgd, virt);
-}
-
-static inline pmd_t *pmd_off_k(unsigned long virt)
-{
- return pmd_off(pgd_offset_k(virt), virt);
-}
-
struct mem_type {
unsigned int prot_pte;
unsigned int prot_l1;
--- a/arch/x86/mm/init_32.c~mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte
+++ a/arch/x86/mm/init_32.c
@@ -395,15 +395,6 @@ repeat:
pte_t *kmap_pte;
-static inline pte_t *kmap_get_fixmap_pte(unsigned long vaddr)
-{
- pgd_t *pgd = pgd_offset_k(vaddr);
- p4d_t *p4d = p4d_offset(pgd, vaddr);
- pud_t *pud = pud_offset(p4d, vaddr);
- pmd_t *pmd = pmd_offset(pud, vaddr);
- return pte_offset_kernel(pmd, vaddr);
-}
-
static void __init kmap_init(void)
{
unsigned long kmap_vstart;
@@ -412,28 +403,17 @@ static void __init kmap_init(void)
* Cache the first kmap pte:
*/
kmap_vstart = __fix_to_virt(FIX_KMAP_BEGIN);
- kmap_pte = kmap_get_fixmap_pte(kmap_vstart);
+ kmap_pte = virt_to_kpte(kmap_vstart);
}
#ifdef CONFIG_HIGHMEM
static void __init permanent_kmaps_init(pgd_t *pgd_base)
{
- unsigned long vaddr;
- pgd_t *pgd;
- p4d_t *p4d;
- pud_t *pud;
- pmd_t *pmd;
- pte_t *pte;
+ unsigned long vaddr = PKMAP_BASE;
- vaddr = PKMAP_BASE;
page_table_range_init(vaddr, vaddr + PAGE_SIZE*LAST_PKMAP, pgd_base);
- pgd = swapper_pg_dir + pgd_index(vaddr);
- p4d = p4d_offset(pgd, vaddr);
- pud = pud_offset(p4d, vaddr);
- pmd = pmd_offset(pud, vaddr);
- pte = pte_offset_kernel(pmd, vaddr);
- pkmap_page_table = pte;
+ pkmap_page_table = virt_to_kpte(vaddr);
}
void __init add_highpages_with_active_regions(int nid,
--- a/arch/xtensa/include/asm/fixmap.h~mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte
+++ a/arch/xtensa/include/asm/fixmap.h
@@ -76,12 +76,4 @@ static inline unsigned long virt_to_fix(
#endif
-#define kmap_get_fixmap_pte(vaddr) \
- pte_offset_kernel( \
- pmd_offset(pud_offset(p4d_offset(pgd_offset_k(vaddr), \
- (vaddr)), \
- (vaddr)), \
- (vaddr)), \
- (vaddr))
-
#endif
--- a/arch/xtensa/mm/highmem.c~mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte
+++ a/arch/xtensa/mm/highmem.c
@@ -86,6 +86,6 @@ void __init kmap_init(void)
BUILD_BUG_ON(PKMAP_BASE < TLBTEMP_BASE_1 + TLBTEMP_SIZE);
/* cache the first kmap pte */
kmap_vstart = __fix_to_virt(FIX_KMAP_BEGIN);
- kmap_pte = kmap_get_fixmap_pte(kmap_vstart);
+ kmap_pte = virt_to_kpte(kmap_vstart);
kmap_waitqueues_init();
}
--- a/arch/xtensa/mm/kasan_init.c~mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte
+++ a/arch/xtensa/mm/kasan_init.c
@@ -19,10 +19,7 @@
void __init kasan_early_init(void)
{
unsigned long vaddr = KASAN_SHADOW_START;
- pgd_t *pgd = pgd_offset_k(vaddr);
- p4d_t *p4d = p4d_offset(pgd, vaddr);
- pud_t *pud = pud_offset(p4d, vaddr);
- pmd_t *pmd = pmd_offset(pud, vaddr);
+ pmd_t *pmd = pmd_off_k(vaddr);
int i;
for (i = 0; i < PTRS_PER_PTE; ++i)
@@ -43,10 +40,7 @@ static void __init populate(void *start,
unsigned long n_pmds = n_pages / PTRS_PER_PTE;
unsigned long i, j;
unsigned long vaddr = (unsigned long)start;
- pgd_t *pgd = pgd_offset_k(vaddr);
- p4d_t *p4d = p4d_offset(pgd, vaddr);
- pud_t *pud = pud_offset(p4d, vaddr);
- pmd_t *pmd = pmd_offset(pud, vaddr);
+ pmd_t *pmd = pmd_off_k(vaddr);
pte_t *pte = memblock_alloc(n_pages * sizeof(pte_t), PAGE_SIZE);
if (!pte)
--- a/arch/xtensa/mm/mmu.c~mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte
+++ a/arch/xtensa/mm/mmu.c
@@ -21,10 +21,7 @@
#if defined(CONFIG_HIGHMEM)
static void * __init init_pmd(unsigned long vaddr, unsigned long n_pages)
{
- pgd_t *pgd = pgd_offset_k(vaddr);
- p4d_t *p4d = p4d_offset(pgd, vaddr);
- pud_t *pud = pud_offset(p4d, vaddr);
- pmd_t *pmd = pmd_offset(pud, vaddr);
+ pmd_t *pmd = pmd_off_k(vaddr);
pte_t *pte;
unsigned long i;
--- a/include/linux/pgtable.h~mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte
+++ a/include/linux/pgtable.h
@@ -28,6 +28,30 @@
#define USER_PGTABLES_CEILING 0UL
#endif
+/*
+ * In many cases it is known that a virtual address is mapped at PMD or PTE
+ * level, so instead of traversing all the page table levels, we can get a
+ * pointer to the PMD entry in user or kernel page table or translate a virtual
+ * address to the pointer in the PTE in the kernel page tables with simple
+ * helpers.
+ */
+static inline pmd_t *pmd_off(struct mm_struct *mm, unsigned long va)
+{
+ return pmd_offset(pud_offset(p4d_offset(pgd_offset(mm, va), va), va), va);
+}
+
+static inline pmd_t *pmd_off_k(unsigned long va)
+{
+ return pmd_offset(pud_offset(p4d_offset(pgd_offset_k(va), va), va), va);
+}
+
+static inline pte_t *virt_to_kpte(unsigned long vaddr)
+{
+ pmd_t *pmd = pmd_off_k(vaddr);
+
+ return pmd_none(*pmd) ? NULL : pte_offset_kernel(pmd, vaddr);
+}
+
#ifndef __HAVE_ARCH_PTEP_SET_ACCESS_FLAGS
extern int ptep_set_access_flags(struct vm_area_struct *vma,
unsigned long address, pte_t *ptep,
_
Patches currently in -mm which might be from rppt@linux.ibm.com are
mm-memblock-replace-dereferences-of-memblock_regionnid-with-api-calls.patch
mm-make-early_pfn_to_nid-and-related-defintions-close-to-each-other.patch
mm-remove-config_have_memblock_node_map-option.patch
mm-free_area_init-use-maximal-zone-pfns-rather-than-zone-sizes.patch
mm-use-free_area_init-instead-of-free_area_init_nodes.patch
alpha-simplify-detection-of-memory-zone-boundaries.patch
arm-simplify-detection-of-memory-zone-boundaries.patch
arm64-simplify-detection-of-memory-zone-boundaries-for-uma-configs.patch
csky-simplify-detection-of-memory-zone-boundaries.patch
m68k-mm-simplify-detection-of-memory-zone-boundaries.patch
parisc-simplify-detection-of-memory-zone-boundaries.patch
sparc32-simplify-detection-of-memory-zone-boundaries.patch
unicore32-simplify-detection-of-memory-zone-boundaries.patch
xtensa-simplify-detection-of-memory-zone-boundaries.patch
mm-remove-early_pfn_in_nid-and-config_nodes_span_other_nodes.patch
mm-free_area_init-allow-defining-max_zone_pfn-in-descending-order.patch
mm-free_area_init-allow-defining-max_zone_pfn-in-descending-order-fix-2.patch
mm-rename-free_area_init_node-to-free_area_init_memoryless_node.patch
mm-clean-up-free_area_init_node-and-its-helpers.patch
mm-simplify-find_min_pfn_with_active_regions.patch
docs-vm-update-memory-models-documentation.patch
h8300-remove-usage-of-__arch_use_5level_hack.patch
arm-add-support-for-folded-p4d-page-tables.patch
arm-add-support-for-folded-p4d-page-tables-fix.patch
arm64-add-support-for-folded-p4d-page-tables.patch
hexagon-remove-__arch_use_5level_hack.patch
ia64-add-support-for-folded-p4d-page-tables.patch
nios2-add-support-for-folded-p4d-page-tables.patch
openrisc-add-support-for-folded-p4d-page-tables.patch
powerpc-add-support-for-folded-p4d-page-tables.patch
powerpc-add-support-for-folded-p4d-page-tables-fix.patch
sh-drop-__pxd_offset-macros-that-duplicate-pxd_index-ones.patch
sh-add-support-for-folded-p4d-page-tables.patch
unicore32-remove-__arch_use_5level_hack.patch
asm-generic-remove-pgtable-nop4d-hackh.patch
mm-remove-__arch_has_5level_hack-and-include-asm-generic-5level-fixuph.patch
mm-dont-include-asm-pgtableh-if-linux-mmh-is-already-included.patch
mm-introduce-include-linux-pgtableh.patch
mm-reorder-includes-after-introduction-of-linux-pgtableh.patch
csky-replace-definitions-of-__pxd_offset-with-pxd_index.patch
m68k-mm-motorola-move-comment-about-page-table-allocation-funcitons.patch
m68k-mm-move-cachenocahe_page-definitions-close-to-their-user.patch
x86-mm-simplify-init_trampoline-and-surrounding-logic.patch
mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte.patch
mm-consolidate-pte_index-and-pte_offset_-definitions.patch
mm-consolidate-pmd_index-and-pmd_offset-definitions.patch
mm-consolidate-pud_index-and-pud_offset-definitions.patch
mm-consolidate-pgd_index-and-pgd_offset_k-definitions.patch
next prev parent reply other threads:[~2020-05-15 21:15 UTC|newest]
Thread overview: 188+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-14 0:50 incoming Andrew Morton
2020-05-14 0:50 ` [patch 1/7] mm, memcg: fix inconsistent oom event behavior Andrew Morton
2020-05-14 0:50 ` [patch 2/7] epoll: call final ep_events_available() check under the lock Andrew Morton
2020-05-14 0:50 ` [patch 3/7] mm/gup: fix fixup_user_fault() on multiple retries Andrew Morton
2020-05-14 0:50 ` [patch 4/7] userfaultfd: fix remap event with MREMAP_DONTUNMAP Andrew Morton
2020-05-14 0:50 ` [patch 5/7] ipc/util.c: sysvipc_find_ipc() incorrectly updates position index Andrew Morton
2020-05-14 0:50 ` [patch 6/7] kasan: consistently disable debugging features Andrew Morton
2020-05-14 0:50 ` [patch 7/7] kasan: add missing functions declarations to kasan.h Andrew Morton
2020-05-14 2:26 ` [failures] vfs-keep-inodes-with-page-cache-off-the-inode-shrinker-lru.patch removed from -mm tree Andrew Morton
2020-05-14 3:31 ` mmotm 2020-05-13-20-30 uploaded Andrew Morton
2020-05-15 19:25 ` + get_maintainer-fix-unexpected-behavior-for-path-to-file-double-slashes.patch added to -mm tree Andrew Morton
2020-05-15 19:29 ` + lib-test_sysctl-support-testing-of-sysctl-boot-parameter-fix.patch " Andrew Morton
2020-05-15 20:05 ` + mm-add-functions-to-track-page-directory-modifications.patch " Andrew Morton
2020-05-15 20:05 ` + mm-vmalloc-track-which-page-table-levels-were-modified.patch " Andrew Morton
2020-05-15 20:06 ` + mm-ioremap-track-which-page-table-levels-were-modified.patch " Andrew Morton
2020-05-15 20:06 ` + x86-mm-64-implement-arch_sync_kernel_mappings.patch " Andrew Morton
2020-05-15 20:06 ` + x86-mm-32-implement-arch_sync_kernel_mappings.patch " Andrew Morton
2020-05-15 20:06 ` + mm-remove-vmalloc_sync_unmappings.patch " Andrew Morton
2020-05-15 20:06 ` + x86-mm-remove-vmalloc-faulting.patch " Andrew Morton
2020-05-15 20:53 ` + x86-bitops-fix-build-regression.patch " Andrew Morton
2020-05-15 21:12 ` + mm-dont-include-asm-pgtableh-if-linux-mmh-is-already-included.patch " Andrew Morton
2020-05-15 21:13 ` + mm-introduce-include-linux-pgtableh.patch " Andrew Morton
2020-05-15 21:14 ` + mm-reorder-includes-after-introduction-of-linux-pgtableh.patch " Andrew Morton
2020-05-15 21:15 ` + csky-replace-definitions-of-__pxd_offset-with-pxd_index.patch " Andrew Morton
2020-05-15 21:15 ` + m68k-mm-motorola-move-comment-about-page-table-allocation-funcitons.patch " Andrew Morton
2020-05-15 21:15 ` + m68k-mm-move-cachenocahe_page-definitions-close-to-their-user.patch " Andrew Morton
2020-05-15 21:15 ` + x86-mm-simplify-init_trampoline-and-surrounding-logic.patch " Andrew Morton
2020-05-15 21:15 ` Andrew Morton [this message]
2020-05-15 21:15 ` + mm-consolidate-pte_index-and-pte_offset_-definitions.patch " Andrew Morton
2020-05-15 21:16 ` + mm-consolidate-pmd_index-and-pmd_offset-definitions.patch " Andrew Morton
2020-05-15 21:16 ` + mm-consolidate-pud_index-and-pud_offset-definitions.patch " Andrew Morton
2020-05-15 21:16 ` + mm-consolidate-pgd_index-and-pgd_offset_k-definitions.patch " Andrew Morton
2020-05-15 21:35 ` + mm-page_alloc-reset-the-zone-watermark_boost-early.patch " Andrew Morton
2020-05-15 23:30 ` mmotm 2020-05-15-16-29 uploaded Andrew Morton
2020-05-18 19:41 ` + mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte-fix.patch added to -mm tree Andrew Morton
2020-05-18 19:44 ` + arch-kunmap_atomic-consolidate-duplicate-code-fix.patch " Andrew Morton
2020-05-18 20:25 ` + khugepaged-allow-to-collapse-a-page-shared-across-fork-fix.patch " Andrew Morton
2020-05-18 20:27 ` + mm-page_alloc-restrict-and-formalize-compound_page_dtors.patch " Andrew Morton
2020-05-18 20:32 ` + hugetlbfs-get-unmapped-area-below-task_unmapped_base-for-hugetlbfs.patch " Andrew Morton
2020-05-18 20:34 ` + mm-vmstat-add-events-for-pmd-based-thp-migration-without-split.patch " Andrew Morton
2020-05-18 20:41 ` + exec-change-uselib2-is_sreg-failure-to-eacces.patch " Andrew Morton
2020-05-18 20:42 ` + exec-relocate-s_isreg-check.patch " Andrew Morton
2020-05-18 20:42 ` + exec-relocate-path_noexec-check.patch " Andrew Morton
2020-05-18 20:42 ` + fs-include-fmode_exec-when-converting-flags-to-f_mode.patch " Andrew Morton
2020-05-18 21:25 ` + mm-gup-introduce-pin_user_pages_unlocked.patch " Andrew Morton
2020-05-18 21:25 ` + ivtv-convert-get_user_pages-pin_user_pages.patch " Andrew Morton
2020-05-18 21:37 ` + rapidio-fix-an-error-in-get_user_pages_fast-error-handling.patch " Andrew Morton
2020-05-18 21:38 ` + rapidio-convert-get_user_pages-pin_user_pages.patch " Andrew Morton
2020-05-18 21:46 ` + include-linux-pagemaph-introduce-attach-detach_page_private.patch " Andrew Morton
2020-05-18 21:46 ` + md-remove-__clear_page_buffers-and-use-attach-detach_page_private.patch " Andrew Morton
2020-05-18 21:46 ` + btrfs-use-attach-detach_page_private.patch " Andrew Morton
2020-05-18 21:46 ` + fs-bufferc-use-attach-detach_page_private.patch " Andrew Morton
2020-05-18 21:46 ` + f2fs-use-attach-detach_page_private.patch " Andrew Morton
2020-05-18 21:46 ` + iomap-use-attach-detach_page_private.patch " Andrew Morton
2020-05-18 21:46 ` + ntfs-replace-attach_page_buffers-with-attach_page_private.patch " Andrew Morton
2020-05-18 21:46 ` + orangefs-use-attach-detach_page_private.patch " Andrew Morton
2020-05-18 21:46 ` + buffer_headh-remove-attach_page_buffers.patch " Andrew Morton
2020-05-18 21:46 ` + mm-migratec-call-detach_page_private-to-cleanup-code.patch " Andrew Morton
2020-05-18 21:49 ` + mm-simplify-calling-a-compound-page-destructor.patch " Andrew Morton
2020-05-18 22:04 ` + selftests-vm-gitignore-add-mremap_dontunmap.patch " Andrew Morton
2020-05-18 22:05 ` + khugepaged-add-self-test-fix-3.patch " Andrew Morton
2020-05-18 22:06 ` + selftests-vm-write_to_hugetlbfsc-fix-unused-variable-warning.patch " Andrew Morton
2020-05-18 22:18 ` + mm-vmalloc-track-which-page-table-levels-were-modified-fix.patch " Andrew Morton
2020-05-18 22:41 ` + proc-meminfo-avoid-open-coded-reading-of-vm_committed_as.patch " Andrew Morton
2020-05-18 22:41 ` + mm-utilc-make-vm_memory_committed-more-accurate.patch " Andrew Morton
2020-05-18 22:41 ` + mm-adjust-vm_committed_as_batch-according-to-vm-overcommit-policy.patch " Andrew Morton
2020-05-18 22:52 ` + mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte-fix-2.patch " Andrew Morton
2020-05-18 23:07 ` + mm-use-only-pidfd-for-process_madvise-syscall.patch " Andrew Morton
2020-05-18 23:16 ` + kernel-add-panic_on_taint.patch " Andrew Morton
2020-05-18 23:16 ` + kernel-add-panic_on_taint-fix.patch " Andrew Morton
2020-05-19 1:12 ` + arm-fix-the-flush_icache_range-arguments-in-set_fiq_handler.patch " Andrew Morton
2020-05-19 1:12 ` + nds32-unexport-flush_icache_page.patch " Andrew Morton
2020-05-19 1:12 ` + powerpc-unexport-flush_icache_user_range.patch " Andrew Morton
2020-05-19 1:12 ` + unicore32-remove-flush_cache_user_range.patch " Andrew Morton
2020-05-19 1:12 ` + asm-generic-fix-the-inclusion-guards-for-cacheflushh.patch " Andrew Morton
2020-05-19 1:12 ` + asm-generic-dont-include-linux-mmh-in-cacheflushh.patch " Andrew Morton
2020-05-19 1:12 ` + asm-generic-improve-the-flush_dcache_page-stub.patch " Andrew Morton
2020-05-19 1:12 ` + alpha-use-asm-generic-cacheflushh.patch " Andrew Morton
2020-05-19 1:12 ` + arm64-use-asm-generic-cacheflushh.patch " Andrew Morton
2020-05-19 1:13 ` + c6x-use-asm-generic-cacheflushh.patch " Andrew Morton
2020-05-19 1:13 ` + hexagon-use-asm-generic-cacheflushh.patch " Andrew Morton
2020-05-19 1:13 ` + ia64-use-asm-generic-cacheflushh.patch " Andrew Morton
2020-05-19 1:13 ` + microblaze-use-asm-generic-cacheflushh.patch " Andrew Morton
2020-05-19 1:13 ` + m68knommu-use-asm-generic-cacheflushh.patch " Andrew Morton
2020-05-19 1:13 ` + openrisc-use-asm-generic-cacheflushh.patch " Andrew Morton
2020-05-19 1:13 ` + powerpc-use-asm-generic-cacheflushh.patch " Andrew Morton
2020-05-19 1:13 ` + riscv-use-asm-generic-cacheflushh.patch " Andrew Morton
2020-05-19 1:13 ` + armsparcunicore32-remove-flush_icache_user_range.patch " Andrew Morton
2020-05-19 1:13 ` + mm-rename-flush_icache_user_range-to-flush_icache_user_page.patch " Andrew Morton
2020-05-19 1:13 ` + asm-generic-add-a-flush_icache_user_range-stub.patch " Andrew Morton
2020-05-19 1:13 ` + sh-implement-flush_icache_user_range.patch " Andrew Morton
2020-05-19 1:13 ` + xtensa-implement-flush_icache_user_range.patch " Andrew Morton
2020-05-19 1:13 ` + arm-rename-flush_cache_user_range-to-flush_icache_user_range.patch " Andrew Morton
2020-05-19 1:13 ` + m68k-implement-flush_icache_user_range.patch " Andrew Morton
2020-05-19 1:13 ` + exec-only-build-read_code-when-needed.patch " Andrew Morton
2020-05-19 1:13 ` + exec-use-flush_icache_user_range-in-read_code.patch " Andrew Morton
2020-05-19 1:13 ` + binfmt_flat-use-flush_icache_user_range.patch " Andrew Morton
2020-05-19 1:13 ` + nommu-use-flush_icache_user_range-in-brk-and-mmap.patch " Andrew Morton
2020-05-19 1:13 ` + module-move-the-set_fs-hack-for-flush_icache_range-to-m68k.patch " Andrew Morton
2020-05-19 3:12 ` [alternative-merged] mm-slub-add-panic_on_error-to-the-debug-facilities.patch removed from " Andrew Morton
2020-05-19 3:22 ` + mm-gup-move-__get_user_pages_fast-down-a-few-lines-in-gupc.patch added to " Andrew Morton
2020-05-19 3:22 ` + mm-gup-refactor-and-de-duplicate-gup_fast-code.patch " Andrew Morton
2020-05-19 3:22 ` + mm-gup-introduce-pin_user_pages_fast_only.patch " Andrew Morton
2020-05-19 3:22 ` + drm-i915-convert-get_user_pages-pin_user_pages.patch " Andrew Morton
2020-05-19 3:47 ` + mm-vmalloc-track-which-page-table-levels-were-modified-fix-fix.patch " Andrew Morton
[not found] ` <20200519123429.GN8135@suse.de>
2020-05-19 21:35 ` Andrew Morton
2020-05-19 21:36 ` [withdrawn] mm-vmalloc-track-which-page-table-levels-were-modified-fix-fix.patch removed from " Andrew Morton
2020-05-19 23:45 ` + mm-migratec-call-detach_page_private-to-cleanup-code.patch added to " Andrew Morton
2020-05-20 0:08 ` + mm-free_area_init-allow-defining-max_zone_pfn-in-descending-order-fix-2-fix.patch " Andrew Morton
2020-05-20 0:10 ` + kasan-disable-branch-tracing-for-core-runtime.patch " Andrew Morton
2020-05-20 1:11 ` + sh-include-linux-time_typesh-for-sockios.patch " Andrew Morton
2020-05-20 1:15 ` + powerpc-add-support-for-folded-p4d-page-tables-fix-2.patch " Andrew Morton
2020-05-20 1:40 ` + mm-page_alloc-skip-waternark_boost-for-atomic-order-0-allocations.patch " Andrew Morton
2020-05-20 1:41 ` + mm-page_alloc-skip-waternark_boost-for-atomic-order-0-allocations-fix.patch " Andrew Morton
2020-05-20 2:43 ` + mm-use-only-pidfd-for-process_madvise-syscall-fix.patch " Andrew Morton
2020-05-20 2:45 ` + maintainers-update-email-address-for-naoya-horiguchi.patch " Andrew Morton
2020-05-20 4:48 ` mmotm 2020-05-19-21-47 uploaded Andrew Morton
2020-05-20 22:55 ` + mm-add-comments-on-pglist_data-zones.patch added to -mm tree Andrew Morton
2020-05-20 23:11 ` + mm-consolidate-pgd_index-and-pgd_offset_k-definitions-fix.patch " Andrew Morton
2020-05-20 23:22 ` + makefile-support-compressed-debug-info.patch " Andrew Morton
2020-05-20 23:31 ` + padata-remove-exit-routine.patch " Andrew Morton
2020-05-20 23:31 ` + padata-initialize-earlier.patch " Andrew Morton
2020-05-20 23:31 ` + padata-allocate-work-structures-for-parallel-jobs-from-a-pool.patch " Andrew Morton
2020-05-20 23:31 ` + padata-add-basic-support-for-multithreaded-jobs.patch " Andrew Morton
2020-05-20 23:31 ` + mm-parallelize-deferred_init_memmap.patch " Andrew Morton
2020-05-20 23:31 ` + mm-make-deferred-inits-max-threads-arch-specific.patch " Andrew Morton
2020-05-20 23:31 ` + padata-document-multithreaded-jobs.patch " Andrew Morton
2020-05-20 23:46 ` + sparc32-use-pud-rather-than-pgd-to-get-pmd-in-srmmu_nocache_init.patch " Andrew Morton
2020-05-20 23:53 ` + padata-initialize-earlier-fix.patch " Andrew Morton
2020-05-20 23:57 ` + asm-generic-dont-include-linux-mmh-in-cacheflushh-fix.patch " Andrew Morton
2020-05-21 0:47 ` + z3fold-fix-use-after-free-when-freeing-handles.patch " Andrew Morton
2020-05-21 0:47 ` + maintainers-add-files-related-to-kdump.patch " Andrew Morton
2020-05-21 2:39 ` + mm-memmap_init-iterate-over-memblock-regions-rather-that-check-each-pfn-fix-2.patch " Andrew Morton
2020-05-21 2:51 ` + swap-reduce-lock-contention-on-swap-cache-from-swap-slots-allocation.patch " Andrew Morton
2020-05-21 3:23 ` + mmap-locking-api-initial-implementation-as-rwsem-wrappers.patch " Andrew Morton
2020-05-21 3:23 ` + mmu-notifier-use-the-new-mmap-locking-api.patch " Andrew Morton
2020-05-21 3:23 ` + dma-reservations-use-the-new-mmap-locking-api.patch " Andrew Morton
2020-05-21 3:23 ` + mmap-locking-api-use-coccinelle-to-convert-mmap_sem-rwsem-call-sites.patch " Andrew Morton
2020-05-21 3:24 ` + mmap-locking-api-convert-mmap_sem-call-sites-missed-by-coccinelle.patch " Andrew Morton
2020-05-21 3:24 ` + mmap-locking-api-convert-mmap_sem-call-sites-missed-by-coccinelle-fix.patch " Andrew Morton
2020-05-21 3:24 ` + mmap-locking-api-convert-nested-write-lock-sites.patch " Andrew Morton
2020-05-21 3:24 ` + mmap-locking-api-add-mmap_read_trylock_non_owner.patch " Andrew Morton
2020-05-21 3:24 ` + mmap-locking-api-add-mmap_lock_initializer.patch " Andrew Morton
2020-05-21 3:24 ` + mmap-locking-api-add-mmap_assert_locked-and-mmap_assert_write_locked.patch " Andrew Morton
2020-05-21 3:24 ` + mmap-locking-api-rename-mmap_sem-to-mmap_lock.patch " Andrew Morton
2020-05-21 3:24 ` + mmap-locking-api-convert-mmap_sem-api-comments.patch " Andrew Morton
2020-05-21 3:25 ` + mmap-locking-api-convert-mmap_sem-comments.patch " Andrew Morton
2020-05-21 3:25 ` + mmap-locking-api-convert-mmap_sem-comments-fix.patch " Andrew Morton
2020-05-21 3:31 ` + mm-fix-lru-balancing-effect-of-new-transparent-huge-pages.patch " Andrew Morton
2020-05-21 3:31 ` + mm-keep-separate-anon-and-file-statistics-on-page-reclaim-activity.patch " Andrew Morton
2020-05-21 3:31 ` + mm-allow-swappiness-that-prefers-reclaiming-anon-over-the-file-workingset.patch " Andrew Morton
2020-05-21 3:31 ` + mm-fold-and-remove-lru_cache_add_anon-and-lru_cache_add_file.patch " Andrew Morton
2020-05-21 3:31 ` + mm-workingset-let-cache-workingset-challenge-anon.patch " Andrew Morton
2020-05-21 3:31 ` + mm-remove-use-once-cache-bias-from-lru-balancing.patch " Andrew Morton
2020-05-21 3:32 ` + mm-vmscan-drop-unnecessary-div0-avoidance-rounding-in-get_scan_count.patch " Andrew Morton
2020-05-21 3:32 ` + mm-base-lru-balancing-on-an-explicit-cost-model.patch " Andrew Morton
2020-05-21 3:32 ` + mm-deactivations-shouldnt-bias-the-lru-balance.patch " Andrew Morton
2020-05-21 3:32 ` + mm-only-count-actual-rotations-as-lru-reclaim-cost.patch " Andrew Morton
2020-05-21 3:32 ` + mm-balance-lru-lists-based-on-relative-thrashing.patch " Andrew Morton
2020-05-21 3:32 ` + mm-vmscan-determine-anon-file-pressure-balance-at-the-reclaim-root.patch " Andrew Morton
2020-05-21 3:32 ` + mm-vmscan-reclaim-writepage-is-io-cost.patch " Andrew Morton
2020-05-21 3:32 ` + mm-vmscan-limit-the-range-of-lru-type-balancing.patch " Andrew Morton
2020-05-21 3:46 ` [failures] makefile-support-compressed-debug-info.patch removed from " Andrew Morton
2020-05-21 17:25 ` + mmap-locking-api-convert-mmap_sem-comments-fix-fix.patch added to " Andrew Morton
2020-05-21 17:28 ` [nacked] scripts-add-a-intermediate-file-for-make-gtags.patch removed from " Andrew Morton
2020-05-21 17:28 ` [nacked] scripts-support-compiled-source-improved-precise.patch " Andrew Morton
2020-05-21 18:30 ` + arch-parisc-include-asm-pgtableh-remove-unused-old_pte.patch added to " Andrew Morton
2020-05-21 19:00 ` + mm-vmstat-add-events-for-pmd-based-thp-migration-without-split-fix.patch " Andrew Morton
2020-05-21 19:55 ` + mm-memcontrol-make-swap-tracking-an-integral-part-of-memory-control-fix.patch " Andrew Morton
2020-05-22 1:05 ` + mmap-locking-api-convert-mmap_sem-call-sites-missed-by-coccinelle-fix-fix.patch " Andrew Morton
2020-05-22 3:01 ` + mmap-locking-api-convert-mmap_sem-call-sites-missed-by-coccinelle-fix-fix-fix.patch " Andrew Morton
[not found] ` <CANN689HdE5d9ADE=8uRajTRL47oUcEV5mtCO0kRRWR8Jy_J3hg@mail.gmail.com>
2020-05-23 0:54 ` Andrew Morton
2020-05-22 3:10 ` + mm-migratec-call-detach_page_private-to-cleanup-code-fix.patch " Andrew Morton
2020-05-22 3:43 ` mmotm 2020-05-21-20-42 uploaded Andrew Morton
2020-05-22 23:29 ` + mm-z3fold-silence-kmemleak-false-positives-of-slots.patch added to -mm tree Andrew Morton
2020-05-22 23:32 ` + init-allow-distribution-configuration-of-default-init.patch " Andrew Morton
2020-05-22 23:38 ` + mm-deactivations-shouldnt-bias-the-lru-balance-fix.patch " Andrew Morton
2020-05-22 23:40 ` [to-be-updated] mm-memcg-avoid-stale-protection-values-when-cgroup-is-above-protection.patch removed from " Andrew Morton
2020-05-22 23:40 ` [to-be-updated] mm-memcg-decouple-elowmin-state-mutations-from-protection-checks.patch " Andrew Morton
2020-05-22 23:45 ` + kasan-disable-branch-tracing-for-core-runtime-v2.patch added to " Andrew Morton
2020-05-23 0:00 ` + mm-swapfile-fix-proc-swaps-heading-and-size-used-priority-alignment.patch " Andrew Morton
2020-05-23 0:24 ` + mm-memcontrol-charge-swapin-pages-on-instantiation-fix.patch " Andrew Morton
2020-05-23 0:51 ` + mm-vmstat-add-events-for-pmd-based-thp-migration-without-split-update.patch " Andrew Morton
2020-05-23 0:56 ` + mm-gup-might_lock_readmmap_sem-in-get_user_pages_fast.patch " Andrew Morton
2020-05-23 1:02 ` + mmap-locking-api-rename-mmap_sem-to-mmap_lock-fix.patch " Andrew Morton
2020-05-23 1:03 ` + mm-migratec-call-detach_page_private-to-cleanup-code-fix-fix.patch " Andrew Morton
2020-05-23 1:06 ` [to-be-updated] mm-memcontrol-make-swap-tracking-an-integral-part-of-memory-control-fix.patch removed from " Andrew Morton
2020-05-23 1:09 ` + mm-memcontrol-make-swap-tracking-an-integral-part-of-memory-control-fix-v2.patch added to " Andrew Morton
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=20200515211539.R1b61bzeQ%akpm@linux-foundation.org \
--to=akpm@linux-foundation.org \
--cc=arnd@arndb.de \
--cc=bcain@codeaurora.org \
--cc=bp@alien8.de \
--cc=catalin.marinas@arm.com \
--cc=chris@zankel.net \
--cc=dalias@libc.org \
--cc=davem@davemloft.net \
--cc=deanbo422@gmail.com \
--cc=deller@gmx.de \
--cc=geert@linux-m68k.org \
--cc=gerg@linux-m68k.org \
--cc=green.hu@gmail.com \
--cc=guoren@kernel.org \
--cc=gxt@pku.edu.cn \
--cc=heiko.carstens@de.ibm.com \
--cc=jcmvbkbc@gmail.com \
--cc=ley.foon.tan@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=mattst88@gmail.com \
--cc=mingo@redhat.com \
--cc=mm-commits@vger.kernel.org \
--cc=monstr@monstr.eu \
--cc=mpe@ellerman.id.au \
--cc=msalter@redhat.com \
--cc=nickhu@andestech.com \
--cc=paul.walmsley@sifive.com \
--cc=richard@nod.at \
--cc=rppt@linux.ibm.com \
--cc=shorne@gmail.com \
--cc=tglx@linutronix.de \
--cc=tony.luck@intel.com \
--cc=tsbogend@alpha.franken.de \
--cc=vgupta@synopsys.com \
--cc=will@kernel.org \
--cc=willy@infradead.org \
--cc=ysato@users.sourceforge.jp \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).