Hi Dmitry,

> -----Original Message-----
> From: Dmitry Osipenko <[email protected]>
> Sent: Friday, November 14, 2025 5:16 AM
> To: Kim, Dongwon <[email protected]>; dri-
> [email protected]
> Cc: [email protected]; [email protected]; [email protected]
> Subject: Re: [PATCH v6 3/3] drm/virtio: Add PM notifier to restore objects
> after hibernation
> 
> On 11/13/25 23:47, Kim, Dongwon wrote:
> >> One option could be to explicitly destroy all stored objs upon
> >> hibernation, that way the restoring will always work.
> > Yes, we can do it to avoid that corner case. Or maybe we can just let it 
> > just
> run.
> > In this case, virtio_gpu_object_restore_all won't fail as shmem init
> > will still work but QEMU will justsend back errored replies as all of
> > those resources for BOs are still there in QEMU side but I think it
> > won't break anything. Do you see any issues in doing this that I might
> > be missing?? My assumption here is that the QEMU hasn't done any of
> virtio-gpu resets here as hibernation failed.
> 
> Correct, QEMU will emit a ton of "resource already exists" errors on aborted
> hibernation. There should be no errors neither from guest, nor from host.
> Note that QEMU is not the only VMM using VirtIO-GPU.
> 
> Two options here:
> 
> 1. Destroy stored host resources upon hibernation 2. Extend hibernation
> core [1] with addition of PM_HIBERNATION_UNPREPARE event that will be
> invoked when hibernation fails, while PM_POST_HIBERNATION will be
> invoked only after a successful hibernation
> 
> You may start with implementing the first option right away and later
> implement the second.

I am testing the first method - send unref message to QEMU so that connected
resources can be all removed from QEMU. But I found out there is cb that clean 
up
the object once this unref is processed and response is received. It means that
we can't just remove the resource/bo only in QEMU side. There is a way to do 
this
though. We can simply add one more fuction in virtgpu_vq.c that handles unref
but with cb = NULL. Is this what you want to try or do you have any better 
ideas?

> 
> [1]
> https://elixir.bootlin.com/linux/v6.17.7/source/kernel/power/hibernate.c#L
> 827
> 
> --
> Best regards,
> Dmitry

Reply via email to