static int hyperv_cpuhp_online;
-static long __percpu *vmbus_evt;
+static DEFINE_PER_CPU(long, vmbus_evt);
/* Values parsed from ACPI DSDT */
int vmbus_irq;
if (vmbus_irq == -1) {
hv_setup_vmbus_handler(vmbus_isr);
} else {
- vmbus_evt = alloc_percpu(long);
ret = request_percpu_irq(vmbus_irq, vmbus_percpu_isr,
- "Hyper-V VMbus", vmbus_evt);
+ "Hyper-V VMbus", &vmbus_evt);
if (ret) {
pr_err("Can't request Hyper-V VMbus IRQ %d, Err %d",
vmbus_irq, ret);
- free_percpu(vmbus_evt);
goto err_setup;
}
}
return 0;
err_connect:
- if (vmbus_irq == -1) {
+ if (vmbus_irq == -1)
hv_remove_vmbus_handler();
- } else {
- free_percpu_irq(vmbus_irq, vmbus_evt);
- free_percpu(vmbus_evt);
- }
+ else
+ free_percpu_irq(vmbus_irq, &vmbus_evt);
err_setup:
if (IS_ENABLED(CONFIG_PREEMPT_RT) && vmbus_irq_initialized) {
smpboot_unregister_percpu_thread(&vmbus_irq_threads);
vmbus_connection.conn_state = DISCONNECTED;
hv_stimer_global_cleanup();
vmbus_disconnect();
- if (vmbus_irq == -1) {
+ if (vmbus_irq == -1)
hv_remove_vmbus_handler();
- } else {
- free_percpu_irq(vmbus_irq, vmbus_evt);
- free_percpu(vmbus_evt);
- }
+ else
+ free_percpu_irq(vmbus_irq, &vmbus_evt);
if (IS_ENABLED(CONFIG_PREEMPT_RT) && vmbus_irq_initialized) {
smpboot_unregister_percpu_thread(&vmbus_irq_threads);
vmbus_irq_initialized = false;