From: sumit.saxena@avagotech.com Date: Thu, 15 Oct 2015 08:10:34 +0000 (+0530) Subject: megaraid_sas: Initialize tasklet before setting up IRQs X-Git-Tag: v4.1.12-92~186^2~27 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=e65a0a12108e2ba4748282b54b3f984f02f3bce3;p=users%2Fjedix%2Flinux-maple.git megaraid_sas: Initialize tasklet before setting up IRQs 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 Signed-off-by: Tomas Henzl Signed-off-by: Sumit Saxena Signed-off-by: Martin K. Petersen (cherry picked from commit 91626c2701acad605c434b5e8245cbeea6671382) Signed-off-by: Martin K. Petersen --- diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c b/drivers/scsi/megaraid/megaraid_sas_base.c index 163d05908da2..bd97bdfe10b7 100644 --- a/drivers/scsi/megaraid/megaraid_sas_base.c +++ b/drivers/scsi/megaraid/megaraid_sas_base.c @@ -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);