From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paolo Abeni Subject: Re: [PATCH net-next 1/4] indirect call wrappers: helpers to speed-up indirect calls of builtin Date: Wed, 05 Dec 2018 19:03:28 +0100 Message-ID: <6b8d8bc075c62adba2348fc55d8f896350ade46a.camel@redhat.com> References: <4b3d364077091ad23415894e74a212d1168425cc.1543836966.git.pabeni@redhat.com> <8a3c6447-96a0-3c03-dae3-e7d6bbf42d49@solarflare.com> <40cb1de12da8742e32da03b50d7729b2eeec0a04.camel@redhat.com> <06adfcdf-3535-eebc-dd32-e6d945c13825@solarflare.com> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit Cc: "David S. Miller" , Eric Dumazet To: Edward Cree , netdev@vger.kernel.org Return-path: Received: from mx1.redhat.com ([209.132.183.28]:36112 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727349AbeLESDa (ORCPT ); Wed, 5 Dec 2018 13:03:30 -0500 In-Reply-To: <06adfcdf-3535-eebc-dd32-e6d945c13825@solarflare.com> Sender: netdev-owner@vger.kernel.org List-ID: 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 > > > > Signed-off-by: Paolo Abeni > > > > --- > > > 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