From: Greg Kroah-Hartman Date: Sat, 2 Apr 2022 14:15:44 +0000 (+0200) Subject: 5.4-stable patches X-Git-Tag: v5.17.2~171 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ec9bccd100ecf218762d3a57a881328c969cebf9;p=thirdparty%2Fkernel%2Fstable-queue.git 5.4-stable patches added patches: scsi-qla2xxx-add-devids-and-conditionals-for-28xx.patch scsi-qla2xxx-check-for-firmware-dump-already-collected.patch scsi-qla2xxx-fix-device-reconnect-in-loop-topology.patch scsi-qla2xxx-fix-stuck-session-in-gpdb.patch scsi-qla2xxx-fix-warning-for-missing-error-code.patch scsi-qla2xxx-fix-wrong-fdmi-data-for-64g-adapter.patch --- diff --git a/queue-5.4/scsi-qla2xxx-add-devids-and-conditionals-for-28xx.patch b/queue-5.4/scsi-qla2xxx-add-devids-and-conditionals-for-28xx.patch new file mode 100644 index 00000000000..ca77502dffc --- /dev/null +++ b/queue-5.4/scsi-qla2xxx-add-devids-and-conditionals-for-28xx.patch @@ -0,0 +1,177 @@ +From 0d6a536cb1fcabb6c3e9c94871c8d0b29bb5813b Mon Sep 17 00:00:00 2001 +From: Joe Carnuccio +Date: Sun, 9 Jan 2022 21:02:16 -0800 +Subject: scsi: qla2xxx: Add devids and conditionals for 28xx + +From: Joe Carnuccio + +commit 0d6a536cb1fcabb6c3e9c94871c8d0b29bb5813b upstream. + +This is an update to the original 28xx adapter enablement. Add a bunch of +conditionals that are applicable for 28xx. + +Link: https://lore.kernel.org/r/20220110050218.3958-16-njavali@marvell.com +Fixes: ecc89f25e225 ("scsi: qla2xxx: Add Device ID for ISP28XX") +Cc: stable@vger.kernel.org +Signed-off-by: Joe Carnuccio +Signed-off-by: Nilesh Javali +Signed-off-by: Martin K. Petersen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/scsi/qla2xxx/qla_attr.c | 7 ++----- + drivers/scsi/qla2xxx/qla_init.c | 8 +++----- + drivers/scsi/qla2xxx/qla_mbx.c | 14 +++++++++++--- + drivers/scsi/qla2xxx/qla_os.c | 3 +-- + drivers/scsi/qla2xxx/qla_sup.c | 4 ++-- + drivers/scsi/qla2xxx/qla_target.c | 3 +-- + 6 files changed, 20 insertions(+), 19 deletions(-) + +--- a/drivers/scsi/qla2xxx/qla_attr.c ++++ b/drivers/scsi/qla2xxx/qla_attr.c +@@ -527,7 +527,7 @@ qla2x00_sysfs_read_vpd(struct file *filp + if (!capable(CAP_SYS_ADMIN)) + return -EINVAL; + +- if (IS_NOCACHE_VPD_TYPE(ha)) ++ if (!IS_NOCACHE_VPD_TYPE(ha)) + goto skip; + + faddr = ha->flt_region_vpd << 2; +@@ -710,7 +710,7 @@ qla2x00_sysfs_write_reset(struct file *f + ql_log(ql_log_info, vha, 0x706f, + "Issuing MPI reset.\n"); + +- if (IS_QLA83XX(ha) || IS_QLA27XX(ha) || IS_QLA28XX(ha)) { ++ if (IS_QLA83XX(ha)) { + uint32_t idc_control; + + qla83xx_idc_lock(vha, 0); +@@ -1020,9 +1020,6 @@ qla2x00_free_sysfs_attr(scsi_qla_host_t + continue; + if (iter->type == 3 && !(IS_CNA_CAPABLE(ha))) + continue; +- if (iter->type == 0x27 && +- (!IS_QLA27XX(ha) || !IS_QLA28XX(ha))) +- continue; + + sysfs_remove_bin_file(&host->shost_gendev.kobj, + iter->attr); +--- a/drivers/scsi/qla2xxx/qla_init.c ++++ b/drivers/scsi/qla2xxx/qla_init.c +@@ -3241,7 +3241,7 @@ qla2x00_alloc_fw_dump(scsi_qla_host_t *v + mem_size = (ha->fw_memory_size - 0x11000 + 1) * + sizeof(uint16_t); + } else if (IS_FWI2_CAPABLE(ha)) { +- if (IS_QLA83XX(ha) || IS_QLA27XX(ha) || IS_QLA28XX(ha)) ++ if (IS_QLA83XX(ha)) + fixed_size = offsetof(struct qla83xx_fw_dump, ext_mem); + else if (IS_QLA81XX(ha)) + fixed_size = offsetof(struct qla81xx_fw_dump, ext_mem); +@@ -3253,8 +3253,7 @@ qla2x00_alloc_fw_dump(scsi_qla_host_t *v + mem_size = (ha->fw_memory_size - 0x100000 + 1) * + sizeof(uint32_t); + if (ha->mqenable) { +- if (!IS_QLA83XX(ha) && !IS_QLA27XX(ha) && +- !IS_QLA28XX(ha)) ++ if (!IS_QLA83XX(ha)) + mq_size = sizeof(struct qla2xxx_mq_chain); + /* + * Allocate maximum buffer size for all queues - Q0. +@@ -3751,8 +3750,7 @@ enable_82xx_npiv: + ha->fw_major_version, ha->fw_minor_version, + ha->fw_subminor_version); + +- if (IS_QLA83XX(ha) || IS_QLA27XX(ha) || +- IS_QLA28XX(ha)) { ++ if (IS_QLA83XX(ha)) { + ha->flags.fac_supported = 0; + rval = QLA_SUCCESS; + } +--- a/drivers/scsi/qla2xxx/qla_mbx.c ++++ b/drivers/scsi/qla2xxx/qla_mbx.c +@@ -10,6 +10,12 @@ + #include + #include + ++#ifdef CONFIG_PPC ++#define IS_PPCARCH true ++#else ++#define IS_PPCARCH false ++#endif ++ + static struct mb_cmd_name { + uint16_t cmd; + const char *str; +@@ -731,6 +737,9 @@ qla2x00_execute_fw(scsi_qla_host_t *vha, + vha->min_supported_speed = + nv->min_supported_speed; + } ++ ++ if (IS_PPCARCH) ++ mcp->mb[11] |= BIT_4; + } + + if (ha->flags.exlogins_enabled) +@@ -2897,8 +2906,7 @@ qla2x00_get_resource_cnts(scsi_qla_host_ + ha->orig_fw_iocb_count = mcp->mb[10]; + if (ha->flags.npiv_supported) + ha->max_npiv_vports = mcp->mb[11]; +- if (IS_QLA81XX(ha) || IS_QLA83XX(ha) || IS_QLA27XX(ha) || +- IS_QLA28XX(ha)) ++ if (IS_QLA81XX(ha) || IS_QLA83XX(ha)) + ha->fw_max_fcf_count = mcp->mb[12]; + } + +@@ -5391,7 +5399,7 @@ qla2x00_get_data_rate(scsi_qla_host_t *v + mcp->out_mb = MBX_1|MBX_0; + mcp->in_mb = MBX_2|MBX_1|MBX_0; + if (IS_QLA83XX(ha) || IS_QLA27XX(ha) || IS_QLA28XX(ha)) +- mcp->in_mb |= MBX_3; ++ mcp->in_mb |= MBX_4|MBX_3; + mcp->tov = MBX_TOV_SECONDS; + mcp->flags = 0; + rval = qla2x00_mailbox_command(vha, mcp); +--- a/drivers/scsi/qla2xxx/qla_os.c ++++ b/drivers/scsi/qla2xxx/qla_os.c +@@ -3627,8 +3627,7 @@ qla2x00_unmap_iobases(struct qla_hw_data + if (ha->mqiobase) + iounmap(ha->mqiobase); + +- if ((IS_QLA83XX(ha) || IS_QLA27XX(ha) || IS_QLA28XX(ha)) && +- ha->msixbase) ++ if (ha->msixbase) + iounmap(ha->msixbase); + } + } +--- a/drivers/scsi/qla2xxx/qla_sup.c ++++ b/drivers/scsi/qla2xxx/qla_sup.c +@@ -843,7 +843,7 @@ qla2xxx_get_flt_info(scsi_qla_host_t *vh + ha->flt_region_nvram = start; + break; + case FLT_REG_IMG_PRI_27XX: +- if (IS_QLA27XX(ha) && !IS_QLA28XX(ha)) ++ if (IS_QLA27XX(ha) || IS_QLA28XX(ha)) + ha->flt_region_img_status_pri = start; + break; + case FLT_REG_IMG_SEC_27XX: +@@ -1355,7 +1355,7 @@ next: + flash_data_addr(ha, faddr), cpu_to_le32(*dwptr)); + if (ret) { + ql_dbg(ql_dbg_user, vha, 0x7006, +- "Failed slopw write %x (%x)\n", faddr, *dwptr); ++ "Failed slow write %x (%x)\n", faddr, *dwptr); + break; + } + } +--- a/drivers/scsi/qla2xxx/qla_target.c ++++ b/drivers/scsi/qla2xxx/qla_target.c +@@ -7084,8 +7084,7 @@ qlt_probe_one_stage1(struct scsi_qla_hos + if (!QLA_TGT_MODE_ENABLED()) + return; + +- if ((ql2xenablemsix == 0) || IS_QLA83XX(ha) || IS_QLA27XX(ha) || +- IS_QLA28XX(ha)) { ++ if (ha->mqenable || IS_QLA83XX(ha) || IS_QLA27XX(ha) || IS_QLA28XX(ha)) { + ISP_ATIO_Q_IN(base_vha) = &ha->mqiobase->isp25mq.atio_q_in; + ISP_ATIO_Q_OUT(base_vha) = &ha->mqiobase->isp25mq.atio_q_out; + } else { diff --git a/queue-5.4/scsi-qla2xxx-check-for-firmware-dump-already-collected.patch b/queue-5.4/scsi-qla2xxx-check-for-firmware-dump-already-collected.patch new file mode 100644 index 00000000000..a7e735a811a --- /dev/null +++ b/queue-5.4/scsi-qla2xxx-check-for-firmware-dump-already-collected.patch @@ -0,0 +1,39 @@ +From cfbafad7c6032d449a5a07f2d273acd2437bbc6a Mon Sep 17 00:00:00 2001 +From: Joe Carnuccio +Date: Sun, 9 Jan 2022 21:02:17 -0800 +Subject: scsi: qla2xxx: Check for firmware dump already collected + +From: Joe Carnuccio + +commit cfbafad7c6032d449a5a07f2d273acd2437bbc6a upstream. + +While allocating firmware dump, check if dump is already collected and do +not re-allocate the buffer. + +Link: https://lore.kernel.org/r/20220110050218.3958-17-njavali@marvell.com +Cc: stable@vger.kernel.org +Signed-off-by: Joe Carnuccio +Signed-off-by: Nilesh Javali +Signed-off-by: Martin K. Petersen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/scsi/qla2xxx/qla_init.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +--- a/drivers/scsi/qla2xxx/qla_init.c ++++ b/drivers/scsi/qla2xxx/qla_init.c +@@ -3231,6 +3231,14 @@ qla2x00_alloc_fw_dump(scsi_qla_host_t *v + struct rsp_que *rsp = ha->rsp_q_map[0]; + struct qla2xxx_fw_dump *fw_dump; + ++ if (ha->fw_dump) { ++ ql_dbg(ql_dbg_init, vha, 0x00bd, ++ "Firmware dump already allocated.\n"); ++ return; ++ } ++ ++ ha->fw_dumped = 0; ++ ha->fw_dump_cap_flags = 0; + dump_size = fixed_size = mem_size = eft_size = fce_size = mq_size = 0; + req_q_size = rsp_q_size = 0; + diff --git a/queue-5.4/scsi-qla2xxx-fix-device-reconnect-in-loop-topology.patch b/queue-5.4/scsi-qla2xxx-fix-device-reconnect-in-loop-topology.patch new file mode 100644 index 00000000000..b66612c8cb2 --- /dev/null +++ b/queue-5.4/scsi-qla2xxx-fix-device-reconnect-in-loop-topology.patch @@ -0,0 +1,78 @@ +From 8ad4be3d15cf144b5834bdb00d5bbe4050938dc7 Mon Sep 17 00:00:00 2001 +From: Arun Easi +Date: Sun, 9 Jan 2022 21:02:11 -0800 +Subject: scsi: qla2xxx: Fix device reconnect in loop topology + +From: Arun Easi + +commit 8ad4be3d15cf144b5834bdb00d5bbe4050938dc7 upstream. + +A device logout in loop topology initiates a device connection teardown +which loses the FW device handle. In loop topo, the device handle is not +regrabbed leading to device login failures and eventually to loss of the +device. Fix this by taking the main login path that does it. + +Link: https://lore.kernel.org/r/20220110050218.3958-11-njavali@marvell.com +Cc: stable@vger.kernel.org +Reviewed-by: Himanshu Madhani +Signed-off-by: Arun Easi +Signed-off-by: Nilesh Javali +Signed-off-by: Martin K. Petersen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/scsi/qla2xxx/qla_init.c | 15 +++++++++++++++ + drivers/scsi/qla2xxx/qla_os.c | 5 +++++ + 2 files changed, 20 insertions(+) + +--- a/drivers/scsi/qla2xxx/qla_init.c ++++ b/drivers/scsi/qla2xxx/qla_init.c +@@ -955,6 +955,9 @@ static void qla24xx_handle_gnl_done_even + set_bit(RELOGIN_NEEDED, &vha->dpc_flags); + } + break; ++ case ISP_CFG_NL: ++ qla24xx_fcport_handle_login(vha, fcport); ++ break; + default: + break; + } +@@ -1477,6 +1480,11 @@ static void qla_chk_n2n_b4_login(struct + u8 login = 0; + int rc; + ++ ql_dbg(ql_dbg_disc, vha, 0x307b, ++ "%s %8phC DS %d LS %d lid %d retries=%d\n", ++ __func__, fcport->port_name, fcport->disc_state, ++ fcport->fw_login_state, fcport->loop_id, fcport->login_retry); ++ + if (qla_tgt_mode_enabled(vha)) + return; + +@@ -5217,6 +5225,13 @@ skip_login: + memcpy(fcport->node_name, new_fcport->node_name, + WWN_SIZE); + fcport->scan_state = QLA_FCPORT_FOUND; ++ if (fcport->login_retry == 0) { ++ fcport->login_retry = vha->hw->login_retry_count; ++ ql_dbg(ql_dbg_disc, vha, 0x2135, ++ "Port login retry %8phN, lid 0x%04x retry cnt=%d.\n", ++ fcport->port_name, fcport->loop_id, ++ fcport->login_retry); ++ } + found++; + break; + } +--- a/drivers/scsi/qla2xxx/qla_os.c ++++ b/drivers/scsi/qla2xxx/qla_os.c +@@ -5349,6 +5349,11 @@ void qla2x00_relogin(struct scsi_qla_hos + ea.fcport = fcport; + qla24xx_handle_relogin_event(vha, &ea); + } else if (vha->hw->current_topology == ++ ISP_CFG_NL && ++ IS_QLA2XXX_MIDTYPE(vha->hw)) { ++ (void)qla24xx_fcport_handle_login(vha, ++ fcport); ++ } else if (vha->hw->current_topology == + ISP_CFG_NL) { + fcport->login_retry--; + status = diff --git a/queue-5.4/scsi-qla2xxx-fix-stuck-session-in-gpdb.patch b/queue-5.4/scsi-qla2xxx-fix-stuck-session-in-gpdb.patch new file mode 100644 index 00000000000..5a406181bf7 --- /dev/null +++ b/queue-5.4/scsi-qla2xxx-fix-stuck-session-in-gpdb.patch @@ -0,0 +1,40 @@ +From 725d3a0d31a51c0debf970011e05f585e805165b Mon Sep 17 00:00:00 2001 +From: Quinn Tran +Date: Sun, 9 Jan 2022 21:02:04 -0800 +Subject: scsi: qla2xxx: Fix stuck session in gpdb + +From: Quinn Tran + +commit 725d3a0d31a51c0debf970011e05f585e805165b upstream. + +Fix stuck sessions in get port database. When a thread is in the process of +re-establishing a session, a flag is set to prevent multiple threads / +triggers from doing the same task. This flag was left on, where any attempt +to relogin was locked out. Clear this flag, if the attempt has failed. + +Link: https://lore.kernel.org/r/20220110050218.3958-4-njavali@marvell.com +Cc: stable@vger.kernel.org +Reviewed-by: Himanshu Madhani +Signed-off-by: Quinn Tran +Signed-off-by: Nilesh Javali +Signed-off-by: Martin K. Petersen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/scsi/qla2xxx/qla_init.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +--- a/drivers/scsi/qla2xxx/qla_init.c ++++ b/drivers/scsi/qla2xxx/qla_init.c +@@ -1314,9 +1314,9 @@ int qla24xx_async_gpdb(struct scsi_qla_h + if (!vha->flags.online || (fcport->flags & FCF_ASYNC_SENT) || + fcport->loop_id == FC_NO_LOOP_ID) { + ql_log(ql_log_warn, vha, 0xffff, +- "%s: %8phC - not sending command.\n", +- __func__, fcport->port_name); +- return rval; ++ "%s: %8phC online %d flags %x - not sending command.\n", ++ __func__, fcport->port_name, vha->flags.online, fcport->flags); ++ goto done; + } + + sp = qla2x00_get_sp(vha, fcport, GFP_KERNEL); diff --git a/queue-5.4/scsi-qla2xxx-fix-warning-for-missing-error-code.patch b/queue-5.4/scsi-qla2xxx-fix-warning-for-missing-error-code.patch new file mode 100644 index 00000000000..4d007d77941 --- /dev/null +++ b/queue-5.4/scsi-qla2xxx-fix-warning-for-missing-error-code.patch @@ -0,0 +1,35 @@ +From 14cb838d245ae0d523b2f7804af5a02c22e79f5a Mon Sep 17 00:00:00 2001 +From: Nilesh Javali +Date: Sun, 9 Jan 2022 21:02:12 -0800 +Subject: scsi: qla2xxx: Fix warning for missing error code + +From: Nilesh Javali + +commit 14cb838d245ae0d523b2f7804af5a02c22e79f5a upstream. + +Fix smatch-reported warning message: + +drivers/scsi/qla2xxx/qla_target.c:3324 qlt_xmit_response() warn: missing error +code 'res' + +Link: https://lore.kernel.org/r/20220110050218.3958-12-njavali@marvell.com +Fixes: 4a8f71014b4d ("scsi: qla2xxx: Fix unmap of already freed sgl") +Cc: stable@vger.kernel.org +Reviewed-by: Himanshu Madhani +Signed-off-by: Nilesh Javali +Signed-off-by: Martin K. Petersen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/scsi/qla2xxx/qla_target.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/scsi/qla2xxx/qla_target.c ++++ b/drivers/scsi/qla2xxx/qla_target.c +@@ -3251,6 +3251,7 @@ int qlt_xmit_response(struct qla_tgt_cmd + "RESET-RSP online/active/old-count/new-count = %d/%d/%d/%d.\n", + vha->flags.online, qla2x00_reset_active(vha), + cmd->reset_count, qpair->chip_reset); ++ res = 0; + goto out_unmap_unlock; + } + diff --git a/queue-5.4/scsi-qla2xxx-fix-wrong-fdmi-data-for-64g-adapter.patch b/queue-5.4/scsi-qla2xxx-fix-wrong-fdmi-data-for-64g-adapter.patch new file mode 100644 index 00000000000..81debf04cb6 --- /dev/null +++ b/queue-5.4/scsi-qla2xxx-fix-wrong-fdmi-data-for-64g-adapter.patch @@ -0,0 +1,40 @@ +From 1cfbbacbee2d6ea3816386a483e3c7a96e5bd657 Mon Sep 17 00:00:00 2001 +From: Bikash Hazarika +Date: Sun, 9 Jan 2022 21:02:09 -0800 +Subject: scsi: qla2xxx: Fix wrong FDMI data for 64G adapter + +From: Bikash Hazarika + +commit 1cfbbacbee2d6ea3816386a483e3c7a96e5bd657 upstream. + +Corrected transmission speed mask values for FC. + +Supported Speed: 16 32 20 Gb/s ===> Should be 64 instead of 20 +Supported Speed: 16G 32G 48G ===> Should be 64G instead of 48G + +Link: https://lore.kernel.org/r/20220110050218.3958-9-njavali@marvell.com +Cc: stable@vger.kernel.org +Reviewed-by: Himanshu Madhani +Signed-off-by: Bikash Hazarika +Signed-off-by: Nilesh Javali +Signed-off-by: Martin K. Petersen +Signed-off-by: Greg Kroah-Hartman +--- + drivers/scsi/qla2xxx/qla_def.h | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +--- a/drivers/scsi/qla2xxx/qla_def.h ++++ b/drivers/scsi/qla2xxx/qla_def.h +@@ -2725,7 +2725,11 @@ struct ct_fdmiv2_hba_attributes { + #define FDMI_PORT_SPEED_8GB 0x10 + #define FDMI_PORT_SPEED_16GB 0x20 + #define FDMI_PORT_SPEED_32GB 0x40 +-#define FDMI_PORT_SPEED_64GB 0x80 ++#define FDMI_PORT_SPEED_20GB 0x80 ++#define FDMI_PORT_SPEED_40GB 0x100 ++#define FDMI_PORT_SPEED_128GB 0x200 ++#define FDMI_PORT_SPEED_64GB 0x400 ++#define FDMI_PORT_SPEED_256GB 0x800 + #define FDMI_PORT_SPEED_UNKNOWN 0x8000 + + #define FC_CLASS_2 0x04 diff --git a/queue-5.4/series b/queue-5.4/series index b4342e02dfd..e67491c44dc 100644 --- a/queue-5.4/series +++ b/queue-5.4/series @@ -317,3 +317,9 @@ alsa-hda-realtek-add-alc256-samsung-headphone-fixup.patch powerpc-lib-sstep-fix-sthcx-instruction.patch powerpc-lib-sstep-fix-build-errors-with-newer-binutils.patch powerpc-fix-build-errors-with-newer-binutils.patch +scsi-qla2xxx-fix-stuck-session-in-gpdb.patch +scsi-qla2xxx-fix-wrong-fdmi-data-for-64g-adapter.patch +scsi-qla2xxx-fix-warning-for-missing-error-code.patch +scsi-qla2xxx-fix-device-reconnect-in-loop-topology.patch +scsi-qla2xxx-add-devids-and-conditionals-for-28xx.patch +scsi-qla2xxx-check-for-firmware-dump-already-collected.patch