On 12.02.2019 13:56, Andrew Lunn wrote: > On Tue, Feb 12, 2019 at 07:51:05AM +0100, Heiner Kallweit wrote: >> On 12.02.2019 04:58, Andrew Lunn wrote: >>>>> Hi David >>>>> >>>>> I just tested this on one of my boards. It loops endlessly: >>>>> >>>>> [ 47.173396] mv88e6xxx_g1_irq_thread_work: c881 a8 80 >>>>> >>>>> [ 47.182108] mv88e6xxx_g1_irq_thread_work: c881 a8 80 >>>>> >>>>> [ 47.190820] mv88e6xxx_g1_irq_thread_work: c881 a8 80 >>>>> >>>>> [ 47.199535] mv88e6xxx_g1_irq_thread_work: c881 a8 80 >>>>> >>>>> [ 47.208254] mv88e6xxx_g1_irq_thread_work: c881 a8 80 >>>>> >>>>> These are reg, ctl1, reg & ctl1. >>>>> >>>>> So there is an unhandled device interrupt. >>> >>> Hi Heiner >>> >>> Your patch Fixes: 2b3e88ea6528 ("net: phy: improve phy state >>> checking") is causing me problems with interrupts for the Marvell >>> switches. >>> >> Hi Andrew, >> >> what kernel version is it? > > It is a little bit old, 5.0-rc1 net-next. I should rebase and > retest. I'm testing on a ZII board which is not fully in mainline So i > need some patches. > Thanks, Andrew. Indeed 5.0 needs a fix, as also pointed out by Russell. I think I will simply remove the following:
if (!phy_is_started(phydev)) return IRQ_NONE; Then we basically do the same like phy_mac_interrupt(), we always run the state machine. If it has nothing to do, then it does nothing. Therefore also state HALTED doesn't need a special handling. This way we handle interrupts (incl. spurious ones) gracefully. >> And the PHY driver in use is "Marvell 88E6390" ? > > Yes, the marvell 1G driver. > > Andrew > . > Heiner