From 19260ab5db68912b2983aecb3a5e778a908e4a30 Mon Sep 17 00:00:00 2001 From: Sasha Levin Date: Thu, 19 Sep 2024 15:36:27 -0400 Subject: [PATCH] Fixes for 6.10 Signed-off-by: Sasha Levin --- ...-hda-add-hdmi-codec-id-for-intel-ptl.patch | 40 +++ ...dd-hdmi-codec-id-for-intel-ptl.patch-24027 | 40 +++ ...ltek-fixed-alc256-headphone-no-sound.patch | 126 ++++++++ ...ixed-alc256-headphone-no-sound.patch-27242 | 126 ++++++++ ...ltek-fixed-alc285-headphone-no-sound.patch | 100 ++++++ ...ixed-alc285-headphone-no-sound.patch-23034 | 100 ++++++ ...dule-autoloading-for-table-board_ids.patch | 36 +++ ...utoloading-for-table-board_ids.patch-18702 | 36 +++ ...le-autoloading-for-table-db1200_pids.patch | 35 +++ ...toloading-for-table-db1200_pids.patch-5972 | 35 +++ ...c-add-a-quirk-for-msi-bravo-17-d7vek.patch | 42 +++ ...a-quirk-for-msi-bravo-17-d7vek.patch-18379 | 42 +++ queue-6.10/asoc-fix-module-autoloading.patch | 35 +++ .../asoc-fix-module-autoloading.patch-11949 | 35 +++ .../asoc-google-fix-module-autoloading.patch | 35 +++ ...-google-fix-module-autoloading.patch-29410 | 35 +++ .../asoc-intel-fix-module-autoloading.patch | 35 +++ ...c-intel-fix-module-autoloading.patch-15410 | 35 +++ ...cpi-cht-make-lenovo-yoga-tab-3-x90f-.patch | 43 +++ ...t-make-lenovo-yoga-tab-3-x90f-.patch-32257 | 43 +++ ...8188-mark-afe_dac_con0-register-as-v.patch | 41 +++ ...mark-afe_dac_con0-register-as-v.patch-2574 | 41 +++ ...oc-mediatek-mt8188-mt6359-modify-key.patch | 59 ++++ ...iatek-mt8188-mt6359-modify-key.patch-23689 | 59 ++++ ...ediatek-add-missing-board-compatible.patch | 40 +++ ...k-add-missing-board-compatible.patch-22157 | 40 +++ .../asoc-tda7419-fix-module-autoloading.patch | 35 +++ ...tda7419-fix-module-autoloading.patch-30653 | 35 +++ ...t-coalescing-to-peripheral-instances.patch | 72 +++++ ...alescing-to-peripheral-instances.patch-975 | 72 +++++ ...p251xfd_ring_init-check-tx-coalescin.patch | 63 ++++ ...d_ring_init-check-tx-coalescin.patch-11796 | 63 ++++ ...650-don-t-use-shared-clk_ops-for-qup.patch | 287 ++++++++++++++++++ ...n-t-use-shared-clk_ops-for-qup.patch-24586 | 287 ++++++++++++++++++ ...he-pp_dpm_pcie-issue-on-smu-v14.0.2-.patch | 42 +++ ...dpm_pcie-issue-on-smu-v14.0.2-.patch-15721 | 42 +++ ...-an-issue-related-to-normalized-zpos.patch | 79 +++++ ...sue-related-to-normalized-zpos.patch-21818 | 79 +++++ ...ensors-remove-vrm-temp-x570-e-gaming.patch | 36 +++ ...rs-remove-vrm-temp-x570-e-gaming.patch-578 | 36 +++ ...p-rings-instead-of-bpf-program-when-.patch | 110 +++++++ ...s-instead-of-bpf-program-when-.patch-24037 | 110 +++++++ ...e-arch_irq_init_flags-as-irq_noprobe.patch | 55 ++++ ..._irq_init_flags-as-irq_noprobe.patch-11197 | 55 ++++ ...validate-guest-steal-time-address-on.patch | 78 +++++ ...ate-guest-steal-time-address-on.patch-7425 | 78 +++++ ...-treat-zero-reserved-memory-regions-.patch | 51 ++++ ...t-zero-reserved-memory-regions-.patch-3060 | 51 ++++ ...sure-tx-descriptor-updates-are-visib.patch | 109 +++++++ ...tx-descriptor-updates-are-visib.patch-4531 | 109 +++++++ ...s-checking-to-ocfs2_xattr_find_entry.patch | 85 ++++++ ...king-to-ocfs2_xattr_find_entry.patch-10443 | 85 ++++++ ...nd-check-before-memcmp-in-ocfs2_xatt.patch | 67 ++++ ...ck-before-memcmp-in-ocfs2_xatt.patch-24730 | 67 ++++ ...91-make-it-work-with-current-gpiolib.patch | 51 ++++ ...e-it-work-with-current-gpiolib.patch-14635 | 51 ++++ ...md-pmf-make-asus-ga403-quirk-generic.patch | 40 +++ ...-make-asus-ga403-quirk-generic.patch-18829 | 40 +++ ...s-wmi-fix-spurious-rfkill-on-ux8406m.patch | 96 ++++++ ...-fix-spurious-rfkill-on-ux8406m.patch-9102 | 96 ++++++ ...-android-tablets-make-lenovo-yoga-ta.patch | 46 +++ ...oid-tablets-make-lenovo-yoga-ta.patch-6727 | 46 +++ .../scsi-lpfc-fix-overflow-build-issue.patch | 54 ++++ ...i-lpfc-fix-overflow-build-issue.patch-6384 | 54 ++++ queue-6.10/series | 90 ++++++ ...ang-in-wait_for_response-for-negprot.patch | 61 ++++ ...n-wait_for_response-for-negprot.patch-8607 | 61 ++++ ...pi-bcm63xx-enable-module-autoloading.patch | 35 +++ ...63xx-enable-module-autoloading.patch-23926 | 35 +++ ...ev-add-an-entry-for-elgin-jg10309-01.patch | 38 +++ ...-an-entry-for-elgin-jg10309-01.patch-15611 | 38 +++ ...missing-spi_device_id-for-jg10309-01.patch | 42 +++ ...g-spi_device_id-for-jg10309-01.patch-10107 | 42 +++ .../tools-hv-rm-.-.cmd-when-make-clean.patch | 37 +++ ...s-hv-rm-.-.cmd-when-make-clean.patch-27420 | 37 +++ ...clear-trans-state-earlier-upon-error.patch | 72 +++++ ...-trans-state-earlier-upon-error.patch-6875 | 72 +++++ ...er-message-level-for-fw-buffer-desti.patch | 41 +++ ...sage-level-for-fw-buffer-desti.patch-14318 | 41 +++ ...-don-t-wait-for-tx-queues-if-firmwar.patch | 60 ++++ ...-wait-for-tx-queues-if-firmwar.patch-14089 | 60 ++++ ...-fix-iwl_mvm_max_scan_ie_fw_cmd_room.patch | 58 ++++ ...iwl_mvm_max_scan_ie_fw_cmd_room.patch-3044 | 58 ++++ ...vm-fix-iwl_mvm_scan_fits-calculation.patch | 78 +++++ ...-iwl_mvm_scan_fits-calculation.patch-16713 | 78 +++++ ...-pause-tcm-when-the-firmware-is-stop.patch | 53 ++++ ...-tcm-when-the-firmware-is-stop.patch-21290 | 53 ++++ ...ee-skb-on-error-path-in-ieee80211_be.patch | 39 +++ ...-on-error-path-in-ieee80211_be.patch-27967 | 39 +++ ...86_feature_tsc_known_freq-when-hyper.patch | 49 +++ ...ature_tsc_known_freq-when-hyper.patch-8101 | 49 +++ 91 files changed, 5662 insertions(+) create mode 100644 queue-6.10/alsa-hda-add-hdmi-codec-id-for-intel-ptl.patch create mode 100644 queue-6.10/alsa-hda-add-hdmi-codec-id-for-intel-ptl.patch-24027 create mode 100644 queue-6.10/alsa-hda-realtek-fixed-alc256-headphone-no-sound.patch create mode 100644 queue-6.10/alsa-hda-realtek-fixed-alc256-headphone-no-sound.patch-27242 create mode 100644 queue-6.10/alsa-hda-realtek-fixed-alc285-headphone-no-sound.patch create mode 100644 queue-6.10/alsa-hda-realtek-fixed-alc285-headphone-no-sound.patch-23034 create mode 100644 queue-6.10/asoc-allow-module-autoloading-for-table-board_ids.patch create mode 100644 queue-6.10/asoc-allow-module-autoloading-for-table-board_ids.patch-18702 create mode 100644 queue-6.10/asoc-allow-module-autoloading-for-table-db1200_pids.patch create mode 100644 queue-6.10/asoc-allow-module-autoloading-for-table-db1200_pids.patch-5972 create mode 100644 queue-6.10/asoc-amd-yc-add-a-quirk-for-msi-bravo-17-d7vek.patch create mode 100644 queue-6.10/asoc-amd-yc-add-a-quirk-for-msi-bravo-17-d7vek.patch-18379 create mode 100644 queue-6.10/asoc-fix-module-autoloading.patch create mode 100644 queue-6.10/asoc-fix-module-autoloading.patch-11949 create mode 100644 queue-6.10/asoc-google-fix-module-autoloading.patch create mode 100644 queue-6.10/asoc-google-fix-module-autoloading.patch-29410 create mode 100644 queue-6.10/asoc-intel-fix-module-autoloading.patch create mode 100644 queue-6.10/asoc-intel-fix-module-autoloading.patch-15410 create mode 100644 queue-6.10/asoc-intel-soc-acpi-cht-make-lenovo-yoga-tab-3-x90f-.patch create mode 100644 queue-6.10/asoc-intel-soc-acpi-cht-make-lenovo-yoga-tab-3-x90f-.patch-32257 create mode 100644 queue-6.10/asoc-mediatek-mt8188-mark-afe_dac_con0-register-as-v.patch create mode 100644 queue-6.10/asoc-mediatek-mt8188-mark-afe_dac_con0-register-as-v.patch-2574 create mode 100644 queue-6.10/asoc-mediatek-mt8188-mt6359-modify-key.patch create mode 100644 queue-6.10/asoc-mediatek-mt8188-mt6359-modify-key.patch-23689 create mode 100644 queue-6.10/asoc-sof-mediatek-add-missing-board-compatible.patch create mode 100644 queue-6.10/asoc-sof-mediatek-add-missing-board-compatible.patch-22157 create mode 100644 queue-6.10/asoc-tda7419-fix-module-autoloading.patch create mode 100644 queue-6.10/asoc-tda7419-fix-module-autoloading.patch-30653 create mode 100644 queue-6.10/can-m_can-limit-coalescing-to-peripheral-instances.patch create mode 100644 queue-6.10/can-m_can-limit-coalescing-to-peripheral-instances.patch-975 create mode 100644 queue-6.10/can-mcp251xfd-mcp251xfd_ring_init-check-tx-coalescin.patch create mode 100644 queue-6.10/can-mcp251xfd-mcp251xfd_ring_init-check-tx-coalescin.patch-11796 create mode 100644 queue-6.10/clk-qcom-gcc-sm8650-don-t-use-shared-clk_ops-for-qup.patch create mode 100644 queue-6.10/clk-qcom-gcc-sm8650-don-t-use-shared-clk_ops-for-qup.patch-24586 create mode 100644 queue-6.10/drm-amd-pm-fix-the-pp_dpm_pcie-issue-on-smu-v14.0.2-.patch create mode 100644 queue-6.10/drm-amd-pm-fix-the-pp_dpm_pcie-issue-on-smu-v14.0.2-.patch-15721 create mode 100644 queue-6.10/drm-komeda-fix-an-issue-related-to-normalized-zpos.patch create mode 100644 queue-6.10/drm-komeda-fix-an-issue-related-to-normalized-zpos.patch-21818 create mode 100644 queue-6.10/hwmon-asus-ec-sensors-remove-vrm-temp-x570-e-gaming.patch create mode 100644 queue-6.10/hwmon-asus-ec-sensors-remove-vrm-temp-x570-e-gaming.patch-578 create mode 100644 queue-6.10/ice-check-for-xdp-rings-instead-of-bpf-program-when-.patch create mode 100644 queue-6.10/ice-check-for-xdp-rings-instead-of-bpf-program-when-.patch-24037 create mode 100644 queue-6.10/loongarch-define-arch_irq_init_flags-as-irq_noprobe.patch create mode 100644 queue-6.10/loongarch-define-arch_irq_init_flags-as-irq_noprobe.patch-11197 create mode 100644 queue-6.10/loongarch-kvm-invalidate-guest-steal-time-address-on.patch create mode 100644 queue-6.10/loongarch-kvm-invalidate-guest-steal-time-address-on.patch-7425 create mode 100644 queue-6.10/microblaze-don-t-treat-zero-reserved-memory-regions-.patch create mode 100644 queue-6.10/microblaze-don-t-treat-zero-reserved-memory-regions-.patch-3060 create mode 100644 queue-6.10/net-ftgmac100-ensure-tx-descriptor-updates-are-visib.patch create mode 100644 queue-6.10/net-ftgmac100-ensure-tx-descriptor-updates-are-visib.patch-4531 create mode 100644 queue-6.10/ocfs2-add-bounds-checking-to-ocfs2_xattr_find_entry.patch create mode 100644 queue-6.10/ocfs2-add-bounds-checking-to-ocfs2_xattr_find_entry.patch-10443 create mode 100644 queue-6.10/ocfs2-strict-bound-check-before-memcmp-in-ocfs2_xatt.patch create mode 100644 queue-6.10/ocfs2-strict-bound-check-before-memcmp-in-ocfs2_xatt.patch-24730 create mode 100644 queue-6.10/pinctrl-at91-make-it-work-with-current-gpiolib.patch create mode 100644 queue-6.10/pinctrl-at91-make-it-work-with-current-gpiolib.patch-14635 create mode 100644 queue-6.10/platform-x86-amd-pmf-make-asus-ga403-quirk-generic.patch create mode 100644 queue-6.10/platform-x86-amd-pmf-make-asus-ga403-quirk-generic.patch-18829 create mode 100644 queue-6.10/platform-x86-asus-wmi-fix-spurious-rfkill-on-ux8406m.patch create mode 100644 queue-6.10/platform-x86-asus-wmi-fix-spurious-rfkill-on-ux8406m.patch-9102 create mode 100644 queue-6.10/platform-x86-x86-android-tablets-make-lenovo-yoga-ta.patch create mode 100644 queue-6.10/platform-x86-x86-android-tablets-make-lenovo-yoga-ta.patch-6727 create mode 100644 queue-6.10/scsi-lpfc-fix-overflow-build-issue.patch create mode 100644 queue-6.10/scsi-lpfc-fix-overflow-build-issue.patch-6384 create mode 100644 queue-6.10/smb-client-fix-hang-in-wait_for_response-for-negprot.patch create mode 100644 queue-6.10/smb-client-fix-hang-in-wait_for_response-for-negprot.patch-8607 create mode 100644 queue-6.10/spi-bcm63xx-enable-module-autoloading.patch create mode 100644 queue-6.10/spi-bcm63xx-enable-module-autoloading.patch-23926 create mode 100644 queue-6.10/spi-spidev-add-an-entry-for-elgin-jg10309-01.patch create mode 100644 queue-6.10/spi-spidev-add-an-entry-for-elgin-jg10309-01.patch-15611 create mode 100644 queue-6.10/spi-spidev-add-missing-spi_device_id-for-jg10309-01.patch create mode 100644 queue-6.10/spi-spidev-add-missing-spi_device_id-for-jg10309-01.patch-10107 create mode 100644 queue-6.10/tools-hv-rm-.-.cmd-when-make-clean.patch create mode 100644 queue-6.10/tools-hv-rm-.-.cmd-when-make-clean.patch-27420 create mode 100644 queue-6.10/wifi-iwlwifi-clear-trans-state-earlier-upon-error.patch create mode 100644 queue-6.10/wifi-iwlwifi-clear-trans-state-earlier-upon-error.patch-6875 create mode 100644 queue-6.10/wifi-iwlwifi-lower-message-level-for-fw-buffer-desti.patch create mode 100644 queue-6.10/wifi-iwlwifi-lower-message-level-for-fw-buffer-desti.patch-14318 create mode 100644 queue-6.10/wifi-iwlwifi-mvm-don-t-wait-for-tx-queues-if-firmwar.patch create mode 100644 queue-6.10/wifi-iwlwifi-mvm-don-t-wait-for-tx-queues-if-firmwar.patch-14089 create mode 100644 queue-6.10/wifi-iwlwifi-mvm-fix-iwl_mvm_max_scan_ie_fw_cmd_room.patch create mode 100644 queue-6.10/wifi-iwlwifi-mvm-fix-iwl_mvm_max_scan_ie_fw_cmd_room.patch-3044 create mode 100644 queue-6.10/wifi-iwlwifi-mvm-fix-iwl_mvm_scan_fits-calculation.patch create mode 100644 queue-6.10/wifi-iwlwifi-mvm-fix-iwl_mvm_scan_fits-calculation.patch-16713 create mode 100644 queue-6.10/wifi-iwlwifi-mvm-pause-tcm-when-the-firmware-is-stop.patch create mode 100644 queue-6.10/wifi-iwlwifi-mvm-pause-tcm-when-the-firmware-is-stop.patch-21290 create mode 100644 queue-6.10/wifi-mac80211-free-skb-on-error-path-in-ieee80211_be.patch create mode 100644 queue-6.10/wifi-mac80211-free-skb-on-error-path-in-ieee80211_be.patch-27967 create mode 100644 queue-6.10/x86-hyperv-set-x86_feature_tsc_known_freq-when-hyper.patch create mode 100644 queue-6.10/x86-hyperv-set-x86_feature_tsc_known_freq-when-hyper.patch-8101 diff --git a/queue-6.10/alsa-hda-add-hdmi-codec-id-for-intel-ptl.patch b/queue-6.10/alsa-hda-add-hdmi-codec-id-for-intel-ptl.patch new file mode 100644 index 00000000000..0ef865a77f4 --- /dev/null +++ b/queue-6.10/alsa-hda-add-hdmi-codec-id-for-intel-ptl.patch @@ -0,0 +1,40 @@ +From bb6dbc035a8694a06c7d80d7f39dcd0fd3d466de Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 30 Aug 2024 15:24:58 +0800 +Subject: ALSA: hda: add HDMI codec ID for Intel PTL +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Kai Vehmanen + +[ Upstream commit e9481d9b83f8d9b3251aa428b02d8eba89d839ff ] + +Add HDMI codec ID for Intel Panther Lake platform. + +Signed-off-by: Kai Vehmanen +Reviewed-by: Péter Ujfalusi +Reviewed-by: Ranjani Sridharan +Signed-off-by: Bard Liao +Link: https://patch.msgid.link/20240830072458.110831-1-yung-chuan.liao@linux.intel.com +Signed-off-by: Takashi Iwai +Signed-off-by: Sasha Levin +--- + sound/pci/hda/patch_hdmi.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c +index 78042ac2b71f2..643e0496b0936 100644 +--- a/sound/pci/hda/patch_hdmi.c ++++ b/sound/pci/hda/patch_hdmi.c +@@ -4639,6 +4639,7 @@ HDA_CODEC_ENTRY(0x8086281d, "Meteor Lake HDMI", patch_i915_adlp_hdmi), + HDA_CODEC_ENTRY(0x8086281e, "Battlemage HDMI", patch_i915_adlp_hdmi), + HDA_CODEC_ENTRY(0x8086281f, "Raptor Lake P HDMI", patch_i915_adlp_hdmi), + HDA_CODEC_ENTRY(0x80862820, "Lunar Lake HDMI", patch_i915_adlp_hdmi), ++HDA_CODEC_ENTRY(0x80862822, "Panther Lake HDMI", patch_i915_adlp_hdmi), + HDA_CODEC_ENTRY(0x80862880, "CedarTrail HDMI", patch_generic_hdmi), + HDA_CODEC_ENTRY(0x80862882, "Valleyview2 HDMI", patch_i915_byt_hdmi), + HDA_CODEC_ENTRY(0x80862883, "Braswell HDMI", patch_i915_byt_hdmi), +-- +2.43.0 + diff --git a/queue-6.10/alsa-hda-add-hdmi-codec-id-for-intel-ptl.patch-24027 b/queue-6.10/alsa-hda-add-hdmi-codec-id-for-intel-ptl.patch-24027 new file mode 100644 index 00000000000..0ef865a77f4 --- /dev/null +++ b/queue-6.10/alsa-hda-add-hdmi-codec-id-for-intel-ptl.patch-24027 @@ -0,0 +1,40 @@ +From bb6dbc035a8694a06c7d80d7f39dcd0fd3d466de Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 30 Aug 2024 15:24:58 +0800 +Subject: ALSA: hda: add HDMI codec ID for Intel PTL +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Kai Vehmanen + +[ Upstream commit e9481d9b83f8d9b3251aa428b02d8eba89d839ff ] + +Add HDMI codec ID for Intel Panther Lake platform. + +Signed-off-by: Kai Vehmanen +Reviewed-by: Péter Ujfalusi +Reviewed-by: Ranjani Sridharan +Signed-off-by: Bard Liao +Link: https://patch.msgid.link/20240830072458.110831-1-yung-chuan.liao@linux.intel.com +Signed-off-by: Takashi Iwai +Signed-off-by: Sasha Levin +--- + sound/pci/hda/patch_hdmi.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c +index 78042ac2b71f2..643e0496b0936 100644 +--- a/sound/pci/hda/patch_hdmi.c ++++ b/sound/pci/hda/patch_hdmi.c +@@ -4639,6 +4639,7 @@ HDA_CODEC_ENTRY(0x8086281d, "Meteor Lake HDMI", patch_i915_adlp_hdmi), + HDA_CODEC_ENTRY(0x8086281e, "Battlemage HDMI", patch_i915_adlp_hdmi), + HDA_CODEC_ENTRY(0x8086281f, "Raptor Lake P HDMI", patch_i915_adlp_hdmi), + HDA_CODEC_ENTRY(0x80862820, "Lunar Lake HDMI", patch_i915_adlp_hdmi), ++HDA_CODEC_ENTRY(0x80862822, "Panther Lake HDMI", patch_i915_adlp_hdmi), + HDA_CODEC_ENTRY(0x80862880, "CedarTrail HDMI", patch_generic_hdmi), + HDA_CODEC_ENTRY(0x80862882, "Valleyview2 HDMI", patch_i915_byt_hdmi), + HDA_CODEC_ENTRY(0x80862883, "Braswell HDMI", patch_i915_byt_hdmi), +-- +2.43.0 + diff --git a/queue-6.10/alsa-hda-realtek-fixed-alc256-headphone-no-sound.patch b/queue-6.10/alsa-hda-realtek-fixed-alc256-headphone-no-sound.patch new file mode 100644 index 00000000000..62f0eb3d8a2 --- /dev/null +++ b/queue-6.10/alsa-hda-realtek-fixed-alc256-headphone-no-sound.patch @@ -0,0 +1,126 @@ +From 60ce73d2b82e64f8404501d617b6faca28688aa3 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Thu, 22 Aug 2024 10:54:19 +0800 +Subject: ALSA: hda/realtek - Fixed ALC256 headphone no sound + +From: Kailang Yang + +[ Upstream commit 9b82ff1362f50914c8292902e07be98a9f59d33d ] + +Dell platform, plug headphone or headset, it had a chance to get no +sound from headphone. +Replace depop procedure will solve this issue. + +Signed-off-by: Kailang Yang +Link: https://lore.kernel.org/bb8e2de30d294dc287944efa0667685a@realtek.com +Signed-off-by: Takashi Iwai +Signed-off-by: Sasha Levin +--- + sound/pci/hda/patch_realtek.c | 50 ++++++++++++++++++++++++++--------- + 1 file changed, 37 insertions(+), 13 deletions(-) + +diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c +index 0cde024d1d33c..f730f22d6747a 100644 +--- a/sound/pci/hda/patch_realtek.c ++++ b/sound/pci/hda/patch_realtek.c +@@ -4925,6 +4925,30 @@ static void alc269_fixup_hp_line1_mic1_led(struct hda_codec *codec, + } + } + ++static void alc_hp_mute_disable(struct hda_codec *codec, unsigned int delay) ++{ ++ if (delay <= 0) ++ delay = 75; ++ snd_hda_codec_write(codec, 0x21, 0, ++ AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE); ++ msleep(delay); ++ snd_hda_codec_write(codec, 0x21, 0, ++ AC_VERB_SET_PIN_WIDGET_CONTROL, 0x0); ++ msleep(delay); ++} ++ ++static void alc_hp_enable_unmute(struct hda_codec *codec, unsigned int delay) ++{ ++ if (delay <= 0) ++ delay = 75; ++ snd_hda_codec_write(codec, 0x21, 0, ++ AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT); ++ msleep(delay); ++ snd_hda_codec_write(codec, 0x21, 0, ++ AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE); ++ msleep(delay); ++} ++ + static const struct coef_fw alc225_pre_hsmode[] = { + UPDATE_COEF(0x4a, 1<<8, 0), + UPDATE_COEFEX(0x57, 0x05, 1<<14, 0), +@@ -5026,6 +5050,7 @@ static void alc_headset_mode_unplugged(struct hda_codec *codec) + case 0x10ec0236: + case 0x10ec0256: + case 0x19e58326: ++ alc_hp_mute_disable(codec, 75); + alc_process_coef_fw(codec, coef0256); + break; + case 0x10ec0234: +@@ -5297,6 +5322,7 @@ static void alc_headset_mode_default(struct hda_codec *codec) + alc_write_coef_idx(codec, 0x45, 0xc089); + msleep(50); + alc_process_coef_fw(codec, coef0256); ++ alc_hp_enable_unmute(codec, 75); + break; + case 0x10ec0234: + case 0x10ec0274: +@@ -5394,6 +5420,7 @@ static void alc_headset_mode_ctia(struct hda_codec *codec) + case 0x10ec0256: + case 0x19e58326: + alc_process_coef_fw(codec, coef0256); ++ alc_hp_enable_unmute(codec, 75); + break; + case 0x10ec0234: + case 0x10ec0274: +@@ -5509,6 +5536,7 @@ static void alc_headset_mode_omtp(struct hda_codec *codec) + case 0x10ec0256: + case 0x19e58326: + alc_process_coef_fw(codec, coef0256); ++ alc_hp_enable_unmute(codec, 75); + break; + case 0x10ec0234: + case 0x10ec0274: +@@ -5614,25 +5642,21 @@ static void alc_determine_headset_type(struct hda_codec *codec) + alc_write_coef_idx(codec, 0x06, 0x6104); + alc_write_coefex_idx(codec, 0x57, 0x3, 0x09a3); + +- snd_hda_codec_write(codec, 0x21, 0, +- AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE); +- msleep(80); +- snd_hda_codec_write(codec, 0x21, 0, +- AC_VERB_SET_PIN_WIDGET_CONTROL, 0x0); +- + alc_process_coef_fw(codec, coef0255); + msleep(300); + val = alc_read_coef_idx(codec, 0x46); + is_ctia = (val & 0x0070) == 0x0070; +- ++ if (!is_ctia) { ++ alc_write_coef_idx(codec, 0x45, 0xe089); ++ msleep(100); ++ val = alc_read_coef_idx(codec, 0x46); ++ if ((val & 0x0070) == 0x0070) ++ is_ctia = false; ++ else ++ is_ctia = true; ++ } + alc_write_coefex_idx(codec, 0x57, 0x3, 0x0da3); + alc_update_coefex_idx(codec, 0x57, 0x5, 1<<14, 0); +- +- snd_hda_codec_write(codec, 0x21, 0, +- AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT); +- msleep(80); +- snd_hda_codec_write(codec, 0x21, 0, +- AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE); + break; + case 0x10ec0234: + case 0x10ec0274: +-- +2.43.0 + diff --git a/queue-6.10/alsa-hda-realtek-fixed-alc256-headphone-no-sound.patch-27242 b/queue-6.10/alsa-hda-realtek-fixed-alc256-headphone-no-sound.patch-27242 new file mode 100644 index 00000000000..62f0eb3d8a2 --- /dev/null +++ b/queue-6.10/alsa-hda-realtek-fixed-alc256-headphone-no-sound.patch-27242 @@ -0,0 +1,126 @@ +From 60ce73d2b82e64f8404501d617b6faca28688aa3 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Thu, 22 Aug 2024 10:54:19 +0800 +Subject: ALSA: hda/realtek - Fixed ALC256 headphone no sound + +From: Kailang Yang + +[ Upstream commit 9b82ff1362f50914c8292902e07be98a9f59d33d ] + +Dell platform, plug headphone or headset, it had a chance to get no +sound from headphone. +Replace depop procedure will solve this issue. + +Signed-off-by: Kailang Yang +Link: https://lore.kernel.org/bb8e2de30d294dc287944efa0667685a@realtek.com +Signed-off-by: Takashi Iwai +Signed-off-by: Sasha Levin +--- + sound/pci/hda/patch_realtek.c | 50 ++++++++++++++++++++++++++--------- + 1 file changed, 37 insertions(+), 13 deletions(-) + +diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c +index 0cde024d1d33c..f730f22d6747a 100644 +--- a/sound/pci/hda/patch_realtek.c ++++ b/sound/pci/hda/patch_realtek.c +@@ -4925,6 +4925,30 @@ static void alc269_fixup_hp_line1_mic1_led(struct hda_codec *codec, + } + } + ++static void alc_hp_mute_disable(struct hda_codec *codec, unsigned int delay) ++{ ++ if (delay <= 0) ++ delay = 75; ++ snd_hda_codec_write(codec, 0x21, 0, ++ AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE); ++ msleep(delay); ++ snd_hda_codec_write(codec, 0x21, 0, ++ AC_VERB_SET_PIN_WIDGET_CONTROL, 0x0); ++ msleep(delay); ++} ++ ++static void alc_hp_enable_unmute(struct hda_codec *codec, unsigned int delay) ++{ ++ if (delay <= 0) ++ delay = 75; ++ snd_hda_codec_write(codec, 0x21, 0, ++ AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT); ++ msleep(delay); ++ snd_hda_codec_write(codec, 0x21, 0, ++ AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE); ++ msleep(delay); ++} ++ + static const struct coef_fw alc225_pre_hsmode[] = { + UPDATE_COEF(0x4a, 1<<8, 0), + UPDATE_COEFEX(0x57, 0x05, 1<<14, 0), +@@ -5026,6 +5050,7 @@ static void alc_headset_mode_unplugged(struct hda_codec *codec) + case 0x10ec0236: + case 0x10ec0256: + case 0x19e58326: ++ alc_hp_mute_disable(codec, 75); + alc_process_coef_fw(codec, coef0256); + break; + case 0x10ec0234: +@@ -5297,6 +5322,7 @@ static void alc_headset_mode_default(struct hda_codec *codec) + alc_write_coef_idx(codec, 0x45, 0xc089); + msleep(50); + alc_process_coef_fw(codec, coef0256); ++ alc_hp_enable_unmute(codec, 75); + break; + case 0x10ec0234: + case 0x10ec0274: +@@ -5394,6 +5420,7 @@ static void alc_headset_mode_ctia(struct hda_codec *codec) + case 0x10ec0256: + case 0x19e58326: + alc_process_coef_fw(codec, coef0256); ++ alc_hp_enable_unmute(codec, 75); + break; + case 0x10ec0234: + case 0x10ec0274: +@@ -5509,6 +5536,7 @@ static void alc_headset_mode_omtp(struct hda_codec *codec) + case 0x10ec0256: + case 0x19e58326: + alc_process_coef_fw(codec, coef0256); ++ alc_hp_enable_unmute(codec, 75); + break; + case 0x10ec0234: + case 0x10ec0274: +@@ -5614,25 +5642,21 @@ static void alc_determine_headset_type(struct hda_codec *codec) + alc_write_coef_idx(codec, 0x06, 0x6104); + alc_write_coefex_idx(codec, 0x57, 0x3, 0x09a3); + +- snd_hda_codec_write(codec, 0x21, 0, +- AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE); +- msleep(80); +- snd_hda_codec_write(codec, 0x21, 0, +- AC_VERB_SET_PIN_WIDGET_CONTROL, 0x0); +- + alc_process_coef_fw(codec, coef0255); + msleep(300); + val = alc_read_coef_idx(codec, 0x46); + is_ctia = (val & 0x0070) == 0x0070; +- ++ if (!is_ctia) { ++ alc_write_coef_idx(codec, 0x45, 0xe089); ++ msleep(100); ++ val = alc_read_coef_idx(codec, 0x46); ++ if ((val & 0x0070) == 0x0070) ++ is_ctia = false; ++ else ++ is_ctia = true; ++ } + alc_write_coefex_idx(codec, 0x57, 0x3, 0x0da3); + alc_update_coefex_idx(codec, 0x57, 0x5, 1<<14, 0); +- +- snd_hda_codec_write(codec, 0x21, 0, +- AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT); +- msleep(80); +- snd_hda_codec_write(codec, 0x21, 0, +- AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE); + break; + case 0x10ec0234: + case 0x10ec0274: +-- +2.43.0 + diff --git a/queue-6.10/alsa-hda-realtek-fixed-alc285-headphone-no-sound.patch b/queue-6.10/alsa-hda-realtek-fixed-alc285-headphone-no-sound.patch new file mode 100644 index 00000000000..1924db1353a --- /dev/null +++ b/queue-6.10/alsa-hda-realtek-fixed-alc285-headphone-no-sound.patch @@ -0,0 +1,100 @@ +From a3c352aea776d1097c212ece23a51e96f5dda2b4 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Thu, 22 Aug 2024 16:46:56 +0800 +Subject: ALSA: hda/realtek - FIxed ALC285 headphone no sound + +From: Kailang Yang + +[ Upstream commit 1fa7b099d60ad64f559bd3b8e3f0d94b2e015514 ] + +Dell platform with ALC215 ALC285 ALC289 ALC225 ALC295 ALC299, plug +headphone or headset. +It had a chance to get no sound from headphone. +Replace depop procedure will solve this issue. + +Signed-off-by: Kailang Yang +Link: https://lore.kernel.org/d0de1b03fd174520945dde216d765223@realtek.com +Signed-off-by: Takashi Iwai +Signed-off-by: Sasha Levin +--- + sound/pci/hda/patch_realtek.c | 26 ++++++++++++++------------ + 1 file changed, 14 insertions(+), 12 deletions(-) + +diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c +index f730f22d6747a..2b674691ce4b6 100644 +--- a/sound/pci/hda/patch_realtek.c ++++ b/sound/pci/hda/patch_realtek.c +@@ -5085,6 +5085,7 @@ static void alc_headset_mode_unplugged(struct hda_codec *codec) + case 0x10ec0295: + case 0x10ec0289: + case 0x10ec0299: ++ alc_hp_mute_disable(codec, 75); + alc_process_coef_fw(codec, alc225_pre_hsmode); + alc_process_coef_fw(codec, coef0225); + break; +@@ -5310,6 +5311,7 @@ static void alc_headset_mode_default(struct hda_codec *codec) + case 0x10ec0299: + alc_process_coef_fw(codec, alc225_pre_hsmode); + alc_process_coef_fw(codec, coef0225); ++ alc_hp_enable_unmute(codec, 75); + break; + case 0x10ec0255: + alc_process_coef_fw(codec, coef0255); +@@ -5469,6 +5471,7 @@ static void alc_headset_mode_ctia(struct hda_codec *codec) + alc_process_coef_fw(codec, coef0225_2); + else + alc_process_coef_fw(codec, coef0225_1); ++ alc_hp_enable_unmute(codec, 75); + break; + case 0x10ec0867: + alc_update_coefex_idx(codec, 0x57, 0x5, 1<<14, 0); +@@ -5574,6 +5577,7 @@ static void alc_headset_mode_omtp(struct hda_codec *codec) + case 0x10ec0289: + case 0x10ec0299: + alc_process_coef_fw(codec, coef0225); ++ alc_hp_enable_unmute(codec, 75); + break; + } + codec_dbg(codec, "Headset jack set to Nokia-style headset mode.\n"); +@@ -5733,12 +5737,6 @@ static void alc_determine_headset_type(struct hda_codec *codec) + case 0x10ec0295: + case 0x10ec0289: + case 0x10ec0299: +- snd_hda_codec_write(codec, 0x21, 0, +- AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE); +- msleep(80); +- snd_hda_codec_write(codec, 0x21, 0, +- AC_VERB_SET_PIN_WIDGET_CONTROL, 0x0); +- + alc_process_coef_fw(codec, alc225_pre_hsmode); + alc_update_coef_idx(codec, 0x67, 0xf000, 0x1000); + val = alc_read_coef_idx(codec, 0x45); +@@ -5755,15 +5753,19 @@ static void alc_determine_headset_type(struct hda_codec *codec) + val = alc_read_coef_idx(codec, 0x46); + is_ctia = (val & 0x00f0) == 0x00f0; + } ++ if (!is_ctia) { ++ alc_update_coef_idx(codec, 0x45, 0x3f<<10, 0x38<<10); ++ alc_update_coef_idx(codec, 0x49, 3<<8, 1<<8); ++ msleep(100); ++ val = alc_read_coef_idx(codec, 0x46); ++ if ((val & 0x00f0) == 0x00f0) ++ is_ctia = false; ++ else ++ is_ctia = true; ++ } + alc_update_coef_idx(codec, 0x4a, 7<<6, 7<<6); + alc_update_coef_idx(codec, 0x4a, 3<<4, 3<<4); + alc_update_coef_idx(codec, 0x67, 0xf000, 0x3000); +- +- snd_hda_codec_write(codec, 0x21, 0, +- AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT); +- msleep(80); +- snd_hda_codec_write(codec, 0x21, 0, +- AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE); + break; + case 0x10ec0867: + is_ctia = true; +-- +2.43.0 + diff --git a/queue-6.10/alsa-hda-realtek-fixed-alc285-headphone-no-sound.patch-23034 b/queue-6.10/alsa-hda-realtek-fixed-alc285-headphone-no-sound.patch-23034 new file mode 100644 index 00000000000..1924db1353a --- /dev/null +++ b/queue-6.10/alsa-hda-realtek-fixed-alc285-headphone-no-sound.patch-23034 @@ -0,0 +1,100 @@ +From a3c352aea776d1097c212ece23a51e96f5dda2b4 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Thu, 22 Aug 2024 16:46:56 +0800 +Subject: ALSA: hda/realtek - FIxed ALC285 headphone no sound + +From: Kailang Yang + +[ Upstream commit 1fa7b099d60ad64f559bd3b8e3f0d94b2e015514 ] + +Dell platform with ALC215 ALC285 ALC289 ALC225 ALC295 ALC299, plug +headphone or headset. +It had a chance to get no sound from headphone. +Replace depop procedure will solve this issue. + +Signed-off-by: Kailang Yang +Link: https://lore.kernel.org/d0de1b03fd174520945dde216d765223@realtek.com +Signed-off-by: Takashi Iwai +Signed-off-by: Sasha Levin +--- + sound/pci/hda/patch_realtek.c | 26 ++++++++++++++------------ + 1 file changed, 14 insertions(+), 12 deletions(-) + +diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c +index f730f22d6747a..2b674691ce4b6 100644 +--- a/sound/pci/hda/patch_realtek.c ++++ b/sound/pci/hda/patch_realtek.c +@@ -5085,6 +5085,7 @@ static void alc_headset_mode_unplugged(struct hda_codec *codec) + case 0x10ec0295: + case 0x10ec0289: + case 0x10ec0299: ++ alc_hp_mute_disable(codec, 75); + alc_process_coef_fw(codec, alc225_pre_hsmode); + alc_process_coef_fw(codec, coef0225); + break; +@@ -5310,6 +5311,7 @@ static void alc_headset_mode_default(struct hda_codec *codec) + case 0x10ec0299: + alc_process_coef_fw(codec, alc225_pre_hsmode); + alc_process_coef_fw(codec, coef0225); ++ alc_hp_enable_unmute(codec, 75); + break; + case 0x10ec0255: + alc_process_coef_fw(codec, coef0255); +@@ -5469,6 +5471,7 @@ static void alc_headset_mode_ctia(struct hda_codec *codec) + alc_process_coef_fw(codec, coef0225_2); + else + alc_process_coef_fw(codec, coef0225_1); ++ alc_hp_enable_unmute(codec, 75); + break; + case 0x10ec0867: + alc_update_coefex_idx(codec, 0x57, 0x5, 1<<14, 0); +@@ -5574,6 +5577,7 @@ static void alc_headset_mode_omtp(struct hda_codec *codec) + case 0x10ec0289: + case 0x10ec0299: + alc_process_coef_fw(codec, coef0225); ++ alc_hp_enable_unmute(codec, 75); + break; + } + codec_dbg(codec, "Headset jack set to Nokia-style headset mode.\n"); +@@ -5733,12 +5737,6 @@ static void alc_determine_headset_type(struct hda_codec *codec) + case 0x10ec0295: + case 0x10ec0289: + case 0x10ec0299: +- snd_hda_codec_write(codec, 0x21, 0, +- AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE); +- msleep(80); +- snd_hda_codec_write(codec, 0x21, 0, +- AC_VERB_SET_PIN_WIDGET_CONTROL, 0x0); +- + alc_process_coef_fw(codec, alc225_pre_hsmode); + alc_update_coef_idx(codec, 0x67, 0xf000, 0x1000); + val = alc_read_coef_idx(codec, 0x45); +@@ -5755,15 +5753,19 @@ static void alc_determine_headset_type(struct hda_codec *codec) + val = alc_read_coef_idx(codec, 0x46); + is_ctia = (val & 0x00f0) == 0x00f0; + } ++ if (!is_ctia) { ++ alc_update_coef_idx(codec, 0x45, 0x3f<<10, 0x38<<10); ++ alc_update_coef_idx(codec, 0x49, 3<<8, 1<<8); ++ msleep(100); ++ val = alc_read_coef_idx(codec, 0x46); ++ if ((val & 0x00f0) == 0x00f0) ++ is_ctia = false; ++ else ++ is_ctia = true; ++ } + alc_update_coef_idx(codec, 0x4a, 7<<6, 7<<6); + alc_update_coef_idx(codec, 0x4a, 3<<4, 3<<4); + alc_update_coef_idx(codec, 0x67, 0xf000, 0x3000); +- +- snd_hda_codec_write(codec, 0x21, 0, +- AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT); +- msleep(80); +- snd_hda_codec_write(codec, 0x21, 0, +- AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE); + break; + case 0x10ec0867: + is_ctia = true; +-- +2.43.0 + diff --git a/queue-6.10/asoc-allow-module-autoloading-for-table-board_ids.patch b/queue-6.10/asoc-allow-module-autoloading-for-table-board_ids.patch new file mode 100644 index 00000000000..a3e9477ef67 --- /dev/null +++ b/queue-6.10/asoc-allow-module-autoloading-for-table-board_ids.patch @@ -0,0 +1,36 @@ +From 9519a275ac41f0d2b033c7b6f3c5010aff72d35c Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Wed, 21 Aug 2024 14:19:55 +0800 +Subject: ASoC: allow module autoloading for table board_ids + +From: Hongbo Li + +[ Upstream commit 5f7c98b7519a3a847d9182bd99d57ea250032ca1 ] + +Add MODULE_DEVICE_TABLE(), so modules could be properly +autoloaded based on the alias from platform_device_id table. + +Signed-off-by: Hongbo Li +Link: https://patch.msgid.link/20240821061955.2273782-3-lihongbo22@huawei.com +Signed-off-by: Mark Brown +Signed-off-by: Sasha Levin +--- + sound/soc/amd/acp/acp-sof-mach.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/sound/soc/amd/acp/acp-sof-mach.c b/sound/soc/amd/acp/acp-sof-mach.c +index fc59ea34e687a..b3a702dcd9911 100644 +--- a/sound/soc/amd/acp/acp-sof-mach.c ++++ b/sound/soc/amd/acp/acp-sof-mach.c +@@ -158,6 +158,8 @@ static const struct platform_device_id board_ids[] = { + }, + { } + }; ++MODULE_DEVICE_TABLE(platform, board_ids); ++ + static struct platform_driver acp_asoc_audio = { + .driver = { + .name = "sof_mach", +-- +2.43.0 + diff --git a/queue-6.10/asoc-allow-module-autoloading-for-table-board_ids.patch-18702 b/queue-6.10/asoc-allow-module-autoloading-for-table-board_ids.patch-18702 new file mode 100644 index 00000000000..a3e9477ef67 --- /dev/null +++ b/queue-6.10/asoc-allow-module-autoloading-for-table-board_ids.patch-18702 @@ -0,0 +1,36 @@ +From 9519a275ac41f0d2b033c7b6f3c5010aff72d35c Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Wed, 21 Aug 2024 14:19:55 +0800 +Subject: ASoC: allow module autoloading for table board_ids + +From: Hongbo Li + +[ Upstream commit 5f7c98b7519a3a847d9182bd99d57ea250032ca1 ] + +Add MODULE_DEVICE_TABLE(), so modules could be properly +autoloaded based on the alias from platform_device_id table. + +Signed-off-by: Hongbo Li +Link: https://patch.msgid.link/20240821061955.2273782-3-lihongbo22@huawei.com +Signed-off-by: Mark Brown +Signed-off-by: Sasha Levin +--- + sound/soc/amd/acp/acp-sof-mach.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/sound/soc/amd/acp/acp-sof-mach.c b/sound/soc/amd/acp/acp-sof-mach.c +index fc59ea34e687a..b3a702dcd9911 100644 +--- a/sound/soc/amd/acp/acp-sof-mach.c ++++ b/sound/soc/amd/acp/acp-sof-mach.c +@@ -158,6 +158,8 @@ static const struct platform_device_id board_ids[] = { + }, + { } + }; ++MODULE_DEVICE_TABLE(platform, board_ids); ++ + static struct platform_driver acp_asoc_audio = { + .driver = { + .name = "sof_mach", +-- +2.43.0 + diff --git a/queue-6.10/asoc-allow-module-autoloading-for-table-db1200_pids.patch b/queue-6.10/asoc-allow-module-autoloading-for-table-db1200_pids.patch new file mode 100644 index 00000000000..1d415496a44 --- /dev/null +++ b/queue-6.10/asoc-allow-module-autoloading-for-table-db1200_pids.patch @@ -0,0 +1,35 @@ +From 10bf4171c3064e8d62e1c9f8d7d310d4171f62fb Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Wed, 21 Aug 2024 14:19:54 +0800 +Subject: ASoC: allow module autoloading for table db1200_pids + +From: Hongbo Li + +[ Upstream commit 0e9fdab1e8df490354562187cdbb8dec643eae2c ] + +Add MODULE_DEVICE_TABLE(), so modules could be properly +autoloaded based on the alias from platform_device_id table. + +Signed-off-by: Hongbo Li +Link: https://patch.msgid.link/20240821061955.2273782-2-lihongbo22@huawei.com +Signed-off-by: Mark Brown +Signed-off-by: Sasha Levin +--- + sound/soc/au1x/db1200.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/sound/soc/au1x/db1200.c b/sound/soc/au1x/db1200.c +index 83a75a38705b4..81abe2e184024 100644 +--- a/sound/soc/au1x/db1200.c ++++ b/sound/soc/au1x/db1200.c +@@ -44,6 +44,7 @@ static const struct platform_device_id db1200_pids[] = { + }, + {}, + }; ++MODULE_DEVICE_TABLE(platform, db1200_pids); + + /*------------------------- AC97 PART ---------------------------*/ + +-- +2.43.0 + diff --git a/queue-6.10/asoc-allow-module-autoloading-for-table-db1200_pids.patch-5972 b/queue-6.10/asoc-allow-module-autoloading-for-table-db1200_pids.patch-5972 new file mode 100644 index 00000000000..1d415496a44 --- /dev/null +++ b/queue-6.10/asoc-allow-module-autoloading-for-table-db1200_pids.patch-5972 @@ -0,0 +1,35 @@ +From 10bf4171c3064e8d62e1c9f8d7d310d4171f62fb Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Wed, 21 Aug 2024 14:19:54 +0800 +Subject: ASoC: allow module autoloading for table db1200_pids + +From: Hongbo Li + +[ Upstream commit 0e9fdab1e8df490354562187cdbb8dec643eae2c ] + +Add MODULE_DEVICE_TABLE(), so modules could be properly +autoloaded based on the alias from platform_device_id table. + +Signed-off-by: Hongbo Li +Link: https://patch.msgid.link/20240821061955.2273782-2-lihongbo22@huawei.com +Signed-off-by: Mark Brown +Signed-off-by: Sasha Levin +--- + sound/soc/au1x/db1200.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/sound/soc/au1x/db1200.c b/sound/soc/au1x/db1200.c +index 83a75a38705b4..81abe2e184024 100644 +--- a/sound/soc/au1x/db1200.c ++++ b/sound/soc/au1x/db1200.c +@@ -44,6 +44,7 @@ static const struct platform_device_id db1200_pids[] = { + }, + {}, + }; ++MODULE_DEVICE_TABLE(platform, db1200_pids); + + /*------------------------- AC97 PART ---------------------------*/ + +-- +2.43.0 + diff --git a/queue-6.10/asoc-amd-yc-add-a-quirk-for-msi-bravo-17-d7vek.patch b/queue-6.10/asoc-amd-yc-add-a-quirk-for-msi-bravo-17-d7vek.patch new file mode 100644 index 00000000000..806a79c287d --- /dev/null +++ b/queue-6.10/asoc-amd-yc-add-a-quirk-for-msi-bravo-17-d7vek.patch @@ -0,0 +1,42 @@ +From 9a162f914bf9bfbc8ec524701a3582cb495b0aee Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Thu, 29 Aug 2024 16:03:05 +0300 +Subject: ASoC: amd: yc: Add a quirk for MSI Bravo 17 (D7VEK) + +From: Markuss Broks + +[ Upstream commit 283844c35529300c8e10f7a263e35e3c5d3580ac ] + +MSI Bravo 17 (D7VEK), like other laptops from the family, +has broken ACPI tables and needs a quirk for internal mic +to work. + +Signed-off-by: Markuss Broks +Link: https://patch.msgid.link/20240829130313.338508-1-markuss.broks@gmail.com +Signed-off-by: Mark Brown +Signed-off-by: Sasha Levin +--- + sound/soc/amd/yc/acp6x-mach.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/sound/soc/amd/yc/acp6x-mach.c b/sound/soc/amd/yc/acp6x-mach.c +index f6c1dbd0ebcf5..248e3bcbf386b 100644 +--- a/sound/soc/amd/yc/acp6x-mach.c ++++ b/sound/soc/amd/yc/acp6x-mach.c +@@ -353,6 +353,13 @@ static const struct dmi_system_id yc_acp_quirk_table[] = { + DMI_MATCH(DMI_PRODUCT_NAME, "Bravo 15 C7VF"), + } + }, ++ { ++ .driver_data = &acp6x_card, ++ .matches = { ++ DMI_MATCH(DMI_BOARD_VENDOR, "Micro-Star International Co., Ltd."), ++ DMI_MATCH(DMI_PRODUCT_NAME, "Bravo 17 D7VEK"), ++ } ++ }, + { + .driver_data = &acp6x_card, + .matches = { +-- +2.43.0 + diff --git a/queue-6.10/asoc-amd-yc-add-a-quirk-for-msi-bravo-17-d7vek.patch-18379 b/queue-6.10/asoc-amd-yc-add-a-quirk-for-msi-bravo-17-d7vek.patch-18379 new file mode 100644 index 00000000000..806a79c287d --- /dev/null +++ b/queue-6.10/asoc-amd-yc-add-a-quirk-for-msi-bravo-17-d7vek.patch-18379 @@ -0,0 +1,42 @@ +From 9a162f914bf9bfbc8ec524701a3582cb495b0aee Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Thu, 29 Aug 2024 16:03:05 +0300 +Subject: ASoC: amd: yc: Add a quirk for MSI Bravo 17 (D7VEK) + +From: Markuss Broks + +[ Upstream commit 283844c35529300c8e10f7a263e35e3c5d3580ac ] + +MSI Bravo 17 (D7VEK), like other laptops from the family, +has broken ACPI tables and needs a quirk for internal mic +to work. + +Signed-off-by: Markuss Broks +Link: https://patch.msgid.link/20240829130313.338508-1-markuss.broks@gmail.com +Signed-off-by: Mark Brown +Signed-off-by: Sasha Levin +--- + sound/soc/amd/yc/acp6x-mach.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/sound/soc/amd/yc/acp6x-mach.c b/sound/soc/amd/yc/acp6x-mach.c +index f6c1dbd0ebcf5..248e3bcbf386b 100644 +--- a/sound/soc/amd/yc/acp6x-mach.c ++++ b/sound/soc/amd/yc/acp6x-mach.c +@@ -353,6 +353,13 @@ static const struct dmi_system_id yc_acp_quirk_table[] = { + DMI_MATCH(DMI_PRODUCT_NAME, "Bravo 15 C7VF"), + } + }, ++ { ++ .driver_data = &acp6x_card, ++ .matches = { ++ DMI_MATCH(DMI_BOARD_VENDOR, "Micro-Star International Co., Ltd."), ++ DMI_MATCH(DMI_PRODUCT_NAME, "Bravo 17 D7VEK"), ++ } ++ }, + { + .driver_data = &acp6x_card, + .matches = { +-- +2.43.0 + diff --git a/queue-6.10/asoc-fix-module-autoloading.patch b/queue-6.10/asoc-fix-module-autoloading.patch new file mode 100644 index 00000000000..cef17028f2a --- /dev/null +++ b/queue-6.10/asoc-fix-module-autoloading.patch @@ -0,0 +1,35 @@ +From fbae2702c58d722a4470d2011dc0a6022d56d4eb Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 26 Aug 2024 08:49:24 +0000 +Subject: ASoC: fix module autoloading + +From: Liao Chen + +[ Upstream commit 6ba20539ac6b12ea757b3bfe11adf8de1672d7b8 ] + +Add MODULE_DEVICE_TABLE(), so modules could be properly autoloaded +based on the alias from of_device_id table. + +Signed-off-by: Liao Chen +Link: https://patch.msgid.link/20240826084924.368387-5-liaochen4@huawei.com +Signed-off-by: Mark Brown +Signed-off-by: Sasha Levin +--- + sound/soc/codecs/chv3-codec.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/sound/soc/codecs/chv3-codec.c b/sound/soc/codecs/chv3-codec.c +index ab99effa68748..40020500b1fe8 100644 +--- a/sound/soc/codecs/chv3-codec.c ++++ b/sound/soc/codecs/chv3-codec.c +@@ -26,6 +26,7 @@ static const struct of_device_id chv3_codec_of_match[] = { + { .compatible = "google,chv3-codec", }, + { } + }; ++MODULE_DEVICE_TABLE(of, chv3_codec_of_match); + + static struct platform_driver chv3_codec_platform_driver = { + .driver = { +-- +2.43.0 + diff --git a/queue-6.10/asoc-fix-module-autoloading.patch-11949 b/queue-6.10/asoc-fix-module-autoloading.patch-11949 new file mode 100644 index 00000000000..cef17028f2a --- /dev/null +++ b/queue-6.10/asoc-fix-module-autoloading.patch-11949 @@ -0,0 +1,35 @@ +From fbae2702c58d722a4470d2011dc0a6022d56d4eb Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 26 Aug 2024 08:49:24 +0000 +Subject: ASoC: fix module autoloading + +From: Liao Chen + +[ Upstream commit 6ba20539ac6b12ea757b3bfe11adf8de1672d7b8 ] + +Add MODULE_DEVICE_TABLE(), so modules could be properly autoloaded +based on the alias from of_device_id table. + +Signed-off-by: Liao Chen +Link: https://patch.msgid.link/20240826084924.368387-5-liaochen4@huawei.com +Signed-off-by: Mark Brown +Signed-off-by: Sasha Levin +--- + sound/soc/codecs/chv3-codec.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/sound/soc/codecs/chv3-codec.c b/sound/soc/codecs/chv3-codec.c +index ab99effa68748..40020500b1fe8 100644 +--- a/sound/soc/codecs/chv3-codec.c ++++ b/sound/soc/codecs/chv3-codec.c +@@ -26,6 +26,7 @@ static const struct of_device_id chv3_codec_of_match[] = { + { .compatible = "google,chv3-codec", }, + { } + }; ++MODULE_DEVICE_TABLE(of, chv3_codec_of_match); + + static struct platform_driver chv3_codec_platform_driver = { + .driver = { +-- +2.43.0 + diff --git a/queue-6.10/asoc-google-fix-module-autoloading.patch b/queue-6.10/asoc-google-fix-module-autoloading.patch new file mode 100644 index 00000000000..a654fabf59c --- /dev/null +++ b/queue-6.10/asoc-google-fix-module-autoloading.patch @@ -0,0 +1,35 @@ +From e5c682e209e52ca5c1496482e8d43428550d2b54 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 26 Aug 2024 08:49:22 +0000 +Subject: ASoC: google: fix module autoloading + +From: Liao Chen + +[ Upstream commit 8e1bb4a41aa78d6105e59186af3dcd545fc66e70 ] + +Add MODULE_DEVICE_TABLE(), so modules could be properly autoloaded +based on the alias from of_device_id table. + +Signed-off-by: Liao Chen +Link: https://patch.msgid.link/20240826084924.368387-3-liaochen4@huawei.com +Signed-off-by: Mark Brown +Signed-off-by: Sasha Levin +--- + sound/soc/google/chv3-i2s.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/sound/soc/google/chv3-i2s.c b/sound/soc/google/chv3-i2s.c +index 08e558f24af86..0ff24653d49f4 100644 +--- a/sound/soc/google/chv3-i2s.c ++++ b/sound/soc/google/chv3-i2s.c +@@ -322,6 +322,7 @@ static const struct of_device_id chv3_i2s_of_match[] = { + { .compatible = "google,chv3-i2s" }, + {}, + }; ++MODULE_DEVICE_TABLE(of, chv3_i2s_of_match); + + static struct platform_driver chv3_i2s_driver = { + .probe = chv3_i2s_probe, +-- +2.43.0 + diff --git a/queue-6.10/asoc-google-fix-module-autoloading.patch-29410 b/queue-6.10/asoc-google-fix-module-autoloading.patch-29410 new file mode 100644 index 00000000000..a654fabf59c --- /dev/null +++ b/queue-6.10/asoc-google-fix-module-autoloading.patch-29410 @@ -0,0 +1,35 @@ +From e5c682e209e52ca5c1496482e8d43428550d2b54 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 26 Aug 2024 08:49:22 +0000 +Subject: ASoC: google: fix module autoloading + +From: Liao Chen + +[ Upstream commit 8e1bb4a41aa78d6105e59186af3dcd545fc66e70 ] + +Add MODULE_DEVICE_TABLE(), so modules could be properly autoloaded +based on the alias from of_device_id table. + +Signed-off-by: Liao Chen +Link: https://patch.msgid.link/20240826084924.368387-3-liaochen4@huawei.com +Signed-off-by: Mark Brown +Signed-off-by: Sasha Levin +--- + sound/soc/google/chv3-i2s.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/sound/soc/google/chv3-i2s.c b/sound/soc/google/chv3-i2s.c +index 08e558f24af86..0ff24653d49f4 100644 +--- a/sound/soc/google/chv3-i2s.c ++++ b/sound/soc/google/chv3-i2s.c +@@ -322,6 +322,7 @@ static const struct of_device_id chv3_i2s_of_match[] = { + { .compatible = "google,chv3-i2s" }, + {}, + }; ++MODULE_DEVICE_TABLE(of, chv3_i2s_of_match); + + static struct platform_driver chv3_i2s_driver = { + .probe = chv3_i2s_probe, +-- +2.43.0 + diff --git a/queue-6.10/asoc-intel-fix-module-autoloading.patch b/queue-6.10/asoc-intel-fix-module-autoloading.patch new file mode 100644 index 00000000000..848d38fea10 --- /dev/null +++ b/queue-6.10/asoc-intel-fix-module-autoloading.patch @@ -0,0 +1,35 @@ +From 2c4b2498ba00646303be06af47dfd60cde4f892a Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 26 Aug 2024 08:49:21 +0000 +Subject: ASoC: intel: fix module autoloading + +From: Liao Chen + +[ Upstream commit ae61a3391088d29aa8605c9f2db84295ab993a49 ] + +Add MODULE_DEVICE_TABLE(), so modules could be properly autoloaded +based on the alias from of_device_id table. + +Signed-off-by: Liao Chen +Link: https://patch.msgid.link/20240826084924.368387-2-liaochen4@huawei.com +Signed-off-by: Mark Brown +Signed-off-by: Sasha Levin +--- + sound/soc/intel/keembay/kmb_platform.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/sound/soc/intel/keembay/kmb_platform.c b/sound/soc/intel/keembay/kmb_platform.c +index 37ea2e1d2e922..aa5de167e7909 100644 +--- a/sound/soc/intel/keembay/kmb_platform.c ++++ b/sound/soc/intel/keembay/kmb_platform.c +@@ -814,6 +814,7 @@ static const struct of_device_id kmb_plat_of_match[] = { + { .compatible = "intel,keembay-tdm", .data = &intel_kmb_tdm_dai}, + {} + }; ++MODULE_DEVICE_TABLE(of, kmb_plat_of_match); + + static int kmb_plat_dai_probe(struct platform_device *pdev) + { +-- +2.43.0 + diff --git a/queue-6.10/asoc-intel-fix-module-autoloading.patch-15410 b/queue-6.10/asoc-intel-fix-module-autoloading.patch-15410 new file mode 100644 index 00000000000..848d38fea10 --- /dev/null +++ b/queue-6.10/asoc-intel-fix-module-autoloading.patch-15410 @@ -0,0 +1,35 @@ +From 2c4b2498ba00646303be06af47dfd60cde4f892a Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 26 Aug 2024 08:49:21 +0000 +Subject: ASoC: intel: fix module autoloading + +From: Liao Chen + +[ Upstream commit ae61a3391088d29aa8605c9f2db84295ab993a49 ] + +Add MODULE_DEVICE_TABLE(), so modules could be properly autoloaded +based on the alias from of_device_id table. + +Signed-off-by: Liao Chen +Link: https://patch.msgid.link/20240826084924.368387-2-liaochen4@huawei.com +Signed-off-by: Mark Brown +Signed-off-by: Sasha Levin +--- + sound/soc/intel/keembay/kmb_platform.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/sound/soc/intel/keembay/kmb_platform.c b/sound/soc/intel/keembay/kmb_platform.c +index 37ea2e1d2e922..aa5de167e7909 100644 +--- a/sound/soc/intel/keembay/kmb_platform.c ++++ b/sound/soc/intel/keembay/kmb_platform.c +@@ -814,6 +814,7 @@ static const struct of_device_id kmb_plat_of_match[] = { + { .compatible = "intel,keembay-tdm", .data = &intel_kmb_tdm_dai}, + {} + }; ++MODULE_DEVICE_TABLE(of, kmb_plat_of_match); + + static int kmb_plat_dai_probe(struct platform_device *pdev) + { +-- +2.43.0 + diff --git a/queue-6.10/asoc-intel-soc-acpi-cht-make-lenovo-yoga-tab-3-x90f-.patch b/queue-6.10/asoc-intel-soc-acpi-cht-make-lenovo-yoga-tab-3-x90f-.patch new file mode 100644 index 00000000000..431a1793148 --- /dev/null +++ b/queue-6.10/asoc-intel-soc-acpi-cht-make-lenovo-yoga-tab-3-x90f-.patch @@ -0,0 +1,43 @@ +From 675ed7b6440e1f620c8296e4810b1a61d6eba5a9 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 23 Aug 2024 09:43:05 +0200 +Subject: ASoC: Intel: soc-acpi-cht: Make Lenovo Yoga Tab 3 X90F DMI match less + strict + +From: Hans de Goede + +[ Upstream commit 839a4ec06f75cec8fec2cc5fc14e921d0c3f7369 ] + +There are 2G and 4G RAM versions of the Lenovo Yoga Tab 3 X90F and it +turns out that the 2G version has a DMI product name of +"CHERRYVIEW D1 PLATFORM" where as the 4G version has +"CHERRYVIEW C0 PLATFORM". The sys-vendor + product-version check are +unique enough that the product-name check is not necessary. + +Drop the product-name check so that the existing DMI match for the 4G +RAM version also matches the 2G RAM version. + +Signed-off-by: Hans de Goede +Reviewed-by: Pierre-Louis Bossart +Link: https://patch.msgid.link/20240823074305.16873-1-hdegoede@redhat.com +Signed-off-by: Mark Brown +Signed-off-by: Sasha Levin +--- + sound/soc/intel/common/soc-acpi-intel-cht-match.c | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/sound/soc/intel/common/soc-acpi-intel-cht-match.c b/sound/soc/intel/common/soc-acpi-intel-cht-match.c +index 5e2ec60e2954b..e4c3492a0c282 100644 +--- a/sound/soc/intel/common/soc-acpi-intel-cht-match.c ++++ b/sound/soc/intel/common/soc-acpi-intel-cht-match.c +@@ -84,7 +84,6 @@ static const struct dmi_system_id lenovo_yoga_tab3_x90[] = { + /* Lenovo Yoga Tab 3 Pro YT3-X90, codec missing from DSDT */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Intel Corporation"), +- DMI_MATCH(DMI_PRODUCT_NAME, "CHERRYVIEW D1 PLATFORM"), + DMI_MATCH(DMI_PRODUCT_VERSION, "Blade3-10A-001"), + }, + }, +-- +2.43.0 + diff --git a/queue-6.10/asoc-intel-soc-acpi-cht-make-lenovo-yoga-tab-3-x90f-.patch-32257 b/queue-6.10/asoc-intel-soc-acpi-cht-make-lenovo-yoga-tab-3-x90f-.patch-32257 new file mode 100644 index 00000000000..431a1793148 --- /dev/null +++ b/queue-6.10/asoc-intel-soc-acpi-cht-make-lenovo-yoga-tab-3-x90f-.patch-32257 @@ -0,0 +1,43 @@ +From 675ed7b6440e1f620c8296e4810b1a61d6eba5a9 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 23 Aug 2024 09:43:05 +0200 +Subject: ASoC: Intel: soc-acpi-cht: Make Lenovo Yoga Tab 3 X90F DMI match less + strict + +From: Hans de Goede + +[ Upstream commit 839a4ec06f75cec8fec2cc5fc14e921d0c3f7369 ] + +There are 2G and 4G RAM versions of the Lenovo Yoga Tab 3 X90F and it +turns out that the 2G version has a DMI product name of +"CHERRYVIEW D1 PLATFORM" where as the 4G version has +"CHERRYVIEW C0 PLATFORM". The sys-vendor + product-version check are +unique enough that the product-name check is not necessary. + +Drop the product-name check so that the existing DMI match for the 4G +RAM version also matches the 2G RAM version. + +Signed-off-by: Hans de Goede +Reviewed-by: Pierre-Louis Bossart +Link: https://patch.msgid.link/20240823074305.16873-1-hdegoede@redhat.com +Signed-off-by: Mark Brown +Signed-off-by: Sasha Levin +--- + sound/soc/intel/common/soc-acpi-intel-cht-match.c | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/sound/soc/intel/common/soc-acpi-intel-cht-match.c b/sound/soc/intel/common/soc-acpi-intel-cht-match.c +index 5e2ec60e2954b..e4c3492a0c282 100644 +--- a/sound/soc/intel/common/soc-acpi-intel-cht-match.c ++++ b/sound/soc/intel/common/soc-acpi-intel-cht-match.c +@@ -84,7 +84,6 @@ static const struct dmi_system_id lenovo_yoga_tab3_x90[] = { + /* Lenovo Yoga Tab 3 Pro YT3-X90, codec missing from DSDT */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Intel Corporation"), +- DMI_MATCH(DMI_PRODUCT_NAME, "CHERRYVIEW D1 PLATFORM"), + DMI_MATCH(DMI_PRODUCT_VERSION, "Blade3-10A-001"), + }, + }, +-- +2.43.0 + diff --git a/queue-6.10/asoc-mediatek-mt8188-mark-afe_dac_con0-register-as-v.patch b/queue-6.10/asoc-mediatek-mt8188-mark-afe_dac_con0-register-as-v.patch new file mode 100644 index 00000000000..c83a9486134 --- /dev/null +++ b/queue-6.10/asoc-mediatek-mt8188-mark-afe_dac_con0-register-as-v.patch @@ -0,0 +1,41 @@ +From 5708a0ca4bcf2d12db501092f70ea53a2566c381 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Thu, 1 Aug 2024 16:43:26 +0800 +Subject: ASoC: mediatek: mt8188: Mark AFE_DAC_CON0 register as volatile + +From: YR Yang + +[ Upstream commit ff9f065318e17a1a97981d9e535fcfc6ce5d5614 ] + +Add AFE Control Register 0 to the volatile_register. +AFE_DAC_CON0 can be modified by both the SOF and ALSA drivers. +If this register is read and written in cache mode, the cached value +might not reflect the actual value when the register is modified by +another driver. It can cause playback or capture failures. Therefore, +it is necessary to add AFE_DAC_CON0 to the list of volatile registers. + +Signed-off-by: YR Yang +Reviewed-by: Fei Shao +Reviewed-by: Trevor Wu +Link: https://patch.msgid.link/20240801084326.1472-1-yr.yang@mediatek.com +Signed-off-by: Mark Brown +Signed-off-by: Sasha Levin +--- + sound/soc/mediatek/mt8188/mt8188-afe-pcm.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/sound/soc/mediatek/mt8188/mt8188-afe-pcm.c b/sound/soc/mediatek/mt8188/mt8188-afe-pcm.c +index ccb6c1f3adc7d..73e5c63aeec87 100644 +--- a/sound/soc/mediatek/mt8188/mt8188-afe-pcm.c ++++ b/sound/soc/mediatek/mt8188/mt8188-afe-pcm.c +@@ -2748,6 +2748,7 @@ static bool mt8188_is_volatile_reg(struct device *dev, unsigned int reg) + case AFE_ASRC12_NEW_CON9: + case AFE_LRCK_CNT: + case AFE_DAC_MON0: ++ case AFE_DAC_CON0: + case AFE_DL2_CUR: + case AFE_DL3_CUR: + case AFE_DL6_CUR: +-- +2.43.0 + diff --git a/queue-6.10/asoc-mediatek-mt8188-mark-afe_dac_con0-register-as-v.patch-2574 b/queue-6.10/asoc-mediatek-mt8188-mark-afe_dac_con0-register-as-v.patch-2574 new file mode 100644 index 00000000000..c83a9486134 --- /dev/null +++ b/queue-6.10/asoc-mediatek-mt8188-mark-afe_dac_con0-register-as-v.patch-2574 @@ -0,0 +1,41 @@ +From 5708a0ca4bcf2d12db501092f70ea53a2566c381 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Thu, 1 Aug 2024 16:43:26 +0800 +Subject: ASoC: mediatek: mt8188: Mark AFE_DAC_CON0 register as volatile + +From: YR Yang + +[ Upstream commit ff9f065318e17a1a97981d9e535fcfc6ce5d5614 ] + +Add AFE Control Register 0 to the volatile_register. +AFE_DAC_CON0 can be modified by both the SOF and ALSA drivers. +If this register is read and written in cache mode, the cached value +might not reflect the actual value when the register is modified by +another driver. It can cause playback or capture failures. Therefore, +it is necessary to add AFE_DAC_CON0 to the list of volatile registers. + +Signed-off-by: YR Yang +Reviewed-by: Fei Shao +Reviewed-by: Trevor Wu +Link: https://patch.msgid.link/20240801084326.1472-1-yr.yang@mediatek.com +Signed-off-by: Mark Brown +Signed-off-by: Sasha Levin +--- + sound/soc/mediatek/mt8188/mt8188-afe-pcm.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/sound/soc/mediatek/mt8188/mt8188-afe-pcm.c b/sound/soc/mediatek/mt8188/mt8188-afe-pcm.c +index ccb6c1f3adc7d..73e5c63aeec87 100644 +--- a/sound/soc/mediatek/mt8188/mt8188-afe-pcm.c ++++ b/sound/soc/mediatek/mt8188/mt8188-afe-pcm.c +@@ -2748,6 +2748,7 @@ static bool mt8188_is_volatile_reg(struct device *dev, unsigned int reg) + case AFE_ASRC12_NEW_CON9: + case AFE_LRCK_CNT: + case AFE_DAC_MON0: ++ case AFE_DAC_CON0: + case AFE_DL2_CUR: + case AFE_DL3_CUR: + case AFE_DL6_CUR: +-- +2.43.0 + diff --git a/queue-6.10/asoc-mediatek-mt8188-mt6359-modify-key.patch b/queue-6.10/asoc-mediatek-mt8188-mt6359-modify-key.patch new file mode 100644 index 00000000000..b85b2bf7c30 --- /dev/null +++ b/queue-6.10/asoc-mediatek-mt8188-mt6359-modify-key.patch @@ -0,0 +1,59 @@ +From f50daf4a265e5683e6781a7678414378c8e1ef6e Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 16 Aug 2024 19:49:21 +0800 +Subject: ASoC: mediatek: mt8188-mt6359: Modify key + +From: Zhang Yi + +[ Upstream commit 5325b96769a5b282e330023e1d0881018e89e266 ] + +In order to get the correct keys when using the ES8326.We will associate +SND_JACK_BTN_1 to KEY_VOLUMEUP and SND_JACK_BTN_2 to KEY_VOLUMEDOWN +when the ES8326 flag is recognized. + +Signed-off-by: Zhang Yi +Link: https://patch.msgid.link/20240816114921.48913-1-zhangyi@everest-semi.com +Signed-off-by: Mark Brown +Signed-off-by: Sasha Levin +--- + sound/soc/mediatek/mt8188/mt8188-mt6359.c | 17 +++++++++++++---- + 1 file changed, 13 insertions(+), 4 deletions(-) + +diff --git a/sound/soc/mediatek/mt8188/mt8188-mt6359.c b/sound/soc/mediatek/mt8188/mt8188-mt6359.c +index eba6f4c445ffb..08ae962afeb92 100644 +--- a/sound/soc/mediatek/mt8188/mt8188-mt6359.c ++++ b/sound/soc/mediatek/mt8188/mt8188-mt6359.c +@@ -734,6 +734,7 @@ static int mt8188_headset_codec_init(struct snd_soc_pcm_runtime *rtd) + struct mtk_soc_card_data *soc_card_data = snd_soc_card_get_drvdata(rtd->card); + struct snd_soc_jack *jack = &soc_card_data->card_data->jacks[MT8188_JACK_HEADSET]; + struct snd_soc_component *component = snd_soc_rtd_to_codec(rtd, 0)->component; ++ struct mtk_platform_card_data *card_data = soc_card_data->card_data; + int ret; + + ret = snd_soc_dapm_new_controls(&card->dapm, mt8188_nau8825_widgets, +@@ -762,10 +763,18 @@ static int mt8188_headset_codec_init(struct snd_soc_pcm_runtime *rtd) + return ret; + } + +- snd_jack_set_key(jack->jack, SND_JACK_BTN_0, KEY_PLAYPAUSE); +- snd_jack_set_key(jack->jack, SND_JACK_BTN_1, KEY_VOICECOMMAND); +- snd_jack_set_key(jack->jack, SND_JACK_BTN_2, KEY_VOLUMEUP); +- snd_jack_set_key(jack->jack, SND_JACK_BTN_3, KEY_VOLUMEDOWN); ++ if (card_data->flags & ES8326_HS_PRESENT) { ++ snd_jack_set_key(jack->jack, SND_JACK_BTN_0, KEY_PLAYPAUSE); ++ snd_jack_set_key(jack->jack, SND_JACK_BTN_1, KEY_VOLUMEUP); ++ snd_jack_set_key(jack->jack, SND_JACK_BTN_2, KEY_VOLUMEDOWN); ++ snd_jack_set_key(jack->jack, SND_JACK_BTN_3, KEY_VOICECOMMAND); ++ } else { ++ snd_jack_set_key(jack->jack, SND_JACK_BTN_0, KEY_PLAYPAUSE); ++ snd_jack_set_key(jack->jack, SND_JACK_BTN_1, KEY_VOICECOMMAND); ++ snd_jack_set_key(jack->jack, SND_JACK_BTN_2, KEY_VOLUMEUP); ++ snd_jack_set_key(jack->jack, SND_JACK_BTN_3, KEY_VOLUMEDOWN); ++ } ++ + ret = snd_soc_component_set_jack(component, jack, NULL); + + if (ret) { +-- +2.43.0 + diff --git a/queue-6.10/asoc-mediatek-mt8188-mt6359-modify-key.patch-23689 b/queue-6.10/asoc-mediatek-mt8188-mt6359-modify-key.patch-23689 new file mode 100644 index 00000000000..b85b2bf7c30 --- /dev/null +++ b/queue-6.10/asoc-mediatek-mt8188-mt6359-modify-key.patch-23689 @@ -0,0 +1,59 @@ +From f50daf4a265e5683e6781a7678414378c8e1ef6e Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 16 Aug 2024 19:49:21 +0800 +Subject: ASoC: mediatek: mt8188-mt6359: Modify key + +From: Zhang Yi + +[ Upstream commit 5325b96769a5b282e330023e1d0881018e89e266 ] + +In order to get the correct keys when using the ES8326.We will associate +SND_JACK_BTN_1 to KEY_VOLUMEUP and SND_JACK_BTN_2 to KEY_VOLUMEDOWN +when the ES8326 flag is recognized. + +Signed-off-by: Zhang Yi +Link: https://patch.msgid.link/20240816114921.48913-1-zhangyi@everest-semi.com +Signed-off-by: Mark Brown +Signed-off-by: Sasha Levin +--- + sound/soc/mediatek/mt8188/mt8188-mt6359.c | 17 +++++++++++++---- + 1 file changed, 13 insertions(+), 4 deletions(-) + +diff --git a/sound/soc/mediatek/mt8188/mt8188-mt6359.c b/sound/soc/mediatek/mt8188/mt8188-mt6359.c +index eba6f4c445ffb..08ae962afeb92 100644 +--- a/sound/soc/mediatek/mt8188/mt8188-mt6359.c ++++ b/sound/soc/mediatek/mt8188/mt8188-mt6359.c +@@ -734,6 +734,7 @@ static int mt8188_headset_codec_init(struct snd_soc_pcm_runtime *rtd) + struct mtk_soc_card_data *soc_card_data = snd_soc_card_get_drvdata(rtd->card); + struct snd_soc_jack *jack = &soc_card_data->card_data->jacks[MT8188_JACK_HEADSET]; + struct snd_soc_component *component = snd_soc_rtd_to_codec(rtd, 0)->component; ++ struct mtk_platform_card_data *card_data = soc_card_data->card_data; + int ret; + + ret = snd_soc_dapm_new_controls(&card->dapm, mt8188_nau8825_widgets, +@@ -762,10 +763,18 @@ static int mt8188_headset_codec_init(struct snd_soc_pcm_runtime *rtd) + return ret; + } + +- snd_jack_set_key(jack->jack, SND_JACK_BTN_0, KEY_PLAYPAUSE); +- snd_jack_set_key(jack->jack, SND_JACK_BTN_1, KEY_VOICECOMMAND); +- snd_jack_set_key(jack->jack, SND_JACK_BTN_2, KEY_VOLUMEUP); +- snd_jack_set_key(jack->jack, SND_JACK_BTN_3, KEY_VOLUMEDOWN); ++ if (card_data->flags & ES8326_HS_PRESENT) { ++ snd_jack_set_key(jack->jack, SND_JACK_BTN_0, KEY_PLAYPAUSE); ++ snd_jack_set_key(jack->jack, SND_JACK_BTN_1, KEY_VOLUMEUP); ++ snd_jack_set_key(jack->jack, SND_JACK_BTN_2, KEY_VOLUMEDOWN); ++ snd_jack_set_key(jack->jack, SND_JACK_BTN_3, KEY_VOICECOMMAND); ++ } else { ++ snd_jack_set_key(jack->jack, SND_JACK_BTN_0, KEY_PLAYPAUSE); ++ snd_jack_set_key(jack->jack, SND_JACK_BTN_1, KEY_VOICECOMMAND); ++ snd_jack_set_key(jack->jack, SND_JACK_BTN_2, KEY_VOLUMEUP); ++ snd_jack_set_key(jack->jack, SND_JACK_BTN_3, KEY_VOLUMEDOWN); ++ } ++ + ret = snd_soc_component_set_jack(component, jack, NULL); + + if (ret) { +-- +2.43.0 + diff --git a/queue-6.10/asoc-sof-mediatek-add-missing-board-compatible.patch b/queue-6.10/asoc-sof-mediatek-add-missing-board-compatible.patch new file mode 100644 index 00000000000..ac9906de641 --- /dev/null +++ b/queue-6.10/asoc-sof-mediatek-add-missing-board-compatible.patch @@ -0,0 +1,40 @@ +From d4781e01cea4eb0e11c212f934c0a4d2f7788c0b Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 9 Aug 2024 13:56:27 +0000 +Subject: ASoC: SOF: mediatek: Add missing board compatible +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Albert Jakieła + +[ Upstream commit c0196faaa927321a63e680427e075734ee656e42 ] + +Add Google Dojo compatible. + +Signed-off-by: Albert Jakieła +Reviewed-by: Chen-Yu Tsai +Link: https://patch.msgid.link/20240809135627.544429-1-jakiela@google.com +Signed-off-by: Mark Brown +Signed-off-by: Sasha Levin +--- + sound/soc/sof/mediatek/mt8195/mt8195.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/sound/soc/sof/mediatek/mt8195/mt8195.c b/sound/soc/sof/mediatek/mt8195/mt8195.c +index 8d3fc167cd810..b9d4508bbb85d 100644 +--- a/sound/soc/sof/mediatek/mt8195/mt8195.c ++++ b/sound/soc/sof/mediatek/mt8195/mt8195.c +@@ -574,6 +574,9 @@ static struct snd_sof_of_mach sof_mt8195_machs[] = { + { + .compatible = "google,tomato", + .sof_tplg_filename = "sof-mt8195-mt6359-rt1019-rt5682.tplg" ++ }, { ++ .compatible = "google,dojo", ++ .sof_tplg_filename = "sof-mt8195-mt6359-max98390-rt5682.tplg" + }, { + .compatible = "mediatek,mt8195", + .sof_tplg_filename = "sof-mt8195.tplg" +-- +2.43.0 + diff --git a/queue-6.10/asoc-sof-mediatek-add-missing-board-compatible.patch-22157 b/queue-6.10/asoc-sof-mediatek-add-missing-board-compatible.patch-22157 new file mode 100644 index 00000000000..ac9906de641 --- /dev/null +++ b/queue-6.10/asoc-sof-mediatek-add-missing-board-compatible.patch-22157 @@ -0,0 +1,40 @@ +From d4781e01cea4eb0e11c212f934c0a4d2f7788c0b Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 9 Aug 2024 13:56:27 +0000 +Subject: ASoC: SOF: mediatek: Add missing board compatible +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Albert Jakieła + +[ Upstream commit c0196faaa927321a63e680427e075734ee656e42 ] + +Add Google Dojo compatible. + +Signed-off-by: Albert Jakieła +Reviewed-by: Chen-Yu Tsai +Link: https://patch.msgid.link/20240809135627.544429-1-jakiela@google.com +Signed-off-by: Mark Brown +Signed-off-by: Sasha Levin +--- + sound/soc/sof/mediatek/mt8195/mt8195.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/sound/soc/sof/mediatek/mt8195/mt8195.c b/sound/soc/sof/mediatek/mt8195/mt8195.c +index 8d3fc167cd810..b9d4508bbb85d 100644 +--- a/sound/soc/sof/mediatek/mt8195/mt8195.c ++++ b/sound/soc/sof/mediatek/mt8195/mt8195.c +@@ -574,6 +574,9 @@ static struct snd_sof_of_mach sof_mt8195_machs[] = { + { + .compatible = "google,tomato", + .sof_tplg_filename = "sof-mt8195-mt6359-rt1019-rt5682.tplg" ++ }, { ++ .compatible = "google,dojo", ++ .sof_tplg_filename = "sof-mt8195-mt6359-max98390-rt5682.tplg" + }, { + .compatible = "mediatek,mt8195", + .sof_tplg_filename = "sof-mt8195.tplg" +-- +2.43.0 + diff --git a/queue-6.10/asoc-tda7419-fix-module-autoloading.patch b/queue-6.10/asoc-tda7419-fix-module-autoloading.patch new file mode 100644 index 00000000000..5421b559ed5 --- /dev/null +++ b/queue-6.10/asoc-tda7419-fix-module-autoloading.patch @@ -0,0 +1,35 @@ +From 80072dd8af6e75fb831cec4eb3e8d871db6a6731 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 26 Aug 2024 08:49:23 +0000 +Subject: ASoC: tda7419: fix module autoloading + +From: Liao Chen + +[ Upstream commit 934b44589da9aa300201a00fe139c5c54f421563 ] + +Add MODULE_DEVICE_TABLE(), so modules could be properly autoloaded +based on the alias from of_device_id table. + +Signed-off-by: Liao Chen +Link: https://patch.msgid.link/20240826084924.368387-4-liaochen4@huawei.com +Signed-off-by: Mark Brown +Signed-off-by: Sasha Levin +--- + sound/soc/codecs/tda7419.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/sound/soc/codecs/tda7419.c b/sound/soc/codecs/tda7419.c +index 386b99c8023bd..7d6fcba9986ea 100644 +--- a/sound/soc/codecs/tda7419.c ++++ b/sound/soc/codecs/tda7419.c +@@ -623,6 +623,7 @@ static const struct of_device_id tda7419_of_match[] = { + { .compatible = "st,tda7419" }, + { }, + }; ++MODULE_DEVICE_TABLE(of, tda7419_of_match); + + static struct i2c_driver tda7419_driver = { + .driver = { +-- +2.43.0 + diff --git a/queue-6.10/asoc-tda7419-fix-module-autoloading.patch-30653 b/queue-6.10/asoc-tda7419-fix-module-autoloading.patch-30653 new file mode 100644 index 00000000000..5421b559ed5 --- /dev/null +++ b/queue-6.10/asoc-tda7419-fix-module-autoloading.patch-30653 @@ -0,0 +1,35 @@ +From 80072dd8af6e75fb831cec4eb3e8d871db6a6731 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 26 Aug 2024 08:49:23 +0000 +Subject: ASoC: tda7419: fix module autoloading + +From: Liao Chen + +[ Upstream commit 934b44589da9aa300201a00fe139c5c54f421563 ] + +Add MODULE_DEVICE_TABLE(), so modules could be properly autoloaded +based on the alias from of_device_id table. + +Signed-off-by: Liao Chen +Link: https://patch.msgid.link/20240826084924.368387-4-liaochen4@huawei.com +Signed-off-by: Mark Brown +Signed-off-by: Sasha Levin +--- + sound/soc/codecs/tda7419.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/sound/soc/codecs/tda7419.c b/sound/soc/codecs/tda7419.c +index 386b99c8023bd..7d6fcba9986ea 100644 +--- a/sound/soc/codecs/tda7419.c ++++ b/sound/soc/codecs/tda7419.c +@@ -623,6 +623,7 @@ static const struct of_device_id tda7419_of_match[] = { + { .compatible = "st,tda7419" }, + { }, + }; ++MODULE_DEVICE_TABLE(of, tda7419_of_match); + + static struct i2c_driver tda7419_driver = { + .driver = { +-- +2.43.0 + diff --git a/queue-6.10/can-m_can-limit-coalescing-to-peripheral-instances.patch b/queue-6.10/can-m_can-limit-coalescing-to-peripheral-instances.patch new file mode 100644 index 00000000000..bb903deddcf --- /dev/null +++ b/queue-6.10/can-m_can-limit-coalescing-to-peripheral-instances.patch @@ -0,0 +1,72 @@ +From 1a7c96d62b20e82847ae45144d1d3162c1b7c1c6 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 5 Aug 2024 20:30:47 +0200 +Subject: can: m_can: Limit coalescing to peripheral instances + +From: Markus Schneider-Pargmann + +[ Upstream commit e443d15b949952ee039b731d5c35bcbafa300024 ] + +The use of coalescing for non-peripheral chips in the current +implementation is limited to non-existing. Disable the possibility to +set coalescing through ethtool. + +Signed-off-by: Markus Schneider-Pargmann +Link: https://lore.kernel.org/all/20240805183047.305630-8-msp@baylibre.com +Signed-off-by: Marc Kleine-Budde +Signed-off-by: Sasha Levin +--- + drivers/net/can/m_can/m_can.c | 16 +++++++++------- + 1 file changed, 9 insertions(+), 7 deletions(-) + +diff --git a/drivers/net/can/m_can/m_can.c b/drivers/net/can/m_can/m_can.c +index e4f0a382c2165..ddde067f593fc 100644 +--- a/drivers/net/can/m_can/m_can.c ++++ b/drivers/net/can/m_can/m_can.c +@@ -2141,7 +2141,7 @@ static int m_can_set_coalesce(struct net_device *dev, + return 0; + } + +-static const struct ethtool_ops m_can_ethtool_ops = { ++static const struct ethtool_ops m_can_ethtool_ops_coalescing = { + .supported_coalesce_params = ETHTOOL_COALESCE_RX_USECS_IRQ | + ETHTOOL_COALESCE_RX_MAX_FRAMES_IRQ | + ETHTOOL_COALESCE_TX_USECS_IRQ | +@@ -2152,18 +2152,20 @@ static const struct ethtool_ops m_can_ethtool_ops = { + .set_coalesce = m_can_set_coalesce, + }; + +-static const struct ethtool_ops m_can_ethtool_ops_polling = { ++static const struct ethtool_ops m_can_ethtool_ops = { + .get_ts_info = ethtool_op_get_ts_info, + }; + +-static int register_m_can_dev(struct net_device *dev) ++static int register_m_can_dev(struct m_can_classdev *cdev) + { ++ struct net_device *dev = cdev->net; ++ + dev->flags |= IFF_ECHO; /* we support local echo */ + dev->netdev_ops = &m_can_netdev_ops; +- if (dev->irq) +- dev->ethtool_ops = &m_can_ethtool_ops; ++ if (dev->irq && cdev->is_peripheral) ++ dev->ethtool_ops = &m_can_ethtool_ops_coalescing; + else +- dev->ethtool_ops = &m_can_ethtool_ops_polling; ++ dev->ethtool_ops = &m_can_ethtool_ops; + + return register_candev(dev); + } +@@ -2349,7 +2351,7 @@ int m_can_class_register(struct m_can_classdev *cdev) + if (ret) + goto rx_offload_del; + +- ret = register_m_can_dev(cdev->net); ++ ret = register_m_can_dev(cdev); + if (ret) { + dev_err(cdev->dev, "registering %s failed (err=%d)\n", + cdev->net->name, ret); +-- +2.43.0 + diff --git a/queue-6.10/can-m_can-limit-coalescing-to-peripheral-instances.patch-975 b/queue-6.10/can-m_can-limit-coalescing-to-peripheral-instances.patch-975 new file mode 100644 index 00000000000..bb903deddcf --- /dev/null +++ b/queue-6.10/can-m_can-limit-coalescing-to-peripheral-instances.patch-975 @@ -0,0 +1,72 @@ +From 1a7c96d62b20e82847ae45144d1d3162c1b7c1c6 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 5 Aug 2024 20:30:47 +0200 +Subject: can: m_can: Limit coalescing to peripheral instances + +From: Markus Schneider-Pargmann + +[ Upstream commit e443d15b949952ee039b731d5c35bcbafa300024 ] + +The use of coalescing for non-peripheral chips in the current +implementation is limited to non-existing. Disable the possibility to +set coalescing through ethtool. + +Signed-off-by: Markus Schneider-Pargmann +Link: https://lore.kernel.org/all/20240805183047.305630-8-msp@baylibre.com +Signed-off-by: Marc Kleine-Budde +Signed-off-by: Sasha Levin +--- + drivers/net/can/m_can/m_can.c | 16 +++++++++------- + 1 file changed, 9 insertions(+), 7 deletions(-) + +diff --git a/drivers/net/can/m_can/m_can.c b/drivers/net/can/m_can/m_can.c +index e4f0a382c2165..ddde067f593fc 100644 +--- a/drivers/net/can/m_can/m_can.c ++++ b/drivers/net/can/m_can/m_can.c +@@ -2141,7 +2141,7 @@ static int m_can_set_coalesce(struct net_device *dev, + return 0; + } + +-static const struct ethtool_ops m_can_ethtool_ops = { ++static const struct ethtool_ops m_can_ethtool_ops_coalescing = { + .supported_coalesce_params = ETHTOOL_COALESCE_RX_USECS_IRQ | + ETHTOOL_COALESCE_RX_MAX_FRAMES_IRQ | + ETHTOOL_COALESCE_TX_USECS_IRQ | +@@ -2152,18 +2152,20 @@ static const struct ethtool_ops m_can_ethtool_ops = { + .set_coalesce = m_can_set_coalesce, + }; + +-static const struct ethtool_ops m_can_ethtool_ops_polling = { ++static const struct ethtool_ops m_can_ethtool_ops = { + .get_ts_info = ethtool_op_get_ts_info, + }; + +-static int register_m_can_dev(struct net_device *dev) ++static int register_m_can_dev(struct m_can_classdev *cdev) + { ++ struct net_device *dev = cdev->net; ++ + dev->flags |= IFF_ECHO; /* we support local echo */ + dev->netdev_ops = &m_can_netdev_ops; +- if (dev->irq) +- dev->ethtool_ops = &m_can_ethtool_ops; ++ if (dev->irq && cdev->is_peripheral) ++ dev->ethtool_ops = &m_can_ethtool_ops_coalescing; + else +- dev->ethtool_ops = &m_can_ethtool_ops_polling; ++ dev->ethtool_ops = &m_can_ethtool_ops; + + return register_candev(dev); + } +@@ -2349,7 +2351,7 @@ int m_can_class_register(struct m_can_classdev *cdev) + if (ret) + goto rx_offload_del; + +- ret = register_m_can_dev(cdev->net); ++ ret = register_m_can_dev(cdev); + if (ret) { + dev_err(cdev->dev, "registering %s failed (err=%d)\n", + cdev->net->name, ret); +-- +2.43.0 + diff --git a/queue-6.10/can-mcp251xfd-mcp251xfd_ring_init-check-tx-coalescin.patch b/queue-6.10/can-mcp251xfd-mcp251xfd_ring_init-check-tx-coalescin.patch new file mode 100644 index 00000000000..f4d7697cdd7 --- /dev/null +++ b/queue-6.10/can-mcp251xfd-mcp251xfd_ring_init-check-tx-coalescin.patch @@ -0,0 +1,63 @@ +From e2d85ed26ff4e79d375c9533401babbbbf04fda6 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 5 Jul 2024 17:24:42 +0200 +Subject: can: mcp251xfd: mcp251xfd_ring_init(): check TX-coalescing + configuration + +From: Marc Kleine-Budde + +[ Upstream commit ac2b81eb8b2d104033560daea886ee84531e3d0a ] + +When changing the interface from CAN-CC to CAN-FD mode the old +coalescing parameters are re-used. This might cause problem, as the +configured parameters are too big for CAN-FD mode. + +During testing an invalid TX coalescing configuration has been seen. +The problem should be been fixed in the previous patch, but add a +safeguard here to ensure that the number of TEF coalescing buffers (if +configured) is exactly the half of all TEF buffers. + +Link: https://lore.kernel.org/all/20240805-mcp251xfd-fix-ringconfig-v1-2-72086f0ca5ee@pengutronix.de +Signed-off-by: Marc Kleine-Budde +Signed-off-by: Sasha Levin +--- + drivers/net/can/spi/mcp251xfd/mcp251xfd-ring.c | 14 +++++++++++--- + 1 file changed, 11 insertions(+), 3 deletions(-) + +diff --git a/drivers/net/can/spi/mcp251xfd/mcp251xfd-ring.c b/drivers/net/can/spi/mcp251xfd/mcp251xfd-ring.c +index f72582d4d3e8e..83c18035b2a24 100644 +--- a/drivers/net/can/spi/mcp251xfd/mcp251xfd-ring.c ++++ b/drivers/net/can/spi/mcp251xfd/mcp251xfd-ring.c +@@ -290,7 +290,7 @@ int mcp251xfd_ring_init(struct mcp251xfd_priv *priv) + const struct mcp251xfd_rx_ring *rx_ring; + u16 base = 0, ram_used; + u8 fifo_nr = 1; +- int i; ++ int err = 0, i; + + netdev_reset_queue(priv->ndev); + +@@ -386,10 +386,18 @@ int mcp251xfd_ring_init(struct mcp251xfd_priv *priv) + netdev_err(priv->ndev, + "Error during ring configuration, using more RAM (%u bytes) than available (%u bytes).\n", + ram_used, MCP251XFD_RAM_SIZE); +- return -ENOMEM; ++ err = -ENOMEM; + } + +- return 0; ++ if (priv->tx_obj_num_coalesce_irq && ++ priv->tx_obj_num_coalesce_irq * 2 != priv->tx->obj_num) { ++ netdev_err(priv->ndev, ++ "Error during ring configuration, number of TEF coalescing buffers (%u) must be half of TEF buffers (%u).\n", ++ priv->tx_obj_num_coalesce_irq, priv->tx->obj_num); ++ err = -EINVAL; ++ } ++ ++ return err; + } + + void mcp251xfd_ring_free(struct mcp251xfd_priv *priv) +-- +2.43.0 + diff --git a/queue-6.10/can-mcp251xfd-mcp251xfd_ring_init-check-tx-coalescin.patch-11796 b/queue-6.10/can-mcp251xfd-mcp251xfd_ring_init-check-tx-coalescin.patch-11796 new file mode 100644 index 00000000000..f4d7697cdd7 --- /dev/null +++ b/queue-6.10/can-mcp251xfd-mcp251xfd_ring_init-check-tx-coalescin.patch-11796 @@ -0,0 +1,63 @@ +From e2d85ed26ff4e79d375c9533401babbbbf04fda6 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 5 Jul 2024 17:24:42 +0200 +Subject: can: mcp251xfd: mcp251xfd_ring_init(): check TX-coalescing + configuration + +From: Marc Kleine-Budde + +[ Upstream commit ac2b81eb8b2d104033560daea886ee84531e3d0a ] + +When changing the interface from CAN-CC to CAN-FD mode the old +coalescing parameters are re-used. This might cause problem, as the +configured parameters are too big for CAN-FD mode. + +During testing an invalid TX coalescing configuration has been seen. +The problem should be been fixed in the previous patch, but add a +safeguard here to ensure that the number of TEF coalescing buffers (if +configured) is exactly the half of all TEF buffers. + +Link: https://lore.kernel.org/all/20240805-mcp251xfd-fix-ringconfig-v1-2-72086f0ca5ee@pengutronix.de +Signed-off-by: Marc Kleine-Budde +Signed-off-by: Sasha Levin +--- + drivers/net/can/spi/mcp251xfd/mcp251xfd-ring.c | 14 +++++++++++--- + 1 file changed, 11 insertions(+), 3 deletions(-) + +diff --git a/drivers/net/can/spi/mcp251xfd/mcp251xfd-ring.c b/drivers/net/can/spi/mcp251xfd/mcp251xfd-ring.c +index f72582d4d3e8e..83c18035b2a24 100644 +--- a/drivers/net/can/spi/mcp251xfd/mcp251xfd-ring.c ++++ b/drivers/net/can/spi/mcp251xfd/mcp251xfd-ring.c +@@ -290,7 +290,7 @@ int mcp251xfd_ring_init(struct mcp251xfd_priv *priv) + const struct mcp251xfd_rx_ring *rx_ring; + u16 base = 0, ram_used; + u8 fifo_nr = 1; +- int i; ++ int err = 0, i; + + netdev_reset_queue(priv->ndev); + +@@ -386,10 +386,18 @@ int mcp251xfd_ring_init(struct mcp251xfd_priv *priv) + netdev_err(priv->ndev, + "Error during ring configuration, using more RAM (%u bytes) than available (%u bytes).\n", + ram_used, MCP251XFD_RAM_SIZE); +- return -ENOMEM; ++ err = -ENOMEM; + } + +- return 0; ++ if (priv->tx_obj_num_coalesce_irq && ++ priv->tx_obj_num_coalesce_irq * 2 != priv->tx->obj_num) { ++ netdev_err(priv->ndev, ++ "Error during ring configuration, number of TEF coalescing buffers (%u) must be half of TEF buffers (%u).\n", ++ priv->tx_obj_num_coalesce_irq, priv->tx->obj_num); ++ err = -EINVAL; ++ } ++ ++ return err; + } + + void mcp251xfd_ring_free(struct mcp251xfd_priv *priv) +-- +2.43.0 + diff --git a/queue-6.10/clk-qcom-gcc-sm8650-don-t-use-shared-clk_ops-for-qup.patch b/queue-6.10/clk-qcom-gcc-sm8650-don-t-use-shared-clk_ops-for-qup.patch new file mode 100644 index 00000000000..da563aa268f --- /dev/null +++ b/queue-6.10/clk-qcom-gcc-sm8650-don-t-use-shared-clk_ops-for-qup.patch @@ -0,0 +1,287 @@ +From 8989566613c3a94c15475f5e60947b7c7364b8a6 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Thu, 29 Aug 2024 10:44:30 +0200 +Subject: clk: qcom: gcc-sm8650: Don't use shared clk_ops for QUPs + +From: Neil Armstrong + +[ Upstream commit aa2eb2c4356affa2799efd95a4ee2d239ca630f8 ] + +The QUPs aren't shared in a way that requires parking the RCG at an +always on parent in case some other entity turns on the clk. The +hardware is capable of setting a new frequency itself with the DFS mode, +so parking is unnecessary. Furthermore, there aren't any GDSCs for these +devices, so there isn't a possibility of the GDSC turning on the clks +for housekeeping purposes. + +Like for the SM8550 GCC QUP clocks at [1], do not use shared clk_ops for QUPs. + +[1] https://lore.kernel.org/all/20240827231237.1014813-3-swboyd@chromium.org/ + +Signed-off-by: Neil Armstrong +Link: https://lore.kernel.org/r/20240829-topic-sm8650-upstream-fix-qup-clk-rcg-shared-v1-1-7ecdbc672187@linaro.org +Signed-off-by: Stephen Boyd +Signed-off-by: Sasha Levin +--- + drivers/clk/qcom/gcc-sm8650.c | 56 +++++++++++++++++------------------ + 1 file changed, 28 insertions(+), 28 deletions(-) + +diff --git a/drivers/clk/qcom/gcc-sm8650.c b/drivers/clk/qcom/gcc-sm8650.c +index 9d1cbdf860fb3..10834c3141d07 100644 +--- a/drivers/clk/qcom/gcc-sm8650.c ++++ b/drivers/clk/qcom/gcc-sm8650.c +@@ -713,7 +713,7 @@ static struct clk_rcg2 gcc_qupv3_i2c_s0_clk_src = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }, + }; + +@@ -728,7 +728,7 @@ static struct clk_rcg2 gcc_qupv3_i2c_s1_clk_src = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }, + }; + +@@ -743,7 +743,7 @@ static struct clk_rcg2 gcc_qupv3_i2c_s2_clk_src = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }, + }; + +@@ -758,7 +758,7 @@ static struct clk_rcg2 gcc_qupv3_i2c_s3_clk_src = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }, + }; + +@@ -773,7 +773,7 @@ static struct clk_rcg2 gcc_qupv3_i2c_s4_clk_src = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }, + }; + +@@ -788,7 +788,7 @@ static struct clk_rcg2 gcc_qupv3_i2c_s5_clk_src = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }, + }; + +@@ -803,7 +803,7 @@ static struct clk_rcg2 gcc_qupv3_i2c_s6_clk_src = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }, + }; + +@@ -818,7 +818,7 @@ static struct clk_rcg2 gcc_qupv3_i2c_s7_clk_src = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }, + }; + +@@ -833,7 +833,7 @@ static struct clk_rcg2 gcc_qupv3_i2c_s8_clk_src = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }, + }; + +@@ -848,7 +848,7 @@ static struct clk_rcg2 gcc_qupv3_i2c_s9_clk_src = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }, + }; + +@@ -863,7 +863,7 @@ static struct clk_init_data gcc_qupv3_wrap1_qspi_ref_clk_src_init = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }; + + static struct clk_rcg2 gcc_qupv3_wrap1_qspi_ref_clk_src = { +@@ -899,7 +899,7 @@ static struct clk_init_data gcc_qupv3_wrap1_s0_clk_src_init = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }; + + static struct clk_rcg2 gcc_qupv3_wrap1_s0_clk_src = { +@@ -916,7 +916,7 @@ static struct clk_init_data gcc_qupv3_wrap1_s1_clk_src_init = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }; + + static struct clk_rcg2 gcc_qupv3_wrap1_s1_clk_src = { +@@ -948,7 +948,7 @@ static struct clk_init_data gcc_qupv3_wrap1_s3_clk_src_init = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }; + + static struct clk_rcg2 gcc_qupv3_wrap1_s3_clk_src = { +@@ -980,7 +980,7 @@ static struct clk_init_data gcc_qupv3_wrap1_s4_clk_src_init = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }; + + static struct clk_rcg2 gcc_qupv3_wrap1_s4_clk_src = { +@@ -997,7 +997,7 @@ static struct clk_init_data gcc_qupv3_wrap1_s5_clk_src_init = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }; + + static struct clk_rcg2 gcc_qupv3_wrap1_s5_clk_src = { +@@ -1014,7 +1014,7 @@ static struct clk_init_data gcc_qupv3_wrap1_s6_clk_src_init = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }; + + static struct clk_rcg2 gcc_qupv3_wrap1_s6_clk_src = { +@@ -1031,7 +1031,7 @@ static struct clk_init_data gcc_qupv3_wrap1_s7_clk_src_init = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }; + + static struct clk_rcg2 gcc_qupv3_wrap1_s7_clk_src = { +@@ -1059,7 +1059,7 @@ static struct clk_rcg2 gcc_qupv3_wrap2_ibi_ctrl_0_clk_src = { + .parent_data = gcc_parent_data_2, + .num_parents = ARRAY_SIZE(gcc_parent_data_2), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }, + }; + +@@ -1068,7 +1068,7 @@ static struct clk_init_data gcc_qupv3_wrap2_s0_clk_src_init = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }; + + static struct clk_rcg2 gcc_qupv3_wrap2_s0_clk_src = { +@@ -1085,7 +1085,7 @@ static struct clk_init_data gcc_qupv3_wrap2_s1_clk_src_init = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }; + + static struct clk_rcg2 gcc_qupv3_wrap2_s1_clk_src = { +@@ -1102,7 +1102,7 @@ static struct clk_init_data gcc_qupv3_wrap2_s2_clk_src_init = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }; + + static struct clk_rcg2 gcc_qupv3_wrap2_s2_clk_src = { +@@ -1119,7 +1119,7 @@ static struct clk_init_data gcc_qupv3_wrap2_s3_clk_src_init = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }; + + static struct clk_rcg2 gcc_qupv3_wrap2_s3_clk_src = { +@@ -1136,7 +1136,7 @@ static struct clk_init_data gcc_qupv3_wrap2_s4_clk_src_init = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }; + + static struct clk_rcg2 gcc_qupv3_wrap2_s4_clk_src = { +@@ -1153,7 +1153,7 @@ static struct clk_init_data gcc_qupv3_wrap2_s5_clk_src_init = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }; + + static struct clk_rcg2 gcc_qupv3_wrap2_s5_clk_src = { +@@ -1186,7 +1186,7 @@ static struct clk_init_data gcc_qupv3_wrap2_s6_clk_src_init = { + .parent_data = gcc_parent_data_10, + .num_parents = ARRAY_SIZE(gcc_parent_data_10), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }; + + static struct clk_rcg2 gcc_qupv3_wrap2_s6_clk_src = { +@@ -1203,7 +1203,7 @@ static struct clk_init_data gcc_qupv3_wrap2_s7_clk_src_init = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }; + + static struct clk_rcg2 gcc_qupv3_wrap2_s7_clk_src = { +@@ -1226,7 +1226,7 @@ static struct clk_init_data gcc_qupv3_wrap3_qspi_ref_clk_src_init = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }; + + static struct clk_rcg2 gcc_qupv3_wrap3_qspi_ref_clk_src = { +-- +2.43.0 + diff --git a/queue-6.10/clk-qcom-gcc-sm8650-don-t-use-shared-clk_ops-for-qup.patch-24586 b/queue-6.10/clk-qcom-gcc-sm8650-don-t-use-shared-clk_ops-for-qup.patch-24586 new file mode 100644 index 00000000000..da563aa268f --- /dev/null +++ b/queue-6.10/clk-qcom-gcc-sm8650-don-t-use-shared-clk_ops-for-qup.patch-24586 @@ -0,0 +1,287 @@ +From 8989566613c3a94c15475f5e60947b7c7364b8a6 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Thu, 29 Aug 2024 10:44:30 +0200 +Subject: clk: qcom: gcc-sm8650: Don't use shared clk_ops for QUPs + +From: Neil Armstrong + +[ Upstream commit aa2eb2c4356affa2799efd95a4ee2d239ca630f8 ] + +The QUPs aren't shared in a way that requires parking the RCG at an +always on parent in case some other entity turns on the clk. The +hardware is capable of setting a new frequency itself with the DFS mode, +so parking is unnecessary. Furthermore, there aren't any GDSCs for these +devices, so there isn't a possibility of the GDSC turning on the clks +for housekeeping purposes. + +Like for the SM8550 GCC QUP clocks at [1], do not use shared clk_ops for QUPs. + +[1] https://lore.kernel.org/all/20240827231237.1014813-3-swboyd@chromium.org/ + +Signed-off-by: Neil Armstrong +Link: https://lore.kernel.org/r/20240829-topic-sm8650-upstream-fix-qup-clk-rcg-shared-v1-1-7ecdbc672187@linaro.org +Signed-off-by: Stephen Boyd +Signed-off-by: Sasha Levin +--- + drivers/clk/qcom/gcc-sm8650.c | 56 +++++++++++++++++------------------ + 1 file changed, 28 insertions(+), 28 deletions(-) + +diff --git a/drivers/clk/qcom/gcc-sm8650.c b/drivers/clk/qcom/gcc-sm8650.c +index 9d1cbdf860fb3..10834c3141d07 100644 +--- a/drivers/clk/qcom/gcc-sm8650.c ++++ b/drivers/clk/qcom/gcc-sm8650.c +@@ -713,7 +713,7 @@ static struct clk_rcg2 gcc_qupv3_i2c_s0_clk_src = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }, + }; + +@@ -728,7 +728,7 @@ static struct clk_rcg2 gcc_qupv3_i2c_s1_clk_src = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }, + }; + +@@ -743,7 +743,7 @@ static struct clk_rcg2 gcc_qupv3_i2c_s2_clk_src = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }, + }; + +@@ -758,7 +758,7 @@ static struct clk_rcg2 gcc_qupv3_i2c_s3_clk_src = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }, + }; + +@@ -773,7 +773,7 @@ static struct clk_rcg2 gcc_qupv3_i2c_s4_clk_src = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }, + }; + +@@ -788,7 +788,7 @@ static struct clk_rcg2 gcc_qupv3_i2c_s5_clk_src = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }, + }; + +@@ -803,7 +803,7 @@ static struct clk_rcg2 gcc_qupv3_i2c_s6_clk_src = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }, + }; + +@@ -818,7 +818,7 @@ static struct clk_rcg2 gcc_qupv3_i2c_s7_clk_src = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }, + }; + +@@ -833,7 +833,7 @@ static struct clk_rcg2 gcc_qupv3_i2c_s8_clk_src = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }, + }; + +@@ -848,7 +848,7 @@ static struct clk_rcg2 gcc_qupv3_i2c_s9_clk_src = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }, + }; + +@@ -863,7 +863,7 @@ static struct clk_init_data gcc_qupv3_wrap1_qspi_ref_clk_src_init = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }; + + static struct clk_rcg2 gcc_qupv3_wrap1_qspi_ref_clk_src = { +@@ -899,7 +899,7 @@ static struct clk_init_data gcc_qupv3_wrap1_s0_clk_src_init = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }; + + static struct clk_rcg2 gcc_qupv3_wrap1_s0_clk_src = { +@@ -916,7 +916,7 @@ static struct clk_init_data gcc_qupv3_wrap1_s1_clk_src_init = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }; + + static struct clk_rcg2 gcc_qupv3_wrap1_s1_clk_src = { +@@ -948,7 +948,7 @@ static struct clk_init_data gcc_qupv3_wrap1_s3_clk_src_init = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }; + + static struct clk_rcg2 gcc_qupv3_wrap1_s3_clk_src = { +@@ -980,7 +980,7 @@ static struct clk_init_data gcc_qupv3_wrap1_s4_clk_src_init = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }; + + static struct clk_rcg2 gcc_qupv3_wrap1_s4_clk_src = { +@@ -997,7 +997,7 @@ static struct clk_init_data gcc_qupv3_wrap1_s5_clk_src_init = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }; + + static struct clk_rcg2 gcc_qupv3_wrap1_s5_clk_src = { +@@ -1014,7 +1014,7 @@ static struct clk_init_data gcc_qupv3_wrap1_s6_clk_src_init = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }; + + static struct clk_rcg2 gcc_qupv3_wrap1_s6_clk_src = { +@@ -1031,7 +1031,7 @@ static struct clk_init_data gcc_qupv3_wrap1_s7_clk_src_init = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }; + + static struct clk_rcg2 gcc_qupv3_wrap1_s7_clk_src = { +@@ -1059,7 +1059,7 @@ static struct clk_rcg2 gcc_qupv3_wrap2_ibi_ctrl_0_clk_src = { + .parent_data = gcc_parent_data_2, + .num_parents = ARRAY_SIZE(gcc_parent_data_2), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }, + }; + +@@ -1068,7 +1068,7 @@ static struct clk_init_data gcc_qupv3_wrap2_s0_clk_src_init = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }; + + static struct clk_rcg2 gcc_qupv3_wrap2_s0_clk_src = { +@@ -1085,7 +1085,7 @@ static struct clk_init_data gcc_qupv3_wrap2_s1_clk_src_init = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }; + + static struct clk_rcg2 gcc_qupv3_wrap2_s1_clk_src = { +@@ -1102,7 +1102,7 @@ static struct clk_init_data gcc_qupv3_wrap2_s2_clk_src_init = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }; + + static struct clk_rcg2 gcc_qupv3_wrap2_s2_clk_src = { +@@ -1119,7 +1119,7 @@ static struct clk_init_data gcc_qupv3_wrap2_s3_clk_src_init = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }; + + static struct clk_rcg2 gcc_qupv3_wrap2_s3_clk_src = { +@@ -1136,7 +1136,7 @@ static struct clk_init_data gcc_qupv3_wrap2_s4_clk_src_init = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }; + + static struct clk_rcg2 gcc_qupv3_wrap2_s4_clk_src = { +@@ -1153,7 +1153,7 @@ static struct clk_init_data gcc_qupv3_wrap2_s5_clk_src_init = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }; + + static struct clk_rcg2 gcc_qupv3_wrap2_s5_clk_src = { +@@ -1186,7 +1186,7 @@ static struct clk_init_data gcc_qupv3_wrap2_s6_clk_src_init = { + .parent_data = gcc_parent_data_10, + .num_parents = ARRAY_SIZE(gcc_parent_data_10), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }; + + static struct clk_rcg2 gcc_qupv3_wrap2_s6_clk_src = { +@@ -1203,7 +1203,7 @@ static struct clk_init_data gcc_qupv3_wrap2_s7_clk_src_init = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }; + + static struct clk_rcg2 gcc_qupv3_wrap2_s7_clk_src = { +@@ -1226,7 +1226,7 @@ static struct clk_init_data gcc_qupv3_wrap3_qspi_ref_clk_src_init = { + .parent_data = gcc_parent_data_0, + .num_parents = ARRAY_SIZE(gcc_parent_data_0), + .flags = CLK_SET_RATE_PARENT, +- .ops = &clk_rcg2_shared_ops, ++ .ops = &clk_rcg2_ops, + }; + + static struct clk_rcg2 gcc_qupv3_wrap3_qspi_ref_clk_src = { +-- +2.43.0 + diff --git a/queue-6.10/drm-amd-pm-fix-the-pp_dpm_pcie-issue-on-smu-v14.0.2-.patch b/queue-6.10/drm-amd-pm-fix-the-pp_dpm_pcie-issue-on-smu-v14.0.2-.patch new file mode 100644 index 00000000000..3dfce59b83a --- /dev/null +++ b/queue-6.10/drm-amd-pm-fix-the-pp_dpm_pcie-issue-on-smu-v14.0.2-.patch @@ -0,0 +1,42 @@ +From 7febeea2d3553427b7cd392bbde85bdbec717c61 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 6 Sep 2024 20:46:54 +0800 +Subject: drm/amd/pm: fix the pp_dpm_pcie issue on smu v14.0.2/3 + +From: Kenneth Feng + +[ Upstream commit 7a0982523cf3ff00f35b210fc3405c528a2ce7af ] + +fix the pp_dpm_pcie issue on smu v14.0.2/3 as below: +0: 2.5GT/s, x4 250Mhz +1: 8.0GT/s, x4 616Mhz * +2: 8.0GT/s, x4 1143Mhz * +the middle level can be removed since it is always skipped on +smu v14.0.2/3 + +Signed-off-by: Kenneth Feng +Acked-by: Alex Deucher +Signed-off-by: Alex Deucher +(cherry picked from commit fedf6db3ea9dc5eda0b78cfbbb8f7a88b97e5b24) +Signed-off-by: Sasha Levin +--- + drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_2_ppt.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_2_ppt.c b/drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_2_ppt.c +index 06b65159f7b4a..33c7740dd50a7 100644 +--- a/drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_2_ppt.c ++++ b/drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_2_ppt.c +@@ -672,6 +672,9 @@ static int smu_v14_0_2_set_default_dpm_table(struct smu_context *smu) + pcie_table->clk_freq[pcie_table->num_of_link_levels] = + skutable->LclkFreq[link_level]; + pcie_table->num_of_link_levels++; ++ ++ if (link_level == 0) ++ link_level++; + } + + return 0; +-- +2.43.0 + diff --git a/queue-6.10/drm-amd-pm-fix-the-pp_dpm_pcie-issue-on-smu-v14.0.2-.patch-15721 b/queue-6.10/drm-amd-pm-fix-the-pp_dpm_pcie-issue-on-smu-v14.0.2-.patch-15721 new file mode 100644 index 00000000000..3dfce59b83a --- /dev/null +++ b/queue-6.10/drm-amd-pm-fix-the-pp_dpm_pcie-issue-on-smu-v14.0.2-.patch-15721 @@ -0,0 +1,42 @@ +From 7febeea2d3553427b7cd392bbde85bdbec717c61 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 6 Sep 2024 20:46:54 +0800 +Subject: drm/amd/pm: fix the pp_dpm_pcie issue on smu v14.0.2/3 + +From: Kenneth Feng + +[ Upstream commit 7a0982523cf3ff00f35b210fc3405c528a2ce7af ] + +fix the pp_dpm_pcie issue on smu v14.0.2/3 as below: +0: 2.5GT/s, x4 250Mhz +1: 8.0GT/s, x4 616Mhz * +2: 8.0GT/s, x4 1143Mhz * +the middle level can be removed since it is always skipped on +smu v14.0.2/3 + +Signed-off-by: Kenneth Feng +Acked-by: Alex Deucher +Signed-off-by: Alex Deucher +(cherry picked from commit fedf6db3ea9dc5eda0b78cfbbb8f7a88b97e5b24) +Signed-off-by: Sasha Levin +--- + drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_2_ppt.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_2_ppt.c b/drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_2_ppt.c +index 06b65159f7b4a..33c7740dd50a7 100644 +--- a/drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_2_ppt.c ++++ b/drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_2_ppt.c +@@ -672,6 +672,9 @@ static int smu_v14_0_2_set_default_dpm_table(struct smu_context *smu) + pcie_table->clk_freq[pcie_table->num_of_link_levels] = + skutable->LclkFreq[link_level]; + pcie_table->num_of_link_levels++; ++ ++ if (link_level == 0) ++ link_level++; + } + + return 0; +-- +2.43.0 + diff --git a/queue-6.10/drm-komeda-fix-an-issue-related-to-normalized-zpos.patch b/queue-6.10/drm-komeda-fix-an-issue-related-to-normalized-zpos.patch new file mode 100644 index 00000000000..4043431cdac --- /dev/null +++ b/queue-6.10/drm-komeda-fix-an-issue-related-to-normalized-zpos.patch @@ -0,0 +1,79 @@ +From e5660a9e4842b2a519df446f0a46ede9005b8e8b Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 26 Aug 2024 10:45:17 +0800 +Subject: drm: komeda: Fix an issue related to normalized zpos + +From: hongchi.peng + +[ Upstream commit 258905cb9a6414be5c9ca4aa20ef855f8dc894d4 ] + +We use komeda_crtc_normalize_zpos to normalize zpos of affected planes +to their blending zorder in CU. If there's only one slave plane in +affected planes and its layer_split property is enabled, order++ for +its split layer, so that when calculating the normalized_zpos +of master planes, the split layer of the slave plane is included, but +the max_slave_zorder does not include the split layer and keep zero +because there's only one slave plane in affacted planes, although we +actually use two slave layers in this commit. + +In most cases, this bug does not result in a commit failure, but assume +the following situation: + slave_layer 0: zpos = 0, layer split enabled, normalized_zpos = + 0;(use slave_layer 2 as its split layer) + master_layer 0: zpos = 2, layer_split enabled, normalized_zpos = + 2;(use master_layer 2 as its split layer) + master_layer 1: zpos = 4, normalized_zpos = 4; + master_layer 3: zpos = 5, normalized_zpos = 5; + kcrtc_st->max_slave_zorder = 0; +When we use master_layer 3 as a input of CU in function +komeda_compiz_set_input and check it with function +komeda_component_check_input, the parameter idx is equal to +normailzed_zpos minus max_slave_zorder, the value of idx is 5 +and is euqal to CU's max_active_inputs, so that +komeda_component_check_input returns a -EINVAL value. + +To fix the bug described above, when calculating the max_slave_zorder +with the layer_split enabled, count the split layer in this calculation +directly. + +Signed-off-by: hongchi.peng +Acked-by: Liviu Dudau +Signed-off-by: Liviu Dudau +Link: https://patchwork.freedesktop.org/patch/msgid/20240826024517.3739-1-hongchi.peng@siengine.com +Signed-off-by: Sasha Levin +--- + drivers/gpu/drm/arm/display/komeda/komeda_kms.c | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c +index fe46b0ebefea3..e5eb5d672bcd7 100644 +--- a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c ++++ b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c +@@ -160,6 +160,7 @@ static int komeda_crtc_normalize_zpos(struct drm_crtc *crtc, + struct drm_plane *plane; + struct list_head zorder_list; + int order = 0, err; ++ u32 slave_zpos = 0; + + DRM_DEBUG_ATOMIC("[CRTC:%d:%s] calculating normalized zpos values\n", + crtc->base.id, crtc->name); +@@ -199,10 +200,13 @@ static int komeda_crtc_normalize_zpos(struct drm_crtc *crtc, + plane_st->zpos, plane_st->normalized_zpos); + + /* calculate max slave zorder */ +- if (has_bit(drm_plane_index(plane), kcrtc->slave_planes)) ++ if (has_bit(drm_plane_index(plane), kcrtc->slave_planes)) { ++ slave_zpos = plane_st->normalized_zpos; ++ if (to_kplane_st(plane_st)->layer_split) ++ slave_zpos++; + kcrtc_st->max_slave_zorder = +- max(plane_st->normalized_zpos, +- kcrtc_st->max_slave_zorder); ++ max(slave_zpos, kcrtc_st->max_slave_zorder); ++ } + } + + crtc_st->zpos_changed = true; +-- +2.43.0 + diff --git a/queue-6.10/drm-komeda-fix-an-issue-related-to-normalized-zpos.patch-21818 b/queue-6.10/drm-komeda-fix-an-issue-related-to-normalized-zpos.patch-21818 new file mode 100644 index 00000000000..4043431cdac --- /dev/null +++ b/queue-6.10/drm-komeda-fix-an-issue-related-to-normalized-zpos.patch-21818 @@ -0,0 +1,79 @@ +From e5660a9e4842b2a519df446f0a46ede9005b8e8b Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 26 Aug 2024 10:45:17 +0800 +Subject: drm: komeda: Fix an issue related to normalized zpos + +From: hongchi.peng + +[ Upstream commit 258905cb9a6414be5c9ca4aa20ef855f8dc894d4 ] + +We use komeda_crtc_normalize_zpos to normalize zpos of affected planes +to their blending zorder in CU. If there's only one slave plane in +affected planes and its layer_split property is enabled, order++ for +its split layer, so that when calculating the normalized_zpos +of master planes, the split layer of the slave plane is included, but +the max_slave_zorder does not include the split layer and keep zero +because there's only one slave plane in affacted planes, although we +actually use two slave layers in this commit. + +In most cases, this bug does not result in a commit failure, but assume +the following situation: + slave_layer 0: zpos = 0, layer split enabled, normalized_zpos = + 0;(use slave_layer 2 as its split layer) + master_layer 0: zpos = 2, layer_split enabled, normalized_zpos = + 2;(use master_layer 2 as its split layer) + master_layer 1: zpos = 4, normalized_zpos = 4; + master_layer 3: zpos = 5, normalized_zpos = 5; + kcrtc_st->max_slave_zorder = 0; +When we use master_layer 3 as a input of CU in function +komeda_compiz_set_input and check it with function +komeda_component_check_input, the parameter idx is equal to +normailzed_zpos minus max_slave_zorder, the value of idx is 5 +and is euqal to CU's max_active_inputs, so that +komeda_component_check_input returns a -EINVAL value. + +To fix the bug described above, when calculating the max_slave_zorder +with the layer_split enabled, count the split layer in this calculation +directly. + +Signed-off-by: hongchi.peng +Acked-by: Liviu Dudau +Signed-off-by: Liviu Dudau +Link: https://patchwork.freedesktop.org/patch/msgid/20240826024517.3739-1-hongchi.peng@siengine.com +Signed-off-by: Sasha Levin +--- + drivers/gpu/drm/arm/display/komeda/komeda_kms.c | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c +index fe46b0ebefea3..e5eb5d672bcd7 100644 +--- a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c ++++ b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c +@@ -160,6 +160,7 @@ static int komeda_crtc_normalize_zpos(struct drm_crtc *crtc, + struct drm_plane *plane; + struct list_head zorder_list; + int order = 0, err; ++ u32 slave_zpos = 0; + + DRM_DEBUG_ATOMIC("[CRTC:%d:%s] calculating normalized zpos values\n", + crtc->base.id, crtc->name); +@@ -199,10 +200,13 @@ static int komeda_crtc_normalize_zpos(struct drm_crtc *crtc, + plane_st->zpos, plane_st->normalized_zpos); + + /* calculate max slave zorder */ +- if (has_bit(drm_plane_index(plane), kcrtc->slave_planes)) ++ if (has_bit(drm_plane_index(plane), kcrtc->slave_planes)) { ++ slave_zpos = plane_st->normalized_zpos; ++ if (to_kplane_st(plane_st)->layer_split) ++ slave_zpos++; + kcrtc_st->max_slave_zorder = +- max(plane_st->normalized_zpos, +- kcrtc_st->max_slave_zorder); ++ max(slave_zpos, kcrtc_st->max_slave_zorder); ++ } + } + + crtc_st->zpos_changed = true; +-- +2.43.0 + diff --git a/queue-6.10/hwmon-asus-ec-sensors-remove-vrm-temp-x570-e-gaming.patch b/queue-6.10/hwmon-asus-ec-sensors-remove-vrm-temp-x570-e-gaming.patch new file mode 100644 index 00000000000..dff92565243 --- /dev/null +++ b/queue-6.10/hwmon-asus-ec-sensors-remove-vrm-temp-x570-e-gaming.patch @@ -0,0 +1,36 @@ +From c5d0c155c73c6664001816537619dbe60b367a0c Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Tue, 30 Jul 2024 08:21:42 +0200 +Subject: hwmon: (asus-ec-sensors) remove VRM temp X570-E GAMING + +From: Ross Brown + +[ Upstream commit 9efaebc0072b8e95505544bf385c20ee8a29d799 ] + +X570-E GAMING does not have VRM temperature sensor. + +Signed-off-by: Ross Brown +Signed-off-by: Eugene Shalygin +Link: https://lore.kernel.org/r/20240730062320.5188-2-eugene.shalygin@gmail.com +Signed-off-by: Guenter Roeck +Signed-off-by: Sasha Levin +--- + drivers/hwmon/asus-ec-sensors.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/hwmon/asus-ec-sensors.c b/drivers/hwmon/asus-ec-sensors.c +index 36f9e38000d5e..3b3b8beed83a5 100644 +--- a/drivers/hwmon/asus-ec-sensors.c ++++ b/drivers/hwmon/asus-ec-sensors.c +@@ -412,7 +412,7 @@ static const struct ec_board_info board_info_strix_b550_i_gaming = { + + static const struct ec_board_info board_info_strix_x570_e_gaming = { + .sensors = SENSOR_SET_TEMP_CHIPSET_CPU_MB | +- SENSOR_TEMP_T_SENSOR | SENSOR_TEMP_VRM | ++ SENSOR_TEMP_T_SENSOR | + SENSOR_FAN_CHIPSET | SENSOR_CURR_CPU | + SENSOR_IN_CPU_CORE, + .mutex_path = ASUS_HW_ACCESS_MUTEX_ASMX, +-- +2.43.0 + diff --git a/queue-6.10/hwmon-asus-ec-sensors-remove-vrm-temp-x570-e-gaming.patch-578 b/queue-6.10/hwmon-asus-ec-sensors-remove-vrm-temp-x570-e-gaming.patch-578 new file mode 100644 index 00000000000..dff92565243 --- /dev/null +++ b/queue-6.10/hwmon-asus-ec-sensors-remove-vrm-temp-x570-e-gaming.patch-578 @@ -0,0 +1,36 @@ +From c5d0c155c73c6664001816537619dbe60b367a0c Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Tue, 30 Jul 2024 08:21:42 +0200 +Subject: hwmon: (asus-ec-sensors) remove VRM temp X570-E GAMING + +From: Ross Brown + +[ Upstream commit 9efaebc0072b8e95505544bf385c20ee8a29d799 ] + +X570-E GAMING does not have VRM temperature sensor. + +Signed-off-by: Ross Brown +Signed-off-by: Eugene Shalygin +Link: https://lore.kernel.org/r/20240730062320.5188-2-eugene.shalygin@gmail.com +Signed-off-by: Guenter Roeck +Signed-off-by: Sasha Levin +--- + drivers/hwmon/asus-ec-sensors.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/hwmon/asus-ec-sensors.c b/drivers/hwmon/asus-ec-sensors.c +index 36f9e38000d5e..3b3b8beed83a5 100644 +--- a/drivers/hwmon/asus-ec-sensors.c ++++ b/drivers/hwmon/asus-ec-sensors.c +@@ -412,7 +412,7 @@ static const struct ec_board_info board_info_strix_b550_i_gaming = { + + static const struct ec_board_info board_info_strix_x570_e_gaming = { + .sensors = SENSOR_SET_TEMP_CHIPSET_CPU_MB | +- SENSOR_TEMP_T_SENSOR | SENSOR_TEMP_VRM | ++ SENSOR_TEMP_T_SENSOR | + SENSOR_FAN_CHIPSET | SENSOR_CURR_CPU | + SENSOR_IN_CPU_CORE, + .mutex_path = ASUS_HW_ACCESS_MUTEX_ASMX, +-- +2.43.0 + diff --git a/queue-6.10/ice-check-for-xdp-rings-instead-of-bpf-program-when-.patch b/queue-6.10/ice-check-for-xdp-rings-instead-of-bpf-program-when-.patch new file mode 100644 index 00000000000..80c3e17fd46 --- /dev/null +++ b/queue-6.10/ice-check-for-xdp-rings-instead-of-bpf-program-when-.patch @@ -0,0 +1,110 @@ +From 82bd83f1e3868ae670f2143f4c58284b1b9d7d92 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 23 Aug 2024 11:59:28 +0200 +Subject: ice: check for XDP rings instead of bpf program when unconfiguring + +From: Larysa Zaremba + +[ Upstream commit f50c68763436bc8f805712a7c5ceaf58cfcf5f07 ] + +If VSI rebuild is pending, .ndo_bpf() can attach/detach the XDP program on +VSI without applying new ring configuration. When unconfiguring the VSI, we +can encounter the state in which there is an XDP program but no XDP rings +to destroy or there will be XDP rings that need to be destroyed, but no XDP +program to indicate their presence. + +When unconfiguring, rely on the presence of XDP rings rather then XDP +program, as they better represent the current state that has to be +destroyed. + +Reviewed-by: Wojciech Drewek +Reviewed-by: Jacob Keller +Tested-by: Chandan Kumar Rout +Acked-by: Maciej Fijalkowski +Signed-off-by: Larysa Zaremba +Signed-off-by: Tony Nguyen +Signed-off-by: Sasha Levin +--- + drivers/net/ethernet/intel/ice/ice_lib.c | 4 ++-- + drivers/net/ethernet/intel/ice/ice_main.c | 4 ++-- + drivers/net/ethernet/intel/ice/ice_xsk.c | 6 +++--- + 3 files changed, 7 insertions(+), 7 deletions(-) + +diff --git a/drivers/net/ethernet/intel/ice/ice_lib.c b/drivers/net/ethernet/intel/ice/ice_lib.c +index c2ba586593475..a3ee7697edb56 100644 +--- a/drivers/net/ethernet/intel/ice/ice_lib.c ++++ b/drivers/net/ethernet/intel/ice/ice_lib.c +@@ -2419,7 +2419,7 @@ void ice_vsi_decfg(struct ice_vsi *vsi) + dev_err(ice_pf_to_dev(pf), "Failed to remove RDMA scheduler config for VSI %u, err %d\n", + vsi->vsi_num, err); + +- if (ice_is_xdp_ena_vsi(vsi)) ++ if (vsi->xdp_rings) + /* return value check can be skipped here, it always returns + * 0 if reset is in progress + */ +@@ -2521,7 +2521,7 @@ static void ice_vsi_release_msix(struct ice_vsi *vsi) + for (q = 0; q < q_vector->num_ring_tx; q++) { + ice_write_itr(&q_vector->tx, 0); + wr32(hw, QINT_TQCTL(vsi->txq_map[txq]), 0); +- if (ice_is_xdp_ena_vsi(vsi)) { ++ if (vsi->xdp_rings) { + u32 xdp_txq = txq + vsi->num_xdp_txq; + + wr32(hw, QINT_TQCTL(vsi->txq_map[xdp_txq]), 0); +diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c +index 766f9a466bc35..c82715eb5b93c 100644 +--- a/drivers/net/ethernet/intel/ice/ice_main.c ++++ b/drivers/net/ethernet/intel/ice/ice_main.c +@@ -7253,7 +7253,7 @@ int ice_down(struct ice_vsi *vsi) + if (tx_err) + netdev_err(vsi->netdev, "Failed stop Tx rings, VSI %d error %d\n", + vsi->vsi_num, tx_err); +- if (!tx_err && ice_is_xdp_ena_vsi(vsi)) { ++ if (!tx_err && vsi->xdp_rings) { + tx_err = ice_vsi_stop_xdp_tx_rings(vsi); + if (tx_err) + netdev_err(vsi->netdev, "Failed stop XDP rings, VSI %d error %d\n", +@@ -7270,7 +7270,7 @@ int ice_down(struct ice_vsi *vsi) + ice_for_each_txq(vsi, i) + ice_clean_tx_ring(vsi->tx_rings[i]); + +- if (ice_is_xdp_ena_vsi(vsi)) ++ if (vsi->xdp_rings) + ice_for_each_xdp_txq(vsi, i) + ice_clean_tx_ring(vsi->xdp_rings[i]); + +diff --git a/drivers/net/ethernet/intel/ice/ice_xsk.c b/drivers/net/ethernet/intel/ice/ice_xsk.c +index 87a5427570d76..5dee829bfc47c 100644 +--- a/drivers/net/ethernet/intel/ice/ice_xsk.c ++++ b/drivers/net/ethernet/intel/ice/ice_xsk.c +@@ -39,7 +39,7 @@ static void ice_qp_reset_stats(struct ice_vsi *vsi, u16 q_idx) + sizeof(vsi_stat->rx_ring_stats[q_idx]->rx_stats)); + memset(&vsi_stat->tx_ring_stats[q_idx]->stats, 0, + sizeof(vsi_stat->tx_ring_stats[q_idx]->stats)); +- if (ice_is_xdp_ena_vsi(vsi)) ++ if (vsi->xdp_rings) + memset(&vsi->xdp_rings[q_idx]->ring_stats->stats, 0, + sizeof(vsi->xdp_rings[q_idx]->ring_stats->stats)); + } +@@ -52,7 +52,7 @@ static void ice_qp_reset_stats(struct ice_vsi *vsi, u16 q_idx) + static void ice_qp_clean_rings(struct ice_vsi *vsi, u16 q_idx) + { + ice_clean_tx_ring(vsi->tx_rings[q_idx]); +- if (ice_is_xdp_ena_vsi(vsi)) ++ if (vsi->xdp_rings) + ice_clean_tx_ring(vsi->xdp_rings[q_idx]); + ice_clean_rx_ring(vsi->rx_rings[q_idx]); + } +@@ -186,7 +186,7 @@ static int ice_qp_dis(struct ice_vsi *vsi, u16 q_idx) + err = ice_vsi_stop_tx_ring(vsi, ICE_NO_RESET, 0, tx_ring, &txq_meta); + if (!fail) + fail = err; +- if (ice_is_xdp_ena_vsi(vsi)) { ++ if (vsi->xdp_rings) { + struct ice_tx_ring *xdp_ring = vsi->xdp_rings[q_idx]; + + memset(&txq_meta, 0, sizeof(txq_meta)); +-- +2.43.0 + diff --git a/queue-6.10/ice-check-for-xdp-rings-instead-of-bpf-program-when-.patch-24037 b/queue-6.10/ice-check-for-xdp-rings-instead-of-bpf-program-when-.patch-24037 new file mode 100644 index 00000000000..80c3e17fd46 --- /dev/null +++ b/queue-6.10/ice-check-for-xdp-rings-instead-of-bpf-program-when-.patch-24037 @@ -0,0 +1,110 @@ +From 82bd83f1e3868ae670f2143f4c58284b1b9d7d92 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 23 Aug 2024 11:59:28 +0200 +Subject: ice: check for XDP rings instead of bpf program when unconfiguring + +From: Larysa Zaremba + +[ Upstream commit f50c68763436bc8f805712a7c5ceaf58cfcf5f07 ] + +If VSI rebuild is pending, .ndo_bpf() can attach/detach the XDP program on +VSI without applying new ring configuration. When unconfiguring the VSI, we +can encounter the state in which there is an XDP program but no XDP rings +to destroy or there will be XDP rings that need to be destroyed, but no XDP +program to indicate their presence. + +When unconfiguring, rely on the presence of XDP rings rather then XDP +program, as they better represent the current state that has to be +destroyed. + +Reviewed-by: Wojciech Drewek +Reviewed-by: Jacob Keller +Tested-by: Chandan Kumar Rout +Acked-by: Maciej Fijalkowski +Signed-off-by: Larysa Zaremba +Signed-off-by: Tony Nguyen +Signed-off-by: Sasha Levin +--- + drivers/net/ethernet/intel/ice/ice_lib.c | 4 ++-- + drivers/net/ethernet/intel/ice/ice_main.c | 4 ++-- + drivers/net/ethernet/intel/ice/ice_xsk.c | 6 +++--- + 3 files changed, 7 insertions(+), 7 deletions(-) + +diff --git a/drivers/net/ethernet/intel/ice/ice_lib.c b/drivers/net/ethernet/intel/ice/ice_lib.c +index c2ba586593475..a3ee7697edb56 100644 +--- a/drivers/net/ethernet/intel/ice/ice_lib.c ++++ b/drivers/net/ethernet/intel/ice/ice_lib.c +@@ -2419,7 +2419,7 @@ void ice_vsi_decfg(struct ice_vsi *vsi) + dev_err(ice_pf_to_dev(pf), "Failed to remove RDMA scheduler config for VSI %u, err %d\n", + vsi->vsi_num, err); + +- if (ice_is_xdp_ena_vsi(vsi)) ++ if (vsi->xdp_rings) + /* return value check can be skipped here, it always returns + * 0 if reset is in progress + */ +@@ -2521,7 +2521,7 @@ static void ice_vsi_release_msix(struct ice_vsi *vsi) + for (q = 0; q < q_vector->num_ring_tx; q++) { + ice_write_itr(&q_vector->tx, 0); + wr32(hw, QINT_TQCTL(vsi->txq_map[txq]), 0); +- if (ice_is_xdp_ena_vsi(vsi)) { ++ if (vsi->xdp_rings) { + u32 xdp_txq = txq + vsi->num_xdp_txq; + + wr32(hw, QINT_TQCTL(vsi->txq_map[xdp_txq]), 0); +diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c +index 766f9a466bc35..c82715eb5b93c 100644 +--- a/drivers/net/ethernet/intel/ice/ice_main.c ++++ b/drivers/net/ethernet/intel/ice/ice_main.c +@@ -7253,7 +7253,7 @@ int ice_down(struct ice_vsi *vsi) + if (tx_err) + netdev_err(vsi->netdev, "Failed stop Tx rings, VSI %d error %d\n", + vsi->vsi_num, tx_err); +- if (!tx_err && ice_is_xdp_ena_vsi(vsi)) { ++ if (!tx_err && vsi->xdp_rings) { + tx_err = ice_vsi_stop_xdp_tx_rings(vsi); + if (tx_err) + netdev_err(vsi->netdev, "Failed stop XDP rings, VSI %d error %d\n", +@@ -7270,7 +7270,7 @@ int ice_down(struct ice_vsi *vsi) + ice_for_each_txq(vsi, i) + ice_clean_tx_ring(vsi->tx_rings[i]); + +- if (ice_is_xdp_ena_vsi(vsi)) ++ if (vsi->xdp_rings) + ice_for_each_xdp_txq(vsi, i) + ice_clean_tx_ring(vsi->xdp_rings[i]); + +diff --git a/drivers/net/ethernet/intel/ice/ice_xsk.c b/drivers/net/ethernet/intel/ice/ice_xsk.c +index 87a5427570d76..5dee829bfc47c 100644 +--- a/drivers/net/ethernet/intel/ice/ice_xsk.c ++++ b/drivers/net/ethernet/intel/ice/ice_xsk.c +@@ -39,7 +39,7 @@ static void ice_qp_reset_stats(struct ice_vsi *vsi, u16 q_idx) + sizeof(vsi_stat->rx_ring_stats[q_idx]->rx_stats)); + memset(&vsi_stat->tx_ring_stats[q_idx]->stats, 0, + sizeof(vsi_stat->tx_ring_stats[q_idx]->stats)); +- if (ice_is_xdp_ena_vsi(vsi)) ++ if (vsi->xdp_rings) + memset(&vsi->xdp_rings[q_idx]->ring_stats->stats, 0, + sizeof(vsi->xdp_rings[q_idx]->ring_stats->stats)); + } +@@ -52,7 +52,7 @@ static void ice_qp_reset_stats(struct ice_vsi *vsi, u16 q_idx) + static void ice_qp_clean_rings(struct ice_vsi *vsi, u16 q_idx) + { + ice_clean_tx_ring(vsi->tx_rings[q_idx]); +- if (ice_is_xdp_ena_vsi(vsi)) ++ if (vsi->xdp_rings) + ice_clean_tx_ring(vsi->xdp_rings[q_idx]); + ice_clean_rx_ring(vsi->rx_rings[q_idx]); + } +@@ -186,7 +186,7 @@ static int ice_qp_dis(struct ice_vsi *vsi, u16 q_idx) + err = ice_vsi_stop_tx_ring(vsi, ICE_NO_RESET, 0, tx_ring, &txq_meta); + if (!fail) + fail = err; +- if (ice_is_xdp_ena_vsi(vsi)) { ++ if (vsi->xdp_rings) { + struct ice_tx_ring *xdp_ring = vsi->xdp_rings[q_idx]; + + memset(&txq_meta, 0, sizeof(txq_meta)); +-- +2.43.0 + diff --git a/queue-6.10/loongarch-define-arch_irq_init_flags-as-irq_noprobe.patch b/queue-6.10/loongarch-define-arch_irq_init_flags-as-irq_noprobe.patch new file mode 100644 index 00000000000..0b854b7e365 --- /dev/null +++ b/queue-6.10/loongarch-define-arch_irq_init_flags-as-irq_noprobe.patch @@ -0,0 +1,55 @@ +From 95e3d584a0a50f35bf2f9bb5b05ee0caf25fe83e Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 26 Aug 2024 23:11:32 +0800 +Subject: LoongArch: Define ARCH_IRQ_INIT_FLAGS as IRQ_NOPROBE + +From: Huacai Chen + +[ Upstream commit 274ea3563e5ab9f468c15bfb9d2492803a66d9be ] + +Currently we call irq_set_noprobe() in a loop for all IRQs, but indeed +it only works for IRQs below NR_IRQS_LEGACY because at init_IRQ() only +legacy interrupts have been allocated. + +Instead, we can define ARCH_IRQ_INIT_FLAGS as IRQ_NOPROBE in asm/hwirq.h +and the core will automatically set the flag for all interrupts. + +Reviewed-by: Thomas Gleixner +Signed-off-by: Huacai Chen +Signed-off-by: Tianyang Zhang +Signed-off-by: Sasha Levin +--- + arch/loongarch/include/asm/hw_irq.h | 2 ++ + arch/loongarch/kernel/irq.c | 3 --- + 2 files changed, 2 insertions(+), 3 deletions(-) + +diff --git a/arch/loongarch/include/asm/hw_irq.h b/arch/loongarch/include/asm/hw_irq.h +index af4f4e8fbd858..8156ffb674159 100644 +--- a/arch/loongarch/include/asm/hw_irq.h ++++ b/arch/loongarch/include/asm/hw_irq.h +@@ -9,6 +9,8 @@ + + extern atomic_t irq_err_count; + ++#define ARCH_IRQ_INIT_FLAGS IRQ_NOPROBE ++ + /* + * interrupt-retrigger: NOP for now. This may not be appropriate for all + * machines, we'll see ... +diff --git a/arch/loongarch/kernel/irq.c b/arch/loongarch/kernel/irq.c +index f4991c03514f4..adac8fcbb2aca 100644 +--- a/arch/loongarch/kernel/irq.c ++++ b/arch/loongarch/kernel/irq.c +@@ -102,9 +102,6 @@ void __init init_IRQ(void) + mp_ops.init_ipi(); + #endif + +- for (i = 0; i < NR_IRQS; i++) +- irq_set_noprobe(i); +- + for_each_possible_cpu(i) { + page = alloc_pages_node(cpu_to_node(i), GFP_KERNEL, order); + +-- +2.43.0 + diff --git a/queue-6.10/loongarch-define-arch_irq_init_flags-as-irq_noprobe.patch-11197 b/queue-6.10/loongarch-define-arch_irq_init_flags-as-irq_noprobe.patch-11197 new file mode 100644 index 00000000000..0b854b7e365 --- /dev/null +++ b/queue-6.10/loongarch-define-arch_irq_init_flags-as-irq_noprobe.patch-11197 @@ -0,0 +1,55 @@ +From 95e3d584a0a50f35bf2f9bb5b05ee0caf25fe83e Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 26 Aug 2024 23:11:32 +0800 +Subject: LoongArch: Define ARCH_IRQ_INIT_FLAGS as IRQ_NOPROBE + +From: Huacai Chen + +[ Upstream commit 274ea3563e5ab9f468c15bfb9d2492803a66d9be ] + +Currently we call irq_set_noprobe() in a loop for all IRQs, but indeed +it only works for IRQs below NR_IRQS_LEGACY because at init_IRQ() only +legacy interrupts have been allocated. + +Instead, we can define ARCH_IRQ_INIT_FLAGS as IRQ_NOPROBE in asm/hwirq.h +and the core will automatically set the flag for all interrupts. + +Reviewed-by: Thomas Gleixner +Signed-off-by: Huacai Chen +Signed-off-by: Tianyang Zhang +Signed-off-by: Sasha Levin +--- + arch/loongarch/include/asm/hw_irq.h | 2 ++ + arch/loongarch/kernel/irq.c | 3 --- + 2 files changed, 2 insertions(+), 3 deletions(-) + +diff --git a/arch/loongarch/include/asm/hw_irq.h b/arch/loongarch/include/asm/hw_irq.h +index af4f4e8fbd858..8156ffb674159 100644 +--- a/arch/loongarch/include/asm/hw_irq.h ++++ b/arch/loongarch/include/asm/hw_irq.h +@@ -9,6 +9,8 @@ + + extern atomic_t irq_err_count; + ++#define ARCH_IRQ_INIT_FLAGS IRQ_NOPROBE ++ + /* + * interrupt-retrigger: NOP for now. This may not be appropriate for all + * machines, we'll see ... +diff --git a/arch/loongarch/kernel/irq.c b/arch/loongarch/kernel/irq.c +index f4991c03514f4..adac8fcbb2aca 100644 +--- a/arch/loongarch/kernel/irq.c ++++ b/arch/loongarch/kernel/irq.c +@@ -102,9 +102,6 @@ void __init init_IRQ(void) + mp_ops.init_ipi(); + #endif + +- for (i = 0; i < NR_IRQS; i++) +- irq_set_noprobe(i); +- + for_each_possible_cpu(i) { + page = alloc_pages_node(cpu_to_node(i), GFP_KERNEL, order); + +-- +2.43.0 + diff --git a/queue-6.10/loongarch-kvm-invalidate-guest-steal-time-address-on.patch b/queue-6.10/loongarch-kvm-invalidate-guest-steal-time-address-on.patch new file mode 100644 index 00000000000..aff706fdff7 --- /dev/null +++ b/queue-6.10/loongarch-kvm-invalidate-guest-steal-time-address-on.patch @@ -0,0 +1,78 @@ +From 09a6a503b8c8724ca718d224aade078ffdb771f8 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 26 Aug 2024 23:11:32 +0800 +Subject: LoongArch: KVM: Invalidate guest steal time address on vCPU reset + +From: Bibo Mao + +[ Upstream commit 4956e07f05e239b274d042618a250c9fa3e92629 ] + +If ParaVirt steal time feature is enabled, there is a percpu gpa address +passed from guest vCPU and host modifies guest memory space with this gpa +address. When vCPU is reset normally, it will notify host and invalidate +gpa address. + +However if VM is crashed and VMM reboots VM forcely, the vCPU reboot +notification callback will not be called in VM. Host needs invalidate +the gpa address, else host will modify guest memory during VM reboots. +Here it is invalidated from the vCPU KVM_REG_LOONGARCH_VCPU_RESET ioctl +interface. + +Also funciton kvm_reset_timer() is removed at vCPU reset stage, since SW +emulated timer is only used in vCPU block state. When a vCPU is removed +from the block waiting queue, kvm_restore_timer() is called and SW timer +is cancelled. And the timer register is also cleared at VMM when a vCPU +is reset. + +Signed-off-by: Bibo Mao +Signed-off-by: Huacai Chen +Signed-off-by: Sasha Levin +--- + arch/loongarch/include/asm/kvm_vcpu.h | 1 - + arch/loongarch/kvm/timer.c | 7 ------- + arch/loongarch/kvm/vcpu.c | 2 +- + 3 files changed, 1 insertion(+), 9 deletions(-) + +diff --git a/arch/loongarch/include/asm/kvm_vcpu.h b/arch/loongarch/include/asm/kvm_vcpu.h +index 590a92cb54165..d741c3e9933a5 100644 +--- a/arch/loongarch/include/asm/kvm_vcpu.h ++++ b/arch/loongarch/include/asm/kvm_vcpu.h +@@ -76,7 +76,6 @@ static inline void kvm_restore_lasx(struct loongarch_fpu *fpu) { } + #endif + + void kvm_init_timer(struct kvm_vcpu *vcpu, unsigned long hz); +-void kvm_reset_timer(struct kvm_vcpu *vcpu); + void kvm_save_timer(struct kvm_vcpu *vcpu); + void kvm_restore_timer(struct kvm_vcpu *vcpu); + +diff --git a/arch/loongarch/kvm/timer.c b/arch/loongarch/kvm/timer.c +index bcc6b6d063d91..74a4b5c272d60 100644 +--- a/arch/loongarch/kvm/timer.c ++++ b/arch/loongarch/kvm/timer.c +@@ -188,10 +188,3 @@ void kvm_save_timer(struct kvm_vcpu *vcpu) + kvm_save_hw_gcsr(csr, LOONGARCH_CSR_ESTAT); + preempt_enable(); + } +- +-void kvm_reset_timer(struct kvm_vcpu *vcpu) +-{ +- write_gcsr_timercfg(0); +- kvm_write_sw_gcsr(vcpu->arch.csr, LOONGARCH_CSR_TCFG, 0); +- hrtimer_cancel(&vcpu->arch.swtimer); +-} +diff --git a/arch/loongarch/kvm/vcpu.c b/arch/loongarch/kvm/vcpu.c +index 9e8030d451290..0b53f4d9fddf9 100644 +--- a/arch/loongarch/kvm/vcpu.c ++++ b/arch/loongarch/kvm/vcpu.c +@@ -572,7 +572,7 @@ static int kvm_set_one_reg(struct kvm_vcpu *vcpu, + vcpu->kvm->arch.time_offset = (signed long)(v - drdtime()); + break; + case KVM_REG_LOONGARCH_VCPU_RESET: +- kvm_reset_timer(vcpu); ++ vcpu->arch.st.guest_addr = 0; + memset(&vcpu->arch.irq_pending, 0, sizeof(vcpu->arch.irq_pending)); + memset(&vcpu->arch.irq_clear, 0, sizeof(vcpu->arch.irq_clear)); + break; +-- +2.43.0 + diff --git a/queue-6.10/loongarch-kvm-invalidate-guest-steal-time-address-on.patch-7425 b/queue-6.10/loongarch-kvm-invalidate-guest-steal-time-address-on.patch-7425 new file mode 100644 index 00000000000..aff706fdff7 --- /dev/null +++ b/queue-6.10/loongarch-kvm-invalidate-guest-steal-time-address-on.patch-7425 @@ -0,0 +1,78 @@ +From 09a6a503b8c8724ca718d224aade078ffdb771f8 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 26 Aug 2024 23:11:32 +0800 +Subject: LoongArch: KVM: Invalidate guest steal time address on vCPU reset + +From: Bibo Mao + +[ Upstream commit 4956e07f05e239b274d042618a250c9fa3e92629 ] + +If ParaVirt steal time feature is enabled, there is a percpu gpa address +passed from guest vCPU and host modifies guest memory space with this gpa +address. When vCPU is reset normally, it will notify host and invalidate +gpa address. + +However if VM is crashed and VMM reboots VM forcely, the vCPU reboot +notification callback will not be called in VM. Host needs invalidate +the gpa address, else host will modify guest memory during VM reboots. +Here it is invalidated from the vCPU KVM_REG_LOONGARCH_VCPU_RESET ioctl +interface. + +Also funciton kvm_reset_timer() is removed at vCPU reset stage, since SW +emulated timer is only used in vCPU block state. When a vCPU is removed +from the block waiting queue, kvm_restore_timer() is called and SW timer +is cancelled. And the timer register is also cleared at VMM when a vCPU +is reset. + +Signed-off-by: Bibo Mao +Signed-off-by: Huacai Chen +Signed-off-by: Sasha Levin +--- + arch/loongarch/include/asm/kvm_vcpu.h | 1 - + arch/loongarch/kvm/timer.c | 7 ------- + arch/loongarch/kvm/vcpu.c | 2 +- + 3 files changed, 1 insertion(+), 9 deletions(-) + +diff --git a/arch/loongarch/include/asm/kvm_vcpu.h b/arch/loongarch/include/asm/kvm_vcpu.h +index 590a92cb54165..d741c3e9933a5 100644 +--- a/arch/loongarch/include/asm/kvm_vcpu.h ++++ b/arch/loongarch/include/asm/kvm_vcpu.h +@@ -76,7 +76,6 @@ static inline void kvm_restore_lasx(struct loongarch_fpu *fpu) { } + #endif + + void kvm_init_timer(struct kvm_vcpu *vcpu, unsigned long hz); +-void kvm_reset_timer(struct kvm_vcpu *vcpu); + void kvm_save_timer(struct kvm_vcpu *vcpu); + void kvm_restore_timer(struct kvm_vcpu *vcpu); + +diff --git a/arch/loongarch/kvm/timer.c b/arch/loongarch/kvm/timer.c +index bcc6b6d063d91..74a4b5c272d60 100644 +--- a/arch/loongarch/kvm/timer.c ++++ b/arch/loongarch/kvm/timer.c +@@ -188,10 +188,3 @@ void kvm_save_timer(struct kvm_vcpu *vcpu) + kvm_save_hw_gcsr(csr, LOONGARCH_CSR_ESTAT); + preempt_enable(); + } +- +-void kvm_reset_timer(struct kvm_vcpu *vcpu) +-{ +- write_gcsr_timercfg(0); +- kvm_write_sw_gcsr(vcpu->arch.csr, LOONGARCH_CSR_TCFG, 0); +- hrtimer_cancel(&vcpu->arch.swtimer); +-} +diff --git a/arch/loongarch/kvm/vcpu.c b/arch/loongarch/kvm/vcpu.c +index 9e8030d451290..0b53f4d9fddf9 100644 +--- a/arch/loongarch/kvm/vcpu.c ++++ b/arch/loongarch/kvm/vcpu.c +@@ -572,7 +572,7 @@ static int kvm_set_one_reg(struct kvm_vcpu *vcpu, + vcpu->kvm->arch.time_offset = (signed long)(v - drdtime()); + break; + case KVM_REG_LOONGARCH_VCPU_RESET: +- kvm_reset_timer(vcpu); ++ vcpu->arch.st.guest_addr = 0; + memset(&vcpu->arch.irq_pending, 0, sizeof(vcpu->arch.irq_pending)); + memset(&vcpu->arch.irq_clear, 0, sizeof(vcpu->arch.irq_clear)); + break; +-- +2.43.0 + diff --git a/queue-6.10/microblaze-don-t-treat-zero-reserved-memory-regions-.patch b/queue-6.10/microblaze-don-t-treat-zero-reserved-memory-regions-.patch new file mode 100644 index 00000000000..e89b20529b4 --- /dev/null +++ b/queue-6.10/microblaze-don-t-treat-zero-reserved-memory-regions-.patch @@ -0,0 +1,51 @@ +From 265ff853dcc42c07ee2d4f28c5d88550092b9454 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 29 Jul 2024 08:33:27 +0300 +Subject: microblaze: don't treat zero reserved memory regions as error + +From: Mike Rapoport + +[ Upstream commit 0075df288dd8a7abfe03b3766176c393063591dd ] + +Before commit 721f4a6526da ("mm/memblock: remove empty dummy entry") the +check for non-zero of memblock.reserved.cnt in mmu_init() would always +be true either because memblock.reserved.cnt is initialized to 1 or +because there were memory reservations earlier. + +The removal of dummy empty entry in memblock caused this check to fail +because now memblock.reserved.cnt is initialized to 0. + +Remove the check for non-zero of memblock.reserved.cnt because it's +perfectly fine to have an empty memblock.reserved array that early in +boot. + +Reported-by: Guenter Roeck +Signed-off-by: Mike Rapoport +Reviewed-by: Wei Yang +Tested-by: Guenter Roeck +Link: https://lore.kernel.org/r/20240729053327.4091459-1-rppt@kernel.org +Signed-off-by: Guenter Roeck +Signed-off-by: Sasha Levin +--- + arch/microblaze/mm/init.c | 5 ----- + 1 file changed, 5 deletions(-) + +diff --git a/arch/microblaze/mm/init.c b/arch/microblaze/mm/init.c +index 3827dc76edd82..4520c57415797 100644 +--- a/arch/microblaze/mm/init.c ++++ b/arch/microblaze/mm/init.c +@@ -193,11 +193,6 @@ asmlinkage void __init mmu_init(void) + { + unsigned int kstart, ksize; + +- if (!memblock.reserved.cnt) { +- pr_emerg("Error memory count\n"); +- machine_restart(NULL); +- } +- + if ((u32) memblock.memory.regions[0].size < 0x400000) { + pr_emerg("Memory must be greater than 4MB\n"); + machine_restart(NULL); +-- +2.43.0 + diff --git a/queue-6.10/microblaze-don-t-treat-zero-reserved-memory-regions-.patch-3060 b/queue-6.10/microblaze-don-t-treat-zero-reserved-memory-regions-.patch-3060 new file mode 100644 index 00000000000..e89b20529b4 --- /dev/null +++ b/queue-6.10/microblaze-don-t-treat-zero-reserved-memory-regions-.patch-3060 @@ -0,0 +1,51 @@ +From 265ff853dcc42c07ee2d4f28c5d88550092b9454 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 29 Jul 2024 08:33:27 +0300 +Subject: microblaze: don't treat zero reserved memory regions as error + +From: Mike Rapoport + +[ Upstream commit 0075df288dd8a7abfe03b3766176c393063591dd ] + +Before commit 721f4a6526da ("mm/memblock: remove empty dummy entry") the +check for non-zero of memblock.reserved.cnt in mmu_init() would always +be true either because memblock.reserved.cnt is initialized to 1 or +because there were memory reservations earlier. + +The removal of dummy empty entry in memblock caused this check to fail +because now memblock.reserved.cnt is initialized to 0. + +Remove the check for non-zero of memblock.reserved.cnt because it's +perfectly fine to have an empty memblock.reserved array that early in +boot. + +Reported-by: Guenter Roeck +Signed-off-by: Mike Rapoport +Reviewed-by: Wei Yang +Tested-by: Guenter Roeck +Link: https://lore.kernel.org/r/20240729053327.4091459-1-rppt@kernel.org +Signed-off-by: Guenter Roeck +Signed-off-by: Sasha Levin +--- + arch/microblaze/mm/init.c | 5 ----- + 1 file changed, 5 deletions(-) + +diff --git a/arch/microblaze/mm/init.c b/arch/microblaze/mm/init.c +index 3827dc76edd82..4520c57415797 100644 +--- a/arch/microblaze/mm/init.c ++++ b/arch/microblaze/mm/init.c +@@ -193,11 +193,6 @@ asmlinkage void __init mmu_init(void) + { + unsigned int kstart, ksize; + +- if (!memblock.reserved.cnt) { +- pr_emerg("Error memory count\n"); +- machine_restart(NULL); +- } +- + if ((u32) memblock.memory.regions[0].size < 0x400000) { + pr_emerg("Memory must be greater than 4MB\n"); + machine_restart(NULL); +-- +2.43.0 + diff --git a/queue-6.10/net-ftgmac100-ensure-tx-descriptor-updates-are-visib.patch b/queue-6.10/net-ftgmac100-ensure-tx-descriptor-updates-are-visib.patch new file mode 100644 index 00000000000..a4ca5d09a13 --- /dev/null +++ b/queue-6.10/net-ftgmac100-ensure-tx-descriptor-updates-are-visib.patch @@ -0,0 +1,109 @@ +From 9a398f5bd0cd34fcf4d4d224ffc0c35a2a1f3236 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Thu, 22 Aug 2024 15:30:06 +0800 +Subject: net: ftgmac100: Ensure tx descriptor updates are visible + +From: Jacky Chou + +[ Upstream commit 4186c8d9e6af57bab0687b299df10ebd47534a0a ] + +The driver must ensure TX descriptor updates are visible +before updating TX pointer and TX clear pointer. + +This resolves TX hangs observed on AST2600 when running +iperf3. + +Signed-off-by: Jacky Chou +Signed-off-by: David S. Miller +Signed-off-by: Sasha Levin +--- + drivers/net/ethernet/faraday/ftgmac100.c | 26 ++++++++++++++++-------- + 1 file changed, 18 insertions(+), 8 deletions(-) + +diff --git a/drivers/net/ethernet/faraday/ftgmac100.c b/drivers/net/ethernet/faraday/ftgmac100.c +index fddfd1dd50709..4c546c3aef0fe 100644 +--- a/drivers/net/ethernet/faraday/ftgmac100.c ++++ b/drivers/net/ethernet/faraday/ftgmac100.c +@@ -572,7 +572,7 @@ static bool ftgmac100_rx_packet(struct ftgmac100 *priv, int *processed) + (*processed)++; + return true; + +- drop: ++drop: + /* Clean rxdes0 (which resets own bit) */ + rxdes->rxdes0 = cpu_to_le32(status & priv->rxdes0_edorr_mask); + priv->rx_pointer = ftgmac100_next_rx_pointer(priv, pointer); +@@ -656,6 +656,11 @@ static bool ftgmac100_tx_complete_packet(struct ftgmac100 *priv) + ftgmac100_free_tx_packet(priv, pointer, skb, txdes, ctl_stat); + txdes->txdes0 = cpu_to_le32(ctl_stat & priv->txdes0_edotr_mask); + ++ /* Ensure the descriptor config is visible before setting the tx ++ * pointer. ++ */ ++ smp_wmb(); ++ + priv->tx_clean_pointer = ftgmac100_next_tx_pointer(priv, pointer); + + return true; +@@ -809,6 +814,11 @@ static netdev_tx_t ftgmac100_hard_start_xmit(struct sk_buff *skb, + dma_wmb(); + first->txdes0 = cpu_to_le32(f_ctl_stat); + ++ /* Ensure the descriptor config is visible before setting the tx ++ * pointer. ++ */ ++ smp_wmb(); ++ + /* Update next TX pointer */ + priv->tx_pointer = pointer; + +@@ -829,7 +839,7 @@ static netdev_tx_t ftgmac100_hard_start_xmit(struct sk_buff *skb, + + return NETDEV_TX_OK; + +- dma_err: ++dma_err: + if (net_ratelimit()) + netdev_err(netdev, "map tx fragment failed\n"); + +@@ -851,7 +861,7 @@ static netdev_tx_t ftgmac100_hard_start_xmit(struct sk_buff *skb, + * last fragment, so we know ftgmac100_free_tx_packet() + * hasn't freed the skb yet. + */ +- drop: ++drop: + /* Drop the packet */ + dev_kfree_skb_any(skb); + netdev->stats.tx_dropped++; +@@ -1344,7 +1354,7 @@ static void ftgmac100_reset(struct ftgmac100 *priv) + ftgmac100_init_all(priv, true); + + netdev_dbg(netdev, "Reset done !\n"); +- bail: ++bail: + if (priv->mii_bus) + mutex_unlock(&priv->mii_bus->mdio_lock); + if (netdev->phydev) +@@ -1543,15 +1553,15 @@ static int ftgmac100_open(struct net_device *netdev) + + return 0; + +- err_ncsi: ++err_ncsi: + napi_disable(&priv->napi); + netif_stop_queue(netdev); +- err_alloc: ++err_alloc: + ftgmac100_free_buffers(priv); + free_irq(netdev->irq, netdev); +- err_irq: ++err_irq: + netif_napi_del(&priv->napi); +- err_hw: ++err_hw: + iowrite32(0, priv->base + FTGMAC100_OFFSET_IER); + ftgmac100_free_rings(priv); + return err; +-- +2.43.0 + diff --git a/queue-6.10/net-ftgmac100-ensure-tx-descriptor-updates-are-visib.patch-4531 b/queue-6.10/net-ftgmac100-ensure-tx-descriptor-updates-are-visib.patch-4531 new file mode 100644 index 00000000000..a4ca5d09a13 --- /dev/null +++ b/queue-6.10/net-ftgmac100-ensure-tx-descriptor-updates-are-visib.patch-4531 @@ -0,0 +1,109 @@ +From 9a398f5bd0cd34fcf4d4d224ffc0c35a2a1f3236 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Thu, 22 Aug 2024 15:30:06 +0800 +Subject: net: ftgmac100: Ensure tx descriptor updates are visible + +From: Jacky Chou + +[ Upstream commit 4186c8d9e6af57bab0687b299df10ebd47534a0a ] + +The driver must ensure TX descriptor updates are visible +before updating TX pointer and TX clear pointer. + +This resolves TX hangs observed on AST2600 when running +iperf3. + +Signed-off-by: Jacky Chou +Signed-off-by: David S. Miller +Signed-off-by: Sasha Levin +--- + drivers/net/ethernet/faraday/ftgmac100.c | 26 ++++++++++++++++-------- + 1 file changed, 18 insertions(+), 8 deletions(-) + +diff --git a/drivers/net/ethernet/faraday/ftgmac100.c b/drivers/net/ethernet/faraday/ftgmac100.c +index fddfd1dd50709..4c546c3aef0fe 100644 +--- a/drivers/net/ethernet/faraday/ftgmac100.c ++++ b/drivers/net/ethernet/faraday/ftgmac100.c +@@ -572,7 +572,7 @@ static bool ftgmac100_rx_packet(struct ftgmac100 *priv, int *processed) + (*processed)++; + return true; + +- drop: ++drop: + /* Clean rxdes0 (which resets own bit) */ + rxdes->rxdes0 = cpu_to_le32(status & priv->rxdes0_edorr_mask); + priv->rx_pointer = ftgmac100_next_rx_pointer(priv, pointer); +@@ -656,6 +656,11 @@ static bool ftgmac100_tx_complete_packet(struct ftgmac100 *priv) + ftgmac100_free_tx_packet(priv, pointer, skb, txdes, ctl_stat); + txdes->txdes0 = cpu_to_le32(ctl_stat & priv->txdes0_edotr_mask); + ++ /* Ensure the descriptor config is visible before setting the tx ++ * pointer. ++ */ ++ smp_wmb(); ++ + priv->tx_clean_pointer = ftgmac100_next_tx_pointer(priv, pointer); + + return true; +@@ -809,6 +814,11 @@ static netdev_tx_t ftgmac100_hard_start_xmit(struct sk_buff *skb, + dma_wmb(); + first->txdes0 = cpu_to_le32(f_ctl_stat); + ++ /* Ensure the descriptor config is visible before setting the tx ++ * pointer. ++ */ ++ smp_wmb(); ++ + /* Update next TX pointer */ + priv->tx_pointer = pointer; + +@@ -829,7 +839,7 @@ static netdev_tx_t ftgmac100_hard_start_xmit(struct sk_buff *skb, + + return NETDEV_TX_OK; + +- dma_err: ++dma_err: + if (net_ratelimit()) + netdev_err(netdev, "map tx fragment failed\n"); + +@@ -851,7 +861,7 @@ static netdev_tx_t ftgmac100_hard_start_xmit(struct sk_buff *skb, + * last fragment, so we know ftgmac100_free_tx_packet() + * hasn't freed the skb yet. + */ +- drop: ++drop: + /* Drop the packet */ + dev_kfree_skb_any(skb); + netdev->stats.tx_dropped++; +@@ -1344,7 +1354,7 @@ static void ftgmac100_reset(struct ftgmac100 *priv) + ftgmac100_init_all(priv, true); + + netdev_dbg(netdev, "Reset done !\n"); +- bail: ++bail: + if (priv->mii_bus) + mutex_unlock(&priv->mii_bus->mdio_lock); + if (netdev->phydev) +@@ -1543,15 +1553,15 @@ static int ftgmac100_open(struct net_device *netdev) + + return 0; + +- err_ncsi: ++err_ncsi: + napi_disable(&priv->napi); + netif_stop_queue(netdev); +- err_alloc: ++err_alloc: + ftgmac100_free_buffers(priv); + free_irq(netdev->irq, netdev); +- err_irq: ++err_irq: + netif_napi_del(&priv->napi); +- err_hw: ++err_hw: + iowrite32(0, priv->base + FTGMAC100_OFFSET_IER); + ftgmac100_free_rings(priv); + return err; +-- +2.43.0 + diff --git a/queue-6.10/ocfs2-add-bounds-checking-to-ocfs2_xattr_find_entry.patch b/queue-6.10/ocfs2-add-bounds-checking-to-ocfs2_xattr_find_entry.patch new file mode 100644 index 00000000000..6bd459a51b8 --- /dev/null +++ b/queue-6.10/ocfs2-add-bounds-checking-to-ocfs2_xattr_find_entry.patch @@ -0,0 +1,85 @@ +From cf87643ca3c043e03b2057ce706a6c6633ae594c Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 20 May 2024 10:40:23 +0800 +Subject: ocfs2: add bounds checking to ocfs2_xattr_find_entry() + +From: Ferry Meng + +[ Upstream commit 9e3041fecdc8f78a5900c3aa51d3d756e73264d6 ] + +Add a paranoia check to make sure it doesn't stray beyond valid memory +region containing ocfs2 xattr entries when scanning for a match. It will +prevent out-of-bound access in case of crafted images. + +Link: https://lkml.kernel.org/r/20240520024024.1976129-1-joseph.qi@linux.alibaba.com +Signed-off-by: Ferry Meng +Signed-off-by: Joseph Qi +Reported-by: lei lu +Reviewed-by: Joseph Qi +Cc: Mark Fasheh +Cc: Joel Becker +Cc: Junxiao Bi +Cc: Changwei Ge +Cc: Gang He +Cc: Jun Piao +Signed-off-by: Andrew Morton +Stable-dep-of: af77c4fc1871 ("ocfs2: strict bound check before memcmp in ocfs2_xattr_find_entry()") +Signed-off-by: Sasha Levin +--- + fs/ocfs2/xattr.c | 12 ++++++++---- + 1 file changed, 8 insertions(+), 4 deletions(-) + +diff --git a/fs/ocfs2/xattr.c b/fs/ocfs2/xattr.c +index 3b81213ed7b85..8aea94c907397 100644 +--- a/fs/ocfs2/xattr.c ++++ b/fs/ocfs2/xattr.c +@@ -1062,7 +1062,7 @@ ssize_t ocfs2_listxattr(struct dentry *dentry, + return i_ret + b_ret; + } + +-static int ocfs2_xattr_find_entry(int name_index, ++static int ocfs2_xattr_find_entry(struct inode *inode, int name_index, + const char *name, + struct ocfs2_xattr_search *xs) + { +@@ -1076,6 +1076,10 @@ static int ocfs2_xattr_find_entry(int name_index, + name_len = strlen(name); + entry = xs->here; + for (i = 0; i < le16_to_cpu(xs->header->xh_count); i++) { ++ if ((void *)entry >= xs->end) { ++ ocfs2_error(inode->i_sb, "corrupted xattr entries"); ++ return -EFSCORRUPTED; ++ } + cmp = name_index - ocfs2_xattr_get_type(entry); + if (!cmp) + cmp = name_len - entry->xe_name_len; +@@ -1166,7 +1170,7 @@ static int ocfs2_xattr_ibody_get(struct inode *inode, + xs->base = (void *)xs->header; + xs->here = xs->header->xh_entries; + +- ret = ocfs2_xattr_find_entry(name_index, name, xs); ++ ret = ocfs2_xattr_find_entry(inode, name_index, name, xs); + if (ret) + return ret; + size = le64_to_cpu(xs->here->xe_value_size); +@@ -2698,7 +2702,7 @@ static int ocfs2_xattr_ibody_find(struct inode *inode, + + /* Find the named attribute. */ + if (oi->ip_dyn_features & OCFS2_INLINE_XATTR_FL) { +- ret = ocfs2_xattr_find_entry(name_index, name, xs); ++ ret = ocfs2_xattr_find_entry(inode, name_index, name, xs); + if (ret && ret != -ENODATA) + return ret; + xs->not_found = ret; +@@ -2833,7 +2837,7 @@ static int ocfs2_xattr_block_find(struct inode *inode, + xs->end = (void *)(blk_bh->b_data) + blk_bh->b_size; + xs->here = xs->header->xh_entries; + +- ret = ocfs2_xattr_find_entry(name_index, name, xs); ++ ret = ocfs2_xattr_find_entry(inode, name_index, name, xs); + } else + ret = ocfs2_xattr_index_block_find(inode, blk_bh, + name_index, +-- +2.43.0 + diff --git a/queue-6.10/ocfs2-add-bounds-checking-to-ocfs2_xattr_find_entry.patch-10443 b/queue-6.10/ocfs2-add-bounds-checking-to-ocfs2_xattr_find_entry.patch-10443 new file mode 100644 index 00000000000..6bd459a51b8 --- /dev/null +++ b/queue-6.10/ocfs2-add-bounds-checking-to-ocfs2_xattr_find_entry.patch-10443 @@ -0,0 +1,85 @@ +From cf87643ca3c043e03b2057ce706a6c6633ae594c Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 20 May 2024 10:40:23 +0800 +Subject: ocfs2: add bounds checking to ocfs2_xattr_find_entry() + +From: Ferry Meng + +[ Upstream commit 9e3041fecdc8f78a5900c3aa51d3d756e73264d6 ] + +Add a paranoia check to make sure it doesn't stray beyond valid memory +region containing ocfs2 xattr entries when scanning for a match. It will +prevent out-of-bound access in case of crafted images. + +Link: https://lkml.kernel.org/r/20240520024024.1976129-1-joseph.qi@linux.alibaba.com +Signed-off-by: Ferry Meng +Signed-off-by: Joseph Qi +Reported-by: lei lu +Reviewed-by: Joseph Qi +Cc: Mark Fasheh +Cc: Joel Becker +Cc: Junxiao Bi +Cc: Changwei Ge +Cc: Gang He +Cc: Jun Piao +Signed-off-by: Andrew Morton +Stable-dep-of: af77c4fc1871 ("ocfs2: strict bound check before memcmp in ocfs2_xattr_find_entry()") +Signed-off-by: Sasha Levin +--- + fs/ocfs2/xattr.c | 12 ++++++++---- + 1 file changed, 8 insertions(+), 4 deletions(-) + +diff --git a/fs/ocfs2/xattr.c b/fs/ocfs2/xattr.c +index 3b81213ed7b85..8aea94c907397 100644 +--- a/fs/ocfs2/xattr.c ++++ b/fs/ocfs2/xattr.c +@@ -1062,7 +1062,7 @@ ssize_t ocfs2_listxattr(struct dentry *dentry, + return i_ret + b_ret; + } + +-static int ocfs2_xattr_find_entry(int name_index, ++static int ocfs2_xattr_find_entry(struct inode *inode, int name_index, + const char *name, + struct ocfs2_xattr_search *xs) + { +@@ -1076,6 +1076,10 @@ static int ocfs2_xattr_find_entry(int name_index, + name_len = strlen(name); + entry = xs->here; + for (i = 0; i < le16_to_cpu(xs->header->xh_count); i++) { ++ if ((void *)entry >= xs->end) { ++ ocfs2_error(inode->i_sb, "corrupted xattr entries"); ++ return -EFSCORRUPTED; ++ } + cmp = name_index - ocfs2_xattr_get_type(entry); + if (!cmp) + cmp = name_len - entry->xe_name_len; +@@ -1166,7 +1170,7 @@ static int ocfs2_xattr_ibody_get(struct inode *inode, + xs->base = (void *)xs->header; + xs->here = xs->header->xh_entries; + +- ret = ocfs2_xattr_find_entry(name_index, name, xs); ++ ret = ocfs2_xattr_find_entry(inode, name_index, name, xs); + if (ret) + return ret; + size = le64_to_cpu(xs->here->xe_value_size); +@@ -2698,7 +2702,7 @@ static int ocfs2_xattr_ibody_find(struct inode *inode, + + /* Find the named attribute. */ + if (oi->ip_dyn_features & OCFS2_INLINE_XATTR_FL) { +- ret = ocfs2_xattr_find_entry(name_index, name, xs); ++ ret = ocfs2_xattr_find_entry(inode, name_index, name, xs); + if (ret && ret != -ENODATA) + return ret; + xs->not_found = ret; +@@ -2833,7 +2837,7 @@ static int ocfs2_xattr_block_find(struct inode *inode, + xs->end = (void *)(blk_bh->b_data) + blk_bh->b_size; + xs->here = xs->header->xh_entries; + +- ret = ocfs2_xattr_find_entry(name_index, name, xs); ++ ret = ocfs2_xattr_find_entry(inode, name_index, name, xs); + } else + ret = ocfs2_xattr_index_block_find(inode, blk_bh, + name_index, +-- +2.43.0 + diff --git a/queue-6.10/ocfs2-strict-bound-check-before-memcmp-in-ocfs2_xatt.patch b/queue-6.10/ocfs2-strict-bound-check-before-memcmp-in-ocfs2_xatt.patch new file mode 100644 index 00000000000..2469c34ebd9 --- /dev/null +++ b/queue-6.10/ocfs2-strict-bound-check-before-memcmp-in-ocfs2_xatt.patch @@ -0,0 +1,67 @@ +From 92c47d6334f7f8950a1992499a55e38707532b3f Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 20 May 2024 10:40:24 +0800 +Subject: ocfs2: strict bound check before memcmp in ocfs2_xattr_find_entry() + +From: Ferry Meng + +[ Upstream commit af77c4fc1871847b528d58b7fdafb4aa1f6a9262 ] + +xattr in ocfs2 maybe 'non-indexed', which saved with additional space +requested. It's better to check if the memory is out of bound before +memcmp, although this possibility mainly comes from crafted poisonous +images. + +Link: https://lkml.kernel.org/r/20240520024024.1976129-2-joseph.qi@linux.alibaba.com +Signed-off-by: Ferry Meng +Signed-off-by: Joseph Qi +Reported-by: lei lu +Reviewed-by: Joseph Qi +Cc: Changwei Ge +Cc: Gang He +Cc: Joel Becker +Cc: Jun Piao +Cc: Junxiao Bi +Cc: Mark Fasheh +Signed-off-by: Andrew Morton +Signed-off-by: Sasha Levin +--- + fs/ocfs2/xattr.c | 15 ++++++++++----- + 1 file changed, 10 insertions(+), 5 deletions(-) + +diff --git a/fs/ocfs2/xattr.c b/fs/ocfs2/xattr.c +index 8aea94c907397..35c0cc2a51af8 100644 +--- a/fs/ocfs2/xattr.c ++++ b/fs/ocfs2/xattr.c +@@ -1068,7 +1068,7 @@ static int ocfs2_xattr_find_entry(struct inode *inode, int name_index, + { + struct ocfs2_xattr_entry *entry; + size_t name_len; +- int i, cmp = 1; ++ int i, name_offset, cmp = 1; + + if (name == NULL) + return -EINVAL; +@@ -1083,10 +1083,15 @@ static int ocfs2_xattr_find_entry(struct inode *inode, int name_index, + cmp = name_index - ocfs2_xattr_get_type(entry); + if (!cmp) + cmp = name_len - entry->xe_name_len; +- if (!cmp) +- cmp = memcmp(name, (xs->base + +- le16_to_cpu(entry->xe_name_offset)), +- name_len); ++ if (!cmp) { ++ name_offset = le16_to_cpu(entry->xe_name_offset); ++ if ((xs->base + name_offset + name_len) > xs->end) { ++ ocfs2_error(inode->i_sb, ++ "corrupted xattr entries"); ++ return -EFSCORRUPTED; ++ } ++ cmp = memcmp(name, (xs->base + name_offset), name_len); ++ } + if (cmp == 0) + break; + entry += 1; +-- +2.43.0 + diff --git a/queue-6.10/ocfs2-strict-bound-check-before-memcmp-in-ocfs2_xatt.patch-24730 b/queue-6.10/ocfs2-strict-bound-check-before-memcmp-in-ocfs2_xatt.patch-24730 new file mode 100644 index 00000000000..2469c34ebd9 --- /dev/null +++ b/queue-6.10/ocfs2-strict-bound-check-before-memcmp-in-ocfs2_xatt.patch-24730 @@ -0,0 +1,67 @@ +From 92c47d6334f7f8950a1992499a55e38707532b3f Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 20 May 2024 10:40:24 +0800 +Subject: ocfs2: strict bound check before memcmp in ocfs2_xattr_find_entry() + +From: Ferry Meng + +[ Upstream commit af77c4fc1871847b528d58b7fdafb4aa1f6a9262 ] + +xattr in ocfs2 maybe 'non-indexed', which saved with additional space +requested. It's better to check if the memory is out of bound before +memcmp, although this possibility mainly comes from crafted poisonous +images. + +Link: https://lkml.kernel.org/r/20240520024024.1976129-2-joseph.qi@linux.alibaba.com +Signed-off-by: Ferry Meng +Signed-off-by: Joseph Qi +Reported-by: lei lu +Reviewed-by: Joseph Qi +Cc: Changwei Ge +Cc: Gang He +Cc: Joel Becker +Cc: Jun Piao +Cc: Junxiao Bi +Cc: Mark Fasheh +Signed-off-by: Andrew Morton +Signed-off-by: Sasha Levin +--- + fs/ocfs2/xattr.c | 15 ++++++++++----- + 1 file changed, 10 insertions(+), 5 deletions(-) + +diff --git a/fs/ocfs2/xattr.c b/fs/ocfs2/xattr.c +index 8aea94c907397..35c0cc2a51af8 100644 +--- a/fs/ocfs2/xattr.c ++++ b/fs/ocfs2/xattr.c +@@ -1068,7 +1068,7 @@ static int ocfs2_xattr_find_entry(struct inode *inode, int name_index, + { + struct ocfs2_xattr_entry *entry; + size_t name_len; +- int i, cmp = 1; ++ int i, name_offset, cmp = 1; + + if (name == NULL) + return -EINVAL; +@@ -1083,10 +1083,15 @@ static int ocfs2_xattr_find_entry(struct inode *inode, int name_index, + cmp = name_index - ocfs2_xattr_get_type(entry); + if (!cmp) + cmp = name_len - entry->xe_name_len; +- if (!cmp) +- cmp = memcmp(name, (xs->base + +- le16_to_cpu(entry->xe_name_offset)), +- name_len); ++ if (!cmp) { ++ name_offset = le16_to_cpu(entry->xe_name_offset); ++ if ((xs->base + name_offset + name_len) > xs->end) { ++ ocfs2_error(inode->i_sb, ++ "corrupted xattr entries"); ++ return -EFSCORRUPTED; ++ } ++ cmp = memcmp(name, (xs->base + name_offset), name_len); ++ } + if (cmp == 0) + break; + entry += 1; +-- +2.43.0 + diff --git a/queue-6.10/pinctrl-at91-make-it-work-with-current-gpiolib.patch b/queue-6.10/pinctrl-at91-make-it-work-with-current-gpiolib.patch new file mode 100644 index 00000000000..68019addc44 --- /dev/null +++ b/queue-6.10/pinctrl-at91-make-it-work-with-current-gpiolib.patch @@ -0,0 +1,51 @@ +From c3257838a4191a80725afee7cc9f4f35933f8c0d Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Wed, 31 Jul 2024 01:16:26 +0200 +Subject: pinctrl: at91: make it work with current gpiolib + +From: Thomas Blocher + +[ Upstream commit 752f387faaae0ae2e84d3f496922524785e77d60 ] + +pinctrl-at91 currently does not support the gpio-groups devicetree +property and has no pin-range. +Because of this at91 gpios stopped working since patch +commit 2ab73c6d8323fa1e ("gpio: Support GPIO controllers without pin-ranges") +This was discussed in the patches +commit fc328a7d1fcce263 ("gpio: Revert regression in sysfs-gpio (gpiolib.c)") +commit 56e337f2cf132632 ("Revert "gpio: Revert regression in sysfs-gpio (gpiolib.c)"") + +As a workaround manually set pin-range via gpiochip_add_pin_range() until +a) pinctrl-at91 is reworked to support devicetree gpio-groups +b) another solution as mentioned in +commit 56e337f2cf132632 ("Revert "gpio: Revert regression in sysfs-gpio (gpiolib.c)"") +is found + +Signed-off-by: Thomas Blocher +Link: https://lore.kernel.org/5b992862-355d-f0de-cd3d-ff99e67a4ff1@ek-dev.de +Signed-off-by: Linus Walleij +Signed-off-by: Sasha Levin +--- + drivers/pinctrl/pinctrl-at91.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/drivers/pinctrl/pinctrl-at91.c b/drivers/pinctrl/pinctrl-at91.c +index 5aa9d5c533c6a..d7b66928a4e50 100644 +--- a/drivers/pinctrl/pinctrl-at91.c ++++ b/drivers/pinctrl/pinctrl-at91.c +@@ -1409,8 +1409,11 @@ static int at91_pinctrl_probe(struct platform_device *pdev) + + /* We will handle a range of GPIO pins */ + for (i = 0; i < gpio_banks; i++) +- if (gpio_chips[i]) ++ if (gpio_chips[i]) { + pinctrl_add_gpio_range(info->pctl, &gpio_chips[i]->range); ++ gpiochip_add_pin_range(&gpio_chips[i]->chip, dev_name(info->pctl->dev), 0, ++ gpio_chips[i]->range.pin_base, gpio_chips[i]->range.npins); ++ } + + dev_info(dev, "initialized AT91 pinctrl driver\n"); + +-- +2.43.0 + diff --git a/queue-6.10/pinctrl-at91-make-it-work-with-current-gpiolib.patch-14635 b/queue-6.10/pinctrl-at91-make-it-work-with-current-gpiolib.patch-14635 new file mode 100644 index 00000000000..68019addc44 --- /dev/null +++ b/queue-6.10/pinctrl-at91-make-it-work-with-current-gpiolib.patch-14635 @@ -0,0 +1,51 @@ +From c3257838a4191a80725afee7cc9f4f35933f8c0d Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Wed, 31 Jul 2024 01:16:26 +0200 +Subject: pinctrl: at91: make it work with current gpiolib + +From: Thomas Blocher + +[ Upstream commit 752f387faaae0ae2e84d3f496922524785e77d60 ] + +pinctrl-at91 currently does not support the gpio-groups devicetree +property and has no pin-range. +Because of this at91 gpios stopped working since patch +commit 2ab73c6d8323fa1e ("gpio: Support GPIO controllers without pin-ranges") +This was discussed in the patches +commit fc328a7d1fcce263 ("gpio: Revert regression in sysfs-gpio (gpiolib.c)") +commit 56e337f2cf132632 ("Revert "gpio: Revert regression in sysfs-gpio (gpiolib.c)"") + +As a workaround manually set pin-range via gpiochip_add_pin_range() until +a) pinctrl-at91 is reworked to support devicetree gpio-groups +b) another solution as mentioned in +commit 56e337f2cf132632 ("Revert "gpio: Revert regression in sysfs-gpio (gpiolib.c)"") +is found + +Signed-off-by: Thomas Blocher +Link: https://lore.kernel.org/5b992862-355d-f0de-cd3d-ff99e67a4ff1@ek-dev.de +Signed-off-by: Linus Walleij +Signed-off-by: Sasha Levin +--- + drivers/pinctrl/pinctrl-at91.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/drivers/pinctrl/pinctrl-at91.c b/drivers/pinctrl/pinctrl-at91.c +index 5aa9d5c533c6a..d7b66928a4e50 100644 +--- a/drivers/pinctrl/pinctrl-at91.c ++++ b/drivers/pinctrl/pinctrl-at91.c +@@ -1409,8 +1409,11 @@ static int at91_pinctrl_probe(struct platform_device *pdev) + + /* We will handle a range of GPIO pins */ + for (i = 0; i < gpio_banks; i++) +- if (gpio_chips[i]) ++ if (gpio_chips[i]) { + pinctrl_add_gpio_range(info->pctl, &gpio_chips[i]->range); ++ gpiochip_add_pin_range(&gpio_chips[i]->chip, dev_name(info->pctl->dev), 0, ++ gpio_chips[i]->range.pin_base, gpio_chips[i]->range.npins); ++ } + + dev_info(dev, "initialized AT91 pinctrl driver\n"); + +-- +2.43.0 + diff --git a/queue-6.10/platform-x86-amd-pmf-make-asus-ga403-quirk-generic.patch b/queue-6.10/platform-x86-amd-pmf-make-asus-ga403-quirk-generic.patch new file mode 100644 index 00000000000..5c9fcda1f98 --- /dev/null +++ b/queue-6.10/platform-x86-amd-pmf-make-asus-ga403-quirk-generic.patch @@ -0,0 +1,40 @@ +From bc1545f3054738fb6d744d1a75cd668bb9766175 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Sat, 31 Aug 2024 12:39:05 +1200 +Subject: platform/x86/amd: pmf: Make ASUS GA403 quirk generic +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Luke D. Jones + +[ Upstream commit d34af755a533271f39cc7d86e49c0e74fde63a37 ] + +The original quirk should match to GA403U so that the full +range of GA403U models can benefit. + +Signed-off-by: Luke D. Jones +Link: https://lore.kernel.org/r/20240831003905.1060977-1-luke@ljones.dev +Reviewed-by: Ilpo Järvinen +Signed-off-by: Ilpo Järvinen +Signed-off-by: Sasha Levin +--- + drivers/platform/x86/amd/pmf/pmf-quirks.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/platform/x86/amd/pmf/pmf-quirks.c b/drivers/platform/x86/amd/pmf/pmf-quirks.c +index 460444cda1b29..48870ca52b413 100644 +--- a/drivers/platform/x86/amd/pmf/pmf-quirks.c ++++ b/drivers/platform/x86/amd/pmf/pmf-quirks.c +@@ -25,7 +25,7 @@ static const struct dmi_system_id fwbug_list[] = { + .ident = "ROG Zephyrus G14", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), +- DMI_MATCH(DMI_PRODUCT_NAME, "GA403UV"), ++ DMI_MATCH(DMI_PRODUCT_NAME, "GA403U"), + }, + .driver_data = &quirk_no_sps_bug, + }, +-- +2.43.0 + diff --git a/queue-6.10/platform-x86-amd-pmf-make-asus-ga403-quirk-generic.patch-18829 b/queue-6.10/platform-x86-amd-pmf-make-asus-ga403-quirk-generic.patch-18829 new file mode 100644 index 00000000000..5c9fcda1f98 --- /dev/null +++ b/queue-6.10/platform-x86-amd-pmf-make-asus-ga403-quirk-generic.patch-18829 @@ -0,0 +1,40 @@ +From bc1545f3054738fb6d744d1a75cd668bb9766175 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Sat, 31 Aug 2024 12:39:05 +1200 +Subject: platform/x86/amd: pmf: Make ASUS GA403 quirk generic +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Luke D. Jones + +[ Upstream commit d34af755a533271f39cc7d86e49c0e74fde63a37 ] + +The original quirk should match to GA403U so that the full +range of GA403U models can benefit. + +Signed-off-by: Luke D. Jones +Link: https://lore.kernel.org/r/20240831003905.1060977-1-luke@ljones.dev +Reviewed-by: Ilpo Järvinen +Signed-off-by: Ilpo Järvinen +Signed-off-by: Sasha Levin +--- + drivers/platform/x86/amd/pmf/pmf-quirks.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/platform/x86/amd/pmf/pmf-quirks.c b/drivers/platform/x86/amd/pmf/pmf-quirks.c +index 460444cda1b29..48870ca52b413 100644 +--- a/drivers/platform/x86/amd/pmf/pmf-quirks.c ++++ b/drivers/platform/x86/amd/pmf/pmf-quirks.c +@@ -25,7 +25,7 @@ static const struct dmi_system_id fwbug_list[] = { + .ident = "ROG Zephyrus G14", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), +- DMI_MATCH(DMI_PRODUCT_NAME, "GA403UV"), ++ DMI_MATCH(DMI_PRODUCT_NAME, "GA403U"), + }, + .driver_data = &quirk_no_sps_bug, + }, +-- +2.43.0 + diff --git a/queue-6.10/platform-x86-asus-wmi-fix-spurious-rfkill-on-ux8406m.patch b/queue-6.10/platform-x86-asus-wmi-fix-spurious-rfkill-on-ux8406m.patch new file mode 100644 index 00000000000..3cdc9752628 --- /dev/null +++ b/queue-6.10/platform-x86-asus-wmi-fix-spurious-rfkill-on-ux8406m.patch @@ -0,0 +1,96 @@ +From 3b184317df6cdb6854ddf4bdf2cb526516f215d9 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 23 Aug 2024 15:56:28 +0200 +Subject: platform/x86: asus-wmi: Fix spurious rfkill on UX8406MA +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Mathieu Fenniak + +[ Upstream commit 9286dfd5735b9cceb6a14bdf15e13400ccb60fe7 ] + +The Asus Zenbook Duo (UX8406MA) has a keyboard which can be +placed on the laptop to connect it via USB, or can be removed from the +laptop to reveal a hidden secondary display in which case the keyboard +operates via Bluetooth. + +When it is placed on the secondary display to connect via USB, it emits +a keypress for a wireless disable. This causes the rfkill system to be +activated disconnecting the current wifi connection, which doesn't +reflect the user's true intention. + +Detect this hardware and suppress any wireless switches from the +keyboard; this keyboard does not have a wireless toggle capability so +these presses are always spurious. + +Signed-off-by: Mathieu Fenniak +Reviewed-by: Ilpo Järvinen +Link: https://lore.kernel.org/r/20240823135630.128447-1-mathieu@fenniak.net +Signed-off-by: Ilpo Järvinen +Signed-off-by: Sasha Levin +--- + drivers/platform/x86/asus-nb-wmi.c | 20 +++++++++++++++++++- + drivers/platform/x86/asus-wmi.h | 1 + + 2 files changed, 20 insertions(+), 1 deletion(-) + +diff --git a/drivers/platform/x86/asus-nb-wmi.c b/drivers/platform/x86/asus-nb-wmi.c +index fceffe2082ec5..ed3633c5955d9 100644 +--- a/drivers/platform/x86/asus-nb-wmi.c ++++ b/drivers/platform/x86/asus-nb-wmi.c +@@ -145,6 +145,10 @@ static struct quirk_entry quirk_asus_ignore_fan = { + .wmi_ignore_fan = true, + }; + ++static struct quirk_entry quirk_asus_zenbook_duo_kbd = { ++ .ignore_key_wlan = true, ++}; ++ + static int dmi_matched(const struct dmi_system_id *dmi) + { + pr_info("Identified laptop model '%s'\n", dmi->ident); +@@ -516,6 +520,15 @@ static const struct dmi_system_id asus_quirks[] = { + }, + .driver_data = &quirk_asus_ignore_fan, + }, ++ { ++ .callback = dmi_matched, ++ .ident = "ASUS Zenbook Duo UX8406MA", ++ .matches = { ++ DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), ++ DMI_MATCH(DMI_PRODUCT_NAME, "UX8406MA"), ++ }, ++ .driver_data = &quirk_asus_zenbook_duo_kbd, ++ }, + {}, + }; + +@@ -630,7 +643,12 @@ static void asus_nb_wmi_key_filter(struct asus_wmi_driver *asus_wmi, int *code, + case 0x32: /* Volume Mute */ + if (atkbd_reports_vol_keys) + *code = ASUS_WMI_KEY_IGNORE; +- ++ break; ++ case 0x5D: /* Wireless console Toggle */ ++ case 0x5E: /* Wireless console Enable */ ++ case 0x5F: /* Wireless console Disable */ ++ if (quirks->ignore_key_wlan) ++ *code = ASUS_WMI_KEY_IGNORE; + break; + } + } +diff --git a/drivers/platform/x86/asus-wmi.h b/drivers/platform/x86/asus-wmi.h +index cc30f18538472..d02f15fd3482f 100644 +--- a/drivers/platform/x86/asus-wmi.h ++++ b/drivers/platform/x86/asus-wmi.h +@@ -40,6 +40,7 @@ struct quirk_entry { + bool wmi_force_als_set; + bool wmi_ignore_fan; + bool filter_i8042_e1_extended_codes; ++ bool ignore_key_wlan; + enum asus_wmi_tablet_switch_mode tablet_switch_mode; + int wapf; + /* +-- +2.43.0 + diff --git a/queue-6.10/platform-x86-asus-wmi-fix-spurious-rfkill-on-ux8406m.patch-9102 b/queue-6.10/platform-x86-asus-wmi-fix-spurious-rfkill-on-ux8406m.patch-9102 new file mode 100644 index 00000000000..3cdc9752628 --- /dev/null +++ b/queue-6.10/platform-x86-asus-wmi-fix-spurious-rfkill-on-ux8406m.patch-9102 @@ -0,0 +1,96 @@ +From 3b184317df6cdb6854ddf4bdf2cb526516f215d9 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 23 Aug 2024 15:56:28 +0200 +Subject: platform/x86: asus-wmi: Fix spurious rfkill on UX8406MA +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Mathieu Fenniak + +[ Upstream commit 9286dfd5735b9cceb6a14bdf15e13400ccb60fe7 ] + +The Asus Zenbook Duo (UX8406MA) has a keyboard which can be +placed on the laptop to connect it via USB, or can be removed from the +laptop to reveal a hidden secondary display in which case the keyboard +operates via Bluetooth. + +When it is placed on the secondary display to connect via USB, it emits +a keypress for a wireless disable. This causes the rfkill system to be +activated disconnecting the current wifi connection, which doesn't +reflect the user's true intention. + +Detect this hardware and suppress any wireless switches from the +keyboard; this keyboard does not have a wireless toggle capability so +these presses are always spurious. + +Signed-off-by: Mathieu Fenniak +Reviewed-by: Ilpo Järvinen +Link: https://lore.kernel.org/r/20240823135630.128447-1-mathieu@fenniak.net +Signed-off-by: Ilpo Järvinen +Signed-off-by: Sasha Levin +--- + drivers/platform/x86/asus-nb-wmi.c | 20 +++++++++++++++++++- + drivers/platform/x86/asus-wmi.h | 1 + + 2 files changed, 20 insertions(+), 1 deletion(-) + +diff --git a/drivers/platform/x86/asus-nb-wmi.c b/drivers/platform/x86/asus-nb-wmi.c +index fceffe2082ec5..ed3633c5955d9 100644 +--- a/drivers/platform/x86/asus-nb-wmi.c ++++ b/drivers/platform/x86/asus-nb-wmi.c +@@ -145,6 +145,10 @@ static struct quirk_entry quirk_asus_ignore_fan = { + .wmi_ignore_fan = true, + }; + ++static struct quirk_entry quirk_asus_zenbook_duo_kbd = { ++ .ignore_key_wlan = true, ++}; ++ + static int dmi_matched(const struct dmi_system_id *dmi) + { + pr_info("Identified laptop model '%s'\n", dmi->ident); +@@ -516,6 +520,15 @@ static const struct dmi_system_id asus_quirks[] = { + }, + .driver_data = &quirk_asus_ignore_fan, + }, ++ { ++ .callback = dmi_matched, ++ .ident = "ASUS Zenbook Duo UX8406MA", ++ .matches = { ++ DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), ++ DMI_MATCH(DMI_PRODUCT_NAME, "UX8406MA"), ++ }, ++ .driver_data = &quirk_asus_zenbook_duo_kbd, ++ }, + {}, + }; + +@@ -630,7 +643,12 @@ static void asus_nb_wmi_key_filter(struct asus_wmi_driver *asus_wmi, int *code, + case 0x32: /* Volume Mute */ + if (atkbd_reports_vol_keys) + *code = ASUS_WMI_KEY_IGNORE; +- ++ break; ++ case 0x5D: /* Wireless console Toggle */ ++ case 0x5E: /* Wireless console Enable */ ++ case 0x5F: /* Wireless console Disable */ ++ if (quirks->ignore_key_wlan) ++ *code = ASUS_WMI_KEY_IGNORE; + break; + } + } +diff --git a/drivers/platform/x86/asus-wmi.h b/drivers/platform/x86/asus-wmi.h +index cc30f18538472..d02f15fd3482f 100644 +--- a/drivers/platform/x86/asus-wmi.h ++++ b/drivers/platform/x86/asus-wmi.h +@@ -40,6 +40,7 @@ struct quirk_entry { + bool wmi_force_als_set; + bool wmi_ignore_fan; + bool filter_i8042_e1_extended_codes; ++ bool ignore_key_wlan; + enum asus_wmi_tablet_switch_mode tablet_switch_mode; + int wapf; + /* +-- +2.43.0 + diff --git a/queue-6.10/platform-x86-x86-android-tablets-make-lenovo-yoga-ta.patch b/queue-6.10/platform-x86-x86-android-tablets-make-lenovo-yoga-ta.patch new file mode 100644 index 00000000000..212c71a090a --- /dev/null +++ b/queue-6.10/platform-x86-x86-android-tablets-make-lenovo-yoga-ta.patch @@ -0,0 +1,46 @@ +From e7e134cb2659ee909b4dd991add929f7369c18e0 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Sun, 25 Aug 2024 15:24:15 +0200 +Subject: platform/x86: x86-android-tablets: Make Lenovo Yoga Tab 3 X90F DMI + match less strict +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Hans de Goede + +[ Upstream commit a3379eca24a7da5118a7d090da6f8eb8611acac8 ] + +There are 2G and 4G RAM versions of the Lenovo Yoga Tab 3 X90F and it +turns out that the 2G version has a DMI product name of +"CHERRYVIEW D1 PLATFORM" where as the 4G version has +"CHERRYVIEW C0 PLATFORM". The sys-vendor + product-version check are +unique enough that the product-name check is not necessary. + +Drop the product-name check so that the existing DMI match for the 4G +RAM version also matches the 2G RAM version. + +Signed-off-by: Hans de Goede +Link: https://lore.kernel.org/r/20240825132415.8307-1-hdegoede@redhat.com +Reviewed-by: Ilpo Järvinen +Signed-off-by: Ilpo Järvinen +Signed-off-by: Sasha Levin +--- + drivers/platform/x86/x86-android-tablets/dmi.c | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/drivers/platform/x86/x86-android-tablets/dmi.c b/drivers/platform/x86/x86-android-tablets/dmi.c +index 141a2d25e83be..387dd092c4dd0 100644 +--- a/drivers/platform/x86/x86-android-tablets/dmi.c ++++ b/drivers/platform/x86/x86-android-tablets/dmi.c +@@ -140,7 +140,6 @@ const struct dmi_system_id x86_android_tablet_ids[] __initconst = { + /* Lenovo Yoga Tab 3 Pro YT3-X90F */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Intel Corporation"), +- DMI_MATCH(DMI_PRODUCT_NAME, "CHERRYVIEW D1 PLATFORM"), + DMI_MATCH(DMI_PRODUCT_VERSION, "Blade3-10A-001"), + }, + .driver_data = (void *)&lenovo_yt3_info, +-- +2.43.0 + diff --git a/queue-6.10/platform-x86-x86-android-tablets-make-lenovo-yoga-ta.patch-6727 b/queue-6.10/platform-x86-x86-android-tablets-make-lenovo-yoga-ta.patch-6727 new file mode 100644 index 00000000000..212c71a090a --- /dev/null +++ b/queue-6.10/platform-x86-x86-android-tablets-make-lenovo-yoga-ta.patch-6727 @@ -0,0 +1,46 @@ +From e7e134cb2659ee909b4dd991add929f7369c18e0 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Sun, 25 Aug 2024 15:24:15 +0200 +Subject: platform/x86: x86-android-tablets: Make Lenovo Yoga Tab 3 X90F DMI + match less strict +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Hans de Goede + +[ Upstream commit a3379eca24a7da5118a7d090da6f8eb8611acac8 ] + +There are 2G and 4G RAM versions of the Lenovo Yoga Tab 3 X90F and it +turns out that the 2G version has a DMI product name of +"CHERRYVIEW D1 PLATFORM" where as the 4G version has +"CHERRYVIEW C0 PLATFORM". The sys-vendor + product-version check are +unique enough that the product-name check is not necessary. + +Drop the product-name check so that the existing DMI match for the 4G +RAM version also matches the 2G RAM version. + +Signed-off-by: Hans de Goede +Link: https://lore.kernel.org/r/20240825132415.8307-1-hdegoede@redhat.com +Reviewed-by: Ilpo Järvinen +Signed-off-by: Ilpo Järvinen +Signed-off-by: Sasha Levin +--- + drivers/platform/x86/x86-android-tablets/dmi.c | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/drivers/platform/x86/x86-android-tablets/dmi.c b/drivers/platform/x86/x86-android-tablets/dmi.c +index 141a2d25e83be..387dd092c4dd0 100644 +--- a/drivers/platform/x86/x86-android-tablets/dmi.c ++++ b/drivers/platform/x86/x86-android-tablets/dmi.c +@@ -140,7 +140,6 @@ const struct dmi_system_id x86_android_tablet_ids[] __initconst = { + /* Lenovo Yoga Tab 3 Pro YT3-X90F */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Intel Corporation"), +- DMI_MATCH(DMI_PRODUCT_NAME, "CHERRYVIEW D1 PLATFORM"), + DMI_MATCH(DMI_PRODUCT_VERSION, "Blade3-10A-001"), + }, + .driver_data = (void *)&lenovo_yt3_info, +-- +2.43.0 + diff --git a/queue-6.10/scsi-lpfc-fix-overflow-build-issue.patch b/queue-6.10/scsi-lpfc-fix-overflow-build-issue.patch new file mode 100644 index 00000000000..5d5ca843abb --- /dev/null +++ b/queue-6.10/scsi-lpfc-fix-overflow-build-issue.patch @@ -0,0 +1,54 @@ +From 6a5cc6ed82c9a738f17e066a7ec672e6041876e1 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Tue, 20 Aug 2024 23:51:31 -0700 +Subject: scsi: lpfc: Fix overflow build issue + +From: Sherry Yang + +[ Upstream commit 3417c9574e368f0330637505f00d3814ca8854d2 ] + +Build failed while enabling "CONFIG_GCOV_KERNEL=y" and +"CONFIG_GCOV_PROFILE_ALL=y" with following error: + +BUILDSTDERR: drivers/scsi/lpfc/lpfc_bsg.c: In function 'lpfc_get_cgnbuf_info': +BUILDSTDERR: ./include/linux/fortify-string.h:114:33: error: '__builtin_memcpy' accessing 18446744073709551615 bytes at offsets 0 and 0 overlaps 9223372036854775807 bytes at offset -9223372036854775808 [-Werror=restrict] +BUILDSTDERR: 114 | #define __underlying_memcpy __builtin_memcpy +BUILDSTDERR: | ^ +BUILDSTDERR: ./include/linux/fortify-string.h:637:9: note: in expansion of macro '__underlying_memcpy' +BUILDSTDERR: 637 | __underlying_##op(p, q, __fortify_size); \ +BUILDSTDERR: | ^~~~~~~~~~~~~ +BUILDSTDERR: ./include/linux/fortify-string.h:682:26: note: in expansion of macro '__fortify_memcpy_chk' +BUILDSTDERR: 682 | #define memcpy(p, q, s) __fortify_memcpy_chk(p, q, s, \ +BUILDSTDERR: | ^~~~~~~~~~~~~~~~~~~~ +BUILDSTDERR: drivers/scsi/lpfc/lpfc_bsg.c:5468:9: note: in expansion of macro 'memcpy' +BUILDSTDERR: 5468 | memcpy(cgn_buff, cp, cinfosz); +BUILDSTDERR: | ^~~~~~ + +This happens from the commit 06bb7fc0feee ("kbuild: turn on -Wrestrict by +default"). Address this issue by using size_t type. + +Signed-off-by: Sherry Yang +Link: https://lore.kernel.org/r/20240821065131.1180791-1-sherry.yang@oracle.com +Reviewed-by: Justin Tee +Signed-off-by: Martin K. Petersen +Signed-off-by: Sasha Levin +--- + drivers/scsi/lpfc/lpfc_bsg.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/scsi/lpfc/lpfc_bsg.c b/drivers/scsi/lpfc/lpfc_bsg.c +index 4156419c52c78..4756a3f825310 100644 +--- a/drivers/scsi/lpfc/lpfc_bsg.c ++++ b/drivers/scsi/lpfc/lpfc_bsg.c +@@ -5410,7 +5410,7 @@ lpfc_get_cgnbuf_info(struct bsg_job *job) + struct get_cgnbuf_info_req *cgnbuf_req; + struct lpfc_cgn_info *cp; + uint8_t *cgn_buff; +- int size, cinfosz; ++ size_t size, cinfosz; + int rc = 0; + + if (job->request_len < sizeof(struct fc_bsg_request) + +-- +2.43.0 + diff --git a/queue-6.10/scsi-lpfc-fix-overflow-build-issue.patch-6384 b/queue-6.10/scsi-lpfc-fix-overflow-build-issue.patch-6384 new file mode 100644 index 00000000000..5d5ca843abb --- /dev/null +++ b/queue-6.10/scsi-lpfc-fix-overflow-build-issue.patch-6384 @@ -0,0 +1,54 @@ +From 6a5cc6ed82c9a738f17e066a7ec672e6041876e1 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Tue, 20 Aug 2024 23:51:31 -0700 +Subject: scsi: lpfc: Fix overflow build issue + +From: Sherry Yang + +[ Upstream commit 3417c9574e368f0330637505f00d3814ca8854d2 ] + +Build failed while enabling "CONFIG_GCOV_KERNEL=y" and +"CONFIG_GCOV_PROFILE_ALL=y" with following error: + +BUILDSTDERR: drivers/scsi/lpfc/lpfc_bsg.c: In function 'lpfc_get_cgnbuf_info': +BUILDSTDERR: ./include/linux/fortify-string.h:114:33: error: '__builtin_memcpy' accessing 18446744073709551615 bytes at offsets 0 and 0 overlaps 9223372036854775807 bytes at offset -9223372036854775808 [-Werror=restrict] +BUILDSTDERR: 114 | #define __underlying_memcpy __builtin_memcpy +BUILDSTDERR: | ^ +BUILDSTDERR: ./include/linux/fortify-string.h:637:9: note: in expansion of macro '__underlying_memcpy' +BUILDSTDERR: 637 | __underlying_##op(p, q, __fortify_size); \ +BUILDSTDERR: | ^~~~~~~~~~~~~ +BUILDSTDERR: ./include/linux/fortify-string.h:682:26: note: in expansion of macro '__fortify_memcpy_chk' +BUILDSTDERR: 682 | #define memcpy(p, q, s) __fortify_memcpy_chk(p, q, s, \ +BUILDSTDERR: | ^~~~~~~~~~~~~~~~~~~~ +BUILDSTDERR: drivers/scsi/lpfc/lpfc_bsg.c:5468:9: note: in expansion of macro 'memcpy' +BUILDSTDERR: 5468 | memcpy(cgn_buff, cp, cinfosz); +BUILDSTDERR: | ^~~~~~ + +This happens from the commit 06bb7fc0feee ("kbuild: turn on -Wrestrict by +default"). Address this issue by using size_t type. + +Signed-off-by: Sherry Yang +Link: https://lore.kernel.org/r/20240821065131.1180791-1-sherry.yang@oracle.com +Reviewed-by: Justin Tee +Signed-off-by: Martin K. Petersen +Signed-off-by: Sasha Levin +--- + drivers/scsi/lpfc/lpfc_bsg.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/scsi/lpfc/lpfc_bsg.c b/drivers/scsi/lpfc/lpfc_bsg.c +index 4156419c52c78..4756a3f825310 100644 +--- a/drivers/scsi/lpfc/lpfc_bsg.c ++++ b/drivers/scsi/lpfc/lpfc_bsg.c +@@ -5410,7 +5410,7 @@ lpfc_get_cgnbuf_info(struct bsg_job *job) + struct get_cgnbuf_info_req *cgnbuf_req; + struct lpfc_cgn_info *cp; + uint8_t *cgn_buff; +- int size, cinfosz; ++ size_t size, cinfosz; + int rc = 0; + + if (job->request_len < sizeof(struct fc_bsg_request) + +-- +2.43.0 + diff --git a/queue-6.10/series b/queue-6.10/series index e69de29bb2d..58d3f6851f7 100644 --- a/queue-6.10/series +++ b/queue-6.10/series @@ -0,0 +1,90 @@ +asoc-sof-mediatek-add-missing-board-compatible.patch +asoc-mediatek-mt8188-mark-afe_dac_con0-register-as-v.patch +asoc-allow-module-autoloading-for-table-db1200_pids.patch +asoc-allow-module-autoloading-for-table-board_ids.patch +alsa-hda-realtek-fixed-alc256-headphone-no-sound.patch +alsa-hda-realtek-fixed-alc285-headphone-no-sound.patch +scsi-lpfc-fix-overflow-build-issue.patch +pinctrl-at91-make-it-work-with-current-gpiolib.patch +hwmon-asus-ec-sensors-remove-vrm-temp-x570-e-gaming.patch +microblaze-don-t-treat-zero-reserved-memory-regions-.patch +platform-x86-asus-wmi-fix-spurious-rfkill-on-ux8406m.patch +platform-x86-x86-android-tablets-make-lenovo-yoga-ta.patch +net-ftgmac100-ensure-tx-descriptor-updates-are-visib.patch +loongarch-define-arch_irq_init_flags-as-irq_noprobe.patch +loongarch-kvm-invalidate-guest-steal-time-address-on.patch +wifi-iwlwifi-lower-message-level-for-fw-buffer-desti.patch +wifi-iwlwifi-mvm-fix-iwl_mvm_scan_fits-calculation.patch +wifi-iwlwifi-mvm-fix-iwl_mvm_max_scan_ie_fw_cmd_room.patch +wifi-iwlwifi-mvm-pause-tcm-when-the-firmware-is-stop.patch +wifi-iwlwifi-mvm-don-t-wait-for-tx-queues-if-firmwar.patch +wifi-mac80211-free-skb-on-error-path-in-ieee80211_be.patch +wifi-iwlwifi-clear-trans-state-earlier-upon-error.patch +can-m_can-limit-coalescing-to-peripheral-instances.patch +can-mcp251xfd-mcp251xfd_ring_init-check-tx-coalescin.patch +asoc-intel-soc-acpi-cht-make-lenovo-yoga-tab-3-x90f-.patch +asoc-intel-fix-module-autoloading.patch +asoc-google-fix-module-autoloading.patch +asoc-tda7419-fix-module-autoloading.patch +asoc-fix-module-autoloading.patch +asoc-mediatek-mt8188-mt6359-modify-key.patch +spi-spidev-add-an-entry-for-elgin-jg10309-01.patch +asoc-amd-yc-add-a-quirk-for-msi-bravo-17-d7vek.patch +clk-qcom-gcc-sm8650-don-t-use-shared-clk_ops-for-qup.patch +alsa-hda-add-hdmi-codec-id-for-intel-ptl.patch +drm-komeda-fix-an-issue-related-to-normalized-zpos.patch +spi-bcm63xx-enable-module-autoloading.patch +smb-client-fix-hang-in-wait_for_response-for-negprot.patch +platform-x86-amd-pmf-make-asus-ga403-quirk-generic.patch +ice-check-for-xdp-rings-instead-of-bpf-program-when-.patch +x86-hyperv-set-x86_feature_tsc_known_freq-when-hyper.patch +tools-hv-rm-.-.cmd-when-make-clean.patch +drm-amd-pm-fix-the-pp_dpm_pcie-issue-on-smu-v14.0.2-.patch +spi-spidev-add-missing-spi_device_id-for-jg10309-01.patch +ocfs2-add-bounds-checking-to-ocfs2_xattr_find_entry.patch +ocfs2-strict-bound-check-before-memcmp-in-ocfs2_xatt.patch +asoc-sof-mediatek-add-missing-board-compatible.patch-22157 +asoc-mediatek-mt8188-mark-afe_dac_con0-register-as-v.patch-2574 +asoc-allow-module-autoloading-for-table-db1200_pids.patch-5972 +asoc-allow-module-autoloading-for-table-board_ids.patch-18702 +alsa-hda-realtek-fixed-alc256-headphone-no-sound.patch-27242 +alsa-hda-realtek-fixed-alc285-headphone-no-sound.patch-23034 +scsi-lpfc-fix-overflow-build-issue.patch-6384 +pinctrl-at91-make-it-work-with-current-gpiolib.patch-14635 +hwmon-asus-ec-sensors-remove-vrm-temp-x570-e-gaming.patch-578 +microblaze-don-t-treat-zero-reserved-memory-regions-.patch-3060 +platform-x86-asus-wmi-fix-spurious-rfkill-on-ux8406m.patch-9102 +platform-x86-x86-android-tablets-make-lenovo-yoga-ta.patch-6727 +net-ftgmac100-ensure-tx-descriptor-updates-are-visib.patch-4531 +loongarch-define-arch_irq_init_flags-as-irq_noprobe.patch-11197 +loongarch-kvm-invalidate-guest-steal-time-address-on.patch-7425 +wifi-iwlwifi-lower-message-level-for-fw-buffer-desti.patch-14318 +wifi-iwlwifi-mvm-fix-iwl_mvm_scan_fits-calculation.patch-16713 +wifi-iwlwifi-mvm-fix-iwl_mvm_max_scan_ie_fw_cmd_room.patch-3044 +wifi-iwlwifi-mvm-pause-tcm-when-the-firmware-is-stop.patch-21290 +wifi-iwlwifi-mvm-don-t-wait-for-tx-queues-if-firmwar.patch-14089 +wifi-mac80211-free-skb-on-error-path-in-ieee80211_be.patch-27967 +wifi-iwlwifi-clear-trans-state-earlier-upon-error.patch-6875 +can-m_can-limit-coalescing-to-peripheral-instances.patch-975 +can-mcp251xfd-mcp251xfd_ring_init-check-tx-coalescin.patch-11796 +asoc-intel-soc-acpi-cht-make-lenovo-yoga-tab-3-x90f-.patch-32257 +asoc-intel-fix-module-autoloading.patch-15410 +asoc-google-fix-module-autoloading.patch-29410 +asoc-tda7419-fix-module-autoloading.patch-30653 +asoc-fix-module-autoloading.patch-11949 +asoc-mediatek-mt8188-mt6359-modify-key.patch-23689 +spi-spidev-add-an-entry-for-elgin-jg10309-01.patch-15611 +asoc-amd-yc-add-a-quirk-for-msi-bravo-17-d7vek.patch-18379 +clk-qcom-gcc-sm8650-don-t-use-shared-clk_ops-for-qup.patch-24586 +alsa-hda-add-hdmi-codec-id-for-intel-ptl.patch-24027 +drm-komeda-fix-an-issue-related-to-normalized-zpos.patch-21818 +spi-bcm63xx-enable-module-autoloading.patch-23926 +smb-client-fix-hang-in-wait_for_response-for-negprot.patch-8607 +platform-x86-amd-pmf-make-asus-ga403-quirk-generic.patch-18829 +ice-check-for-xdp-rings-instead-of-bpf-program-when-.patch-24037 +x86-hyperv-set-x86_feature_tsc_known_freq-when-hyper.patch-8101 +tools-hv-rm-.-.cmd-when-make-clean.patch-27420 +drm-amd-pm-fix-the-pp_dpm_pcie-issue-on-smu-v14.0.2-.patch-15721 +spi-spidev-add-missing-spi_device_id-for-jg10309-01.patch-10107 +ocfs2-add-bounds-checking-to-ocfs2_xattr_find_entry.patch-10443 +ocfs2-strict-bound-check-before-memcmp-in-ocfs2_xatt.patch-24730 diff --git a/queue-6.10/smb-client-fix-hang-in-wait_for_response-for-negprot.patch b/queue-6.10/smb-client-fix-hang-in-wait_for_response-for-negprot.patch new file mode 100644 index 00000000000..4a9ddb61427 --- /dev/null +++ b/queue-6.10/smb-client-fix-hang-in-wait_for_response-for-negprot.patch @@ -0,0 +1,61 @@ +From d39424e890d5303e70f10f5c405e36b78396c9ec Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Sat, 31 Aug 2024 21:40:28 -0300 +Subject: smb: client: fix hang in wait_for_response() for negproto + +From: Paulo Alcantara + +[ Upstream commit 7ccc1465465d78e6411b7bd730d06e7435802b5c ] + +Call cifs_reconnect() to wake up processes waiting on negotiate +protocol to handle the case where server abruptly shut down and had no +chance to properly close the socket. + +Simple reproducer: + + ssh 192.168.2.100 pkill -STOP smbd + mount.cifs //192.168.2.100/test /mnt -o ... [never returns] + +Cc: Rickard Andersson +Signed-off-by: Paulo Alcantara (Red Hat) +Signed-off-by: Steve French +Signed-off-by: Sasha Levin +--- + fs/smb/client/connect.c | 14 +++++++++++++- + 1 file changed, 13 insertions(+), 1 deletion(-) + +diff --git a/fs/smb/client/connect.c b/fs/smb/client/connect.c +index d2307162a2de1..e325e06357ffb 100644 +--- a/fs/smb/client/connect.c ++++ b/fs/smb/client/connect.c +@@ -656,6 +656,19 @@ allocate_buffers(struct TCP_Server_Info *server) + static bool + server_unresponsive(struct TCP_Server_Info *server) + { ++ /* ++ * If we're in the process of mounting a share or reconnecting a session ++ * and the server abruptly shut down (e.g. socket wasn't closed, packet ++ * had been ACK'ed but no SMB response), don't wait longer than 20s to ++ * negotiate protocol. ++ */ ++ spin_lock(&server->srv_lock); ++ if (server->tcpStatus == CifsInNegotiate && ++ time_after(jiffies, server->lstrp + 20 * HZ)) { ++ spin_unlock(&server->srv_lock); ++ cifs_reconnect(server, false); ++ return true; ++ } + /* + * We need to wait 3 echo intervals to make sure we handle such + * situations right: +@@ -667,7 +680,6 @@ server_unresponsive(struct TCP_Server_Info *server) + * 65s kernel_recvmsg times out, and we see that we haven't gotten + * a response in >60s. + */ +- spin_lock(&server->srv_lock); + if ((server->tcpStatus == CifsGood || + server->tcpStatus == CifsNeedNegotiate) && + (!server->ops->can_echo || server->ops->can_echo(server)) && +-- +2.43.0 + diff --git a/queue-6.10/smb-client-fix-hang-in-wait_for_response-for-negprot.patch-8607 b/queue-6.10/smb-client-fix-hang-in-wait_for_response-for-negprot.patch-8607 new file mode 100644 index 00000000000..4a9ddb61427 --- /dev/null +++ b/queue-6.10/smb-client-fix-hang-in-wait_for_response-for-negprot.patch-8607 @@ -0,0 +1,61 @@ +From d39424e890d5303e70f10f5c405e36b78396c9ec Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Sat, 31 Aug 2024 21:40:28 -0300 +Subject: smb: client: fix hang in wait_for_response() for negproto + +From: Paulo Alcantara + +[ Upstream commit 7ccc1465465d78e6411b7bd730d06e7435802b5c ] + +Call cifs_reconnect() to wake up processes waiting on negotiate +protocol to handle the case where server abruptly shut down and had no +chance to properly close the socket. + +Simple reproducer: + + ssh 192.168.2.100 pkill -STOP smbd + mount.cifs //192.168.2.100/test /mnt -o ... [never returns] + +Cc: Rickard Andersson +Signed-off-by: Paulo Alcantara (Red Hat) +Signed-off-by: Steve French +Signed-off-by: Sasha Levin +--- + fs/smb/client/connect.c | 14 +++++++++++++- + 1 file changed, 13 insertions(+), 1 deletion(-) + +diff --git a/fs/smb/client/connect.c b/fs/smb/client/connect.c +index d2307162a2de1..e325e06357ffb 100644 +--- a/fs/smb/client/connect.c ++++ b/fs/smb/client/connect.c +@@ -656,6 +656,19 @@ allocate_buffers(struct TCP_Server_Info *server) + static bool + server_unresponsive(struct TCP_Server_Info *server) + { ++ /* ++ * If we're in the process of mounting a share or reconnecting a session ++ * and the server abruptly shut down (e.g. socket wasn't closed, packet ++ * had been ACK'ed but no SMB response), don't wait longer than 20s to ++ * negotiate protocol. ++ */ ++ spin_lock(&server->srv_lock); ++ if (server->tcpStatus == CifsInNegotiate && ++ time_after(jiffies, server->lstrp + 20 * HZ)) { ++ spin_unlock(&server->srv_lock); ++ cifs_reconnect(server, false); ++ return true; ++ } + /* + * We need to wait 3 echo intervals to make sure we handle such + * situations right: +@@ -667,7 +680,6 @@ server_unresponsive(struct TCP_Server_Info *server) + * 65s kernel_recvmsg times out, and we see that we haven't gotten + * a response in >60s. + */ +- spin_lock(&server->srv_lock); + if ((server->tcpStatus == CifsGood || + server->tcpStatus == CifsNeedNegotiate) && + (!server->ops->can_echo || server->ops->can_echo(server)) && +-- +2.43.0 + diff --git a/queue-6.10/spi-bcm63xx-enable-module-autoloading.patch b/queue-6.10/spi-bcm63xx-enable-module-autoloading.patch new file mode 100644 index 00000000000..430bbd39cc3 --- /dev/null +++ b/queue-6.10/spi-bcm63xx-enable-module-autoloading.patch @@ -0,0 +1,35 @@ +From 50099ae73bda1cad5a18e4d8b5533651625d6e39 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Sat, 31 Aug 2024 09:42:31 +0000 +Subject: spi: bcm63xx: Enable module autoloading + +From: Liao Chen + +[ Upstream commit 709df70a20e990d262c473ad9899314039e8ec82 ] + +Add MODULE_DEVICE_TABLE(), so modules could be properly autoloaded based +on the alias from of_device_id table. + +Signed-off-by: Liao Chen +Link: https://patch.msgid.link/20240831094231.795024-1-liaochen4@huawei.com +Signed-off-by: Mark Brown +Signed-off-by: Sasha Levin +--- + drivers/spi/spi-bcm63xx.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/drivers/spi/spi-bcm63xx.c b/drivers/spi/spi-bcm63xx.c +index aac41bd05f98f..2fb8d4e55c777 100644 +--- a/drivers/spi/spi-bcm63xx.c ++++ b/drivers/spi/spi-bcm63xx.c +@@ -472,6 +472,7 @@ static const struct of_device_id bcm63xx_spi_of_match[] = { + { .compatible = "brcm,bcm6358-spi", .data = &bcm6358_spi_reg_offsets }, + { }, + }; ++MODULE_DEVICE_TABLE(of, bcm63xx_spi_of_match); + + static int bcm63xx_spi_probe(struct platform_device *pdev) + { +-- +2.43.0 + diff --git a/queue-6.10/spi-bcm63xx-enable-module-autoloading.patch-23926 b/queue-6.10/spi-bcm63xx-enable-module-autoloading.patch-23926 new file mode 100644 index 00000000000..430bbd39cc3 --- /dev/null +++ b/queue-6.10/spi-bcm63xx-enable-module-autoloading.patch-23926 @@ -0,0 +1,35 @@ +From 50099ae73bda1cad5a18e4d8b5533651625d6e39 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Sat, 31 Aug 2024 09:42:31 +0000 +Subject: spi: bcm63xx: Enable module autoloading + +From: Liao Chen + +[ Upstream commit 709df70a20e990d262c473ad9899314039e8ec82 ] + +Add MODULE_DEVICE_TABLE(), so modules could be properly autoloaded based +on the alias from of_device_id table. + +Signed-off-by: Liao Chen +Link: https://patch.msgid.link/20240831094231.795024-1-liaochen4@huawei.com +Signed-off-by: Mark Brown +Signed-off-by: Sasha Levin +--- + drivers/spi/spi-bcm63xx.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/drivers/spi/spi-bcm63xx.c b/drivers/spi/spi-bcm63xx.c +index aac41bd05f98f..2fb8d4e55c777 100644 +--- a/drivers/spi/spi-bcm63xx.c ++++ b/drivers/spi/spi-bcm63xx.c +@@ -472,6 +472,7 @@ static const struct of_device_id bcm63xx_spi_of_match[] = { + { .compatible = "brcm,bcm6358-spi", .data = &bcm6358_spi_reg_offsets }, + { }, + }; ++MODULE_DEVICE_TABLE(of, bcm63xx_spi_of_match); + + static int bcm63xx_spi_probe(struct platform_device *pdev) + { +-- +2.43.0 + diff --git a/queue-6.10/spi-spidev-add-an-entry-for-elgin-jg10309-01.patch b/queue-6.10/spi-spidev-add-an-entry-for-elgin-jg10309-01.patch new file mode 100644 index 00000000000..15b21d29175 --- /dev/null +++ b/queue-6.10/spi-spidev-add-an-entry-for-elgin-jg10309-01.patch @@ -0,0 +1,38 @@ +From 6362c1961fed70c174906aa837ff7e9cda738e21 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Wed, 28 Aug 2024 15:00:56 -0300 +Subject: spi: spidev: Add an entry for elgin,jg10309-01 + +From: Fabio Estevam + +[ Upstream commit 5f3eee1eef5d0edd23d8ac0974f56283649a1512 ] + +The rv1108-elgin-r1 board has an LCD controlled via SPI in userspace. +The marking on the LCD is JG10309-01. + +Add the "elgin,jg10309-01" compatible string. + +Signed-off-by: Fabio Estevam +Reviewed-by: Heiko Stuebner +Link: https://patch.msgid.link/20240828180057.3167190-2-festevam@gmail.com +Signed-off-by: Mark Brown +Signed-off-by: Sasha Levin +--- + drivers/spi/spidev.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/drivers/spi/spidev.c b/drivers/spi/spidev.c +index 5304728c68c20..14bf0fa65befe 100644 +--- a/drivers/spi/spidev.c ++++ b/drivers/spi/spidev.c +@@ -731,6 +731,7 @@ static int spidev_of_check(struct device *dev) + static const struct of_device_id spidev_dt_ids[] = { + { .compatible = "cisco,spi-petra", .data = &spidev_of_check }, + { .compatible = "dh,dhcom-board", .data = &spidev_of_check }, ++ { .compatible = "elgin,jg10309-01", .data = &spidev_of_check }, + { .compatible = "lineartechnology,ltc2488", .data = &spidev_of_check }, + { .compatible = "lwn,bk4", .data = &spidev_of_check }, + { .compatible = "menlo,m53cpld", .data = &spidev_of_check }, +-- +2.43.0 + diff --git a/queue-6.10/spi-spidev-add-an-entry-for-elgin-jg10309-01.patch-15611 b/queue-6.10/spi-spidev-add-an-entry-for-elgin-jg10309-01.patch-15611 new file mode 100644 index 00000000000..15b21d29175 --- /dev/null +++ b/queue-6.10/spi-spidev-add-an-entry-for-elgin-jg10309-01.patch-15611 @@ -0,0 +1,38 @@ +From 6362c1961fed70c174906aa837ff7e9cda738e21 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Wed, 28 Aug 2024 15:00:56 -0300 +Subject: spi: spidev: Add an entry for elgin,jg10309-01 + +From: Fabio Estevam + +[ Upstream commit 5f3eee1eef5d0edd23d8ac0974f56283649a1512 ] + +The rv1108-elgin-r1 board has an LCD controlled via SPI in userspace. +The marking on the LCD is JG10309-01. + +Add the "elgin,jg10309-01" compatible string. + +Signed-off-by: Fabio Estevam +Reviewed-by: Heiko Stuebner +Link: https://patch.msgid.link/20240828180057.3167190-2-festevam@gmail.com +Signed-off-by: Mark Brown +Signed-off-by: Sasha Levin +--- + drivers/spi/spidev.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/drivers/spi/spidev.c b/drivers/spi/spidev.c +index 5304728c68c20..14bf0fa65befe 100644 +--- a/drivers/spi/spidev.c ++++ b/drivers/spi/spidev.c +@@ -731,6 +731,7 @@ static int spidev_of_check(struct device *dev) + static const struct of_device_id spidev_dt_ids[] = { + { .compatible = "cisco,spi-petra", .data = &spidev_of_check }, + { .compatible = "dh,dhcom-board", .data = &spidev_of_check }, ++ { .compatible = "elgin,jg10309-01", .data = &spidev_of_check }, + { .compatible = "lineartechnology,ltc2488", .data = &spidev_of_check }, + { .compatible = "lwn,bk4", .data = &spidev_of_check }, + { .compatible = "menlo,m53cpld", .data = &spidev_of_check }, +-- +2.43.0 + diff --git a/queue-6.10/spi-spidev-add-missing-spi_device_id-for-jg10309-01.patch b/queue-6.10/spi-spidev-add-missing-spi_device_id-for-jg10309-01.patch new file mode 100644 index 00000000000..b4c761972c8 --- /dev/null +++ b/queue-6.10/spi-spidev-add-missing-spi_device_id-for-jg10309-01.patch @@ -0,0 +1,42 @@ +From 6531c1133ade0ad1400d9574003d0c0e6766584a Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Tue, 3 Sep 2024 14:32:27 +0200 +Subject: spi: spidev: Add missing spi_device_id for jg10309-01 + +From: Geert Uytterhoeven + +[ Upstream commit 5478a4f7b94414def7b56d2f18bc2ed9b0f3f1f2 ] + +When the of_device_id entry for "elgin,jg10309-01" was added, the +corresponding spi_device_id was forgotten, causing a warning message +during boot-up: + + SPI driver spidev has no spi_device_id for elgin,jg10309-01 + +Fix module autoloading and shut up the warning by adding the missing +entry. + +Fixes: 5f3eee1eef5d0edd ("spi: spidev: Add an entry for elgin,jg10309-01") +Signed-off-by: Geert Uytterhoeven +Link: https://patch.msgid.link/54bbb9d8a8db7e52d13e266f2d4a9bcd8b42a98a.1725366625.git.geert+renesas@glider.be +Signed-off-by: Mark Brown +Signed-off-by: Sasha Levin +--- + drivers/spi/spidev.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/drivers/spi/spidev.c b/drivers/spi/spidev.c +index 14bf0fa65befe..face93a9cf203 100644 +--- a/drivers/spi/spidev.c ++++ b/drivers/spi/spidev.c +@@ -702,6 +702,7 @@ static const struct class spidev_class = { + static const struct spi_device_id spidev_spi_ids[] = { + { .name = "bh2228fv" }, + { .name = "dh2228fv" }, ++ { .name = "jg10309-01" }, + { .name = "ltc2488" }, + { .name = "sx1301" }, + { .name = "bk4" }, +-- +2.43.0 + diff --git a/queue-6.10/spi-spidev-add-missing-spi_device_id-for-jg10309-01.patch-10107 b/queue-6.10/spi-spidev-add-missing-spi_device_id-for-jg10309-01.patch-10107 new file mode 100644 index 00000000000..b4c761972c8 --- /dev/null +++ b/queue-6.10/spi-spidev-add-missing-spi_device_id-for-jg10309-01.patch-10107 @@ -0,0 +1,42 @@ +From 6531c1133ade0ad1400d9574003d0c0e6766584a Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Tue, 3 Sep 2024 14:32:27 +0200 +Subject: spi: spidev: Add missing spi_device_id for jg10309-01 + +From: Geert Uytterhoeven + +[ Upstream commit 5478a4f7b94414def7b56d2f18bc2ed9b0f3f1f2 ] + +When the of_device_id entry for "elgin,jg10309-01" was added, the +corresponding spi_device_id was forgotten, causing a warning message +during boot-up: + + SPI driver spidev has no spi_device_id for elgin,jg10309-01 + +Fix module autoloading and shut up the warning by adding the missing +entry. + +Fixes: 5f3eee1eef5d0edd ("spi: spidev: Add an entry for elgin,jg10309-01") +Signed-off-by: Geert Uytterhoeven +Link: https://patch.msgid.link/54bbb9d8a8db7e52d13e266f2d4a9bcd8b42a98a.1725366625.git.geert+renesas@glider.be +Signed-off-by: Mark Brown +Signed-off-by: Sasha Levin +--- + drivers/spi/spidev.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/drivers/spi/spidev.c b/drivers/spi/spidev.c +index 14bf0fa65befe..face93a9cf203 100644 +--- a/drivers/spi/spidev.c ++++ b/drivers/spi/spidev.c +@@ -702,6 +702,7 @@ static const struct class spidev_class = { + static const struct spi_device_id spidev_spi_ids[] = { + { .name = "bh2228fv" }, + { .name = "dh2228fv" }, ++ { .name = "jg10309-01" }, + { .name = "ltc2488" }, + { .name = "sx1301" }, + { .name = "bk4" }, +-- +2.43.0 + diff --git a/queue-6.10/tools-hv-rm-.-.cmd-when-make-clean.patch b/queue-6.10/tools-hv-rm-.-.cmd-when-make-clean.patch new file mode 100644 index 00000000000..0607f94bfaa --- /dev/null +++ b/queue-6.10/tools-hv-rm-.-.cmd-when-make-clean.patch @@ -0,0 +1,37 @@ +From 576c11e78f5ad1daf3b937d8279f7f6ded5e1899 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 2 Sep 2024 12:21:03 +0800 +Subject: tools: hv: rm .*.cmd when make clean + +From: zhang jiao + +[ Upstream commit 5e5cc1eb65256e6017e3deec04f9806f2f317853 ] + +rm .*.cmd when make clean + +Signed-off-by: zhang jiao +Reviewed-by: Saurabh Sengar +Link: https://lore.kernel.org/r/20240902042103.5867-1-zhangjiao2@cmss.chinamobile.com +Signed-off-by: Wei Liu +Message-ID: <20240902042103.5867-1-zhangjiao2@cmss.chinamobile.com> +Signed-off-by: Sasha Levin +--- + tools/hv/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tools/hv/Makefile b/tools/hv/Makefile +index 2e60e2c212cd9..34ffcec264ab0 100644 +--- a/tools/hv/Makefile ++++ b/tools/hv/Makefile +@@ -52,7 +52,7 @@ $(OUTPUT)hv_fcopy_uio_daemon: $(HV_FCOPY_UIO_DAEMON_IN) + + clean: + rm -f $(ALL_PROGRAMS) +- find $(or $(OUTPUT),.) -name '*.o' -delete -o -name '\.*.d' -delete ++ find $(or $(OUTPUT),.) -name '*.o' -delete -o -name '\.*.d' -delete -o -name '\.*.cmd' -delete + + install: $(ALL_PROGRAMS) + install -d -m 755 $(DESTDIR)$(sbindir); \ +-- +2.43.0 + diff --git a/queue-6.10/tools-hv-rm-.-.cmd-when-make-clean.patch-27420 b/queue-6.10/tools-hv-rm-.-.cmd-when-make-clean.patch-27420 new file mode 100644 index 00000000000..0607f94bfaa --- /dev/null +++ b/queue-6.10/tools-hv-rm-.-.cmd-when-make-clean.patch-27420 @@ -0,0 +1,37 @@ +From 576c11e78f5ad1daf3b937d8279f7f6ded5e1899 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 2 Sep 2024 12:21:03 +0800 +Subject: tools: hv: rm .*.cmd when make clean + +From: zhang jiao + +[ Upstream commit 5e5cc1eb65256e6017e3deec04f9806f2f317853 ] + +rm .*.cmd when make clean + +Signed-off-by: zhang jiao +Reviewed-by: Saurabh Sengar +Link: https://lore.kernel.org/r/20240902042103.5867-1-zhangjiao2@cmss.chinamobile.com +Signed-off-by: Wei Liu +Message-ID: <20240902042103.5867-1-zhangjiao2@cmss.chinamobile.com> +Signed-off-by: Sasha Levin +--- + tools/hv/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tools/hv/Makefile b/tools/hv/Makefile +index 2e60e2c212cd9..34ffcec264ab0 100644 +--- a/tools/hv/Makefile ++++ b/tools/hv/Makefile +@@ -52,7 +52,7 @@ $(OUTPUT)hv_fcopy_uio_daemon: $(HV_FCOPY_UIO_DAEMON_IN) + + clean: + rm -f $(ALL_PROGRAMS) +- find $(or $(OUTPUT),.) -name '*.o' -delete -o -name '\.*.d' -delete ++ find $(or $(OUTPUT),.) -name '*.o' -delete -o -name '\.*.d' -delete -o -name '\.*.cmd' -delete + + install: $(ALL_PROGRAMS) + install -d -m 755 $(DESTDIR)$(sbindir); \ +-- +2.43.0 + diff --git a/queue-6.10/wifi-iwlwifi-clear-trans-state-earlier-upon-error.patch b/queue-6.10/wifi-iwlwifi-clear-trans-state-earlier-upon-error.patch new file mode 100644 index 00000000000..5f12e23f7ad --- /dev/null +++ b/queue-6.10/wifi-iwlwifi-clear-trans-state-earlier-upon-error.patch @@ -0,0 +1,72 @@ +From f7975e39305d0da5d43417b666929e86f3158dec Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Sun, 25 Aug 2024 19:17:01 +0300 +Subject: wifi: iwlwifi: clear trans->state earlier upon error + +From: Emmanuel Grumbach + +[ Upstream commit 094513f8a2fbddee51b055d8035f995551f98fce ] + +When the firmware crashes, we first told the op_mode and only then, +changed the transport's state. This is a problem if the op_mode's +nic_error() handler needs to send a host command: it'll see that the +transport's state still reflects that the firmware is alive. + +Today, this has no consequences since we set the STATUS_FW_ERROR bit and +that will prevent sending host commands. iwl_fw_dbg_stop_restart_recording +looks at this bit to know not to send a host command for example. + +To fix the hibernation, we needed to reset the firmware without having +an error and checking STATUS_FW_ERROR to see whether the firmware is +alive will no longer hold, so this change is necessary as well. + +Change the flow a bit. +Change trans->state before calling the op_mode's nic_error() method and +check trans->state instead of STATUS_FW_ERROR. This will keep the +current behavior of iwl_fw_dbg_stop_restart_recording upon firmware +error, and it'll allow us to call iwl_fw_dbg_stop_restart_recording +safely even if STATUS_FW_ERROR is clear, but yet, the firmware is not +alive. + +Signed-off-by: Emmanuel Grumbach +Signed-off-by: Miri Korenblit +Link: https://patch.msgid.link/20240825191257.9d7427fbdfd7.Ia056ca57029a382c921d6f7b6a6b28fc480f2f22@changeid +[I missed this was a dependency for the hibernation fix, changed + the commit message a bit accordingly] +Signed-off-by: Johannes Berg +Signed-off-by: Sasha Levin +--- + drivers/net/wireless/intel/iwlwifi/fw/dbg.c | 2 +- + drivers/net/wireless/intel/iwlwifi/iwl-trans.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/drivers/net/wireless/intel/iwlwifi/fw/dbg.c b/drivers/net/wireless/intel/iwlwifi/fw/dbg.c +index 945ffc083d25c..79fffa82cfd92 100644 +--- a/drivers/net/wireless/intel/iwlwifi/fw/dbg.c ++++ b/drivers/net/wireless/intel/iwlwifi/fw/dbg.c +@@ -3352,7 +3352,7 @@ void iwl_fw_dbg_stop_restart_recording(struct iwl_fw_runtime *fwrt, + { + int ret __maybe_unused = 0; + +- if (test_bit(STATUS_FW_ERROR, &fwrt->trans->status)) ++ if (!iwl_trans_fw_running(fwrt->trans)) + return; + + if (fw_has_capa(&fwrt->fw->ucode_capa, +diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-trans.h b/drivers/net/wireless/intel/iwlwifi/iwl-trans.h +index b93cef7b23301..4c56dccb18a9b 100644 +--- a/drivers/net/wireless/intel/iwlwifi/iwl-trans.h ++++ b/drivers/net/wireless/intel/iwlwifi/iwl-trans.h +@@ -1579,8 +1579,8 @@ static inline void iwl_trans_fw_error(struct iwl_trans *trans, bool sync) + + /* prevent double restarts due to the same erroneous FW */ + if (!test_and_set_bit(STATUS_FW_ERROR, &trans->status)) { +- iwl_op_mode_nic_error(trans->op_mode, sync); + trans->state = IWL_TRANS_NO_FW; ++ iwl_op_mode_nic_error(trans->op_mode, sync); + } + } + +-- +2.43.0 + diff --git a/queue-6.10/wifi-iwlwifi-clear-trans-state-earlier-upon-error.patch-6875 b/queue-6.10/wifi-iwlwifi-clear-trans-state-earlier-upon-error.patch-6875 new file mode 100644 index 00000000000..5f12e23f7ad --- /dev/null +++ b/queue-6.10/wifi-iwlwifi-clear-trans-state-earlier-upon-error.patch-6875 @@ -0,0 +1,72 @@ +From f7975e39305d0da5d43417b666929e86f3158dec Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Sun, 25 Aug 2024 19:17:01 +0300 +Subject: wifi: iwlwifi: clear trans->state earlier upon error + +From: Emmanuel Grumbach + +[ Upstream commit 094513f8a2fbddee51b055d8035f995551f98fce ] + +When the firmware crashes, we first told the op_mode and only then, +changed the transport's state. This is a problem if the op_mode's +nic_error() handler needs to send a host command: it'll see that the +transport's state still reflects that the firmware is alive. + +Today, this has no consequences since we set the STATUS_FW_ERROR bit and +that will prevent sending host commands. iwl_fw_dbg_stop_restart_recording +looks at this bit to know not to send a host command for example. + +To fix the hibernation, we needed to reset the firmware without having +an error and checking STATUS_FW_ERROR to see whether the firmware is +alive will no longer hold, so this change is necessary as well. + +Change the flow a bit. +Change trans->state before calling the op_mode's nic_error() method and +check trans->state instead of STATUS_FW_ERROR. This will keep the +current behavior of iwl_fw_dbg_stop_restart_recording upon firmware +error, and it'll allow us to call iwl_fw_dbg_stop_restart_recording +safely even if STATUS_FW_ERROR is clear, but yet, the firmware is not +alive. + +Signed-off-by: Emmanuel Grumbach +Signed-off-by: Miri Korenblit +Link: https://patch.msgid.link/20240825191257.9d7427fbdfd7.Ia056ca57029a382c921d6f7b6a6b28fc480f2f22@changeid +[I missed this was a dependency for the hibernation fix, changed + the commit message a bit accordingly] +Signed-off-by: Johannes Berg +Signed-off-by: Sasha Levin +--- + drivers/net/wireless/intel/iwlwifi/fw/dbg.c | 2 +- + drivers/net/wireless/intel/iwlwifi/iwl-trans.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/drivers/net/wireless/intel/iwlwifi/fw/dbg.c b/drivers/net/wireless/intel/iwlwifi/fw/dbg.c +index 945ffc083d25c..79fffa82cfd92 100644 +--- a/drivers/net/wireless/intel/iwlwifi/fw/dbg.c ++++ b/drivers/net/wireless/intel/iwlwifi/fw/dbg.c +@@ -3352,7 +3352,7 @@ void iwl_fw_dbg_stop_restart_recording(struct iwl_fw_runtime *fwrt, + { + int ret __maybe_unused = 0; + +- if (test_bit(STATUS_FW_ERROR, &fwrt->trans->status)) ++ if (!iwl_trans_fw_running(fwrt->trans)) + return; + + if (fw_has_capa(&fwrt->fw->ucode_capa, +diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-trans.h b/drivers/net/wireless/intel/iwlwifi/iwl-trans.h +index b93cef7b23301..4c56dccb18a9b 100644 +--- a/drivers/net/wireless/intel/iwlwifi/iwl-trans.h ++++ b/drivers/net/wireless/intel/iwlwifi/iwl-trans.h +@@ -1579,8 +1579,8 @@ static inline void iwl_trans_fw_error(struct iwl_trans *trans, bool sync) + + /* prevent double restarts due to the same erroneous FW */ + if (!test_and_set_bit(STATUS_FW_ERROR, &trans->status)) { +- iwl_op_mode_nic_error(trans->op_mode, sync); + trans->state = IWL_TRANS_NO_FW; ++ iwl_op_mode_nic_error(trans->op_mode, sync); + } + } + +-- +2.43.0 + diff --git a/queue-6.10/wifi-iwlwifi-lower-message-level-for-fw-buffer-desti.patch b/queue-6.10/wifi-iwlwifi-lower-message-level-for-fw-buffer-desti.patch new file mode 100644 index 00000000000..01241c69b69 --- /dev/null +++ b/queue-6.10/wifi-iwlwifi-lower-message-level-for-fw-buffer-desti.patch @@ -0,0 +1,41 @@ +From 10e3810c8040063f5aea91abd700bba098d0dc27 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Sun, 25 Aug 2024 19:17:13 +0300 +Subject: wifi: iwlwifi: lower message level for FW buffer destination + +From: Benjamin Berg + +[ Upstream commit f8a129c1e10256c785164ed5efa5d17d45fbd81b ] + +An invalid buffer destination is not a problem for the driver and it +does not make sense to report it with the KERN_ERR message level. As +such, change the message to use IWL_DEBUG_FW. + +Reported-by: Len Brown +Closes: https://lore.kernel.org/r/CAJvTdKkcxJss=DM2sxgv_MR5BeZ4_OC-3ad6tA40TYH2yqHCWw@mail.gmail.com +Signed-off-by: Benjamin Berg +Signed-off-by: Miri Korenblit +Link: https://patch.msgid.link/20240825191257.20abf78f05bc.Ifbcecc2ae9fb40b9698302507dcba8b922c8d856@changeid +Signed-off-by: Johannes Berg +Signed-off-by: Sasha Levin +--- + drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c b/drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c +index ebf11f276b20a..37f0bc9e0d963 100644 +--- a/drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c ++++ b/drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c +@@ -89,7 +89,8 @@ iwl_pcie_ctxt_info_dbg_enable(struct iwl_trans *trans, + } + break; + default: +- IWL_ERR(trans, "WRT: Invalid buffer destination\n"); ++ IWL_DEBUG_FW(trans, "WRT: Invalid buffer destination (%d)\n", ++ le32_to_cpu(fw_mon_cfg->buf_location)); + } + out: + if (dbg_flags) +-- +2.43.0 + diff --git a/queue-6.10/wifi-iwlwifi-lower-message-level-for-fw-buffer-desti.patch-14318 b/queue-6.10/wifi-iwlwifi-lower-message-level-for-fw-buffer-desti.patch-14318 new file mode 100644 index 00000000000..01241c69b69 --- /dev/null +++ b/queue-6.10/wifi-iwlwifi-lower-message-level-for-fw-buffer-desti.patch-14318 @@ -0,0 +1,41 @@ +From 10e3810c8040063f5aea91abd700bba098d0dc27 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Sun, 25 Aug 2024 19:17:13 +0300 +Subject: wifi: iwlwifi: lower message level for FW buffer destination + +From: Benjamin Berg + +[ Upstream commit f8a129c1e10256c785164ed5efa5d17d45fbd81b ] + +An invalid buffer destination is not a problem for the driver and it +does not make sense to report it with the KERN_ERR message level. As +such, change the message to use IWL_DEBUG_FW. + +Reported-by: Len Brown +Closes: https://lore.kernel.org/r/CAJvTdKkcxJss=DM2sxgv_MR5BeZ4_OC-3ad6tA40TYH2yqHCWw@mail.gmail.com +Signed-off-by: Benjamin Berg +Signed-off-by: Miri Korenblit +Link: https://patch.msgid.link/20240825191257.20abf78f05bc.Ifbcecc2ae9fb40b9698302507dcba8b922c8d856@changeid +Signed-off-by: Johannes Berg +Signed-off-by: Sasha Levin +--- + drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c b/drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c +index ebf11f276b20a..37f0bc9e0d963 100644 +--- a/drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c ++++ b/drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c +@@ -89,7 +89,8 @@ iwl_pcie_ctxt_info_dbg_enable(struct iwl_trans *trans, + } + break; + default: +- IWL_ERR(trans, "WRT: Invalid buffer destination\n"); ++ IWL_DEBUG_FW(trans, "WRT: Invalid buffer destination (%d)\n", ++ le32_to_cpu(fw_mon_cfg->buf_location)); + } + out: + if (dbg_flags) +-- +2.43.0 + diff --git a/queue-6.10/wifi-iwlwifi-mvm-don-t-wait-for-tx-queues-if-firmwar.patch b/queue-6.10/wifi-iwlwifi-mvm-don-t-wait-for-tx-queues-if-firmwar.patch new file mode 100644 index 00000000000..ea935513d29 --- /dev/null +++ b/queue-6.10/wifi-iwlwifi-mvm-don-t-wait-for-tx-queues-if-firmwar.patch @@ -0,0 +1,60 @@ +From 1603ca62c3ce2af6cec7f1a1ea6ae44071aa1422 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Sun, 25 Aug 2024 19:17:04 +0300 +Subject: wifi: iwlwifi: mvm: don't wait for tx queues if firmware is dead + +From: Emmanuel Grumbach + +[ Upstream commit 3a84454f5204718ca5b4ad2c1f0bf2031e2403d1 ] + +There is a WARNING in iwl_trans_wait_tx_queues_empty() (that was +recently converted from just a message), that can be hit if we +wait for TX queues to become empty after firmware died. Clearly, +we can't expect anything from the firmware after it's declared dead. + +Don't call iwl_trans_wait_tx_queues_empty() in this case. While it could +be a good idea to stop the flow earlier, the flush functions do some +maintenance work that is not related to the firmware, so keep that part +of the code running even when the firmware is not running. + +Signed-off-by: Emmanuel Grumbach +Signed-off-by: Miri Korenblit +Link: https://patch.msgid.link/20240825191257.a7cbd794cee9.I44a739fbd4ffcc46b83844dd1c7b2eb0c7b270f6@changeid +[edit commit message] +Signed-off-by: Johannes Berg +Signed-off-by: Sasha Levin +--- + drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c +index 259afecd1a98d..83551d962a46c 100644 +--- a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ++++ b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c +@@ -5819,6 +5819,10 @@ static void iwl_mvm_flush_no_vif(struct iwl_mvm *mvm, u32 queues, bool drop) + int i; + + if (!iwl_mvm_has_new_tx_api(mvm)) { ++ /* we can't ask the firmware anything if it is dead */ ++ if (test_bit(IWL_MVM_STATUS_HW_RESTART_REQUESTED, ++ &mvm->status)) ++ return; + if (drop) { + mutex_lock(&mvm->mutex); + iwl_mvm_flush_tx_path(mvm, +@@ -5914,8 +5918,11 @@ void iwl_mvm_mac_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif, + + /* this can take a while, and we may need/want other operations + * to succeed while doing this, so do it without the mutex held ++ * If the firmware is dead, this can't work... + */ +- if (!drop && !iwl_mvm_has_new_tx_api(mvm)) ++ if (!drop && !iwl_mvm_has_new_tx_api(mvm) && ++ !test_bit(IWL_MVM_STATUS_HW_RESTART_REQUESTED, ++ &mvm->status)) + iwl_trans_wait_tx_queues_empty(mvm->trans, msk); + } + +-- +2.43.0 + diff --git a/queue-6.10/wifi-iwlwifi-mvm-don-t-wait-for-tx-queues-if-firmwar.patch-14089 b/queue-6.10/wifi-iwlwifi-mvm-don-t-wait-for-tx-queues-if-firmwar.patch-14089 new file mode 100644 index 00000000000..ea935513d29 --- /dev/null +++ b/queue-6.10/wifi-iwlwifi-mvm-don-t-wait-for-tx-queues-if-firmwar.patch-14089 @@ -0,0 +1,60 @@ +From 1603ca62c3ce2af6cec7f1a1ea6ae44071aa1422 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Sun, 25 Aug 2024 19:17:04 +0300 +Subject: wifi: iwlwifi: mvm: don't wait for tx queues if firmware is dead + +From: Emmanuel Grumbach + +[ Upstream commit 3a84454f5204718ca5b4ad2c1f0bf2031e2403d1 ] + +There is a WARNING in iwl_trans_wait_tx_queues_empty() (that was +recently converted from just a message), that can be hit if we +wait for TX queues to become empty after firmware died. Clearly, +we can't expect anything from the firmware after it's declared dead. + +Don't call iwl_trans_wait_tx_queues_empty() in this case. While it could +be a good idea to stop the flow earlier, the flush functions do some +maintenance work that is not related to the firmware, so keep that part +of the code running even when the firmware is not running. + +Signed-off-by: Emmanuel Grumbach +Signed-off-by: Miri Korenblit +Link: https://patch.msgid.link/20240825191257.a7cbd794cee9.I44a739fbd4ffcc46b83844dd1c7b2eb0c7b270f6@changeid +[edit commit message] +Signed-off-by: Johannes Berg +Signed-off-by: Sasha Levin +--- + drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c +index 259afecd1a98d..83551d962a46c 100644 +--- a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ++++ b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c +@@ -5819,6 +5819,10 @@ static void iwl_mvm_flush_no_vif(struct iwl_mvm *mvm, u32 queues, bool drop) + int i; + + if (!iwl_mvm_has_new_tx_api(mvm)) { ++ /* we can't ask the firmware anything if it is dead */ ++ if (test_bit(IWL_MVM_STATUS_HW_RESTART_REQUESTED, ++ &mvm->status)) ++ return; + if (drop) { + mutex_lock(&mvm->mutex); + iwl_mvm_flush_tx_path(mvm, +@@ -5914,8 +5918,11 @@ void iwl_mvm_mac_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif, + + /* this can take a while, and we may need/want other operations + * to succeed while doing this, so do it without the mutex held ++ * If the firmware is dead, this can't work... + */ +- if (!drop && !iwl_mvm_has_new_tx_api(mvm)) ++ if (!drop && !iwl_mvm_has_new_tx_api(mvm) && ++ !test_bit(IWL_MVM_STATUS_HW_RESTART_REQUESTED, ++ &mvm->status)) + iwl_trans_wait_tx_queues_empty(mvm->trans, msk); + } + +-- +2.43.0 + diff --git a/queue-6.10/wifi-iwlwifi-mvm-fix-iwl_mvm_max_scan_ie_fw_cmd_room.patch b/queue-6.10/wifi-iwlwifi-mvm-fix-iwl_mvm_max_scan_ie_fw_cmd_room.patch new file mode 100644 index 00000000000..d2fca715b26 --- /dev/null +++ b/queue-6.10/wifi-iwlwifi-mvm-fix-iwl_mvm_max_scan_ie_fw_cmd_room.patch @@ -0,0 +1,58 @@ +From a8590ab257b1dfb0b86d18a540e22d401f2619f7 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Sun, 25 Aug 2024 19:17:06 +0300 +Subject: wifi: iwlwifi: mvm: fix iwl_mvm_max_scan_ie_fw_cmd_room() + +From: Daniel Gabay + +[ Upstream commit 916a5d9c5354c426220a0a6533a5e8ea1287d6ea ] + +Driver creates also the WFA TPC element, consider that in the +calculation. + +Signed-off-by: Daniel Gabay +Reviewed-by: Ilan Peer +Signed-off-by: Miri Korenblit +Link: https://patch.msgid.link/20240825191257.e710ce446b7f.I2715c6742e9c3d160e2ba41bc4b35de370d2ce34@changeid +Signed-off-by: Johannes Berg +Signed-off-by: Sasha Levin +--- + drivers/net/wireless/intel/iwlwifi/mvm/scan.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/scan.c b/drivers/net/wireless/intel/iwlwifi/mvm/scan.c +index 89adc6421eeee..d7c276237c74e 100644 +--- a/drivers/net/wireless/intel/iwlwifi/mvm/scan.c ++++ b/drivers/net/wireless/intel/iwlwifi/mvm/scan.c +@@ -48,6 +48,8 @@ + /* Number of iterations on the channel for mei filtered scan */ + #define IWL_MEI_SCAN_NUM_ITER 5U + ++#define WFA_TPC_IE_LEN 9 ++ + struct iwl_mvm_scan_timing_params { + u32 suspend_time; + u32 max_out_time; +@@ -303,8 +305,8 @@ static int iwl_mvm_max_scan_ie_fw_cmd_room(struct iwl_mvm *mvm) + + max_probe_len = SCAN_OFFLOAD_PROBE_REQ_SIZE; + +- /* we create the 802.11 header and SSID element */ +- max_probe_len -= 24 + 2; ++ /* we create the 802.11 header SSID element and WFA TPC element */ ++ max_probe_len -= 24 + 2 + WFA_TPC_IE_LEN; + + /* DS parameter set element is added on 2.4GHZ band if required */ + if (iwl_mvm_rrm_scan_needed(mvm)) +@@ -731,8 +733,6 @@ static u8 *iwl_mvm_copy_and_insert_ds_elem(struct iwl_mvm *mvm, const u8 *ies, + return newpos; + } + +-#define WFA_TPC_IE_LEN 9 +- + static void iwl_mvm_add_tpc_report_ie(u8 *pos) + { + pos[0] = WLAN_EID_VENDOR_SPECIFIC; +-- +2.43.0 + diff --git a/queue-6.10/wifi-iwlwifi-mvm-fix-iwl_mvm_max_scan_ie_fw_cmd_room.patch-3044 b/queue-6.10/wifi-iwlwifi-mvm-fix-iwl_mvm_max_scan_ie_fw_cmd_room.patch-3044 new file mode 100644 index 00000000000..d2fca715b26 --- /dev/null +++ b/queue-6.10/wifi-iwlwifi-mvm-fix-iwl_mvm_max_scan_ie_fw_cmd_room.patch-3044 @@ -0,0 +1,58 @@ +From a8590ab257b1dfb0b86d18a540e22d401f2619f7 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Sun, 25 Aug 2024 19:17:06 +0300 +Subject: wifi: iwlwifi: mvm: fix iwl_mvm_max_scan_ie_fw_cmd_room() + +From: Daniel Gabay + +[ Upstream commit 916a5d9c5354c426220a0a6533a5e8ea1287d6ea ] + +Driver creates also the WFA TPC element, consider that in the +calculation. + +Signed-off-by: Daniel Gabay +Reviewed-by: Ilan Peer +Signed-off-by: Miri Korenblit +Link: https://patch.msgid.link/20240825191257.e710ce446b7f.I2715c6742e9c3d160e2ba41bc4b35de370d2ce34@changeid +Signed-off-by: Johannes Berg +Signed-off-by: Sasha Levin +--- + drivers/net/wireless/intel/iwlwifi/mvm/scan.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/scan.c b/drivers/net/wireless/intel/iwlwifi/mvm/scan.c +index 89adc6421eeee..d7c276237c74e 100644 +--- a/drivers/net/wireless/intel/iwlwifi/mvm/scan.c ++++ b/drivers/net/wireless/intel/iwlwifi/mvm/scan.c +@@ -48,6 +48,8 @@ + /* Number of iterations on the channel for mei filtered scan */ + #define IWL_MEI_SCAN_NUM_ITER 5U + ++#define WFA_TPC_IE_LEN 9 ++ + struct iwl_mvm_scan_timing_params { + u32 suspend_time; + u32 max_out_time; +@@ -303,8 +305,8 @@ static int iwl_mvm_max_scan_ie_fw_cmd_room(struct iwl_mvm *mvm) + + max_probe_len = SCAN_OFFLOAD_PROBE_REQ_SIZE; + +- /* we create the 802.11 header and SSID element */ +- max_probe_len -= 24 + 2; ++ /* we create the 802.11 header SSID element and WFA TPC element */ ++ max_probe_len -= 24 + 2 + WFA_TPC_IE_LEN; + + /* DS parameter set element is added on 2.4GHZ band if required */ + if (iwl_mvm_rrm_scan_needed(mvm)) +@@ -731,8 +733,6 @@ static u8 *iwl_mvm_copy_and_insert_ds_elem(struct iwl_mvm *mvm, const u8 *ies, + return newpos; + } + +-#define WFA_TPC_IE_LEN 9 +- + static void iwl_mvm_add_tpc_report_ie(u8 *pos) + { + pos[0] = WLAN_EID_VENDOR_SPECIFIC; +-- +2.43.0 + diff --git a/queue-6.10/wifi-iwlwifi-mvm-fix-iwl_mvm_scan_fits-calculation.patch b/queue-6.10/wifi-iwlwifi-mvm-fix-iwl_mvm_scan_fits-calculation.patch new file mode 100644 index 00000000000..3277f0e0a98 --- /dev/null +++ b/queue-6.10/wifi-iwlwifi-mvm-fix-iwl_mvm_scan_fits-calculation.patch @@ -0,0 +1,78 @@ +From 12a0c866caa54d801e1580c0a19ee3c489eee63e Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Sun, 25 Aug 2024 19:17:05 +0300 +Subject: wifi: iwlwifi: mvm: fix iwl_mvm_scan_fits() calculation + +From: Daniel Gabay + +[ Upstream commit d44162280899c3fc2c6700e21e491e71c3c96e3d ] + +The calculation should consider also the 6GHz IE's len, fix that. +In addition, in iwl_mvm_sched_scan_start() the scan_fits helper is +called only in case non_psc_incldued is true, but it should be called +regardless, fix that as well. + +Signed-off-by: Daniel Gabay +Reviewed-by: Ilan Peer +Signed-off-by: Miri Korenblit +Link: https://patch.msgid.link/20240825191257.7db825442fd2.I99f4d6587709de02072fd57957ec7472331c6b1d@changeid +Signed-off-by: Johannes Berg +Signed-off-by: Sasha Levin +--- + drivers/net/wireless/intel/iwlwifi/mvm/scan.c | 23 ++++++++++--------- + 1 file changed, 12 insertions(+), 11 deletions(-) + +diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/scan.c b/drivers/net/wireless/intel/iwlwifi/mvm/scan.c +index 7615c91a55c62..89adc6421eeee 100644 +--- a/drivers/net/wireless/intel/iwlwifi/mvm/scan.c ++++ b/drivers/net/wireless/intel/iwlwifi/mvm/scan.c +@@ -837,8 +837,8 @@ static inline bool iwl_mvm_scan_fits(struct iwl_mvm *mvm, int n_ssids, + return ((n_ssids <= PROBE_OPTION_MAX) && + (n_channels <= mvm->fw->ucode_capa.n_scan_channels) & + (ies->common_ie_len + +- ies->len[NL80211_BAND_2GHZ] + +- ies->len[NL80211_BAND_5GHZ] <= ++ ies->len[NL80211_BAND_2GHZ] + ies->len[NL80211_BAND_5GHZ] + ++ ies->len[NL80211_BAND_6GHZ] <= + iwl_mvm_max_scan_ie_fw_cmd_room(mvm))); + } + +@@ -3179,18 +3179,16 @@ int iwl_mvm_sched_scan_start(struct iwl_mvm *mvm, + params.n_channels = j; + } + +- if (non_psc_included && +- !iwl_mvm_scan_fits(mvm, req->n_ssids, ies, params.n_channels)) { +- kfree(params.channels); +- return -ENOBUFS; ++ if (!iwl_mvm_scan_fits(mvm, req->n_ssids, ies, params.n_channels)) { ++ ret = -ENOBUFS; ++ goto out; + } + + uid = iwl_mvm_build_scan_cmd(mvm, vif, &hcmd, ¶ms, type); +- +- if (non_psc_included) +- kfree(params.channels); +- if (uid < 0) +- return uid; ++ if (uid < 0) { ++ ret = uid; ++ goto out; ++ } + + ret = iwl_mvm_send_cmd(mvm, &hcmd); + if (!ret) { +@@ -3208,6 +3206,9 @@ int iwl_mvm_sched_scan_start(struct iwl_mvm *mvm, + mvm->sched_scan_pass_all = SCHED_SCAN_PASS_ALL_DISABLED; + } + ++out: ++ if (non_psc_included) ++ kfree(params.channels); + return ret; + } + +-- +2.43.0 + diff --git a/queue-6.10/wifi-iwlwifi-mvm-fix-iwl_mvm_scan_fits-calculation.patch-16713 b/queue-6.10/wifi-iwlwifi-mvm-fix-iwl_mvm_scan_fits-calculation.patch-16713 new file mode 100644 index 00000000000..3277f0e0a98 --- /dev/null +++ b/queue-6.10/wifi-iwlwifi-mvm-fix-iwl_mvm_scan_fits-calculation.patch-16713 @@ -0,0 +1,78 @@ +From 12a0c866caa54d801e1580c0a19ee3c489eee63e Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Sun, 25 Aug 2024 19:17:05 +0300 +Subject: wifi: iwlwifi: mvm: fix iwl_mvm_scan_fits() calculation + +From: Daniel Gabay + +[ Upstream commit d44162280899c3fc2c6700e21e491e71c3c96e3d ] + +The calculation should consider also the 6GHz IE's len, fix that. +In addition, in iwl_mvm_sched_scan_start() the scan_fits helper is +called only in case non_psc_incldued is true, but it should be called +regardless, fix that as well. + +Signed-off-by: Daniel Gabay +Reviewed-by: Ilan Peer +Signed-off-by: Miri Korenblit +Link: https://patch.msgid.link/20240825191257.7db825442fd2.I99f4d6587709de02072fd57957ec7472331c6b1d@changeid +Signed-off-by: Johannes Berg +Signed-off-by: Sasha Levin +--- + drivers/net/wireless/intel/iwlwifi/mvm/scan.c | 23 ++++++++++--------- + 1 file changed, 12 insertions(+), 11 deletions(-) + +diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/scan.c b/drivers/net/wireless/intel/iwlwifi/mvm/scan.c +index 7615c91a55c62..89adc6421eeee 100644 +--- a/drivers/net/wireless/intel/iwlwifi/mvm/scan.c ++++ b/drivers/net/wireless/intel/iwlwifi/mvm/scan.c +@@ -837,8 +837,8 @@ static inline bool iwl_mvm_scan_fits(struct iwl_mvm *mvm, int n_ssids, + return ((n_ssids <= PROBE_OPTION_MAX) && + (n_channels <= mvm->fw->ucode_capa.n_scan_channels) & + (ies->common_ie_len + +- ies->len[NL80211_BAND_2GHZ] + +- ies->len[NL80211_BAND_5GHZ] <= ++ ies->len[NL80211_BAND_2GHZ] + ies->len[NL80211_BAND_5GHZ] + ++ ies->len[NL80211_BAND_6GHZ] <= + iwl_mvm_max_scan_ie_fw_cmd_room(mvm))); + } + +@@ -3179,18 +3179,16 @@ int iwl_mvm_sched_scan_start(struct iwl_mvm *mvm, + params.n_channels = j; + } + +- if (non_psc_included && +- !iwl_mvm_scan_fits(mvm, req->n_ssids, ies, params.n_channels)) { +- kfree(params.channels); +- return -ENOBUFS; ++ if (!iwl_mvm_scan_fits(mvm, req->n_ssids, ies, params.n_channels)) { ++ ret = -ENOBUFS; ++ goto out; + } + + uid = iwl_mvm_build_scan_cmd(mvm, vif, &hcmd, ¶ms, type); +- +- if (non_psc_included) +- kfree(params.channels); +- if (uid < 0) +- return uid; ++ if (uid < 0) { ++ ret = uid; ++ goto out; ++ } + + ret = iwl_mvm_send_cmd(mvm, &hcmd); + if (!ret) { +@@ -3208,6 +3206,9 @@ int iwl_mvm_sched_scan_start(struct iwl_mvm *mvm, + mvm->sched_scan_pass_all = SCHED_SCAN_PASS_ALL_DISABLED; + } + ++out: ++ if (non_psc_included) ++ kfree(params.channels); + return ret; + } + +-- +2.43.0 + diff --git a/queue-6.10/wifi-iwlwifi-mvm-pause-tcm-when-the-firmware-is-stop.patch b/queue-6.10/wifi-iwlwifi-mvm-pause-tcm-when-the-firmware-is-stop.patch new file mode 100644 index 00000000000..d911893b92b --- /dev/null +++ b/queue-6.10/wifi-iwlwifi-mvm-pause-tcm-when-the-firmware-is-stop.patch @@ -0,0 +1,53 @@ +From 6c8292a7ec62a4f31ab293e3f38e28f2ad50e431 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Sun, 25 Aug 2024 19:17:10 +0300 +Subject: wifi: iwlwifi: mvm: pause TCM when the firmware is stopped + +From: Emmanuel Grumbach + +[ Upstream commit 0668ebc8c2282ca1e7eb96092a347baefffb5fe7 ] + +Not doing so will make us send a host command to the transport while the +firmware is not alive, which will trigger a WARNING. + +bad state = 0 +WARNING: CPU: 2 PID: 17434 at drivers/net/wireless/intel/iwlwifi/iwl-trans.c:115 iwl_trans_send_cmd+0x1cb/0x1e0 [iwlwifi] +RIP: 0010:iwl_trans_send_cmd+0x1cb/0x1e0 [iwlwifi] +Call Trace: + + iwl_mvm_send_cmd+0x40/0xc0 [iwlmvm] + iwl_mvm_config_scan+0x198/0x260 [iwlmvm] + iwl_mvm_recalc_tcm+0x730/0x11d0 [iwlmvm] + iwl_mvm_tcm_work+0x1d/0x30 [iwlmvm] + process_one_work+0x29e/0x640 + worker_thread+0x2df/0x690 + ? rescuer_thread+0x540/0x540 + kthread+0x192/0x1e0 + ? set_kthread_struct+0x90/0x90 + ret_from_fork+0x22/0x30 + +Signed-off-by: Emmanuel Grumbach +Signed-off-by: Miri Korenblit +Link: https://patch.msgid.link/20240825191257.5abe71ca1b6b.I97a968cb8be1f24f94652d9b110ecbf6af73f89e@changeid +Signed-off-by: Johannes Berg +Signed-off-by: Sasha Levin +--- + drivers/net/wireless/intel/iwlwifi/mvm/ops.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/ops.c b/drivers/net/wireless/intel/iwlwifi/mvm/ops.c +index 498afbe4ee6be..6375cc3c48f3c 100644 +--- a/drivers/net/wireless/intel/iwlwifi/mvm/ops.c ++++ b/drivers/net/wireless/intel/iwlwifi/mvm/ops.c +@@ -1521,6 +1521,8 @@ void iwl_mvm_stop_device(struct iwl_mvm *mvm) + + clear_bit(IWL_MVM_STATUS_FIRMWARE_RUNNING, &mvm->status); + ++ iwl_mvm_pause_tcm(mvm, false); ++ + iwl_fw_dbg_stop_sync(&mvm->fwrt); + iwl_trans_stop_device(mvm->trans); + iwl_free_fw_paging(&mvm->fwrt); +-- +2.43.0 + diff --git a/queue-6.10/wifi-iwlwifi-mvm-pause-tcm-when-the-firmware-is-stop.patch-21290 b/queue-6.10/wifi-iwlwifi-mvm-pause-tcm-when-the-firmware-is-stop.patch-21290 new file mode 100644 index 00000000000..d911893b92b --- /dev/null +++ b/queue-6.10/wifi-iwlwifi-mvm-pause-tcm-when-the-firmware-is-stop.patch-21290 @@ -0,0 +1,53 @@ +From 6c8292a7ec62a4f31ab293e3f38e28f2ad50e431 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Sun, 25 Aug 2024 19:17:10 +0300 +Subject: wifi: iwlwifi: mvm: pause TCM when the firmware is stopped + +From: Emmanuel Grumbach + +[ Upstream commit 0668ebc8c2282ca1e7eb96092a347baefffb5fe7 ] + +Not doing so will make us send a host command to the transport while the +firmware is not alive, which will trigger a WARNING. + +bad state = 0 +WARNING: CPU: 2 PID: 17434 at drivers/net/wireless/intel/iwlwifi/iwl-trans.c:115 iwl_trans_send_cmd+0x1cb/0x1e0 [iwlwifi] +RIP: 0010:iwl_trans_send_cmd+0x1cb/0x1e0 [iwlwifi] +Call Trace: + + iwl_mvm_send_cmd+0x40/0xc0 [iwlmvm] + iwl_mvm_config_scan+0x198/0x260 [iwlmvm] + iwl_mvm_recalc_tcm+0x730/0x11d0 [iwlmvm] + iwl_mvm_tcm_work+0x1d/0x30 [iwlmvm] + process_one_work+0x29e/0x640 + worker_thread+0x2df/0x690 + ? rescuer_thread+0x540/0x540 + kthread+0x192/0x1e0 + ? set_kthread_struct+0x90/0x90 + ret_from_fork+0x22/0x30 + +Signed-off-by: Emmanuel Grumbach +Signed-off-by: Miri Korenblit +Link: https://patch.msgid.link/20240825191257.5abe71ca1b6b.I97a968cb8be1f24f94652d9b110ecbf6af73f89e@changeid +Signed-off-by: Johannes Berg +Signed-off-by: Sasha Levin +--- + drivers/net/wireless/intel/iwlwifi/mvm/ops.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/ops.c b/drivers/net/wireless/intel/iwlwifi/mvm/ops.c +index 498afbe4ee6be..6375cc3c48f3c 100644 +--- a/drivers/net/wireless/intel/iwlwifi/mvm/ops.c ++++ b/drivers/net/wireless/intel/iwlwifi/mvm/ops.c +@@ -1521,6 +1521,8 @@ void iwl_mvm_stop_device(struct iwl_mvm *mvm) + + clear_bit(IWL_MVM_STATUS_FIRMWARE_RUNNING, &mvm->status); + ++ iwl_mvm_pause_tcm(mvm, false); ++ + iwl_fw_dbg_stop_sync(&mvm->fwrt); + iwl_trans_stop_device(mvm->trans); + iwl_free_fw_paging(&mvm->fwrt); +-- +2.43.0 + diff --git a/queue-6.10/wifi-mac80211-free-skb-on-error-path-in-ieee80211_be.patch b/queue-6.10/wifi-mac80211-free-skb-on-error-path-in-ieee80211_be.patch new file mode 100644 index 00000000000..6b864617d18 --- /dev/null +++ b/queue-6.10/wifi-mac80211-free-skb-on-error-path-in-ieee80211_be.patch @@ -0,0 +1,39 @@ +From 1ed8d766ab15e822f93a242a2f5f7df5d20d8370 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 5 Aug 2024 17:20:35 +0300 +Subject: wifi: mac80211: free skb on error path in ieee80211_beacon_get_ap() + +From: Dmitry Antipov + +[ Upstream commit 786c5be9ac29a39b6f37f1fdd2ea59d0fe35d525 ] + +In 'ieee80211_beacon_get_ap()', free allocated skb in case of error +returned by 'ieee80211_beacon_protect()'. Compile tested only. + +Signed-off-by: Dmitry Antipov +Link: https://patch.msgid.link/20240805142035.227847-1-dmantipov@yandex.ru +Signed-off-by: Johannes Berg +Signed-off-by: Sasha Levin +--- + net/mac80211/tx.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c +index edba4a31844fb..bca7b341dd772 100644 +--- a/net/mac80211/tx.c ++++ b/net/mac80211/tx.c +@@ -5348,8 +5348,10 @@ ieee80211_beacon_get_ap(struct ieee80211_hw *hw, + if (beacon->tail) + skb_put_data(skb, beacon->tail, beacon->tail_len); + +- if (ieee80211_beacon_protect(skb, local, sdata, link) < 0) ++ if (ieee80211_beacon_protect(skb, local, sdata, link) < 0) { ++ dev_kfree_skb(skb); + return NULL; ++ } + + ieee80211_beacon_get_finish(hw, vif, link, offs, beacon, skb, + chanctx_conf, csa_off_base); +-- +2.43.0 + diff --git a/queue-6.10/wifi-mac80211-free-skb-on-error-path-in-ieee80211_be.patch-27967 b/queue-6.10/wifi-mac80211-free-skb-on-error-path-in-ieee80211_be.patch-27967 new file mode 100644 index 00000000000..6b864617d18 --- /dev/null +++ b/queue-6.10/wifi-mac80211-free-skb-on-error-path-in-ieee80211_be.patch-27967 @@ -0,0 +1,39 @@ +From 1ed8d766ab15e822f93a242a2f5f7df5d20d8370 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 5 Aug 2024 17:20:35 +0300 +Subject: wifi: mac80211: free skb on error path in ieee80211_beacon_get_ap() + +From: Dmitry Antipov + +[ Upstream commit 786c5be9ac29a39b6f37f1fdd2ea59d0fe35d525 ] + +In 'ieee80211_beacon_get_ap()', free allocated skb in case of error +returned by 'ieee80211_beacon_protect()'. Compile tested only. + +Signed-off-by: Dmitry Antipov +Link: https://patch.msgid.link/20240805142035.227847-1-dmantipov@yandex.ru +Signed-off-by: Johannes Berg +Signed-off-by: Sasha Levin +--- + net/mac80211/tx.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c +index edba4a31844fb..bca7b341dd772 100644 +--- a/net/mac80211/tx.c ++++ b/net/mac80211/tx.c +@@ -5348,8 +5348,10 @@ ieee80211_beacon_get_ap(struct ieee80211_hw *hw, + if (beacon->tail) + skb_put_data(skb, beacon->tail, beacon->tail_len); + +- if (ieee80211_beacon_protect(skb, local, sdata, link) < 0) ++ if (ieee80211_beacon_protect(skb, local, sdata, link) < 0) { ++ dev_kfree_skb(skb); + return NULL; ++ } + + ieee80211_beacon_get_finish(hw, vif, link, offs, beacon, skb, + chanctx_conf, csa_off_base); +-- +2.43.0 + diff --git a/queue-6.10/x86-hyperv-set-x86_feature_tsc_known_freq-when-hyper.patch b/queue-6.10/x86-hyperv-set-x86_feature_tsc_known_freq-when-hyper.patch new file mode 100644 index 00000000000..3aa0dbfd5b3 --- /dev/null +++ b/queue-6.10/x86-hyperv-set-x86_feature_tsc_known_freq-when-hyper.patch @@ -0,0 +1,49 @@ +From 98e33cde8b7a7855082fd1ed8ef94fbf5bb37cf6 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Wed, 5 Jun 2024 19:55:59 -0700 +Subject: x86/hyperv: Set X86_FEATURE_TSC_KNOWN_FREQ when Hyper-V provides + frequency + +From: Michael Kelley + +[ Upstream commit 8fcc514809de41153b43ccbe1a0cdf7f72b78e7e ] + +A Linux guest on Hyper-V gets the TSC frequency from a synthetic MSR, if +available. In this case, set X86_FEATURE_TSC_KNOWN_FREQ so that Linux +doesn't unnecessarily do refined TSC calibration when setting up the TSC +clocksource. + +With this change, a message such as this is no longer output during boot +when the TSC is used as the clocksource: + +[ 1.115141] tsc: Refined TSC clocksource calibration: 2918.408 MHz + +Furthermore, the guest and host will have exactly the same view of the +TSC frequency, which is important for features such as the TSC deadline +timer that are emulated by the Hyper-V host. + +Signed-off-by: Michael Kelley +Reviewed-by: Roman Kisel +Link: https://lore.kernel.org/r/20240606025559.1631-1-mhklinux@outlook.com +Signed-off-by: Wei Liu +Message-ID: <20240606025559.1631-1-mhklinux@outlook.com> +Signed-off-by: Sasha Levin +--- + arch/x86/kernel/cpu/mshyperv.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c +index 41632fb57796d..ead967479fa63 100644 +--- a/arch/x86/kernel/cpu/mshyperv.c ++++ b/arch/x86/kernel/cpu/mshyperv.c +@@ -424,6 +424,7 @@ static void __init ms_hyperv_init_platform(void) + ms_hyperv.misc_features & HV_FEATURE_FREQUENCY_MSRS_AVAILABLE) { + x86_platform.calibrate_tsc = hv_get_tsc_khz; + x86_platform.calibrate_cpu = hv_get_tsc_khz; ++ setup_force_cpu_cap(X86_FEATURE_TSC_KNOWN_FREQ); + } + + if (ms_hyperv.priv_high & HV_ISOLATION) { +-- +2.43.0 + diff --git a/queue-6.10/x86-hyperv-set-x86_feature_tsc_known_freq-when-hyper.patch-8101 b/queue-6.10/x86-hyperv-set-x86_feature_tsc_known_freq-when-hyper.patch-8101 new file mode 100644 index 00000000000..3aa0dbfd5b3 --- /dev/null +++ b/queue-6.10/x86-hyperv-set-x86_feature_tsc_known_freq-when-hyper.patch-8101 @@ -0,0 +1,49 @@ +From 98e33cde8b7a7855082fd1ed8ef94fbf5bb37cf6 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Wed, 5 Jun 2024 19:55:59 -0700 +Subject: x86/hyperv: Set X86_FEATURE_TSC_KNOWN_FREQ when Hyper-V provides + frequency + +From: Michael Kelley + +[ Upstream commit 8fcc514809de41153b43ccbe1a0cdf7f72b78e7e ] + +A Linux guest on Hyper-V gets the TSC frequency from a synthetic MSR, if +available. In this case, set X86_FEATURE_TSC_KNOWN_FREQ so that Linux +doesn't unnecessarily do refined TSC calibration when setting up the TSC +clocksource. + +With this change, a message such as this is no longer output during boot +when the TSC is used as the clocksource: + +[ 1.115141] tsc: Refined TSC clocksource calibration: 2918.408 MHz + +Furthermore, the guest and host will have exactly the same view of the +TSC frequency, which is important for features such as the TSC deadline +timer that are emulated by the Hyper-V host. + +Signed-off-by: Michael Kelley +Reviewed-by: Roman Kisel +Link: https://lore.kernel.org/r/20240606025559.1631-1-mhklinux@outlook.com +Signed-off-by: Wei Liu +Message-ID: <20240606025559.1631-1-mhklinux@outlook.com> +Signed-off-by: Sasha Levin +--- + arch/x86/kernel/cpu/mshyperv.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c +index 41632fb57796d..ead967479fa63 100644 +--- a/arch/x86/kernel/cpu/mshyperv.c ++++ b/arch/x86/kernel/cpu/mshyperv.c +@@ -424,6 +424,7 @@ static void __init ms_hyperv_init_platform(void) + ms_hyperv.misc_features & HV_FEATURE_FREQUENCY_MSRS_AVAILABLE) { + x86_platform.calibrate_tsc = hv_get_tsc_khz; + x86_platform.calibrate_cpu = hv_get_tsc_khz; ++ setup_force_cpu_cap(X86_FEATURE_TSC_KNOWN_FREQ); + } + + if (ms_hyperv.priv_high & HV_ISOLATION) { +-- +2.43.0 + -- 2.47.3