On Mon, 14 Oct 2024 20:05:58 +0000 Salil Mehta <salil.me...@huawei.com> wrote:
> Hi Igor, > > > From: qemu-devel-bounces+salil.mehta=huawei....@nongnu.org <qemu- > > devel-bounces+salil.mehta=huawei....@nongnu.org> On Behalf Of Igor > > Mammedov > > Sent: Monday, October 14, 2024 10:38 AM > > > > On Mon, 14 Oct 2024 16:52:55 +0800 > > maobibo <maob...@loongson.cn> wrote: > > > > > Hi Salil, > > > > > > When I debug cpu hotplug on LoongArch system, It reports error like this: > > > ACPI BIOS Error (bug): Could not resolve symbol [\_SB.GED.CSCN], > > > AE_NOT_FOUND > > > ACPI Error: Aborting method \_SB.GED._EVT due to previous error > > > (AE_NOT_FOUND) > > > acpi-ged ACPI0013:00: IRQ method execution failed > > > > > > > > > With this patch, GED CPU call method is "\\_SB.GED.CSCN", however in > > > function build_cpus_aml(), its method name is "\\_SB.CPUS.CSCN". > > > method = aml_method(event_handler_method, 0, > > AML_NOTSERIALIZED); > > > aml_append(method, aml_call0("\\_SB.CPUS." CPU_SCAN_METHOD)); > > > aml_append(table, method); > > > > > > It seems that CPU scanning method name is not consistent between > > > function build_cpus_aml() and build_ged_aml(). > > > > > > Regards > > > Bibo Mao > > > > > > On 2024/7/23 下午6:59, Michael S. Tsirkin wrote: > > > > From: Salil Mehta <salil.me...@huawei.com> > > > > > > > > OSPM evaluates _EVT method to map the event. The CPU hotplug > > event > > > > eventually results in start of the CPU scan. Scan figures out the > > > > CPU and the kind of > > > > event(plug/unplug) and notifies it back to the guest. Update the GED > > > > AML _EVT method with the call to method \\_SB.CPUS.CSCN (via > > > > \\_SB.GED.CSCN) > > > > > > > > Architecture specific code [1] might initialize its CPUs AML code by > > > > calling common function build_cpus_aml() like below for ARM: > > > > > > > > build_cpus_aml(scope, ms, opts, xx_madt_cpu_entry, > > memmap[VIRT_CPUHP_ACPI].base, > > > > "\\_SB", "\\_SB.GED.CSCN", AML_SYSTEM_MEMORY); > > > > it should be \\_SB.CPUS.CSCN > > > I guess we are getting back to where we started then? > > https://lore.kernel.org/qemu-devel/20240706162845.3baf5...@imammedo.users.ipa.redhat.com/ > Indeed, CSCN in name had me confused, perhaps it would be better to rename that something else. maybe something like s/_SB.GED.CSCN/_SB.GED.ECPU/ > Excerpt from above discussion and your suggestion: > [...] > > I don't particularly like exposing cpu hotplug internals for outside code > and then making that code do plumbing hoping that nothing will explode > in the future. > > build_cpus_aml() takes event_handler_method to create a method that > can be called by platform. What I suggest is to call that method here > instead of trying to expose CPU hotplug internals and manually building > call path here. > aka: > build_cpus_aml(event_handler_method = PATH_TO_GED_DEVICE.CSCN) > and then call here > aml_append(if_ctx, aml_call0(CSCN)); > which will call CSCN in GED scope, that was be populated by > build_cpus_aml() to do cpu scan properly without need to expose > cpu hotplug internal names and then trying to fixup conflicts caused by that. > > PS: > we should do the same for memory hotplug, we see in context above > > [...] > > > Solution: > I've avoided above error in different way and keeping exactly what you > suggested \_SB.PATH_TO_GED_DEVICE.CSCN i.e. \_SB.GED.CSCN > Please have a look: > > https://lore.kernel.org/qemu-devel/20241009031815.250096-16-salil.me...@huawei.com/ > > Many thanks! > > > Best regards > Salil. >