From: Sasha Levin Date: Thu, 19 Sep 2024 19:36:29 +0000 (-0400) Subject: Fixes for 6.1 X-Git-Tag: v6.1.112~44 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e9452f2ddd7affa8424fcd7cbc8816d92a74bd70;p=thirdparty%2Fkernel%2Fstable-queue.git Fixes for 6.1 Signed-off-by: Sasha Levin --- diff --git a/queue-6.1/alsa-hda-realtek-fixed-alc256-headphone-no-sound.patch b/queue-6.1/alsa-hda-realtek-fixed-alc256-headphone-no-sound.patch new file mode 100644 index 00000000000..4797ce85d8a --- /dev/null +++ b/queue-6.1/alsa-hda-realtek-fixed-alc256-headphone-no-sound.patch @@ -0,0 +1,126 @@ +From 3214874a2b44a60ff782d305cd69f8be5b3229de 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 d869d6ba96f3d..784dfdf0cd6f4 100644 +--- a/sound/pci/hda/patch_realtek.c ++++ b/sound/pci/hda/patch_realtek.c +@@ -4928,6 +4928,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), +@@ -5029,6 +5053,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: +@@ -5300,6 +5325,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: +@@ -5397,6 +5423,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: +@@ -5512,6 +5539,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: +@@ -5617,25 +5645,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.1/alsa-hda-realtek-fixed-alc256-headphone-no-sound.patch-30958 b/queue-6.1/alsa-hda-realtek-fixed-alc256-headphone-no-sound.patch-30958 new file mode 100644 index 00000000000..4797ce85d8a --- /dev/null +++ b/queue-6.1/alsa-hda-realtek-fixed-alc256-headphone-no-sound.patch-30958 @@ -0,0 +1,126 @@ +From 3214874a2b44a60ff782d305cd69f8be5b3229de 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 d869d6ba96f3d..784dfdf0cd6f4 100644 +--- a/sound/pci/hda/patch_realtek.c ++++ b/sound/pci/hda/patch_realtek.c +@@ -4928,6 +4928,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), +@@ -5029,6 +5053,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: +@@ -5300,6 +5325,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: +@@ -5397,6 +5423,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: +@@ -5512,6 +5539,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: +@@ -5617,25 +5645,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.1/alsa-hda-realtek-fixed-alc285-headphone-no-sound.patch b/queue-6.1/alsa-hda-realtek-fixed-alc285-headphone-no-sound.patch new file mode 100644 index 00000000000..b76dc3cd833 --- /dev/null +++ b/queue-6.1/alsa-hda-realtek-fixed-alc285-headphone-no-sound.patch @@ -0,0 +1,100 @@ +From 710f5c61b58b76832f39f1730d8a79471ac864d8 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 784dfdf0cd6f4..277303cbe96de 100644 +--- a/sound/pci/hda/patch_realtek.c ++++ b/sound/pci/hda/patch_realtek.c +@@ -5088,6 +5088,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; +@@ -5313,6 +5314,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); +@@ -5472,6 +5474,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); +@@ -5577,6 +5580,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"); +@@ -5736,12 +5740,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); +@@ -5758,15 +5756,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.1/alsa-hda-realtek-fixed-alc285-headphone-no-sound.patch-25726 b/queue-6.1/alsa-hda-realtek-fixed-alc285-headphone-no-sound.patch-25726 new file mode 100644 index 00000000000..b76dc3cd833 --- /dev/null +++ b/queue-6.1/alsa-hda-realtek-fixed-alc285-headphone-no-sound.patch-25726 @@ -0,0 +1,100 @@ +From 710f5c61b58b76832f39f1730d8a79471ac864d8 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 784dfdf0cd6f4..277303cbe96de 100644 +--- a/sound/pci/hda/patch_realtek.c ++++ b/sound/pci/hda/patch_realtek.c +@@ -5088,6 +5088,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; +@@ -5313,6 +5314,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); +@@ -5472,6 +5474,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); +@@ -5577,6 +5580,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"); +@@ -5736,12 +5740,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); +@@ -5758,15 +5756,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.1/asoc-allow-module-autoloading-for-table-board_ids.patch b/queue-6.1/asoc-allow-module-autoloading-for-table-board_ids.patch new file mode 100644 index 00000000000..b5b3d888990 --- /dev/null +++ b/queue-6.1/asoc-allow-module-autoloading-for-table-board_ids.patch @@ -0,0 +1,36 @@ +From c393bf24750f2fad6cbb8685ba1dc88200de296f 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 972600d271586..c594af432b3ee 100644 +--- a/sound/soc/amd/acp/acp-sof-mach.c ++++ b/sound/soc/amd/acp/acp-sof-mach.c +@@ -152,6 +152,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.1/asoc-allow-module-autoloading-for-table-board_ids.patch-3580 b/queue-6.1/asoc-allow-module-autoloading-for-table-board_ids.patch-3580 new file mode 100644 index 00000000000..b5b3d888990 --- /dev/null +++ b/queue-6.1/asoc-allow-module-autoloading-for-table-board_ids.patch-3580 @@ -0,0 +1,36 @@ +From c393bf24750f2fad6cbb8685ba1dc88200de296f 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 972600d271586..c594af432b3ee 100644 +--- a/sound/soc/amd/acp/acp-sof-mach.c ++++ b/sound/soc/amd/acp/acp-sof-mach.c +@@ -152,6 +152,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.1/asoc-allow-module-autoloading-for-table-db1200_pids.patch b/queue-6.1/asoc-allow-module-autoloading-for-table-db1200_pids.patch new file mode 100644 index 00000000000..2aa046a3f5d --- /dev/null +++ b/queue-6.1/asoc-allow-module-autoloading-for-table-db1200_pids.patch @@ -0,0 +1,35 @@ +From 56dc3089c406af8cda0d3159f78d87d4e86a7644 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 400eaf9f8b140..f185711180cb4 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.1/asoc-allow-module-autoloading-for-table-db1200_pids.patch-6485 b/queue-6.1/asoc-allow-module-autoloading-for-table-db1200_pids.patch-6485 new file mode 100644 index 00000000000..2aa046a3f5d --- /dev/null +++ b/queue-6.1/asoc-allow-module-autoloading-for-table-db1200_pids.patch-6485 @@ -0,0 +1,35 @@ +From 56dc3089c406af8cda0d3159f78d87d4e86a7644 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 400eaf9f8b140..f185711180cb4 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.1/asoc-intel-fix-module-autoloading.patch b/queue-6.1/asoc-intel-fix-module-autoloading.patch new file mode 100644 index 00000000000..d5fc586f0c5 --- /dev/null +++ b/queue-6.1/asoc-intel-fix-module-autoloading.patch @@ -0,0 +1,35 @@ +From a08b3b6378b5c561e1fa17c468f086d10d0baf49 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 b4893365d01d5..d5c48bed7a250 100644 +--- a/sound/soc/intel/keembay/kmb_platform.c ++++ b/sound/soc/intel/keembay/kmb_platform.c +@@ -817,6 +817,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.1/asoc-intel-fix-module-autoloading.patch-15841 b/queue-6.1/asoc-intel-fix-module-autoloading.patch-15841 new file mode 100644 index 00000000000..d5fc586f0c5 --- /dev/null +++ b/queue-6.1/asoc-intel-fix-module-autoloading.patch-15841 @@ -0,0 +1,35 @@ +From a08b3b6378b5c561e1fa17c468f086d10d0baf49 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 b4893365d01d5..d5c48bed7a250 100644 +--- a/sound/soc/intel/keembay/kmb_platform.c ++++ b/sound/soc/intel/keembay/kmb_platform.c +@@ -817,6 +817,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.1/asoc-intel-soc-acpi-cht-make-lenovo-yoga-tab-3-x90f-.patch b/queue-6.1/asoc-intel-soc-acpi-cht-make-lenovo-yoga-tab-3-x90f-.patch new file mode 100644 index 00000000000..5cc2eeec2db --- /dev/null +++ b/queue-6.1/asoc-intel-soc-acpi-cht-make-lenovo-yoga-tab-3-x90f-.patch @@ -0,0 +1,43 @@ +From 7329a028eba18c1155ac7ece6b41a12ff9ce418d 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.1/asoc-intel-soc-acpi-cht-make-lenovo-yoga-tab-3-x90f-.patch-12345 b/queue-6.1/asoc-intel-soc-acpi-cht-make-lenovo-yoga-tab-3-x90f-.patch-12345 new file mode 100644 index 00000000000..5cc2eeec2db --- /dev/null +++ b/queue-6.1/asoc-intel-soc-acpi-cht-make-lenovo-yoga-tab-3-x90f-.patch-12345 @@ -0,0 +1,43 @@ +From 7329a028eba18c1155ac7ece6b41a12ff9ce418d 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.1/asoc-sof-mediatek-add-missing-board-compatible.patch b/queue-6.1/asoc-sof-mediatek-add-missing-board-compatible.patch new file mode 100644 index 00000000000..377cfbd8cad --- /dev/null +++ b/queue-6.1/asoc-sof-mediatek-add-missing-board-compatible.patch @@ -0,0 +1,40 @@ +From 6cc8bff7f641abb2ba8a31ea0a2ce0864e13ed17 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 53cadbe8a05cc..ac96ea07e591b 100644 +--- a/sound/soc/sof/mediatek/mt8195/mt8195.c ++++ b/sound/soc/sof/mediatek/mt8195/mt8195.c +@@ -663,6 +663,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.1/asoc-sof-mediatek-add-missing-board-compatible.patch-13794 b/queue-6.1/asoc-sof-mediatek-add-missing-board-compatible.patch-13794 new file mode 100644 index 00000000000..377cfbd8cad --- /dev/null +++ b/queue-6.1/asoc-sof-mediatek-add-missing-board-compatible.patch-13794 @@ -0,0 +1,40 @@ +From 6cc8bff7f641abb2ba8a31ea0a2ce0864e13ed17 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 53cadbe8a05cc..ac96ea07e591b 100644 +--- a/sound/soc/sof/mediatek/mt8195/mt8195.c ++++ b/sound/soc/sof/mediatek/mt8195/mt8195.c +@@ -663,6 +663,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.1/asoc-tda7419-fix-module-autoloading.patch b/queue-6.1/asoc-tda7419-fix-module-autoloading.patch new file mode 100644 index 00000000000..eded6b3790f --- /dev/null +++ b/queue-6.1/asoc-tda7419-fix-module-autoloading.patch @@ -0,0 +1,35 @@ +From 1b0a5b9f9cf036b66ca8424aae4d49cec360c8fa 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 d964e5207569c..6010df2994c7b 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.1/asoc-tda7419-fix-module-autoloading.patch-17758 b/queue-6.1/asoc-tda7419-fix-module-autoloading.patch-17758 new file mode 100644 index 00000000000..eded6b3790f --- /dev/null +++ b/queue-6.1/asoc-tda7419-fix-module-autoloading.patch-17758 @@ -0,0 +1,35 @@ +From 1b0a5b9f9cf036b66ca8424aae4d49cec360c8fa 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 d964e5207569c..6010df2994c7b 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.1/block-fix-where-bio-io-priority-gets-set.patch b/queue-6.1/block-fix-where-bio-io-priority-gets-set.patch new file mode 100644 index 00000000000..dfee5801758 --- /dev/null +++ b/queue-6.1/block-fix-where-bio-io-priority-gets-set.patch @@ -0,0 +1,109 @@ +From 870ae5fed46a06ed01dfde8c307a410209dd0662 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Tue, 30 Jan 2024 15:26:34 -0500 +Subject: block: Fix where bio IO priority gets set + +From: Hongyu Jin + +[ Upstream commit f3c89983cb4fc00be64eb0d5cbcfcdf2cacb965e ] + +Commit 82b74cac2849 ("blk-ioprio: Convert from rqos policy to direct +call") pushed setting bio I/O priority down into blk_mq_submit_bio() +-- which is too low within block core's submit_bio() because it +skips setting I/O priority for block drivers that implement +fops->submit_bio() (e.g. DM, MD, etc). + +Fix this by moving bio_set_ioprio() up from blk-mq.c to blk-core.c and +call it from submit_bio(). This ensures all block drivers call +bio_set_ioprio() during initial bio submission. + +Fixes: a78418e6a04c ("block: Always initialize bio IO priority on submit") +Co-developed-by: Yibin Ding +Signed-off-by: Yibin Ding +Signed-off-by: Hongyu Jin +Reviewed-by: Eric Biggers +Reviewed-by: Mikulas Patocka +[snitzer: revised commit header] +Signed-off-by: Mike Snitzer +Reviewed-by: Ming Lei +Link: https://lore.kernel.org/r/20240130202638.62600-2-snitzer@kernel.org +Signed-off-by: Jens Axboe +Signed-off-by: Sasha Levin +--- + block/blk-core.c | 10 ++++++++++ + block/blk-mq.c | 10 ---------- + 2 files changed, 10 insertions(+), 10 deletions(-) + +diff --git a/block/blk-core.c b/block/blk-core.c +index a4155f123ab38..94941e3ce2194 100644 +--- a/block/blk-core.c ++++ b/block/blk-core.c +@@ -49,6 +49,7 @@ + #include "blk-pm.h" + #include "blk-cgroup.h" + #include "blk-throttle.h" ++#include "blk-ioprio.h" + + struct dentry *blk_debugfs_root; + +@@ -799,6 +800,14 @@ void submit_bio_noacct(struct bio *bio) + } + EXPORT_SYMBOL(submit_bio_noacct); + ++static void bio_set_ioprio(struct bio *bio) ++{ ++ /* Nobody set ioprio so far? Initialize it based on task's nice value */ ++ if (IOPRIO_PRIO_CLASS(bio->bi_ioprio) == IOPRIO_CLASS_NONE) ++ bio->bi_ioprio = get_current_ioprio(); ++ blkcg_set_ioprio(bio); ++} ++ + /** + * submit_bio - submit a bio to the block device layer for I/O + * @bio: The &struct bio which describes the I/O +@@ -824,6 +833,7 @@ void submit_bio(struct bio *bio) + count_vm_events(PGPGOUT, bio_sectors(bio)); + } + ++ bio_set_ioprio(bio); + submit_bio_noacct(bio); + } + EXPORT_SYMBOL(submit_bio); +diff --git a/block/blk-mq.c b/block/blk-mq.c +index daf0e4f3444e7..542b28a2e6b0f 100644 +--- a/block/blk-mq.c ++++ b/block/blk-mq.c +@@ -42,7 +42,6 @@ + #include "blk-stat.h" + #include "blk-mq-sched.h" + #include "blk-rq-qos.h" +-#include "blk-ioprio.h" + + static DEFINE_PER_CPU(struct llist_head, blk_cpu_done); + +@@ -2949,14 +2948,6 @@ static bool blk_mq_can_use_cached_rq(struct request *rq, struct blk_plug *plug, + return true; + } + +-static void bio_set_ioprio(struct bio *bio) +-{ +- /* Nobody set ioprio so far? Initialize it based on task's nice value */ +- if (IOPRIO_PRIO_CLASS(bio->bi_ioprio) == IOPRIO_CLASS_NONE) +- bio->bi_ioprio = get_current_ioprio(); +- blkcg_set_ioprio(bio); +-} +- + /** + * blk_mq_submit_bio - Create and send a request to block device. + * @bio: Bio pointer. +@@ -2980,7 +2971,6 @@ void blk_mq_submit_bio(struct bio *bio) + blk_status_t ret; + + bio = blk_queue_bounce(bio, q); +- bio_set_ioprio(bio); + + if (plug) { + rq = rq_list_peek(&plug->cached_rq); +-- +2.43.0 + diff --git a/queue-6.1/block-fix-where-bio-io-priority-gets-set.patch-18105 b/queue-6.1/block-fix-where-bio-io-priority-gets-set.patch-18105 new file mode 100644 index 00000000000..dfee5801758 --- /dev/null +++ b/queue-6.1/block-fix-where-bio-io-priority-gets-set.patch-18105 @@ -0,0 +1,109 @@ +From 870ae5fed46a06ed01dfde8c307a410209dd0662 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Tue, 30 Jan 2024 15:26:34 -0500 +Subject: block: Fix where bio IO priority gets set + +From: Hongyu Jin + +[ Upstream commit f3c89983cb4fc00be64eb0d5cbcfcdf2cacb965e ] + +Commit 82b74cac2849 ("blk-ioprio: Convert from rqos policy to direct +call") pushed setting bio I/O priority down into blk_mq_submit_bio() +-- which is too low within block core's submit_bio() because it +skips setting I/O priority for block drivers that implement +fops->submit_bio() (e.g. DM, MD, etc). + +Fix this by moving bio_set_ioprio() up from blk-mq.c to blk-core.c and +call it from submit_bio(). This ensures all block drivers call +bio_set_ioprio() during initial bio submission. + +Fixes: a78418e6a04c ("block: Always initialize bio IO priority on submit") +Co-developed-by: Yibin Ding +Signed-off-by: Yibin Ding +Signed-off-by: Hongyu Jin +Reviewed-by: Eric Biggers +Reviewed-by: Mikulas Patocka +[snitzer: revised commit header] +Signed-off-by: Mike Snitzer +Reviewed-by: Ming Lei +Link: https://lore.kernel.org/r/20240130202638.62600-2-snitzer@kernel.org +Signed-off-by: Jens Axboe +Signed-off-by: Sasha Levin +--- + block/blk-core.c | 10 ++++++++++ + block/blk-mq.c | 10 ---------- + 2 files changed, 10 insertions(+), 10 deletions(-) + +diff --git a/block/blk-core.c b/block/blk-core.c +index a4155f123ab38..94941e3ce2194 100644 +--- a/block/blk-core.c ++++ b/block/blk-core.c +@@ -49,6 +49,7 @@ + #include "blk-pm.h" + #include "blk-cgroup.h" + #include "blk-throttle.h" ++#include "blk-ioprio.h" + + struct dentry *blk_debugfs_root; + +@@ -799,6 +800,14 @@ void submit_bio_noacct(struct bio *bio) + } + EXPORT_SYMBOL(submit_bio_noacct); + ++static void bio_set_ioprio(struct bio *bio) ++{ ++ /* Nobody set ioprio so far? Initialize it based on task's nice value */ ++ if (IOPRIO_PRIO_CLASS(bio->bi_ioprio) == IOPRIO_CLASS_NONE) ++ bio->bi_ioprio = get_current_ioprio(); ++ blkcg_set_ioprio(bio); ++} ++ + /** + * submit_bio - submit a bio to the block device layer for I/O + * @bio: The &struct bio which describes the I/O +@@ -824,6 +833,7 @@ void submit_bio(struct bio *bio) + count_vm_events(PGPGOUT, bio_sectors(bio)); + } + ++ bio_set_ioprio(bio); + submit_bio_noacct(bio); + } + EXPORT_SYMBOL(submit_bio); +diff --git a/block/blk-mq.c b/block/blk-mq.c +index daf0e4f3444e7..542b28a2e6b0f 100644 +--- a/block/blk-mq.c ++++ b/block/blk-mq.c +@@ -42,7 +42,6 @@ + #include "blk-stat.h" + #include "blk-mq-sched.h" + #include "blk-rq-qos.h" +-#include "blk-ioprio.h" + + static DEFINE_PER_CPU(struct llist_head, blk_cpu_done); + +@@ -2949,14 +2948,6 @@ static bool blk_mq_can_use_cached_rq(struct request *rq, struct blk_plug *plug, + return true; + } + +-static void bio_set_ioprio(struct bio *bio) +-{ +- /* Nobody set ioprio so far? Initialize it based on task's nice value */ +- if (IOPRIO_PRIO_CLASS(bio->bi_ioprio) == IOPRIO_CLASS_NONE) +- bio->bi_ioprio = get_current_ioprio(); +- blkcg_set_ioprio(bio); +-} +- + /** + * blk_mq_submit_bio - Create and send a request to block device. + * @bio: Bio pointer. +@@ -2980,7 +2971,6 @@ void blk_mq_submit_bio(struct bio *bio) + blk_status_t ret; + + bio = blk_queue_bounce(bio, q); +- bio_set_ioprio(bio); + + if (plug) { + rq = rq_list_peek(&plug->cached_rq); +-- +2.43.0 + diff --git a/queue-6.1/can-mcp251xfd-mcp251xfd_ring_init-check-tx-coalescin.patch b/queue-6.1/can-mcp251xfd-mcp251xfd_ring_init-check-tx-coalescin.patch new file mode 100644 index 00000000000..cb688622f19 --- /dev/null +++ b/queue-6.1/can-mcp251xfd-mcp251xfd_ring_init-check-tx-coalescin.patch @@ -0,0 +1,63 @@ +From 7a9e30a14ca54f144fc0aae0ac58651a37f8de67 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 0fde8154a649b..a894cb1fb9bfe 100644 +--- a/drivers/net/can/spi/mcp251xfd/mcp251xfd-ring.c ++++ b/drivers/net/can/spi/mcp251xfd/mcp251xfd-ring.c +@@ -280,7 +280,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); + +@@ -376,10 +376,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.1/can-mcp251xfd-mcp251xfd_ring_init-check-tx-coalescin.patch-19360 b/queue-6.1/can-mcp251xfd-mcp251xfd_ring_init-check-tx-coalescin.patch-19360 new file mode 100644 index 00000000000..cb688622f19 --- /dev/null +++ b/queue-6.1/can-mcp251xfd-mcp251xfd_ring_init-check-tx-coalescin.patch-19360 @@ -0,0 +1,63 @@ +From 7a9e30a14ca54f144fc0aae0ac58651a37f8de67 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 0fde8154a649b..a894cb1fb9bfe 100644 +--- a/drivers/net/can/spi/mcp251xfd/mcp251xfd-ring.c ++++ b/drivers/net/can/spi/mcp251xfd/mcp251xfd-ring.c +@@ -280,7 +280,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); + +@@ -376,10 +376,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.1/drm-komeda-fix-an-issue-related-to-normalized-zpos.patch b/queue-6.1/drm-komeda-fix-an-issue-related-to-normalized-zpos.patch new file mode 100644 index 00000000000..48749b93f93 --- /dev/null +++ b/queue-6.1/drm-komeda-fix-an-issue-related-to-normalized-zpos.patch @@ -0,0 +1,79 @@ +From 5d6467541a908c78d27b1d530393d259859c7b8c 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 451746ebbe713..89f3d6aa72b08 100644 +--- a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c ++++ b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c +@@ -163,6 +163,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); +@@ -202,10 +203,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.1/drm-komeda-fix-an-issue-related-to-normalized-zpos.patch-6195 b/queue-6.1/drm-komeda-fix-an-issue-related-to-normalized-zpos.patch-6195 new file mode 100644 index 00000000000..48749b93f93 --- /dev/null +++ b/queue-6.1/drm-komeda-fix-an-issue-related-to-normalized-zpos.patch-6195 @@ -0,0 +1,79 @@ +From 5d6467541a908c78d27b1d530393d259859c7b8c 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 451746ebbe713..89f3d6aa72b08 100644 +--- a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c ++++ b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c +@@ -163,6 +163,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); +@@ -202,10 +203,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.1/hwmon-asus-ec-sensors-remove-vrm-temp-x570-e-gaming.patch b/queue-6.1/hwmon-asus-ec-sensors-remove-vrm-temp-x570-e-gaming.patch new file mode 100644 index 00000000000..11b0c8684d2 --- /dev/null +++ b/queue-6.1/hwmon-asus-ec-sensors-remove-vrm-temp-x570-e-gaming.patch @@ -0,0 +1,36 @@ +From c4a84e38bcafbc0d3f7ca172e755a74364f876fe 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 b4d65916b3c00..d893cfd1cb829 100644 +--- a/drivers/hwmon/asus-ec-sensors.c ++++ b/drivers/hwmon/asus-ec-sensors.c +@@ -369,7 +369,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.1/hwmon-asus-ec-sensors-remove-vrm-temp-x570-e-gaming.patch-17737 b/queue-6.1/hwmon-asus-ec-sensors-remove-vrm-temp-x570-e-gaming.patch-17737 new file mode 100644 index 00000000000..11b0c8684d2 --- /dev/null +++ b/queue-6.1/hwmon-asus-ec-sensors-remove-vrm-temp-x570-e-gaming.patch-17737 @@ -0,0 +1,36 @@ +From c4a84e38bcafbc0d3f7ca172e755a74364f876fe 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 b4d65916b3c00..d893cfd1cb829 100644 +--- a/drivers/hwmon/asus-ec-sensors.c ++++ b/drivers/hwmon/asus-ec-sensors.c +@@ -369,7 +369,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.1/loongarch-define-arch_irq_init_flags-as-irq_noprobe.patch b/queue-6.1/loongarch-define-arch_irq_init_flags-as-irq_noprobe.patch new file mode 100644 index 00000000000..9e3203193c5 --- /dev/null +++ b/queue-6.1/loongarch-define-arch_irq_init_flags-as-irq_noprobe.patch @@ -0,0 +1,55 @@ +From 018e86f5fa0c842c225ff6ef3e3b59df72d5cdef 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 0524bf1169b74..4496649c9e68b 100644 +--- a/arch/loongarch/kernel/irq.c ++++ b/arch/loongarch/kernel/irq.c +@@ -122,9 +122,6 @@ void __init init_IRQ(void) + panic("IPI IRQ request failed\n"); + #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.1/loongarch-define-arch_irq_init_flags-as-irq_noprobe.patch-24263 b/queue-6.1/loongarch-define-arch_irq_init_flags-as-irq_noprobe.patch-24263 new file mode 100644 index 00000000000..9e3203193c5 --- /dev/null +++ b/queue-6.1/loongarch-define-arch_irq_init_flags-as-irq_noprobe.patch-24263 @@ -0,0 +1,55 @@ +From 018e86f5fa0c842c225ff6ef3e3b59df72d5cdef 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 0524bf1169b74..4496649c9e68b 100644 +--- a/arch/loongarch/kernel/irq.c ++++ b/arch/loongarch/kernel/irq.c +@@ -122,9 +122,6 @@ void __init init_IRQ(void) + panic("IPI IRQ request failed\n"); + #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.1/microblaze-don-t-treat-zero-reserved-memory-regions-.patch b/queue-6.1/microblaze-don-t-treat-zero-reserved-memory-regions-.patch new file mode 100644 index 00000000000..cf93b081b96 --- /dev/null +++ b/queue-6.1/microblaze-don-t-treat-zero-reserved-memory-regions-.patch @@ -0,0 +1,51 @@ +From b071a874ac5a6a541127634169156fbbb6199425 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 353fabdfcbc54..2a3248194d505 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.1/microblaze-don-t-treat-zero-reserved-memory-regions-.patch-28512 b/queue-6.1/microblaze-don-t-treat-zero-reserved-memory-regions-.patch-28512 new file mode 100644 index 00000000000..cf93b081b96 --- /dev/null +++ b/queue-6.1/microblaze-don-t-treat-zero-reserved-memory-regions-.patch-28512 @@ -0,0 +1,51 @@ +From b071a874ac5a6a541127634169156fbbb6199425 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 353fabdfcbc54..2a3248194d505 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.1/net-ftgmac100-ensure-tx-descriptor-updates-are-visib.patch b/queue-6.1/net-ftgmac100-ensure-tx-descriptor-updates-are-visib.patch new file mode 100644 index 00000000000..e9071011069 --- /dev/null +++ b/queue-6.1/net-ftgmac100-ensure-tx-descriptor-updates-are-visib.patch @@ -0,0 +1,109 @@ +From 002b5ac1e2685291c81ff9791f87db9975d66b2e 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 a03879a27b041..7adc46aa75e66 100644 +--- a/drivers/net/ethernet/faraday/ftgmac100.c ++++ b/drivers/net/ethernet/faraday/ftgmac100.c +@@ -566,7 +566,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); +@@ -650,6 +650,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; +@@ -803,6 +808,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; + +@@ -823,7 +833,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"); + +@@ -845,7 +855,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++; +@@ -1338,7 +1348,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) +@@ -1537,15 +1547,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.1/net-ftgmac100-ensure-tx-descriptor-updates-are-visib.patch-11342 b/queue-6.1/net-ftgmac100-ensure-tx-descriptor-updates-are-visib.patch-11342 new file mode 100644 index 00000000000..e9071011069 --- /dev/null +++ b/queue-6.1/net-ftgmac100-ensure-tx-descriptor-updates-are-visib.patch-11342 @@ -0,0 +1,109 @@ +From 002b5ac1e2685291c81ff9791f87db9975d66b2e 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 a03879a27b041..7adc46aa75e66 100644 +--- a/drivers/net/ethernet/faraday/ftgmac100.c ++++ b/drivers/net/ethernet/faraday/ftgmac100.c +@@ -566,7 +566,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); +@@ -650,6 +650,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; +@@ -803,6 +808,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; + +@@ -823,7 +833,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"); + +@@ -845,7 +855,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++; +@@ -1338,7 +1348,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) +@@ -1537,15 +1547,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.1/ocfs2-add-bounds-checking-to-ocfs2_xattr_find_entry.patch b/queue-6.1/ocfs2-add-bounds-checking-to-ocfs2_xattr_find_entry.patch new file mode 100644 index 00000000000..4eab0d9b878 --- /dev/null +++ b/queue-6.1/ocfs2-add-bounds-checking-to-ocfs2_xattr_find_entry.patch @@ -0,0 +1,85 @@ +From 0ea2014a17504389b4965a432a40e91f57162590 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 55699c5735413..61213b7e4dfbe 100644 +--- a/fs/ocfs2/xattr.c ++++ b/fs/ocfs2/xattr.c +@@ -1066,7 +1066,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) + { +@@ -1080,6 +1080,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; +@@ -1170,7 +1174,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); +@@ -2702,7 +2706,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; +@@ -2837,7 +2841,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.1/ocfs2-add-bounds-checking-to-ocfs2_xattr_find_entry.patch-12187 b/queue-6.1/ocfs2-add-bounds-checking-to-ocfs2_xattr_find_entry.patch-12187 new file mode 100644 index 00000000000..4eab0d9b878 --- /dev/null +++ b/queue-6.1/ocfs2-add-bounds-checking-to-ocfs2_xattr_find_entry.patch-12187 @@ -0,0 +1,85 @@ +From 0ea2014a17504389b4965a432a40e91f57162590 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 55699c5735413..61213b7e4dfbe 100644 +--- a/fs/ocfs2/xattr.c ++++ b/fs/ocfs2/xattr.c +@@ -1066,7 +1066,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) + { +@@ -1080,6 +1080,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; +@@ -1170,7 +1174,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); +@@ -2702,7 +2706,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; +@@ -2837,7 +2841,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.1/ocfs2-strict-bound-check-before-memcmp-in-ocfs2_xatt.patch b/queue-6.1/ocfs2-strict-bound-check-before-memcmp-in-ocfs2_xatt.patch new file mode 100644 index 00000000000..4fbca8d1242 --- /dev/null +++ b/queue-6.1/ocfs2-strict-bound-check-before-memcmp-in-ocfs2_xatt.patch @@ -0,0 +1,67 @@ +From 78bdc9d421a2ca3b7b16f748036d2bc153dff758 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 61213b7e4dfbe..3ba40f16ef056 100644 +--- a/fs/ocfs2/xattr.c ++++ b/fs/ocfs2/xattr.c +@@ -1072,7 +1072,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; +@@ -1087,10 +1087,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.1/ocfs2-strict-bound-check-before-memcmp-in-ocfs2_xatt.patch-32532 b/queue-6.1/ocfs2-strict-bound-check-before-memcmp-in-ocfs2_xatt.patch-32532 new file mode 100644 index 00000000000..4fbca8d1242 --- /dev/null +++ b/queue-6.1/ocfs2-strict-bound-check-before-memcmp-in-ocfs2_xatt.patch-32532 @@ -0,0 +1,67 @@ +From 78bdc9d421a2ca3b7b16f748036d2bc153dff758 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 61213b7e4dfbe..3ba40f16ef056 100644 +--- a/fs/ocfs2/xattr.c ++++ b/fs/ocfs2/xattr.c +@@ -1072,7 +1072,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; +@@ -1087,10 +1087,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.1/pinctrl-at91-make-it-work-with-current-gpiolib.patch b/queue-6.1/pinctrl-at91-make-it-work-with-current-gpiolib.patch new file mode 100644 index 00000000000..635165ded1b --- /dev/null +++ b/queue-6.1/pinctrl-at91-make-it-work-with-current-gpiolib.patch @@ -0,0 +1,51 @@ +From c60d909731e4c7cccc4ea663623cd0c66889ae3f 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 ff3b6a8a0b170..333f9d70c7f48 100644 +--- a/drivers/pinctrl/pinctrl-at91.c ++++ b/drivers/pinctrl/pinctrl-at91.c +@@ -1420,8 +1420,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(&pdev->dev, "initialized AT91 pinctrl driver\n"); + +-- +2.43.0 + diff --git a/queue-6.1/pinctrl-at91-make-it-work-with-current-gpiolib.patch-9726 b/queue-6.1/pinctrl-at91-make-it-work-with-current-gpiolib.patch-9726 new file mode 100644 index 00000000000..635165ded1b --- /dev/null +++ b/queue-6.1/pinctrl-at91-make-it-work-with-current-gpiolib.patch-9726 @@ -0,0 +1,51 @@ +From c60d909731e4c7cccc4ea663623cd0c66889ae3f 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 ff3b6a8a0b170..333f9d70c7f48 100644 +--- a/drivers/pinctrl/pinctrl-at91.c ++++ b/drivers/pinctrl/pinctrl-at91.c +@@ -1420,8 +1420,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(&pdev->dev, "initialized AT91 pinctrl driver\n"); + +-- +2.43.0 + diff --git a/queue-6.1/scsi-lpfc-fix-overflow-build-issue.patch b/queue-6.1/scsi-lpfc-fix-overflow-build-issue.patch new file mode 100644 index 00000000000..b0028f0ac35 --- /dev/null +++ b/queue-6.1/scsi-lpfc-fix-overflow-build-issue.patch @@ -0,0 +1,54 @@ +From 87d4d29885694f6d4074ee088f694aa33094a143 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 2373dad016033..fc300febe9140 100644 +--- a/drivers/scsi/lpfc/lpfc_bsg.c ++++ b/drivers/scsi/lpfc/lpfc_bsg.c +@@ -5409,7 +5409,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.1/scsi-lpfc-fix-overflow-build-issue.patch-20005 b/queue-6.1/scsi-lpfc-fix-overflow-build-issue.patch-20005 new file mode 100644 index 00000000000..b0028f0ac35 --- /dev/null +++ b/queue-6.1/scsi-lpfc-fix-overflow-build-issue.patch-20005 @@ -0,0 +1,54 @@ +From 87d4d29885694f6d4074ee088f694aa33094a143 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 2373dad016033..fc300febe9140 100644 +--- a/drivers/scsi/lpfc/lpfc_bsg.c ++++ b/drivers/scsi/lpfc/lpfc_bsg.c +@@ -5409,7 +5409,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.1/series b/queue-6.1/series index e69de29bb2d..a2b3d925c8a 100644 --- a/queue-6.1/series +++ b/queue-6.1/series @@ -0,0 +1,62 @@ +asoc-sof-mediatek-add-missing-board-compatible.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 +net-ftgmac100-ensure-tx-descriptor-updates-are-visib.patch +loongarch-define-arch_irq_init_flags-as-irq_noprobe.patch +wifi-iwlwifi-lower-message-level-for-fw-buffer-desti.patch +wifi-iwlwifi-mvm-fix-iwl_mvm_scan_fits-calculation.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-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-tda7419-fix-module-autoloading.patch +spi-spidev-add-an-entry-for-elgin-jg10309-01.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 +x86-hyperv-set-x86_feature_tsc_known_freq-when-hyper.patch +tools-hv-rm-.-.cmd-when-make-clean.patch +block-fix-where-bio-io-priority-gets-set.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-13794 +asoc-allow-module-autoloading-for-table-db1200_pids.patch-6485 +asoc-allow-module-autoloading-for-table-board_ids.patch-3580 +alsa-hda-realtek-fixed-alc256-headphone-no-sound.patch-30958 +alsa-hda-realtek-fixed-alc285-headphone-no-sound.patch-25726 +scsi-lpfc-fix-overflow-build-issue.patch-20005 +pinctrl-at91-make-it-work-with-current-gpiolib.patch-9726 +hwmon-asus-ec-sensors-remove-vrm-temp-x570-e-gaming.patch-17737 +microblaze-don-t-treat-zero-reserved-memory-regions-.patch-28512 +net-ftgmac100-ensure-tx-descriptor-updates-are-visib.patch-11342 +loongarch-define-arch_irq_init_flags-as-irq_noprobe.patch-24263 +wifi-iwlwifi-lower-message-level-for-fw-buffer-desti.patch-31042 +wifi-iwlwifi-mvm-fix-iwl_mvm_scan_fits-calculation.patch-32738 +wifi-iwlwifi-mvm-pause-tcm-when-the-firmware-is-stop.patch-8139 +wifi-iwlwifi-mvm-don-t-wait-for-tx-queues-if-firmwar.patch-5725 +wifi-mac80211-free-skb-on-error-path-in-ieee80211_be.patch-24142 +wifi-iwlwifi-clear-trans-state-earlier-upon-error.patch-6929 +can-mcp251xfd-mcp251xfd_ring_init-check-tx-coalescin.patch-19360 +asoc-intel-soc-acpi-cht-make-lenovo-yoga-tab-3-x90f-.patch-12345 +asoc-intel-fix-module-autoloading.patch-15841 +asoc-tda7419-fix-module-autoloading.patch-17758 +spi-spidev-add-an-entry-for-elgin-jg10309-01.patch-11824 +drm-komeda-fix-an-issue-related-to-normalized-zpos.patch-6195 +spi-bcm63xx-enable-module-autoloading.patch-6357 +smb-client-fix-hang-in-wait_for_response-for-negprot.patch-28047 +x86-hyperv-set-x86_feature_tsc_known_freq-when-hyper.patch-19340 +tools-hv-rm-.-.cmd-when-make-clean.patch-11044 +block-fix-where-bio-io-priority-gets-set.patch-18105 +spi-spidev-add-missing-spi_device_id-for-jg10309-01.patch-21867 +ocfs2-add-bounds-checking-to-ocfs2_xattr_find_entry.patch-12187 +ocfs2-strict-bound-check-before-memcmp-in-ocfs2_xatt.patch-32532 diff --git a/queue-6.1/smb-client-fix-hang-in-wait_for_response-for-negprot.patch b/queue-6.1/smb-client-fix-hang-in-wait_for_response-for-negprot.patch new file mode 100644 index 00000000000..5a3eb5b25fd --- /dev/null +++ b/queue-6.1/smb-client-fix-hang-in-wait_for_response-for-negprot.patch @@ -0,0 +1,61 @@ +From 169dc7d3c37753764a156cbfe06dcc30bdddcbc7 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 21b344762d0f8..87ce71b39b771 100644 +--- a/fs/smb/client/connect.c ++++ b/fs/smb/client/connect.c +@@ -673,6 +673,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: +@@ -684,7 +697,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.1/smb-client-fix-hang-in-wait_for_response-for-negprot.patch-28047 b/queue-6.1/smb-client-fix-hang-in-wait_for_response-for-negprot.patch-28047 new file mode 100644 index 00000000000..5a3eb5b25fd --- /dev/null +++ b/queue-6.1/smb-client-fix-hang-in-wait_for_response-for-negprot.patch-28047 @@ -0,0 +1,61 @@ +From 169dc7d3c37753764a156cbfe06dcc30bdddcbc7 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 21b344762d0f8..87ce71b39b771 100644 +--- a/fs/smb/client/connect.c ++++ b/fs/smb/client/connect.c +@@ -673,6 +673,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: +@@ -684,7 +697,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.1/spi-bcm63xx-enable-module-autoloading.patch b/queue-6.1/spi-bcm63xx-enable-module-autoloading.patch new file mode 100644 index 00000000000..a800c22799e --- /dev/null +++ b/queue-6.1/spi-bcm63xx-enable-module-autoloading.patch @@ -0,0 +1,35 @@ +From 751549c2202bc87c7c5fe7c5bbac8d320ac7a692 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 147199002df1e..a9921dcd6b797 100644 +--- a/drivers/spi/spi-bcm63xx.c ++++ b/drivers/spi/spi-bcm63xx.c +@@ -482,6 +482,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.1/spi-bcm63xx-enable-module-autoloading.patch-6357 b/queue-6.1/spi-bcm63xx-enable-module-autoloading.patch-6357 new file mode 100644 index 00000000000..a800c22799e --- /dev/null +++ b/queue-6.1/spi-bcm63xx-enable-module-autoloading.patch-6357 @@ -0,0 +1,35 @@ +From 751549c2202bc87c7c5fe7c5bbac8d320ac7a692 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 147199002df1e..a9921dcd6b797 100644 +--- a/drivers/spi/spi-bcm63xx.c ++++ b/drivers/spi/spi-bcm63xx.c +@@ -482,6 +482,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.1/spi-spidev-add-an-entry-for-elgin-jg10309-01.patch b/queue-6.1/spi-spidev-add-an-entry-for-elgin-jg10309-01.patch new file mode 100644 index 00000000000..7373303e3db --- /dev/null +++ b/queue-6.1/spi-spidev-add-an-entry-for-elgin-jg10309-01.patch @@ -0,0 +1,38 @@ +From be45e6eda30bf297c6bc8f335f2b9e3842fd1883 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 477c3578e7d9e..7ae032f8de63c 100644 +--- a/drivers/spi/spidev.c ++++ b/drivers/spi/spidev.c +@@ -722,6 +722,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.1/spi-spidev-add-an-entry-for-elgin-jg10309-01.patch-11824 b/queue-6.1/spi-spidev-add-an-entry-for-elgin-jg10309-01.patch-11824 new file mode 100644 index 00000000000..7373303e3db --- /dev/null +++ b/queue-6.1/spi-spidev-add-an-entry-for-elgin-jg10309-01.patch-11824 @@ -0,0 +1,38 @@ +From be45e6eda30bf297c6bc8f335f2b9e3842fd1883 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 477c3578e7d9e..7ae032f8de63c 100644 +--- a/drivers/spi/spidev.c ++++ b/drivers/spi/spidev.c +@@ -722,6 +722,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.1/spi-spidev-add-missing-spi_device_id-for-jg10309-01.patch b/queue-6.1/spi-spidev-add-missing-spi_device_id-for-jg10309-01.patch new file mode 100644 index 00000000000..671461fc44a --- /dev/null +++ b/queue-6.1/spi-spidev-add-missing-spi_device_id-for-jg10309-01.patch @@ -0,0 +1,42 @@ +From bcb4b03946a4adb9f67d3899e034a906f63cc1ff 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 7ae032f8de63c..81a3cf9253452 100644 +--- a/drivers/spi/spidev.c ++++ b/drivers/spi/spidev.c +@@ -694,6 +694,7 @@ static 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.1/spi-spidev-add-missing-spi_device_id-for-jg10309-01.patch-21867 b/queue-6.1/spi-spidev-add-missing-spi_device_id-for-jg10309-01.patch-21867 new file mode 100644 index 00000000000..671461fc44a --- /dev/null +++ b/queue-6.1/spi-spidev-add-missing-spi_device_id-for-jg10309-01.patch-21867 @@ -0,0 +1,42 @@ +From bcb4b03946a4adb9f67d3899e034a906f63cc1ff 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 7ae032f8de63c..81a3cf9253452 100644 +--- a/drivers/spi/spidev.c ++++ b/drivers/spi/spidev.c +@@ -694,6 +694,7 @@ static 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.1/tools-hv-rm-.-.cmd-when-make-clean.patch b/queue-6.1/tools-hv-rm-.-.cmd-when-make-clean.patch new file mode 100644 index 00000000000..2ac8fbf11b1 --- /dev/null +++ b/queue-6.1/tools-hv-rm-.-.cmd-when-make-clean.patch @@ -0,0 +1,37 @@ +From b82500b63db6ea7005a1b0c31fa51f534fa51226 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 fe770e679ae8f..5643058e2d377 100644 +--- a/tools/hv/Makefile ++++ b/tools/hv/Makefile +@@ -47,7 +47,7 @@ $(OUTPUT)hv_fcopy_daemon: $(HV_FCOPY_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.1/tools-hv-rm-.-.cmd-when-make-clean.patch-11044 b/queue-6.1/tools-hv-rm-.-.cmd-when-make-clean.patch-11044 new file mode 100644 index 00000000000..2ac8fbf11b1 --- /dev/null +++ b/queue-6.1/tools-hv-rm-.-.cmd-when-make-clean.patch-11044 @@ -0,0 +1,37 @@ +From b82500b63db6ea7005a1b0c31fa51f534fa51226 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 fe770e679ae8f..5643058e2d377 100644 +--- a/tools/hv/Makefile ++++ b/tools/hv/Makefile +@@ -47,7 +47,7 @@ $(OUTPUT)hv_fcopy_daemon: $(HV_FCOPY_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.1/wifi-iwlwifi-clear-trans-state-earlier-upon-error.patch b/queue-6.1/wifi-iwlwifi-clear-trans-state-earlier-upon-error.patch new file mode 100644 index 00000000000..3383f681e44 --- /dev/null +++ b/queue-6.1/wifi-iwlwifi-clear-trans-state-earlier-upon-error.patch @@ -0,0 +1,72 @@ +From 544ad8c06bd61a0510cd4bb714174fd1a8347cf9 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 3b0ed1cdfa11e..7fadaec777cea 100644 +--- a/drivers/net/wireless/intel/iwlwifi/fw/dbg.c ++++ b/drivers/net/wireless/intel/iwlwifi/fw/dbg.c +@@ -3131,7 +3131,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 70022cadee35b..ad29663a356be 100644 +--- a/drivers/net/wireless/intel/iwlwifi/iwl-trans.h ++++ b/drivers/net/wireless/intel/iwlwifi/iwl-trans.h +@@ -1472,8 +1472,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.1/wifi-iwlwifi-clear-trans-state-earlier-upon-error.patch-6929 b/queue-6.1/wifi-iwlwifi-clear-trans-state-earlier-upon-error.patch-6929 new file mode 100644 index 00000000000..3383f681e44 --- /dev/null +++ b/queue-6.1/wifi-iwlwifi-clear-trans-state-earlier-upon-error.patch-6929 @@ -0,0 +1,72 @@ +From 544ad8c06bd61a0510cd4bb714174fd1a8347cf9 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 3b0ed1cdfa11e..7fadaec777cea 100644 +--- a/drivers/net/wireless/intel/iwlwifi/fw/dbg.c ++++ b/drivers/net/wireless/intel/iwlwifi/fw/dbg.c +@@ -3131,7 +3131,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 70022cadee35b..ad29663a356be 100644 +--- a/drivers/net/wireless/intel/iwlwifi/iwl-trans.h ++++ b/drivers/net/wireless/intel/iwlwifi/iwl-trans.h +@@ -1472,8 +1472,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.1/wifi-iwlwifi-lower-message-level-for-fw-buffer-desti.patch b/queue-6.1/wifi-iwlwifi-lower-message-level-for-fw-buffer-desti.patch new file mode 100644 index 00000000000..d9d6078e0cb --- /dev/null +++ b/queue-6.1/wifi-iwlwifi-lower-message-level-for-fw-buffer-desti.patch @@ -0,0 +1,41 @@ +From 6430255faec55353ed3fb5081b1fefde4039fb10 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 75fd386b048e9..35c60faf8e8fb 100644 +--- a/drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c ++++ b/drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c +@@ -68,7 +68,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.1/wifi-iwlwifi-lower-message-level-for-fw-buffer-desti.patch-31042 b/queue-6.1/wifi-iwlwifi-lower-message-level-for-fw-buffer-desti.patch-31042 new file mode 100644 index 00000000000..d9d6078e0cb --- /dev/null +++ b/queue-6.1/wifi-iwlwifi-lower-message-level-for-fw-buffer-desti.patch-31042 @@ -0,0 +1,41 @@ +From 6430255faec55353ed3fb5081b1fefde4039fb10 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 75fd386b048e9..35c60faf8e8fb 100644 +--- a/drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c ++++ b/drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c +@@ -68,7 +68,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.1/wifi-iwlwifi-mvm-don-t-wait-for-tx-queues-if-firmwar.patch b/queue-6.1/wifi-iwlwifi-mvm-don-t-wait-for-tx-queues-if-firmwar.patch new file mode 100644 index 00000000000..35b0d2aa544 --- /dev/null +++ b/queue-6.1/wifi-iwlwifi-mvm-don-t-wait-for-tx-queues-if-firmwar.patch @@ -0,0 +1,60 @@ +From 879ec4bc21ffaca3f9af137f0794e09ef0d96283 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 4e8bdd3d701bf..bd4301857ba87 100644 +--- a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ++++ b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c +@@ -4800,6 +4800,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, +@@ -4881,8 +4885,11 @@ static void iwl_mvm_mac_flush(struct ieee80211_hw *hw, + + /* 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.1/wifi-iwlwifi-mvm-don-t-wait-for-tx-queues-if-firmwar.patch-5725 b/queue-6.1/wifi-iwlwifi-mvm-don-t-wait-for-tx-queues-if-firmwar.patch-5725 new file mode 100644 index 00000000000..35b0d2aa544 --- /dev/null +++ b/queue-6.1/wifi-iwlwifi-mvm-don-t-wait-for-tx-queues-if-firmwar.patch-5725 @@ -0,0 +1,60 @@ +From 879ec4bc21ffaca3f9af137f0794e09ef0d96283 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 4e8bdd3d701bf..bd4301857ba87 100644 +--- a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c ++++ b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c +@@ -4800,6 +4800,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, +@@ -4881,8 +4885,11 @@ static void iwl_mvm_mac_flush(struct ieee80211_hw *hw, + + /* 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.1/wifi-iwlwifi-mvm-fix-iwl_mvm_scan_fits-calculation.patch b/queue-6.1/wifi-iwlwifi-mvm-fix-iwl_mvm_scan_fits-calculation.patch new file mode 100644 index 00000000000..93384363ec5 --- /dev/null +++ b/queue-6.1/wifi-iwlwifi-mvm-fix-iwl_mvm_scan_fits-calculation.patch @@ -0,0 +1,78 @@ +From ee050810cd87d4d3998bffe050ffe97b7fba828a 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 b58441c2af730..20c5cc72e4269 100644 +--- a/drivers/net/wireless/intel/iwlwifi/mvm/scan.c ++++ b/drivers/net/wireless/intel/iwlwifi/mvm/scan.c +@@ -824,8 +824,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))); + } + +@@ -2935,18 +2935,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) { +@@ -2963,6 +2961,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.1/wifi-iwlwifi-mvm-fix-iwl_mvm_scan_fits-calculation.patch-32738 b/queue-6.1/wifi-iwlwifi-mvm-fix-iwl_mvm_scan_fits-calculation.patch-32738 new file mode 100644 index 00000000000..93384363ec5 --- /dev/null +++ b/queue-6.1/wifi-iwlwifi-mvm-fix-iwl_mvm_scan_fits-calculation.patch-32738 @@ -0,0 +1,78 @@ +From ee050810cd87d4d3998bffe050ffe97b7fba828a 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 b58441c2af730..20c5cc72e4269 100644 +--- a/drivers/net/wireless/intel/iwlwifi/mvm/scan.c ++++ b/drivers/net/wireless/intel/iwlwifi/mvm/scan.c +@@ -824,8 +824,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))); + } + +@@ -2935,18 +2935,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) { +@@ -2963,6 +2961,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.1/wifi-iwlwifi-mvm-pause-tcm-when-the-firmware-is-stop.patch b/queue-6.1/wifi-iwlwifi-mvm-pause-tcm-when-the-firmware-is-stop.patch new file mode 100644 index 00000000000..11ccd271984 --- /dev/null +++ b/queue-6.1/wifi-iwlwifi-mvm-pause-tcm-when-the-firmware-is-stop.patch @@ -0,0 +1,53 @@ +From 77a3713bb69dd649c271152c2ed2839c0829bcf3 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 88b6d4e566c40..0a11ee347bf32 100644 +--- a/drivers/net/wireless/intel/iwlwifi/mvm/ops.c ++++ b/drivers/net/wireless/intel/iwlwifi/mvm/ops.c +@@ -1366,6 +1366,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.1/wifi-iwlwifi-mvm-pause-tcm-when-the-firmware-is-stop.patch-8139 b/queue-6.1/wifi-iwlwifi-mvm-pause-tcm-when-the-firmware-is-stop.patch-8139 new file mode 100644 index 00000000000..11ccd271984 --- /dev/null +++ b/queue-6.1/wifi-iwlwifi-mvm-pause-tcm-when-the-firmware-is-stop.patch-8139 @@ -0,0 +1,53 @@ +From 77a3713bb69dd649c271152c2ed2839c0829bcf3 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 88b6d4e566c40..0a11ee347bf32 100644 +--- a/drivers/net/wireless/intel/iwlwifi/mvm/ops.c ++++ b/drivers/net/wireless/intel/iwlwifi/mvm/ops.c +@@ -1366,6 +1366,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.1/wifi-mac80211-free-skb-on-error-path-in-ieee80211_be.patch b/queue-6.1/wifi-mac80211-free-skb-on-error-path-in-ieee80211_be.patch new file mode 100644 index 00000000000..f464d8981de --- /dev/null +++ b/queue-6.1/wifi-mac80211-free-skb-on-error-path-in-ieee80211_be.patch @@ -0,0 +1,39 @@ +From 49042496cbf5fd418eb24a2bcae78cda05c01d89 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 419baf8efddea..0685ae2ea64eb 100644 +--- a/net/mac80211/tx.c ++++ b/net/mac80211/tx.c +@@ -5196,8 +5196,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.1/wifi-mac80211-free-skb-on-error-path-in-ieee80211_be.patch-24142 b/queue-6.1/wifi-mac80211-free-skb-on-error-path-in-ieee80211_be.patch-24142 new file mode 100644 index 00000000000..f464d8981de --- /dev/null +++ b/queue-6.1/wifi-mac80211-free-skb-on-error-path-in-ieee80211_be.patch-24142 @@ -0,0 +1,39 @@ +From 49042496cbf5fd418eb24a2bcae78cda05c01d89 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 419baf8efddea..0685ae2ea64eb 100644 +--- a/net/mac80211/tx.c ++++ b/net/mac80211/tx.c +@@ -5196,8 +5196,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.1/x86-hyperv-set-x86_feature_tsc_known_freq-when-hyper.patch b/queue-6.1/x86-hyperv-set-x86_feature_tsc_known_freq-when-hyper.patch new file mode 100644 index 00000000000..08b7b71944e --- /dev/null +++ b/queue-6.1/x86-hyperv-set-x86_feature_tsc_known_freq-when-hyper.patch @@ -0,0 +1,49 @@ +From 2b9b9241d9dcde22387a4869e2cd6e9986bef9ef 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 9b039e9635e40..542b818c0d20d 100644 +--- a/arch/x86/kernel/cpu/mshyperv.c ++++ b/arch/x86/kernel/cpu/mshyperv.c +@@ -324,6 +324,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.1/x86-hyperv-set-x86_feature_tsc_known_freq-when-hyper.patch-19340 b/queue-6.1/x86-hyperv-set-x86_feature_tsc_known_freq-when-hyper.patch-19340 new file mode 100644 index 00000000000..08b7b71944e --- /dev/null +++ b/queue-6.1/x86-hyperv-set-x86_feature_tsc_known_freq-when-hyper.patch-19340 @@ -0,0 +1,49 @@ +From 2b9b9241d9dcde22387a4869e2cd6e9986bef9ef 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 9b039e9635e40..542b818c0d20d 100644 +--- a/arch/x86/kernel/cpu/mshyperv.c ++++ b/arch/x86/kernel/cpu/mshyperv.c +@@ -324,6 +324,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 +