2018-04-10 08:16:43

by Mike Galbraith

[permalink] [raw]
Subject: x86-tip.today (4cdf573) early instaboot

Hi Ingo,

FYI, my i4790 box reboots immediately.. or close enough to it that you
see nothing at all before again meeting the bios splash. Master with
the ~same config works fine. I haven't poked around yet (work).

-Mike


Attachments:
config-4.16.0.g4cdf573-tip-default.xz (36.92 kB)

2018-04-10 09:03:06

by Ingo Molnar

[permalink] [raw]
Subject: Re: x86-tip.today (4cdf573) early instaboot


* Mike Galbraith <[email protected]> wrote:

> Hi Ingo,
>
> FYI, my i4790 box reboots immediately.. or close enough to it that you
> see nothing at all before again meeting the bios splash. Master with
> the ~same config works fine. I haven't poked around yet (work).

Hm, so there's been a few 'dangerous' pieces of work merged yesterday-ish.

Prime suspects would be:

triton:~/tip> gll linus..x86/pti

0564258fb2cf: x86/pti: Leave kernel text global for !PCID
a5df4f1f0d78: x86/pti: Never implicitly clear _PAGE_GLOBAL for kernel image
e0bb456e3250: x86/pti: Enable global pages for shared areas
efad2b415152: x86/mm: Do not forbid _PAGE_RW before init for __ro_after_init
4ddee6efdcd0: x86/mm: Comment _PAGE_GLOBAL mystery
e71e836f463d: x86/mm: Remove extra filtering in pageattr code
64c80759408f: x86/mm: Do not auto-massage page protections
6baf4bec02db: x86/espfix: Document use of _PAGE_GLOBAL
8a57f4849f4f: x86/mm: Introduce "default" kernel PTE mask
606c7193d5fb: x86/mm: Undo double _PAGE_PSE clearing
d1440b23c922: x86/mm: Factor out pageattr _PAGE_GLOBAL setting
ee1400dda318: Merge branch 'linus' into x86/pti to pick up upstream changes
071ccc966ba5: x86/entry/64: Drop idtentry's manual stack switch for user entries
9820e1c3376c: x86/uapi: Fix asm/bootparam.h userspace compilation errors

... which you could test via 0564258fb2cf: if that insta-reboots too then
9820e1c3376c^1 is expected to work and 4 bisection steps should pinpoint the
guilty commit ...

But there's also the syscall rework:

triton:~/tip> gll linus..x86/asm
c76fc9826075: syscalls/x86: Adapt syscall_wrapper.h to the new syscall stub naming convention
d5a00528b58c: syscalls/core, syscalls/x86: Rename struct pt_regs-based sys_*() to __x64_sys_*()
5ac9efa3c50d: syscalls/core, syscalls/x86: Clean up compat syscall stub naming convention
e145242ea0df: syscalls/core, syscalls/x86: Clean up syscall stub naming convention
6dc936f175cc: syscalls/x86: Extend register clearing on syscall entry to lower registers
f8781c4a2263: syscalls/x86: Unconditionally enable 'struct pt_regs' based syscalls on x86_64
ebeb8c82ffaf: syscalls/x86: Use 'struct pt_regs' based syscall calling for IA32_EMULATION and x32
7303e30ec1d8: syscalls/core: Prepare CONFIG_ARCH_HAS_SYSCALL_WRAPPER=y for compat syscalls
fa697140f9a2: syscalls/x86: Use 'struct pt_regs' based syscall calling convention for 64-bit syscalls
1bd21c6c21e8: syscalls/core: Introduce CONFIG_ARCH_HAS_SYSCALL_WRAPPER=y
dfe64506c01e: x86/syscalls: Don't pointlessly reload the system call number

... which you could test via c76fc9826075: if that insta-reboots then
dfe64506c01e^1 should be good and 4 bisection steps should suffice.

Thanks,

Ingo

2018-04-10 12:41:45

by Mike Galbraith

[permalink] [raw]
Subject: Re: x86-tip.today (4cdf573) early instaboot

