Received: by 2002:ab2:6857:0:b0:1ef:ffd0:ce49 with SMTP id l23csp2693866lqp; Mon, 25 Mar 2024 06:54:15 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCXhAXbREHphaWT+j8hlhCJhYdyrmZ9q2LW7HrNh2GK+xfyC47koNRz00SpkHTGP0AigseXWWLELv7B0/y+iMchFXxouYpL7PaI8W/gVCw== X-Google-Smtp-Source: AGHT+IHLFDwy6HiNsw6lItKo7U4wQ7LojsAJ+5D6NZmPc8JlVrH8iiMPePljdbmJMKeXn/LoFrtv X-Received: by 2002:a05:6358:3a03:b0:17e:8a04:3fb3 with SMTP id g3-20020a0563583a0300b0017e8a043fb3mr8762994rwe.12.1711374855368; Mon, 25 Mar 2024 06:54:15 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1711374855; cv=pass; d=google.com; s=arc-20160816; b=edhJgm4GDN3mryJo0RyNNB3JVkZ1PU/pzy/UrQ7fjBddu+O0qMRVAAMa6nYTHSdWuV hGw1d6qkZ2teKulZlt0QqUYO/MU4zx4ohas3DX4lkU78ewlidDXSXuA9qefBm7chIKeN nGDGotwA2vtGBrd2G9jv599FO2UgXLnuEQcZ6t8KxxMpkJ7100HDgKpWFgguqS0Dn1+1 u2bGF3IISY6f4wflM5kjK2jUdCqG0azyiVQHaEBd/xkktUeGhv+XLXkaALdr2eqrBtlE XOaKCY0mvUeBtrSQhNJvdQtrjgkJGIrsJ+ngvq1QYD2GrztkHTbuYbQ7Ni1gYedrbASG Gnmw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :subject:cc:to:from:date:dkim-signature; bh=DOQWHEPRh11dluA0A/Vu5ZC7wXfT5BEZSOr1l8WJ9bg=; fh=n5QNiwpHt6MEAZ8oky9vMb0A8S9/LqtEHAvgGWSkTso=; b=hYEdm1KL82JBiPIWfs0u+3wECUxm3H/6y3vS0ZIMzhjX2UclO1eGOdeG1leshtLWZr wOFoJLcNiBREMZfHSCK0mzTK1TCE2Rdss70GnAbaMrjusdEqI35zsGVucD7UuNELxKzr HlaEq1bNauqAiywYhR1gQfWW/sXKe45Mjtah0HicU8j9o04i2Wu1ftrpVlf0uJIFmnZf 22UZ/ujatwV7ZUNaMXim9Mh9Z6j18hpTBVcq0qdcffHkzlFIMCdwwxfFkrfAfC0g0KOM oqcKY6MfyyLGStEwgO4qnUnJxupJEb2zb4Qo/8IUG9W29dvpv3cwBaLviyuE7TcqzsiG iAsw==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@tesarici.cz header.s=mail header.b=b2sLlp8z; arc=pass (i=1 spf=pass spfdomain=tesarici.cz dkim=pass dkdomain=tesarici.cz dmarc=pass fromdomain=tesarici.cz); spf=pass (google.com: domain of linux-kernel+bounces-116701-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-116701-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=tesarici.cz Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id w30-20020a63491e000000b005e4723dce6csi4916285pga.291.2024.03.25.06.54.15 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Mar 2024 06:54:15 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-116701-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; dkim=pass header.i=@tesarici.cz header.s=mail header.b=b2sLlp8z; arc=pass (i=1 spf=pass spfdomain=tesarici.cz dkim=pass dkdomain=tesarici.cz dmarc=pass fromdomain=tesarici.cz); spf=pass (google.com: domain of linux-kernel+bounces-116701-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-116701-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=tesarici.cz Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id 5EBFF2C7A85 for ; Mon, 25 Mar 2024 13:43:29 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id DF22413F435; Mon, 25 Mar 2024 10:27:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=tesarici.cz header.i=@tesarici.cz header.b="b2sLlp8z" Received: from bee.tesarici.cz (bee.tesarici.cz [37.205.15.56]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E48C7179974 for ; Mon, 25 Mar 2024 08:34:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=37.205.15.56 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711355673; cv=none; b=imr88eMHsrKlCkaaTqowVE+1KJG7BZvxI8Gd0dIDdOfiBg/EmUjjt/l56cNK07x4KOdOkK/CxYz146mhQQ6FFFxzN+WNxZ9/EGIUQjuYALSUGvg1w8E9k07AGrxK1re/OiPlhsyN45df98zVQMMpCHTcDhh/dBmCUL9+GNBOLCo= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711355673; c=relaxed/simple; bh=tPIRFSPxN25LKZa/0qm9RtJhghWTt6/30NQFtcUEX64=; h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=VhxE6FgK6j93QfJLpDvQqXr8PaEL+8Y00Xn9ZRcHv/FKzjN1XZBd1HVILJAHqG/iVAxMhVEhTiIhywLJQ/t3DB349bEU2E2yF/s/i0KbIzdo/175aIih0Nmu1Nkmu39jbCE640axvlVNNBx3FyVElS6a9FuWVZa32UOqrgHR8hI= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=tesarici.cz; spf=pass smtp.mailfrom=tesarici.cz; dkim=pass (2048-bit key) header.d=tesarici.cz header.i=@tesarici.cz header.b=b2sLlp8z; arc=none smtp.client-ip=37.205.15.56 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=tesarici.cz Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=tesarici.cz Received: from meshulam.tesarici.cz (dynamic-2a00-1028-83b8-1e7a-4427-cc85-6706-c595.ipv6.o2.cz [IPv6:2a00:1028:83b8:1e7a:4427:cc85:6706:c595]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by bee.tesarici.cz (Postfix) with ESMTPSA id 129D61AEE0E; Mon, 25 Mar 2024 09:34:21 +0100 (CET) Authentication-Results: mail.tesarici.cz; dmarc=fail (p=quarantine dis=none) header.from=tesarici.cz DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tesarici.cz; s=mail; t=1711355661; bh=DOQWHEPRh11dluA0A/Vu5ZC7wXfT5BEZSOr1l8WJ9bg=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=b2sLlp8z468b/IZqd2c4rt11W5BjIIuPtrURA9lD+izLgO0ftIb0BjHdh8rPRJIEQ A6SNtRxQ9mjJXeDhMoRstYgC9T5iUnOMNrcZlEpCec1sH1Tg8qkSdKp20Z0Gqwdyr9 9XdwO06W+1GyX/1SjRM+mbQeyZwvxFIvBfnMcMMYDxkKYWXoLwEfo9flx5ik2J58Z8 NaaDxWoMrZr3QFf2J3I9X4McF+1dXlZC5iEXK0so0goXKAUQXRmyeAnea+2/DFObem gkyzhnxqcyiGHyAdcBn1yF3YhTB+YKQVkThbwpy6nourKHGFkITuIWtuVHMnTGonz/ gq78+2Tl7mb1A== Date: Mon, 25 Mar 2024 09:34:20 +0100 From: Petr =?UTF-8?B?VGVzYcWZw61r?= To: Petr Tesarik Cc: Andy Lutomirski , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "maintainer:X86 ARCHITECTURE (32-BIT AND 64-BIT)" , "H. Peter Anvin" , "open list:X86 ENTRY CODE" , Roberto Sassu Subject: Re: [PATCH 1/1] x86/entry: Use one cmpq in NMI entry to check RIP for nested NMIs Message-ID: <20240325093420.5de035d7@meshulam.tesarici.cz> In-Reply-To: References: <20240229083711.721-1-petrtesarik@huaweicloud.com> X-Mailer: Claws Mail 4.2.0 (GTK 3.24.39; x86_64-suse-linux-gnu) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit On Tue, 12 Mar 2024 16:03:17 +0100 Petr Tesarik wrote: > On 2/29/2024 9:37 AM, Petr Tesarik wrote: > > From: Petr Tesarik > > > > Optimize the check whether a nested NMI occurred between repeat_nmi and > > end_repeat_nmi. Although this is not a hot path, this is standard code to > > check whether a value is within a given range; it is slightly faster, takes > > up less bytes of code and saves one entry in the branch predictor. > > > > This patch also removes the only relocation for end_repeat_nmi, removing > > the need for ANNOTATE_NOENDBR. > > Any comment on this? Ping. If you don't like the change, can I at least get an orderly NAK? (Or have I made it onto an x86 maintainer blacklist?) Petr T > Kind regards > Petr T > > > Signed-off-by: Petr Tesarik > > --- > > arch/x86/entry/entry_64.S | 13 ++++--------- > > 1 file changed, 4 insertions(+), 9 deletions(-) > > > > diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S > > index 9bb485977629..cae40076e109 100644 > > --- a/arch/x86/entry/entry_64.S > > +++ b/arch/x86/entry/entry_64.S > > @@ -1251,13 +1251,10 @@ SYM_CODE_START(asm_exc_nmi) > > * the outer NMI. > > */ > > > > - movq $repeat_nmi, %rdx > > - cmpq 8(%rsp), %rdx > > - ja 1f > > - movq $end_repeat_nmi, %rdx > > - cmpq 8(%rsp), %rdx > > - ja nested_nmi_out > > -1: > > + movq 8(%rsp), %rdx > > + subq $repeat_nmi, %rdx > > + cmpq $(end_repeat_nmi - repeat_nmi), %rdx > > + jb nested_nmi_out > > > > /* > > * Now check "NMI executing". If it's set, then we're nested. > > @@ -1383,8 +1380,6 @@ repeat_nmi: > > .endr > > subq $(5*8), %rsp > > end_repeat_nmi: > > - ANNOTATE_NOENDBR // this code > > - > > /* > > * Everything below this point can be preempted by a nested NMI. > > * If this happens, then the inner NMI will change the "iret" >