mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-07 17:53:56 -06:00
hw/sparc64/sun4u: use pci_init_nic_devices()
The first sunhme NIC gets placed a function 1 on slot 1 of PCI bus A, and the rest are dynamically assigned on PCI bus B. Previously, any PCI NIC would get the special treatment purely by virtue of being first in the list. Signed-off-by: David Woodhouse <dwmw@amazon.co.uk> Reviewed-by: Thomas Huth <thuth@redhat.com>
This commit is contained in:
parent
2d89ae0cbf
commit
c8a6107bca
1 changed files with 8 additions and 19 deletions
|
@ -639,29 +639,18 @@ static void sun4uv_init(MemoryRegion *address_space_mem,
|
|||
|
||||
memset(&macaddr, 0, sizeof(MACAddr));
|
||||
onboard_nic = false;
|
||||
for (i = 0; i < nb_nics; i++) {
|
||||
PCIBus *bus;
|
||||
nd = &nd_table[i];
|
||||
|
||||
if (!nd->model || strcmp(nd->model, mc->default_nic) == 0) {
|
||||
if (!onboard_nic) {
|
||||
pci_dev = pci_new_multifunction(PCI_DEVFN(1, 1), mc->default_nic);
|
||||
bus = pci_busA;
|
||||
memcpy(&macaddr, &nd->macaddr.a, sizeof(MACAddr));
|
||||
onboard_nic = true;
|
||||
} else {
|
||||
pci_dev = pci_new(-1, mc->default_nic);
|
||||
bus = pci_busB;
|
||||
}
|
||||
} else {
|
||||
pci_dev = pci_new(-1, nd->model);
|
||||
bus = pci_busB;
|
||||
}
|
||||
|
||||
nd = qemu_find_nic_info(mc->default_nic, true, NULL);
|
||||
if (nd) {
|
||||
pci_dev = pci_new_multifunction(PCI_DEVFN(1, 1), mc->default_nic);
|
||||
dev = &pci_dev->qdev;
|
||||
qdev_set_nic_properties(dev, nd);
|
||||
pci_realize_and_unref(pci_dev, bus, &error_fatal);
|
||||
pci_realize_and_unref(pci_dev, pci_busA, &error_fatal);
|
||||
|
||||
memcpy(&macaddr, &nd->macaddr.a, sizeof(MACAddr));
|
||||
onboard_nic = true;
|
||||
}
|
||||
pci_init_nic_devices(pci_busB, mc->default_nic);
|
||||
|
||||
/* If we don't have an onboard NIC, grab a default MAC address so that
|
||||
* we have a valid machine id */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue