2021-06-15 23:39:31

by Andrew Morton

[permalink] [raw]
Subject: + mm-rename-pud_page_vaddr-to-pud_pgtable-and-make-it-return-pmd_t.patch added to -mm tree


The patch titled
Subject: mm: rename pud_page_vaddr to pud_pgtable and make it return pmd_t *
has been added to the -mm tree. Its filename is
mm-rename-pud_page_vaddr-to-pud_pgtable-and-make-it-return-pmd_t.patch

This patch should soon appear at
https://ozlabs.org/~akpm/mmots/broken-out/mm-rename-pud_page_vaddr-to-pud_pgtable-and-make-it-return-pmd_t.patch
and later at
https://ozlabs.org/~akpm/mmotm/broken-out/mm-rename-pud_page_vaddr-to-pud_pgtable-and-make-it-return-pmd_t.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: "Aneesh Kumar K.V" <[email protected]>
Subject: mm: rename pud_page_vaddr to pud_pgtable and make it return pmd_t *

No functional change in this patch.

Link: https://lkml.kernel.org/r/[email protected]
Link: https://lore.kernel.org/linuxppc-dev/CAHk-=wi+J+iodze9FtjM3Zi4j4OeS+qqbKxME9QN4roxPEXH9Q@mail.gmail.com/
Signed-off-by: Aneesh Kumar K.V <[email protected]>
Cc: <[email protected]>
Cc: <[email protected]>
Cc: <[email protected]>
Cc: <[email protected]>
Cc: <[email protected]>
Cc: <[email protected]>
Cc: <[email protected]>
Cc: <[email protected]>
Cc: <[email protected]>
Cc: <[email protected]>
Cc: <[email protected]>
Cc: <[email protected]>
Cc: <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
---

arch/alpha/include/asm/pgtable.h | 8 +++++---
arch/arm/include/asm/pgtable-3level.h | 2 +-
arch/arm64/include/asm/pgtable.h | 4 ++--
arch/ia64/include/asm/pgtable.h | 2 +-
arch/m68k/include/asm/motorola_pgtable.h | 2 +-
arch/mips/include/asm/pgtable-64.h | 4 ++--
arch/parisc/include/asm/pgtable.h | 4 ++--
arch/powerpc/include/asm/book3s/64/pgtable.h | 6 +++++-
arch/powerpc/include/asm/nohash/64/pgtable.h | 6 +++++-
arch/powerpc/mm/book3s64/radix_pgtable.c | 4 ++--
arch/powerpc/mm/pgtable_64.c | 2 +-
arch/riscv/include/asm/pgtable-64.h | 4 ++--
arch/sh/include/asm/pgtable-3level.h | 4 ++--
arch/sparc/include/asm/pgtable_32.h | 4 ++--
arch/sparc/include/asm/pgtable_64.h | 6 +++---
arch/um/include/asm/pgtable-3level.h | 2 +-
arch/x86/include/asm/pgtable.h | 4 ++--
arch/x86/mm/pat/set_memory.c | 4 ++--
arch/x86/mm/pgtable.c | 2 +-
include/asm-generic/pgtable-nopmd.h | 2 +-
include/asm-generic/pgtable-nopud.h | 2 +-
include/linux/pgtable.h | 2 +-
22 files changed, 45 insertions(+), 35 deletions(-)

--- a/arch/alpha/include/asm/pgtable.h~mm-rename-pud_page_vaddr-to-pud_pgtable-and-make-it-return-pmd_t
+++ a/arch/alpha/include/asm/pgtable.h
@@ -236,8 +236,10 @@ pmd_page_vaddr(pmd_t pmd)
#define pmd_page(pmd) (pfn_to_page(pmd_val(pmd) >> 32))
#define pud_page(pud) (pfn_to_page(pud_val(pud) >> 32))

-extern inline unsigned long pud_page_vaddr(pud_t pgd)
-{ return PAGE_OFFSET + ((pud_val(pgd) & _PFN_MASK) >> (32-PAGE_SHIFT)); }
+static inline pmd_t *pud_pgtable(pud_t pgd)
+{
+ return (pmd_t *)(PAGE_OFFSET + ((pud_val(pgd) & _PFN_MASK) >> (32-PAGE_SHIFT)));
+}

extern inline int pte_none(pte_t pte) { return !pte_val(pte); }
extern inline int pte_present(pte_t pte) { return pte_val(pte) & _PAGE_VALID; }
@@ -287,7 +289,7 @@ extern inline pte_t pte_mkyoung(pte_t pt
/* Find an entry in the second-level page table.. */
extern inline pmd_t * pmd_offset(pud_t * dir, unsigned long address)
{
- pmd_t *ret = (pmd_t *) pud_page_vaddr(*dir) + ((address >> PMD_SHIFT) & (PTRS_PER_PAGE - 1));
+ pmd_t *ret = pud_pgtable(*dir) + ((address >> PMD_SHIFT) & (PTRS_PER_PAGE - 1));
smp_rmb(); /* see above */
return ret;
}
--- a/arch/arm64/include/asm/pgtable.h~mm-rename-pud_page_vaddr-to-pud_pgtable-and-make-it-return-pmd_t
+++ a/arch/arm64/include/asm/pgtable.h
@@ -633,9 +633,9 @@ static inline phys_addr_t pud_page_paddr
return __pud_to_phys(pud);
}

