From patchwork Fri Apr 14 11:00:51 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jinrong Liang X-Patchwork-Id: 673291 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 501E6C77B79 for ; Fri, 14 Apr 2023 11:01:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230299AbjDNLBR (ORCPT ); Fri, 14 Apr 2023 07:01:17 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33852 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230286AbjDNLBP (ORCPT ); Fri, 14 Apr 2023 07:01:15 -0400 Received: from mail-pl1-x641.google.com (mail-pl1-x641.google.com [IPv6:2607:f8b0:4864:20::641]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CDC0E5BA2; Fri, 14 Apr 2023 04:01:14 -0700 (PDT) Received: by mail-pl1-x641.google.com with SMTP id m18so17884712plx.5; Fri, 14 Apr 2023 04:01:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1681470074; x=1684062074; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=W+JDAvtrWEsHLmAmNtEcddpwsMXPhmUa/XaRlUIpwE0=; b=IJhMErUL5COHfQo08l1fw7uGzSHQ/msKDAANngGbXkxWvMCRggJePPzdekV5yVBmHe 0cNF8pXUmA05q4/O9UD4yLNzoSMyVyoEXye5G6ymTN824okLYTtELUbTtxZNUsDad1ri Xje4mU8ROX/cdb1rReDVh1TPcrCRvNKqwFG92MqDi1tDD/FbzY87A/L8ericyd6D38zy PSfB/3knDqmzF/Igwt1U7W0LkzPcIxD3IVGx9DJm0uKDI9OwLv8QKWPGNht/xICVTQmF T4yUvxokuSK/DQKq7dyfowQDvVcGloKWhS2znO8FekLwnqQABMOwL265gyYBCK3G7SLS VA8Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1681470074; x=1684062074; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=W+JDAvtrWEsHLmAmNtEcddpwsMXPhmUa/XaRlUIpwE0=; b=gs+qF6YEdwZJrd89A2wnI0Y6Y+FFaA7Z8gzjE8H6TzeMGuxyzDuy4DpOZdLsQAiLs4 RxnX2b1DZvw33KY6Wh4hv9qfDrJDqBXuV8pw6EkuHiShqwsM5uWr7n5vg4KV/Y/quBZR GAlN6MB8dykqlseT8VsK7zrI0e3whpiuvtxaxmhgPgbxZl9jlTOu6APTFAOjrQEGI8ab klTSNakoLyGd61Mad6baG/u/4RCHDbST6MyhXVFgJ763cH9WzBqtlopYBbEEcQIe7epb dA4kvQPcBF8YV4SeXWM5ZSccZchSrd6F1tmLvUcUdRe0AXND0HVcFUSoBiReavn7P04/ lZpQ== X-Gm-Message-State: AAQBX9eN1PuJFlSLO5A+IctSjYF3CD4Vey82WKwv1VtISwomyoxI260Y TylgzhDkUPYQvl0XA35+20M= X-Google-Smtp-Source: AKy350a0dG1c2JOXIMlUTl/xV6eZHBWW+o3n12vpBTPiE7XVLd7nrFP5RT4Xs+3rCJWLHchnaLEL6Q== X-Received: by 2002:a17:90b:4a8f:b0:23d:29c7:916f with SMTP id lp15-20020a17090b4a8f00b0023d29c7916fmr4910995pjb.32.1681470074150; Fri, 14 Apr 2023 04:01:14 -0700 (PDT) Received: from CLOUDLIANG-MB2.tencent.com ([103.7.29.32]) by smtp.gmail.com with ESMTPSA id r4-20020a170902ea4400b00194caf3e975sm2835821plg.208.2023.04.14.04.01.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Apr 2023 04:01:13 -0700 (PDT) From: Jinrong Liang X-Google-Original-From: Jinrong Liang To: Sean Christopherson Cc: Like Xu , Paolo Bonzini , Jonathan Corbet , Shuah Khan , Aaron Lewis , David Matlack , Vishal Annapurve , Wanpeng Li , Jinrong Liang , linux-kselftest@vger.kernel.org, linux-doc@vger.kernel.org, kvm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/7] KVM: selftests: Apply create_pmu_event_filter() to fixed ctrs Date: Fri, 14 Apr 2023 19:00:51 +0800 Message-Id: <20230414110056.19665-3-cloudliang@tencent.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230414110056.19665-1-cloudliang@tencent.com> References: <20230414110056.19665-1-cloudliang@tencent.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-kselftest@vger.kernel.org From: Jinrong Liang Add fixed_counter_bitmap to the create_pmu_event_filter() to support the use of the same creator to control the use of guest fixed counters. No functional change intended. Signed-off-by: Jinrong Liang --- .../kvm/x86_64/pmu_event_filter_test.c | 31 ++++++++++++------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/pmu_event_filter_test.c b/tools/testing/selftests/kvm/x86_64/pmu_event_filter_test.c index c0521fc9e8f6..4e87eea6986b 100644 --- a/tools/testing/selftests/kvm/x86_64/pmu_event_filter_test.c +++ b/tools/testing/selftests/kvm/x86_64/pmu_event_filter_test.c @@ -192,19 +192,22 @@ static struct kvm_pmu_event_filter *alloc_pmu_event_filter(uint32_t nevents) return f; } - static struct kvm_pmu_event_filter * create_pmu_event_filter(const uint64_t event_list[], uint32_t nevents, - uint32_t action, uint32_t flags) + uint32_t action, uint32_t flags, + uint32_t fixed_counter_bitmap) { struct kvm_pmu_event_filter *f; int i; f = alloc_pmu_event_filter(nevents); f->action = action; + f->fixed_counter_bitmap = fixed_counter_bitmap; f->flags = flags; - for (i = 0; i < nevents; i++) - f->events[i] = event_list[i]; + if (f->nevents) { + for (i = 0; i < f->nevents; i++) + f->events[i] = event_list[i]; + } return f; } @@ -213,7 +216,7 @@ static struct kvm_pmu_event_filter *event_filter(uint32_t action) { return create_pmu_event_filter(event_list, ARRAY_SIZE(event_list), - action, 0); + action, 0, 0); } /* @@ -260,7 +263,7 @@ static void test_amd_deny_list(struct kvm_vcpu *vcpu) struct kvm_pmu_event_filter *f; uint64_t count; - f = create_pmu_event_filter(&event, 1, KVM_PMU_EVENT_DENY, 0); + f = create_pmu_event_filter(&event, 1, KVM_PMU_EVENT_DENY, 0, 0); count = test_with_filter(vcpu, f); free(f); @@ -544,7 +547,7 @@ static struct perf_counter run_masked_events_test(struct kvm_vcpu *vcpu, f = create_pmu_event_filter(masked_events, nmasked_events, KVM_PMU_EVENT_ALLOW, - KVM_PMU_EVENT_FLAG_MASKED_EVENTS); + KVM_PMU_EVENT_FLAG_MASKED_EVENTS, 0); r.raw = test_with_filter(vcpu, f); free(f); @@ -726,12 +729,14 @@ static void test_masked_events(struct kvm_vcpu *vcpu) } static int run_filter_test(struct kvm_vcpu *vcpu, const uint64_t *events, - uint32_t nevents, uint32_t flags) + uint32_t nevents, uint32_t flags, uint32_t action, + uint32_t fixed_counter_bitmap) { struct kvm_pmu_event_filter *f; int r; - f = create_pmu_event_filter(events, nevents, KVM_PMU_EVENT_ALLOW, flags); + f = create_pmu_event_filter(events, nevents, action, flags, + fixed_counter_bitmap); r = __vm_ioctl(vcpu->vm, KVM_SET_PMU_EVENT_FILTER, f); free(f); @@ -747,14 +752,16 @@ static void test_filter_ioctl(struct kvm_vcpu *vcpu) * Unfortunately having invalid bits set in event data is expected to * pass when flags == 0 (bits other than eventsel+umask). */ - r = run_filter_test(vcpu, &e, 1, 0); + r = run_filter_test(vcpu, &e, 1, 0, KVM_PMU_EVENT_ALLOW, 0); TEST_ASSERT(r == 0, "Valid PMU Event Filter is failing"); - r = run_filter_test(vcpu, &e, 1, KVM_PMU_EVENT_FLAG_MASKED_EVENTS); + r = run_filter_test(vcpu, &e, 1, KVM_PMU_EVENT_FLAG_MASKED_EVENTS, + KVM_PMU_EVENT_ALLOW, 0); TEST_ASSERT(r != 0, "Invalid PMU Event Filter is expected to fail"); e = KVM_PMU_ENCODE_MASKED_ENTRY(0xff, 0xff, 0xff, 0xf); - r = run_filter_test(vcpu, &e, 1, KVM_PMU_EVENT_FLAG_MASKED_EVENTS); + r = run_filter_test(vcpu, &e, 1, KVM_PMU_EVENT_FLAG_MASKED_EVENTS, + KVM_PMU_EVENT_ALLOW, 0); TEST_ASSERT(r == 0, "Valid PMU Event Filter is failing"); } From patchwork Fri Apr 14 11:00:53 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jinrong Liang X-Patchwork-Id: 673290 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A1AB9C77B6E for ; Fri, 14 Apr 2023 11:01:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230414AbjDNLBm (ORCPT ); Fri, 14 Apr 2023 07:01:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34488 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230347AbjDNLBa (ORCPT ); Fri, 14 Apr 2023 07:01:30 -0400 Received: from mail-pl1-x643.google.com (mail-pl1-x643.google.com [IPv6:2607:f8b0:4864:20::643]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0B893A5C1; Fri, 14 Apr 2023 04:01:21 -0700 (PDT) Received: by mail-pl1-x643.google.com with SMTP id i8so8963359plt.10; Fri, 14 Apr 2023 04:01:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1681470081; x=1684062081; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=O0lXw7gUlhFeEgAAjqPZaP3dINO8+frpf9yOAVpBpus=; b=rOw8pFIl2ry+eW2Na6DgMXG0m73f+zmG7Te8I+Huy0OTCeDMpWUtCklYp7c1w/6Khf dQItwUAtFIHyzztFwJoWOXmdjvjgmj3KTCynYvVz1r5gRLIhQttoPlBsjRu4b6PZI8+g EE+bZPSrorkSQG/XWaKBYS1ehN3sspnHBxrn24ivUeRtkmdLXqFnUJ9FLrxdfaDjl02+ Jn6heWCbyjBODnOEfco+VurbAUx4iWTivJrKsB9J5rNLNG37bSniL64UQtqw52HjbbvL 3IxZpBdhVJCk86yXyuOTCEuROT83aDFSm4ErUgxEAtLBiwrnMZCj187NjCZr1AtuWt0A TIig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1681470081; x=1684062081; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=O0lXw7gUlhFeEgAAjqPZaP3dINO8+frpf9yOAVpBpus=; b=lIjXd5lD0gEVksMP/mOgKbL/Ox+cnA9J8L+6f7UPqUy8A2s6unlPU8vjzJ6JJALQPH u0TLPCjsjQsQJzyKjWgDxpMRHLiCbfqe3VDsqwRFiLe4J+7rdonSzFxB+gINM3zXyFpK jd8vQHZD3esZ9I4zyintL9sZw74r6ycLmyY97EcElenKt65kegq63ad3TvVR+LacL9yW tA3Z7LniYP99knbFDChuF+Nu+nW1/CGFC7vtwu+a7eJc9g/0F9+0t+K5tNegMzTJpqyf WfsyO0JzRCFIQaoFjjQ+7uIOXEftdeOnsnolW1lR1mkFZTOUnASuqUbRhYAZ9iz2wYBs YcKw== X-Gm-Message-State: AAQBX9dRIoV7Z8cH3t6hvRuJAKPWSHwcLXrx6T2aaHxCHJz25jCW8qBh rWO0ECGFo8/INo9Ny2SNasU= X-Google-Smtp-Source: AKy350Z1Qj9SoLwP/z02WB2po6VGyCYszb3ZFkcQpt8EpZnYmP7Q4NqQDug+SKB2hTns/mou+EyjWw== X-Received: by 2002:a17:90a:9113:b0:233:76bd:9faa with SMTP id k19-20020a17090a911300b0023376bd9faamr5158057pjo.47.1681470081182; Fri, 14 Apr 2023 04:01:21 -0700 (PDT) Received: from CLOUDLIANG-MB2.tencent.com ([103.7.29.32]) by smtp.gmail.com with ESMTPSA id r4-20020a170902ea4400b00194caf3e975sm2835821plg.208.2023.04.14.04.01.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Apr 2023 04:01:20 -0700 (PDT) From: Jinrong Liang X-Google-Original-From: Jinrong Liang To: Sean Christopherson Cc: Like Xu , Paolo Bonzini , Jonathan Corbet , Shuah Khan , Aaron Lewis , David Matlack , Vishal Annapurve , Wanpeng Li , Jinrong Liang , linux-kselftest@vger.kernel.org, linux-doc@vger.kernel.org, kvm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 4/7] KVM: x86/pmu: Add documentation for fixed ctr on PMU filter Date: Fri, 14 Apr 2023 19:00:53 +0800 Message-Id: <20230414110056.19665-5-cloudliang@tencent.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230414110056.19665-1-cloudliang@tencent.com> References: <20230414110056.19665-1-cloudliang@tencent.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-kselftest@vger.kernel.org From: Jinrong Liang Update the documentation for the KVM_SET_PMU_EVENT_FILTER ioctl to include a detailed description of how fixed performance events are handled in the pmu filter. The action and fixed_counter_bitmap members of the pmu filter to determine whether fixed performance events can be programmed by the guest. This information is helpful for correctly configuring the fixed_counter_bitmap and action fields to filter fixed performance events. Suggested-by: Like Xu Signed-off-by: Jinrong Liang --- Documentation/virt/kvm/api.rst | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/Documentation/virt/kvm/api.rst b/Documentation/virt/kvm/api.rst index a69e91088d76..036f5b1a39af 100644 --- a/Documentation/virt/kvm/api.rst +++ b/Documentation/virt/kvm/api.rst @@ -5122,6 +5122,27 @@ Valid values for 'action':: #define KVM_PMU_EVENT_ALLOW 0 #define KVM_PMU_EVENT_DENY 1 +Via this API, KVM userspace can also control the behavior of the VM's fixed +counters (if any) by configuring the "action" and "fixed_counter_bitmap" fields. + +Specifically, KVM follows the following pseudo-code when determining whether to +allow the guest FixCtr[i] to count its pre-defined fixed event: + + FixCtr[i]_is_allowed = (action == ALLOW) && (bitmap & BIT(i)) || + (action == DENY) && !(bitmap & BIT(i)); + FixCtr[i]_is_denied = !FixCtr[i]_is_allowed; + +Note once this API interface is called, the default zero value of the field +"fixed_counter_bitmap" will implicitly affect all fixed counters, even if it's +expected to be used only to control the events on generic counters. + +In addition, pre-defined performance events on the fixed counters already have +event_select and unit_mask values defined, which means userspace can also +control fixed counters by configuring "action"+ "events" fields. + +When there is a contradiction between these two polices, the fixed performance +counter will only follow the rule of the pseudo-code above. + 4.121 KVM_PPC_SVM_OFF --------------------- From patchwork Fri Apr 14 11:00:55 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jinrong Liang X-Patchwork-Id: 673289 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 92773C77B6F for ; Fri, 14 Apr 2023 11:02:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230363AbjDNLCH (ORCPT ); Fri, 14 Apr 2023 07:02:07 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34558 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230360AbjDNLBy (ORCPT ); Fri, 14 Apr 2023 07:01:54 -0400 Received: from mail-pl1-x641.google.com (mail-pl1-x641.google.com [IPv6:2607:f8b0:4864:20::641]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8EBE5AD12; Fri, 14 Apr 2023 04:01:28 -0700 (PDT) Received: by mail-pl1-x641.google.com with SMTP id m18so17885186plx.5; Fri, 14 Apr 2023 04:01:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1681470088; x=1684062088; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=SK9pwOgB2nPITqmSfwvLaMyb+zQIu3ReFYaoFX7ikX4=; b=PljFlbRIrwC3l66d28sWfITf4lXIEcrg1199QsL6Xk8ADfdMZnqIiOKwFCpcjEvkvg DgtYI0mGZqCc2Ijsn2/1l3eWUFmD37wK1Ts/fhqWfWgtXHmReAsT7pzBsBBL9sDdPEVe tTWNjc9/aG6BUsBFqFpBzuJ5HPhW30Vq0BsArrL4kAgRIN1wHnOVYhLcWT0wj4wwfGwf M9ee1OIE5JtBhzizP7j/pSxzhxogCRGkvM0WGJP3DUY+/UanhWPp1TeQN1ndPxkPj9R5 wmX/mTTkWcNbzcMuxt3FfqtPq9gaTBgeNlRNQhqMKGhDpBTF4/2tSBGR4uZsARWgJqcN MzBA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1681470088; x=1684062088; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=SK9pwOgB2nPITqmSfwvLaMyb+zQIu3ReFYaoFX7ikX4=; b=mDGgmOoDUGV2rxphMn7tus7iC+xt/7J75zApZXT0ttKfnsXh/noVzF4SuT/+46Zy1g 0eyEAFlsBq2iJK5oDpvcgsdlQq/I3kNLx7hh1GPwbcbM+EKrjA9VOM2svv9EsbtO+sX5 GE+8PbthBN/wpwlLdrZRX7fbp5kUgZZDxVHYEA1sKGDWWGQ5djGGIwwCtb06v2YOhUPk 7DrgJjUVRCtxc5HlQq4DeOOBqHntBsaeKw4IjnfbBsF3OYDnbnsN/A0S6r/RJ++OJE3c az7bQ9gn/URcNUeQn1b1AGhvKX8QVtE8u+UVNgoTFfRM1rObsP4hqK7tJN3OPsFxWuBG O/YA== X-Gm-Message-State: AAQBX9eWzP5yUPCQ9Z9wdGBfHU9FjbYKV5UxPrwhlWsaXx+XiZH8SPA2 O0scb1RJpLdjKuV3XFZwpqE= X-Google-Smtp-Source: AKy350asCprAU6527zyhHcwBBYydceA7UYQzsFvjOl46nDBEehhSUpZTUIYnQBkOtkB5u2KbeJ18DQ== X-Received: by 2002:a17:902:e552:b0:1a6:6f09:6736 with SMTP id n18-20020a170902e55200b001a66f096736mr2768923plf.20.1681470088177; Fri, 14 Apr 2023 04:01:28 -0700 (PDT) Received: from CLOUDLIANG-MB2.tencent.com ([103.7.29.32]) by smtp.gmail.com with ESMTPSA id r4-20020a170902ea4400b00194caf3e975sm2835821plg.208.2023.04.14.04.01.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Apr 2023 04:01:27 -0700 (PDT) From: Jinrong Liang X-Google-Original-From: Jinrong Liang To: Sean Christopherson Cc: Like Xu , Paolo Bonzini , Jonathan Corbet , Shuah Khan , Aaron Lewis , David Matlack , Vishal Annapurve , Wanpeng Li , Jinrong Liang , linux-kselftest@vger.kernel.org, linux-doc@vger.kernel.org, kvm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 6/7] KVM: selftests: Check gp event filters without affecting fixed event filters Date: Fri, 14 Apr 2023 19:00:55 +0800 Message-Id: <20230414110056.19665-7-cloudliang@tencent.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230414110056.19665-1-cloudliang@tencent.com> References: <20230414110056.19665-1-cloudliang@tencent.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-kselftest@vger.kernel.org From: Jinrong Liang Add a test to ensure that setting both generic and fixed performance event filters does not affect the consistency of the fixed performance filter behavior in KVM. This test helps to ensure that the fixed performance filter works as expected even when generic performance event filters are also set. Signed-off-by: Jinrong Liang --- .../selftests/kvm/x86_64/pmu_event_filter_test.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tools/testing/selftests/kvm/x86_64/pmu_event_filter_test.c b/tools/testing/selftests/kvm/x86_64/pmu_event_filter_test.c index 0f54c53d7fff..9be4c6f8fb7e 100644 --- a/tools/testing/selftests/kvm/x86_64/pmu_event_filter_test.c +++ b/tools/testing/selftests/kvm/x86_64/pmu_event_filter_test.c @@ -889,6 +889,7 @@ static void test_fixed_ctr_action_and_bitmap(struct kvm_vcpu *vcpu, uint32_t bitmap; uint64_t count; bool expected; + struct kvm_pmu_event_filter *f; /* * Check the fixed performance counter can count normally works when @@ -902,6 +903,19 @@ static void test_fixed_ctr_action_and_bitmap(struct kvm_vcpu *vcpu, expected = fixed_ctr_is_allowed(fixed_ctr_idx, actions[i], bitmap); count = test_fixed_ctr_with_filter(vcpu, actions[i], bitmap); + TEST_ASSERT(expected == !!count, + "Fixed event filter does not work as expected."); + + /* + * Check that setting both events[] and fixed_counter_bitmap + * does not affect the consistency of the fixed ctrs' behaviour. + * + * Note, the fixed_counter_bitmap rule has high priority. + */ + f = event_filter(actions[i]); + f->fixed_counter_bitmap = bitmap; + count = test_with_filter(vcpu, f); + TEST_ASSERT(expected == !!count, "Fixed event filter does not work as expected."); }