On Tue, 2018-12-04 at 18:12 +0000, Edward Cree wrote: > On 04/12/18 17:44, Paolo Abeni wrote: > > On Tue, 2018-12-04 at 17:13 +0000, Edward Cree wrote: > > > On 03/12/18 11:40, Paolo Abeni wrote: > > > > This header define a bunch of helpers that allow avoiding the > > > > retpoline overhead when calling builtin functions via function pointers. > > > > It boils down to explicitly comparing the function pointers to > > > > known builtin functions and eventually invoke directly the latter. > > > > > > > > The macros defined here implement the boilerplate for the above schema > > > > and will be used by the next patches. > > > > > > > > rfc -> v1: > > > > - use branch prediction hint, as suggested by Eric > > > > > > > > Suggested-by: Eric Dumazet <Eric Dumazet eduma...@google.com> > > > > Signed-off-by: Paolo Abeni <pab...@redhat.com> > > > > --- > > > I'm not sure I see the reason why this is done with numbers and > > > 'name ## NR', adding extra distance between the callsite and the > > > list of callees. In particular it means that each callable needs > > > to specify its index. > > > Wouldn't it be simpler just to have > > > #define 1(f, f1, ...) \ > > > (likely(f == f1) ? f1(__VA_ARGS__) : f(__VA_ARGS__)) > > > #define INDIRECT_CALL_2(f, f2, f1, ...) \ > > > (likely(f == f2) ? f2(__VA_ARGS__) : INDIRECT_CALL_1(f, f1, > > > __VA_ARGS__)) > > > etc.? Removing the need for INDIRECT_CALLABLE_DECLARE_* entirely. > > Thank you for the review! > > > > As some of the builtin symbols are static, we would still need some > > macro wrappers to properly specify the scope when retpoline is enabled. > Ah I see, it hadn't occurred to me that static callees might not be > available at the callsite. Makes sense now. In that case, have my > Acked-By for this patch, if you want it.
I gave a shot to your idea, and after all I think is cleaner. So I'll send v2 with that change. Thanks, Paolo