Message ID | 1554702118-20184-1-git-send-email-binbin.wu@intel.com (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Series | intel-lpss: Set the device in reset state when init | expand |
On Mon, Apr 08, 2019 at 01:41:58PM +0800, Binbin Wu wrote: > In virtualized setup, when system reboots due to warm > reset interrupt storm is seen. > > Call Trace: > <IRQ> > dump_stack+0x70/0xa5 > __report_bad_irq+0x2e/0xc0 > note_interrupt+0x248/0x290 > ? add_interrupt_randomness+0x30/0x220 > handle_irq_event_percpu+0x54/0x80 > handle_irq_event+0x39/0x60 > handle_fasteoi_irq+0x91/0x150 > handle_irq+0x108/0x180 > do_IRQ+0x52/0xf0 > common_interrupt+0xf/0xf > </IRQ> > RIP: 0033:0x76fc2cfabc1d > Code: 24 28 bf 03 00 00 00 31 c0 48 8d 35 63 77 0e 00 48 8d 15 2e > 94 0e 00 4c 89 f9 49 89 d9 4c 89 d3 e8 b8 e2 01 00 48 8b 54 24 18 > <48> 89 ef 48 89 de 4c 89 e1 e8 d5 97 01 00 84 c0 74 2d 48 8b 04 > 24 > RSP: 002b:00007ffd247c1fc0 EFLAGS: 00000293 ORIG_RAX: ffffffffffffffda > RAX: 0000000000000000 RBX: 00007ffd247c1ff0 RCX: 000000000003d3ce > RDX: 0000000000000000 RSI: 00007ffd247c1ff0 RDI: 000076fc2cbb6010 > RBP: 000076fc2cded010 R08: 00007ffd247c2210 R09: 00007ffd247c22a0 > R10: 000076fc29465470 R11: 0000000000000000 R12: 00007ffd247c1fc0 > R13: 000076fc2ce8e470 R14: 000076fc27ec9960 R15: 0000000000000414 > handlers: > [<000000000d3fa913>] idma64_irq > Disabling IRQ #27 > > To avoid interrupt storm, set the device in reset state > before bringing out the device from reset state. > > Signed-off-by: Binbin Wu <binbin.wu@intel.com> I think the correct subject line should be: "mfd: intel-lpss: Set the device in reset state when init" Regardless of that, Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Hi Mika, Will correct the title line in the next version. Thanks. -- Best wishes, Binbin > -----Original Message----- > From: Mika Westerberg [mailto:mika.westerberg@linux.intel.com] > Sent: Monday, April 8, 2019 3:43 PM > To: Wu, Binbin <binbin.wu@intel.com> > Cc: rjw@rjwysocki.net; linux-pm@vger.kernel.org; > gregkh@linuxfoundation.org; lee.jones@linaro.org; linux- > kernel@vger.kernel.org; dmaengine@vger.kernel.org; > andriy.shevchenko@linux.intel.com > Subject: Re: [PATCH] intel-lpss: Set the device in reset state when init > > On Mon, Apr 08, 2019 at 01:41:58PM +0800, Binbin Wu wrote: > > In virtualized setup, when system reboots due to warm reset interrupt > > storm is seen. > > > > Call Trace: > > <IRQ> > > dump_stack+0x70/0xa5 > > __report_bad_irq+0x2e/0xc0 > > note_interrupt+0x248/0x290 > > ? add_interrupt_randomness+0x30/0x220 > > handle_irq_event_percpu+0x54/0x80 > > handle_irq_event+0x39/0x60 > > handle_fasteoi_irq+0x91/0x150 > > handle_irq+0x108/0x180 > > do_IRQ+0x52/0xf0 > > common_interrupt+0xf/0xf > > </IRQ> > > RIP: 0033:0x76fc2cfabc1d > > Code: 24 28 bf 03 00 00 00 31 c0 48 8d 35 63 77 0e 00 48 8d 15 2e > > 94 0e 00 4c 89 f9 49 89 d9 4c 89 d3 e8 b8 e2 01 00 48 8b 54 24 18 <48> > > 89 ef 48 89 de 4c 89 e1 e8 d5 97 01 00 84 c0 74 2d 48 8b 04 > > 24 > > RSP: 002b:00007ffd247c1fc0 EFLAGS: 00000293 ORIG_RAX: ffffffffffffffda > > RAX: 0000000000000000 RBX: 00007ffd247c1ff0 RCX: 000000000003d3ce > > RDX: 0000000000000000 RSI: 00007ffd247c1ff0 RDI: 000076fc2cbb6010 > > RBP: 000076fc2cded010 R08: 00007ffd247c2210 R09: 00007ffd247c22a0 > > R10: 000076fc29465470 R11: 0000000000000000 R12: 00007ffd247c1fc0 > > R13: 000076fc2ce8e470 R14: 000076fc27ec9960 R15: 0000000000000414 > > handlers: > > [<000000000d3fa913>] idma64_irq > > Disabling IRQ #27 > > > > To avoid interrupt storm, set the device in reset state before > > bringing out the device from reset state. > > > > Signed-off-by: Binbin Wu <binbin.wu@intel.com> > > I think the correct subject line should be: > > "mfd: intel-lpss: Set the device in reset state when init" > > Regardless of that, > > Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
diff --git a/drivers/mfd/intel-lpss.c b/drivers/mfd/intel-lpss.c index 50bffc3..ff3fba1 100644 --- a/drivers/mfd/intel-lpss.c +++ b/drivers/mfd/intel-lpss.c @@ -273,6 +273,9 @@ static void intel_lpss_init_dev(const struct intel_lpss *lpss) { u32 value = LPSS_PRIV_SSP_REG_DIS_DMA_FIN; + /* Set the device in reset state */ + writel(0, lpss->priv + LPSS_PRIV_RESETS); + intel_lpss_deassert_reset(lpss); intel_lpss_set_remap_addr(lpss);
In virtualized setup, when system reboots due to warm reset interrupt storm is seen. Call Trace: <IRQ> dump_stack+0x70/0xa5 __report_bad_irq+0x2e/0xc0 note_interrupt+0x248/0x290 ? add_interrupt_randomness+0x30/0x220 handle_irq_event_percpu+0x54/0x80 handle_irq_event+0x39/0x60 handle_fasteoi_irq+0x91/0x150 handle_irq+0x108/0x180 do_IRQ+0x52/0xf0 common_interrupt+0xf/0xf </IRQ> RIP: 0033:0x76fc2cfabc1d Code: 24 28 bf 03 00 00 00 31 c0 48 8d 35 63 77 0e 00 48 8d 15 2e 94 0e 00 4c 89 f9 49 89 d9 4c 89 d3 e8 b8 e2 01 00 48 8b 54 24 18 <48> 89 ef 48 89 de 4c 89 e1 e8 d5 97 01 00 84 c0 74 2d 48 8b 04 24 RSP: 002b:00007ffd247c1fc0 EFLAGS: 00000293 ORIG_RAX: ffffffffffffffda RAX: 0000000000000000 RBX: 00007ffd247c1ff0 RCX: 000000000003d3ce RDX: 0000000000000000 RSI: 00007ffd247c1ff0 RDI: 000076fc2cbb6010 RBP: 000076fc2cded010 R08: 00007ffd247c2210 R09: 00007ffd247c22a0 R10: 000076fc29465470 R11: 0000000000000000 R12: 00007ffd247c1fc0 R13: 000076fc2ce8e470 R14: 000076fc27ec9960 R15: 0000000000000414 handlers: [<000000000d3fa913>] idma64_irq Disabling IRQ #27 To avoid interrupt storm, set the device in reset state before bringing out the device from reset state. Signed-off-by: Binbin Wu <binbin.wu@intel.com> --- drivers/mfd/intel-lpss.c | 3 +++ 1 file changed, 3 insertions(+)