• Andy Lutomirski's avatar
    x86/entry/64: Always run ptregs-using syscalls on the slow path · 302f5b26
    Andy Lutomirski authored
    64-bit syscalls currently have an optimization in which they are
    called with partial pt_regs.  A small handful require full
    pt_regs.
    
    In the 32-bit and compat cases, I cleaned this up by forcing
    full pt_regs for all syscalls.  The performance hit doesn't
    really matter as the affected system calls are fundamentally
    heavy and this is the 32-bit compat case.
    
    I want to clean up the 64-bit case as well, but I don't want to
    hurt fast path performance.  To do that, I want to force the
    syscalls that use pt_regs onto the slow path.  This will enable
    us to make slow path syscalls be real ABI-compliant C functions.
    
    Use the new syscall entry qualification machinery for this.
    'stub_clone' is now 'stub_clone/ptregs'.
    
    The next patch will eliminate the stubs, and we'll just have
    'sys_clone/ptregs'.
    
    As of this patch, two-phase entry tracing is no longer used.  It
    has served its purpose (namely a huge speedup on some workloads
    prior to more general opportunistic SYSRET support), and once
    the dust settles I'll send patches to back it out.
    
    The implementation is heavily based on a patch from Brian Gerst:
    
      http://lkml.kernel.org/g/1449666173-15366-1-git-send-email-brgerst@gmail.com
    
    Originally-From: Brian Gerst <brgerst@gmail.com>
    Signed-off-by: default avatarAndy Lutomirski <luto@kernel.org>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Frédéric Weisbecker <fweisbec@gmail.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/b9beda88460bcefec6e7d792bd44eca9b760b0c4.1454022279.git.luto@kernel.orgSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    302f5b26
syscall_64.c 919 Bytes