Commit 569b11dcfa9d764e775f9e964a680c32265ab7f2
Committed by
James Bottomley
1 parent
e6bc863cf2
Exists in
master
and in
4 other branches
[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>
Showing 1 changed file with 4 additions and 4 deletions Side-by-side Diff
drivers/message/fusion/mptbase.c
| ... | ... | @@ -1630,7 +1630,7 @@ |
| 1630 | 1630 | pci_enable_device(pdev); |
| 1631 | 1631 | |
| 1632 | 1632 | /* enable interrupts */ |
| 1633 | - CHIPREG_WRITE32(&ioc->chip->IntMask, ~(MPI_HIM_RIM)); | |
| 1633 | + CHIPREG_WRITE32(&ioc->chip->IntMask, MPI_HIM_DIM); | |
| 1634 | 1634 | ioc->active = 1; |
| 1635 | 1635 | |
| 1636 | 1636 | /* F/W not running */ |
| ... | ... | @@ -1723,7 +1723,7 @@ |
| 1723 | 1723 | /* (re)Enable alt-IOC! (reply interrupt, FreeQ) */ |
| 1724 | 1724 | dprintk((KERN_INFO MYNAM ": alt-%s reply irq re-enabled\n", |
| 1725 | 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 | 1727 | ioc->alt_ioc->active = 1; |
| 1728 | 1728 | } |
| 1729 | 1729 | |
| ... | ... | @@ -1839,7 +1839,7 @@ |
| 1839 | 1839 | |
| 1840 | 1840 | if (ret == 0) { |
| 1841 | 1841 | /* Enable! (reply interrupt) */ |
| 1842 | - CHIPREG_WRITE32(&ioc->chip->IntMask, ~(MPI_HIM_RIM)); | |
| 1842 | + CHIPREG_WRITE32(&ioc->chip->IntMask, MPI_HIM_DIM); | |
| 1843 | 1843 | ioc->active = 1; |
| 1844 | 1844 | } |
| 1845 | 1845 | |
| ... | ... | @@ -1847,7 +1847,7 @@ |
| 1847 | 1847 | /* (re)Enable alt-IOC! (reply interrupt) */ |
| 1848 | 1848 | dinitprintk((KERN_INFO MYNAM ": alt-%s reply irq re-enabled\n", |
| 1849 | 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 | 1851 | ioc->alt_ioc->active = 1; |
| 1852 | 1852 | } |
| 1853 | 1853 |