Message ID | 20240702131428.664859-8-Jonathan.Cameron@huawei.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | acpi: NUMA nodes for CXL HB as GP + complex NUMA test | expand |
On Tue, 2 Jul 2024 14:14:12 +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> > Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> > > --- > v4: Generalize to all TYPE_PXB_BUS. The handling for primary root > bridges is separate and doesn't overlap with this change. > --- > hw/pci-bridge/pci_expander_bridge.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/hw/pci-bridge/pci_expander_bridge.c b/hw/pci-bridge/pci_expander_bridge.c > index 0411ad31ea..d71eb4b175 100644 > --- a/hw/pci-bridge/pci_expander_bridge.c > +++ b/hw/pci-bridge/pci_expander_bridge.c > @@ -85,12 +85,23 @@ 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); missing related object_class_property_set_description() > } > > 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..d71eb4b175 100644 --- a/hw/pci-bridge/pci_expander_bridge.c +++ b/hw/pci-bridge/pci_expander_bridge.c @@ -85,12 +85,23 @@ 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); } static const TypeInfo pxb_bus_info = {
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> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> --- v4: Generalize to all TYPE_PXB_BUS. The handling for primary root bridges is separate and doesn't overlap with this change. --- hw/pci-bridge/pci_expander_bridge.c | 11 +++++++++++ 1 file changed, 11 insertions(+)