Commit 30d25a8f authored by Michael Kelley's avatar Michael Kelley Committed by Wei Liu
Browse files

Drivers: hv: vmbus: Simplify allocation of vmbus_evt



The per-cpu variable vmbus_evt is currently dynamically allocated. It's
only 8 bytes, so just allocate it statically to simplify and save a few
lines of code.

Signed-off-by: default avatarMichael Kelley <mhklinux@outlook.com>
Reviewed-by: default avatarLong Li <longli@microsoft.com>
Signed-off-by: default avatarWei Liu <wei.liu@kernel.org>
parent 36d6cbb6
Loading
Loading
Loading
Loading
+8 −14
Original line number Diff line number Diff line
@@ -52,7 +52,7 @@ static struct device *vmbus_root_device;

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;
@@ -1520,13 +1520,11 @@ static int vmbus_bus_init(void)
	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;
		}
	}
@@ -1555,12 +1553,10 @@ static int vmbus_bus_init(void)
	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);
@@ -3030,12 +3026,10 @@ static void __exit vmbus_exit(void)
	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;