]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - releases/4.19.51/mfd-intel-lpss-set-the-device-in-reset-state-when-in.patch
Linux 5.1.10
[thirdparty/kernel/stable-queue.git] / releases / 4.19.51 / mfd-intel-lpss-set-the-device-in-reset-state-when-in.patch
1 From 000cb083dfd1d79f497b7384328517fb66b4eca9 Mon Sep 17 00:00:00 2001
2 From: Binbin Wu <binbin.wu@intel.com>
3 Date: Mon, 8 Apr 2019 16:09:10 +0800
4 Subject: mfd: intel-lpss: Set the device in reset state when init
5
6 [ Upstream commit dad06532292d77f37fbe831a02948a593500f682 ]
7
8 In virtualized setup, when system reboots due to warm
9 reset interrupt storm is seen.
10
11 Call Trace:
12 <IRQ>
13 dump_stack+0x70/0xa5
14 __report_bad_irq+0x2e/0xc0
15 note_interrupt+0x248/0x290
16 ? add_interrupt_randomness+0x30/0x220
17 handle_irq_event_percpu+0x54/0x80
18 handle_irq_event+0x39/0x60
19 handle_fasteoi_irq+0x91/0x150
20 handle_irq+0x108/0x180
21 do_IRQ+0x52/0xf0
22 common_interrupt+0xf/0xf
23 </IRQ>
24 RIP: 0033:0x76fc2cfabc1d
25 Code: 24 28 bf 03 00 00 00 31 c0 48 8d 35 63 77 0e 00 48 8d 15 2e
26 94 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
28 24
29 RSP: 002b:00007ffd247c1fc0 EFLAGS: 00000293 ORIG_RAX: ffffffffffffffda
30 RAX: 0000000000000000 RBX: 00007ffd247c1ff0 RCX: 000000000003d3ce
31 RDX: 0000000000000000 RSI: 00007ffd247c1ff0 RDI: 000076fc2cbb6010
32 RBP: 000076fc2cded010 R08: 00007ffd247c2210 R09: 00007ffd247c22a0
33 R10: 000076fc29465470 R11: 0000000000000000 R12: 00007ffd247c1fc0
34 R13: 000076fc2ce8e470 R14: 000076fc27ec9960 R15: 0000000000000414
35 handlers:
36 [<000000000d3fa913>] idma64_irq
37 Disabling IRQ #27
38
39 To avoid interrupt storm, set the device in reset state
40 before bringing out the device from reset state.
41
42 Changelog v2:
43 - correct the subject line by adding "mfd: "
44
45 Signed-off-by: Binbin Wu <binbin.wu@intel.com>
46 Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
47 Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
48 Signed-off-by: Lee Jones <lee.jones@linaro.org>
49 Signed-off-by: Sasha Levin <sashal@kernel.org>
50 ---
51 drivers/mfd/intel-lpss.c | 3 +++
52 1 file changed, 3 insertions(+)
53
54 diff --git a/drivers/mfd/intel-lpss.c b/drivers/mfd/intel-lpss.c
55 index 50bffc3382d7..ff3fba16e735 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 --
69 2.20.1
70