From patchwork Mon Feb 13 18:02:21 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Raghavendra Rao Ananta X-Patchwork-Id: 13138784 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id CF143C636D4 for ; Mon, 13 Feb 2023 18:04:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:From:Subject:Message-ID: Mime-Version:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To: References:List-Owner; bh=rKK3I2/xzoIqK1Z77LV3W85qp2yTn45+viK46KDmsEA=; b=P6Q CubmQEG+sqzjrvJAPKCKrUg25kHipXIXABmx2q44qbBBHHcjQJ3ha12EbBoVwiAAFfBflzH2xhd18 krhn2LkfyIZsmh5H1oEHkI91npULPeUjabyKYGWh+fN5hRgPr/qEJul2XGua7uHFEOGmPfXI2DmlT C9Jo2EuH9ghENXJg5GJxLfQziH5eyFpa2pFiu8N7T7jVkrXJaRYRaY4y//DX1BX81rWHYlopny0A8 qD9jLWWTJEgmrahuF/7z3OGkOXUL6q+cFqfPksZeYVIxyFOfk90R+ZbRoBbGb858oT8aGGNcg469B 8miJkDb8908DYTLsdnHuDwrC8R4ojMg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1pRdAG-00Flgw-PR; Mon, 13 Feb 2023 18:02:56 +0000 Received: from mail-yb1-xb4a.google.com ([2607:f8b0:4864:20::b4a]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1pRdA2-00Fla3-AZ for linux-arm-kernel@lists.infradead.org; Mon, 13 Feb 2023 18:02:45 +0000 Received: by mail-yb1-xb4a.google.com with SMTP id y192-20020a2532c9000000b008ec2e7092d6so10229433yby.5 for ; Mon, 13 Feb 2023 10:02:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:from:subject:message-id:mime-version:date:from:to:cc:subject :date:message-id:reply-to; bh=BpleHRiVR4EUSpy/SWqcPhyAa33jUi6Ury6G4Iecv4I=; b=Xf3x5NE/w0sBajJO3lIF+XcSeulIsiq+JSti1HsFZcXt9W4UF2WVlmRhqxG/gZ4UM4 qns1ntOHn+JM4vvit1JNLjZFCpZ7ThpyP3LXL8gzx7Kg+Leg+He8VDFKIbzRj9cEcZgn EPTe5LF1kSPWeNQwzNcJcO5xluJtBkeK4mK+OsCgcYA707gAIflOAip21tDSOCd9Erk8 7du3jqOVX4IHd2gsXAmzSDU+nxexaMDkt3fquTHsOhl7GEQYk0n3TIa7Wez9A/mmG8+J Gj3XOcBCsyWC17uTlFOP9fU8qfipyYTust95sZiU/T6lYjT1tc9AKLDaN94w6cjZVa43 J8vg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:from:subject:message-id:mime-version:date:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=BpleHRiVR4EUSpy/SWqcPhyAa33jUi6Ury6G4Iecv4I=; b=vXsfHplJ23adjrOOyvElFDqvY3POGlKNBOsZruZTmEuNgHnzW6YyatEqGN/UoiOnYP /uUvhj9EEvXwbi3nn04xMrNcKzXGk6YJa11Q13nOewlIlzuvIRt54cSE0fsztRypZSYY dFMa1YiMJyUvIzAeLj0EvAo5tNuCGSfnP9FlttlODjkx1XU+Fp7Rnl+QGxcjj/HSEN33 NPp/n9pne9Bz8fkEjt2cv8A0dq2qW/f8ad7U+HZyHlwm/pn5ZouNy377IPhgaSEcFvRb xo0O1QVOKexHSldmDP5/5GGRpkjitkTBer9pUGyiJ5yhrRb67w9jOL52uIe5ErugcivF ndGQ== X-Gm-Message-State: AO0yUKUbAe44bwqJTG8xXN2aiP6Iw/vosvp3HFOVW2kZmW/Ew4NStzWU d8O2mI0f0qRaJRMMyIhPowovgDxeqkLS X-Google-Smtp-Source: AK7set/E/zEcaIXNhXkditxiEul+rHVKptXA3M+YkUOhAM/c0OQ93NwxXrM31UBY8F1i9LkGUIOld31yR0Y0 X-Received: from rananta-linux.c.googlers.com ([fda3:e722:ac3:cc00:2b:ff92:c0a8:22b5]) (user=rananta job=sendgmr) by 2002:a81:6d91:0:b0:52e:b80e:f0a9 with SMTP id i139-20020a816d91000000b0052eb80ef0a9mr16ywc.10.1676311359266; Mon, 13 Feb 2023 10:02:39 -0800 (PST) Date: Mon, 13 Feb 2023 18:02:21 +0000 Mime-Version: 1.0 X-Mailer: git-send-email 2.39.1.581.gbfd45094c4-goog Message-ID: <20230213180234.2885032-1-rananta@google.com> Subject: [PATCH 00/13] Extend the vPMU selftest From: Raghavendra Rao Ananta To: Oliver Upton , Reiji Watanabe , Marc Zyngier , Ricardo Koller , James Morse , Suzuki K Poulose Cc: Paolo Bonzini , Jing Zhang , Colton Lewis , Raghavendra Rao Anata , linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, linux-kernel@vger.kernel.org, kvm@vger.kernel.org X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230213_100244_042951_E8B92399 X-CRM114-Status: GOOD ( 12.59 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Hello, This vPMU KVM selftest series is an extension to the selftests introduced by Reiji Watanabe in his series aims to limit the number of PMCs on vCPU from userspace [1]. The idea behind this series is to expand the test coverage to include the tests that validates actions from userspace, such as allowing or denying certain events via KVM_ARM_VCPU_PMU_V3_FILTER attribute, KVM's guarding of the PMU attributes to count EL2/EL3 events, and formal KVM behavior that enables PMU emulation. The last part validates the guest expectations of the vPMU by setting up a stress test that force-migrates multiple vCPUs frequently across random pCPUs in the system, thus ensuring KVM's management of vCPU PMU contexts correctly. Patch-1 renames the test file to be more generic. Patch-2 refactors the existing tests for plugging-in the upcoming tests easily. Patch-3 and 4 add helper macros and functions respectively to interact with the cycle counter. Patch-5 extends create_vpmu_vm() to accept an array of event filters as an argument that are to be applied to the VM. Patch-6 tests the KVM_ARM_VCPU_PMU_V3_FILTER attribute by scripting various combinations of events that are to be allowed or denied to the guest and verifying guest's behavior. Patch-7 adds test to validate KVM's handling of guest requests to count events in EL2/EL3. Patch-8 introduces the vCPU migration stress testing by validating cycle counter and general purpose counter's behavior across vCPU migrations. Patch-9, 10, and 11 expands the tests in patch-8 to validate overflow/IRQ functionality, chained events, and occupancy of all the PMU counters, respectively. Patch-12 extends create_vpmu_vm() to create multiple vCPUs for the VM. Patch-13 expands the stress tests for multiple vCPUs. The series has been tested on hardwares with PMUv8p1 and PMUvp5. Thank you. Raghavendra [1]: https://lore.kernel.org/all/20230203040242.1792453-1-reijiw@google.com/ Raghavendra Rao Ananta (13): selftests: KVM: aarch64: Rename vpmu_counter_access.c to vpmu_test.c selftests: KVM: aarch64: Refactor the vPMU counter access tests tools: arm64: perf_event: Define Cycle counter enable/overflow bits selftests: KVM: aarch64: Add PMU cycle counter helpers selftests: KVM: aarch64: Consider PMU event filters for VM creation selftests: KVM: aarch64: Add KVM PMU event filter test selftests: KVM: aarch64: Add KVM EVTYPE filter PMU test selftests: KVM: aarch64: Add vCPU migration test for PMU selftests: KVM: aarch64: Test PMU overflow/IRQ functionality selftests: KVM: aarch64: Test chained events for PMU selftests: KVM: aarch64: Add PMU test to chain all the counters selftests: KVM: aarch64: Add multi-vCPU support for vPMU VM creation selftests: KVM: aarch64: Extend the vCPU migration test to multi-vCPUs tools/arch/arm64/include/asm/perf_event.h | 7 + tools/testing/selftests/kvm/Makefile | 2 +- .../kvm/aarch64/vpmu_counter_access.c | 642 ------- .../testing/selftests/kvm/aarch64/vpmu_test.c | 1710 +++++++++++++++++ 4 files changed, 1718 insertions(+), 643 deletions(-) delete mode 100644 tools/testing/selftests/kvm/aarch64/vpmu_counter_access.c create mode 100644 tools/testing/selftests/kvm/aarch64/vpmu_test.c