Re: [PATCH v1 06/22] powerpc/ftrace: Inline ftrace_modify_code()

From: Christophe Leroy
Date: Wed May 04 2022 - 07:43:19 EST




Le 18/04/2022 à 08:07, Naveen N. Rao a écrit :
> Christophe Leroy wrote:
>> Inlining ftrace_modify_code(), it increases a bit the
>> size of ftrace code but brings 5% improvment on ftrace
>> activation.
>>
>> Signed-off-by: Christophe Leroy <christophe.leroy@xxxxxxxxxx>
>> ---
>>  arch/powerpc/kernel/trace/ftrace.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/arch/powerpc/kernel/trace/ftrace.c
>> b/arch/powerpc/kernel/trace/ftrace.c
>> index 41c45b9c7f39..98e82fa4980f 100644
>> --- a/arch/powerpc/kernel/trace/ftrace.c
>> +++ b/arch/powerpc/kernel/trace/ftrace.c
>> @@ -53,7 +53,7 @@ ftrace_call_replace(unsigned long ip, unsigned long
>> addr, int link)
>>      return op;
>>  }
>>
>> -static int
>> +static inline int
>>  ftrace_modify_code(unsigned long ip, ppc_inst_t old, ppc_inst_t new)
>>  {
>>      ppc_inst_t replaced;
>
> I thought gcc was free to inline functions without the need for
> 'inline'. Don't you see this being inlined otherwise?

Yep, gcc is free to inline, but in that case it doesn't inline unless
you suggest it to do so.

>
> On the flip side, don't we need __always_inline if we want to force
> inlining?

The question is, do we want to force inlining, even with
CONFIG_CC_OPTIMIZE_FOR_SIZE ?

With 'inline', gcc seems to now inline it with
CONFIG_CC_OPTIMIZE_FOR_SPEED and still keep it out of line with
CONFIG_CC_OPTIMIZE_FOR_SIZE.

Christophe