From nobody Wed May 15 08:32:23 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1699516300; cv=none; d=zohomail.com; s=zohoarc; b=YY+wshzRva+yWsV0ZFDXA3Oc3uEZZollbW1dGFFveQo5wv2NSV9C0tB17rqCXdFJZicy7WB7i6a4GfhgmivH5IMaeO+/vgRfRENaQwipR/fSr+Unc/V18iepiTx74Aztk2weodTDNv4RuaOYFts1A2NXlCdVyWqUoHpVBsZQy/Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1699516300; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=mP86Xm8kvICDBgqewOsrbih1CV+7LAYAbBxV3ds1WxU=; b=diFt0HrhaiCL1tFYf+AsCiaZSWA8sibeurkjZXWsVS56acSuMe4VwYIIcWyh6WFhg2jLjI01U4rq2AWsIjWvteqa7269WEd/x08w/ONxQgBnetcKtA4CLPp2Vss0exwnpbGYtnQ5XDmXkl4uPeojxhJjgcLEoABZOcRECANO4Ao= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1699516300064714.439417813118; Wed, 8 Nov 2023 23:51:40 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1r0zoJ-0007Je-JM; Thu, 09 Nov 2023 02:50:43 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1r0zoF-0007HQ-7s for qemu-devel@nongnu.org; Thu, 09 Nov 2023 02:50:39 -0500 Received: from mgamail.intel.com ([192.55.52.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1r0zo9-0001pD-55 for qemu-devel@nongnu.org; Thu, 09 Nov 2023 02:50:38 -0500 Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Nov 2023 23:50:22 -0800 Received: from unknown (HELO fred..) ([172.25.112.68]) by orsmga002.jf.intel.com with ESMTP; 08 Nov 2023 23:50:21 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1699516233; x=1731052233; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=XHdLvfVHJIvI0mv20DOWuf8Ii7qbgRx1MvES8geIcoU=; b=SUxuHbS9TGfvJUx1nRBLaXIuQ1SCxrqca/1NDc+t+D8USEkK0qd43+Db +96hdDeW2+JkndRjXsoulS2E2af+9a0ejVvgvsDfgagT2SJU3j8u+i7Er MYShRx6iv55LaC8vBABP4z1rr0uVFeXL3HhWYYTQmhKXINqMqNDVywlh7 MGGLvYO2lpaDurj8cLFR/vQkWtW4tCMqqxbxwcqoKYuHbMrpjQmAYIRDG k69468Zd2QWf57SDHWDvwnB+nUE1/1G2SAO+PVD820gMlooKbM+6RNpQI t5uFxOJL/nfaDXBN1GFgJ+dxihWl3L7p5rKEuz4FYAeDkMJzTT9l5F6MI A==; X-IronPort-AV: E=McAfee;i="6600,9927,10888"; a="476165129" X-IronPort-AV: E=Sophos;i="6.03,288,1694761200"; d="scan'208";a="476165129" X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10888"; a="763329268" X-IronPort-AV: E=Sophos;i="6.03,288,1694761200"; d="scan'208";a="763329268" From: Xin Li To: qemu-devel@nongnu.org Cc: kvm@vger.kernel.org, richard.henderson@linaro.org, pbonzini@redhat.com, eduardo@habkost.net, seanjc@google.com, chao.gao@intel.com, hpa@zytor.com, xiaoyao.li@intel.com, weijiang.yang@intel.com Subject: [PATCH v3 1/6] target/i386: add support for FRED in CPUID enumeration Date: Wed, 8 Nov 2023 23:20:07 -0800 Message-ID: <20231109072012.8078-2-xin3.li@intel.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231109072012.8078-1-xin3.li@intel.com> References: <20231109072012.8078-1-xin3.li@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=192.55.52.43; envelope-from=xin3.li@intel.com; helo=mgamail.intel.com X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @intel.com) X-ZM-MESSAGEID: 1699516300941100005 Content-Type: text/plain; charset="utf-8" FRED, i.e., the Intel flexible return and event delivery architecture, defines simple new transitions that change privilege level (ring transitions). 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. Collectively, FRED event delivery and the FRED return instructions are FRED transitions. In addition to these transitions, the FRED architecture defines a new instruction (LKGS) for managing the state of the GS segment register. The LKGS instruction can be used by 64-bit operating systems that do not use the new FRED transitions. WRMSRNS is an instruction that behaves exactly like WRMSR, with the only difference being that it is not a serializing instruction by default. Under certain conditions, WRMSRNS may replace WRMSR to improve performance. FRED uses it to switch RSP0 in a faster manner. Search for the latest FRED spec in most search engines with this search pattern: site:intel.com FRED (flexible return and event delivery) specification The CPUID feature flag CPUID.(EAX=3D7,ECX=3D1):EAX[17] enumerates FRED, and the CPUID feature flag CPUID.(EAX=3D7,ECX=3D1):EAX[18] enumerates LKGS, and the CPUID feature flag CPUID.(EAX=3D7,ECX=3D1):EAX[19] enumerates WRMSRNS. Add CPUID definitions for FRED/LKGS/WRMSRNS, and expose them to KVM guests. Because FRED relies on LKGS and WRMSRNS, add that to feature dependency map. Tested-by: Shan Kang Signed-off-by: Xin Li --- target/i386/cpu.c | 10 +++++++++- target/i386/cpu.h | 6 ++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 358d9c0a65..403c84177a 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -965,7 +965,7 @@ FeatureWordInfo feature_word_info[FEATURE_WORDS] =3D { "avx-vnni", "avx512-bf16", NULL, "cmpccxadd", NULL, NULL, "fzrm", "fsrs", "fsrc", NULL, NULL, NULL, - NULL, NULL, NULL, NULL, + NULL, "fred", "lkgs", "wrmsrns", NULL, "amx-fp16", NULL, "avx-ifma", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, @@ -1552,6 +1552,14 @@ static FeatureDep feature_dependencies[] =3D { .from =3D { FEAT_VMX_SECONDARY_CTLS, VMX_SECONDARY_EXEC_ENABLE_US= ER_WAIT_PAUSE }, .to =3D { FEAT_7_0_ECX, CPUID_7_0_ECX_WAITPKG }, }, + { + .from =3D { FEAT_7_1_EAX, CPUID_7_1_EAX_FRED }, + .to =3D { FEAT_7_1_EAX, CPUID_7_1_EAX_LKGS }, + }, + { + .from =3D { FEAT_7_1_EAX, CPUID_7_1_EAX_FRED }, + .to =3D { FEAT_7_1_EAX, CPUID_7_1_EAX_WRMSRNS }, + }, }; =20 typedef struct X86RegisterInfo32 { diff --git a/target/i386/cpu.h b/target/i386/cpu.h index cd2e295bd6..5faf00551d 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -934,6 +934,12 @@ uint64_t x86_cpu_get_supported_feature_word(FeatureWor= d w, #define CPUID_7_1_EDX_AMX_COMPLEX (1U << 8) /* PREFETCHIT0/1 Instructions */ #define CPUID_7_1_EDX_PREFETCHITI (1U << 14) +/* Flexible return and event delivery (FRED) */ +#define CPUID_7_1_EAX_FRED (1U << 17) +/* Load into IA32_KERNEL_GS_BASE (LKGS) */ +#define CPUID_7_1_EAX_LKGS (1U << 18) +/* Non-Serializing Write to Model Specific Register (WRMSRNS) */ +#define CPUID_7_1_EAX_WRMSRNS (1U << 19) =20 /* Do not exhibit MXCSR Configuration Dependent Timing (MCDT) behavior */ #define CPUID_7_2_EDX_MCDT_NO (1U << 5) --=20 2.42.0 From nobody Wed May 15 08:32:23 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1699516298; cv=none; d=zohomail.com; s=zohoarc; b=JOxbLFLGiylJXi9ZTTIeoOWDOPqyyROxZcfYb60l9VFGl1VKlZt0H7a5BlA53vhC/gI2qL15G0suI1BpDqoCVx+0d0CRQ1SgkTK1y6TEO0k3Ye70DR+3W8FJ41d6d3H41aoe0LnVaHRFzWXKBYTNLyj0mm5PftMyhMn9DDkgAsc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1699516298; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=6+UZHZJ1Q2Im2o7lbO3HcKBgQCJEJIZRh1FfTzgs0Ac=; b=Rljsok9ZgKJrOPL8nNRmN+vBDPCZj+2Qqt4GaKjSacedvkzlEWQeNFj3y8ENn29GWKtUOHayLssDMl7LSYTqbcnCGtWiXU0rZqSBX1+dKyOREo4H3d7A9Zp+kIZa7t6oQTcvJENvUaqCCEjs0aD8MOoSAQAiOljv53qWCp2Xbb0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1699516298011714.8626128186835; Wed, 8 Nov 2023 23:51:38 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1r0zoK-0007Ju-UW; Thu, 09 Nov 2023 02:50:44 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1r0zoJ-0007JF-0j for qemu-devel@nongnu.org; Thu, 09 Nov 2023 02:50:43 -0500 Received: from mgamail.intel.com ([192.55.52.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1r0zoF-0001pD-Qj for qemu-devel@nongnu.org; Thu, 09 Nov 2023 02:50:42 -0500 Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Nov 2023 23:50:22 -0800 Received: from unknown (HELO fred..) ([172.25.112.68]) by orsmga002.jf.intel.com with ESMTP; 08 Nov 2023 23:50:22 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1699516239; x=1731052239; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=cErrvaQ2Y2YRcZJb/xIJHbANMmxb80XwPPZKGztP7x4=; b=WOdD3i0FlOmHQMOkLfGMBj3WDOwBJs7u9Y+XbF6TaDBiVFG6U3k7hX2d DIMKptqY1pz0a3cuk/EjplKoBYxapk/bSAA9k12FzTL6SgQKHy2qZtjwQ fhmevxP3xX2598d+UQX3eRFPnoV3QHERQB8anub/z+SawArrCCucat793 Wu51jLmGz7sXzBylriqGvS7Sh5SbL5c7KEas8oq+cXwiBUF9tWh8lmJka D9GFlMfEMtxOU/6eiwIYhTicqfEhaeZ3soiXhCNo3yt5GEEyZBwk3/8q2 xnHQ4Wd3qvpoGASJAMEdAZOLI0bxgW6WWJIIWyjSHyR2Nl9mNospXcxgZ w==; X-IronPort-AV: E=McAfee;i="6600,9927,10888"; a="476165137" X-IronPort-AV: E=Sophos;i="6.03,288,1694761200"; d="scan'208";a="476165137" X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10888"; a="763329273" X-IronPort-AV: E=Sophos;i="6.03,288,1694761200"; d="scan'208";a="763329273" From: Xin Li To: qemu-devel@nongnu.org Cc: kvm@vger.kernel.org, richard.henderson@linaro.org, pbonzini@redhat.com, eduardo@habkost.net, seanjc@google.com, chao.gao@intel.com, hpa@zytor.com, xiaoyao.li@intel.com, weijiang.yang@intel.com Subject: [PATCH v3 2/6] target/i386: mark CR4.FRED not reserved Date: Wed, 8 Nov 2023 23:20:08 -0800 Message-ID: <20231109072012.8078-3-xin3.li@intel.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231109072012.8078-1-xin3.li@intel.com> References: <20231109072012.8078-1-xin3.li@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=192.55.52.43; envelope-from=xin3.li@intel.com; helo=mgamail.intel.com X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @intel.com) X-ZM-MESSAGEID: 1699516298905100001 Content-Type: text/plain; charset="utf-8" The CR4.FRED bit, i.e., CR4[32], is no longer a reserved bit when FRED is exposed to guests, otherwise it is still a reserved bit. Tested-by: Shan Kang Signed-off-by: Xin Li Reviewed-by: Zhao Liu --- target/i386/cpu.h | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/target/i386/cpu.h b/target/i386/cpu.h index 5faf00551d..e210957cba 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -262,6 +262,12 @@ typedef enum X86Seg { #define CR4_PKE_MASK (1U << 22) #define CR4_PKS_MASK (1U << 24) =20 +#ifdef TARGET_X86_64 +#define CR4_FRED_MASK (1ULL << 32) +#else +#define CR4_FRED_MASK 0 +#endif + #define CR4_RESERVED_MASK \ (~(target_ulong)(CR4_VME_MASK | CR4_PVI_MASK | CR4_TSD_MASK \ | CR4_DE_MASK | CR4_PSE_MASK | CR4_PAE_MASK \ @@ -269,7 +275,8 @@ typedef enum X86Seg { | CR4_OSFXSR_MASK | CR4_OSXMMEXCPT_MASK | CR4_UMIP_MASK \ | CR4_LA57_MASK \ | CR4_FSGSBASE_MASK | CR4_PCIDE_MASK | CR4_OSXSAVE_MASK \ - | CR4_SMEP_MASK | CR4_SMAP_MASK | CR4_PKE_MASK | CR4_PKS_M= ASK)) + | CR4_SMEP_MASK | CR4_SMAP_MASK | CR4_PKE_MASK | CR4_PKS_M= ASK \ + | CR4_FRED_MASK)) =20 #define DR6_BD (1 << 13) #define DR6_BS (1 << 14) @@ -2520,6 +2527,9 @@ static inline uint64_t cr4_reserved_bits(CPUX86State = *env) if (!(env->features[FEAT_7_0_ECX] & CPUID_7_0_ECX_PKS)) { reserved_bits |=3D CR4_PKS_MASK; } + if (!(env->features[FEAT_7_1_EAX] & CPUID_7_1_EAX_FRED)) { + reserved_bits |=3D CR4_FRED_MASK; + } return reserved_bits; } =20 --=20 2.42.0 From nobody Wed May 15 08:32:23 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1699516317; cv=none; d=zohomail.com; s=zohoarc; b=ig1zusRpcSFU+ypdQty0pJsHuwwmMnxR5cBRhYd+K3RTOYtjdSknh2CPGtkir4m+yZPndK3JRTTFIUSiLE3d7VDNjRx+uY8uKA85d4jNBeqJpZj1Ay8RK6/LRoASsYKxIM3NOj8BU9Xm8JmqKNYLZcqMwlrYJPEZRd3f5zUhKWM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1699516317; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=lQOD165aMVikf2RKVcW7Rj21iS2BYWjNZJ0rG9ADB5c=; b=aQgKQahg7V/fYHi64cxPO8ny/acE4CcSqDDfRRhzgw5ebONQMyAdW8RwNZQXhJfXNcH5Vfvha4B9yK6FiaKEQQoW1nHdad5vF9K38IMRRPOUUatrNc/fOdSALSd5K1Mc0fUAwz89vsj7VPwIIJgUHYbBZu2+hxV8TNCY2OQ43sQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1699516317664697.2131245965559; Wed, 8 Nov 2023 23:51:57 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1r0zoL-0007L1-SO; Thu, 09 Nov 2023 02:50:45 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1r0zoJ-0007JD-0B for qemu-devel@nongnu.org; Thu, 09 Nov 2023 02:50:43 -0500 Received: from mgamail.intel.com ([192.55.52.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1r0zoF-0001o2-Qn for qemu-devel@nongnu.org; Thu, 09 Nov 2023 02:50:41 -0500 Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Nov 2023 23:50:22 -0800 Received: from unknown (HELO fred..) ([172.25.112.68]) by orsmga002.jf.intel.com with ESMTP; 08 Nov 2023 23:50:22 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1699516239; x=1731052239; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=OTzIm8gCXp6Ung+Q+TxnUDKEdG2Zy3BQi6wounkD6Es=; b=JAXKgNVvtyh/zDFlbj7L698woHPVYg1kGF5g0FBwX0I7WIcqeGK2PtEa NLXmcXOjxqHB2l2OiIJ6glSHjIvGwMJUQjHqVFUrZ/ZiQsEht+jb9OhRJ aZiVk35Ocl/XQpy++UoRRUVFa6seVTPTyyV8gYphfdUIoJsdxYi4Q9ZDO MF1+PcFOyyJ5H4b3trBQhIpSJJpQeknsp8NUzm67oJtwTt2MYnaybmB0a o0NZ0eXkAWtLmoC6J0LArYQ5NT3GxdwAmk71m8ZK3YW6IqS0sYkIkG9fc pF0Gpd8UQA8tM9VHdouSPsiuRRT/oLCg1qNljaH4EvR1o4xztFbA8f3dk Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10888"; a="476165145" X-IronPort-AV: E=Sophos;i="6.03,288,1694761200"; d="scan'208";a="476165145" X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10888"; a="763329279" X-IronPort-AV: E=Sophos;i="6.03,288,1694761200"; d="scan'208";a="763329279" From: Xin Li To: qemu-devel@nongnu.org Cc: kvm@vger.kernel.org, richard.henderson@linaro.org, pbonzini@redhat.com, eduardo@habkost.net, seanjc@google.com, chao.gao@intel.com, hpa@zytor.com, xiaoyao.li@intel.com, weijiang.yang@intel.com Subject: [PATCH v3 3/6] target/i386: add the secondary VM exit controls MSR Date: Wed, 8 Nov 2023 23:20:09 -0800 Message-ID: <20231109072012.8078-4-xin3.li@intel.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231109072012.8078-1-xin3.li@intel.com> References: <20231109072012.8078-1-xin3.li@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=192.55.52.43; envelope-from=xin3.li@intel.com; helo=mgamail.intel.com X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @intel.com) X-ZM-MESSAGEID: 1699516318952100001 Content-Type: text/plain; charset="utf-8" Add the secondary VM exit controls MSR to prepare for KVM FRED enabling. Tested-by: Shan Kang Signed-off-by: Xin Li --- scripts/kvm/vmxcap | 9 +++++++++ target/i386/cpu.c | 2 +- target/i386/cpu.h | 1 + 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/scripts/kvm/vmxcap b/scripts/kvm/vmxcap index 3fb4d5b342..7da1e00ca8 100755 --- a/scripts/kvm/vmxcap +++ b/scripts/kvm/vmxcap @@ -24,6 +24,7 @@ MSR_IA32_VMX_TRUE_EXIT_CTLS =3D 0x48F MSR_IA32_VMX_TRUE_ENTRY_CTLS =3D 0x490 MSR_IA32_VMX_VMFUNC =3D 0x491 MSR_IA32_VMX_PROCBASED_CTLS3 =3D 0x492 +MSR_IA32_VMX_EXIT_CTLS2 =3D 0x493 =20 class msr(object): def __init__(self): @@ -219,11 +220,19 @@ controls =3D [ 23: 'Clear IA32_BNDCFGS', 24: 'Conceal VM exits from PT', 25: 'Clear IA32_RTIT_CTL', + 31: 'Activate secondary VM-exit controls', }, cap_msr =3D MSR_IA32_VMX_EXIT_CTLS, true_cap_msr =3D MSR_IA32_VMX_TRUE_EXIT_CTLS, ), =20 + Allowed1Control( + name =3D 'secondary VM-Exit controls', + bits =3D { + }, + cap_msr =3D MSR_IA32_VMX_EXIT_CTLS2, + ), + Control( name =3D 'VM-Entry controls', bits =3D { diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 403c84177a..227ee1c759 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -1270,7 +1270,7 @@ FeatureWordInfo feature_word_info[FEATURE_WORDS] =3D { "vmx-exit-save-efer", "vmx-exit-load-efer", "vmx-exit-save-preemption-timer", "vmx-exit-clear-bndcfgs", NULL, "vmx-exit-clear-rtit-ctl", NULL, NULL, - NULL, "vmx-exit-load-pkrs", NULL, NULL, + NULL, "vmx-exit-load-pkrs", NULL, "vmx-exit-secondary-ctls", }, .msr =3D { .index =3D MSR_IA32_VMX_TRUE_EXIT_CTLS, diff --git a/target/i386/cpu.h b/target/i386/cpu.h index e210957cba..a4d3702621 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -551,6 +551,7 @@ typedef enum X86Seg { #define MSR_IA32_VMX_TRUE_EXIT_CTLS 0x0000048f #define MSR_IA32_VMX_TRUE_ENTRY_CTLS 0x00000490 #define MSR_IA32_VMX_VMFUNC 0x00000491 +#define MSR_IA32_VMX_EXIT_CTLS2 0x00000493 =20 #define XSTATE_FP_BIT 0 #define XSTATE_SSE_BIT 1 --=20 2.42.0 From nobody Wed May 15 08:32:23 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1699516305; cv=none; d=zohomail.com; s=zohoarc; b=hO24gceKEdOIy6PrbOl0VIX4bzAsMxfT6aT5S7/ErpIXs6NNAarfeEkPnaDaMqRUixxCK4R4i658TCUBbWp/3hDiGl6aYLtlF7aPD8WPTYE91rBEaL/Nh4MyOlUAc8c5Ja6xUdnN1ImRukW1rx/zouGywDKyB+qvn7WpN1TI+jE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1699516305; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ezsItaxRW3lEKHWNZDs4MayDYJp+dUKW1cz6cKvQUa0=; b=W8ZGjNrznhzwmowF2rYcCLi9wCER7FIzrjVuaj6CmB4dj1fJanX6bSSr21g4HLesRsWvffS3KIIU4bcXIZMDdHywnEqgpIBR9FHfOifjCWXIh5otX23r/dSNdxDZ2kDkpr6aqYRxqlY/TSxLEWsyeI5+0J1qZdjTBGwZ5FTFcMg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1699516305949206.01828629983595; Wed, 8 Nov 2023 23:51:45 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1r0zoK-0007Jw-Ub; Thu, 09 Nov 2023 02:50:44 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1r0zoJ-0007JE-0C for qemu-devel@nongnu.org; Thu, 09 Nov 2023 02:50:43 -0500 Received: from mgamail.intel.com ([192.55.52.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1r0zoG-0001sR-9g for qemu-devel@nongnu.org; Thu, 09 Nov 2023 02:50:42 -0500 Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Nov 2023 23:50:23 -0800 Received: from unknown (HELO fred..) ([172.25.112.68]) by orsmga002.jf.intel.com with ESMTP; 08 Nov 2023 23:50:22 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1699516240; x=1731052240; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=MRaXk3shPh7gkjPfs7QFU/AG2qwffhxmzb8OZqrofHo=; b=dNhGs7GzD73pf7QkH0ulCnC+BST1Wfz2INB2/HkJJhKvSZdMRoLLz5WJ pM4TQnZmXEPMCbiOq9pywJgN13jI4ObXadvcr86EPOt7Y1MLMExJUlOcl 1uuh75LTgF8MDeuMERt+NFEApEoVGxdUPQEAGbo38sui/SxRF8bFrD0NA 3RP7U6gu8ngV5eBQ3U1+AF5EIBJSQjn9lMjjxS4XyMMdmTZFNbhjciwuN VSG1BBmMQ95p2PeVgs8Gb50Y2O5RNWnK+WsUqsu6orrk0qttnmayqyOB4 1Bu86Eol/Yt9N37C/Q1ZOUhuHjpeBg49ZD84LXg0SA15CJ5nVse2oVS+q g==; X-IronPort-AV: E=McAfee;i="6600,9927,10888"; a="476165154" X-IronPort-AV: E=Sophos;i="6.03,288,1694761200"; d="scan'208";a="476165154" X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10888"; a="763329284" X-IronPort-AV: E=Sophos;i="6.03,288,1694761200"; d="scan'208";a="763329284" From: Xin Li To: qemu-devel@nongnu.org Cc: kvm@vger.kernel.org, richard.henderson@linaro.org, pbonzini@redhat.com, eduardo@habkost.net, seanjc@google.com, chao.gao@intel.com, hpa@zytor.com, xiaoyao.li@intel.com, weijiang.yang@intel.com Subject: [PATCH v3 4/6] target/i386: add support for VMX FRED controls Date: Wed, 8 Nov 2023 23:20:10 -0800 Message-ID: <20231109072012.8078-5-xin3.li@intel.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231109072012.8078-1-xin3.li@intel.com> References: <20231109072012.8078-1-xin3.li@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=192.55.52.43; envelope-from=xin3.li@intel.com; helo=mgamail.intel.com X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @intel.com) X-ZM-MESSAGEID: 1699516306928100001 Content-Type: text/plain; charset="utf-8" Add VMX FRED controls used to enable save/load of FRED MSRs. Tested-by: Shan Kang Signed-off-by: Xin Li --- scripts/kvm/vmxcap | 3 +++ target/i386/cpu.c | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/scripts/kvm/vmxcap b/scripts/kvm/vmxcap index 7da1e00ca8..44898d73c2 100755 --- a/scripts/kvm/vmxcap +++ b/scripts/kvm/vmxcap @@ -229,6 +229,8 @@ controls =3D [ Allowed1Control( name =3D 'secondary VM-Exit controls', bits =3D { + 0: 'Save IA32 FRED MSRs', + 1: 'Load IA32 FRED MSRs', }, cap_msr =3D MSR_IA32_VMX_EXIT_CTLS2, ), @@ -246,6 +248,7 @@ controls =3D [ 16: 'Load IA32_BNDCFGS', 17: 'Conceal VM entries from PT', 18: 'Load IA32_RTIT_CTL', + 23: 'Load IA32 FRED MSRs', }, cap_msr =3D MSR_IA32_VMX_ENTRY_CTLS, true_cap_msr =3D MSR_IA32_VMX_TRUE_ENTRY_CTLS, diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 227ee1c759..dcf914a7ec 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -1285,7 +1285,7 @@ FeatureWordInfo feature_word_info[FEATURE_WORDS] =3D { NULL, "vmx-entry-ia32e-mode", NULL, NULL, NULL, "vmx-entry-load-perf-global-ctrl", "vmx-entry-load-pat",= "vmx-entry-load-efer", "vmx-entry-load-bndcfgs", NULL, "vmx-entry-load-rtit-ctl", NUL= L, - NULL, NULL, "vmx-entry-load-pkrs", NULL, + NULL, NULL, "vmx-entry-load-pkrs", "vmx-entry-load-fred", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, }, --=20 2.42.0 From nobody Wed May 15 08:32:23 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1699516309; cv=none; d=zohomail.com; s=zohoarc; b=Z05VXtBo3nwuxVI7gEe/WeJZVtlf4soI4pXM8h6mSTNvPvA6EJVowl45g6QgtcpIO9DG/pKXeAtgWxIyH5II2bOVK4nRnAY9sOBoOE/FYE5sf+oE1dbslIsRGdGWLAqP8Q3EtpqPFJxR8nD3ET8ku+AF2tKuIRmID4MdsygkZ3g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1699516309; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=CbtQmR9bICX822Jb/V/e7k8/i/AAkSzjJAn4VrJePl8=; b=J3TSCvsa7cFPKVl87XVF58kssFt3OJnVEh281glHhOw7dyIxR17TusIiOvaCesmAmGFSI5STAlLB9NSEF1zhT+2lVxc4h2la1L7AO5EVZ8egcRiyChBWqaZFWpHynSvpTf3SDJepcQ3keOHswF0xrlU8erLIMVDIlxPAxJvoq78= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1699516309612567.4383186354885; Wed, 8 Nov 2023 23:51:49 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1r0zoN-0007L5-HN; Thu, 09 Nov 2023 02:50:47 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1r0zoK-0007Jy-RN for qemu-devel@nongnu.org; Thu, 09 Nov 2023 02:50:44 -0500 Received: from mgamail.intel.com ([192.55.52.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1r0zoJ-0001o2-Ax for qemu-devel@nongnu.org; Thu, 09 Nov 2023 02:50:44 -0500 Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Nov 2023 23:50:23 -0800 Received: from unknown (HELO fred..) ([172.25.112.68]) by orsmga002.jf.intel.com with ESMTP; 08 Nov 2023 23:50:23 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1699516243; x=1731052243; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=MbIfcTx5Jpa1uax7o3pELRo6a1v5BYZchyQrtHIxi40=; b=UzMSyTc9RbV0pXEjBIzTa/JotSStfYqSL7qTwiWgtEgLwoVoV8hGc/Cx 08aqXvgyZIfzBxh1BIUGYs2BReU04xw3RD0Fon+REMi2ruAdwVz4+vgbz pqWPXk6qtSfa4xHttNcAGmk3h6JRjLX9F8ERl/IJc1khGYwW2JZlRSZT4 rjOzE2pchlIofyhL88cNN5d2G7x8Jr7a79/1Yvmv7GOUOQ5scsbd4pERF 5N2jf+xwlZ0D7YmS6rUAQDPZBEMk8lbYsVzEnhpPmlRfMTmIpG/rPC2E3 tmnGaCtI1UITm6IjHOp2uLCOuK4Em4Brqdqx4o8sBGqTMfrNTXDADThmL A==; X-IronPort-AV: E=McAfee;i="6600,9927,10888"; a="476165162" X-IronPort-AV: E=Sophos;i="6.03,288,1694761200"; d="scan'208";a="476165162" X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10888"; a="763329289" X-IronPort-AV: E=Sophos;i="6.03,288,1694761200"; d="scan'208";a="763329289" From: Xin Li To: qemu-devel@nongnu.org Cc: kvm@vger.kernel.org, richard.henderson@linaro.org, pbonzini@redhat.com, eduardo@habkost.net, seanjc@google.com, chao.gao@intel.com, hpa@zytor.com, xiaoyao.li@intel.com, weijiang.yang@intel.com Subject: [PATCH v3 5/6] target/i386: enumerate VMX nested-exception support Date: Wed, 8 Nov 2023 23:20:11 -0800 Message-ID: <20231109072012.8078-6-xin3.li@intel.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231109072012.8078-1-xin3.li@intel.com> References: <20231109072012.8078-1-xin3.li@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=192.55.52.43; envelope-from=xin3.li@intel.com; helo=mgamail.intel.com X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @intel.com) X-ZM-MESSAGEID: 1699516310939100001 Content-Type: text/plain; charset="utf-8" Allow VMX nested-exception support to be exposed in KVM guests, thus nested KVM guests can enumerate it. Tested-by: Shan Kang Signed-off-by: Xin Li --- scripts/kvm/vmxcap | 1 + target/i386/cpu.c | 1 + target/i386/cpu.h | 1 + 3 files changed, 3 insertions(+) diff --git a/scripts/kvm/vmxcap b/scripts/kvm/vmxcap index 44898d73c2..508be19c75 100755 --- a/scripts/kvm/vmxcap +++ b/scripts/kvm/vmxcap @@ -117,6 +117,7 @@ controls =3D [ 54: 'INS/OUTS instruction information', 55: 'IA32_VMX_TRUE_*_CTLS support', 56: 'Skip checks on event error code', + 58: 'VMX nested exception support', }, msr =3D MSR_IA32_VMX_BASIC, ), diff --git a/target/i386/cpu.c b/target/i386/cpu.c index dcf914a7ec..f7556621a5 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -1343,6 +1343,7 @@ FeatureWordInfo feature_word_info[FEATURE_WORDS] =3D { [54] =3D "vmx-ins-outs", [55] =3D "vmx-true-ctls", [56] =3D "vmx-any-errcode", + [58] =3D "vmx-nested-exception", }, .msr =3D { .index =3D MSR_IA32_VMX_BASIC, diff --git a/target/i386/cpu.h b/target/i386/cpu.h index a4d3702621..cc3b4fefb8 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -1054,6 +1054,7 @@ uint64_t x86_cpu_get_supported_feature_word(FeatureWo= rd w, #define MSR_VMX_BASIC_INS_OUTS (1ULL << 54) #define MSR_VMX_BASIC_TRUE_CTLS (1ULL << 55) #define MSR_VMX_BASIC_ANY_ERRCODE (1ULL << 56) +#define MSR_VMX_BASIC_NESTED_EXCEPTION (1ULL << 58) =20 #define MSR_VMX_MISC_PREEMPTION_TIMER_SHIFT_MASK 0x1Full #define MSR_VMX_MISC_STORE_LMA (1ULL << 5) --=20 2.42.0 From nobody Wed May 15 08:32:23 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1699516288; cv=none; d=zohomail.com; s=zohoarc; b=Nq9KBCgCXylJWRCoFPvhEV4s5C4aM87tp+cER5EcnIbnoFN32wdMuA0N4io5u2qpEEJK12O8HoyglEeFdNa2EyH8ps+83lblUuqKuHjASi5FlGrnNldGEu3DSm9Rv1IxcBvZrYiRdbyis6f7HSKzVkARoUEXapSDgGHg3XjsR2Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1699516288; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=95I8hvptqzFJwtjmxkT2QVdNtzFOAScAqhzrh+T7maA=; b=XXpNRfi5A+PyE8Y90RyZ3O7upBiZ+L2jhXSPriie/c3I2ASnRfd+xKI56v2w69ojBLv5GU5sELAMrYd84cn+0KqRYH5a/tZAlIs7OBgGpMQTexMf/+HxunDVX/1X5z40ZURpbln7qnoE4EZS7Vo+uRlDqInyPEIjV8GrdMkci5c= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1699516288062464.8352055230848; Wed, 8 Nov 2023 23:51:28 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1r0zoN-0007L4-7w; Thu, 09 Nov 2023 02:50:47 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1r0zoL-0007KZ-AZ for qemu-devel@nongnu.org; Thu, 09 Nov 2023 02:50:45 -0500 Received: from mgamail.intel.com ([192.55.52.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1r0zoJ-0001sR-CC for qemu-devel@nongnu.org; Thu, 09 Nov 2023 02:50:45 -0500 Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Nov 2023 23:50:23 -0800 Received: from unknown (HELO fred..) ([172.25.112.68]) by orsmga002.jf.intel.com with ESMTP; 08 Nov 2023 23:50:23 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1699516243; x=1731052243; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=qS2divpzlg34Mgdu79EblBhmAA77ycjlMQsD+syQIDc=; b=c+eYrwkPbKGA0VDj6zA2+jxICh25aPG8hcwdLLaFUbA4dOh9on4BSrG9 E+vYS+YLW0/jl4zODmsX2EIfAeqYPjvGcrqIQPnrA6VyZb85U+2H16P4Q 5s9pKGMDYQWEArgaOo3be6o+eXP844EjKEPokixfs4fD8ml2FkZ81nls8 3KVfbJ+U7QLLDbm1S5hxSbATebjcozJbk4KhDoqr/unoaeO5GbxZ/V9XQ bGNpqb9t+l3Ws7cd3HXGAHQy7COE0BZ+kSb4eKxx2znzBjMHrRr2vMSq3 nzS0B9YJQEYmTdmSIb2Y91b/nyDDIzTCTcKTmis4YWetzw7fzatKyWBmn A==; X-IronPort-AV: E=McAfee;i="6600,9927,10888"; a="476165170" X-IronPort-AV: E=Sophos;i="6.03,288,1694761200"; d="scan'208";a="476165170" X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10888"; a="763329295" X-IronPort-AV: E=Sophos;i="6.03,288,1694761200"; d="scan'208";a="763329295" From: Xin Li To: qemu-devel@nongnu.org Cc: kvm@vger.kernel.org, richard.henderson@linaro.org, pbonzini@redhat.com, eduardo@habkost.net, seanjc@google.com, chao.gao@intel.com, hpa@zytor.com, xiaoyao.li@intel.com, weijiang.yang@intel.com Subject: [PATCH v3 6/6] target/i386: Add get/set/migrate support for FRED MSRs Date: Wed, 8 Nov 2023 23:20:12 -0800 Message-ID: <20231109072012.8078-7-xin3.li@intel.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231109072012.8078-1-xin3.li@intel.com> References: <20231109072012.8078-1-xin3.li@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=192.55.52.43; envelope-from=xin3.li@intel.com; helo=mgamail.intel.com X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @intel.com) X-ZM-MESSAGEID: 1699516289081100005 Content-Type: text/plain; charset="utf-8" FRED CPU states are managed in 9 new FRED MSRs, in addtion to a few existing CPU registers and MSRs, e.g., CR4.FRED and MSR_IA32_PL0_SSP. Save/restore/migrate FRED MSRs if FRED is exposed to the guest. Tested-by: Shan Kang Signed-off-by: Xin Li --- target/i386/cpu.h | 22 +++++++++++++++++++ target/i386/kvm/kvm.c | 49 +++++++++++++++++++++++++++++++++++++++++++ target/i386/machine.c | 28 +++++++++++++++++++++++++ 3 files changed, 99 insertions(+) diff --git a/target/i386/cpu.h b/target/i386/cpu.h index cc3b4fefb8..3b13eceffe 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -529,6 +529,17 @@ typedef enum X86Seg { #define MSR_IA32_XFD 0x000001c4 #define MSR_IA32_XFD_ERR 0x000001c5 =20 +/* FRED MSRs */ +#define MSR_IA32_FRED_RSP0 0x000001cc /* Stack level 0 = regular stack pointer */ +#define MSR_IA32_FRED_RSP1 0x000001cd /* Stack level 1 = regular stack pointer */ +#define MSR_IA32_FRED_RSP2 0x000001ce /* Stack level 2 = regular stack pointer */ +#define MSR_IA32_FRED_RSP3 0x000001cf /* Stack level 3 = regular stack pointer */ +#define MSR_IA32_FRED_STKLVLS 0x000001d0 /* FRED exception= stack levels */ +#define MSR_IA32_FRED_SSP1 0x000001d1 /* Stack level 1 = shadow stack pointer in ring 0 */ +#define MSR_IA32_FRED_SSP2 0x000001d2 /* Stack level 2 = shadow stack pointer in ring 0 */ +#define MSR_IA32_FRED_SSP3 0x000001d3 /* Stack level 3 = shadow stack pointer in ring 0 */ +#define MSR_IA32_FRED_CONFIG 0x000001d4 /* FRED Entrypoin= t and interrupt stack level */ + #define MSR_IA32_BNDCFGS 0x00000d90 #define MSR_IA32_XSS 0x00000da0 #define MSR_IA32_UMWAIT_CONTROL 0xe1 @@ -1687,6 +1698,17 @@ typedef struct CPUArchState { target_ulong cstar; target_ulong fmask; target_ulong kernelgsbase; + + /* FRED MSRs */ + uint64_t fred_rsp0; + uint64_t fred_rsp1; + uint64_t fred_rsp2; + uint64_t fred_rsp3; + uint64_t fred_stklvls; + uint64_t fred_ssp1; + uint64_t fred_ssp2; + uint64_t fred_ssp3; + uint64_t fred_config; #endif =20 uint64_t tsc_adjust; diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c index 11b8177eff..101ff63805 100644 --- a/target/i386/kvm/kvm.c +++ b/target/i386/kvm/kvm.c @@ -3309,6 +3309,17 @@ static int kvm_put_msrs(X86CPU *cpu, int level) kvm_msr_entry_add(cpu, MSR_KERNELGSBASE, env->kernelgsbase); kvm_msr_entry_add(cpu, MSR_FMASK, env->fmask); kvm_msr_entry_add(cpu, MSR_LSTAR, env->lstar); + if (env->features[FEAT_7_1_EAX] & CPUID_7_1_EAX_FRED) { + kvm_msr_entry_add(cpu, MSR_IA32_FRED_RSP0, env->fred_rsp0); + kvm_msr_entry_add(cpu, MSR_IA32_FRED_RSP1, env->fred_rsp1); + kvm_msr_entry_add(cpu, MSR_IA32_FRED_RSP2, env->fred_rsp2); + kvm_msr_entry_add(cpu, MSR_IA32_FRED_RSP3, env->fred_rsp3); + kvm_msr_entry_add(cpu, MSR_IA32_FRED_STKLVLS, env->fred_stklvl= s); + kvm_msr_entry_add(cpu, MSR_IA32_FRED_SSP1, env->fred_ssp1); + kvm_msr_entry_add(cpu, MSR_IA32_FRED_SSP2, env->fred_ssp2); + kvm_msr_entry_add(cpu, MSR_IA32_FRED_SSP3, env->fred_ssp3); + kvm_msr_entry_add(cpu, MSR_IA32_FRED_CONFIG, env->fred_config); + } } #endif =20 @@ -3773,6 +3784,17 @@ static int kvm_get_msrs(X86CPU *cpu) kvm_msr_entry_add(cpu, MSR_KERNELGSBASE, 0); kvm_msr_entry_add(cpu, MSR_FMASK, 0); kvm_msr_entry_add(cpu, MSR_LSTAR, 0); + if (env->features[FEAT_7_1_EAX] & CPUID_7_1_EAX_FRED) { + kvm_msr_entry_add(cpu, MSR_IA32_FRED_RSP0, 0); + kvm_msr_entry_add(cpu, MSR_IA32_FRED_RSP1, 0); + kvm_msr_entry_add(cpu, MSR_IA32_FRED_RSP2, 0); + kvm_msr_entry_add(cpu, MSR_IA32_FRED_RSP3, 0); + kvm_msr_entry_add(cpu, MSR_IA32_FRED_STKLVLS, 0); + kvm_msr_entry_add(cpu, MSR_IA32_FRED_SSP1, 0); + kvm_msr_entry_add(cpu, MSR_IA32_FRED_SSP2, 0); + kvm_msr_entry_add(cpu, MSR_IA32_FRED_SSP3, 0); + kvm_msr_entry_add(cpu, MSR_IA32_FRED_CONFIG, 0); + } } #endif kvm_msr_entry_add(cpu, MSR_KVM_SYSTEM_TIME, 0); @@ -3994,6 +4016,33 @@ static int kvm_get_msrs(X86CPU *cpu) case MSR_LSTAR: env->lstar =3D msrs[i].data; break; + case MSR_IA32_FRED_RSP0: + env->fred_rsp0 =3D msrs[i].data; + break; + case MSR_IA32_FRED_RSP1: + env->fred_rsp1 =3D msrs[i].data; + break; + case MSR_IA32_FRED_RSP2: + env->fred_rsp2 =3D msrs[i].data; + break; + case MSR_IA32_FRED_RSP3: + env->fred_rsp3 =3D msrs[i].data; + break; + case MSR_IA32_FRED_STKLVLS: + env->fred_stklvls =3D msrs[i].data; + break; + case MSR_IA32_FRED_SSP1: + env->fred_ssp1 =3D msrs[i].data; + break; + case MSR_IA32_FRED_SSP2: + env->fred_ssp2 =3D msrs[i].data; + break; + case MSR_IA32_FRED_SSP3: + env->fred_ssp3 =3D msrs[i].data; + break; + case MSR_IA32_FRED_CONFIG: + env->fred_config =3D msrs[i].data; + break; #endif case MSR_IA32_TSC: env->tsc =3D msrs[i].data; diff --git a/target/i386/machine.c b/target/i386/machine.c index a1041ef828..850a19cb8e 100644 --- a/target/i386/machine.c +++ b/target/i386/machine.c @@ -1544,6 +1544,33 @@ static const VMStateDescription vmstate_msr_xfd =3D { }; =20 #ifdef TARGET_X86_64 +static bool intel_fred_msrs_needed(void *opaque) +{ + X86CPU *cpu =3D opaque; + CPUX86State *env =3D &cpu->env; + + return !!(env->features[FEAT_7_1_EAX] & CPUID_7_1_EAX_FRED); +} + +static const VMStateDescription vmstate_msr_fred =3D { + .name =3D "cpu/fred", + .version_id =3D 1, + .minimum_version_id =3D 1, + .needed =3D intel_fred_msrs_needed, + .fields =3D (VMStateField[]) { + VMSTATE_UINT64(env.fred_rsp0, X86CPU), + VMSTATE_UINT64(env.fred_rsp1, X86CPU), + VMSTATE_UINT64(env.fred_rsp2, X86CPU), + VMSTATE_UINT64(env.fred_rsp3, X86CPU), + VMSTATE_UINT64(env.fred_stklvls, X86CPU), + VMSTATE_UINT64(env.fred_ssp1, X86CPU), + VMSTATE_UINT64(env.fred_ssp2, X86CPU), + VMSTATE_UINT64(env.fred_ssp3, X86CPU), + VMSTATE_UINT64(env.fred_config, X86CPU), + VMSTATE_END_OF_LIST() + } + }; + static bool amx_xtile_needed(void *opaque) { X86CPU *cpu =3D opaque; @@ -1747,6 +1774,7 @@ const VMStateDescription vmstate_x86_cpu =3D { &vmstate_pdptrs, &vmstate_msr_xfd, #ifdef TARGET_X86_64 + &vmstate_msr_fred, &vmstate_amx_xtile, #endif &vmstate_arch_lbr, --=20 2.42.0