diff mbox

[1/6] drm/nouveau: Fail fb creation from imported dma-bufs.

Message ID 20170329002720.11445-2-raof@ubuntu.com (mailing list archive)
State New, archived
Headers show

Commit Message

Christopher James Halse Rogers March 29, 2017, 12:27 a.m. UTC
From: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>

Any use of the framebuffer will migrate it to VRAM, which is not sensible for
an imported dma-buf.

Signed-off-by: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
CC: nouveau@lists.freedesktop.org
---
 drivers/gpu/drm/nouveau/nouveau_display.c | 4 ++++
 1 file changed, 4 insertions(+)

Comments

Maarten Lankhorst March 29, 2017, 8:47 a.m. UTC | #1
Op 29-03-17 om 02:27 schreef raof@ubuntu.com:
> From: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
>
> Any use of the framebuffer will migrate it to VRAM, which is not sensible for
> an imported dma-buf.
>
> Signed-off-by: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
> CC: nouveau@lists.freedesktop.org
> ---
>  drivers/gpu/drm/nouveau/nouveau_display.c | 4 ++++
>  1 file changed, 4 insertions(+)
>
> diff --git a/drivers/gpu/drm/nouveau/nouveau_display.c b/drivers/gpu/drm/nouveau/nouveau_display.c
> index 72fdba1a1c5d..e8e6bc7b6d51 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_display.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_display.c
> @@ -286,6 +286,10 @@ nouveau_user_framebuffer_create(struct drm_device *dev,
>  		return ERR_PTR(-ENOENT);
>  	nvbo = nouveau_gem_object(gem);
>  
> +	/* Handle is an imported dma-buf, so cannot be migrated to VRAM */
> +	if (gem->import_attach)
> +		return ERR_PTR(-EINVAL);
> +
>  	ret = nouveau_framebuffer_new(dev, mode_cmd, nvbo, &fb);
>  	if (ret == 0)
>  		return &fb->base;

I don't know if there's really a hard requirement for nouveau to scan out from GART on nv50+,
but it might be a bigger problem on earlier platforms.

Acked-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
diff mbox

Patch

diff --git a/drivers/gpu/drm/nouveau/nouveau_display.c b/drivers/gpu/drm/nouveau/nouveau_display.c
index 72fdba1a1c5d..e8e6bc7b6d51 100644
--- a/drivers/gpu/drm/nouveau/nouveau_display.c
+++ b/drivers/gpu/drm/nouveau/nouveau_display.c
@@ -286,6 +286,10 @@  nouveau_user_framebuffer_create(struct drm_device *dev,
 		return ERR_PTR(-ENOENT);
 	nvbo = nouveau_gem_object(gem);
 
+	/* Handle is an imported dma-buf, so cannot be migrated to VRAM */
+	if (gem->import_attach)
+		return ERR_PTR(-EINVAL);
+
 	ret = nouveau_framebuffer_new(dev, mode_cmd, nvbo, &fb);
 	if (ret == 0)
 		return &fb->base;