| From e9f38a22dba889a19f1c6e4e4ae597fc3f206174 Mon Sep 17 00:00:00 2001 |
| From: Himanshu Madhani <hmadhani@marvell.com> |
| Date: Tue, 3 Dec 2019 14:36:55 -0800 |
| Subject: [PATCH] scsi: qla2xxx: Correctly retrieve and interpret active flash |
| region |
| |
| commit 4e71dcae0c4cd1e9d19b8b3d80214a4bcdca5a42 upstream. |
| |
| 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: 5fa8774c7f38c ("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.com |
| Signed-off-by: Michael Hernandez <mhernandez@marvell.com> |
| Signed-off-by: Himanshu Madhani <hmadhani@marvell.com> |
| Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/scsi/qla2xxx/qla_attr.c b/drivers/scsi/qla2xxx/qla_attr.c |
| index 9584c5a48397..96aa024ef621 100644 |
| --- a/drivers/scsi/qla2xxx/qla_attr.c |
| +++ b/drivers/scsi/qla2xxx/qla_attr.c |
| @@ -176,6 +176,7 @@ qla2x00_sysfs_read_nvram(struct file *filp, struct kobject *kobj, |
| |
| faddr = ha->flt_region_nvram; |
| if (IS_QLA28XX(ha)) { |
| + qla28xx_get_aux_images(vha, &active_regions); |
| if (active_regions.aux.vpd_nvram == QLA27XX_SECONDARY_IMAGE) |
| faddr = ha->flt_region_nvram_sec; |
| } |
| diff --git a/drivers/scsi/qla2xxx/qla_bsg.c b/drivers/scsi/qla2xxx/qla_bsg.c |
| index 3084c2cff7bd..89cd77068c76 100644 |
| --- a/drivers/scsi/qla2xxx/qla_bsg.c |
| +++ b/drivers/scsi/qla2xxx/qla_bsg.c |
| @@ -2400,7 +2400,7 @@ qla2x00_get_flash_image_status(struct bsg_job *bsg_job) |
| struct qla_active_regions 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; |
| |
| if (IS_QLA28XX(ha)) { |
| diff --git a/drivers/scsi/qla2xxx/qla_sup.c b/drivers/scsi/qla2xxx/qla_sup.c |
| index 176a9d594196..7aac207b5015 100644 |
| --- a/drivers/scsi/qla2xxx/qla_sup.c |
| +++ b/drivers/scsi/qla2xxx/qla_sup.c |
| @@ -845,15 +845,15 @@ qla2xxx_get_flt_info(scsi_qla_host_t *vha, uint32_t flt_addr) |
| ha->flt_region_img_status_pri = start; |
| break; |
| 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; |
| break; |
| 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; |
| break; |
| 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; |
| break; |
| case FLT_REG_AUX_IMG_PRI_28XX: |
| -- |
| 2.7.4 |
| |