From: Greg Kroah-Hartman Date: Mon, 1 Apr 2024 13:41:56 +0000 (+0200) Subject: 6.8-stable patches X-Git-Tag: v6.7.12~27 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7f453891db2d204fb7e044a1d75f9993bd037fef;p=thirdparty%2Fkernel%2Fstable-queue.git 6.8-stable patches 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 --- 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 index 00000000000..b273a4e678e --- /dev/null +++ b/queue-6.8/perf-x86-amd-core-update-and-fix-stalled-cycles-events-for-zen-2-and-later.patch @@ -0,0 +1,65 @@ +From c7b2edd8377be983442c1344cb940cd2ac21b601 Mon Sep 17 00:00:00 2001 +From: Sandipan Das +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 + +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 +Signed-off-by: Ingo Molnar +Reviewed-by: Ian Rogers +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 +--- + 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 index 00000000000..d5e90063359 --- /dev/null +++ b/queue-6.8/scsi-libsas-fix-disk-not-being-scanned-in-after-being-removed.patch @@ -0,0 +1,111 @@ +From 8e68a458bcf5b5cb9c3624598bae28f08251601f Mon Sep 17 00:00:00 2001 +From: Xingui Yang +Date: Thu, 7 Mar 2024 14:14:13 +0000 +Subject: scsi: libsas: Fix disk not being scanned in after being removed + +From: Xingui Yang + +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 +Link: https://lore.kernel.org/r/20240307141413.48049-3-yangxingui@huawei.com +Reviewed-by: John Garry +Signed-off-by: Martin K. Petersen +Signed-off-by: Greg Kroah-Hartman +--- + 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 index 00000000000..9611c687e00 --- /dev/null +++ b/queue-6.8/scsi-lpfc-correct-size-for-cmdwqe-rspwqe-for-memset.patch @@ -0,0 +1,37 @@ +From 16cc2ba71b9f6440805aef7f92ba0f031f79b765 Mon Sep 17 00:00:00 2001 +From: Muhammad Usama Anjum +Date: Mon, 4 Mar 2024 14:11:19 +0500 +Subject: scsi: lpfc: Correct size for cmdwqe/rspwqe for memset() + +From: Muhammad Usama Anjum + +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 +Link: https://lore.kernel.org/r/20240304091119.847060-1-usama.anjum@collabora.com +Reviewed-by: Justin Tee +Signed-off-by: Martin K. Petersen +Signed-off-by: Greg Kroah-Hartman +--- + 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 index 00000000000..e0888a6c43f --- /dev/null +++ b/queue-6.8/scsi-lpfc-correct-size-for-wqe-for-memset.patch @@ -0,0 +1,33 @@ +From 28d41991182c210ec1654f8af2e140ef4cc73f20 Mon Sep 17 00:00:00 2001 +From: Muhammad Usama Anjum +Date: Mon, 4 Mar 2024 14:06:48 +0500 +Subject: scsi: lpfc: Correct size for wqe for memset() + +From: Muhammad Usama Anjum + +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 +Link: https://lore.kernel.org/r/20240304090649.833953-1-usama.anjum@collabora.com +Reviewed-by: AngeloGioacchino Del Regno +Reviewed-by: Justin Tee +Signed-off-by: Martin K. Petersen +Signed-off-by: Greg Kroah-Hartman +--- + 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); diff --git a/queue-6.8/series b/queue-6.8/series index 874eac64955..53e0edd0914 100644 --- a/queue-6.8/series +++ b/queue-6.8/series @@ -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 index 00000000000..d6646d747d9 --- /dev/null +++ b/queue-6.8/usb-dwc3-pci-drop-duplicate-id.patch @@ -0,0 +1,40 @@ +From f121531703ae442edc1dde4b56803680628bc5b7 Mon Sep 17 00:00:00 2001 +From: Heikki Krogerus +Date: Tue, 12 Mar 2024 13:50:08 +0200 +Subject: usb: dwc3: pci: Drop duplicate ID + +From: Heikki Krogerus + +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 +Acked-by: Thinh Nguyen +Link: https://lore.kernel.org/r/20240312115008.1748637-1-heikki.krogerus@linux.intel.com +Signed-off-by: Greg Kroah-Hartman +--- + 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) }, +