diff mbox series

[RFC,V2,10/37] arm/acpi: Enable ACPI support for vcpu hotplug

Message ID 20230926100436.28284-11-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 is required to interface QEMU with the guest. Roughly falls into below
cases,

1. Convey the possible vcpus config at the machine init time to the guest
   using various DSDT tables like MADT etc.
2. Convey vcpu hotplug events to guest(using GED)
3. Assist in evaluation of various ACPI methods(like _EVT, _STA, _OST, _EJ0,
   _MAT etc.)
4. Provides ACPI cpu hotplug state and 12 Byte memory mapped cpu hotplug
   control register interface to the OSPM/guest corresponding to each possible
   vcpu. The register interface consists of various R/W fields and their
   handling operations. These are called when ever register fields or memory
   regions are accessed(i.e. read or written) by OSPM when ever it evaluates
   various ACPI methods.

Note: lot of this framework code is inherited from the changes already done for
      x86 but still some minor changes are required to make it compatible with
      ARM64.)

This patch enables the ACPI support for virtual cpu hotplug. ACPI changes
required will follow in subsequent patches.

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/arm/Kconfig | 1 +
 1 file changed, 1 insertion(+)

Comments

Gavin Shan Sept. 28, 2023, 12:25 a.m. UTC | #1
Hi Salil,

On 9/26/23 20:04, Salil Mehta wrote:
> ACPI is required to interface QEMU with the guest. Roughly falls into below
> cases,
> 
> 1. Convey the possible vcpus config at the machine init time to the guest
>     using various DSDT tables like MADT etc.
> 2. Convey vcpu hotplug events to guest(using GED)
> 3. Assist in evaluation of various ACPI methods(like _EVT, _STA, _OST, _EJ0,
>     _MAT etc.)
> 4. Provides ACPI cpu hotplug state and 12 Byte memory mapped cpu hotplug
>     control register interface to the OSPM/guest corresponding to each possible
>     vcpu. The register interface consists of various R/W fields and their
>     handling operations. These are called when ever register fields or memory
>     regions are accessed(i.e. read or written) by OSPM when ever it evaluates
>     various ACPI methods.
> 
> Note: lot of this framework code is inherited from the changes already done for
>        x86 but still some minor changes are required to make it compatible with
>        ARM64.)
> 
> This patch enables the ACPI support for virtual cpu hotplug. ACPI changes
> required will follow in subsequent patches.
> 
> 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/arm/Kconfig | 1 +
>   1 file changed, 1 insertion(+)
> 

I assume this patch needs to be moved around to last one, until vCPU hotplug
is supported in the code base.

> diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig
> index 7e68348440..dae06158cd 100644
> --- a/hw/arm/Kconfig
> +++ b/hw/arm/Kconfig
> @@ -29,6 +29,7 @@ config ARM_VIRT
>       select ACPI_HW_REDUCED
>       select ACPI_APEI
>       select ACPI_VIOT
> +    select ACPI_CPU_HOTPLUG
>       select VIRTIO_MEM_SUPPORTED
>       select ACPI_CXL
>       select ACPI_HMAT

Thanks,
Gavin
Salil Mehta Oct. 16, 2023, 9:23 p.m. UTC | #2
Hi Gavin,

> From: Gavin Shan <gshan@redhat.com>
> Sent: Thursday, September 28, 2023 1:26 AM
> To: Salil Mehta <salil.mehta@huawei.com>; qemu-devel@nongnu.org; qemu-arm@nongnu.org
> Cc: 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; mst@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 10/37] arm/acpi: Enable ACPI support for vcpu
> hotplug
> 
> Hi Salil,
> 
> On 9/26/23 20:04, Salil Mehta wrote:
> > ACPI is required to interface QEMU with the guest. Roughly falls into below
> > cases,
> >
> > 1. Convey the possible vcpus config at the machine init time to the guest
> >     using various DSDT tables like MADT etc.
> > 2. Convey vcpu hotplug events to guest(using GED)
> > 3. Assist in evaluation of various ACPI methods(like _EVT, _STA, _OST, _EJ0,
> >     _MAT etc.)
> > 4. Provides ACPI cpu hotplug state and 12 Byte memory mapped cpu hotplug
> >     control register interface to the OSPM/guest corresponding to each possible
> >     vcpu. The register interface consists of various R/W fields and their
> >     handling operations. These are called whenever register fields or memory
> >     regions are accessed(i.e. read or written) by OSPM when ever it evaluates
> >     various ACPI methods.
> >
> > Note: lot of this framework code is inherited from the changes already done for
> >        x86 but still some minor changes are required to make it compatible with
> >        ARM64.)
> >
> > This patch enables the ACPI support for virtual cpu hotplug. ACPI changes
> > required will follow in subsequent patches.
> >
> > 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/arm/Kconfig | 1 +
> >   1 file changed, 1 insertion(+)
> >
> 
> I assume this patch needs to be moved around to last one, until vCPU hotplug
> is supported in the code base.

In that case subsequent patches will not get compiled till this
switch is not enabled. git-bisect wont work correctly in case of
compilation failure is observed in previous patches when this
switch gets compiled eventually.

With the current order every subsequent patch is getting compiled.
And in fact in this case you can even bring up the system. Later
was not a requirement though.

Also, this patch cannot be beyond the patch where functions defined
in the patches subsequent to this will get called. For example,
build_cpus_aml() i.e. [Patch RFC V2 17/37]

Thanks
Salil.
diff mbox series

Patch

diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig
index 7e68348440..dae06158cd 100644
--- a/hw/arm/Kconfig
+++ b/hw/arm/Kconfig
@@ -29,6 +29,7 @@  config ARM_VIRT
     select ACPI_HW_REDUCED
     select ACPI_APEI
     select ACPI_VIOT
+    select ACPI_CPU_HOTPLUG
     select VIRTIO_MEM_SUPPORTED
     select ACPI_CXL
     select ACPI_HMAT