On Tue, 2018-04-10 at 10:59 +0200, Ingo Molnar wrote:
> * Mike Galbraith <[email protected]> wrote:
>
> > Hi Ingo,
> >
> > FYI, my i4790 box reboots immediately.. or close enough to it that you
> > see nothing at all before again meeting the bios splash. Master with
> > the ~same config works fine. I haven't poked around yet (work).
>
> Hm, so there's been a few 'dangerous' pieces of work merged yesterday-ish.
>
> Prime suspects would be:
>
> triton:~/tip> gll linus..x86/pti
>
> 0564258fb2cf: x86/pti: Leave kernel text global for !PCID
> a5df4f1f0d78: x86/pti: Never implicitly clear _PAGE_GLOBAL for kernel image
> e0bb456e3250: x86/pti: Enable global pages for shared areas
> efad2b415152: x86/mm: Do not forbid _PAGE_RW before init for __ro_after_init
> 4ddee6efdcd0: x86/mm: Comment _PAGE_GLOBAL mystery
> e71e836f463d: x86/mm: Remove extra filtering in pageattr code
> 64c80759408f: x86/mm: Do not auto-massage page protections <== WOOF
> 6baf4bec02db: x86/espfix: Document use of _PAGE_GLOBAL
> 8a57f4849f4f: x86/mm: Introduce "default" kernel PTE mask
> 606c7193d5fb: x86/mm: Undo double _PAGE_PSE clearing
> d1440b23c922: x86/mm: Factor out pageattr _PAGE_GLOBAL setting
> ee1400dda318: Merge branch 'linus' into x86/pti to pick up upstream changes
> 071ccc966ba5: x86/entry/64: Drop idtentry's manual stack switch for user entries
> 9820e1c3376c: x86/uapi: Fix asm/bootparam.h userspace compilation errors
>
> ... which you could test via 0564258fb2cf: if that insta-reboots too then
> 9820e1c3376c^1 is expected to work and 4 bisection steps should pinpoint the
> guilty commit ...

Thanks. I already had a full bisect running, so ended up doing more
than 4 steps, but ended up at the above.

-Mike

2018-04-10 14:11:02

by Tom Lendacky

[permalink] [raw]
Subject: Re: x86-tip.today (4cdf573) early instaboot

On 04/10/2018 07:37 AM, Mike Galbraith wrote:
> On Tue, 2018-04-10 at 10:59 +0200, Ingo Molnar wrote:
>> * Mike Galbraith <[email protected]> wrote:
>>
>>> Hi Ingo,
>>>
>>> FYI, my i4790 box reboots immediately.. or close enough to it that you
>>> see nothing at all before again meeting the bios splash. Master with
>>> the ~same config works fine. I haven't poked around yet (work).
>>
>> Hm, so there's been a few 'dangerous' pieces of work merged yesterday-ish.
>>
>> Prime suspects would be:
>>
>> triton:~/tip> gll linus..x86/pti
>>
>> 0564258fb2cf: x86/pti: Leave kernel text global for !PCID
>> a5df4f1f0d78: x86/pti: Never implicitly clear _PAGE_GLOBAL for kernel image
>> e0bb456e3250: x86/pti: Enable global pages for shared areas
>> efad2b415152: x86/mm: Do not forbid _PAGE_RW before init for __ro_after_init
>> 4ddee6efdcd0: x86/mm: Comment _PAGE_GLOBAL mystery
>> e71e836f463d: x86/mm: Remove extra filtering in pageattr code
>> 64c80759408f: x86/mm: Do not auto-massage page protections <== WOOF
>> 6baf4bec02db: x86/espfix: Document use of _PAGE_GLOBAL
>> 8a57f4849f4f: x86/mm: Introduce "default" kernel PTE mask
>> 606c7193d5fb: x86/mm: Undo double _PAGE_PSE clearing
>> d1440b23c922: x86/mm: Factor out pageattr _PAGE_GLOBAL setting
>> ee1400dda318: Merge branch 'linus' into x86/pti to pick up upstream changes
>> 071ccc966ba5: x86/entry/64: Drop idtentry's manual stack switch for user entries
>> 9820e1c3376c: x86/uapi: Fix asm/bootparam.h userspace compilation errors
>>
>> ... which you could test via 0564258fb2cf: if that insta-reboots too then
>> 9820e1c3376c^1 is expected to work and 4 bisection steps should pinpoint the
>> guilty commit ...
>
> Thanks. I already had a full bisect running, so ended up doing more
> than 4 steps, but ended up at the above.

