On 9/24/25 22:47, [email protected] wrote:
> 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(-)
> 

Hi,

Hibernation works well for me with v4, going to apply patches soon.

Re `x-pcie-pm-no-soft-reset=true`, apparently it's not enough to have it
for S3. I'm still seeing virtio-gpu being reset with S3 and this reset
comes from a guest kernel writing PCI reg, resetting PCI device on
kernel resume. Will look further into it.

-- 
Best regards,
Dmitry

Reply via email to