This series implements new tests for the x86 and arm64 counter migration changes that I've mailed out. These are sent separately as a dependent change since there are cross-arch dependencies here. Patch 1 yanks the pvclock headers into the tools/ directory so we can make use of them within a KVM selftest guest. Patch 2 tests the new capabilities of the KVM_*_CLOCK ioctls, ensuring that the kernel accounts for elapsed time when restoring the KVM clock. Patches 3-4 add some device attribute helpers and clean up some mistakes in the assertions thereof. Patch 5 implements a test for the KVM_VCPU_TSC_OFFSET attribute, asserting that manipulation of the offset results in correct TSC values within the guest. Patch 6 adds a helper to check if KVM supports a given register in the KVM_*_REG ioctls. Patch 7 adds basic arm64 support to the counter offset test, checking that the virtual counter-timer offset works correctly. Patch 8 does the same for the physical counter-timer offset. Patch 9 adds a benchmark for physical counter offsetting, since most implementations available right now will rely on emulation. This series applies cleanly to kvm/queue at the following commit: 3e0b8bd99ab ("KVM: MMU: change tracepoints arguments to kvm_page_fault") Tests were ran against the respective architecture changes on the following systems: - Haswell (x86) - Ampere Mt. Jade (non-ECV, nVHE and VHE) - ARM Base RevC FVP (ECV, nVHE and VHE) *NOTE*: Though this tests changes between both x86 and arm64, these tests check for capabilities and skip if missing, so its OK if they're merged in trees that lack the patches for both architectures. v6: https://lore.kernel.org/r/20210804085819.846610-1-oupton@xxxxxxxxxx v6 -> v7: - adapted to UAPI renaming for physical counter offsetting on arm64 Oliver Upton (9): tools: arch: x86: pull in pvclock headers selftests: KVM: Add test for KVM_{GET,SET}_CLOCK selftests: KVM: Fix kvm device helper ioctl assertions selftests: KVM: Add helpers for vCPU device attributes selftests: KVM: Introduce system counter offset test selftests: KVM: Add helper to check for register presence selftests: KVM: Add support for aarch64 to system_counter_offset_test selftests: KVM: Test physical counter offsetting selftests: KVM: Add counter emulation benchmark tools/arch/x86/include/asm/pvclock-abi.h | 48 ++++ tools/arch/x86/include/asm/pvclock.h | 103 +++++++++ tools/testing/selftests/kvm/.gitignore | 3 + tools/testing/selftests/kvm/Makefile | 4 + .../kvm/aarch64/counter_emulation_benchmark.c | 207 +++++++++++++++++ .../selftests/kvm/include/aarch64/processor.h | 24 ++ .../testing/selftests/kvm/include/kvm_util.h | 13 ++ tools/testing/selftests/kvm/lib/kvm_util.c | 63 +++++- .../kvm/system_counter_offset_test.c | 211 ++++++++++++++++++ .../selftests/kvm/x86_64/kvm_clock_test.c | 204 +++++++++++++++++ 10 files changed, 877 insertions(+), 3 deletions(-) create mode 100644 tools/arch/x86/include/asm/pvclock-abi.h create mode 100644 tools/arch/x86/include/asm/pvclock.h create mode 100644 tools/testing/selftests/kvm/aarch64/counter_emulation_benchmark.c create mode 100644 tools/testing/selftests/kvm/system_counter_offset_test.c create mode 100644 tools/testing/selftests/kvm/x86_64/kvm_clock_test.c -- 2.33.0.rc1.237.g0d66db33f3-goog