On Fri, Apr 15, 2022 at 02:14:19PM +0300, Vladimir Oltean wrote: > On Fri, Apr 15, 2022 at 12:02:14PM +0100, Russell King (Oracle) wrote: > > On Fri, Apr 15, 2022 at 01:55:03PM +0300, Vladimir Oltean wrote: > > > I meant that for a DSA switch driver is mandatory to call dsa_switch_shutdown() > > > from your ->shutdown method, otherwise subtle things break, sorry for being unclear. > > > > > > Please blindly copy-paste the odd pattern that all other DSA drivers use > > > in ->shutdown and ->remove (with the platform_set_drvdata(dev, NULL) calls), > > > like a normal person :) > > > > Those platform_set_drvdata(, NULL) calls should be killed - the > > driver model will set the driver data to NULL after ->remove has > > been called - so having drivers also setting the driver data to > > NULL is mere duplication. > > I can see why you say that, but the reverse is not true. > A driver can be removed from a device after said device has been shut > down, and DSA does things in dsa_unregister_switch() and in > dsa_switch_shutdown() that are incompatible with each other, so either > one or the other should be called, but not both. How would ->remove be called after ->shutdown has been called? Aren't the two calls already exclusive - if ->remove has been called, the device is no longer bound to the driver, so ->shutdown can't be called for the device. If ->shutdown has been called, the system is going down, and userspace is probably already dead. -- RMK's Patch system: https://www.armlinux.org.uk/developer/patches/ FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!