mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-12-28 16:56:26 +00:00
virtio_pmem: Add freeze/restore callbacks
Add basic freeze/restore PM callbacks to support hibernation (S4): - On freeze, delete vq and quiesce the device to prepare for snapshotting. - On restore, re-init vq and mark DRIVER_OK. Signed-off-by: Philip Chen <philipchen@chromium.org> Message-Id: <20240815004617.2325269-1-philipchen@chromium.org> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
3502596332
commit
76f0d870e7
@ -143,6 +143,28 @@ static void virtio_pmem_remove(struct virtio_device *vdev)
|
||||
virtio_reset_device(vdev);
|
||||
}
|
||||
|
||||
static int virtio_pmem_freeze(struct virtio_device *vdev)
|
||||
{
|
||||
vdev->config->del_vqs(vdev);
|
||||
virtio_reset_device(vdev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int virtio_pmem_restore(struct virtio_device *vdev)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = init_vq(vdev->priv);
|
||||
if (ret) {
|
||||
dev_err(&vdev->dev, "failed to initialize virtio pmem's vq\n");
|
||||
return ret;
|
||||
}
|
||||
virtio_device_ready(vdev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static unsigned int features[] = {
|
||||
VIRTIO_PMEM_F_SHMEM_REGION,
|
||||
};
|
||||
@ -155,6 +177,8 @@ static struct virtio_driver virtio_pmem_driver = {
|
||||
.validate = virtio_pmem_validate,
|
||||
.probe = virtio_pmem_probe,
|
||||
.remove = virtio_pmem_remove,
|
||||
.freeze = virtio_pmem_freeze,
|
||||
.restore = virtio_pmem_restore,
|
||||
};
|
||||
|
||||
module_virtio_driver(virtio_pmem_driver);
|
||||
|
Loading…
Reference in New Issue
Block a user