[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 02/10] hw/riscv/virt: Add a switch to enable/disable ACPI
From: |
Bin Meng |
Subject: |
Re: [PATCH 02/10] hw/riscv/virt: Add a switch to enable/disable ACPI |
Date: |
Mon, 6 Feb 2023 17:43:13 +0800 |
On Thu, Feb 2, 2023 at 12:54 PM Sunil V L <sunilvl@ventanamicro.com> wrote:
>
> ACPI is optional. So, add a switch to toggle.
>
> Signed-off-by: Sunil V L <sunilvl@ventanamicro.com>
> ---
> hw/riscv/virt.c | 38 ++++++++++++++++++++++++++++++++++++++
> include/hw/riscv/virt.h | 2 ++
> 2 files changed, 40 insertions(+)
>
> diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c
> index 7ad9fda20c..84962962ff 100644
> --- a/hw/riscv/virt.c
> +++ b/hw/riscv/virt.c
> @@ -50,6 +50,7 @@
> #include "hw/pci-host/gpex.h"
> #include "hw/display/ramfb.h"
> #include "hw/acpi/aml-build.h"
> +#include "qapi/qapi-visit-common.h"
>
> /*
> * The virt machine physical address space used by some of the devices
> @@ -1525,6 +1526,10 @@ static void virt_machine_init(MachineState *machine)
>
> static void virt_machine_instance_init(Object *obj)
> {
> + MachineState *ms = MACHINE(obj);
Drop this
> + RISCVVirtState *s = RISCV_VIRT_MACHINE(ms);
> +
> + s->acpi = ON_OFF_AUTO_OFF;
Is this needed? I believe the purpose of an auto/on/off property is to
have an "auto" value, which is ON_OFF_AUTO_AUTO.
> }
>
> static char *virt_get_aia_guests(Object *obj, Error **errp)
> @@ -1601,6 +1606,34 @@ static void virt_set_aclint(Object *obj, bool value,
> Error **errp)
> s->have_aclint = value;
> }
>
> +bool virt_is_acpi_enabled(RISCVVirtState *s)
> +{
> + if (s->acpi == ON_OFF_AUTO_OFF) {
> + return false;
> + }
> + return true;
> +}
> +
> +static void virt_get_acpi(Object *obj, Visitor *v, const char *name,
> + void *opaque, Error **errp)
> +{
> + MachineState *ms = MACHINE(obj);
ditto
> + RISCVVirtState *s = RISCV_VIRT_MACHINE(ms);
> +
> + OnOffAuto acpi = s->acpi;
> +
> + visit_type_OnOffAuto(v, name, &acpi, errp);
> +}
> +
> +static void virt_set_acpi(Object *obj, Visitor *v, const char *name,
> + void *opaque, Error **errp)
> +{
> + MachineState *ms = MACHINE(obj);
ditto
> + RISCVVirtState *s = RISCV_VIRT_MACHINE(ms);
> +
> + visit_type_OnOffAuto(v, name, &s->acpi, errp);
> +}
> +
> static HotplugHandler *virt_machine_get_hotplug_handler(MachineState
> *machine,
> DeviceState *dev)
> {
> @@ -1672,6 +1705,11 @@ static void virt_machine_class_init(ObjectClass *oc,
> void *data)
> sprintf(str, "Set number of guest MMIO pages for AIA IMSIC. Valid value "
> "should be between 0 and %d.", VIRT_IRQCHIP_MAX_GUESTS);
> object_class_property_set_description(oc, "aia-guests", str);
> + object_class_property_add(oc, "acpi", "OnOffAuto",
> + virt_get_acpi, virt_set_acpi,
> + NULL, NULL);
I am not sure about "OnOffAuto" vs. "bool" type. It seems the only
difference is that with "OnOffAuto" type we may silently change the
interpretation of "auto" value across different QEMU versions?
> + object_class_property_set_description(oc, "acpi",
> + "Enable ACPI");
> }
>
> static const TypeInfo virt_machine_typeinfo = {
> diff --git a/include/hw/riscv/virt.h b/include/hw/riscv/virt.h
> index 6c7885bf89..62efebaa32 100644
> --- a/include/hw/riscv/virt.h
> +++ b/include/hw/riscv/virt.h
> @@ -58,6 +58,7 @@ struct RISCVVirtState {
> int aia_guests;
> char *oem_id;
> char *oem_table_id;
> + OnOffAuto acpi;
> };
>
> enum {
> @@ -123,4 +124,5 @@ enum {
> #define FDT_APLIC_INT_MAP_WIDTH (FDT_PCI_ADDR_CELLS + FDT_PCI_INT_CELLS + \
> 1 + FDT_APLIC_INT_CELLS)
>
> +bool virt_is_acpi_enabled(RISCVVirtState *s);
> #endif
> --
Regards,
Bin
- [PATCH 00/10] Add basic ACPI support for risc-v virt, Sunil V L, 2023/02/01
- [PATCH 03/10] hw/riscv/virt: Add memmap pointer to RiscVVirtState, Sunil V L, 2023/02/01
- [PATCH 01/10] hw/riscv/virt: Add OEM_ID and OEM_TABLE_ID fields, Sunil V L, 2023/02/01
- [PATCH 02/10] hw/riscv/virt: Add a switch to enable/disable ACPI, Sunil V L, 2023/02/01
- Re: [PATCH 02/10] hw/riscv/virt: Add a switch to enable/disable ACPI,
Bin Meng <=
- Re: [PATCH 02/10] hw/riscv/virt: Add a switch to enable/disable ACPI, Andrea Bolognani, 2023/02/06
- Re: [PATCH 02/10] hw/riscv/virt: Add a switch to enable/disable ACPI, Philippe Mathieu-Daudé, 2023/02/06
- Re: [PATCH 02/10] hw/riscv/virt: Add a switch to enable/disable ACPI, Andrew Jones, 2023/02/06
- Re: [PATCH 02/10] hw/riscv/virt: Add a switch to enable/disable ACPI, Sunil V L, 2023/02/06
- Re: [PATCH 02/10] hw/riscv/virt: Add a switch to enable/disable ACPI, Bin Meng, 2023/02/06
- Re: [PATCH 02/10] hw/riscv/virt: Add a switch to enable/disable ACPI, Andrew Jones, 2023/02/07
- Re: [PATCH 02/10] hw/riscv/virt: Add a switch to enable/disable ACPI, Sunil V L, 2023/02/07
- Re: [PATCH 02/10] hw/riscv/virt: Add a switch to enable/disable ACPI, Gerd Hoffmann, 2023/02/06
- Re: [PATCH 02/10] hw/riscv/virt: Add a switch to enable/disable ACPI, Philippe Mathieu-Daudé, 2023/02/07
- Re: [PATCH 02/10] hw/riscv/virt: Add a switch to enable/disable ACPI, Sunil V L, 2023/02/07