From patchwork Wed Apr 5 00:59:09 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 79426 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp256224vqo; Tue, 4 Apr 2023 18:06:23 -0700 (PDT) X-Google-Smtp-Source: AKy350bviX9rnSY6MafeCytFoa+TZVJrOpIxoT3stfmnw9esJxlFr64Cm62xL/tI/VdTTGYO/JWn X-Received: by 2002:a17:903:88b:b0:1a1:e01e:7279 with SMTP id kt11-20020a170903088b00b001a1e01e7279mr4435172plb.4.1680656783539; Tue, 04 Apr 2023 18:06:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680656783; cv=none; d=google.com; s=arc-20160816; b=E/Bqc50iwM8vkqkrIrFeQ6fit6z+Xk6gboS1nezipXvgcH7TzTmzn4kUbWwB3KTzUn V4h2rfWuYpksv20tJMHcBV9rkGjRE3AoArwEqGLeVEjCzijuUtbz9dsk2hEe40GqKiAa YHdwsVmZNW61FwRDbzJMFpGviLNaJtQ3YxNIRn5FVIziTTLfCVpNau2Faf2rxxMQXQ62 I7DpIanc8OgmakstavbErzJXZh4a8TV1WSF/L/liZvnmp9D6H01dF8U+SoDftndHjvvC aW9RqMZeERYTHId9l1Pxfvg+Th0zA2baJBLL8+L7TVWf0lQROKyX4Ij6KSnD3+hKFrM4 0NzQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:reply-to:dkim-signature; bh=PLGWC8bjiCbqzAe+2LaZO4qsM4GvEpJuy8h3g8GekVY=; b=j4WLQsalh039tIVwHph0Zn2kqAT2IfOo4EZX4c3sRv8XolYx1LvDQLoL+6Xlx92vMZ vSokI2o6AFwUsiD2KxUGcxnEWog5sOSXnfH9HrURrR4QWAuRdZf9KFZTcTPm8KPgl1AY 7JqIWPssZpnzQ6m1exY5oCz0yT/W4tJFCCJVlRkbwKS/7DiMpvY5wwshQaBdU1fvGKBA iisldnMA6N5fliLSbwDsRxXrG+VDPAVKaRV6CITwqGc4+I4r/J8Dg8HdKllOPDrQEN/j zcn0MgzpXeyNs5wkbgVH7V0FnY2mqJ61DCEQX3hr9SCRi/vgzikwzJ+zdOxpBbn6LppO x9jA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b="gVF/Uw+g"; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id k9-20020a63f009000000b004a4eae7c943si11319536pgh.535.2023.04.04.18.06.10; Tue, 04 Apr 2023 18:06:23 -0700 (PDT) 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=@google.com header.s=20210112 header.b="gVF/Uw+g"; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236647AbjDEA7T (ORCPT + 99 others); Tue, 4 Apr 2023 20:59:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37758 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236441AbjDEA7R (ORCPT ); Tue, 4 Apr 2023 20:59:17 -0400 Received: from mail-pf1-x44a.google.com (mail-pf1-x44a.google.com [IPv6:2607:f8b0:4864:20::44a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 209CF1BEA for ; Tue, 4 Apr 2023 17:59:16 -0700 (PDT) Received: by mail-pf1-x44a.google.com with SMTP id m12-20020a62f20c000000b0062612a76a08so15330951pfh.2 for ; Tue, 04 Apr 2023 17:59:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; t=1680656355; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:from:to:cc:subject:date:message-id:reply-to; bh=PLGWC8bjiCbqzAe+2LaZO4qsM4GvEpJuy8h3g8GekVY=; b=gVF/Uw+gSqX3uWJdb16W3jVtNtrHQr6D5L84MS4xLmhm6IUvTa+93i6w1I25DZf4jn Dd1bzqEFttWNNPRb2DarphJkl8zKFFr8zKOA40L4od5qv9oEiDk6r831QpejBKnHq82l QYDAmQMYSzK6Lsq3wcLlP9WOuQ7+7wabq1HlZ0KW799j4S/VLiKMFNovN864xvln0wsK zbj9mWBagl/UDX0m4r9S1vwH1AESsE7ei8c2dOcn16xkglwtPbFQu+18tgu1fsvxVtO7 2pTCFma2FYLBy6j4N/P0bLvYFixRklR/5aUe3TcS4tttEcpVZUXYMwkjQd4DH/EW1NSA 6A+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680656355; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=PLGWC8bjiCbqzAe+2LaZO4qsM4GvEpJuy8h3g8GekVY=; b=3wVAgyJuqG+jIuTxKssxjjf14FNoScjr4bj6ZywZY/kVk3aYVmHMts0utgUsXbIsvm zutmfbxhJHZufFdrDkWaYNsi7h/iGK9Qp3W4796sG8WyFA4J3N4rJbUba/N3qh/d8RRn ZdsqLjyBv1W7a6YvoQK8dquNNel9oL5KjdO7gLAtClUdUI9dBqH10WZ109UnR34PWW/U PK/+OYhnIGHAMHTTkljBblQXp04ovRPWWAi2H6o9iudFvW6XMkG4idiPs9SLoWvfEOig SWkt0yF98ZKy9cktBnGKdlRQYrlWG81MWUALwWAQDg50DFqEkAuYYX0qGmhBTO0ourAq NI4g== X-Gm-Message-State: AAQBX9cHALs2Y5Tx40rn2X/bMD0xrbghcXXlqHjtV8QNTdO28anwAfHb v9m+QxhQpHA/xcgSFZ5abPmohBNhPwQ= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a63:4c1f:0:b0:4fb:1f2a:e6c6 with SMTP id z31-20020a634c1f000000b004fb1f2ae6c6mr1346195pga.2.1680656355579; Tue, 04 Apr 2023 17:59:15 -0700 (PDT) Reply-To: Sean Christopherson Date: Tue, 4 Apr 2023 17:59:09 -0700 In-Reply-To: <20230405005911.423699-1-seanjc@google.com> Mime-Version: 1.0 References: <20230405005911.423699-1-seanjc@google.com> X-Mailer: git-send-email 2.40.0.348.gf938b09366-goog Message-ID: <20230405005911.423699-2-seanjc@google.com> Subject: [PATCH 1/3] KVM: VMX: Don't rely _only_ on CPUID to enforce XCR0 restrictions for ECREATE From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Kai Huang X-Spam-Status: No, score=-7.7 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,USER_IN_DEF_DKIM_WL autolearn=unavailable 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?1762296367738413450?= X-GMAIL-MSGID: =?utf-8?q?1762296367738413450?= Explicitly check the vCPU's supported XCR0 when determining whether or not the XFRM for ECREATE is valid. Checking CPUID works because KVM updates guest CPUID.0x12.1 to restrict the leaf to a subset of the guest's allowed XCR0, but that is rather subtle and KVM should not modify guest CPUID except for modeling true runtime behavior (allowed XFRM is most definitely not "runtime" behavior). Signed-off-by: Sean Christopherson Reviewed-by: Kai Huang Tested-by: Kai Huang --- arch/x86/kvm/vmx/sgx.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/arch/x86/kvm/vmx/sgx.c b/arch/x86/kvm/vmx/sgx.c index aa53c98034bf..362a31b19b0e 100644 --- a/arch/x86/kvm/vmx/sgx.c +++ b/arch/x86/kvm/vmx/sgx.c @@ -175,7 +175,8 @@ static int __handle_encls_ecreate(struct kvm_vcpu *vcpu, (u32)attributes & ~sgx_12_1->eax || (u32)(attributes >> 32) & ~sgx_12_1->ebx || (u32)xfrm & ~sgx_12_1->ecx || - (u32)(xfrm >> 32) & ~sgx_12_1->edx) { + (u32)(xfrm >> 32) & ~sgx_12_1->edx || + xfrm & ~vcpu->arch.guest_supported_xcr0) { kvm_inject_gp(vcpu, 0); return 1; } From patchwork Wed Apr 5 00:59:10 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 79425 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp256041vqo; Tue, 4 Apr 2023 18:06:00 -0700 (PDT) X-Google-Smtp-Source: AKy350bA5ERBXm31szmSnCbjJROHTj2bhiA/y2uSviyQ/wvgKsNZPq4MlZWzOcIKF2o1xwjkd2UO X-Received: by 2002:a17:90b:1e05:b0:237:99b9:c415 with SMTP id pg5-20020a17090b1e0500b0023799b9c415mr4657606pjb.38.1680656760329; Tue, 04 Apr 2023 18:06:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680656760; cv=none; d=google.com; s=arc-20160816; b=uCcs4tQou4cCAScismB4hxtpFWrBIloybyIwUdwWd1Zb5/YvpQSaGto7bOGXAJL1oY 7O0RlNlPadOrW+0hc0Z+Ti1tJ2q2ZTsozfDvYGGzw1cyM4SgxeSsBre57WjN0vrDJl4+ +CM2qIMyQYfrtUqnCW/sXqMkn5HqK1u5u667GZ1lAkf+AkXLt9YWMjy59GxCiakGSeBv w+8bvku2AuSjUp0y6AmSRAsmzK08xWFja5IkAgmjHgYO6zDL2cmNPRPmuz8d270PibKD 7ZfyassptYPisWuAZe6NMUuOPaQs8/BnHHtrUSHlCtCrCluux3aSL21bHmIuRiV5sTEm jfkw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:reply-to:dkim-signature; bh=/LlxEKk640KODqyIXhxgneIbkJJUkcc+ai741c33zE8=; b=ebU+fijJVQOzqZlHraU4Ef26J3IhF1ruhqkaXxg2PLmYlIFfe28n6zy//zm4Ybp/XE smdLeTNsfwkrVOgBNvm/p7VPcobenJAp8RuWiXRxJPYsctORj7FZdega6qor5MlZqryc nX6ddMlohg27L3uUETF7Mm4lH30EJhgGmVfRcXtnYy2ukqbEWvFIWak25lNHmjKpX2Ik pkqlwlFQAfLJHVty1BkDqQozvoBTE5u/AaxLYTqpyWh3U9MpYHkpmtA9hj/+llYJwS7W vj+PqjduLpunLxsHIoU52RxNKhAEAPl87//XRaF0UkSxpm2mWVguFoXK8ZXVgKHb9uTN cOgw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=UNFKuAHY; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id 13-20020a630f4d000000b005138574a0e8si11013284pgp.284.2023.04.04.18.05.48; Tue, 04 Apr 2023 18:06:00 -0700 (PDT) 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=@google.com header.s=20210112 header.b=UNFKuAHY; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236706AbjDEA7Y (ORCPT + 99 others); Tue, 4 Apr 2023 20:59:24 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37796 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236617AbjDEA7T (ORCPT ); Tue, 4 Apr 2023 20:59:19 -0400 Received: from mail-pf1-x44a.google.com (mail-pf1-x44a.google.com [IPv6:2607:f8b0:4864:20::44a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1DF841BEA for ; Tue, 4 Apr 2023 17:59:18 -0700 (PDT) Received: by mail-pf1-x44a.google.com with SMTP id y15-20020a62f24f000000b00627dd180a30so15332020pfl.6 for ; Tue, 04 Apr 2023 17:59:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; t=1680656357; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:from:to:cc:subject:date:message-id:reply-to; bh=/LlxEKk640KODqyIXhxgneIbkJJUkcc+ai741c33zE8=; b=UNFKuAHYj2mFuBI2Q/+O3KVQ0ZS5y6NNYC6EoMkQXyoAlpDwwWmh2xswrRJLTcF4UE PRwO0hnL5DSc/bdyWhXa6RL/tPpQt+UB35gEI4DkaXbxVfgJ4mlG8aaJWu4gDWPLCHLz itsfBduIOCypfCPOQH2koafLF+sRhreYKTpUG1hX30XD7PZ6p2lmUTHm20GXbYeHKsx8 tnxKAdPd04iLrkr/7U4ClEfEd7JjpaB1qp2B8Bo8gz6mLr48TebLwBdw/6L0G30SHCGN L0yHlPucDMThI8erO/qRmpf9icQ7gdhJrLnOjhfJ+WZ5f+SXF9QJi3SKFydYeinyshkT dZtw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680656357; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=/LlxEKk640KODqyIXhxgneIbkJJUkcc+ai741c33zE8=; b=S5wbdZrHn8xZXKzN6fskBAB/+hlR/wFf0vHIsWUXb4noe4jGP6N4T/e7V28378ymWm WSkeW2Aal5xMWb7fEu0Xb7Ag6rHbhXN+5v3m+WzOI32UxvPOtsCPjCyLK5WhA/ARu0xF MBPIkc/sox+tpJqeArwP+K4wEnf/IV8p/mtYmXsxf07iZJzklHKN5XQZ9w5CHmAJJ/UO AO+iT2FrsshMTPCdX3MCfc/CHNuDVwIs7+5WVauQ9V1K4X6j1FfO1fRbVRsVcHl45lS3 5rQCMP8wB2hY4zvVPeQ+f9e5fbGG+GHTCEUXSA+8SLvdgzlxm67CzmEVtsFAnONh9JFd lUtg== X-Gm-Message-State: AAQBX9fRanccqoltZ5P0W5QX6qjmhFpkkrq9hT/P77f8jWl1/dkkWloX 0IvENa6MR9PnJw9MToCjvvOvY2tB97w= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a65:4c88:0:b0:513:92e7:4555 with SMTP id m8-20020a654c88000000b0051392e74555mr420188pgt.4.1680656357670; Tue, 04 Apr 2023 17:59:17 -0700 (PDT) Reply-To: Sean Christopherson Date: Tue, 4 Apr 2023 17:59:10 -0700 In-Reply-To: <20230405005911.423699-1-seanjc@google.com> Mime-Version: 1.0 References: <20230405005911.423699-1-seanjc@google.com> X-Mailer: git-send-email 2.40.0.348.gf938b09366-goog Message-ID: <20230405005911.423699-3-seanjc@google.com> Subject: [PATCH 2/3] KVM: x86: Don't adjust guest's CPUID.0x12.1 (allowed SGX enclave XFRM) From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Kai Huang X-Spam-Status: No, score=-7.7 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,USER_IN_DEF_DKIM_WL autolearn=unavailable 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?1762296342821049560?= X-GMAIL-MSGID: =?utf-8?q?1762296342821049560?= Drop KVM's manipulation of guest's CPUID.0x12.1 ECX and EDX, i.e. the allowed XFRM of SGX enclaves, now that KVM explicitly checks the guest's allowed XCR0 when emulating ECREATE. Note, this could theoretically break a setup where userspace advertises a "bad" XFRM and relies on KVM to provide a sane CPUID model, but QEMU is the only known user of KVM SGX, and QEMU explicitly sets the SGX CPUID XFRM subleaf based on the guest's XCR0. Cc: Kai Huang Signed-off-by: Sean Christopherson --- arch/x86/kvm/cpuid.c | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c index 6972e0be60fa..d28c4fb14d43 100644 --- a/arch/x86/kvm/cpuid.c +++ b/arch/x86/kvm/cpuid.c @@ -253,7 +253,6 @@ static void __kvm_update_cpuid_runtime(struct kvm_vcpu *vcpu, struct kvm_cpuid_e int nent) { struct kvm_cpuid_entry2 *best; - u64 guest_supported_xcr0 = cpuid_get_supported_xcr0(entries, nent); best = cpuid_entry2_find(entries, nent, 1, KVM_CPUID_INDEX_NOT_SIGNIFICANT); if (best) { @@ -292,21 +291,6 @@ static void __kvm_update_cpuid_runtime(struct kvm_vcpu *vcpu, struct kvm_cpuid_e vcpu->arch.ia32_misc_enable_msr & MSR_IA32_MISC_ENABLE_MWAIT); } - - /* - * Bits 127:0 of the allowed SECS.ATTRIBUTES (CPUID.0x12.0x1) enumerate - * the supported XSAVE Feature Request Mask (XFRM), i.e. the enclave's - * requested XCR0 value. The enclave's XFRM must be a subset of XCRO - * at the time of EENTER, thus adjust the allowed XFRM by the guest's - * supported XCR0. Similar to XCR0 handling, FP and SSE are forced to - * '1' even on CPUs that don't support XSAVE. - */ - best = cpuid_entry2_find(entries, nent, 0x12, 0x1); - if (best) { - best->ecx &= guest_supported_xcr0 & 0xffffffff; - best->edx &= guest_supported_xcr0 >> 32; - best->ecx |= XFEATURE_MASK_FPSSE; - } } void kvm_update_cpuid_runtime(struct kvm_vcpu *vcpu) From patchwork Wed Apr 5 00:59:11 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 79427 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp257590vqo; Tue, 4 Apr 2023 18:09:11 -0700 (PDT) X-Google-Smtp-Source: AKy350azczWfxBilOWkCpC+VJq/RtvMzI6SMTBMGC9Y2dSAjOuKpOXzjFM62+tUnGGVsPAnCfZZo X-Received: by 2002:a17:902:d50c:b0:1a1:7bd7:cc06 with SMTP id b12-20020a170902d50c00b001a17bd7cc06mr6201310plg.43.1680656951473; Tue, 04 Apr 2023 18:09:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680656951; cv=none; d=google.com; s=arc-20160816; b=AcckZOjJH06pT8qOiUUO2ChAhQJdPhZtqk4/Fw/7fbSlHZ9n16zKv/79Jouw0k6c9N jUckMJJo9FhWGMKnONUZ13Fxk7uxmOCDlgEgt4CBg8xwqqdku2jnMDbLYyzXxyKPjYfB JXrvzX+MPZWotBir5vQG4WZGIcXlcOxzf4UixEQHm51rt95VHaLi/ifkqzCRzEm9Y6DR Ly64wlrMYdn2J3okHaGeZcvMFrEJYTc5s6egBBMyvdWlbhg7MX8extI6+Xn7UWptPo9b Re37oxyVEYpsL6QCmMOHJA3jhoYeDH8Z1MZGtLnbcSv115/a6V/YwRdGFpMmYiwabdqi U0yA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:reply-to:dkim-signature; bh=r4IsBet8bh71zKeuLVNnRTIwwOz9n8fWFHrPWC3x+hg=; b=XRQLtBZk3unOFXHcCmVp4QPROYCSLr+Im5zhypQN4+vL5MVqrf9mr7iEAvA3AdlX9S 35tIdllD1Gru0XXF2NWJjv3wBsGEpeD9fzLTmdZl3426AcyBb+3LanPP8+Hj01+RNGe8 DaeCkdLkVg8UKOBhv/LzK0apFKRVhoJ+Q/0/05c+LW1L2rvJ1QZrhhJl4Ckr5mip5cxZ 0pKROHgZvS+T+OejNaHNtL8Qz5A10PZG2De/mtKD6s4mgkMbUKE/M590GrmK13gA5+Bo Qe/Y5sgYttSkdm59t6AGlHIu7wnrH58ugpKXKFKkoeN4AT76g1LbCsbiEP5MKt//5fvR xbBw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=rjE6SQGZ; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id k9-20020a63f009000000b004a4eae7c943si11319536pgh.535.2023.04.04.18.08.56; Tue, 04 Apr 2023 18:09:11 -0700 (PDT) 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=@google.com header.s=20210112 header.b=rjE6SQGZ; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236725AbjDEA71 (ORCPT + 99 others); Tue, 4 Apr 2023 20:59:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37988 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236696AbjDEA7X (ORCPT ); Tue, 4 Apr 2023 20:59:23 -0400 Received: from mail-pg1-x54a.google.com (mail-pg1-x54a.google.com [IPv6:2607:f8b0:4864:20::54a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2BC4940F2 for ; Tue, 4 Apr 2023 17:59:20 -0700 (PDT) Received: by mail-pg1-x54a.google.com with SMTP id s9-20020a634509000000b004fc1c14c9daso10205009pga.23 for ; Tue, 04 Apr 2023 17:59:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; t=1680656359; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:from:to:cc:subject:date:message-id:reply-to; bh=r4IsBet8bh71zKeuLVNnRTIwwOz9n8fWFHrPWC3x+hg=; b=rjE6SQGZNtVno2kBOTSyzAMxFD8t5tMtXgeyDq/bCr05McmcCCdvubfm/ZyLL01rNw Cn105nyBh0QHx63FPWAoQeVzyKsG1M0bJnrzSGMROxt2Zkm8a7h0dq/M8HwOWkhwzl2U oUHUZ36G0tJNhJ9xyVmGyoJB+iF9HH6SDEOlFX4aGLRjxv2QQd1hsaNMeoKSmhC8umRk yKrsJggmO2KdNmYNF7Ey4S8vnz08yk5m0MbqttWYtNVOHtj2SswKoxaGcdWGaxplJTbC 4+kQHcq5gldPCAqC/U/FqWVku4aUPYh+kxAj+FFILFCUYqUX/5Qv8WHWVqswjLibHl+B 2HQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680656359; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=r4IsBet8bh71zKeuLVNnRTIwwOz9n8fWFHrPWC3x+hg=; b=v8n3Dqhfo5GuaskxZEufF+7lc1kwT1SPAFsiSVeZ1vb/1iYtGpvcz0V9kiOnQ+v/Mg owOEqTz5BybcaYjJgAsLv71ntQPqB6IMaWq2+lROnnNPIamco3M/Z9Ayudd1cbyf5V7j Q+oo7/tOtw03t8l1zcgq/kzSdNTSjOCatbwSZ7zmgpWITVDoILa8PoCeJyzzmwC3TSEv kvSBBlzLFUUczrRQLx+B4loSO1OK2w5FbOHBp+EJncfNOXhbNSEZEwqK1SLKFbhRWQx0 BJr/JeCVbfnMKi/o63wtvftKs5fkVSSrUYyXG70+2hFUYwztPZ+47tZpjEklDafG2lTi cX/Q== X-Gm-Message-State: AAQBX9ebjOdh22Ph/uRYDwJvpnXZPDGRORbJTRozkuQy9kwgJwLq+d6S xxgoSoiqc+nYbFGmgRWT2z8WwUkKpuc= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a17:90b:fcd:b0:23b:353a:2e24 with SMTP id gd13-20020a17090b0fcd00b0023b353a2e24mr1628244pjb.5.1680656359566; Tue, 04 Apr 2023 17:59:19 -0700 (PDT) Reply-To: Sean Christopherson Date: Tue, 4 Apr 2023 17:59:11 -0700 In-Reply-To: <20230405005911.423699-1-seanjc@google.com> Mime-Version: 1.0 References: <20230405005911.423699-1-seanjc@google.com> X-Mailer: git-send-email 2.40.0.348.gf938b09366-goog Message-ID: <20230405005911.423699-4-seanjc@google.com> Subject: [PATCH 3/3] KVM: x86: Open code supported XCR0 calculation in kvm_vcpu_after_set_cpuid() From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Kai Huang X-Spam-Status: No, score=-7.7 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,USER_IN_DEF_DKIM_WL autolearn=unavailable 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?1762296543775460822?= X-GMAIL-MSGID: =?utf-8?q?1762296543775460822?= Drop cpuid_get_supported_xcr0() now that its bastardized usage in __kvm_update_cpuid_runtime() is gone, and open code the logic in its sole caller, kvm_vcpu_after_set_cpuid(). No functional change intended. Signed-off-by: Sean Christopherson --- arch/x86/kvm/cpuid.c | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c index d28c4fb14d43..220eda4ab337 100644 --- a/arch/x86/kvm/cpuid.c +++ b/arch/x86/kvm/cpuid.c @@ -234,21 +234,6 @@ void kvm_update_pv_runtime(struct kvm_vcpu *vcpu) vcpu->arch.pv_cpuid.features = best->eax; } -/* - * Calculate guest's supported XCR0 taking into account guest CPUID data and - * KVM's supported XCR0 (comprised of host's XCR0 and KVM_SUPPORTED_XCR0). - */ -static u64 cpuid_get_supported_xcr0(struct kvm_cpuid_entry2 *entries, int nent) -{ - struct kvm_cpuid_entry2 *best; - - best = cpuid_entry2_find(entries, nent, 0xd, 0); - if (!best) - return 0; - - return (best->eax | ((u64)best->edx << 32)) & kvm_caps.supported_xcr0; -} - static void __kvm_update_cpuid_runtime(struct kvm_vcpu *vcpu, struct kvm_cpuid_entry2 *entries, int nent) { @@ -323,8 +308,16 @@ static void kvm_vcpu_after_set_cpuid(struct kvm_vcpu *vcpu) kvm_apic_set_version(vcpu); } - vcpu->arch.guest_supported_xcr0 = - cpuid_get_supported_xcr0(vcpu->arch.cpuid_entries, vcpu->arch.cpuid_nent); + /* + * Calculate guest's supported XCR0 taking into account guest CPUID data and + * KVM's supported XCR0 (comprised of host's XCR0 and KVM_SUPPORTED_XCR0). + */ + best = kvm_find_cpuid_entry_index(vcpu, 0xd, 0); + if (!best) + vcpu->arch.guest_supported_xcr0 = 0; + else + vcpu->arch.guest_supported_xcr0 = (best->eax | ((u64)best->edx << 32)) & + kvm_caps.supported_xcr0; /* * FP+SSE can always be saved/restored via KVM_{G,S}ET_XSAVE, even if