From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pl0-f72.google.com (mail-pl0-f72.google.com [209.85.160.72]) by kanga.kvack.org (Postfix) with ESMTP id B40336B0270 for ; Thu, 12 Jul 2018 16:53:23 -0400 (EDT) Received: by mail-pl0-f72.google.com with SMTP id z21-v6so10490836plo.13 for ; Thu, 12 Jul 2018 13:53:23 -0700 (PDT) Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id p20-v6sor5898397pgb.313.2018.07.12.13.53.22 for (Google Transport Security); Thu, 12 Jul 2018 13:53:22 -0700 (PDT) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (1.0) Subject: Re: [PATCH 05/39] x86/entry/32: Unshare NMI return path From: Andy Lutomirski In-Reply-To: <1531308586-29340-6-git-send-email-joro@8bytes.org> Date: Thu, 12 Jul 2018 13:53:19 -0700 Content-Transfer-Encoding: 7bit Message-Id: References: <1531308586-29340-1-git-send-email-joro@8bytes.org> <1531308586-29340-6-git-send-email-joro@8bytes.org> Sender: owner-linux-mm@kvack.org List-ID: To: Joerg Roedel Cc: Thomas Gleixner , Ingo Molnar , "H . Peter Anvin" , x86@kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Linus Torvalds , Andy Lutomirski , Dave Hansen , Josh Poimboeuf , Juergen Gross , Peter Zijlstra , Borislav Petkov , Jiri Kosina , Boris Ostrovsky , Brian Gerst , David Laight , Denys Vlasenko , Eduardo Valentin , Greg KH , Will Deacon , aliguori@amazon.com, daniel.gruss@iaik.tugraz.at, hughd@google.com, keescook@google.com, Andrea Arcangeli , Waiman Long , Pavel Machek , "David H . Gutteridge" , jroedel@suse.de > On Jul 11, 2018, at 4:29 AM, Joerg Roedel wrote: > > From: Joerg Roedel > > NMI will no longer use most of the shared return path, > because NMI needs special handling when the CR3 switches for > PTI are added. Why? What would go wrong? How many return-to-usermode paths will we have? 64-bit has only one. > This patch prepares for that. > > Signed-off-by: Joerg Roedel > --- > arch/x86/entry/entry_32.S | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/arch/x86/entry/entry_32.S b/arch/x86/entry/entry_32.S > index d35a69a..571209e 100644 > --- a/arch/x86/entry/entry_32.S > +++ b/arch/x86/entry/entry_32.S > @@ -1017,7 +1017,7 @@ ENTRY(nmi) > > /* Not on SYSENTER stack. */ > call do_nmi > - jmp .Lrestore_all_notrace > + jmp .Lnmi_return > > .Lnmi_from_sysenter_stack: > /* > @@ -1028,7 +1028,11 @@ ENTRY(nmi) > movl PER_CPU_VAR(cpu_current_top_of_stack), %esp > call do_nmi > movl %ebx, %esp > - jmp .Lrestore_all_notrace > + > +.Lnmi_return: > + CHECK_AND_APPLY_ESPFIX > + RESTORE_REGS 4 > + jmp .Lirq_return > > #ifdef CONFIG_X86_ESPFIX32 > .Lnmi_espfix_stack: > -- > 2.7.4 >