RE: [PATCH 5/5] Drivers: hv: vmbus: Implement the protocol for tearing down vmbus state
From: KY Srinivasan
Date: Mon Apr 20 2015 - 10:32:43 EST
> -----Original Message-----
> From: Vitaly Kuznetsov [mailto:vkuznets@xxxxxxxxxx]
> Sent: Monday, April 20, 2015 7:17 AM
> To: KY Srinivasan
> Cc: gregkh@xxxxxxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx;
> devel@xxxxxxxxxxxxxxxxxxxxxx; olaf@xxxxxxxxx; apw@xxxxxxxxxxxxx;
> jasowang@xxxxxxxxxx
> Subject: Re: [PATCH 5/5] Drivers: hv: vmbus: Implement the protocol for
> tearing down vmbus state
>
> KY Srinivasan <kys@xxxxxxxxxxxxx> writes:
>
> >> -----Original Message-----
> >> From: Vitaly Kuznetsov [mailto:vkuznets@xxxxxxxxxx]
> >> Sent: Monday, April 20, 2015 2:40 AM
> >> To: KY Srinivasan
> >> Cc: gregkh@xxxxxxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx;
> >> devel@xxxxxxxxxxxxxxxxxxxxxx; olaf@xxxxxxxxx; apw@xxxxxxxxxxxxx;
> >> jasowang@xxxxxxxxxx
> >> Subject: Re: [PATCH 5/5] Drivers: hv: vmbus: Implement the protocol for
> >> tearing down vmbus state
> >>
> >> "K. Y. Srinivasan" <kys@xxxxxxxxxxxxx> writes:
> >>
> >> > Implement the protocol for tearing down the monitor state established
> >> with
> >> > the host.
> >> >
> >> > Signed-off-by: K. Y. Srinivasan <kys@xxxxxxxxxxxxx>
> >>
> >> Unfortunatelly this patch leads to the following crash:
> >
> > Thanks for testing Vitaly. The unload handling is what we want, maybe I
> need to
> > Invoke unload a little earlier.
>
> I actually sent two letters this morning :-) The other was:
>
> The problem is that we call vmbus_disconnect() too late in
> vmbus_exit(). We need to call it:
> 1) Before hv_cleanup() call as we free hypercall page there (that's what
> you see in my crash)
> 2) Before hv_remove_vmbus_irq() as we're waiting for the hypervisor to
> reply.
>
> This simple patch fixes the issue:
> diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c
> index 7870a90..2b56260 100644
> --- a/drivers/hv/vmbus_drv.c
> +++ b/drivers/hv/vmbus_drv.c
> @@ -1106,6 +1106,7 @@ static void __exit vmbus_exit(void)
>
> vmbus_connection.conn_state = DISCONNECTED;
> hv_synic_clockevents_cleanup();
> + vmbus_disconnect();
> hv_remove_vmbus_irq();
> vmbus_free_channels();
> if (ms_hyperv.features &
> HV_FEATURE_GUEST_CRASH_MSR_AVAILABLE) {
> @@ -1118,7 +1119,6 @@ static void __exit vmbus_exit(void)
> smp_call_function_single(cpu, hv_synic_cleanup, NULL,
> 1);
> acpi_bus_unregister_driver(&vmbus_acpi_driver);
> hv_cpu_hotplug_quirk(false);
> - vmbus_disconnect();
> }
>
> I suggest we incorporate it into your PATCH 5/5.
Thank you; I will resend the patch with your fix.
Regards,
K. Y
>
> --
> Vitaly
--
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/