aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMoore, Eric <Eric.Moore@lsil.com>2006-01-13 18:25:29 -0500
committerJames Bottomley <jejb@mulgrave.(none)>2006-01-14 11:55:10 -0500
commit569b11dcfa9d764e775f9e964a680c32265ab7f2 (patch)
treed35e71f3819a1b188176afd054f7f6d0df522224
parente6bc863cf25f30ed8e2a4d41b76d5688f8efaee9 (diff)
[SCSI] fusion - fix pci express bug
The fix is to write 'MPI_HIM_DIM' to the Host Interrupt Mask register, when enabling interrupts. Instead of the tilde of MPI_HIM_RIM. Apparently writing '1's to some of the reserved bits was causing all the bits to go to `1`, which effectly disabled all interrupts. Signed-off-by: Eric Moore <Eric.Moore@lsil.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
-rw-r--r--drivers/message/fusion/mptbase.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/message/fusion/mptbase.c b/drivers/message/fusion/mptbase.c
index 33213370027e..d890b2b8a93e 100644
--- a/drivers/message/fusion/mptbase.c
+++ b/drivers/message/fusion/mptbase.c
@@ -1630,7 +1630,7 @@ mpt_resume(struct pci_dev *pdev)
1630 pci_enable_device(pdev); 1630 pci_enable_device(pdev);
1631 1631
1632 /* enable interrupts */ 1632 /* enable interrupts */
1633 CHIPREG_WRITE32(&ioc->chip->IntMask, ~(MPI_HIM_RIM)); 1633 CHIPREG_WRITE32(&ioc->chip->IntMask, MPI_HIM_DIM);
1634 ioc->active = 1; 1634 ioc->active = 1;
1635 1635
1636 /* F/W not running */ 1636 /* F/W not running */
@@ -1723,7 +1723,7 @@ mpt_do_ioc_recovery(MPT_ADAPTER *ioc, u32 reason, int sleepFlag)
1723 /* (re)Enable alt-IOC! (reply interrupt, FreeQ) */ 1723 /* (re)Enable alt-IOC! (reply interrupt, FreeQ) */
1724 dprintk((KERN_INFO MYNAM ": alt-%s reply irq re-enabled\n", 1724 dprintk((KERN_INFO MYNAM ": alt-%s reply irq re-enabled\n",
1725 ioc->alt_ioc->name)); 1725 ioc->alt_ioc->name));
1726 CHIPREG_WRITE32(&ioc->alt_ioc->chip->IntMask, ~(MPI_HIM_RIM)); 1726 CHIPREG_WRITE32(&ioc->alt_ioc->chip->IntMask, MPI_HIM_DIM);
1727 ioc->alt_ioc->active = 1; 1727 ioc->alt_ioc->active = 1;
1728 } 1728 }
1729 1729
@@ -1839,7 +1839,7 @@ mpt_do_ioc_recovery(MPT_ADAPTER *ioc, u32 reason, int sleepFlag)
1839 1839
1840 if (ret == 0) { 1840 if (ret == 0) {
1841 /* Enable! (reply interrupt) */ 1841 /* Enable! (reply interrupt) */
1842 CHIPREG_WRITE32(&ioc->chip->IntMask, ~(MPI_HIM_RIM)); 1842 CHIPREG_WRITE32(&ioc->chip->IntMask, MPI_HIM_DIM);
1843 ioc->active = 1; 1843 ioc->active = 1;
1844 } 1844 }
1845 1845
@@ -1847,7 +1847,7 @@ mpt_do_ioc_recovery(MPT_ADAPTER *ioc, u32 reason, int sleepFlag)
1847 /* (re)Enable alt-IOC! (reply interrupt) */ 1847 /* (re)Enable alt-IOC! (reply interrupt) */
1848 dinitprintk((KERN_INFO MYNAM ": alt-%s reply irq re-enabled\n", 1848 dinitprintk((KERN_INFO MYNAM ": alt-%s reply irq re-enabled\n",
1849 ioc->alt_ioc->name)); 1849 ioc->alt_ioc->name));
1850 CHIPREG_WRITE32(&ioc->alt_ioc->chip->IntMask, ~(MPI_HIM_RIM)); 1850 CHIPREG_WRITE32(&ioc->alt_ioc->chip->IntMask, MPI_HIM_DIM);
1851 ioc->alt_ioc->active = 1; 1851 ioc->alt_ioc->active = 1;
1852 } 1852 }
1853 1853