Message ID | 20240712110837.1439736-8-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:11 +0100 Jonathan Cameron <Jonathan.Cameron@huawei.com> wrote: > Enable ACPI table creation for PCI Expander Bridges to be independent > of PCI internals. Note that the UID is currently the PCI bus number. > This is motivated by the forthcoming ACPI Generic Port SRAT entries > which can be made completely independent of PCI internals. > > 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: Add missing property description. > --- > hw/pci-bridge/pci_expander_bridge.c | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git a/hw/pci-bridge/pci_expander_bridge.c b/hw/pci-bridge/pci_expander_bridge.c > index 0411ad31ea..b94cb85cfb 100644 > --- a/hw/pci-bridge/pci_expander_bridge.c > +++ b/hw/pci-bridge/pci_expander_bridge.c > @@ -85,12 +85,25 @@ static uint16_t pxb_bus_numa_node(PCIBus *bus) > return pxb->numa_node; > } > > +static void prop_pxb_uid_get(Object *obj, Visitor *v, const char *name, > + void *opaque, Error **errp) > +{ > + uint32_t uid = pci_bus_num(PCI_BUS(obj)); > + > + visit_type_uint32(v, name, &uid, errp); > +} > + > static void pxb_bus_class_init(ObjectClass *class, void *data) > { > PCIBusClass *pbc = PCI_BUS_CLASS(class); > > pbc->bus_num = pxb_bus_num; > pbc->numa_node = pxb_bus_numa_node; > + > + object_class_property_add(class, "acpi_uid", "uint32", > + prop_pxb_uid_get, NULL, NULL, NULL); > + object_class_property_set_description(class, "acpi_uid", > + "ACPI Unique ID used to distinguish this PCI Host Bridge / ACPI00016"); > } > > static const TypeInfo pxb_bus_info = {
diff --git a/hw/pci-bridge/pci_expander_bridge.c b/hw/pci-bridge/pci_expander_bridge.c index 0411ad31ea..b94cb85cfb 100644 --- a/hw/pci-bridge/pci_expander_bridge.c +++ b/hw/pci-bridge/pci_expander_bridge.c @@ -85,12 +85,25 @@ static uint16_t pxb_bus_numa_node(PCIBus *bus) return pxb->numa_node; } +static void prop_pxb_uid_get(Object *obj, Visitor *v, const char *name, + void *opaque, Error **errp) +{ + uint32_t uid = pci_bus_num(PCI_BUS(obj)); + + visit_type_uint32(v, name, &uid, errp); +} + static void pxb_bus_class_init(ObjectClass *class, void *data) { PCIBusClass *pbc = PCI_BUS_CLASS(class); pbc->bus_num = pxb_bus_num; pbc->numa_node = pxb_bus_numa_node; + + object_class_property_add(class, "acpi_uid", "uint32", + prop_pxb_uid_get, NULL, NULL, NULL); + object_class_property_set_description(class, "acpi_uid", + "ACPI Unique ID used to distinguish this PCI Host Bridge / ACPI00016"); } static const TypeInfo pxb_bus_info = {