Message ID | 20240712110837.1439736-10-Jonathan.Cameron@huawei.com |
---|---|
State | Superseded |
Headers | show |
Series | acpi: NUMA nodes for CXL HB as GP + complex NUMA test | expand |
On Fri, 12 Jul 2024 12:08:13 +0100 Jonathan Cameron <Jonathan.Cameron@huawei.com> wrote: > Reduce the direct use of PCI internals inside ACPI table creation. > > Suggested-by: Igor Mammedov <imammedo@redhat.com> > Tested-by: "Huang, Ying" <ying.huang@intel.com> > Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Reviewed-by: Igor Mammedov <imammedo@redhat.com> > --- > v5: Similar to previous, use bus number, not uid in ACPI device naming so > that uid can be 32 bits and we don't need checks to ensure it is only > 8 bits. Not change to the actual numbers as the UID == bus_num > --- > hw/pci-host/gpex-acpi.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/hw/pci-host/gpex-acpi.c b/hw/pci-host/gpex-acpi.c > index f69413ea2c..f271817ef5 100644 > --- a/hw/pci-host/gpex-acpi.c > +++ b/hw/pci-host/gpex-acpi.c > @@ -140,6 +140,7 @@ void acpi_dsdt_add_gpex(Aml *scope, struct GPEXConfig *cfg) > QLIST_FOREACH(bus, &bus->child, sibling) { > uint8_t bus_num = pci_bus_num(bus); > uint8_t numa_node = pci_bus_numa_node(bus); > + uint32_t uid; > bool is_cxl = pci_bus_is_cxl(bus); > > if (!pci_bus_is_root(bus)) { > @@ -155,6 +156,8 @@ void acpi_dsdt_add_gpex(Aml *scope, struct GPEXConfig *cfg) > nr_pcie_buses = bus_num; > } > > + uid = object_property_get_uint(OBJECT(bus), "acpi_uid", > + &error_fatal); > dev = aml_device("PC%.02X", bus_num); > if (is_cxl) { > struct Aml *pkg = aml_package(2); > @@ -167,7 +170,7 @@ void acpi_dsdt_add_gpex(Aml *scope, struct GPEXConfig *cfg) > aml_append(dev, aml_name_decl("_CID", aml_string("PNP0A03"))); > } > aml_append(dev, aml_name_decl("_BBN", aml_int(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("_STR", aml_unicode("pxb Device"))); > aml_append(dev, aml_name_decl("_CCA", aml_int(1))); > if (numa_node != NUMA_NODE_UNASSIGNED) {
diff --git a/hw/pci-host/gpex-acpi.c b/hw/pci-host/gpex-acpi.c index f69413ea2c..f271817ef5 100644 --- a/hw/pci-host/gpex-acpi.c +++ b/hw/pci-host/gpex-acpi.c @@ -140,6 +140,7 @@ void acpi_dsdt_add_gpex(Aml *scope, struct GPEXConfig *cfg) QLIST_FOREACH(bus, &bus->child, sibling) { uint8_t bus_num = pci_bus_num(bus); uint8_t numa_node = pci_bus_numa_node(bus); + uint32_t uid; bool is_cxl = pci_bus_is_cxl(bus); if (!pci_bus_is_root(bus)) { @@ -155,6 +156,8 @@ void acpi_dsdt_add_gpex(Aml *scope, struct GPEXConfig *cfg) nr_pcie_buses = bus_num; } + uid = object_property_get_uint(OBJECT(bus), "acpi_uid", + &error_fatal); dev = aml_device("PC%.02X", bus_num); if (is_cxl) { struct Aml *pkg = aml_package(2); @@ -167,7 +170,7 @@ void acpi_dsdt_add_gpex(Aml *scope, struct GPEXConfig *cfg) aml_append(dev, aml_name_decl("_CID", aml_string("PNP0A03"))); } aml_append(dev, aml_name_decl("_BBN", aml_int(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("_STR", aml_unicode("pxb Device"))); aml_append(dev, aml_name_decl("_CCA", aml_int(1))); if (numa_node != NUMA_NODE_UNASSIGNED) {