Skip to content

Instantly share code, notes, and snippets.

@notro
Created November 25, 2023 16:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save notro/53c1317e6061e4f9e70c0869ecfa63a3 to your computer and use it in GitHub Desktop.
Save notro/53c1317e6061e4f9e70c0869ecfa63a3 to your computer and use it in GitHub Desktop.
drm/gud: Backport driver to v5.10
From 51ffc57dcbb7f81ad3e24e28c7756f2b29f65980 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf@tronnes.org>
Date: Sat, 25 Nov 2023 17:20:13 +0100
Subject: [PATCH 4/4] drm/gud: Backport driver to v5.10
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
GUD was released as part of Linux v5.13.
This patch makes the necessary changes to make it compile on 5.10.
If a stable release less than v5.10.24 is used,
usb_intf_get_dma_device() is needed from commit
659ab7a ("drm: Use USB controller's DMA mask when importing dmabufs")
Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
---
drivers/gpu/drm/gud/gud_drv.c | 5 ++---
drivers/gpu/drm/gud/gud_pipe.c | 13 ++++++-------
2 files changed, 8 insertions(+), 10 deletions(-)
diff --git a/drivers/gpu/drm/gud/gud_drv.c b/drivers/gpu/drm/gud/gud_drv.c
index 727612124dd0..0dbb97ab5e00 100644
--- a/drivers/gpu/drm/gud/gud_drv.c
+++ b/drivers/gpu/drm/gud/gud_drv.c
@@ -19,7 +19,6 @@
#include <drm/drm_drv.h>
#include <drm/drm_fb_helper.h>
#include <drm/drm_fourcc.h>
-#include <drm/drm_gem_atomic_helper.h>
#include <drm/drm_gem_framebuffer_helper.h>
#include <drm/drm_gem_shmem_helper.h>
#include <drm/drm_managed.h>
@@ -364,7 +363,7 @@ static void gud_debugfs_init(struct drm_minor *minor)
static const struct drm_simple_display_pipe_funcs gud_pipe_funcs = {
.check = gud_pipe_check,
.update = gud_pipe_update,
- .prepare_fb = drm_gem_simple_display_pipe_prepare_fb,
+ .prepare_fb = drm_gem_fb_simple_display_pipe_prepare_fb,
};
static const struct drm_mode_config_funcs gud_mode_config_funcs = {
@@ -380,7 +379,7 @@ static const u64 gud_pipe_modifiers[] = {
DEFINE_DRM_GEM_FOPS(gud_fops);
-static const struct drm_driver gud_drm_driver = {
+static struct drm_driver gud_drm_driver = {
.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
.fops = &gud_fops,
DRM_GEM_SHMEM_DRIVER_OPS,
diff --git a/drivers/gpu/drm/gud/gud_pipe.c b/drivers/gpu/drm/gud/gud_pipe.c
index ab96afb94241..15aa8877407e 100644
--- a/drivers/gpu/drm/gud/gud_pipe.c
+++ b/drivers/gpu/drm/gud/gud_pipe.c
@@ -139,8 +139,7 @@ static int gud_prep_flush(struct gud_device *gdrm, struct drm_framebuffer *fb,
{
struct dma_buf_attachment *import_attach = fb->obj[0]->import_attach;
u8 compression = gdrm->compression;
- struct dma_buf_map map;
- void *vaddr, *buf;
+ void *vmap, *vaddr, *buf;
size_t pitch, len;
int ret = 0;
@@ -149,11 +148,11 @@ static int gud_prep_flush(struct gud_device *gdrm, struct drm_framebuffer *fb,
if (len > gdrm->bulk_len)
return -E2BIG;
- ret = drm_gem_shmem_vmap(fb->obj[0], &map);
- if (ret)
- return ret;
+ vmap = drm_gem_shmem_vmap(fb->obj[0]);
+ if (!vmap)
+ return -ENOMEM;
- vaddr = map.vaddr + fb->offsets[0];
+ vaddr = vmap + fb->offsets[0];
if (import_attach) {
ret = dma_buf_begin_cpu_access(import_attach->dmabuf, DMA_FROM_DEVICE);
@@ -215,7 +214,7 @@ static int gud_prep_flush(struct gud_device *gdrm, struct drm_framebuffer *fb,
if (import_attach)
dma_buf_end_cpu_access(import_attach->dmabuf, DMA_FROM_DEVICE);
vunmap:
- drm_gem_shmem_vunmap(fb->obj[0], &map);
+ drm_gem_shmem_vunmap(fb->obj[0], vmap);
return ret;
}
--
2.42.0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment