From: Dongwon Kim <[email protected]>

This patch series introduces support for handling hibernation (S4)
in the virtio-gpu driver by implementing .freeze and .restore hooks,
along with a PM notifier to restore GPU resources upon resume.

Patch 1 adds virtgpu_freeze and virtgpu_restore functions, which manage
virtio queue teardown before suspend/hibernation and reinitialization
during resume.

Patch 2 implements a mechanism to track and restore virtio_gpu_object
instances, addressing the issue where QEMU discards resources during
virtio-gpu-reset triggered by hibernation.

Patch 3 adds a PM notifier that triggers resubmission of GPU objects to
QEMU when the guest resumes from hibernation.

These changes ensure that the virtio-gpu driver can reliably restore
virtio-gpu resources after hibernation, preventing resource loss that
leads to system's instability.

v2: 10ms sleep is added in virtgpu_freeze to avoid the situation
    the driver is locked up during resumption.

v3: Plain 10ms delay (v2) is replaced with wait calls which wait until
    the virtio queue is empty.
    (Dmitry Osipenko)

v4: New version of patchset only covers S4 case because loss of resources
    in S3 case can be avoided by skipping virtio-gpu-reset in QEMU
    (hw/display/virtio-gpu.c). For this, virtio-gpu-pci device should be
    attached to PCIE bus AND a PCIE option, 'x-pcie-pm-no-soft-reset' needs
    to be enabled when launching QEMU
    (e.g. -device virtio-gpu-pci,bus=port,x-pcie-pm-no-soft-reset=true)

Dongwon Kim (3):
  drm/virtio: Freeze and restore hooks to support suspend and resume
  drm/virtio: Add support for saving and restoring virtio_gpu_objects
  drm/virtio: Restore Virt-GPU res on hibernation resume via PM notifier

 drivers/gpu/drm/virtio/virtgpu_drv.c    | 60 ++++++++++++++++++++-
 drivers/gpu/drm/virtio/virtgpu_drv.h    | 13 +++++
 drivers/gpu/drm/virtio/virtgpu_kms.c    | 49 ++++++++++++++---
 drivers/gpu/drm/virtio/virtgpu_object.c | 71 +++++++++++++++++++++++++
 4 files changed, 186 insertions(+), 7 deletions(-)

-- 
2.34.1

Reply via email to