virtio-gpu: disallow vIOMMU
PATCH 1/1 virtio-gpu: disallow vIOMMU
virtio-gpu has special code path that bypassed vIOMMU protection. So for now let's disable iommu_platform for the device until we fully support that (if needed).
After the patch, both virtio-vga and virtio-gpu won't allow to boot with iommu_platform parameter set.
CC Gerd Hoffmann <[email protected]>
Signed-off-by Peter Xu <[email protected]>
--- hw/display/virtio-gpu-pci.c | 8 +++++++- hw/display/virtio-gpu.c | 5 +++++ 2 files changed, 12 insertions(+), 1 deletion(-)
hw/display/virtio-gpu-pci.c +7 -1
@@ -28,10 +28,16 @@ static void virtio_gpu_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp)VirtIOGPU *g = &vgpu->vdev;DeviceState *vdev =DEVICE (&vgpu->vdev);int i; +Error *local_error =NULL ;qdev_set_parent_bus (vdev,BUS (&vpci_dev->bus));virtio_pci_force_virtio_1 (vpci_dev); -object_property_set_bool (OBJECT (vdev), true,"realized" , errp); +object_property_set_bool (OBJECT (vdev), true,"realized" , &local_error); + +if (local_error) { +error_propagate (errp, local_error); +return ; + }for (i =0 ; i < g->conf.max_outputs; i++) { object_property_set_link(OBJECT(g->scanout[i].con),
hw/display/virtio-gpu.c +5 -0
@@ -1173,6 +1173,11 @@ static void virtio_gpu_device_realize(DeviceState *qdev, Error **errp)Error *local_err =NULL ;int i; +if (virtio_host_has_feature (vdev,VIRTIO_F_IOMMU_PLATFORM )) { +error_setg (errp,"virtio-gpu does not support vIOMMU yet" ); +return ; + } +if (g->conf.max_outputs >VIRTIO_GPU_MAX_SCANOUTS ) {error_setg (errp,"invalid max_outputs > %d" ,VIRTIO_GPU_MAX_SCANOUTS );return ;
Signature · 1 line
2.14.3