--- /dev/null
+From 3b36b13d5e69d6f51ff1c55d1b404a74646c9757 Mon Sep 17 00:00:00 2001
+From: Kai-Heng Feng <kai.heng.feng@canonical.com>
+Date: Wed, 11 Mar 2020 14:13:28 +0800
+Subject: ALSA: hda/realtek: Fix pop noise on ALC225
+
+From: Kai-Heng Feng <kai.heng.feng@canonical.com>
+
+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 <kai.heng.feng@canonical.com>
+Link: https://lore.kernel.org/r/20200311061328.17614-1-kai.heng.feng@canonical.com
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ 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;
--- /dev/null
+From d0bab0c39e32d39a8c5cddca72e5b4a3059fe050 Mon Sep 17 00:00:00 2001
+From: Cristian Marussi <cristian.marussi@arm.com>
+Date: Wed, 11 Mar 2020 17:12:44 +0000
+Subject: arm64: smp: fix smp_send_stop() behaviour
+
+From: Cristian Marussi <cristian.marussi@arm.com>
+
+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 <Dave.Martin@arm.com>
+Acked-by: Mark Rutland <mark.rutland@arm.com>
+Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
+Signed-off-by: Will Deacon <will@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ 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");
+ }
+