Commit 29b358f9 authored by David Gibson's avatar David Gibson Committed by Michael S. Tsirkin
Browse files

pci: Add root bus parameter to pci_nic_init()



At present, pci_nic_init() and pci_nic_init_nofail() assume that they will
only create a NIC under the primary PCI root.  As we add support for
multiple PCI roots, that may no longer be the case.  This patch adds a root
bus parameter to pci_nic_init() (and updates callers accordingly) to allow
the machine init code using it to specify the right PCI root for NICs
created by old-style -net nic parameters.  NICs created new-style, with
-device can of course be put anywhere.

Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
parent 85c6e4fa
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -89,7 +89,7 @@ static void clipper_init(QEMUMachineInitArgs *args)

    /* Network setup.  e1000 is good enough, failing Tulip support.  */
    for (i = 0; i < nb_nics; i++) {
        pci_nic_init_nofail(&nd_table[i], "e1000", NULL);
        pci_nic_init_nofail(&nd_table[i], pci_bus, "e1000", NULL);
    }

    /* IDE disk setup.  */
+4 −2
Original line number Diff line number Diff line
@@ -59,7 +59,7 @@ static void realview_init(QEMUMachineInitArgs *args,
    qemu_irq *irqp;
    qemu_irq pic[64];
    qemu_irq mmc_irq[2];
    PCIBus *pci_bus;
    PCIBus *pci_bus = NULL;
    NICInfo *nd;
    i2c_bus *i2c;
    int n;
@@ -250,7 +250,9 @@ static void realview_init(QEMUMachineInitArgs *args,
            }
            done_nic = 1;
        } else {
            pci_nic_init_nofail(nd, "rtl8139", NULL);
            if (pci_bus) {
                pci_nic_init_nofail(nd, pci_bus, "rtl8139", NULL);
            }
        }
    }

+1 −1
Original line number Diff line number Diff line
@@ -244,7 +244,7 @@ static void versatile_init(QEMUMachineInitArgs *args, int board_id)
            smc91c111_init(nd, 0x10010000, sic[25]);
            done_smc = 1;
        } else {
            pci_nic_init_nofail(nd, "rtl8139", NULL);
            pci_nic_init_nofail(nd, pci_bus, "rtl8139", NULL);
        }
    }
    if (usb_enabled(false)) {
+1 −1
Original line number Diff line number Diff line
@@ -1310,7 +1310,7 @@ void pc_nic_init(ISABus *isa_bus, PCIBus *pci_bus)
        if (!pci_bus || (nd->model && strcmp(nd->model, "ne2k_isa") == 0)) {
            pc_init_ne2k_isa(isa_bus, nd);
        } else {
            pci_nic_init_nofail(nd, "e1000", NULL);
            pci_nic_init_nofail(nd, pci_bus, "e1000", NULL);
        }
    }
}
+3 −3
Original line number Diff line number Diff line
@@ -231,7 +231,7 @@ static void audio_init (PCIBus *pci_bus)
}

/* Network support */
static void network_init (void)
static void network_init (PCIBus *pci_bus)
{
    int i;

@@ -244,7 +244,7 @@ static void network_init (void)
            default_devaddr = "07";
        }

        pci_nic_init_nofail(nd, "rtl8139", default_devaddr);
        pci_nic_init_nofail(nd, pci_bus, "rtl8139", default_devaddr);
    }
}

@@ -393,7 +393,7 @@ static void mips_fulong2e_init(QEMUMachineInitArgs *args)
    /* Sound card */
    audio_init(pci_bus);
    /* Network card */
    network_init();
    network_init(pci_bus);
}

static QEMUMachine mips_fulong2e_machine = {
Loading