Re: [PATCH 1/2] entry: move the exit path to header files

From: Eric W. Biederman
Date: Tue May 16 2023 - 16:20:28 EST


Peter Zijlstra <peterz@xxxxxxxxxxxxx> writes:

> On Tue, May 16, 2023 at 03:38:09PM +0200, Sven Schnelle wrote:
>> @@ -465,4 +470,175 @@ irqentry_state_t noinstr irqentry_nmi_enter(struct pt_regs *regs);
>> */
>> void noinstr irqentry_nmi_exit(struct pt_regs *regs, irqentry_state_t irq_state);
>>
>> +static unsigned long exit_to_user_mode_loop(struct pt_regs *regs,
>> + unsigned long ti_work)
>
> Should these things not grow __always_inline/inline when moved into a header?

Is that actually what is desired?

This is a header file that should only be included once isn't it?

>> +{
>
>> +}
>> +
>> +
>> +static void exit_to_user_mode_prepare(struct pt_regs *regs)
>
> idem
>
>> +{
>
>> +}
>
>> +static void syscall_exit_work(struct pt_regs *regs, unsigned long work)
>
> and more..
>
>> +{
>
>> +}
>> +

Perhaps it would make most sense just to change the idiom to include
the .c file. That would give the optimizer every opportunity to inline
static functions, while strongly suggesting this file should be included
only once.

Is this maybe a s390 specific problem because the s390 has something
like ancient calling conventions that are not as efficient as they
should be.

Eric