On 10/1/25 06:11, Kim, Dongwon wrote:
> Dmitry,
> 
> I had an assumption that you are using -machine q35 already but
> If not, you will need this too for enabling PCIE bus.
> 
>> -----Original Message-----
>> From: Kim, Dongwon
>> Sent: Tuesday, September 30, 2025 8:09 PM
>> To: 'Dmitry Osipenko' <[email protected]>; dri-
>> [email protected]
>> Subject: RE: [PATCH v4 0/3] Virtio-GPU S4 support
>>
>> Hi Dmitry,
>>
>>> Subject: Re: [PATCH v4 0/3] Virtio-GPU S4 support
>>>
>>> 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.
>>
>> [Kim, Dongwon] That option only works when you set up virtio-gpu as a PCIE
>> device.
>> I am wondering if you set up your PCIE bus. This are params I added for it.
>> -device pcie-root-port,id=root_port1,bus=pcie.0 \ -device virtio-
>> vga,bus=root_port1,x-pcie-pm-no-soft-reset=true \

Indeed, adding PCIE bus makes it work. There is no reset in S3 and virgl
continues to work after resume. Thanks a lot for the clarification.

Though, adding hostmem to virtio-vga-gl, needed for venus and native
contexts, doesn't work with a PCIE bus - VM hangs on boot. Perhaps more
config options needed.

-- 
Best regards,
Dmitry

Reply via email to