From: Greg Kroah-Hartman Date: Tue, 24 Mar 2020 09:33:12 +0000 (+0100) Subject: 4.4-stable patches X-Git-Tag: v4.19.113~8 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=29eef5570b4359b8bf66da6580892e1f708a4660;p=thirdparty%2Fkernel%2Fstable-queue.git 4.4-stable patches added patches: alsa-hda-realtek-fix-pop-noise-on-alc225.patch arm64-smp-fix-smp_send_stop-behaviour.patch --- diff --git a/queue-4.4/alsa-hda-realtek-fix-pop-noise-on-alc225.patch b/queue-4.4/alsa-hda-realtek-fix-pop-noise-on-alc225.patch new file mode 100644 index 00000000000..98f4acf7c58 --- /dev/null +++ b/queue-4.4/alsa-hda-realtek-fix-pop-noise-on-alc225.patch @@ -0,0 +1,36 @@ +From 3b36b13d5e69d6f51ff1c55d1b404a74646c9757 Mon Sep 17 00:00:00 2001 +From: Kai-Heng Feng +Date: Wed, 11 Mar 2020 14:13:28 +0800 +Subject: ALSA: hda/realtek: Fix pop noise on ALC225 + +From: Kai-Heng Feng + +commit 3b36b13d5e69d6f51ff1c55d1b404a74646c9757 upstream. + +Commit 317d9313925c ("ALSA: hda/realtek - Set default power save node to +0") makes the ALC225 have pop noise on S3 resume and cold boot. + +So partially revert this commit for ALC225 to fix the regression. + +Fixes: 317d9313925c ("ALSA: hda/realtek - Set default power save node to 0") +BugLink: https://bugs.launchpad.net/bugs/1866357 +Signed-off-by: Kai-Heng Feng +Link: https://lore.kernel.org/r/20200311061328.17614-1-kai.heng.feng@canonical.com +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + sound/pci/hda/patch_realtek.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/sound/pci/hda/patch_realtek.c ++++ b/sound/pci/hda/patch_realtek.c +@@ -6333,6 +6333,8 @@ static int patch_alc269(struct hda_codec + alc_update_coef_idx(codec, 0x36, 1 << 13, 1 << 5); /* Switch pcbeep path to Line in path*/ + break; + case 0x10ec0225: ++ codec->power_save_node = 1; ++ /* fall through */ + case 0x10ec0295: + case 0x10ec0299: + spec->codec_variant = ALC269_TYPE_ALC225; diff --git a/queue-4.4/arm64-smp-fix-smp_send_stop-behaviour.patch b/queue-4.4/arm64-smp-fix-smp_send_stop-behaviour.patch new file mode 100644 index 00000000000..9044e12dfb2 --- /dev/null +++ b/queue-4.4/arm64-smp-fix-smp_send_stop-behaviour.patch @@ -0,0 +1,115 @@ +From d0bab0c39e32d39a8c5cddca72e5b4a3059fe050 Mon Sep 17 00:00:00 2001 +From: Cristian Marussi +Date: Wed, 11 Mar 2020 17:12:44 +0000 +Subject: arm64: smp: fix smp_send_stop() behaviour + +From: Cristian Marussi + +commit d0bab0c39e32d39a8c5cddca72e5b4a3059fe050 upstream. + +On a system with only one CPU online, when another one CPU panics while +starting-up, smp_send_stop() will fail to send any STOP message to the +other already online core, resulting in a system still responsive and +alive at the end of the panic procedure. + +[ 186.700083] CPU3: shutdown +[ 187.075462] CPU2: shutdown +[ 187.162869] CPU1: shutdown +[ 188.689998] ------------[ cut here ]------------ +[ 188.691645] kernel BUG at arch/arm64/kernel/cpufeature.c:886! +[ 188.692079] Internal error: Oops - BUG: 0 [#1] PREEMPT SMP +[ 188.692444] Modules linked in: +[ 188.693031] CPU: 3 PID: 0 Comm: swapper/3 Not tainted 5.6.0-rc4-00001-g338d25c35a98 #104 +[ 188.693175] Hardware name: Foundation-v8A (DT) +[ 188.693492] pstate: 200001c5 (nzCv dAIF -PAN -UAO) +[ 188.694183] pc : has_cpuid_feature+0xf0/0x348 +[ 188.694311] lr : verify_local_elf_hwcaps+0x84/0xe8 +[ 188.694410] sp : ffff800011b1bf60 +[ 188.694536] x29: ffff800011b1bf60 x28: 0000000000000000 +[ 188.694707] x27: 0000000000000000 x26: 0000000000000000 +[ 188.694801] x25: 0000000000000000 x24: ffff80001189a25c +[ 188.694905] x23: 0000000000000000 x22: 0000000000000000 +[ 188.694996] x21: ffff8000114aa018 x20: ffff800011156a38 +[ 188.695089] x19: ffff800010c944a0 x18: 0000000000000004 +[ 188.695187] x17: 0000000000000000 x16: 0000000000000000 +[ 188.695280] x15: 0000249dbde5431e x14: 0262cbe497efa1fa +[ 188.695371] x13: 0000000000000002 x12: 0000000000002592 +[ 188.695472] x11: 0000000000000080 x10: 00400032b5503510 +[ 188.695572] x9 : 0000000000000000 x8 : ffff800010c80204 +[ 188.695659] x7 : 00000000410fd0f0 x6 : 0000000000000001 +[ 188.695750] x5 : 00000000410fd0f0 x4 : 0000000000000000 +[ 188.695836] x3 : 0000000000000000 x2 : ffff8000100939d8 +[ 188.695919] x1 : 0000000000180420 x0 : 0000000000180480 +[ 188.696253] Call trace: +[ 188.696410] has_cpuid_feature+0xf0/0x348 +[ 188.696504] verify_local_elf_hwcaps+0x84/0xe8 +[ 188.696591] check_local_cpu_capabilities+0x44/0x128 +[ 188.696666] secondary_start_kernel+0xf4/0x188 +[ 188.697150] Code: 52805001 72a00301 6b01001f 54000ec0 (d4210000) +[ 188.698639] ---[ end trace 3f12ca47652f7b72 ]--- +[ 188.699160] Kernel panic - not syncing: Attempted to kill the idle task! +[ 188.699546] Kernel Offset: disabled +[ 188.699828] CPU features: 0x00004,20c02008 +[ 188.700012] Memory Limit: none +[ 188.700538] ---[ end Kernel panic - not syncing: Attempted to kill the idle task! ]--- + +[root@arch ~]# echo Helo +Helo +[root@arch ~]# cat /proc/cpuinfo | grep proce +processor : 0 + +Make smp_send_stop() account also for the online status of the calling CPU +while evaluating how many CPUs are effectively online: this way, the right +number of STOPs is sent, so enforcing a proper freeze of the system at the +end of panic even under the above conditions. + +Fixes: 08e875c16a16c ("arm64: SMP support") +Reported-by: Dave Martin +Acked-by: Mark Rutland +Signed-off-by: Cristian Marussi +Signed-off-by: Will Deacon +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm64/kernel/smp.c | 17 ++++++++++++++--- + 1 file changed, 14 insertions(+), 3 deletions(-) + +--- a/arch/arm64/kernel/smp.c ++++ b/arch/arm64/kernel/smp.c +@@ -769,11 +769,22 @@ void tick_broadcast(const struct cpumask + } + #endif + ++/* ++ * The number of CPUs online, not counting this CPU (which may not be ++ * fully online and so not counted in num_online_cpus()). ++ */ ++static inline unsigned int num_other_online_cpus(void) ++{ ++ unsigned int this_cpu_online = cpu_online(smp_processor_id()); ++ ++ return num_online_cpus() - this_cpu_online; ++} ++ + void smp_send_stop(void) + { + unsigned long timeout; + +- if (num_online_cpus() > 1) { ++ if (num_other_online_cpus()) { + cpumask_t mask; + + cpumask_copy(&mask, cpu_online_mask); +@@ -784,10 +795,10 @@ void smp_send_stop(void) + + /* Wait up to one second for other CPUs to stop */ + timeout = USEC_PER_SEC; +- while (num_online_cpus() > 1 && timeout--) ++ while (num_other_online_cpus() && timeout--) + udelay(1); + +- if (num_online_cpus() > 1) ++ if (num_other_online_cpus()) + pr_warning("SMP: failed to stop secondary CPUs\n"); + } + diff --git a/queue-4.4/series b/queue-4.4/series index 351d904670c..3ade48f8a8f 100644 --- a/queue-4.4/series +++ b/queue-4.4/series @@ -28,3 +28,5 @@ usb-cdc-acm-fix-rounding-error-in-tiocsserial.patch kbuild-disable-wpointer-to-enum-cast.patch futex-fix-inode-life-time-issue.patch futex-unbreak-futex-hashing.patch +alsa-hda-realtek-fix-pop-noise-on-alc225.patch +arm64-smp-fix-smp_send_stop-behaviour.patch