diff mbox series

[RFC,V2,24/37] hw/acpi: Update ACPI GED framework to support vCPU Hotplug

Message ID 20230926100436.28284-25-salil.mehta@huawei.com (mailing list archive)
State New, archived
Headers show
Series Support of Virtual CPU Hotplug for ARMv8 Arch | expand

Commit Message

Salil Mehta Sept. 26, 2023, 10:04 a.m. UTC
ACPI GED shall be used to convey to the guest kernel about any CPU hot-(un)plug
events. Therefore, existing ACPI GED framework inside QEMU needs to be enhanced
to support CPU hotplug state and events.

Co-developed-by: Salil Mehta <salil.mehta@huawei.com>
Signed-off-by: Salil Mehta <salil.mehta@huawei.com>
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>
---
 hw/acpi/generic_event_device.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

Comments

Michael S. Tsirkin Sept. 26, 2023, 11:02 a.m. UTC | #1
On Tue, Sep 26, 2023 at 11:04:23AM +0100, Salil Mehta wrote:
> ACPI GED shall be used to convey to the guest kernel about any CPU hot-(un)plug
> events. Therefore, existing ACPI GED framework inside QEMU needs to be enhanced
> to support CPU hotplug state and events.
> 
> Co-developed-by: Salil Mehta <salil.mehta@huawei.com>

Co-developed with yourself?

didn't you co-develop this with xianglai li?

Just include his S.O.B then, and drop the non-standard Co-developed-by.



> Signed-off-by: Salil Mehta <salil.mehta@huawei.com>
> 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>



