Note these are the child devices of the MFD SLIMBus device.
Ah ok. I guess the creation of those child devices when the parent SLIMbus device reports PRESENT initially if fine, it's the part where you remove them if the device loses sync or gets powered off which is odd. And I guess technically you could still have race conditions where a child device starts a transaction just as the parent is no longer attached to the bus.
Losing power to SLIMBus device is very odd usecase and if it happens suggests that threre are bigger issues on the board design itself. This case should never happen. Even if it happens we would get timeout errors on every SLIMbus transactions.
That is true. This gives bit more control on the slave device lifecycle.
I would however not remove the devices when the status is down but only on an explicit .remove.
Am open for suggestions but I would not like the child devices to talk on the bus once the SLIMbus device is down! Only way to ensure or make it silent is to remove.
it's as if you are missing a mechanism to forward the parent status to the children so use remove() for lack of a better solution?
Current solution works fine for now with less complexities across multiple drivers. I also agree that there is scope of improvement in future for this.