From patchwork Fri Feb 10 00:31:28 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 55148 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp660461wrn; Thu, 9 Feb 2023 16:33:18 -0800 (PST) X-Google-Smtp-Source: AK7set+IC7gDtLpu6th1AiP48QSGkK+KG7FRjWOTtmoMZqAyppPrcJI11NOFqHxMbQQwkTXLBs9D X-Received: by 2002:a17:906:160c:b0:8af:2f65:c9b0 with SMTP id m12-20020a170906160c00b008af2f65c9b0mr4789644ejd.13.1675989198532; Thu, 09 Feb 2023 16:33:18 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675989198; cv=none; d=google.com; s=arc-20160816; b=GqoSB7EWsUP9wqK+g89kRURVfttzxZDxetlbCjVtFxC0ANKcnI/uSF6t7q/D+5i3g/ q1L9rZHd8CSCusDbA1msk4WWXEZ2phpjrf1H2Cmfzg13b6i+GBtsT50jIglOUc6cD0LU Tx7eEl68vkcz8cXPnMamWxh6mOWoL6qRXw2c1lm5qlVA00rLnQ82Kwlf+rEKZ/VQjE3U 6fSNg3lrF5/zNOx9BBHH4nozlinCRIT6sUbBtx/7NwYLQ0um7dwNWhuGmTggDAVNFMc6 vJSvyIuzAYTcLgNCVsHzy1q74kqNOiz5h72Fw04mxFPZlAm6jmZLZnNKzqY5YGx8MOph KSlQ== 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=+fQX1KYX7m+MKDXvC9TpLUvb23KTkcLLlbaBWIUtq+k=; b=rVs/yvTYj7Hmdf8In5qWKjmfczCsutA5c030upR/3snLM6NaoYihm2LHZgoniyvMuN 4r/LKo+2G6Fb7f3PQzWQzamvDRGxcrQjhPGfoPvqW9+9spzPHIggn/mN2KvN/C9lXfMX yFJ1xmiSGumcMTqD2giGHPoW9741pnuc5t+yBXP2BMvezTACJhGpWH8rHTXj04lOA71J 4JyX4ncZm9XpxbhAbsDxkQvIu2RxYD/ClxxHTkiw6mr9pLevdmt0/R9DmeUevUzEypRN lG7eoJAIeU/zHuiJk7D9fTY8/KTs0Smf8d7hhoHpv5Ey/MK2xifgjkOpjBrm04xgX3lE qnuQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=mrSpI7sL; 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 ft31-20020a170907801f00b008af42fa12b8si2405488ejc.419.2023.02.09.16.32.54; Thu, 09 Feb 2023 16:33:18 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=mrSpI7sL; 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 S230135AbjBJAb7 (ORCPT + 99 others); Thu, 9 Feb 2023 19:31:59 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52094 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229625AbjBJAby (ORCPT ); Thu, 9 Feb 2023 19:31:54 -0500 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 75EEF113D0 for ; Thu, 9 Feb 2023 16:31:53 -0800 (PST) Received: by mail-pf1-x449.google.com with SMTP id z7-20020aa79587000000b00593f19705d5so1791650pfj.10 for ; Thu, 09 Feb 2023 16:31:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; 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=+fQX1KYX7m+MKDXvC9TpLUvb23KTkcLLlbaBWIUtq+k=; b=mrSpI7sLKW8Uif58ICcPWzR9/7fsxF/m4jSPvHSMW+ojCKiCmFJBVZRkFSvzeu8Szn yrpBlBlCmcVEKArgHoYpXljxss3+T556owr4o/sEluhUMNoeRN3sHQau0+Nvh1wj7etQ wxxWmrTP5e82mSvMaGdWYEZ2Q2vheEoNYM7cGOvxEeaQKNkwNtWwvK0OlR3QFL8XAD6V 8CDEiuW3eskkKAN+eKZ3ozQMINpDLi/CyI6+8JrkXcFTiLfJRSWB1lK92vTrYbPZMFBr 57uWzVCaIiXIytusjrVV2JqXeaHkDKIuesgc9/t90OdLlURvO7s6pZI4XJIRz3RH7I/i IaMw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=+fQX1KYX7m+MKDXvC9TpLUvb23KTkcLLlbaBWIUtq+k=; b=r66/gowG0i8iZn/2vF58W3YEDlAx+bfJ/X6GAjPEvgXmM09sL4gYvnQyZ4R/gSh265 h0xIkQmvFUan8zPxh8KGtocNIUXLR5yIEnitMR0Q0WvqBuCY/ROMMGIpS7HLN5EwVf2u nis2vp5Rq8T8cwQHKuTeiiwRdXhDvmqB/d7ONWZJ0GXmePUAu28j1lVzVrb4+NMD7vKj a6IrxGkCVghuktBGF7dLb8LKPpPXzV+Yw3Cm790auMkZ0MbWKy/eHzn60EmV4SJ7ytjW wV4xrZNxMKvUX2UhbY2L4GrQlyVGKrau9KNHEDRGiiaHh1jLeDmRHLHK3nAZ4x6VTp2k l8EA== X-Gm-Message-State: AO0yUKXMPZUN7rdh5sdYTFibsJUHZ6sIUoIfNbvjSxnhjgkJ3+uo5D0V 4N/dAWDKLt8U6w8KuobCNWP6bGHc9yI= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a63:3d84:0:b0:4fb:48c8:28fb with SMTP id k126-20020a633d84000000b004fb48c828fbmr739276pga.122.1675989112919; Thu, 09 Feb 2023 16:31:52 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 10 Feb 2023 00:31:28 +0000 In-Reply-To: <20230210003148.2646712-1-seanjc@google.com> Mime-Version: 1.0 References: <20230210003148.2646712-1-seanjc@google.com> X-Mailer: git-send-email 2.39.1.581.gbfd45094c4-goog Message-ID: <20230210003148.2646712-2-seanjc@google.com> Subject: [PATCH v2 01/21] KVM: x86: Rename kvm_init_msr_list() to clarify it inits multiple lists From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Xiaoyao Li , Like Xu 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,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?1757402050095345107?= X-GMAIL-MSGID: =?utf-8?q?1757402050095345107?= Rename kvm_init_msr_list() to kvm_init_msr_lists() to clarify that it initializes multiple lists: MSRs to save, emulated MSRs, and feature MSRs. No functional change intended. Signed-off-by: Sean Christopherson Reviewed-by: Xiaoyao Li --- arch/x86/kvm/x86.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index f706621c35b8..7b91f73a837d 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -7071,7 +7071,7 @@ static void kvm_probe_msr_to_save(u32 msr_index) msrs_to_save[num_msrs_to_save++] = msr_index; } -static void kvm_init_msr_list(void) +static void kvm_init_msr_lists(void) { unsigned i; @@ -9450,7 +9450,7 @@ static int __kvm_x86_vendor_init(struct kvm_x86_init_ops *ops) kvm_caps.max_guest_tsc_khz = max; } kvm_caps.default_tsc_scaling_ratio = 1ULL << kvm_caps.tsc_scaling_ratio_frac_bits; - kvm_init_msr_list(); + kvm_init_msr_lists(); return 0; out_unwind_ops: From patchwork Fri Feb 10 00:31:29 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 55149 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp660506wrn; Thu, 9 Feb 2023 16:33:26 -0800 (PST) X-Google-Smtp-Source: AK7set/8wCEB3MAC9ROCMe5tDG+A1rDQMwe2UBH4YL7QmNW3/PaVj7V0Bme+E+wZ6NpDD7i+Y3Nx X-Received: by 2002:a50:955d:0:b0:4aa:b02f:6b92 with SMTP id v29-20020a50955d000000b004aab02f6b92mr13959269eda.4.1675989206148; Thu, 09 Feb 2023 16:33:26 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675989206; cv=none; d=google.com; s=arc-20160816; b=FXpjJmp0BY4ISHTKyHOVf2TXlPlmEsZEPbtMwFdIH5LSiAjwIHcrw2KARHo209T7U8 MDXwKtNz0HdwjyZKDYzaqjvVlKK9dzpLSFH3S8bniX1AgHME4Fl1Q2OHqQ6am4ARRFec ZKkhh2gWeSxWQPw0RnCuBhmdJWNjixFQfm3rku98HsydiuyhsqzhY6nOWPeXsWdWZ/Pq 44dRdD3UqwLvq9Ku1vqizcpNc0HpzQ2KhrKqqcf8M3YXwUb2vAGYH0hhzXHOxaIa4/yB U0qKvPC8wdPgaf7dyVH8ADe5WM95xvu6OKNDla6Dta2rbfV/cBs67xDkS7vYv5FThQjI nHTA== 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=GMrgZXh8eRXUUybNQrnQTy6sLOXQO4H5b5tUEnbNKec=; b=ocdUjxJdZf3e6JJ19p96eII245f+6GdfykZMnC0v76x6LNQxPt89RJa3cTOFsLeob2 fptaRnrJ/EvmcdUAo6iLTjSYRcG6cn3dermh4l+DmDiPPq2+vl4mwUy8dT+R1HHg7C+k 91RAF8UtbhamhQY9Ev9I2Uuv7mFOqbSlDLRG/6o8JwwJT89BJQgP/W2TVxX8YtwZ6f/U B42ke5ykItc7iZsRkela7dR2/kCMBE0yN0qCVsxoHnk+S09uyFJ4E8C0/phB0RDZvSEk Ku670mHnmGnUuCUnogQpCn+R0ofCGSV79qJT6kOjw4zX+vpvWFIIVDWx7jex9bqEqiwE 1kTg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=oyw0c2cu; 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 f4-20020a05640214c400b00461d2ed78acsi4253270edx.378.2023.02.09.16.33.01; Thu, 09 Feb 2023 16:33:26 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=oyw0c2cu; 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 S230105AbjBJAcD (ORCPT + 99 others); Thu, 9 Feb 2023 19:32:03 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52142 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229801AbjBJAb4 (ORCPT ); Thu, 9 Feb 2023 19:31:56 -0500 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 E88CE1817E for ; Thu, 9 Feb 2023 16:31:54 -0800 (PST) Received: by mail-pl1-x64a.google.com with SMTP id b5-20020a170902d50500b00198f3be5233so2112382plg.16 for ; Thu, 09 Feb 2023 16:31:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; 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=GMrgZXh8eRXUUybNQrnQTy6sLOXQO4H5b5tUEnbNKec=; b=oyw0c2cuopZVKbsk7SgDz1IYza0BOCd+ulMvdJ8xEjdGMuT/jqffPe5ewUsajChM75 o8PjURT5214HgqCI7j7vp14jw0Ad6mHw403ZTcTfLxy8th+VCdeljjaad9z/sXp6btAv Ezflm0koCwysFQIjB8wNz7tb/P4486eh4tDgKMwDN+48+ShexTXTmQsc9l0BkWoZGJaM 9qjzhxPj3GcB+C1ycykOtd/bQCV+Qkka+SAbWCb2veOu4EmPKTYrNqTSf7SdhqrskGg+ QvqNpH2Tvh6x8nMwDg8Z11SjW1GK10whZH5VZ3Gnr2IzC/7CYwUqbx8rJn9HHe0l07Fg ezPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=GMrgZXh8eRXUUybNQrnQTy6sLOXQO4H5b5tUEnbNKec=; b=GX5vneono4lkt1JtOdAAKBKqbHNFQNZfxtes9yTwm5IwV34qvGeekzPolqp2N6Wyfm anrMIKcylQ0WLAM99BOA9Z1J79HbMJbRunzPzIEyFoZ+Pe9jy3jMXTaChNK8N4qeOo8r eUo6ojjTaCULnGUi2VZJ04SMUz64i+v3OeOqFHq3WEpUthi9Bhl5SQvV+mUlAYiegnV/ 7pP51gTSgzETK3TvaSASc/PEwHrlTEQcyB96JNWBXwp6GOWmgCcuyJpJT/my5k793yLM LkAhn60sX4/IgMxSCT2UzZLf78myGrsyeR3x+PrMkuaxo4e21ba/99XzZNAghV2sKvIC tVoA== X-Gm-Message-State: AO0yUKXEt40Mk5ZlHlHqyVpYFuc7Ixu1ImJ3Hic+WmfdLsNa4D3a3POE xxNsWpEnRnpK1WD257lfo6QM8+tBHH4= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a17:902:db05:b0:199:4e77:7fae with SMTP id m5-20020a170902db0500b001994e777faemr1708398plx.2.1675989114447; Thu, 09 Feb 2023 16:31:54 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 10 Feb 2023 00:31:29 +0000 In-Reply-To: <20230210003148.2646712-1-seanjc@google.com> Mime-Version: 1.0 References: <20230210003148.2646712-1-seanjc@google.com> X-Mailer: git-send-email 2.39.1.581.gbfd45094c4-goog Message-ID: <20230210003148.2646712-3-seanjc@google.com> Subject: [PATCH v2 02/21] KVM: x86: Add a helper to query whether or not a vCPU has ever run From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Xiaoyao Li , Like Xu 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,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?1757402058192447006?= X-GMAIL-MSGID: =?utf-8?q?1757402058192447006?= Add a helper to query if a vCPU has run so that KVM doesn't have to open code the check on last_vmentry_cpu being set to a magic value. No functional change intended. Suggested-by: Xiaoyao Li Cc: Like Xu Signed-off-by: Sean Christopherson Reviewed-by: Xiaoyao Li --- arch/x86/kvm/cpuid.c | 2 +- arch/x86/kvm/mmu/mmu.c | 2 +- arch/x86/kvm/x86.h | 5 +++++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c index 8f8edeaf8177..448d627ce891 100644 --- a/arch/x86/kvm/cpuid.c +++ b/arch/x86/kvm/cpuid.c @@ -420,7 +420,7 @@ static int kvm_set_cpuid(struct kvm_vcpu *vcpu, struct kvm_cpuid_entry2 *e2, * KVM_SET_CPUID{,2} again. To support this legacy behavior, check * whether the supplied CPUID data is equal to what's already set. */ - if (vcpu->arch.last_vmentry_cpu != -1) { + if (kvm_vcpu_has_run(vcpu)) { r = kvm_cpuid_check_equal(vcpu, e2, nent); if (r) return r; diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c index c91ee2927dd7..b0693195273b 100644 --- a/arch/x86/kvm/mmu/mmu.c +++ b/arch/x86/kvm/mmu/mmu.c @@ -5393,7 +5393,7 @@ void kvm_mmu_after_set_cpuid(struct kvm_vcpu *vcpu) * Changing guest CPUID after KVM_RUN is forbidden, see the comment in * kvm_arch_vcpu_ioctl(). */ - KVM_BUG_ON(vcpu->arch.last_vmentry_cpu != -1, vcpu->kvm); + KVM_BUG_ON(kvm_vcpu_has_run(vcpu), vcpu->kvm); } void kvm_mmu_reset_context(struct kvm_vcpu *vcpu) diff --git a/arch/x86/kvm/x86.h b/arch/x86/kvm/x86.h index a8167b47b8c8..754190af1791 100644 --- a/arch/x86/kvm/x86.h +++ b/arch/x86/kvm/x86.h @@ -83,6 +83,11 @@ static inline unsigned int __shrink_ple_window(unsigned int val, void kvm_service_local_tlb_flush_requests(struct kvm_vcpu *vcpu); int kvm_check_nested_events(struct kvm_vcpu *vcpu); +static inline bool kvm_vcpu_has_run(struct kvm_vcpu *vcpu) +{ + return vcpu->arch.last_vmentry_cpu != -1; +} + static inline bool kvm_is_exception_pending(struct kvm_vcpu *vcpu) { return vcpu->arch.exception.pending || From patchwork Fri Feb 10 00:31:30 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 55158 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp660915wrn; Thu, 9 Feb 2023 16:34:28 -0800 (PST) X-Google-Smtp-Source: AK7set//priLSDs++mWq2P4nxq0/dyVMe8aMl8EPPQl2M3Yd8m30QO/trEOkWkqv1E2/sgAFgV6v X-Received: by 2002:a17:90a:2b07:b0:230:dfab:df58 with SMTP id x7-20020a17090a2b0700b00230dfabdf58mr15220292pjc.37.1675989268042; Thu, 09 Feb 2023 16:34:28 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675989268; cv=none; d=google.com; s=arc-20160816; b=nHrsYdE3TGbO3xmZdGGXlDL1W1n3NxF+l7NH48KoGreMiCqPllygLzYZTdopBtch6J 9rPfpz74uhpvW4o/iur9pvXgvfAN6x/jur8pHnHzf61ELsiI5rAmf5+eVIxpnD+BNwza c19lCyMeEAG7zEDUPAdvpgGJgQ6sY1YPz94XeS4z7XJ4mdbbRvzJf3P8dtwWe7KI7D7M uv3Xd9GWyMzu+M+ZUF0bBKhThbuazELG9f74FOBUlsrHX+YmpUJeD5Tz1cUwGnoF07nD BlqM4OXBkwDGlxsIUFSEBIS6WHnHWMWCIJXJljHsMjdYhUzAxXq07ZuVGhVaKgQCbBh0 XFKQ== 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=eucldSXV9a5xphj/g+7fXk4AWtyJg6Cxj5iwvnUWa+8=; b=SCkCdp60roxsu3C1Pj73Gk5TnF749V9cA1SMQuT5K2EbZvW63d41SY7dp7OEHjhlI9 bfp3BUYrsBA62ukBwajMlPMXuISWW2IJDaN6zWvDCH5WBqfjcUkmuAiOC9ECPGq065+7 gy1B//m5NCRuZRm06OtC6sp1W703hOOtEHF2zLGGFGHPuH/uoWEiINRq98/HtGDE/Rak U/1ynJ1Jn6TQTrqrfeQHp8ff1TCW93CONpIDx+Nz51/zIclfG7Gw6/+OB54urM+RHEt/ VDRXLy8qXp27jGoLWIRYqqnLes83sjMP+FXtPtcq2jRnX2zZT0If1aYk4D/Bsf9OV2nm Bl9g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=roWXO+FT; 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 mm2-20020a17090b358200b00225c475b3d2si6273510pjb.55.2023.02.09.16.34.15; Thu, 09 Feb 2023 16:34:28 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=roWXO+FT; 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 S230154AbjBJAcH (ORCPT + 99 others); Thu, 9 Feb 2023 19:32:07 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52204 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230115AbjBJAb7 (ORCPT ); Thu, 9 Feb 2023 19:31:59 -0500 Received: from mail-yw1-x114a.google.com (mail-yw1-x114a.google.com [IPv6:2607:f8b0:4864:20::114a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5804925B93 for ; Thu, 9 Feb 2023 16:31:57 -0800 (PST) Received: by mail-yw1-x114a.google.com with SMTP id 00721157ae682-527ac47d1f2so34625707b3.16 for ; Thu, 09 Feb 2023 16:31:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; 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=eucldSXV9a5xphj/g+7fXk4AWtyJg6Cxj5iwvnUWa+8=; b=roWXO+FTDdPfR+Ekt+fGOQKYnHFb/UMtzN+5w1pAUu1FgDsAu/ybD87OWogEBv5CRZ iymrfJBVfHA/n6eI4tDBLQfCNL5rYzZMCL9ouvZLjOn8TIYeNYsLiRLDM01uGgh/GqFZ 5lGLegMFgWy17DEJUtf2xmi/PRnFGdbcP6jdTb6M1Y84L7QKbdMFqJrhNYIpBpKxauJa nfhJmjCIwCxqCNOEuKtr3cjAXFryDFPyliyeudyaf17coxLr9Xk3ZAUtaYrYfpzM0h2V LKYNvpuONpKkXlrYhT/qdgTY34I6un0LWPUopi10YPpvKImcEtW50J3PHyG7+nY7alix F+aQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=eucldSXV9a5xphj/g+7fXk4AWtyJg6Cxj5iwvnUWa+8=; b=DWx/mTVHBvWBitKNl7XJl4uAhrAZeE48J/Ye06W8vdCJLiI1Qa6lavHxV5Y65pMnbI 3QOar7D4AnohA5eXM/qo7rPJ3W+h0mtyAH6ZpPVqDSQxmR8lI0ekKo8mOOtsaNKRnnhp U5Xwg7/M/hQv2B9U61H/WplyFMlIxExcoewGqoa7m31avi/8UJg/ZYsysqfbf1h+8gHt hD5uROBmr+H4LU01Ar9uQsHT0+1IRqJGVoV8PPPAclu90edxM/OEj5vmeNzVvDU4duGh HSQbY+OYjhfs/16SYPGi3yWFYtK+bHp4lXRX47RHMIBPSw68KJYd6l1vWbKOlri1N3ME ypfQ== X-Gm-Message-State: AO0yUKVHGXHqI3Fin03TabMe3HIISu/6/7LHvNys0w4I3kqvhwGfYSVH GUVldZY5hZtp9LcNOqKQVtf0ft4YcJM= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a05:6902:180c:b0:8bd:9c6c:6498 with SMTP id cf12-20020a056902180c00b008bd9c6c6498mr53ybb.11.1675989116184; Thu, 09 Feb 2023 16:31:56 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 10 Feb 2023 00:31:30 +0000 In-Reply-To: <20230210003148.2646712-1-seanjc@google.com> Mime-Version: 1.0 References: <20230210003148.2646712-1-seanjc@google.com> X-Mailer: git-send-email 2.39.1.581.gbfd45094c4-goog Message-ID: <20230210003148.2646712-4-seanjc@google.com> Subject: [PATCH v2 03/21] KVM: x86: Add macros to track first...last VMX feature MSRs From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Xiaoyao Li , Like Xu 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,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?1757402122988631581?= X-GMAIL-MSGID: =?utf-8?q?1757402122988631581?= Add macros to track the range of VMX feature MSRs that are emulated by KVM to reduce the maintenance cost of extending the set of emulated MSRs. Note, KVM doesn't necessarily emulate all known/consumed VMX MSRs, e.g. PROCBASED_CTLS3 is consumed by KVM to enable IPI virtualization, but is not emulated as KVM doesn't emulate/virtualize IPI virtualization for nested guests. No functional change intended. Signed-off-by: Sean Christopherson Reviewed-by: Xiaoyao Li --- arch/x86/kvm/svm/svm.c | 2 +- arch/x86/kvm/vmx/vmx.c | 8 ++++---- arch/x86/kvm/x86.h | 8 ++++++++ 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c index b43775490074..a5b9ebd6f2c5 100644 --- a/arch/x86/kvm/svm/svm.c +++ b/arch/x86/kvm/svm/svm.c @@ -4107,7 +4107,7 @@ static bool svm_has_emulated_msr(struct kvm *kvm, u32 index) { switch (index) { case MSR_IA32_MCG_EXT_CTL: - case MSR_IA32_VMX_BASIC ... MSR_IA32_VMX_VMFUNC: + case KVM_FIRST_EMULATED_VMX_MSR ... KVM_LAST_EMULATED_VMX_MSR: return false; case MSR_IA32_SMBASE: if (!IS_ENABLED(CONFIG_KVM_SMM)) diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c index 47abd9101e68..ee86db130519 100644 --- a/arch/x86/kvm/vmx/vmx.c +++ b/arch/x86/kvm/vmx/vmx.c @@ -1945,7 +1945,7 @@ static inline bool is_vmx_feature_control_msr_valid(struct vcpu_vmx *vmx, static int vmx_get_msr_feature(struct kvm_msr_entry *msr) { switch (msr->index) { - case MSR_IA32_VMX_BASIC ... MSR_IA32_VMX_VMFUNC: + case KVM_FIRST_EMULATED_VMX_MSR ... KVM_LAST_EMULATED_VMX_MSR: if (!nested) return 1; return vmx_get_vmx_msr(&vmcs_config.nested, msr->index, &msr->data); @@ -2030,7 +2030,7 @@ static int vmx_get_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info) msr_info->data = to_vmx(vcpu)->msr_ia32_sgxlepubkeyhash [msr_info->index - MSR_IA32_SGXLEPUBKEYHASH0]; break; - case MSR_IA32_VMX_BASIC ... MSR_IA32_VMX_VMFUNC: + case KVM_FIRST_EMULATED_VMX_MSR ... KVM_LAST_EMULATED_VMX_MSR: if (!nested_vmx_allowed(vcpu)) return 1; if (vmx_get_vmx_msr(&vmx->nested.msrs, msr_info->index, @@ -2366,7 +2366,7 @@ static int vmx_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info) vmx->msr_ia32_sgxlepubkeyhash [msr_index - MSR_IA32_SGXLEPUBKEYHASH0] = data; break; - case MSR_IA32_VMX_BASIC ... MSR_IA32_VMX_VMFUNC: + case KVM_FIRST_EMULATED_VMX_MSR ... KVM_LAST_EMULATED_VMX_MSR: if (!msr_info->host_initiated) return 1; /* they are read-only */ if (!nested_vmx_allowed(vcpu)) @@ -6960,7 +6960,7 @@ static bool vmx_has_emulated_msr(struct kvm *kvm, u32 index) * real mode. */ return enable_unrestricted_guest || emulate_invalid_guest_state; - case MSR_IA32_VMX_BASIC ... MSR_IA32_VMX_VMFUNC: + case KVM_FIRST_EMULATED_VMX_MSR ... KVM_LAST_EMULATED_VMX_MSR: return nested; case MSR_AMD64_VIRT_SPEC_CTRL: case MSR_AMD64_TSC_RATIO: diff --git a/arch/x86/kvm/x86.h b/arch/x86/kvm/x86.h index 754190af1791..4bc483d082ee 100644 --- a/arch/x86/kvm/x86.h +++ b/arch/x86/kvm/x86.h @@ -40,6 +40,14 @@ void kvm_spurious_fault(void); failed; \ }) +/* + * The first...last VMX feature MSRs that are emulated by KVM. This may or may + * not cover all known VMX MSRs, as KVM doesn't emulate an MSR until there's an + * associated feature that KVM supports for nested virtualization. + */ +#define KVM_FIRST_EMULATED_VMX_MSR MSR_IA32_VMX_BASIC +#define KVM_LAST_EMULATED_VMX_MSR MSR_IA32_VMX_VMFUNC + #define KVM_DEFAULT_PLE_GAP 128 #define KVM_VMX_DEFAULT_PLE_WINDOW 4096 #define KVM_DEFAULT_PLE_WINDOW_GROW 2 From patchwork Fri Feb 10 00:31:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 55150 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp660613wrn; Thu, 9 Feb 2023 16:33:38 -0800 (PST) X-Google-Smtp-Source: AK7set+BSYwRbm+gPeHQiW9Lv+XCOey99z8nOmN1fSpJfB1f5eNjxAeNMnr8ZB+XnYUEuk/BCifh X-Received: by 2002:a17:906:2ed4:b0:878:7c18:8fd9 with SMTP id s20-20020a1709062ed400b008787c188fd9mr13589676eji.44.1675989218800; Thu, 09 Feb 2023 16:33:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675989218; cv=none; d=google.com; s=arc-20160816; b=sQPjIab6YDTflRsWEf4cMW5wqAXyXWx0QZ4sHYPsgJjr8k5awiJp3/VYuUB1A4+G8q N5AeS/3oWHGR/7bNlRbOfaCkYTybHQddJHAbIRmDW6HyN++OkPDI2r04SLSWHmDdpgc2 CE3eCypUhLbnkJjWecWdsJqgUfVGMhsAN4j1jRiybl90c4G1NZo+VCWMqgIgnF4Kztu4 nsJQpuTnwTUfUAnQYuKpkvGwnmbNnwnjbUk3+QccjJsApNFYearNi96ismvCAhR6akST yDFnmuwSw3kjkUMh7DM030ysjHWOIhIMEvw8VtQoOCKqbHE8VBBFrHLRoSUQd4jC4MlX IoUQ== 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=juCqi+Albnji1zaiiKR3HcTnH91vZKT8inm+htmoAik=; b=IXnKO2njwdLGopr9LvBeee3nY9pAWPqQMxwI81ivWGOMbdFmmR9Hce6iYffQfR/xBZ 7JdE5oKeTad4Er375iNYsaou/66LOkPbUhnGNBuH6dxagkgHbw7xDuaBS57OqJRhSmMV o2PzmO3TO76THV8ygRHZJ1VJ8KrhixpXoYzRS0o1+K8eL5rNurXk5wdU0QohH6nZN2Qa Lqzz0ihwNygBG1N4+QHr5uel09sLvwudA3DNsKTuq2F4wAlkvBdFCRLiiFqW7GBJB9dF vtsxOWRK8y3cy2kD/qEj7dOqv4bjir9ym7fHvwB49uynO9XH6CZMdal6NQMCaOQb2/Fs wC0g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=gs3d0bZu; 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 e12-20020a056402148c00b004aaa4f20727si3876009edv.428.2023.02.09.16.33.15; Thu, 09 Feb 2023 16:33:38 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=gs3d0bZu; 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 S230137AbjBJAcS (ORCPT + 99 others); Thu, 9 Feb 2023 19:32:18 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52254 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230145AbjBJAcA (ORCPT ); Thu, 9 Feb 2023 19:32:00 -0500 Received: from mail-pj1-x1049.google.com (mail-pj1-x1049.google.com [IPv6:2607:f8b0:4864:20::1049]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9FED0305C0 for ; Thu, 9 Feb 2023 16:31:58 -0800 (PST) Received: by mail-pj1-x1049.google.com with SMTP id s24-20020a17090aa11800b00230ffd3f340so1587126pjp.9 for ; Thu, 09 Feb 2023 16:31:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; 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=juCqi+Albnji1zaiiKR3HcTnH91vZKT8inm+htmoAik=; b=gs3d0bZuGZxqvCPJzEIFBUXnJOQBkCgsQ+dAE8fItXubGO+6zcIpRcPIRaTxdkO1t1 0RuquvOafdUZee3vW3OEskw2pHBNQowP01ylnsVqjzEnkJlRMSQAxabRvdHb7s/lIYnU FlEAaSO1WzAZTGyuafkbyXoXBfhBxOL9R+qp0Ggua8jW15QDBCroK3sziWNm6PxVS2hg uXYKEUjUdhRpGEPu/7wpD3t0qU4+zwp2D03LuRqyiScvn1hLVXEh6JXrqdAlteUOI2vk LVQdfIU2uZU0UruQ0vcDvSpklMtLvv/4BSwNCSYfjmfX/om5DxnVbCTtjNPPDZOvr8Wa Fmzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=juCqi+Albnji1zaiiKR3HcTnH91vZKT8inm+htmoAik=; b=iUG+JeC7HDT5bUz51kIzDEmDL6VwHjJ1gFbSwG0EeHacx/n3cTZZZ6TlkS4EdzCbeY 8ImSQZbHqT5qcCI9R58Mz7cUY3bu9pP7HXFTV7xCCfrEo1uK+twCqJ0jPv80FaRlby74 oNb1A48NeSMpDNU5cxprikXccuXELJVj5/o1uWvw/SvB7YKe8GeVpGG22Sfoaam3IzBD m6++6kWAaDB8pqeS86hdEmpAJqLfnDAKS+Ch0XVor+AUU6SN0mwh0pIytaikjppQpdTe oieFRjP3KMr/YT59F/7vWsllNfXn2VJRn+8SSc7XUaFFdGlBiI+Vlrp++EJq+7e66md4 Ub2A== X-Gm-Message-State: AO0yUKXi+hRzRKGvqWWvXtQwyYIoNeNBmneHUY8pHGL4Xk/yNEputT6H avoa/fkhwvjkYHYQVNhwZxR9GhzmjP0= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a17:902:b191:b0:194:7c22:1885 with SMTP id s17-20020a170902b19100b001947c221885mr3057336plr.26.1675989118117; Thu, 09 Feb 2023 16:31:58 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 10 Feb 2023 00:31:31 +0000 In-Reply-To: <20230210003148.2646712-1-seanjc@google.com> Mime-Version: 1.0 References: <20230210003148.2646712-1-seanjc@google.com> X-Mailer: git-send-email 2.39.1.581.gbfd45094c4-goog Message-ID: <20230210003148.2646712-5-seanjc@google.com> Subject: [PATCH v2 04/21] KVM: x86: Generate set of VMX feature MSRs using first/last definitions From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Xiaoyao Li , Like Xu 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,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?1757402070585768383?= X-GMAIL-MSGID: =?utf-8?q?1757402070585768383?= Add VMX MSRs to the runtime list of feature MSRs by iterating over the range of emulated MSRs instead of manually defining each MSR in the "all" list. Using the range definition reduces the cost of emulating a new VMX MSR, e.g. prevents forgetting to add an MSR to the list. Extracting the VMX MSRs from the "all" list, which is a compile-time constant, also shrinks the list to the point where the compiler can heavily optimize code that iterates over the list. No functional change intended. Signed-off-by: Sean Christopherson Reviewed-by: Xiaoyao Li --- arch/x86/kvm/x86.c | 53 +++++++++++++++++++--------------------------- 1 file changed, 22 insertions(+), 31 deletions(-) diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 7b91f73a837d..7b73a0b45041 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -1539,36 +1539,19 @@ static u32 emulated_msrs[ARRAY_SIZE(emulated_msrs_all)]; static unsigned num_emulated_msrs; /* - * List of msr numbers which are used to expose MSR-based features that - * can be used by a hypervisor to validate requested CPU features. + * List of MSRs that control the existence of MSR-based features, i.e. MSRs + * that are effectively CPUID leafs. VMX MSRs are also included in the set of + * feature MSRs, but are handled separately to allow expedited lookups. */ -static const u32 msr_based_features_all[] = { - MSR_IA32_VMX_BASIC, - MSR_IA32_VMX_TRUE_PINBASED_CTLS, - MSR_IA32_VMX_PINBASED_CTLS, - MSR_IA32_VMX_TRUE_PROCBASED_CTLS, - MSR_IA32_VMX_PROCBASED_CTLS, - MSR_IA32_VMX_TRUE_EXIT_CTLS, - MSR_IA32_VMX_EXIT_CTLS, - MSR_IA32_VMX_TRUE_ENTRY_CTLS, - MSR_IA32_VMX_ENTRY_CTLS, - MSR_IA32_VMX_MISC, - MSR_IA32_VMX_CR0_FIXED0, - MSR_IA32_VMX_CR0_FIXED1, - MSR_IA32_VMX_CR4_FIXED0, - MSR_IA32_VMX_CR4_FIXED1, - MSR_IA32_VMX_VMCS_ENUM, - MSR_IA32_VMX_PROCBASED_CTLS2, - MSR_IA32_VMX_EPT_VPID_CAP, - MSR_IA32_VMX_VMFUNC, - +static const u32 msr_based_features_all_except_vmx[] = { MSR_AMD64_DE_CFG, MSR_IA32_UCODE_REV, MSR_IA32_ARCH_CAPABILITIES, MSR_IA32_PERF_CAPABILITIES, }; -static u32 msr_based_features[ARRAY_SIZE(msr_based_features_all)]; +static u32 msr_based_features[ARRAY_SIZE(msr_based_features_all_except_vmx) + + (KVM_LAST_EMULATED_VMX_MSR - KVM_FIRST_EMULATED_VMX_MSR + 1)]; static unsigned int num_msr_based_features; /* @@ -6996,6 +6979,18 @@ long kvm_arch_vm_ioctl(struct file *filp, return r; } +static void kvm_probe_feature_msr(u32 msr_index) +{ + struct kvm_msr_entry msr = { + .index = msr_index, + }; + + if (kvm_get_msr_feature(&msr)) + return; + + msr_based_features[num_msr_based_features++] = msr_index; +} + static void kvm_probe_msr_to_save(u32 msr_index) { u32 dummy[2]; @@ -7097,15 +7092,11 @@ static void kvm_init_msr_lists(void) emulated_msrs[num_emulated_msrs++] = emulated_msrs_all[i]; } - for (i = 0; i < ARRAY_SIZE(msr_based_features_all); i++) { - struct kvm_msr_entry msr; + for (i = KVM_FIRST_EMULATED_VMX_MSR; i <= KVM_LAST_EMULATED_VMX_MSR; i++) + kvm_probe_feature_msr(i); - msr.index = msr_based_features_all[i]; - if (kvm_get_msr_feature(&msr)) - continue; - - msr_based_features[num_msr_based_features++] = msr_based_features_all[i]; - } + for (i = 0; i < ARRAY_SIZE(msr_based_features_all_except_vmx); i++) + kvm_probe_feature_msr(msr_based_features_all_except_vmx[i]); } static int vcpu_mmio_write(struct kvm_vcpu *vcpu, gpa_t addr, int len, From patchwork Fri Feb 10 00:31:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 55151 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp660635wrn; Thu, 9 Feb 2023 16:33:42 -0800 (PST) X-Google-Smtp-Source: AK7set97wkpQwPKfzDxACRs36FNmIEhyZn/qa+mFwzz23D3jEmv7BrBzk+MOVjWPzw7EXv3vuvxk X-Received: by 2002:a17:906:eb03:b0:889:1734:566a with SMTP id mb3-20020a170906eb0300b008891734566amr12757483ejb.76.1675989222516; Thu, 09 Feb 2023 16:33:42 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675989222; cv=none; d=google.com; s=arc-20160816; b=ebNZhsDpSPKF742id6RrtLBlbcpAyycFaI5+frAZ3eXF2mGuPrHhJwzrAhDcs0lm9K Xg+Snv62uSozKnw3w8L36u7xeDBt0bAzqZMJ8xun3Ho5cQDFuv2p6a/a3KNq/c/TYv2K aW2iKaM/5AD5a40kCopQeClpxEtFRvxQtek5CgeRXtPhhTg/J4lNH6PjM+3kLhKrxd00 1/PjdQlPxWUCNUunXH7CGtRMx8Nm6oV3MG0sdo2u/mTPcxWO5DhtEsTe5YnNGus7MvaE KXsXHaEi2kTuz6NQfXsDkmD5XuddeWZ39PAkCiNqDq031C51CIAnw2bH35CkWvzLk1hF L4tw== 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=00HAzMjPVYVZpNNjib7OPhFskVadeKfZTgeX842t58U=; b=fOoCRqQj6lpXn7RjTEvQBdMWhpeDG/W/D1Y1bE90O2bisiZzQ21AR857AjTNR2zGvx pS+tVBys5PIQALMzil0JolWTxT0RLyEDGyPaOfXa5vR+dW9nkU80XaU9KoYQDJzITP5x Vp2luX8/dCWvMozT+jhsc2/is6K5kzSa30IcGlNGuqPhQ+7izEesqdDs3HdV83H5sj/O O9XsFv8SSUU8AwRKXVQGIavxHV9Dgj5WDhJt7Q9g/ZZWu6mZyGwuvBEtjXfh4WeHxcY1 gE5KmSct28Bvo+rV0yqJbWHj4ceFLfZbOVbZO6JBHp04FZT5ThHkc8ROhnQYW3JWKraz qEXQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=aBtzaPE8; 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 ep11-20020a1709069b4b00b008a6109abff5si3587772ejc.815.2023.02.09.16.33.18; Thu, 09 Feb 2023 16:33:42 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=aBtzaPE8; 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 S230198AbjBJAcX (ORCPT + 99 others); Thu, 9 Feb 2023 19:32:23 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53022 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230174AbjBJAcQ (ORCPT ); Thu, 9 Feb 2023 19:32:16 -0500 Received: from mail-pj1-x1049.google.com (mail-pj1-x1049.google.com [IPv6:2607:f8b0:4864:20::1049]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7A26F4E52D for ; Thu, 9 Feb 2023 16:32:00 -0800 (PST) Received: by mail-pj1-x1049.google.com with SMTP id l22-20020a17090aaa9600b00230aa3c1350so1596225pjq.2 for ; Thu, 09 Feb 2023 16:32:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; 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=00HAzMjPVYVZpNNjib7OPhFskVadeKfZTgeX842t58U=; b=aBtzaPE8mYEmKnAgTm5Kax34YIZeL7JG4RKNgQ8x0KfDYjrvnvQ33kpzNnCl3AZjFx q0YvA0dhIK66QCU2byQQpwLdRR2uvjOsa1tMsA0sdVAGPUxLfrLlfF5LDa3auEb01hKT lZJJqZrfdgikkQzecg4RtA2RbUg3AP2vbP6d5pSW1Oy0oFdX2ZSj7jPuGBOmpAaC72BA H3hPZkLs9AnDnvU7c9BO0Tg+B7NscWiAXdFyL800DZcdLES2IuiEUiScFXp0CEnwejaI nMb/yCangz2qqeh+CQdL6qbm8lQC0stog6QULX5eBG4GEdzcuUFMcJ1B44nbvA24hpHy MY7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=00HAzMjPVYVZpNNjib7OPhFskVadeKfZTgeX842t58U=; b=wdpfv3fYHeENaTnvV76RFN1o6DghiitH1fHZlE1icNCGjcu8PSUj2Byp7MUrO8hc1c 74fQHEH6qVpPyIxvWAhAF88qXGI2RTjBb5Ez3Gk7/WaHCpDvq35BoSbswdNJB0uVeJaD SrGVeYqxC+nTGjU0gXRDQqXXbB8u5AhnPo/QameUmrJxyKtpi7DvbXpwoFina26Pb389 pqsvoU3bt8myqUxcWIULVh8cSqaATBKrgPgq3FnTpt9IL+d/7KgQ4t40BjAoS1vht28T HmIpcju3+SJUOoT+MyFsuIHpEFVMybxkaE5EJr7hy4UMUYSExjmjtbgXKupzvFKdGbMa /7bA== X-Gm-Message-State: AO0yUKWk7f+vFNtf5Q58DLmrpIOpm/iYepDF3bMCS3Cw05Js+TqdcOnu cNpJYsFNQ0ytQVnVSRiHOqJ99DTCmO0= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a62:3181:0:b0:58d:8d29:399c with SMTP id x123-20020a623181000000b0058d8d29399cmr2696005pfx.44.1675989119771; Thu, 09 Feb 2023 16:31:59 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 10 Feb 2023 00:31:32 +0000 In-Reply-To: <20230210003148.2646712-1-seanjc@google.com> Mime-Version: 1.0 References: <20230210003148.2646712-1-seanjc@google.com> X-Mailer: git-send-email 2.39.1.581.gbfd45094c4-goog Message-ID: <20230210003148.2646712-6-seanjc@google.com> Subject: [PATCH v2 05/21] KVM: x86: Disallow writes to immutable feature MSRs after KVM_RUN From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Xiaoyao Li , Like Xu 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,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?1757402075073762362?= X-GMAIL-MSGID: =?utf-8?q?1757402075073762362?= Disallow writes to feature MSRs after KVM_RUN to prevent userspace from changing the vCPU model after running the vCPU. Similar to guest CPUID, KVM uses feature MSRs to configure intercepts, determine what operations are/aren't allowed, etc. Changing the capabilities while the vCPU is active will at best yield unpredictable guest behavior, and at worst could be dangerous to KVM. Allow writing the current value, e.g. so that userspace can blindly set all MSRs when emulating RESET, and unconditionally allow writes to MSR_IA32_UCODE_REV so that userspace can emulate patch loads. Special case the VMX MSRs to keep the generic list small, i.e. so that KVM can do a linear walk of the generic list without incurring meaningful overhead. Cc: Like Xu Signed-off-by: Sean Christopherson Reviewed-by: Xiaoyao Li --- arch/x86/kvm/x86.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 7b73a0b45041..186cb6a81643 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -1554,6 +1554,25 @@ static u32 msr_based_features[ARRAY_SIZE(msr_based_features_all_except_vmx) + (KVM_LAST_EMULATED_VMX_MSR - KVM_FIRST_EMULATED_VMX_MSR + 1)]; static unsigned int num_msr_based_features; +/* + * All feature MSRs except uCode revID, which tracks the currently loaded uCode + * patch, are immutable once the vCPU model is defined. + */ +static bool kvm_is_immutable_feature_msr(u32 msr) +{ + int i; + + if (msr >= KVM_FIRST_EMULATED_VMX_MSR && msr <= KVM_LAST_EMULATED_VMX_MSR) + return true; + + for (i = 0; i < ARRAY_SIZE(msr_based_features_all_except_vmx); i++) { + if (msr == msr_based_features_all_except_vmx[i]) + return msr != MSR_IA32_UCODE_REV; + } + + return false; +} + /* * Some IA32_ARCH_CAPABILITIES bits have dependencies on MSRs that KVM * does not yet virtualize. These include: @@ -2168,6 +2187,23 @@ static int do_get_msr(struct kvm_vcpu *vcpu, unsigned index, u64 *data) static int do_set_msr(struct kvm_vcpu *vcpu, unsigned index, u64 *data) { + u64 val; + + /* + * Disallow writes to immutable feature MSRs after KVM_RUN. KVM does + * not support modifying the guest vCPU model on the fly, e.g. changing + * the nVMX capabilities while L2 is running is nonsensical. Ignore + * writes of the same value, e.g. to allow userspace to blindly stuff + * all MSRs when emulating RESET. + */ + if (vcpu->arch.last_vmentry_cpu != -1 && + kvm_is_immutable_feature_msr(index)) { + if (do_get_msr(vcpu, index, &val) || *data != val) + return -EINVAL; + + return 0; + } + return kvm_set_msr_ignored_check(vcpu, index, *data, true); } From patchwork Fri Feb 10 00:31:33 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 55153 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp660677wrn; Thu, 9 Feb 2023 16:33:48 -0800 (PST) X-Google-Smtp-Source: AK7set9pwtf3cGKsrb0XDi/uHSGRb0lJ83MPgVgjLiwjzw3H6p7JO7jkuIUD1GR7UmfFWnQm1m+Q X-Received: by 2002:a17:907:1c22:b0:8aa:bf48:aae1 with SMTP id nc34-20020a1709071c2200b008aabf48aae1mr16588448ejc.6.1675989228505; Thu, 09 Feb 2023 16:33:48 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675989228; cv=none; d=google.com; s=arc-20160816; b=OAoLZJiCKcsdQ1DsH3WQrlGYq631xV3wtL+1aDaCe+3JFWU+1u8xgDHkKeEc+MQcqu SJ+oh1ardjp9Z4qiCIwaI0tHtr6HrMZmazS+rousF3RmuDPdEdvcauXn1IIk8sAJ8fGi DIEfde8HpxU6fNbUPoVk9oryDOgjmyl9BVXPRkd1vnacpclsrUXClHpvRjnkrOobmLIA ZwVqKineivrqHdjm0b/UFFeOo+Xvk0Q2k32bDt8fh1rVTHH2o03OhUs/y7PWGE3/K9+y L91yYtdC8yyNRW30TGkA5rLvn53XOWs7lwI8av13E84Kt56H++1wcgJcgV3JWnWghHV5 h6aw== 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=qEyz/D/GwawmEFE6mKfSBe68GjnRayQfCebOkuONNBw=; b=Wd2G5twPY0FqJKzjoSHgkNBGCrFQbHxA7qdFWOK2hwr7KGoZ1t+RUcMqnRMX32167+ reOmvXk0+9rjTrbbghB4iBQgJih74whsOJg4VP8Rgk0MJp/LXxunlWRynYEXUOXtn3BL 7LtIMRuB8vASDaCErrWb4up1fCmiNK3duqJkS6A42/uxiWX6TJAowxJu/NasQsjK2tcu 5FsSOOVU/jBuBqkyrFJAW72FdKSob2+nAZZ4eewh+2xgxVbJI8RgrBHtKblgyQh+E0jk fZOHWxeeDJ4nrRhWh0XbYLsuA1DzdgPcyLHPRONSX7VPbkKXndAoFLKSdjJpoNg1ikZV bPWQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=keO5G55Z; 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 fl22-20020a1709072a9600b00883258d9023si3708163ejc.514.2023.02.09.16.33.24; Thu, 09 Feb 2023 16:33:48 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=keO5G55Z; 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 S230267AbjBJAc3 (ORCPT + 99 others); Thu, 9 Feb 2023 19:32:29 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53054 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230170AbjBJAcQ (ORCPT ); Thu, 9 Feb 2023 19:32:16 -0500 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 7CB495CBF3 for ; Thu, 9 Feb 2023 16:32:02 -0800 (PST) Received: by mail-pg1-x54a.google.com with SMTP id x3-20020a654143000000b004f2f2dafb21so1760547pgp.0 for ; Thu, 09 Feb 2023 16:32:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; 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=qEyz/D/GwawmEFE6mKfSBe68GjnRayQfCebOkuONNBw=; b=keO5G55ZMsL2Z8lWgVdrwBdDX+uSCcf60tBA/h0bLFRFunQ5U8VPjAPDzH6pZORQWk nFQ43s7XYMOcxFPfMOg3Xlj5CCK96SCu9/R6aCyl0Tutl6y55A7r4BGMFVSaBcWI1POs A5azzTnHL/yjeNxWOjKh+hIu+eN4pZ9OrmUhNxyVeT7+aoSp5MdiX3CAIx+MP33eLvqj SKRAXmxKQbst1gty7eyX6ljXkIK+d1fVdqpcHC5Kj9TccjqvRPaN37oj0mxo0d+CAW1b +BJ5S4PwpjQn7P3pHtGLmZKEPafI+rpLBqKOJ732ZFzz/bQQUmeuDwAapEM4arLY9Jgx lUaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=qEyz/D/GwawmEFE6mKfSBe68GjnRayQfCebOkuONNBw=; b=goLZqqRjo13OOAJAO4WRj9ql5eeByQ6onndxW3noqx7H4w3G+m2X6xDEKwXCQf1MzN xcRqfVd8VVn4MWNV8g43wHSoaWl1I9Y+ZsmSajnnv9NW3vW7KfsrzAOLYw1FQlAA1Bwt oDxaMuSIj/QYD9Ran4EPc2P3Ur8x2fhK5EhMXYvrCIJkfrU2OR7WorwISmLu+njjhZ7r Edr3NHSqm0WOCME0Ss0cTvNptLlQGvBhAdHHvGrsi035PXCNnuMqJ8EE3QAYHEQObUtJ jrSy1vZ5YzEfMy4ljXYSpuLYMN96gKZvPwW1A0w+3Szqcfr1f6SmCaPuoncEa6igYzZE MrxQ== X-Gm-Message-State: AO0yUKWDn0nQ8Xq34kXwkzV3t03lKH4XLOLe7ivr8vz7TGkv5o8tXVjr suNfTLIcqwK95a+T0p7WYoDZsEt4Lww= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a17:90b:1957:b0:230:9d9a:377d with SMTP id nk23-20020a17090b195700b002309d9a377dmr2128693pjb.102.1675989121567; Thu, 09 Feb 2023 16:32:01 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 10 Feb 2023 00:31:33 +0000 In-Reply-To: <20230210003148.2646712-1-seanjc@google.com> Mime-Version: 1.0 References: <20230210003148.2646712-1-seanjc@google.com> X-Mailer: git-send-email 2.39.1.581.gbfd45094c4-goog Message-ID: <20230210003148.2646712-7-seanjc@google.com> Subject: [PATCH v2 06/21] KVM: x86/pmu: WARN and bug the VM if PMU is refreshed after vCPU has run From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Xiaoyao Li , Like Xu 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,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?1757402081202393211?= X-GMAIL-MSGID: =?utf-8?q?1757402081202393211?= Now that KVM disallows changing feature MSRs, i.e. PERF_CAPABILITIES, after running a vCPU, WARN and bug the VM if the PMU is refreshed after the vCPU has run. Note, KVM has disallowed CPUID updates after running a vCPU since commit feb627e8d6f6 ("KVM: x86: Forbid KVM_SET_CPUID{,2} after KVM_RUN"), i.e. PERF_CAPABILITIES was the only remaining way to trigger a PMU refresh after KVM_RUN. Cc: Like Xu Signed-off-by: Sean Christopherson --- arch/x86/kvm/pmu.c | 3 +++ arch/x86/kvm/x86.c | 10 +++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/arch/x86/kvm/pmu.c b/arch/x86/kvm/pmu.c index 612e6c70ce2e..7e974c4e61b0 100644 --- a/arch/x86/kvm/pmu.c +++ b/arch/x86/kvm/pmu.c @@ -589,6 +589,9 @@ int kvm_pmu_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info) */ void kvm_pmu_refresh(struct kvm_vcpu *vcpu) { + if (KVM_BUG_ON(kvm_vcpu_has_run(vcpu), vcpu->kvm)) + return; + static_call(kvm_x86_pmu_refresh)(vcpu); } diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 186cb6a81643..1b14632a94a3 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -3626,9 +3626,17 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info) if (data & ~kvm_caps.supported_perf_cap) return 1; + /* + * Note, this is not just a performance optimization! KVM + * disallows changing feature MSRs after the vCPU has run; PMU + * refresh will bug the VM if called after the vCPU has run. + */ + if (vcpu->arch.perf_capabilities == data) + break; + vcpu->arch.perf_capabilities = data; kvm_pmu_refresh(vcpu); - return 0; + break; case MSR_EFER: return set_efer(vcpu, msr_info); case MSR_K7_HWCR: From patchwork Fri Feb 10 00:31:34 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 55152 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp660664wrn; Thu, 9 Feb 2023 16:33:46 -0800 (PST) X-Google-Smtp-Source: AK7set8PA2jLmxkrSVyepbg5AdOPT2Iu0YmmEgjIS4ZKTS6GJmfxD6lXqYOtyjqcVbkEtxLIMJRe X-Received: by 2002:a05:6a20:698c:b0:c2:b228:dd8 with SMTP id t12-20020a056a20698c00b000c2b2280dd8mr13131377pzk.3.1675989225812; Thu, 09 Feb 2023 16:33:45 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675989225; cv=none; d=google.com; s=arc-20160816; b=t1x0Rj9+XrDjJIXzCnSExLlbLI53EWS9NWKq60WunivXNXurN0imHIsXVDeAUGEYzG nFOEWwZkV07/rCUtqY7eoiDdXycnSpopFV0RqViz6aKIKK2MyzcdqNE1fdMW5AuE0XBo Yt7qq8ISerA9Jhv2N9GvxsSKR0BWspKhFquUyq4FAII/vrsM+QSzzmdUJJmzBTBjBKqO mFHJSxu9IK5ujLhVopOHaOt8/o+YvgQkwFq/kAkelBB2PmGGCQa0YVdEgqmbjQUBfUJW vkkbWIri8n9BnqT2IiaSYmN3fszhMLvzZfiZVtYcWcqbqmNBeX5FIEuuy7Flsnb4c60c AhUQ== 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=lmrHsEd1kvbCEq2I68uT6iSRNvZfXrvkq6sDzsXiSd8=; b=YwcAcaGYH8SFSPMSIDPzzOG9IqgzPu4XTBIGRcGc8p1Z6qS61oQ4vSgJFKZBC+RoTq WHzVfesA7rvwuupoJf3ZuHLZndMOVFci7NaiFbw7yD3EVc43h726/jAvVuIvE2PQZtsR wjT0xkysBYQ9WT3Ywfe3INb8giE5eSyFmQzRlZlsn9dq/GcnU5gtWkaj0lBACOK4YXhu rMlkjhMW8Ix3JHSOQPmGnq9VnHUO1fMqL7+JM4Gt76fAo2b9Nr/f8W6MjTWRMSh3OGl4 mFFC/eqBq/ZhtB0bXxO7SOTesQeN943nf2rI/TL6xxm+McZr4+VjVR+swREhtGkdZ8de P8xQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=eFeXbUZs; 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 q24-20020a656a98000000b004def536009dsi3357922pgu.180.2023.02.09.16.33.32; Thu, 09 Feb 2023 16:33:45 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=eFeXbUZs; 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 S230320AbjBJAcf (ORCPT + 99 others); Thu, 9 Feb 2023 19:32:35 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53086 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230236AbjBJAcR (ORCPT ); Thu, 9 Feb 2023 19:32:17 -0500 Received: from mail-pj1-x1049.google.com (mail-pj1-x1049.google.com [IPv6:2607:f8b0:4864:20::1049]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C1EFA6E880 for ; Thu, 9 Feb 2023 16:32:03 -0800 (PST) Received: by mail-pj1-x1049.google.com with SMTP id mi18-20020a17090b4b5200b00230e56d5a44so1702774pjb.1 for ; Thu, 09 Feb 2023 16:32:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; 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=lmrHsEd1kvbCEq2I68uT6iSRNvZfXrvkq6sDzsXiSd8=; b=eFeXbUZsLbfNmRG2IC3K5Td95hJyMIBDyhLJbX7KOnO7j9qBQs4ffh7MH+DTeFYR66 GPxjZuzdYJs926CDgjuSJrEU4CZlAnm5YBPHzTt61cE605mDF0frD062wM7KlwwBlT5R oD2TMUDVjJy1Xs9xM0JOmDVSNaPLJj7wphE07o3YIeYrupB8gBOrRAKCEFErIyMXJBux s6tysAlHtj05f2QLU5bIke6dc1SeNxA5u+vZ6zppv5bzec2Cgae0Sk4Ttc3eMgkNWGMy UZt09U2thAEQDY52kwh0mv/0Ie1OwtkxyTfqTMmArhrrn68GXeX0glrtW8tPE1/Yc8fp bYFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=lmrHsEd1kvbCEq2I68uT6iSRNvZfXrvkq6sDzsXiSd8=; b=RqszdTmFyguA3l5Bf0q27G1v+LCW5oUwA1frz05PAxYzrZsa0JldUt/0dSaTkv7rOP za3HVhseWby6N8URrFAf+AJQwupuQ/oYmm0QYLllMG7dwq7bx/Zuyz5uAuX5wVc8SncK W0y0fLjw2SVKM9IO46pH+AVjy5xe9qa7Vnc871CSmi7Ah4Pb9fFDQOwoYJBaRwB0dk3z +Dxy0x+XjaZhQpuL1MhU+0RJ8cdZyXKwyzmtSksVww/1XQKtSvSXxyJdEAX2apaUmNKB /X1eKURL9s/QFxwVGZZBdKLAQLNSzPTrXI7J39Z02r0OzpqYOqdmwPuzyRZbmrgzxj4H sOXw== X-Gm-Message-State: AO0yUKX+WgP0bPeDAvmglp5UVnx1U8N5KB0vsb0g78XvSLN05xw808F/ NnKmkjv1mzM6GcK4agyskcFgEFBJvko= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a63:b346:0:b0:4df:c991:3a74 with SMTP id x6-20020a63b346000000b004dfc9913a74mr2450713pgt.94.1675989122972; Thu, 09 Feb 2023 16:32:02 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 10 Feb 2023 00:31:34 +0000 In-Reply-To: <20230210003148.2646712-1-seanjc@google.com> Mime-Version: 1.0 References: <20230210003148.2646712-1-seanjc@google.com> X-Mailer: git-send-email 2.39.1.581.gbfd45094c4-goog Message-ID: <20230210003148.2646712-8-seanjc@google.com> Subject: [PATCH v2 07/21] KVM: x86/pmu: Zero out LBR capabilities during PMU refresh From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Xiaoyao Li , Like Xu 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,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?1757402078224911136?= X-GMAIL-MSGID: =?utf-8?q?1757402078224911136?= Zero out the LBR capabilities during PMU refresh to avoid exposing LBRs to the guest against userspace's wishes. If userspace modifies the guest's CPUID model or invokes KVM_CAP_PMU_CAPABILITY to disable vPMU after an initial KVM_SET_CPUID2, but before the first KVM_RUN, KVM will retain the previous LBR info due to bailing before refreshing the LBR descriptor. Note, this is a very theoretical bug, there is no known use case where a VMM would deliberately enable the vPMU via KVM_SET_CPUID2, and then later disable the vPMU. Signed-off-by: Sean Christopherson --- arch/x86/kvm/vmx/pmu_intel.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/arch/x86/kvm/vmx/pmu_intel.c b/arch/x86/kvm/vmx/pmu_intel.c index e8a3be0b9df9..d889bb2a1de5 100644 --- a/arch/x86/kvm/vmx/pmu_intel.c +++ b/arch/x86/kvm/vmx/pmu_intel.c @@ -531,6 +531,16 @@ static void intel_pmu_refresh(struct kvm_vcpu *vcpu) pmu->pebs_enable_mask = ~0ull; pmu->pebs_data_cfg_mask = ~0ull; + memset(&lbr_desc->records, 0, sizeof(lbr_desc->records)); + + /* + * Setting passthrough of LBR MSRs is done only in the VM-Entry loop, + * and PMU refresh is disallowed after the vCPU has run, i.e. this code + * should never be reached while KVM is passing through MSRs. + */ + if (KVM_BUG_ON(lbr_desc->msr_passthrough, vcpu->kvm)) + return; + entry = kvm_find_cpuid_entry(vcpu, 0xa); if (!entry || !vcpu->kvm->arch.enable_pmu) return; From patchwork Fri Feb 10 00:31:35 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 55154 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp660703wrn; Thu, 9 Feb 2023 16:33:52 -0800 (PST) X-Google-Smtp-Source: AK7set/MsUREZRhykOpqWrTV1pa8xJzMb1CHLBGFILSIAHjndivX4XcoMlbZe60lMgpo3t9c4a6X X-Received: by 2002:a17:902:f54c:b0:198:a86c:33f with SMTP id h12-20020a170902f54c00b00198a86c033fmr17630322plf.65.1675989232456; Thu, 09 Feb 2023 16:33:52 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675989232; cv=none; d=google.com; s=arc-20160816; b=MU3Ia4P9CCqRi4KTGTbAgbVto0nxI62HOBywsl1MtgSCjWn2axxJ3vSwhoUcebg8uo Vl71/OuRRI9k11e9ic6AVgUZ6OcnfsNT3GS1q5zXB3BP0+v31oXsgCo+p+8qX7rdsSyc O15aId8fOqEsnAT3y4yHL5zo3H/cLpKTlqLATe0F928MuP39IZ/L53lLiumbzX3eI4nS WftJq512xOyqkt8/pEwxr1mrZ7Tdgo5EmvQ1luYFuKkQWK7WnuQ+K9eYxSg89mxngwiD cKqnl8LUNs16uxHCnSsWe59ksvRei2zRWFAiKfyIE/gGW4WnthukRR3dOxrbPBI5niqI /i0w== 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=3aMSIJQHTkJvFMLxQlPPsalL8o5N8wDIsCOXy+QNiY0=; b=S8BfNpU5zgqblhCFLVyR6aW4zY0lYYqssZG4NDoZB9FV2cpdCeQK3vAiciVRAtJT2L Lw/Y726xMIdRKudBKzkRh+4++gxebr4AEGS2GLyLKt0rYUvrmIghJOnJQbjb/Kg7htRr Kr41hVC6z9X+f1c5aDYQiij6cXphcG9S5IzbEWRBxaTLf9M6sXvTGW/nNCd2kjI+s94F YAsEgzyDK5M6lhbrm3TrshivV+q2f8SC/TUJKRB4MFGY6YwqnRo7e1hv5TpDUOClnRnw FhuZfpjLQVGE2lslexbtHZP/8P1hxTIBqRoa0Af9M3a0k/6GpcpR37Xnl38AbZybRrGZ TLeg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=OHSjSxyP; 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 x1-20020a170902b40100b00198f5a1c0f7si3083269plr.376.2023.02.09.16.33.38; Thu, 09 Feb 2023 16:33:52 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=OHSjSxyP; 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 S230379AbjBJAck (ORCPT + 99 others); Thu, 9 Feb 2023 19:32:40 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53024 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230265AbjBJAcT (ORCPT ); Thu, 9 Feb 2023 19:32:19 -0500 Received: from mail-yw1-x114a.google.com (mail-yw1-x114a.google.com [IPv6:2607:f8b0:4864:20::114a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DEA3D5AB0A for ; Thu, 9 Feb 2023 16:32:05 -0800 (PST) Received: by mail-yw1-x114a.google.com with SMTP id 00721157ae682-52eb75aeecdso26877707b3.13 for ; Thu, 09 Feb 2023 16:32:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; 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=3aMSIJQHTkJvFMLxQlPPsalL8o5N8wDIsCOXy+QNiY0=; b=OHSjSxyPoWtH1UdLZ5y+EA/aw1FemTa8ZC/EoS7IROYb3LEhdj525fOFetgEPeNPU0 mpC5CqyY5mYornbMlS+7TbHD5wdcpHIScipEIbGaF4bYC1yNrUd6RYZTWM4avp2k6obu 6w3H0joiT3dl7FlB2hVL8wXEHCpIJFbC1nuDMXq/nW7C0V/78NE1pW1t9fjYQGM0SIoN gyPdx8xM4v2cBxc0RSCkGN9Wv+EeKrSk7J6nfwNTRdP/oAKZIf5Ws7S/a0IfIa5HZcHH 1URhV/u93ze1HSSSdE0J0h+IWRMIe+NKU6J1eI04jrLNjXmtOzMujNWBoVDO44zD5hKy Avaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=3aMSIJQHTkJvFMLxQlPPsalL8o5N8wDIsCOXy+QNiY0=; b=vgfKW/uurri2KBOhAvD13lW6+51ObCE9gLd4uwU1HWyjkI+bM2zNSEXqvAMn+gwo5o PKPFaYAml5p3lG5onrYw76AbhPD5O1hjkXJafBgT3JUw/QsQ+v5gyAD2QyPI0bCx/8Px JBYUVInl/2bP7XY0Rl6zzy1zB1kPOnEAmlm198mJyO2hHXm0USLlPjRfcQs7mj/xZeuE 3geyL/02EuE4nUKFKb7zbzPVLrX5u+ltBnlkXhbFravxKKVcyeX++Tsq1RE+EtqEsZGm GrrZ8Zfo3SvfW4WXuP0p+tG0b83gQAVsZqmWZZV5I7vn1FtI2losXeJCvivsH0kDsH9E K0YQ== X-Gm-Message-State: AO0yUKViTl4u4DIMtFl76fnMeshfBnL4qer6Tf9yzfjzuOAcaldatxDX kh2SoVLLIOc5Oizfu3RE/d9l4qMIqHQ= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a81:6983:0:b0:502:349d:a151 with SMTP id e125-20020a816983000000b00502349da151mr1612234ywc.295.1675989124804; Thu, 09 Feb 2023 16:32:04 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 10 Feb 2023 00:31:35 +0000 In-Reply-To: <20230210003148.2646712-1-seanjc@google.com> Mime-Version: 1.0 References: <20230210003148.2646712-1-seanjc@google.com> X-Mailer: git-send-email 2.39.1.581.gbfd45094c4-goog Message-ID: <20230210003148.2646712-9-seanjc@google.com> Subject: [PATCH v2 08/21] KVM: selftests: Split PMU caps sub-tests to avoid writing MSR after KVM_RUN From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Xiaoyao Li , Like Xu 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,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?1757402085558415915?= X-GMAIL-MSGID: =?utf-8?q?1757402085558415915?= Split the PERF_CAPABILITIES subtests into two parts so that the LBR format testcases don't execute after KVM_RUN. Now that KVM disallows changing PERF_CAPABILITIES after KVM_RUN (same as guest CPUID), attempting to set the MSR after KVM_RUN will yield false positives and/or false negatives depending on what the test is trying to do. Land the LBR format test in a more generic "immutable features" test in anticipation of expanding its scope to other immutable features. Signed-off-by: Sean Christopherson --- .../selftests/kvm/x86_64/vmx_pmu_caps_test.c | 51 +++++++++++-------- 1 file changed, 31 insertions(+), 20 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c b/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c index c280ba1e6572..ac08c0fdd84d 100644 --- a/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c +++ b/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c @@ -41,24 +41,10 @@ static void guest_code(void) wrmsr(MSR_IA32_PERF_CAPABILITIES, PMU_CAP_LBR_FMT); } -int main(int argc, char *argv[]) +static void test_fungible_perf_capabilities(union perf_capabilities host_cap) { - struct kvm_vm *vm; struct kvm_vcpu *vcpu; - int ret; - union perf_capabilities host_cap; - uint64_t val; - - host_cap.capabilities = kvm_get_feature_msr(MSR_IA32_PERF_CAPABILITIES); - host_cap.capabilities &= (PMU_CAP_FW_WRITES | PMU_CAP_LBR_FMT); - - /* Create VM */ - vm = vm_create_with_one_vcpu(&vcpu, guest_code); - - TEST_REQUIRE(kvm_cpu_has(X86_FEATURE_PDCM)); - - TEST_REQUIRE(kvm_cpu_has_p(X86_PROPERTY_PMU_VERSION)); - TEST_REQUIRE(kvm_cpu_property(X86_PROPERTY_PMU_VERSION) > 0); + struct kvm_vm *vm = vm_create_with_one_vcpu(&vcpu, guest_code); /* testcase 1, set capabilities when we have PDCM bit */ vcpu_set_msr(vcpu, MSR_IA32_PERF_CAPABILITIES, PMU_CAP_FW_WRITES); @@ -70,7 +56,16 @@ int main(int argc, char *argv[]) vcpu_run(vcpu); ASSERT_EQ(vcpu_get_msr(vcpu, MSR_IA32_PERF_CAPABILITIES), PMU_CAP_FW_WRITES); - /* testcase 2, check valid LBR formats are accepted */ + kvm_vm_free(vm); +} + +static void test_immutable_perf_capabilities(union perf_capabilities host_cap) +{ + struct kvm_vcpu *vcpu; + struct kvm_vm *vm = vm_create_with_one_vcpu(&vcpu, NULL); + uint64_t val; + int ret; + vcpu_set_msr(vcpu, MSR_IA32_PERF_CAPABILITIES, 0); ASSERT_EQ(vcpu_get_msr(vcpu, MSR_IA32_PERF_CAPABILITIES), 0); @@ -78,8 +73,8 @@ int main(int argc, char *argv[]) ASSERT_EQ(vcpu_get_msr(vcpu, MSR_IA32_PERF_CAPABILITIES), (u64)host_cap.lbr_format); /* - * Testcase 3, check that an "invalid" LBR format is rejected. Only an - * exact match of the host's format (and 0/disabled) is allowed. + * KVM only supports the host's native LBR format, as well as '0' (to + * disable LBR support). Verify KVM rejects all other LBR formats. */ for (val = 1; val <= PMU_CAP_LBR_FMT; val++) { if (val == (host_cap.capabilities & PMU_CAP_LBR_FMT)) @@ -88,7 +83,23 @@ int main(int argc, char *argv[]) ret = _vcpu_set_msr(vcpu, MSR_IA32_PERF_CAPABILITIES, val); TEST_ASSERT(!ret, "Bad LBR FMT = 0x%lx didn't fail", val); } + kvm_vm_free(vm); +} + +int main(int argc, char *argv[]) +{ + union perf_capabilities host_cap; + + TEST_REQUIRE(kvm_cpu_has(X86_FEATURE_PDCM)); + + TEST_REQUIRE(kvm_cpu_has_p(X86_PROPERTY_PMU_VERSION)); + TEST_REQUIRE(kvm_cpu_property(X86_PROPERTY_PMU_VERSION) > 0); + + host_cap.capabilities = kvm_get_feature_msr(MSR_IA32_PERF_CAPABILITIES); + host_cap.capabilities &= (PMU_CAP_FW_WRITES | PMU_CAP_LBR_FMT); + + test_fungible_perf_capabilities(host_cap); + test_immutable_perf_capabilities(host_cap); printf("Completed perf capability tests.\n"); - kvm_vm_free(vm); } From patchwork Fri Feb 10 00:31:36 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 55162 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp661119wrn; Thu, 9 Feb 2023 16:34:53 -0800 (PST) X-Google-Smtp-Source: AK7set/gJoTSuEaNB68FYK6pWB4/+Td4Sk2A1FdkLn38C0pQLnjfr7gmok6ux4koUAY2Tw9uc1u/ X-Received: by 2002:a17:906:7952:b0:884:b467:ae4a with SMTP id l18-20020a170906795200b00884b467ae4amr16989842ejo.64.1675989293597; Thu, 09 Feb 2023 16:34:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675989293; cv=none; d=google.com; s=arc-20160816; b=alWdmm0OBt9P18Iwc8BkJ/B6dC9uiqZS2dbx9xt+7UU0poxEBFan6lpUntUFg0lFHB ugdXaKnH09IZ4x+HldnU1U67X/gbiNNhW40hzPY6/8nMHbCWCzfaQaCz/IwDEKIasiN+ tWPiwlukHEc4Q7aBkV0hDrxK1PALkllMYLC1o8AhafqN1MWLKFLP8K+CpygAQAQ4coj5 SCsQwW9M7ihla9+U+U/ROO8DiO5lceleRetLrYgDcnLwzav/09IdT6ovMX7Rlvwlh7xF kks8yyB8QXjuINII373gPTro7Lr7Co1tfkfuKqiZaL5jGpaGFDqvRipb+zVZCsuaX9HO FFKA== 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=VYjOjrIZ5J+p9clyJLFd8A3MTNNwgKXkenVfNtTjRZE=; b=ylicbnJphv2d1NDarcqHPfV1Lv7f6tdqJp2b2jllXUgzn+PE+u6yQgN4RbO3qcBwID LwZObxIidJpipl1DY3cSwJiQw5L3af8tWVuS/V/6DCMsQVmeuUvcmvZYYM9SXA8YQDiH KUz4FyZDCoGX19KNkwoTS91qKu25UoM84zMrtX8LGoCzu4lVPY7x1CbdUkMl2U2lSyR2 83wJXZSCQu8K11y9I+uY+sVcq6zNs24IAkeF5dBsUDJET4e9bn1bHClEsuKbO6/FJ290 OAk4JpWv6FimAuQplX2w+zl0R3lUmlI/As6yc4xV9TBG5OzfARlXAs+HmvaVHDeGkyOR 10GA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=UTo9fRkp; 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 gg21-20020a170906899500b008897a14f032si3033846ejc.150.2023.02.09.16.34.30; Thu, 09 Feb 2023 16:34:53 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=UTo9fRkp; 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 S230468AbjBJAcw (ORCPT + 99 others); Thu, 9 Feb 2023 19:32:52 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53166 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230294AbjBJAcV (ORCPT ); Thu, 9 Feb 2023 19:32:21 -0500 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 AFCFD6E887 for ; Thu, 9 Feb 2023 16:32:06 -0800 (PST) Received: by mail-pf1-x449.google.com with SMTP id x21-20020a056a000bd500b005a84de949aeso1776454pfu.18 for ; Thu, 09 Feb 2023 16:32:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; 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=VYjOjrIZ5J+p9clyJLFd8A3MTNNwgKXkenVfNtTjRZE=; b=UTo9fRkp/Godq8jVF1yiCX5WmacvA07Lr+TfmwdK76MoOGbR/2HIzzxroOmKVrMY0m NhVtAjfAgOpLQZd2qUYFB2dWKyL+M8K21DXxuWuQrsGWfFT3WKvK6tggND4VvAuaRmcO EQXIwBhngs31eZCswvbCHq6HSPHeQosXSJpSWnNXSp3CEnY44C+WbBizGCSl6LiV5z87 Kt3XEFR5A9SLf/mlbTGX8HhkdJmq+whAwsQt61v045kj2CVanZa7w473+IMpwV5zssps Ed7iOFFf9DIjTVsg68O5b/2g1rfHGXqj3TWJ/aEGtQv67gJirjk1l8SGKPZTD7opw3a3 5yJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=VYjOjrIZ5J+p9clyJLFd8A3MTNNwgKXkenVfNtTjRZE=; b=DKTdnPK47tN2//I974BTd6WeYSSSxJ+9P3Vc3xf9PDfSxN1/7+AqgBdRiPiJauEduc 6kZnmje8E//kaG70aXgjDBWBSqem9+B+FDZ+anrT0HWSTwmwPXE5olIUC5cU54uL1+PY KkCXtLYPq+h3aw9ujgChDV520BtU9siof3vq01I7m/ZRSCpoWd38CW5km9qPtIMrrf9s 6NfwpFf2yIstHzruLRTzaBWH2sb1vZOvXA+MUj+R7gnKMwgsSP1QXh0aKX/vMSEDPkun YwVi2SZFjayYdJUwq1sRLhCsDQ0ggSnQCx6djmtN2HVPvdbWwS+qiQoOjl0vbWb2/QDf OHyw== X-Gm-Message-State: AO0yUKV7PHU2sZuOS/Y0xjvFcDhdkt3/7s5LfRlr5nRYiD5GtWU+wkse T5lhv+eegYatAwbby7+mXJQyUc+LXts= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a17:902:8a90:b0:199:527d:42c2 with SMTP id p16-20020a1709028a9000b00199527d42c2mr1675552plo.18.1675989126261; Thu, 09 Feb 2023 16:32:06 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 10 Feb 2023 00:31:36 +0000 In-Reply-To: <20230210003148.2646712-1-seanjc@google.com> Mime-Version: 1.0 References: <20230210003148.2646712-1-seanjc@google.com> X-Mailer: git-send-email 2.39.1.581.gbfd45094c4-goog Message-ID: <20230210003148.2646712-10-seanjc@google.com> Subject: [PATCH v2 09/21] KVM: selftests: Move 0/initial value PERF_CAPS checks to dedicated sub-test From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Xiaoyao Li , Like Xu 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,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?1757402149910167039?= X-GMAIL-MSGID: =?utf-8?q?1757402149910167039?= Use a separate sub-test to verify userspace can clear PERF_CAPABILITIES and restore it to the KVM-supported value, as the testcase isn't unique to the LBR format. Signed-off-by: Sean Christopherson --- .../selftests/kvm/x86_64/vmx_pmu_caps_test.c | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c b/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c index ac08c0fdd84d..c3b0738e361b 100644 --- a/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c +++ b/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c @@ -41,6 +41,24 @@ static void guest_code(void) wrmsr(MSR_IA32_PERF_CAPABILITIES, PMU_CAP_LBR_FMT); } +/* + * Verify KVM allows writing PERF_CAPABILITIES with all KVM-supported features + * enabled, as well as '0' (to disable all features). + */ +static void test_basic_perf_capabilities(union perf_capabilities host_cap) +{ + struct kvm_vcpu *vcpu; + struct kvm_vm *vm = vm_create_with_one_vcpu(&vcpu, NULL); + + vcpu_set_msr(vcpu, MSR_IA32_PERF_CAPABILITIES, 0); + ASSERT_EQ(vcpu_get_msr(vcpu, MSR_IA32_PERF_CAPABILITIES), 0); + + vcpu_set_msr(vcpu, MSR_IA32_PERF_CAPABILITIES, host_cap.capabilities); + ASSERT_EQ(vcpu_get_msr(vcpu, MSR_IA32_PERF_CAPABILITIES), host_cap.capabilities); + + kvm_vm_free(vm); +} + static void test_fungible_perf_capabilities(union perf_capabilities host_cap) { struct kvm_vcpu *vcpu; @@ -66,12 +84,6 @@ static void test_immutable_perf_capabilities(union perf_capabilities host_cap) uint64_t val; int ret; - vcpu_set_msr(vcpu, MSR_IA32_PERF_CAPABILITIES, 0); - ASSERT_EQ(vcpu_get_msr(vcpu, MSR_IA32_PERF_CAPABILITIES), 0); - - vcpu_set_msr(vcpu, MSR_IA32_PERF_CAPABILITIES, host_cap.lbr_format); - ASSERT_EQ(vcpu_get_msr(vcpu, MSR_IA32_PERF_CAPABILITIES), (u64)host_cap.lbr_format); - /* * KVM only supports the host's native LBR format, as well as '0' (to * disable LBR support). Verify KVM rejects all other LBR formats. @@ -98,6 +110,7 @@ int main(int argc, char *argv[]) host_cap.capabilities = kvm_get_feature_msr(MSR_IA32_PERF_CAPABILITIES); host_cap.capabilities &= (PMU_CAP_FW_WRITES | PMU_CAP_LBR_FMT); + test_basic_perf_capabilities(host_cap); test_fungible_perf_capabilities(host_cap); test_immutable_perf_capabilities(host_cap); From patchwork Fri Feb 10 00:31:37 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 55155 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp660788wrn; Thu, 9 Feb 2023 16:34:09 -0800 (PST) X-Google-Smtp-Source: AK7set9QOqE5bVfhJeTmVJNVCVz4dCIpLfe+Jtj7J1Reon7yzHcDvHGVD8EFML6+vSB6ntTCMEwC X-Received: by 2002:aa7:8e8f:0:b0:593:6a1f:362e with SMTP id a15-20020aa78e8f000000b005936a1f362emr3473200pfr.7.1675989249166; Thu, 09 Feb 2023 16:34:09 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675989249; cv=none; d=google.com; s=arc-20160816; b=U606sK/BsqKTVBPZ44gqr8qtVFx2xePuva3KjeTAWLRt+EOWOEPcDGt+UZkAad09in UBXfLKf+h+/PsPF4PM2UuJOzJ9UaktgmBTk0U96DDcbJ51KjO47pkS4kU+jIeKO4Re/c S9PrDFS67jATq4kCyCDyu5QRCTcmpqhd9haX591j0zE/SRO8U4TFhpVU9B7MnSyj80n6 6HyRZHWfdLuFJGbmldXdclkVXL8ceXJws8jbOW8z/mBVLpuFQ3hbXx8BWPJ2bPWOqcfh MqBEnfQ7+GtjY9zGptXwamlIX1OAsbL51D3xXN1VKUUpvb8KxaGbAyd/bhRkNYy74sAf lHQA== 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=10uKcoMTK28X3E6OqIDW92Whbuau4E38iHBvczmXRls=; b=MTBw3Z44rNQadyeZ0zRv2oKUSYHZUMFlPTmAaLrWHjp3PMwPGvF5ZJxMTM62HRkUcP G1nV3yD3imjQRXj/0qL2Z6+bvZgZ9b/K67Fe+4qSu6OhpKaab8a5w14oudV0OHRstALO mZbDGFtTA4J5dz51r+dwkhGakth3IP1N7uMrgxCpCy0fQc6fDYs5uCnaegEHUwWe9SZA 9W01Z99vxDUNS0cZaw/xgBu67A7rbUuPSjEQweaecaYRC7p0tIC7jUHqdiSMLWAc3zm3 8zZAz0zHh5VN+TXJZUsx+1kCcP/kBARzEWI/hrw0YRQJ/07WWz02MsXCxPLPzckjebSr 5iwQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=MZeQazzo; 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 22-20020a621616000000b00593d2bcfc52si3120831pfw.144.2023.02.09.16.33.56; Thu, 09 Feb 2023 16:34:09 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=MZeQazzo; 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 S230163AbjBJAdE (ORCPT + 99 others); Thu, 9 Feb 2023 19:33:04 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53076 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230349AbjBJAch (ORCPT ); Thu, 9 Feb 2023 19:32:37 -0500 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 D35C560B81 for ; Thu, 9 Feb 2023 16:32:08 -0800 (PST) Received: by mail-pl1-x649.google.com with SMTP id g12-20020a170902868c00b00199148d00f2so2094064plo.17 for ; Thu, 09 Feb 2023 16:32:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; 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=10uKcoMTK28X3E6OqIDW92Whbuau4E38iHBvczmXRls=; b=MZeQazzohpr5oaGhqxIEXxmz0jCJ0cHmRJPQ0SIOXmyBLoDECqha+kpA6s1C1Bhy9p k3O08BXn1tpXk7S5rlcTaAvA9zW2TexG6vazpseFgKRCfnitg5/zcZ/nSJg1WtbZzTkg Yu44+/OUxJbpiq/XAJVns+9eEsVeQCMwh1PAvAJk3bBM987HJUrO4gt0ERZ2hh08Wku3 BxVJP36jWUgAaJEvT3GdUuiadDVtaP8FksFcjrIJuc8J5c97HzZpSCyUy7BnA4GyhnVV WSZbPxnQ8CjoZzKYe2jo/lrngLsZ7NcuE3QG7NXDzn33FACLthp4Oo93JMMqf8WGfJpS 6cDw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=10uKcoMTK28X3E6OqIDW92Whbuau4E38iHBvczmXRls=; b=xXyioQ08GVHv2eyug60LRo1l/aZFKd7spY7ilSomwOUDehTOKUAJ1yC3wGwht/YlRi 6WCexr7ab2/HwVh26yRwGr3220sat+FYYyKD8mVCM/+J6kHo265EMNi6NRlje5+aYuQV ykS19naCI+w89Ob44L7iyb7p9gYREDl7B375obshYVMuWPjdLgJpZmyWk0fwyXemUL7V J6t/bwOmqIE8XyFHRzLL86mCGojXeVajlLTpBnVLqVgZREYbCXMJux5jBWMmRGnTcDE5 WnhSK8TlbkwqQgbMzK98CigehTtvPNB2hUrkI9WV+i+3jmd1MwNng8aJfjf2Z3UccFrU q5JQ== X-Gm-Message-State: AO0yUKVX96E/4tzfKR1t/Baz0lAldrjhTol6BzryydS2uur7GxUGjybb QdWcmmqQVJhV/KCgwt9LfttdArkgl+Q= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a62:53c6:0:b0:58d:a84a:190b with SMTP id h189-20020a6253c6000000b0058da84a190bmr2946268pfb.48.1675989128046; Thu, 09 Feb 2023 16:32:08 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 10 Feb 2023 00:31:37 +0000 In-Reply-To: <20230210003148.2646712-1-seanjc@google.com> Mime-Version: 1.0 References: <20230210003148.2646712-1-seanjc@google.com> X-Mailer: git-send-email 2.39.1.581.gbfd45094c4-goog Message-ID: <20230210003148.2646712-11-seanjc@google.com> Subject: [PATCH v2 10/21] KVM: selftests: Assert that full-width PMC writes are supported if PDCM=1 From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Xiaoyao Li , Like Xu 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,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?1757402103065294173?= X-GMAIL-MSGID: =?utf-8?q?1757402103065294173?= KVM emulates full-width PMC writes in software, assert that KVM reports full-width writes as supported if PERF_CAPABILITIES is supported. Signed-off-by: Sean Christopherson --- tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c b/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c index c3b0738e361b..035470b38400 100644 --- a/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c +++ b/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c @@ -110,6 +110,9 @@ int main(int argc, char *argv[]) host_cap.capabilities = kvm_get_feature_msr(MSR_IA32_PERF_CAPABILITIES); host_cap.capabilities &= (PMU_CAP_FW_WRITES | PMU_CAP_LBR_FMT); + TEST_ASSERT(host_cap.full_width_write, + "Full-width writes should always be supported"); + test_basic_perf_capabilities(host_cap); test_fungible_perf_capabilities(host_cap); test_immutable_perf_capabilities(host_cap); From patchwork Fri Feb 10 00:31:38 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 55156 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp660809wrn; Thu, 9 Feb 2023 16:34:12 -0800 (PST) X-Google-Smtp-Source: AK7set+BaTycCH4O9y0j6r+bUya74U8z8MCJVXmg/C5e4C9XDLRJJWPFy+EIKAZ3100hgJlQhTm6 X-Received: by 2002:a17:90b:38c7:b0:230:c806:cfb0 with SMTP id nn7-20020a17090b38c700b00230c806cfb0mr14308195pjb.37.1675989252449; Thu, 09 Feb 2023 16:34:12 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675989252; cv=none; d=google.com; s=arc-20160816; b=p9BGOqgV5yzddP0PwW2DL9kS3qVjxLDvnvRZC7z4AixR1Qdlf1jRpkncCzmc8ArkOk 4R88Nmx5Sc1Hf3Oz0yMIhWTg/0AEZMpZuDhgPNX3oVzr46+M+WqOFq6dvp0s8Ng3sTjp 2aDFB1ayemxypRaMpMgLVEeefyVC9/G9jM2OJp3Sje4GBQdtoXCDeO904foI7eh6lQO1 cUIS3vKdqg31OyynUw8Mb0vbOtsSQ+Sp3JY8hVig2RQjMMegOShv63kz1+B7lLrj3nYJ RB8yTB3KpGgRc4h2mzOhBhgCjOYlBVWh25JyfcaUS1oOI1srKCZ2nwmoIgD90vtAwI6w 42pQ== 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=Vk51ezOTW4zNRYSRQz4ZjoRqnpbLfX1qjajQbLOjz6E=; b=mE3rag5QP8sQ+oRG2s8oeYzj03rnEAv4+k2j00zWUpvWQx8iDBCd2c2CdOfPVArb8g XA4l/13TzFTVBS5iF4bsMfurGIABwIGbyq3Nyfr90NZ3MBxwLA5DwEX9ElXFaWmH6Grm WcRu9RL/XN4dCnuGqwnVMOz3NGUpdxeNEEVGALMHrH0u5XmOoWiJWm/mfhUhK6W4ztKl pKEnT1zzkSUhCTN3G8Zufrwa/vzPncHY0PrnAhOXsQN4o5jTb19iN/8v16k/m1nFplYE ZbGOLNwkl271wRMwUK7/9UzDsizEGvnere1MODWR1tWotF5jc9jK0+Udnpb1ISe4XQBi 6wMQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=KF2AyvR1; 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 hg20-20020a17090b301400b00230b72ce3besi3162974pjb.91.2023.02.09.16.33.58; Thu, 09 Feb 2023 16:34:12 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=KF2AyvR1; 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 S230488AbjBJAdO (ORCPT + 99 others); Thu, 9 Feb 2023 19:33:14 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53034 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230389AbjBJAcn (ORCPT ); Thu, 9 Feb 2023 19:32:43 -0500 Received: from mail-yw1-x114a.google.com (mail-yw1-x114a.google.com [IPv6:2607:f8b0:4864:20::114a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B8C136F23E for ; Thu, 9 Feb 2023 16:32:10 -0800 (PST) Received: by mail-yw1-x114a.google.com with SMTP id 00721157ae682-4bdeb1bbeafso34460347b3.4 for ; Thu, 09 Feb 2023 16:32:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; 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=Vk51ezOTW4zNRYSRQz4ZjoRqnpbLfX1qjajQbLOjz6E=; b=KF2AyvR1TBIJUtf7p+Na1cAbpKslF9Xw+j+Oyin6+e8ZXCwZEGpcDsbJh76rth4Nkk tGhiF5apvHuGkSkNrDPU5XGhjINXuD9J3vCdIVA5aIHAM7mbxc58e8L7oZrEwok4LK0s ZedtPFFfsvDPw7r2j0DjBjf/XuqQ5F789eziWdjiWkPmmW/Tue67s5bZ50vLVB6GvbNh xEsjIbZL1cOuugqo4NkzfThg9PE1yk65PBc8tvt3+Y6GEl09zDluOGaO9f5tsyunVCmM W6XgoSPcN+gRF+xsb0hAvTgeFUqlCt2NjX+TwcJNbeYvFEPLDdQrn9gTJ1/Llzsa/aKS dOQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=Vk51ezOTW4zNRYSRQz4ZjoRqnpbLfX1qjajQbLOjz6E=; b=xgPX1oKUB4GPhxfvOT8G1nctkoP+rfP0qkJ0hdbYHNczW+Bd/jCePU6WpcWr4XbOpz 6Ni3ZUfMazG0tqt0UPIbjuQK4h6/I6ttEGZwRo7iaIomHBQ9uqV+jxnHjbI0pv+R/jqK 1cJxBoLOfA9CydUw7JysqRyXdtpw7coHnZYLXv6dlNXJl3FHtpV0YaI9MESfYlnzrEhj 0jAYCt5PCtgHmqSSzhfG3JkVkWdOhRLK3D2vlk/n44xubgngEDIv7uC+X7c11lJSuHi9 /XjBICHbZh8ZNQbiHeyAjrWmA9uSlrLWtJbw3DWWPjy9GXnYCMuQbU2M+ZPfgrFuuFWk EV2g== X-Gm-Message-State: AO0yUKX5q0//3ACuIGsLbI7wX1UEU0CQyh81X2jR3BuEdYwP2V9/8wl4 kWDgP4zWvHR+q1C8uXilp6aTsGcRN58= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a05:6902:4d:b0:895:2805:1fb3 with SMTP id m13-20020a056902004d00b0089528051fb3mr1249187ybh.275.1675989129752; Thu, 09 Feb 2023 16:32:09 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 10 Feb 2023 00:31:38 +0000 In-Reply-To: <20230210003148.2646712-1-seanjc@google.com> Mime-Version: 1.0 References: <20230210003148.2646712-1-seanjc@google.com> X-Mailer: git-send-email 2.39.1.581.gbfd45094c4-goog Message-ID: <20230210003148.2646712-12-seanjc@google.com> Subject: [PATCH v2 11/21] KVM: selftests: Print out failing MSR and value in vcpu_set_msr() From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Xiaoyao Li , Like Xu 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,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?1757402106454867117?= X-GMAIL-MSGID: =?utf-8?q?1757402106454867117?= Reimplement vcpu_set_msr() as a macro and pretty print the failing MSR (when possible) and the value if KVM_SET_MSRS fails instead of using the using the standard KVM_IOCTL_ERROR(). KVM_SET_MSRS is somewhat odd in that it returns the index of the last successful write, i.e. will be '0' on failure barring an entirely different KVM bug. And for writing MSRs, the MSR being written and the value being written are almost always relevant to the failure, i.e. just saying "failed!" doesn't help debug. Place the string goo in a separate macro in anticipation of using it to further expand MSR testing. Signed-off-by: Sean Christopherson --- .../selftests/kvm/include/x86_64/processor.h | 30 ++++++++++++++----- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/tools/testing/selftests/kvm/include/x86_64/processor.h b/tools/testing/selftests/kvm/include/x86_64/processor.h index 53ffa43c90db..26c8e202a956 100644 --- a/tools/testing/selftests/kvm/include/x86_64/processor.h +++ b/tools/testing/selftests/kvm/include/x86_64/processor.h @@ -928,14 +928,30 @@ static inline void vcpu_clear_cpuid_feature(struct kvm_vcpu *vcpu, uint64_t vcpu_get_msr(struct kvm_vcpu *vcpu, uint64_t msr_index); int _vcpu_set_msr(struct kvm_vcpu *vcpu, uint64_t msr_index, uint64_t msr_value); -static inline void vcpu_set_msr(struct kvm_vcpu *vcpu, uint64_t msr_index, - uint64_t msr_value) -{ - int r = _vcpu_set_msr(vcpu, msr_index, msr_value); - - TEST_ASSERT(r == 1, KVM_IOCTL_ERROR(KVM_SET_MSRS, r)); -} +/* + * Assert on an MSR access(es) and pretty print the MSR name when possible. + * Note, the caller provides the stringified name so that the name of macro is + * printed, not the value the macro resolves to (due to macro expansion). + */ +#define TEST_ASSERT_MSR(cond, fmt, msr, str, args...) \ +do { \ + if (__builtin_constant_p(msr)) { \ + TEST_ASSERT(cond, fmt, str, args); \ + } else if (!(cond)) { \ + char buf[16]; \ + \ + snprintf(buf, sizeof(buf), "MSR 0x%x", msr); \ + TEST_ASSERT(cond, fmt, buf, args); \ + } \ +} while (0) +#define vcpu_set_msr(vcpu, msr, val) \ +do { \ + uint64_t v = val; \ + \ + TEST_ASSERT_MSR(_vcpu_set_msr(vcpu, msr, v) == 1, \ + "KVM_SET_MSRS failed on %s, value = 0x%lx", msr, #msr, v); \ +} while (0) void kvm_get_cpu_address_width(unsigned int *pa_bits, unsigned int *va_bits); bool vm_is_unrestricted_guest(struct kvm_vm *vm); From patchwork Fri Feb 10 00:31:39 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 55157 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp660837wrn; Thu, 9 Feb 2023 16:34:17 -0800 (PST) X-Google-Smtp-Source: AK7set8KfvdLzzViHmkLvuCYfFzDYlE2QT6nEDjVuh7d8RHGcBYhZ6tkRFCZRM1cJKYfml6SvAU3 X-Received: by 2002:a05:6a00:4399:b0:5a8:4c8a:2ce4 with SMTP id bt25-20020a056a00439900b005a84c8a2ce4mr5184921pfb.3.1675989257219; Thu, 09 Feb 2023 16:34:17 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675989257; cv=none; d=google.com; s=arc-20160816; b=ZQH6eYFnd8YokszR/GS2s8OVQb5ydySa5zVdLTdrV0f71zINR6Og2fZReJz0AeKPyf 2+XU+3ssIhyRySMjTMpWGWBCvO7Itxmho/7BZyv5tgYFMnEFpBYNRrP5ntthPvSiJbgj nFKm73Cu7BIG3tTLfn7JVkxnZHNDVORw0qnMUq33kVQzkBOue5ugaIzSTh7yvmQwCFIA pWN4Yo05clx8kSBKRjmeHskyG+CjJmxE7V1gVWBCz7CKcYnFTgHDvMwXKDh1WQhPji/a Al38CT/CkxJJPKMBOIQctxTCsTcJe4xma9eGQ/fqicnb1oWySr3wK8T0BhDi2ube4lc6 YgBQ== 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=ErxDS8Mt98Bh2G42hGdy1a7/D5r7Doi1oWDwj8D/bzs=; b=ErNW7bcC0CEAqFMlVz78OAeZa4uVNLP4r3OHZycklwmPtkAJsKgM4fs8UhevHsx08a jhgFEJEGx+P3XbpLPPC7j8lYSDDQ1A0Bq9drYVA0Bc971IxxYhk/rMf9ktjHX8k0Wmmf tQ4+8ZKra4CgRcxZpgFgJtfSeqFkEjfMJRDa2602qq2PiTpHIRL2dyEHdUVVjsaDotCA 8AdNsnxa8Oh4qvx4xm4rAkaSZvqS0OlML0nnto8rnDZe2o7jcAimEWb1A5qS/7oLrA8j EhbGAbh7bhaR6SJ322QkhRUDGHf+vPDyvvA8dERwpuTlW+v04v/u0Mp5QbZe4ZwxzvrZ 40xQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=USF0vWnw; 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 w189-20020a6262c6000000b0058d9b9c045asi3049335pfb.84.2023.02.09.16.34.04; Thu, 09 Feb 2023 16:34:17 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=USF0vWnw; 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 S230502AbjBJAdS (ORCPT + 99 others); Thu, 9 Feb 2023 19:33:18 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53166 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230183AbjBJAcs (ORCPT ); Thu, 9 Feb 2023 19:32:48 -0500 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 86B5D6F8DA for ; Thu, 9 Feb 2023 16:32:12 -0800 (PST) Received: by mail-pg1-x54a.google.com with SMTP id o19-20020a63fb13000000b004fb5e56e652so235283pgh.9 for ; Thu, 09 Feb 2023 16:32:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; 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=ErxDS8Mt98Bh2G42hGdy1a7/D5r7Doi1oWDwj8D/bzs=; b=USF0vWnw8XD6xBLgfR077GlxM3M8cLOgPzJzS6EyFsuX6Tz8IHUkS8VPCkzqBTmHvN Ykf+xRwHERwEpqaivb5knRZXK7+fGnzrSTi1XrZyxqR6Q60BkOI8CM6b8JSh8DB/R0pH 4H+7XX84Ax3fgVPq9kk8MqBvtc17sRz60GvWG7PKDZvy+cW3DHPNk8LGk+rXZ8EdP3MA 1LvirwcUYAWpFeiz8VOvBXd7t1XiX98omtxZerYmngSI8lgMBQDUa3czCiFm3tSiQEYb GrAkqew/EPp8L8AGnDCCHBmFWmectV5S3uIvrtJ0HkEuAQGhWqPNYAlIN4dHYb12rJRX cqIg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=ErxDS8Mt98Bh2G42hGdy1a7/D5r7Doi1oWDwj8D/bzs=; b=kZP06VtT65xj/DEjpDceuA7hLa8dXDrYl9nqrOy/22DGWHJo3c24rj16yQsfD6uvoQ ZHbKmafCvyIVYxRZPFWpdJ7kbvfF+sz5PNwQC9LBCsO52fUCPp5ovyGS2QBcSBDD7ZYu PgWnLmaikGdMJ5V3bGT1z6n0pyCPJTv6cd8vnvN5BZtB+2DX/CY+YdbtHRmYhIzlQEMI lrN8e1lsy30X6gD438mGHe49QRzMtVBRjFYxnbYe/gDJ2pfvWimd5lV0ABgYF6Piudu9 ULW+Pji7ZSJEOahXprTkCqH7Pfnpb9UhfPNYtjZHjbBjJ47jq8cuHxzXRHYwZTsiN5hO SfLw== X-Gm-Message-State: AO0yUKXWwU/hCExkFUXyItAda5MNLsO+TCOgk/kTO0oUEALFaJffjOix h1Y/KgHutXZQz3iF/dEHOQlsiS1aElA= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a17:90a:6b06:b0:22c:266c:2c45 with SMTP id v6-20020a17090a6b0600b0022c266c2c45mr1763828pjj.49.1675989131403; Thu, 09 Feb 2023 16:32:11 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 10 Feb 2023 00:31:39 +0000 In-Reply-To: <20230210003148.2646712-1-seanjc@google.com> Mime-Version: 1.0 References: <20230210003148.2646712-1-seanjc@google.com> X-Mailer: git-send-email 2.39.1.581.gbfd45094c4-goog Message-ID: <20230210003148.2646712-13-seanjc@google.com> Subject: [PATCH v2 12/21] KVM: selftests: Verify KVM preserves userspace writes to "durable" MSRs From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Xiaoyao Li , Like Xu 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,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?1757402110950730256?= X-GMAIL-MSGID: =?utf-8?q?1757402110950730256?= Assert that KVM provides "read what you wrote" semantics for all "durable" MSRs (for lack of a better name). The extra coverage is cheap from a runtime performance perspective, and verifying the behavior in the common helper avoids gratuitous copy+paste in individual tests. Note, this affects all tests that set MSRs from userspace! Signed-off-by: Sean Christopherson --- .../selftests/kvm/include/x86_64/processor.h | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/kvm/include/x86_64/processor.h b/tools/testing/selftests/kvm/include/x86_64/processor.h index 26c8e202a956..52260f6c2465 100644 --- a/tools/testing/selftests/kvm/include/x86_64/processor.h +++ b/tools/testing/selftests/kvm/include/x86_64/processor.h @@ -945,12 +945,27 @@ do { \ } \ } while (0) +/* + * Returns true if KVM should return the last written value when reading an MSR + * from userspace, e.g. the MSR isn't a command MSR, doesn't emulate state that + * is changing, etc. This is NOT an exhaustive list! The intent is to filter + * out MSRs that are not durable _and_ that a selftest wants to write. + */ +static inline bool is_durable_msr(uint32_t msr) +{ + return msr != MSR_IA32_TSC; +} + #define vcpu_set_msr(vcpu, msr, val) \ do { \ - uint64_t v = val; \ + uint64_t r, v = val; \ \ TEST_ASSERT_MSR(_vcpu_set_msr(vcpu, msr, v) == 1, \ "KVM_SET_MSRS failed on %s, value = 0x%lx", msr, #msr, v); \ + if (!is_durable_msr(msr)) \ + break; \ + r = vcpu_get_msr(vcpu, msr); \ + TEST_ASSERT_MSR(r == v, "Set %s to '0x%lx', got back '0x%lx'", msr, #msr, v, r);\ } while (0) void kvm_get_cpu_address_width(unsigned int *pa_bits, unsigned int *va_bits); From patchwork Fri Feb 10 00:31:40 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 55160 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp660942wrn; Thu, 9 Feb 2023 16:34:32 -0800 (PST) X-Google-Smtp-Source: AK7set95bPjuI2fuHfbiHuGP+sefnS5oCLb31tKCqdkWXehUGt9KzZ01M/zd30ljKMM2/tTIXay8 X-Received: by 2002:a17:903:1245:b0:196:780a:ada8 with SMTP id u5-20020a170903124500b00196780aada8mr15606643plh.6.1675989272160; Thu, 09 Feb 2023 16:34:32 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675989272; cv=none; d=google.com; s=arc-20160816; b=Azkn5cXVH8OpBZ07jvZhUrYJ8tQu3xHMGMFaaLzZ8aD+BZHUfbcNEBooRb0rh5+YFU kgZlMB6Y+wNstPKPDRBxczZgWoUSoHc3i7srIaJHjUippa7sbwiMQEUED6RHfUUnQaGR 5Yt12txLinkou0lgtSrz7MlI1mlyX4auXJHgQVc8UJH3tWcNZKAvQvrXzgP+cTRsTY+5 KHPpceoyLNIuk7Vh0rZC2S9GBMqGEAkiZah61D9mVaBGaf1ohfSl17EXEwux26gtZc3u eY+teL7lk+VXub+VG8D+NGQ9wA65CVXCgl9JTFRzFqsPXdZ6aNJOTJ7a6z9AAIxI1AgT At7g== 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=/yC4dBTyHw4BCiIIE+mQoyLNyewJpNpr9hXU3HEhe04=; b=DehAv6CmbYX16HqHbonQ093k3S2IVoJRn0iu/H5ohNKk9FZDlplG1El+OTS2mZXkzM lsofQflPcaP2ccyZvAVUwk6dqMid0h0SOv58WJnAVvUa3LPTU+pmMGD0MCeMn3t5EdnU +DAWn/sPV5s6wDQTJz2c5FlSCVTfq3P1iw3CBRI9Vpm7soxiPl9YFAXPDh0aOVPg/UZz uQ2rJQLFeut5hOyIfCyQkq667EM6NHY0C3NsHqHdJIFspRXoLgVDJkk03wfgIw1Wu2OH BtjSady54DeomdXaVWQiWWlnbQYJ5UYD3ChFFgc1eIXETMrJfZflJF5cIpihAI8OUvtB yYsw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=dlFTWIrj; 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 b16-20020a170902d51000b00194bf71a8e8si3178929plg.515.2023.02.09.16.34.19; Thu, 09 Feb 2023 16:34:32 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=dlFTWIrj; 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 S230253AbjBJAdf (ORCPT + 99 others); Thu, 9 Feb 2023 19:33:35 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53452 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230472AbjBJAcw (ORCPT ); Thu, 9 Feb 2023 19:32:52 -0500 Received: from mail-yw1-x114a.google.com (mail-yw1-x114a.google.com [IPv6:2607:f8b0:4864:20::114a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EE1C23A84D for ; Thu, 9 Feb 2023 16:32:19 -0800 (PST) Received: by mail-yw1-x114a.google.com with SMTP id 00721157ae682-52ec7c792b1so11488637b3.5 for ; Thu, 09 Feb 2023 16:32:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; 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=/yC4dBTyHw4BCiIIE+mQoyLNyewJpNpr9hXU3HEhe04=; b=dlFTWIrj5xuEqCgUwiK8eF69WB3PynzH9yUbo/CRFqeCmeAV07IDNmKLTxj9gfHIEl QRajxEu3mwYakZTPaC3A8Ilm9JHeauGNoJ5/n+EKd77uEAO2oU6czqKqSEEkCQC89dRf jYvdefaqRkNNtezzCdDpemGQ7PUWxHdUDLhqeAVUxpK5E7cS5f2j1ytsC3l2e0aYnUQt 4uSrDnSM93RiTBzgzciApnWIjjNdLp0Sk3xWXLxMvJqtZZ062vrjOpR3NNd01Cnn4IfE U1wJoTYNzFVkN+DlYGsS7Bngc9fZm5k/+FOWfI5/Jl+q3L65nbV6Nv3++BK4z3QKVIOz TAjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=/yC4dBTyHw4BCiIIE+mQoyLNyewJpNpr9hXU3HEhe04=; b=naYU92Qgtt0lRSxf1jpYI7x0MquM3bCnpNnHz++6kAzUd8Fd5cx6mbQAcIOAw2vkS+ XJ7ybwEhuJj3BTUE1cQD6j80SsahVjJ0zM82VlJmHunwk5MZ7Q1RQB0vU3lk081kEvaH 7DC2JKZPLofnitiJEZS44fUekg0+wDzvr6mZanJxBT14BXHigYlgfRsiEpykfxGbbFJG k+vWXvkoprc+bCzUiKd4ys4S2onb0NgOFaQ7/AFLYOJL0cbauBcw6rd15gnMyyc6lNa7 EY4wSjuklJ0lJVEvEEX+/6csEGVrnYuhnEO3kicfzSazJltaEwYFauih3RlEtHO4KmX9 Ui8Q== X-Gm-Message-State: AO0yUKXIqdGqt6OU4AxoyeYmmKeiBq/iF9wfx/GhSxvFKHgUmR9rY2p1 NtMswLmMbzyTKqwfYsh5BdQfd72cg9M= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a81:81c2:0:b0:527:98b2:bce with SMTP id r185-20020a8181c2000000b0052798b20bcemr1538735ywf.222.1675989132992; Thu, 09 Feb 2023 16:32:12 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 10 Feb 2023 00:31:40 +0000 In-Reply-To: <20230210003148.2646712-1-seanjc@google.com> Mime-Version: 1.0 References: <20230210003148.2646712-1-seanjc@google.com> X-Mailer: git-send-email 2.39.1.581.gbfd45094c4-goog Message-ID: <20230210003148.2646712-14-seanjc@google.com> Subject: [PATCH v2 13/21] KVM: selftests: Drop now-redundant checks on PERF_CAPABILITIES writes From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Xiaoyao Li , Like Xu 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,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?1757402126995027557?= X-GMAIL-MSGID: =?utf-8?q?1757402126995027557?= Now that vcpu_set_msr() verifies the expected "read what was wrote" semantics of all durable MSRs, including PERF_CAPABILITIES, drop the now-redundant manual checks in the VMX PMU caps test. Signed-off-by: Sean Christopherson --- tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c b/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c index 035470b38400..f7a27b5c949b 100644 --- a/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c +++ b/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c @@ -51,10 +51,7 @@ static void test_basic_perf_capabilities(union perf_capabilities host_cap) struct kvm_vm *vm = vm_create_with_one_vcpu(&vcpu, NULL); vcpu_set_msr(vcpu, MSR_IA32_PERF_CAPABILITIES, 0); - ASSERT_EQ(vcpu_get_msr(vcpu, MSR_IA32_PERF_CAPABILITIES), 0); - vcpu_set_msr(vcpu, MSR_IA32_PERF_CAPABILITIES, host_cap.capabilities); - ASSERT_EQ(vcpu_get_msr(vcpu, MSR_IA32_PERF_CAPABILITIES), host_cap.capabilities); kvm_vm_free(vm); } @@ -67,9 +64,6 @@ static void test_fungible_perf_capabilities(union perf_capabilities host_cap) /* testcase 1, set capabilities when we have PDCM bit */ vcpu_set_msr(vcpu, MSR_IA32_PERF_CAPABILITIES, PMU_CAP_FW_WRITES); - /* check capabilities can be retrieved with KVM_GET_MSR */ - ASSERT_EQ(vcpu_get_msr(vcpu, MSR_IA32_PERF_CAPABILITIES), PMU_CAP_FW_WRITES); - /* check whatever we write with KVM_SET_MSR is _not_ modified */ vcpu_run(vcpu); ASSERT_EQ(vcpu_get_msr(vcpu, MSR_IA32_PERF_CAPABILITIES), PMU_CAP_FW_WRITES); From patchwork Fri Feb 10 00:31:41 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 55161 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp660991wrn; Thu, 9 Feb 2023 16:34:38 -0800 (PST) X-Google-Smtp-Source: AK7set/uAta2o7jHJl7WP2YYv4Ie/G8imlJDK3mkcYAo2NVj7oaQfnGJekBU7+GfUQY8tFxJZG9I X-Received: by 2002:a17:902:ce86:b0:199:1375:279c with SMTP id f6-20020a170902ce8600b001991375279cmr14253691plg.69.1675989278075; Thu, 09 Feb 2023 16:34:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675989278; cv=none; d=google.com; s=arc-20160816; b=XW+XvJ881Y1VVlleT77oTO1w8vyszvd+LYybem04jLxVPh5Q+nos8jevLG+fOgdaMI sZi9I7ngJ1YOQKa8kDqBIYKRLsZ73IjGw4337FA85ezKPl2GobEAZWYXfFVcqkIs1LMn Y7ysZ5fVQOH+g1wvzadVpLvWhDg19RQkARdYk1ufNNidP4cM00NHaYzT0MDd0BxO3EPT bl0vQ/+e6jXl/H8CKJbDvcTekkyyjVK79gIWdSnIpB9IxXmNKjZQMXfgKc5PtNO/zfOB IGKkW98InW+2Cayk7FiJgbPY0sUMHP3yd/JztQXqm8kQZf+K6PctPV/r2cyIbLI2ivDh ILCQ== 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=l7cJrzLZ8eAvu1dfgk3wdtw3/0KBtZxBV1s4qDZiZW0=; b=yIA9W+o+ggFb8GB4QGw86MeOB6fzngrLGZgzSHPcpAHJ+E70TCcm8UsSI2ORqFMGL8 N0wCy3sIh0MDvaUhkKnLCUAzPxDr0+Yw08hcc13nvyfxKSR/uRqnXKD3yNTs6/PyuIS9 q0ZRhUbOdS7F84XwLJwGNuRTru4ryx9oKrb1oowm2Z45PBOQ5trbkh9GTTTPe8hsP7Wy W1ahxNqRiwOnkwrEsafzznBfOa2/f5CzZog/FIRG0GD0SsC50EQxvsRCX1k5cdC08mQl 7i2S5+Hu7kvndGJ3tox9yF6weomPuKixkIUX2A1il1bUvxBkMg67DmhaWqsUN3Jr8Ie3 0F9g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=UHNNfqkD; 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 i15-20020a63b30f000000b004fac849f880si3134911pgf.206.2023.02.09.16.34.24; Thu, 09 Feb 2023 16:34:38 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=UHNNfqkD; 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 S231133AbjBJAdi (ORCPT + 99 others); Thu, 9 Feb 2023 19:33:38 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53494 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229940AbjBJAcz (ORCPT ); Thu, 9 Feb 2023 19:32:55 -0500 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 01657206AD for ; Thu, 9 Feb 2023 16:32:22 -0800 (PST) Received: by mail-pl1-x64a.google.com with SMTP id jn16-20020a170903051000b00198f5741d23so2098666plb.18 for ; Thu, 09 Feb 2023 16:32:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; 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=l7cJrzLZ8eAvu1dfgk3wdtw3/0KBtZxBV1s4qDZiZW0=; b=UHNNfqkDjSKVJdelnrCH+Ts0wZPROnz5hQmCtIskOZaoDuIeDGReWBlhjSmjHn386d As37kllaRCJpQwmTp+JiTHu0h75RCOEzBhNhkxMvOLLL+JARY52FQ5o7pvUuFzeag/Id DlrpIIEbKR8uW9YDcVqwyueK0O1OA5H9x2EM1Si1M9tLIcuBqHA8COd9SSqsh3CGg9LJ NJB6EZ7I2JfuIK+KVCbRkuWDOanOk7qFrk0l53wpoerKIlhtkwkK4CcNCVntPecs++Og mo4hQxcILy0wuU5tqOxJibz+KkqA4ORjnNlbNZaJrYSX0wJslvYDvSVPNPPpPTUgPyU4 C5sA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=l7cJrzLZ8eAvu1dfgk3wdtw3/0KBtZxBV1s4qDZiZW0=; b=S5d6GvFvTTFE9yjx/tbsemxGlV/tGZk3d4DUc/LPygXjHlx7z3HU4ksU8nW7d+pV6Y PNbPnLkEpUeCawGJUTB6Z06BoZXQutXTQzb5nREVBgiIqJ9ScFRqyQ/j9UgR7M7UG0G5 AgRhOuc/J/Uxi4iHYtFIEov10Fk/TKvtXQDq2v3aiRfb+zsnSie7VZP5uOuT74cLAd07 HTRyEVoi6MNGXQvfahOq1yEJy9qsA/KchbYdQvFJx46q5//6Xxu4IGrqbThm//EIogC8 m1sOk71wV/invLowyL0MTPVRTN+y72eZ8hIkoF1rPVajOlleVXI/77zsjLmFM2FNbJ5l 5rCw== X-Gm-Message-State: AO0yUKVDhWiulG2wV7b7Y7A9AOUpAoz8EZys2LrtjsG3KogqcoUfeFaA TQrnOznz6Zylvw6l6jKyC0/XkcMBJxo= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a62:1a8c:0:b0:592:557f:9f65 with SMTP id a134-20020a621a8c000000b00592557f9f65mr2914611pfa.8.1675989134617; Thu, 09 Feb 2023 16:32:14 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 10 Feb 2023 00:31:41 +0000 In-Reply-To: <20230210003148.2646712-1-seanjc@google.com> Mime-Version: 1.0 References: <20230210003148.2646712-1-seanjc@google.com> X-Mailer: git-send-email 2.39.1.581.gbfd45094c4-goog Message-ID: <20230210003148.2646712-15-seanjc@google.com> Subject: [PATCH v2 14/21] KVM: selftests: Test all fungible features in PERF_CAPABILITIES From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Xiaoyao Li , Like Xu 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,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?1757402132962504126?= X-GMAIL-MSGID: =?utf-8?q?1757402132962504126?= Verify that userspace can set all fungible features in PERF_CAPABILITIES. Drop the now unused #define of the "full-width writes" flag. Signed-off-by: Sean Christopherson --- .../selftests/kvm/x86_64/vmx_pmu_caps_test.c | 29 +++++++++++++++---- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c b/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c index f7a27b5c949b..2647282ff380 100644 --- a/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c +++ b/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c @@ -14,10 +14,11 @@ #define _GNU_SOURCE /* for program_invocation_short_name */ #include +#include + #include "kvm_util.h" #include "vmx.h" -#define PMU_CAP_FW_WRITES (1ULL << 13) #define PMU_CAP_LBR_FMT 0x3f union perf_capabilities { @@ -36,6 +37,18 @@ union perf_capabilities { u64 capabilities; }; +/* + * The LBR format and most PEBS features are immutable, all other features are + * fungible (if supported by the host and KVM). + */ +static const union perf_capabilities immutable_caps = { + .lbr_format = -1, + .pebs_trap = 1, + .pebs_arch_reg = 1, + .pebs_format = -1, + .pebs_baseline = 1, +}; + static void guest_code(void) { wrmsr(MSR_IA32_PERF_CAPABILITIES, PMU_CAP_LBR_FMT); @@ -58,15 +71,22 @@ static void test_basic_perf_capabilities(union perf_capabilities host_cap) static void test_fungible_perf_capabilities(union perf_capabilities host_cap) { + const uint64_t fungible_caps = host_cap.capabilities & ~immutable_caps.capabilities; + struct kvm_vcpu *vcpu; struct kvm_vm *vm = vm_create_with_one_vcpu(&vcpu, guest_code); + int bit; - /* testcase 1, set capabilities when we have PDCM bit */ - vcpu_set_msr(vcpu, MSR_IA32_PERF_CAPABILITIES, PMU_CAP_FW_WRITES); + for_each_set_bit(bit, &fungible_caps, 64) { + vcpu_set_msr(vcpu, MSR_IA32_PERF_CAPABILITIES, BIT_ULL(bit)); + vcpu_set_msr(vcpu, MSR_IA32_PERF_CAPABILITIES, + host_cap.capabilities & ~BIT_ULL(bit)); + } + vcpu_set_msr(vcpu, MSR_IA32_PERF_CAPABILITIES, host_cap.capabilities); /* check whatever we write with KVM_SET_MSR is _not_ modified */ vcpu_run(vcpu); - ASSERT_EQ(vcpu_get_msr(vcpu, MSR_IA32_PERF_CAPABILITIES), PMU_CAP_FW_WRITES); + ASSERT_EQ(vcpu_get_msr(vcpu, MSR_IA32_PERF_CAPABILITIES), host_cap.capabilities); kvm_vm_free(vm); } @@ -102,7 +122,6 @@ int main(int argc, char *argv[]) TEST_REQUIRE(kvm_cpu_property(X86_PROPERTY_PMU_VERSION) > 0); host_cap.capabilities = kvm_get_feature_msr(MSR_IA32_PERF_CAPABILITIES); - host_cap.capabilities &= (PMU_CAP_FW_WRITES | PMU_CAP_LBR_FMT); TEST_ASSERT(host_cap.full_width_write, "Full-width writes should always be supported"); From patchwork Fri Feb 10 00:31:42 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 55159 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp660935wrn; Thu, 9 Feb 2023 16:34:31 -0800 (PST) X-Google-Smtp-Source: AK7set8++Q7IlZj1MgRLCI29FKlPTfGoLIuK9Us+ELyZiAvFyyZV3Iybiwdwtqw0bS+UvoQOybhs X-Received: by 2002:a05:6a20:4286:b0:bf:8866:f46d with SMTP id o6-20020a056a20428600b000bf8866f46dmr16922643pzj.34.1675989271566; Thu, 09 Feb 2023 16:34:31 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675989271; cv=none; d=google.com; s=arc-20160816; b=RLm5OQI/D5UcVuQPJdjKddpoCozZFr5Y0rDKgHQK4rBGwuIS9guFR0s6XkvlJkvWpI AV/2TbGgULJDqIMbZWzxRZncMQ3y9Yo4E2Jw86qhVVNvTFIvhO9e1/cFFUoDUxUiBFj7 rZtJpvebinQbmIdV97zUZwoqNSOpXo6n2HGKmDbHLThj/K9xh9mBy0EiqQZ7H645OyW/ M1d5pxWOYPQzJvbDwBGNIbIB068yL17ObWix8C3F3abZeIdBMXAajh1ykcZa9kgrBzYj 6FgqwQqW8wg4DPy9869PPH/nH44J1y/vM+72WekjxTKRcNhby/56SlzBH5bb+wNpDKxU fIOQ== 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=+k4M952d2GDbH8aircBGQJTgd8PxrJu8zZm+/DfU8l4=; b=g82shquBxjSJNviyA76uFsd7opHL0nyR/phedQl1ExrhUSjrDNvkFYfTfvAVXSPrMS SM4V3ANdA0R6Me/t7VdnA8kFdXuPJiKZ+uHwUG95Saxh10bFg3nF9OtdagjHuUbv/qzQ MN53Fq7jgej0Qu4ERKxQW8jNfe2vnGV3jL5N3bPua2fh5izIuSodlbhd8Qchoj2scfir r80V5Bpn9Wfx1Dpys0pqPrj7j6dB85m/8hP9pCjMmyTS7sKBlLBtt8XypgUEozMGzCB0 vXnSGcQfgepOi0qKGrlDB5A3l2I33iVof++zwZf+X0MukSVn/K9DjGbW/KW0r2p5Q8KH WvDg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=IA6OgOX8; 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 oc17-20020a17090b1c1100b00229c28277c6si3959095pjb.41.2023.02.09.16.34.17; Thu, 09 Feb 2023 16:34:31 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=IA6OgOX8; 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 S230467AbjBJAdb (ORCPT + 99 others); Thu, 9 Feb 2023 19:33:31 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53808 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230465AbjBJAcv (ORCPT ); Thu, 9 Feb 2023 19:32:51 -0500 Received: from mail-pj1-x1049.google.com (mail-pj1-x1049.google.com [IPv6:2607:f8b0:4864:20::1049]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7A1B8234F2 for ; Thu, 9 Feb 2023 16:32:16 -0800 (PST) Received: by mail-pj1-x1049.google.com with SMTP id mi18-20020a17090b4b5200b00230e56d5a44so1703057pjb.1 for ; Thu, 09 Feb 2023 16:32:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; 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=+k4M952d2GDbH8aircBGQJTgd8PxrJu8zZm+/DfU8l4=; b=IA6OgOX8vNndOZJU73bfgl/4tQXWJRnJ0OPt0ATsMtBAaIlTnc/X8ihp+C3Z5DSI4C suqFEyLg7Ruh/4V/G/szO99iX9MFJQosyR0tVPr3w0WQZ/6+TRzGb5ylSg+i2EB6P76p h83f3FdmOSCeQJvaS5UHWuFZSS7WcGJgvg6PZF8ggMV2MBJ4ouRc0c2uPDHt9fGawIcT cU6dBkEQtsuPzILLQnPQG7CCGxTwBFXN4mdRhqrPLDU2M5l5A4oXoGl9QzFmMUB1yaFn DKFtM8UKKAxLS4GBhXVdlJw2U24hdRM+QBifpZKjaMTVuAQfwYBhd8qG/WnWwMd0/Q6A 1ltQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=+k4M952d2GDbH8aircBGQJTgd8PxrJu8zZm+/DfU8l4=; b=VC5erubfCh0qASqV7OEloZ5r7Mvhyzjz3OULHIjRwFr8skUK9XXdknR+w/w1u00JD8 ruFVX97D0Hl+eKyqUUezpHO3+FmJOaGpLKhVxmiuiZX91J/KHG3MJx/WtHYyy/PydXrw NHHng3/68nP6yEOLhwNTL6JCr6DxnLa+azpMfXMeSCSlDpFax149+RDODL6XgADu2QwZ mW2TKw98FGwttjx95PT9jM3kRd2CMKtr8rJn3Tm7N/6atkCKNwGJSxa85NsYYUjd/P4a aFLR4ynyPMOMxHOVeKD2R/LntNBj5mmAv/a/neYKjie+DP+rjbiGOZcMNn3pPkvJT2ek 2nwQ== X-Gm-Message-State: AO0yUKUIHfBELUY2iZ54FrbgxO0yLXTLCuQFHrEhLeQrBAiXegbFO5HO 1rj44HHwUobxj8FTVdFWD+z+QOtqvTk= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:aa7:8ece:0:b0:5a8:5e12:a12e with SMTP id b14-20020aa78ece000000b005a85e12a12emr695322pfr.11.1675989136167; Thu, 09 Feb 2023 16:32:16 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 10 Feb 2023 00:31:42 +0000 In-Reply-To: <20230210003148.2646712-1-seanjc@google.com> Mime-Version: 1.0 References: <20230210003148.2646712-1-seanjc@google.com> X-Mailer: git-send-email 2.39.1.581.gbfd45094c4-goog Message-ID: <20230210003148.2646712-16-seanjc@google.com> Subject: [PATCH v2 15/21] KVM: selftests: Test all immutable non-format bits in PERF_CAPABILITIES From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Xiaoyao Li , Like Xu 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,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?1757402126235018555?= X-GMAIL-MSGID: =?utf-8?q?1757402126235018555?= Add negative testing of all immutable bits in PERF_CAPABILITIES, i.e. single bits that are reserved-0 or are effectively reserved-1 by KVM. Omit LBR and PEBS format bits from the test as it's easier to test them manually than it is to add safeguards to the comment path, e.g. toggling a single bit can yield a format of '0', which is legal as a "disable" value. Signed-off-by: Sean Christopherson --- .../selftests/kvm/x86_64/vmx_pmu_caps_test.c | 30 +++++++++++++++++-- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c b/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c index 2647282ff380..d91bf44a2e39 100644 --- a/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c +++ b/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c @@ -49,6 +49,11 @@ static const union perf_capabilities immutable_caps = { .pebs_baseline = 1, }; +static const union perf_capabilities format_caps = { + .lbr_format = -1, + .pebs_format = -1, +}; + static void guest_code(void) { wrmsr(MSR_IA32_PERF_CAPABILITIES, PMU_CAP_LBR_FMT); @@ -91,12 +96,30 @@ static void test_fungible_perf_capabilities(union perf_capabilities host_cap) kvm_vm_free(vm); } +/* + * Verify KVM rejects attempts to set unsupported and/or immutable features in + * PERF_CAPABILITIES. Note, LBR format and PEBS format need to be validated + * separately as they are multi-bit values, e.g. toggling or setting a single + * bit can generate a false positive without dedicated safeguards. + */ static void test_immutable_perf_capabilities(union perf_capabilities host_cap) { + const uint64_t reserved_caps = (~host_cap.capabilities | + immutable_caps.capabilities) & + ~format_caps.capabilities; + struct kvm_vcpu *vcpu; struct kvm_vm *vm = vm_create_with_one_vcpu(&vcpu, NULL); uint64_t val; - int ret; + int r, bit; + + for_each_set_bit(bit, &reserved_caps, 64) { + r = _vcpu_set_msr(vcpu, MSR_IA32_PERF_CAPABILITIES, + host_cap.capabilities ^ BIT_ULL(bit)); + TEST_ASSERT(!r, "%s immutable feature 0x%llx (bit %d) didn't fail", + host_cap.capabilities & BIT_ULL(bit) ? "Setting" : "Clearing", + BIT_ULL(bit), bit); + } /* * KVM only supports the host's native LBR format, as well as '0' (to @@ -106,9 +129,10 @@ static void test_immutable_perf_capabilities(union perf_capabilities host_cap) if (val == (host_cap.capabilities & PMU_CAP_LBR_FMT)) continue; - ret = _vcpu_set_msr(vcpu, MSR_IA32_PERF_CAPABILITIES, val); - TEST_ASSERT(!ret, "Bad LBR FMT = 0x%lx didn't fail", val); + r = _vcpu_set_msr(vcpu, MSR_IA32_PERF_CAPABILITIES, val); + TEST_ASSERT(!r, "Bad LBR FMT = 0x%lx didn't fail", val); } + kvm_vm_free(vm); } From patchwork Fri Feb 10 00:31:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 55163 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp661280wrn; Thu, 9 Feb 2023 16:35:15 -0800 (PST) X-Google-Smtp-Source: AK7set9zzqJ9/6kQ6HwIwVRy/5qsEBbxMVESPXpsf/HJV1OVItk+W52C92BM1Kz0dy2lBKkYYm8L X-Received: by 2002:a17:907:8747:b0:8ab:a38b:21ee with SMTP id qo7-20020a170907874700b008aba38b21eemr9519816ejc.32.1675989314914; Thu, 09 Feb 2023 16:35:14 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675989314; cv=none; d=google.com; s=arc-20160816; b=IGKMFBHyJFh3VsXbAPqA7Sc3uPufFuWZeTp31Lacl2HsHd66jQJ66FwZ92v9zEBR6R Gl4m9EpaxaYEAC8t7YZsfzwmGKlBCKl22CJ3YkgKr8bz4pOiAE4EaddEJVdRBhB66mxj 7oxPyFJVwq+bJlYJ2ct3p+QqClRM7VSMGdPo+MPtwp5sJA0vtS/miaLwB1zDdo37lP+D hG9znLJbs1wHEltSYuiolG6Zx/Y7TbOGaDdVc0Y/Iov+btaS18nW95EoaQHKslgV+hSR hBdanlZI+iWaRHQHc6pkpAVtWFkUM3Z+Zqj76q3K2dFnYG+uigPVMUB2i7/BN0gETgpv nALA== 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=u+uN37eWphC2DXBy/eZAMutSohHuiH84z9BjA6Yonic=; b=fE+Z+6iD7gN45fVxql8e/IJGnmPjnPhrv5WE+aJ1iMX28b/wbBnElZknm2hmeexNyN CVfBXb3K2Zo8Ri/x+e5C27CQcVCc7ZyZQXItffy84SAV5Oy8OFABLF8NZm8oQPbJ5IQX 1pCEaky50rfi0QP/eCRIs2l+GlUKGYBJ8oXdR+clIRyqnlDl+oKHOdXrN0wq89NLOzs9 vn6iJ3lE2lhUa0npWZyeqPrSp8K0vd2/WSFpr0clA6OkLdG3gK05Bej0QQgKcpBhRRAx qU5DHFU8m7Q63fZpj/O1TlPvHTC57vQdP/cXbI+g1c/LYEK3zS00jI8mHHrc7Zw9uvnP Ck5Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=a23HHkIy; 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 zy21-20020a17090734d500b0088e0c76c466si3811969ejb.356.2023.02.09.16.34.51; Thu, 09 Feb 2023 16:35:14 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=a23HHkIy; 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 S231163AbjBJAdz (ORCPT + 99 others); Thu, 9 Feb 2023 19:33:55 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53722 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230492AbjBJAdP (ORCPT ); Thu, 9 Feb 2023 19:33:15 -0500 Received: from mail-pj1-x1049.google.com (mail-pj1-x1049.google.com [IPv6:2607:f8b0:4864:20::1049]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 28C8F6F8FD for ; Thu, 9 Feb 2023 16:32:32 -0800 (PST) Received: by mail-pj1-x1049.google.com with SMTP id l18-20020a17090add9200b00230f60889d6so1595572pjv.3 for ; Thu, 09 Feb 2023 16:32:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; 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=u+uN37eWphC2DXBy/eZAMutSohHuiH84z9BjA6Yonic=; b=a23HHkIyyBmPIc9LXUuzfy6mgHqnSj8/Xj+GczXDjbPEG9C9VhW3YLCnaVrGASU4It dRMLgQ0Ds6KR7AF7VA5wMEdz1pY5REJp1bswbQ13++0xCdoNi9eGewi/wt/JpVA3CpsJ VibX0yz9vMRbTuJ0PzAXnZcuHGub1oyv0ffubrVq38Gfyn49hEAYN+gHDKB1vILwLouw MRymvft4bHIhVvVGp3LdNW2O6gORiCt7rLmDela8Gz7awxkPZN5iNsxMNFbZwUQVXGS9 VZyufZMAD4IfLnuP1VHvx94QEj70p3sUrJX8nsNtu7zY/zfm7bxMBRPUtTGjiQfXK6OS tx9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=u+uN37eWphC2DXBy/eZAMutSohHuiH84z9BjA6Yonic=; b=xQvGpC3H9Kb5S2nWJTPPq+DO9L2PRZCRWIWuaEAmOXTMR5Xsd24i3BKeRNm88zKkOm jFARRi1dqOrfpm/SzEtVALZNmWMQHkA8UPTK0fgg/2crLXj0J0zU8TTR7oYl7HgLM8Ks gANjdb2q/ymN13wtUPzuxWh/n5Bak4011mdu32iDc1GkemxYTcgPZNrkg1I4b/z3vxJy bqMWZR/bxGC6ZM+rbOLOAW4OyULFZTqQYgbosXz/xoZemHsNXzQoOoHxyckdfYDO9nuJ ftBnTYXIIVW1J81vsxxFXXivTf1rghhkLshQMJNag60a67zGjpOjKvHG0suh6/MLUNxf HO3Q== X-Gm-Message-State: AO0yUKXK1T7NoS+dFudj559JZwWstetdI0kWKsHHRwIcfAr9A4+PhUYj 4eMTKHyKR8PH7/0t5PFwyDLO0DHdmz0= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a17:902:7c0f:b0:199:49fc:8669 with SMTP id x15-20020a1709027c0f00b0019949fc8669mr2022019pll.6.1675989137722; Thu, 09 Feb 2023 16:32:17 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 10 Feb 2023 00:31:43 +0000 In-Reply-To: <20230210003148.2646712-1-seanjc@google.com> Mime-Version: 1.0 References: <20230210003148.2646712-1-seanjc@google.com> X-Mailer: git-send-email 2.39.1.581.gbfd45094c4-goog Message-ID: <20230210003148.2646712-17-seanjc@google.com> Subject: [PATCH v2 16/21] KVM: selftests: Expand negative testing of guest writes to PERF_CAPABILITIES From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Xiaoyao Li , Like Xu 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,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?1757402171954352038?= X-GMAIL-MSGID: =?utf-8?q?1757402171954352038?= Test that the guest can't write 0 to PERF_CAPABILITIES, can't write the current value, and can't toggle _any_ bits. There is no reason to special case the LBR format. Signed-off-by: Sean Christopherson --- .../selftests/kvm/x86_64/vmx_pmu_caps_test.c | 61 ++++++++++++++++--- 1 file changed, 54 insertions(+), 7 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c b/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c index d91bf44a2e39..44fc6101a547 100644 --- a/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c +++ b/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c @@ -54,9 +54,59 @@ static const union perf_capabilities format_caps = { .pebs_format = -1, }; -static void guest_code(void) +static void guest_code(uint64_t current_val) { - wrmsr(MSR_IA32_PERF_CAPABILITIES, PMU_CAP_LBR_FMT); + uint8_t vector; + int i; + + vector = wrmsr_safe(MSR_IA32_PERF_CAPABILITIES, current_val); + GUEST_ASSERT_2(vector == GP_VECTOR, current_val, vector); + + vector = wrmsr_safe(MSR_IA32_PERF_CAPABILITIES, 0); + GUEST_ASSERT_2(vector == GP_VECTOR, 0, vector); + + for (i = 0; i < 64; i++) { + vector = wrmsr_safe(MSR_IA32_PERF_CAPABILITIES, + current_val ^ BIT_ULL(i)); + GUEST_ASSERT_2(vector == GP_VECTOR, + current_val ^ BIT_ULL(i), vector); + } + + GUEST_DONE(); +} + +/* + * Verify that guest WRMSRs to PERF_CAPABILITIES #GP regardless of the value + * written, that the guest always sees the userspace controlled value, and that + * PERF_CAPABILITIES is immutable after KVM_RUN. + */ +static void test_guest_wrmsr_perf_capabilities(union perf_capabilities host_cap) +{ + struct kvm_vcpu *vcpu; + struct kvm_vm *vm = vm_create_with_one_vcpu(&vcpu, guest_code); + struct ucall uc; + + vm_init_descriptor_tables(vm); + vcpu_init_descriptor_tables(vcpu); + + vcpu_set_msr(vcpu, MSR_IA32_PERF_CAPABILITIES, host_cap.capabilities); + + vcpu_args_set(vcpu, 1, host_cap.capabilities); + vcpu_run(vcpu); + + switch (get_ucall(vcpu, &uc)) { + case UCALL_ABORT: + REPORT_GUEST_ASSERT_2(uc, "val = 0x%lx, vector = %lu"); + break; + case UCALL_DONE: + break; + default: + TEST_FAIL("Unexpected ucall: %lu", uc.cmd); + } + + ASSERT_EQ(vcpu_get_msr(vcpu, MSR_IA32_PERF_CAPABILITIES), host_cap.capabilities); + + kvm_vm_free(vm); } /* @@ -79,7 +129,7 @@ static void test_fungible_perf_capabilities(union perf_capabilities host_cap) const uint64_t fungible_caps = host_cap.capabilities & ~immutable_caps.capabilities; struct kvm_vcpu *vcpu; - struct kvm_vm *vm = vm_create_with_one_vcpu(&vcpu, guest_code); + struct kvm_vm *vm = vm_create_with_one_vcpu(&vcpu, NULL); int bit; for_each_set_bit(bit, &fungible_caps, 64) { @@ -89,10 +139,6 @@ static void test_fungible_perf_capabilities(union perf_capabilities host_cap) } vcpu_set_msr(vcpu, MSR_IA32_PERF_CAPABILITIES, host_cap.capabilities); - /* check whatever we write with KVM_SET_MSR is _not_ modified */ - vcpu_run(vcpu); - ASSERT_EQ(vcpu_get_msr(vcpu, MSR_IA32_PERF_CAPABILITIES), host_cap.capabilities); - kvm_vm_free(vm); } @@ -153,6 +199,7 @@ int main(int argc, char *argv[]) test_basic_perf_capabilities(host_cap); test_fungible_perf_capabilities(host_cap); test_immutable_perf_capabilities(host_cap); + test_guest_wrmsr_perf_capabilities(host_cap); printf("Completed perf capability tests.\n"); } From patchwork Fri Feb 10 00:31: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: 55164 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp661650wrn; Thu, 9 Feb 2023 16:36:07 -0800 (PST) X-Google-Smtp-Source: AK7set/3ZvztZSgFLltZrne2XI4BPlF/vmaQw3RuxThoUVv9MSmsmgdSZp1o/dPAIkD2k3dXtFtu X-Received: by 2002:a17:90b:4b50:b0:22c:46e:651c with SMTP id mi16-20020a17090b4b5000b0022c046e651cmr14530273pjb.5.1675989366765; Thu, 09 Feb 2023 16:36:06 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675989366; cv=none; d=google.com; s=arc-20160816; b=i/IjfUqwhwKaJ8aWnH0EhLCuWJffnDtF02HIGVDxN1o6IY/zBNKrqBX6XopH/jS0z7 3QqTZsS8nNZTKt/gxENCmr41v6c7eYMjPmIXUzz654O+iSnlKkLfl4wDArd0sg2+5vkz 1UYrcqhJr7GJx1nALCw4vch6HdwsU2suqb3jesOgVa2IA/ND7QZOP1WqrGR+V5sP/ZSX SNkr5Wx1+du6E6wLlb9cArpMOBN6Ng3RmLEqpzcOU/i/CDKO7PeFHPJqC2xfVANl1MUR nVKTnBkEmq6ioXRYwt3Ds6KHuvhRWbUsGom2j2pDmFgjfpOaQ6ygvLJE0FXEWByFTHbj Ujvg== 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=4YaSCxh91s2vz1Wx4zQx2zkw5Mb7VIy4t0nr1FfetkY=; b=RUC+EaTP25YycD7SMHppWFJwG7nZJwb4kqmc3sX2nDQdxtn4eD8gVPuNpuXbaMF2s9 0jJvV1MSZW5H9ALJV/wQoOe2AaG07pZ6iia2hs44R6N5Iut8sjNKzf+HHjtU1CD2DLt/ 5Cgk/ATDHyNh0QYz97wprMvEP4/seZZyODBC1vY8sqZ0/j932FBKAN+atbIa/vzplWdP KdKGgzAR9IN/95zJFmvRy6NQ0eCWG03v7apFHKJeEWpo/qNuDFMb68/Yx+JHXmcpXvbn 9dhY7mgJdAPsMdkX3HVc9N/TyADDu9hqJ1H7gpy7PUeDERnCfDOPw73DaQgf8tqOrNtD /SwQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=Pb9YNrGh; 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 y18-20020a63b512000000b004e299dbbec9si3353403pge.372.2023.02.09.16.35.53; Thu, 09 Feb 2023 16:36:06 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=Pb9YNrGh; 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 S230304AbjBJAd6 (ORCPT + 99 others); Thu, 9 Feb 2023 19:33:58 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53086 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230183AbjBJAd0 (ORCPT ); Thu, 9 Feb 2023 19:33:26 -0500 Received: from mail-pj1-x104a.google.com (mail-pj1-x104a.google.com [IPv6:2607:f8b0:4864:20::104a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B9CD46E89B for ; Thu, 9 Feb 2023 16:32:36 -0800 (PST) Received: by mail-pj1-x104a.google.com with SMTP id dt6-20020a17090afa4600b00230183006c3so1590069pjb.7 for ; Thu, 09 Feb 2023 16:32:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; 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=4YaSCxh91s2vz1Wx4zQx2zkw5Mb7VIy4t0nr1FfetkY=; b=Pb9YNrGhDlI/KkrCjvmq6aONc/k8rCIIOTcWwh32p6eVOtc2iLVErkwMmRxXmoJGWr 4ovRCN8XSkgykLLXp0Nya9sUKwW/++zRSESKvzOrWF2AlS7ID5ZSoVelbRpB5nSBmrIy p885ziMNyde2KIuY0kcUsh7pg/ceJus5/PhPYdx275DUpIHm2+6ggVaYO3a0L+S43y3S 090t7+Fw5NupHRJCmZXoF+mMaXk58RXbqONmq0KbDeRkBbfL1GgfWt6TDbfvti+uQruM pLCmoWg1VuLuY0SuX81xSlEyDi0RqmPmiq0CgfOHWiDT1U5snzXS/BwiyRg89eZbZwEc hJUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=4YaSCxh91s2vz1Wx4zQx2zkw5Mb7VIy4t0nr1FfetkY=; b=ucA0eT4BEaQapKFYEwGGfRji7oAuUD/fC47yL8d8Tc1UOKwev9tneDBeZ1BrfcEzhZ o2xK/RFkiFYqmu57QCj17gJj92l9iAttyBJw9blo5WIsm7huio6UrCy/TlA82eofPFyb 6MSkZESBH299UxsvxXbPkxUPv4EbRpF8F8vs2dK455XnbKOvP4hrivzzD79JumA3cBTa b/GDayxGXdqNsoruipy9ocsoKwv8SwGNLbmsBsBb6BZ+1Pv7n1BrERG+tG+p5uWjPunY R+epynaRZyTexXa/FdBeWgGWRRfB+HLb4Wvoc9hLsSfkOZKTT0mQdJDmpCyrOBoNaHZ8 ileQ== X-Gm-Message-State: AO0yUKWkTWgL3tXJde0Ee/oRbRAmwWWnYYrb8AVtawbwCXb9In6v2LT5 heTVu7zM3/2ooVXHv9Vq4jlz3TvpQB8= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a62:1c08:0:b0:590:762f:58bc with SMTP id c8-20020a621c08000000b00590762f58bcmr2799601pfc.50.1675989139088; Thu, 09 Feb 2023 16:32:19 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 10 Feb 2023 00:31:44 +0000 In-Reply-To: <20230210003148.2646712-1-seanjc@google.com> Mime-Version: 1.0 References: <20230210003148.2646712-1-seanjc@google.com> X-Mailer: git-send-email 2.39.1.581.gbfd45094c4-goog Message-ID: <20230210003148.2646712-18-seanjc@google.com> Subject: [PATCH v2 17/21] KVM: selftests: Test post-KVM_RUN writes to PERF_CAPABILITIES From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Xiaoyao Li , Like Xu 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,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?1757402226132911089?= X-GMAIL-MSGID: =?utf-8?q?1757402226132911089?= Now that KVM disallows changing PERF_CAPABILITIES after KVM_RUN, expand the host side checks to verify KVM rejects any attempts to change bits from userspace. Signed-off-by: Sean Christopherson --- .../selftests/kvm/x86_64/vmx_pmu_caps_test.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c b/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c index 44fc6101a547..6fc86f5eba0b 100644 --- a/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c +++ b/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c @@ -85,6 +85,7 @@ static void test_guest_wrmsr_perf_capabilities(union perf_capabilities host_cap) struct kvm_vcpu *vcpu; struct kvm_vm *vm = vm_create_with_one_vcpu(&vcpu, guest_code); struct ucall uc; + int r, i; vm_init_descriptor_tables(vm); vcpu_init_descriptor_tables(vcpu); @@ -106,6 +107,18 @@ static void test_guest_wrmsr_perf_capabilities(union perf_capabilities host_cap) ASSERT_EQ(vcpu_get_msr(vcpu, MSR_IA32_PERF_CAPABILITIES), host_cap.capabilities); + vcpu_set_msr(vcpu, MSR_IA32_PERF_CAPABILITIES, host_cap.capabilities); + + r = _vcpu_set_msr(vcpu, MSR_IA32_PERF_CAPABILITIES, 0); + TEST_ASSERT(!r, "Post-KVM_RUN write '0' didn't fail"); + + for (i = 0; i < 64; i++) { + r = _vcpu_set_msr(vcpu, MSR_IA32_PERF_CAPABILITIES, + host_cap.capabilities ^ BIT_ULL(i)); + TEST_ASSERT(!r, "Post-KVM_RUN write '0x%llx'didn't fail", + host_cap.capabilities ^ BIT_ULL(i)); + } + kvm_vm_free(vm); } From patchwork Fri Feb 10 00:31: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: 55165 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp662223wrn; Thu, 9 Feb 2023 16:37:46 -0800 (PST) X-Google-Smtp-Source: AK7set9xP3yYDHE68s+3QetnF84KX92CqasAnGigiokWJIqRQwEurF77b4/2+5nAKVbWpsB6VGcH X-Received: by 2002:a17:902:d4cc:b0:19a:732c:5aa4 with SMTP id o12-20020a170902d4cc00b0019a732c5aa4mr224232plg.10.1675989466407; Thu, 09 Feb 2023 16:37:46 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675989466; cv=none; d=google.com; s=arc-20160816; b=cRjabdsPcLtzn0/y7AIIcOo4N53ryMzWR/ufnWJmZ3/nAd/4r6OHKIeeaX9N7QQhsd VlWI0UY52sXrmCXgdlXgibQGYrBNCiwCOvoM9GrrOzcLw2UA/EP4AdYpJdQaouBT0USA AkJR3FS00meksiWe6GvWbox0d7m2fMK+pSFhZNlQOEp0YAVbao/7wvKcwx9nnqV8Lrgk ZFjblBLMWENKsEQjH1Ct3f1NK10TIY7vXJ+6gnc/IsaDuEdP8BbC2o5S8KgzY3ixvoJw vPR4oKXTBM3ehMyuHMXXM7b4gd+sF9AAWmaEzx7xrIZJUF2DA2KJEGwyba9jX0N8+IbQ DZIw== 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=GV8Qd4jwtvFFFyzJG7jPBupn1ncGCYAxnl51ikPvDjg=; b=LDTA0sD9orBRkun0zatDktsncBrp1vzTj7h07JDRBXAVG7J1Jbcu4bTAnLUwaO1BvB 8qtdHna2GIPtFX2/L2YevFZ//fc/2mpdyfQggqf1YuCAvUGG1Hk7zxwDWf+ECp8FuzFn /93CsneAMPI8CWAHb/shQeR7HoEgmjxBox+W+c1gRUGsXAUTsYvav3QkJVUFY6lZfhWW i6ZhhK/ocUenzwDQh/1rcQ2mgkX6BHcc3hCU1BsZwB5ga+0Rh5FBwnojsMMFklCG8x71 VYUgFVVWbrIJtNlUW+sAZcUgwKd2BgwGux8gC/C7jI8arsF9+vdJy0cR2fYZ9wlcOjAp ezvw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=RfaxmpJm; 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 u18-20020a17090341d200b0019319c34917si3442308ple.505.2023.02.09.16.37.34; Thu, 09 Feb 2023 16:37:46 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=RfaxmpJm; 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 S230506AbjBJAeC (ORCPT + 99 others); Thu, 9 Feb 2023 19:34:02 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53092 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230286AbjBJAd1 (ORCPT ); Thu, 9 Feb 2023 19:33:27 -0500 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 49AE43865D for ; Thu, 9 Feb 2023 16:32:38 -0800 (PST) Received: by mail-pg1-x549.google.com with SMTP id h126-20020a636c84000000b004d31ad79086so1757379pgc.23 for ; Thu, 09 Feb 2023 16:32:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; 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=GV8Qd4jwtvFFFyzJG7jPBupn1ncGCYAxnl51ikPvDjg=; b=RfaxmpJmG9jL4AGZCBmKU4zsa8HltXgf43LDd6T84KlHljb9TGwwAfKaXfK+icJs+c pUvJL17rd027NxDrs4pR5w1EiXGNc6npCDSiyeAhJYe6/ellqC6mmwWc0KgQooBOE/oT xGwtUBZon57cuW9J5Efbvqu5+KlDkNdFI3uf7mlxBuJ00ndVI2VxZgT5SwgGR01NLerQ X0XEwC1GhiSrXG7DjUGVWnrDUE0Ug97iS7igTHVoFu/SilkEljhC3/hFLmCSga9nwY5F 0WUACeMZBk3hONJO9vTn8DBj+1Pd9U20dpofJ3wKywCnk7FuFcmbq1DVgx9LVTOyK3p6 2FgQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=GV8Qd4jwtvFFFyzJG7jPBupn1ncGCYAxnl51ikPvDjg=; b=k6DOndbAhN6XubdlL0Lxq8uhad1e+D/Maead1irFF64cZjKDzfx4IRLH1Cxt1nBDWj 1hxXj2WSJUR7KjRpdZEFTeDjMNuuhqGUEAEBPut/fxTpH2BbRZkgZOfFDukRpMXdFuGl rMVQUFCflKebdYw/85AV1EdLl4/mYIq6M20a9sYm5r5e3/NQ5efBjuvTRAc0YM21U5kL 5K700WyZBFoNN0MpCvOOOhW5ZsFB/tvLe8Omp7t33V7pJULeeVBa5TrlJv+eLhZGFwCj 8HyZUkY+AcRFBUwtTX5z5TMFUVcV/5OKhTHoLoObANCOSUE8ZjBQBn58Wn1KMjJ+LxZo WmDQ== X-Gm-Message-State: AO0yUKVseMzxXZCmG2AMnVX6NYp0os5T8nJV/+eTmGtRDqfQy5MWMUJj rzymJ6xNAbRp/+a6/+jl1NBdjSI6LK4= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a63:b915:0:b0:4d8:12fd:cd3b with SMTP id z21-20020a63b915000000b004d812fdcd3bmr2616270pge.115.1675989140811; Thu, 09 Feb 2023 16:32:20 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 10 Feb 2023 00:31:45 +0000 In-Reply-To: <20230210003148.2646712-1-seanjc@google.com> Mime-Version: 1.0 References: <20230210003148.2646712-1-seanjc@google.com> X-Mailer: git-send-email 2.39.1.581.gbfd45094c4-goog Message-ID: <20230210003148.2646712-19-seanjc@google.com> Subject: [PATCH v2 18/21] KVM: selftests: Drop "all done!" printf() from PERF_CAPABILITIES test From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Xiaoyao Li , Like Xu 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,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?1757402330460410836?= X-GMAIL-MSGID: =?utf-8?q?1757402330460410836?= Drop the arbitrary "done" message from the VMX PMU caps test, it's pretty obvious the test is done when the process exits. Signed-off-by: Sean Christopherson --- tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c b/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c index 6fc86f5eba0b..6733d879a00b 100644 --- a/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c +++ b/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c @@ -213,6 +213,4 @@ int main(int argc, char *argv[]) test_fungible_perf_capabilities(host_cap); test_immutable_perf_capabilities(host_cap); test_guest_wrmsr_perf_capabilities(host_cap); - - printf("Completed perf capability tests.\n"); } From patchwork Fri Feb 10 00:31: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: 55166 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp662261wrn; Thu, 9 Feb 2023 16:37:51 -0800 (PST) X-Google-Smtp-Source: AK7set9pstvotHnJgJXva+rWX47SYpEFXjg8nDG24nb+793jUFnAegwGub/I7N1zLhLAnezrDeEp X-Received: by 2002:a17:902:f28d:b0:19a:5f30:161d with SMTP id k13-20020a170902f28d00b0019a5f30161dmr2824650plc.17.1675989471701; Thu, 09 Feb 2023 16:37:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675989471; cv=none; d=google.com; s=arc-20160816; b=SKLgBa3PGkOSLl3uy6a/ZCamx0ScyYcOcp65E2wDWyMuildkcT3zgRbOiJUu0dw7OH 9wm3FDQa9rQb0LFhdznbOpUK0g6kantkF+28BoMqQJmEBN038z93ACYRuGavVdI4cGch UgnM80DCEYTq6rPlLCmB3tG2J4uWRQGSbQXNmEE/DU1rNl9uJuXq58TNZcJ60gUPMcaL TKjUwRShumacQbdD4pv8AFcF5jcdLStbkh0rxza8ITss0XWga4QPuEYAQTnVHpUubG7Y Ua76SCRM9Sy4yCC3XZebVNfMcfzQJdjIrlOdGGWRY0OSWDy+3bifBTUfMFs821bp/17s 4Ctg== 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=T/UerwQEfGQ6ukyZTZGTyb45H/ylk3/l1LtZ4//l0d4=; b=MA8mzcdRqvHJEDTP0TdNuqC4OlxnzlgVbzofnrO37ZjAWWXCQJgLuyfaJ/v775CyUb /IIRI+nraA6rKsYlB/c6t8pPajrV/5F4izS8GoapmOpa5jX4zET5eywXs5qzKndfdc4j vI3T9lNBgamZqrzn6qyTuZSblPEQHZEoYe2e5QIPFsb7sDp4jr4tc6Ycvh2oIhX7DwYJ 0ykRhWCXtaILOY6V69T2BELutt3N4O+VcdWO6Bcddax1i9zx8iKrZaTBU562p6pQEjZm 6xmI+dhx/SYP76Kgr0a7KnpEkGQaToOYM+Z4uWFnnIWh4IyP5q2FzD/W1W45d/pcuaTH lDXQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=rplEd0JY; 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 u10-20020a170902e80a00b001991f1b3639si3459930plg.73.2023.02.09.16.37.39; Thu, 09 Feb 2023 16:37:51 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=rplEd0JY; 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 S230455AbjBJAeF (ORCPT + 99 others); Thu, 9 Feb 2023 19:34:05 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53808 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230249AbjBJAda (ORCPT ); Thu, 9 Feb 2023 19:33:30 -0500 Received: from mail-pj1-x1049.google.com (mail-pj1-x1049.google.com [IPv6:2607:f8b0:4864:20::1049]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 89F7F366BB for ; Thu, 9 Feb 2023 16:32:43 -0800 (PST) Received: by mail-pj1-x1049.google.com with SMTP id o18-20020a17090a5b1200b00230e9fe4ea0so1695115pji.8 for ; Thu, 09 Feb 2023 16:32:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; 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=T/UerwQEfGQ6ukyZTZGTyb45H/ylk3/l1LtZ4//l0d4=; b=rplEd0JY5QtWrqEvlJVu1JobeJWDbvpgObNM1O1mRNIK1hMyw8fLr0S5jWfjz8m4N1 NBLYL1+OCDE/E6PftHc5JRK2NOqyekYjPhonKL2CQdBfD+amuWo5T6MnQSCBHh7elFcV /c67IKrupSWuqUqhOrndgPZBl8NRN1KHb9pOYZfJrqtH57Gn6+ZF/f0h1WmJbdREzQEB 33L3Z8w4OVTVHVzsmFqwLQBuSEr1HL/VHpd04qn1S7DWJs4LqLpAddtAh4ZeBxVf3Akg tIiJLoYv4p8WHaq8+JL5ndl+QFh6eIncRLr01uGRzXV9fBHNklO1Ny8t7DILVUnyVOJ8 ycrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=T/UerwQEfGQ6ukyZTZGTyb45H/ylk3/l1LtZ4//l0d4=; b=OiS7Ng3EeokYmIZOT3G+jFpcjGsyGJ4xChgPFX2pOQvPID/CgU2zmePT0/SyZ8tBIU 0XG2ntX92wY4LZOxZJQSJhj38ShJbANpJ6D86acqtKhesKUp0E+rH5jDCF0Kh9L2I4RE X9TsnXOlGO+Vvmigw8hPqO/Bqv7f4c/omnwXetoFPDmsoFijAfmhansLc6g0/hGqqV/k nsM334xh+FltRjssDhfV+vKuyvXIXn2IPF65vCWG8NM/2QFSohqzfnrykUdZGPQcpv5L 5Eq3vx59b+fMFu8mVplrsHsUE7SbxG4cH1qtuLmRvSp+QC9+fIHwfaTxmAIt+xc5l+Fm 66uA== X-Gm-Message-State: AO0yUKXv/RkSVlrzIN90kOLAHxNXcHJA4L6lI7N45NLtx5M6bPnS3rUX TMSbv3//K23zTnf2jV5E3dUQac+lShk= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a17:90a:d716:b0:230:ee6f:28bc with SMTP id y22-20020a17090ad71600b00230ee6f28bcmr11586pju.1.1675989142716; Thu, 09 Feb 2023 16:32:22 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 10 Feb 2023 00:31:46 +0000 In-Reply-To: <20230210003148.2646712-1-seanjc@google.com> Mime-Version: 1.0 References: <20230210003148.2646712-1-seanjc@google.com> X-Mailer: git-send-email 2.39.1.581.gbfd45094c4-goog Message-ID: <20230210003148.2646712-20-seanjc@google.com> Subject: [PATCH v2 19/21] KVM: selftests: Refactor LBR_FMT test to avoid use of separate macro From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Xiaoyao Li , Like Xu 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,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?1757402335946607410?= X-GMAIL-MSGID: =?utf-8?q?1757402335946607410?= Rework the LBR format test to use the bitfield instead of a separate mask macro, mainly so that adding a nearly-identical PEBS format test doesn't have to copy-paste-tweak the macro too. No functional change intended. Signed-off-by: Sean Christopherson --- .../selftests/kvm/x86_64/vmx_pmu_caps_test.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c b/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c index 6733d879a00b..38aec88d733b 100644 --- a/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c +++ b/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c @@ -19,8 +19,6 @@ #include "kvm_util.h" #include "vmx.h" -#define PMU_CAP_LBR_FMT 0x3f - union perf_capabilities { struct { u64 lbr_format:6; @@ -169,7 +167,7 @@ static void test_immutable_perf_capabilities(union perf_capabilities host_cap) struct kvm_vcpu *vcpu; struct kvm_vm *vm = vm_create_with_one_vcpu(&vcpu, NULL); - uint64_t val; + union perf_capabilities val = host_cap; int r, bit; for_each_set_bit(bit, &reserved_caps, 64) { @@ -184,12 +182,13 @@ static void test_immutable_perf_capabilities(union perf_capabilities host_cap) * KVM only supports the host's native LBR format, as well as '0' (to * disable LBR support). Verify KVM rejects all other LBR formats. */ - for (val = 1; val <= PMU_CAP_LBR_FMT; val++) { - if (val == (host_cap.capabilities & PMU_CAP_LBR_FMT)) + for (val.lbr_format = 1; val.lbr_format; val.lbr_format++) { + if (val.lbr_format == host_cap.lbr_format) continue; - r = _vcpu_set_msr(vcpu, MSR_IA32_PERF_CAPABILITIES, val); - TEST_ASSERT(!r, "Bad LBR FMT = 0x%lx didn't fail", val); + r = _vcpu_set_msr(vcpu, MSR_IA32_PERF_CAPABILITIES, val.capabilities); + TEST_ASSERT(!r, "Bad LBR FMT = 0x%x didn't fail, host = 0x%x", + val.lbr_format, host_cap.lbr_format); } kvm_vm_free(vm); From patchwork Fri Feb 10 00:31: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: 55167 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp662558wrn; Thu, 9 Feb 2023 16:38:36 -0800 (PST) X-Google-Smtp-Source: AK7set9Cgb1D8ssm0owaGzS0B88xcvFUSIThWg6pHLOKU5CJBBwAix9U4G1jzQS0veik8wxwWxDQ X-Received: by 2002:a50:a6d7:0:b0:4ab:255d:a48 with SMTP id f23-20020a50a6d7000000b004ab255d0a48mr2607586edc.36.1675989515907; Thu, 09 Feb 2023 16:38:35 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675989515; cv=none; d=google.com; s=arc-20160816; b=Zjn22zKPjXwcai/qoi43zPeoee7ZPm7/wIGqc15R/isQDaJfQVJOJelVflBoulSsMF QZi+JwnQvjzbOgpmNZqKitH863aNed870l3AbhX9oeQ3L7W5arwcGpJbrwarteKNlGG4 zLRxkVTT0SX1nrWHLBy6QfPILLHs3J3sUwptmZl2WoqqoTvXPDA7hd1itl9C6e3G1Qco 3kLfe00y/IVIew7VsgfMr9JQ/4J97fxdoZmPOqNR6wpRTCYOOCev9QyDdmTHu4XrYz0q kIQP0WrQgfZrGBB+G19MIkaN/kuZgo6+uKuawrVhQFeWbOClKIyeG7oYZToMKQSGCZJD 6ZLQ== 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=zEtJJXP/d2l8cjo3sRdPdCH/uW1qOGz7yYT36ga6XYA=; b=bQ/+97Ivo04/KO2wBW1Unow44VtHOSAAYcETUbUcznIGzcqnLV/b+Lor3NyrsdkjmH R3FnfeV/YXoReZTqfKnEBkfP9YHnuSsri+71M24VGFEtX9epwMny/izmY/u/2Wa0Buz5 r8JMCZBo8lLnXflouNhgaTBeTLKhJZxY6TSN6Eh/+bsikfnyfZizEvu5FphtgB//LOKm i8dncAtsNYagpO8HrrPXnQ7DmUDLJS8XbIDe1Zqcn3KwtSMElH7q1rQh5i84BDQDCVGp 0S/XGSmBSys7VPL71EXlukB2CwaAsuzMoLoa0X+kE5RQvKzNEJf7BukBKc9ffbplffuN X7xQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=OIn25dnG; 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 a26-20020aa7d75a000000b004aaddb8cd93si3930621eds.71.2023.02.09.16.38.12; Thu, 09 Feb 2023 16:38:35 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=OIn25dnG; 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 S230474AbjBJAeR (ORCPT + 99 others); Thu, 9 Feb 2023 19:34:17 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53106 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230140AbjBJAdc (ORCPT ); Thu, 9 Feb 2023 19:33:32 -0500 Received: from mail-pj1-x104a.google.com (mail-pj1-x104a.google.com [IPv6:2607:f8b0:4864:20::104a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7C2A570960 for ; Thu, 9 Feb 2023 16:32:45 -0800 (PST) Received: by mail-pj1-x104a.google.com with SMTP id l18-20020a17090add9200b00230f60889d6so1595704pjv.3 for ; Thu, 09 Feb 2023 16:32:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; 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=zEtJJXP/d2l8cjo3sRdPdCH/uW1qOGz7yYT36ga6XYA=; b=OIn25dnGFHK3/GsuBf+shRFLsxjVK3A7daMICpgIh6b1/dOcT0jb4kv+ccWY8XrZYW Sh4A5EYfXrqr054hEP0OLCQX1e4XV3tdYGdgi0LcQkkd32Lf9sLdc999ImHUh4Wx9SVy 97ZQ+gMw31UrvhT8Gzbrh2YgeNsxWrp5IWX3SDN+xomuh/7zQp3uUeuVnOzqlB2mftKs UIVT6kpcyNPBKO4dyxWeeQJ20PSw2X2W9oroWk3uKEC2ceVgxgZ3n0/QTS2wZsta3Pf4 LGtUx/enKWsPMrgI5Qlt+FI7kYZmN6+1+E1fniNFKY148RvTdb6HJAI040rD//yjvXiJ 3PAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=zEtJJXP/d2l8cjo3sRdPdCH/uW1qOGz7yYT36ga6XYA=; b=owN4jxAlzx/WaxUE+h9dYAa3dBfKZ/A8pnhaJ1f6ZHZh22QAE6BZp3i59MZTeo0mT3 X7qGcSFPdn2GQuod4H+PIFuV11LqZ9yafblGpWydg6RyJsIibkFAqm3+J8QoKlOr+O+z RsHUGkEOhDnd2WH1DyXXEdyzV9JwptjyyijUlmylk9y7Y5Op6RZTemv4JFCxy50mSGeF wT8G1Cb8WYgK/Auy+wp9OW5xpnlvfDb3lX/sp61LJl6AFquei1imiS3DKLca9Oj76kH0 tLJoJQQjW4k1eAoczoHARqL8O91RofQlWzKW7MD/YcRqzQTqbz4huf6zk1/m4X3hv/wd QZ7w== X-Gm-Message-State: AO0yUKVDPhJeq+DTcWHoPAqufAr4EVrgWh5DQRzLc3x07XSnxG5RsH31 DFGP1TjtdmUPWOkACwD6F0PwSscxoSM= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:aa7:9a09:0:b0:593:8deb:820a with SMTP id w9-20020aa79a09000000b005938deb820amr2872910pfj.53.1675989144638; Thu, 09 Feb 2023 16:32:24 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 10 Feb 2023 00:31:47 +0000 In-Reply-To: <20230210003148.2646712-1-seanjc@google.com> Mime-Version: 1.0 References: <20230210003148.2646712-1-seanjc@google.com> X-Mailer: git-send-email 2.39.1.581.gbfd45094c4-goog Message-ID: <20230210003148.2646712-21-seanjc@google.com> Subject: [PATCH v2 20/21] KVM: selftests: Add negative testcase for PEBS format in PERF_CAPABILITIES From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Xiaoyao Li , Like Xu 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,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?1757402382573638036?= X-GMAIL-MSGID: =?utf-8?q?1757402382573638036?= Expand the immutable features sub-test for PERF_CAPABILITIES to verify KVM rejects any attempt to use a PEBS format other than the host's. Signed-off-by: Sean Christopherson --- tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c b/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c index 38aec88d733b..29aaa0419294 100644 --- a/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c +++ b/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c @@ -191,6 +191,16 @@ static void test_immutable_perf_capabilities(union perf_capabilities host_cap) val.lbr_format, host_cap.lbr_format); } + /* Ditto for the PEBS format. */ + for (val.pebs_format = 1; val.pebs_format; val.pebs_format++) { + if (val.pebs_format == host_cap.pebs_format) + continue; + + r = _vcpu_set_msr(vcpu, MSR_IA32_PERF_CAPABILITIES, val.capabilities); + TEST_ASSERT(!r, "Bad PEBS FMT = 0x%x didn't fail, host = 0x%x", + val.pebs_format, host_cap.pebs_format); + } + kvm_vm_free(vm); } From patchwork Fri Feb 10 00:31: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: 55168 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp663385wrn; Thu, 9 Feb 2023 16:40:49 -0800 (PST) X-Google-Smtp-Source: AK7set+U6zNcTkAXdHIEY7pqG5/NZcFvNqYpXuFymORgYadou6QFZurPK3TwM2hunhLg5owqm8lf X-Received: by 2002:a50:8e17:0:b0:4aa:c4bb:d432 with SMTP id 23-20020a508e17000000b004aac4bbd432mr15988219edw.11.1675989649488; Thu, 09 Feb 2023 16:40:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675989649; cv=none; d=google.com; s=arc-20160816; b=WmTBEhifrdeCOSLZjj8iZ58G8dRoS81Y5K9YI4/sboSd6rfyi2azR4m+sQVa81wuP5 pstwVLGy7ME410k6MBjMt7wJS7LzMeOD5Q6xZjf8FWBq3zvY0agmqVhZQlLPZ2f1kkyD tPD10Jp+cR8QEwtJ1lfB6rNw01qmxBV+MEBHJoaq4xF+vrYsu0w2BDII9HfuHml221PM W641h190+oO1GdO+V+/Spo/nl/gOcIBW6i15YL7BE4DD+lFzsh1m7S8NuubM8L3Q8YyY lFZ0A5jY/6cWCYww4BgNvpoR2HOLIdHYEhMq4dNhCzAD6XYB1x7z1F8//EFGy5RtKB0M FD+A== 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=J6Gk09VCdivQ/Y/BQoeE1Efc/j/nP2LOhjM52BokYHY=; b=J6bBl4PCRRNoZJrJtQnoi4C3B0m4VMtw+ccgvGOXNrM6cXT/ClDG+JBw/ZodXuS/UE A9DCrUZSn2AyUa7WIAyiVcPs1+RJAwqmBo8o3D2e1YztExY9q27Zw/iSh4VlmvKEWVY7 IHx9XYHOx/6L+K6D1s/VXwMdnkIbXSFsVf7NHDEaGmxOg4HBFUG85IyOmPGNPlHRvzKN kkkefkNgKU2Qv16ZrO2LsvL2kFRQgSfAWYPkK8dHcbGHX5ycqIBqR9Cgh0TamBBM4Q3D 4OJItw67x1NWJzsGjKgIhDL41qdl6G/POjD5gcXVgu89qlhBHPGqfw4fOOM3fJw2C44Y 3R+A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=QjfcNWfF; 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 d2-20020aa7ce02000000b004a0ca035f1dsi3834529edv.328.2023.02.09.16.40.25; Thu, 09 Feb 2023 16:40:49 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=QjfcNWfF; 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 S230487AbjBJAeX (ORCPT + 99 others); Thu, 9 Feb 2023 19:34:23 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53610 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229674AbjBJAdq (ORCPT ); Thu, 9 Feb 2023 19:33:46 -0500 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 6DFB67096A for ; Thu, 9 Feb 2023 16:32:47 -0800 (PST) Received: by mail-pf1-x449.google.com with SMTP id u3-20020a056a00124300b0056d4ab0c7cbso1769129pfi.7 for ; Thu, 09 Feb 2023 16:32:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; 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=J6Gk09VCdivQ/Y/BQoeE1Efc/j/nP2LOhjM52BokYHY=; b=QjfcNWfF+9MosGU5G67r8yr2rtgu0nmHJmhphY7KHFmTTQSKrVcPSVIYRFvfe0RNXf 5ulfvqqBYZ4AyrtK0O08jFiAWUCdJqaFantIPhan7pmEAJHv4B97orVlhsuitHwMvf/R L9WiLGUq4kHCb4/AwzyJm4tArS6NfvH2di3UwYs4LqHeThgzt87PLN9gdkTivZKRwoIw IvaXKhYrUWnv+KNnKkhIwYgxc6P1q8+mKPdM5UE5spmX2CcpJyh+lTMadIS4JIZLLhI/ ZOBkI6q0zgV3XX+lX4v8002KDf5yK3fjEfHzfM/3VEOijq46rrZ1eJvtVu9AXpyV+GRl OS9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=J6Gk09VCdivQ/Y/BQoeE1Efc/j/nP2LOhjM52BokYHY=; b=1PcikNQA6WEtHGH6ipprXYrDQ5Pk11k30j+ql5F4/xDqqTav2dotlvg2ugyLSTiXc6 QTqtUvEmQJmpuPP8wdIGhtOLviP11Zzgrl8j3UotkQeQ9sNA+EoHJVhGt0AFqnURICbF BDuyER/hNOTPWOkGalFs4dnln67BsdLReDaWdfVUR1mWfgccDx5ppWWei7CXco4fYSh1 wp5cUa078Fly7zaqYNvKHeIcU4mMZEGsG9IC/AwWja99NSIvX7oCEqPoPPW2v6WvpZeI pnx11sLuh+XrtjvSYvU2wD0L5huhmiBvnHM+9BcUWg3Hfuu+qBvoWAGAW9sIWaIHXPiN sedw== X-Gm-Message-State: AO0yUKUg7l/hgybX9E9VwZHnhh6CRTB2ViKILVM95ZHjl8EE8eGEWz9d D7d3aohzEySmf7iVeM4MUlF/8MzjyfU= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a63:be48:0:b0:4fb:2c72:9168 with SMTP id g8-20020a63be48000000b004fb2c729168mr1791740pgo.85.1675989146248; Thu, 09 Feb 2023 16:32:26 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 10 Feb 2023 00:31:48 +0000 In-Reply-To: <20230210003148.2646712-1-seanjc@google.com> Mime-Version: 1.0 References: <20230210003148.2646712-1-seanjc@google.com> X-Mailer: git-send-email 2.39.1.581.gbfd45094c4-goog Message-ID: <20230210003148.2646712-22-seanjc@google.com> Subject: [PATCH v2 21/21] KVM: selftests: Verify LBRs are disabled if vPMU is disabled From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Xiaoyao Li , Like Xu 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,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?1757402522779505277?= X-GMAIL-MSGID: =?utf-8?q?1757402522779505277?= Verify that disabling the guest's vPMU via CPUID also disables LBRs. KVM has had at least one bug where LBRs would remain enabled even though the intent was to disable everything PMU related. Signed-off-by: Sean Christopherson --- .../selftests/kvm/x86_64/vmx_pmu_caps_test.c | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c b/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c index 29aaa0419294..3009b3e5254d 100644 --- a/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c +++ b/tools/testing/selftests/kvm/x86_64/vmx_pmu_caps_test.c @@ -204,6 +204,34 @@ static void test_immutable_perf_capabilities(union perf_capabilities host_cap) kvm_vm_free(vm); } +/* + * Test that LBR MSRs are writable when LBRs are enabled, and then verify that + * disabling the vPMU via CPUID also disables LBR support. Set bits 2:0 of + * LBR_TOS as those bits are writable across all uarch implementations (arch + * LBRs will need to poke a different MSR). + */ +static void test_lbr_perf_capabilities(union perf_capabilities host_cap) +{ + struct kvm_vcpu *vcpu; + struct kvm_vm *vm; + int r; + + if (!host_cap.lbr_format) + return; + + vm = vm_create_with_one_vcpu(&vcpu, NULL); + + vcpu_set_msr(vcpu, MSR_IA32_PERF_CAPABILITIES, host_cap.capabilities); + vcpu_set_msr(vcpu, MSR_LBR_TOS, 7); + + vcpu_clear_cpuid_entry(vcpu, X86_PROPERTY_PMU_VERSION.function); + + r = _vcpu_set_msr(vcpu, MSR_LBR_TOS, 7); + TEST_ASSERT(!r, "Writing LBR_TOS should fail after disabling vPMU"); + + kvm_vm_free(vm); +} + int main(int argc, char *argv[]) { union perf_capabilities host_cap; @@ -222,4 +250,5 @@ int main(int argc, char *argv[]) test_fungible_perf_capabilities(host_cap); test_immutable_perf_capabilities(host_cap); test_guest_wrmsr_perf_capabilities(host_cap); + test_lbr_perf_capabilities(host_cap); }