2019-09-26 10:01:40

by Dexuan Cui

[permalink] [raw]
Subject: [PATCH v2] hv_sock: Add the support of hibernation

Add the necessary dummy callbacks for hibernation.

Signed-off-by: Dexuan Cui <[email protected]>
Acked-by: David S. Miller <[email protected]>
---

In v2:
Added David's Acked-by.
Removed [net-next] from the Subject.

@Sasha, can you please pick this up into the hyper-v tree?

net/vmw_vsock/hyperv_transport.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)

diff --git a/net/vmw_vsock/hyperv_transport.c b/net/vmw_vsock/hyperv_transport.c
index f2084e3f7aa4..4c02e38aa728 100644
--- a/net/vmw_vsock/hyperv_transport.c
+++ b/net/vmw_vsock/hyperv_transport.c
@@ -930,6 +930,24 @@ static int hvs_remove(struct hv_device *hdev)
return 0;
}

+/* hv_sock connections can not persist across hibernation, and all the hv_sock
+ * channels are forced to be rescinded before hibernation: see
+ * vmbus_bus_suspend(). Here the dummy hvs_suspend() and hvs_resume()
+ * are only needed because hibernation requires that every vmbus device's
+ * driver should have a .suspend and .resume callback: see vmbus_suspend().
+ */
+static int hvs_suspend(struct hv_device *hv_dev)
+{
+ /* Dummy */
+ return 0;
+}
+
+static int hvs_resume(struct hv_device *dev)
+{
+ /* Dummy */
+ return 0;
+}
+
/* This isn't really used. See vmbus_match() and vmbus_probe() */
static const struct hv_vmbus_device_id id_table[] = {
{},
@@ -941,6 +959,8 @@ static struct hv_driver hvs_drv = {
.id_table = id_table,
.probe = hvs_probe,
.remove = hvs_remove,
+ .suspend = hvs_suspend,
+ .resume = hvs_resume,
};

static int __init hvs_init(void)
--
2.19.1


2019-09-27 04:24:26

by kernel test robot

[permalink] [raw]
Subject: Re: [PATCH v2] hv_sock: Add the support of hibernation

Hi Dexuan,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on net-next/master]
[cannot apply to v5.3 next-20190925]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url: https://github.com/0day-ci/linux/commits/Dexuan-Cui/hv_sock-Add-the-support-of-hibernation/20190926-053950
config: x86_64-rhel-7.6 (attached as .config)
compiler: gcc-7 (Debian 7.4.0-13) 7.4.0
reproduce:
# save the attached .config to linux build tree
make ARCH=x86_64

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <[email protected]>

All error/warnings (new ones prefixed by >>):

>> net//vmw_vsock/hyperv_transport.c:970:3: error: 'struct hv_driver' has no member named 'suspend'
.suspend = hvs_suspend,
^~~~~~~
>> net//vmw_vsock/hyperv_transport.c:970:13: error: initialization from incompatible pointer type [-Werror=incompatible-pointer-types]
.suspend = hvs_suspend,
^~~~~~~~~~~
net//vmw_vsock/hyperv_transport.c:970:13: note: (near initialization for 'hvs_drv.shutdown')
>> net//vmw_vsock/hyperv_transport.c:971:3: error: 'struct hv_driver' has no member named 'resume'; did you mean 'remove'?
.resume = hvs_resume,
^~~~~~
remove
>> net//vmw_vsock/hyperv_transport.c:971:13: warning: excess elements in struct initializer
.resume = hvs_resume,
^~~~~~~~~~
net//vmw_vsock/hyperv_transport.c:971:13: note: (near initialization for 'hvs_drv')
cc1: some warnings being treated as errors

vim +970 net//vmw_vsock/hyperv_transport.c

963
964 static struct hv_driver hvs_drv = {
965 .name = "hv_sock",
966 .hvsock = true,
967 .id_table = id_table,
968 .probe = hvs_probe,
969 .remove = hvs_remove,
> 970 .suspend = hvs_suspend,
> 971 .resume = hvs_resume,
972 };
973

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation


Attachments:
(No filename) (2.19 kB)
.config.gz (46.94 kB)
Download all attachments

2019-09-27 04:42:46

by Dexuan Cui

[permalink] [raw]
Subject: RE: [PATCH v2] hv_sock: Add the support of hibernation

> From: [email protected]
> <[email protected]> On Behalf Of kbuild test robot
> Sent: Thursday, September 26, 2019 9:19 PM
>
> Hi Dexuan,
>
> Thank you for the patch! Yet something to improve:
>
> >> net//vmw_vsock/hyperv_transport.c:970:3: error: 'struct hv_driver' has no
> member named 'suspend'
> .suspend = hvs_suspend,
> ^~~~~~~

This is a false alarm. Your code base needs to be merged with the latest
Linus's tree, which has the prerequisite patch:
271b2224d42f ("Drivers: hv: vmbus: Implement suspend/resume for VSC drivers for hibernation")

Thanks,
-- Dexuan

2019-10-01 18:44:26

by Sasha Levin

[permalink] [raw]
Subject: Re: [PATCH v2] hv_sock: Add the support of hibernation

On Wed, Sep 25, 2019 at 09:34:13PM +0000, Dexuan Cui wrote:
>Add the necessary dummy callbacks for hibernation.
>
>Signed-off-by: Dexuan Cui <[email protected]>
>Acked-by: David S. Miller <[email protected]>

Queued up for hyperv-next, thanks!

--
Thanks,
Sasha