]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
6.8-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 1 Apr 2024 10:30:20 +0000 (12:30 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 1 Apr 2024 10:30:20 +0000 (12:30 +0200)
added patches:
scsi-qla2xxx-change-debug-message-during-driver-unload.patch
scsi-qla2xxx-delay-i-o-abort-on-pci-error.patch
scsi-qla2xxx-fix-command-flush-on-cable-pull.patch
scsi-qla2xxx-fix-double-free-of-fcport.patch
scsi-qla2xxx-fix-double-free-of-the-ha-vp_map-pointer.patch
scsi-qla2xxx-fix-n2n-stuck-connection.patch
scsi-qla2xxx-nvme-fcp-prefer-flag-not-being-honored.patch
scsi-qla2xxx-prevent-command-send-on-chip-reset.patch
scsi-qla2xxx-split-fce-eft-trace-control.patch
scsi-qla2xxx-update-manufacturer-detail.patch

queue-6.8/scsi-qla2xxx-change-debug-message-during-driver-unload.patch [new file with mode: 0644]
queue-6.8/scsi-qla2xxx-delay-i-o-abort-on-pci-error.patch [new file with mode: 0644]
queue-6.8/scsi-qla2xxx-fix-command-flush-on-cable-pull.patch [new file with mode: 0644]
queue-6.8/scsi-qla2xxx-fix-double-free-of-fcport.patch [new file with mode: 0644]
queue-6.8/scsi-qla2xxx-fix-double-free-of-the-ha-vp_map-pointer.patch [new file with mode: 0644]
queue-6.8/scsi-qla2xxx-fix-n2n-stuck-connection.patch [new file with mode: 0644]
queue-6.8/scsi-qla2xxx-nvme-fcp-prefer-flag-not-being-honored.patch [new file with mode: 0644]
queue-6.8/scsi-qla2xxx-prevent-command-send-on-chip-reset.patch [new file with mode: 0644]
queue-6.8/scsi-qla2xxx-split-fce-eft-trace-control.patch [new file with mode: 0644]
queue-6.8/scsi-qla2xxx-update-manufacturer-detail.patch [new file with mode: 0644]
queue-6.8/series

diff --git a/queue-6.8/scsi-qla2xxx-change-debug-message-during-driver-unload.patch b/queue-6.8/scsi-qla2xxx-change-debug-message-during-driver-unload.patch
new file mode 100644 (file)
index 0000000..0ba0da8
--- /dev/null
@@ -0,0 +1,36 @@
+From b5a30840727a3e41d12a336d19f6c0716b299161 Mon Sep 17 00:00:00 2001
+From: Saurav Kashyap <skashyap@marvell.com>
+Date: Tue, 27 Feb 2024 22:11:25 +0530
+Subject: scsi: qla2xxx: Change debug message during driver unload
+
+From: Saurav Kashyap <skashyap@marvell.com>
+
+commit b5a30840727a3e41d12a336d19f6c0716b299161 upstream.
+
+Upon driver unload, purge_mbox flag is set and the heartbeat monitor thread
+detects this flag and does not send the mailbox command down to FW with a
+debug message "Error detected: purge[1] eeh[0] cmd=0x0, Exiting".  This
+being not a real error, change the debug message.
+
+Cc: stable@vger.kernel.org
+Signed-off-by: Saurav Kashyap <skashyap@marvell.com>
+Signed-off-by: Nilesh Javali <njavali@marvell.com>
+Link: https://lore.kernel.org/r/20240227164127.36465-10-njavali@marvell.com
+Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/scsi/qla2xxx/qla_mbx.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/scsi/qla2xxx/qla_mbx.c
++++ b/drivers/scsi/qla2xxx/qla_mbx.c
+@@ -194,7 +194,7 @@ qla2x00_mailbox_command(scsi_qla_host_t
+       if (ha->flags.purge_mbox || chip_reset != ha->chip_reset ||
+           ha->flags.eeh_busy) {
+               ql_log(ql_log_warn, vha, 0xd035,
+-                     "Error detected: purge[%d] eeh[%d] cmd=0x%x, Exiting.\n",
++                     "Purge mbox: purge[%d] eeh[%d] cmd=0x%x, Exiting.\n",
+                      ha->flags.purge_mbox, ha->flags.eeh_busy, mcp->mb[0]);
+               rval = QLA_ABORTED;
+               goto premature_exit;
diff --git a/queue-6.8/scsi-qla2xxx-delay-i-o-abort-on-pci-error.patch b/queue-6.8/scsi-qla2xxx-delay-i-o-abort-on-pci-error.patch
new file mode 100644 (file)
index 0000000..2eef9de
--- /dev/null
@@ -0,0 +1,57 @@
+From 591c1fdf2016d118b8fbde427b796fac13f3f070 Mon Sep 17 00:00:00 2001
+From: Quinn Tran <qutran@marvell.com>
+Date: Tue, 27 Feb 2024 22:11:26 +0530
+Subject: scsi: qla2xxx: Delay I/O Abort on PCI error
+
+From: Quinn Tran <qutran@marvell.com>
+
+commit 591c1fdf2016d118b8fbde427b796fac13f3f070 upstream.
+
+Currently when PCI error is detected, I/O is aborted manually through the
+ABORT IOCB mechanism which is not guaranteed to succeed.
+
+Instead, wait for the OS or system to notify driver to wind down I/O
+through the pci_error_handlers api.  Set eeh_busy flag to pause all traffic
+and wait for I/O to drain.
+
+Cc: stable@vger.kernel.org
+Signed-off-by: Quinn Tran <qutran@marvell.com>
+Signed-off-by: Nilesh Javali <njavali@marvell.com>
+Link: https://lore.kernel.org/r/20240227164127.36465-11-njavali@marvell.com
+Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/scsi/qla2xxx/qla_attr.c |   14 ++++++++++++--
+ 1 file changed, 12 insertions(+), 2 deletions(-)
+
+--- a/drivers/scsi/qla2xxx/qla_attr.c
++++ b/drivers/scsi/qla2xxx/qla_attr.c
+@@ -2741,7 +2741,13 @@ qla2x00_dev_loss_tmo_callbk(struct fc_rp
+               return;
+       if (unlikely(pci_channel_offline(fcport->vha->hw->pdev))) {
+-              qla2x00_abort_all_cmds(fcport->vha, DID_NO_CONNECT << 16);
++              /* Will wait for wind down of adapter */
++              ql_dbg(ql_dbg_aer, fcport->vha, 0x900c,
++                  "%s pci offline detected (id %06x)\n", __func__,
++                  fcport->d_id.b24);
++              qla_pci_set_eeh_busy(fcport->vha);
++              qla2x00_eh_wait_for_pending_commands(fcport->vha, fcport->d_id.b24,
++                  0, WAIT_TARGET);
+               return;
+       }
+ }
+@@ -2763,7 +2769,11 @@ qla2x00_terminate_rport_io(struct fc_rpo
+       vha = fcport->vha;
+       if (unlikely(pci_channel_offline(fcport->vha->hw->pdev))) {
+-              qla2x00_abort_all_cmds(fcport->vha, DID_NO_CONNECT << 16);
++              /* Will wait for wind down of adapter */
++              ql_dbg(ql_dbg_aer, fcport->vha, 0x900b,
++                  "%s pci offline detected (id %06x)\n", __func__,
++                  fcport->d_id.b24);
++              qla_pci_set_eeh_busy(vha);
+               qla2x00_eh_wait_for_pending_commands(fcport->vha, fcport->d_id.b24,
+                       0, WAIT_TARGET);
+               return;
diff --git a/queue-6.8/scsi-qla2xxx-fix-command-flush-on-cable-pull.patch b/queue-6.8/scsi-qla2xxx-fix-command-flush-on-cable-pull.patch
new file mode 100644 (file)
index 0000000..40686b3
--- /dev/null
@@ -0,0 +1,94 @@
+From a27d4d0e7de305def8a5098a614053be208d1aa1 Mon Sep 17 00:00:00 2001
+From: Quinn Tran <qutran@marvell.com>
+Date: Tue, 27 Feb 2024 22:11:22 +0530
+Subject: scsi: qla2xxx: Fix command flush on cable pull
+
+From: Quinn Tran <qutran@marvell.com>
+
+commit a27d4d0e7de305def8a5098a614053be208d1aa1 upstream.
+
+System crash due to command failed to flush back to SCSI layer.
+
+ BUG: unable to handle kernel NULL pointer dereference at 0000000000000000
+ PGD 0 P4D 0
+ Oops: 0000 [#1] SMP NOPTI
+ CPU: 27 PID: 793455 Comm: kworker/u130:6 Kdump: loaded Tainted: G           OE    --------- -  - 4.18.0-372.9.1.el8.x86_64 #1
+ Hardware name: HPE ProLiant DL360 Gen10/ProLiant DL360 Gen10, BIOS U32 09/03/2021
+ Workqueue: nvme-wq nvme_fc_connect_ctrl_work [nvme_fc]
+ RIP: 0010:__wake_up_common+0x4c/0x190
+ Code: 24 10 4d 85 c9 74 0a 41 f6 01 04 0f 85 9d 00 00 00 48 8b 43 08 48 83 c3 08 4c 8d 48 e8 49 8d 41 18 48 39 c3 0f 84 f0 00 00 00 <49> 8b 41 18 89 54 24 08 31 ed 4c 8d 70 e8 45 8b 29 41 f6 c5 04 75
+ RSP: 0018:ffff95f3e0cb7cd0 EFLAGS: 00010086
+ RAX: 0000000000000000 RBX: ffff8b08d3b26328 RCX: 0000000000000000
+ RDX: 0000000000000001 RSI: 0000000000000003 RDI: ffff8b08d3b26320
+ RBP: 0000000000000001 R08: 0000000000000000 R09: ffffffffffffffe8
+ R10: 0000000000000000 R11: ffff95f3e0cb7a60 R12: ffff95f3e0cb7d20
+ R13: 0000000000000003 R14: 0000000000000000 R15: 0000000000000000
+ FS:  0000000000000000(0000) GS:ffff8b2fdf6c0000(0000) knlGS:0000000000000000
+ CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
+ CR2: 0000000000000000 CR3: 0000002f1e410002 CR4: 00000000007706e0
+ DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
+ DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
+ PKRU: 55555554
+ Call Trace:
+  __wake_up_common_lock+0x7c/0xc0
+  qla_nvme_ls_req+0x355/0x4c0 [qla2xxx]
+ qla2xxx [0000:12:00.1]-f084:3: qlt_free_session_done: se_sess 0000000000000000 / sess ffff8ae1407ca000 from port 21:32:00:02:ac:07:ee:b8 loop_id 0x02 s_id 01:02:00 logout 1 keep 0 els_logo 0
+ ? __nvme_fc_send_ls_req+0x260/0x380 [nvme_fc]
+ qla2xxx [0000:12:00.1]-207d:3: FCPort 21:32:00:02:ac:07:ee:b8 state transitioned from ONLINE to LOST - portid=010200.
+  ? nvme_fc_send_ls_req.constprop.42+0x1a/0x45 [nvme_fc]
+ qla2xxx [0000:12:00.1]-2109:3: qla2x00_schedule_rport_del 21320002ac07eeb8. rport ffff8ae598122000 roles 1
+ ? nvme_fc_connect_ctrl_work.cold.63+0x1e3/0xa7d [nvme_fc]
+ qla2xxx [0000:12:00.1]-f084:3: qlt_free_session_done: se_sess 0000000000000000 / sess ffff8ae14801e000 from port 21:32:01:02:ad:f7:ee:b8 loop_id 0x04 s_id 01:02:01 logout 1 keep 0 els_logo 0
+  ? __switch_to+0x10c/0x450
+ ? process_one_work+0x1a7/0x360
+ qla2xxx [0000:12:00.1]-207d:3: FCPort 21:32:01:02:ad:f7:ee:b8 state transitioned from ONLINE to LOST - portid=010201.
+  ? worker_thread+0x1ce/0x390
+  ? create_worker+0x1a0/0x1a0
+ qla2xxx [0000:12:00.1]-2109:3: qla2x00_schedule_rport_del 21320102adf7eeb8. rport ffff8ae3b2312800 roles 70
+  ? kthread+0x10a/0x120
+ qla2xxx [0000:12:00.1]-2112:3: qla_nvme_unregister_remote_port: unregister remoteport on ffff8ae14801e000 21320102adf7eeb8
+  ? set_kthread_struct+0x40/0x40
+ qla2xxx [0000:12:00.1]-2110:3: remoteport_delete of ffff8ae14801e000 21320102adf7eeb8 completed.
+  ? ret_from_fork+0x1f/0x40
+ qla2xxx [0000:12:00.1]-f086:3: qlt_free_session_done: waiting for sess ffff8ae14801e000 logout
+
+The system was under memory stress where driver was not able to allocate an
+SRB to carry out error recovery of cable pull.  The failure to flush causes
+upper layer to start modifying scsi_cmnd.  When the system frees up some
+memory, the subsequent cable pull trigger another command flush. At this
+point the driver access a null pointer when attempting to DMA unmap the
+SGL.
+
+Add a check to make sure commands are flush back on session tear down to
+prevent the null pointer access.
+
+Cc: stable@vger.kernel.org
+Signed-off-by: Quinn Tran <qutran@marvell.com>
+Signed-off-by: Nilesh Javali <njavali@marvell.com>
+Link: https://lore.kernel.org/r/20240227164127.36465-7-njavali@marvell.com
+Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/scsi/qla2xxx/qla_target.c |   10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+--- a/drivers/scsi/qla2xxx/qla_target.c
++++ b/drivers/scsi/qla2xxx/qla_target.c
+@@ -1062,6 +1062,16 @@ void qlt_free_session_done(struct work_s
+                   "%s: sess %p logout completed\n", __func__, sess);
+       }
++      /* check for any straggling io left behind */
++      if (!(sess->flags & FCF_FCP2_DEVICE) &&
++          qla2x00_eh_wait_for_pending_commands(sess->vha, sess->d_id.b24, 0, WAIT_TARGET)) {
++              ql_log(ql_log_warn, vha, 0x3027,
++                  "IO not return. Resetting.\n");
++              set_bit(ISP_ABORT_NEEDED, &vha->dpc_flags);
++              qla2xxx_wake_dpc(vha);
++              qla2x00_wait_for_chip_reset(vha);
++      }
++
+       if (sess->logo_ack_needed) {
+               sess->logo_ack_needed = 0;
+               qla24xx_async_notify_ack(vha, sess,
diff --git a/queue-6.8/scsi-qla2xxx-fix-double-free-of-fcport.patch b/queue-6.8/scsi-qla2xxx-fix-double-free-of-fcport.patch
new file mode 100644 (file)
index 0000000..5de63e5
--- /dev/null
@@ -0,0 +1,79 @@
+From 82f522ae0d97119a43da53e0f729275691b9c525 Mon Sep 17 00:00:00 2001
+From: Saurav Kashyap <skashyap@marvell.com>
+Date: Tue, 27 Feb 2024 22:11:24 +0530
+Subject: scsi: qla2xxx: Fix double free of fcport
+
+From: Saurav Kashyap <skashyap@marvell.com>
+
+commit 82f522ae0d97119a43da53e0f729275691b9c525 upstream.
+
+The server was crashing after LOGO because fcport was getting freed twice.
+
+ -----------[ cut here ]-----------
+ kernel BUG at mm/slub.c:371!
+ invalid opcode: 0000 1 SMP PTI
+ CPU: 35 PID: 4610 Comm: bash Kdump: loaded Tainted: G OE --------- - - 4.18.0-425.3.1.el8.x86_64 #1
+ Hardware name: HPE ProLiant DL360 Gen10/ProLiant DL360 Gen10, BIOS U32 09/03/2021
+ RIP: 0010:set_freepointer.part.57+0x0/0x10
+ RSP: 0018:ffffb07107027d90 EFLAGS: 00010246
+ RAX: ffff9cb7e3150000 RBX: ffff9cb7e332b9c0 RCX: ffff9cb7e3150400
+ RDX: 0000000000001f37 RSI: 0000000000000000 RDI: ffff9cb7c0005500
+ RBP: fffff693448c5400 R08: 0000000080000000 R09: 0000000000000009
+ R10: 0000000000000000 R11: 0000000000132af0 R12: ffff9cb7c0005500
+ R13: ffff9cb7e3150000 R14: ffffffffc06990e0 R15: ffff9cb7ea85ea58
+ FS: 00007ff6b79c2740(0000) GS:ffff9cb8f7ec0000(0000) knlGS:0000000000000000
+ CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
+ CR2: 000055b426b7d700 CR3: 0000000169c18002 CR4: 00000000007706e0
+ DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
+ DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
+ PKRU: 55555554
+ Call Trace:
+ kfree+0x238/0x250
+ qla2x00_els_dcmd_sp_free+0x20/0x230 [qla2xxx]
+ ? qla24xx_els_dcmd_iocb+0x607/0x690 [qla2xxx]
+ qla2x00_issue_logo+0x28c/0x2a0 [qla2xxx]
+ ? qla2x00_issue_logo+0x28c/0x2a0 [qla2xxx]
+ ? kernfs_fop_write+0x11e/0x1a0
+
+Remove one of the free calls and add check for valid fcport. Also use
+function qla2x00_free_fcport() instead of kfree().
+
+Cc: stable@vger.kernel.org
+Signed-off-by: Saurav Kashyap <skashyap@marvell.com>
+Signed-off-by: Nilesh Javali <njavali@marvell.com>
+Link: https://lore.kernel.org/r/20240227164127.36465-9-njavali@marvell.com
+Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/scsi/qla2xxx/qla_iocb.c |    5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+--- a/drivers/scsi/qla2xxx/qla_iocb.c
++++ b/drivers/scsi/qla2xxx/qla_iocb.c
+@@ -2637,7 +2637,8 @@ static void qla2x00_els_dcmd_sp_free(srb
+ {
+       struct srb_iocb *elsio = &sp->u.iocb_cmd;
+-      kfree(sp->fcport);
++      if (sp->fcport)
++              qla2x00_free_fcport(sp->fcport);
+       if (elsio->u.els_logo.els_logo_pyld)
+               dma_free_coherent(&sp->vha->hw->pdev->dev, DMA_POOL_SIZE,
+@@ -2750,6 +2751,7 @@ qla24xx_els_dcmd_iocb(scsi_qla_host_t *v
+       if (!elsio->u.els_logo.els_logo_pyld) {
+               /* ref: INIT */
+               kref_put(&sp->cmd_kref, qla2x00_sp_release);
++              qla2x00_free_fcport(fcport);
+               return QLA_FUNCTION_FAILED;
+       }
+@@ -2784,7 +2786,6 @@ qla24xx_els_dcmd_iocb(scsi_qla_host_t *v
+           fcport->d_id.b.area, fcport->d_id.b.al_pa);
+       wait_for_completion(&elsio->u.els_logo.comp);
+-      qla2x00_free_fcport(fcport);
+       /* ref: INIT */
+       kref_put(&sp->cmd_kref, qla2x00_sp_release);
diff --git a/queue-6.8/scsi-qla2xxx-fix-double-free-of-the-ha-vp_map-pointer.patch b/queue-6.8/scsi-qla2xxx-fix-double-free-of-the-ha-vp_map-pointer.patch
new file mode 100644 (file)
index 0000000..2a31e55
--- /dev/null
@@ -0,0 +1,36 @@
+From e288285d47784fdcf7c81be56df7d65c6f10c58b Mon Sep 17 00:00:00 2001
+From: Saurav Kashyap <skashyap@marvell.com>
+Date: Tue, 27 Feb 2024 22:11:23 +0530
+Subject: scsi: qla2xxx: Fix double free of the ha->vp_map pointer
+
+From: Saurav Kashyap <skashyap@marvell.com>
+
+commit e288285d47784fdcf7c81be56df7d65c6f10c58b upstream.
+
+Coverity scan reported potential risk of double free of the pointer
+ha->vp_map.  ha->vp_map was freed in qla2x00_mem_alloc(), and again freed
+in function qla2x00_mem_free(ha).
+
+Assign NULL to vp_map and kfree take care of NULL.
+
+Cc: stable@vger.kernel.org
+Signed-off-by: Saurav Kashyap <skashyap@marvell.com>
+Signed-off-by: Nilesh Javali <njavali@marvell.com>
+Link: https://lore.kernel.org/r/20240227164127.36465-8-njavali@marvell.com
+Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/scsi/qla2xxx/qla_os.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/scsi/qla2xxx/qla_os.c
++++ b/drivers/scsi/qla2xxx/qla_os.c
+@@ -4602,6 +4602,7 @@ fail_free_init_cb:
+       ha->init_cb_dma = 0;
+ fail_free_vp_map:
+       kfree(ha->vp_map);
++      ha->vp_map = NULL;
+ fail:
+       ql_log(ql_log_fatal, NULL, 0x0030,
+           "Memory allocation failure.\n");
diff --git a/queue-6.8/scsi-qla2xxx-fix-n2n-stuck-connection.patch b/queue-6.8/scsi-qla2xxx-fix-n2n-stuck-connection.patch
new file mode 100644 (file)
index 0000000..0cf7722
--- /dev/null
@@ -0,0 +1,145 @@
+From 881eb861ca3877300570db10abbf11494e48548d Mon Sep 17 00:00:00 2001
+From: Quinn Tran <qutran@marvell.com>
+Date: Tue, 27 Feb 2024 22:11:18 +0530
+Subject: scsi: qla2xxx: Fix N2N stuck connection
+
+From: Quinn Tran <qutran@marvell.com>
+
+commit 881eb861ca3877300570db10abbf11494e48548d upstream.
+
+Disk failed to rediscover after chip reset error injection. The chip reset
+happens at the time when a PLOGI is being sent. This causes a flag to be
+left on which blocks the retry. Clear the blocking flag.
+
+Cc: stable@vger.kernel.org
+Signed-off-by: Quinn Tran <qutran@marvell.com>
+Signed-off-by: Nilesh Javali <njavali@marvell.com>
+Link: https://lore.kernel.org/r/20240227164127.36465-3-njavali@marvell.com
+Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/scsi/qla2xxx/qla_gbl.h  |    2 +-
+ drivers/scsi/qla2xxx/qla_iocb.c |   32 +++++++++++---------------------
+ drivers/scsi/qla2xxx/qla_os.c   |    2 +-
+ 3 files changed, 13 insertions(+), 23 deletions(-)
+
+--- a/drivers/scsi/qla2xxx/qla_gbl.h
++++ b/drivers/scsi/qla2xxx/qla_gbl.h
+@@ -44,7 +44,7 @@ extern int qla2x00_fabric_login(scsi_qla
+ extern int qla2x00_local_device_login(scsi_qla_host_t *, fc_port_t *);
+ extern int qla24xx_els_dcmd_iocb(scsi_qla_host_t *, int, port_id_t);
+-extern int qla24xx_els_dcmd2_iocb(scsi_qla_host_t *, int, fc_port_t *, bool);
++extern int qla24xx_els_dcmd2_iocb(scsi_qla_host_t *, int, fc_port_t *);
+ extern void qla2x00_els_dcmd2_free(scsi_qla_host_t *vha,
+                                  struct els_plogi *els_plogi);
+--- a/drivers/scsi/qla2xxx/qla_iocb.c
++++ b/drivers/scsi/qla2xxx/qla_iocb.c
+@@ -3041,7 +3041,7 @@ static void qla2x00_els_dcmd2_sp_done(sr
+ int
+ qla24xx_els_dcmd2_iocb(scsi_qla_host_t *vha, int els_opcode,
+-    fc_port_t *fcport, bool wait)
++                      fc_port_t *fcport)
+ {
+       srb_t *sp;
+       struct srb_iocb *elsio = NULL;
+@@ -3056,8 +3056,7 @@ qla24xx_els_dcmd2_iocb(scsi_qla_host_t *
+       if (!sp) {
+               ql_log(ql_log_info, vha, 0x70e6,
+                "SRB allocation failed\n");
+-              fcport->flags &= ~FCF_ASYNC_ACTIVE;
+-              return -ENOMEM;
++              goto done;
+       }
+       fcport->flags |= FCF_ASYNC_SENT;
+@@ -3066,9 +3065,6 @@ qla24xx_els_dcmd2_iocb(scsi_qla_host_t *
+       ql_dbg(ql_dbg_io, vha, 0x3073,
+              "%s Enter: PLOGI portid=%06x\n", __func__, fcport->d_id.b24);
+-      if (wait)
+-              sp->flags = SRB_WAKEUP_ON_COMP;
+-
+       sp->type = SRB_ELS_DCMD;
+       sp->name = "ELS_DCMD";
+       sp->fcport = fcport;
+@@ -3084,7 +3080,7 @@ qla24xx_els_dcmd2_iocb(scsi_qla_host_t *
+       if (!elsio->u.els_plogi.els_plogi_pyld) {
+               rval = QLA_FUNCTION_FAILED;
+-              goto out;
++              goto done_free_sp;
+       }
+       resp_ptr = elsio->u.els_plogi.els_resp_pyld =
+@@ -3093,7 +3089,7 @@ qla24xx_els_dcmd2_iocb(scsi_qla_host_t *
+       if (!elsio->u.els_plogi.els_resp_pyld) {
+               rval = QLA_FUNCTION_FAILED;
+-              goto out;
++              goto done_free_sp;
+       }
+       ql_dbg(ql_dbg_io, vha, 0x3073, "PLOGI %p %p\n", ptr, resp_ptr);
+@@ -3109,7 +3105,6 @@ qla24xx_els_dcmd2_iocb(scsi_qla_host_t *
+       if (els_opcode == ELS_DCMD_PLOGI && DBELL_ACTIVE(vha)) {
+               struct fc_els_flogi *p = ptr;
+-
+               p->fl_csp.sp_features |= cpu_to_be16(FC_SP_FT_SEC);
+       }
+@@ -3118,10 +3113,11 @@ qla24xx_els_dcmd2_iocb(scsi_qla_host_t *
+           (uint8_t *)elsio->u.els_plogi.els_plogi_pyld,
+           sizeof(*elsio->u.els_plogi.els_plogi_pyld));
+-      init_completion(&elsio->u.els_plogi.comp);
+       rval = qla2x00_start_sp(sp);
+       if (rval != QLA_SUCCESS) {
+-              rval = QLA_FUNCTION_FAILED;
++              fcport->flags |= FCF_LOGIN_NEEDED;
++              set_bit(RELOGIN_NEEDED, &vha->dpc_flags);
++              goto done_free_sp;
+       } else {
+               ql_dbg(ql_dbg_disc, vha, 0x3074,
+                   "%s PLOGI sent, hdl=%x, loopid=%x, to port_id %06x from port_id %06x\n",
+@@ -3129,21 +3125,15 @@ qla24xx_els_dcmd2_iocb(scsi_qla_host_t *
+                   fcport->d_id.b24, vha->d_id.b24);
+       }
+-      if (wait) {
+-              wait_for_completion(&elsio->u.els_plogi.comp);
+-
+-              if (elsio->u.els_plogi.comp_status != CS_COMPLETE)
+-                      rval = QLA_FUNCTION_FAILED;
+-      } else {
+-              goto done;
+-      }
++      return rval;
+-out:
+-      fcport->flags &= ~(FCF_ASYNC_SENT | FCF_ASYNC_ACTIVE);
++done_free_sp:
+       qla2x00_els_dcmd2_free(vha, &elsio->u.els_plogi);
+       /* ref: INIT */
+       kref_put(&sp->cmd_kref, qla2x00_sp_release);
+ done:
++      fcport->flags &= ~(FCF_ASYNC_SENT | FCF_ASYNC_ACTIVE);
++      qla2x00_set_fcport_disc_state(fcport, DSC_DELETED);
+       return rval;
+ }
+--- a/drivers/scsi/qla2xxx/qla_os.c
++++ b/drivers/scsi/qla2xxx/qla_os.c
+@@ -5583,7 +5583,7 @@ qla2x00_do_work(struct scsi_qla_host *vh
+                       break;
+               case QLA_EVT_ELS_PLOGI:
+                       qla24xx_els_dcmd2_iocb(vha, ELS_DCMD_PLOGI,
+-                          e->u.fcport.fcport, false);
++                          e->u.fcport.fcport);
+                       break;
+               case QLA_EVT_SA_REPLACE:
+                       rc = qla24xx_issue_sa_replace_iocb(vha, e);
diff --git a/queue-6.8/scsi-qla2xxx-nvme-fcp-prefer-flag-not-being-honored.patch b/queue-6.8/scsi-qla2xxx-nvme-fcp-prefer-flag-not-being-honored.patch
new file mode 100644 (file)
index 0000000..2ed8e08
--- /dev/null
@@ -0,0 +1,69 @@
+From 69aecdd410106dc3a8f543a4f7ec6379b995b8d0 Mon Sep 17 00:00:00 2001
+From: Quinn Tran <qutran@marvell.com>
+Date: Tue, 27 Feb 2024 22:11:21 +0530
+Subject: scsi: qla2xxx: NVME|FCP prefer flag not being honored
+
+From: Quinn Tran <qutran@marvell.com>
+
+commit 69aecdd410106dc3a8f543a4f7ec6379b995b8d0 upstream.
+
+Changing of [FCP|NVME] prefer flag in flash has no effect on driver. For
+device that supports both FCP + NVMe over the same connection, driver
+continues to connect to this device using the previous successful login
+mode.
+
+On completion of flash update, adapter will be reset. Driver will
+reset the prefer flag based on setting from flash.
+
+Cc: stable@vger.kernel.org
+Signed-off-by: Quinn Tran <qutran@marvell.com>
+Signed-off-by: Nilesh Javali <njavali@marvell.com>
+Link: https://lore.kernel.org/r/20240227164127.36465-6-njavali@marvell.com
+Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/scsi/qla2xxx/qla_init.c |   18 ++++++++++++++++++
+ 1 file changed, 18 insertions(+)
+
+--- a/drivers/scsi/qla2xxx/qla_init.c
++++ b/drivers/scsi/qla2xxx/qla_init.c
+@@ -7501,6 +7501,7 @@ qla2x00_abort_isp(scsi_qla_host_t *vha)
+       struct scsi_qla_host *vp, *tvp;
+       struct req_que *req = ha->req_q_map[0];
+       unsigned long flags;
++      fc_port_t *fcport;
+       if (vha->flags.online) {
+               qla2x00_abort_isp_cleanup(vha);
+@@ -7569,6 +7570,15 @@ qla2x00_abort_isp(scsi_qla_host_t *vha)
+                              "ISP Abort - ISP reg disconnect post nvmram config, exiting.\n");
+                       return status;
+               }
++
++              /* User may have updated [fcp|nvme] prefer in flash */
++              list_for_each_entry(fcport, &vha->vp_fcports, list) {
++                      if (NVME_PRIORITY(ha, fcport))
++                              fcport->do_prli_nvme = 1;
++                      else
++                              fcport->do_prli_nvme = 0;
++              }
++
+               if (!qla2x00_restart_isp(vha)) {
+                       clear_bit(RESET_MARKER_NEEDED, &vha->dpc_flags);
+@@ -7639,6 +7649,14 @@ qla2x00_abort_isp(scsi_qla_host_t *vha)
+                               atomic_inc(&vp->vref_count);
+                               spin_unlock_irqrestore(&ha->vport_slock, flags);
++                              /* User may have updated [fcp|nvme] prefer in flash */
++                              list_for_each_entry(fcport, &vp->vp_fcports, list) {
++                                      if (NVME_PRIORITY(ha, fcport))
++                                              fcport->do_prli_nvme = 1;
++                                      else
++                                              fcport->do_prli_nvme = 0;
++                              }
++
+                               qla2x00_vp_abort_isp(vp);
+                               spin_lock_irqsave(&ha->vport_slock, flags);
diff --git a/queue-6.8/scsi-qla2xxx-prevent-command-send-on-chip-reset.patch b/queue-6.8/scsi-qla2xxx-prevent-command-send-on-chip-reset.patch
new file mode 100644 (file)
index 0000000..268bf32
--- /dev/null
@@ -0,0 +1,115 @@
+From 4895009c4bb72f71f2e682f1e7d2c2d96e482087 Mon Sep 17 00:00:00 2001
+From: Quinn Tran <qutran@marvell.com>
+Date: Tue, 27 Feb 2024 22:11:17 +0530
+Subject: scsi: qla2xxx: Prevent command send on chip reset
+
+From: Quinn Tran <qutran@marvell.com>
+
+commit 4895009c4bb72f71f2e682f1e7d2c2d96e482087 upstream.
+
+Currently IOCBs are allowed to push through while chip reset could be in
+progress. During chip reset the outstanding_cmds array is cleared
+twice. Once when any command on this array is returned as failed and
+secondly when the array is initialize to zero. If a command is inserted on
+to the array between these intervals, then the command will be lost.  Check
+for chip reset before sending IOCB.
+
+Cc: stable@vger.kernel.org
+Signed-off-by: Quinn Tran <qutran@marvell.com>
+Signed-off-by: Nilesh Javali <njavali@marvell.com>
+Link: https://lore.kernel.org/r/20240227164127.36465-2-njavali@marvell.com
+Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/scsi/qla2xxx/qla_init.c |    8 ++++++--
+ drivers/scsi/qla2xxx/qla_iocb.c |   33 +++++++++++++++++++++++++++++++--
+ 2 files changed, 37 insertions(+), 4 deletions(-)
+
+--- a/drivers/scsi/qla2xxx/qla_init.c
++++ b/drivers/scsi/qla2xxx/qla_init.c
+@@ -1193,8 +1193,12 @@ int qla24xx_async_gnl(struct scsi_qla_ho
+       return rval;
+ done_free_sp:
+-      /* ref: INIT */
+-      kref_put(&sp->cmd_kref, qla2x00_sp_release);
++      /*
++       * use qla24xx_async_gnl_sp_done to purge all pending gnl request.
++       * kref_put is call behind the scene.
++       */
++      sp->u.iocb_cmd.u.mbx.in_mb[0] = MBS_COMMAND_ERROR;
++      qla24xx_async_gnl_sp_done(sp, QLA_COMMAND_ERROR);
+       fcport->flags &= ~(FCF_ASYNC_SENT);
+ done:
+       fcport->flags &= ~(FCF_ASYNC_ACTIVE);
+--- a/drivers/scsi/qla2xxx/qla_iocb.c
++++ b/drivers/scsi/qla2xxx/qla_iocb.c
+@@ -2587,6 +2587,33 @@ void
+ qla2x00_sp_release(struct kref *kref)
+ {
+       struct srb *sp = container_of(kref, struct srb, cmd_kref);
++      struct scsi_qla_host *vha = sp->vha;
++
++      switch (sp->type) {
++      case SRB_CT_PTHRU_CMD:
++              /* GPSC & GFPNID use fcport->ct_desc.ct_sns for both req & rsp */
++              if (sp->u.iocb_cmd.u.ctarg.req &&
++                      (!sp->fcport ||
++                       sp->u.iocb_cmd.u.ctarg.req != sp->fcport->ct_desc.ct_sns)) {
++                      dma_free_coherent(&vha->hw->pdev->dev,
++                          sp->u.iocb_cmd.u.ctarg.req_allocated_size,
++                          sp->u.iocb_cmd.u.ctarg.req,
++                          sp->u.iocb_cmd.u.ctarg.req_dma);
++                      sp->u.iocb_cmd.u.ctarg.req = NULL;
++              }
++              if (sp->u.iocb_cmd.u.ctarg.rsp &&
++                      (!sp->fcport ||
++                       sp->u.iocb_cmd.u.ctarg.rsp != sp->fcport->ct_desc.ct_sns)) {
++                      dma_free_coherent(&vha->hw->pdev->dev,
++                          sp->u.iocb_cmd.u.ctarg.rsp_allocated_size,
++                          sp->u.iocb_cmd.u.ctarg.rsp,
++                          sp->u.iocb_cmd.u.ctarg.rsp_dma);
++                      sp->u.iocb_cmd.u.ctarg.rsp = NULL;
++              }
++              break;
++      default:
++              break;
++      }
+       sp->free(sp);
+ }
+@@ -2692,7 +2719,7 @@ qla24xx_els_dcmd_iocb(scsi_qla_host_t *v
+        */
+       sp = qla2x00_get_sp(vha, fcport, GFP_KERNEL);
+       if (!sp) {
+-              kfree(fcport);
++              qla2x00_free_fcport(fcport);
+               ql_log(ql_log_info, vha, 0x70e6,
+                "SRB allocation failed\n");
+               return -ENOMEM;
+@@ -2747,6 +2774,7 @@ qla24xx_els_dcmd_iocb(scsi_qla_host_t *v
+       if (rval != QLA_SUCCESS) {
+               /* ref: INIT */
+               kref_put(&sp->cmd_kref, qla2x00_sp_release);
++              qla2x00_free_fcport(fcport);
+               return QLA_FUNCTION_FAILED;
+       }
+@@ -2756,6 +2784,7 @@ qla24xx_els_dcmd_iocb(scsi_qla_host_t *v
+           fcport->d_id.b.area, fcport->d_id.b.al_pa);
+       wait_for_completion(&elsio->u.els_logo.comp);
++      qla2x00_free_fcport(fcport);
+       /* ref: INIT */
+       kref_put(&sp->cmd_kref, qla2x00_sp_release);
+@@ -3918,7 +3947,7 @@ qla2x00_start_sp(srb_t *sp)
+               return -EAGAIN;
+       }
+-      pkt = __qla2x00_alloc_iocbs(sp->qpair, sp);
++      pkt = qla2x00_alloc_iocbs_ready(sp->qpair, sp);
+       if (!pkt) {
+               rval = -EAGAIN;
+               ql_log(ql_log_warn, vha, 0x700c,
diff --git a/queue-6.8/scsi-qla2xxx-split-fce-eft-trace-control.patch b/queue-6.8/scsi-qla2xxx-split-fce-eft-trace-control.patch
new file mode 100644 (file)
index 0000000..91ae3ba
--- /dev/null
@@ -0,0 +1,224 @@
+From 76a192e1a566e15365704b9f8fb3b70825f85064 Mon Sep 17 00:00:00 2001
+From: Quinn Tran <qutran@marvell.com>
+Date: Tue, 27 Feb 2024 22:11:19 +0530
+Subject: scsi: qla2xxx: Split FCE|EFT trace control
+
+From: Quinn Tran <qutran@marvell.com>
+
+commit 76a192e1a566e15365704b9f8fb3b70825f85064 upstream.
+
+Current code combines the allocation of FCE|EFT trace buffers and enables
+the features all in 1 step.
+
+Split this step into separate steps in preparation for follow-on patch to
+allow user to have a choice to enable / disable FCE trace feature.
+
+Cc: stable@vger.kernel.org
+Reported-by: kernel test robot <lkp@intel.com>
+Signed-off-by: Quinn Tran <qutran@marvell.com>
+Signed-off-by: Nilesh Javali <njavali@marvell.com>
+Link: https://lore.kernel.org/r/20240227164127.36465-4-njavali@marvell.com
+Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/scsi/qla2xxx/qla_init.c |  102 ++++++++++++++++------------------------
+ 1 file changed, 41 insertions(+), 61 deletions(-)
+
+--- a/drivers/scsi/qla2xxx/qla_init.c
++++ b/drivers/scsi/qla2xxx/qla_init.c
+@@ -2669,6 +2669,40 @@ exit:
+       return rval;
+ }
++static void qla_enable_fce_trace(scsi_qla_host_t *vha)
++{
++      int rval;
++      struct qla_hw_data *ha = vha->hw;
++
++      if (ha->fce) {
++              ha->flags.fce_enabled = 1;
++              memset(ha->fce, 0, fce_calc_size(ha->fce_bufs));
++              rval = qla2x00_enable_fce_trace(vha,
++                  ha->fce_dma, ha->fce_bufs, ha->fce_mb, &ha->fce_bufs);
++
++              if (rval) {
++                      ql_log(ql_log_warn, vha, 0x8033,
++                          "Unable to reinitialize FCE (%d).\n", rval);
++                      ha->flags.fce_enabled = 0;
++              }
++      }
++}
++
++static void qla_enable_eft_trace(scsi_qla_host_t *vha)
++{
++      int rval;
++      struct qla_hw_data *ha = vha->hw;
++
++      if (ha->eft) {
++              memset(ha->eft, 0, EFT_SIZE);
++              rval = qla2x00_enable_eft_trace(vha, ha->eft_dma, EFT_NUM_BUFFERS);
++
++              if (rval) {
++                      ql_log(ql_log_warn, vha, 0x8034,
++                          "Unable to reinitialize EFT (%d).\n", rval);
++              }
++      }
++}
+ /*
+ * qla2x00_initialize_adapter
+ *      Initialize board.
+@@ -3672,9 +3706,8 @@ qla24xx_chip_diag(scsi_qla_host_t *vha)
+ }
+ static void
+-qla2x00_init_fce_trace(scsi_qla_host_t *vha)
++qla2x00_alloc_fce_trace(scsi_qla_host_t *vha)
+ {
+-      int rval;
+       dma_addr_t tc_dma;
+       void *tc;
+       struct qla_hw_data *ha = vha->hw;
+@@ -3703,27 +3736,17 @@ qla2x00_init_fce_trace(scsi_qla_host_t *
+               return;
+       }
+-      rval = qla2x00_enable_fce_trace(vha, tc_dma, FCE_NUM_BUFFERS,
+-                                      ha->fce_mb, &ha->fce_bufs);
+-      if (rval) {
+-              ql_log(ql_log_warn, vha, 0x00bf,
+-                     "Unable to initialize FCE (%d).\n", rval);
+-              dma_free_coherent(&ha->pdev->dev, FCE_SIZE, tc, tc_dma);
+-              return;
+-      }
+-
+       ql_dbg(ql_dbg_init, vha, 0x00c0,
+              "Allocated (%d KB) for FCE...\n", FCE_SIZE / 1024);
+-      ha->flags.fce_enabled = 1;
+       ha->fce_dma = tc_dma;
+       ha->fce = tc;
++      ha->fce_bufs = FCE_NUM_BUFFERS;
+ }
+ static void
+-qla2x00_init_eft_trace(scsi_qla_host_t *vha)
++qla2x00_alloc_eft_trace(scsi_qla_host_t *vha)
+ {
+-      int rval;
+       dma_addr_t tc_dma;
+       void *tc;
+       struct qla_hw_data *ha = vha->hw;
+@@ -3748,14 +3771,6 @@ qla2x00_init_eft_trace(scsi_qla_host_t *
+               return;
+       }
+-      rval = qla2x00_enable_eft_trace(vha, tc_dma, EFT_NUM_BUFFERS);
+-      if (rval) {
+-              ql_log(ql_log_warn, vha, 0x00c2,
+-                     "Unable to initialize EFT (%d).\n", rval);
+-              dma_free_coherent(&ha->pdev->dev, EFT_SIZE, tc, tc_dma);
+-              return;
+-      }
+-
+       ql_dbg(ql_dbg_init, vha, 0x00c3,
+              "Allocated (%d KB) EFT ...\n", EFT_SIZE / 1024);
+@@ -3763,13 +3778,6 @@ qla2x00_init_eft_trace(scsi_qla_host_t *
+       ha->eft = tc;
+ }
+-static void
+-qla2x00_alloc_offload_mem(scsi_qla_host_t *vha)
+-{
+-      qla2x00_init_fce_trace(vha);
+-      qla2x00_init_eft_trace(vha);
+-}
+-
+ void
+ qla2x00_alloc_fw_dump(scsi_qla_host_t *vha)
+ {
+@@ -3824,10 +3832,10 @@ qla2x00_alloc_fw_dump(scsi_qla_host_t *v
+               if (ha->tgt.atio_ring)
+                       mq_size += ha->tgt.atio_q_length * sizeof(request_t);
+-              qla2x00_init_fce_trace(vha);
++              qla2x00_alloc_fce_trace(vha);
+               if (ha->fce)
+                       fce_size = sizeof(struct qla2xxx_fce_chain) + FCE_SIZE;
+-              qla2x00_init_eft_trace(vha);
++              qla2x00_alloc_eft_trace(vha);
+               if (ha->eft)
+                       eft_size = EFT_SIZE;
+       }
+@@ -4257,7 +4265,6 @@ qla2x00_setup_chip(scsi_qla_host_t *vha)
+       struct qla_hw_data *ha = vha->hw;
+       struct device_reg_2xxx __iomem *reg = &ha->iobase->isp;
+       unsigned long flags;
+-      uint16_t fw_major_version;
+       int done_once = 0;
+       if (IS_P3P_TYPE(ha)) {
+@@ -4324,7 +4331,6 @@ execute_fw_with_lr:
+                                       goto failed;
+ enable_82xx_npiv:
+-                              fw_major_version = ha->fw_major_version;
+                               if (IS_P3P_TYPE(ha))
+                                       qla82xx_check_md_needed(vha);
+                               else
+@@ -4353,12 +4359,11 @@ enable_82xx_npiv:
+                               if (rval != QLA_SUCCESS)
+                                       goto failed;
+-                              if (!fw_major_version && !(IS_P3P_TYPE(ha)))
+-                                      qla2x00_alloc_offload_mem(vha);
+-
+                               if (ql2xallocfwdump && !(IS_P3P_TYPE(ha)))
+                                       qla2x00_alloc_fw_dump(vha);
++                              qla_enable_fce_trace(vha);
++                              qla_enable_eft_trace(vha);
+                       } else {
+                               goto failed;
+                       }
+@@ -7491,7 +7496,6 @@ qla2x00_abort_isp_cleanup(scsi_qla_host_
+ int
+ qla2x00_abort_isp(scsi_qla_host_t *vha)
+ {
+-      int rval;
+       uint8_t        status = 0;
+       struct qla_hw_data *ha = vha->hw;
+       struct scsi_qla_host *vp, *tvp;
+@@ -7585,31 +7589,7 @@ qla2x00_abort_isp(scsi_qla_host_t *vha)
+                       if (IS_QLA81XX(ha) || IS_QLA8031(ha))
+                               qla2x00_get_fw_version(vha);
+-                      if (ha->fce) {
+-                              ha->flags.fce_enabled = 1;
+-                              memset(ha->fce, 0,
+-                                  fce_calc_size(ha->fce_bufs));
+-                              rval = qla2x00_enable_fce_trace(vha,
+-                                  ha->fce_dma, ha->fce_bufs, ha->fce_mb,
+-                                  &ha->fce_bufs);
+-                              if (rval) {
+-                                      ql_log(ql_log_warn, vha, 0x8033,
+-                                          "Unable to reinitialize FCE "
+-                                          "(%d).\n", rval);
+-                                      ha->flags.fce_enabled = 0;
+-                              }
+-                      }
+-                      if (ha->eft) {
+-                              memset(ha->eft, 0, EFT_SIZE);
+-                              rval = qla2x00_enable_eft_trace(vha,
+-                                  ha->eft_dma, EFT_NUM_BUFFERS);
+-                              if (rval) {
+-                                      ql_log(ql_log_warn, vha, 0x8034,
+-                                          "Unable to reinitialize EFT "
+-                                          "(%d).\n", rval);
+-                              }
+-                      }
+               } else {        /* failed the ISP abort */
+                       vha->flags.online = 1;
+                       if (test_bit(ISP_ABORT_RETRY, &vha->dpc_flags)) {
diff --git a/queue-6.8/scsi-qla2xxx-update-manufacturer-detail.patch b/queue-6.8/scsi-qla2xxx-update-manufacturer-detail.patch
new file mode 100644 (file)
index 0000000..811bad7
--- /dev/null
@@ -0,0 +1,34 @@
+From 688fa069fda6fce24d243cddfe0c7024428acb74 Mon Sep 17 00:00:00 2001
+From: Bikash Hazarika <bhazarika@marvell.com>
+Date: Tue, 27 Feb 2024 22:11:20 +0530
+Subject: scsi: qla2xxx: Update manufacturer detail
+
+From: Bikash Hazarika <bhazarika@marvell.com>
+
+commit 688fa069fda6fce24d243cddfe0c7024428acb74 upstream.
+
+Update manufacturer detail from "Marvell Semiconductor, Inc." to
+"Marvell".
+
+Cc: stable@vger.kernel.org
+Signed-off-by: Bikash Hazarika <bhazarika@marvell.com>
+Signed-off-by: Nilesh Javali <njavali@marvell.com>
+Link: https://lore.kernel.org/r/20240227164127.36465-5-njavali@marvell.com
+Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/scsi/qla2xxx/qla_def.h |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/scsi/qla2xxx/qla_def.h
++++ b/drivers/scsi/qla2xxx/qla_def.h
+@@ -82,7 +82,7 @@ typedef union {
+ #include "qla_nvme.h"
+ #define QLA2XXX_DRIVER_NAME   "qla2xxx"
+ #define QLA2XXX_APIDEV                "ql2xapidev"
+-#define QLA2XXX_MANUFACTURER  "Marvell Semiconductor, Inc."
++#define QLA2XXX_MANUFACTURER  "Marvell"
+ /*
+  * We have MAILBOX_REGISTER_COUNT sized arrays in a few places,
index 241dce0dc1b82dca8f6b315f0e5d6c67ceb52dbf..9d558eff8f70652be3e8e9f52215b89d5e72d323 100644 (file)
@@ -374,3 +374,13 @@ usb-typec-ucsi-check-for-notifications-after-init.patch
 usb-typec-ucsi-ack-unsupported-commands.patch
 usb-typec-ucsi_acpi-refactor-and-fix-dell-quirk.patch
 usb-typec-ucsi-clear-ucsi_cci_reset_complete-before-reset.patch
+scsi-qla2xxx-prevent-command-send-on-chip-reset.patch
+scsi-qla2xxx-fix-n2n-stuck-connection.patch
+scsi-qla2xxx-split-fce-eft-trace-control.patch
+scsi-qla2xxx-update-manufacturer-detail.patch
+scsi-qla2xxx-nvme-fcp-prefer-flag-not-being-honored.patch
+scsi-qla2xxx-fix-command-flush-on-cable-pull.patch
+scsi-qla2xxx-fix-double-free-of-the-ha-vp_map-pointer.patch
+scsi-qla2xxx-fix-double-free-of-fcport.patch
+scsi-qla2xxx-change-debug-message-during-driver-unload.patch
+scsi-qla2xxx-delay-i-o-abort-on-pci-error.patch