Just out of curiosity, can you try the following patch and see if it
fixes your reboot issue:

diff --git a/arch/x86/boot/compressed/kaslr.c
b/arch/x86/boot/compressed/kaslr.c
index c5196d2..a0a50b9 100644
--- a/arch/x86/boot/compressed/kaslr.c
+++ b/arch/x86/boot/compressed/kaslr.c
@@ -55,7 +55,7 @@
extern unsigned long get_cmd_line_ptr(void);

/* Used by PAGE_KERN* macros: */
-pteval_t __default_kernel_pte_mask __read_mostly;
+pteval_t __default_kernel_pte_mask __read_mostly = ~0;

/* Simplified build-specific string for starting entropy. */
static const char build_str[] = UTS_RELEASE " (" LINUX_COMPILE_BY "@"

Thanks,
Tom

>
> -Mike
>

2018-04-10 15:55:21

by Mike Galbraith

[permalink] [raw]
Subject: Re: x86-tip.today (4cdf573) early instaboot

On Tue, 2018-04-10 at 09:06 -0500, Tom Lendacky wrote:
>
> Just out of curiosity, can you try the following patch and see if it
> fixes your reboot issue:

Yup, all better.

> diff --git a/arch/x86/boot/compressed/kaslr.c
> b/arch/x86/boot/compressed/kaslr.c
> index c5196d2..a0a50b9 100644
> --- a/arch/x86/boot/compressed/kaslr.c
> +++ b/arch/x86/boot/compressed/kaslr.c
> @@ -55,7 +55,7 @@
> extern unsigned long get_cmd_line_ptr(void);
>
> /* Used by PAGE_KERN* macros: */
> -pteval_t __default_kernel_pte_mask __read_mostly;
> +pteval_t __default_kernel_pte_mask __read_mostly = ~0;
>
> /* Simplified build-specific string for starting entropy. */
> static const char build_str[] = UTS_RELEASE " (" LINUX_COMPILE_BY "@"


2018-04-12 07:12:42

by Ingo Molnar

[permalink] [raw]
Subject: Re: x86-tip.today (4cdf573) early instaboot


* Mike Galbraith <[email protected]> wrote:

> On Tue, 2018-04-10 at 09:06 -0500, Tom Lendacky wrote:
> >
> > Just out of curiosity, can you try the following patch and see if it
> > fixes your reboot issue:
>
> Yup, all better.
>
> > diff --git a/arch/x86/boot/compressed/kaslr.c
> > b/arch/x86/boot/compressed/kaslr.c
> > index c5196d2..a0a50b9 100644
> > --- a/arch/x86/boot/compressed/kaslr.c
> > +++ b/arch/x86/boot/compressed/kaslr.c
> > @@ -55,7 +55,7 @@
> > extern unsigned long get_cmd_line_ptr(void);
> >
> > /* Used by PAGE_KERN* macros: */
> > -pteval_t __default_kernel_pte_mask __read_mostly;
> > +pteval_t __default_kernel_pte_mask __read_mostly = ~0;
> >
> > /* Simplified build-specific string for starting entropy. */
> > static const char build_str[] = UTS_RELEASE " (" LINUX_COMPILE_BY "@"

Thanks guys!

I ended up back-merging this fix (and another fix) into:

fb43d6cb91ef: x86/mm: Do not auto-massage page protections

I added credits as:

- printk format warning fix from: Arnd Bergmann <[email protected]>
- boot crash fix from: Tom Lendacky <[email protected]>
- crash bisected by: Mike Galbraith <[email protected]>

...

Reported-and-fixed-by: Arnd Bergmann <[email protected]>
Fixed-by: Tom Lendacky <[email protected]>
Bisected-by: Mike Galbraith <[email protected]>

Thanks,

Ingo