From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756686AbbFQOMo (ORCPT ); Wed, 17 Jun 2015 10:12:44 -0400 Received: from mail-lb0-f171.google.com ([209.85.217.171]:36504 "EHLO mail-lb0-f171.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753322AbbFQOMg (ORCPT ); Wed, 17 Jun 2015 10:12:36 -0400 MIME-Version: 1.0 In-Reply-To: <20150617100242.GA6015@gmail.com> References: <0ee44a97cf6ffd9a948425b27fa8d48fa271c440.1434485184.git.luto@kernel.org> <20150617100009.GA5673@gmail.com> <20150617100242.GA6015@gmail.com> From: Andy Lutomirski Date: Wed, 17 Jun 2015 07:12:13 -0700 Message-ID: Subject: Re: [RFC/INCOMPLETE 08/13] x86/entry/64: Migrate 64-bit syscalls to new exit hooks To: Ingo Molnar Cc: Andy Lutomirski , X86 ML , "linux-kernel@vger.kernel.org" , =?UTF-8?B?RnLDqWTDqXJpYyBXZWlzYmVja2Vy?= , Rik van Riel , Oleg Nesterov , Denys Vlasenko , Borislav Petkov , Kees Cook , Brian Gerst , Linus Torvalds Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Jun 17, 2015 at 3:02 AM, Ingo Molnar wrote: > > * Ingo Molnar wrote: > >> >> * Andy Lutomirski wrote: >> >> > This is separate for ease of bisection. >> > >> > Signed-off-by: Andy Lutomirski >> > --- >> > 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