kexec reboot fails with extra wbinvd introduced for AME SME

Linus Torvalds torvalds at linux-foundation.org
Wed Jan 17 18:14:40 PST 2018


On Wed, Jan 17, 2018 at 5:47 PM, Dave Young <dyoung at redhat.com> wrote:
>
> It does not work with just once wbinvd(), and it only works with
> removing the wbinvd() for me.  Tom's new post works for me as well
> since my cpu is an Intel i5-4200U.

Intriguing.

It's not like the wbinvd really should be that much of a deal.

I think Tom's patch is fine and should be applied, but it does worry
me a bit that even a single wbinvd makes that much of a difference for
you. There is very little logical reason I can think of that a wbinvd
should make any difference what-so-ever on an i5-4200U.

I wonder if you have some system issues, and wbinvd just happens to
trigger them. But I think we do wbinvd before a suspend-to-RAM too
(it's "ACPI_FLUSH_CPU_CACHE()" in the ACPI code). And the dmr code
dioes "wbinvd_on_all_cpus()" which does a cross-call etc.

Would you mind experimenting a bit with that wbinvd?

In particular, what happens if you enable it (so it's not hidden by
the SME check), but you move it up to before interrupts are disabled?

I'm wondering if there is some issue with MCE generation and wbinvd
and whatever, and doing it when the CPU is down and interrupts are
disabled causes some system issue..

Does anybody have any other ideas?

                Linus



More information about the kexec mailing list