Re: [RFC/INCOMPLETE 08/13] x86/entry/64: Migrate 64-bit syscalls to new exit hooks

From: Andy Lutomirski
Date: Wed Jun 17 2015 - 10:12:48 EST


On Wed, Jun 17, 2015 at 3:02 AM, Ingo Molnar <mingo@xxxxxxxxxx> wrote:
>
> * Ingo Molnar <mingo@xxxxxxxxxx> wrote:
>
>>
>> * Andy Lutomirski <luto@xxxxxxxxxx> wrote:
>>
>> > This is separate for ease of bisection.
>> >
>> > Signed-off-by: Andy Lutomirski <luto@xxxxxxxxxx>
>> > ---
>> > arch/x86/entry/entry_64.S | 68 +++++------------------------------------------
>> > 1 file changed, 7 insertions(+), 61 deletions(-)
>> >
>> > diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S
>> > index 33acc3dcc281..a5044d7a9d43 100644
>> > --- a/arch/x86/entry/entry_64.S
>> > +++ b/arch/x86/entry/entry_64.S
>> > @@ -229,6 +229,11 @@ entry_SYSCALL_64_fastpath:
>> > */
>> > USERGS_SYSRET64
>> >
>> > +GLOBAL(int_ret_from_sys_call_irqs_off)
>> > + TRACE_IRQS_ON
>> > + ENABLE_INTERRUPTS(CLBR_NONE)
>> > + jmp int_ret_from_sys_call
>>
>> Any reason why irq state tracking cannot be done in C as well, like the rest of
>> the irq state tracking code?
>
> Never mind, I see you've done exactly that in patch #12.
>

There are still some TRACE_IRQS_ON, LOCKDEP_SYS_EXIT, and such
scattered throughout the asm. it's plausible that even more of that
could be moved to C.

We could also benchmark and find out how bad it would be if we just
always filled pt_regs in completely in syscalls. If the performance
hit isn't enough to matter, then we could potentially move the entire
syscall path except pt_regs setup and sysret/iret into three C
functions.

--Andy
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/