diff options
author | David Woodhouse <dwmw@amazon.co.uk> | 2023-10-17 17:53:58 +0100 |
---|---|---|
committer | David Woodhouse <dwmw@amazon.co.uk> | 2024-02-02 16:23:47 +0000 |
commit | 7d6eff13b3e10efbed9b01fa4eb9515acd86dcf7 (patch) | |
tree | 27c16ccc2c89b458f6e820f447e5a5169febf8ff /hw/i386/pc.c | |
parent | 8d39f9ba14d64a147324778d3e1013eee4643e06 (diff) |
hw/xen: use qemu_create_nic_bus_devices() to instantiate Xen NICs
When instantiating XenBus itself, for each NIC which is configured with
either the model unspecified, or set to to "xen" or "xen-net-device",
create a corresponding xen-net-device for it.
Now we can revert the previous more hackish version which relied on the
platform code explicitly registering the NICs on its own XenBus, having
returned the BusState* from xen_bus_init() itself.
This also fixes the setup for Xen PV guests, which was previously broken
in various ways and never actually managed to peer with the netdev.
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Paul Durrant <paul@xen.org>
Diffstat (limited to 'hw/i386/pc.c')
-rw-r--r-- | hw/i386/pc.c | 13 |
1 files changed, 2 insertions, 11 deletions
diff --git a/hw/i386/pc.c b/hw/i386/pc.c index ebb0b1c667..196827531a 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -1269,7 +1269,7 @@ void pc_basic_device_init(struct PCMachineState *pcms, if (pcms->bus) { pci_create_simple(pcms->bus, -1, "xen-platform"); } - pcms->xenbus = xen_bus_init(); + xen_bus_init(); xen_be_init(); } #endif @@ -1297,8 +1297,7 @@ void pc_basic_device_init(struct PCMachineState *pcms, pcms->vmport != ON_OFF_AUTO_ON); } -void pc_nic_init(PCMachineClass *pcmc, ISABus *isa_bus, PCIBus *pci_bus, - BusState *xen_bus) +void pc_nic_init(PCMachineClass *pcmc, ISABus *isa_bus, PCIBus *pci_bus) { MachineClass *mc = MACHINE_CLASS(pcmc); bool default_is_ne2k = g_str_equal(mc->default_nic, TYPE_ISA_NE2000); @@ -1306,14 +1305,6 @@ void pc_nic_init(PCMachineClass *pcmc, ISABus *isa_bus, PCIBus *pci_bus, rom_set_order_override(FW_CFG_ORDER_OVERRIDE_NIC); - if (xen_bus) { - while ((nd = qemu_find_nic_info("xen-net-device", true, NULL))) { - DeviceState *dev = qdev_new("xen-net-device"); - qdev_set_nic_properties(dev, nd); - qdev_realize_and_unref(dev, xen_bus, &error_fatal); - } - } - while ((nd = qemu_find_nic_info(TYPE_ISA_NE2000, default_is_ne2k, NULL))) { pc_init_ne2k_isa(isa_bus, nd, &error_fatal); } |