All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dave Airlie <airlied@gmail.com>
To: dri-devel@lists.freedesktop.org, tzimmermann@suse.de
Cc: intel-xe@lists.freedesktop.org
Subject: [PATCH 7/9] drm: avoid accessing iosys_map internals.
Date: Thu, 22 May 2025 16:52:16 +1000	[thread overview]
Message-ID: <20250522065519.318013-8-airlied@gmail.com> (raw)
In-Reply-To: <20250522065519.318013-1-airlied@gmail.com>

From: Dave Airlie <airlied@redhat.com>

This avoids directly accessing the iosys_map internals using new interfaces.

Signed-off-by: Dave Airlie <airlied@redhat.com>
---
 drivers/gpu/drm/drm_cache.c                   | 28 +++++++++----------
 drivers/gpu/drm/drm_fbdev_shmem.c             |  4 +--
 drivers/gpu/drm/drm_format_helper.c           | 16 +++++------
 drivers/gpu/drm/sysfb/drm_sysfb_modeset.c     |  2 +-
 .../gpu/drm/tests/drm_format_helper_test.c    | 26 ++++++++---------
 5 files changed, 38 insertions(+), 38 deletions(-)

diff --git a/drivers/gpu/drm/drm_cache.c b/drivers/gpu/drm/drm_cache.c
index 7051c9c909c2..8945d32d26d8 100644
--- a/drivers/gpu/drm/drm_cache.c
+++ b/drivers/gpu/drm/drm_cache.c
@@ -215,12 +215,12 @@ static void memcpy_fallback(struct iosys_map *dst,
 			    const struct iosys_map *src,
 			    unsigned long len)
 {
-	if (!dst->is_iomem && !src->is_iomem) {
-		memcpy(dst->vaddr, src->vaddr, len);
-	} else if (!src->is_iomem) {
-		iosys_map_memcpy_to(dst, 0, src->vaddr, len);
-	} else if (!dst->is_iomem) {
-		memcpy_fromio(dst->vaddr, src->vaddr_iomem, len);
+	if (!iosys_map_is_iomem(dst) && !iosys_map_is_iomem(src)) {
+		memcpy(iosys_map_ptr(dst), iosys_map_ptr(src), len);
+	} else if (iosys_map_is_iomem(src)) {
+		iosys_map_memcpy_to(dst, 0, iosys_map_ptr(src), len);
+	} else if (!iosys_map_is_iomem(dst)) {
+		memcpy_fromio(iosys_map_ptr(dst), iosys_map_ioptr(src), len);
 	} else {
 		/*
 		 * Bounce size is not performance tuned, but using a
@@ -228,8 +228,8 @@ static void memcpy_fallback(struct iosys_map *dst,
 		 * resorting to ioreadxx() + iowritexx().
 		 */
 		char bounce[MEMCPY_BOUNCE_SIZE];
-		void __iomem *_src = src->vaddr_iomem;
-		void __iomem *_dst = dst->vaddr_iomem;
+		void __iomem *_src = iosys_map_ioptr(src);
+		void __iomem *_dst = iosys_map_ioptr(dst);
 
 		while (len >= MEMCPY_BOUNCE_SIZE) {
 			memcpy_fromio(bounce, _src, MEMCPY_BOUNCE_SIZE);
@@ -312,12 +312,12 @@ void drm_memcpy_from_wc(struct iosys_map *dst,
 	}
 
 	if (static_branch_likely(&has_movntdqa)) {
-		__drm_memcpy_from_wc(dst->is_iomem ?
-				     (void __force *)dst->vaddr_iomem :
-				     dst->vaddr,
-				     src->is_iomem ?
-				     (void const __force *)src->vaddr_iomem :
-				     src->vaddr,
+		__drm_memcpy_from_wc(iosys_map_is_iomem(dst) ?
+				     (void __force *)iosys_map_ioptr(dst) :
+				     iosys_map_ptr(dst),
+				     iosys_map_is_iomem(src) ?
+				     (void const __force *)iosys_map_ioptr(src) :
+				     iosys_map_ptr(src),
 				     len);
 		return;
 	}
diff --git a/drivers/gpu/drm/drm_fbdev_shmem.c b/drivers/gpu/drm/drm_fbdev_shmem.c
index f824369baacd..d45b6826138b 100644
--- a/drivers/gpu/drm/drm_fbdev_shmem.c
+++ b/drivers/gpu/drm/drm_fbdev_shmem.c
@@ -159,7 +159,7 @@ int drm_fbdev_shmem_driver_fbdev_probe(struct drm_fb_helper *fb_helper,
 	ret = drm_client_buffer_vmap(buffer, &map);
 	if (ret) {
 		goto err_drm_client_buffer_delete;
-	} else if (drm_WARN_ON(dev, map.is_iomem)) {
+	} else if (drm_WARN_ON(dev, iosys_map_is_iomem(&map))) {
 		ret = -ENODEV; /* I/O memory not supported; use generic emulation */
 		goto err_drm_client_buffer_delete;
 	}
@@ -183,7 +183,7 @@ int drm_fbdev_shmem_driver_fbdev_probe(struct drm_fb_helper *fb_helper,
 	if (!shmem->map_wc)
 		info->flags |= FBINFO_READS_FAST; /* signal caching */
 	info->screen_size = sizes->surface_height * fb->pitches[0];
-	info->screen_buffer = map.vaddr;
+	info->screen_buffer = iosys_map_ptr(&map);
 	info->fix.smem_len = info->screen_size;
 
 	/* deferred I/O */
diff --git a/drivers/gpu/drm/drm_format_helper.c b/drivers/gpu/drm/drm_format_helper.c
index d36e6cacc575..cccec04bec4e 100644
--- a/drivers/gpu/drm/drm_format_helper.c
+++ b/drivers/gpu/drm/drm_format_helper.c
@@ -236,13 +236,13 @@ static int drm_fb_xfrm(struct iosys_map *dst,
 		dst_pitch = default_dst_pitch;
 
 	/* TODO: handle src in I/O memory here */
-	if (dst[0].is_iomem)
-		return __drm_fb_xfrm_toio(dst[0].vaddr_iomem, dst_pitch[0], dst_pixsize[0],
-					  src[0].vaddr, fb, clip, vaddr_cached_hint, state,
+	if (iosys_map_is_iomem(&dst[0]))
+		return __drm_fb_xfrm_toio(iosys_map_ioptr(&dst[0]), dst_pitch[0], dst_pixsize[0],
+					  iosys_map_ptr(&src[0]), fb, clip, vaddr_cached_hint, state,
 					  xfrm_line);
 	else
-		return __drm_fb_xfrm(dst[0].vaddr, dst_pitch[0], dst_pixsize[0],
-				     src[0].vaddr, fb, clip, vaddr_cached_hint, state,
+		return __drm_fb_xfrm(iosys_map_ptr(&dst[0]), dst_pitch[0], dst_pixsize[0],
+				     iosys_map_ptr(&src[0]), fb, clip, vaddr_cached_hint, state,
 				     xfrm_line);
 }
 
@@ -438,7 +438,7 @@ void drm_fb_memcpy(struct iosys_map *dst, const unsigned int *dst_pitch,
 		iosys_map_incr(&src_i, clip_offset(clip, fb->pitches[i], cpp_i));
 		for (y = 0; y < lines; y++) {
 			/* TODO: handle src_i in I/O memory here */
-			iosys_map_memcpy_to(&dst_i, 0, src_i.vaddr, len_i);
+			iosys_map_memcpy_to(&dst_i, 0, iosys_map_ptr(&src_i), len_i);
 			iosys_map_incr(&src_i, fb->pitches[i]);
 			iosys_map_incr(&dst_i, dst_pitch_i);
 		}
@@ -1204,10 +1204,10 @@ void drm_fb_xrgb8888_to_mono(struct iosys_map *dst, const unsigned int *dst_pitc
 	unsigned int cpp = fb->format->cpp[0];
 	unsigned int len_src32 = linepixels * cpp;
 	struct drm_device *dev = fb->dev;
-	void *vaddr = src[0].vaddr;
+	void *vaddr = iosys_map_ptr(&src[0]);
 	unsigned int dst_pitch_0;
 	unsigned int y;
-	u8 *mono = dst[0].vaddr, *gray8;
+	u8 *mono = iosys_map_ptr(&dst[0]), *gray8;
 	u32 *src32;
 
 	if (drm_WARN_ON(dev, fb->format->format != DRM_FORMAT_XRGB8888))
diff --git a/drivers/gpu/drm/sysfb/drm_sysfb_modeset.c b/drivers/gpu/drm/sysfb/drm_sysfb_modeset.c
index ffaa2522ab96..0e1e1df22426 100644
--- a/drivers/gpu/drm/sysfb/drm_sysfb_modeset.c
+++ b/drivers/gpu/drm/sysfb/drm_sysfb_modeset.c
@@ -138,7 +138,7 @@ void drm_sysfb_plane_helper_atomic_disable(struct drm_plane *plane,
 	struct drm_sysfb_device *sysfb = to_drm_sysfb_device(dev);
 	struct iosys_map dst = sysfb->fb_addr;
 	struct drm_plane_state *plane_state = drm_atomic_get_new_plane_state(state, plane);
-	void __iomem *dst_vmap = dst.vaddr_iomem; /* TODO: Use mapping abstraction */
+	void __iomem *dst_vmap = iosys_map_ioptr(&dst); /* TODO: Use mapping abstraction */
 	unsigned int dst_pitch = sysfb->fb_pitch;
 	const struct drm_format_info *dst_format = sysfb->fb_format;
 	struct drm_rect dst_clip;
diff --git a/drivers/gpu/drm/tests/drm_format_helper_test.c b/drivers/gpu/drm/tests/drm_format_helper_test.c
index 35cd3405d045..c714dc57d216 100644
--- a/drivers/gpu/drm/tests/drm_format_helper_test.c
+++ b/drivers/gpu/drm/tests/drm_format_helper_test.c
@@ -739,13 +739,13 @@ static void drm_test_fb_xrgb8888_to_rgb565(struct kunit *test)
 	buf = le16buf_to_cpu(test, (__force const __le16 *)buf, dst_size / sizeof(__le16));
 	KUNIT_EXPECT_MEMEQ(test, buf, result->expected, dst_size);
 
-	buf = dst.vaddr; /* restore original value of buf */
+	buf = iosys_map_ptr(&dst); /* restore original value of buf */
 	drm_fb_xrgb8888_to_rgb565(&dst, &result->dst_pitch, &src, &fb, &params->clip,
 				  &fmtcnv_state, true);
 	buf = le16buf_to_cpu(test, (__force const __le16 *)buf, dst_size / sizeof(__le16));
 	KUNIT_EXPECT_MEMEQ(test, buf, result->expected_swab, dst_size);
 
-	buf = dst.vaddr;
+	buf = iosys_map_ptr(&dst);
 	memset(buf, 0, dst_size);
 
 	int blit_result = 0;
@@ -792,7 +792,7 @@ static void drm_test_fb_xrgb8888_to_xrgb1555(struct kunit *test)
 	buf = le16buf_to_cpu(test, (__force const __le16 *)buf, dst_size / sizeof(__le16));
 	KUNIT_EXPECT_MEMEQ(test, buf, result->expected, dst_size);
 
-	buf = dst.vaddr; /* restore original value of buf */
+	buf = iosys_map_ptr(&dst); /* restore original value of buf */
 	memset(buf, 0, dst_size);
 
 	int blit_result = 0;
@@ -839,7 +839,7 @@ static void drm_test_fb_xrgb8888_to_argb1555(struct kunit *test)
 	buf = le16buf_to_cpu(test, (__force const __le16 *)buf, dst_size / sizeof(__le16));
 	KUNIT_EXPECT_MEMEQ(test, buf, result->expected, dst_size);
 
-	buf = dst.vaddr; /* restore original value of buf */
+	buf = iosys_map_ptr(&dst); /* restore original value of buf */
 	memset(buf, 0, dst_size);
 
 	int blit_result = 0;
@@ -886,7 +886,7 @@ static void drm_test_fb_xrgb8888_to_rgba5551(struct kunit *test)
 	buf = le16buf_to_cpu(test, (__force const __le16 *)buf, dst_size / sizeof(__le16));
 	KUNIT_EXPECT_MEMEQ(test, buf, result->expected, dst_size);
 
-	buf = dst.vaddr; /* restore original value of buf */
+	buf = iosys_map_ptr(&dst); /* restore original value of buf */
 	memset(buf, 0, dst_size);
 
 	int blit_result = 0;
@@ -936,7 +936,7 @@ static void drm_test_fb_xrgb8888_to_rgb888(struct kunit *test)
 	drm_fb_xrgb8888_to_rgb888(&dst, dst_pitch, &src, &fb, &params->clip, &fmtcnv_state);
 	KUNIT_EXPECT_MEMEQ(test, buf, result->expected, dst_size);
 
-	buf = dst.vaddr; /* restore original value of buf */
+	buf = iosys_map_ptr(&dst); /* restore original value of buf */
 	memset(buf, 0, dst_size);
 
 	int blit_result = 0;
@@ -982,7 +982,7 @@ static void drm_test_fb_xrgb8888_to_bgr888(struct kunit *test)
 				  &fmtcnv_state);
 	KUNIT_EXPECT_MEMEQ(test, buf, result->expected, dst_size);
 
-	buf = dst.vaddr; /* restore original value of buf */
+	buf = iosys_map_ptr(&dst); /* restore original value of buf */
 	memset(buf, 0, dst_size);
 
 	int blit_result = 0;
@@ -1027,7 +1027,7 @@ static void drm_test_fb_xrgb8888_to_argb8888(struct kunit *test)
 	buf = le32buf_to_cpu(test, (__force const __le32 *)buf, dst_size / sizeof(u32));
 	KUNIT_EXPECT_MEMEQ(test, buf, result->expected, dst_size);
 
-	buf = dst.vaddr; /* restore original value of buf */
+	buf = iosys_map_ptr(&dst); /* restore original value of buf */
 	memset(buf, 0, dst_size);
 
 	int blit_result = 0;
@@ -1074,7 +1074,7 @@ static void drm_test_fb_xrgb8888_to_xrgb2101010(struct kunit *test)
 	buf = le32buf_to_cpu(test, buf, dst_size / sizeof(u32));
 	KUNIT_EXPECT_MEMEQ(test, buf, result->expected, dst_size);
 
-	buf = dst.vaddr; /* restore original value of buf */
+	buf = iosys_map_ptr(&dst); /* restore original value of buf */
 	memset(buf, 0, dst_size);
 
 	int blit_result = 0;
@@ -1119,7 +1119,7 @@ static void drm_test_fb_xrgb8888_to_argb2101010(struct kunit *test)
 	buf = le32buf_to_cpu(test, (__force const __le32 *)buf, dst_size / sizeof(u32));
 	KUNIT_EXPECT_MEMEQ(test, buf, result->expected, dst_size);
 
-	buf = dst.vaddr; /* restore original value of buf */
+	buf = iosys_map_ptr(&dst); /* restore original value of buf */
 	memset(buf, 0, dst_size);
 
 	int blit_result = 0;
@@ -1199,7 +1199,7 @@ static void drm_test_fb_swab(struct kunit *test)
 	buf = le32buf_to_cpu(test, (__force const __le32 *)buf, dst_size / sizeof(u32));
 	KUNIT_EXPECT_MEMEQ(test, buf, result->expected, dst_size);
 
-	buf = dst.vaddr; /* restore original value of buf */
+	buf = iosys_map_ptr(&dst); /* restore original value of buf */
 	memset(buf, 0, dst_size);
 
 	int blit_result;
@@ -1211,7 +1211,7 @@ static void drm_test_fb_swab(struct kunit *test)
 	KUNIT_EXPECT_FALSE(test, blit_result);
 	KUNIT_EXPECT_MEMEQ(test, buf, result->expected, dst_size);
 
-	buf = dst.vaddr;
+	buf = iosys_map_ptr(&dst);
 	memset(buf, 0, dst_size);
 
 	blit_result = drm_fb_blit(&dst, dst_pitch, DRM_FORMAT_BGRX8888, &src, &fb, &params->clip,
@@ -1221,7 +1221,7 @@ static void drm_test_fb_swab(struct kunit *test)
 	KUNIT_EXPECT_FALSE(test, blit_result);
 	KUNIT_EXPECT_MEMEQ(test, buf, result->expected, dst_size);
 
-	buf = dst.vaddr;
+	buf = iosys_map_ptr(&dst);
 	memset(buf, 0, dst_size);
 
 	struct drm_format_info mock_format = *fb.format;
-- 
2.49.0


  parent reply	other threads:[~2025-05-22  6:57 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-05-22  6:52 iosys-map: refactor to reduce struct size Dave Airlie
2025-05-22  6:52 ` [PATCH 1/9] iosys-map: add new accessor interfaces and use them internally Dave Airlie
2025-05-22 11:58   ` Thomas Zimmermann
2025-05-22 13:34     ` Lucas De Marchi
2025-05-22 14:00       ` Thomas Zimmermann
2025-05-22  6:52 ` [PATCH 2/9] udmabuf: use new iosys_map accessors Dave Airlie
2025-05-22  6:52 ` [PATCH 3/9] firmware/tegra: avoid accessing iosys_map internals Dave Airlie
2025-05-23  0:32   ` kernel test robot
2025-05-22  6:52 ` [PATCH 4/9] drm/xe: avoid accessing internals of iosys_map Dave Airlie
2025-05-22 13:56   ` Lucas De Marchi
2025-05-22  6:52 ` [PATCH 5/9] drm/qxl: avoid accessing iosys_map internals Dave Airlie
2025-05-22 13:39   ` Lucas De Marchi
2025-05-22  6:52 ` [PATCH 6/9] drm/ttm: " Dave Airlie
2025-05-22  6:52 ` Dave Airlie [this message]
2025-05-22  6:52 ` [PATCH 8/9] iosys: hide internal details of implementation Dave Airlie
2025-05-22 12:05   ` Thomas Zimmermann
2025-05-22 23:30   ` kernel test robot
2025-05-22  6:52 ` [PATCH 9/9] iosys_map: embed the is_iomem bit into the pointer Dave Airlie
2025-05-22  8:48   ` Jani Nikula
2025-05-22 12:10   ` Thomas Zimmermann
2025-05-22 15:09   ` Lucas De Marchi
2025-05-22 20:32     ` Dave Airlie
2025-05-22 21:05       ` Lucas De Marchi
2025-05-23 12:31         ` Jocelyn Falempe
2025-05-26  6:39     ` Thomas Zimmermann
2025-05-26  7:58       ` Dave Airlie
2025-05-26  8:14         ` Thomas Zimmermann
2025-05-22  7:13 ` iosys-map: refactor to reduce struct size Dave Airlie
2025-05-22  7:20 ` ✓ CI.Patch_applied: success for series starting with [1/9] iosys-map: add new accessor interfaces and use them internally Patchwork
2025-05-22  7:20 ` ✗ CI.checkpatch: warning " Patchwork
2025-05-22  7:21 ` ✗ CI.KUnit: failure " Patchwork
2025-05-22 12:00 ` iosys-map: refactor to reduce struct size Thomas Zimmermann
2025-05-22 13:59 ` Lucas De Marchi
2025-06-27 17:31 ` Lucas De Marchi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250522065519.318013-8-airlied@gmail.com \
    --to=airlied@gmail.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=intel-xe@lists.freedesktop.org \
    --cc=tzimmermann@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.