From: Thomas Hellstrom Date: Wed, 4 Dec 2019 10:42:15 +0000 (+0100) Subject: drm/vmwgfx: Use VM_PFNMAP instead of VM_MIXEDMAP when possible X-Git-Tag: v5.6-rc1~114^2~3^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b20414252068263c736d008e536658f9ce13d74a;p=thirdparty%2Flinux.git drm/vmwgfx: Use VM_PFNMAP instead of VM_MIXEDMAP when possible For shared, and read-only private mappings of graphics memory, use VM_PFNMAP instead of VM_MIXEDMAP. This means less accounting overhead when inserting and removing page-table entries. TTM doesn't do this by default, since there was a performance problem with book-keeping of write-combined mappings. Since vmwgfx solely uses cached mappings, that's not a problem and now that the TTM vm has largely been turned into helpers, we can use VM_PFNMAP on a per-driver basis Signed-off-by: Thomas Hellstrom Reviewed-by: Roland Scheidegger --- diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_glue.c b/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_glue.c index ce288756531ba..aa7e50f63b946 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_glue.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_glue.c @@ -45,6 +45,10 @@ int vmw_mmap(struct file *filp, struct vm_area_struct *vma) vma->vm_ops = &vmw_vm_ops; + /* Use VM_PFNMAP rather than VM_MIXEDMAP if not a COW mapping */ + if ((vma->vm_flags & (VM_SHARED | VM_MAYWRITE)) != VM_MAYWRITE) + vma->vm_flags = (vma->vm_flags & ~VM_MIXEDMAP) | VM_PFNMAP; + return 0; }