diff options
author | Nikith Ganigarakoppal <Nikith.Ganigarakoppal@pmcs.com> | 2013-11-11 15:28:14 +0530 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2013-12-02 10:47:38 -0800 |
commit | 6cd60b37f72b2d15b8983431546af50b7064935d (patch) | |
tree | 633f75f4e9026187b4c2db97b23c3d002f365f35 /drivers/scsi/pm8001/pm8001_sas.h | |
parent | 7d029005484a6125a91a075518b9cfde830bc709 (diff) | |
download | op-kernel-dev-6cd60b37f72b2d15b8983431546af50b7064935d.zip op-kernel-dev-6cd60b37f72b2d15b8983431546af50b7064935d.tar.gz |
[SCSI] pm80xx: Tasklets synchronization fix.
When multiple vectors are used, the vector variable is over written,
resulting in unhandled operation for those vectors.
This fix prevents the problem by maitaining HBA instance and
vector values for each irq.
[jejb: checkpatch fixes]
Signed-off-by: Nikith.Ganigarakoppal@pmcs.com
Signed-off-by: Anandkumar.Santhanam@pmcs.com
Reviewed-by: Jack Wang <jinpu.wang@profitbricks.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/pm8001/pm8001_sas.h')
-rw-r--r-- | drivers/scsi/pm8001/pm8001_sas.h | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/scsi/pm8001/pm8001_sas.h b/drivers/scsi/pm8001/pm8001_sas.h index 6037d47..6c5fd5e 100644 --- a/drivers/scsi/pm8001/pm8001_sas.h +++ b/drivers/scsi/pm8001/pm8001_sas.h @@ -466,6 +466,10 @@ struct pm8001_hba_memspace { u64 membase; u32 memsize; }; +struct isr_param { + struct pm8001_hba_info *drv_inst; + u32 irq_id; +}; struct pm8001_hba_info { char name[PM8001_NAME_LENGTH]; struct list_head list; @@ -519,14 +523,13 @@ struct pm8001_hba_info { int number_of_intr;/*will be used in remove()*/ #endif #ifdef PM8001_USE_TASKLET - struct tasklet_struct tasklet; + struct tasklet_struct tasklet[PM8001_MAX_MSIX_VEC]; #endif u32 logging_level; u32 fw_status; u32 smp_exp_mode; - u32 int_vector; const struct firmware *fw_image; - u8 outq[PM8001_MAX_MSIX_VEC]; + struct isr_param irq_vector[PM8001_MAX_MSIX_VEC]; }; struct pm8001_work { |