On 16.08.2024 01:10, Dmitry Torokhov wrote: > Hi Heiner, > > On Thu, Aug 15, 2024 at 09:44:50PM +0200, Heiner Kallweit wrote: >> >> +/* >> + * Serialize device instantiation in case it can be instantiated explicitly >> + * and by auto-detection >> + */ >> +static int i2c_lock_addr(struct i2c_adapter *adap, unsigned short addr, >> + unsigned short flags) >> +{ >> + if (!(flags & I2C_CLIENT_TEN) && >> + test_and_set_bit(addr, adap->addrs_in_instantiation)) >> + return -EBUSY; > > Why don't you add a list of client devices to the adapter structure > instead of using bitmap? Then you could handle cases with 10 bit > addresses as well. > I think this question in the same as asked by Wolfram: whether a linked list would be better suited. It would require more complexity to deal with it than the bitmap. And we could use the bitmap also with 10bit addresses, then the bitmap would have 128 bytes. It's an acceptable tradeoff to exclude (very rare) 10 bit addresses from the check. > I know that there is already a list of children in the driver core, but > it is populated too late for what we need. > > Thanks. >