Commit 4e71dcae authored by Himanshu Madhani's avatar Himanshu Madhani Committed by Martin K. Petersen

scsi: qla2xxx: Correctly retrieve and interpret active flash region

ISP27XX/28XX supports multiple flash regions. This patch fixes issue where
active flash region was not interpreted correctly during secure flash
update process.

[mkp: typo]

Fixes: 5fa8774c ("scsi: qla2xxx: Add 28xx flash primary/secondary status/image mechanism")
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20191203223657.22109-2-hmadhani@marvell.comSigned-off-by: default avatarMichael Hernandez <mhernandez@marvell.com>
Signed-off-by: default avatarHimanshu Madhani <hmadhani@marvell.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent e42617b8
...@@ -178,6 +178,7 @@ qla2x00_sysfs_read_nvram(struct file *filp, struct kobject *kobj, ...@@ -178,6 +178,7 @@ qla2x00_sysfs_read_nvram(struct file *filp, struct kobject *kobj,
faddr = ha->flt_region_nvram; faddr = ha->flt_region_nvram;
if (IS_QLA28XX(ha)) { if (IS_QLA28XX(ha)) {
qla28xx_get_aux_images(vha, &active_regions);
if (active_regions.aux.vpd_nvram == QLA27XX_SECONDARY_IMAGE) if (active_regions.aux.vpd_nvram == QLA27XX_SECONDARY_IMAGE)
faddr = ha->flt_region_nvram_sec; faddr = ha->flt_region_nvram_sec;
} }
......
...@@ -2399,7 +2399,7 @@ qla2x00_get_flash_image_status(struct bsg_job *bsg_job) ...@@ -2399,7 +2399,7 @@ qla2x00_get_flash_image_status(struct bsg_job *bsg_job)
struct qla_active_regions regions = { }; struct qla_active_regions regions = { };
struct active_regions active_regions = { }; struct active_regions active_regions = { };
qla28xx_get_aux_images(vha, &active_regions); qla27xx_get_active_image(vha, &active_regions);
regions.global_image = active_regions.global; regions.global_image = active_regions.global;
if (IS_QLA28XX(ha)) { if (IS_QLA28XX(ha)) {
......
...@@ -847,15 +847,15 @@ qla2xxx_get_flt_info(scsi_qla_host_t *vha, uint32_t flt_addr) ...@@ -847,15 +847,15 @@ qla2xxx_get_flt_info(scsi_qla_host_t *vha, uint32_t flt_addr)
ha->flt_region_img_status_pri = start; ha->flt_region_img_status_pri = start;
break; break;
case FLT_REG_IMG_SEC_27XX: case FLT_REG_IMG_SEC_27XX:
if (IS_QLA27XX(ha) && !IS_QLA28XX(ha)) if (IS_QLA27XX(ha) || IS_QLA28XX(ha))
ha->flt_region_img_status_sec = start; ha->flt_region_img_status_sec = start;
break; break;
case FLT_REG_FW_SEC_27XX: case FLT_REG_FW_SEC_27XX:
if (IS_QLA27XX(ha) && !IS_QLA28XX(ha)) if (IS_QLA27XX(ha) || IS_QLA28XX(ha))
ha->flt_region_fw_sec = start; ha->flt_region_fw_sec = start;
break; break;
case FLT_REG_BOOTLOAD_SEC_27XX: case FLT_REG_BOOTLOAD_SEC_27XX:
if (IS_QLA27XX(ha) && !IS_QLA28XX(ha)) if (IS_QLA27XX(ha) || IS_QLA28XX(ha))
ha->flt_region_boot_sec = start; ha->flt_region_boot_sec = start;
break; break;
case FLT_REG_AUX_IMG_PRI_28XX: case FLT_REG_AUX_IMG_PRI_28XX:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment