Received: by 2002:a05:6a10:5bc5:0:0:0:0 with SMTP id os5csp1587629pxb; Tue, 26 Oct 2021 11:46:44 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx01XZWAeL0p+alP/Tzq25nXI3vUMmUy1g45rU55hwgRexBJwNh9kH7MazTh22GbLXnV+eb X-Received: by 2002:a17:902:b18a:b0:13e:e5f3:1b25 with SMTP id s10-20020a170902b18a00b0013ee5f31b25mr23853804plr.78.1635274004717; Tue, 26 Oct 2021 11:46:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1635274004; cv=none; d=google.com; s=arc-20160816; b=S9jsgTdOL6ahr145yhunIBgAq32ldo4BwcFPPIGt40unZYbyDKbTBMqJAhDZFhCulW x2IBiDHvtyQp8bxA0DHOAmYK61CZo+tBBiEcvhKNLpi2bdH/qEVdzwrBuHabl5QGK+tw AVGju3piY6kbsxAU1hTNCH8Uyy1n7AfIvixsVlWF7b5e45vWc6XucCcCFvAdqaVu+lTS rg6kbyHcLfXy2fPv2txryx6rO26BIeK1VrkUJxn88QkTipKb1P2a/b4Fpie8IwY2OhgA ctJz4NJjrJsHaDftXRVeudZsUYc4VA021n1aYDJ59K7PuwYA1oEjq1XAza2KmGl/xt/x 8fCA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=hg5X/fXuO5IzWpbw25ZvrVT5KoY60jnAFeBGvtwJeGk=; b=DodloSatYK4ponn4X+JnmEJwTuuGULO1ArduVv3Qb2eP4MkQSp1mKhT/EUgEm1C6y0 6qCVIytCMNcNr0yvyj72NK5LsyeG38DjfbPYkK0PDs+5I12bEOUu34UP7oNnzvf/XzP2 bWXEsiisFrwFL+vTZA9KiAN7TZjQKtU+sgD/wD0MfkTMva82j9UBMqmNIgMkneBjo+Ki DNU7tiikk0TLfGI6od0ZNK8UmbUSxDLys250q7U0GSuSl/W9+xRMKgSM/iZGTGA+W3k1 W+Ata83ImTC+v0QmRx1tCda/d5HMXUCMzdHdmslHuZngc727l08kC4VTXTJ0M8bl/v8g 70Lw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=N3nDCx4t; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id b12si14340728plz.407.2021.10.26.11.46.31; Tue, 26 Oct 2021 11:46:44 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=N3nDCx4t; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236736AbhJZOjU (ORCPT + 99 others); Tue, 26 Oct 2021 10:39:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57226 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236827AbhJZOjI (ORCPT ); Tue, 26 Oct 2021 10:39:08 -0400 Received: from mail-pg1-x530.google.com (mail-pg1-x530.google.com [IPv6:2607:f8b0:4864:20::530]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 369C2C061243 for ; Tue, 26 Oct 2021 07:36:43 -0700 (PDT) Received: by mail-pg1-x530.google.com with SMTP id t7so14330078pgl.9 for ; Tue, 26 Oct 2021 07:36:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=hg5X/fXuO5IzWpbw25ZvrVT5KoY60jnAFeBGvtwJeGk=; b=N3nDCx4tD873STgFEHBs43J9UvmV39d16dJ4bVKRJXH0RRJm9kFPZLyCQNEsTLLb75 f0RBjB5fg47e+dWjJxT7odsAORyzNdmk+d/JFvzXYuMWeQV/yGoU04ycVkR5yrnvOXNY CqWfbnhJGbKNDapAudNYS+vlMQ2gPKhK2diawcDA1FJi5DAe1vQ1zdvSxWj6MWvzjpq2 SDBR/IsOe+etxFYJMR2vGkO3JLISEojyTAarHrVk3YyS9wHWPBRd7etVJEEtAlTAGaKf +4dM/Y8vW+tGf5QWLnOgS3w3t81a3ccpAEyMgJRPTB9zfswu7pdnplm7JR3eYrcpLjZI lUdA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=hg5X/fXuO5IzWpbw25ZvrVT5KoY60jnAFeBGvtwJeGk=; b=f3qOOTYbYbO1WX9xqzVufhTaMbdfe5vXbJ/9c+XWEPhFO/5jARtxJUuRLth7+isDpP 62bJoCqGdgNgOndk0ScaKX5eaPUa6RBFLnv2YRL2AQkpXFAafvgOJQQXuOl5JB9VvmVm nLHVMsC4sWIPkYDF70AoecWhH8DCm1VLcLBOvqDtHvniqRJ+L0Ssq+fSOG0mGggYQgYd ZgeQQUOldf9V63/jdc493RNFnkPgfrMww9rBiZgqIi/iFBcnPdLW2qf9SEJgsL11fEqk 6cdERwtuLTN0QxQEY65JRWF3wZ0+8sqznR5wf0sk7WUiUm216HSkMnBbRnZQiCJyF+k5 6dMg== X-Gm-Message-State: AOAM532n3WXjzflNNXV+DJV3qweswlP16jHKatk3ZPcN4HBfbpWW027T A4H6ohkqQu1l4HXkHfMFFCULTAFVSK0= X-Received: by 2002:aa7:83cc:0:b0:455:c394:caba with SMTP id j12-20020aa783cc000000b00455c394cabamr26564073pfn.28.1635259002605; Tue, 26 Oct 2021 07:36:42 -0700 (PDT) Received: from localhost ([47.88.5.130]) by smtp.gmail.com with ESMTPSA id q13sm26428749pfj.26.2021.10.26.07.36.41 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 26 Oct 2021 07:36:42 -0700 (PDT) From: Lai Jiangshan To: linux-kernel@vger.kernel.org Cc: x86@kernel.org, Lai Jiangshan , Andy Lutomirski , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" , Juergen Gross , "Peter Zijlstra (Intel)" , Joerg Roedel , Javier Martinez Canillas , Daniel Bristot de Oliveira , Brijesh Singh , Andy Shevchenko , Tom Lendacky , Chester Lin Subject: [PATCH V4 42/50] x86/nmi: Use C entry code Date: Tue, 26 Oct 2021 22:34:28 +0800 Message-Id: <20211026143436.19071-17-jiangshanlai@gmail.com> X-Mailer: git-send-email 2.19.1.6.gb485710b In-Reply-To: <20211026141420.17138-1-jiangshanlai@gmail.com> References: <20211026141420.17138-1-jiangshanlai@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Lai Jiangshan Use DEFINE_IDTENTRY_IST_ETNRY to emit C entry function and use the function directly in entry_64.S. Signed-off-by: Lai Jiangshan --- arch/x86/entry/entry_64.S | 17 ++--------------- arch/x86/include/asm/idtentry.h | 5 ++++- arch/x86/kernel/Makefile | 1 + 3 files changed, 7 insertions(+), 16 deletions(-) diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S index 7c994bcde1b0..0a1a55c8207e 100644 --- a/arch/x86/entry/entry_64.S +++ b/arch/x86/entry/entry_64.S @@ -1309,21 +1309,8 @@ end_repeat_nmi: PUSH_AND_CLEAR_REGS ENCODE_FRAME_POINTER - /* - * Use paranoid_entry to handle SWAPGS and CR3. - */ - call paranoid_entry - UNWIND_HINT_REGS - - movq %rsp, %rdi - movq $-1, %rsi - call exc_nmi - - /* - * Use paranoid_exit to handle SWAPGS and CR3, but no need to use - * restore_regs_and_return_to_kernel as we must handle nested NMI. - */ - call paranoid_exit + movq %rsp, %rdi /* pt_regs pointer */ + call ist_exc_nmi POP_REGS diff --git a/arch/x86/include/asm/idtentry.h b/arch/x86/include/asm/idtentry.h index b9a6750dbba2..57636844b0fd 100644 --- a/arch/x86/include/asm/idtentry.h +++ b/arch/x86/include/asm/idtentry.h @@ -372,6 +372,8 @@ __visible __entry_text void ist_##func(struct pt_regs *regs) \ #define DEFINE_IDTENTRY_NOIST(func) \ DEFINE_IDTENTRY_RAW(noist_##func) +#define DEFINE_IDTENTRY_NMI DEFINE_IDTENTRY_IST + #define DECLARE_IDTENTRY_MCE DECLARE_IDTENTRY_IST #define DEFINE_IDTENTRY_MCE DEFINE_IDTENTRY_IST #define DEFINE_IDTENTRY_MCE_USER DEFINE_IDTENTRY_NOIST @@ -421,6 +423,8 @@ __visible __entry_text void ist_##func(struct pt_regs *regs) \ #else /* CONFIG_X86_64 */ +#define DEFINE_IDTENTRY_NMI DEFINE_IDTENTRY_RAW + /** * DECLARE_IDTENTRY_DF - Declare functions for double fault 32bit variant * @vector: Vector number (ignored for C) @@ -452,7 +456,6 @@ __visible noinstr void func(struct pt_regs *regs, \ /* C-Code mapping */ #define DECLARE_IDTENTRY_NMI DECLARE_IDTENTRY_RAW -#define DEFINE_IDTENTRY_NMI DEFINE_IDTENTRY_RAW #else /* !__ASSEMBLY__ */ diff --git a/arch/x86/kernel/Makefile b/arch/x86/kernel/Makefile index 8ac45801ba8b..28815c2e6cb2 100644 --- a/arch/x86/kernel/Makefile +++ b/arch/x86/kernel/Makefile @@ -51,6 +51,7 @@ KCOV_INSTRUMENT := n CFLAGS_head$(BITS).o += -fno-stack-protector CFLAGS_cc_platform.o += -fno-stack-protector CFLAGS_traps.o += -fno-stack-protector +CFLAGS_nmi.o += -fno-stack-protector CFLAGS_irq.o := -I $(srctree)/$(src)/../include/asm/trace -- 2.19.1.6.gb485710b