-static inline unsigned long pud_page_vaddr(pud_t pud)
+static inline pmd_t *pud_pgtable(pud_t pud)
{
- return (unsigned long)__va(pud_page_paddr(pud));
+ return (pmd_t *)__va(pud_page_paddr(pud));
}

/* Find an entry in the second-level page table. */
--- a/arch/arm/include/asm/pgtable-3level.h~mm-rename-pud_page_vaddr-to-pud_pgtable-and-make-it-return-pmd_t
+++ a/arch/arm/include/asm/pgtable-3level.h
@@ -130,7 +130,7 @@
flush_pmd_entry(pudp); \
} while (0)

-static inline pmd_t *pud_page_vaddr(pud_t pud)
+static inline pmd_t *pud_pgtable(pud_t pud)
{
return __va(pud_val(pud) & PHYS_MASK & (s32)PAGE_MASK);
}
--- a/arch/ia64/include/asm/pgtable.h~mm-rename-pud_page_vaddr-to-pud_pgtable-and-make-it-return-pmd_t
+++ a/arch/ia64/include/asm/pgtable.h
@@ -273,7 +273,7 @@ ia64_phys_addr_valid (unsigned long addr
#define pud_bad(pud) (!ia64_phys_addr_valid(pud_val(pud)))
#define pud_present(pud) (pud_val(pud) != 0UL)
#define pud_clear(pudp) (pud_val(*(pudp)) = 0UL)
-#define pud_page_vaddr(pud) ((unsigned long) __va(pud_val(pud) & _PFN_MASK))
+#define pud_pgtable(pud) ((pmd_t *) __va(pud_val(pud) & _PFN_MASK))
#define pud_page(pud) virt_to_page((pud_val(pud) + PAGE_OFFSET))

#if CONFIG_PGTABLE_LEVELS == 4
--- a/arch/m68k/include/asm/motorola_pgtable.h~mm-rename-pud_page_vaddr-to-pud_pgtable-and-make-it-return-pmd_t
+++ a/arch/m68k/include/asm/motorola_pgtable.h
@@ -131,7 +131,7 @@ static inline void pud_set(pud_t *pudp,

#define __pte_page(pte) ((unsigned long)__va(pte_val(pte) & PAGE_MASK))
#define pmd_page_vaddr(pmd) ((unsigned long)__va(pmd_val(pmd) & _TABLE_MASK))
-#define pud_page_vaddr(pud) ((unsigned long)__va(pud_val(pud) & _TABLE_MASK))
+#define pud_pgtable(pud) ((pmd_t *)__va(pud_val(pud) & _TABLE_MASK))


#define pte_none(pte) (!pte_val(pte))
--- a/arch/mips/include/asm/pgtable-64.h~mm-rename-pud_page_vaddr-to-pud_pgtable-and-make-it-return-pmd_t
+++ a/arch/mips/include/asm/pgtable-64.h
@@ -313,9 +313,9 @@ static inline void pud_clear(pud_t *pudp
#endif

#ifndef __PAGETABLE_PMD_FOLDED
-static inline unsigned long pud_page_vaddr(pud_t pud)
+static inline pmd_t *pud_pgtable(pud_t pud)
{
- return pud_val(pud);
+ return (pmd_t *)pud_val(pud);
}
#define pud_phys(pud) virt_to_phys((void *)pud_val(pud))
#define pud_page(pud) (pfn_to_page(pud_phys(pud) >> PAGE_SHIFT))
--- a/arch/parisc/include/asm/pgtable.h~mm-rename-pud_page_vaddr-to-pud_pgtable-and-make-it-return-pmd_t
+++ a/arch/parisc/include/asm/pgtable.h
@@ -322,8 +322,8 @@ static inline void pmd_clear(pmd_t *pmd)


#if CONFIG_PGTABLE_LEVELS == 3
-#define pud_page_vaddr(pud) ((unsigned long) __va(pud_address(pud)))
-#define pud_page(pud) virt_to_page((void *)pud_page_vaddr(pud))
+#define pud_pgtable(pud) ((pmd_t *) __va(pud_address(pud)))
+#define pud_page(pud) virt_to_page((void *)pud_pgtable(pud))

/* For 64 bit we have three level tables */

--- a/arch/powerpc/include/asm/book3s/64/pgtable.h~mm-rename-pud_page_vaddr-to-pud_pgtable-and-make-it-return-pmd_t
+++ a/arch/powerpc/include/asm/book3s/64/pgtable.h
@@ -1048,9 +1048,13 @@ extern struct page *p4d_page(p4d_t p4d);
/* Pointers in the page table tree are physical addresses */
#define __pgtable_ptr_val(ptr) __pa(ptr)

-#define pud_page_vaddr(pud) __va(pud_val(pud) & ~PUD_MASKED_BITS)
#define p4d_page_vaddr(p4d) __va(p4d_val(p4d) & ~P4D_MASKED_BITS)

+static inline pmd_t *pud_pgtable(pud_t pud)
+{
+ return (pmd_t *)__va(pud_val(pud) & ~PUD_MASKED_BITS);
+}
+
#define pte_ERROR(e) \
pr_err("%s:%d: bad pte %08lx.\n", __FILE__, __LINE__, pte_val(e))
#define pmd_ERROR(e) \
--- a/arch/powerpc/include/asm/nohash/64/pgtable.h~mm-rename-pud_page_vaddr-to-pud_pgtable-and-make-it-return-pmd_t
+++ a/arch/powerpc/include/asm/nohash/64/pgtable.h
@@ -162,7 +162,11 @@ static inline void pud_clear(pud_t *pudp
#define pud_bad(pud) (!is_kernel_addr(pud_val(pud)) \
|| (pud_val(pud) & PUD_BAD_BITS))
#define pud_present(pud) (pud_val(pud) != 0)
-#define pud_page_vaddr(pud) (pud_val(pud) & ~PUD_MASKED_BITS)
+
+static inline pmd_t *pud_pgtable(pud_t pud)
+{
+ return (pmd_t *)(pud_val(pud) & ~PUD_MASKED_BITS);
+}

extern struct page *pud_page(pud_t pud);

--- a/arch/powerpc/mm/book3s64/radix_pgtable.c~mm-rename-pud_page_vaddr-to-pud_pgtable-and-make-it-return-pmd_t
+++ a/arch/powerpc/mm/book3s64/radix_pgtable.c
@@ -826,7 +826,7 @@ static void __meminit remove_pud_table(p
continue;
}

- pmd_base = (pmd_t *)pud_page_vaddr(*pud);
+ pmd_base = pud_pgtable(*pud);
remove_pmd_table(pmd_base, addr, next);
free_pmd_table(pmd_base, pud);
}
@@ -1111,7 +1111,7 @@ int pud_free_pmd_page(pud_t *pud, unsign
pmd_t *pmd;
int i;

- pmd = (pmd_t *)pud_page_vaddr(*pud);
+ pmd = pud_pgtable(*pud);
pud_clear(pud);

flush_tlb_kernel_range(addr, addr + PUD_SIZE);
--- a/arch/powerpc/mm/pgtable_64.c~mm-rename-pud_page_vaddr-to-pud_pgtable-and-make-it-return-pmd_t
+++ a/arch/powerpc/mm/pgtable_64.c
@@ -115,7 +115,7 @@ struct page *pud_page(pud_t pud)
VM_WARN_ON(!pud_huge(pud));
return pte_page(pud_pte(pud));
}
- return virt_to_page(pud_page_vaddr(pud));
+ return virt_to_page(pud_pgtable(pud));
}

/*
--- a/arch/riscv/include/asm/pgtable-64.h~mm-rename-pud_page_vaddr-to-pud_pgtable-and-make-it-return-pmd_t
+++ a/arch/riscv/include/asm/pgtable-64.h
@@ -59,9 +59,9 @@ static inline void pud_clear(pud_t *pudp
set_pud(pudp, __pud(0));
}

-static inline unsigned long pud_page_vaddr(pud_t pud)
+static inline pmd_t *pud_pgtable(pud_t pud)
{
- return (unsigned long)pfn_to_virt(pud_val(pud) >> _PAGE_PFN_SHIFT);
+ return (pmd_t *)pfn_to_virt(pud_val(pud) >> _PAGE_PFN_SHIFT);
}

static inline struct page *pud_page(pud_t pud)
--- a/arch/sh/include/asm/pgtable-3level.h~mm-rename-pud_page_vaddr-to-pud_pgtable-and-make-it-return-pmd_t
+++ a/arch/sh/include/asm/pgtable-3level.h
@@ -32,9 +32,9 @@ typedef struct { unsigned long long pmd;
#define pmd_val(x) ((x).pmd)
#define __pmd(x) ((pmd_t) { (x) } )

-static inline unsigned long pud_page_vaddr(pud_t pud)
+static inline pmd_t *pud_pgtable(pud_t pud)
{
- return pud_val(pud);
+ return (pmd_t *)pud_val(pud);
}

/* only used by the stubbed out hugetlb gup code, should never be called */
--- a/arch/sparc/include/asm/pgtable_32.h~mm-rename-pud_page_vaddr-to-pud_pgtable-and-make-it-return-pmd_t
+++ a/arch/sparc/include/asm/pgtable_32.h
@@ -151,13 +151,13 @@ static inline unsigned long pmd_page_vad
return (unsigned long)__nocache_va(v << 4);
}

