]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
megaraid_sas: Initialize tasklet before setting up IRQs
authorsumit.saxena@avagotech.com <sumit.saxena@avagotech.com>
Thu, 15 Oct 2015 08:10:34 +0000 (13:40 +0530)
committerChuck Anderson <chuck.anderson@oracle.com>
Wed, 16 Mar 2016 13:35:58 +0000 (06:35 -0700)
Orabug: 22620626

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 <thenzl@redhat.com>
Signed-off-by: Tomas Henzl <thenzl@redhat.com>
Signed-off-by: Sumit Saxena <sumit.saxena@avagotech.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
(cherry picked from commit 91626c2701acad605c434b5e8245cbeea6671382)
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/megaraid/megaraid_sas_base.c

index 163d05908da24618dd592313688755789eb32d2c..bd97bdfe10b7d8dd33a8a170ea4886ccdafd3ad6 100644 (file)
@@ -4746,6 +4746,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))
@@ -4766,8 +4769,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);