drm/vmwgfx: Refuse DMA operation when SEV encryption is active
authorThomas Hellstrom <thellstrom@vmware.com>
Wed, 15 Jan 2020 20:48:19 +0000 (21:48 +0100)
committerThomas Hellstrom <thellstrom@vmware.com>
Thu, 12 Mar 2020 11:00:07 +0000 (12:00 +0100)
TTM doesn't yet fully support mapping of DMA memory when SEV is active,
so in that case, refuse DMA operation. For guest-backed object operation
this means 3D acceleration will be disabled. For host-backed, VRAM will be
used for data transfer between the guest and the device.

Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
drivers/gpu/drm/vmwgfx/vmwgfx_drv.c

index f2ec315..4f58364 100644 (file)
@@ -29,6 +29,7 @@
 #include <linux/dma-mapping.h>
 #include <linux/module.h>
 #include <linux/pci.h>
+#include <linux/mem_encrypt.h>
 
 #include <drm/drm_drv.h>
 #include <drm/drm_ioctl.h>
@@ -575,6 +576,10 @@ static int vmw_dma_select_mode(struct vmw_private *dev_priv)
                [vmw_dma_map_populate] = "Caching DMA mappings.",
                [vmw_dma_map_bind] = "Giving up DMA mappings early."};
 
+       /* TTM currently doesn't fully support SEV encryption. */
+       if (mem_encrypt_active())
+               return -EINVAL;
+
        if (vmw_force_coherent)
                dev_priv->map_mode = vmw_dma_alloc_coherent;
        else if (vmw_restrict_iommu)