drm/ast: Init iosys_map pointer as I/O memory for damage handling
authorThomas Zimmermann <tzimmermann@suse.de>
Fri, 16 Dec 2022 19:30:05 +0000 (20:30 +0100)
committerThomas Zimmermann <tzimmermann@suse.de>
Tue, 20 Dec 2022 16:15:06 +0000 (17:15 +0100)
Ast hardware scans out the primary plane from video memory, which
is in I/O-memory space. Hence init the damage handler's iosys_map
pointer as I/O memory.

Not all platforms support accessing I/O memory as system memory,
although it's usually not a problem in ast's x86-based systems.

The error report is at [1].

Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Jocelyn Falempe <jfalempe@redhat.com>
Fixes: f2fa5a99ca81 ("drm/ast: Convert ast to SHMEM")
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Jocelyn Falempe <jfalempe@redhat.com>
Cc: Dave Airlie <airlied@redhat.com>
Cc: dri-devel@lists.freedesktop.org
Link: https://lore.kernel.org/lkml/202212170111.eInM0unS-lkp@intel.com/T/#u
Link: https://patchwork.freedesktop.org/patch/msgid/20221216193005.30280-1-tzimmermann@suse.de
drivers/gpu/drm/ast/ast_mode.c

index c744331..e82e9a8 100644 (file)
@@ -636,7 +636,7 @@ static void ast_handle_damage(struct ast_plane *ast_plane, struct iosys_map *src
                              struct drm_framebuffer *fb,
                              const struct drm_rect *clip)
 {
-       struct iosys_map dst = IOSYS_MAP_INIT_VADDR(ast_plane->vaddr);
+       struct iosys_map dst = IOSYS_MAP_INIT_VADDR_IOMEM(ast_plane->vaddr);
 
        iosys_map_incr(&dst, drm_fb_clip_offset(fb->pitches[0], fb->format, clip));
        drm_fb_memcpy(&dst, fb->pitches, src, fb, clip);