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 = {