diff options
author | Moore, Eric <Eric.Moore@lsil.com> | 2006-01-13 18:25:29 -0500 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.(none)> | 2006-01-14 11:55:10 -0500 |
commit | 569b11dcfa9d764e775f9e964a680c32265ab7f2 (patch) | |
tree | d35e71f3819a1b188176afd054f7f6d0df522224 /drivers/message/fusion/mptbase.c | |
parent | e6bc863cf25f30ed8e2a4d41b76d5688f8efaee9 (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>
Diffstat (limited to 'drivers/message/fusion/mptbase.c')
-rw-r--r-- | drivers/message/fusion/mptbase.c | 8 |
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 | ||