spi/fsl-espi: Don't spin forever on SPIE_RXCNT
authorNobuteru Hayashi <hayashi.nbb@ncos.nec.co.jp>
Fri, 18 Mar 2016 11:35:21 +0000 (11:35 +0000)
committerMark Brown <broonie@kernel.org>
Mon, 28 Mar 2016 18:41:18 +0000 (19:41 +0100)
commita12ddd60ed0a88c3bb83a8d4c07762e41620bf8c
treec4f9047ec259878a8dd68c7777aa8e84cc5cec2f
parentf55532a0c0b8bb6148f4e07853b876ef73bc69ca
spi/fsl-espi: Don't spin forever on SPIE_RXCNT

Infinite loop on SPIE_RXCNT occurred.

while (SPIE_RXCNT(events) < min(4, mspi->len)) {
        cpu_relax();
        events = mpc8xxx_spi_read_reg(&reg_base->event);
}

We met a soft lockup at fsl_espi_cpu_irq() because of this.

Fix it by using spin_event_timeout() so that fsl_espi_cpu_irq()
can break loop with timeouts dmesg.

Signed-off-by: Nobuteru Hayashi <hayashi.nbb@ncos.nec.co.jp>
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-fsl-espi.c