Re: 91f606a8fa ("x86/mm: Replace compile-time checks for 5-level .."): BUG: kernel reboot-without-warning in boot stage

From: Kirill A. Shutemov
Date: Tue Feb 27 2018 - 03:22:02 EST


On Mon, Feb 26, 2018 at 11:14:06PM +0800, kernel test robot wrote:
> Greetings,
>
> 0day kernel testing robot got the below dmesg and the first bad commit is
>
> https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86/mm
>
> commit 91f606a8fa68264224cbc76888fa8649cdbe9990
> Author: Kirill A. Shutemov <kirill.shutemov@xxxxxxxxxxxxxxx>
> AuthorDate: Wed Feb 14 21:25:41 2018 +0300
> Commit: Ingo Molnar <mingo@xxxxxxxxxx>
> CommitDate: Fri Feb 16 10:48:49 2018 +0100
>
> x86/mm: Replace compile-time checks for 5-level paging with runtime-time checks
>
> This patch converts the of CONFIG_X86_5LEVEL check to runtime checks for
> p4d folding.
>
> Signed-off-by: Kirill A. Shutemov <kirill.shutemov@xxxxxxxxxxxxxxx>
> Cc: Andy Lutomirski <luto@xxxxxxxxxx>
> Cc: Arjan van de Ven <arjan@xxxxxxxxxxxxxxx>
> Cc: Borislav Petkov <bp@xxxxxxx>
> Cc: Dan Williams <dan.j.williams@xxxxxxxxx>
> Cc: Dave Hansen <dave.hansen@xxxxxxxxxxxxxxx>
> Cc: David Woodhouse <dwmw2@xxxxxxxxxxxxx>
> Cc: Josh Poimboeuf <jpoimboe@xxxxxxxxxx>
> Cc: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
> Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
> Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
> Cc: linux-mm@xxxxxxxxx
> Link: http://lkml.kernel.org/r/20180214182542.69302-9-kirill.shutemov@xxxxxxxxxxxxxxx
> Signed-off-by: Ingo Molnar <mingo@xxxxxxxxxx>
>
> 98219dda2a x86/mm: Fold p4d page table layer at runtime
> 91f606a8fa x86/mm: Replace compile-time checks for 5-level paging with runtime-time checks
> 1ea4fe8497 Merge branch 'x86/boot' into x86/mm, to unify branches
> 94991480c2 Merge branch 'x86/pti'
> f1753f6424 Add linux-next specific files for 20180226

Patch below should help. Please check.

diff --git a/arch/x86/include/asm/pgtable_64.h b/arch/x86/include/asm/pgtable_64.h
index 81dda8d1d0bd..163e01a0631d 100644
--- a/arch/x86/include/asm/pgtable_64.h
+++ b/arch/x86/include/asm/pgtable_64.h
@@ -224,9 +224,9 @@ static inline void native_set_p4d(p4d_t *p4dp, p4d_t p4d)
return;
}

- pgd = native_make_pgd(p4d_val(p4d));
+ pgd = native_make_pgd(native_p4d_val(p4d));
pgd = pti_set_user_pgd((pgd_t *)p4dp, pgd);
- *p4dp = native_make_p4d(pgd_val(pgd));
+ *p4dp = native_make_p4d(native_pgd_val(pgd));
}

static inline void native_p4d_clear(p4d_t *p4d)
--
Kirill A. Shutemov