Thread (14 messages) 14 messages, 4 authors, 2021-03-19

Re: [PATCH v8] i2c: virtio: add a virtio i2c frontend driver

From: Arnd Bergmann <arnd@arndb.de>
Date: 2021-03-19 08:28:13
Also in: lkml, virtualization

On Fri, Mar 19, 2021 at 7:35 AM Viresh Kumar [off-list ref] wrote:
On 19-03-21, 14:29, Jie Deng wrote:
quoted
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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help