Andrew Lunn <and...@lunn.ch> writes: > On Tue, Jun 07, 2016 at 12:48:37PM -0400, Vivien Didelot wrote: >> Hi Florian, Andrew, >> >> Vivien Didelot <vivien.dide...@savoirfairelinux.com> writes: >> >> > Hum reviewing that again, I see that if one of the 2 subsequent calls to >> > request_irq fails, you end up with an unregistered MDIO bus. >> > >> > We have the same issue in the mv88e6xxx legacy probe code if dsa.c fails >> > to allocate the dsa_switch structure. I'm moving the MDIO register code >> > to the setup function like you are doing here (good idea!) to fix that. >> >> In fact it doesn't fix the issue because dsa_switch_driver doesn't >> provide any remove/teardown function, in which mv88e6xxx and sf2 could >> unregister their MDIO bus on switch removal. >> >> Would it be worth it to add such optional function to DSA drivers? > > It is not needed with DSA2 binding. The driver is always in control, > and it performs the unregister from the core. So it knows when to > unregister the mdio bus, either because probe has failed for some > reason, or it is being unloaded. That is also why i register the mdio > bus in probe, and unregister it in remove. Normal practice for a > driver.
Yes I know, I was still talking about the legacy code. > With the legacy interface it is tricky. When would you call such a > remove/tairdown function when using the old binding? That'd go in dsa_switch_destroy I guess, but it just covers the case where the whole DSA code is unloaded... Vivien