pci: Eliminate pci_find_primary_bus()
pci_find_primary_bus() only has one user, in pc_xen_hvm_init(). That's inside the machine construction code, so it already has easy access to the machine's primary PCI bus. Get it directly, and thereby remove pci_find_primary_bus(). This removes one of only a handful of users of the ugly pci_host_bridges global. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Marcel Apfelbaum <marcel@redhat.com> Reviewed-by: Peter Xu <peterx@redhat.com>
This commit is contained in:
parent
fd56e0612b
commit
e492dc5a26
|
@ -394,7 +394,7 @@ static void pc_xen_hvm_init_pci(MachineState *machine)
|
||||||
|
|
||||||
static void pc_xen_hvm_init(MachineState *machine)
|
static void pc_xen_hvm_init(MachineState *machine)
|
||||||
{
|
{
|
||||||
PCIBus *bus;
|
PCMachineState *pcms = PC_MACHINE(machine);
|
||||||
|
|
||||||
if (!xen_enabled()) {
|
if (!xen_enabled()) {
|
||||||
error_report("xenfv machine requires the xen accelerator");
|
error_report("xenfv machine requires the xen accelerator");
|
||||||
|
@ -402,11 +402,7 @@ static void pc_xen_hvm_init(MachineState *machine)
|
||||||
}
|
}
|
||||||
|
|
||||||
pc_xen_hvm_init_pci(machine);
|
pc_xen_hvm_init_pci(machine);
|
||||||
|
pci_create_simple(pcms->bus, -1, "xen-platform");
|
||||||
bus = pci_find_primary_bus();
|
|
||||||
if (bus != NULL) {
|
|
||||||
pci_create_simple(bus, -1, "xen-platform");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
16
hw/pci/pci.c
16
hw/pci/pci.c
|
@ -331,22 +331,6 @@ static void pci_host_bus_register(DeviceState *host)
|
||||||
QLIST_INSERT_HEAD(&pci_host_bridges, host_bridge, next);
|
QLIST_INSERT_HEAD(&pci_host_bridges, host_bridge, next);
|
||||||
}
|
}
|
||||||
|
|
||||||
PCIBus *pci_find_primary_bus(void)
|
|
||||||
{
|
|
||||||
PCIBus *primary_bus = NULL;
|
|
||||||
PCIHostState *host;
|
|
||||||
|
|
||||||
QLIST_FOREACH(host, &pci_host_bridges, next) {
|
|
||||||
if (primary_bus) {
|
|
||||||
/* We have multiple root buses, refuse to select a primary */
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
primary_bus = host->bus;
|
|
||||||
}
|
|
||||||
|
|
||||||
return primary_bus;
|
|
||||||
}
|
|
||||||
|
|
||||||
PCIBus *pci_device_root_bus(const PCIDevice *d)
|
PCIBus *pci_device_root_bus(const PCIDevice *d)
|
||||||
{
|
{
|
||||||
PCIBus *bus = pci_get_bus(d);
|
PCIBus *bus = pci_get_bus(d);
|
||||||
|
|
|
@ -467,7 +467,6 @@ void pci_for_each_bus(PCIBus *bus,
|
||||||
pci_for_each_bus_depth_first(bus, NULL, fn, opaque);
|
pci_for_each_bus_depth_first(bus, NULL, fn, opaque);
|
||||||
}
|
}
|
||||||
|
|
||||||
PCIBus *pci_find_primary_bus(void);
|
|
||||||
PCIBus *pci_device_root_bus(const PCIDevice *d);
|
PCIBus *pci_device_root_bus(const PCIDevice *d);
|
||||||
const char *pci_root_bus_path(PCIDevice *dev);
|
const char *pci_root_bus_path(PCIDevice *dev);
|
||||||
PCIDevice *pci_find_device(PCIBus *bus, int bus_num, uint8_t devfn);
|
PCIDevice *pci_find_device(PCIBus *bus, int bus_num, uint8_t devfn);
|
||||||
|
|
Loading…
Reference in a new issue