Re: [PATCH 07/10] drm/omapdrm: Set VM flags in GEM-object mmap function

Javier Martinez Canillas
2023-07-05T09:04:14Z

Thomas Zimmermann <tzimmermann@suse.de> writes:

> Use the mmap callback in struct drm_gem_object_funcs to set the
> VM flags. Replace a number of mmap helpers in omapdrm with their
> GEM helper counterparts. Generate DRM's file-operations instance
> with GEM's DEFINE_DRM_GEM_FOPS.
>
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> Cc: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
> ---

> +static int omap_gem_object_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma)
> {
> struct omap_gem_object *omap_obj = to_omap_bo(obj);
>
> - vm_flags_mod(vma, VM_MIXEDMAP, VM_PFNMAP);
> + vm_flags_set(vma, VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP | VM_IO | VM_MIXEDMAP);
>
> if (omap_obj->flags & OMAP_BO_WC) {
> vma->vm_page_prot = pgprot_writecombine(vm_get_page_prot(vma->vm_flags));
> @@ -563,12 +548,14 @@ int omap_gem_mmap_obj(struct drm_gem_object *obj,
> * address_space (so unmap_mapping_range does what we want,
> * in particular in the case of mmap'd dmabufs)
> */
> - vma->vm_pgoff = 0;
> + vma->vm_pgoff -= drm_vma_node_start(&obj->vma_node);
> vma_set_file(vma, obj->filp);
>
> vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
> }
>
> + vma->vm_page_prot = pgprot_decrypted(vma->vm_page_prot);
> +
> return 0;
> }
>

I think this rework deserves a more elaborated commit message.

Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>

--
Best regards,

Javier Martinez Canillas
Core Platforms
Red Hat