From ee71172a95b8692a9f47e5192848ca7b9a90d718 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Sun, 18 Aug 2019 07:11:16 +0200 Subject: [PATCH] 4.14-stable patches added patches: alsa-hda-add-a-generic-reboot_notify.patch alsa-hda-apply-workaround-for-another-amd-chip-1022-1487.patch alsa-hda-fix-a-memory-leak-bug.patch alsa-hda-let-all-conexant-codec-enter-d3-when-rebooting.patch xtensa-add-missing-isync-to-the-cpu_reset-tlb-code.patch --- ...alsa-hda-add-a-generic-reboot_notify.patch | 114 ++++++++++++++++++ ...round-for-another-amd-chip-1022-1487.patch | 34 ++++++ .../alsa-hda-fix-a-memory-leak-bug.patch | 36 ++++++ ...nexant-codec-enter-d3-when-rebooting.patch | 47 ++++++++ queue-4.14/series | 5 + ...sing-isync-to-the-cpu_reset-tlb-code.patch | 32 +++++ 6 files changed, 268 insertions(+) create mode 100644 queue-4.14/alsa-hda-add-a-generic-reboot_notify.patch create mode 100644 queue-4.14/alsa-hda-apply-workaround-for-another-amd-chip-1022-1487.patch create mode 100644 queue-4.14/alsa-hda-fix-a-memory-leak-bug.patch create mode 100644 queue-4.14/alsa-hda-let-all-conexant-codec-enter-d3-when-rebooting.patch create mode 100644 queue-4.14/xtensa-add-missing-isync-to-the-cpu_reset-tlb-code.patch diff --git a/queue-4.14/alsa-hda-add-a-generic-reboot_notify.patch b/queue-4.14/alsa-hda-add-a-generic-reboot_notify.patch new file mode 100644 index 00000000000..6be54f7f895 --- /dev/null +++ b/queue-4.14/alsa-hda-add-a-generic-reboot_notify.patch @@ -0,0 +1,114 @@ +From 871b9066027702e6e6589da0e1edd3b7dede7205 Mon Sep 17 00:00:00 2001 +From: Hui Wang +Date: Wed, 14 Aug 2019 12:09:08 +0800 +Subject: ALSA: hda - Add a generic reboot_notify + +From: Hui Wang + +commit 871b9066027702e6e6589da0e1edd3b7dede7205 upstream. + +Make codec enter D3 before rebooting or poweroff can fix the noise +issue on some laptops. And in theory it is harmless for all codecs +to enter D3 before rebooting or poweroff, let us add a generic +reboot_notify, then realtek and conexant drivers can call this +function. + +Cc: stable@vger.kernel.org +Signed-off-by: Hui Wang +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + sound/pci/hda/hda_generic.c | 19 +++++++++++++++++++ + sound/pci/hda/hda_generic.h | 1 + + sound/pci/hda/patch_conexant.c | 6 +----- + sound/pci/hda/patch_realtek.c | 11 +---------- + 4 files changed, 22 insertions(+), 15 deletions(-) + +--- a/sound/pci/hda/hda_generic.c ++++ b/sound/pci/hda/hda_generic.c +@@ -5896,6 +5896,24 @@ void snd_hda_gen_free(struct hda_codec * + } + EXPORT_SYMBOL_GPL(snd_hda_gen_free); + ++/** ++ * snd_hda_gen_reboot_notify - Make codec enter D3 before rebooting ++ * @codec: the HDA codec ++ * ++ * This can be put as patch_ops reboot_notify function. ++ */ ++void snd_hda_gen_reboot_notify(struct hda_codec *codec) ++{ ++ /* Make the codec enter D3 to avoid spurious noises from the internal ++ * speaker during (and after) reboot ++ */ ++ snd_hda_codec_set_power_to_all(codec, codec->core.afg, AC_PWRST_D3); ++ snd_hda_codec_write(codec, codec->core.afg, 0, ++ AC_VERB_SET_POWER_STATE, AC_PWRST_D3); ++ msleep(10); ++} ++EXPORT_SYMBOL_GPL(snd_hda_gen_reboot_notify); ++ + #ifdef CONFIG_PM + /** + * snd_hda_gen_check_power_status - check the loopback power save state +@@ -5923,6 +5941,7 @@ static const struct hda_codec_ops generi + .init = snd_hda_gen_init, + .free = snd_hda_gen_free, + .unsol_event = snd_hda_jack_unsol_event, ++ .reboot_notify = snd_hda_gen_reboot_notify, + #ifdef CONFIG_PM + .check_power_status = snd_hda_gen_check_power_status, + #endif +--- a/sound/pci/hda/hda_generic.h ++++ b/sound/pci/hda/hda_generic.h +@@ -323,6 +323,7 @@ int snd_hda_gen_parse_auto_config(struct + struct auto_pin_cfg *cfg); + int snd_hda_gen_build_controls(struct hda_codec *codec); + int snd_hda_gen_build_pcms(struct hda_codec *codec); ++void snd_hda_gen_reboot_notify(struct hda_codec *codec); + + /* standard jack event callbacks */ + void snd_hda_gen_hp_automute(struct hda_codec *codec, +--- a/sound/pci/hda/patch_conexant.c ++++ b/sound/pci/hda/patch_conexant.c +@@ -222,11 +222,7 @@ static void cx_auto_reboot_notify(struct + /* Turn the problematic codec into D3 to avoid spurious noises + from the internal speaker during (and after) reboot */ + cx_auto_turn_eapd(codec, spec->num_eapds, spec->eapds, false); +- +- snd_hda_codec_set_power_to_all(codec, codec->core.afg, AC_PWRST_D3); +- snd_hda_codec_write(codec, codec->core.afg, 0, +- AC_VERB_SET_POWER_STATE, AC_PWRST_D3); +- msleep(10); ++ snd_hda_gen_reboot_notify(codec); + } + + static void cx_auto_free(struct hda_codec *codec) +--- a/sound/pci/hda/patch_realtek.c ++++ b/sound/pci/hda/patch_realtek.c +@@ -810,15 +810,6 @@ static void alc_reboot_notify(struct hda + alc_shutup(codec); + } + +-/* power down codec to D3 at reboot/shutdown; set as reboot_notify ops */ +-static void alc_d3_at_reboot(struct hda_codec *codec) +-{ +- snd_hda_codec_set_power_to_all(codec, codec->core.afg, AC_PWRST_D3); +- snd_hda_codec_write(codec, codec->core.afg, 0, +- AC_VERB_SET_POWER_STATE, AC_PWRST_D3); +- msleep(10); +-} +- + #define alc_free snd_hda_gen_free + + #ifdef CONFIG_PM +@@ -4937,7 +4928,7 @@ static void alc_fixup_tpt440_dock(struct + struct alc_spec *spec = codec->spec; + + if (action == HDA_FIXUP_ACT_PRE_PROBE) { +- spec->reboot_notify = alc_d3_at_reboot; /* reduce noise */ ++ spec->reboot_notify = snd_hda_gen_reboot_notify; /* reduce noise */ + spec->parse_flags = HDA_PINCFG_NO_HP_FIXUP; + codec->power_save_node = 0; /* avoid click noises */ + snd_hda_apply_pincfgs(codec, pincfgs); diff --git a/queue-4.14/alsa-hda-apply-workaround-for-another-amd-chip-1022-1487.patch b/queue-4.14/alsa-hda-apply-workaround-for-another-amd-chip-1022-1487.patch new file mode 100644 index 00000000000..b65ff67d78e --- /dev/null +++ b/queue-4.14/alsa-hda-apply-workaround-for-another-amd-chip-1022-1487.patch @@ -0,0 +1,34 @@ +From de768ce45466f3009809719eb7b1f6f5277d9373 Mon Sep 17 00:00:00 2001 +From: Takashi Iwai +Date: Fri, 9 Aug 2019 11:23:00 +0200 +Subject: ALSA: hda - Apply workaround for another AMD chip 1022:1487 + +From: Takashi Iwai + +commit de768ce45466f3009809719eb7b1f6f5277d9373 upstream. + +MSI MPG X570 board is with another AMD HD-audio controller (PCI ID +1022:1487) and it requires the same workaround applied for X370, etc +(PCI ID 1022:1457). + +BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=195303 +Cc: +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + sound/pci/hda/hda_intel.c | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/sound/pci/hda/hda_intel.c ++++ b/sound/pci/hda/hda_intel.c +@@ -2577,6 +2577,9 @@ static const struct pci_device_id azx_id + /* AMD, X370 & co */ + { PCI_DEVICE(0x1022, 0x1457), + .driver_data = AZX_DRIVER_GENERIC | AZX_DCAPS_PRESET_AMD_SB }, ++ /* AMD, X570 & co */ ++ { PCI_DEVICE(0x1022, 0x1487), ++ .driver_data = AZX_DRIVER_GENERIC | AZX_DCAPS_PRESET_AMD_SB }, + /* AMD Stoney */ + { PCI_DEVICE(0x1022, 0x157a), + .driver_data = AZX_DRIVER_GENERIC | AZX_DCAPS_PRESET_ATI_SB | diff --git a/queue-4.14/alsa-hda-fix-a-memory-leak-bug.patch b/queue-4.14/alsa-hda-fix-a-memory-leak-bug.patch new file mode 100644 index 00000000000..6d30314c239 --- /dev/null +++ b/queue-4.14/alsa-hda-fix-a-memory-leak-bug.patch @@ -0,0 +1,36 @@ +From cfef67f016e4c00a2f423256fc678a6967a9fc09 Mon Sep 17 00:00:00 2001 +From: Wenwen Wang +Date: Fri, 9 Aug 2019 23:29:48 -0500 +Subject: ALSA: hda - Fix a memory leak bug + +From: Wenwen Wang + +commit cfef67f016e4c00a2f423256fc678a6967a9fc09 upstream. + +In snd_hda_parse_generic_codec(), 'spec' is allocated through kzalloc(). +Then, the pin widgets in 'codec' are parsed. However, if the parsing +process fails, 'spec' is not deallocated, leading to a memory leak. + +To fix the above issue, free 'spec' before returning the error. + +Fixes: 352f7f914ebb ("ALSA: hda - Merge Realtek parser code to generic parser") +Signed-off-by: Wenwen Wang +Cc: +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + sound/pci/hda/hda_generic.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/sound/pci/hda/hda_generic.c ++++ b/sound/pci/hda/hda_generic.c +@@ -5945,7 +5945,7 @@ static int snd_hda_parse_generic_codec(s + + err = snd_hda_parse_pin_defcfg(codec, &spec->autocfg, NULL, 0); + if (err < 0) +- return err; ++ goto error; + + err = snd_hda_gen_parse_auto_config(codec, &spec->autocfg); + if (err < 0) diff --git a/queue-4.14/alsa-hda-let-all-conexant-codec-enter-d3-when-rebooting.patch b/queue-4.14/alsa-hda-let-all-conexant-codec-enter-d3-when-rebooting.patch new file mode 100644 index 00000000000..8ad056cb647 --- /dev/null +++ b/queue-4.14/alsa-hda-let-all-conexant-codec-enter-d3-when-rebooting.patch @@ -0,0 +1,47 @@ +From 401714d9534aad8c24196b32600da683116bbe09 Mon Sep 17 00:00:00 2001 +From: Hui Wang +Date: Wed, 14 Aug 2019 12:09:07 +0800 +Subject: ALSA: hda - Let all conexant codec enter D3 when rebooting + +From: Hui Wang + +commit 401714d9534aad8c24196b32600da683116bbe09 upstream. + +We have 3 new lenovo laptops which have conexant codec 0x14f11f86, +these 3 laptops also have the noise issue when rebooting, after +letting the codec enter D3 before rebooting or poweroff, the noise +disappers. + +Instead of adding a new ID again in the reboot_notify(), let us make +this function apply to all conexant codec. In theory make codec enter +D3 before rebooting or poweroff is harmless, and I tested this change +on a couple of other Lenovo laptops which have different conexant +codecs, there is no side effect so far. + +Cc: stable@vger.kernel.org +Signed-off-by: Hui Wang +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + sound/pci/hda/patch_conexant.c | 9 --------- + 1 file changed, 9 deletions(-) + +--- a/sound/pci/hda/patch_conexant.c ++++ b/sound/pci/hda/patch_conexant.c +@@ -210,15 +210,6 @@ static void cx_auto_reboot_notify(struct + { + struct conexant_spec *spec = codec->spec; + +- switch (codec->core.vendor_id) { +- case 0x14f12008: /* CX8200 */ +- case 0x14f150f2: /* CX20722 */ +- case 0x14f150f4: /* CX20724 */ +- break; +- default: +- return; +- } +- + /* Turn the problematic codec into D3 to avoid spurious noises + from the internal speaker during (and after) reboot */ + cx_auto_turn_eapd(codec, spec->num_eapds, spec->eapds, false); diff --git a/queue-4.14/series b/queue-4.14/series index 3da67668bfe..18eb9b89873 100644 --- a/queue-4.14/series +++ b/queue-4.14/series @@ -6,3 +6,8 @@ bpf-get-rid-of-pure_initcall-dependency-to-enable-jits.patch bpf-restrict-access-to-core-bpf-sysctls.patch bpf-add-bpf_jit_limit-knob-to-restrict-unpriv-allocations.patch x86-mm-use-write_once-when-setting-ptes.patch +xtensa-add-missing-isync-to-the-cpu_reset-tlb-code.patch +alsa-hda-apply-workaround-for-another-amd-chip-1022-1487.patch +alsa-hda-fix-a-memory-leak-bug.patch +alsa-hda-add-a-generic-reboot_notify.patch +alsa-hda-let-all-conexant-codec-enter-d3-when-rebooting.patch diff --git a/queue-4.14/xtensa-add-missing-isync-to-the-cpu_reset-tlb-code.patch b/queue-4.14/xtensa-add-missing-isync-to-the-cpu_reset-tlb-code.patch new file mode 100644 index 00000000000..3b17c0e2065 --- /dev/null +++ b/queue-4.14/xtensa-add-missing-isync-to-the-cpu_reset-tlb-code.patch @@ -0,0 +1,32 @@ +From cd8869f4cb257f22b89495ca40f5281e58ba359c Mon Sep 17 00:00:00 2001 +From: Max Filippov +Date: Mon, 12 Aug 2019 15:01:30 -0700 +Subject: xtensa: add missing isync to the cpu_reset TLB code + +From: Max Filippov + +commit cd8869f4cb257f22b89495ca40f5281e58ba359c upstream. + +ITLB entry modifications must be followed by the isync instruction +before the new entries are possibly used. cpu_reset lacks one isync +between ITLB way 6 initialization and jump to the identity mapping. +Add missing isync to xtensa cpu_reset. + +Cc: stable@vger.kernel.org +Signed-off-by: Max Filippov +Signed-off-by: Greg Kroah-Hartman + +--- + arch/xtensa/kernel/setup.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/arch/xtensa/kernel/setup.c ++++ b/arch/xtensa/kernel/setup.c +@@ -508,6 +508,7 @@ void cpu_reset(void) + "add %2, %2, %7\n\t" + "addi %0, %0, -1\n\t" + "bnez %0, 1b\n\t" ++ "isync\n\t" + /* Jump to identity mapping */ + "jx %3\n" + "2:\n\t" -- 2.47.3