aboutsummaryrefslogtreecommitdiff
path: root/hw/sparc64
diff options
context:
space:
mode:
authorDavid Woodhouse <dwmw@amazon.co.uk>2023-10-23 09:37:26 +0100
committerDavid Woodhouse <dwmw@amazon.co.uk>2024-02-02 16:23:47 +0000
commitc8a6107bca7f4590cf213407afa9a021e20a3a59 (patch)
tree62ecd6302ffe9ffea85601e3dee561c8a9b558b9 /hw/sparc64
parent2d89ae0cbf4c04f95843ad9e4b7fe090e5afad46 (diff)
downloadqemu-c8a6107bca7f4590cf213407afa9a021e20a3a59.zip
qemu-c8a6107bca7f4590cf213407afa9a021e20a3a59.tar.gz
qemu-c8a6107bca7f4590cf213407afa9a021e20a3a59.tar.bz2
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>
Diffstat (limited to 'hw/sparc64')
-rw-r--r--hw/sparc64/sun4u.c27
1 files changed, 8 insertions, 19 deletions
diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c
index 24d53bf..eda9b58 100644
--- a/hw/sparc64/sun4u.c
+++ b/hw/sparc64/sun4u.c
@@ -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 */