Hi, On 11/20/25 04:41, Kim, Dongwon wrote: > 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? The cb certainly shall not be invoked. You only need to send the "DETACH" cmd to host. This should be akin to what I did in my older patches adding memory shmem shrinker support to virtio-gpu, please see [1] for inspiration.
[1] https://lore.kernel.org/dri-devel/[email protected]/ -- Best regards, Dmitry
