]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
6.8-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 1 Apr 2024 13:41:56 +0000 (15:41 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 1 Apr 2024 13:41:56 +0000 (15:41 +0200)
added patches:
perf-x86-amd-core-update-and-fix-stalled-cycles-events-for-zen-2-and-later.patch
scsi-libsas-fix-disk-not-being-scanned-in-after-being-removed.patch
scsi-lpfc-correct-size-for-cmdwqe-rspwqe-for-memset.patch
scsi-lpfc-correct-size-for-wqe-for-memset.patch
usb-dwc3-pci-drop-duplicate-id.patch

queue-6.8/perf-x86-amd-core-update-and-fix-stalled-cycles-events-for-zen-2-and-later.patch [new file with mode: 0644]
queue-6.8/scsi-libsas-fix-disk-not-being-scanned-in-after-being-removed.patch [new file with mode: 0644]
queue-6.8/scsi-lpfc-correct-size-for-cmdwqe-rspwqe-for-memset.patch [new file with mode: 0644]
queue-6.8/scsi-lpfc-correct-size-for-wqe-for-memset.patch [new file with mode: 0644]
queue-6.8/series
queue-6.8/usb-dwc3-pci-drop-duplicate-id.patch [new file with mode: 0644]

diff --git a/queue-6.8/perf-x86-amd-core-update-and-fix-stalled-cycles-events-for-zen-2-and-later.patch b/queue-6.8/perf-x86-amd-core-update-and-fix-stalled-cycles-events-for-zen-2-and-later.patch
new file mode 100644 (file)
index 0000000..b273a4e
--- /dev/null
@@ -0,0 +1,65 @@
+From c7b2edd8377be983442c1344cb940cd2ac21b601 Mon Sep 17 00:00:00 2001
+From: Sandipan Das <sandipan.das@amd.com>
+Date: Mon, 25 Mar 2024 13:17:53 +0530
+Subject: perf/x86/amd/core: Update and fix stalled-cycles-* events for Zen 2 and later
+
+From: Sandipan Das <sandipan.das@amd.com>
+
+commit c7b2edd8377be983442c1344cb940cd2ac21b601 upstream.
+
+AMD processors based on Zen 2 and later microarchitectures do not
+support PMCx087 (instruction pipe stalls) which is used as the backing
+event for "stalled-cycles-frontend" and "stalled-cycles-backend".
+
+Use PMCx0A9 (cycles where micro-op queue is empty) instead to count
+frontend stalls and remove the entry for backend stalls since there
+is no direct replacement.
+
+Signed-off-by: Sandipan Das <sandipan.das@amd.com>
+Signed-off-by: Ingo Molnar <mingo@kernel.org>
+Reviewed-by: Ian Rogers <irogers@google.com>
+Fixes: 3fe3331bb285 ("perf/x86/amd: Add event map for AMD Family 17h")
+Link: https://lore.kernel.org/r/03d7fc8fa2a28f9be732116009025bdec1b3ec97.1711352180.git.sandipan.das@amd.com
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ arch/x86/events/amd/core.c |   20 +++++++++++++++++---
+ 1 file changed, 17 insertions(+), 3 deletions(-)
+
+--- a/arch/x86/events/amd/core.c
++++ b/arch/x86/events/amd/core.c
+@@ -250,7 +250,7 @@ static const u64 amd_perfmon_event_map[P
+ /*
+  * AMD Performance Monitor Family 17h and later:
+  */
+-static const u64 amd_f17h_perfmon_event_map[PERF_COUNT_HW_MAX] =
++static const u64 amd_zen1_perfmon_event_map[PERF_COUNT_HW_MAX] =
+ {
+       [PERF_COUNT_HW_CPU_CYCLES]              = 0x0076,
+       [PERF_COUNT_HW_INSTRUCTIONS]            = 0x00c0,
+@@ -262,10 +262,24 @@ static const u64 amd_f17h_perfmon_event_
+       [PERF_COUNT_HW_STALLED_CYCLES_BACKEND]  = 0x0187,
+ };
++static const u64 amd_zen2_perfmon_event_map[PERF_COUNT_HW_MAX] =
++{
++      [PERF_COUNT_HW_CPU_CYCLES]              = 0x0076,
++      [PERF_COUNT_HW_INSTRUCTIONS]            = 0x00c0,
++      [PERF_COUNT_HW_CACHE_REFERENCES]        = 0xff60,
++      [PERF_COUNT_HW_CACHE_MISSES]            = 0x0964,
++      [PERF_COUNT_HW_BRANCH_INSTRUCTIONS]     = 0x00c2,
++      [PERF_COUNT_HW_BRANCH_MISSES]           = 0x00c3,
++      [PERF_COUNT_HW_STALLED_CYCLES_FRONTEND] = 0x00a9,
++};
++
+ static u64 amd_pmu_event_map(int hw_event)
+ {
+-      if (boot_cpu_data.x86 >= 0x17)
+-              return amd_f17h_perfmon_event_map[hw_event];
++      if (cpu_feature_enabled(X86_FEATURE_ZEN2) || boot_cpu_data.x86 >= 0x19)
++              return amd_zen2_perfmon_event_map[hw_event];
++
++      if (cpu_feature_enabled(X86_FEATURE_ZEN1))
++              return amd_zen1_perfmon_event_map[hw_event];
+       return amd_perfmon_event_map[hw_event];
+ }
diff --git a/queue-6.8/scsi-libsas-fix-disk-not-being-scanned-in-after-being-removed.patch b/queue-6.8/scsi-libsas-fix-disk-not-being-scanned-in-after-being-removed.patch
new file mode 100644 (file)
index 0000000..d5e9006
--- /dev/null
@@ -0,0 +1,111 @@
+From 8e68a458bcf5b5cb9c3624598bae28f08251601f Mon Sep 17 00:00:00 2001
+From: Xingui Yang <yangxingui@huawei.com>
+Date: Thu, 7 Mar 2024 14:14:13 +0000
+Subject: scsi: libsas: Fix disk not being scanned in after being removed
+
+From: Xingui Yang <yangxingui@huawei.com>
+
+commit 8e68a458bcf5b5cb9c3624598bae28f08251601f upstream.
+
+As of commit d8649fc1c5e4 ("scsi: libsas: Do discovery on empty PHY to
+update PHY info"), do discovery will send a new SMP_DISCOVER and update
+phy->phy_change_count. We found that if the disk is reconnected and phy
+change_count changes at this time, the disk scanning process will not be
+triggered.
+
+Therefore, call sas_set_ex_phy() to update the PHY info with the results of
+the last query. And because the previous phy info will be used when calling
+sas_unregister_devs_sas_addr(), sas_unregister_devs_sas_addr() should be
+called before sas_set_ex_phy().
+
+Fixes: d8649fc1c5e4 ("scsi: libsas: Do discovery on empty PHY to update PHY info")
+Signed-off-by: Xingui Yang <yangxingui@huawei.com>
+Link: https://lore.kernel.org/r/20240307141413.48049-3-yangxingui@huawei.com
+Reviewed-by: John Garry <john.g.garry@oracle.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/scsi/libsas/sas_expander.c |   32 ++++++++++++++++++++++----------
+ 1 file changed, 22 insertions(+), 10 deletions(-)
+
+--- a/drivers/scsi/libsas/sas_expander.c
++++ b/drivers/scsi/libsas/sas_expander.c
+@@ -1940,6 +1940,7 @@ static int sas_rediscover_dev(struct dom
+       struct expander_device *ex = &dev->ex_dev;
+       struct ex_phy *phy = &ex->ex_phy[phy_id];
+       enum sas_device_type type = SAS_PHY_UNUSED;
++      struct smp_disc_resp *disc_resp;
+       u8 sas_addr[SAS_ADDR_SIZE];
+       char msg[80] = "";
+       int res;
+@@ -1951,33 +1952,41 @@ static int sas_rediscover_dev(struct dom
+                SAS_ADDR(dev->sas_addr), phy_id, msg);
+       memset(sas_addr, 0, SAS_ADDR_SIZE);
+-      res = sas_get_phy_attached_dev(dev, phy_id, sas_addr, &type);
++      disc_resp = alloc_smp_resp(DISCOVER_RESP_SIZE);
++      if (!disc_resp)
++              return -ENOMEM;
++
++      res = sas_get_phy_discover(dev, phy_id, disc_resp);
+       switch (res) {
+       case SMP_RESP_NO_PHY:
+               phy->phy_state = PHY_NOT_PRESENT;
+               sas_unregister_devs_sas_addr(dev, phy_id, last);
+-              return res;
++              goto out_free_resp;
+       case SMP_RESP_PHY_VACANT:
+               phy->phy_state = PHY_VACANT;
+               sas_unregister_devs_sas_addr(dev, phy_id, last);
+-              return res;
++              goto out_free_resp;
+       case SMP_RESP_FUNC_ACC:
+               break;
+       case -ECOMM:
+               break;
+       default:
+-              return res;
++              goto out_free_resp;
+       }
++      if (res == 0)
++              sas_get_sas_addr_and_dev_type(disc_resp, sas_addr, &type);
++
+       if ((SAS_ADDR(sas_addr) == 0) || (res == -ECOMM)) {
+               phy->phy_state = PHY_EMPTY;
+               sas_unregister_devs_sas_addr(dev, phy_id, last);
+               /*
+-               * Even though the PHY is empty, for convenience we discover
+-               * the PHY to update the PHY info, like negotiated linkrate.
++               * Even though the PHY is empty, for convenience we update
++               * the PHY info, like negotiated linkrate.
+                */
+-              sas_ex_phy_discover(dev, phy_id);
+-              return res;
++              if (res == 0)
++                      sas_set_ex_phy(dev, phy_id, disc_resp);
++              goto out_free_resp;
+       } else if (SAS_ADDR(sas_addr) == SAS_ADDR(phy->attached_sas_addr) &&
+                  dev_type_flutter(type, phy->attached_dev_type)) {
+               struct domain_device *ata_dev = sas_ex_to_ata(dev, phy_id);
+@@ -1989,7 +1998,7 @@ static int sas_rediscover_dev(struct dom
+                       action = ", needs recovery";
+               pr_debug("ex %016llx phy%02d broadcast flutter%s\n",
+                        SAS_ADDR(dev->sas_addr), phy_id, action);
+-              return res;
++              goto out_free_resp;
+       }
+       /* we always have to delete the old device when we went here */
+@@ -1998,7 +2007,10 @@ static int sas_rediscover_dev(struct dom
+               SAS_ADDR(phy->attached_sas_addr));
+       sas_unregister_devs_sas_addr(dev, phy_id, last);
+-      return sas_discover_new(dev, phy_id);
++      res = sas_discover_new(dev, phy_id);
++out_free_resp:
++      kfree(disc_resp);
++      return res;
+ }
+ /**
diff --git a/queue-6.8/scsi-lpfc-correct-size-for-cmdwqe-rspwqe-for-memset.patch b/queue-6.8/scsi-lpfc-correct-size-for-cmdwqe-rspwqe-for-memset.patch
new file mode 100644 (file)
index 0000000..9611c68
--- /dev/null
@@ -0,0 +1,37 @@
+From 16cc2ba71b9f6440805aef7f92ba0f031f79b765 Mon Sep 17 00:00:00 2001
+From: Muhammad Usama Anjum <usama.anjum@collabora.com>
+Date: Mon, 4 Mar 2024 14:11:19 +0500
+Subject: scsi: lpfc: Correct size for cmdwqe/rspwqe for memset()
+
+From: Muhammad Usama Anjum <usama.anjum@collabora.com>
+
+commit 16cc2ba71b9f6440805aef7f92ba0f031f79b765 upstream.
+
+The cmdwqe and rspwqe are of type lpfc_wqe128. They should be memset() with
+the same type.
+
+Fixes: 61910d6a5243 ("scsi: lpfc: SLI path split: Refactor CT paths")
+Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
+Link: https://lore.kernel.org/r/20240304091119.847060-1-usama.anjum@collabora.com
+Reviewed-by: Justin Tee <justin.tee@broadcom.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/scsi/lpfc/lpfc_bsg.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/scsi/lpfc/lpfc_bsg.c
++++ b/drivers/scsi/lpfc/lpfc_bsg.c
+@@ -3169,10 +3169,10 @@ lpfc_bsg_diag_loopback_run(struct bsg_jo
+       }
+       cmdwqe = &cmdiocbq->wqe;
+-      memset(cmdwqe, 0, sizeof(union lpfc_wqe));
++      memset(cmdwqe, 0, sizeof(*cmdwqe));
+       if (phba->sli_rev < LPFC_SLI_REV4) {
+               rspwqe = &rspiocbq->wqe;
+-              memset(rspwqe, 0, sizeof(union lpfc_wqe));
++              memset(rspwqe, 0, sizeof(*rspwqe));
+       }
+       INIT_LIST_HEAD(&head);
diff --git a/queue-6.8/scsi-lpfc-correct-size-for-wqe-for-memset.patch b/queue-6.8/scsi-lpfc-correct-size-for-wqe-for-memset.patch
new file mode 100644 (file)
index 0000000..e0888a6
--- /dev/null
@@ -0,0 +1,33 @@
+From 28d41991182c210ec1654f8af2e140ef4cc73f20 Mon Sep 17 00:00:00 2001
+From: Muhammad Usama Anjum <usama.anjum@collabora.com>
+Date: Mon, 4 Mar 2024 14:06:48 +0500
+Subject: scsi: lpfc: Correct size for wqe for memset()
+
+From: Muhammad Usama Anjum <usama.anjum@collabora.com>
+
+commit 28d41991182c210ec1654f8af2e140ef4cc73f20 upstream.
+
+The wqe is of type lpfc_wqe128. It should be memset with the same type.
+
+Fixes: 6c621a2229b0 ("scsi: lpfc: Separate NVMET RQ buffer posting from IO resources SGL/iocbq/context")
+Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
+Link: https://lore.kernel.org/r/20240304090649.833953-1-usama.anjum@collabora.com
+Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
+Reviewed-by: Justin Tee <justintee8345@gmail.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/scsi/lpfc/lpfc_nvmet.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/scsi/lpfc/lpfc_nvmet.c
++++ b/drivers/scsi/lpfc/lpfc_nvmet.c
+@@ -1586,7 +1586,7 @@ lpfc_nvmet_setup_io_context(struct lpfc_
+               wqe = &nvmewqe->wqe;
+               /* Initialize WQE */
+-              memset(wqe, 0, sizeof(union lpfc_wqe));
++              memset(wqe, 0, sizeof(*wqe));
+               ctx_buf->iocbq->cmd_dmabuf = NULL;
+               spin_lock(&phba->sli4_hba.sgl_list_lock);
index 874eac6495599702317c27141daf14a87419b99e..53e0edd0914454f7811ea80d811d3b51ea9bf1e7 100644 (file)
@@ -389,3 +389,8 @@ crash-use-macro-to-add-crashk_res-into-iomem-early-for-specific-arch.patch
 drm-amd-display-fix-ipx-enablement.patch
 x86-bugs-use-fixed-addressing-for-verw-operand.patch
 revert-x86-bugs-use-fixed-addressing-for-verw-operand.patch
+usb-dwc3-pci-drop-duplicate-id.patch
+scsi-lpfc-correct-size-for-cmdwqe-rspwqe-for-memset.patch
+scsi-lpfc-correct-size-for-wqe-for-memset.patch
+scsi-libsas-fix-disk-not-being-scanned-in-after-being-removed.patch
+perf-x86-amd-core-update-and-fix-stalled-cycles-events-for-zen-2-and-later.patch
diff --git a/queue-6.8/usb-dwc3-pci-drop-duplicate-id.patch b/queue-6.8/usb-dwc3-pci-drop-duplicate-id.patch
new file mode 100644 (file)
index 0000000..d6646d7
--- /dev/null
@@ -0,0 +1,40 @@
+From f121531703ae442edc1dde4b56803680628bc5b7 Mon Sep 17 00:00:00 2001
+From: Heikki Krogerus <heikki.krogerus@linux.intel.com>
+Date: Tue, 12 Mar 2024 13:50:08 +0200
+Subject: usb: dwc3: pci: Drop duplicate ID
+
+From: Heikki Krogerus <heikki.krogerus@linux.intel.com>
+
+commit f121531703ae442edc1dde4b56803680628bc5b7 upstream.
+
+Intel Arrow Lake CPU uses the Meteor Lake ID with this
+controller (the controller that's part of the Intel Arrow
+Lake chipset (PCH) does still have unique PCI ID).
+
+Fixes: de4b5b28c87c ("usb: dwc3: pci: add support for the Intel Arrow Lake-H")
+Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
+Acked-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
+Link: https://lore.kernel.org/r/20240312115008.1748637-1-heikki.krogerus@linux.intel.com
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/usb/dwc3/dwc3-pci.c |    2 --
+ 1 file changed, 2 deletions(-)
+
+--- a/drivers/usb/dwc3/dwc3-pci.c
++++ b/drivers/usb/dwc3/dwc3-pci.c
+@@ -51,7 +51,6 @@
+ #define PCI_DEVICE_ID_INTEL_MTLP              0x7ec1
+ #define PCI_DEVICE_ID_INTEL_MTLS              0x7f6f
+ #define PCI_DEVICE_ID_INTEL_MTL                       0x7e7e
+-#define PCI_DEVICE_ID_INTEL_ARLH              0x7ec1
+ #define PCI_DEVICE_ID_INTEL_ARLH_PCH          0x777e
+ #define PCI_DEVICE_ID_INTEL_TGL                       0x9a15
+ #define PCI_DEVICE_ID_AMD_MR                  0x163a
+@@ -423,7 +422,6 @@ static const struct pci_device_id dwc3_p
+       { PCI_DEVICE_DATA(INTEL, MTLP, &dwc3_pci_intel_swnode) },
+       { PCI_DEVICE_DATA(INTEL, MTL, &dwc3_pci_intel_swnode) },
+       { PCI_DEVICE_DATA(INTEL, MTLS, &dwc3_pci_intel_swnode) },
+-      { PCI_DEVICE_DATA(INTEL, ARLH, &dwc3_pci_intel_swnode) },
+       { PCI_DEVICE_DATA(INTEL, ARLH_PCH, &dwc3_pci_intel_swnode) },
+       { PCI_DEVICE_DATA(INTEL, TGL, &dwc3_pci_intel_swnode) },