[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, ¶ms->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, ¶ms->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, ¶ms->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