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,
Jonathan.Cameron@huawei.com, gustavo.romero@linaro.org,
anisinha@redhat.com, mst@redhat.com, shannon.zhaosl@gmail.com
Cc: pbonzini@redhat.com, philmd@linaro.org, alex.bennee@linaro.org
Subject: [PATCH v7 05/36] hw/pci-host/gpex-acpi: Split host bridge OSC and DSM generation
Date: Mon, 14 Jul 2025 10:04:49 +0200 [thread overview]
Message-ID: <20250714080639.2525563-6-eric.auger@redhat.com> (raw)
In-Reply-To: <20250714080639.2525563-1-eric.auger@redhat.com>
acpi_dsdt_add_pci_osc() name is confusing as it gives the impression
it appends the _OSC method but in fact it also appends the _DSM method
for the host bridge. Let's split the function into two separate ones
and let them return the method Aml pointer instead. This matches the
way it is done on x86 (build_q35_osc_method). In a subsequent patch
we will replace the gpex method by the q35 implementation that will
become shared between ARM and x86.
acpi_dsdt_add_host_bridge_methods is a new top helper that generates
both the _OSC and _DSM methods.
We take the opportunity to move SUPP and CTRL in the _osc method
that use them.
Signed-off-by: Eric Auger <eric.auger@redhat.com>
Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
---
v2 -> v3:
- moved
aml_append(dev, aml_name_decl("SUPP", aml_int(0)));
aml_append(dev, aml_name_decl("CTRL", aml_int(0)));
into the _osc function. (Jonathan)
hence discarded Gustavo's and Igor's R-bs
---
hw/pci-host/gpex-acpi.c | 32 +++++++++++++++++++++-----------
1 file changed, 21 insertions(+), 11 deletions(-)
diff --git a/hw/pci-host/gpex-acpi.c b/hw/pci-host/gpex-acpi.c
index f34b7cf25e..80fc2bf032 100644
--- a/hw/pci-host/gpex-acpi.c
+++ b/hw/pci-host/gpex-acpi.c
@@ -50,14 +50,12 @@ static void acpi_dsdt_add_pci_route_table(Aml *dev, uint32_t irq,
}
}
-static void acpi_dsdt_add_pci_osc(Aml *dev, bool enable_native_pcie_hotplug)
+static Aml *build_host_bridge_osc(bool enable_native_pcie_hotplug)
{
- Aml *method, *UUID, *ifctx, *ifctx1, *elsectx, *buf;
-
- /* Declare an _OSC (OS Control Handoff) method */
- aml_append(dev, aml_name_decl("SUPP", aml_int(0)));
- aml_append(dev, aml_name_decl("CTRL", aml_int(0)));
+ Aml *method, *UUID, *ifctx, *ifctx1, *elsectx;
method = aml_method("_OSC", 4, AML_NOTSERIALIZED);
+ aml_append(method, aml_name_decl("SUPP", aml_int(0)));
+ aml_append(method, aml_name_decl("CTRL", aml_int(0)));
aml_append(method,
aml_create_dword_field(aml_arg(3), aml_int(0), "CDW1"));
@@ -103,9 +101,13 @@ static void acpi_dsdt_add_pci_osc(Aml *dev, bool enable_native_pcie_hotplug)
aml_name("CDW1")));
aml_append(elsectx, aml_return(aml_arg(3)));
aml_append(method, elsectx);
- aml_append(dev, method);
+ return method;
+}
- method = aml_method("_DSM", 4, AML_NOTSERIALIZED);
+static Aml *build_host_bridge_dsm(void)
+{
+ Aml *method = aml_method("_DSM", 4, AML_NOTSERIALIZED);
+ Aml *UUID, *ifctx, *ifctx1, *buf;
/* PCI Firmware Specification 3.0
* 4.6.1. _DSM for PCI Express Slot Information
@@ -124,7 +126,15 @@ static void acpi_dsdt_add_pci_osc(Aml *dev, bool enable_native_pcie_hotplug)
byte_list[0] = 0;
buf = aml_buffer(1, byte_list);
aml_append(method, aml_return(buf));
- aml_append(dev, method);
+ return method;
+}
+
+static void acpi_dsdt_add_host_bridge_methods(Aml *dev,
+ bool enable_native_pcie_hotplug)
+{
+ /* Declare an _OSC (OS Control Handoff) method */
+ aml_append(dev, build_host_bridge_osc(enable_native_pcie_hotplug));
+ aml_append(dev, build_host_bridge_dsm());
}
void acpi_dsdt_add_gpex(Aml *scope, struct GPEXConfig *cfg)
@@ -193,7 +203,7 @@ void acpi_dsdt_add_gpex(Aml *scope, struct GPEXConfig *cfg)
if (is_cxl) {
build_cxl_osc_method(dev);
} else {
- acpi_dsdt_add_pci_osc(dev, true);
+ acpi_dsdt_add_host_bridge_methods(dev, true);
}
aml_append(scope, dev);
@@ -268,7 +278,7 @@ void acpi_dsdt_add_gpex(Aml *scope, struct GPEXConfig *cfg)
}
aml_append(dev, aml_name_decl("_CRS", rbuf));
- acpi_dsdt_add_pci_osc(dev, true);
+ acpi_dsdt_add_host_bridge_methods(dev, true);
Aml *dev_res0 = aml_device("%s", "RES0");
aml_append(dev_res0, aml_name_decl("_HID", aml_string("PNP0C02")));
--
2.49.0
next prev parent reply other threads:[~2025-07-14 8:25 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-14 8:04 [PATCH v7 00/36] ACPI PCI Hotplug support on ARM Eric Auger
2025-07-14 8:04 ` [PATCH v7 01/36] hw/i386/acpi-build: Make aml_pci_device_dsm() static Eric Auger
2025-07-14 8:04 ` [PATCH v7 02/36] hw/acpi: Rename and move build_x86_acpi_pci_hotplug to pcihp Eric Auger
2025-07-14 8:04 ` [PATCH v7 03/36] hw/pci-host/gpex-acpi: Add native_pci_hotplug arg to acpi_dsdt_add_pci_osc Eric Auger
2025-07-14 8:04 ` [PATCH v7 04/36] tests/qtest/bios-tables-test: Prepare for changes in the DSDT table Eric Auger
2025-07-14 8:04 ` Eric Auger [this message]
2025-07-14 8:04 ` [PATCH v7 06/36] hw/acpi/ged: Add a acpi-pci-hotplug-with-bridge-support property Eric Auger
2025-07-14 8:04 ` [PATCH v7 07/36] hw/pci-host/gpex-acpi: Use GED acpi pcihp property Eric Auger
2025-07-14 8:04 ` [PATCH v7 08/36] hw/i386/acpi-build: Turn build_q35_osc_method into a generic method Eric Auger
2025-07-14 8:04 ` [PATCH v7 09/36] hw/pci-host/gpex-acpi: Use build_pci_host_bridge_osc_method Eric Auger
2025-07-27 11:48 ` Michael Tokarev
2025-07-28 9:07 ` Michael Tokarev
2025-07-28 14:56 ` Eric Auger
2025-07-28 15:17 ` Michael Tokarev
2025-07-28 15:29 ` Michael Tokarev
2025-07-28 15:34 ` Eric Auger
2025-08-01 12:29 ` Michael S. Tsirkin
2025-08-03 16:49 ` Eric Auger
2025-08-04 6:29 ` Michael Tokarev
2025-08-04 15:27 ` Eric Auger
2025-07-14 8:04 ` [PATCH v7 10/36] tests/qtest/bios-tables-test: Update DSDT blobs after GPEX _OSC change Eric Auger
2025-07-14 8:04 ` [PATCH v7 11/36] hw/i386/acpi-build: Introduce build_append_pcihp_resources() helper Eric Auger
2025-07-14 8:04 ` [PATCH v7 12/36] hw/acpi/pcihp: Add an AmlRegionSpace arg to build_acpi_pci_hotplug Eric Auger
2025-07-14 8:04 ` [PATCH v7 13/36] hw/i386/acpi-build: Move build_append_notification_callback to pcihp Eric Auger
2025-07-14 8:04 ` [PATCH v7 14/36] hw/i386/acpi-build: Move build_append_pci_bus_devices/pcihp_slots " Eric Auger
2025-07-14 8:04 ` [PATCH v7 15/36] hw/i386/acpi-build: Use AcpiPciHpState::root in acpi_set_pci_info Eric Auger
2025-07-14 8:05 ` [PATCH v7 16/36] hw/i386/acpi-build: Move aml_pci_edsm to a generic place Eric Auger
2025-07-14 8:05 ` [PATCH v7 17/36] qtest/bios-tables-test: Prepare for fixing the aarch64 viot test Eric Auger
2025-07-14 8:05 ` [PATCH v7 18/36] qtest/bios-tables-test: Add a variant to " Eric Auger
2025-07-14 8:05 ` [PATCH v7 19/36] qtest/bios-tables-test: Generate DSDT.viot Eric Auger
2025-07-14 8:05 ` [PATCH v7 20/36] tests/qtest/bios-tables-test: Prepare for changes in the arm virt DSDT table Eric Auger
2025-07-14 8:05 ` [PATCH v7 21/36] hw/arm/virt-acpi-build: Let non hotplug ports support static acpi-index Eric Auger
2025-07-14 8:05 ` [PATCH v7 22/36] tests/qtest/bios-tables-test: Update ARM DSDT reference blobs Eric Auger
2025-07-14 8:05 ` [PATCH v7 23/36] hw/arm/virt-acpi-build: Modify the DSDT ACPI table to enable ACPI PCI hotplug Eric Auger
2025-07-14 8:05 ` [PATCH v7 24/36] hw/acpi/ged: Add a bus link property Eric Auger
2025-07-14 8:05 ` [PATCH v7 25/36] hw/arm/virt: Pass the bus on the ged creation Eric Auger
2025-07-14 8:05 ` [PATCH v7 26/36] hw/acpi/ged: Call pcihp plug callbacks in hotplug handler implementation Eric Auger
2025-07-14 8:05 ` [PATCH v7 27/36] hw/acpi/pcihp: Remove root arg in acpi_pcihp_init Eric Auger
2025-07-14 8:05 ` [PATCH v7 28/36] hw/acpi/ged: Prepare the device to react to PCI hotplug events Eric Auger
2025-07-14 8:05 ` [PATCH v7 29/36] hw/acpi/ged: Support migration of AcpiPciHpState Eric Auger
2025-07-14 8:05 ` [PATCH v7 30/36] hw/core/sysbus: Introduce sysbus_mmio_map_name() helper Eric Auger
2025-07-14 8:05 ` [PATCH v7 31/36] hw/arm/virt: Minor code reshuffling in create_acpi_ged Eric Auger
2025-07-14 8:05 ` [PATCH v7 32/36] hw/arm/virt: Let virt support pci hotplug/unplug GED event Eric Auger
2025-07-14 8:05 ` [PATCH v7 33/36] tests/qtest/bios-tables-test: Prepare for addition of acpi pci hp tests Eric Auger
2025-07-14 8:05 ` [PATCH v7 34/36] tests/qtest/bios-tables-test: Add aarch64 ACPI PCI hotplug test Eric Auger
2025-07-14 8:05 ` [PATCH v7 35/36] qtest/bios-tables-test: Generate reference blob for DSDT.hpoffacpiindex Eric Auger
2025-07-14 8:05 ` [PATCH v7 36/36] qtest/bios-tables-test: Generate reference blob for DSDT.acpipcihp Eric Auger
2025-07-14 19:40 ` [PATCH v7 00/36] ACPI PCI Hotplug support on ARM Jonathan Cameron via
2025-07-14 19:46 ` Eric Auger
2025-07-14 19:51 ` Eric Auger
2025-07-14 23:56 ` Michael S. Tsirkin
2025-07-15 8:53 ` 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=20250714080639.2525563-6-eric.auger@redhat.com \
--to=eric.auger@redhat.com \
--cc=Jonathan.Cameron@huawei.com \
--cc=alex.bennee@linaro.org \
--cc=anisinha@redhat.com \
--cc=eric.auger.pro@gmail.com \
--cc=gustavo.romero@linaro.org \
--cc=imammedo@redhat.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=philmd@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).