On Mon, May 05, 2025 at 11:50:08AM +0200, Rafael J. Wysocki wrote: > On Sat, May 3, 2025 at 9:10 PM Ricardo Neri > <ricardo.neri-calde...@linux.intel.com> wrote: > > > > In preparation to move the functionality to wake secondary CPUs up out of > > the ACPI code, add a helper function that stores the physical address of > > the mailbox and updates the wakeup_secondary_cpu_64() APIC callback. > > > > There is a slight change in behavior: now the APIC callback is updated > > before configuring CPU hotplug offline behavior. This is fine as the APIC > > callback continues to be updated unconditionally, regardless of the > > restriction on CPU offlining. > > > > The wakeup mailbox is only supported for CONFIG_X86_64 and needed only with > > CONFIG_SMP=y. > > > > Signed-off-by: Ricardo Neri <ricardo.neri-calde...@linux.intel.com> > > --- > > Changes since v2: > > - Introduced this patch. > > > > Changes since v1: > > - N/A > > --- > > arch/x86/include/asm/smp.h | 4 ++++ > > arch/x86/kernel/acpi/madt_wakeup.c | 10 +++++++--- > > 2 files changed, 11 insertions(+), 3 deletions(-) > > > > diff --git a/arch/x86/include/asm/smp.h b/arch/x86/include/asm/smp.h > > index 0c1c68039d6f..3622951d2ee0 100644 > > --- a/arch/x86/include/asm/smp.h > > +++ b/arch/x86/include/asm/smp.h > > @@ -146,6 +146,10 @@ static inline struct cpumask *cpu_l2c_shared_mask(int > > cpu) > > return per_cpu(cpu_l2c_shared_map, cpu); > > } > > > > +#ifdef CONFIG_X86_64 > > +void setup_mp_wakeup_mailbox(u64 addr); > > +#endif
Thank you for your feedback, Rafael! > > The #ifdef is only necessary if you are going to provide an > alternative for builds in which the symbol is unset. I see. All callers will be built only with CONFIG_X86_64. I will remove this #ifdef. > > > + > > #else /* !CONFIG_SMP */ > > #define wbinvd_on_cpu(cpu) wbinvd() > > static inline int wbinvd_on_all_cpus(void) > > diff --git a/arch/x86/kernel/acpi/madt_wakeup.c > > b/arch/x86/kernel/acpi/madt_wakeup.c > > index f36f28405dcc..04de3db307de 100644 > > --- a/arch/x86/kernel/acpi/madt_wakeup.c > > +++ b/arch/x86/kernel/acpi/madt_wakeup.c > > @@ -227,7 +227,7 @@ int __init acpi_parse_mp_wake(union > > acpi_subtable_headers *header, > > > > acpi_table_print_madt_entry(&header->common); > > > > - acpi_mp_wake_mailbox_paddr = mp_wake->mailbox_address; > > + setup_mp_wakeup_mailbox(mp_wake->mailbox_address); > > I'd prefer acpi_setup_mp_wakeup_mailbox(). Sure. This looks like a more appropriate name. Thanks and BR, Ricardo