[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH V6 4/9] hw/acpi: Init GED framework with CPU hotplug events
From: |
Alex Bennée |
Subject: |
Re: [PATCH V6 4/9] hw/acpi: Init GED framework with CPU hotplug events |
Date: |
Thu, 19 Oct 2023 11:16:05 +0100 |
User-agent: |
mu4e 1.11.22; emacs 29.1.50 |
Salil Mehta <salil.mehta@huawei.com> writes:
> 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.
Should we also update the docs here:
https://qemu.readthedocs.io/en/master/specs/acpi_hw_reduced_hotplug.html
(see docs/specs/acpi_hw_reduced_hotplug.rst)
to add the new bits? Or maybe an update to documentation as the last
commit?
>
> Co-developed-by: Keqian Zhu <zhukeqian1@huawei.com>
> Signed-off-by: Keqian Zhu <zhukeqian1@huawei.com>
> Signed-off-by: Salil Mehta <salil.mehta@huawei.com>
> Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
> Reviewed-by: Gavin Shan <gshan@redhat.com>
> Reviewed-by: David Hildenbrand <david@redhat.com>
> Tested-by: Vishnu Pajjuri <vishnu@os.amperecomputing.com>
> Tested-by: Xianglai Li <lixianglai@loongson.cn>
> ---
> 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 ba84ce0214..a803ea818e 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"
> @@ -95,6 +96,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;
> @@ -106,6 +108,9 @@ struct AcpiGedState {
> SysBusDevice parent_obj;
> MemHotplugState memhp_state;
> MemoryRegion container_memhp;
> + CPUHotplugState cpuhp_state;
> + MemoryRegion container_cpuhp;
> + AcpiCpuHotplug cpuhp;
> GEDState ged_state;
> uint32_t ged_event_bitmap;
> qemu_irq irq;
--
Alex Bennée
Virtualisation Tech Lead @ Linaro
- [PATCH V6 0/9] Add architecture agnostic code to support vCPU Hotplug, Salil Mehta, 2023/10/13
- [PATCH V6 1/9] accel/kvm: Extract common KVM vCPU {creation, parking} code, Salil Mehta, 2023/10/13
- [PATCH V6 2/9] hw/acpi: Move CPU ctrl-dev MMIO region len macro to common header file, Salil Mehta, 2023/10/13
- [PATCH V6 3/9] hw/acpi: Add ACPI CPU hotplug init stub, Salil Mehta, 2023/10/13
- [PATCH V6 4/9] hw/acpi: Init GED framework with CPU hotplug events, Salil Mehta, 2023/10/13
- [PATCH V6 5/9] hw/acpi: Update CPUs AML with cpu-(ctrl)dev change, Salil Mehta, 2023/10/13
- [PATCH V6 6/9] hw/acpi: Update GED _EVT method AML with CPU scan, Salil Mehta, 2023/10/13
- [PATCH V6 7/9] hw/acpi: Update ACPI GED framework to support vCPU Hotplug, Salil Mehta, 2023/10/13
- [PATCH V6 8/9] physmem: Add helper function to destroy CPU AddressSpace, Salil Mehta, 2023/10/13
- [PATCH V6 9/9] gdbstub: Add helper function to unregister GDB register space, Salil Mehta, 2023/10/13
- Re: [PATCH V6 0/9] Add architecture agnostic code to support vCPU Hotplug, Miguel Luis, 2023/10/13