]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blame - queue-4.9/mfd-intel-lpss-set-the-device-in-reset-state-when-in.patch
drop 4.9 coredump patch that didn't work
[thirdparty/kernel/stable-queue.git] / queue-4.9 / mfd-intel-lpss-set-the-device-in-reset-state-when-in.patch
CommitLineData
bb104d9e
SL
1From 1cea832ae3c8172ea39994ec95dc81b14f9960cb Mon Sep 17 00:00:00 2001
2From: Binbin Wu <binbin.wu@intel.com>
3Date: Mon, 8 Apr 2019 16:09:10 +0800
4Subject: mfd: intel-lpss: Set the device in reset state when init
5
6[ Upstream commit dad06532292d77f37fbe831a02948a593500f682 ]
7
8In virtualized setup, when system reboots due to warm
9reset interrupt storm is seen.
10
11Call Trace:
12<IRQ>
13dump_stack+0x70/0xa5
14__report_bad_irq+0x2e/0xc0
15note_interrupt+0x248/0x290
16? add_interrupt_randomness+0x30/0x220
17handle_irq_event_percpu+0x54/0x80
18handle_irq_event+0x39/0x60
19handle_fasteoi_irq+0x91/0x150
20handle_irq+0x108/0x180
21do_IRQ+0x52/0xf0
22common_interrupt+0xf/0xf
23</IRQ>
24RIP: 0033:0x76fc2cfabc1d
25Code: 24 28 bf 03 00 00 00 31 c0 48 8d 35 63 77 0e 00 48 8d 15 2e
2694 0e 00 4c 89 f9 49 89 d9 4c 89 d3 e8 b8 e2 01 00 48 8b 54 24 18
27<48> 89 ef 48 89 de 4c 89 e1 e8 d5 97 01 00 84 c0 74 2d 48 8b 04
2824
29RSP: 002b:00007ffd247c1fc0 EFLAGS: 00000293 ORIG_RAX: ffffffffffffffda
30RAX: 0000000000000000 RBX: 00007ffd247c1ff0 RCX: 000000000003d3ce
31RDX: 0000000000000000 RSI: 00007ffd247c1ff0 RDI: 000076fc2cbb6010
32RBP: 000076fc2cded010 R08: 00007ffd247c2210 R09: 00007ffd247c22a0
33R10: 000076fc29465470 R11: 0000000000000000 R12: 00007ffd247c1fc0
34R13: 000076fc2ce8e470 R14: 000076fc27ec9960 R15: 0000000000000414
35handlers:
36[<000000000d3fa913>] idma64_irq
37Disabling IRQ #27
38
39To avoid interrupt storm, set the device in reset state
40before bringing out the device from reset state.
41
42Changelog v2:
43- correct the subject line by adding "mfd: "
44
45Signed-off-by: Binbin Wu <binbin.wu@intel.com>
46Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
47Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
48Signed-off-by: Lee Jones <lee.jones@linaro.org>
49Signed-off-by: Sasha Levin <sashal@kernel.org>
50---
51 drivers/mfd/intel-lpss.c | 3 +++
52 1 file changed, 3 insertions(+)
53
54diff --git a/drivers/mfd/intel-lpss.c b/drivers/mfd/intel-lpss.c
55index 19ac8bc8e7ea..22dd8c055048 100644
56--- a/drivers/mfd/intel-lpss.c
57+++ b/drivers/mfd/intel-lpss.c
58@@ -273,6 +273,9 @@ static void intel_lpss_init_dev(const struct intel_lpss *lpss)
59 {
60 u32 value = LPSS_PRIV_SSP_REG_DIS_DMA_FIN;
61
62+ /* Set the device in reset state */
63+ writel(0, lpss->priv + LPSS_PRIV_RESETS);
64+
65 intel_lpss_deassert_reset(lpss);
66
67 intel_lpss_set_remap_addr(lpss);
68--
692.20.1
70