aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/scsi/qla2xxx/qla_def.h2
-rw-r--r--drivers/scsi/qla2xxx/qla_mbx.c7
-rw-r--r--drivers/scsi/qla2xxx/qla_tmpl.c9
3 files changed, 15 insertions, 3 deletions
diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h
index 47f8b9b49bac..7f861474d7b5 100644
--- a/drivers/scsi/qla2xxx/qla_def.h
+++ b/drivers/scsi/qla2xxx/qla_def.h
@@ -3370,6 +3370,8 @@ struct qla_hw_data {
3370 3370
3371 uint32_t fw_shared_ram_start; 3371 uint32_t fw_shared_ram_start;
3372 uint32_t fw_shared_ram_end; 3372 uint32_t fw_shared_ram_end;
3373 uint32_t fw_ddr_ram_start;
3374 uint32_t fw_ddr_ram_end;
3373 3375
3374 uint16_t fw_options[16]; /* slots: 1,2,3,10,11 */ 3376 uint16_t fw_options[16]; /* slots: 1,2,3,10,11 */
3375 uint8_t fw_seriallink_options[4]; 3377 uint8_t fw_seriallink_options[4];
diff --git a/drivers/scsi/qla2xxx/qla_mbx.c b/drivers/scsi/qla2xxx/qla_mbx.c
index 968b84613096..9673a0b645ee 100644
--- a/drivers/scsi/qla2xxx/qla_mbx.c
+++ b/drivers/scsi/qla2xxx/qla_mbx.c
@@ -782,8 +782,9 @@ qla2x00_get_fw_version(scsi_qla_host_t *vha)
782 if (IS_FWI2_CAPABLE(ha)) 782 if (IS_FWI2_CAPABLE(ha))
783 mcp->in_mb |= MBX_17|MBX_16|MBX_15; 783 mcp->in_mb |= MBX_17|MBX_16|MBX_15;
784 if (IS_QLA27XX(ha)) 784 if (IS_QLA27XX(ha))
785 mcp->in_mb |= MBX_23 | MBX_22 | MBX_21 | MBX_20 | MBX_19 | 785 mcp->in_mb |=
786 MBX_18 | MBX_14 | MBX_13 | MBX_11 | MBX_10 | MBX_9 | MBX_8; 786 MBX_25|MBX_24|MBX_23|MBX_22|MBX_21|MBX_20|MBX_19|MBX_18|
787 MBX_14|MBX_13|MBX_11|MBX_10|MBX_9|MBX_8;
787 788
788 mcp->flags = 0; 789 mcp->flags = 0;
789 mcp->tov = MBX_TOV_SECONDS; 790 mcp->tov = MBX_TOV_SECONDS;
@@ -842,6 +843,8 @@ qla2x00_get_fw_version(scsi_qla_host_t *vha)
842 ha->pep_version[2] = mcp->mb[14] & 0xff; 843 ha->pep_version[2] = mcp->mb[14] & 0xff;
843 ha->fw_shared_ram_start = (mcp->mb[19] << 16) | mcp->mb[18]; 844 ha->fw_shared_ram_start = (mcp->mb[19] << 16) | mcp->mb[18];
844 ha->fw_shared_ram_end = (mcp->mb[21] << 16) | mcp->mb[20]; 845 ha->fw_shared_ram_end = (mcp->mb[21] << 16) | mcp->mb[20];
846 ha->fw_ddr_ram_start = (mcp->mb[23] << 16) | mcp->mb[22];
847 ha->fw_ddr_ram_end = (mcp->mb[25] << 16) | mcp->mb[24];
845 } 848 }
846 849
847failed: 850failed:
diff --git a/drivers/scsi/qla2xxx/qla_tmpl.c b/drivers/scsi/qla2xxx/qla_tmpl.c
index c3e622524604..36935c9ed669 100644
--- a/drivers/scsi/qla2xxx/qla_tmpl.c
+++ b/drivers/scsi/qla2xxx/qla_tmpl.c
@@ -357,6 +357,13 @@ qla27xx_fwdt_entry_t262(struct scsi_qla_host *vha,
357 ent->t262.start_addr = start; 357 ent->t262.start_addr = start;
358 ent->t262.end_addr = end; 358 ent->t262.end_addr = end;
359 } 359 }
360 } else if (ent->t262.ram_area == T262_RAM_AREA_DDR_RAM) {
361 start = vha->hw->fw_ddr_ram_start;
362 end = vha->hw->fw_ddr_ram_end;
363 if (buf) {
364 ent->t262.start_addr = start;
365 ent->t262.end_addr = end;
366 }
360 } else { 367 } else {
361 ql_dbg(ql_dbg_misc, vha, 0xd022, 368 ql_dbg(ql_dbg_misc, vha, 0xd022,
362 "%s: unknown area %x\n", __func__, ent->t262.ram_area); 369 "%s: unknown area %x\n", __func__, ent->t262.ram_area);
@@ -364,7 +371,7 @@ qla27xx_fwdt_entry_t262(struct scsi_qla_host *vha,
364 goto done; 371 goto done;
365 } 372 }
366 373
367 if (end < start || end == 0) { 374 if (end <= start || start == 0 || end == 0) {
368 ql_dbg(ql_dbg_misc, vha, 0xd023, 375 ql_dbg(ql_dbg_misc, vha, 0xd023,
369 "%s: unusable range (start=%x end=%x)\n", __func__, 376 "%s: unusable range (start=%x end=%x)\n", __func__,
370 ent->t262.end_addr, ent->t262.start_addr); 377 ent->t262.end_addr, ent->t262.start_addr);