On 9/5/19 4:08 AM, Alexey Kardashevskiy wrot>
I just tried hotplugging 3 virtio-net devices into a guest system with
v5.2 kernel and it seems working (i.e. BARs mapped, a driver is bound):
root@le-dbg:~# lspci -v | egrep -i '(virtio|Memory)'
00:00.0 Ethernet controller: Red Hat, Inc Virtio network device
Memory at 200080040000 (32-bit, non-prefetchable) [size=4K]
Memory at 210000000000 (64-bit, prefetchable) [size=16K]
Kernel driver in use: virtio-pci
00:01.0 Ethernet controller: Red Hat, Inc Virtio network device
Memory at 200080041000 (32-bit, non-prefetchable) [size=4K]
Memory at 210000004000 (64-bit, prefetchable) [size=16K]
Kernel driver in use: virtio-pci
00:02.0 Ethernet controller: Red Hat, Inc Virtio network device
Memory at 200080042000 (32-bit, non-prefetchable) [size=4K]
Memory at 210000008000 (64-bit, prefetchable) [size=16K]
Kernel driver in use: virtio-pci
Can you explain in detail what you are doing exactly and what is failing
and what qemu/guest kernel/guest distro is used? Thanks,
Sure. I'm on host kernel 5.2.8, guest on 5.3-rc7 (also tested on 5.1.16)
and I'm hotplugging ivshmem devices to a separate spapr-pci-host-bridge
defined as follows:
-device spapr-pci-host-bridge,index=1,id=pci.1
Device hotplug and BAR assignment does work, but IOMMU group assignment
seems to fail. This is evidenced by the kernel log which shows the
following message for the first device but not the second:
[ 136.849448] pci 0001:00:00.0: Adding to iommu group 1
Trying to bind the second device to vfio-pci as a result of this
fails:
[ 471.691948] vfio-pci: probe of 0001:00:01.0 failed with error -22
I traced that failure to a call to iommu_group_get() which returns
NULL for the second device. I then traced that back to the ordering
issue I described.
For your second and third virtio-net devices, was the
"Adding to iommu group N" kernel message printed?