From: Thomas Gleixner <tglx@linutronix.de>
To: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>,
Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
Dave Hansen <dave.hansen@linux.intel.com>,
x86@kernel.org
Cc: "Rafael J. Wysocki" <rafael@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Adrian Hunter <adrian.hunter@intel.com>,
Kuppuswamy Sathyanarayanan
<sathyanarayanan.kuppuswamy@linux.intel.com>,
Elena Reshetova <elena.reshetova@intel.com>,
Jun Nakajima <jun.nakajima@intel.com>,
Rick Edgecombe <rick.p.edgecombe@intel.com>,
Tom Lendacky <thomas.lendacky@amd.com>,
"Kalra, Ashish" <ashish.kalra@amd.com>,
Sean Christopherson <seanjc@google.com>,
"Huang, Kai" <kai.huang@intel.com>, Baoquan He <bhe@redhat.com>,
kexec@lists.infradead.org, linux-coco@lists.linux.dev,
linux-kernel@vger.kernel.org,
"Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
Subject: Re: [PATCHv4 13/14] x86/acpi: Do not attempt to bring up secondary CPUs in kexec case
Date: Fri, 15 Dec 2023 21:08:06 +0100 [thread overview]
Message-ID: <87a5qbmdp5.ffs@tglx> (raw)
In-Reply-To: <20231205004510.27164-14-kirill.shutemov@linux.intel.com>
On Tue, Dec 05 2023 at 03:45, Kirill A. Shutemov wrote:
> ACPI MADT doesn't allow to offline CPU after it got woke up. It limits
to offline a CPU after it was onlined. This limits kexec: ...
> kexec: the second kernel won't be able to use more than one CPU.
... one CPU, which is enough to cover the kdump case.
> Now acpi_mp_wake_mailbox_paddr already has the mailbox address.
> The acpi_wakeup_cpu() will use it to bring up secondary cpus.
>
> Zero out mailbox address in the ACPI MADT wakeup structure to indicate
> that the mailbox is not usable. This prevents the kexec()-ed kernel
> from reading a vaild mailbox, which in turn makes the kexec()-ed kernel
> only be able to use the boot CPU.
>
> This is Linux-specific protocol and not reflected in ACPI spec.
>
> Booting the second kernel with signle CPU is enough to cover the most
> common case for kexec -- kdump.
This is confusing at best and I doubt that kdump is the most common case
for every one.
To prevent a kexec kernel from onlining secondary CPUs invalidate the
mailbox address in the ACPI MADT wakeup structure which prevents a
kexec kernel to use it.
This is safe as the booting kernel has the mailbox address cached
already and acpi_wakeup_cpu() uses the cached value to bring up the
secondary CPUs.
Note: This is a Linux specific convention and not covered by the
ACPI specification.
Hmm?
> + /*
> + * ACPI MADT doesn't allow to offline CPU after it got woke up.
to offline a CPU after it was onlined.
> + * It limits kexec: the second kernel won't be able to use more than
This limits kexec: ...
> + * one CPU.
> + *
> + * Now acpi_mp_wake_mailbox_paddr already has the mailbox address.
> + * The acpi_wakeup_cpu() will use it to bring up secondary cpus.
> + *
> + * Zero out mailbox address in the ACPI MADT wakeup structure to
> + * indicate that the mailbox is not usable. This prevents the
> + * kexec()-ed kernel from reading a vaild mailbox, which in turn
> + * makes the kexec()-ed kernel only be able to use the boot CPU.
> + *
> + * This is Linux-specific protocol and not reflected in ACPI spec.
See changelog comment...
> + */
> + mp_wake->mailbox_address = 0;
> +
> apic_update_callback(wakeup_secondary_cpu_64, acpi_wakeup_cpu);
>
> return 0;
_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec
WARNING: multiple messages have this Message-ID (diff)
From: Thomas Gleixner <tglx@linutronix.de>
To: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>,
Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
Dave Hansen <dave.hansen@linux.intel.com>,
x86@kernel.org
Cc: "Rafael J. Wysocki" <rafael@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Adrian Hunter <adrian.hunter@intel.com>,
Kuppuswamy Sathyanarayanan
<sathyanarayanan.kuppuswamy@linux.intel.com>,
Elena Reshetova <elena.reshetova@intel.com>,
Jun Nakajima <jun.nakajima@intel.com>,
Rick Edgecombe <rick.p.edgecombe@intel.com>,
Tom Lendacky <thomas.lendacky@amd.com>,
"Kalra, Ashish" <ashish.kalra@amd.com>,
Sean Christopherson <seanjc@google.com>,
"Huang, Kai" <kai.huang@intel.com>, Baoquan He <bhe@redhat.com>,
kexec@lists.infradead.org, linux-coco@lists.linux.dev,
linux-kernel@vger.kernel.org,
"Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
Subject: Re: [PATCHv4 13/14] x86/acpi: Do not attempt to bring up secondary CPUs in kexec case
Date: Fri, 15 Dec 2023 21:08:06 +0100 [thread overview]
Message-ID: <87a5qbmdp5.ffs@tglx> (raw)
In-Reply-To: <20231205004510.27164-14-kirill.shutemov@linux.intel.com>
On Tue, Dec 05 2023 at 03:45, Kirill A. Shutemov wrote:
> ACPI MADT doesn't allow to offline CPU after it got woke up. It limits
to offline a CPU after it was onlined. This limits kexec: ...
> kexec: the second kernel won't be able to use more than one CPU.
... one CPU, which is enough to cover the kdump case.
> Now acpi_mp_wake_mailbox_paddr already has the mailbox address.
> The acpi_wakeup_cpu() will use it to bring up secondary cpus.
>
> Zero out mailbox address in the ACPI MADT wakeup structure to indicate
> that the mailbox is not usable. This prevents the kexec()-ed kernel
> from reading a vaild mailbox, which in turn makes the kexec()-ed kernel
> only be able to use the boot CPU.
>
> This is Linux-specific protocol and not reflected in ACPI spec.
>
> Booting the second kernel with signle CPU is enough to cover the most
> common case for kexec -- kdump.
This is confusing at best and I doubt that kdump is the most common case
for every one.
To prevent a kexec kernel from onlining secondary CPUs invalidate the
mailbox address in the ACPI MADT wakeup structure which prevents a
kexec kernel to use it.
This is safe as the booting kernel has the mailbox address cached
already and acpi_wakeup_cpu() uses the cached value to bring up the
secondary CPUs.
Note: This is a Linux specific convention and not covered by the
ACPI specification.
Hmm?
> + /*
> + * ACPI MADT doesn't allow to offline CPU after it got woke up.
to offline a CPU after it was onlined.
> + * It limits kexec: the second kernel won't be able to use more than
This limits kexec: ...
> + * one CPU.
> + *
> + * Now acpi_mp_wake_mailbox_paddr already has the mailbox address.
> + * The acpi_wakeup_cpu() will use it to bring up secondary cpus.
> + *
> + * Zero out mailbox address in the ACPI MADT wakeup structure to
> + * indicate that the mailbox is not usable. This prevents the
> + * kexec()-ed kernel from reading a vaild mailbox, which in turn
> + * makes the kexec()-ed kernel only be able to use the boot CPU.
> + *
> + * This is Linux-specific protocol and not reflected in ACPI spec.
See changelog comment...
> + */
> + mp_wake->mailbox_address = 0;
> +
> apic_update_callback(wakeup_secondary_cpu_64, acpi_wakeup_cpu);
>
> return 0;
next prev parent reply other threads:[~2023-12-15 20:08 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-05 0:44 [PATCHv4 00/14] x86/tdx: Add kexec support Kirill A. Shutemov
2023-12-05 0:44 ` Kirill A. Shutemov
2023-12-05 0:44 ` [PATCHv4 01/14] x86/acpi: Extract ACPI MADT wakeup code into a separate file Kirill A. Shutemov
2023-12-05 0:44 ` Kirill A. Shutemov
2023-12-05 0:44 ` [PATCHv4 02/14] x86/apic: Mark acpi_mp_wake_* variables as __ro_after_init Kirill A. Shutemov
2023-12-05 0:44 ` Kirill A. Shutemov
2023-12-05 0:44 ` [PATCHv4 03/14] cpu/hotplug: Add support for declaring CPU offlining not supported Kirill A. Shutemov
2023-12-05 0:44 ` Kirill A. Shutemov
2023-12-15 19:42 ` Thomas Gleixner
2023-12-15 19:42 ` Thomas Gleixner
2023-12-05 0:45 ` [PATCHv4 04/14] cpu/hotplug, x86/acpi: Disable CPU offlining for ACPI MADT wakeup Kirill A. Shutemov
2023-12-05 0:45 ` Kirill A. Shutemov
2023-12-15 19:43 ` Thomas Gleixner
2023-12-15 19:43 ` Thomas Gleixner
2023-12-05 0:45 ` [PATCHv4 05/14] x86/kvm: Do not try to disable kvmclock if it was not enabled Kirill A. Shutemov
2023-12-05 0:45 ` Kirill A. Shutemov
2023-12-11 23:10 ` Kirill A. Shutemov
2023-12-11 23:10 ` Kirill A. Shutemov
2023-12-13 17:22 ` Sean Christopherson
2023-12-13 17:22 ` Sean Christopherson
2024-01-04 15:05 ` Kirill A. Shutemov
2024-01-04 15:05 ` Kirill A. Shutemov
2024-01-09 14:59 ` Sean Christopherson
2024-01-09 14:59 ` Sean Christopherson
2023-12-05 0:45 ` [PATCHv4 06/14] x86/kexec: Keep CR4.MCE set during kexec for TDX guest Kirill A. Shutemov
2023-12-05 0:45 ` Kirill A. Shutemov
2023-12-05 23:58 ` Huang, Kai
2023-12-05 23:58 ` Huang, Kai
2023-12-06 13:26 ` kirill.shutemov
2023-12-06 13:26 ` kirill.shutemov
2023-12-05 0:45 ` [PATCHv4 07/14] x86/mm: Make x86_platform.guest.enc_status_change_*() return errno Kirill A. Shutemov
2023-12-05 0:45 ` Kirill A. Shutemov
2023-12-05 0:45 ` [PATCHv4 08/14] x86/mm: Return correct level from lookup_address() if pte is none Kirill A. Shutemov
2023-12-05 0:45 ` Kirill A. Shutemov
2023-12-05 0:45 ` [PATCHv4 09/14] x86/tdx: Account shared memory Kirill A. Shutemov
2023-12-05 0:45 ` Kirill A. Shutemov
2023-12-05 0:45 ` [PATCHv4 10/14] x86/tdx: Convert shared memory back to private on kexec Kirill A. Shutemov
2023-12-05 0:45 ` Kirill A. Shutemov
2023-12-06 1:28 ` Edgecombe, Rick P
2023-12-06 1:28 ` Edgecombe, Rick P
2023-12-06 15:07 ` kirill.shutemov
2023-12-06 15:07 ` kirill.shutemov
2023-12-06 18:32 ` Edgecombe, Rick P
2023-12-06 18:32 ` Edgecombe, Rick P
2023-12-05 0:45 ` [PATCHv4 11/14] x86/mm: Make e820_end_ram_pfn() cover E820_TYPE_ACPI ranges Kirill A. Shutemov
2023-12-05 0:45 ` Kirill A. Shutemov
2023-12-05 0:45 ` [PATCHv4 12/14] x86/acpi: Rename fields in acpi_madt_multiproc_wakeup structure Kirill A. Shutemov
2023-12-05 0:45 ` Kirill A. Shutemov
2023-12-05 0:45 ` [PATCHv4 13/14] x86/acpi: Do not attempt to bring up secondary CPUs in kexec case Kirill A. Shutemov
2023-12-05 0:45 ` Kirill A. Shutemov
2023-12-15 20:08 ` Thomas Gleixner [this message]
2023-12-15 20:08 ` Thomas Gleixner
2023-12-05 0:45 ` [PATCHv4 14/14] x86/acpi: Add support for CPU offlining for ACPI MADT wakeup method Kirill A. Shutemov
2023-12-05 0:45 ` Kirill A. Shutemov
2023-12-05 23:36 ` Huang, Kai
2023-12-05 23:36 ` Huang, Kai
2023-12-22 11:19 ` kirill.shutemov
2023-12-22 11:19 ` kirill.shutemov
2023-12-22 11:38 ` Huang, Kai
2023-12-22 11:38 ` Huang, Kai
2023-12-15 20:29 ` Thomas Gleixner
2023-12-15 20:29 ` Thomas Gleixner
2023-12-22 16:34 ` Kirill A. Shutemov
2023-12-22 16:34 ` Kirill A. Shutemov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87a5qbmdp5.ffs@tglx \
--to=tglx@linutronix.de \
--cc=adrian.hunter@intel.com \
--cc=ashish.kalra@amd.com \
--cc=bhe@redhat.com \
--cc=bp@alien8.de \
--cc=dave.hansen@linux.intel.com \
--cc=elena.reshetova@intel.com \
--cc=jun.nakajima@intel.com \
--cc=kai.huang@intel.com \
--cc=kexec@lists.infradead.org \
--cc=kirill.shutemov@linux.intel.com \
--cc=linux-coco@lists.linux.dev \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=rafael@kernel.org \
--cc=rick.p.edgecombe@intel.com \
--cc=sathyanarayanan.kuppuswamy@linux.intel.com \
--cc=seanjc@google.com \
--cc=thomas.lendacky@amd.com \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.