> Ok, so this does not have anything to do with interrupts explicitly but > rather with the fact that any PHY access will cause a crash when the > sh_eth device is powered down. > > If the device is powered-down before the actual .ndo_open() how is the > probe actually setting up the device? Or is the device returned to the > powered-down state after the probe and only powered-up at a subsequent > .ndo_open()? > > Instead of the phy_is_started() call we could check if we had previously > enabled the interrupts on the PHY but this would mean that a basic > assumption of the PHY library is violated in that a registered PHY > device cannot access its regiters because the MDIO controller just > decided so. > > Can't the MDIO bitbang driver callbacks just check if the device is > powered-down and if it is just power it back up temporarily? Is this runtime PM? I had problems with the FEC driver and its runtime PM. After probe, it would runtime power off its clocks, making the MDIO bus unusable. For a plain boring setup, this is not too much of a problem, but when you have a DSA switch on the bus, the DSA driver expects to be able to access the switch, and this failed. I had to make the MDIO bus driver in the FEC runtime PM aware, and turn the clocks back on again when an MDIO transaction occurred. The basic rules here should be, if the MDIO bus is registered, it is usable. There are things like PHY statistics, HWMON temperature sensors, etc, DSA switches, all which have a life cycle separate to the interface being up. Andrew