63 |
63 |
}
|
64 |
64 |
};
|
65 |
65 |
|
|
66 |
static PCIBus *pci_find_bus_nr(PCIBus *bus, int bus_num);
|
66 |
67 |
static void pci_update_mappings(PCIDevice *d);
|
67 |
68 |
static void pci_set_irq(void *opaque, int irq_num, int level);
|
68 |
69 |
static int pci_add_option_rom(PCIDevice *pdev, bool is_default_rom);
|
... | ... | |
558 |
559 |
|
559 |
560 |
if (!devaddr) {
|
560 |
561 |
*devfnp = -1;
|
561 |
|
return pci_find_bus(pci_find_root_bus(0), 0);
|
|
562 |
return pci_find_bus_nr(pci_find_root_bus(0), 0);
|
562 |
563 |
}
|
563 |
564 |
|
564 |
565 |
if (pci_parse_devaddr(devaddr, &dom, &bus, &slot, NULL) < 0) {
|
... | ... | |
566 |
567 |
}
|
567 |
568 |
|
568 |
569 |
*devfnp = PCI_DEVFN(slot, 0);
|
569 |
|
return pci_find_bus(pci_find_root_bus(dom), bus);
|
|
570 |
return pci_find_bus_nr(pci_find_root_bus(dom), bus);
|
570 |
571 |
}
|
571 |
572 |
|
572 |
573 |
static void pci_init_cmask(PCIDevice *dev)
|
... | ... | |
1140 |
1141 |
void pci_for_each_device(PCIBus *bus, int bus_num,
|
1141 |
1142 |
void (*fn)(PCIBus *b, PCIDevice *d))
|
1142 |
1143 |
{
|
1143 |
|
bus = pci_find_bus(bus, bus_num);
|
|
1144 |
bus = pci_find_bus_nr(bus, bus_num);
|
1144 |
1145 |
|
1145 |
1146 |
if (bus) {
|
1146 |
1147 |
pci_for_each_device_under_bus(bus, fn);
|
... | ... | |
1227 |
1228 |
info->bus.prefetchable_range->limit = pci_bridge_get_limit(dev, PCI_BASE_ADDRESS_MEM_PREFETCH);
|
1228 |
1229 |
|
1229 |
1230 |
if (dev->config[PCI_SECONDARY_BUS] != 0) {
|
1230 |
|
PCIBus *child_bus = pci_find_bus(bus, dev->config[PCI_SECONDARY_BUS]);
|
|
1231 |
PCIBus *child_bus = pci_find_bus_nr(bus, dev->config[PCI_SECONDARY_BUS]);
|
1231 |
1232 |
if (child_bus) {
|
1232 |
1233 |
info->has_devices = true;
|
1233 |
1234 |
info->devices = qmp_query_pci_devices(child_bus, dev->config[PCI_SECONDARY_BUS]);
|
... | ... | |
1306 |
1307 |
{
|
1307 |
1308 |
PciInfo *info = NULL;
|
1308 |
1309 |
|
1309 |
|
bus = pci_find_bus(bus, bus_num);
|
|
1310 |
bus = pci_find_bus_nr(bus, bus_num);
|
1310 |
1311 |
if (bus) {
|
1311 |
1312 |
info = g_malloc0(sizeof(*info));
|
1312 |
1313 |
info->bus = bus_num;
|
... | ... | |
1416 |
1417 |
bus_num <= dev->config[PCI_SUBORDINATE_BUS];
|
1417 |
1418 |
}
|
1418 |
1419 |
|
1419 |
|
PCIBus *pci_find_bus(PCIBus *bus, int bus_num)
|
|
1420 |
static PCIBus *pci_find_bus_nr(PCIBus *bus, int bus_num)
|
1420 |
1421 |
{
|
1421 |
1422 |
PCIBus *sec;
|
1422 |
1423 |
|
... | ... | |
1452 |
1453 |
|
1453 |
1454 |
PCIDevice *pci_find_device(PCIBus *bus, int bus_num, uint8_t devfn)
|
1454 |
1455 |
{
|
1455 |
|
bus = pci_find_bus(bus, bus_num);
|
|
1456 |
bus = pci_find_bus_nr(bus, bus_num);
|
1456 |
1457 |
|
1457 |
1458 |
if (!bus)
|
1458 |
1459 |
return NULL;
|