Hi, On Sat, Aug 15, 2020 at 07:42:00PM +0100, Matthew Wilcox wrote: > On Sat, Aug 15, 2020 at 09:35:05PM +0300, Meelis Roos wrote: > > > While 5.8.0 worked fine on my HP RP2470 (Gentoo with 10.2.0 kgcc), yesterdays dddcbc139e96 and todays a1d21081a60d crash on boot. I have started bisecting it. > > > > And finished now. I included all CC-s and SOB-s from the commit to this mail - sorry if too broad. > > > > 1355c31eeb7ea61a7f2f2937d17cd4e343a6b5af is the first bad commit > > yes, I see the problem. > > arch/parisc/include/asm/pgtable.h:#define PMD_ORDER 1 /* Number of pages per pmd */ > > -static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long address) > -{ > - pmd_t *pmd = (pmd_t *)__get_free_pages(GFP_KERNEL, PMD_ORDER); > > + page = alloc_pages(gfp, 0); > > So I think the quick fix is to restore the parisc pmd_alloc_one and define > __HAVE_ARCH_PMD_ALLOC_ONE. I wasn't following this series too closely, > so I shan't propose a patch, but leave it up to Mike. I'd probably miss > some subtlety. You are right, I've missed that parisc has PMD_ORDER != 0 and the simplest fix would be to revert changes to parisc pmd_alloc_one(). Meelis, can you please try the below patch: diff --git a/arch/parisc/include/asm/pgalloc.h b/arch/parisc/include/asm/pgalloc.h index cc7ecc2ef55d..a6482b2ce0ea 100644 --- a/arch/parisc/include/asm/pgalloc.h +++ b/arch/parisc/include/asm/pgalloc.h @@ -10,6 +10,7 @@ #include <asm/cache.h> +#define __HAVE_ARCH_PMD_ALLOC_ONE #define __HAVE_ARCH_PMD_FREE #define __HAVE_ARCH_PGD_FREE #include <asm-generic/pgalloc.h> @@ -67,6 +68,11 @@ static inline void pud_populate(struct mm_struct *mm, pud_t *pud, pmd_t *pmd) (__u32)(__pa((unsigned long)pmd) >> PxD_VALUE_SHIFT))); } +static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long address) +{ + return (pmd_t *)__get_free_pages(GFP_PGTABLE_KERNEL, PMD_ORDER); +} + static inline void pmd_free(struct mm_struct *mm, pmd_t *pmd) { if (pmd_flag(*pmd) & PxD_FLAG_ATTACHED) { -- Sincerely yours, Mike.