> From: David Hildenbrand <da...@redhat.com> > Sent: Monday, October 9, 2023 1:27 PM > To: Salil Mehta <salil.me...@huawei.com>; qemu-devel@nongnu.org; qemu- > a...@nongnu.org > Cc: m...@kernel.org; jean-phili...@linaro.org; Jonathan Cameron > <jonathan.came...@huawei.com>; lpieral...@kernel.org; > peter.mayd...@linaro.org; richard.hender...@linaro.org; > imamm...@redhat.com; andrew.jo...@linux.dev; phi...@linaro.org; > eric.au...@redhat.com; oliver.up...@linux.dev; pbonz...@redhat.com; > m...@redhat.com; w...@kernel.org; gs...@redhat.com; raf...@kernel.org; > alex.ben...@linaro.org; li...@armlinux.org.uk; > dar...@os.amperecomputing.com; il...@os.amperecomputing.com; > vis...@os.amperecomputing.com; karl.heub...@oracle.com; > miguel.l...@oracle.com; salil.me...@opnsrc.net; zhukeqian > <zhukeqi...@huawei.com>; wangxiongfeng (C) <wangxiongfe...@huawei.com>; > wangyanan (Y) <wangyana...@huawei.com>; jiakern...@gmail.com; > maob...@loongson.cn; lixiang...@loongson.cn; Linuxarm <linux...@huawei.com> > Subject: Re: [PATCH V3 04/10] hw/acpi: Init GED framework with cpu hotplug > events > > On 09.10.23 13:28, Salil Mehta wrote: > > ACPI GED(as described in the ACPI 6.2 spec) can be used to generate ACPI > events > > when OSPM/guest receives an interrupt listed in the _CRS object of GED. > OSPM > > then maps or demultiplexes the event by evaluating _EVT method. > > > > This change adds the support of cpu hotplug event initialization in the > > existing GED framework. > > > > Co-developed-by: Keqian Zhu <zhukeqi...@huawei.com> > > Signed-off-by: Keqian Zhu <zhukeqi...@huawei.com> > > Signed-off-by: Salil Mehta <salil.me...@huawei.com> > > Reviewed-by: Jonathan Cameron <jonathan.came...@huawei.com> > > Reviewed-by: Gavin Shan <gs...@redhat.com> > > --- > > hw/acpi/generic_event_device.c | 8 ++++++++ > > include/hw/acpi/generic_event_device.h | 5 +++++ > > 2 files changed, 13 insertions(+) > > > > diff --git a/hw/acpi/generic_event_device.c > b/hw/acpi/generic_event_device.c > > index a3d31631fe..d2fa1d0e4a 100644 > > --- a/hw/acpi/generic_event_device.c > > +++ b/hw/acpi/generic_event_device.c > > @@ -25,6 +25,7 @@ static const uint32_t ged_supported_events[] = { > > ACPI_GED_MEM_HOTPLUG_EVT, > > ACPI_GED_PWR_DOWN_EVT, > > ACPI_GED_NVDIMM_HOTPLUG_EVT, > > + ACPI_GED_CPU_HOTPLUG_EVT, > > }; > > > > /* > > @@ -400,6 +401,13 @@ static void acpi_ged_initfn(Object *obj) > > memory_region_init_io(&ged_st->regs, obj, &ged_regs_ops, ged_st, > > TYPE_ACPI_GED "-regs", ACPI_GED_REG_COUNT); > > sysbus_init_mmio(sbd, &ged_st->regs); > > + > > + s->cpuhp.device = OBJECT(s); > > + memory_region_init(&s->container_cpuhp, OBJECT(dev), "cpuhp > container", > > + ACPI_CPU_HOTPLUG_REG_LEN); > > + sysbus_init_mmio(SYS_BUS_DEVICE(dev), &s->container_cpuhp); > > + cpu_hotplug_hw_init(&s->container_cpuhp, OBJECT(dev), > > + &s->cpuhp_state, 0); > > } > > > > static void acpi_ged_class_init(ObjectClass *class, void *data) > > diff --git a/include/hw/acpi/generic_event_device.h > b/include/hw/acpi/generic_event_device.h > > index d831bbd889..d0a5a43abf 100644 > > --- a/include/hw/acpi/generic_event_device.h > > +++ b/include/hw/acpi/generic_event_device.h > > @@ -60,6 +60,7 @@ > > #define HW_ACPI_GENERIC_EVENT_DEVICE_H > > > > #include "hw/sysbus.h" > > +#include "hw/acpi/cpu_hotplug.h" > > #include "hw/acpi/memory_hotplug.h" > > #include "hw/acpi/ghes.h" > > #include "qom/object.h" > > @@ -97,6 +98,7 @@ OBJECT_DECLARE_SIMPLE_TYPE(AcpiGedState, ACPI_GED) > > #define ACPI_GED_MEM_HOTPLUG_EVT 0x1 > > #define ACPI_GED_PWR_DOWN_EVT 0x2 > > #define ACPI_GED_NVDIMM_HOTPLUG_EVT 0x4 > > +#define ACPI_GED_CPU_HOTPLUG_EVT 0x8 > > > > typedef struct GEDState { > > MemoryRegion evt; > > @@ -108,6 +110,9 @@ struct AcpiGedState { > > SysBusDevice parent_obj; > > MemHotplugState memhp_state; > > MemoryRegion container_memhp; > > + CPUHotplugState cpuhp_state; > > + MemoryRegion container_cpuhp; > > + AcpiCpuHotplug cpuhp; > > Am I wrong or is that member completely unused/uninitialized?
No it is not. Please check below change in acpi_ged_initfn() + s->cpuhp.device = OBJECT(s); Thanks Salil.