On Fri, Mar 20, 2020 at 10:36:53AM +0100, David Hildenbrand wrote: > On 19.03.20 18:45, Michael S. Tsirkin wrote: > > On Thu, Mar 19, 2020 at 02:54:11PM +0100, David Hildenbrand wrote: > >> Why does the balloon driver not support VIRTIO_F_IOMMU_PLATFORM? It is > >> absolutely not clear to me. The introducing commit mentioned that it > >> "bypasses DMA". I fail to see that. > > > > Well sure one can put the balloon behind an IOMMU. If will shuffle PFN > > lists through a shared page. Problem is, you can't run an untrusted > > driver with it since if you do it can corrupt guest memory. > > And VIRTIO_F_IOMMU_PLATFORM so far meant that you can run > > a userspace driver. > > Just to clarify: Is it sufficient to clear VIRTIO_F_IOMMU_PLATFORM in > the *guest kernel driver* to prohibit *guest userspace drivers*?
No it isn't sufficient. > I would have thought we would have to disallow on the hypervisor/device > side. (no expert on user space drivers, especially how they > detect/enable/access virtio devices) QEMU does exactly this: static int virtio_validate_features(VirtIODevice *vdev) { VirtioDeviceClass *k = VIRTIO_DEVICE_GET_CLASS(vdev); if (virtio_host_has_feature(vdev, VIRTIO_F_IOMMU_PLATFORM) && !virtio_vdev_has_feature(vdev, VIRTIO_F_IOMMU_PLATFORM)) { return -EFAULT; } ... } > > > > Maybe we need a separate feature bit for this kind of thing where you > > assume the driver is trusted? Such a bit - unlike > > VIRTIO_F_IOMMU_PLATFORM - would allow legacy guests ... > > Let's take virtio-mem as an example. You cannot zap memory outside of > the scope of a virtio-mem device. So I assume having a user space driver > would be ok (although most probably of limited use :) )? > > Still, for virtio-mem, special s390x handling, similar to virtio-balloon > - (un)sharing of pages - would have to be performed. > > So some feature bits to cleanly separate the different limitations would > be great. At least in regard to s390x, I guess we don't have to worry > too much about legacy guests. So if you have the cycles to think through and document how balloon interacts with different access limitations, that would be great! > -- > Thanks, > > David / dhildenb