[PATCH v1] Revert "drm/virtio: Allow importing prime buffers when 3D is enabled"

Dmitry Osipenko posted 1 patch 1 week, 6 days ago
drivers/gpu/drm/virtio/virtgpu_prime.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH v1] Revert "drm/virtio: Allow importing prime buffers when 3D is enabled"
Posted by Dmitry Osipenko 1 week, 6 days ago
Guest userspace may import udmabuf to vrend. Vrend doesn't support guest
blobs, and thus, further 3d operations with the imported blob are failing.
Typical scenario of the problem shown with mouse cursor RGBA image imported
into virtio-gpu, which previously was rejected by virtio-gpu driver.
Revert enabling guest blobs importing into vrend to fix the regression.

Link: https://gitlab.freedesktop.org/virgl/virglrenderer/-/work_items/674
Fixes: df4dc947c46b ("drm/virtio: Allow importing prime buffers when 3D is enabled")
Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
---
 drivers/gpu/drm/virtio/virtgpu_prime.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/virtio/virtgpu_prime.c b/drivers/gpu/drm/virtio/virtgpu_prime.c
index 149e6bcb5878..ebf471044d06 100644
--- a/drivers/gpu/drm/virtio/virtgpu_prime.c
+++ b/drivers/gpu/drm/virtio/virtgpu_prime.c
@@ -349,7 +349,7 @@ struct drm_gem_object *virtgpu_gem_prime_import(struct drm_device *dev,
 		}
 	}
 
-	if (!vgdev->has_resource_blob)
+	if (!vgdev->has_resource_blob || vgdev->has_virgl_3d)
 		return drm_gem_prime_import(dev, buf);
 
 	bo = kzalloc_obj(*bo);
-- 
2.55.0
Re: [PATCH v1] Revert "drm/virtio: Allow importing prime buffers when 3D is enabled"
Posted by Dmitry Osipenko 4 days, 19 hours ago
On 9/11/26 17:42, Dmitry Osipenko wrote:
> Guest userspace may import udmabuf to vrend. Vrend doesn't support guest
> blobs, and thus, further 3d operations with the imported blob are failing.
> Typical scenario of the problem shown with mouse cursor RGBA image imported
> into virtio-gpu, which previously was rejected by virtio-gpu driver.
> Revert enabling guest blobs importing into vrend to fix the regression.
> 
> Link: https://gitlab.freedesktop.org/virgl/virglrenderer/-/work_items/674
> Fixes: df4dc947c46b ("drm/virtio: Allow importing prime buffers when 3D is enabled")
> Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
> ---
>  drivers/gpu/drm/virtio/virtgpu_prime.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/virtio/virtgpu_prime.c b/drivers/gpu/drm/virtio/virtgpu_prime.c
> index 149e6bcb5878..ebf471044d06 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_prime.c
> +++ b/drivers/gpu/drm/virtio/virtgpu_prime.c
> @@ -349,7 +349,7 @@ struct drm_gem_object *virtgpu_gem_prime_import(struct drm_device *dev,
>  		}
>  	}
>  
> -	if (!vgdev->has_resource_blob)
> +	if (!vgdev->has_resource_blob || vgdev->has_virgl_3d)
>  		return drm_gem_prime_import(dev, buf);
>  
>  	bo = kzalloc_obj(*bo);

Applied to misc-fixes

-- 
Best regards,
Dmitry
Re: [PATCH v1] Revert "drm/virtio: Allow importing prime buffers when 3D is enabled"
Posted by Val Packett 1 week, 2 days ago
On 9/11/26 11:42 AM, Dmitry Osipenko wrote:
> Guest userspace may import udmabuf to vrend. Vrend doesn't support guest
> blobs, and thus, further 3d operations with the imported blob are failing.
> Typical scenario of the problem shown with mouse cursor RGBA image imported
> into virtio-gpu, which previously was rejected by virtio-gpu driver.
> Revert enabling guest blobs importing into vrend to fix the regression.
>
> Link: https://gitlab.freedesktop.org/virgl/virglrenderer/-/work_items/674
> Fixes: df4dc947c46b ("drm/virtio: Allow importing prime buffers when 3D is enabled")
> Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
> ---
>   drivers/gpu/drm/virtio/virtgpu_prime.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/virtio/virtgpu_prime.c b/drivers/gpu/drm/virtio/virtgpu_prime.c
> index 149e6bcb5878..ebf471044d06 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_prime.c
> +++ b/drivers/gpu/drm/virtio/virtgpu_prime.c
> @@ -349,7 +349,7 @@ struct drm_gem_object *virtgpu_gem_prime_import(struct drm_device *dev,
>   		}
>   	}
>   
> -	if (!vgdev->has_resource_blob)
> +	if (!vgdev->has_resource_blob || vgdev->has_virgl_3d)
>   		return drm_gem_prime_import(dev, buf);
>   
>   	bo = kzalloc_obj(*bo);

Oops, right, didn't think the back-compat issues all the way through on 
that one..

Reviewed-by: Val Packett <val@invisiblethingslab.com>


BTW, to clarify wrt the original use case this was intended for— I got 
it all working, but it adds new feature flags:

https://lore.kernel.org/virtio-comment/20260903021442.423274-1-val@invisiblethingslab.com/

So I'll "unlock" this again in new patches but not unconditionally of 
course. Rather, gated on the new F_CREATE_GUEST_HANDLE flag which would 
indicate that the device backend *does* support creating guest blobs 
with host handles (dmabufs).


Thanks,
~val

Re: [PATCH v1] Revert "drm/virtio: Allow importing prime buffers when 3D is enabled"
Posted by Yiwei Zhang 1 week, 6 days ago
On Fri, Sep 11, 2026 at 7:42 AM Dmitry Osipenko
<dmitry.osipenko@collabora.com> wrote:
>
> Guest userspace may import udmabuf to vrend. Vrend doesn't support guest
> blobs, and thus, further 3d operations with the imported blob are failing.
> Typical scenario of the problem shown with mouse cursor RGBA image imported
> into virtio-gpu, which previously was rejected by virtio-gpu driver.
> Revert enabling guest blobs importing into vrend to fix the regression.
>
> Link: https://gitlab.freedesktop.org/virgl/virglrenderer/-/work_items/674
> Fixes: df4dc947c46b ("drm/virtio: Allow importing prime buffers when 3D is enabled")
> Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
> ---
>  drivers/gpu/drm/virtio/virtgpu_prime.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/virtio/virtgpu_prime.c b/drivers/gpu/drm/virtio/virtgpu_prime.c
> index 149e6bcb5878..ebf471044d06 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_prime.c
> +++ b/drivers/gpu/drm/virtio/virtgpu_prime.c
> @@ -349,7 +349,7 @@ struct drm_gem_object *virtgpu_gem_prime_import(struct drm_device *dev,
>                 }
>         }
>
> -       if (!vgdev->has_resource_blob)
> +       if (!vgdev->has_resource_blob || vgdev->has_virgl_3d)
>                 return drm_gem_prime_import(dev, buf);
>
>         bo = kzalloc_obj(*bo);
> --
> 2.55.0
>

r-b. Thanks for the prompt revert!