From patchwork Thu Mar 2 05:24:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Li, Xin3" X-Patchwork-Id: 63213 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:5915:0:0:0:0:0 with SMTP id v21csp4063106wrd; Wed, 1 Mar 2023 21:52:02 -0800 (PST) X-Google-Smtp-Source: AK7set+HDN3GoPdzG9YmBYa5+jByke8rhRV3txiR1hZeSV5mwsGcoAgSUjTXEIOgg57oBfmAiMeq X-Received: by 2002:a17:906:e99:b0:8f1:dfa5:8117 with SMTP id p25-20020a1709060e9900b008f1dfa58117mr8346728ejf.51.1677736322626; Wed, 01 Mar 2023 21:52:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1677736322; cv=none; d=google.com; s=arc-20160816; b=tcyRCGZZpIR6vl5M64aQuo/6frF2LA7rmWxwmG2lu+GVxK/lZpUfOaoKT0kjhOYZM0 k97n4W5d4WQLJ5JyeZks3BGkPSihFWePxHMtHWBuCWVdIa88IUArhPT7vml+NgS3hthU 4ZsTuT4sQQELlRlHE4Wau4TYhwi261YxPzgBzIFOI1xB/TRn/wuBFhT1x6pwQD1+DBrd EgXExvky3G7Duh7CgClWibbXksXzMFxxdY6buzFbVAJHa3M0oXk6Hq3feAJxVMXA7mwj 4QATgP0KO7liJc7HH8BtzmUBIvE+STq38TQFtJYQomXMGlLKFvbxE9o8ZiODvclX+5l9 gQ0g== 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=elR6gv7x2KRkhkEb5mXhzjhgXAhgUl9+ZReHm6RX/ac=; b=TA/uMGxs3I+SZaP2+NHj3ZkRJvNA7Vd5D730mGpQP/e1S1DjOc+Ez2wvAbEfl1OhYk mznVvvcHcGIK7W08R18gDQNffRIzD7QarzW0NASyxtlPL4V/YD/OLKCPXfuEq69JAwvX mDtkCxIFBm8xa/arEhnwcgq9ujsa5ej8yXp24lHYzPfApW2IY/adj3KT9qM/wZMR/oFM hsSRbNFGQ9S1sVZMFBhndl5rXPLsJyyv0pdg1udlerZXczxCOdYnF+CTr8sAYaa5afuj JfbiaKNP6vaLnV0s7KtyIDFJ1JWGSZ2dH3PqZj0DkxDyf3lk1N7oEVWFxjh0+lYORIKv Wiqg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=QEuNPJk7; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id nb11-20020a1709071c8b00b009087dc51377si210184ejc.903.2023.03.01.21.51.39; Wed, 01 Mar 2023 21:52:02 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=QEuNPJk7; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229888AbjCBFvB (ORCPT + 99 others); Thu, 2 Mar 2023 00:51:01 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44494 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229734AbjCBFuu (ORCPT ); Thu, 2 Mar 2023 00:50:50 -0500 Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EF9C31E5C6; Wed, 1 Mar 2023 21:50:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1677736248; x=1709272248; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=4FK4WqdWHUwbUV2bYLBoNlxt9vIvY1YGaf10KKshT3E=; b=QEuNPJk7TFPgZguX1BJPB+Co6KQ/yUPCfkcPaqdzRIBDPFXhEe4SfPGI iqhGOg53jHk/+BV0P4fTjkf3jGD/WLto0ieNWUoocdz89jf1Vh3uaBsLF 1366sh+1yOa/bg2eXF8FKO034FGKyiWnyo/LfTZYWLWnrpxJAitSVvECy rHQkQDEN5G4ygbS/tBkubb6ew2nB4cGnhn693XhsgoPnKNLBV0Esyo9YY MgsWX2epgdplGpQivfBJgMI3NHo0HfNjHhC43Vw5PROwejtrsTCv61Kro F254YkKlS9r9qO+meCgnFKQTI2QHIfMds1nJEkdNHpp1II93vn+izXrUP w==; X-IronPort-AV: E=McAfee;i="6500,9779,10636"; a="420887059" X-IronPort-AV: E=Sophos;i="5.98,226,1673942400"; d="scan'208";a="420887059" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Mar 2023 21:50:47 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10636"; a="920530887" X-IronPort-AV: E=Sophos;i="5.98,226,1673942400"; d="scan'208";a="920530887" Received: from unknown (HELO fred..) ([172.25.112.68]) by fmsmga006.fm.intel.com with ESMTP; 01 Mar 2023 21:50:46 -0800 From: Xin Li To: linux-kernel@vger.kernel.org, x86@kernel.org, kvm@vger.kernel.org Cc: tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, hpa@zytor.com, peterz@infradead.org, andrew.cooper3@citrix.com, seanjc@google.com, pbonzini@redhat.com, ravi.v.shankar@intel.com Subject: [PATCH v4 06/34] x86/cpufeature: add the cpu feature bit for FRED Date: Wed, 1 Mar 2023 21:24:43 -0800 Message-Id: <20230302052511.1918-7-xin3.li@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230302052511.1918-1-xin3.li@intel.com> References: <20230302052511.1918-1-xin3.li@intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1759234042199334626?= X-GMAIL-MSGID: =?utf-8?q?1759234042199334626?= From: "H. Peter Anvin (Intel)" Add the CPU feature bit for FRED (Flexible Return and Event Delivery). The Intel flexible return and event delivery (FRED) architecture defines simple new transitions that change privilege level (ring transitions). The FRED architecture was designed with the following goals: 1) Improve overall performance and response time by replacing event delivery through the interrupt descriptor table (IDT event delivery) and event return by the IRET instruction with lower latency transitions. 2) Improve software robustness by ensuring that event delivery establishes the full supervisor context and that event return establishes the full user context. The new transitions defined by the FRED architecture are FRED event delivery and, for returning from events, two FRED return instructions. FRED event delivery can effect a transition from ring 3 to ring 0, but it is used also to deliver events incident to ring 0. One FRED instruction (ERETU) effects a return from ring 0 to ring 3, while the other (ERETS) returns while remaining in ring 0. Search for the latest FRED spec in most search engines with this search pattern: site:intel.com FRED (flexible return and event delivery) specification Signed-off-by: H. Peter Anvin (Intel) Tested-by: Shan Kang Signed-off-by: Xin Li --- arch/x86/include/asm/cpufeatures.h | 1 + tools/arch/x86/include/asm/cpufeatures.h | 1 + 2 files changed, 2 insertions(+) diff --git a/arch/x86/include/asm/cpufeatures.h b/arch/x86/include/asm/cpufeatures.h index 73c9672c123b..1fa444478d33 100644 --- a/arch/x86/include/asm/cpufeatures.h +++ b/arch/x86/include/asm/cpufeatures.h @@ -318,6 +318,7 @@ #define X86_FEATURE_FZRM (12*32+10) /* "" Fast zero-length REP MOVSB */ #define X86_FEATURE_FSRS (12*32+11) /* "" Fast short REP STOSB */ #define X86_FEATURE_FSRC (12*32+12) /* "" Fast short REP {CMPSB,SCASB} */ +#define X86_FEATURE_FRED (12*32+17) /* Flexible Return and Event Delivery */ #define X86_FEATURE_LKGS (12*32+18) /* "" Load "kernel" (userspace) GS */ #define X86_FEATURE_AMX_FP16 (12*32+21) /* "" AMX fp16 Support */ #define X86_FEATURE_AVX_IFMA (12*32+23) /* "" Support for VPMADD52[H,L]UQ */ diff --git a/tools/arch/x86/include/asm/cpufeatures.h b/tools/arch/x86/include/asm/cpufeatures.h index b70111a75688..b2218a7a0927 100644 --- a/tools/arch/x86/include/asm/cpufeatures.h +++ b/tools/arch/x86/include/asm/cpufeatures.h @@ -312,6 +312,7 @@ #define X86_FEATURE_AVX_VNNI (12*32+ 4) /* AVX VNNI instructions */ #define X86_FEATURE_AVX512_BF16 (12*32+ 5) /* AVX512 BFLOAT16 instructions */ #define X86_FEATURE_CMPCCXADD (12*32+ 7) /* "" CMPccXADD instructions */ +#define X86_FEATURE_FRED (12*32+17) /* Flexible Return and Event Delivery */ #define X86_FEATURE_LKGS (12*32+18) /* "" Load "kernel" (userspace) GS */ #define X86_FEATURE_AMX_FP16 (12*32+21) /* "" AMX fp16 Support */ #define X86_FEATURE_AVX_IFMA (12*32+23) /* "" Support for VPMADD52[H,L]UQ */