Re: [tip:x86/mm] x86/boot/32: Defer resyncing initial_page_table until per-cpu is set up
From: Andy Shevchenko
Date: Mon May 08 2017 - 05:32:53 EST
On Mon, May 8, 2017 at 9:31 AM, Jan Kiszka <jan.kiszka@xxxxxxxxxxx> wrote:
> On 2017-03-23 10:14, tip-bot for Andy Lutomirski wrote:
>> The x86 smpboot trampoline expects initial_page_table to have the
>> GDT mapped. If the GDT ends up in a virtually mapped per-cpu page,
>> then it won't be in the page tables at all until perc-pu areas are
>> set up. The result will be a triple fault the first time that the
>> CPU attempts to access the GDT after LGDT loads the perc-pu GDT.
>>
>> This appears to be an old bug, but somehow the GDT fixmap rework
>> is triggering it. This seems to have something to do with the
>> memory layout.
> This breaks the boot on our Intel Quark platform (IOT2000, similar to
> Galileo Gen2). Reverting it over master makes it work again. Any idea
> what goes wrong? Let me know how I can help debugging this.
JFYI: As of today linux-next when _kexec:ed_ works fine to me
Perhaps I can test this later with direct boot from SD card.
--
With Best Regards,
Andy Shevchenko