From patchwork Wed May 3 18:28:48 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 89816 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp1535100vqo; Wed, 3 May 2023 11:41:10 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4zSFDIZT2pUFIsMOx/dhT7l3r3UIPpSKNlbmDYYppzXgLNijoK45L0g4DFz3So+PycdMaV X-Received: by 2002:a05:6a21:3a86:b0:eb:e22b:efa6 with SMTP id zv6-20020a056a213a8600b000ebe22befa6mr23763778pzb.51.1683139269823; Wed, 03 May 2023 11:41:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1683139269; cv=none; d=google.com; s=arc-20160816; b=YlaW8zXB/5ArqDcfbceaJoptKu+oorHkD5nWshf5IsR8tBr1E6r5RNvBJIAVm2b07Z MVwiTEt+Htj351v7zhB4XFVEzPUkgevETcV+cc8EDMN/hyMR7VRi9FCGkfxiumSatnKU n8aCl6W4q1JLuTSeTtOiGJ49upjMLiQqFYg7fEv7jO5QGTbr+xV1tBcLMTVGvM2nUkvt Pooj8rp2FQnf1f+e8LyKB5dinIhVedO72SnIS6isVAMdWYxYDzP4KdEZ6jq0U/yqxvkG 0HtQ9snp4B6ei8GNd9dy6tGMNF7NPapXdJFOyBJ8JGObbxQHkQOOMzZLF6XWA3YRl9sn QBwQ== 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=HR9sDhe1dBWwYsQO66isTNLen+QloTOYlqac4Dib2S0=; b=ycUiK8CTm4iY16cjQEHvE/2AOiDpqf7stzzgQfjGiW5a1JUJjR//+8846pLIjjWali K1VakEyjns1z4vV/1TUhkp1nbk5yYVV9G33kpKAHDLuM0NoI70Ghz4fzI4oYkFArZf0x qjX4aQXhEUJ0Vq9UHBjyMR29h0Z1wJcIwAYlG4KhWH+FfKw558Emw+hV/T6psCG/sSf9 ua/1mRBRKezrHkJ9cJpicPzQc0Tr/1tf7eLp8BQWuWBXJfIgAwjWH8O6bbLGVdS+mtvc JC/w6flE3vPkzOeZdyesQKhPYjFOZSyYlKHRRP3q9F25mW7M8fSzNbdEH1M7HntHNeK9 Bwag== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20221208 header.b=RpPim3ur; 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 c12-20020aa7952c000000b0063cf9718a24si33283019pfp.388.2023.05.03.11.40.53; Wed, 03 May 2023 11:41:09 -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=20221208 header.b=RpPim3ur; 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 S229997AbjECS3E (ORCPT + 99 others); Wed, 3 May 2023 14:29:04 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60944 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229878AbjECS3B (ORCPT ); Wed, 3 May 2023 14:29:01 -0400 Received: from mail-pf1-x449.google.com (mail-pf1-x449.google.com [IPv6:2607:f8b0:4864:20::449]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2C64D35B6 for ; Wed, 3 May 2023 11:29:00 -0700 (PDT) Received: by mail-pf1-x449.google.com with SMTP id d2e1a72fcca58-64115ef7234so4721162b3a.1 for ; Wed, 03 May 2023 11:29:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1683138539; x=1685730539; 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=HR9sDhe1dBWwYsQO66isTNLen+QloTOYlqac4Dib2S0=; b=RpPim3urdDOUWuJ3wzy0utodCmxX0rjPl4mUUzwsMX1hw3s9PCKBeD92U/Flg1VcXo BMbqTLLdj3Gx+nc7TzpBr5JLhosnACTWbU/0TivFrLub70MDUpfAHs0InFAoISRRSUp5 4NlW5AgbyWlxTr1gGf8HlzJWL6KgxFkdynlz8+tHNMBJJlw7ATdALt5US3SEahkdNYd1 dIwiZLYlUblywLajLjSm/9axWRGxsCEhBzqFau67BCzEzwvURmB17++fg+byQc22wiYq iMsyTypPoYLBkHF5sXZ4TQC3Zsjq1YTb/kirR7uPmKL81tsozyRZG93BvGjGArcBuy/8 xDtQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683138539; x=1685730539; 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=HR9sDhe1dBWwYsQO66isTNLen+QloTOYlqac4Dib2S0=; b=JBFwPtBtzkgSrYUFLMT7pWEo7wi+ijo4daBR32oLbgOriXQ/cJX4tFwk+xZXt5wGeR ywqdL46Q66OFKvJwjA2WNoqGfH7+kk56Ix9CNAsqwuDeT4JAFcBGrqHVazHsm/8kDmNa kdet7Snxljj60bjEOZUjcPHux8gWciAX5YOfNloBWY3AHUngaQvL8XBxkUvbPnbpNgrq Lr9rGMYBSkyheNNH9+QP3ZJrYcizkRv05qz/QCvpITguLncmKlgvlwxOvtaWNQLTqlmr 69828F3F/YbMCm5UyO6t26Ifu9fY+gqtbe/UCMd8S1BGtfIls0uM2sttH1UmXTkXYSzM Yg6Q== X-Gm-Message-State: AC+VfDxHVsf37k2V2LUAwgnsWmyZumShl/8Q2Uhy9s56AnDFie4QENEs r8h+DBZXCTiaeVtmfSF6RexRzk08jFs= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a63:2c14:0:b0:51a:7d6a:65c9 with SMTP id s20-20020a632c14000000b0051a7d6a65c9mr714454pgs.6.1683138539464; Wed, 03 May 2023 11:28:59 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 3 May 2023 11:28:48 -0700 In-Reply-To: <20230503182852.3431281-1-seanjc@google.com> Mime-Version: 1.0 References: <20230503182852.3431281-1-seanjc@google.com> X-Mailer: git-send-email 2.40.1.495.gc816e09b53d-goog Message-ID: <20230503182852.3431281-2-seanjc@google.com> Subject: [PATCH 1/5] KVM: VMX: Open code writing vCPU's PAT in VMX's MSR handler From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Wenyao Hai , Ke Guo X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,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?1764899442866252114?= X-GMAIL-MSGID: =?utf-8?q?1764899442866252114?= From: Wenyao Hai Open code setting "vcpu->arch.pat" in vmx_set_msr() instead of bouncing through kvm_set_msr_common() to get to the same code in kvm_mtrr_set_msr(). Note, MSR_IA32_CR_PAT is 0x277, and is very subtly handled by case 0x200 ... MSR_IA32_MC0_CTL2 - 1: in kvm_set_msr_common(). Signed-off-by: Wenyao Hai [sean: massage changelog] Signed-off-by: Sean Christopherson --- arch/x86/kvm/vmx/vmx.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c index 44fb619803b8..53e249109483 100644 --- a/arch/x86/kvm/vmx/vmx.c +++ b/arch/x86/kvm/vmx/vmx.c @@ -2294,12 +2294,10 @@ static int vmx_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info) get_vmcs12(vcpu)->vm_exit_controls & VM_EXIT_SAVE_IA32_PAT) get_vmcs12(vcpu)->guest_ia32_pat = data; - if (vmcs_config.vmentry_ctrl & VM_ENTRY_LOAD_IA32_PAT) { + if (vmcs_config.vmentry_ctrl & VM_ENTRY_LOAD_IA32_PAT) vmcs_write64(GUEST_IA32_PAT, data); - vcpu->arch.pat = data; - break; - } - ret = kvm_set_msr_common(vcpu, msr_info); + + vcpu->arch.pat = data; break; case MSR_IA32_MCG_EXT_CTL: if ((!msr_info->host_initiated && From patchwork Wed May 3 18:28:49 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 89812 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp1534925vqo; Wed, 3 May 2023 11:40:48 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ54Q4cB06F7MYu2Un30lII4lWy9OqZubBgkBGnM4LvcCP6ZD3c+gkkbdGmpCjJKUtO363EY X-Received: by 2002:a05:6a20:9185:b0:da:8917:bdc5 with SMTP id v5-20020a056a20918500b000da8917bdc5mr29276408pzd.45.1683139247975; Wed, 03 May 2023 11:40:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1683139247; cv=none; d=google.com; s=arc-20160816; b=yoD9Ni+feKz4NOgs2ENfrGk4pN2rKWnVU6UzS9YgVM59XtHNxB2XsLJClL4xK3KHAn 46jf/8JzaBqJTe+lOqlPUO5DQjr/oEmyoEhUhJGR8pFOCMCtyfA7/FcQLB2qBQPfu1gS oTWcT2n/WI5ZX7IKrKArWlb+60q6jPf0wDgGM+Rigs7Wj34WyCZQG147ZuoMl4vMzngp 0Gat04aWvDEvGUzNna38dekUoJfyIuzyVMxd+K3Vz9jCYDVEkebKh2fDW3IMyVEz8z45 8RT7hBzjhSJ76ZdK8O0vip5s9HlB8Od8sg0pHLh9bR9AmgchkizugB/jG2PpwYCkXX1R BgBQ== 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=rU7RFo/Qi6sAFl76yDK5utbxvptYWkIyT3bH8yXhY1Y=; b=O1Xg95ltODAR026/w1uUS8y5x2+e+2yFGWT9x9Ca3l9Oz0/eA2k8NYGuZbakOcMhn7 uwKxZlKEYrBf4mfPm2sIr/lWoGbnPGJHLsxplKDyCRpEndEUM7+pT5OS2akGCbZCQKj4 rktzeVWr19bNClXHSj8IDlF3EyI/hP++YlcxOn6GBA4wvWENTK7AiGorCRkKE1vyR6tA 7gm3l9MS7k1I8vWy5k75S37n84LJqSHS0TKrI3CqlcuCbvx4DIQAHf45kDK92bxb+o+0 T4nMZDuN+46xhdOflciSJvKkWIl2WoC89GK1+i6ZoA8rtU50rqVO6E5qHCMJnvOxr4zz 6NwA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20221208 header.b="RPZaNW/A"; 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 z18-20020aa79592000000b0063b716685fasi33224633pfj.235.2023.05.03.11.40.33; Wed, 03 May 2023 11:40:47 -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=20221208 header.b="RPZaNW/A"; 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 S230085AbjECS3H (ORCPT + 99 others); Wed, 3 May 2023 14:29:07 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60982 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229993AbjECS3D (ORCPT ); Wed, 3 May 2023 14:29:03 -0400 Received: from mail-yb1-xb4a.google.com (mail-yb1-xb4a.google.com [IPv6:2607:f8b0:4864:20::b4a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5840F5275 for ; Wed, 3 May 2023 11:29:02 -0700 (PDT) Received: by mail-yb1-xb4a.google.com with SMTP id 3f1490d57ef6-b9a75194eebso6787835276.1 for ; Wed, 03 May 2023 11:29:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1683138541; x=1685730541; 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=rU7RFo/Qi6sAFl76yDK5utbxvptYWkIyT3bH8yXhY1Y=; b=RPZaNW/A8d2jFPzO5Uu6mxCjBBnsw736c6iwc2fjyW8mE2OJXdJEsKQGpx06e2NqDO JB46FqXGZ7WGezRBcWe8jWL+JiX+IDEHxOAK6jYXZGOxh+xnykTev40tymd/GSAU4hf9 4hqcrlWTCBRW1FoJ7KItL1u+2KGt3wl+wWTQZyzcRM8aOTxDcCqnfopfrkBEGtDQnudd dA/MoBxmvAVZV10G61+rwJGi14dXUX2nVFJKeqdK7EjhTDtEmX0DrSPcJnWxY8HE9ScQ hERe1vFVfwavgFKEXQa4qM3xTjcaZGISPvPubszeUY0/QlqyDUMKDQlKc6BKIaQq1neS 6HBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683138541; x=1685730541; 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=rU7RFo/Qi6sAFl76yDK5utbxvptYWkIyT3bH8yXhY1Y=; b=DX+icj9JKa1HvMPXEX1qvigtQxJqm1WFdHhnjrLnG1Qgi3QA4Ikb782Q1eYSa0oWAf lMx8MYJr67t/RLNykGNoh0h/Ltg0efCzwmnaekXNRbpxF5DbAnkNsGiGBvMjm9B5t3yY It7RE/1vWWFlpAINHzJwlEQi8zXHHYAL54Bge5z+HmYZCG/fiBTUCtHNW9d6cOGJQxni HEvLz7MJ3nqUB+FhUcV3yTCGh+ZJVddp4XYNAQQoy1iBHxHkLbr+ruUSj8KSodBRICih YqNZ0DZs0Kp7YBCI4+hdUCjYtmnYSuIxSxnbR/u6wTmjesK5K2c/vJukr8MtlbZuXp3E NQUA== X-Gm-Message-State: AC+VfDygyuTP0Rj4gdrQvSDLl7pRz54uL535sBNykDXIX3uSYC8pyItC gjAa65K9QjTe9Z4E3F1TlsTY5Rr+sAY= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a25:5305:0:b0:b92:5a75:9f55 with SMTP id h5-20020a255305000000b00b925a759f55mr13450125ybb.1.1683138541455; Wed, 03 May 2023 11:29:01 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 3 May 2023 11:28:49 -0700 In-Reply-To: <20230503182852.3431281-1-seanjc@google.com> Mime-Version: 1.0 References: <20230503182852.3431281-1-seanjc@google.com> X-Mailer: git-send-email 2.40.1.495.gc816e09b53d-goog Message-ID: <20230503182852.3431281-3-seanjc@google.com> Subject: [PATCH 2/5] KVM: SVM: Use kvm_pat_valid() directly instead of kvm_mtrr_valid() From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Wenyao Hai , Ke Guo X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1764899419930872830?= X-GMAIL-MSGID: =?utf-8?q?1764899419930872830?= From: Ke Guo Use kvm_pat_valid() directly instead of bouncing through kvm_mtrr_valid(). The PAT is not an MTRR, and kvm_mtrr_valid() just redirects to kvm_pat_valid(), i.e. for better or worse, KVM doesn't apply the "zap SPTEs" logic to guest PAT changes when the VM has a passthrough device with non-coherent DMA. Signed-off-by: Ke Guo [sean: massage changelog] Signed-off-by: Sean Christopherson Reviewed-by: Kai Huang --- arch/x86/kvm/svm/svm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c index eb308c9994f9..db237ccdc957 100644 --- a/arch/x86/kvm/svm/svm.c +++ b/arch/x86/kvm/svm/svm.c @@ -2935,7 +2935,7 @@ static int svm_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr) break; case MSR_IA32_CR_PAT: - if (!kvm_mtrr_valid(vcpu, MSR_IA32_CR_PAT, data)) + if (!kvm_pat_valid(data)) return 1; vcpu->arch.pat = data; svm->vmcb01.ptr->save.g_pat = data; From patchwork Wed May 3 18:28:50 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 89813 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp1535015vqo; Wed, 3 May 2023 11:40:58 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ77MCLjbZzb9FEWwdCp6/Cujm9knYIN1VPRigWbZjP6fO9ymSjOja3jK6YqFhdvRmVAG1bl X-Received: by 2002:a05:6a20:1588:b0:f9:1f3e:cccb with SMTP id h8-20020a056a20158800b000f91f3ecccbmr27258404pzj.10.1683139258277; Wed, 03 May 2023 11:40:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1683139258; cv=none; d=google.com; s=arc-20160816; b=JtxTTnrlwXVpdr+kTWxoS8zPhyzhNXmh6H+hsANSZGzUSkjGw3wiHrQn/+0bfd4XvO Q5+LvsMwfKJFMW2keQwcD4/k16q0w1E+MFYRAMitAd6ZYdGykoACeqKB0TPrw4B7lPbd 7OW2AA7jeT7g4rE0qQvEcQXmdgZ+nMkhHpeHeLAO1Mw6gbVGjGe1wODsVNYfTugaFXRD lDWGP89rsOBgNb+bHe19NYTYZxSBlCbvcThd1OTe9TmXQT+ib+MuEJD8Hf/f8OZg9vAL Qkdak8MLo+eLBRQFhABH7GLIKmNVkP9yU6Z/4UbRKFW1EOWAB/VMVJINw/O003VXDu7W 3GiQ== 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=bcUuJsmnNf1FE7EU8eKP0IPIgfKzwZXNJofkM8/MGEI=; b=ebsj71onRCthilnf/B8jZ7Uq1I+LIq3kHdqrdOG4J9XxL9iDiaOwJHMZsDvRilLfBc GFw8Rs5YUUWjq0JiV8+hUvFL+HffJc5cKb2KqmbK7w8lq8gFMPJzbfYK84283uzgDjJV G7DGaOeZkUByHegWdozcpC1QT0G1MOocUvY6tEupcBLkgC79NMwQWDWb4rTgWIMwMKdM DzNzWPCHhRCVPNIw/6JNlfHTHzNuC1+DqbDf+/JsEWRnrMUx9hU7Pi3a8PafZQy20cs/ IZ/zOGlX0/IVXyHG9OGo6nYa0awM+C5pydlklU6rROETYb49KJJVC49B4FJxmxcxKOt1 7odw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20221208 header.b=0xWagrPw; 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 z25-20020aa79599000000b006389d389c01si32969792pfj.78.2023.05.03.11.40.41; Wed, 03 May 2023 11:40:58 -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=20221208 header.b=0xWagrPw; 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 S230008AbjECS3Q (ORCPT + 99 others); Wed, 3 May 2023 14:29:16 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33164 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229993AbjECS3L (ORCPT ); Wed, 3 May 2023 14:29:11 -0400 Received: from mail-yw1-x1149.google.com (mail-yw1-x1149.google.com [IPv6:2607:f8b0:4864:20::1149]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E10507D99 for ; Wed, 3 May 2023 11:29:03 -0700 (PDT) Received: by mail-yw1-x1149.google.com with SMTP id 00721157ae682-55a2648c164so73024577b3.2 for ; Wed, 03 May 2023 11:29:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1683138543; x=1685730543; 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=bcUuJsmnNf1FE7EU8eKP0IPIgfKzwZXNJofkM8/MGEI=; b=0xWagrPwWS6KtZvncnYm+PQ1pC+fpjXwRTFHojXSiK4uCSQMd4zFwJsSHuDj1xngtw X70UtcGdZoTNm6sMNGsoYBdAg3rwStYXTsruvK0NzgmClrr33et/0m7gbrxNpYDLsIVS Mm6fiPPmS8lXwJoP3lX4/N0/MkHsMpSWqCzD0dQ/Ot8CitX06ZQbc/760jgIAa1KHVcO 33ST7LSGDTibEQwzj1Y9IBQlOCQ6eZsCel6Qsx6n57mnjKkNFHEtCqorrrZkB/kWq6TL plHi0VohADz3vEt2ZBATmqMV3d5rr62rcv0mmKXKL5Vk230w6Pi3RrwZUdhS4BFJOI+l H2rA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683138543; x=1685730543; 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=bcUuJsmnNf1FE7EU8eKP0IPIgfKzwZXNJofkM8/MGEI=; b=N+vgBdtLqobivfPDXrOJAjTm8kS6XlP1gUPrzOW2szO2QYj4EUhRpLf82EV3EqwbnL 6bK1via0ApnvSsKOA7wUs7/Q+Vs1D6/2lwe4buU766k86UiPij3GjY9TfsfePxEQjjfs X6pIxRjKgL4QnUYO3zZnidVyOviPg5/7NkmUSBS83qz4WaAuZZ5p/x9tYr/6oVKJRg5r JId9NeCRE6TcmR58f1RXYIYdE+pqowvC83AUlVFJHodbTga+fj9UyJKQ9dqeyhzzYU5X V/5/r+6V0DFwsPwNy9c70n62ccyrXVR4LqAMMjgJKyqw1rOGykLImLg6+qbGJBttmqm7 vBKQ== X-Gm-Message-State: AC+VfDxMEZZuZwNqvyT7fUcxflPQI3sBmzB+E3CfBRKbghVVEHeGnKL8 rGcrNlYwv2LQ5OTbC9B2l7ehrKr97iI= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a81:4007:0:b0:545:1d7f:acbf with SMTP id l7-20020a814007000000b005451d7facbfmr12675966ywn.10.1683138543201; Wed, 03 May 2023 11:29:03 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 3 May 2023 11:28:50 -0700 In-Reply-To: <20230503182852.3431281-1-seanjc@google.com> Mime-Version: 1.0 References: <20230503182852.3431281-1-seanjc@google.com> X-Mailer: git-send-email 2.40.1.495.gc816e09b53d-goog Message-ID: <20230503182852.3431281-4-seanjc@google.com> Subject: [PATCH 3/5] KVM: x86: Use MTRR macros to define possible MTRR MSR ranges From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Wenyao Hai , Ke Guo X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,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?1764899430707587998?= X-GMAIL-MSGID: =?utf-8?q?1764899430707587998?= Use the MTRR macros to identify the ranges of possible MTRR MSRs instead of bounding the ranges with a mismash of open coded values and unrelated MSR indices. Carving out the gap for the machine check MSRs in particular is confusing, as it's easy to incorrectly think the case statement handles MCE MSRs instead of skipping them. Drop the range-based funneling of MSRs between the end of the MCE MSRs and MTRR_DEF_TYPE, i.e. 0x2A0-0x2FF, and instead handle MTTR_DEF_TYPE as the one-off case that it is. Extract PAT (0x277) as well in anticipation of dropping PAT "handling" from the MTRR code. Keep the range-based handling for the variable+fixed MTRRs even though capturing unknown MSRs 0x214-0x24F is arguably "wrong". There is a gap in the fixed MTRRs, 0x260-0x267, i.e. the MTRR code needs to filter out unknown MSRs anyways, and using a single range generates marginally better code for the big switch statement. Signed-off-by: Sean Christopherson --- arch/x86/kvm/mtrr.c | 2 +- arch/x86/kvm/x86.c | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/arch/x86/kvm/mtrr.c b/arch/x86/kvm/mtrr.c index 9fac1ec03463..d2c428f4ae42 100644 --- a/arch/x86/kvm/mtrr.c +++ b/arch/x86/kvm/mtrr.c @@ -28,7 +28,7 @@ static bool msr_mtrr_valid(unsigned msr) { switch (msr) { - case 0x200 ... 0x200 + 2 * KVM_NR_VAR_MTRR - 1: + case MTRRphysBase_MSR(0) ... MTRRphysMask_MSR(KVM_NR_VAR_MTRR - 1): case MSR_MTRRfix64K_00000: case MSR_MTRRfix16K_80000: case MSR_MTRRfix16K_A0000: diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index e7f78fe79b32..8b356c9d8a81 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -3700,8 +3700,9 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info) return 1; } break; - case 0x200 ... MSR_IA32_MC0_CTL2 - 1: - case MSR_IA32_MCx_CTL2(KVM_MAX_MCE_BANKS) ... 0x2ff: + case MSR_IA32_CR_PAT: + case MTRRphysBase_MSR(0) ... MSR_MTRRfix4K_F8000: + case MSR_MTRRdefType: return kvm_mtrr_set_msr(vcpu, msr, data); case MSR_IA32_APICBASE: return kvm_set_apic_base(vcpu, msr_info); @@ -4108,9 +4109,10 @@ int kvm_get_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info) msr_info->data = kvm_scale_tsc(rdtsc(), ratio) + offset; break; } + case MSR_IA32_CR_PAT: case MSR_MTRRcap: - case 0x200 ... MSR_IA32_MC0_CTL2 - 1: - case MSR_IA32_MCx_CTL2(KVM_MAX_MCE_BANKS) ... 0x2ff: + case MTRRphysBase_MSR(0) ... MSR_MTRRfix4K_F8000: + case MSR_MTRRdefType: return kvm_mtrr_get_msr(vcpu, msr_info->index, &msr_info->data); case 0xcd: /* fsb frequency */ msr_info->data = 3; From patchwork Wed May 3 18:28:51 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 89814 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp1535056vqo; Wed, 3 May 2023 11:41:06 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ6B/1mTg0q6c1VHu7nFpC/mzMuN70YBdlbFbkr8t4gL4Pvxt7rciW+y6qcip7Af7GYlBOH3 X-Received: by 2002:a05:6a21:6da9:b0:ee:84a2:4ad0 with SMTP id wl41-20020a056a216da900b000ee84a24ad0mr28474728pzb.22.1683139265769; Wed, 03 May 2023 11:41:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1683139265; cv=none; d=google.com; s=arc-20160816; b=yJ3TdOpTYfCJAFYOJQFDJ2lwLKTH5S+AitwmQH7i2ZmmCsG9+2I3kYs+4LF2lyj0Ld geR/fuMerjb5EK7OeGVGWq5u3ttkC6Hbl5pUrCON106ILmjr+24UIPwurNdLwxs5uga5 4VibpRCf6B2ou9jsHkK7+k4wLQXL+UnS/BUQX26lH8SWr349QYwa87pSdtABzGu0IzAF PyFnfIUWIgQhwfC/gD4iGdpcYpt8uNL7hj8MmbaP3d36zxK6ZpyqjlUrubrgd0fg4irv weSh16hqZFUmZ4UTzStFgw5W41xWNuID4tAL+WlGNIesvpJOCn/8wBasScfh4Xalw52M 0gZg== 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=+XG9Kzlllq+ti/90Z+KsBtO7J9NFYimJbVN3QRxLOvk=; b=iePTLUaYTIEyIWzwufFjhWy7L4TybYdA6T+a9riEuzP6BBZFJbuI8A6HtqlDAGNKp9 Jy0nNK029H43NLJL1/DhmnFfinAfMAFF4vqaf51sKYa1VHq+MgMF8Nk66t6zZQRk6ye1 PkEacg5piyFcuBqwuSWk2F12MYWUT910wZ6VpYm/YNgeR5o+pBfhwIMOEyyhWSDq/80D yy//hEdMVAXu4qgv+h6ayeXYuEsAsz97j91qKSMbCr7DWt/mvuMltg7QRC+7SuYma3AS 16n46tBHv2M8/ZSLvb5Bb3iiujJDQGYEAuvTiX6QzGoPPqdvvFOcb3PSlrJtNK0zB6sH bREw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20221208 header.b=X29uNydO; 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 m9-20020a654389000000b0052c2b1efee2si7035304pgp.339.2023.05.03.11.40.48; Wed, 03 May 2023 11:41:05 -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=20221208 header.b=X29uNydO; 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 S229538AbjECS3V (ORCPT + 99 others); Wed, 3 May 2023 14:29:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33304 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230096AbjECS3N (ORCPT ); Wed, 3 May 2023 14:29:13 -0400 Received: from mail-pg1-x549.google.com (mail-pg1-x549.google.com [IPv6:2607:f8b0:4864:20::549]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 767E47DAA for ; Wed, 3 May 2023 11:29:05 -0700 (PDT) Received: by mail-pg1-x549.google.com with SMTP id 41be03b00d2f7-51f10bda596so2392217a12.1 for ; Wed, 03 May 2023 11:29:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1683138545; x=1685730545; 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=+XG9Kzlllq+ti/90Z+KsBtO7J9NFYimJbVN3QRxLOvk=; b=X29uNydOzy9esvjDZDAzmyJGWiaC/8bpqbk2Hn15itn/w45LOQd8JmRA/zpwjar7/G zCfOqNS1PuER3kG90LJ6+faebHsfrBZgI3Gsk9OaOkOjzz+YCncaAaFKFeTjGucnaL82 uV7amdMIE8zdLVIe+qP+XpQmBGhhs/EAOzrLAGU80Lo+kOudelqPKzbSbQ0oQyHVyBMa g50Ev7JfwzCubGHAIE+UmozkyzUX0bVgS5oags8b6FO52NSnPSqiB4IVtTSmtj6QDYHg smF9mSD6ucU4qYrBtDkwQqJSfLnkmTSjv+y/jwtO8cHVaC2OS6dmMMoRczVPyJn910iP gUIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683138545; x=1685730545; 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=+XG9Kzlllq+ti/90Z+KsBtO7J9NFYimJbVN3QRxLOvk=; b=OhzirQdsgOoNgJnJDx/lvZuY84X6myN2HB2J8DJCg8jqEVO/oJq0mtKbBnmPl1KSCK hHERbxET+YyBUWI5P5GDg799IukdENzIiTkmflHChOXNdkIsN3hD6H213E2xoVyAWoT8 KGt3w1z7E3dXrVtfJu+chEWoNI+Q1eTiIkRAF5fPY6x0SGU+LEfDfflUb8as/JxRG/+J VQ7WQ0SkEy0oM6phjqsh/pcFGMnJE+HBdkom9xR7saVevSij+W7DB2gDikp0gGLBRUp+ 95Llf/+hIVBRrr5lPSr9B4k9+RBAIPehZ4o0+5RWgxHpZQxHyL8GXwEq66CU+KFbPlG+ 13oA== X-Gm-Message-State: AC+VfDwZ0RPjezaCuVQtuJZrn56Tj+t90WtNHRNXsArBxgEQ2p6K2ia5 5Dxy/lageqn4MSjN6XcpTgt0UYhu79o= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a63:8142:0:b0:520:53db:fbf with SMTP id t63-20020a638142000000b0052053db0fbfmr760255pgd.6.1683138545003; Wed, 03 May 2023 11:29:05 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 3 May 2023 11:28:51 -0700 In-Reply-To: <20230503182852.3431281-1-seanjc@google.com> Mime-Version: 1.0 References: <20230503182852.3431281-1-seanjc@google.com> X-Mailer: git-send-email 2.40.1.495.gc816e09b53d-goog Message-ID: <20230503182852.3431281-5-seanjc@google.com> Subject: [PATCH 4/5] KVM: x86: WARN if writes to PAT MSR are handled by common KVM code From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Wenyao Hai , Ke Guo X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1764899438657961898?= X-GMAIL-MSGID: =?utf-8?q?1764899438657961898?= WARN and continue if a write to the PAT MSR reaches kvm_set_msr_common() now that both VMX and SVM handle PAT writes entirely on their own. Keep the case statement with a WARN instead of dropping it entirely to document why KVM's handling of reads and writes isn't symmetrical (reads are still handled by kvm_get_msr_common(). Signed-off-by: Sean Christopherson --- arch/x86/kvm/x86.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 8b356c9d8a81..c36256d00250 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -3701,6 +3701,12 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info) } break; case MSR_IA32_CR_PAT: + /* + * Writes to PAT should be handled by vendor code as both SVM + * and VMX track the guest's PAT in the VMCB/VMCS. + */ + WARN_ON_ONCE(1); + fallthrough; case MTRRphysBase_MSR(0) ... MSR_MTRRfix4K_F8000: case MSR_MTRRdefType: return kvm_mtrr_set_msr(vcpu, msr, data); From patchwork Wed May 3 18:28:52 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 89815 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp1535076vqo; Wed, 3 May 2023 11:41:08 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4OFbDVDDV7i1MDLUpuYUctW/2mr043JtIUTgkKohAvnGCSVm2Ge+1p5sKjWThA+902hPZO X-Received: by 2002:a05:6a00:1954:b0:63d:254a:3909 with SMTP id s20-20020a056a00195400b0063d254a3909mr30716100pfk.32.1683139267905; Wed, 03 May 2023 11:41:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1683139267; cv=none; d=google.com; s=arc-20160816; b=mjNW2otkyGv10q2A+JPKta+0QpCQozQlHDPX7MNbSuJMH3QpBlSo8hgV3AtPz2xsl7 Uf43EO8TVJ75Ye3ydFLs/Nxz6HP9Npk90HCwV1Ahx5hYnxSE+DgAHaTlb+c2uro4GifD 7PvQ9SXr4x/uTklU1QplJ851mhXi+vOfuPsjy6so+qYtrhdJWhyqAJNkIbJ41bkbZWYD 8ZzVXio3ZX3B7WFIbHpc49dSD50gTtLa6urwl9Ut/+wQP75eGVnrMUa7ppJv+Va5TOvx cgnV+A91wrD+M9rDBDD7gDijicNpDQ0nEawPI639m9TTP6c2bdAr8OTgTPTYNtXL7fTk wyGg== 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=MYjVSO7f8c+kIFn144EZtSuJFXMcxb7hS79jWpV+usA=; b=ToidPfvXSYJ3lwFwamfO+z67NY5bnrMdALwpsKZzIyvyzqsrjgN3m/fmNdNARNlLg9 DvqcwY0KxVfKA3mHrfw8MuG+p9EGyXe6A7lvCrprxE6dSOat2AffhI4tueoIxUKHxgiR s6jUGbtssLGIkAHkwcKV80woQLFAypmkbNmuX1gCGdYxppjIfWNeV5AlS+ZjjiFn/Lfu Whf2iE1hcLg3wCVuKr6upPK6QTYMPMtN3BWirEmI44uroSlH6hVyFlG1RlSMcNJaqACu xnC2Qh357iu/gU+KfFOcSJrkexr/SyoQY7RgwAEWHWlaiWKPg8TWyV28kaDCjJ3tHs/+ b3JA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20221208 header.b=uHBYwjej; 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 v10-20020aa799ca000000b0063b8e23415esi34232334pfi.92.2023.05.03.11.40.52; Wed, 03 May 2023 11:41:07 -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=20221208 header.b=uHBYwjej; 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 S230146AbjECS3e (ORCPT + 99 others); Wed, 3 May 2023 14:29:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33322 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230092AbjECS3R (ORCPT ); Wed, 3 May 2023 14:29:17 -0400 Received: from mail-pf1-x449.google.com (mail-pf1-x449.google.com [IPv6:2607:f8b0:4864:20::449]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 75C617DA9 for ; Wed, 3 May 2023 11:29:07 -0700 (PDT) Received: by mail-pf1-x449.google.com with SMTP id d2e1a72fcca58-64115ef7234so4721651b3a.1 for ; Wed, 03 May 2023 11:29:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1683138547; x=1685730547; 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=MYjVSO7f8c+kIFn144EZtSuJFXMcxb7hS79jWpV+usA=; b=uHBYwjej/DFECXibkpDHhfTivTrghGDOxsM5wpPm+2OKUgT35SLiyuAcYFfRSe3X2m Q3Kxx17ADvH76AXaDT3kJpvzbCkpSHft5I4S/odpDRI7L+yhK2UAparvBiSkhgjmud53 o8S07sZWBbZfl9vP1rp1WMi4j3MXwj4+m7IHgpFe9vE9XsuCkHP2PynOCPB0N13dUrfr /1U+6AA0iZodAo835RTkH0TA6X2ySLHFsNdvSXdjcjI2X3CaFD1NQgrhzi+uRGKVlGAE hTy2IcBDTowKlnWfXEmDrPtVRklseuhmqGxUvstOhjfpSoWunaoUm/6SA7pzhbLeRiWI aIjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683138547; x=1685730547; 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=MYjVSO7f8c+kIFn144EZtSuJFXMcxb7hS79jWpV+usA=; b=fp7roRkcg3gXWo5QYUIqHgFij4v3zIRqukpe+xp8uxpVl1xMfsLb1jjP3fNyDV06gN 2SJ/BybGO3L6OqFLz51wkFOUHyD1jhryB2zswtPRr+aoh5/18AEIcsPaa2DZPSmdFrob 2qgty54Zu6qI4urYfsahKdE93sU5aqHdwiAmp47dX4Vj8i+43bTMTu4tw3Kxrd4IzJbr HO1a8PeoixHj5Ao7DRbFDKI4fkc3es1gA+GymXCbEHQbSo/nsG47TneHG3ahbce3brFg AULoaQX/T9RWw93+VPSSA2DJe6mHB/fnnKuxhiq1q2ybW9HyO/btKYLW31Nkks4lOUbn /mzw== X-Gm-Message-State: AC+VfDyQRiEkVrxD4VYtMMsdtZLj/EofP5FNPQevJQD4A5fiXqK4+8fk r6/+XKBKlSkzgXH1lOvkOZvhugzaKTM= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a17:903:2292:b0:1ab:19db:f57 with SMTP id b18-20020a170903229200b001ab19db0f57mr271814plh.2.1683138546840; Wed, 03 May 2023 11:29:06 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 3 May 2023 11:28:52 -0700 In-Reply-To: <20230503182852.3431281-1-seanjc@google.com> Mime-Version: 1.0 References: <20230503182852.3431281-1-seanjc@google.com> X-Mailer: git-send-email 2.40.1.495.gc816e09b53d-goog Message-ID: <20230503182852.3431281-6-seanjc@google.com> Subject: [PATCH 5/5] KVM: x86: Move PAT MSR handling out of mtrr.c From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Wenyao Hai , Ke Guo X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1764899440733931139?= X-GMAIL-MSGID: =?utf-8?q?1764899440733931139?= Drop handling of MSR_IA32_CR_PAT from mtrr.c now that SVM and VMX handle writes without bouncing through kvm_set_msr_common(). PAT isn't truly an MTRR even though it affects memory types, and more importantly isn't factored into KVM's handling of non-coherent DMA. The read path is and always has been trivial, i.e. burying it in the MTRR code does more harm than good. Inject #GP unconditionally for the PAT "handlng" in kvm_set_msr_common(), as that code is reached if and only if KVM is buggy. Simply deleting the condition would provide similar functionality, but warning and explicitly alerting userspace that KVM is buggy is desirable. Signed-off-by: Sean Christopherson --- arch/x86/kvm/mtrr.c | 18 +++++------------- arch/x86/kvm/x86.c | 4 +++- 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/arch/x86/kvm/mtrr.c b/arch/x86/kvm/mtrr.c index d2c428f4ae42..76b132ba9df2 100644 --- a/arch/x86/kvm/mtrr.c +++ b/arch/x86/kvm/mtrr.c @@ -41,7 +41,6 @@ static bool msr_mtrr_valid(unsigned msr) case MSR_MTRRfix4K_F0000: case MSR_MTRRfix4K_F8000: case MSR_MTRRdefType: - case MSR_IA32_CR_PAT: return true; } return false; @@ -60,9 +59,7 @@ bool kvm_mtrr_valid(struct kvm_vcpu *vcpu, u32 msr, u64 data) if (!msr_mtrr_valid(msr)) return false; - if (msr == MSR_IA32_CR_PAT) { - return kvm_pat_valid(data); - } else if (msr == MSR_MTRRdefType) { + if (msr == MSR_MTRRdefType) { if (data & ~0xcff) return false; return valid_mtrr_type(data & 0xff); @@ -310,8 +307,7 @@ static void update_mtrr(struct kvm_vcpu *vcpu, u32 msr) gfn_t start, end; int index; - if (msr == MSR_IA32_CR_PAT || !tdp_enabled || - !kvm_arch_has_noncoherent_dma(vcpu->kvm)) + if (!tdp_enabled || !kvm_arch_has_noncoherent_dma(vcpu->kvm)) return; if (!mtrr_is_enabled(mtrr_state) && msr != MSR_MTRRdefType) @@ -382,8 +378,6 @@ int kvm_mtrr_set_msr(struct kvm_vcpu *vcpu, u32 msr, u64 data) *(u64 *)&vcpu->arch.mtrr_state.fixed_ranges[index] = data; else if (msr == MSR_MTRRdefType) vcpu->arch.mtrr_state.deftype = data; - else if (msr == MSR_IA32_CR_PAT) - vcpu->arch.pat = data; else set_var_mtrr_msr(vcpu, msr, data); @@ -411,13 +405,11 @@ int kvm_mtrr_get_msr(struct kvm_vcpu *vcpu, u32 msr, u64 *pdata) return 1; index = fixed_msr_to_range_index(msr); - if (index >= 0) + if (index >= 0) { *pdata = *(u64 *)&vcpu->arch.mtrr_state.fixed_ranges[index]; - else if (msr == MSR_MTRRdefType) + } else if (msr == MSR_MTRRdefType) { *pdata = vcpu->arch.mtrr_state.deftype; - else if (msr == MSR_IA32_CR_PAT) - *pdata = vcpu->arch.pat; - else { /* Variable MTRRs */ + } else { /* Variable MTRRs */ int is_mtrr_mask; index = (msr - 0x200) / 2; diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index c36256d00250..3aa93401a398 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -3706,7 +3706,7 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info) * and VMX track the guest's PAT in the VMCB/VMCS. */ WARN_ON_ONCE(1); - fallthrough; + return 1; case MTRRphysBase_MSR(0) ... MSR_MTRRfix4K_F8000: case MSR_MTRRdefType: return kvm_mtrr_set_msr(vcpu, msr, data); @@ -4116,6 +4116,8 @@ int kvm_get_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info) break; } case MSR_IA32_CR_PAT: + msr_info->data = vcpu->arch.pat; + break; case MSR_MTRRcap: case MTRRphysBase_MSR(0) ... MSR_MTRRfix4K_F8000: case MSR_MTRRdefType: