Hi Jiaxin, it's nice to see a question from you on qemu-devel! :)
On 07/06/17 08:20, Wu, Jiaxin wrote: > Hello experts, > > We know QEMU has the capability to create the multiple network devices > in one QEMU guest with the -device syntax. But I met the below failure > when I'm trying to create more than 30 virtual devices with the each > TAP backend: > > qemu-system-x86_64: -device e1000: PCI: no slot/function available for > e1000, all in use. > > The corresponding QEMU command shows as following: > > sudo qemu-system-x86_64 \ > -pflash OVMF.fd \ > -global e1000.romfile="" \ > -netdev tap,id=hostnet0,ifname=tap0,script=no,downscript=no \ > -device e1000,netdev=hostnet0 \ > -netdev tap,id=hostnet1,ifname=tap1,script=no,downscript=no \ > -device e1000,netdev=hostnet1 \ > -netdev tap,id=hostnet2,ifname=tap2,script=no,downscript=no \ > -device e1000,netdev=hostnet2 \ > -netdev tap,id=hostnet3,ifname=tap3,script=no,downscript=no \ > -device e1000,netdev=hostnet3 \ > -netdev tap,id=hostnet4,ifname=tap4,script=no,downscript=no \ > -device e1000,netdev=hostnet4 \ > -netdev tap,id=hostnet5,ifname=tap5,script=no,downscript=no \ > -device e1000,netdev=hostnet5 \ > -netdev tap,id=hostnet6,ifname=tap6,script=no,downscript=no \ > -device e1000,netdev=hostnet6 \ > -netdev tap,id=hostnet7,ifname=tap7,script=no,downscript=no \ > -device e1000,netdev=hostnet7 \ > -netdev tap,id=hostnet8,ifname=tap8,script=no,downscript=no \ > -device e1000,netdev=hostnet8 \ > -netdev tap,id=hostnet9,ifname=tap9,script=no,downscript=no \ > -device e1000,netdev=hostnet9 \ > -netdev tap,id=hostnet10,ifname=tap10,script=no,downscript=no \ > -device e1000,netdev=hostnet10 \ > -netdev tap,id=hostnet11,ifname=tap11,script=no,downscript=no \ > -device e1000,netdev=hostnet11 \ > -netdev tap,id=hostnet12,ifname=tap12,script=no,downscript=no \ > -device e1000,netdev=hostnet12 \ > -netdev tap,id=hostnet13,ifname=tap13,script=no,downscript=no \ > -device e1000,netdev=hostnet13 \ > -netdev tap,id=hostnet14,ifname=tap14,script=no,downscript=no \ > -device e1000,netdev=hostnet14 \ > -netdev tap,id=hostnet15,ifname=tap15,script=no,downscript=no \ > -device e1000,netdev=hostnet15 \ > -netdev tap,id=hostnet16,ifname=tap16,script=no,downscript=no \ > -device e1000,netdev=hostnet16 \ > -netdev tap,id=hostnet17,ifname=tap17,script=no,downscript=no \ > -device e1000,netdev=hostnet17 \ > -netdev tap,id=hostnet18,ifname=tap18,script=no,downscript=no \ > -device e1000,netdev=hostnet18 \ > -netdev tap,id=hostnet19,ifname=tap19,script=no,downscript=no \ > -device e1000,netdev=hostnet19 \ > -netdev tap,id=hostnet20,ifname=tap20,script=no,downscript=no \ > -device e1000,netdev=hostnet20 \ > -netdev tap,id=hostnet21,ifname=tap21,script=no,downscript=no \ > -device e1000,netdev=hostnet21 \ > -netdev tap,id=hostnet22,ifname=tap22,script=no,downscript=no \ > -device e1000,netdev=hostnet22 \ > -netdev tap,id=hostnet23,ifname=tap23,script=no,downscript=no \ > -device e1000,netdev=hostnet23 \ > -netdev tap,id=hostnet24,ifname=tap24,script=no,downscript=no \ > -device e1000,netdev=hostnet24 \ > -netdev tap,id=hostnet25,ifname=tap25,script=no,downscript=no \ > -device e1000,netdev=hostnet25 \ > -netdev tap,id=hostnet26,ifname=tap26,script=no,downscript=no \ > -device e1000,netdev=hostnet26 \ > -netdev tap,id=hostnet27,ifname=tap27,script=no,downscript=no \ > -device e1000,netdev=hostnet27 \ > -netdev tap,id=hostnet28,ifname=tap28,script=no,downscript=no \ > -device e1000,netdev=hostnet28 \ > -netdev tap,id=hostnet29,ifname=tap29,script=no,downscript=no \ > -device e1000,netdev=hostnet29 > > From above, the max limit of virtual network device in one guest is > about 29? If not, how can I avoid such failure? My use case is to > create more than 150 network devices in one guest. Please provide your > comments on this. You are seeing the above symptom because the above command line instructs QEMU to do the following: - use the i440fx machine type, - use a single PCI bus (= the main root bridge), - add the e1000 cards to separate slots (always using function 0) on that bus. Accordingly, there are three things you can do to remedy this: - Use the Q35 machine type and work with a PCI Express hierarchy rather than a PCI hierarchy. I'm mentioning this only for completeness, because it won't directly help your use case. But, I certainly want to highlight "docs/pcie.txt". Please read it sometime; it has nice examples and makes good points. - Use multiple PCI bridges to attach the devices. For this, several ways are possible: - use multiple root buses, with the pxb or pxb-pcie devices (see "docs/pci_expander_bridge.txt" and "docs/pcie.txt") - use multiple normal PCI bridges - use multiple PCI Express root ports or downstream ports (but for this, you'll likely have to use the PCI Express variant of the e1000, namely e1000e) - If you don't need hot-plug / hot-unplug, aggregate eights of e1000 NICs into multifunction PCI devices. Now, I would normally recommend sticking with i440fx for simplicity. However, each PCI bridge requires 4KB of IO space (meaning (1 + 5) * 4KB = 24KB), and OVMF on the i440fx does not support that much (only 0x4000). So, I'll recommend Q35 for IO space purposes; OVMF on Q35 provides 0xA000 (40KB). For scaling higher than this, a PCI Express hierarchy should be used with PCI Express devices that require no IO space at all. However, that setup is even more problematic *for now*; please see section "3. IO space issues" in "docs/pcie.txt". We have open OVMF and QEMU BZs for limiting IO space allocation to cases when it is really necessary: https://bugzilla.redhat.com/show_bug.cgi?id=1344299 https://bugzilla.redhat.com/show_bug.cgi?id=1434740 Therefore I guess the simplest example I can give now is: - use Q35 (for a larger IO space), - plug a DMI-PCI bridge into the root bridge, - plug 5 PCI bridges into the DMI-PCI bridge, - plug 31 NICs per PCI bridge, each NIC into a separate slot. This follows the following recommendation of "2.3 PCI only hierarchy" in "docs/pcie.txt" (slightly rewrapped here): > 2.3 PCI only hierarchy > ====================== > Legacy PCI devices can be plugged into pcie.0 as Integrated Endpoints, > but, as mentioned in section 5, doing so means the legacy PCI > device in question will be incapable of hot-unplugging. > Besides that use DMI-PCI Bridges (i82801b11-bridge) in combination > with PCI-PCI Bridges (pci-bridge) to start PCI hierarchies. > > Prefer flat hierarchies. For most scenarios a single DMI-PCI Bridge > (having 32 slots) and several PCI-PCI Bridges attached to it (each > supporting also 32 slots) will support hundreds of legacy devices. The > recommendation is to populate one PCI-PCI Bridge under the DMI-PCI > Bridge until is full and then plug a new PCI-PCI Bridge... Here's a command line. Please note that the OVMF boot may take quite long with this, as the E3522X2.EFI driver from BootUtil (-D E1000_ENABLE) binds all 150 e1000 NICs in succession! Watching the OVMF debug log is recommended. qemu-system-x86_64 \ \ -machine q35,vmport=off,accel=kvm \ -pflash OVMF.fd \ -global e1000.romfile="" \ -m 2048 \ -debugcon file:debug.log \ -global isa-debugcon.iobase=0x402 \ \ -netdev tap,id=hostnet0,ifname=tap0,script=no,downscript=no \ -netdev tap,id=hostnet1,ifname=tap1,script=no,downscript=no \ -netdev tap,id=hostnet2,ifname=tap2,script=no,downscript=no \ -netdev tap,id=hostnet3,ifname=tap3,script=no,downscript=no \ -netdev tap,id=hostnet4,ifname=tap4,script=no,downscript=no \ -netdev tap,id=hostnet5,ifname=tap5,script=no,downscript=no \ -netdev tap,id=hostnet6,ifname=tap6,script=no,downscript=no \ -netdev tap,id=hostnet7,ifname=tap7,script=no,downscript=no \ -netdev tap,id=hostnet8,ifname=tap8,script=no,downscript=no \ -netdev tap,id=hostnet9,ifname=tap9,script=no,downscript=no \ -netdev tap,id=hostnet10,ifname=tap10,script=no,downscript=no \ -netdev tap,id=hostnet11,ifname=tap11,script=no,downscript=no \ -netdev tap,id=hostnet12,ifname=tap12,script=no,downscript=no \ -netdev tap,id=hostnet13,ifname=tap13,script=no,downscript=no \ -netdev tap,id=hostnet14,ifname=tap14,script=no,downscript=no \ -netdev tap,id=hostnet15,ifname=tap15,script=no,downscript=no \ -netdev tap,id=hostnet16,ifname=tap16,script=no,downscript=no \ -netdev tap,id=hostnet17,ifname=tap17,script=no,downscript=no \ -netdev tap,id=hostnet18,ifname=tap18,script=no,downscript=no \ -netdev tap,id=hostnet19,ifname=tap19,script=no,downscript=no \ -netdev tap,id=hostnet20,ifname=tap20,script=no,downscript=no \ -netdev tap,id=hostnet21,ifname=tap21,script=no,downscript=no \ -netdev tap,id=hostnet22,ifname=tap22,script=no,downscript=no \ -netdev tap,id=hostnet23,ifname=tap23,script=no,downscript=no \ -netdev tap,id=hostnet24,ifname=tap24,script=no,downscript=no \ -netdev tap,id=hostnet25,ifname=tap25,script=no,downscript=no \ -netdev tap,id=hostnet26,ifname=tap26,script=no,downscript=no \ -netdev tap,id=hostnet27,ifname=tap27,script=no,downscript=no \ -netdev tap,id=hostnet28,ifname=tap28,script=no,downscript=no \ -netdev tap,id=hostnet29,ifname=tap29,script=no,downscript=no \ -netdev tap,id=hostnet30,ifname=tap30,script=no,downscript=no \ -netdev tap,id=hostnet31,ifname=tap31,script=no,downscript=no \ -netdev tap,id=hostnet32,ifname=tap32,script=no,downscript=no \ -netdev tap,id=hostnet33,ifname=tap33,script=no,downscript=no \ -netdev tap,id=hostnet34,ifname=tap34,script=no,downscript=no \ -netdev tap,id=hostnet35,ifname=tap35,script=no,downscript=no \ -netdev tap,id=hostnet36,ifname=tap36,script=no,downscript=no \ -netdev tap,id=hostnet37,ifname=tap37,script=no,downscript=no \ -netdev tap,id=hostnet38,ifname=tap38,script=no,downscript=no \ -netdev tap,id=hostnet39,ifname=tap39,script=no,downscript=no \ -netdev tap,id=hostnet40,ifname=tap40,script=no,downscript=no \ -netdev tap,id=hostnet41,ifname=tap41,script=no,downscript=no \ -netdev tap,id=hostnet42,ifname=tap42,script=no,downscript=no \ -netdev tap,id=hostnet43,ifname=tap43,script=no,downscript=no \ -netdev tap,id=hostnet44,ifname=tap44,script=no,downscript=no \ -netdev tap,id=hostnet45,ifname=tap45,script=no,downscript=no \ -netdev tap,id=hostnet46,ifname=tap46,script=no,downscript=no \ -netdev tap,id=hostnet47,ifname=tap47,script=no,downscript=no \ -netdev tap,id=hostnet48,ifname=tap48,script=no,downscript=no \ -netdev tap,id=hostnet49,ifname=tap49,script=no,downscript=no \ -netdev tap,id=hostnet50,ifname=tap50,script=no,downscript=no \ -netdev tap,id=hostnet51,ifname=tap51,script=no,downscript=no \ -netdev tap,id=hostnet52,ifname=tap52,script=no,downscript=no \ -netdev tap,id=hostnet53,ifname=tap53,script=no,downscript=no \ -netdev tap,id=hostnet54,ifname=tap54,script=no,downscript=no \ -netdev tap,id=hostnet55,ifname=tap55,script=no,downscript=no \ -netdev tap,id=hostnet56,ifname=tap56,script=no,downscript=no \ -netdev tap,id=hostnet57,ifname=tap57,script=no,downscript=no \ -netdev tap,id=hostnet58,ifname=tap58,script=no,downscript=no \ -netdev tap,id=hostnet59,ifname=tap59,script=no,downscript=no \ -netdev tap,id=hostnet60,ifname=tap60,script=no,downscript=no \ -netdev tap,id=hostnet61,ifname=tap61,script=no,downscript=no \ -netdev tap,id=hostnet62,ifname=tap62,script=no,downscript=no \ -netdev tap,id=hostnet63,ifname=tap63,script=no,downscript=no \ -netdev tap,id=hostnet64,ifname=tap64,script=no,downscript=no \ -netdev tap,id=hostnet65,ifname=tap65,script=no,downscript=no \ -netdev tap,id=hostnet66,ifname=tap66,script=no,downscript=no \ -netdev tap,id=hostnet67,ifname=tap67,script=no,downscript=no \ -netdev tap,id=hostnet68,ifname=tap68,script=no,downscript=no \ -netdev tap,id=hostnet69,ifname=tap69,script=no,downscript=no \ -netdev tap,id=hostnet70,ifname=tap70,script=no,downscript=no \ -netdev tap,id=hostnet71,ifname=tap71,script=no,downscript=no \ -netdev tap,id=hostnet72,ifname=tap72,script=no,downscript=no \ -netdev tap,id=hostnet73,ifname=tap73,script=no,downscript=no \ -netdev tap,id=hostnet74,ifname=tap74,script=no,downscript=no \ -netdev tap,id=hostnet75,ifname=tap75,script=no,downscript=no \ -netdev tap,id=hostnet76,ifname=tap76,script=no,downscript=no \ -netdev tap,id=hostnet77,ifname=tap77,script=no,downscript=no \ -netdev tap,id=hostnet78,ifname=tap78,script=no,downscript=no \ -netdev tap,id=hostnet79,ifname=tap79,script=no,downscript=no \ -netdev tap,id=hostnet80,ifname=tap80,script=no,downscript=no \ -netdev tap,id=hostnet81,ifname=tap81,script=no,downscript=no \ -netdev tap,id=hostnet82,ifname=tap82,script=no,downscript=no \ -netdev tap,id=hostnet83,ifname=tap83,script=no,downscript=no \ -netdev tap,id=hostnet84,ifname=tap84,script=no,downscript=no \ -netdev tap,id=hostnet85,ifname=tap85,script=no,downscript=no \ -netdev tap,id=hostnet86,ifname=tap86,script=no,downscript=no \ -netdev tap,id=hostnet87,ifname=tap87,script=no,downscript=no \ -netdev tap,id=hostnet88,ifname=tap88,script=no,downscript=no \ -netdev tap,id=hostnet89,ifname=tap89,script=no,downscript=no \ -netdev tap,id=hostnet90,ifname=tap90,script=no,downscript=no \ -netdev tap,id=hostnet91,ifname=tap91,script=no,downscript=no \ -netdev tap,id=hostnet92,ifname=tap92,script=no,downscript=no \ -netdev tap,id=hostnet93,ifname=tap93,script=no,downscript=no \ -netdev tap,id=hostnet94,ifname=tap94,script=no,downscript=no \ -netdev tap,id=hostnet95,ifname=tap95,script=no,downscript=no \ -netdev tap,id=hostnet96,ifname=tap96,script=no,downscript=no \ -netdev tap,id=hostnet97,ifname=tap97,script=no,downscript=no \ -netdev tap,id=hostnet98,ifname=tap98,script=no,downscript=no \ -netdev tap,id=hostnet99,ifname=tap99,script=no,downscript=no \ -netdev tap,id=hostnet100,ifname=tap100,script=no,downscript=no \ -netdev tap,id=hostnet101,ifname=tap101,script=no,downscript=no \ -netdev tap,id=hostnet102,ifname=tap102,script=no,downscript=no \ -netdev tap,id=hostnet103,ifname=tap103,script=no,downscript=no \ -netdev tap,id=hostnet104,ifname=tap104,script=no,downscript=no \ -netdev tap,id=hostnet105,ifname=tap105,script=no,downscript=no \ -netdev tap,id=hostnet106,ifname=tap106,script=no,downscript=no \ -netdev tap,id=hostnet107,ifname=tap107,script=no,downscript=no \ -netdev tap,id=hostnet108,ifname=tap108,script=no,downscript=no \ -netdev tap,id=hostnet109,ifname=tap109,script=no,downscript=no \ -netdev tap,id=hostnet110,ifname=tap110,script=no,downscript=no \ -netdev tap,id=hostnet111,ifname=tap111,script=no,downscript=no \ -netdev tap,id=hostnet112,ifname=tap112,script=no,downscript=no \ -netdev tap,id=hostnet113,ifname=tap113,script=no,downscript=no \ -netdev tap,id=hostnet114,ifname=tap114,script=no,downscript=no \ -netdev tap,id=hostnet115,ifname=tap115,script=no,downscript=no \ -netdev tap,id=hostnet116,ifname=tap116,script=no,downscript=no \ -netdev tap,id=hostnet117,ifname=tap117,script=no,downscript=no \ -netdev tap,id=hostnet118,ifname=tap118,script=no,downscript=no \ -netdev tap,id=hostnet119,ifname=tap119,script=no,downscript=no \ -netdev tap,id=hostnet120,ifname=tap120,script=no,downscript=no \ -netdev tap,id=hostnet121,ifname=tap121,script=no,downscript=no \ -netdev tap,id=hostnet122,ifname=tap122,script=no,downscript=no \ -netdev tap,id=hostnet123,ifname=tap123,script=no,downscript=no \ -netdev tap,id=hostnet124,ifname=tap124,script=no,downscript=no \ -netdev tap,id=hostnet125,ifname=tap125,script=no,downscript=no \ -netdev tap,id=hostnet126,ifname=tap126,script=no,downscript=no \ -netdev tap,id=hostnet127,ifname=tap127,script=no,downscript=no \ -netdev tap,id=hostnet128,ifname=tap128,script=no,downscript=no \ -netdev tap,id=hostnet129,ifname=tap129,script=no,downscript=no \ -netdev tap,id=hostnet130,ifname=tap130,script=no,downscript=no \ -netdev tap,id=hostnet131,ifname=tap131,script=no,downscript=no \ -netdev tap,id=hostnet132,ifname=tap132,script=no,downscript=no \ -netdev tap,id=hostnet133,ifname=tap133,script=no,downscript=no \ -netdev tap,id=hostnet134,ifname=tap134,script=no,downscript=no \ -netdev tap,id=hostnet135,ifname=tap135,script=no,downscript=no \ -netdev tap,id=hostnet136,ifname=tap136,script=no,downscript=no \ -netdev tap,id=hostnet137,ifname=tap137,script=no,downscript=no \ -netdev tap,id=hostnet138,ifname=tap138,script=no,downscript=no \ -netdev tap,id=hostnet139,ifname=tap139,script=no,downscript=no \ -netdev tap,id=hostnet140,ifname=tap140,script=no,downscript=no \ -netdev tap,id=hostnet141,ifname=tap141,script=no,downscript=no \ -netdev tap,id=hostnet142,ifname=tap142,script=no,downscript=no \ -netdev tap,id=hostnet143,ifname=tap143,script=no,downscript=no \ -netdev tap,id=hostnet144,ifname=tap144,script=no,downscript=no \ -netdev tap,id=hostnet145,ifname=tap145,script=no,downscript=no \ -netdev tap,id=hostnet146,ifname=tap146,script=no,downscript=no \ -netdev tap,id=hostnet147,ifname=tap147,script=no,downscript=no \ -netdev tap,id=hostnet148,ifname=tap148,script=no,downscript=no \ -netdev tap,id=hostnet149,ifname=tap149,script=no,downscript=no \ \ -device i82801b11-bridge,id=dmi-pci-bridge \ \ -device pci-bridge,id=bridge-1,chassis_nr=1,bus=dmi-pci-bridge \ -device pci-bridge,id=bridge-2,chassis_nr=2,bus=dmi-pci-bridge \ -device pci-bridge,id=bridge-3,chassis_nr=3,bus=dmi-pci-bridge \ -device pci-bridge,id=bridge-4,chassis_nr=4,bus=dmi-pci-bridge \ -device pci-bridge,id=bridge-5,chassis_nr=5,bus=dmi-pci-bridge \ \ -device e1000,netdev=hostnet0,bus=bridge-1,addr=0x1.0 \ -device e1000,netdev=hostnet1,bus=bridge-1,addr=0x2.0 \ -device e1000,netdev=hostnet2,bus=bridge-1,addr=0x3.0 \ -device e1000,netdev=hostnet3,bus=bridge-1,addr=0x4.0 \ -device e1000,netdev=hostnet4,bus=bridge-1,addr=0x5.0 \ -device e1000,netdev=hostnet5,bus=bridge-1,addr=0x6.0 \ -device e1000,netdev=hostnet6,bus=bridge-1,addr=0x7.0 \ -device e1000,netdev=hostnet7,bus=bridge-1,addr=0x8.0 \ -device e1000,netdev=hostnet8,bus=bridge-1,addr=0x9.0 \ -device e1000,netdev=hostnet9,bus=bridge-1,addr=0xa.0 \ -device e1000,netdev=hostnet10,bus=bridge-1,addr=0xb.0 \ -device e1000,netdev=hostnet11,bus=bridge-1,addr=0xc.0 \ -device e1000,netdev=hostnet12,bus=bridge-1,addr=0xd.0 \ -device e1000,netdev=hostnet13,bus=bridge-1,addr=0xe.0 \ -device e1000,netdev=hostnet14,bus=bridge-1,addr=0xf.0 \ -device e1000,netdev=hostnet15,bus=bridge-1,addr=0x10.0 \ -device e1000,netdev=hostnet16,bus=bridge-1,addr=0x11.0 \ -device e1000,netdev=hostnet17,bus=bridge-1,addr=0x12.0 \ -device e1000,netdev=hostnet18,bus=bridge-1,addr=0x13.0 \ -device e1000,netdev=hostnet19,bus=bridge-1,addr=0x14.0 \ -device e1000,netdev=hostnet20,bus=bridge-1,addr=0x15.0 \ -device e1000,netdev=hostnet21,bus=bridge-1,addr=0x16.0 \ -device e1000,netdev=hostnet22,bus=bridge-1,addr=0x17.0 \ -device e1000,netdev=hostnet23,bus=bridge-1,addr=0x18.0 \ -device e1000,netdev=hostnet24,bus=bridge-1,addr=0x19.0 \ -device e1000,netdev=hostnet25,bus=bridge-1,addr=0x1a.0 \ -device e1000,netdev=hostnet26,bus=bridge-1,addr=0x1b.0 \ -device e1000,netdev=hostnet27,bus=bridge-1,addr=0x1c.0 \ -device e1000,netdev=hostnet28,bus=bridge-1,addr=0x1d.0 \ -device e1000,netdev=hostnet29,bus=bridge-1,addr=0x1e.0 \ -device e1000,netdev=hostnet30,bus=bridge-1,addr=0x1f.0 \ \ -device e1000,netdev=hostnet31,bus=bridge-2,addr=0x1.0 \ -device e1000,netdev=hostnet32,bus=bridge-2,addr=0x2.0 \ -device e1000,netdev=hostnet33,bus=bridge-2,addr=0x3.0 \ -device e1000,netdev=hostnet34,bus=bridge-2,addr=0x4.0 \ -device e1000,netdev=hostnet35,bus=bridge-2,addr=0x5.0 \ -device e1000,netdev=hostnet36,bus=bridge-2,addr=0x6.0 \ -device e1000,netdev=hostnet37,bus=bridge-2,addr=0x7.0 \ -device e1000,netdev=hostnet38,bus=bridge-2,addr=0x8.0 \ -device e1000,netdev=hostnet39,bus=bridge-2,addr=0x9.0 \ -device e1000,netdev=hostnet40,bus=bridge-2,addr=0xa.0 \ -device e1000,netdev=hostnet41,bus=bridge-2,addr=0xb.0 \ -device e1000,netdev=hostnet42,bus=bridge-2,addr=0xc.0 \ -device e1000,netdev=hostnet43,bus=bridge-2,addr=0xd.0 \ -device e1000,netdev=hostnet44,bus=bridge-2,addr=0xe.0 \ -device e1000,netdev=hostnet45,bus=bridge-2,addr=0xf.0 \ -device e1000,netdev=hostnet46,bus=bridge-2,addr=0x10.0 \ -device e1000,netdev=hostnet47,bus=bridge-2,addr=0x11.0 \ -device e1000,netdev=hostnet48,bus=bridge-2,addr=0x12.0 \ -device e1000,netdev=hostnet49,bus=bridge-2,addr=0x13.0 \ -device e1000,netdev=hostnet50,bus=bridge-2,addr=0x14.0 \ -device e1000,netdev=hostnet51,bus=bridge-2,addr=0x15.0 \ -device e1000,netdev=hostnet52,bus=bridge-2,addr=0x16.0 \ -device e1000,netdev=hostnet53,bus=bridge-2,addr=0x17.0 \ -device e1000,netdev=hostnet54,bus=bridge-2,addr=0x18.0 \ -device e1000,netdev=hostnet55,bus=bridge-2,addr=0x19.0 \ -device e1000,netdev=hostnet56,bus=bridge-2,addr=0x1a.0 \ -device e1000,netdev=hostnet57,bus=bridge-2,addr=0x1b.0 \ -device e1000,netdev=hostnet58,bus=bridge-2,addr=0x1c.0 \ -device e1000,netdev=hostnet59,bus=bridge-2,addr=0x1d.0 \ -device e1000,netdev=hostnet60,bus=bridge-2,addr=0x1e.0 \ -device e1000,netdev=hostnet61,bus=bridge-2,addr=0x1f.0 \ \ -device e1000,netdev=hostnet62,bus=bridge-3,addr=0x1.0 \ -device e1000,netdev=hostnet63,bus=bridge-3,addr=0x2.0 \ -device e1000,netdev=hostnet64,bus=bridge-3,addr=0x3.0 \ -device e1000,netdev=hostnet65,bus=bridge-3,addr=0x4.0 \ -device e1000,netdev=hostnet66,bus=bridge-3,addr=0x5.0 \ -device e1000,netdev=hostnet67,bus=bridge-3,addr=0x6.0 \ -device e1000,netdev=hostnet68,bus=bridge-3,addr=0x7.0 \ -device e1000,netdev=hostnet69,bus=bridge-3,addr=0x8.0 \ -device e1000,netdev=hostnet70,bus=bridge-3,addr=0x9.0 \ -device e1000,netdev=hostnet71,bus=bridge-3,addr=0xa.0 \ -device e1000,netdev=hostnet72,bus=bridge-3,addr=0xb.0 \ -device e1000,netdev=hostnet73,bus=bridge-3,addr=0xc.0 \ -device e1000,netdev=hostnet74,bus=bridge-3,addr=0xd.0 \ -device e1000,netdev=hostnet75,bus=bridge-3,addr=0xe.0 \ -device e1000,netdev=hostnet76,bus=bridge-3,addr=0xf.0 \ -device e1000,netdev=hostnet77,bus=bridge-3,addr=0x10.0 \ -device e1000,netdev=hostnet78,bus=bridge-3,addr=0x11.0 \ -device e1000,netdev=hostnet79,bus=bridge-3,addr=0x12.0 \ -device e1000,netdev=hostnet80,bus=bridge-3,addr=0x13.0 \ -device e1000,netdev=hostnet81,bus=bridge-3,addr=0x14.0 \ -device e1000,netdev=hostnet82,bus=bridge-3,addr=0x15.0 \ -device e1000,netdev=hostnet83,bus=bridge-3,addr=0x16.0 \ -device e1000,netdev=hostnet84,bus=bridge-3,addr=0x17.0 \ -device e1000,netdev=hostnet85,bus=bridge-3,addr=0x18.0 \ -device e1000,netdev=hostnet86,bus=bridge-3,addr=0x19.0 \ -device e1000,netdev=hostnet87,bus=bridge-3,addr=0x1a.0 \ -device e1000,netdev=hostnet88,bus=bridge-3,addr=0x1b.0 \ -device e1000,netdev=hostnet89,bus=bridge-3,addr=0x1c.0 \ -device e1000,netdev=hostnet90,bus=bridge-3,addr=0x1d.0 \ -device e1000,netdev=hostnet91,bus=bridge-3,addr=0x1e.0 \ -device e1000,netdev=hostnet92,bus=bridge-3,addr=0x1f.0 \ \ -device e1000,netdev=hostnet93,bus=bridge-4,addr=0x1.0 \ -device e1000,netdev=hostnet94,bus=bridge-4,addr=0x2.0 \ -device e1000,netdev=hostnet95,bus=bridge-4,addr=0x3.0 \ -device e1000,netdev=hostnet96,bus=bridge-4,addr=0x4.0 \ -device e1000,netdev=hostnet97,bus=bridge-4,addr=0x5.0 \ -device e1000,netdev=hostnet98,bus=bridge-4,addr=0x6.0 \ -device e1000,netdev=hostnet99,bus=bridge-4,addr=0x7.0 \ -device e1000,netdev=hostnet100,bus=bridge-4,addr=0x8.0 \ -device e1000,netdev=hostnet101,bus=bridge-4,addr=0x9.0 \ -device e1000,netdev=hostnet102,bus=bridge-4,addr=0xa.0 \ -device e1000,netdev=hostnet103,bus=bridge-4,addr=0xb.0 \ -device e1000,netdev=hostnet104,bus=bridge-4,addr=0xc.0 \ -device e1000,netdev=hostnet105,bus=bridge-4,addr=0xd.0 \ -device e1000,netdev=hostnet106,bus=bridge-4,addr=0xe.0 \ -device e1000,netdev=hostnet107,bus=bridge-4,addr=0xf.0 \ -device e1000,netdev=hostnet108,bus=bridge-4,addr=0x10.0 \ -device e1000,netdev=hostnet109,bus=bridge-4,addr=0x11.0 \ -device e1000,netdev=hostnet110,bus=bridge-4,addr=0x12.0 \ -device e1000,netdev=hostnet111,bus=bridge-4,addr=0x13.0 \ -device e1000,netdev=hostnet112,bus=bridge-4,addr=0x14.0 \ -device e1000,netdev=hostnet113,bus=bridge-4,addr=0x15.0 \ -device e1000,netdev=hostnet114,bus=bridge-4,addr=0x16.0 \ -device e1000,netdev=hostnet115,bus=bridge-4,addr=0x17.0 \ -device e1000,netdev=hostnet116,bus=bridge-4,addr=0x18.0 \ -device e1000,netdev=hostnet117,bus=bridge-4,addr=0x19.0 \ -device e1000,netdev=hostnet118,bus=bridge-4,addr=0x1a.0 \ -device e1000,netdev=hostnet119,bus=bridge-4,addr=0x1b.0 \ -device e1000,netdev=hostnet120,bus=bridge-4,addr=0x1c.0 \ -device e1000,netdev=hostnet121,bus=bridge-4,addr=0x1d.0 \ -device e1000,netdev=hostnet122,bus=bridge-4,addr=0x1e.0 \ -device e1000,netdev=hostnet123,bus=bridge-4,addr=0x1f.0 \ \ -device e1000,netdev=hostnet124,bus=bridge-5,addr=0x1.0 \ -device e1000,netdev=hostnet125,bus=bridge-5,addr=0x2.0 \ -device e1000,netdev=hostnet126,bus=bridge-5,addr=0x3.0 \ -device e1000,netdev=hostnet127,bus=bridge-5,addr=0x4.0 \ -device e1000,netdev=hostnet128,bus=bridge-5,addr=0x5.0 \ -device e1000,netdev=hostnet129,bus=bridge-5,addr=0x6.0 \ -device e1000,netdev=hostnet130,bus=bridge-5,addr=0x7.0 \ -device e1000,netdev=hostnet131,bus=bridge-5,addr=0x8.0 \ -device e1000,netdev=hostnet132,bus=bridge-5,addr=0x9.0 \ -device e1000,netdev=hostnet133,bus=bridge-5,addr=0xa.0 \ -device e1000,netdev=hostnet134,bus=bridge-5,addr=0xb.0 \ -device e1000,netdev=hostnet135,bus=bridge-5,addr=0xc.0 \ -device e1000,netdev=hostnet136,bus=bridge-5,addr=0xd.0 \ -device e1000,netdev=hostnet137,bus=bridge-5,addr=0xe.0 \ -device e1000,netdev=hostnet138,bus=bridge-5,addr=0xf.0 \ -device e1000,netdev=hostnet139,bus=bridge-5,addr=0x10.0 \ -device e1000,netdev=hostnet140,bus=bridge-5,addr=0x11.0 \ -device e1000,netdev=hostnet141,bus=bridge-5,addr=0x12.0 \ -device e1000,netdev=hostnet142,bus=bridge-5,addr=0x13.0 \ -device e1000,netdev=hostnet143,bus=bridge-5,addr=0x14.0 \ -device e1000,netdev=hostnet144,bus=bridge-5,addr=0x15.0 \ -device e1000,netdev=hostnet145,bus=bridge-5,addr=0x16.0 \ -device e1000,netdev=hostnet146,bus=bridge-5,addr=0x17.0 \ -device e1000,netdev=hostnet147,bus=bridge-5,addr=0x18.0 \ -device e1000,netdev=hostnet148,bus=bridge-5,addr=0x19.0 \ -device e1000,netdev=hostnet149,bus=bridge-5,addr=0x1a.0 Thanks Laszlo