From: Marc Zyngier <maz@kernel.org>
To: kvmarm@lists.linux.dev, kvm@vger.kernel.org,
linux-arm-kernel@lists.infradead.org
Cc: James Morse <james.morse@arm.com>,
Suzuki K Poulose <suzuki.poulose@arm.com>,
Oliver Upton <oliver.upton@linux.dev>,
Zenghui Yu <yuzenghui@huawei.com>,
Ricardo Koller <ricarkol@google.com>,
Simon Veith <sveith@amazon.de>,
dwmw2@infradead.org
Subject: [PATCH 15/16] KVM: arm64: selftests: Augment existing timer test to handle variable offsets
Date: Thu, 16 Feb 2023 14:21:22 +0000 [thread overview]
Message-ID: <20230216142123.2638675-16-maz@kernel.org> (raw)
In-Reply-To: <20230216142123.2638675-1-maz@kernel.org>
Allow a user to specify the physical and virtual offsets on the
command-line.
Signed-off-by: Marc Zyngier <maz@kernel.org>
---
.../selftests/kvm/aarch64/arch_timer.c | 23 ++++++++++++++++++-
1 file changed, 22 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/kvm/aarch64/arch_timer.c b/tools/testing/selftests/kvm/aarch64/arch_timer.c
index 26556a266021..62af0e7d10b4 100644
--- a/tools/testing/selftests/kvm/aarch64/arch_timer.c
+++ b/tools/testing/selftests/kvm/aarch64/arch_timer.c
@@ -47,6 +47,7 @@ struct test_args {
int nr_iter;
int timer_period_ms;
int migration_freq_ms;
+ struct kvm_arm_counter_offsets offsets;
};
static struct test_args test_args = {
@@ -54,6 +55,7 @@ static struct test_args test_args = {
.nr_iter = NR_TEST_ITERS_DEF,
.timer_period_ms = TIMER_TEST_PERIOD_MS_DEF,
.migration_freq_ms = TIMER_TEST_MIGRATION_FREQ_MS,
+ .offsets = { .flags = 0 },
};
#define msecs_to_usecs(msec) ((msec) * 1000LL)
@@ -372,6 +374,13 @@ static struct kvm_vm *test_vm_create(void)
vm_init_descriptor_tables(vm);
vm_install_exception_handler(vm, VECTOR_IRQ_CURRENT, guest_irq_handler);
+ if (test_args.offsets.flags) {
+ if (kvm_has_cap(KVM_CAP_COUNTER_OFFSETS))
+ vm_ioctl(vm, KVM_ARM_SET_CNT_OFFSETS, &test_args.offsets);
+ else
+ __TEST_REQUIRE(test_args.offsets.flags, "no support for global offsets");
+ }
+
for (i = 0; i < nr_vcpus; i++)
vcpu_init_descriptor_tables(vcpus[i]);
@@ -403,6 +412,10 @@ static void test_print_help(char *name)
TIMER_TEST_PERIOD_MS_DEF);
pr_info("\t-m: Frequency (in ms) of vCPUs to migrate to different pCPU. 0 to turn off (default: %u)\n",
TIMER_TEST_MIGRATION_FREQ_MS);
+ pr_info("\t-o: Virtual counter offset (in counter cycles, default: %llu)\n",
+ test_args.offsets.virtual_offset);
+ pr_info("\t-O: Physical counter offset (in counter cycles, default: %llu)\n",
+ test_args.offsets.physical_offset);
pr_info("\t-h: print this help screen\n");
}
@@ -410,7 +423,7 @@ static bool parse_args(int argc, char *argv[])
{
int opt;
- while ((opt = getopt(argc, argv, "hn:i:p:m:")) != -1) {
+ while ((opt = getopt(argc, argv, "hn:i:p:m:o:O:")) != -1) {
switch (opt) {
case 'n':
test_args.nr_vcpus = atoi_positive("Number of vCPUs", optarg);
@@ -429,6 +442,14 @@ static bool parse_args(int argc, char *argv[])
case 'm':
test_args.migration_freq_ms = atoi_non_negative("Frequency", optarg);
break;
+ case 'o':
+ test_args.offsets.virtual_offset = strtol(optarg, NULL, 0);
+ test_args.offsets.flags |= KVM_COUNTER_SET_VOFFSET_FLAG;
+ break;
+ case 'O':
+ test_args.offsets.physical_offset = strtol(optarg, NULL, 0);
+ test_args.offsets.flags |= KVM_COUNTER_SET_POFFSET_FLAG;
+ break;
case 'h':
default:
goto err;
--
2.34.1
next prev parent reply other threads:[~2023-02-16 14:31 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-16 14:21 [PATCH 00/16] KVM: arm64: Rework timer offsetting for fun and profit Marc Zyngier
2023-02-16 14:21 ` [PATCH 01/16] arm64: Add CNTPOFF_EL2 register definition Marc Zyngier
2023-02-16 14:21 ` [PATCH 02/16] arm64: Add HAS_ECV_CNTPOFF capability Marc Zyngier
2023-02-22 4:30 ` Reiji Watanabe
2023-02-22 10:47 ` Marc Zyngier
2023-02-16 14:21 ` [PATCH 03/16] kvm: arm64: Expose {un,}lock_all_vcpus() to the reset of KVM Marc Zyngier
2023-02-23 22:30 ` Colton Lewis
2023-02-16 14:21 ` [PATCH 04/16] KVM: arm64: timers: Use a per-vcpu, per-timer accumulator for fractional ns Marc Zyngier
2023-02-23 22:30 ` Colton Lewis
2023-02-16 14:21 ` [PATCH 05/16] KVM: arm64: timers: Convert per-vcpu virtual offset to a global value Marc Zyngier
2023-02-22 6:15 ` Reiji Watanabe
2023-02-22 10:54 ` Marc Zyngier
2023-02-16 14:21 ` [PATCH 06/16] KVM: arm64: timers: Use CNTPOFF_EL2 to offset the physical timer Marc Zyngier
2023-02-23 22:34 ` Colton Lewis
2023-02-24 8:59 ` Marc Zyngier
2023-02-16 14:21 ` [PATCH 07/16] KVM: arm64: timers: Allow physical offset without CNTPOFF_EL2 Marc Zyngier
2023-02-23 22:40 ` Colton Lewis
2023-02-24 10:54 ` Marc Zyngier
2023-02-16 14:21 ` [PATCH 08/16] KVM: arm64: timers: Allow userspace to set the counter offsets Marc Zyngier
2023-02-16 22:09 ` Oliver Upton
2023-02-17 10:17 ` Marc Zyngier
2023-02-17 22:11 ` Oliver Upton
2023-02-22 11:56 ` Marc Zyngier
2023-02-22 16:34 ` Oliver Upton
2023-02-23 18:25 ` Marc Zyngier
2023-03-08 7:46 ` Oliver Upton
2023-03-08 7:53 ` Oliver Upton
2023-03-09 8:29 ` Marc Zyngier
2023-03-09 8:25 ` Marc Zyngier
2023-02-23 22:41 ` Colton Lewis
2023-02-24 11:24 ` Marc Zyngier
2023-02-16 14:21 ` [PATCH 09/16] KVM: arm64: timers: Allow save/restoring of the physical timer Marc Zyngier
2023-02-16 14:21 ` [PATCH 10/16] KVM: arm64: timers: Rationalise per-vcpu timer init Marc Zyngier
2023-02-16 14:21 ` [PATCH 11/16] KVM: arm64: Document KVM_ARM_SET_CNT_OFFSETS and co Marc Zyngier
2023-02-16 14:21 ` [PATCH 12/16] KVM: arm64: nv: timers: Add a per-timer, per-vcpu offset Marc Zyngier
2023-02-24 20:07 ` Colton Lewis
2023-02-25 10:32 ` Marc Zyngier
2023-02-16 14:21 ` [PATCH 13/16] KVM: arm64: nv: timers: Support hyp timer emulation Marc Zyngier
2023-02-24 20:08 ` Colton Lewis
2023-02-25 10:34 ` Marc Zyngier
2023-02-16 14:21 ` [PATCH 14/16] KVM: arm64: selftests: Add physical timer registers to the sysreg list Marc Zyngier
2023-02-16 14:21 ` Marc Zyngier [this message]
2023-03-06 22:08 ` [PATCH 15/16] KVM: arm64: selftests: Augment existing timer test to handle variable offsets Colton Lewis
2023-03-09 9:01 ` Marc Zyngier
2023-03-10 19:26 ` Colton Lewis
2023-03-12 15:53 ` Marc Zyngier
2023-03-13 11:43 ` Marc Zyngier
2023-03-14 17:47 ` Colton Lewis
2023-03-14 18:18 ` Marc Zyngier
2023-02-16 14:21 ` [PATCH 16/16] KVM: arm64: selftests: Deal with spurious timer interrupts Marc Zyngier
2023-02-21 16:28 ` [PATCH 00/16] KVM: arm64: Rework timer offsetting for fun and profit Veith, Simon
2023-02-21 22:17 ` Marc Zyngier
2023-02-23 22:29 ` Colton Lewis
2023-02-24 8:45 ` Marc Zyngier
2023-02-24 20:07 ` Colton Lewis
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230216142123.2638675-16-maz@kernel.org \
--to=maz@kernel.org \
--cc=dwmw2@infradead.org \
--cc=james.morse@arm.com \
--cc=kvm@vger.kernel.org \
--cc=kvmarm@lists.linux.dev \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=oliver.upton@linux.dev \
--cc=ricarkol@google.com \
--cc=suzuki.poulose@arm.com \
--cc=sveith@amazon.de \
--cc=yuzenghui@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).