x86: hyperv: Fixup the (brain) damage caused by the irq cleanup

Compiling last minute changes without setting the proper config
options is not really clever.

Reported-by: Fengguang Wu <fengguang.wu@intel.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
Thomas Gleixner
2014-03-05 13:42:14 +01:00
parent abcfc543be
commit 76d388cd72
3 changed files with 11 additions and 25 deletions

View File

@@ -615,7 +615,7 @@ static void vmbus_on_msg_dpc(unsigned long data)
}
}
static irqreturn_t vmbus_isr(int irq, void *dev_id)
static void vmbus_isr(void)
{
int cpu = smp_processor_id();
void *page_addr;
@@ -625,7 +625,7 @@ static irqreturn_t vmbus_isr(int irq, void *dev_id)
page_addr = hv_context.synic_event_page[cpu];
if (page_addr == NULL)
return IRQ_NONE;
return;
event = (union hv_synic_event_flags *)page_addr +
VMBUS_MESSAGE_SINT;
@@ -661,15 +661,8 @@ static irqreturn_t vmbus_isr(int irq, void *dev_id)
msg = (struct hv_message *)page_addr + VMBUS_MESSAGE_SINT;
/* Check if there are actual msgs to be processed */
if (msg->header.message_type != HVMSG_NONE) {
handled = true;
if (msg->header.message_type != HVMSG_NONE)
tasklet_schedule(&msg_dpc);
}
if (handled)
return IRQ_HANDLED;
else
return IRQ_NONE;
}
/*
@@ -698,12 +691,7 @@ static int vmbus_bus_init(int irq)
if (ret)
goto err_cleanup;
ret = hv_setup_vmbus_irq(irq, vmbus_isr, hv_acpi_dev);
if (ret != 0) {
pr_err("Unable to request IRQ %d\n", irq);
goto err_unregister;
}
hv_setup_vmbus_irq(vmbus_isr);
ret = hv_synic_alloc();
if (ret)
@@ -723,9 +711,8 @@ static int vmbus_bus_init(int irq)
err_alloc:
hv_synic_free();
hv_remove_vmbus_irq(irq, hv_acpi_dev);
hv_remove_vmbus_irq();
err_unregister:
bus_unregister(&hv_bus);
err_cleanup:
@@ -917,7 +904,6 @@ static int __init hv_acpi_init(void)
/*
* Get irq resources first.
*/
ret = acpi_bus_register_driver(&vmbus_acpi_driver);
if (ret)
@@ -948,7 +934,7 @@ cleanup:
static void __exit vmbus_exit(void)
{
hv_remove_vmbus_irq(irq, hv_acpi_dev);
hv_remove_vmbus_irq();
vmbus_free_channels();
bus_unregister(&hv_bus);
hv_cleanup();