diff options
author | Sumit.Saxena@avagotech.com <Sumit.Saxena@avagotech.com> | 2015-01-05 09:36:13 -0500 |
---|---|---|
committer | Christoph Hellwig <hch@lst.de> | 2015-01-09 09:44:35 -0500 |
commit | c2ced1719a1b903350955a511e1666e6d05a7f5b (patch) | |
tree | c52f515175715b6cbf9d327795da02509dc34271 /drivers | |
parent | ab2f0608e16d64a23a2dcc8d83b966a0e0a281f3 (diff) |
megaraid_sas: disable interrupt_mask before enabling hardware interrupts
Update driver "mask_interrupts" before enable/disable hardware interrupt
in order to avoid missing interrupts because of "mask_interrupts" still
set to 1 and hardware interrupts are enabled.
Cc: <stable@vger.kernel.org>
Signed-off-by: Sumit Saxena <sumit.saxena@avagotech.com>
Signed-off-by: Chaitra Basappa <chaitra.basappa@avagotech.com>
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/scsi/megaraid/megaraid_sas_fusion.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/scsi/megaraid/megaraid_sas_fusion.c b/drivers/scsi/megaraid/megaraid_sas_fusion.c index 7b23d347b69c..075c99e987bf 100644 --- a/drivers/scsi/megaraid/megaraid_sas_fusion.c +++ b/drivers/scsi/megaraid/megaraid_sas_fusion.c | |||
@@ -102,6 +102,8 @@ megasas_enable_intr_fusion(struct megasas_instance *instance) | |||
102 | { | 102 | { |
103 | struct megasas_register_set __iomem *regs; | 103 | struct megasas_register_set __iomem *regs; |
104 | regs = instance->reg_set; | 104 | regs = instance->reg_set; |
105 | |||
106 | instance->mask_interrupts = 0; | ||
105 | /* For Thunderbolt/Invader also clear intr on enable */ | 107 | /* For Thunderbolt/Invader also clear intr on enable */ |
106 | writel(~0, ®s->outbound_intr_status); | 108 | writel(~0, ®s->outbound_intr_status); |
107 | readl(®s->outbound_intr_status); | 109 | readl(®s->outbound_intr_status); |
@@ -110,7 +112,6 @@ megasas_enable_intr_fusion(struct megasas_instance *instance) | |||
110 | 112 | ||
111 | /* Dummy readl to force pci flush */ | 113 | /* Dummy readl to force pci flush */ |
112 | readl(®s->outbound_intr_mask); | 114 | readl(®s->outbound_intr_mask); |
113 | instance->mask_interrupts = 0; | ||
114 | } | 115 | } |
115 | 116 | ||
116 | /** | 117 | /** |