Drivers: hv: vmbus: remove hv_synic_free_cpu() call from hv_synic_cleanup()
authorVitaly Kuznetsov <vkuznets@redhat.com>
Sat, 1 Aug 2015 23:08:05 +0000 (16:08 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 5 Aug 2015 05:25:28 +0000 (22:25 -0700)
We already have hv_synic_free() which frees all per-cpu pages for all
CPUs, let's remove the hv_synic_free_cpu() call from hv_synic_cleanup()
so it will be possible to do separate cleanup (writing to MSRs) and final
freeing. This is going to be used to assist kexec.

Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/hv/hv.c
drivers/hv/vmbus_drv.c

index d3943bceecc367c7b5241de3ba7933aae45f41c4..5b870424b502fe710d2bae1ea1c16c3c993e3a28 100644 (file)
@@ -530,6 +530,4 @@ void hv_synic_cleanup(void *arg)
        rdmsrl(HV_X64_MSR_SCONTROL, sctrl.as_uint64);
        sctrl.enable = 0;
        wrmsrl(HV_X64_MSR_SCONTROL, sctrl.as_uint64);
-
-       hv_synic_free_cpu(cpu);
 }
index cf204005ee784db8dc7bd3cab85e86c589f67cec..00d5158b4ac7bdfc54e2bf1e82110cc294d74dbc 100644 (file)
@@ -1120,6 +1120,7 @@ static void __exit vmbus_exit(void)
                tasklet_kill(hv_context.event_dpc[cpu]);
                smp_call_function_single(cpu, hv_synic_cleanup, NULL, 1);
        }
+       hv_synic_free();
        acpi_bus_unregister_driver(&vmbus_acpi_driver);
        hv_cpu_hotplug_quirk(false);
 }