[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAHk-=wikdDMYqhygJYkoWw7YxpGNx7O2kFRxbG91NNeFO7yu3w@mail.gmail.com>
Date: Sat, 7 Sep 2019 12:17:54 -0700
From: Linus Torvalds <torvalds@...ux-foundation.org>
To: Thomas Gleixner <tglx@...utronix.de>
Cc: Chris Wilson <chris@...is-wilson.co.uk>,
Linux List Kernel Mailing <linux-kernel@...r.kernel.org>,
Bandan Das <bsd@...hat.com>
Subject: Re: Linux 5.3-rc7
On Sat, Sep 7, 2019 at 8:00 AM Thomas Gleixner <tglx@...utronix.de> wrote:
>
> Ok let me find a testbox to figure out whats wrong there.
Honestly, it looks like we should just revert that commit, since we
never used to clear the LDR bits before either, and the bug it "fixes"
doesn't really seem to be a bug (well, it's a bug in KVM, but that's a
different thing).
And I wouldn't be at all surprised if it confuses some BIOS code.
We use the LDR bits ourselves in smp_get_logical_apicid(), and so
clearing them out seems entirely bogus.
At a guess, it's wakeup_cpu_via_init_nmi() that does that
if (apic->dest_logical == APIC_DEST_LOGICAL)
id = cpu0_logical_apicid;
else
id = apicid;
and now that we've cleared the APIC LDR bits, we no longer wake the
BSP. We send the NMI to the _old_ APIC ID, but we've overwritten it
with 0 when we put it to sleep, so now nothing happens.
I'm really not clear on why it's a good idea to clear the LDR bits on
shutdown, and commit 558682b52919 ("x86/apic: Include the LDR when
clearing out APIC registers") just looks pointless. And now it has
proven to break some machines.
So why wouldn't we just revert it?
Linus
Powered by blists - more mailing lists