hw/i386/acpi: Use TYPE_PXB_BUS property acpi_uid for DSDT

Rather than relying on PCI internals, use the new acpi_property
to obtain the ACPI _UID values.  These are still the same
as the PCI Bus numbers so no functional change.

Suggested-by: Igor Mammedov <imammedo@redhat.com>
Tested-by: "Huang, Ying" <ying.huang@intel.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Message-Id: <20240916171017.1841767-9-Jonathan.Cameron@huawei.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
Jonathan Cameron 2024-09-16 18:10:13 +01:00 committed by Michael S. Tsirkin
parent 97b9cb066e
commit dc907b5cac

View File

@ -1475,6 +1475,7 @@ build_dsdt(GArray *table_data, BIOSLinker *linker,
QLIST_FOREACH(bus, &bus->child, sibling) { QLIST_FOREACH(bus, &bus->child, sibling) {
uint8_t bus_num = pci_bus_num(bus); uint8_t bus_num = pci_bus_num(bus);
uint8_t numa_node = pci_bus_numa_node(bus); uint8_t numa_node = pci_bus_numa_node(bus);
uint32_t uid;
/* look only for expander root buses */ /* look only for expander root buses */
if (!pci_bus_is_root(bus)) { if (!pci_bus_is_root(bus)) {
@ -1485,6 +1486,8 @@ build_dsdt(GArray *table_data, BIOSLinker *linker,
root_bus_limit = bus_num - 1; root_bus_limit = bus_num - 1;
} }
uid = object_property_get_uint(OBJECT(bus), "acpi_uid",
&error_fatal);
scope = aml_scope("\\_SB"); scope = aml_scope("\\_SB");
if (pci_bus_is_cxl(bus)) { if (pci_bus_is_cxl(bus)) {
@ -1492,7 +1495,7 @@ build_dsdt(GArray *table_data, BIOSLinker *linker,
} else { } else {
dev = aml_device("PC%.02X", bus_num); dev = aml_device("PC%.02X", bus_num);
} }
aml_append(dev, aml_name_decl("_UID", aml_int(bus_num))); aml_append(dev, aml_name_decl("_UID", aml_int(uid)));
aml_append(dev, aml_name_decl("_BBN", aml_int(bus_num))); aml_append(dev, aml_name_decl("_BBN", aml_int(bus_num)));
if (pci_bus_is_cxl(bus)) { if (pci_bus_is_cxl(bus)) {
struct Aml *aml_pkg = aml_package(2); struct Aml *aml_pkg = aml_package(2);