The following changes since commit 20677394b78ed4c4baa09c9a1bcfdf24d2b09fe4: Merge branch 'vhost' into vhost-next (2017-12-18 08:21:38 +0200) are available in the git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/kvms390/linux.git tags/virtio-s390-20171218-v2 for you to fetch changes up to 352d303fa99330e5d197afcc28b5270734e5c541: virtio/s390: implement PM operations for virtio_ccw (2017-12-18 10:23:47 +0100) ---------------------------------------------------------------- Hibernation support for virtio-ccw. ---------------------------------------------------------------- Christian Borntraeger (1): virtio/s390: implement PM operations for virtio_ccw drivers/s390/virtio/virtio_ccw.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) -- 2.13.6
Cornelia Huck
2017-Dec-18 16:21 UTC
[PULL v2 1/1] virtio/s390: implement PM operations for virtio_ccw
From: Christian Borntraeger <borntraeger at de.ibm.com> Suspend/Resume to/from disk currently fails. Let us wire up the necessary callbacks. This is mostly just forwarding the requests to the virtio drivers. The only thing that has to be done in virtio_ccw itself is to re-set the virtio revision. Suggested-by: Thomas Huth <thuth at redhat.com> Signed-off-by: Christian Borntraeger <borntraeger at de.ibm.com> Message-Id: <20171207141102.70190-2-borntraeger at de.ibm.com> Reviewed-by: David Hildenbrand <david at redhat.com> [CH: merged <20171218083706.223836-1-borntraeger at de.ibm.com> to fix !CONFIG_PM configs] Signed-off-by: Cornelia Huck <cohuck at redhat.com> --- drivers/s390/virtio/virtio_ccw.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/drivers/s390/virtio/virtio_ccw.c b/drivers/s390/virtio/virtio_ccw.c index b18fe2014cf2..985184ebda45 100644 --- a/drivers/s390/virtio/virtio_ccw.c +++ b/drivers/s390/virtio/virtio_ccw.c @@ -1300,6 +1300,9 @@ static int virtio_ccw_cio_notify(struct ccw_device *cdev, int event) vcdev->device_lost = true; rc = NOTIFY_DONE; break; + case CIO_OPER: + rc = NOTIFY_OK; + break; default: rc = NOTIFY_DONE; break; @@ -1312,6 +1315,27 @@ static struct ccw_device_id virtio_ids[] = { {}, }; +#ifdef CONFIG_PM_SLEEP +static int virtio_ccw_freeze(struct ccw_device *cdev) +{ + struct virtio_ccw_device *vcdev = dev_get_drvdata(&cdev->dev); + + return virtio_device_freeze(&vcdev->vdev); +} + +static int virtio_ccw_restore(struct ccw_device *cdev) +{ + struct virtio_ccw_device *vcdev = dev_get_drvdata(&cdev->dev); + int ret; + + ret = virtio_ccw_set_transport_rev(vcdev); + if (ret) + return ret; + + return virtio_device_restore(&vcdev->vdev); +} +#endif + static struct ccw_driver virtio_ccw_driver = { .driver = { .owner = THIS_MODULE, @@ -1324,6 +1348,11 @@ static struct ccw_driver virtio_ccw_driver = { .set_online = virtio_ccw_online, .notify = virtio_ccw_cio_notify, .int_class = IRQIO_VIR, +#ifdef CONFIG_PM_SLEEP + .freeze = virtio_ccw_freeze, + .thaw = virtio_ccw_restore, + .restore = virtio_ccw_restore, +#endif }; static int __init pure_hex(char **cp, unsigned int *val, int min_digit, -- 2.13.6
Christian Borntraeger
2018-Feb-12 08:52 UTC
[PULL v2 1/1] virtio/s390: implement PM operations for virtio_ccw
Michael, Conny, it seems that this patch did not make it into 4.16-rc1. On 12/18/2017 05:21 PM, Cornelia Huck wrote:> From: Christian Borntraeger <borntraeger at de.ibm.com> > > Suspend/Resume to/from disk currently fails. Let us wire > up the necessary callbacks. This is mostly just forwarding > the requests to the virtio drivers. The only thing that > has to be done in virtio_ccw itself is to re-set the > virtio revision. > > Suggested-by: Thomas Huth <thuth at redhat.com> > Signed-off-by: Christian Borntraeger <borntraeger at de.ibm.com> > Message-Id: <20171207141102.70190-2-borntraeger at de.ibm.com> > Reviewed-by: David Hildenbrand <david at redhat.com> > [CH: merged <20171218083706.223836-1-borntraeger at de.ibm.com> to fix > !CONFIG_PM configs] > Signed-off-by: Cornelia Huck <cohuck at redhat.com> > --- > drivers/s390/virtio/virtio_ccw.c | 29 +++++++++++++++++++++++++++++ > 1 file changed, 29 insertions(+) > > diff --git a/drivers/s390/virtio/virtio_ccw.c b/drivers/s390/virtio/virtio_ccw.c > index b18fe2014cf2..985184ebda45 100644 > --- a/drivers/s390/virtio/virtio_ccw.c > +++ b/drivers/s390/virtio/virtio_ccw.c > @@ -1300,6 +1300,9 @@ static int virtio_ccw_cio_notify(struct ccw_device *cdev, int event) > vcdev->device_lost = true; > rc = NOTIFY_DONE; > break; > + case CIO_OPER: > + rc = NOTIFY_OK; > + break; > default: > rc = NOTIFY_DONE; > break; > @@ -1312,6 +1315,27 @@ static struct ccw_device_id virtio_ids[] = { > {}, > }; > > +#ifdef CONFIG_PM_SLEEP > +static int virtio_ccw_freeze(struct ccw_device *cdev) > +{ > + struct virtio_ccw_device *vcdev = dev_get_drvdata(&cdev->dev); > + > + return virtio_device_freeze(&vcdev->vdev); > +} > + > +static int virtio_ccw_restore(struct ccw_device *cdev) > +{ > + struct virtio_ccw_device *vcdev = dev_get_drvdata(&cdev->dev); > + int ret; > + > + ret = virtio_ccw_set_transport_rev(vcdev); > + if (ret) > + return ret; > + > + return virtio_device_restore(&vcdev->vdev); > +} > +#endif > + > static struct ccw_driver virtio_ccw_driver = { > .driver = { > .owner = THIS_MODULE, > @@ -1324,6 +1348,11 @@ static struct ccw_driver virtio_ccw_driver = { > .set_online = virtio_ccw_online, > .notify = virtio_ccw_cio_notify, > .int_class = IRQIO_VIR, > +#ifdef CONFIG_PM_SLEEP > + .freeze = virtio_ccw_freeze, > + .thaw = virtio_ccw_restore, > + .restore = virtio_ccw_restore, > +#endif > }; > > static int __init pure_hex(char **cp, unsigned int *val, int min_digit, >