Re: [PATCH RFC v3 04/21] ACPI: processor: Register all CPUs from acpi_processor_get_info()
"Rafael J. Wysocki" <[email protected]> Mon, 22 Jan 2024 19:03:19 +0100
| Newsgroups | org.kernel.vger.linux-ia64,dev.linux.lists.kvmarm,dev.linux.lists.loongarch,org.infradead.lists.linux-arm-kernel,org.infradead.lists.linux-riscv,org.kernel.vger.linux-acpi,org.kernel.vger.linux-arch,org.kernel.vger.linux-csky,org.kernel.vger.linux-doc,org.kernel.vger.linux-kernel,org.kernel.vger.linux-parisc,org.kernel.vger.linux-pm |
|---|---|
| Message-ID | <CAJZ5v0gePAsbRecOXDZ+q-Ds+nsoSBq6VU89ikuQoxds7TeQ3g@mail.gmail.com> |
On Mon, Jan 22, 2024 at 6:44=E2=80=AFPM Jonathan Cameron <[email protected]> wrote: > > On Mon, 18 Dec 2023 21:30:50 +0100 > "Rafael J. Wysocki" <[email protected]> wrote: > > > On Wed, Dec 13, 2023 at 1:49=E2=80=AFPM Russell King <rmk+kernel@armlin= ux.org.uk> wrote: > > > > > > From: James Morse <[email protected]> > > > > > > To allow ACPI to skip the call to arch_register_cpu() when the _STA > > > value indicates the CPU can't be brought online right now, move the > > > arch_register_cpu() call into acpi_processor_get_info(). > > > > This kind of looks backwards to me and has a potential to become > > super-confusing. > > > > I would instead add a way for the generic code to ask the platform > > firmware whether or not the given CPU is enabled and so it can be > > registered. > > Hi Rafael, > > The ACPI interpreter isn't up at this stage so we'd need to pull that > forwards. I'm not sure if we can pull the interpreter init early enough. Well, this patch effectively defers the AP registration to the time when acpi_processor_get_info() runs and the interpreter is up and running then. For consistency, it would be better to defer the AP registration in general to that point. > Perhaps pushing the registration back in all cases is the way to go? > Given the acpi interpretter is initialized via subsys_initcall() it would > need to be after that - I tried pushing cpu_dev_register_generic() > immediately after acpi_bus_init() and that seems fine. Sounds promising. > We can't leave the rest of cpu_dev_init() that late because a bunch > of other stuff relies on it (CPU freq blows up first as a core_init() > on my setup). I see. > So to make this work we need it to always move the registration later > than the necessary infrastructure, perhaps to subsys_initcall_sync() > as is done for missing CPUs (we'd need to combine the two given that > needs to run after this, or potentially just stop checking for acpi_disab= led > and don't taint the kernel!). I think this is probably the most consiste= nt > option on basis it at least moves the registration to the same point > whatever is going on and can easily use the arch callback you suggest > to hide away the logic on deciding if a CPU is there or not. I agree.