virtio-gpu: fix scanout migration post-load
commitdfcf74fa68c88233209aafc5f82728d0b9a1af5c
authorMarc-André Lureau <marcandre.lureau@redhat.com>
Mon, 15 Jan 2024 12:34:33 +0000 (15 16:34 +0400)
committerMarc-André Lureau <marcandre.lureau@redhat.com>
Tue, 12 Mar 2024 13:57:58 +0000 (12 17:57 +0400)
tree1b126b53454977277cf632a386419a9bb413fa6e
parentcab47b210598c11b76053a01316df9835b94dc09
virtio-gpu: fix scanout migration post-load

The current post-loading code for scanout has a FIXME: it doesn't take
the resource region/rect into account. But there is more, when adding
blob migration support in commit f66767f75c9, I didn't realize that blob
resources could be used for scanouts. This situationn leads to a crash
during post-load, as they don't have an associated res->image.

virtio_gpu_do_set_scanout() handle all cases, but requires the
associated virtio_gpu_framebuffer, which is currently not saved during
migration.

Add a v2 of "virtio-gpu-one-scanout" with the framebuffer fields, so we
can restore blob scanouts, as well as fixing the existing FIXME.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Sebastian Ott <sebott@redhat.com>
hw/display/virtio-gpu.c
include/hw/virtio/virtio-gpu.h