From 1fb885710ab35f0bb0e3f15210bfd3b854227644 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Mon, 31 Jul 2017 13:52:08 -0700 Subject: [PATCH] 4.12-stable patches added patches: alsa-fm801-initialize-chip-after-irq-handler-is-registered.patch alsa-hda-add-missing-nvidia-gpu-codec-ids-to-patch-table.patch alsa-hda-add-mute-led-support-for-hp-probook-440-g4.patch jfs-don-t-clear-sgid-when-inheriting-acls.patch parisc-extend-disabled-preemption-in-copy_user_page.patch parisc-prevent-tlb-speculation-on-flushed-pages-on-cpus-that-only-support-equivalent-aliases.patch parisc-suspend-lockup-detectors-before-system-halt.patch powerpc-pseries-fix-of_node_put-underflow-during-reconfig-remove.patch --- ...chip-after-irq-handler-is-registered.patch | 51 +++++++++ ...-nvidia-gpu-codec-ids-to-patch-table.patch | 81 ++++++++++++++ ...te-led-support-for-hp-probook-440-g4.patch | 31 ++++++ ...on-t-clear-sgid-when-inheriting-acls.patch | 65 +++++++++++ ...isabled-preemption-in-copy_user_page.patch | 33 ++++++ ...that-only-support-equivalent-aliases.patch | 103 ++++++++++++++++++ ...-lockup-detectors-before-system-halt.patch | 38 +++++++ ...put-underflow-during-reconfig-remove.patch | 37 +++++++ queue-4.12/series | 8 ++ 9 files changed, 447 insertions(+) create mode 100644 queue-4.12/alsa-fm801-initialize-chip-after-irq-handler-is-registered.patch create mode 100644 queue-4.12/alsa-hda-add-missing-nvidia-gpu-codec-ids-to-patch-table.patch create mode 100644 queue-4.12/alsa-hda-add-mute-led-support-for-hp-probook-440-g4.patch create mode 100644 queue-4.12/jfs-don-t-clear-sgid-when-inheriting-acls.patch create mode 100644 queue-4.12/parisc-extend-disabled-preemption-in-copy_user_page.patch create mode 100644 queue-4.12/parisc-prevent-tlb-speculation-on-flushed-pages-on-cpus-that-only-support-equivalent-aliases.patch create mode 100644 queue-4.12/parisc-suspend-lockup-detectors-before-system-halt.patch create mode 100644 queue-4.12/powerpc-pseries-fix-of_node_put-underflow-during-reconfig-remove.patch diff --git a/queue-4.12/alsa-fm801-initialize-chip-after-irq-handler-is-registered.patch b/queue-4.12/alsa-fm801-initialize-chip-after-irq-handler-is-registered.patch new file mode 100644 index 00000000000..d9db3dce850 --- /dev/null +++ b/queue-4.12/alsa-fm801-initialize-chip-after-irq-handler-is-registered.patch @@ -0,0 +1,51 @@ +From 610e1ae9b533be82b3aa118b907e0a703256913d Mon Sep 17 00:00:00 2001 +From: Andy Shevchenko +Date: Sun, 16 Jul 2017 21:40:03 +0300 +Subject: ALSA: fm801: Initialize chip after IRQ handler is registered +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Andy Shevchenko + +commit 610e1ae9b533be82b3aa118b907e0a703256913d upstream. + +The commit b56fa687e02b ("ALSA: fm801: detect FM-only card earlier") +rearranged initialization calls, i.e. it makes snd_fm801_chip_init() to +be called before we register interrupt handler and set PCI bus +mastering. + +Somehow it prevents FM801-AU to work properly. Thus, partially revert +initialization order changed by commit mentioned above. + +Fixes: b56fa687e02b ("ALSA: fm801: detect FM-only card earlier") +Reported-by: Émeric MASCHINO +Tested-by: Émeric MASCHINO +Signed-off-by: Andy Shevchenko +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + sound/pci/fm801.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/sound/pci/fm801.c ++++ b/sound/pci/fm801.c +@@ -1235,8 +1235,6 @@ static int snd_fm801_create(struct snd_c + } + } + +- snd_fm801_chip_init(chip); +- + if ((chip->tea575x_tuner & TUNER_ONLY) == 0) { + if (devm_request_irq(&pci->dev, pci->irq, snd_fm801_interrupt, + IRQF_SHARED, KBUILD_MODNAME, chip)) { +@@ -1248,6 +1246,8 @@ static int snd_fm801_create(struct snd_c + pci_set_master(pci); + } + ++ snd_fm801_chip_init(chip); ++ + if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops)) < 0) { + snd_fm801_free(chip); + return err; diff --git a/queue-4.12/alsa-hda-add-missing-nvidia-gpu-codec-ids-to-patch-table.patch b/queue-4.12/alsa-hda-add-missing-nvidia-gpu-codec-ids-to-patch-table.patch new file mode 100644 index 00000000000..388e258871f --- /dev/null +++ b/queue-4.12/alsa-hda-add-missing-nvidia-gpu-codec-ids-to-patch-table.patch @@ -0,0 +1,81 @@ +From 74ec118152ea494a25ebb677cbc83a75c982ac5f Mon Sep 17 00:00:00 2001 +From: Daniel Dadap +Date: Thu, 13 Jul 2017 19:27:39 -0500 +Subject: ALSA: hda - Add missing NVIDIA GPU codec IDs to patch table + +From: Daniel Dadap + +commit 74ec118152ea494a25ebb677cbc83a75c982ac5f upstream. + +Add codec IDs for several recently released, pending, and historical +NVIDIA GPU audio controllers to the patch table, to allow the correct +patch functions to be selected for them. + +Signed-off-by: Daniel Dadap +Reviewed-by: Andy Ritger +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + sound/pci/hda/patch_hdmi.c | 27 +++++++++++++++++++++++++++ + 1 file changed, 27 insertions(+) + +--- a/sound/pci/hda/patch_hdmi.c ++++ b/sound/pci/hda/patch_hdmi.c +@@ -3757,11 +3757,15 @@ HDA_CODEC_ENTRY(0x1002aa01, "R6xx HDMI", + HDA_CODEC_ENTRY(0x10951390, "SiI1390 HDMI", patch_generic_hdmi), + HDA_CODEC_ENTRY(0x10951392, "SiI1392 HDMI", patch_generic_hdmi), + HDA_CODEC_ENTRY(0x17e80047, "Chrontel HDMI", patch_generic_hdmi), ++HDA_CODEC_ENTRY(0x10de0001, "MCP73 HDMI", patch_nvhdmi_2ch), + HDA_CODEC_ENTRY(0x10de0002, "MCP77/78 HDMI", patch_nvhdmi_8ch_7x), + HDA_CODEC_ENTRY(0x10de0003, "MCP77/78 HDMI", patch_nvhdmi_8ch_7x), ++HDA_CODEC_ENTRY(0x10de0004, "GPU 04 HDMI", patch_nvhdmi_8ch_7x), + HDA_CODEC_ENTRY(0x10de0005, "MCP77/78 HDMI", patch_nvhdmi_8ch_7x), + HDA_CODEC_ENTRY(0x10de0006, "MCP77/78 HDMI", patch_nvhdmi_8ch_7x), + HDA_CODEC_ENTRY(0x10de0007, "MCP79/7A HDMI", patch_nvhdmi_8ch_7x), ++HDA_CODEC_ENTRY(0x10de0008, "GPU 08 HDMI/DP", patch_nvhdmi), ++HDA_CODEC_ENTRY(0x10de0009, "GPU 09 HDMI/DP", patch_nvhdmi), + HDA_CODEC_ENTRY(0x10de000a, "GPU 0a HDMI/DP", patch_nvhdmi), + HDA_CODEC_ENTRY(0x10de000b, "GPU 0b HDMI/DP", patch_nvhdmi), + HDA_CODEC_ENTRY(0x10de000c, "MCP89 HDMI", patch_nvhdmi), +@@ -3788,17 +3792,40 @@ HDA_CODEC_ENTRY(0x10de0041, "GPU 41 HDMI + HDA_CODEC_ENTRY(0x10de0042, "GPU 42 HDMI/DP", patch_nvhdmi), + HDA_CODEC_ENTRY(0x10de0043, "GPU 43 HDMI/DP", patch_nvhdmi), + HDA_CODEC_ENTRY(0x10de0044, "GPU 44 HDMI/DP", patch_nvhdmi), ++HDA_CODEC_ENTRY(0x10de0045, "GPU 45 HDMI/DP", patch_nvhdmi), ++HDA_CODEC_ENTRY(0x10de0050, "GPU 50 HDMI/DP", patch_nvhdmi), + HDA_CODEC_ENTRY(0x10de0051, "GPU 51 HDMI/DP", patch_nvhdmi), ++HDA_CODEC_ENTRY(0x10de0052, "GPU 52 HDMI/DP", patch_nvhdmi), + HDA_CODEC_ENTRY(0x10de0060, "GPU 60 HDMI/DP", patch_nvhdmi), ++HDA_CODEC_ENTRY(0x10de0061, "GPU 61 HDMI/DP", patch_nvhdmi), ++HDA_CODEC_ENTRY(0x10de0062, "GPU 62 HDMI/DP", patch_nvhdmi), + HDA_CODEC_ENTRY(0x10de0067, "MCP67 HDMI", patch_nvhdmi_2ch), + HDA_CODEC_ENTRY(0x10de0070, "GPU 70 HDMI/DP", patch_nvhdmi), + HDA_CODEC_ENTRY(0x10de0071, "GPU 71 HDMI/DP", patch_nvhdmi), + HDA_CODEC_ENTRY(0x10de0072, "GPU 72 HDMI/DP", patch_nvhdmi), ++HDA_CODEC_ENTRY(0x10de0073, "GPU 73 HDMI/DP", patch_nvhdmi), ++HDA_CODEC_ENTRY(0x10de0074, "GPU 74 HDMI/DP", patch_nvhdmi), ++HDA_CODEC_ENTRY(0x10de0076, "GPU 76 HDMI/DP", patch_nvhdmi), ++HDA_CODEC_ENTRY(0x10de007b, "GPU 7b HDMI/DP", patch_nvhdmi), ++HDA_CODEC_ENTRY(0x10de007c, "GPU 7c HDMI/DP", patch_nvhdmi), + HDA_CODEC_ENTRY(0x10de007d, "GPU 7d HDMI/DP", patch_nvhdmi), ++HDA_CODEC_ENTRY(0x10de007e, "GPU 7e HDMI/DP", patch_nvhdmi), + HDA_CODEC_ENTRY(0x10de0080, "GPU 80 HDMI/DP", patch_nvhdmi), ++HDA_CODEC_ENTRY(0x10de0081, "GPU 81 HDMI/DP", patch_nvhdmi), + HDA_CODEC_ENTRY(0x10de0082, "GPU 82 HDMI/DP", patch_nvhdmi), + HDA_CODEC_ENTRY(0x10de0083, "GPU 83 HDMI/DP", patch_nvhdmi), ++HDA_CODEC_ENTRY(0x10de0084, "GPU 84 HDMI/DP", patch_nvhdmi), ++HDA_CODEC_ENTRY(0x10de0090, "GPU 90 HDMI/DP", patch_nvhdmi), ++HDA_CODEC_ENTRY(0x10de0091, "GPU 91 HDMI/DP", patch_nvhdmi), ++HDA_CODEC_ENTRY(0x10de0092, "GPU 92 HDMI/DP", patch_nvhdmi), ++HDA_CODEC_ENTRY(0x10de0093, "GPU 93 HDMI/DP", patch_nvhdmi), ++HDA_CODEC_ENTRY(0x10de0094, "GPU 94 HDMI/DP", patch_nvhdmi), ++HDA_CODEC_ENTRY(0x10de0095, "GPU 95 HDMI/DP", patch_nvhdmi), ++HDA_CODEC_ENTRY(0x10de0097, "GPU 97 HDMI/DP", patch_nvhdmi), ++HDA_CODEC_ENTRY(0x10de0098, "GPU 98 HDMI/DP", patch_nvhdmi), ++HDA_CODEC_ENTRY(0x10de0099, "GPU 99 HDMI/DP", patch_nvhdmi), + HDA_CODEC_ENTRY(0x10de8001, "MCP73 HDMI", patch_nvhdmi_2ch), ++HDA_CODEC_ENTRY(0x10de8067, "MCP67/68 HDMI", patch_nvhdmi_2ch), + HDA_CODEC_ENTRY(0x11069f80, "VX900 HDMI/DP", patch_via_hdmi), + HDA_CODEC_ENTRY(0x11069f81, "VX900 HDMI/DP", patch_via_hdmi), + HDA_CODEC_ENTRY(0x11069f84, "VX11 HDMI/DP", patch_generic_hdmi), diff --git a/queue-4.12/alsa-hda-add-mute-led-support-for-hp-probook-440-g4.patch b/queue-4.12/alsa-hda-add-mute-led-support-for-hp-probook-440-g4.patch new file mode 100644 index 00000000000..46e814aab30 --- /dev/null +++ b/queue-4.12/alsa-hda-add-mute-led-support-for-hp-probook-440-g4.patch @@ -0,0 +1,31 @@ +From ba92b1142879731f80377770f4710e5f0a953aad Mon Sep 17 00:00:00 2001 +From: Kai-Heng Feng +Date: Wed, 26 Jul 2017 00:23:46 +0800 +Subject: ALSA: hda - Add mute led support for HP ProBook 440 G4 + +From: Kai-Heng Feng + +commit ba92b1142879731f80377770f4710e5f0a953aad upstream. + +Mic mute led does not work on HP ProBook 440 G4. +We can use CXT_FIXUP_MUTE_LED_GPIO fixup to support it. + +BugLink: https://bugs.launchpad.net/bugs/1705586 +Signed-off-by: Kai-Heng Feng +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + sound/pci/hda/patch_conexant.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/sound/pci/hda/patch_conexant.c ++++ b/sound/pci/hda/patch_conexant.c +@@ -933,6 +933,7 @@ static const struct snd_pci_quirk cxt506 + SND_PCI_QUIRK(0x103c, 0x8174, "HP Spectre x360", CXT_FIXUP_HP_SPECTRE), + SND_PCI_QUIRK(0x103c, 0x8115, "HP Z1 Gen3", CXT_FIXUP_HP_GATE_MIC), + SND_PCI_QUIRK(0x103c, 0x814f, "HP ZBook 15u G3", CXT_FIXUP_MUTE_LED_GPIO), ++ SND_PCI_QUIRK(0x103c, 0x822e, "HP ProBook 440 G4", CXT_FIXUP_MUTE_LED_GPIO), + SND_PCI_QUIRK(0x1043, 0x138d, "Asus", CXT_FIXUP_HEADPHONE_MIC_PIN), + SND_PCI_QUIRK(0x152d, 0x0833, "OLPC XO-1.5", CXT_FIXUP_OLPC_XO), + SND_PCI_QUIRK(0x17aa, 0x20f2, "Lenovo T400", CXT_PINCFG_LENOVO_TP410), diff --git a/queue-4.12/jfs-don-t-clear-sgid-when-inheriting-acls.patch b/queue-4.12/jfs-don-t-clear-sgid-when-inheriting-acls.patch new file mode 100644 index 00000000000..74e46a285ac --- /dev/null +++ b/queue-4.12/jfs-don-t-clear-sgid-when-inheriting-acls.patch @@ -0,0 +1,65 @@ +From 9bcf66c72d726322441ec82962994e69157613e4 Mon Sep 17 00:00:00 2001 +From: Jan Kara +Date: Thu, 22 Jun 2017 15:31:10 +0200 +Subject: jfs: Don't clear SGID when inheriting ACLs + +From: Jan Kara + +commit 9bcf66c72d726322441ec82962994e69157613e4 upstream. + +When new directory 'DIR1' is created in a directory 'DIR0' with SGID bit +set, DIR1 is expected to have SGID bit set (and owning group equal to +the owning group of 'DIR0'). However when 'DIR0' also has some default +ACLs that 'DIR1' inherits, setting these ACLs will result in SGID bit on +'DIR1' to get cleared if user is not member of the owning group. + +Fix the problem by moving posix_acl_update_mode() out of +__jfs_set_acl() into jfs_set_acl(). That way the function will not be +called when inheriting ACLs which is what we want as it prevents SGID +bit clearing and the mode has been properly set by posix_acl_create() +anyway. + +Fixes: 073931017b49d9458aa351605b43a7e34598caef +CC: jfs-discussion@lists.sourceforge.net +Signed-off-by: Jan Kara +Signed-off-by: Dave Kleikamp +Signed-off-by: Greg Kroah-Hartman + +--- + fs/jfs/acl.c | 15 ++++++++------- + 1 file changed, 8 insertions(+), 7 deletions(-) + +--- a/fs/jfs/acl.c ++++ b/fs/jfs/acl.c +@@ -77,13 +77,6 @@ static int __jfs_set_acl(tid_t tid, stru + switch (type) { + case ACL_TYPE_ACCESS: + ea_name = XATTR_NAME_POSIX_ACL_ACCESS; +- if (acl) { +- rc = posix_acl_update_mode(inode, &inode->i_mode, &acl); +- if (rc) +- return rc; +- inode->i_ctime = current_time(inode); +- mark_inode_dirty(inode); +- } + break; + case ACL_TYPE_DEFAULT: + ea_name = XATTR_NAME_POSIX_ACL_DEFAULT; +@@ -118,9 +111,17 @@ int jfs_set_acl(struct inode *inode, str + + tid = txBegin(inode->i_sb, 0); + mutex_lock(&JFS_IP(inode)->commit_mutex); ++ if (type == ACL_TYPE_ACCESS && acl) { ++ rc = posix_acl_update_mode(inode, &inode->i_mode, &acl); ++ if (rc) ++ goto end_tx; ++ inode->i_ctime = current_time(inode); ++ mark_inode_dirty(inode); ++ } + rc = __jfs_set_acl(tid, inode, type, acl); + if (!rc) + rc = txCommit(tid, 1, &inode, 0); ++end_tx: + txEnd(tid); + mutex_unlock(&JFS_IP(inode)->commit_mutex); + return rc; diff --git a/queue-4.12/parisc-extend-disabled-preemption-in-copy_user_page.patch b/queue-4.12/parisc-extend-disabled-preemption-in-copy_user_page.patch new file mode 100644 index 00000000000..c5fd63e9404 --- /dev/null +++ b/queue-4.12/parisc-extend-disabled-preemption-in-copy_user_page.patch @@ -0,0 +1,33 @@ +From 56008c04ebc099940021b714da2d7779117cf6a7 Mon Sep 17 00:00:00 2001 +From: John David Anglin +Date: Tue, 25 Jul 2017 17:23:35 -0400 +Subject: parisc: Extend disabled preemption in copy_user_page + +From: John David Anglin + +commit 56008c04ebc099940021b714da2d7779117cf6a7 upstream. + +It's always bothered me that we only disable preemption in +copy_user_page around the call to flush_dcache_page_asm. +This patch extends this to after the copy. + +Signed-off-by: John David Anglin +Signed-off-by: Helge Deller +Signed-off-by: Greg Kroah-Hartman + +--- + arch/parisc/kernel/cache.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/parisc/kernel/cache.c ++++ b/arch/parisc/kernel/cache.c +@@ -453,8 +453,8 @@ void copy_user_page(void *vto, void *vfr + before it can be accessed through the kernel mapping. */ + preempt_disable(); + flush_dcache_page_asm(__pa(vfrom), vaddr); +- preempt_enable(); + copy_page_asm(vto, vfrom); ++ preempt_enable(); + } + EXPORT_SYMBOL(copy_user_page); + diff --git a/queue-4.12/parisc-prevent-tlb-speculation-on-flushed-pages-on-cpus-that-only-support-equivalent-aliases.patch b/queue-4.12/parisc-prevent-tlb-speculation-on-flushed-pages-on-cpus-that-only-support-equivalent-aliases.patch new file mode 100644 index 00000000000..5d01a626fa2 --- /dev/null +++ b/queue-4.12/parisc-prevent-tlb-speculation-on-flushed-pages-on-cpus-that-only-support-equivalent-aliases.patch @@ -0,0 +1,103 @@ +From ae7a609c34b6fb12328c553b5f9aab26ae74a28e Mon Sep 17 00:00:00 2001 +From: John David Anglin +Date: Tue, 25 Jul 2017 17:11:26 -0400 +Subject: parisc: Prevent TLB speculation on flushed pages on CPUs that only support equivalent aliases + +From: John David Anglin + +commit ae7a609c34b6fb12328c553b5f9aab26ae74a28e upstream. + +Helge noticed that we flush the TLB page in flush_cache_page but not in +flush_cache_range or flush_cache_mm. + +For a long time, we have had random segmentation faults building +packages on machines with PA8800/8900 processors. These machines only +support equivalent aliases. We don't see these faults on machines that +don't require strict coherency. So, it appears TLB speculation +sometimes leads to cache corruption on machines that require coherency. + +This patch adds TLB flushes to flush_cache_range and flush_cache_mm when +coherency is required. We only flush the TLB in flush_cache_page when +coherency is required. + +The patch also optimizes flush_cache_range. It turns out we always have +the right context to use flush_user_dcache_range_asm and +flush_user_icache_range_asm. + +The patch has been tested for some time on rp3440, rp3410 and A500-44. +It's been boot tested on c8000. No random segmentation faults were +observed during testing. + +Signed-off-by: John David Anglin +Signed-off-by: Helge Deller +Signed-off-by: Greg Kroah-Hartman + +--- + arch/parisc/kernel/cache.c | 34 ++++++++++++++-------------------- + 1 file changed, 14 insertions(+), 20 deletions(-) + +--- a/arch/parisc/kernel/cache.c ++++ b/arch/parisc/kernel/cache.c +@@ -539,6 +539,10 @@ void flush_cache_mm(struct mm_struct *mm + struct vm_area_struct *vma; + pgd_t *pgd; + ++ /* Flush the TLB to avoid speculation if coherency is required. */ ++ if (parisc_requires_coherency()) ++ flush_tlb_all(); ++ + /* Flushing the whole cache on each cpu takes forever on + rp3440, etc. So, avoid it if the mm isn't too big. */ + if (mm_total_size(mm) >= parisc_cache_flush_threshold) { +@@ -577,33 +581,22 @@ void flush_cache_mm(struct mm_struct *mm + void flush_cache_range(struct vm_area_struct *vma, + unsigned long start, unsigned long end) + { +- unsigned long addr; +- pgd_t *pgd; +- + BUG_ON(!vma->vm_mm->context); + ++ /* Flush the TLB to avoid speculation if coherency is required. */ ++ if (parisc_requires_coherency()) ++ flush_tlb_range(vma, start, end); ++ + if ((end - start) >= parisc_cache_flush_threshold) { + flush_cache_all(); + return; + } + +- if (vma->vm_mm->context == mfsp(3)) { +- flush_user_dcache_range_asm(start, end); +- if (vma->vm_flags & VM_EXEC) +- flush_user_icache_range_asm(start, end); +- return; +- } ++ BUG_ON(vma->vm_mm->context != mfsp(3)); + +- pgd = vma->vm_mm->pgd; +- for (addr = start & PAGE_MASK; addr < end; addr += PAGE_SIZE) { +- unsigned long pfn; +- pte_t *ptep = get_ptep(pgd, addr); +- if (!ptep) +- continue; +- pfn = pte_pfn(*ptep); +- if (pfn_valid(pfn)) +- __flush_cache_page(vma, addr, PFN_PHYS(pfn)); +- } ++ flush_user_dcache_range_asm(start, end); ++ if (vma->vm_flags & VM_EXEC) ++ flush_user_icache_range_asm(start, end); + } + + void +@@ -612,7 +605,8 @@ flush_cache_page(struct vm_area_struct * + BUG_ON(!vma->vm_mm->context); + + if (pfn_valid(pfn)) { +- flush_tlb_page(vma, vmaddr); ++ if (parisc_requires_coherency()) ++ flush_tlb_page(vma, vmaddr); + __flush_cache_page(vma, vmaddr, PFN_PHYS(pfn)); + } + } diff --git a/queue-4.12/parisc-suspend-lockup-detectors-before-system-halt.patch b/queue-4.12/parisc-suspend-lockup-detectors-before-system-halt.patch new file mode 100644 index 00000000000..620d3581d95 --- /dev/null +++ b/queue-4.12/parisc-suspend-lockup-detectors-before-system-halt.patch @@ -0,0 +1,38 @@ +From 56188832a50f09998cb570ba3771a1d25c193c0e Mon Sep 17 00:00:00 2001 +From: Helge Deller +Date: Tue, 25 Jul 2017 21:41:41 +0200 +Subject: parisc: Suspend lockup detectors before system halt + +From: Helge Deller + +commit 56188832a50f09998cb570ba3771a1d25c193c0e upstream. + +Some machines can't power off the machine, so disable the lockup detectors to +avoid this watchdog BUG to show up every few seconds: +watchdog: BUG: soft lockup - CPU#0 stuck for 22s! [systemd-shutdow:1] + +Signed-off-by: Helge Deller +Signed-off-by: Greg Kroah-Hartman + +--- + arch/parisc/kernel/process.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/arch/parisc/kernel/process.c ++++ b/arch/parisc/kernel/process.c +@@ -53,6 +53,7 @@ + #include + #include + #include ++#include + + #include + #include +@@ -145,6 +146,7 @@ void machine_power_off(void) + + /* prevent soft lockup/stalled CPU messages for endless loop. */ + rcu_sysrq_start(); ++ lockup_detector_suspend(); + for (;;); + } + diff --git a/queue-4.12/powerpc-pseries-fix-of_node_put-underflow-during-reconfig-remove.patch b/queue-4.12/powerpc-pseries-fix-of_node_put-underflow-during-reconfig-remove.patch new file mode 100644 index 00000000000..bc711ee457e --- /dev/null +++ b/queue-4.12/powerpc-pseries-fix-of_node_put-underflow-during-reconfig-remove.patch @@ -0,0 +1,37 @@ +From 4fd1bd443e80b12f0a01a45fb9a793206b41cb72 Mon Sep 17 00:00:00 2001 +From: Laurent Vivier +Date: Fri, 21 Jul 2017 16:51:39 +0200 +Subject: powerpc/pseries: Fix of_node_put() underflow during reconfig remove + +From: Laurent Vivier + +commit 4fd1bd443e80b12f0a01a45fb9a793206b41cb72 upstream. + +As for commit 68baf692c435 ("powerpc/pseries: Fix of_node_put() +underflow during DLPAR remove"), the call to of_node_put() must be +removed from pSeries_reconfig_remove_node(). + +dlpar_detach_node() and pSeries_reconfig_remove_node() both call +of_detach_node(), and thus the node should not be released in both +cases. + +Fixes: 0829f6d1f69e ("of: device_node kobject lifecycle fixes") +Signed-off-by: Laurent Vivier +Reviewed-by: David Gibson +Signed-off-by: Michael Ellerman +Signed-off-by: Greg Kroah-Hartman + +--- + arch/powerpc/platforms/pseries/reconfig.c | 1 - + 1 file changed, 1 deletion(-) + +--- a/arch/powerpc/platforms/pseries/reconfig.c ++++ b/arch/powerpc/platforms/pseries/reconfig.c +@@ -82,7 +82,6 @@ static int pSeries_reconfig_remove_node( + + of_detach_node(np); + of_node_put(parent); +- of_node_put(np); /* Must decrement the refcount */ + return 0; + } + diff --git a/queue-4.12/series b/queue-4.12/series index e69de29bb2d..f89c5e25787 100644 --- a/queue-4.12/series +++ b/queue-4.12/series @@ -0,0 +1,8 @@ +jfs-don-t-clear-sgid-when-inheriting-acls.patch +alsa-fm801-initialize-chip-after-irq-handler-is-registered.patch +alsa-hda-add-missing-nvidia-gpu-codec-ids-to-patch-table.patch +alsa-hda-add-mute-led-support-for-hp-probook-440-g4.patch +parisc-prevent-tlb-speculation-on-flushed-pages-on-cpus-that-only-support-equivalent-aliases.patch +parisc-extend-disabled-preemption-in-copy_user_page.patch +parisc-suspend-lockup-detectors-before-system-halt.patch +powerpc-pseries-fix-of_node_put-underflow-during-reconfig-remove.patch -- 2.47.3