Re: [RFC PATCH v9 3/4] drm/virtio: implement userptr resource support

From: Dmitry Osipenko

Date: Fri Oct 09 2026 - 15:42:01 EST


24.09.2026 12:55, Honglei Huang пишет:
> +int virtio_gpu_userptr_create(struct virtio_gpu_device *vgdev,
> + struct drm_file *file,
> + struct virtio_gpu_object_params *params,
> + struct virtio_gpu_object **bo_ptr)
> +{
> + struct virtio_gpu_object_userptr *userptr;
> + struct virtio_gpu_mem_entry *ents = NULL;
> + struct sg_table *sgt;
> + struct mm_struct *mm;
> + unsigned long lock_limit;
> + unsigned long start;
> + unsigned long end;
> + s64 new_pinned;
> + unsigned int nents;
> + int ret;
> +
> + *bo_ptr = NULL;
> +
> + if (!params->size || !IS_ALIGNED(params->size, PAGE_SIZE) ||
> + params->userptr != (unsigned long)params->userptr)
> + return -EINVAL;
> +
> + start = params->userptr;
> + if (!IS_ALIGNED(start, PAGE_SIZE) ||
> + check_add_overflow(start, (unsigned long)params->size, &end))
> + return -EINVAL;

There is new vgdev->blob_alignment defining host page size as it may
differ from guest's page. Will be good to validate both.

--
Best regards,
Dmitry