[PATCH 5/9] drm/qxl: avoid accessing iosys_map internals.
Lucas De Marchi
lucas.demarchi at intel.com
Thu May 22 13:39:26 UTC 2025
On Thu, May 22, 2025 at 04:52:14PM +1000, Dave Airlie wrote:
>From: Dave Airlie <airlied at redhat.com>
>
>This uses the new accessors to avoid touching the iosys_map internals.
>
>Signed-off-by: Dave Airlie <airlied at redhat.com>
>---
> drivers/gpu/drm/qxl/qxl_display.c | 14 +++++++-------
> drivers/gpu/drm/qxl/qxl_draw.c | 4 ++--
> drivers/gpu/drm/qxl/qxl_object.c | 8 ++++----
> 3 files changed, 13 insertions(+), 13 deletions(-)
>
>diff --git a/drivers/gpu/drm/qxl/qxl_display.c b/drivers/gpu/drm/qxl/qxl_display.c
>index 70aff64ced87..e833b0bbff47 100644
>--- a/drivers/gpu/drm/qxl/qxl_display.c
>+++ b/drivers/gpu/drm/qxl/qxl_display.c
>@@ -602,16 +602,16 @@ static struct qxl_bo *qxl_create_cursor(struct qxl_device *qdev,
> cursor.chunk.next_chunk = 0;
> cursor.chunk.prev_chunk = 0;
> cursor.chunk.data_size = size;
>- if (cursor_map.is_iomem) {
>- memcpy_toio(cursor_map.vaddr_iomem,
>+ if (iosys_map_is_iomem(&cursor_map)) {
>+ memcpy_toio(iosys_map_ioptr(&cursor_map),
> &cursor, sizeof(cursor));
>- memcpy_toio(cursor_map.vaddr_iomem + sizeof(cursor),
>- user_map.vaddr, size);
>+ memcpy_toio(iosys_map_ioptr(&cursor_map) + sizeof(cursor),
>+ iosys_map_ptr(&user_map), size);
> } else {
>- memcpy(cursor_map.vaddr,
>+ memcpy(iosys_map_ptr(&cursor_map),
> &cursor, sizeof(cursor));
>- memcpy(cursor_map.vaddr + sizeof(cursor),
>- user_map.vaddr, size);
>+ memcpy(iosys_map_ptr(&cursor_map) + sizeof(cursor),
>+ iosys_map_ptr(&user_map), size);
these would better use iosys_map_memcpy_*, but could be a follow up to
this (automated?) conversion.
> }
>
> qxl_bo_vunmap_and_unpin(user_bo);
>diff --git a/drivers/gpu/drm/qxl/qxl_draw.c b/drivers/gpu/drm/qxl/qxl_draw.c
>index 3a3e127ce297..6000936bc8d0 100644
>--- a/drivers/gpu/drm/qxl/qxl_draw.c
>+++ b/drivers/gpu/drm/qxl/qxl_draw.c
>@@ -52,7 +52,7 @@ static struct qxl_rect *drawable_set_clipping(struct qxl_device *qdev,
> ret = qxl_bo_vmap_locked(clips_bo, &map);
> if (ret)
> return NULL;
>- dev_clips = map.vaddr; /* TODO: Use mapping abstraction properly */
>+ dev_clips = iosys_map_ptr(&map); /* TODO: Use mapping abstraction properly */
>
> dev_clips->num_rects = num_clips;
> dev_clips->chunk.next_chunk = 0;
>@@ -206,7 +206,7 @@ void qxl_draw_dirty_fb(struct qxl_device *qdev,
> ret = qxl_bo_vmap_locked(bo, &surface_map);
> if (ret)
> goto out_release_backoff;
>- surface_base = surface_map.vaddr; /* TODO: Use mapping abstraction properly */
>+ surface_base = iosys_map_ptr(&surface_map); /* TODO: Use mapping abstraction properly */
>
> ret = qxl_image_init(qdev, release, dimage, surface_base,
> left - dumb_shadow_offset,
>diff --git a/drivers/gpu/drm/qxl/qxl_object.c b/drivers/gpu/drm/qxl/qxl_object.c
>index 66635c55cf85..dcc1f6393885 100644
>--- a/drivers/gpu/drm/qxl/qxl_object.c
>+++ b/drivers/gpu/drm/qxl/qxl_object.c
>@@ -172,10 +172,10 @@ int qxl_bo_vmap_locked(struct qxl_bo *bo, struct iosys_map *map)
> bo->map_count = 1;
>
> /* TODO: Remove kptr in favor of map everywhere. */
>- if (bo->map.is_iomem)
>- bo->kptr = (void *)bo->map.vaddr_iomem;
>+ if (iosys_map_is_iomem(&bo->map))
>+ bo->kptr = (void *)iosys_map_ioptr(&bo->map);
this looks wrong as we then lose the __iomem. Or is this dead code and
it's never iomem? Anyway, pre-existent issue unrelated to this patch.
Lucas De Marchi
> else
>- bo->kptr = bo->map.vaddr;
>+ bo->kptr = iosys_map_ptr(&bo->map);
>
> out:
> *map = bo->map;
>@@ -230,7 +230,7 @@ void *qxl_bo_kmap_atomic_page(struct qxl_device *qdev,
> ret = qxl_bo_vmap_locked(bo, &bo_map);
> if (ret)
> return NULL;
>- rptr = bo_map.vaddr; /* TODO: Use mapping abstraction properly */
>+ rptr = iosys_map_ptr(&bo_map); /* TODO: Use mapping abstraction properly */
>
> rptr += page_offset * PAGE_SIZE;
> return rptr;
>--
>2.49.0
>
More information about the dri-devel
mailing list