[PATCH 7/9] drm: avoid accessing iosys_map internals.

Dave Airlie airlied at gmail.com
Thu May 22 06:52:16 UTC 2025


From: Dave Airlie <airlied at redhat.com>

This avoids directly accessing the iosys_map internals using new interfaces.

Signed-off-by: Dave Airlie <airlied at 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



More information about the dri-devel mailing list