RE: [PATCH 2/3] hv: vmbus_post_msg: retry the hypercall on HV_STATUS_INVALID_CONNECTION_ID

From: KY Srinivasan
Date: Sun Feb 01 2015 - 14:48:37 EST




> -----Original Message-----
> From: Dexuan Cui
> Sent: Saturday, January 31, 2015 7:38 PM
> To: Vitaly Kuznetsov
> Cc: gregkh@xxxxxxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; driverdev-
> devel@xxxxxxxxxxxxxxxxxxxxxx; olaf@xxxxxxxxx; apw@xxxxxxxxxxxxx;
> jasowang@xxxxxxxxxx; KY Srinivasan; Haiyang Zhang
> Subject: RE: [PATCH 2/3] hv: vmbus_post_msg: retry the hypercall on
> HV_STATUS_INVALID_CONNECTION_ID
>
> > -----Original Message-----
> > From: Vitaly Kuznetsov [mailto:vkuznets@xxxxxxxxxx]
> > Sent: Saturday, January 31, 2015 1:29 AM
> > To: Dexuan Cui
> > Cc: gregkh@xxxxxxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx;
> > driverdev- devel@xxxxxxxxxxxxxxxxxxxxxx; olaf@xxxxxxxxx;
> > apw@xxxxxxxxxxxxx; jasowang@xxxxxxxxxx; KY Srinivasan; Haiyang Zhang
> > Subject: Re: [PATCH 2/3] hv: vmbus_post_msg: retry the hypercall on
> > HV_STATUS_INVALID_CONNECTION_ID
> >
> > Dexuan Cui <decui@xxxxxxxxxxxxx> writes:
> >
> > >> -----Original Message-----
> > >> From: Vitaly Kuznetsov [mailto:vkuznets@xxxxxxxxxx]
> > >> Sent: Thursday, January 29, 2015 21:31 PM
> > >> To: Dexuan Cui
> > >> Cc: gregkh@xxxxxxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx;
> > >> driverdev- devel@xxxxxxxxxxxxxxxxxxxxxx; olaf@xxxxxxxxx;
> > >> apw@xxxxxxxxxxxxx; jasowang@xxxxxxxxxx; KY Srinivasan; Haiyang
> > >> Zhang
> > >> Subject: Re: [PATCH 2/3] hv: vmbus_post_msg: retry the hypercall on
> > >> HV_STATUS_INVALID_CONNECTION_ID
> > >>
> > >> Dexuan Cui <decui@xxxxxxxxxxxxx> writes:
> > >>
> > >> > I got the hypercall error code on Hyper-V 2008 R2 when keeping
> > >> > running "rmmod hv_netvsc; modprobe hv_netvsc; rmmod hv_utils;
> > >> > modprobe
> > hv_utils"
> > >> > in a Linux guest.
> > >> >
> > >> > Without the patch, the driver can occasionally fail to load.
> > >> >
> > >> > CC: "K. Y. Srinivasan" <kys@xxxxxxxxxxxxx>
> > >> > Signed-off-by: Dexuan Cui <decui@xxxxxxxxxxxxx>
> > >> > ---
> > >> > arch/x86/include/uapi/asm/hyperv.h | 1 +
> > >> > drivers/hv/connection.c | 9 +++++++++
> > >> > 2 files changed, 10 insertions(+)
> > >> >
> > >> > diff --git a/arch/x86/include/uapi/asm/hyperv.h
> > >> b/arch/x86/include/uapi/asm/hyperv.h
> > >> > index 90c458e..b9daffb 100644
> > >> > --- a/arch/x86/include/uapi/asm/hyperv.h
> > >> > +++ b/arch/x86/include/uapi/asm/hyperv.h
> > >> > @@ -225,6 +225,7 @@
> > >> > #define HV_STATUS_INVALID_HYPERCALL_CODE 2
> > >> > #define HV_STATUS_INVALID_HYPERCALL_INPUT 3
> > >> > #define HV_STATUS_INVALID_ALIGNMENT 4
> > >> > +#define HV_STATUS_INVALID_CONNECTION_ID 18
> > >> > #define HV_STATUS_INSUFFICIENT_BUFFERS 19
> > >>
> > >> The gap beween 4 and 18 tells me there are other codes here ;-) Are
> > >> they all 'permanent failures'?
> > > It looks we only need to care about these error codes here.
> > >
> > > BTW, you can get all the hypercall error codes in the top level functional
> spec:
> > > http://blogs.msdn.com/b/virtual_pc_guy/archive/2014/02/17/updated-
> > hypervisor-top-level-functional-specification.aspx
> > > For this hypercall (0x005c), see "14.9.7 HvPostMessage".
> >
> > Thanks, interesting!
> >
> > Btw, HV_STATUS_INSUFFICIENT_MEMORY looks suspicious, looks like we
> can
> > hit it as well...
> >
> > I suggest we split all failures here in 2 classes:
> > 1) permanent
> > 2) worth retrying
> >
> > and treat them accordingly (no big changes, just maybe group them
> > within
> > hv_post_message() together as it is the only place where these codes
> > are being used).
> Thanks for the suggestion, Vitaly!
> I'll send out v2.

Thanks Dexuan.

K. Y
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/