Commit 248d296d6d9df384996c2ed95676b367d876d48c

Authored by Linus Torvalds

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 =