From patchwork Thu May 11 23:33:44 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 92880 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp4736788vqo; Thu, 11 May 2023 16:39:50 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ6tqCg2CtscjeOtz9YNChSbpy/Jbn96qWK5WmOT9aEbeXsUcskV59WBXimgT5SGKp49+Xbn X-Received: by 2002:a17:90b:198b:b0:24b:8480:39d6 with SMTP id mv11-20020a17090b198b00b0024b848039d6mr22247087pjb.0.1683848389661; Thu, 11 May 2023 16:39:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1683848389; cv=none; d=google.com; s=arc-20160816; b=G1E1g/0wbTMcOqb5+8GTYJC80ZJoZlYH/uM8y4xc9i57KnCrAF+qR8J/FjnRGVX7kc /pzjDERLyMcdUiM6Uy3Iezcwblshl+A4DWo+27G5eAUXfIeL86xrTuBMxMp55zHPoINQ A6llO/3hocpyBs5+cL0Jb52zX099ihd3mcPaoaOk76wkFiHnb2B0NmUSLAa9mZO/lmJX XBATRlmvULjeggT2ITkmU46n+Y9WtcWQeQlD4pSN6jjdhVF4+OrKKdwnijKFcFv4kAWA AUT4JZ2Wvv0cN0Y0RNQQs/PlBzFIorrE6rRYtHE8KkVSZddNcGY43m3CyGOZ/Tb74fU4 0caQ== 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=izzWvJrvZ+wq2quseVrGnV9xDpgTViMwy/x29y6d3lY=; b=XtGpfbzeRjUNg9A97FLBtAi9BO8+CIK0z4Nr2eDMBwrYLQlndxLDYD2y+TtKGSXD7E 7oi6prkkn2MeNw865/XDvAin1tvVsHniR8ipddSfgXWSycvHQvmCMVQ0aI7CdwcqWGgB DC6rVi1huwy5w34s+93XvQrXhXQPMYlMJjMnIH+/lzEydWFuv1dB6DofVLb027AM0gv6 aYNZTxcdnsSa/G6phjPU9sRa8auxD4PzUBi+UqwVYkA8yzN/5Sh6anYjnQ/wBdePvaL/ MXKx6N42reewlgxBqdTK8XrDLIIY6S4GXFT5ee2EZSS+YII/9+puZtmX2HpNr40COlkm n2IA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20221208 header.b="wPABa2//"; 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 e9-20020a63aa09000000b0052c68c1d88asi7558325pgf.597.2023.05.11.16.39.36; Thu, 11 May 2023 16:39:49 -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="wPABa2//"; 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 S239565AbjEKXd6 (ORCPT + 99 others); Thu, 11 May 2023 19:33:58 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39822 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239536AbjEKXd5 (ORCPT ); Thu, 11 May 2023 19:33:57 -0400 Received: from mail-pl1-x649.google.com (mail-pl1-x649.google.com [IPv6:2607:f8b0:4864:20::649]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 50AD6170D for ; Thu, 11 May 2023 16:33:56 -0700 (PDT) Received: by mail-pl1-x649.google.com with SMTP id d9443c01a7336-1aafb2766e0so52303175ad.3 for ; Thu, 11 May 2023 16:33:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1683848036; x=1686440036; 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=izzWvJrvZ+wq2quseVrGnV9xDpgTViMwy/x29y6d3lY=; b=wPABa2//xybhgaoz98n4fU3sMtb97lbp9QoLDf5XJKyMW955uetOUGpIsxhf2D0+h1 kn+5jyba6p1ZvP7/COis+n2CawHWe2XRffkjGaagvUbmm2HFIGP2rF6yDfs7B6b+OQtA +FaseZz3SixBibyBK2Hdk21BQdHgwRuIKfsf7hrMx021SjUXh2peFZPML3T1QS1uT6u1 Y7c3aWGR5rMfVK0sfD+mc3R21HqD1m1VSKrviyxnAaXS/bO7WgypDVdI9hQ9j8g51gWb In3EiL1mjn50YsA1vD0/xMgDrVMpYUkrAKjfu0HBpTltWE2RZB0FT8bg3uzmIvyZWVD3 Q3gQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683848036; x=1686440036; 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=izzWvJrvZ+wq2quseVrGnV9xDpgTViMwy/x29y6d3lY=; b=dpswfmUuQEKXDelIcbyWhbnvEkpykiFIFaiMz4/2lFnwGOOJ5wF8W+fQAE+RbPlJn1 f1pjkyPNc5JwWnpK0Ofzq9Q4WwSZcKxKZWUSIAroYBhtYEWYVSyNr2oSkWxos1fjc5Ff X86tGQfLnsg+z5Gl2AN3m5woYTz28uEzi6uKCjV8TkR/UuR/+O+QEAlyJjG9p4AM7udX CJ1qVA812776aJaXo0q5UP7gOZbreM01aeZdghBbYxpRpdpHzCA0AmeipGF6SzRk1I/W rZF9g/DX2qFQv8iaS7bIxB5Wi/ph9O+FERzPw+soOv2Bt8fd2qJ8ElU98lPuCK1bu7a4 LMXg== X-Gm-Message-State: AC+VfDyV+m69TodJUpkV9GnO984ZsgVr2zujdgwcAWYzCPymTkBRuSNX xV6+2DwTuBS9bJRxCLe1w+FfJDY2dwI= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a17:902:8f98:b0:1ad:c1ca:55ae with SMTP id z24-20020a1709028f9800b001adc1ca55aemr1398487plo.13.1683848035878; Thu, 11 May 2023 16:33:55 -0700 (PDT) Reply-To: Sean Christopherson Date: Thu, 11 May 2023 16:33:44 -0700 In-Reply-To: <20230511233351.635053-1-seanjc@google.com> Mime-Version: 1.0 References: <20230511233351.635053-1-seanjc@google.com> X-Mailer: git-send-email 2.40.1.606.ga4b1b128d6-goog Message-ID: <20230511233351.635053-2-seanjc@google.com> Subject: [PATCH v2 1/8] 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, Kai Huang , 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?1765643009447685255?= X-GMAIL-MSGID: =?utf-8?q?1765643009447685255?= 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(). This aligns VMX with SVM, avoids hiding a very simple operation behind a relatively complicated function call (finding the PAT MSR case in kvm_set_msr_common() is non-trivial), and most importantly, makes it clear that not unwinding the VMCS updates if kvm_set_msr_common() isn't a bug (because kvm_set_msr_common() can never fail for PAT). Opportunistically set vcpu->arch.pat before updating the VMCS info so that a future patch can move the common bits (back) into kvm_set_msr_common() without a functional change. 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(). Cc: Kai Huang Signed-off-by: Wenyao Hai [sean: massage changelog, hoist setting vcpu->arch.pat up] Signed-off-by: Sean Christopherson Reviewed-by: Kai Huang --- 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..33b8625d3541 100644 --- a/arch/x86/kvm/vmx/vmx.c +++ b/arch/x86/kvm/vmx/vmx.c @@ -2290,16 +2290,14 @@ static int vmx_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info) if (!kvm_pat_valid(data)) return 1; + vcpu->arch.pat = data; + if (is_guest_mode(vcpu) && 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); break; case MSR_IA32_MCG_EXT_CTL: if ((!msr_info->host_initiated && From patchwork Thu May 11 23:33:45 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 92884 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp4739094vqo; Thu, 11 May 2023 16:46:00 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7/UhF4d7WqkJGgE4s04HOPBPoAPJwQOob/TqERONpLtIyF74+VjK1rItepQiWnYfOTcphE X-Received: by 2002:a05:6a20:7fa2:b0:f0:916:e5d with SMTP id d34-20020a056a207fa200b000f009160e5dmr28957313pzj.42.1683848760144; Thu, 11 May 2023 16:46:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1683848760; cv=none; d=google.com; s=arc-20160816; b=OgJWWUWtYWVSR6yFIogxZ0TM5kHq2kIUvhGEFlLG3kuNOQ4q8L6OTojLUm0HziFiVx JmXkmLzxeUbFMZmbaWSYw/nifJlZwUBfAEQO53ecCT4HA8a/RBdCzN4yqTzjr/k8dsDh Td8WdB7O6MIj1VJRD+sviAIS8euhfegQQb7fGLwfQfU8a/43jpz5+s+oxvkoHttrmUra 70UfE8HeVnY6wGHcz0pfFMaftTI+VQJBHOi+zYmVkQeYWvlsU0NBEByCoizqfBqYZmCv wceIfulmlHZjt+z1R1/VDGBFH917AfSNO80McERwaKKql75aycHa2zuRP35Jg9ytgK61 AteA== 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=cOrgUlHpOAMPmZ+StptvgqaX6DcVrL8V0qVFj+MTpWU=; b=IKDOilv2tRGe6BnAV48NmuZ0+yyMaYN9t2SRqhsfVBGrZUuLYO3bpClQbrx2KMkNFK TeQRHWV6xX0VbOA0CdIiQjpjfwOuYESfxf4uo5IDREpD2x3i1p7o9IKUjoDI11dqX7hk QvNEJqKyqil23gjVNfO08H8woNSwPji8CGYy0TI2/C3nbHi501ilxb1UwQMlf3Q4EKxH 37LGzqDjKWm81LuoSKUeBWfhp9BNOOjqG/0ioR90kzCAT4yDXudJb/I4GyLwglMCNREg npWgBhZCKslX/BpjQZbFZZUyHYfi8rGOIxoAz9+MXfJWZK1ZOEqUBV3xpDCGYTM8XKbv 7hlQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20221208 header.b=3Fa2pfYT; 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 c186-20020a621cc3000000b0063b88d7c754si9021352pfc.210.2023.05.11.16.45.46; Thu, 11 May 2023 16:46: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=20221208 header.b=3Fa2pfYT; 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 S239591AbjEKXeE (ORCPT + 99 others); Thu, 11 May 2023 19:34:04 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39880 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239574AbjEKXd7 (ORCPT ); Thu, 11 May 2023 19:33:59 -0400 Received: from mail-pl1-x64a.google.com (mail-pl1-x64a.google.com [IPv6:2607:f8b0:4864:20::64a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1DB6D5FD2 for ; Thu, 11 May 2023 16:33:58 -0700 (PDT) Received: by mail-pl1-x64a.google.com with SMTP id d9443c01a7336-1aad9af33c1so93826465ad.0 for ; Thu, 11 May 2023 16:33:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1683848037; x=1686440037; 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=cOrgUlHpOAMPmZ+StptvgqaX6DcVrL8V0qVFj+MTpWU=; b=3Fa2pfYTrzongvw+2wZAPpSntt85/6aUe3Vtm86lOFwvxfbwMs78Q3I2sTq9MovEpR aoNsErsK+Bef8YseM7drICvYFVQQ5IyvsNcDQ8f5Cazlc0O8K+hQTEQEfX6wAs1yCaXp P/UK2gJ8FtA/wOLMlfom8DZmJ3NPPK87eRmkqG75tEijyAnLL7pcOd40Qle53l1an76L 1f+9oIrohRY5Us6SCxGAi/r7Kt7ZZml42CCC6czfGkWfrisfMcu7Syp3vWjwiqpIV2Xn +LMr/4hhvfc1fyi6j49wvBy7ckFxzNq+xwti3aYTsbXS+zA8vlyzoXLHFxB49NLp0A53 93Vg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683848037; x=1686440037; 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=cOrgUlHpOAMPmZ+StptvgqaX6DcVrL8V0qVFj+MTpWU=; b=bCWVi8cJkGUDL/yCEudtgg/p1Z+aXLdF6BSmyATS8U7+KqAy63VIkfjzBhE/qhco/2 rTgZNp8xYDWGVu12xzDlH/Iw3RdgLATLWurIlsnpWaYCk9nn6rup8ANn9+1UMMND1lK3 E2jRFC2PP7B/L/uht/8nbikZiD8g3no8vqBgik7ES0V786ZbpqU3G2FrIvZmIkBMHtkn pHIE2PC8tBI/4rUqHHlxE899MWAQtXmQeNFoaDKVPp/95gsUkYMzjaykKFhohCPo+bYB ZfG+QRLtUiiARCCm8zb0lzms0uGPY8vlQmKbG9Gi6QHq9b68KNYLlTblkj+E5ugg51L5 gDWw== X-Gm-Message-State: AC+VfDwtZG2erXGK2K0YsWtFY/YNmCw6eA3ilePOeNbMoDZSYgRbcYB5 LENLrR37qIUof6UYgXHiVqvnukaqDy4= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a17:902:a612:b0:1a6:9363:163a with SMTP id u18-20020a170902a61200b001a69363163amr8568408plq.10.1683848037734; Thu, 11 May 2023 16:33:57 -0700 (PDT) Reply-To: Sean Christopherson Date: Thu, 11 May 2023 16:33:45 -0700 In-Reply-To: <20230511233351.635053-1-seanjc@google.com> Mime-Version: 1.0 References: <20230511233351.635053-1-seanjc@google.com> X-Mailer: git-send-email 2.40.1.606.ga4b1b128d6-goog Message-ID: <20230511233351.635053-3-seanjc@google.com> Subject: [PATCH v2 2/8] 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, Kai Huang , 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?1765643397263503928?= X-GMAIL-MSGID: =?utf-8?q?1765643397263503928?= 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. is exempt from KVM's "zap SPTEs" logic that's needed to honor guest MTRRs when the VM has a passthrough device with non-coherent DMA (KVM does NOT set "ignore guest PAT" in this case, and so enables hardware virtualization of the guest's PAT, i.e. doesn't need to manually emulate the PAT memtype). Signed-off-by: Ke Guo [sean: massage changelog] Reviewed-by: Kai Huang Signed-off-by: Sean Christopherson --- 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 Thu May 11 23:33:46 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 92883 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp4738499vqo; Thu, 11 May 2023 16:44:30 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ6RXm30aegwbmwoUxT4XnRtRjfsSZPyIUKnYjt4X+lzkBobaer5BCMcUldZSL+Mtrbccnud X-Received: by 2002:a05:6a20:9f90:b0:f2:f05f:6e9e with SMTP id mm16-20020a056a209f9000b000f2f05f6e9emr23055641pzb.29.1683848670445; Thu, 11 May 2023 16:44:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1683848670; cv=none; d=google.com; s=arc-20160816; b=IKly/I41D6XCUO217wC+hfDgrv5JSarhG828RYLGS8Bj58l/uIgI2UmA0+JvRfBGux kOUta9AZeIUVmfyu5Mza1vT0xO32hA1xzo/tlI7FZeoQqm/SN5j3ZUVglS3i9taelCbm WJJoP0Fx/FUz/RWnO8fT4hIqFOhRVzOkmaGdXB9FD4oxDx33HG6rnqeSpR+85EbYerVp M1N9L9pjwdc5370zDMPa8nsJ4GtRcF6r92+Vlkv2/QbEqj+tK+pRaUIdwk9GtUqKM8Z3 P82tzMKEChLbeKHiedeeDeakoPM0h6sQZrxx87ynkWxizAamDRt5T0T07mxQsottNSsq AD5A== 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=kPIJozqKXpOav88tMQOfWStS9Qhm+Sc47i+elwuNCsI=; b=dGP3gWhqQjJUkduFsNeOFALhXY/V5ZeKzifDl/E7uTFCB/3ppF7VzSr32VC2Z7Q+Rb kQpCjgHe760IgOmi7+dxTYmkXnLQfdgBHAD/BNCoWd9qYs7FPsiDgM/aZGniOUdQNM6l laqbKfYgI8vYLMHHcpNUqnc4UUzU4Nv8AzJi8myGBXRQj5HVuH32GBcsZyd8Fw+5Qr4k TMtgtvRdfvugJS+pWOkzhK2SSt7IHaC4M8mxf60kLBQ6ADyoJzxJGsK+OzFULVylaMyD K/6nWojkIRT5GDxs5K/7iQ0Waq7oeVKWXhpKPfxdGb774uA8216fgJvrmfvyW8TUOqWR VtIA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20221208 header.b=B086lI0n; 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 c186-20020a621cc3000000b0063b88d7c754si9021352pfc.210.2023.05.11.16.44.17; Thu, 11 May 2023 16:44:30 -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=B086lI0n; 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 S239609AbjEKXeI (ORCPT + 99 others); Thu, 11 May 2023 19:34:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40036 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239577AbjEKXeD (ORCPT ); Thu, 11 May 2023 19:34:03 -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 AAE9865A4 for ; Thu, 11 May 2023 16:34:00 -0700 (PDT) Received: by mail-pg1-x54a.google.com with SMTP id 41be03b00d2f7-53017eb8b2eso5547426a12.0 for ; Thu, 11 May 2023 16:34:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1683848039; x=1686440039; 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=kPIJozqKXpOav88tMQOfWStS9Qhm+Sc47i+elwuNCsI=; b=B086lI0nSfRZjZS0qeaNeIB8DDth56jWhjosvQ9CDikIgaIEztFBmRseLITc0/8cEN sB4veeK84ZUL5joKqH6ggii054kSdHisLNq4Utk7jHhXp0af8TfzwZumClHUC8FvBk7J 8Mn7v2WRwzoXX4Dh8QgorX7R9KwtJzd8qEu11tgjrMJZT1ICpcVZXQQuwZRp3qdStBe0 dDug+R5w9hlsFahXiEhsS2LDD7b4TUG9NKTFAJYKWgj39cgoGsnveKJOxcyKQDYFaMEY dGTvrnwDnI8ragV8iJXBF8PH8pc4brBGGTDJKecp03K3pLmgEWeVo38MoVQ6c+QI63On 6/bQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683848039; x=1686440039; 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=kPIJozqKXpOav88tMQOfWStS9Qhm+Sc47i+elwuNCsI=; b=K1+QhBqOJhWYpahTBK12o69o4Q+OJaL7ZL64ypXAEeR0Yj5SbKBb9BXCFRsw+IWNrE A9NipQgFeo672OIgAmd1Mvr6I6/xqbZui42uijo6Zsj8dx3dIK29BhyWHrXusccqivuH l6P8/26FZeRuLdgUNbX8bYMbniiIByJ/F5md51MDlp36WrfacA+01uunX+5njRD98mJ/ j2brB4VupCJluzCuZnR65hcYXkBz6hTzOzLVJ5leuGmZ8Q7RiOKtCs6rzoWLy3ZsFGhP fDRIkTCFy9l6bnBlYSghS69Kenb7IVD/PFMZCvpnE9fQGkH8B/HXRuk/O6X4MpZwN4gW Uk7w== X-Gm-Message-State: AC+VfDw9aQSPEXJZOfEVcHAyHlhKXEdOza0vMBIw2zEoAjKnOfwZin9Y f207z6oqKziIz8g1o6TDZdXQjI16Evk= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a63:a1d:0:b0:530:8674:b4d5 with SMTP id 29-20020a630a1d000000b005308674b4d5mr676894pgk.12.1683848039669; Thu, 11 May 2023 16:33:59 -0700 (PDT) Reply-To: Sean Christopherson Date: Thu, 11 May 2023 16:33:46 -0700 In-Reply-To: <20230511233351.635053-1-seanjc@google.com> Mime-Version: 1.0 References: <20230511233351.635053-1-seanjc@google.com> X-Mailer: git-send-email 2.40.1.606.ga4b1b128d6-goog Message-ID: <20230511233351.635053-4-seanjc@google.com> Subject: [PATCH v2 3/8] KVM: x86: Add helper to query if variable MTRR MSR is base (versus mask) From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Kai Huang , 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?1765643303460493422?= X-GMAIL-MSGID: =?utf-8?q?1765643303460493422?= Add a helper to query whether a variable MTRR MSR is a base versus as mask MSR. Replace the unnecessarily complex math with a simple check on bit 0; base MSRs are even, mask MSRs are odd. Signed-off-by: Sean Christopherson --- arch/x86/kvm/mtrr.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/arch/x86/kvm/mtrr.c b/arch/x86/kvm/mtrr.c index 9fac1ec03463..f65ce4b3980f 100644 --- a/arch/x86/kvm/mtrr.c +++ b/arch/x86/kvm/mtrr.c @@ -25,6 +25,12 @@ #define IA32_MTRR_DEF_TYPE_FE (1ULL << 10) #define IA32_MTRR_DEF_TYPE_TYPE_MASK (0xff) +static bool is_mtrr_base_msr(unsigned int msr) +{ + /* MTRR base MSRs use even numbers, masks use odd numbers. */ + return !(msr & 0x1); +} + static bool msr_mtrr_valid(unsigned msr) { switch (msr) { @@ -342,10 +348,9 @@ static void set_var_mtrr_msr(struct kvm_vcpu *vcpu, u32 msr, u64 data) { struct kvm_mtrr *mtrr_state = &vcpu->arch.mtrr_state; struct kvm_mtrr_range *tmp, *cur; - int index, is_mtrr_mask; + int index; index = (msr - 0x200) / 2; - is_mtrr_mask = msr - 0x200 - 2 * index; cur = &mtrr_state->var_ranges[index]; /* remove the entry if it's in the list. */ @@ -356,7 +361,7 @@ static void set_var_mtrr_msr(struct kvm_vcpu *vcpu, u32 msr, u64 data) * Set all illegal GPA bits in the mask, since those bits must * implicitly be 0. The bits are then cleared when reading them. */ - if (!is_mtrr_mask) + if (is_mtrr_base_msr(msr)) cur->base = data; else cur->mask = data | kvm_vcpu_reserved_gpa_bits_raw(vcpu); @@ -418,11 +423,8 @@ int kvm_mtrr_get_msr(struct kvm_vcpu *vcpu, u32 msr, u64 *pdata) else if (msr == MSR_IA32_CR_PAT) *pdata = vcpu->arch.pat; else { /* Variable MTRRs */ - int is_mtrr_mask; - index = (msr - 0x200) / 2; - is_mtrr_mask = msr - 0x200 - 2 * index; - if (!is_mtrr_mask) + if (is_mtrr_base_msr(msr)) *pdata = vcpu->arch.mtrr_state.var_ranges[index].base; else *pdata = vcpu->arch.mtrr_state.var_ranges[index].mask; From patchwork Thu May 11 23:33:47 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 92879 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp4736095vqo; Thu, 11 May 2023 16:37:48 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ5EPKGJfr78CP+aN277NK5kELOlnXoNDd6kM93KKGL53Oj5ztLxdCbhRfTv54TlQeHIzSW0 X-Received: by 2002:a05:6a20:160e:b0:101:1008:6b84 with SMTP id l14-20020a056a20160e00b0010110086b84mr17771183pzj.8.1683848268466; Thu, 11 May 2023 16:37:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1683848268; cv=none; d=google.com; s=arc-20160816; b=0qqB93EZ+feCy8UtFBqmrTxnNgZgmda+vcTG/vD6J83ckwGdj6mgqCnlBwhotkCLNI iBwI87I/DvTm+fxoHfmZm6aLTpIjejzH5tVgrX3QrC4wmO1yDum+aexxYkpaF/+Fw5tW NvUKAhA8vocftpZkdZDaNrEgSmovVPh35LNjaBGRDDET12ZSIyim9eF56WlqlEyinGZd pwoSewRj7tBat6dOjEcdgZpzNwWiPR352Hge21S8Ryu6PHLNMGsmR1zBX9ZGrDy0s5P4 DNr4ZuWUPL2UITlk2bq3C24wEXnjBNhriGNglzL02g4io6eyhUzfRBi4CIUrAwVqKHbI IFQA== 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=AFwpP1qaMZwSk6fg6R/6MjpXxVjL9zg4kzfgxnB0LR8=; b=XAPGf0gyMq2ZBhRc6xEwcCjDDuWOlkX9ngtyFxEeLZHoTWuzI9ZekzClVPZrSy7Jsk eiJJtH+qDdHyPaovCDGzr21WIudmFwHx6QO6eWaje3zd0RzeraRueDRFZkMcioaOSpf9 Lcf0Iv8JxG16bGuuWS3ft4AYxDmjVyh/9W/I65rzqveIoQoNREpiSyyxqJ/kgaI+rcPd jMv1tX/fG9epmNMC7UrnLVJXRZchdyfFZPRy5LdbCdUBBKn/W2/BN8juy9dqBTgW/oX6 gIUE5bSmPRKxcqd7HH7AavvqBa5C0O9PDtZOeAtvdAXBDJFJe1xY6PrCPEnhXfaPRymV 4YPQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20221208 header.b=gRE1sRBK; 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 s64-20020a632c43000000b005030859019fsi8094704pgs.675.2023.05.11.16.37.36; Thu, 11 May 2023 16:37:48 -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=gRE1sRBK; 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 S239576AbjEKXeM (ORCPT + 99 others); Thu, 11 May 2023 19:34:12 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40076 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239593AbjEKXeE (ORCPT ); Thu, 11 May 2023 19:34:04 -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 556827D97 for ; Thu, 11 May 2023 16:34:02 -0700 (PDT) Received: by mail-yb1-xb4a.google.com with SMTP id 3f1490d57ef6-ba6f530c9c7so715882276.3 for ; Thu, 11 May 2023 16:34:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1683848041; x=1686440041; 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=AFwpP1qaMZwSk6fg6R/6MjpXxVjL9zg4kzfgxnB0LR8=; b=gRE1sRBKIQ5Ra7bt0VwwSFM1mECWSD6F7GBLdTQMnjyjyz8bVZQXjUUNykSsjOnHuu +DPx8I/98NIdwNReplgbGD8Pe4SLS4bNBIRHM4gOXin2tZgfjZbLvP0lQ7m/81NBpHWy F1x3/3gSRp52FDkcPBt0yQIAEiOkjInBwg/L/DjKZdNVfADwiRx19khBIXCCDzv44m/9 Zrk1iRstbv28z3bqnmhI9Y2P41ZvnHWKVvkYZ/0QPgMyjRyIYgcvNOmwIj79x1Bw68cK xfq+4rShX9qITK3fhum5rLU0WtYbvVGmGFzXr9LUCneg6ctC44jqlRF0UNCLnKdZ7JSz 4M4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683848041; x=1686440041; 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=AFwpP1qaMZwSk6fg6R/6MjpXxVjL9zg4kzfgxnB0LR8=; b=J3+VEhAUWTnz/XqSKmvK+gJIuImP+ZX8U5oYtf6tb/+Gvh7142csgbHwa6yoiQ4nj5 k3qaVKB61PRflNIHmf44CoO5QyrFY7hv6e8hMLBOKRtCDVsCj2Iln4gXTTUT3M3LdCAz AxkQIZgLbLd4F4DtTRQyPrr/NlTA8tylwww75NqxxYYRHfOZ722rE4I1Q/Ybw/mdzsbh CzXYpe+iOBXoP0tD/FL7dbj+tvy2xy+Ws9gVzRDhUPXp3fSnNbhP1sW7aZe5Iguy/in0 PcnoCaIvTJymQitoV+EyEdXmAyqg/dtfaLCnjJiyEJ0sq93pW3bZYChjrJ50ja82yeDy F5dQ== X-Gm-Message-State: AC+VfDyMefbkMd4BAYz7nslRgHm+hLQ+5NjKCvy6kIfshIUSgcA0jbyM N1TQ9Nyh/Kxx4olO4eT5HaWQ5mZi0/U= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a25:2283:0:b0:ba5:38b:fbbe with SMTP id i125-20020a252283000000b00ba5038bfbbemr5912969ybi.3.1683848041456; Thu, 11 May 2023 16:34:01 -0700 (PDT) Reply-To: Sean Christopherson Date: Thu, 11 May 2023 16:33:47 -0700 In-Reply-To: <20230511233351.635053-1-seanjc@google.com> Mime-Version: 1.0 References: <20230511233351.635053-1-seanjc@google.com> X-Mailer: git-send-email 2.40.1.606.ga4b1b128d6-goog Message-ID: <20230511233351.635053-5-seanjc@google.com> Subject: [PATCH v2 4/8] KVM: x86: Add helper to get variable MTRR range from MSR index From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Kai Huang , 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?1765642882134642114?= X-GMAIL-MSGID: =?utf-8?q?1765642882134642114?= Add a helper to dedup the logic for retrieving a variable MTRR range structure given a variable MTRR MSR index. No functional change intended. Signed-off-by: Sean Christopherson Reviewed-by: Kai Huang --- arch/x86/kvm/mtrr.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/arch/x86/kvm/mtrr.c b/arch/x86/kvm/mtrr.c index f65ce4b3980f..59851dbebfea 100644 --- a/arch/x86/kvm/mtrr.c +++ b/arch/x86/kvm/mtrr.c @@ -31,6 +31,14 @@ static bool is_mtrr_base_msr(unsigned int msr) return !(msr & 0x1); } +static struct kvm_mtrr_range *var_mtrr_msr_to_range(struct kvm_vcpu *vcpu, + unsigned int msr) +{ + int index = (msr - 0x200) / 2; + + return &vcpu->arch.mtrr_state.var_ranges[index]; +} + static bool msr_mtrr_valid(unsigned msr) { switch (msr) { @@ -314,7 +322,6 @@ static void update_mtrr(struct kvm_vcpu *vcpu, u32 msr) { struct kvm_mtrr *mtrr_state = &vcpu->arch.mtrr_state; gfn_t start, end; - int index; if (msr == MSR_IA32_CR_PAT || !tdp_enabled || !kvm_arch_has_noncoherent_dma(vcpu->kvm)) @@ -332,8 +339,7 @@ static void update_mtrr(struct kvm_vcpu *vcpu, u32 msr) end = ~0ULL; } else { /* variable range MTRRs. */ - index = (msr - 0x200) / 2; - var_mtrr_range(&mtrr_state->var_ranges[index], &start, &end); + var_mtrr_range(var_mtrr_msr_to_range(vcpu, msr), &start, &end); } kvm_zap_gfn_range(vcpu->kvm, gpa_to_gfn(start), gpa_to_gfn(end)); @@ -348,14 +354,12 @@ static void set_var_mtrr_msr(struct kvm_vcpu *vcpu, u32 msr, u64 data) { struct kvm_mtrr *mtrr_state = &vcpu->arch.mtrr_state; struct kvm_mtrr_range *tmp, *cur; - int index; - index = (msr - 0x200) / 2; - cur = &mtrr_state->var_ranges[index]; + cur = var_mtrr_msr_to_range(vcpu, msr); /* remove the entry if it's in the list. */ if (var_mtrr_range_is_valid(cur)) - list_del(&mtrr_state->var_ranges[index].node); + list_del(&cur->node); /* * Set all illegal GPA bits in the mask, since those bits must @@ -423,11 +427,10 @@ int kvm_mtrr_get_msr(struct kvm_vcpu *vcpu, u32 msr, u64 *pdata) else if (msr == MSR_IA32_CR_PAT) *pdata = vcpu->arch.pat; else { /* Variable MTRRs */ - index = (msr - 0x200) / 2; if (is_mtrr_base_msr(msr)) - *pdata = vcpu->arch.mtrr_state.var_ranges[index].base; + *pdata = var_mtrr_msr_to_range(vcpu, msr)->base; else - *pdata = vcpu->arch.mtrr_state.var_ranges[index].mask; + *pdata = var_mtrr_msr_to_range(vcpu, msr)->mask; *pdata &= ~kvm_vcpu_reserved_gpa_bits_raw(vcpu); } From patchwork Thu May 11 23:33: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: 92878 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp4735522vqo; Thu, 11 May 2023 16:36:19 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ58JwjXP4jTAFTf+M51dtLVYMh5XIXCHfYtNDDck9uOp0zhl4l5JANwsnvAE9JW5v7eL09c X-Received: by 2002:a17:902:bd85:b0:1a6:9ec2:a48f with SMTP id q5-20020a170902bd8500b001a69ec2a48fmr22542738pls.34.1683848178794; Thu, 11 May 2023 16:36:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1683848178; cv=none; d=google.com; s=arc-20160816; b=XozyNrVxm2U2763IvVPap+u0pmxJyTgD+7MjhuYUsraPY8EC+vpY16aU/L/DmCUsd9 bYf6OgZPKW2WF9rx1UAfaBqbqdJAZ6Q90K9XuY4WF09srjSNRmu+NEt7G3aYx47og9JH 2LrrNBvHAuLHCV68H3EpSm+laSHPnuuv4eC7D8I6OMbaOCCu+lRwVo6k1CG9ZglTTx6c U0PjR71HpJNI753sgmjaHTAefyOeDZ1SFlpGar99DoPLQqpvjvTApRhu4rGXHfkepbU6 NEi/BTVC+/EKwSfkLrj0ibXRlo893aWfVL0B2F0ruGIQ9zQv2QgA5ShePppcgfbHhq/4 BLiA== 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=3SaHwYEbuDBGE2GkNVn0nUXWR/dUffqKjw9nfTur2e0=; b=ObVHMqILs2JmybM3/woH8fe8aJgWR0RIQGBMW1b8B7TBXHKCQCRLBBeEy1itXEbi4p MatABHInTpeqVIoQJdno3Fxwzx5PJhQfqQA6xY+wV0fbxtsEPffXNvnPHepwsaIf25hG tfnTAkMo3cQi0pejLvt2UP+nYYCz/GDUEyIjwRXRQ3AS2QYVEDn+0yAqH4nlUq6v46Rr Wbci9Muej5wRgbAWh0stb6xUmw6s2fPgeb1IUzp3Dz/6idSwKZPPxbAYl1+ooNCB8QbR U+umvmlwcBDvZETuMsnDzzN+Mj4fIpOhG3FdpRef/DgxlGxBbzrofjOVlnSktE851uGp GS1w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20221208 header.b=azTYuOeM; 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 y23-20020a17090a105700b0025289f6e346si2977613pjd.13.2023.05.11.16.36.06; Thu, 11 May 2023 16:36:18 -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=azTYuOeM; 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 S239640AbjEKXeR (ORCPT + 99 others); Thu, 11 May 2023 19:34:17 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40134 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239601AbjEKXeF (ORCPT ); Thu, 11 May 2023 19:34:05 -0400 Received: from mail-yb1-xb49.google.com (mail-yb1-xb49.google.com [IPv6:2607:f8b0:4864:20::b49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B87D47D82 for ; Thu, 11 May 2023 16:34:03 -0700 (PDT) Received: by mail-yb1-xb49.google.com with SMTP id 3f1490d57ef6-ba237aec108so8383595276.3 for ; Thu, 11 May 2023 16:34:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1683848043; x=1686440043; 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=3SaHwYEbuDBGE2GkNVn0nUXWR/dUffqKjw9nfTur2e0=; b=azTYuOeMwkjRdRGvY2tkEm8mIWO3uiXKb8TEZWxqgdMKxgvivF0rVoBMQv3TkBtBBs dsI2mSzVifPR+40xtIyraTQ5C04mCD/anwqN5rq9NYANplpBl7X4I2y10mT4kBuTyNSC MzkAmn2QGmnpNG/HphgKY6OR2FA86nlHdjWo2y/KVpJI1VZ7RUtl7glezHZtZeKTEjsB YOmirNZvwfUB99+a1JZQdbC3/ghfRhtMqZPOX6Bc+dqpO7zn2aMka9BvX6rEl1S570Bt mX6pB+8e0Aava0hcMaK2IRqnwSvg/+u1gqrLnBM/dWxJAvLfjbk7oyf561ur8fxmpXZX 4p7w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683848043; x=1686440043; 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=3SaHwYEbuDBGE2GkNVn0nUXWR/dUffqKjw9nfTur2e0=; b=C79P5k+eEXkuggak41jdb8sSJT2MrB2QnhElBJzijK5ahooPNaFR+9YmMoQv5R3Hsk tjA9YfNqglkDbIqAr7zrNlOa4CP8ZqxahUWJAWO7uOsp/vk6geg1ySKIrZt4uMRpnuvQ uGG44+o1n00FMcYyViQ+c6ScNtQYUXWdyYH8oyrDwrQnYFieKNMH5Q25EvNSpmwaglqY 8IqOsYA+MqTc7IT180hSplYqcpT+dZfvRXunYBDuxAavWfEk8jtyRZJJ9qAfZW2GssJp aSo5Rc+HzrrM0B4HGHnN4+fNiGwO5l15tVx/3ljPsbuV3Iv/PCTF3afwi+CM10R2k89p bEFg== X-Gm-Message-State: AC+VfDycBwRV9N0SXI22EPjvfP3t4V+EChPQGnvLuxX/3a0fD6G4m/4t t3dqtJU8XeTzfwr8rBXrBdnrsMOVEEo= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a05:6902:11c9:b0:b9d:ed0f:b9db with SMTP id n9-20020a05690211c900b00b9ded0fb9dbmr14291341ybu.6.1683848043038; Thu, 11 May 2023 16:34:03 -0700 (PDT) Reply-To: Sean Christopherson Date: Thu, 11 May 2023 16:33:48 -0700 In-Reply-To: <20230511233351.635053-1-seanjc@google.com> Mime-Version: 1.0 References: <20230511233351.635053-1-seanjc@google.com> X-Mailer: git-send-email 2.40.1.606.ga4b1b128d6-goog Message-ID: <20230511233351.635053-6-seanjc@google.com> Subject: [PATCH v2 5/8] 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, Kai Huang , 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?1765642788253888625?= X-GMAIL-MSGID: =?utf-8?q?1765642788253888625?= 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 Reviewed-by: Kai Huang --- arch/x86/kvm/mtrr.c | 7 ++++--- arch/x86/kvm/x86.c | 10 ++++++---- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/arch/x86/kvm/mtrr.c b/arch/x86/kvm/mtrr.c index 59851dbebfea..dc213b940141 100644 --- a/arch/x86/kvm/mtrr.c +++ b/arch/x86/kvm/mtrr.c @@ -34,7 +34,7 @@ static bool is_mtrr_base_msr(unsigned int msr) static struct kvm_mtrr_range *var_mtrr_msr_to_range(struct kvm_vcpu *vcpu, unsigned int msr) { - int index = (msr - 0x200) / 2; + int index = (msr - MTRRphysBase_MSR(0)) / 2; return &vcpu->arch.mtrr_state.var_ranges[index]; } @@ -42,7 +42,7 @@ static struct kvm_mtrr_range *var_mtrr_msr_to_range(struct kvm_vcpu *vcpu, 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: @@ -88,7 +88,8 @@ bool kvm_mtrr_valid(struct kvm_vcpu *vcpu, u32 msr, u64 data) } /* variable MTRRs */ - WARN_ON(!(msr >= 0x200 && msr < 0x200 + 2 * KVM_NR_VAR_MTRR)); + WARN_ON(!(msr >= MTRRphysBase_MSR(0) && + msr <= MTRRphysMask_MSR(KVM_NR_VAR_MTRR - 1))); mask = kvm_vcpu_reserved_gpa_bits_raw(vcpu); if ((msr & 1) == 0) { 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 Thu May 11 23:33: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: 92877 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp4735169vqo; Thu, 11 May 2023 16:35:34 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7QxKVXU4C4aqoF3haBUs56ZkDb1T5qxMucXIOSlt8mzuqb+SXkzdK5RjaFaLErUohBCqgH X-Received: by 2002:a05:6a20:4419:b0:100:1044:9ccb with SMTP id ce25-20020a056a20441900b0010010449ccbmr22710230pzb.60.1683848134369; Thu, 11 May 2023 16:35:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1683848134; cv=none; d=google.com; s=arc-20160816; b=G5y25+z83mlEF+KXn5nSRbzWiOIjoqRcF/Idey28Vo0DRzxe87m+Z77GOAtXE3DNgi IM3g59L8+zsA1MtHfqqivYkK8i8l2Cb0Z5aGYYGwNePw21s5I68sIrg3RElV3q9JRtR2 L+YCKO3mqisOvKpC20EtB6Tzl3jOeq6N04uyxOOxD4JilPBxT8RO5D9rO8cQ9YkLu/PA lh5h5qYfR+iviT1EGUjq7ZCC37Nd5+jA84DhGWyT66K/h9SgvTc/O7thywZh1cWKVx4v bVKUqflna0pQNzvHecDiMR2waa6LbHlUsYuQkWV6P8RK4xMOQS3+L3DFvttoyHiGVzNm fZUg== 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=RHS7AeIFZovBrRj7A9l+HBtCSJJvNOkTQRZrmphRUI0=; b=jxruBrMyEeJ+u0evfDMVNgJwBb1urmjG/gUPhA9PZyyUVcJwqnu6kbqB6hCRpMKxjy +LAq3EVFB1HaTeOQe2YFeaVgvaVG3osYZyljoz2XUWl3UCZkxygl63Gru5x4nmPaySAi OkP9OXGoj398UK4dsF7mZNzOnTioP2tlbEE1L9syQkUGSNy7IM0qQONcRV2kw0IwoqGK V2QAEuXcANG4JugJnTdyiPPbi3v1M3/9bZjiXIGA0TsXUtFrfY/07cb3pcd852XZyPiL ls3sdlBpCxa6zydHTQturebE3VKSvSZGJiOajosdngUJhLKYq+w7S2W8E9dZ3Ta+8AAt tPbw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20221208 header.b=0tx8Ind3; 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 t17-20020a639551000000b0050bd4b86169si7806673pgn.414.2023.05.11.16.35.21; Thu, 11 May 2023 16:35:34 -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=0tx8Ind3; 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 S239605AbjEKXeV (ORCPT + 99 others); Thu, 11 May 2023 19:34:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40026 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239586AbjEKXeH (ORCPT ); Thu, 11 May 2023 19:34:07 -0400 Received: from mail-yb1-xb49.google.com (mail-yb1-xb49.google.com [IPv6:2607:f8b0:4864:20::b49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 835DC65A4 for ; Thu, 11 May 2023 16:34:05 -0700 (PDT) Received: by mail-yb1-xb49.google.com with SMTP id 3f1490d57ef6-b8f324b3ef8so11462813276.0 for ; Thu, 11 May 2023 16:34:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1683848044; x=1686440044; 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=RHS7AeIFZovBrRj7A9l+HBtCSJJvNOkTQRZrmphRUI0=; b=0tx8Ind3vnPelqhWS3UozQxmgv/3gx2xhExsOSrMCvy8bPHRDHPtRNxqFI1LB+2mi3 pTnJkrK/FNE/JTFksxeHfpfCuQs0kmhmqFVV6MSRUOHa3gyJjRJ/io08JGy6oSUkhQHE WhkGygcckRQomRrhEwQ1Wu1VEU5VOKehDRv6UElAJKU6w/Ji7K4L+ROhhhXmFFC+EBPs RlaphzxWk2POeTxmCS7rvtk/8SqOv8Ha1EqyuJbR+E7va1LjsTcBvsZ7xI1nRflCin6F jirnjWy22JKhM5ebenjTvnhYKFIKfV3jTpf7/UvAWvYYD925l2M+JzZgBeTEBwxowdDH nsRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683848044; x=1686440044; 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=RHS7AeIFZovBrRj7A9l+HBtCSJJvNOkTQRZrmphRUI0=; b=Hn4PGlhK/BXNOjZ0uG5cGZptLtnzZYUqrxyaQ4m9HydzQ4Rn9ZzTscw/dR05hGagMU QhpUfWxJUXYBH0y0fnK+W93tDHgHQJx2wES94tyvJUGR9D7Ns+66xFXjpT0F56TzkitC js0u+bu4vIBQpt+MvCRuyDHkpDGCv9fbh7S90CDehUTcupJIJRvhWBtxSxZricOTqRCe +1yYSDkbZz+1PRD7HROoiL0O8Dzab017X25LQcUGeQJ0mUAGXFJP4r1wQG3UVM7c4swa 2bkdNAg20591QUu18VAtYYYgVRj+YG8IMMOzf6L2UM7bDyYl8h+VXYRkBNogpIu97XNx 2hWA== X-Gm-Message-State: AC+VfDyC1pgTq7Ht/69sYXvAGNDwnTqal4zylwnA6biCUjbpKEF9TNPD 19qszuDdEUj0TslyDENS5RgyyaRew8E= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a25:dc43:0:b0:ba1:6f1b:8905 with SMTP id y64-20020a25dc43000000b00ba16f1b8905mr14135026ybe.4.1683848044752; Thu, 11 May 2023 16:34:04 -0700 (PDT) Reply-To: Sean Christopherson Date: Thu, 11 May 2023 16:33:49 -0700 In-Reply-To: <20230511233351.635053-1-seanjc@google.com> Mime-Version: 1.0 References: <20230511233351.635053-1-seanjc@google.com> X-Mailer: git-send-email 2.40.1.606.ga4b1b128d6-goog Message-ID: <20230511233351.635053-7-seanjc@google.com> Subject: [PATCH v2 6/8] 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, Kai Huang , 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?1765642741388922686?= X-GMAIL-MSGID: =?utf-8?q?1765642741388922686?= 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 KVM enables hardware virtualization of guest PAT (by NOT setting "ignore guest PAT") when a guest has non-coherent DMA, i.e. KVM doesn't need to zap SPTEs when the guest PAT changes. The read path is and always has been trivial, i.e. burying it in the MTRR code does more harm than good. WARN and continue for the PAT case in kvm_set_msr_common(), as that code is _currently_ reached if and only if KVM is buggy. Defer cleaning up the lack of symmetry between the read and write paths to a future patch. Signed-off-by: Sean Christopherson Reviewed-by: Kai Huang --- arch/x86/kvm/mtrr.c | 19 ++++++------------- arch/x86/kvm/x86.c | 13 +++++++++++++ 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/arch/x86/kvm/mtrr.c b/arch/x86/kvm/mtrr.c index dc213b940141..cdbbb511f940 100644 --- a/arch/x86/kvm/mtrr.c +++ b/arch/x86/kvm/mtrr.c @@ -55,7 +55,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; @@ -74,9 +73,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); @@ -324,8 +321,7 @@ static void update_mtrr(struct kvm_vcpu *vcpu, u32 msr) struct kvm_mtrr *mtrr_state = &vcpu->arch.mtrr_state; gfn_t start, end; - 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) @@ -392,8 +388,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); @@ -421,13 +415,12 @@ 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 */ if (is_mtrr_base_msr(msr)) *pdata = var_mtrr_msr_to_range(vcpu, msr)->base; else diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 8b356c9d8a81..d71cf924cd8f 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -3701,6 +3701,17 @@ 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); + + if (!kvm_pat_valid(data)) + return 1; + + vcpu->arch.pat = data; + break; case MTRRphysBase_MSR(0) ... MSR_MTRRfix4K_F8000: case MSR_MTRRdefType: return kvm_mtrr_set_msr(vcpu, msr, data); @@ -4110,6 +4121,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: From patchwork Thu May 11 23:33: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: 92882 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp4738356vqo; Thu, 11 May 2023 16:44:07 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ6p2frgQkGbMRBxqGNdhQVe58Mua5/E+lx2aH/djAo+i3gAq33wj8iTj8gon+0NnPk05vvi X-Received: by 2002:a05:6a20:a10c:b0:103:8643:f0c with SMTP id q12-20020a056a20a10c00b0010386430f0cmr6477878pzk.0.1683848647672; Thu, 11 May 2023 16:44:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1683848647; cv=none; d=google.com; s=arc-20160816; b=B+zCY0uVbZgU1CA4Hfyr3F9gIyjNQ0HS8mDqfJ4F6ib3Fw1kJRw22sXKZAAYH+Zsna AbYr2QoCs9UIsnruPJbkSm2ncXEo70HuCpmlIfL0Y3hFFPrQh8hGUDEkJn20UwdkYjIB orW0lx3K5Wkxefmy6OVIfBabcA74scqHDSvmIZSTyuDEWZrBmPeRcVpW8biCf3nqlK+8 z0G5sBczM1Ae5rAN7KtTOQ2JCc6UUhbFNi3Lq9t/lSEJo2KqWTaCw8ufZIfh6Bi3NQ4T WhYDNhmh7BeHY1ZaMqN/b0yOSVc7M3vhsUyQuQF5/g0lBVlvu/qb4R7mjfWQE63mcAzL E/xQ== 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=iMwZebLgqrimvcRjxTfXs1dPRahEkXvBmYggFarwQK8=; b=IHf/6970PsxxBhtiA6IGftoy8TzTwvI8i4SyIc7iXgZdp78BN516OmguOGSowf9Gqe tTXXw7XI6bk3GvwHWIyidhGu6NaTRYz7q9DoAPlw6FTfuZ1B6P587A76wElgLmwj/uIr bNjkmhACUKwoBzSqxUd7+BVF+V59Q3amfZ+WuydP5W6Ym1g3wHzCksj8JU+TMjeSFDvX fD6r3PC5ktB2j/b1v1CE/IyHAwMEMkk34C43gzV1+sguWANMTICTB+Fw9iR223dkrJtT 6t4lxR45bYkfLqQmTl0q1HxEnE/r6c0RnjI+h2iTovXLc7DXLUYhQ2/VBiL7Zvfc2FBV 61KQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20221208 header.b=6B1XJv4N; 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 t17-20020a639551000000b0050bd4b86169si7806673pgn.414.2023.05.11.16.43.55; Thu, 11 May 2023 16:44: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=6B1XJv4N; 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 S239663AbjEKXe0 (ORCPT + 99 others); Thu, 11 May 2023 19:34:26 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40050 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239589AbjEKXeK (ORCPT ); Thu, 11 May 2023 19:34:10 -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 DC5F67DAA for ; Thu, 11 May 2023 16:34:06 -0700 (PDT) Received: by mail-pf1-x44a.google.com with SMTP id d2e1a72fcca58-643a1fed384so4792471b3a.3 for ; Thu, 11 May 2023 16:34:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1683848046; x=1686440046; 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=iMwZebLgqrimvcRjxTfXs1dPRahEkXvBmYggFarwQK8=; b=6B1XJv4N1xwFm9+hw3yUdlyIha5yGy5ism5usAmm7EBXKHEUSxlhvEuMjk30Ogb6/g OPwyvr1uYzs1afzyIN6AKaE+VoaJRpnxiqIVgwCSe3qpJLDAZ/caTCsZP1HDWtYpaDqF 5MajFgVb/NeKV08xJhzUy5dWZkSBb8oqSQh150nLBW/30x+CZrkAiptOJa1TuO00zExa Ki+4/RHftZI/v6X81Fuf9m0yL+VvVGLS+XMT7BxI2Xw5q/UW5sVKgsgFGjrfSW3plTtS ACrHIqyH0QRZ6rulFJHprnjG738oBMuikGZKQOcv92lB+NbZTlahrsPqhzDdeeMMJh+7 PaMw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683848046; x=1686440046; 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=iMwZebLgqrimvcRjxTfXs1dPRahEkXvBmYggFarwQK8=; b=UfPO8hWFZ/vKA6lre4GcabVij6608S5ZzIRPPZKi8/98fqnDN183HhjAY+VWZuoq8L kmGH74SgoAXg4K2+dDLfJCajsbzzDwQlOgQRVIqIM+72Hhl8mPyZ7BAqQle6osjgOvZE HyykbkzFExrpXkFCdcxy9/7iI+AeN3MUOE53qzYxtxgCKAby7+eFC/URV2Cm5GwCCHgB D2p3DldQuzbi/8JruKUNkidNJ6DYn5CYfQWK/qzhu+FXbHazqw5yt7bDOmf0bxQG3nNM VnY1WYnfTW0eUOp9YYpCOSYDRXtEOzX6zZ6BTLFwc5DdX4POgYpM30oZpHKbictupfQl uM/w== X-Gm-Message-State: AC+VfDwqm06qJm38qAp3oKVdB82lwvlrXLqpgmtCpgArfylkEE3PNb1j t8FR5wg7HTDxkpDYauTaMVVoK65J2tI= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a05:6a00:7d6:b0:624:5886:4b4b with SMTP id n22-20020a056a0007d600b0062458864b4bmr5999295pfu.5.1683848046330; Thu, 11 May 2023 16:34:06 -0700 (PDT) Reply-To: Sean Christopherson Date: Thu, 11 May 2023 16:33:50 -0700 In-Reply-To: <20230511233351.635053-1-seanjc@google.com> Mime-Version: 1.0 References: <20230511233351.635053-1-seanjc@google.com> X-Mailer: git-send-email 2.40.1.606.ga4b1b128d6-goog Message-ID: <20230511233351.635053-8-seanjc@google.com> Subject: [PATCH v2 7/8] KVM: x86: Make kvm_mtrr_valid() static now that there are no external users From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Kai Huang , 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?1765643279543448370?= X-GMAIL-MSGID: =?utf-8?q?1765643279543448370?= Make kvm_mtrr_valid() local to mtrr.c now that it's not used to check the validity of a PAT MSR value. Signed-off-by: Sean Christopherson Reviewed-by: Kai Huang --- arch/x86/kvm/mtrr.c | 3 +-- arch/x86/kvm/x86.h | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/arch/x86/kvm/mtrr.c b/arch/x86/kvm/mtrr.c index cdbbb511f940..3eb6e7f47e96 100644 --- a/arch/x86/kvm/mtrr.c +++ b/arch/x86/kvm/mtrr.c @@ -65,7 +65,7 @@ static bool valid_mtrr_type(unsigned t) return t < 8 && (1 << t) & 0x73; /* 0, 1, 4, 5, 6 */ } -bool kvm_mtrr_valid(struct kvm_vcpu *vcpu, u32 msr, u64 data) +static bool kvm_mtrr_valid(struct kvm_vcpu *vcpu, u32 msr, u64 data) { int i; u64 mask; @@ -100,7 +100,6 @@ bool kvm_mtrr_valid(struct kvm_vcpu *vcpu, u32 msr, u64 data) return (data & mask) == 0; } -EXPORT_SYMBOL_GPL(kvm_mtrr_valid); static bool mtrr_is_enabled(struct kvm_mtrr *mtrr_state) { diff --git a/arch/x86/kvm/x86.h b/arch/x86/kvm/x86.h index c544602d07a3..82e3dafc5453 100644 --- a/arch/x86/kvm/x86.h +++ b/arch/x86/kvm/x86.h @@ -309,7 +309,6 @@ void kvm_deliver_exception_payload(struct kvm_vcpu *vcpu, void kvm_vcpu_mtrr_init(struct kvm_vcpu *vcpu); u8 kvm_mtrr_get_guest_memory_type(struct kvm_vcpu *vcpu, gfn_t gfn); -bool kvm_mtrr_valid(struct kvm_vcpu *vcpu, u32 msr, u64 data); int kvm_mtrr_set_msr(struct kvm_vcpu *vcpu, u32 msr, u64 data); int kvm_mtrr_get_msr(struct kvm_vcpu *vcpu, u32 msr, u64 *pdata); bool kvm_mtrr_check_gfn_range_consistency(struct kvm_vcpu *vcpu, gfn_t gfn, From patchwork Thu May 11 23:33: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: 92881 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp4738223vqo; Thu, 11 May 2023 16:43:45 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ53cjWho5L0q11rFFLixT7aP6uIKXd+8m9ACpozntZgdeWvw/a7Is7BJFcvAdh+CSvBb/Ho X-Received: by 2002:a05:6a20:a125:b0:103:be8d:d512 with SMTP id q37-20020a056a20a12500b00103be8dd512mr5748778pzk.23.1683848625380; Thu, 11 May 2023 16:43:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1683848625; cv=none; d=google.com; s=arc-20160816; b=xSjcKvB6n/CUlxbJShGTx9AqY0FzE60PfjVywHkxLfxiVm9urwMldKdCLEBO1Wyu3r ZLb49zNA+yd6LhiZBrTcZRvG62HqnFhPPrHwee/MGjPmCGHawLO/J+jLneUcBDiP/Oz4 qapTlq6DB7vuuNvYhQqTqq5qpLqGsL1J8yYpVWi1SBMT+bmrJcB1alRQcRWXHxIZXS3t L9xDKu4DLfq7XunYwAsUXoq9m42juhnIzce6hs+ptaXDBQya4m4i46ww6PJI0we7bb6l ZhoJj2AcBUxcZoBP9gNSDWZZgSIGAFTVEoJKWV3qdO3i7jfxxxq1XhGzqDIB5hFoyDY1 oWbw== 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=5OzO4AIyk8CcuO4AHVhystfnHKvcEmys7VtS5dmQ4ZE=; b=nxI0ON8r6l0N2XKFQbw48IImA+gAWA+w4+mF9OZnY25GLMTHRc7tcP7IGmbmbzeCdB Hgo/XvSjWzD08zUQiZHrsPqFgwKF/S7QZ2iXTvaJzC4JFMfEvksWcFssQxyuEHbwxBgq I7lyCE5VvmyxfQRpfyvw2HRX6i3vAcSKZ5zdRDjqaWP4mt1JUKpjC7Dz4/2hjQF2YFi7 SMuzauW21hWoK0CCUaoOxRASaqr4Tofej1rzKDXgUDOYDr8GK0OG7+1juepBmltwhbRP iwOHD6s5jq6KKjbdiJhgRwEcL46QtNRoVeYCjPpeSv1p3EesDqpY3FrHikwJYIFOOSNp m9Wg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20221208 header.b=FabEf2n4; 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 t17-20020a639551000000b0050bd4b86169si7806673pgn.414.2023.05.11.16.43.31; Thu, 11 May 2023 16:43:45 -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=FabEf2n4; 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 S239669AbjEKXea (ORCPT + 99 others); Thu, 11 May 2023 19:34:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40134 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239644AbjEKXeR (ORCPT ); Thu, 11 May 2023 19:34:17 -0400 Received: from mail-yb1-xb49.google.com (mail-yb1-xb49.google.com [IPv6:2607:f8b0:4864:20::b49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 25F1761B3 for ; Thu, 11 May 2023 16:34:09 -0700 (PDT) Received: by mail-yb1-xb49.google.com with SMTP id 3f1490d57ef6-b9a25f6aa0eso16973704276.1 for ; Thu, 11 May 2023 16:34:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1683848048; x=1686440048; 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=5OzO4AIyk8CcuO4AHVhystfnHKvcEmys7VtS5dmQ4ZE=; b=FabEf2n42yFdnZkLbN5ZUvfZEnmjHnwc4bL3soeRte3ESjENRciPwc/+PDZO96NOZy ZGGZDkN10x7aFM5fJzHXRkvFdq8wZ+4fCecT0IaaAcnc/wXwuLylmJmoTdVDvJR4UWYi vg476bGBpmuyYEsvZY+Xb3uAuueflvB9z5Gi6PzZpVSHGWmOJV0QMIguBJEHhrmxAP1K zPe2v24Slvbp+iTgxUkYTDijq8YotnQYgnIbnVIY/C4JG1djQ81M6oZIoFX2JV4vADOR QZcvWzaC97bo95iCT9wb0MUtrAyG16dPWRGRc8ag3Gb0XE0JF0vq+rhlLsdjQhb/Fuzw 9IHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683848048; x=1686440048; 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=5OzO4AIyk8CcuO4AHVhystfnHKvcEmys7VtS5dmQ4ZE=; b=XQAuRlLL/0YVRF6RTc3BIBOW+tpgyQRhrMHp06xHngZqclsw8QLCoZtMoPD2/axTQ+ OkhKLHonHm0EQ6Pw7OFUlwhY3gV3iUQ7LaumyptVyc3cBTGHup3Wn/i+uaAucp1espbj /ah473EoOG0t8/MVxtVN9mSWQgiKHLLaJyadwxqFPkHkJ1grJGvhdoQVc2ELaAkeoXzl TbcgjUja2xDbVjUuOn/hS/SV5tlOdG0kKgXJwsUuvuzWja+IWKtU12ijsqoeKbw3N2MZ DS1D3PhQh5Wgw1t0NqPH1C51qp55wqsCePwqLDCCQtvG4/HQwvi93RvxFlhwdtalgkCg v2Sw== X-Gm-Message-State: AC+VfDx5h8PFJNZevAkgwFztOpYht06krhXr8qVmNn/PLw7kvSFi0Ahk pm1KZziH70fPWhEENhs0F1521KAcm5E= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a25:e746:0:b0:ba6:c52a:cb7a with SMTP id e67-20020a25e746000000b00ba6c52acb7amr1357395ybh.4.1683848048189; Thu, 11 May 2023 16:34:08 -0700 (PDT) Reply-To: Sean Christopherson Date: Thu, 11 May 2023 16:33:51 -0700 In-Reply-To: <20230511233351.635053-1-seanjc@google.com> Mime-Version: 1.0 References: <20230511233351.635053-1-seanjc@google.com> X-Mailer: git-send-email 2.40.1.606.ga4b1b128d6-goog Message-ID: <20230511233351.635053-9-seanjc@google.com> Subject: [PATCH v2 8/8] KVM: x86: Move common handling of PAT MSR writes to kvm_set_msr_common() From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Kai Huang , 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?1765643256048523804?= X-GMAIL-MSGID: =?utf-8?q?1765643256048523804?= Move the common check-and-set handling of PAT MSR writes out of vendor code and into kvm_set_msr_common(). This aligns writes with reads, which are already handled in common code, i.e. makes the handling of reads and writes symmetrical in common code. Alternatively, the common handling in kvm_get_msr_common() could be moved to vendor code, but duplicating code is generally undesirable (even though the duplicatated code is trivial in this case), and guest writes to PAT should be rare, i.e. the overhead of the extra function call is a non-issue in practice. Suggested-by: Kai Huang Signed-off-by: Sean Christopherson Reviewed-by: Kai Huang --- arch/x86/kvm/svm/svm.c | 7 ++++--- arch/x86/kvm/vmx/vmx.c | 7 +++---- arch/x86/kvm/x86.c | 6 ------ 3 files changed, 7 insertions(+), 13 deletions(-) diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c index db237ccdc957..61d329760f6c 100644 --- a/arch/x86/kvm/svm/svm.c +++ b/arch/x86/kvm/svm/svm.c @@ -2935,9 +2935,10 @@ static int svm_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr) break; case MSR_IA32_CR_PAT: - if (!kvm_pat_valid(data)) - return 1; - vcpu->arch.pat = data; + ret = kvm_set_msr_common(vcpu, msr); + if (ret) + break; + svm->vmcb01.ptr->save.g_pat = data; if (is_guest_mode(vcpu)) nested_vmcb02_compute_g_pat(svm); diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c index 33b8625d3541..2d9d155691a7 100644 --- a/arch/x86/kvm/vmx/vmx.c +++ b/arch/x86/kvm/vmx/vmx.c @@ -2287,10 +2287,9 @@ static int vmx_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info) return 1; goto find_uret_msr; case MSR_IA32_CR_PAT: - if (!kvm_pat_valid(data)) - return 1; - - vcpu->arch.pat = data; + ret = kvm_set_msr_common(vcpu, msr_info); + if (ret) + break; if (is_guest_mode(vcpu) && get_vmcs12(vcpu)->vm_exit_controls & VM_EXIT_SAVE_IA32_PAT) diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index d71cf924cd8f..3759737c0873 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -3701,12 +3701,6 @@ 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); - if (!kvm_pat_valid(data)) return 1;