On Fri, Oct 20, 2023 at 11:58:58AM +0000, Huang, Kai wrote: > On Tue, 2023-10-10 at 10:24 +0000, Huang, Kai wrote: > > > /* Physical address of the Multiprocessor Wakeup Structure mailbox */ > > > @@ -74,6 +75,9 @@ int __init acpi_parse_mp_wake(union acpi_subtable_headers *header, > > > > > > > > > acpi_mp_wake_mailbox_paddr = mp_wake->base_address; > > > > > > > > > + /* Disable CPU onlining/offlining */ > > > + cpu_hotplug_not_supported(); > > > + > > > > Both onlining/offlining are prevented, or just offlining? > > > > The previous patch says: > > > > It does not prevent the initial bring up of the CPU, but it stops > > subsequent offlining. > > > > And ... > > > > [...] > > > > > > > --- a/kernel/cpu.c > > > +++ b/kernel/cpu.c > > > @@ -1522,7 +1522,7 @@ static int cpu_down_maps_locked(unsigned int cpu, enum cpuhp_state target) > > > * If the platform does not support hotplug, report it explicitly to > > > * differentiate it from a transient offlining failure. > > > */ > > > - if (cc_platform_has(CC_ATTR_HOTPLUG_DISABLED) || !cpu_hotplug_supported) > > > + if (!cpu_hotplug_supported) > > > return -EOPNOTSUPP; > > > if (cpu_hotplug_disabled) > > > return -EBUSY; > > > > ... here cpu_down_maps_locked() only prevents offlining if I am reading > > correctly. > > > > Also, can we rename cpu_hotplug_supported to cpu_offline_supported to match the > > behaviour better? > > > > Anyway, isn't it a little bit odd to have: > > > > if (!cpu_hotplug_supported) > > return -EOPNOTSUPP; > > if (cpu_hotplug_disabled) > > return -EBUSY; > > > > ? > > I probably have missed something important, but I don't quite understand what's > the reason to have the CC_ATTR_HOTPLUG_DISABLED at the beginning, and now > replace it with cpu_hotplug_not_supported()? CC_ATTR_HOTPLUG_DISABLED was a mistake. And now obvious when we only need to disable offlining dynamically, based on supported MADT MP WP version. > From the changelog: > > Currently hotplug prevented based on the confidential computing > attribute which is set for Intel TDX. But TDX is not the only possible > user of the wake up method. > > CC_ATTR_HOTPLUG_DISABLED is only used by TDX guest, but MADT can be used by non- > TDX guest too. > > Anyway, if the purpose is just to prevent CPU from going offline, can this be > done by registering a cpuhp callback? > > static int madt_wakeup_offline_cpu(unsigned int cpu) > { > return -EOPNOTSUPP; > } > > ... > > err = cpuhp_setup_state_nocalls(CPUHP_AP_ONLINE_DYN, "madt-wakeup", > NULL, madt_wakeup_offline_cpu); > if (err) { > pr_err("Register CPU hotplug callback failed.\n"); > /* BUG() ??? */ > } > > This doesn't pollute the common CPU hotplug code, thus to me looks more clear? Thomas seems fine with cpu_hotplug_disable_offlining(). -- Kiryl Shutsemau / Kirill A. Shutemov _______________________________________________ kexec mailing list kexec@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/kexec