On Tue, Nov 30, 2021 at 02:32:49PM +0000, Peter Maydell wrote: > I've just spent a day or so trying to track down why PCI passthrough > of a virtio-blk-pci device wasn't working. The problem turns out to be > that by default virtio pci devices don't use the IOMMU, even when the > machine model has created an IOMMU and arranged for the PCI bus to > be underneath it. So when the L2 guest tries to program the virtio device, > the virtio device treats the IPAs it writes as if they were PAs and > of course the data structures it's looking for aren't there.
Because this is what legacy guests expect, and legacy configs are much more common than nested. > Why do we default this to 'off'? It seems pretty unhelpful not to > honour the existence of the IOMMU, and the failure mode is pretty > opaque (L2 guest just hangs)... > > thanks > -- PMM This should be handled by VFIO in L1 really, it can check for a device quirk and refuse binding if the feature bit is disabled. -- MST