On Mon, Apr 08, 2019 at 04:09:10PM +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. Reviewed-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> (It shouldn't prevent usage of no_console_suspend hack AFAICS) > > Changelog v2: > - correct the subject line by adding "mfd: " > > Signed-off-by: Binbin Wu <binbin.wu@xxxxxxxxx> > Acked-by: Mika Westerberg <mika.westerberg@xxxxxxxxxxxxxxx> > --- > drivers/mfd/intel-lpss.c | 3 +++ > 1 file changed, 3 insertions(+) > > 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); > -- > 2.7.4 > -- With Best Regards, Andy Shevchenko