-static inline unsigned long pud_page_vaddr(pud_t pud)
+static inline pmd_t *pud_pgtable(pud_t pud)
{
if (srmmu_device_memory(pud_val(pud))) {
return ~0;
} else {
unsigned long v = pud_val(pud) & SRMMU_PTD_PMASK;
- return (unsigned long)__nocache_va(v << 4);
+ return (pmd_t *)__nocache_va(v << 4);
}
}

--- a/arch/sparc/include/asm/pgtable_64.h~mm-rename-pud_page_vaddr-to-pud_pgtable-and-make-it-return-pmd_t
+++ a/arch/sparc/include/asm/pgtable_64.h
@@ -841,18 +841,18 @@ static inline unsigned long pmd_page_vad
return ((unsigned long) __va(pfn << PAGE_SHIFT));
}

-static inline unsigned long pud_page_vaddr(pud_t pud)
+static inline pmd_t *pud_pgtable(pud_t pud)
{
pte_t pte = __pte(pud_val(pud));
unsigned long pfn;

pfn = pte_pfn(pte);

- return ((unsigned long) __va(pfn << PAGE_SHIFT));
+ return ((pmd_t *) __va(pfn << PAGE_SHIFT));
}

#define pmd_page(pmd) virt_to_page((void *)pmd_page_vaddr(pmd))
-#define pud_page(pud) virt_to_page((void *)pud_page_vaddr(pud))
+#define pud_page(pud) virt_to_page((void *)pud_pgtable(pud))
#define pmd_clear(pmdp) (pmd_val(*(pmdp)) = 0UL)
#define pud_present(pud) (pud_val(pud) != 0U)
#define pud_clear(pudp) (pud_val(*(pudp)) = 0UL)
--- a/arch/um/include/asm/pgtable-3level.h~mm-rename-pud_page_vaddr-to-pud_pgtable-and-make-it-return-pmd_t
+++ a/arch/um/include/asm/pgtable-3level.h
@@ -83,7 +83,7 @@ static inline void pud_clear (pud_t *pud
}

