]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.19-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 2 Apr 2022 14:22:55 +0000 (16:22 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 2 Apr 2022 14:22:55 +0000 (16:22 +0200)
added patches:
powerpc-fix-build-errors-with-newer-binutils.patch
powerpc-lib-sstep-fix-build-errors-with-newer-binutils.patch
powerpc-lib-sstep-fix-sthcx-instruction.patch
scsi-qla2xxx-check-for-firmware-dump-already-collected.patch
scsi-qla2xxx-fix-hang-due-to-session-stuck.patch
scsi-qla2xxx-fix-incorrect-reporting-of-task-management-failure.patch
scsi-qla2xxx-fix-stuck-session-in-gpdb.patch
scsi-qla2xxx-fix-warning-for-missing-error-code.patch
scsi-qla2xxx-reduce-false-trigger-to-login.patch
scsi-qla2xxx-suppress-a-kernel-complaint-in-qla_create_qpair.patch
scsi-qla2xxx-use-correct-feature-type-field-during-rff_id-processing.patch

12 files changed:
queue-4.19/powerpc-fix-build-errors-with-newer-binutils.patch [new file with mode: 0644]
queue-4.19/powerpc-lib-sstep-fix-build-errors-with-newer-binutils.patch [new file with mode: 0644]
queue-4.19/powerpc-lib-sstep-fix-sthcx-instruction.patch [new file with mode: 0644]
queue-4.19/scsi-qla2xxx-check-for-firmware-dump-already-collected.patch [new file with mode: 0644]
queue-4.19/scsi-qla2xxx-fix-hang-due-to-session-stuck.patch [new file with mode: 0644]
queue-4.19/scsi-qla2xxx-fix-incorrect-reporting-of-task-management-failure.patch [new file with mode: 0644]
queue-4.19/scsi-qla2xxx-fix-stuck-session-in-gpdb.patch [new file with mode: 0644]
queue-4.19/scsi-qla2xxx-fix-warning-for-missing-error-code.patch [new file with mode: 0644]
queue-4.19/scsi-qla2xxx-reduce-false-trigger-to-login.patch [new file with mode: 0644]
queue-4.19/scsi-qla2xxx-suppress-a-kernel-complaint-in-qla_create_qpair.patch [new file with mode: 0644]
queue-4.19/scsi-qla2xxx-use-correct-feature-type-field-during-rff_id-processing.patch [new file with mode: 0644]
queue-4.19/series

diff --git a/queue-4.19/powerpc-fix-build-errors-with-newer-binutils.patch b/queue-4.19/powerpc-fix-build-errors-with-newer-binutils.patch
new file mode 100644 (file)
index 0000000..e6cd5a3
--- /dev/null
@@ -0,0 +1,164 @@
+From 8667d0d64dd1f84fd41b5897fd87fa9113ae05e3 Mon Sep 17 00:00:00 2001
+From: Anders Roxell <anders.roxell@linaro.org>
+Date: Thu, 24 Feb 2022 17:22:14 +0100
+Subject: powerpc: Fix build errors with newer binutils
+
+From: Anders Roxell <anders.roxell@linaro.org>
+
+commit 8667d0d64dd1f84fd41b5897fd87fa9113ae05e3 upstream.
+
+Building tinyconfig with gcc (Debian 11.2.0-16) and assembler (Debian
+2.37.90.20220207) the following build error shows up:
+
+  {standard input}: Assembler messages:
+  {standard input}:1190: Error: unrecognized opcode: `stbcix'
+  {standard input}:1433: Error: unrecognized opcode: `lwzcix'
+  {standard input}:1453: Error: unrecognized opcode: `stbcix'
+  {standard input}:1460: Error: unrecognized opcode: `stwcix'
+  {standard input}:1596: Error: unrecognized opcode: `stbcix'
+  ...
+
+Rework to add assembler directives [1] around the instruction. Going
+through them one by one shows that the changes should be safe.  Like
+__get_user_atomic_128_aligned() is only called in p9_hmi_special_emu(),
+which according to the name is specific to power9.  And __raw_rm_read*()
+are only called in things that are powernv or book3s_hv specific.
+
+[1] https://sourceware.org/binutils/docs/as/PowerPC_002dPseudo.html#PowerPC_002dPseudo
+
+Cc: stable@vger.kernel.org
+Co-developed-by: Arnd Bergmann <arnd@arndb.de>
+Signed-off-by: Arnd Bergmann <arnd@arndb.de>
+Signed-off-by: Anders Roxell <anders.roxell@linaro.org>
+Reviewed-by: Segher Boessenkool <segher@kernel.crashing.org>
+[mpe: Make commit subject more descriptive]
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+Link: https://lore.kernel.org/r/20220224162215.3406642-2-anders.roxell@linaro.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ arch/powerpc/include/asm/io.h        |   40 ++++++++++++++++++++++++++++-------
+ arch/powerpc/include/asm/uaccess.h   |    3 ++
+ arch/powerpc/platforms/powernv/rng.c |    6 ++++-
+ 3 files changed, 40 insertions(+), 9 deletions(-)
+
+--- a/arch/powerpc/include/asm/io.h
++++ b/arch/powerpc/include/asm/io.h
+@@ -372,25 +372,37 @@ static inline void __raw_writeq_be(unsig
+  */
+ static inline void __raw_rm_writeb(u8 val, volatile void __iomem *paddr)
+ {
+-      __asm__ __volatile__("stbcix %0,0,%1"
++      __asm__ __volatile__(".machine push;   \
++                            .machine power6; \
++                            stbcix %0,0,%1;  \
++                            .machine pop;"
+               : : "r" (val), "r" (paddr) : "memory");
+ }
+ static inline void __raw_rm_writew(u16 val, volatile void __iomem *paddr)
+ {
+-      __asm__ __volatile__("sthcix %0,0,%1"
++      __asm__ __volatile__(".machine push;   \
++                            .machine power6; \
++                            sthcix %0,0,%1;  \
++                            .machine pop;"
+               : : "r" (val), "r" (paddr) : "memory");
+ }
+ static inline void __raw_rm_writel(u32 val, volatile void __iomem *paddr)
+ {
+-      __asm__ __volatile__("stwcix %0,0,%1"
++      __asm__ __volatile__(".machine push;   \
++                            .machine power6; \
++                            stwcix %0,0,%1;  \
++                            .machine pop;"
+               : : "r" (val), "r" (paddr) : "memory");
+ }
+ static inline void __raw_rm_writeq(u64 val, volatile void __iomem *paddr)
+ {
+-      __asm__ __volatile__("stdcix %0,0,%1"
++      __asm__ __volatile__(".machine push;   \
++                            .machine power6; \
++                            stdcix %0,0,%1;  \
++                            .machine pop;"
+               : : "r" (val), "r" (paddr) : "memory");
+ }
+@@ -402,7 +414,10 @@ static inline void __raw_rm_writeq_be(u6
+ static inline u8 __raw_rm_readb(volatile void __iomem *paddr)
+ {
+       u8 ret;
+-      __asm__ __volatile__("lbzcix %0,0, %1"
++      __asm__ __volatile__(".machine push;   \
++                            .machine power6; \
++                            lbzcix %0,0, %1; \
++                            .machine pop;"
+                            : "=r" (ret) : "r" (paddr) : "memory");
+       return ret;
+ }
+@@ -410,7 +425,10 @@ static inline u8 __raw_rm_readb(volatile
+ static inline u16 __raw_rm_readw(volatile void __iomem *paddr)
+ {
+       u16 ret;
+-      __asm__ __volatile__("lhzcix %0,0, %1"
++      __asm__ __volatile__(".machine push;   \
++                            .machine power6; \
++                            lhzcix %0,0, %1; \
++                            .machine pop;"
+                            : "=r" (ret) : "r" (paddr) : "memory");
+       return ret;
+ }
+@@ -418,7 +436,10 @@ static inline u16 __raw_rm_readw(volatil
+ static inline u32 __raw_rm_readl(volatile void __iomem *paddr)
+ {
+       u32 ret;
+-      __asm__ __volatile__("lwzcix %0,0, %1"
++      __asm__ __volatile__(".machine push;   \
++                            .machine power6; \
++                            lwzcix %0,0, %1; \
++                            .machine pop;"
+                            : "=r" (ret) : "r" (paddr) : "memory");
+       return ret;
+ }
+@@ -426,7 +447,10 @@ static inline u32 __raw_rm_readl(volatil
+ static inline u64 __raw_rm_readq(volatile void __iomem *paddr)
+ {
+       u64 ret;
+-      __asm__ __volatile__("ldcix %0,0, %1"
++      __asm__ __volatile__(".machine push;   \
++                            .machine power6; \
++                            ldcix %0,0, %1;  \
++                            .machine pop;"
+                            : "=r" (ret) : "r" (paddr) : "memory");
+       return ret;
+ }
+--- a/arch/powerpc/include/asm/uaccess.h
++++ b/arch/powerpc/include/asm/uaccess.h
+@@ -217,8 +217,11 @@ extern long __get_user_bad(void);
+  */
+ #define __get_user_atomic_128_aligned(kaddr, uaddr, err)              \
+       __asm__ __volatile__(                           \
++              ".machine push\n"                       \
++              ".machine altivec\n"                    \
+               "1:     lvx  0,0,%1     # get user\n"   \
+               "       stvx 0,0,%2     # put kernel\n" \
++              ".machine pop\n"                        \
+               "2:\n"                                  \
+               ".section .fixup,\"ax\"\n"              \
+               "3:     li %0,%3\n"                     \
+--- a/arch/powerpc/platforms/powernv/rng.c
++++ b/arch/powerpc/platforms/powernv/rng.c
+@@ -47,7 +47,11 @@ static unsigned long rng_whiten(struct p
+       unsigned long parity;
+       /* Calculate the parity of the value */
+-      asm ("popcntd %0,%1" : "=r" (parity) : "r" (val));
++      asm (".machine push;   \
++            .machine power7; \
++            popcntd %0,%1;   \
++            .machine pop;"
++           : "=r" (parity) : "r" (val));
+       /* xor our value with the previous mask */
+       val ^= rng->mask;
diff --git a/queue-4.19/powerpc-lib-sstep-fix-build-errors-with-newer-binutils.patch b/queue-4.19/powerpc-lib-sstep-fix-build-errors-with-newer-binutils.patch
new file mode 100644 (file)
index 0000000..c40184e
--- /dev/null
@@ -0,0 +1,61 @@
+From 8219d31effa7be5dbc7ff915d7970672e028c701 Mon Sep 17 00:00:00 2001
+From: Anders Roxell <anders.roxell@linaro.org>
+Date: Thu, 24 Feb 2022 17:22:15 +0100
+Subject: powerpc/lib/sstep: Fix build errors with newer binutils
+
+From: Anders Roxell <anders.roxell@linaro.org>
+
+commit 8219d31effa7be5dbc7ff915d7970672e028c701 upstream.
+
+Building tinyconfig with gcc (Debian 11.2.0-16) and assembler (Debian
+2.37.90.20220207) the following build error shows up:
+
+  {standard input}: Assembler messages:
+  {standard input}:10576: Error: unrecognized opcode: `stbcx.'
+  {standard input}:10680: Error: unrecognized opcode: `lharx'
+  {standard input}:10694: Error: unrecognized opcode: `lbarx'
+
+Rework to add assembler directives [1] around the instruction.  The
+problem with this might be that we can trick a power6 into
+single-stepping through an stbcx. for instance, and it will execute that
+in kernel mode.
+
+[1] https://sourceware.org/binutils/docs/as/PowerPC_002dPseudo.html#PowerPC_002dPseudo
+
+Fixes: 350779a29f11 ("powerpc: Handle most loads and stores in instruction emulation code")
+Cc: stable@vger.kernel.org # v4.14+
+Co-developed-by: Arnd Bergmann <arnd@arndb.de>
+Signed-off-by: Arnd Bergmann <arnd@arndb.de>
+Signed-off-by: Anders Roxell <anders.roxell@linaro.org>
+Reviewed-by: Segher Boessenkool <segher@kernel.crashing.org>
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+Link: https://lore.kernel.org/r/20220224162215.3406642-3-anders.roxell@linaro.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ arch/powerpc/lib/sstep.c |    6 ++++++
+ 1 file changed, 6 insertions(+)
+
+--- a/arch/powerpc/lib/sstep.c
++++ b/arch/powerpc/lib/sstep.c
+@@ -910,7 +910,10 @@ NOKPROBE_SYMBOL(emulate_dcbz);
+ #define __put_user_asmx(x, addr, err, op, cr)         \
+       __asm__ __volatile__(                           \
++              ".machine push\n"                       \
++              ".machine power8\n"                     \
+               "1:     " op " %2,0,%3\n"               \
++              ".machine pop\n"                        \
+               "       mfcr    %1\n"                   \
+               "2:\n"                                  \
+               ".section .fixup,\"ax\"\n"              \
+@@ -923,7 +926,10 @@ NOKPROBE_SYMBOL(emulate_dcbz);
+ #define __get_user_asmx(x, addr, err, op)             \
+       __asm__ __volatile__(                           \
++              ".machine push\n"                       \
++              ".machine power8\n"                     \
+               "1:     "op" %1,0,%2\n"                 \
++              ".machine pop\n"                        \
+               "2:\n"                                  \
+               ".section .fixup,\"ax\"\n"              \
+               "3:     li      %0,%3\n"                \
diff --git a/queue-4.19/powerpc-lib-sstep-fix-sthcx-instruction.patch b/queue-4.19/powerpc-lib-sstep-fix-sthcx-instruction.patch
new file mode 100644 (file)
index 0000000..4266029
--- /dev/null
@@ -0,0 +1,35 @@
+From a633cb1edddaa643fadc70abc88f89a408fa834a Mon Sep 17 00:00:00 2001
+From: Anders Roxell <anders.roxell@linaro.org>
+Date: Thu, 24 Feb 2022 17:22:13 +0100
+Subject: powerpc/lib/sstep: Fix 'sthcx' instruction
+
+From: Anders Roxell <anders.roxell@linaro.org>
+
+commit a633cb1edddaa643fadc70abc88f89a408fa834a upstream.
+
+Looks like there been a copy paste mistake when added the instruction
+'stbcx' twice and one was probably meant to be 'sthcx'. Changing to
+'sthcx' from 'stbcx'.
+
+Fixes: 350779a29f11 ("powerpc: Handle most loads and stores in instruction emulation code")
+Cc: stable@vger.kernel.org # v4.14+
+Reported-by: Arnd Bergmann <arnd@arndb.de>
+Signed-off-by: Anders Roxell <anders.roxell@linaro.org>
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+Link: https://lore.kernel.org/r/20220224162215.3406642-1-anders.roxell@linaro.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ arch/powerpc/lib/sstep.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/arch/powerpc/lib/sstep.c
++++ b/arch/powerpc/lib/sstep.c
+@@ -2806,7 +2806,7 @@ int emulate_loadstore(struct pt_regs *re
+                       __put_user_asmx(op->val, ea, err, "stbcx.", cr);
+                       break;
+               case 2:
+-                      __put_user_asmx(op->val, ea, err, "stbcx.", cr);
++                      __put_user_asmx(op->val, ea, err, "sthcx.", cr);
+                       break;
+ #endif
+               case 4:
diff --git a/queue-4.19/scsi-qla2xxx-check-for-firmware-dump-already-collected.patch b/queue-4.19/scsi-qla2xxx-check-for-firmware-dump-already-collected.patch
new file mode 100644 (file)
index 0000000..7a5c9e4
--- /dev/null
@@ -0,0 +1,39 @@
+From cfbafad7c6032d449a5a07f2d273acd2437bbc6a Mon Sep 17 00:00:00 2001
+From: Joe Carnuccio <joe.carnuccio@cavium.com>
+Date: Sun, 9 Jan 2022 21:02:17 -0800
+Subject: scsi: qla2xxx: Check for firmware dump already collected
+
+From: Joe Carnuccio <joe.carnuccio@cavium.com>
+
+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 <joe.carnuccio@cavium.com>
+Signed-off-by: Nilesh Javali <njavali@marvell.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 ++++++++
+ 1 file changed, 8 insertions(+)
+
+--- a/drivers/scsi/qla2xxx/qla_init.c
++++ b/drivers/scsi/qla2xxx/qla_init.c
+@@ -3151,6 +3151,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-4.19/scsi-qla2xxx-fix-hang-due-to-session-stuck.patch b/queue-4.19/scsi-qla2xxx-fix-hang-due-to-session-stuck.patch
new file mode 100644 (file)
index 0000000..e860813
--- /dev/null
@@ -0,0 +1,78 @@
+From c02aada06d19a215c8291bd968a99a270e96f734 Mon Sep 17 00:00:00 2001
+From: Quinn Tran <qutran@marvell.com>
+Date: Thu, 10 Mar 2022 01:25:58 -0800
+Subject: scsi: qla2xxx: Fix hang due to session stuck
+
+From: Quinn Tran <qutran@marvell.com>
+
+commit c02aada06d19a215c8291bd968a99a270e96f734 upstream.
+
+User experienced device lost. The log shows Get port data base command was
+queued up, failed, and requeued again. Every time it is requeued, it set
+the FCF_ASYNC_ACTIVE. This prevents any recovery code from occurring
+because driver thinks a recovery is in progress for this session. In
+essence, this session is hung.  The reason it gets into this place is the
+session deletion got in front of this call due to link perturbation.
+
+Break the requeue cycle and exit.  The session deletion code will trigger a
+session relogin.
+
+Link: https://lore.kernel.org/r/20220310092604.22950-8-njavali@marvell.com
+Fixes: 726b85487067 ("qla2xxx: Add framework for async fabric discovery")
+Cc: stable@vger.kernel.org
+Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
+Signed-off-by: Quinn Tran <qutran@marvell.com>
+Signed-off-by: Nilesh Javali <njavali@marvell.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  |    4 ++++
+ drivers/scsi/qla2xxx/qla_init.c |   19 +++++++++++++++++--
+ 2 files changed, 21 insertions(+), 2 deletions(-)
+
+--- a/drivers/scsi/qla2xxx/qla_def.h
++++ b/drivers/scsi/qla2xxx/qla_def.h
+@@ -4655,4 +4655,8 @@ struct sff_8247_a0 {
+ #include "qla_gbl.h"
+ #include "qla_dbg.h"
+ #include "qla_inline.h"
++
++#define IS_SESSION_DELETED(_fcport) (_fcport->disc_state == DSC_DELETE_PEND || \
++                                    _fcport->disc_state == DSC_DELETED)
++
+ #endif
+--- a/drivers/scsi/qla2xxx/qla_init.c
++++ b/drivers/scsi/qla2xxx/qla_init.c
+@@ -891,6 +891,14 @@ int qla24xx_async_gnl(struct scsi_qla_ho
+       unsigned long flags;
+       u16 *mb;
++      if (IS_SESSION_DELETED(fcport)) {
++              ql_log(ql_log_warn, vha, 0xffff,
++                     "%s: %8phC is being delete - not sending command.\n",
++                     __func__, fcport->port_name);
++              fcport->flags &= ~FCF_ASYNC_ACTIVE;
++              return rval;
++      }
++
+       if (!vha->flags.online || (fcport->flags & FCF_ASYNC_SENT))
+               return rval;
+@@ -1121,8 +1129,15 @@ int qla24xx_async_gpdb(struct scsi_qla_h
+       struct port_database_24xx *pd;
+       struct qla_hw_data *ha = vha->hw;
+-      if (!vha->flags.online || (fcport->flags & FCF_ASYNC_SENT) ||
+-          fcport->loop_id == FC_NO_LOOP_ID) {
++      if (IS_SESSION_DELETED(fcport)) {
++              ql_log(ql_log_warn, vha, 0xffff,
++                     "%s: %8phC is being delete - not sending command.\n",
++                     __func__, fcport->port_name);
++              fcport->flags &= ~FCF_ASYNC_ACTIVE;
++              return rval;
++      }
++
++      if (!vha->flags.online || fcport->flags & FCF_ASYNC_SENT) {
+               ql_log(ql_log_warn, vha, 0xffff,
+                   "%s: %8phC - not sending command.\n",
+                   __func__, fcport->port_name);
diff --git a/queue-4.19/scsi-qla2xxx-fix-incorrect-reporting-of-task-management-failure.patch b/queue-4.19/scsi-qla2xxx-fix-incorrect-reporting-of-task-management-failure.patch
new file mode 100644 (file)
index 0000000..c40cf84
--- /dev/null
@@ -0,0 +1,37 @@
+From 58ca5999e0367d131de82a75257fbfd5aed0195d Mon Sep 17 00:00:00 2001
+From: Quinn Tran <qutran@marvell.com>
+Date: Thu, 10 Mar 2022 01:25:52 -0800
+Subject: scsi: qla2xxx: Fix incorrect reporting of task management failure
+
+From: Quinn Tran <qutran@marvell.com>
+
+commit 58ca5999e0367d131de82a75257fbfd5aed0195d upstream.
+
+User experienced no task management error while target device is responding
+with error. The RSP_CODE field in the status IOCB is in little endian.
+Driver assumes it's big endian and it picked up erroneous data.
+
+Convert the data back to big endian as is on the wire.
+
+Link: https://lore.kernel.org/r/20220310092604.22950-2-njavali@marvell.com
+Fixes: faef62d13463 ("[SCSI] qla2xxx: Fix Task Management command asynchronous handling")
+Cc: stable@vger.kernel.org
+Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
+Signed-off-by: Quinn Tran <qutran@marvell.com>
+Signed-off-by: Nilesh Javali <njavali@marvell.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/scsi/qla2xxx/qla_isr.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/scsi/qla2xxx/qla_isr.c
++++ b/drivers/scsi/qla2xxx/qla_isr.c
+@@ -1819,6 +1819,7 @@ qla24xx_tm_iocb_entry(scsi_qla_host_t *v
+               iocb->u.tmf.data = QLA_FUNCTION_FAILED;
+       } else if ((le16_to_cpu(sts->scsi_status) &
+           SS_RESPONSE_INFO_LEN_VALID)) {
++              host_to_fcp_swap(sts->data, sizeof(sts->data));
+               if (le32_to_cpu(sts->rsp_data_len) < 4) {
+                       ql_log(ql_log_warn, fcport->vha, 0x503b,
+                           "Async-%s error - hdl=%x not enough response(%d).\n",
diff --git a/queue-4.19/scsi-qla2xxx-fix-stuck-session-in-gpdb.patch b/queue-4.19/scsi-qla2xxx-fix-stuck-session-in-gpdb.patch
new file mode 100644 (file)
index 0000000..28d1265
--- /dev/null
@@ -0,0 +1,40 @@
+From 725d3a0d31a51c0debf970011e05f585e805165b Mon Sep 17 00:00:00 2001
+From: Quinn Tran <qutran@marvell.com>
+Date: Sun, 9 Jan 2022 21:02:04 -0800
+Subject: scsi: qla2xxx: Fix stuck session in gpdb
+
+From: Quinn Tran <qutran@marvell.com>
+
+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 <himanshu.madhani@oracle.com>
+Signed-off-by: Quinn Tran <qutran@marvell.com>
+Signed-off-by: Nilesh Javali <njavali@marvell.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 |    6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+--- a/drivers/scsi/qla2xxx/qla_init.c
++++ b/drivers/scsi/qla2xxx/qla_init.c
+@@ -219,9 +219,9 @@ qla2x00_async_login(struct scsi_qla_host
+       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-4.19/scsi-qla2xxx-fix-warning-for-missing-error-code.patch b/queue-4.19/scsi-qla2xxx-fix-warning-for-missing-error-code.patch
new file mode 100644 (file)
index 0000000..29af548
--- /dev/null
@@ -0,0 +1,35 @@
+From 14cb838d245ae0d523b2f7804af5a02c22e79f5a Mon Sep 17 00:00:00 2001
+From: Nilesh Javali <njavali@marvell.com>
+Date: Sun, 9 Jan 2022 21:02:12 -0800
+Subject: scsi: qla2xxx: Fix warning for missing error code
+
+From: Nilesh Javali <njavali@marvell.com>
+
+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 <himanshu.madhani@oracle.com>
+Signed-off-by: Nilesh Javali <njavali@marvell.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 |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/scsi/qla2xxx/qla_target.c
++++ b/drivers/scsi/qla2xxx/qla_target.c
+@@ -3216,6 +3216,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-4.19/scsi-qla2xxx-reduce-false-trigger-to-login.patch b/queue-4.19/scsi-qla2xxx-reduce-false-trigger-to-login.patch
new file mode 100644 (file)
index 0000000..a75e4e6
--- /dev/null
@@ -0,0 +1,47 @@
+From d2646eed7b19a206912f49101178cbbaa507256c Mon Sep 17 00:00:00 2001
+From: Quinn Tran <qutran@marvell.com>
+Date: Thu, 10 Mar 2022 01:26:00 -0800
+Subject: scsi: qla2xxx: Reduce false trigger to login
+
+From: Quinn Tran <qutran@marvell.com>
+
+commit d2646eed7b19a206912f49101178cbbaa507256c upstream.
+
+While a session is in the middle of a relogin, a late RSCN can be delivered
+from switch. RSCN trigger fabric scan where the scan logic can trigger
+another session login while a login is in progress.  Reduce the extra
+trigger to prevent multiple logins to the same session.
+
+Link: https://lore.kernel.org/r/20220310092604.22950-10-njavali@marvell.com
+Fixes: bee8b84686c4 ("scsi: qla2xxx: Reduce redundant ADISC command for RSCNs")
+Cc: stable@vger.kernel.org
+Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
+Signed-off-by: Quinn Tran <qutran@marvell.com>
+Signed-off-by: Nilesh Javali <njavali@marvell.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 |    5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+--- a/drivers/scsi/qla2xxx/qla_init.c
++++ b/drivers/scsi/qla2xxx/qla_init.c
+@@ -1346,7 +1346,8 @@ int qla24xx_fcport_handle_login(struct s
+           fcport->login_gen, fcport->login_retry,
+           fcport->loop_id, fcport->scan_state);
+-      if (fcport->scan_state != QLA_FCPORT_FOUND)
++      if (fcport->scan_state != QLA_FCPORT_FOUND ||
++          fcport->disc_state == DSC_DELETE_PEND)
+               return 0;
+       if ((fcport->loop_id != FC_NO_LOOP_ID) &&
+@@ -1365,7 +1366,7 @@ int qla24xx_fcport_handle_login(struct s
+       if (vha->host->active_mode == MODE_TARGET)
+               return 0;
+-      if (fcport->flags & FCF_ASYNC_SENT) {
++      if (fcport->flags & (FCF_ASYNC_SENT | FCF_ASYNC_ACTIVE)) {
+               set_bit(RELOGIN_NEEDED, &vha->dpc_flags);
+               return 0;
+       }
diff --git a/queue-4.19/scsi-qla2xxx-suppress-a-kernel-complaint-in-qla_create_qpair.patch b/queue-4.19/scsi-qla2xxx-suppress-a-kernel-complaint-in-qla_create_qpair.patch
new file mode 100644 (file)
index 0000000..90e2ce3
--- /dev/null
@@ -0,0 +1,64 @@
+From a60447e7d451df42c7bde43af53b34f10f34f469 Mon Sep 17 00:00:00 2001
+From: Saurav Kashyap <skashyap@marvell.com>
+Date: Sun, 9 Jan 2022 21:02:15 -0800
+Subject: scsi: qla2xxx: Suppress a kernel complaint in qla_create_qpair()
+
+From: Saurav Kashyap <skashyap@marvell.com>
+
+commit a60447e7d451df42c7bde43af53b34f10f34f469 upstream.
+
+[   12.323788] BUG: using smp_processor_id() in preemptible [00000000] code: systemd-udevd/1020
+[   12.332297] caller is qla2xxx_create_qpair+0x32a/0x5d0 [qla2xxx]
+[   12.338417] CPU: 7 PID: 1020 Comm: systemd-udevd Tainted: G          I      --------- ---  5.14.0-29.el9.x86_64 #1
+[   12.348827] Hardware name: Dell Inc. PowerEdge R610/0F0XJ6, BIOS 6.6.0 05/22/2018
+[   12.356356] Call Trace:
+[   12.358821]  dump_stack_lvl+0x34/0x44
+[   12.362514]  check_preemption_disabled+0xd9/0xe0
+[   12.367164]  qla2xxx_create_qpair+0x32a/0x5d0 [qla2xxx]
+[   12.372481]  qla2x00_probe_one+0xa3a/0x1b80 [qla2xxx]
+[   12.377617]  ? _raw_spin_lock_irqsave+0x19/0x40
+[   12.384284]  local_pci_probe+0x42/0x80
+[   12.390162]  ? pci_match_device+0xd7/0x110
+[   12.396366]  pci_device_probe+0xfd/0x1b0
+[   12.402372]  really_probe+0x1e7/0x3e0
+[   12.408114]  __driver_probe_device+0xfe/0x180
+[   12.414544]  driver_probe_device+0x1e/0x90
+[   12.420685]  __driver_attach+0xc0/0x1c0
+[   12.426536]  ? __device_attach_driver+0xe0/0xe0
+[   12.433061]  ? __device_attach_driver+0xe0/0xe0
+[   12.439538]  bus_for_each_dev+0x78/0xc0
+[   12.445294]  bus_add_driver+0x12b/0x1e0
+[   12.451021]  driver_register+0x8f/0xe0
+[   12.456631]  ? 0xffffffffc07bc000
+[   12.461773]  qla2x00_module_init+0x1be/0x229 [qla2xxx]
+[   12.468776]  do_one_initcall+0x44/0x200
+[   12.474401]  ? load_module+0xad3/0xba0
+[   12.479908]  ? kmem_cache_alloc_trace+0x45/0x410
+[   12.486268]  do_init_module+0x5c/0x280
+[   12.491730]  __do_sys_init_module+0x12e/0x1b0
+[   12.497785]  do_syscall_64+0x3b/0x90
+[   12.503029]  entry_SYSCALL_64_after_hwframe+0x44/0xae
+[   12.509764] RIP: 0033:0x7f554f73ab2e
+
+Link: https://lore.kernel.org/r/20220110050218.3958-15-njavali@marvell.com
+Cc: stable@vger.kernel.org
+Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
+Signed-off-by: Saurav Kashyap <skashyap@marvell.com>
+Signed-off-by: Nilesh Javali <njavali@marvell.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 |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/scsi/qla2xxx/qla_init.c
++++ b/drivers/scsi/qla2xxx/qla_init.c
+@@ -8717,7 +8717,7 @@ struct qla_qpair *qla2xxx_create_qpair(s
+               qpair->rsp->req = qpair->req;
+               qpair->rsp->qpair = qpair;
+               /* init qpair to this cpu. Will adjust at run time. */
+-              qla_cpu_update(qpair, smp_processor_id());
++              qla_cpu_update(qpair, raw_smp_processor_id());
+               if (IS_T10_PI_CAPABLE(ha) && ql2xenabledif) {
+                       if (ha->fw_attributes & BIT_4)
diff --git a/queue-4.19/scsi-qla2xxx-use-correct-feature-type-field-during-rff_id-processing.patch b/queue-4.19/scsi-qla2xxx-use-correct-feature-type-field-during-rff_id-processing.patch
new file mode 100644 (file)
index 0000000..709318c
--- /dev/null
@@ -0,0 +1,46 @@
+From a7e05f7a1bcbe4ee055479242de46c5c16ab03b1 Mon Sep 17 00:00:00 2001
+From: Manish Rangankar <mrangankar@marvell.com>
+Date: Thu, 10 Mar 2022 01:26:02 -0800
+Subject: scsi: qla2xxx: Use correct feature type field during RFF_ID processing
+
+From: Manish Rangankar <mrangankar@marvell.com>
+
+commit a7e05f7a1bcbe4ee055479242de46c5c16ab03b1 upstream.
+
+During SNS Register FC-4 Features (RFF_ID) the initiator driver was sending
+incorrect type field for NVMe supported device. Use correct feature type
+field.
+
+Link: https://lore.kernel.org/r/20220310092604.22950-12-njavali@marvell.com
+Fixes: e374f9f59281 ("scsi: qla2xxx: Migrate switch registration commands away from mailbox interface")
+Cc: stable@vger.kernel.org
+Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
+Signed-off-by: Manish Rangankar <mrangankar@marvell.com>
+Signed-off-by: Nilesh Javali <njavali@marvell.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/scsi/qla2xxx/qla_gs.c |    5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+--- a/drivers/scsi/qla2xxx/qla_gs.c
++++ b/drivers/scsi/qla2xxx/qla_gs.c
+@@ -691,8 +691,7 @@ qla2x00_rff_id(scsi_qla_host_t *vha, u8
+               return (QLA_SUCCESS);
+       }
+-      return qla_async_rffid(vha, &vha->d_id, qlt_rff_id(vha),
+-          FC4_TYPE_FCP_SCSI);
++      return qla_async_rffid(vha, &vha->d_id, qlt_rff_id(vha), type);
+ }
+ static int qla_async_rffid(scsi_qla_host_t *vha, port_id_t *d_id,
+@@ -744,7 +743,7 @@ static int qla_async_rffid(scsi_qla_host
+       ct_req->req.rff_id.port_id[1] = d_id->b.area;
+       ct_req->req.rff_id.port_id[2] = d_id->b.al_pa;
+       ct_req->req.rff_id.fc4_feature = fc4feature;
+-      ct_req->req.rff_id.fc4_type = fc4type;          /* SCSI - FCP */
++      ct_req->req.rff_id.fc4_type = fc4type;          /* SCSI-FCP or FC-NVMe */
+       sp->u.iocb_cmd.u.ctarg.req_size = RFF_ID_REQ_SIZE;
+       sp->u.iocb_cmd.u.ctarg.rsp_size = RFF_ID_RSP_SIZE;
index cafb883c834bca331c936e00ef41657cc854c08f..071dbd4f0f7d3ee8496621e8ea4f7ba68340dfe9 100644 (file)
@@ -222,3 +222,14 @@ media-revert-media-em28xx-add-missing-em28xx_close_e.patch
 media-hdpvr-initialize-dev-worker-at-hdpvr_register_.patch
 tracing-have-trace_define_enum-affect-trace-event-ty.patch
 mmc-host-return-an-error-when-enable_sdio_irq-ops-is.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-warning-for-missing-error-code.patch
+scsi-qla2xxx-check-for-firmware-dump-already-collected.patch
+scsi-qla2xxx-suppress-a-kernel-complaint-in-qla_create_qpair.patch
+scsi-qla2xxx-fix-incorrect-reporting-of-task-management-failure.patch
+scsi-qla2xxx-fix-hang-due-to-session-stuck.patch
+scsi-qla2xxx-reduce-false-trigger-to-login.patch
+scsi-qla2xxx-use-correct-feature-type-field-during-rff_id-processing.patch