Commit 248d296d6d9df384996c2ed95676b367d876d48c
Exists in
master
and in
20 other branches
Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
Pull SCSI fix from James Bottomley: "This is a bug fix for the pm80xx driver. It turns out that when the new hardware support was added in 3.10 the IO command size was kept at the old hard coded value. This means that the driver attaches to some new cards and then simply hangs the system" * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: [SCSI] pm80xx: fix Adaptec 71605H hang
Showing 2 changed files Side-by-side Diff
drivers/scsi/pm8001/pm8001_hwi.c
... | ... | @@ -221,7 +221,7 @@ |
221 | 221 | pm8001_ha->main_cfg_tbl.pm8001_tbl.fatal_err_interrupt = 0x01; |
222 | 222 | for (i = 0; i < PM8001_MAX_INB_NUM; i++) { |
223 | 223 | pm8001_ha->inbnd_q_tbl[i].element_pri_size_cnt = |
224 | - PM8001_MPI_QUEUE | (64 << 16) | (0x00<<30); | |
224 | + PM8001_MPI_QUEUE | (pm8001_ha->iomb_size << 16) | (0x00<<30); | |
225 | 225 | pm8001_ha->inbnd_q_tbl[i].upper_base_addr = |
226 | 226 | pm8001_ha->memoryMap.region[IB + i].phys_addr_hi; |
227 | 227 | pm8001_ha->inbnd_q_tbl[i].lower_base_addr = |
... | ... | @@ -247,7 +247,7 @@ |
247 | 247 | } |
248 | 248 | for (i = 0; i < PM8001_MAX_OUTB_NUM; i++) { |
249 | 249 | pm8001_ha->outbnd_q_tbl[i].element_size_cnt = |
250 | - PM8001_MPI_QUEUE | (64 << 16) | (0x01<<30); | |
250 | + PM8001_MPI_QUEUE | (pm8001_ha->iomb_size << 16) | (0x01<<30); | |
251 | 251 | pm8001_ha->outbnd_q_tbl[i].upper_base_addr = |
252 | 252 | pm8001_ha->memoryMap.region[OB + i].phys_addr_hi; |
253 | 253 | pm8001_ha->outbnd_q_tbl[i].lower_base_addr = |
drivers/scsi/pm8001/pm80xx_hwi.c
... | ... | @@ -275,7 +275,7 @@ |
275 | 275 | |
276 | 276 | for (i = 0; i < PM8001_MAX_SPCV_INB_NUM; i++) { |
277 | 277 | pm8001_ha->inbnd_q_tbl[i].element_pri_size_cnt = |
278 | - PM8001_MPI_QUEUE | (64 << 16) | (0x00<<30); | |
278 | + PM8001_MPI_QUEUE | (pm8001_ha->iomb_size << 16) | (0x00<<30); | |
279 | 279 | pm8001_ha->inbnd_q_tbl[i].upper_base_addr = |
280 | 280 | pm8001_ha->memoryMap.region[IB + i].phys_addr_hi; |
281 | 281 | pm8001_ha->inbnd_q_tbl[i].lower_base_addr = |
... | ... | @@ -301,7 +301,7 @@ |
301 | 301 | } |
302 | 302 | for (i = 0; i < PM8001_MAX_SPCV_OUTB_NUM; i++) { |
303 | 303 | pm8001_ha->outbnd_q_tbl[i].element_size_cnt = |
304 | - PM8001_MPI_QUEUE | (64 << 16) | (0x01<<30); | |
304 | + PM8001_MPI_QUEUE | (pm8001_ha->iomb_size << 16) | (0x01<<30); | |
305 | 305 | pm8001_ha->outbnd_q_tbl[i].upper_base_addr = |
306 | 306 | pm8001_ha->memoryMap.region[OB + i].phys_addr_hi; |
307 | 307 | pm8001_ha->outbnd_q_tbl[i].lower_base_addr = |