> ---
>  hw/acpi/generic_event_device.c | 10 ++++++++++
>  1 file changed, 10 insertions(+)
> 
> diff --git a/hw/acpi/generic_event_device.c b/hw/acpi/generic_event_device.c
> index ad252e6a91..0266733a54 100644
> --- a/hw/acpi/generic_event_device.c
> +++ b/hw/acpi/generic_event_device.c
> @@ -12,6 +12,7 @@
>  #include "qemu/osdep.h"
>  #include "qapi/error.h"
>  #include "hw/acpi/acpi.h"
> +#include "hw/acpi/cpu.h"
>  #include "hw/acpi/generic_event_device.h"
>  #include "hw/irq.h"
>  #include "hw/mem/pc-dimm.h"
> @@ -239,6 +240,8 @@ static void acpi_ged_device_plug_cb(HotplugHandler *hotplug_dev,
>          } else {
>              acpi_memory_plug_cb(hotplug_dev, &s->memhp_state, dev, errp);
>          }
> +    } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) {
> +        acpi_cpu_plug_cb(hotplug_dev, &s->cpuhp_state, dev, errp);
>      } else {
>          error_setg(errp, "virt: device plug request for unsupported device"
>                     " type: %s", object_get_typename(OBJECT(dev)));
> @@ -253,6 +256,8 @@ static void acpi_ged_unplug_request_cb(HotplugHandler *hotplug_dev,
>      if ((object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM) &&
>                         !(object_dynamic_cast(OBJECT(dev), TYPE_NVDIMM)))) {
>          acpi_memory_unplug_request_cb(hotplug_dev, &s->memhp_state, dev, errp);
> +    } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) {
> +        acpi_cpu_unplug_request_cb(hotplug_dev, &s->cpuhp_state, dev, errp);
>      } else {
>          error_setg(errp, "acpi: device unplug request for unsupported device"
>                     " type: %s", object_get_typename(OBJECT(dev)));
> @@ -266,6 +271,8 @@ static void acpi_ged_unplug_cb(HotplugHandler *hotplug_dev,
>  
>      if (object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM)) {
>          acpi_memory_unplug_cb(&s->memhp_state, dev, errp);
> +    } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) {
> +        acpi_cpu_unplug_cb(&s->cpuhp_state, dev, errp);
>      } else {
>          error_setg(errp, "acpi: device unplug for unsupported device"
>                     " type: %s", object_get_typename(OBJECT(dev)));
> @@ -277,6 +284,7 @@ static void acpi_ged_ospm_status(AcpiDeviceIf *adev, ACPIOSTInfoList ***list)
>      AcpiGedState *s = ACPI_GED(adev);
>  
>      acpi_memory_ospm_status(&s->memhp_state, list);
> +    acpi_cpu_ospm_status(&s->cpuhp_state, list);
>  }
>  
>  static void acpi_ged_send_event(AcpiDeviceIf *adev, AcpiEventStatusBits ev)
> @@ -291,6 +299,8 @@ static void acpi_ged_send_event(AcpiDeviceIf *adev, AcpiEventStatusBits ev)
>          sel = ACPI_GED_PWR_DOWN_EVT;
>      } else if (ev & ACPI_NVDIMM_HOTPLUG_STATUS) {
>          sel = ACPI_GED_NVDIMM_HOTPLUG_EVT;
> +    } else if (ev & ACPI_CPU_HOTPLUG_STATUS) {
> +        sel = ACPI_GED_CPU_HOTPLUG_EVT;
>      } else {
>          /* Unknown event. Return without generating interrupt. */
>          warn_report("GED: Unsupported event %d. No irq injected", ev);
> -- 
> 2.34.1
Salil Mehta Sept. 26, 2023, 11:37 a.m. UTC | #2
> From: Michael S. Tsirkin <mst@redhat.com>
> Sent: Tuesday, September 26, 2023 12:02 PM
> To: Salil Mehta <salil.mehta@huawei.com>
> Cc: qemu-devel@nongnu.org; qemu-arm@nongnu.org; maz@kernel.org; jean-
> philippe@linaro.org; Jonathan Cameron <jonathan.cameron@huawei.com>;
> lpieralisi@kernel.org; peter.maydell@linaro.org;
> richard.henderson@linaro.org; imammedo@redhat.com; andrew.jones@linux.dev;
> david@redhat.com; philmd@linaro.org; eric.auger@redhat.com;
> will@kernel.org; ardb@kernel.org; oliver.upton@linux.dev;
> pbonzini@redhat.com; gshan@redhat.com; rafael@kernel.org;
> borntraeger@linux.ibm.com; alex.bennee@linaro.org; linux@armlinux.org.uk;
> darren@os.amperecomputing.com; ilkka@os.amperecomputing.com;
> vishnu@os.amperecomputing.com; karl.heubaum@oracle.com;
> miguel.luis@oracle.com; salil.mehta@opnsrc.net; zhukeqian
> <zhukeqian1@huawei.com>; wangxiongfeng (C) <wangxiongfeng2@huawei.com>;
> wangyanan (Y) <wangyanan55@huawei.com>; jiakernel2@gmail.com;
> maobibo@loongson.cn; lixianglai@loongson.cn
> Subject: Re: [PATCH RFC V2 24/37] hw/acpi: Update ACPI GED framework to
> support vCPU Hotplug
> 
> On Tue, Sep 26, 2023 at 11:04:23AM +0100, Salil Mehta wrote:
> > ACPI GED shall be used to convey to the guest kernel about any CPU hot-
> (un)plug
> > events. Therefore, existing ACPI GED framework inside QEMU needs to be
> enhanced
> > to support CPU hotplug state and events.
> >
> > Co-developed-by: Salil Mehta <salil.mehta@huawei.com>
> 
> Co-developed with yourself?
> 
> didn't you co-develop this with xianglai li?

No, our effort is quite old ARM patch-set existed since the year 2020
without any change. Please check the original patch-set here:

https://lore.kernel.org/qemu-devel/20200613213629.21984-11-salil.mehta@huawei.com/


To be fair to the authors, it will not be right to add another SOB here.



> 
> Just include his S.O.B then, and drop the non-standard Co-developed-by.

Co-developed-by Tag has been added to ensure main authors of the patch
get highlighted clearly.


> 
> 
> 
> > Signed-off-by: Salil Mehta <salil.mehta@huawei.com>
> > 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>
> 
> 
> 
> > ---
> >  hw/acpi/generic_event_device.c | 10 ++++++++++
> >  1 file changed, 10 insertions(+)
> >
> > diff --git a/hw/acpi/generic_event_device.c
> b/hw/acpi/generic_event_device.c
> > index ad252e6a91..0266733a54 100644
> > --- a/hw/acpi/generic_event_device.c
> > +++ b/hw/acpi/generic_event_device.c
> > @@ -12,6 +12,7 @@
> >  #include "qemu/osdep.h"
> >  #include "qapi/error.h"
> >  #include "hw/acpi/acpi.h"
> > +#include "hw/acpi/cpu.h"
> >  #include "hw/acpi/generic_event_device.h"
> >  #include "hw/irq.h"
> >  #include "hw/mem/pc-dimm.h"
> > @@ -239,6 +240,8 @@ static void acpi_ged_device_plug_cb(HotplugHandler
> *hotplug_dev,
> >          } else {
> >              acpi_memory_plug_cb(hotplug_dev, &s->memhp_state, dev,
> errp);
> >          }
> > +    } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) {
> > +        acpi_cpu_plug_cb(hotplug_dev, &s->cpuhp_state, dev, errp);
> >      } else {
> >          error_setg(errp, "virt: device plug request for unsupported
> device"
> >                     " type: %s", object_get_typename(OBJECT(dev)));
> > @@ -253,6 +256,8 @@ static void acpi_ged_unplug_request_cb(HotplugHandler
> *hotplug_dev,
> >      if ((object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM) &&
> >                         !(object_dynamic_cast(OBJECT(dev),
> TYPE_NVDIMM)))) {
> >          acpi_memory_unplug_request_cb(hotplug_dev, &s->memhp_state, dev,
> errp);
> > +    } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) {
> > +        acpi_cpu_unplug_request_cb(hotplug_dev, &s->cpuhp_state, dev,
> errp);
> >      } else {
> >          error_setg(errp, "acpi: device unplug request for unsupported
> device"
> >                     " type: %s", object_get_typename(OBJECT(dev)));
> > @@ -266,6 +271,8 @@ static void acpi_ged_unplug_cb(HotplugHandler
> *hotplug_dev,
> >
> >      if (object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM)) {
> >          acpi_memory_unplug_cb(&s->memhp_state, dev, errp);
> > +    } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) {
> > +        acpi_cpu_unplug_cb(&s->cpuhp_state, dev, errp);
> >      } else {
> >          error_setg(errp, "acpi: device unplug for unsupported device"
> >                     " type: %s", object_get_typename(OBJECT(dev)));
> > @@ -277,6 +284,7 @@ static void acpi_ged_ospm_status(AcpiDeviceIf *adev,
> ACPIOSTInfoList ***list)
> >      AcpiGedState *s = ACPI_GED(adev);
> >
> >      acpi_memory_ospm_status(&s->memhp_state, list);
> > +    acpi_cpu_ospm_status(&s->cpuhp_state, list);
> >  }
> >
> >  static void acpi_ged_send_event(AcpiDeviceIf *adev, AcpiEventStatusBits
> ev)
> > @@ -291,6 +299,8 @@ static void acpi_ged_send_event(AcpiDeviceIf *adev,
> AcpiEventStatusBits ev)
> >          sel = ACPI_GED_PWR_DOWN_EVT;
> >      } else if (ev & ACPI_NVDIMM_HOTPLUG_STATUS) {
> >          sel = ACPI_GED_NVDIMM_HOTPLUG_EVT;
> > +    } else if (ev & ACPI_CPU_HOTPLUG_STATUS) {
> > +        sel = ACPI_GED_CPU_HOTPLUG_EVT;
> >      } else {
> >          /* Unknown event. Return without generating interrupt. */
> >          warn_report("GED: Unsupported event %d. No irq injected", ev);
> > --
> > 2.34.1
Michael S. Tsirkin Sept. 26, 2023, noon UTC | #3
On Tue, Sep 26, 2023 at 11:37:38AM +0000, Salil Mehta wrote:
> > From: Michael S. Tsirkin <mst@redhat.com>
> > Sent: Tuesday, September 26, 2023 12:02 PM
> > To: Salil Mehta <salil.mehta@huawei.com>
> > Cc: qemu-devel@nongnu.org; qemu-arm@nongnu.org; maz@kernel.org; jean-
> > philippe@linaro.org; Jonathan Cameron <jonathan.cameron@huawei.com>;
> > lpieralisi@kernel.org; peter.maydell@linaro.org;
> > richard.henderson@linaro.org; imammedo@redhat.com; andrew.jones@linux.dev;
> > david@redhat.com; philmd@linaro.org; eric.auger@redhat.com;
> > will@kernel.org; ardb@kernel.org; oliver.upton@linux.dev;
> > pbonzini@redhat.com; gshan@redhat.com; rafael@kernel.org;
> > borntraeger@linux.ibm.com; alex.bennee@linaro.org; linux@armlinux.org.uk;
> > darren@os.amperecomputing.com; ilkka@os.amperecomputing.com;
> > vishnu@os.amperecomputing.com; karl.heubaum@oracle.com;
> > miguel.luis@oracle.com; salil.mehta@opnsrc.net; zhukeqian
> > <zhukeqian1@huawei.com>; wangxiongfeng (C) <wangxiongfeng2@huawei.com>;
> > wangyanan (Y) <wangyanan55@huawei.com>; jiakernel2@gmail.com;
> > maobibo@loongson.cn; lixianglai@loongson.cn
> > Subject: Re: [PATCH RFC V2 24/37] hw/acpi: Update ACPI GED framework to
> > support vCPU Hotplug
> > 
> > On Tue, Sep 26, 2023 at 11:04:23AM +0100, Salil Mehta wrote:
> > > ACPI GED shall be used to convey to the guest kernel about any CPU hot-
> > (un)plug
> > > events. Therefore, existing ACPI GED framework inside QEMU needs to be
> > enhanced
> > > to support CPU hotplug state and events.
> > >
> > > Co-developed-by: Salil Mehta <salil.mehta@huawei.com>
> > 
> > Co-developed with yourself?
> > 
> > didn't you co-develop this with xianglai li?
> 
> No, our effort is quite old ARM patch-set existed since the year 2020
> without any change. Please check the original patch-set here:
> 
> https://lore.kernel.org/qemu-devel/20200613213629.21984-11-salil.mehta@huawei.com/
> 
> 
> To be fair to the authors, it will not be right to add another SOB here.
> 

I see. And what's the difference with patches that xianglai li posted?
Are they both rebases of the same old patch then?

> 
> > 
> > Just include his S.O.B then, and drop the non-standard Co-developed-by.
> 
> Co-developed-by Tag has been added to ensure main authors of the patch
> get highlighted clearly.

I think I don't know the patch provenance at this point.

> 
> > 
> > 
> > 
> > > Signed-off-by: Salil Mehta <salil.mehta@huawei.com>
> > > 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>
> > 
> > 
> > 
> > > ---
> > >  hw/acpi/generic_event_device.c | 10 ++++++++++
> > >  1 file changed, 10 insertions(+)
> > >
> > > diff --git a/hw/acpi/generic_event_device.c
> > b/hw/acpi/generic_event_device.c
> > > index ad252e6a91..0266733a54 100644
> > > --- a/hw/acpi/generic_event_device.c
> > > +++ b/hw/acpi/generic_event_device.c
> > > @@ -12,6 +12,7 @@
> > >  #include "qemu/osdep.h"
> > >  #include "qapi/error.h"
> > >  #include "hw/acpi/acpi.h"
> > > +#include "hw/acpi/cpu.h"
> > >  #include "hw/acpi/generic_event_device.h"
> > >  #include "hw/irq.h"
> > >  #include "hw/mem/pc-dimm.h"
> > > @@ -239,6 +240,8 @@ static void acpi_ged_device_plug_cb(HotplugHandler
> > *hotplug_dev,
> > >          } else {
> > >              acpi_memory_plug_cb(hotplug_dev, &s->memhp_state, dev,
> > errp);
> > >          }
> > > +    } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) {
> > > +        acpi_cpu_plug_cb(hotplug_dev, &s->cpuhp_state, dev, errp);
> > >      } else {
> > >          error_setg(errp, "virt: device plug request for unsupported
> > device"
> > >                     " type: %s", object_get_typename(OBJECT(dev)));
> > > @@ -253,6 +256,8 @@ static void acpi_ged_unplug_request_cb(HotplugHandler
> > *hotplug_dev,
> > >      if ((object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM) &&
> > >                         !(object_dynamic_cast(OBJECT(dev),
> > TYPE_NVDIMM)))) {
> > >          acpi_memory_unplug_request_cb(hotplug_dev, &s->memhp_state, dev,
> > errp);
> > > +    } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) {
> > > +        acpi_cpu_unplug_request_cb(hotplug_dev, &s->cpuhp_state, dev,
> > errp);
> > >      } else {
> > >          error_setg(errp, "acpi: device unplug request for unsupported
> > device"
> > >                     " type: %s", object_get_typename(OBJECT(dev)));
> > > @@ -266,6 +271,8 @@ static void acpi_ged_unplug_cb(HotplugHandler
> > *hotplug_dev,
> > >
> > >      if (object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM)) {
> > >          acpi_memory_unplug_cb(&s->memhp_state, dev, errp);
> > > +    } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) {
> > > +        acpi_cpu_unplug_cb(&s->cpuhp_state, dev, errp);
> > >      } else {
> > >          error_setg(errp, "acpi: device unplug for unsupported device"
> > >                     " type: %s", object_get_typename(OBJECT(dev)));
> > > @@ -277,6 +284,7 @@ static void acpi_ged_ospm_status(AcpiDeviceIf *adev,
> > ACPIOSTInfoList ***list)
> > >      AcpiGedState *s = ACPI_GED(adev);
> > >
> > >      acpi_memory_ospm_status(&s->memhp_state, list);
> > > +    acpi_cpu_ospm_status(&s->cpuhp_state, list);
> > >  }
> > >
> > >  static void acpi_ged_send_event(AcpiDeviceIf *adev, AcpiEventStatusBits
> > ev)
> > > @@ -291,6 +299,8 @@ static void acpi_ged_send_event(AcpiDeviceIf *adev,
> > AcpiEventStatusBits ev)
> > >          sel = ACPI_GED_PWR_DOWN_EVT;
> > >      } else if (ev & ACPI_NVDIMM_HOTPLUG_STATUS) {
> > >          sel = ACPI_GED_NVDIMM_HOTPLUG_EVT;
> > > +    } else if (ev & ACPI_CPU_HOTPLUG_STATUS) {
> > > +        sel = ACPI_GED_CPU_HOTPLUG_EVT;
> > >      } else {
> > >          /* Unknown event. Return without generating interrupt. */
> > >          warn_report("GED: Unsupported event %d. No irq injected", ev);
> > > --
> > > 2.34.1
Salil Mehta Sept. 26, 2023, 12:27 p.m. UTC | #4
> From: Michael S. Tsirkin <mst@redhat.com>
> Sent: Tuesday, September 26, 2023 1:00 PM
> To: Salil Mehta <salil.mehta@huawei.com>
> Cc: qemu-devel@nongnu.org; qemu-arm@nongnu.org; maz@kernel.org; jean-
> philippe@linaro.org; Jonathan Cameron <jonathan.cameron@huawei.com>;
> lpieralisi@kernel.org; peter.maydell@linaro.org;
> richard.henderson@linaro.org; imammedo@redhat.com; andrew.jones@linux.dev;
> david@redhat.com; philmd@linaro.org; eric.auger@redhat.com;
> will@kernel.org; ardb@kernel.org; oliver.upton@linux.dev;
> pbonzini@redhat.com; gshan@redhat.com; rafael@kernel.org;
> borntraeger@linux.ibm.com; alex.bennee@linaro.org; linux@armlinux.org.uk;
> darren@os.amperecomputing.com; ilkka@os.amperecomputing.com;
> vishnu@os.amperecomputing.com; karl.heubaum@oracle.com;
> miguel.luis@oracle.com; salil.mehta@opnsrc.net; zhukeqian
> <zhukeqian1@huawei.com>; wangxiongfeng (C) <wangxiongfeng2@huawei.com>;
> wangyanan (Y) <wangyanan55@huawei.com>; jiakernel2@gmail.com;
> maobibo@loongson.cn; lixianglai@loongson.cn
> Subject: Re: [PATCH RFC V2 24/37] hw/acpi: Update ACPI GED framework to
> support vCPU Hotplug
> 
> On Tue, Sep 26, 2023 at 11:37:38AM +0000, Salil Mehta wrote:
> > > From: Michael S. Tsirkin <mst@redhat.com>
> > > Sent: Tuesday, September 26, 2023 12:02 PM
> > > To: Salil Mehta <salil.mehta@huawei.com>
> > > Cc: qemu-devel@nongnu.org; qemu-arm@nongnu.org; maz@kernel.org; jean-
> > > philippe@linaro.org; Jonathan Cameron <jonathan.cameron@huawei.com>;
> > > lpieralisi@kernel.org; peter.maydell@linaro.org;
> > > richard.henderson@linaro.org; imammedo@redhat.com;
> andrew.jones@linux.dev;
> > > david@redhat.com; philmd@linaro.org; eric.auger@redhat.com;
> > > will@kernel.org; ardb@kernel.org; oliver.upton@linux.dev;
> > > pbonzini@redhat.com; gshan@redhat.com; rafael@kernel.org;
> > > borntraeger@linux.ibm.com; alex.bennee@linaro.org;
> linux@armlinux.org.uk;
> > > darren@os.amperecomputing.com; ilkka@os.amperecomputing.com;
> > > vishnu@os.amperecomputing.com; karl.heubaum@oracle.com;
> > > miguel.luis@oracle.com; salil.mehta@opnsrc.net; zhukeqian
> > > <zhukeqian1@huawei.com>; wangxiongfeng (C) <wangxiongfeng2@huawei.com>;
> > > wangyanan (Y) <wangyanan55@huawei.com>; jiakernel2@gmail.com;
> > > maobibo@loongson.cn; lixianglai@loongson.cn
> > > Subject: Re: [PATCH RFC V2 24/37] hw/acpi: Update ACPI GED framework to
> > > support vCPU Hotplug
> > >
> > > On Tue, Sep 26, 2023 at 11:04:23AM +0100, Salil Mehta wrote:
> > > > ACPI GED shall be used to convey to the guest kernel about any CPU
> hot-
> > > (un)plug
> > > > events. Therefore, existing ACPI GED framework inside QEMU needs to
> be
> > > enhanced
> > > > to support CPU hotplug state and events.
> > > >
> > > > Co-developed-by: Salil Mehta <salil.mehta@huawei.com>
> > >
> > > Co-developed with yourself?
> > >
> > > didn't you co-develop this with xianglai li?
> >
> > No, our effort is quite old ARM patch-set existed since the year 2020
> > without any change. Please check the original patch-set here:
> >
> > https://lore.kernel.org/qemu-devel/20200613213629.21984-11-
> salil.mehta@huawei.com/
> >
> >
> > To be fair to the authors, it will not be right to add another SOB here.
> >
> 
> I see. And what's the difference with patches that xianglai li posted?

I am not sure if there is. But if there is any change then it can be
commented on the architecture agnostic patch-set which I shall be
posting later this week. If that change is a common change to all
the architectures maybe I can pick-up that change and add in the V2
version of the arch agnostic patch-set and then it will make sense
to add the SOBs of the contributing members there.

> Are they both rebases of the same old patch then?

RFC V2 is an extension of RFC V1. We been working with ARM, Oracle
Ampere, Linaro and other companies to get to this stage.

It has already been agreed that Loongson folks shall be rebasing
their patch-set over ARM RFC V2 patch-set which is very big. 


https://lore.kernel.org/qemu-devel/20230926100436.28284-1-salil.mehta@huawei.com/T/#m523b37819c4811c7827333982004e07a1ef03879

I have for now pointed the patches in the exact order which can be
used to rebase their patch-set .

I will be sending a separate arch agnostic patch-set later this week
which will be without RFC Tag. This way different companies can work
independently.


Thanks
Salil.

> > > Just include his S.O.B then, and drop the non-standard Co-developed-by.
> >
> > Co-developed-by Tag has been added to ensure main authors of the patch
> > get highlighted clearly.
> 
> I think I don't know the patch provenance at this point.


It was us from Huawei in the year 2020.

https://lore.kernel.org/qemu-devel/20200613213629.21984-10-salil.mehta@huawei.com/




> > > > Signed-off-by: Salil Mehta <salil.mehta@huawei.com>
> > > > 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>
> > >
> > >
> > >
> > > > ---
> > > >  hw/acpi/generic_event_device.c | 10 ++++++++++
> > > >  1 file changed, 10 insertions(+)
> > > >
> > > > diff --git a/hw/acpi/generic_event_device.c
> > > b/hw/acpi/generic_event_device.c
> > > > index ad252e6a91..0266733a54 100644
> > > > --- a/hw/acpi/generic_event_device.c
> > > > +++ b/hw/acpi/generic_event_device.c
> > > > @@ -12,6 +12,7 @@
> > > >  #include "qemu/osdep.h"
> > > >  #include "qapi/error.h"
> > > >  #include "hw/acpi/acpi.h"
> > > > +#include "hw/acpi/cpu.h"
> > > >  #include "hw/acpi/generic_event_device.h"
> > > >  #include "hw/irq.h"
> > > >  #include "hw/mem/pc-dimm.h"
> > > > @@ -239,6 +240,8 @@ static void
> acpi_ged_device_plug_cb(HotplugHandler
> > > *hotplug_dev,
> > > >          } else {
> > > >              acpi_memory_plug_cb(hotplug_dev, &s->memhp_state, dev,
> > > errp);
> > > >          }
> > > > +    } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) {
> > > > +        acpi_cpu_plug_cb(hotplug_dev, &s->cpuhp_state, dev, errp);
> > > >      } else {
> > > >          error_setg(errp, "virt: device plug request for unsupported
> > > device"
> > > >                     " type: %s", object_get_typename(OBJECT(dev)));
> > > > @@ -253,6 +256,8 @@ static void
> acpi_ged_unplug_request_cb(HotplugHandler
> > > *hotplug_dev,
> > > >      if ((object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM) &&
> > > >                         !(object_dynamic_cast(OBJECT(dev),
> > > TYPE_NVDIMM)))) {
> > > >          acpi_memory_unplug_request_cb(hotplug_dev, &s->memhp_state,
> dev,
> > > errp);
> > > > +    } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) {
> > > > +        acpi_cpu_unplug_request_cb(hotplug_dev, &s->cpuhp_state,
> dev,
> > > errp);
> > > >      } else {
> > > >          error_setg(errp, "acpi: device unplug request for
> unsupported
> > > device"
> > > >                     " type: %s", object_get_typename(OBJECT(dev)));
> > > > @@ -266,6 +271,8 @@ static void acpi_ged_unplug_cb(HotplugHandler
> > > *hotplug_dev,
> > > >
> > > >      if (object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM)) {
> > > >          acpi_memory_unplug_cb(&s->memhp_state, dev, errp);
> > > > +    } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) {
> > > > +        acpi_cpu_unplug_cb(&s->cpuhp_state, dev, errp);
> > > >      } else {
> > > >          error_setg(errp, "acpi: device unplug for unsupported
> device"
> > > >                     " type: %s", object_get_typename(OBJECT(dev)));
> > > > @@ -277,6 +284,7 @@ static void acpi_ged_ospm_status(AcpiDeviceIf
> *adev,
> > > ACPIOSTInfoList ***list)
> > > >      AcpiGedState *s = ACPI_GED(adev);
> > > >
> > > >      acpi_memory_ospm_status(&s->memhp_state, list);
> > > > +    acpi_cpu_ospm_status(&s->cpuhp_state, list);
> > > >  }
> > > >
> > > >  static void acpi_ged_send_event(AcpiDeviceIf *adev,
> AcpiEventStatusBits
> > > ev)
> > > > @@ -291,6 +299,8 @@ static void acpi_ged_send_event(AcpiDeviceIf
> *adev,
> > > AcpiEventStatusBits ev)
> > > >          sel = ACPI_GED_PWR_DOWN_EVT;
> > > >      } else if (ev & ACPI_NVDIMM_HOTPLUG_STATUS) {
> > > >          sel = ACPI_GED_NVDIMM_HOTPLUG_EVT;
> > > > +    } else if (ev & ACPI_CPU_HOTPLUG_STATUS) {
> > > > +        sel = ACPI_GED_CPU_HOTPLUG_EVT;
> > > >      } else {
> > > >          /* Unknown event. Return without generating interrupt. */
> > > >          warn_report("GED: Unsupported event %d. No irq injected",
> ev);
> > > > --
> > > > 2.34.1
Xianglai Li Sept. 26, 2023, 1:02 p.m. UTC | #5
Hi Michael S. Tsirkin :
> On Tue, Sep 26, 2023 at 11:37:38AM +0000, Salil Mehta wrote:
>>> From: Michael S. Tsirkin <mst@redhat.com>
>>> Sent: Tuesday, September 26, 2023 12:02 PM
>>> To: Salil Mehta <salil.mehta@huawei.com>
>>> Cc: qemu-devel@nongnu.org; qemu-arm@nongnu.org; maz@kernel.org; jean-
>>> philippe@linaro.org; Jonathan Cameron <jonathan.cameron@huawei.com>;
>>> lpieralisi@kernel.org; peter.maydell@linaro.org;
>>> richard.henderson@linaro.org; imammedo@redhat.com; andrew.jones@linux.dev;
>>> david@redhat.com; philmd@linaro.org; eric.auger@redhat.com;
>>> will@kernel.org; ardb@kernel.org; oliver.upton@linux.dev;
>>> pbonzini@redhat.com; gshan@redhat.com; rafael@kernel.org;
>>> borntraeger@linux.ibm.com; alex.bennee@linaro.org; linux@armlinux.org.uk;
>>> darren@os.amperecomputing.com; ilkka@os.amperecomputing.com;
>>> vishnu@os.amperecomputing.com; karl.heubaum@oracle.com;
>>> miguel.luis@oracle.com; salil.mehta@opnsrc.net; zhukeqian
>>> <zhukeqian1@huawei.com>; wangxiongfeng (C) <wangxiongfeng2@huawei.com>;
>>> wangyanan (Y) <wangyanan55@huawei.com>; jiakernel2@gmail.com;
>>> maobibo@loongson.cn; lixianglai@loongson.cn
>>> Subject: Re: [PATCH RFC V2 24/37] hw/acpi: Update ACPI GED framework to
>>> support vCPU Hotplug
>>>
>>> On Tue, Sep 26, 2023 at 11:04:23AM +0100, Salil Mehta wrote:
>>>> ACPI GED shall be used to convey to the guest kernel about any CPU hot-
>>> (un)plug
>>>> events. Therefore, existing ACPI GED framework inside QEMU needs to be
>>> enhanced
>>>> to support CPU hotplug state and events.
>>>>
>>>> Co-developed-by: Salil Mehta <salil.mehta@huawei.com>
>>> Co-developed with yourself?
>>>
>>> didn't you co-develop this with xianglai li?
>> No, our effort is quite old ARM patch-set existed since the year 2020
>> without any change. Please check the original patch-set here:
>>
>> https://lore.kernel.org/qemu-devel/20200613213629.21984-11-salil.mehta@huawei.com/
>>
>>
>> To be fair to the authors, it will not be right to add another SOB here.
>>
> I see. And what's the difference with patches that xianglai li posted?
> Are they both rebases of the same old patch then?
>
The two patches in front of me in the patch I sent were indeed Salil 
Mehta's patches from rebase,

which were explained in the cover letter of my patch.


I apologize for any misunderstanding this may have caused.

Thanks,

Xianglai.


>>> Just include his S.O.B then, and drop the non-standard Co-developed-by.
>> Co-developed-by Tag has been added to ensure main authors of the patch
>> get highlighted clearly.
> I think I don't know the patch provenance at this point.
>
>>>
>>>
>>>> Signed-off-by: Salil Mehta <salil.mehta@huawei.com>
>>>> 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>
>>>
>>>
>>>> ---
>>>>   hw/acpi/generic_event_device.c | 10 ++++++++++
>>>>   1 file changed, 10 insertions(+)
>>>>
>>>> diff --git a/hw/acpi/generic_event_device.c
>>> b/hw/acpi/generic_event_device.c
>>>> index ad252e6a91..0266733a54 100644
>>>> --- a/hw/acpi/generic_event_device.c
>>>> +++ b/hw/acpi/generic_event_device.c
>>>> @@ -12,6 +12,7 @@
>>>>   #include "qemu/osdep.h"
>>>>   #include "qapi/error.h"
>>>>   #include "hw/acpi/acpi.h"
>>>> +#include "hw/acpi/cpu.h"
>>>>   #include "hw/acpi/generic_event_device.h"
>>>>   #include "hw/irq.h"
>>>>   #include "hw/mem/pc-dimm.h"
>>>> @@ -239,6 +240,8 @@ static void acpi_ged_device_plug_cb(HotplugHandler
>>> *hotplug_dev,
>>>>           } else {
>>>>               acpi_memory_plug_cb(hotplug_dev, &s->memhp_state, dev,
>>> errp);
>>>>           }
>>>> +    } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) {
>>>> +        acpi_cpu_plug_cb(hotplug_dev, &s->cpuhp_state, dev, errp);
>>>>       } else {
>>>>           error_setg(errp, "virt: device plug request for unsupported
>>> device"
>>>>                      " type: %s", object_get_typename(OBJECT(dev)));
>>>> @@ -253,6 +256,8 @@ static void acpi_ged_unplug_request_cb(HotplugHandler
>>> *hotplug_dev,
>>>>       if ((object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM) &&
>>>>                          !(object_dynamic_cast(OBJECT(dev),
>>> TYPE_NVDIMM)))) {
>>>>           acpi_memory_unplug_request_cb(hotplug_dev, &s->memhp_state, dev,
>>> errp);
>>>> +    } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) {
>>>> +        acpi_cpu_unplug_request_cb(hotplug_dev, &s->cpuhp_state, dev,
>>> errp);
>>>>       } else {
>>>>           error_setg(errp, "acpi: device unplug request for unsupported
>>> device"
>>>>                      " type: %s", object_get_typename(OBJECT(dev)));
>>>> @@ -266,6 +271,8 @@ static void acpi_ged_unplug_cb(HotplugHandler
>>> *hotplug_dev,
>>>>       if (object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM)) {
>>>>           acpi_memory_unplug_cb(&s->memhp_state, dev, errp);
>>>> +    } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) {
>>>> +        acpi_cpu_unplug_cb(&s->cpuhp_state, dev, errp);
>>>>       } else {
>>>>           error_setg(errp, "acpi: device unplug for unsupported device"
>>>>                      " type: %s", object_get_typename(OBJECT(dev)));
>>>> @@ -277,6 +284,7 @@ static void acpi_ged_ospm_status(AcpiDeviceIf *adev,
>>> ACPIOSTInfoList ***list)
>>>>       AcpiGedState *s = ACPI_GED(adev);
>>>>
>>>>       acpi_memory_ospm_status(&s->memhp_state, list);
>>>> +    acpi_cpu_ospm_status(&s->cpuhp_state, list);
>>>>   }
>>>>
>>>>   static void acpi_ged_send_event(AcpiDeviceIf *adev, AcpiEventStatusBits
>>> ev)
>>>> @@ -291,6 +299,8 @@ static void acpi_ged_send_event(AcpiDeviceIf *adev,
>>> AcpiEventStatusBits ev)
>>>>           sel = ACPI_GED_PWR_DOWN_EVT;
>>>>       } else if (ev & ACPI_NVDIMM_HOTPLUG_STATUS) {
>>>>           sel = ACPI_GED_NVDIMM_HOTPLUG_EVT;
>>>> +    } else if (ev & ACPI_CPU_HOTPLUG_STATUS) {
>>>> +        sel = ACPI_GED_CPU_HOTPLUG_EVT;
>>>>       } else {
>>>>           /* Unknown event. Return without generating interrupt. */
>>>>           warn_report("GED: Unsupported event %d. No irq injected", ev);
>>>> --
>>>> 2.34.1
diff mbox series

Patch

diff --git a/hw/acpi/generic_event_device.c b/hw/acpi/generic_event_device.c
index ad252e6a91..0266733a54 100644
--- a/hw/acpi/generic_event_device.c
+++ b/hw/acpi/generic_event_device.c
@@ -12,6 +12,7 @@ 
 #include "qemu/osdep.h"
 #include "qapi/error.h"
 #include "hw/acpi/acpi.h"
+#include "hw/acpi/cpu.h"
 #include "hw/acpi/generic_event_device.h"
 #include "hw/irq.h"
 #include "hw/mem/pc-dimm.h"
@@ -239,6 +240,8 @@  static void acpi_ged_device_plug_cb(HotplugHandler *hotplug_dev,
         } else {
             acpi_memory_plug_cb(hotplug_dev, &s->memhp_state, dev, errp);
         }
+    } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) {
+        acpi_cpu_plug_cb(hotplug_dev, &s->cpuhp_state, dev, errp);
     } else {
         error_setg(errp, "virt: device plug request for unsupported device"
                    " type: %s", object_get_typename(OBJECT(dev)));
@@ -253,6 +256,8 @@  static void acpi_ged_unplug_request_cb(HotplugHandler *hotplug_dev,
     if ((object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM) &&
                        !(object_dynamic_cast(OBJECT(dev), TYPE_NVDIMM)))) {
         acpi_memory_unplug_request_cb(hotplug_dev, &s->memhp_state, dev, errp);
+    } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) {
+        acpi_cpu_unplug_request_cb(hotplug_dev, &s->cpuhp_state, dev, errp);
     } else {
         error_setg(errp, "acpi: device unplug request for unsupported device"
                    " type: %s", object_get_typename(OBJECT(dev)));
@@ -266,6 +271,8 @@  static void acpi_ged_unplug_cb(HotplugHandler *hotplug_dev,
 
     if (object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM)) {
         acpi_memory_unplug_cb(&s->memhp_state, dev, errp);
+    } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) {
+        acpi_cpu_unplug_cb(&s->cpuhp_state, dev, errp);
     } else {
         error_setg(errp, "acpi: device unplug for unsupported device"
                    " type: %s", object_get_typename(OBJECT(dev)));
@@ -277,6 +284,7 @@  static void acpi_ged_ospm_status(AcpiDeviceIf *adev, ACPIOSTInfoList ***list)
     AcpiGedState *s = ACPI_GED(adev);
 
     acpi_memory_ospm_status(&s->memhp_state, list);
+    acpi_cpu_ospm_status(&s->cpuhp_state, list);
 }
 
 static void acpi_ged_send_event(AcpiDeviceIf *adev, AcpiEventStatusBits ev)
@@ -291,6 +299,8 @@  static void acpi_ged_send_event(AcpiDeviceIf *adev, AcpiEventStatusBits ev)
         sel = ACPI_GED_PWR_DOWN_EVT;
     } else if (ev & ACPI_NVDIMM_HOTPLUG_STATUS) {
         sel = ACPI_GED_NVDIMM_HOTPLUG_EVT;
+    } else if (ev & ACPI_CPU_HOTPLUG_STATUS) {
+        sel = ACPI_GED_CPU_HOTPLUG_EVT;
     } else {
         /* Unknown event. Return without generating interrupt. */
         warn_report("GED: Unsupported event %d. No irq injected", ev);