On Mon, 25 May 2020, Mikulas Patocka wrote: > > > The functions __raw_read* are already extern inline, so the compiler will > > > inline/noinline them depending on the macros trivial_io_bw and > > > trivial_io_lq - so we can just call them from read*_relaxed without > > > repeating the extern inline pattern. > > > > The whole point of this peculiar arrangement for cooked accessors is to > > avoid having barriers inserted inline around out-of-line calls to raw > > accessors, > > I see, but why do we want to avoid that? Linux kernel has no binary > compatibility, so it doesn't matter if the barriers are inlined in the > drivers or not. It does matter as it expands code unnecessarily (at all call sites), as I noted in the original review. This has nothing to do with compatibility. > Anyway, I've sent a next version of the patch that makes read*_relaxed > extern inline. Thanks, I'll have a look. And now that you have this update, please run `size' on ALPHA_GENERIC `vmlinux', preferably monolithic, to see what the difference is between `read*_relaxed' handlers `static inline' and keyed with `*trivial_rw_*'. Maciej