diff options
-rw-r--r-- | drivers/scsi/qla2xxx/qla_def.h | 2 | ||||
-rw-r--r-- | drivers/scsi/qla2xxx/qla_mbx.c | 7 | ||||
-rw-r--r-- | drivers/scsi/qla2xxx/qla_tmpl.c | 9 |
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 | ||
847 | failed: | 850 | failed: |
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); |