|
From: | Xingang Wang |
Subject: | Re: [PATCH v4 5/8] hw/pci: Add pci_bus_range to get bus number range |
Date: | Thu, 3 Jun 2021 20:48:42 +0800 |
User-agent: | Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.5.1 |
Hi Eric, On 2021/6/2 21:03, Eric Auger wrote:
Hi Xingang, On 5/25/21 5:50 AM, Wang Xingang wrote:From: Xingang Wang <wangxingang5@huawei.com> This helps to get the bus number range of a pci bridge hierarchy. Signed-off-by: Xingang Wang <wangxingang5@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.auger@redhat.com> Thanks Eric
Thanks, I will add some annotation here. Xingang
+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));.
.
[Prev in Thread] | Current Thread | [Next in Thread] |