From: Eric Auger <eric.auger@redhat.com>
To: eric.auger.pro@gmail.com, eric.auger@redhat.com,
qemu-devel@nongnu.org, qemu-arm@nongnu.org,
peter.maydell@linaro.org, imammedo@redhat.com,
anisinha@redhat.com, mst@redhat.com, shannon.zhaosl@gmail.com
Cc: pbonzini@redhat.com, Jonathan.Cameron@huawei.com
Subject: [RFC 05/24] hw/arm/virt: Introduce machine state acpi pcihp flags and props
Date: Mon, 28 Apr 2025 12:25:31 +0200 [thread overview]
Message-ID: <20250428102628.378046-6-eric.auger@redhat.com> (raw)
In-Reply-To: <20250428102628.378046-1-eric.auger@redhat.com>
acpi_pcihp VirtMachineClass state flag will allow
to opt in for acpi pci hotplug. This is guarded by a
class no_acpi_pcihp flag to manage compats (<= 10.0
machine types will not support ACPI PCI hotplug).
Machine state acpi_pcihp flag msu be set before the creation
of the GED device which will use it.
Currently the ACPI PCI HP is turned off by default. This will
change later on for 10.1 machine type.
We also introduce properties to allow disabling it.
Signed-off-by: Eric Auger <eric.auger@redhat.com>
---
include/hw/arm/virt.h | 2 ++
hw/arm/virt.c | 27 +++++++++++++++++++++++++++
2 files changed, 29 insertions(+)
diff --git a/include/hw/arm/virt.h b/include/hw/arm/virt.h
index c8e94e6aed..1e9d002880 100644
--- a/include/hw/arm/virt.h
+++ b/include/hw/arm/virt.h
@@ -135,6 +135,7 @@ struct VirtMachineClass {
bool no_tcg_lpa2;
bool no_ns_el2_virt_timer_irq;
bool no_nested_smmu;
+ bool no_acpi_pcihp;
};
struct VirtMachineState {
@@ -156,6 +157,7 @@ struct VirtMachineState {
bool mte;
bool dtb_randomness;
bool second_ns_uart_present;
+ bool acpi_pcihp;
OnOffAuto acpi;
VirtGICType gic_version;
VirtIOMMUType iommu;
diff --git a/hw/arm/virt.c b/hw/arm/virt.c
index 3e72adaa91..1601750913 100644
--- a/hw/arm/virt.c
+++ b/hw/arm/virt.c
@@ -2414,8 +2414,10 @@ static void machvirt_init(MachineState *machine)
create_pcie(vms);
if (has_ged && aarch64 && firmware_loaded && virt_is_acpi_enabled(vms)) {
+ vms->acpi_pcihp &= !vmc->no_acpi_pcihp;
vms->acpi_dev = create_acpi_ged(vms);
} else {
+ vms->acpi_pcihp = false;
create_gpio_devices(vms, VIRT_GPIO, sysmem);
}
@@ -2610,6 +2612,20 @@ static void virt_set_its(Object *obj, bool value, Error **errp)
vms->its = value;
}
+static bool virt_get_acpi_pcihp(Object *obj, Error **errp)
+{
+ VirtMachineState *vms = VIRT_MACHINE(obj);
+
+ return vms->acpi_pcihp;
+}
+
+static void virt_set_acpi_pcihp(Object *obj, bool value, Error **errp)
+{
+ VirtMachineState *vms = VIRT_MACHINE(obj);
+
+ vms->acpi_pcihp = value;
+}
+
static bool virt_get_dtb_randomness(Object *obj, Error **errp)
{
VirtMachineState *vms = VIRT_MACHINE(obj);
@@ -3327,6 +3343,10 @@ static void virt_machine_class_init(ObjectClass *oc, void *data)
"in ACPI table header."
"The string may be up to 8 bytes in size");
+ object_class_property_add_bool(oc, "acpi-pcihp",
+ virt_get_acpi_pcihp, virt_set_acpi_pcihp);
+ object_class_property_set_description(oc, "acpi-pcihp",
+ "Force acpi pci hotplug");
}
static void virt_instance_init(Object *obj)
@@ -3365,6 +3385,9 @@ static void virt_instance_init(Object *obj)
}
}
+ /* default disallows ACPI PCI hotplug */
+ vms->acpi_pcihp = false;
+
/* Default disallows iommu instantiation */
vms->iommu = VIRT_IOMMU_NONE;
@@ -3415,8 +3438,12 @@ DEFINE_VIRT_MACHINE_AS_LATEST(10, 1)
static void virt_machine_10_0_options(MachineClass *mc)
{
+ VirtMachineClass *vmc = VIRT_MACHINE_CLASS(OBJECT_CLASS(mc));
+
virt_machine_10_1_options(mc);
compat_props_add(mc->compat_props, hw_compat_10_0, hw_compat_10_0_len);
+ /* 10.0 and earlier do not support ACPI PCI hotplug */
+ vmc->no_acpi_pcihp = true;
}
DEFINE_VIRT_MACHINE(10, 0)
--
2.49.0
next prev parent reply other threads:[~2025-04-28 10:27 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-28 10:25 [RFC 00/24] APCI PCI Hotplug support on ARM Eric Auger
2025-04-28 10:25 ` [RFC 01/24] hw/pci/pcie_port: Fix pcie_slot_is_hotpluggbale_bus typo Eric Auger
2025-05-06 0:11 ` Gustavo Romero
2025-04-28 10:25 ` [RFC 02/24] hw/acpi/ged: Fix wrong identation Eric Auger
2025-05-06 0:11 ` Gustavo Romero
2025-04-28 10:25 ` [RFC 03/24] hw/i386/acpi-build: Fix build_append_notfication_callback typo Eric Auger
2025-05-06 0:11 ` Gustavo Romero
2025-04-28 10:25 ` [RFC 04/24] hw/i386/acpi-build: Make aml_pci_device_dsm() static Eric Auger
2025-04-28 10:25 ` Eric Auger [this message]
2025-05-06 0:12 ` [RFC 05/24] hw/arm/virt: Introduce machine state acpi pcihp flags and props Gustavo Romero
2025-05-06 8:42 ` Eric Auger
2025-04-28 10:25 ` [RFC 06/24] hw/acpi: Rename and move build_x86_acpi_pci_hotplug to pcihp Eric Auger
2025-05-06 0:12 ` Gustavo Romero
2025-05-06 8:42 ` Eric Auger
2025-04-28 10:25 ` [RFC 07/24] hw/pci-host/gpex-acpi: Add native_pci_hotplug arg to acpi_dsdt_add_pci_osc Eric Auger
2025-05-06 0:13 ` Gustavo Romero
2025-05-06 8:42 ` Eric Auger
2025-04-28 10:25 ` [RFC 08/24] hw/pci-host/gpex-acpi: Split host bridge OSC and DSM generation Eric Auger
2025-05-06 0:13 ` Gustavo Romero
2025-04-28 10:25 ` [RFC 09/24] hw/pci-host/gpex-acpi: Propagate hotplug type info from virt machine downto gpex Eric Auger
2025-05-06 0:13 ` Gustavo Romero
2025-04-28 10:25 ` [RFC 10/24] hw/i386/acpi-build: Turn build_q35_osc_method into a generic method Eric Auger
2025-04-28 10:25 ` [RFC 11/24] hw/pci-host/gpex-acpi: Use build_pci_host_bridge_osc_method Eric Auger
2025-04-28 10:25 ` [RFC 12/24] hw/i386/acpi-build: Introduce build_append_pcihp_resources() helper Eric Auger
2025-04-28 10:25 ` [RFC 13/24] hw/acpi/pcihp: Add an AmlRegionSpace arg to build_acpi_pci_hotplug Eric Auger
2025-04-28 10:25 ` [RFC 14/24] hw/i386/acpi-build: Move build_append_notification_callback to pcihp Eric Auger
2025-04-28 10:25 ` [RFC 15/24] hw/i386/acpi-build: Move remaining pcihp generic functions " Eric Auger
2025-04-28 10:25 ` [RFC 16/24] hw/i386/acpi-build: Introduce and use acpi_get_pci_host Eric Auger
2025-04-28 10:25 ` [RFC 17/24] hw/arm/virt-acpi-build: Add DSDT additions for PCI hotplug Eric Auger
2025-04-28 10:25 ` [RFC 18/24] hw/acpi/ged: Prepare the device to react to PCI hotplug events Eric Auger
2025-05-14 16:20 ` Gustavo Romero
2025-05-14 16:46 ` Eric Auger
2025-04-28 10:25 ` [RFC 19/24] hw/acpi/ged: Call pcihp plug callbacks in hotplug handler implementation Eric Auger
2025-04-28 10:25 ` [RFC 20/24] hw/acpi/ged: Support migration of AcpiPciHpState Eric Auger
2025-04-28 10:25 ` [RFC 21/24] hw/core/sysbus: Introduce sysbus_mmio_map_name() helper Eric Auger
2025-04-28 10:25 ` [RFC 22/24] hw/arm/virt: Let virt support pci hotplug/unplug GED event Eric Auger
2025-04-28 10:25 ` [RFC 23/24] hw/arm/virt: Plug pcihp hotplug/hotunplug callbacks Eric Auger
2025-04-28 10:25 ` [RFC 24/24] hw/arm/virt: Use ACPI PCI hotplug by default Eric Auger
2025-05-05 13:26 ` [RFC 00/24] APCI PCI Hotplug support on ARM Gustavo Romero
2025-05-05 14:23 ` Eric Auger
2025-05-06 15:58 ` Eric Auger
2025-05-06 16:08 ` Eric Auger
2025-05-07 0:51 ` Gustavo Romero
2025-05-07 1:13 ` Gustavo Romero
2025-05-14 16:27 ` Gustavo Romero
2025-05-14 16:51 ` Eric Auger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250428102628.378046-6-eric.auger@redhat.com \
--to=eric.auger@redhat.com \
--cc=Jonathan.Cameron@huawei.com \
--cc=anisinha@redhat.com \
--cc=eric.auger.pro@gmail.com \
--cc=imammedo@redhat.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=shannon.zhaosl@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.