It may happen (kdump), that an interrupt is invoked just after the setup_irqs 
function was called but before the tasklet was initialised.
At this phase the hw ints should have been disabled, but for unknown reason 
this mechanism seems to not work properly.

From: Tomas Henzl <the...@redhat.com>
Signed-off-by: Tomas Henzl <the...@redhat.com>
Signed-off-by: Sumit Saxena <sumit.sax...@avagotech.com>
---
 drivers/scsi/megaraid/megaraid_sas_base.c |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c 
b/drivers/scsi/megaraid/megaraid_sas_base.c
index 3214c7e..43e6193 100644
--- a/drivers/scsi/megaraid/megaraid_sas_base.c
+++ b/drivers/scsi/megaraid/megaraid_sas_base.c
@@ -4745,6 +4745,9 @@ static int megasas_init_fw(struct megasas_instance 
*instance)
                "current msix/online cpus\t: (%d/%d)\n",
                instance->msix_vectors, (unsigned int)num_online_cpus());
 
+       tasklet_init(&instance->isr_tasklet, instance->instancet->tasklet,
+               (unsigned long)instance);
+
        if (instance->msix_vectors ?
                megasas_setup_irqs_msix(instance, 1) :
                megasas_setup_irqs_ioapic(instance))
@@ -4765,8 +4768,6 @@ static int megasas_init_fw(struct megasas_instance 
*instance)
        if (instance->instancet->init_adapter(instance))
                goto fail_init_adapter;
 
-       tasklet_init(&instance->isr_tasklet, instance->instancet->tasklet,
-               (unsigned long)instance);
 
        instance->instancet->enable_intr(instance);
 
-- 
1.7.1

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to