Message ID | 1258005528-25383-8-git-send-email-yamahata@valinux.co.jp |
---|---|
State | New |
Headers | show |
On Thu, Nov 12, 2009 at 02:58:35PM +0900, Isaku Yamahata wrote: > Because pci_sub_bus() is used only once so eliminate it > by open coding as suggested by "Michael S. Tsirkin" <mst@redhat.com>. > > Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp> Acked-by: Michael S. Tsirkin <mst@redhat.com> As a separate note. I wonder whether we can handle host bridge in a way that is more uniform with pci bridges, so we don't have to special-case it in e.g. pci_bus_num. Not sure yet how to do this or whether this is a good idea at all. > --- > hw/pci.c | 12 ++++-------- > 1 files changed, 4 insertions(+), 8 deletions(-) > > diff --git a/hw/pci.c b/hw/pci.c > index 4169d4f..bdd4063 100644 > --- a/hw/pci.c > +++ b/hw/pci.c > @@ -239,13 +239,6 @@ int pci_bus_num(PCIBus *s) > return s->parent_dev->config[PCI_SECONDARY_BUS]; > } > > -static uint8_t pci_sub_bus(PCIBus *s) > -{ > - if (!s->parent_dev) > - return 255; /* pci host bridge */ > - return s->parent_dev->config[PCI_SUBORDINATE_BUS]; > -} > - > static int get_pci_config_device(QEMUFile *f, void *pv, size_t size) > { > PCIDevice *s = container_of(pv, PCIDevice, config); > @@ -1179,7 +1172,10 @@ PCIBus *pci_find_bus(PCIBus *bus, int bus_num) > > /* try child bus */ > QLIST_FOREACH(sec, &bus->child, sibling) { > - if (pci_bus_num(sec) <= bus_num && bus_num <= pci_sub_bus(sec)) { > + > + if (!bus->parent_dev /* pci host bridge */ > + || (pci_bus_num(sec) <= bus_num && > + bus->parent_dev->config[PCI_SUBORDINATE_BUS])) { > return pci_find_bus(sec, bus_num); > } > } > -- > 1.6.0.2
On Thu, Nov 12, 2009 at 12:45:08PM +0200, Michael S. Tsirkin wrote: > On Thu, Nov 12, 2009 at 02:58:35PM +0900, Isaku Yamahata wrote: > > Because pci_sub_bus() is used only once so eliminate it > > by open coding as suggested by "Michael S. Tsirkin" <mst@redhat.com>. > > > > Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp> > > Acked-by: Michael S. Tsirkin <mst@redhat.com> > > As a separate note. I wonder whether we can handle host bridge in a way > that is more uniform with pci bridges, so we don't have to special-case > it in e.g. pci_bus_num. > Not sure yet how to do this or whether this is a good idea at all. PCI host device has header type of 0, normal device. So it doesn't have secondary bus register.
diff --git a/hw/pci.c b/hw/pci.c index 4169d4f..bdd4063 100644 --- a/hw/pci.c +++ b/hw/pci.c @@ -239,13 +239,6 @@ int pci_bus_num(PCIBus *s) return s->parent_dev->config[PCI_SECONDARY_BUS]; } -static uint8_t pci_sub_bus(PCIBus *s) -{ - if (!s->parent_dev) - return 255; /* pci host bridge */ - return s->parent_dev->config[PCI_SUBORDINATE_BUS]; -} - static int get_pci_config_device(QEMUFile *f, void *pv, size_t size) { PCIDevice *s = container_of(pv, PCIDevice, config); @@ -1179,7 +1172,10 @@ PCIBus *pci_find_bus(PCIBus *bus, int bus_num) /* try child bus */ QLIST_FOREACH(sec, &bus->child, sibling) { - if (pci_bus_num(sec) <= bus_num && bus_num <= pci_sub_bus(sec)) { + + if (!bus->parent_dev /* pci host bridge */ + || (pci_bus_num(sec) <= bus_num && + bus->parent_dev->config[PCI_SUBORDINATE_BUS])) { return pci_find_bus(sec, bus_num); } }
Because pci_sub_bus() is used only once so eliminate it by open coding as suggested by "Michael S. Tsirkin" <mst@redhat.com>. Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp> --- hw/pci.c | 12 ++++-------- 1 files changed, 4 insertions(+), 8 deletions(-)