#define pud_page(pud) phys_to_page(pud_val(pud) & PAGE_MASK)
-#define pud_page_vaddr(pud) ((unsigned long) __va(pud_val(pud) & PAGE_MASK))
+#define pud_pgtable(pud) ((pmd_t *) __va(pud_val(pud) & PAGE_MASK))

static inline unsigned long pte_pfn(pte_t pte)
{
--- a/arch/x86/include/asm/pgtable.h~mm-rename-pud_page_vaddr-to-pud_pgtable-and-make-it-return-pmd_t
+++ a/arch/x86/include/asm/pgtable.h
@@ -865,9 +865,9 @@ static inline int pud_present(pud_t pud)
return pud_flags(pud) & _PAGE_PRESENT;
}

-static inline unsigned long pud_page_vaddr(pud_t pud)
+static inline pmd_t *pud_pgtable(pud_t pud)
{
- return (unsigned long)__va(pud_val(pud) & pud_pfn_mask(pud));
+ return (pmd_t *)__va(pud_val(pud) & pud_pfn_mask(pud));
}

/*
--- a/arch/x86/mm/pat/set_memory.c~mm-rename-pud_page_vaddr-to-pud_pgtable-and-make-it-return-pmd_t
+++ a/arch/x86/mm/pat/set_memory.c
@@ -1134,7 +1134,7 @@ static void __unmap_pmd_range(pud_t *pud
unsigned long start, unsigned long end)
{
if (unmap_pte_range(pmd, start, end))
- if (try_to_free_pmd_page((pmd_t *)pud_page_vaddr(*pud)))
+ if (try_to_free_pmd_page(pud_pgtable(*pud)))
pud_clear(pud);
}

@@ -1178,7 +1178,7 @@ static void unmap_pmd_range(pud_t *pud,
* Try again to free the PMD page if haven't succeeded above.
*/
if (!pud_none(*pud))
- if (try_to_free_pmd_page((pmd_t *)pud_page_vaddr(*pud)))
+ if (try_to_free_pmd_page(pud_pgtable(*pud)))
pud_clear(pud);
}

