mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 23:03:57 -04:00
drm/virtio: Support drm_panic with non-vmapped shmem BO
Pass array of pages of the scanout buffer to shmem BO, allowing drm_panic to work even if the BO is not vmapped. Link: https://lore.kernel.org/all/20250407140138.162383-3-jfalempe@redhat.com/ Signed-off-by: Jocelyn Falempe <jfalempe@redhat.com> Signed-off-by: Ryosuke Yasuoka <ryasuoka@redhat.com> Reviewed-by: Dmitry Osipenko <dmitry.osipenko@collabora.com> Tested-by: Dmitry Osipenko <dmitry.osipenko@collabora.com> Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com> [dmitry.osipenko@collabora.com: rebased on misc-next, fixed minor checkpatch warn] [dmitry.osipenko@collabora.com: changed commit message to use link tag] Link: https://lore.kernel.org/all/20250412132012.291837-1-ryasuoka@redhat.com/
This commit is contained in:
committed by
Dmitry Osipenko
parent
415cb45895
commit
2b5bd56bc1
@@ -508,11 +508,19 @@ static int virtio_drm_get_scanout_buffer(struct drm_plane *plane,
|
||||
|
||||
bo = gem_to_virtio_gpu_obj(plane->state->fb->obj[0]);
|
||||
|
||||
/* Only support mapped shmem bo */
|
||||
if (virtio_gpu_is_vram(bo) || drm_gem_is_imported(&bo->base.base) || !bo->base.vaddr)
|
||||
if (virtio_gpu_is_vram(bo) || drm_gem_is_imported(&bo->base.base))
|
||||
return -ENODEV;
|
||||
|
||||
iosys_map_set_vaddr(&sb->map[0], bo->base.vaddr);
|
||||
if (bo->base.vaddr) {
|
||||
iosys_map_set_vaddr(&sb->map[0], bo->base.vaddr);
|
||||
} else {
|
||||
struct drm_gem_shmem_object *shmem = &bo->base;
|
||||
|
||||
if (!shmem->pages)
|
||||
return -ENODEV;
|
||||
/* map scanout buffer later */
|
||||
sb->pages = shmem->pages;
|
||||
}
|
||||
|
||||
sb->format = plane->state->fb->format;
|
||||
sb->height = plane->state->fb->height;
|
||||
|
||||
Reference in New Issue
Block a user