Hi Xingang, On 5/25/21 5:50 AM, Wang Xingang wrote: > From: Xingang Wang <wangxinga...@huawei.com> > > This helps to get the bus number range of a pci bridge hierarchy. > > Signed-off-by: Xingang Wang <wangxinga...@huawei.com> > --- > hw/pci/pci.c | 15 +++++++++++++++ > include/hw/pci/pci.h | 1 + > 2 files changed, 16 insertions(+) > > diff --git a/hw/pci/pci.c b/hw/pci/pci.c > index 27d588e268..7f18ea5ef5 100644 > --- a/hw/pci/pci.c > +++ b/hw/pci/pci.c > @@ -537,6 +537,21 @@ int pci_bus_num(PCIBus *s) > return PCI_BUS_GET_CLASS(s)->bus_num(s); > } > Add a doc comment such as "returns the min and max bus numbers of a root bus"?
Besides Reviewed-by: Eric Auger <eric.au...@redhat.com> Thanks Eric > +void pci_bus_range(PCIBus *bus, int *min_bus, int *max_bus) > +{ > + int i; > + *min_bus = *max_bus = pci_bus_num(bus); > + > + for (i = 0; i < ARRAY_SIZE(bus->devices); ++i) { > + PCIDevice *dev = bus->devices[i]; > + > + if (dev && PCI_DEVICE_GET_CLASS(dev)->is_bridge) { > + *min_bus = MIN(*min_bus, dev->config[PCI_SECONDARY_BUS]); > + *max_bus = MAX(*max_bus, dev->config[PCI_SUBORDINATE_BUS]); > + } > + } > +} > + > int pci_bus_numa_node(PCIBus *bus) > { > return PCI_BUS_GET_CLASS(bus)->numa_node(bus); > diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h > index f4d51b672b..d0f4266e37 100644 > --- a/include/hw/pci/pci.h > +++ b/include/hw/pci/pci.h > @@ -450,6 +450,7 @@ static inline PCIBus *pci_get_bus(const PCIDevice *dev) > return PCI_BUS(qdev_get_parent_bus(DEVICE(dev))); > } > int pci_bus_num(PCIBus *s); > +void pci_bus_range(PCIBus *bus, int *min_bus, int *max_bus); > static inline int pci_dev_bus_num(const PCIDevice *dev) > { > return pci_bus_num(pci_get_bus(dev));