--- a/arch/x86/mm/pgtable.c~mm-rename-pud_page_vaddr-to-pud_pgtable-and-make-it-return-pmd_t
+++ a/arch/x86/mm/pgtable.c
@@ -801,7 +801,7 @@ int pud_free_pmd_page(pud_t *pud, unsign
pte_t *pte;
int i;

- pmd = (pmd_t *)pud_page_vaddr(*pud);
+ pmd = pud_pgtable(*pud);
pmd_sv = (pmd_t *)__get_free_page(GFP_KERNEL);
if (!pmd_sv)
return 0;
--- a/include/asm-generic/pgtable-nopmd.h~mm-rename-pud_page_vaddr-to-pud_pgtable-and-make-it-return-pmd_t
+++ a/include/asm-generic/pgtable-nopmd.h
@@ -51,7 +51,7 @@ static inline pmd_t * pmd_offset(pud_t *
#define __pmd(x) ((pmd_t) { __pud(x) } )

#define pud_page(pud) (pmd_page((pmd_t){ pud }))
-#define pud_page_vaddr(pud) (pmd_page_vaddr((pmd_t){ pud }))
+#define pud_pgtable(pud) ((pmd_t *)(pmd_page_vaddr((pmd_t){ pud })))

/*
* allocating and freeing a pmd is trivial: the 1-entry pmd is
--- a/include/asm-generic/pgtable-nopud.h~mm-rename-pud_page_vaddr-to-pud_pgtable-and-make-it-return-pmd_t
+++ a/include/asm-generic/pgtable-nopud.h
@@ -49,7 +49,7 @@ static inline pud_t *pud_offset(p4d_t *p
#define __pud(x) ((pud_t) { __p4d(x) })

#define p4d_page(p4d) (pud_page((pud_t){ p4d }))
-#define p4d_page_vaddr(p4d) (pud_page_vaddr((pud_t){ p4d }))
+#define p4d_page_vaddr(p4d) (pud_pgtable((pud_t){ p4d }))

/*
* allocating and freeing a pud is trivial: the 1-entry pud is
--- a/include/linux/pgtable.h~mm-rename-pud_page_vaddr-to-pud_pgtable-and-make-it-return-pmd_t
+++ a/include/linux/pgtable.h
@@ -106,7 +106,7 @@ static inline pte_t *pte_offset_kernel(p
#ifndef pmd_offset
static inline pmd_t *pmd_offset(pud_t *pud, unsigned long address)
{
- return (pmd_t *)pud_page_vaddr(*pud) + pmd_index(address);
+ return pud_pgtable(*pud) + pmd_index(address);
}
#define pmd_offset pmd_offset
#endif
_

Patches currently in -mm which might be from [email protected] are

mm-rename-pud_page_vaddr-to-pud_pgtable-and-make-it-return-pmd_t.patch
mm-rename-p4d_page_vaddr-to-p4d_pgtable-and-make-it-return-pud_t.patch


2021-06-16 19:03:02

by kernel test robot

[permalink] [raw]
Subject: Re: + mm-rename-pud_page_vaddr-to-pud_pgtable-and-make-it-return-pmd_t.patch added to -mm tree

Hi,

I love your patch! Perhaps something to improve:

[auto build test WARNING on powerpc/next]
[also build test WARNING on tip/x86/mm asm-generic/master linus/master sparc/master v5.13-rc6 next-20210615]
[cannot apply to sparc-next/master]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url: https://github.com/0day-ci/linux/commits/akpm-linux-foundation-org/mm-rename-pud_page_vaddr-to-pud_pgtable-and-make-it-return-pmd_t-patch-added-to-mm-tree/20210616-161816
base: https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git next
config: m68k-allmodconfig (attached as .config)
compiler: m68k-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/0day-ci/linux/commit/2ccec57c1def84dab91722c14fd5907ed7423426
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review akpm-linux-foundation-org/mm-rename-pud_page_vaddr-to-pud_pgtable-and-make-it-return-pmd_t-patch-added-to-mm-tree/20210616-161816
git checkout 2ccec57c1def84dab91722c14fd5907ed7423426
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=m68k

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>

All warnings (new ones prefixed by >>):

arch/m68k/mm/motorola.c: In function 'kernel_ptr_table':
>> arch/m68k/mm/motorola.c:265:8: warning: assignment to 'long unsigned int' from 'pmd_t *' {aka 'struct <anonymous> *'} makes integer from pointer without a cast [-Wint-conversion]
265 | pmd = pgd_page_vaddr(kernel_pg_dir[i]);
| ^
arch/m68k/mm/motorola.c: At top level:
arch/m68k/mm/motorola.c:390:13: warning: no previous prototype for 'paging_init' [-Wmissing-prototypes]
390 | void __init paging_init(void)
| ^~~~~~~~~~~


vim +265 arch/m68k/mm/motorola.c

^1da177e4c3f41 Linus Torvalds 2005-04-16 248
^1da177e4c3f41 Linus Torvalds 2005-04-16 249 static pmd_t * __init kernel_ptr_table(void)
^1da177e4c3f41 Linus Torvalds 2005-04-16 250 {
ef9285f69f0efb Peter Zijlstra 2020-01-31 251 if (!last_pmd_table) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 252 unsigned long pmd, last;
^1da177e4c3f41 Linus Torvalds 2005-04-16 253 int i;
^1da177e4c3f41 Linus Torvalds 2005-04-16 254
^1da177e4c3f41 Linus Torvalds 2005-04-16 255 /* Find the last ptr table that was used in head.S and
^1da177e4c3f41 Linus Torvalds 2005-04-16 256 * reuse the remaining space in that page for further
^1da177e4c3f41 Linus Torvalds 2005-04-16 257 * ptr tables.
^1da177e4c3f41 Linus Torvalds 2005-04-16 258 */
^1da177e4c3f41 Linus Torvalds 2005-04-16 259 last = (unsigned long)kernel_pg_dir;
^1da177e4c3f41 Linus Torvalds 2005-04-16 260 for (i = 0; i < PTRS_PER_PGD; i++) {
60e50f34b13e9e Mike Rapoport 2019-12-04 261 pud_t *pud = (pud_t *)(&kernel_pg_dir[i]);
60e50f34b13e9e Mike Rapoport 2019-12-04 262
60e50f34b13e9e Mike Rapoport 2019-12-04 263 if (!pud_present(*pud))
^1da177e4c3f41 Linus Torvalds 2005-04-16 264 continue;
60e50f34b13e9e Mike Rapoport 2019-12-04 @265 pmd = pgd_page_vaddr(kernel_pg_dir[i]);
^1da177e4c3f41 Linus Torvalds 2005-04-16 266 if (pmd > last)
^1da177e4c3f41 Linus Torvalds 2005-04-16 267 last = pmd;
^1da177e4c3f41 Linus Torvalds 2005-04-16 268 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 269
ef9285f69f0efb Peter Zijlstra 2020-01-31 270 last_pmd_table = (pmd_t *)last;
^1da177e4c3f41 Linus Torvalds 2005-04-16 271 #ifdef DEBUG
ef9285f69f0efb Peter Zijlstra 2020-01-31 272 printk("kernel_ptr_init: %p\n", last_pmd_table);
^1da177e4c3f41 Linus Torvalds 2005-04-16 273 #endif
^1da177e4c3f41 Linus Torvalds 2005-04-16 274 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 275
ef9285f69f0efb Peter Zijlstra 2020-01-31 276 last_pmd_table += PTRS_PER_PMD;
41f1bf37a63ecd Geert Uytterhoeven 2020-08-26 277 if (PAGE_ALIGNED(last_pmd_table)) {
7e158826564fbb Geert Uytterhoeven 2020-08-26 278 last_pmd_table = memblock_alloc_low(PAGE_SIZE, PAGE_SIZE);
ef9285f69f0efb Peter Zijlstra 2020-01-31 279 if (!last_pmd_table)
8a7f97b902f4fb Mike Rapoport 2019-03-11 280 panic("%s: Failed to allocate %lu bytes align=%lx\n",
8a7f97b902f4fb Mike Rapoport 2019-03-11 281 __func__, PAGE_SIZE, PAGE_SIZE);
^1da177e4c3f41 Linus Torvalds 2005-04-16 282
ef9285f69f0efb Peter Zijlstra 2020-01-31 283 clear_page(last_pmd_table);
ef9285f69f0efb Peter Zijlstra 2020-01-31 284 mmu_page_ctor(last_pmd_table);
^1da177e4c3f41 Linus Torvalds 2005-04-16 285 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 286
ef9285f69f0efb Peter Zijlstra 2020-01-31 287 return last_pmd_table;
^1da177e4c3f41 Linus Torvalds 2005-04-16 288 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 289

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]


Attachments:
(No filename) (5.37 kB)
.config.gz (59.00 kB)
Download all attachments

2021-06-16 19:09:06

by Aneesh Kumar K.V

[permalink] [raw]
Subject: Re: + mm-rename-pud_page_vaddr-to-pud_pgtable-and-make-it-return-pmd_t.patch added to -mm tree

kernel test robot <[email protected]> writes:

> Hi,
>
> I love your patch! Perhaps something to improve:
>
> [auto build test WARNING on powerpc/next]
> [also build test WARNING on tip/x86/mm asm-generic/master linus/master sparc/master v5.13-rc6 next-20210615]
> [cannot apply to sparc-next/master]
> [If your patch is applied to the wrong git tree, kindly drop us a note.
> And when submitting patch, we suggest to use '--base' as documented in
> https://git-scm.com/docs/git-format-patch]
>
> url: https://github.com/0day-ci/linux/commits/akpm-linux-foundation-org/mm-rename-pud_page_vaddr-to-pud_pgtable-and-make-it-return-pmd_t-patch-added-to-mm-tree/20210616-161816
> base: https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git next
> config: m68k-allmodconfig (attached as .config)
> compiler: m68k-linux-gcc (GCC) 9.3.0
> reproduce (this is a W=1 build):
> wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> chmod +x ~/bin/make.cross
> # https://github.com/0day-ci/linux/commit/2ccec57c1def84dab91722c14fd5907ed7423426
> git remote add linux-review https://github.com/0day-ci/linux
> git fetch --no-tags linux-review akpm-linux-foundation-org/mm-rename-pud_page_vaddr-to-pud_pgtable-and-make-it-return-pmd_t-patch-added-to-mm-tree/20210616-161816
> git checkout 2ccec57c1def84dab91722c14fd5907ed7423426
> # save the attached .config to linux build tree
> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=m68k
>
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <[email protected]>
>
> All warnings (new ones prefixed by >>):
>
> arch/m68k/mm/motorola.c: In function 'kernel_ptr_table':
>>> arch/m68k/mm/motorola.c:265:8: warning: assignment to 'long unsigned int' from 'pmd_t *' {aka 'struct <anonymous> *'} makes integer from pointer without a cast [-Wint-conversion]
> 265 | pmd = pgd_page_vaddr(kernel_pg_dir[i]);
> | ^
> arch/m68k/mm/motorola.c: At top level:
> arch/m68k/mm/motorola.c:390:13: warning: no previous prototype for 'paging_init' [-Wmissing-prototypes]
> 390 | void __init paging_init(void)
> | ^~~~~~~~~~~
>
>
> vim +265 arch/m68k/mm/motorola.c
>
> ^1da177e4c3f41 Linus Torvalds 2005-04-16 248
> ^1da177e4c3f41 Linus Torvalds 2005-04-16 249 static pmd_t * __init kernel_ptr_table(void)
> ^1da177e4c3f41 Linus Torvalds 2005-04-16 250 {
> ef9285f69f0efb Peter Zijlstra 2020-01-31 251 if (!last_pmd_table) {
> ^1da177e4c3f41 Linus Torvalds 2005-04-16 252 unsigned long pmd, last;
> ^1da177e4c3f41 Linus Torvalds 2005-04-16 253 int i;
> ^1da177e4c3f41 Linus Torvalds 2005-04-16 254
> ^1da177e4c3f41 Linus Torvalds 2005-04-16 255 /* Find the last ptr table that was used in head.S and
> ^1da177e4c3f41 Linus Torvalds 2005-04-16 256 * reuse the remaining space in that page for further
> ^1da177e4c3f41 Linus Torvalds 2005-04-16 257 * ptr tables.
> ^1da177e4c3f41 Linus Torvalds 2005-04-16 258 */
> ^1da177e4c3f41 Linus Torvalds 2005-04-16 259 last = (unsigned long)kernel_pg_dir;
> ^1da177e4c3f41 Linus Torvalds 2005-04-16 260 for (i = 0; i < PTRS_PER_PGD; i++) {
> 60e50f34b13e9e Mike Rapoport 2019-12-04 261 pud_t *pud = (pud_t *)(&kernel_pg_dir[i]);
> 60e50f34b13e9e Mike Rapoport 2019-12-04 262
> 60e50f34b13e9e Mike Rapoport 2019-12-04 263 if (!pud_present(*pud))
> ^1da177e4c3f41 Linus Torvalds 2005-04-16 264 continue;
> 60e50f34b13e9e Mike Rapoport 2019-12-04 @265 pmd = pgd_page_vaddr(kernel_pg_dir[i]);
> ^1da177e4c3f41 Linus Torvalds 2005-04-16 266 if (pmd > last)
> ^1da177e4c3f41 Linus Torvalds 2005-04-16 267 last = pmd;
> ^1da177e4c3f41 Linus Torvalds 2005-04-16 268 }
> ^1da177e4c3f41 Linus Torvalds 2005-04-16 269
> ef9285f69f0efb Peter Zijlstra 2020-01-31 270 last_pmd_table = (pmd_t *)last;
> ^1da177e4c3f41 Linus Torvalds 2005-04-16 271 #ifdef DEBUG
> ef9285f69f0efb Peter Zijlstra 2020-01-31 272 printk("kernel_ptr_init: %p\n", last_pmd_table);
> ^1da177e4c3f41 Linus Torvalds 2005-04-16 273 #endif
> ^1da177e4c3f41 Linus Torvalds 2005-04-16 274 }
> ^1da177e4c3f41 Linus Torvalds 2005-04-16 275
> ef9285f69f0efb Peter Zijlstra 2020-01-31 276 last_pmd_table += PTRS_PER_PMD;
> 41f1bf37a63ecd Geert Uytterhoeven 2020-08-26 277 if (PAGE_ALIGNED(last_pmd_table)) {
> 7e158826564fbb Geert Uytterhoeven 2020-08-26 278 last_pmd_table = memblock_alloc_low(PAGE_SIZE, PAGE_SIZE);
> ef9285f69f0efb Peter Zijlstra 2020-01-31 279 if (!last_pmd_table)
> 8a7f97b902f4fb Mike Rapoport 2019-03-11 280 panic("%s: Failed to allocate %lu bytes align=%lx\n",
> 8a7f97b902f4fb Mike Rapoport 2019-03-11 281 __func__, PAGE_SIZE, PAGE_SIZE);
> ^1da177e4c3f41 Linus Torvalds 2005-04-16 282
> ef9285f69f0efb Peter Zijlstra 2020-01-31 283 clear_page(last_pmd_table);
> ef9285f69f0efb Peter Zijlstra 2020-01-31 284 mmu_page_ctor(last_pmd_table);
> ^1da177e4c3f41 Linus Torvalds 2005-04-16 285 }
> ^1da177e4c3f41 Linus Torvalds 2005-04-16 286
> ef9285f69f0efb Peter Zijlstra 2020-01-31 287 return last_pmd_table;
> ^1da177e4c3f41 Linus Torvalds 2005-04-16 288 }
> ^1da177e4c3f41 Linus Torvalds 2005-04-16 289
>

We may want to fixup pgd_page_vaddr correctly later. pgd_page_vaddr() gets
cast to different pointer types based on architecture. But for now this
should work? This ensure we keep the pgd_page_vaddr() same as before.

diff --git a/include/asm-generic/pgtable-nop4d.h b/include/asm-generic/pgtable-nop4d.h
index 982de5102fc1..2f1d0aad645c 100644
--- a/include/asm-generic/pgtable-nop4d.h
+++ b/include/asm-generic/pgtable-nop4d.h
@@ -42,7 +42,7 @@ static inline p4d_t *p4d_offset(pgd_t *pgd, unsigned long address)
#define __p4d(x) ((p4d_t) { __pgd(x) })

#define pgd_page(pgd) (p4d_page((p4d_t){ pgd }))
-#define pgd_page_vaddr(pgd) (p4d_pgtable((p4d_t){ pgd }))
+#define pgd_page_vaddr(pgd) ((unsigned long)(p4d_pgtable((p4d_t){ pgd })))

/*
* allocating and freeing a p4d is trivial: the 1-entry p4d is

2021-06-17 02:36:40

by Andrew Morton

[permalink] [raw]
Subject: Re: + mm-rename-pud_page_vaddr-to-pud_pgtable-and-make-it-return-pmd_t.patch added to -mm tree

On Wed, 16 Jun 2021 19:41:32 +0530 "Aneesh Kumar K.V" <[email protected]> wrote:

> We may want to fixup pgd_page_vaddr correctly later. pgd_page_vaddr() gets
> cast to different pointer types based on architecture. But for now this
> should work? This ensure we keep the pgd_page_vaddr() same as before.

I'll drop

mm-rename-pud_page_vaddr-to-pud_pgtable-and-make-it-return-pmd_t.patch
mm-rename-p4d_page_vaddr-to-p4d_pgtable-and-make-it-return-pud_t.patch

for now.

2021-06-17 02:46:15

by Stephen Rothwell

[permalink] [raw]
Subject: Re: + mm-rename-pud_page_vaddr-to-pud_pgtable-and-make-it-return-pmd_t.patch added to -mm tree

Hi Andrew,

On Wed, 16 Jun 2021 16:09:04 -0700 Andrew Morton <[email protected]> wrote:
>
> On Wed, 16 Jun 2021 19:41:32 +0530 "Aneesh Kumar K.V" <[email protected]> wrote:
>
> > We may want to fixup pgd_page_vaddr correctly later. pgd_page_vaddr() gets
> > cast to different pointer types based on architecture. But for now this
> > should work? This ensure we keep the pgd_page_vaddr() same as before.
>
> I'll drop
>
> mm-rename-pud_page_vaddr-to-pud_pgtable-and-make-it-return-pmd_t.patch
> mm-rename-p4d_page_vaddr-to-p4d_pgtable-and-make-it-return-pud_t.patch
>
> for now.

Dropped form linux-next today (along with my fix from yesterday).

--
Cheers,
Stephen Rothwell


Attachments:
(No filename) (499.00 B)
OpenPGP digital signature

2021-06-17 12:09:52

by kernel test robot

[permalink] [raw]
Subject: Re: + mm-rename-pud_page_vaddr-to-pud_pgtable-and-make-it-return-pmd_t.patch added to -mm tree

Hi,

I love your patch! Perhaps something to improve:

[auto build test WARNING on powerpc/next]
[also build test WARNING on tip/x86/mm asm-generic/master linus/master sparc/master v5.13-rc6]
[cannot apply to sparc-next/master next-20210616]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url: https://github.com/0day-ci/linux/commits/akpm-linux-foundation-org/mm-rename-pud_page_vaddr-to-pud_pgtable-and-make-it-return-pmd_t-patch-added-to-mm-tree/20210616-161816
base: https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git next
config: m68k-randconfig-s031-20210617 (attached as .config)
compiler: m68k-linux-gcc (GCC) 9.3.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.3-341-g8af24329-dirty
# https://github.com/0day-ci/linux/commit/2ccec57c1def84dab91722c14fd5907ed7423426
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review akpm-linux-foundation-org/mm-rename-pud_page_vaddr-to-pud_pgtable-and-make-it-return-pmd_t-patch-added-to-mm-tree/20210616-161816
git checkout 2ccec57c1def84dab91722c14fd5907ed7423426
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' W=1 ARCH=m68k

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>


sparse warnings: (new ones prefixed by >>)
>> arch/m68k/mm/motorola.c:265:29: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long pmd @@ got struct pmd_t [usertype] * @@
arch/m68k/mm/motorola.c:265:29: sparse: expected unsigned long pmd
arch/m68k/mm/motorola.c:265:29: sparse: got struct pmd_t [usertype] *

vim +265 arch/m68k/mm/motorola.c

^1da177e4c3f41 Linus Torvalds 2005-04-16 248
^1da177e4c3f41 Linus Torvalds 2005-04-16 249 static pmd_t * __init kernel_ptr_table(void)
^1da177e4c3f41 Linus Torvalds 2005-04-16 250 {
ef9285f69f0efb Peter Zijlstra 2020-01-31 251 if (!last_pmd_table) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 252 unsigned long pmd, last;
^1da177e4c3f41 Linus Torvalds 2005-04-16 253 int i;
^1da177e4c3f41 Linus Torvalds 2005-04-16 254
^1da177e4c3f41 Linus Torvalds 2005-04-16 255 /* Find the last ptr table that was used in head.S and
^1da177e4c3f41 Linus Torvalds 2005-04-16 256 * reuse the remaining space in that page for further
^1da177e4c3f41 Linus Torvalds 2005-04-16 257 * ptr tables.
^1da177e4c3f41 Linus Torvalds 2005-04-16 258 */
^1da177e4c3f41 Linus Torvalds 2005-04-16 259 last = (unsigned long)kernel_pg_dir;
^1da177e4c3f41 Linus Torvalds 2005-04-16 260 for (i = 0; i < PTRS_PER_PGD; i++) {
60e50f34b13e9e Mike Rapoport 2019-12-04 261 pud_t *pud = (pud_t *)(&kernel_pg_dir[i]);
60e50f34b13e9e Mike Rapoport 2019-12-04 262
60e50f34b13e9e Mike Rapoport 2019-12-04 263 if (!pud_present(*pud))
^1da177e4c3f41 Linus Torvalds 2005-04-16 264 continue;
60e50f34b13e9e Mike Rapoport 2019-12-04 @265 pmd = pgd_page_vaddr(kernel_pg_dir[i]);
^1da177e4c3f41 Linus Torvalds 2005-04-16 266 if (pmd > last)
^1da177e4c3f41 Linus Torvalds 2005-04-16 267 last = pmd;
^1da177e4c3f41 Linus Torvalds 2005-04-16 268 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 269
ef9285f69f0efb Peter Zijlstra 2020-01-31 270 last_pmd_table = (pmd_t *)last;
^1da177e4c3f41 Linus Torvalds 2005-04-16 271 #ifdef DEBUG
ef9285f69f0efb Peter Zijlstra 2020-01-31 272 printk("kernel_ptr_init: %p\n", last_pmd_table);
^1da177e4c3f41 Linus Torvalds 2005-04-16 273 #endif
^1da177e4c3f41 Linus Torvalds 2005-04-16 274 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 275
ef9285f69f0efb Peter Zijlstra 2020-01-31 276 last_pmd_table += PTRS_PER_PMD;
41f1bf37a63ecd Geert Uytterhoeven 2020-08-26 277 if (PAGE_ALIGNED(last_pmd_table)) {
7e158826564fbb Geert Uytterhoeven 2020-08-26 278 last_pmd_table = memblock_alloc_low(PAGE_SIZE, PAGE_SIZE);
ef9285f69f0efb Peter Zijlstra 2020-01-31 279 if (!last_pmd_table)
8a7f97b902f4fb Mike Rapoport 2019-03-11 280 panic("%s: Failed to allocate %lu bytes align=%lx\n",
8a7f97b902f4fb Mike Rapoport 2019-03-11 281 __func__, PAGE_SIZE, PAGE_SIZE);
^1da177e4c3f41 Linus Torvalds 2005-04-16 282
ef9285f69f0efb Peter Zijlstra 2020-01-31 283 clear_page(last_pmd_table);
ef9285f69f0efb Peter Zijlstra 2020-01-31 284 mmu_page_ctor(last_pmd_table);
^1da177e4c3f41 Linus Torvalds 2005-04-16 285 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 286
ef9285f69f0efb Peter Zijlstra 2020-01-31 287 return last_pmd_table;
^1da177e4c3f41 Linus Torvalds 2005-04-16 288 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 289

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]


Attachments:
(No filename) (5.29 kB)
.config.gz (30.70 kB)
Download all attachments