Arnd Bergmann
2021-Mar-19 08:27 UTC
[PATCH v8] i2c: virtio: add a virtio i2c frontend driver
On Fri, Mar 19, 2021 at 7:35 AM Viresh Kumar <viresh.kumar at linaro.org> wrote:> > On 19-03-21, 14:29, Jie Deng wrote: > > I also see example drivers/i2c/busses/i2c-xiic.c. Some people might think > > this way is more clearer than > > > > updating each member in probe. Basically, I think it's just a matter of > > personal preference which doesn't > > Memory used by one instance of struct i2c_adapter (on arm64): > > struct i2c_adapter {...> }; > > So, this extra instance that i2c-xiic.c is creating (and that you want to > create) is going to waste 1KB of memory and it will never be used. > > This is bad coding practice IMHO and it is not really about personal preference.Agreed. At the minimum, it should have been written as an explicit memcpy() in the few drivers that have that pattern instead of a benign looking struct assignment, but even then there is nothing good about it really. Notably, the largest member by far is the 'struct device', and that by itself should be a red flag as a device is never meant to be allocated statically (this used to be common in pre-DT days, but even then was considered bad style). I suppose the i2c_add_adapter()/i2c_add_numbered_adapter() interface could be redesigned to handle this better, since every driver needs to set the same few fields. That however requires finding someone to spend the effort on coming up with a nice design and converting lots of drivers over. Arnd