Hi all,
Modifications on kernel end is:
https://lore.kernel.org/lkml/20230608063857.1677973-2-Jiqian.Chen@amd.com/T/#u
On 2023/6/8 10:56, Jiqian Chen wrote:
> Hi all,
>
> I am working to implement virtgpu S3 function on Xen.
>
> Currently on Xen, if we start a guest who enables virtgpu, and then
> run "echo mem > /sys/power/state" to suspend guest. And run
> "sudo xl trigger <guest id> s3resume" to resume guest. We can find that
> the guest kernel comes back, but the display doesn't. It just shown a
> black screen.
>
> Through reading codes, I founded that when guest was during suspending,
> it called into Qemu to call virtio_gpu_gl_reset. In virtio_gpu_gl_reset,
> it destroyed all resources and reset renderer. This made the display
> gone after guest resumed.
>
> I think we should keep resources or prevent they being destroyed when
> guest is suspending. So, I add a new status named freezing to virtgpu,
> and add a new ctrl message VIRTIO_GPU_CMD_STATUS_FREEZING to get
> notification from guest. If freezing is set to true, and then Qemu will
> realize that guest is suspending, it will not destroy resources and will
> not reset renderer. If freezing is set to false, Qemu will do its origin
> actions, and has no other impaction.
>
> And now, display can come back and applications can continue their
> status after guest resumes.
>
> Jiqian Chen (1):
> virtgpu: do not destroy resources when guest suspend
>
> hw/display/virtio-gpu-gl.c | 9 ++++++-
> hw/display/virtio-gpu-virgl.c | 3 +++
> hw/display/virtio-gpu.c | 26 +++++++++++++++++++--
> include/hw/virtio/virtio-gpu.h | 3 +++
> include/standard-headers/linux/virtio_gpu.h | 9 +++++++
> 5 files changed, 47 insertions(+), 3 deletions(-)
>
--
Best regards,
Chen, Jiqian.