From patchwork Fri Sep 15 20:54:30 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Lendacky X-Patchwork-Id: 140933 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:172:b0:3f2:4152:657d with SMTP id h50csp1474556vqi; Fri, 15 Sep 2023 21:37:18 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGyGon7v7hnUjQcL+pIi4h7pCO3uDQfrm0nW60hm61AOoYpyrzXtycF7miERAvsWf4qyjNp X-Received: by 2002:a17:902:eaca:b0:1c3:a2ea:64cb with SMTP id p10-20020a170902eaca00b001c3a2ea64cbmr3407241pld.53.1694839037863; Fri, 15 Sep 2023 21:37:17 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1694839037; cv=pass; d=google.com; s=arc-20160816; b=QZOYThRbHmNWv3P6RViQXa1kUTURufICoeUAc45kDiTiK7w13M6fQCqN1z+JDLyQ/M Tg23k7u5x2XmMslSpo6g21SiX4blgpXTw2NWYeepnvi5c6o6RCIpuQj9kNlf3vSQUohB ub6flXAHGm4RP5O2QU84EIlkUqc0B46grxsuCnEqC0iJnbZFWUT72sMF4jtUMVa/TFFF UZGMAqTIM90eMWXMQDmxddoqXL5BRnmNadhPHP8z3AdEFjZ4MCzBhazwgoO6plbsyuAV UKT5usDdZIJHDh9heEY9Ftgop8Qbai0slfpgtEEXeypj1FfAqZcRXb7NJaME/qztWaeu LWcA== ARC-Message-Signature: i=2; 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=ypRz3TDdthS8Oo/+VOtP2YEf2xCorkTVSGttuN/Vusk=; fh=nraIGUByMO9TeTqtnjpfkxT3+9PIiP6QcjmYSUCVuSc=; b=j6ySAKvwkHEiwr5WsBuspENhM9vcqUE+MNSkZoARDrWnWHwgC0kDwzxrrLhgY5qYqC X1s2W+f5b08swKCG38mY0Owrtm99fMSM1j2YZqcTgV6VKNJ9G2DEy5wo6xeZ77W0goIl 5BoQwYU8SdQb8w32bOfK7CXcoKbXwa84emjpwco9MdSraAkYdySyBKF1SEd3tfCeYmHt mIhVB7WnHQKufa9432TDiTF2bLrpgHMopoiGknAPy5sqkkYWJHeTzwkEHDnFIGEX06hJ h3iFxaBAMAGpdCOsJIxOnWnLq3M5BPWC529xLfw8DyPe27qbpKBW3JBSA1cd12585M+b uIiw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amd.com header.s=selector1 header.b=ZqKqJKTP; arc=pass (i=1 spf=pass spfdomain=amd.com dmarc=pass fromdomain=amd.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amd.com Received: from snail.vger.email (snail.vger.email. [2620:137:e000::3:7]) by mx.google.com with ESMTPS id l20-20020a170903005400b001c4352c2c9esi1937151pla.160.2023.09.15.21.37.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 Sep 2023 21:37:17 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) client-ip=2620:137:e000::3:7; Authentication-Results: mx.google.com; dkim=pass header.i=@amd.com header.s=selector1 header.b=ZqKqJKTP; arc=pass (i=1 spf=pass spfdomain=amd.com dmarc=pass fromdomain=amd.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amd.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 5767481DC790; Fri, 15 Sep 2023 13:58:38 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237796AbjIOU6Q (ORCPT + 29 others); Fri, 15 Sep 2023 16:58:16 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42116 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237842AbjIOU54 (ORCPT ); Fri, 15 Sep 2023 16:57:56 -0400 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2058.outbound.protection.outlook.com [40.107.92.58]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id ED6BC3A84; Fri, 15 Sep 2023 13:55:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ihct4oJ2/m4JmNFxN8w6XTFnF63fF0PLv3WKRr4VQODcpChAwn3cWqJ/FE5GanKz24xIkz0+Z/w86J0iwiS9NyQp09nVeZa6gPLugpnB9MaqFxIhL+U905uCb29ajOxkrfidgCvcv2+wdemJeO0/xi3gl3t5qGb7VoH6Y88y7BWYm1mngw27eHLEDZTOesy9Xfi/LwpO6OcfalV7MCJFgIBc6n76sqFCBiIYFAjOrREVOLvtv3F1/8iMAdMJefbnSmME4X4Cee8U5vvpTtqND/BziKcwfdOMyulgmfI2DUwojyrt5Vn63CAEN+t3d+vf1Ab4nTh/wbnWJQCNC7TpUg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ypRz3TDdthS8Oo/+VOtP2YEf2xCorkTVSGttuN/Vusk=; b=g/qcNHMPKPbgxJV2D1mBx2W1kK19Ld+DgA0aPVueXogqnRHmAuozbGyDZ9+P52DRQYWZYasui3Nha8nksa56RXDyILeGsXxeKNkEsbYrmcr2Tj33mlwUOwkfj8fyyd7gaMkf2pqqb0bMA4T8JRKLX8BOvncdmzp78EgagrulvIAvD1fCYrUcwqQ16RG3D15/UIqP5wEw/e4fmk8OY2piAdEz79pEfyVGkQ+guK3jMVb1CuYxrXLvwTD8qGlNIgFCT/WiBO54tCL+AzeNTq3Nf/HTRHhmHLvs5eSOg3iBILxgxmRGNEY+YWNM8qJ6CM6ftWwFJiaIturdPMccacqljA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ypRz3TDdthS8Oo/+VOtP2YEf2xCorkTVSGttuN/Vusk=; b=ZqKqJKTPVN4Rt9sfLzXwRsY01GrczISQ3IA+Xtod2McE9m17kyJloG17wtq8qO70jj+mkZXsr3E5uedliNjVoj4xECCqdi8mlAMYza35GOczGgMr7HPpxLCGCOZG3wQEY8cdR4aRnK7Qs/woNaLmy8S75G9V7a2QGGSrJkbCN0s= Received: from DM6PR06CA0001.namprd06.prod.outlook.com (2603:10b6:5:120::14) by LV2PR12MB5989.namprd12.prod.outlook.com (2603:10b6:408:171::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6792.21; Fri, 15 Sep 2023 20:54:54 +0000 Received: from CY4PEPF0000EE32.namprd05.prod.outlook.com (2603:10b6:5:120:cafe::9e) by DM6PR06CA0001.outlook.office365.com (2603:10b6:5:120::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6792.21 via Frontend Transport; Fri, 15 Sep 2023 20:54:53 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by CY4PEPF0000EE32.mail.protection.outlook.com (10.167.242.38) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.6792.20 via Frontend Transport; Fri, 15 Sep 2023 20:54:53 +0000 Received: from tlendack-t1.amdoffice.net (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Fri, 15 Sep 2023 15:54:52 -0500 From: Tom Lendacky To: , , CC: Paolo Bonzini , Sean Christopherson , Borislav Petkov , Dave Hansen , Ingo Molnar , "Thomas Gleixner" , Babu Moger Subject: [PATCH v2 1/3] KVM: SVM: Fix TSC_AUX virtualization setup Date: Fri, 15 Sep 2023 15:54:30 -0500 Message-ID: <4137fbcb9008951ab5f0befa74a0399d2cce809a.1694811272.git.thomas.lendacky@amd.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: References: MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY4PEPF0000EE32:EE_|LV2PR12MB5989:EE_ X-MS-Office365-Filtering-Correlation-Id: 92ab51ed-50f0-4ade-aa85-08dbb62e02fd X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 8AXzi1wbhdFmwNeG/1Gib/cnQyJ659PnTCtHEtGRxhUt9XSbo8v/HlLR3fqUCWCNVe7hTz62Vy8nSRPLuWbXHbPdi2aEMzwMJKPnr2ux0ud9Idvc6258WCfYtgUtR/OmblQkyY2EWXBIBq95fvUqCoH24xqcVahGCcV7gGwhnoeRzBI7i4dT2mxTi9U/fdPz994qQv5UqsyhdG08cfRAOcZIwPLIr2YdCG1ycC2N75LZ0if6byTsCe16HEGzW6ICEKSDwBZYrYNBgMIe48bSxt5voTwufjOQL6Ss9QjJ+xzNoQo3bJUGBKlSPW+6o6n+/mZIlnUpImhyXshIQyNSC+qduT9h9nYXrEpWKzhPujGWaI9Cy5jmBtPSrzERSOmblL23ETB9xAd0QisFuJzCjPKzfjf9oM7MNLbkRw4KiwfBmkckM+wAyMjoP+kZc4ngQVmcrEi2WMg8nwGmH68PL7gxOipR/qB13v2DNwKYLxq7vnl/fjdmEtwYEDgBO5ZbwUSfcaHwslyv6+VH4ohG6HYb1aSyW2Ld751JbbwlgczD+Iy3lxKfelJFxnd5157pcsMZOD0hIENn3DHLpKPd3dEZAic9+z5UvNuSEWa6pmmHIoIBkaFrd3/6UhHUdkkIZXxQjqnUJ62joNfzYZ8N3jB7hJKuL/8Y8lLszyKrf2YB/EaK2OVpxCOZf4eG3PQzxnDCukjoH8abPr6+9A36L2sDv2ZaBoCEcKRs55aQ44dmnHvrfoo0eYyjK03SYPXN96wbzSvU65oBHNLvvwl/ARm6GxeuOTziu7DFQc0917s= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(376002)(136003)(346002)(39860400002)(396003)(82310400011)(451199024)(186009)(1800799009)(40470700004)(36840700001)(46966006)(6666004)(478600001)(5660300002)(4326008)(83380400001)(26005)(2616005)(426003)(336012)(2906002)(316002)(70586007)(70206006)(16526019)(54906003)(41300700001)(110136005)(8936002)(8676002)(47076005)(40460700003)(356005)(82740400003)(36860700001)(36756003)(40480700001)(86362001)(81166007)(36900700001)(309714004);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Sep 2023 20:54:53.7049 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 92ab51ed-50f0-4ade-aa85-08dbb62e02fd X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CY4PEPF0000EE32.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV2PR12MB5989 X-Spam-Status: No, score=-1.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FORGED_SPF_HELO, RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE autolearn=no 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-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Fri, 15 Sep 2023 13:58:38 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1777167538566751718 X-GMAIL-MSGID: 1777167538566751718 The checks for virtualizing TSC_AUX occur during the vCPU reset processing path. However, at the time of initial vCPU reset processing, when the vCPU is first created, not all of the guest CPUID information has been set. In this case the RDTSCP and RDPID feature support for the guest is not in place and so TSC_AUX virtualization is not established. This continues for each vCPU created for the guest. On the first boot of an AP, vCPU reset processing is executed as a result of an APIC INIT event, this time with all of the guest CPUID information set, resulting in TSC_AUX virtualization being enabled, but only for the APs. The BSP always sees a TSC_AUX value of 0 which probably went unnoticed because, at least for Linux, the BSP TSC_AUX value is 0. Move the TSC_AUX virtualization enablement out of the init_vmcb() path and into the vcpu_after_set_cpuid() path to allow for proper initialization of the support after the guest CPUID information has been set. Fixes: 296d5a17e793 ("KVM: SEV-ES: Use V_TSC_AUX if available instead of RDTSC/MSR_TSC_AUX intercepts") Signed-off-by: Tom Lendacky --- arch/x86/kvm/svm/sev.c | 35 +++++++++++++++++++++++++++-------- arch/x86/kvm/svm/svm.c | 9 ++------- arch/x86/kvm/svm/svm.h | 1 + 3 files changed, 30 insertions(+), 15 deletions(-) diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c index b9a0a939d59f..4ac01f338903 100644 --- a/arch/x86/kvm/svm/sev.c +++ b/arch/x86/kvm/svm/sev.c @@ -2962,6 +2962,33 @@ int sev_es_string_io(struct vcpu_svm *svm, int size, unsigned int port, int in) count, in); } +static void sev_es_vcpu_after_set_cpuid(struct vcpu_svm *svm) +{ + struct kvm_vcpu *vcpu = &svm->vcpu; + + if (boot_cpu_has(X86_FEATURE_V_TSC_AUX) && + (guest_cpuid_has(vcpu, X86_FEATURE_RDTSCP) || + guest_cpuid_has(vcpu, X86_FEATURE_RDPID))) { + set_msr_interception(vcpu, svm->msrpm, MSR_TSC_AUX, 1, 1); + if (guest_cpuid_has(vcpu, X86_FEATURE_RDTSCP)) + svm_clr_intercept(svm, INTERCEPT_RDTSCP); + } +} + +void sev_vcpu_after_set_cpuid(struct vcpu_svm *svm) +{ + struct kvm_vcpu *vcpu = &svm->vcpu; + struct kvm_cpuid_entry2 *best; + + /* For sev guests, the memory encryption bit is not reserved in CR3. */ + best = kvm_find_cpuid_entry(vcpu, 0x8000001F); + if (best) + vcpu->arch.reserved_gpa_bits &= ~(1UL << (best->ebx & 0x3f)); + + if (sev_es_guest(svm->vcpu.kvm)) + sev_es_vcpu_after_set_cpuid(svm); +} + static void sev_es_init_vmcb(struct vcpu_svm *svm) { struct vmcb *vmcb = svm->vmcb01.ptr; @@ -3024,14 +3051,6 @@ static void sev_es_init_vmcb(struct vcpu_svm *svm) set_msr_interception(vcpu, svm->msrpm, MSR_IA32_LASTBRANCHTOIP, 1, 1); set_msr_interception(vcpu, svm->msrpm, MSR_IA32_LASTINTFROMIP, 1, 1); set_msr_interception(vcpu, svm->msrpm, MSR_IA32_LASTINTTOIP, 1, 1); - - if (boot_cpu_has(X86_FEATURE_V_TSC_AUX) && - (guest_cpuid_has(&svm->vcpu, X86_FEATURE_RDTSCP) || - guest_cpuid_has(&svm->vcpu, X86_FEATURE_RDPID))) { - set_msr_interception(vcpu, svm->msrpm, MSR_TSC_AUX, 1, 1); - if (guest_cpuid_has(&svm->vcpu, X86_FEATURE_RDTSCP)) - svm_clr_intercept(svm, INTERCEPT_RDTSCP); - } } void sev_init_vmcb(struct vcpu_svm *svm) diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c index f283eb47f6ac..aef1ddf0b705 100644 --- a/arch/x86/kvm/svm/svm.c +++ b/arch/x86/kvm/svm/svm.c @@ -4284,7 +4284,6 @@ static bool svm_has_emulated_msr(struct kvm *kvm, u32 index) static void svm_vcpu_after_set_cpuid(struct kvm_vcpu *vcpu) { struct vcpu_svm *svm = to_svm(vcpu); - struct kvm_cpuid_entry2 *best; /* * SVM doesn't provide a way to disable just XSAVES in the guest, KVM @@ -4328,12 +4327,8 @@ static void svm_vcpu_after_set_cpuid(struct kvm_vcpu *vcpu) set_msr_interception(vcpu, svm->msrpm, MSR_IA32_FLUSH_CMD, 0, !!guest_cpuid_has(vcpu, X86_FEATURE_FLUSH_L1D)); - /* For sev guests, the memory encryption bit is not reserved in CR3. */ - if (sev_guest(vcpu->kvm)) { - best = kvm_find_cpuid_entry(vcpu, 0x8000001F); - if (best) - vcpu->arch.reserved_gpa_bits &= ~(1UL << (best->ebx & 0x3f)); - } + if (sev_guest(vcpu->kvm)) + sev_vcpu_after_set_cpuid(svm); init_vmcb_after_set_cpuid(vcpu); } diff --git a/arch/x86/kvm/svm/svm.h b/arch/x86/kvm/svm/svm.h index f41253958357..be67ab7fdd10 100644 --- a/arch/x86/kvm/svm/svm.h +++ b/arch/x86/kvm/svm/svm.h @@ -684,6 +684,7 @@ void __init sev_hardware_setup(void); void sev_hardware_unsetup(void); int sev_cpu_init(struct svm_cpu_data *sd); void sev_init_vmcb(struct vcpu_svm *svm); +void sev_vcpu_after_set_cpuid(struct vcpu_svm *svm); void sev_free_vcpu(struct kvm_vcpu *vcpu); int sev_handle_vmgexit(struct kvm_vcpu *vcpu); int sev_es_string_io(struct vcpu_svm *svm, int size, unsigned int port, int in); From patchwork Fri Sep 15 20:54:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Lendacky X-Patchwork-Id: 140910 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:172:b0:3f2:4152:657d with SMTP id h50csp1457695vqi; Fri, 15 Sep 2023 20:33:49 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHHmbBjnnkP28q8OMFstBOAAivQWnDRbgcBBIGbMSvg+Ot05RXom7W3cnUPsUUvnE+JpLjB X-Received: by 2002:a17:903:1103:b0:1b9:e241:ad26 with SMTP id n3-20020a170903110300b001b9e241ad26mr4439836plh.9.1694835229386; Fri, 15 Sep 2023 20:33:49 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1694835229; cv=pass; d=google.com; s=arc-20160816; b=dqcQ7el1goErv56XWL0Lx+L2dTc8+71x1yPL3SUNRFT7vT4gO9BUr+MDI8TGjnlzwX ErS33WzxOFqUPe+kt2yLvs+rq+xBFR7u4I1TOre4c+YvCA1sl8rRMeY4QYm7ieQdnFsb c/Z+p/Uc4DkSHs2s8CRqGKX3KkumnTe7+rG1bs3YIpmbV+EEdSX73vV1zt7AS/upz8jv bu9XCKPLj0m28OilloqL7RNBYJ1xVfPtWpL1spo9mVKEGLkeOeketANWg8bEkC+aThYd oAnkljUUPxC90uajruOYX7PbSQp1j/WM41V57oWs+Tzl3eg6w3FWt+uu4gW5DPjrZzR8 Rk/g== ARC-Message-Signature: i=2; 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=ucpoGINesSx39GPFnSjaQchwE+50SZes64Zaz4ovz98=; fh=nraIGUByMO9TeTqtnjpfkxT3+9PIiP6QcjmYSUCVuSc=; b=zQDSzuJGVg80H9SqIQHrqKWvrwdx7aNdZniRpf6XNfY9Z/9oYMJBGbLk+DNvurKilx uDG/URSGlMm9TtwnLC3ISTvf/0s5Wboshz1016olQMk1hVgq30CdOlFYbKTUaYSOHlUm vMUx/L2wXcXts4LoH8I/SoiHCI3m04Y+y3dSTp3V+7NXDGu9h+Hvl6jebP+9eztykJkM VeJkOli9mozR9oGJ6NvUpE56wKCiWhlB+8hm/CZYZMB3OasSLIuqsffCKCHDFMdOn1J9 tv6Y0HmG2/tciTT1ClauDiYipJc45vnpzlVGS3vMIWfeQlZzdjZu+GAzcBRvhkdyxf/z Ykrg== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amd.com header.s=selector1 header.b="Tedf1pi/"; arc=pass (i=1 spf=pass spfdomain=amd.com dmarc=pass fromdomain=amd.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amd.com Received: from groat.vger.email (groat.vger.email. [23.128.96.35]) by mx.google.com with ESMTPS id jx11-20020a170903138b00b001bd9d2e20absi4215240plb.230.2023.09.15.20.33.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 Sep 2023 20:33:49 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) client-ip=23.128.96.35; Authentication-Results: mx.google.com; dkim=pass header.i=@amd.com header.s=selector1 header.b="Tedf1pi/"; arc=pass (i=1 spf=pass spfdomain=amd.com dmarc=pass fromdomain=amd.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amd.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by groat.vger.email (Postfix) with ESMTP id D710C8376822; Fri, 15 Sep 2023 13:58:42 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at groat.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237661AbjIOU6G (ORCPT + 29 others); Fri, 15 Sep 2023 16:58:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33906 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237812AbjIOU5w (ORCPT ); Fri, 15 Sep 2023 16:57:52 -0400 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2040.outbound.protection.outlook.com [40.107.92.40]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B25A13C0A; Fri, 15 Sep 2023 13:55:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=acmRCGWK/TCMphp0mlFKSdWyHaimnbyuUogOznMdMm+8ZP5uZFrhOcYqZ9i7brOnlvBbC8YHfDr7W8eIWTC2r2/1cXgphK/Teu3YHLSXfOewNPXaIoEXoxGibkYkmI8UGf+FXir7aoB6lGSFuq3jfXTCRf840eThjHhO47vdtPuBFn6h4QHLXt23h4t61/IDMJ1jDht+PjXgrYRTZTwJy6C13woSg1A9FBUd9DwT49Q4uCOoZ6qjIKaUMQXmfVeKqq5WBG0V+ec8hUAvFZWf8T88WANPeAWTxYk2bIdihsDE7+Ypn5WuD28QT66Ke7d2q7n1wjRX6zHZt0OcGdGfgQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ucpoGINesSx39GPFnSjaQchwE+50SZes64Zaz4ovz98=; b=csDp8mEHR5t2hZUENeXwyWk2pKllmfDoR54r11uv3Xtn/Y7bjTLfPzfHZLGk6tFz8+hsPpIp1BCriOj2WShS+eYZopbnKgxXfgCwhDudUozdbsTzgiq/atESHY68iD9qwkh8+JLbJgVDAO8hY65ktapEV1ik11RSILH6YMDdd/+1M7hQLOmwhMDkt9aVf1DNNQYeOeJVmSJpZwTBMtO2yrFHzVgDkCeVWh64PUm4XmCj/N8OPBhCjYSvweUTO9CGpFd2AnhfbpvRjxWnwv+Ykui3ARosIUwr9eeGACABkQitkWwc2bQTzcL1BjHACXSUGaToYGOy8OCVy9tLd7k3uA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ucpoGINesSx39GPFnSjaQchwE+50SZes64Zaz4ovz98=; b=Tedf1pi/D0s/+tmwlF93LG0/35p43mqjP5QEZGJLaeZ8P/J4wPltcwE+BOP5jc8Or+JTuxEQG2Pj7vowxzH+qS49FQ+J/zRXvqWs8+WYaf7mNFnFox8X/dRbkVXjYOO9exPfJaTSbrONDo7buLMYuVT5cI/baD+E5OkBEYfFXnA= Received: from CY5P221CA0157.NAMP221.PROD.OUTLOOK.COM (2603:10b6:930:6a::29) by LV8PR12MB9181.namprd12.prod.outlook.com (2603:10b6:408:18d::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6768.35; Fri, 15 Sep 2023 20:55:02 +0000 Received: from CY4PEPF0000EE33.namprd05.prod.outlook.com (2603:10b6:930:6a:cafe::fb) by CY5P221CA0157.outlook.office365.com (2603:10b6:930:6a::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6792.21 via Frontend Transport; Fri, 15 Sep 2023 20:55:01 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by CY4PEPF0000EE33.mail.protection.outlook.com (10.167.242.39) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.6792.20 via Frontend Transport; Fri, 15 Sep 2023 20:55:01 +0000 Received: from tlendack-t1.amdoffice.net (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Fri, 15 Sep 2023 15:55:00 -0500 From: Tom Lendacky To: , , CC: Paolo Bonzini , Sean Christopherson , Borislav Petkov , Dave Hansen , Ingo Molnar , "Thomas Gleixner" , Babu Moger Subject: [PATCH v2 2/3] KVM: SVM: Fix TSC_AUX virtualization intercept update logic Date: Fri, 15 Sep 2023 15:54:31 -0500 Message-ID: X-Mailer: git-send-email 2.41.0 In-Reply-To: References: MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY4PEPF0000EE33:EE_|LV8PR12MB9181:EE_ X-MS-Office365-Filtering-Correlation-Id: f7798f41-e4e4-4561-576f-08dbb62e07da X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 4wNvwGFyEOetf+uuGh8gmSq6TxC/RoAdmKYvVZj8tmYh5RjW2ayJWCDlRoFbjZKSIqkSaQE1RNhJijxVMzAAkknhB/UNsccQQCLNoMZsDfNUpU8t0FoIfvub/KRmlK7xdBIqXwJz+QRsk2goCcoo1qjAgeFyPhVZhCbfypR5VwN9ck8R81XGinUzY3L//YQgUbQ6hwiiGKJ2k6+A6Vk+A6PjiuiKYnh2Gii3jVVWhQwWMfLHgtj6UeX7dIoZ4WcAMTS2bMBvbcwgPNKmH8q9B3oKYPlUgNiKydcLX+kJwe+3qmGTnfJHsTiNBxSPeGeFE2Pxfa8+Kn2IVZ78EVgre0mVQiUAZ3ySCM+f1ZCsKsnfjJOmPbzS1mo33mCVUAx7Aeagd6XBHGgXLF07qTPGvDw8nUgc4ONJHVT4KsJgwcexwyGg9KCddzeaboPXMgCUj21N07je1IGdlEmiDNjpBKVB0h9+/rax6VRhuLckjawBjgXhJSlx6Sz/Lmw99fNlEBqOrkYJ5MwKae7vtAgORc1o2AKKxG2d7DfLD/KLGMpW5yXc548dDrhMHIcQR+jmv3d9P4L0HYNavbyMhJPkHzYii+Vki66mNHRnOlfKJIvTwWfQOrDzbwOpEnDBpLId9qBuBX0Lr4To8RaAyh5L+asM8pnU7eR2hn33SHbbNS8JP3+5Cg9o7HzCacVBHkg1+FHqWGfXB44R8hnv0jpSvSkMZXr9cvXBE1FgItdVW5ptvH6wFwuu/um14u3op85AGo6YLj24AXILDLXWljGZEw== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(346002)(39860400002)(396003)(136003)(376002)(451199024)(82310400011)(1800799009)(186009)(46966006)(36840700001)(40470700004)(5660300002)(2616005)(8676002)(478600001)(36860700001)(6666004)(40460700003)(47076005)(426003)(83380400001)(16526019)(336012)(26005)(70206006)(54906003)(8936002)(4326008)(70586007)(110136005)(40480700001)(316002)(15650500001)(2906002)(86362001)(41300700001)(36756003)(81166007)(356005)(82740400003)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Sep 2023 20:55:01.8463 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f7798f41-e4e4-4561-576f-08dbb62e07da X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CY4PEPF0000EE33.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR12MB9181 X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on groat.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (groat.vger.email [0.0.0.0]); Fri, 15 Sep 2023 13:58:42 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1777139483091009382 X-GMAIL-MSGID: 1777163545565850631 With the TSC_AUX virtualization support now in the vcpu_set_after_cpuid() path, the intercepts must be either cleared or set based on the guest CPUID input. Currently the support only clears the intercepts. Also, vcpu_set_after_cpuid() calls svm_recalc_instruction_intercepts() as part of the processing, so the setting or clearing of the RDTSCP intercept can be dropped from the TSC_AUX virtualization support. Update the support to always set or clear the TSC_AUX MSR intercept based on the virtualization requirements. Fixes: 296d5a17e793 ("KVM: SEV-ES: Use V_TSC_AUX if available instead of RDTSC/MSR_TSC_AUX intercepts") Signed-off-by: Tom Lendacky --- arch/x86/kvm/svm/sev.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c index 4ac01f338903..4900c078045a 100644 --- a/arch/x86/kvm/svm/sev.c +++ b/arch/x86/kvm/svm/sev.c @@ -2966,12 +2966,11 @@ static void sev_es_vcpu_after_set_cpuid(struct vcpu_svm *svm) { struct kvm_vcpu *vcpu = &svm->vcpu; - if (boot_cpu_has(X86_FEATURE_V_TSC_AUX) && - (guest_cpuid_has(vcpu, X86_FEATURE_RDTSCP) || - guest_cpuid_has(vcpu, X86_FEATURE_RDPID))) { - set_msr_interception(vcpu, svm->msrpm, MSR_TSC_AUX, 1, 1); - if (guest_cpuid_has(vcpu, X86_FEATURE_RDTSCP)) - svm_clr_intercept(svm, INTERCEPT_RDTSCP); + if (boot_cpu_has(X86_FEATURE_V_TSC_AUX)) { + bool v_tsc_aux = guest_cpuid_has(vcpu, X86_FEATURE_RDTSCP) || + guest_cpuid_has(vcpu, X86_FEATURE_RDPID); + + set_msr_interception(vcpu, svm->msrpm, MSR_TSC_AUX, v_tsc_aux, v_tsc_aux); } } From patchwork Fri Sep 15 20:54:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Lendacky X-Patchwork-Id: 140991 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:172:b0:3f2:4152:657d with SMTP id h50csp1535787vqi; Sat, 16 Sep 2023 00:51:44 -0700 (PDT) X-Google-Smtp-Source: AGHT+IG2ssL6NhX56EqSUfe++IrMGkoLhHsJughJdRNCzbmnBTe7QrOtqXqF+pLVVMsZy7VjBZU7 X-Received: by 2002:a05:6870:4248:b0:1d6:5a39:5ffb with SMTP id v8-20020a056870424800b001d65a395ffbmr4542258oac.20.1694850704124; Sat, 16 Sep 2023 00:51:44 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1694850704; cv=pass; d=google.com; s=arc-20160816; b=O1PIS4Ul38n6h76HSaWke3UX5McCTE7WmatkoTNyFayRbE5icumTKQmiT8YC8SSday zUtn7vDd6BxKeCL0ahas2/ohWxrezFKYal5pxSOzWzQ92i3wHK5Flac5t2p7jZQXenGm rqdh6iCuYMU3HFL2nmnItSTMLAYjMo61n0Dfx+bdVV87e0tG/SVeQwz0hKJd0qjbBme5 0Cxr6X7AVlJNQlt0nkBM2joaLUStlqNeY7DQ4eiJgboFpLQtFYSv7Fk74frfl84LdHmn 2O6b6GFwfSeZuKOKFJiu8+9XuR2ow1gkQZtiot0Sm5TDD0rqsdSZNF3X+LDYZnvkifH8 layQ== ARC-Message-Signature: i=2; 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=B0rJQQpnvifC+zRw8/M+5GC4NVcorL7lMPKq29zLOfk=; fh=nraIGUByMO9TeTqtnjpfkxT3+9PIiP6QcjmYSUCVuSc=; b=G6NbqtD6Z5aOf8JJVJCEqgE62cQGR9G4e2RQWqcP+XCw22qt7pQ9InSTtPnZ4gka+5 FwMSoOzt3XCYcWkyBUBNctpRovrZahILZJZLU9gCdcE705TWkNLlj8+M4lXIEA9daiYt LZZDOOFIFuDZt1clY3Sj90fcVd+1ecBpsgfxxTMspoJ7sWm7drX5m2qr7pBzdFMYeV9+ YUDVyrLX90sfHAVP4ns4SZPpHjz9RAv1v9ILK/njwOAPRqCUNCLm7O2AgGWuhNPWeKg4 yjHbBP97VBFFjskXtNeawsuGzv4lSwlQOi9t75NxJhgkclKahmnAs+MmnbSict6DqiF/ yB+g== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amd.com header.s=selector1 header.b=hC1NSEov; arc=pass (i=1 spf=pass spfdomain=amd.com dmarc=pass fromdomain=amd.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amd.com Received: from snail.vger.email (snail.vger.email. [2620:137:e000::3:7]) by mx.google.com with ESMTPS id l21-20020a656815000000b00563fc0d174csi4399365pgt.791.2023.09.16.00.51.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 Sep 2023 00:51:44 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) client-ip=2620:137:e000::3:7; Authentication-Results: mx.google.com; dkim=pass header.i=@amd.com header.s=selector1 header.b=hC1NSEov; arc=pass (i=1 spf=pass spfdomain=amd.com dmarc=pass fromdomain=amd.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amd.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 71800809E72B; Fri, 15 Sep 2023 13:58:02 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237579AbjIOU5e (ORCPT + 29 others); Fri, 15 Sep 2023 16:57:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41168 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237626AbjIOU5F (ORCPT ); Fri, 15 Sep 2023 16:57:05 -0400 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2048.outbound.protection.outlook.com [40.107.93.48]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AEB033C18; Fri, 15 Sep 2023 13:55:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XQrxQGCrd6nW3wDElyhvNzYCHm/lXab97QbwR1nbHsLqT6aLM2E5hU6O4CpVpc0rnaWS+Q6vAxALcRRXautmo+UxttpG8HW4uXK2BXxVRt1D7tdb0cFc/NIV+QTm0hm/BFftMc4qOE92V2MdLlOEjISSzHsTRKZq2gliTONrD163vSGRB3RC6OYihQFoYol8GM++NktCV9pbDlenKGR6iH/1OWscVfjayKj1DvI0LBWdB/igiM1cKPuf15KXOlylJPx7jv6GseMlkJorM9Y7bqRFYjlzBw1/STUvvR/zwFzy3IRTLsQevk+92eAKhuINiYWdyxtw5CkdyCCZWpDzew== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=B0rJQQpnvifC+zRw8/M+5GC4NVcorL7lMPKq29zLOfk=; b=G+M1XmkiG6B/Sg5c+esun5USkv0YuLG9Szvz4RLaVuKvTJ7yK1nGnYiTCVwmUKIWUi1lo4rog622X2KmpGwfWpPvx7ajZQWPGPy+Xxu5MALr1fHn9ZD0rUXDDY0JAff9R76c413uHxU4Gu8Llj5rjlYnGRAeLGNnLPQyNWdNCk+crHQIk3cOjcn5RcmuWMr7Rg5RTS1HfzwW5esxUux8Bm8rSKl4iyg44moNvHvGJfyxL3c9KQR1U5BIoYaYHn8zFTxqqnAAGVxfg+q3+Rg4MOXFyZF5Bnre/3GEiUiSqrUJ5aUPOISt4nWKcJb4i6amTT19U/JVG1Os9Ypx30gRLA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=B0rJQQpnvifC+zRw8/M+5GC4NVcorL7lMPKq29zLOfk=; b=hC1NSEovqswD5lIy4IkcWuEqyRJUh+7053T0GABhDl51Kkx5ooqnAxTNn1s0SO9bba+oys/Fo6OLjniQ2EvF0rwlwkxTCMUxN9aXsOr+7eOPRHZvNy3hMFKojYu4+boAP+jV4wBAFnnbiRzD6Ws7+wTncmiGcogV0kbD5abhegY= Received: from DM6PR06CA0076.namprd06.prod.outlook.com (2603:10b6:5:336::9) by BY5PR12MB4967.namprd12.prod.outlook.com (2603:10b6:a03:1de::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6792.21; Fri, 15 Sep 2023 20:55:10 +0000 Received: from CY4PEPF0000EE37.namprd05.prod.outlook.com (2603:10b6:5:336:cafe::e4) by DM6PR06CA0076.outlook.office365.com (2603:10b6:5:336::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6792.21 via Frontend Transport; Fri, 15 Sep 2023 20:55:10 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by CY4PEPF0000EE37.mail.protection.outlook.com (10.167.242.43) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.6792.20 via Frontend Transport; Fri, 15 Sep 2023 20:55:10 +0000 Received: from tlendack-t1.amdoffice.net (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Fri, 15 Sep 2023 15:55:08 -0500 From: Tom Lendacky To: , , CC: Paolo Bonzini , Sean Christopherson , Borislav Petkov , Dave Hansen , Ingo Molnar , "Thomas Gleixner" , Babu Moger Subject: [PATCH v2 3/3] KVM: SVM: Do not use user return MSR support for virtualized TSC_AUX Date: Fri, 15 Sep 2023 15:54:32 -0500 Message-ID: X-Mailer: git-send-email 2.41.0 In-Reply-To: References: MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY4PEPF0000EE37:EE_|BY5PR12MB4967:EE_ X-MS-Office365-Filtering-Correlation-Id: cc29df25-327b-47fb-deaa-08dbb62e0cb9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: n7ze2kJqWsvVLVri/d1dirKbPjOne2EKrJ0vwt/4vFsJp6jeag1N79KB52iZGYHK4Gjoeu6AEpBnRi0miSVzsDMPyDMeXSMug9sORz7qpTHH8tZEQJnJN5ge448BK84K0B2bwt4zaAfwPV94XaZkLZhRbmff+Xh4OZSsGCrqTbDNPyDqSYPV43XIAlALXputYH5+yRhba2Q9qNLQd4mVLaJtXi3Ww633KVNGt/YYVXVwxpecj3fQdj/ft6XIifoGoV3U4PVbE8Szm+GOnTsD6v6Go5aii3NX0ldoXZl9HPO37THD0V17Qtw52i3FT/wKiw5W0zKUPwMcN7muMB8N/mRmyo0/MQRjYH+o2SpeCH7OPVGMDWhoMyI5jRw7AH5gA6Cu3RZ6QrFv4m9GfhQ4o4OZHyHAlaUg1YeuW8V7Cx2E6lgoBFWUIwshuYtDehIXiI5N06cah+UsxnwXKAs1b3Rrg7vOx/fRh5P+0cnBq9uwQU7nYRUuGaJQgAIjEUdC+yr+EtjEfCcN7godgEm9cB5H3UkS0pvGvejjq9hvu+SntiizyrFVRLLvYV+vFIup4xUCMtZ9fCt1jTSM9Qu5RL+xjx4gHBNvbFnZIOv0AwGYY7S0uBcXRGRgxGER6PVS+OGK9m15Kqyf/BkHRPwNgSKYmPrOb0q1REPvFMVPq48QNSs1a4zbrPwBkxCB9jNMIa/IlXx1JxFthJveXlkfI8JynSKHiH4T49lUcPQtD/GBcrqHW8WeyTMbm7qPLvh8roQsINtHjyYgwNQlXkryXg== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(396003)(376002)(39860400002)(346002)(136003)(186009)(451199024)(1800799009)(82310400011)(36840700001)(40470700004)(46966006)(40460700003)(2906002)(86362001)(426003)(16526019)(336012)(26005)(2616005)(6666004)(478600001)(36756003)(36860700001)(83380400001)(47076005)(82740400003)(81166007)(356005)(40480700001)(5660300002)(8936002)(41300700001)(8676002)(4326008)(70586007)(70206006)(316002)(54906003)(110136005)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Sep 2023 20:55:10.0221 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: cc29df25-327b-47fb-deaa-08dbb62e0cb9 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CY4PEPF0000EE37.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB4967 X-Spam-Status: No, score=-1.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FORGED_SPF_HELO, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE autolearn=no 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-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Fri, 15 Sep 2023 13:58:02 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1777179772101080913 X-GMAIL-MSGID: 1777179772101080913 When the TSC_AUX MSR is virtualized, the TSC_AUX value is swap type "B" within the VMSA. This means that the guest value is loaded on VMRUN and the host value is restored from the host save area on #VMEXIT. Since the value is restored on #VMEXIT, the KVM user return MSR support for TSC_AUX can be replaced by populating the host save area with the current host value of TSC_AUX. And, since TSC_AUX is not changed by Linux post-boot, the host save area can be set once in svm_hardware_enable(). This eliminates the two WRMSR instructions associated with the user return MSR support. Signed-off-by: Tom Lendacky --- arch/x86/kvm/svm/svm.c | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c index aef1ddf0b705..9507df93f410 100644 --- a/arch/x86/kvm/svm/svm.c +++ b/arch/x86/kvm/svm/svm.c @@ -683,6 +683,21 @@ static int svm_hardware_enable(void) amd_pmu_enable_virt(); + /* + * If TSC_AUX virtualization is supported, TSC_AUX becomes a swap type + * "B" field (see sev_es_prepare_switch_to_guest()) for SEV-ES guests. + * Since Linux does not change the value of TSC_AUX once set, prime the + * TSC_AUX field now to avoid a RDMSR on every vCPU run. + */ + if (boot_cpu_has(X86_FEATURE_V_TSC_AUX)) { + struct sev_es_save_area *hostsa; + u32 msr_hi; + + hostsa = (struct sev_es_save_area *)(page_address(sd->save_area) + 0x400); + + rdmsr(MSR_TSC_AUX, hostsa->tsc_aux, msr_hi); + } + return 0; } @@ -1532,7 +1547,14 @@ static void svm_prepare_switch_to_guest(struct kvm_vcpu *vcpu) if (tsc_scaling) __svm_write_tsc_multiplier(vcpu->arch.tsc_scaling_ratio); - if (likely(tsc_aux_uret_slot >= 0)) + /* + * TSC_AUX is always virtualized for SEV-ES guests when the feature is + * available. The user return MSR support is not required in this case + * because TSC_AUX is restored on #VMEXIT from the host save area + * (which has been initialized in svm_hardware_enable()). + */ + if (likely(tsc_aux_uret_slot >= 0) && + (!boot_cpu_has(X86_FEATURE_V_TSC_AUX) || !sev_es_guest(vcpu->kvm))) kvm_set_user_return_msr(tsc_aux_uret_slot, svm->tsc_aux, -1ull); svm->guest_state_loaded = true; @@ -3086,6 +3108,16 @@ static int svm_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr) svm->sysenter_esp_hi = guest_cpuid_is_intel(vcpu) ? (data >> 32) : 0; break; case MSR_TSC_AUX: + /* + * TSC_AUX is always virtualized for SEV-ES guests when the + * feature is available. The user return MSR support is not + * required in this case because TSC_AUX is restored on #VMEXIT + * from the host save area (which has been initialized in + * svm_hardware_enable()). + */ + if (boot_cpu_has(X86_FEATURE_V_TSC_AUX) && sev_es_guest(vcpu->kvm)) + break; + /* * TSC_AUX is usually changed only during boot and never read * directly. Intercept TSC_AUX instead of exposing it to the