Re: efi boot failures due to PTI with 32 bit builds and Intel CPUs

From: Guenter Roeck
Date: Thu Aug 30 2018 - 15:24:29 EST


On Thu, Aug 30, 2018 at 08:46:39PM +0200, Joerg Roedel wrote:
> On Thu, Aug 30, 2018 at 11:21:49AM -0700, Linus Torvalds wrote:
> > On Thu, Aug 30, 2018 at 11:08 AM Joerg Roedel <jroedel@xxxxxxx> wrote:
> > >
> > > Without a mapped GDT the #PF and #DF handlers also can't be started, so
> > > the machine triple-faults. Below diff fixes it for me, I'll send a
> > > proper patch tomorrow.
> >
> > Hmm. Is there any reason why this code doesn't just use
> >
> > load_fixmap_gdt(0);
>
> No idea, probably the function didn't exist when the code was written?
> I can change that when writing the patch.
>
> > and shouldn't it do it after loading the new %cr3?
>
> That seems more robust, yes. No sure if the old %cr3
> (initial_page_table) has the fixmap gdt mapped at all.

All three variants (hardcoded, call load_fixmap_gdt(0) first, call
load_fixmap_gdt(0) after load_cr3()) work for me. Feel free to add

Tested-by: Guenter Roeck <linux@xxxxxxxxxxxx>

when you submit the patch.

Thanks a lot for tracking this down!

Guenter