From nobody Wed Jun 24 09:55:00 2026 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 778F0C433EF for ; Fri, 11 Mar 2022 05:51:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346529AbiCKFwO (ORCPT ); Fri, 11 Mar 2022 00:52:14 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54190 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346518AbiCKFwN (ORCPT ); Fri, 11 Mar 2022 00:52:13 -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 50490ECB28 for ; Thu, 10 Mar 2022 21:51:09 -0800 (PST) Received: by mail-pl1-x64a.google.com with SMTP id x10-20020a170902a38a00b00151e09a4e15so3991937pla.15 for ; Thu, 10 Mar 2022 21:51:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=oO6SkjEiUDbSzkcF/OQIzEks0/M78f3nx/F5kOnCdxM=; b=a1G2oSVZEWkawgXshmlwrmCPCRYc8bhXsgpGecRuCtowOFkiKW7W3Y1nzMIGVeoCvh kkHJHMTJvNZepmQwWpRbl0KCnw077OZlavM5FDAXW53ImTbfQ+OWwzPfZxnxzULTQ73M 7IzTkIh9R3pQAUbJew+jgabAF3NqoUMhOY5UKHvQg3+BeYmTyL7yp59Mx2a43YpTo3TA FxnWl2L1TQjDSGfXDgRpGyS2PQyt0lTq2vqcUe2ZhEPKoshcT+Swm+WnbDoi6WxPvM5h 36Dp3K1XpnAtOjlZs60t0+E8sow9YfQMBzxqtgIwcXH8W1ghKAHSQIr8bTNGNYpcJywC Gu1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=oO6SkjEiUDbSzkcF/OQIzEks0/M78f3nx/F5kOnCdxM=; b=tdkddBJmPQVmLZn9lZc/LpCEiJtk7T9iEyT3m+9MuMHGKr2C46MoBUrCRVYDMGJ3sL yWBGszCck7d2cDLmvGuhe0DbpIxZH+9/OZ5ZdeawKlDui4WRUxSf+lSlsQE8+TEIzbJ3 8xsFVmxrKeYa+lbwnNiOTo4gZ8yiWLOOW36gZMzGb8EnbktkcTDNYBVMcHKywEAwipoa r5kIRUj1rKdVhef5HryRakfR+FDYCx6JyY3mkkubnbw4hJ3mRRoAvIqKiD4V67s4Mqja lGohWWnqGyK5+8a0tJOKfFBSpz6Gaxx24NxgE9WFOQ0UiMc9H6JKcVNONgia4+QpBukm MzMw== X-Gm-Message-State: AOAM533MLHzSJCn859TAhQBjwh8OYbBP4+Wt0qq9hxY/PgRVmDZg61ja zSR33718Bt/eapGUKzegPdFNJ/vw5OhUN2Zc7Orxq+cRUIBcdmp5kIKbQM8TDJbs3wnlPqnlf15 e2RGbwYJlv0KKbcMIZgcbrg+6erwp/mSsOcV7L97j4ZGpYk8qElP/saOKjgbKEibMu0qCcA== X-Google-Smtp-Source: ABdhPJw8A8W9Rl5o6wUNy4MNv+LN2uMFoxhMW4TTEvvYVyRJpIvD/DaOjA0NsGClaErKXM+0sDka7Eent+s= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:902:8e82:b0:151:777b:6d7 with SMTP id bg2-20020a1709028e8200b00151777b06d7mr8812590plb.172.1646977868706; Thu, 10 Mar 2022 21:51:08 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:12 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-2-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 001/105] KVM: selftests: Fix buggy check in test_v3_new_redist_regions() From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- tools/testing/selftests/kvm/aarch64/vgic_init.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/kvm/aarch64/vgic_init.c b/tools/testin= g/selftests/kvm/aarch64/vgic_init.c index 34379c98d2f4..0f046e3e953d 100644 --- a/tools/testing/selftests/kvm/aarch64/vgic_init.c +++ b/tools/testing/selftests/kvm/aarch64/vgic_init.c @@ -381,8 +381,8 @@ static void test_v3_new_redist_regions(void) v =3D vm_gic_create_with_vcpus(KVM_DEV_TYPE_ARM_VGIC_V3, NR_VCPUS); subtest_v3_redist_regions(&v); =20 - _kvm_device_access(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, dummy, true); + ret =3D _kvm_device_access(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, dummy, true); TEST_ASSERT(ret && errno =3D=3D EFAULT, "register a third region allowing to cover the 4 vcpus"); =20 --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 B4927C433F5 for ; Fri, 11 Mar 2022 05:51:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346549AbiCKFw0 (ORCPT ); Fri, 11 Mar 2022 00:52:26 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54238 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346526AbiCKFwO (ORCPT ); Fri, 11 Mar 2022 00:52:14 -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 35C15ECC72 for ; Thu, 10 Mar 2022 21:51:11 -0800 (PST) Received: by mail-pj1-x1049.google.com with SMTP id e1-20020a17090a280100b001bf44b6d74bso7304455pjd.0 for ; Thu, 10 Mar 2022 21:51:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=IlAOOfd+yjpBKx3sGohnGp0k5UedDOqO6DTlbC9I7/o=; b=AHwe3L1UBOLOFvRnkYn4H5rqgLYsWe/9rz1NcYwFAuzO+/PV9IVsJfia+KUiFrF7Wr U/AzC0EsLN0n+vX1BDaSfij2v7ueYoX3j4y6J5B8nvQJGBOVTXMCbuZB+VvfgNzDyzzF a3M/4ab8+OifPc0SazONc5ThbREnBXErIUfm5F1kZDEvRxobad+agb1yoV3xp+BY2J4a +leFuRiyizESiajG13N7v+49czgVUXGE6HDqv0PVKMVqSOqQ/z94wu/k+HA9PiRcQxDe wvehmPCAqf90iClWlccjdmOt54KBc8qlbrtx4jSGY9BVl/MPy/DHSeD4DqZB4qv4w4IX g5Tw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=IlAOOfd+yjpBKx3sGohnGp0k5UedDOqO6DTlbC9I7/o=; b=YzOXQFn5obU6MMOYzv6x1WydtvU9bhsLMfKiAjB6NRnTKCo1Ar4ETHm13xGK2CoZXs tAHEw9IiWW7hXkLt1qAJ08hKunlOPn9ce6KPYvelivVtMlzBmhWxtioMQMeLWW9Q/+xR R3Y52rH95OJ3xonHzaw2Ym+cQZXcfqHW1aGVonTK9XsPT8yxlCmmQDeVgeYWy7AylxlJ csfaJb2qY7U9vDFoX1CjxKA1PmLMOR1Q9ExW8NDicn15q6iMCaee2mUTqovbnOcUo0if /Pxu0iYTuzOiS2doay5YhSAIUP2qORuiyn78GwVxS3qy/ea+vZivFzWmx9oOI0DyPMsG 8k4g== X-Gm-Message-State: AOAM532n+rI1a9ybohI86kPacU/H5qpBIiQlTJljHlmZd3Y/cckQsmwZ K3nInCnbABDB1nesra0/bNA59BGOqjWb0lv6vgbgSU6x6Uag09+/bijINWz0LnMb9RCRUcJ27AL petOJAN+NwUcO6s5HWlWZErejOzQdfOkbn7yJgip19tHoJaSKjxjRa2t212X5I7ZzxpgLbw== X-Google-Smtp-Source: ABdhPJwwksVaQQv0UGOboLOCN0S0AnjExM9NOc9xZFogbhfKDDvhXcKDnuZmcFxgnDHNkec7eSX1zl1YCSc= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:90b:1e10:b0:1bf:6c78:54a9 with SMTP id pg16-20020a17090b1e1000b001bf6c7854a9mr460280pjb.1.1646977870391; Thu, 10 Mar 2022 21:51:10 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:13 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-3-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 002/105] KVM: selftests: Always open VM file descriptors with O_RDWR From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/aarch64/get-reg-list.c | 2 +- .../selftests/kvm/aarch64/psci_cpu_on_test.c | 2 +- tools/testing/selftests/kvm/dirty_log_test.c | 2 +- .../selftests/kvm/hardware_disable_test.c | 2 +- .../selftests/kvm/include/kvm_util_base.h | 4 ++-- .../selftests/kvm/kvm_binary_stats_test.c | 2 +- .../selftests/kvm/kvm_create_max_vcpus.c | 2 +- tools/testing/selftests/kvm/lib/kvm_util.c | 20 +++++++++---------- .../selftests/kvm/set_memory_region_test.c | 4 ++-- tools/testing/selftests/kvm/x86_64/amx_test.c | 2 +- .../testing/selftests/kvm/x86_64/evmcs_test.c | 2 +- .../selftests/kvm/x86_64/set_boot_cpu_id.c | 2 +- .../selftests/kvm/x86_64/set_sregs_test.c | 2 +- .../selftests/kvm/x86_64/sev_migrate_tests.c | 8 ++++---- tools/testing/selftests/kvm/x86_64/smm_test.c | 2 +- .../testing/selftests/kvm/x86_64/state_test.c | 2 +- .../kvm/x86_64/vmx_preemption_timer_test.c | 2 +- 17 files changed, 30 insertions(+), 32 deletions(-) diff --git a/tools/testing/selftests/kvm/aarch64/get-reg-list.c b/tools/tes= ting/selftests/kvm/aarch64/get-reg-list.c index f769fc6cd927..336de3e574d0 100644 --- a/tools/testing/selftests/kvm/aarch64/get-reg-list.c +++ b/tools/testing/selftests/kvm/aarch64/get-reg-list.c @@ -411,7 +411,7 @@ static void run_test(struct vcpu_config *c) =20 check_supported(c); =20 - vm =3D vm_create(VM_MODE_DEFAULT, DEFAULT_GUEST_PHY_PAGES, O_RDWR); + vm =3D vm_create(VM_MODE_DEFAULT, DEFAULT_GUEST_PHY_PAGES); prepare_vcpu_init(c, &init); aarch64_vcpu_add_default(vm, 0, &init, NULL); finalize_vcpu(vm, 0, c); diff --git a/tools/testing/selftests/kvm/aarch64/psci_cpu_on_test.c b/tools= /testing/selftests/kvm/aarch64/psci_cpu_on_test.c index 4c5f6814030f..15f4b3544ee5 100644 --- a/tools/testing/selftests/kvm/aarch64/psci_cpu_on_test.c +++ b/tools/testing/selftests/kvm/aarch64/psci_cpu_on_test.c @@ -76,7 +76,7 @@ int main(void) struct kvm_vm *vm; struct ucall uc; =20 - vm =3D vm_create(VM_MODE_DEFAULT, DEFAULT_GUEST_PHY_PAGES, O_RDWR); + vm =3D vm_create(VM_MODE_DEFAULT, DEFAULT_GUEST_PHY_PAGES); kvm_vm_elf_load(vm, program_invocation_name); ucall_init(vm, NULL); =20 diff --git a/tools/testing/selftests/kvm/dirty_log_test.c b/tools/testing/s= elftests/kvm/dirty_log_test.c index 3fcd89e195c7..11bf606e3165 100644 --- a/tools/testing/selftests/kvm/dirty_log_test.c +++ b/tools/testing/selftests/kvm/dirty_log_test.c @@ -679,7 +679,7 @@ static struct kvm_vm *create_vm(enum vm_guest_mode mode= , uint32_t vcpuid, =20 pr_info("Testing guest mode: %s\n", vm_guest_mode_string(mode)); =20 - vm =3D vm_create(mode, DEFAULT_GUEST_PHY_PAGES + extra_pg_pages, O_RDWR); + vm =3D vm_create(mode, DEFAULT_GUEST_PHY_PAGES + extra_pg_pages); kvm_vm_elf_load(vm, program_invocation_name); #ifdef __x86_64__ vm_create_irqchip(vm); diff --git a/tools/testing/selftests/kvm/hardware_disable_test.c b/tools/te= sting/selftests/kvm/hardware_disable_test.c index b21c69a56daa..1c9e2295c75b 100644 --- a/tools/testing/selftests/kvm/hardware_disable_test.c +++ b/tools/testing/selftests/kvm/hardware_disable_test.c @@ -104,7 +104,7 @@ static void run_test(uint32_t run) for (i =3D 0; i < VCPU_NUM; i++) CPU_SET(i, &cpu_set); =20 - vm =3D vm_create(VM_MODE_DEFAULT, DEFAULT_GUEST_PHY_PAGES, O_RDWR); + vm =3D vm_create(VM_MODE_DEFAULT, DEFAULT_GUEST_PHY_PAGES); kvm_vm_elf_load(vm, program_invocation_name); vm_create_irqchip(vm); =20 diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/te= sting/selftests/kvm/include/kvm_util_base.h index 4ed6aa049a91..bbc66442f91f 100644 --- a/tools/testing/selftests/kvm/include/kvm_util_base.h +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h @@ -110,9 +110,9 @@ int vcpu_enable_cap(struct kvm_vm *vm, uint32_t vcpu_id, void vm_enable_dirty_ring(struct kvm_vm *vm, uint32_t ring_size); const char *vm_guest_mode_string(uint32_t i); =20 -struct kvm_vm *vm_create(enum vm_guest_mode mode, uint64_t phy_pages, int = perm); +struct kvm_vm *vm_create(enum vm_guest_mode mode, uint64_t phy_pages); void kvm_vm_free(struct kvm_vm *vmp); -void kvm_vm_restart(struct kvm_vm *vmp, int perm); +void kvm_vm_restart(struct kvm_vm *vmp); void kvm_vm_release(struct kvm_vm *vmp); void kvm_vm_get_dirty_log(struct kvm_vm *vm, int slot, void *log); void kvm_vm_clear_dirty_log(struct kvm_vm *vm, int slot, void *log, diff --git a/tools/testing/selftests/kvm/kvm_binary_stats_test.c b/tools/te= sting/selftests/kvm/kvm_binary_stats_test.c index 17f65d514915..6217f4630e6c 100644 --- a/tools/testing/selftests/kvm/kvm_binary_stats_test.c +++ b/tools/testing/selftests/kvm/kvm_binary_stats_test.c @@ -230,7 +230,7 @@ int main(int argc, char *argv[]) TEST_ASSERT(vms, "Allocate memory for storing VM pointers"); for (i =3D 0; i < max_vm; ++i) { vms[i] =3D vm_create(VM_MODE_DEFAULT, - DEFAULT_GUEST_PHY_PAGES, O_RDWR); + DEFAULT_GUEST_PHY_PAGES); for (j =3D 0; j < max_vcpu; ++j) vm_vcpu_add(vms[i], j); } diff --git a/tools/testing/selftests/kvm/kvm_create_max_vcpus.c b/tools/tes= ting/selftests/kvm/kvm_create_max_vcpus.c index aed9dc3ca1e9..bb69b75eac23 100644 --- a/tools/testing/selftests/kvm/kvm_create_max_vcpus.c +++ b/tools/testing/selftests/kvm/kvm_create_max_vcpus.c @@ -28,7 +28,7 @@ void test_vcpu_creation(int first_vcpu_id, int num_vcpus) pr_info("Testing creating %d vCPUs, with IDs %d...%d.\n", num_vcpus, first_vcpu_id, first_vcpu_id + num_vcpus - 1); =20 - vm =3D vm_create(VM_MODE_DEFAULT, DEFAULT_GUEST_PHY_PAGES, O_RDWR); + vm =3D vm_create(VM_MODE_DEFAULT, DEFAULT_GUEST_PHY_PAGES); =20 for (i =3D first_vcpu_id; i < first_vcpu_id + num_vcpus; i++) /* This asserts that the vCPU was created. */ diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index d8cf851ab119..3e9654e65a67 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -173,9 +173,9 @@ void vm_enable_dirty_ring(struct kvm_vm *vm, uint32_t r= ing_size) vm->dirty_ring_size =3D ring_size; } =20 -static void vm_open(struct kvm_vm *vm, int perm) +static void vm_open(struct kvm_vm *vm) { - vm->kvm_fd =3D _open_kvm_dev_path_or_exit(perm); + vm->kvm_fd =3D _open_kvm_dev_path_or_exit(O_RDWR); =20 if (!kvm_check_cap(KVM_CAP_IMMEDIATE_EXIT)) { print_skip("immediate_exit not available"); @@ -240,7 +240,6 @@ _Static_assert(sizeof(vm_guest_mode_params)/sizeof(stru= ct vm_guest_mode_params) * Input Args: * mode - VM Mode (e.g. VM_MODE_P52V48_4K) * phy_pages - Physical memory pages - * perm - permission * * Output Args: None * @@ -253,12 +252,12 @@ _Static_assert(sizeof(vm_guest_mode_params)/sizeof(st= ruct vm_guest_mode_params) * descriptor to control the created VM is created with the permissions * given by perm (e.g. O_RDWR). */ -struct kvm_vm *vm_create(enum vm_guest_mode mode, uint64_t phy_pages, int = perm) +struct kvm_vm *vm_create(enum vm_guest_mode mode, uint64_t phy_pages) { struct kvm_vm *vm; =20 - pr_debug("%s: mode=3D'%s' pages=3D'%ld' perm=3D'%d'\n", __func__, - vm_guest_mode_string(mode), phy_pages, perm); + pr_debug("%s: mode=3D'%s' pages=3D'%ld'\n", __func__, + vm_guest_mode_string(mode), phy_pages); =20 vm =3D calloc(1, sizeof(*vm)); TEST_ASSERT(vm !=3D NULL, "Insufficient Memory"); @@ -340,7 +339,7 @@ struct kvm_vm *vm_create(enum vm_guest_mode mode, uint6= 4_t phy_pages, int perm) vm->type =3D KVM_VM_TYPE_ARM_IPA_SIZE(vm->pa_bits); #endif =20 - vm_open(vm, perm); + vm_open(vm); =20 /* Limit to VA-bit canonical virtual addresses. */ vm->vpages_valid =3D sparsebit_alloc(); @@ -412,7 +411,7 @@ struct kvm_vm *vm_create_with_vcpus(enum vm_guest_mode = mode, uint32_t nr_vcpus, nr_vcpus, kvm_check_cap(KVM_CAP_MAX_VCPUS)); =20 pages =3D vm_adjust_num_guest_pages(mode, pages); - vm =3D vm_create(mode, pages, O_RDWR); + vm =3D vm_create(mode, pages); =20 kvm_vm_elf_load(vm, program_invocation_name); =20 @@ -449,7 +448,6 @@ struct kvm_vm *vm_create_default(uint32_t vcpuid, uint6= 4_t extra_mem_pages, * * Input Args: * vm - VM that has been released before - * perm - permission * * Output Args: None * @@ -457,12 +455,12 @@ struct kvm_vm *vm_create_default(uint32_t vcpuid, uin= t64_t extra_mem_pages, * global state, such as the irqchip and the memory regions that are mapped * into the guest. */ -void kvm_vm_restart(struct kvm_vm *vmp, int perm) +void kvm_vm_restart(struct kvm_vm *vmp) { int ctr; struct userspace_mem_region *region; =20 - vm_open(vmp, perm); + vm_open(vmp); if (vmp->has_irqchip) vm_create_irqchip(vmp); =20 diff --git a/tools/testing/selftests/kvm/set_memory_region_test.c b/tools/t= esting/selftests/kvm/set_memory_region_test.c index 72a1c9b4882c..6a115d8d2fe3 100644 --- a/tools/testing/selftests/kvm/set_memory_region_test.c +++ b/tools/testing/selftests/kvm/set_memory_region_test.c @@ -314,7 +314,7 @@ static void test_zero_memory_regions(void) =20 pr_info("Testing KVM_RUN with zero added memory regions\n"); =20 - vm =3D vm_create(VM_MODE_DEFAULT, 0, O_RDWR); + vm =3D vm_create(VM_MODE_DEFAULT, 0); vm_vcpu_add(vm, VCPU_ID); =20 TEST_ASSERT(!ioctl(vm_get_fd(vm), KVM_SET_NR_MMU_PAGES, 64), @@ -370,7 +370,7 @@ static void test_add_max_memory_regions(void) "KVM_CAP_NR_MEMSLOTS should be greater than 0"); pr_info("Allowed number of memory slots: %i\n", max_mem_slots); =20 - vm =3D vm_create(VM_MODE_DEFAULT, 0, O_RDWR); + vm =3D vm_create(VM_MODE_DEFAULT, 0); =20 /* Check it can be added memory slots up to the maximum allowed */ pr_info("Adding slots 0..%i, each memory region with %dK size\n", diff --git a/tools/testing/selftests/kvm/x86_64/amx_test.c b/tools/testing/= selftests/kvm/x86_64/amx_test.c index 52a3ef6629e8..89d2423a2ffd 100644 --- a/tools/testing/selftests/kvm/x86_64/amx_test.c +++ b/tools/testing/selftests/kvm/x86_64/amx_test.c @@ -432,7 +432,7 @@ int main(int argc, char *argv[]) kvm_vm_release(vm); =20 /* Restore state in a new VM. */ - kvm_vm_restart(vm, O_RDWR); + kvm_vm_restart(vm); vm_vcpu_add(vm, VCPU_ID); vcpu_set_cpuid(vm, VCPU_ID, kvm_get_supported_cpuid()); vcpu_load_state(vm, VCPU_ID, state); diff --git a/tools/testing/selftests/kvm/x86_64/evmcs_test.c b/tools/testin= g/selftests/kvm/x86_64/evmcs_test.c index d12e043aa2ee..f97049ab045f 100644 --- a/tools/testing/selftests/kvm/x86_64/evmcs_test.c +++ b/tools/testing/selftests/kvm/x86_64/evmcs_test.c @@ -184,7 +184,7 @@ static void save_restore_vm(struct kvm_vm *vm) kvm_vm_release(vm); =20 /* Restore state in a new VM. */ - kvm_vm_restart(vm, O_RDWR); + kvm_vm_restart(vm); vm_vcpu_add(vm, VCPU_ID); vcpu_set_hv_cpuid(vm, VCPU_ID); vcpu_enable_evmcs(vm, VCPU_ID); diff --git a/tools/testing/selftests/kvm/x86_64/set_boot_cpu_id.c b/tools/t= esting/selftests/kvm/x86_64/set_boot_cpu_id.c index ae76436af0cc..2fe893ccedd0 100644 --- a/tools/testing/selftests/kvm/x86_64/set_boot_cpu_id.c +++ b/tools/testing/selftests/kvm/x86_64/set_boot_cpu_id.c @@ -88,7 +88,7 @@ static struct kvm_vm *create_vm(void) uint64_t pages =3D DEFAULT_GUEST_PHY_PAGES + vcpu_pages + extra_pg_pages; =20 pages =3D vm_adjust_num_guest_pages(VM_MODE_DEFAULT, pages); - vm =3D vm_create(VM_MODE_DEFAULT, pages, O_RDWR); + vm =3D vm_create(VM_MODE_DEFAULT, pages); =20 kvm_vm_elf_load(vm, program_invocation_name); vm_create_irqchip(vm); diff --git a/tools/testing/selftests/kvm/x86_64/set_sregs_test.c b/tools/te= sting/selftests/kvm/x86_64/set_sregs_test.c index 318be0bf77ab..44711ab735c3 100644 --- a/tools/testing/selftests/kvm/x86_64/set_sregs_test.c +++ b/tools/testing/selftests/kvm/x86_64/set_sregs_test.c @@ -95,7 +95,7 @@ int main(int argc, char *argv[]) * use it to verify all supported CR4 bits can be set prior to defining * the vCPU model, i.e. without doing KVM_SET_CPUID2. */ - vm =3D vm_create(VM_MODE_DEFAULT, DEFAULT_GUEST_PHY_PAGES, O_RDWR); + vm =3D vm_create(VM_MODE_DEFAULT, DEFAULT_GUEST_PHY_PAGES); vm_vcpu_add(vm, VCPU_ID); =20 vcpu_sregs_get(vm, VCPU_ID, &sregs); diff --git a/tools/testing/selftests/kvm/x86_64/sev_migrate_tests.c b/tools= /testing/selftests/kvm/x86_64/sev_migrate_tests.c index 80056bbbb003..7729ca60a9d7 100644 --- a/tools/testing/selftests/kvm/x86_64/sev_migrate_tests.c +++ b/tools/testing/selftests/kvm/x86_64/sev_migrate_tests.c @@ -52,7 +52,7 @@ static struct kvm_vm *sev_vm_create(bool es) struct kvm_sev_launch_start start =3D { 0 }; int i; =20 - vm =3D vm_create(VM_MODE_DEFAULT, 0, O_RDWR); + vm =3D vm_create(VM_MODE_DEFAULT, 0); sev_ioctl(vm->fd, es ? KVM_SEV_ES_INIT : KVM_SEV_INIT, NULL); for (i =3D 0; i < NR_MIGRATE_TEST_VCPUS; ++i) vm_vcpu_add(vm, i); @@ -69,7 +69,7 @@ static struct kvm_vm *aux_vm_create(bool with_vcpus) struct kvm_vm *vm; int i; =20 - vm =3D vm_create(VM_MODE_DEFAULT, 0, O_RDWR); + vm =3D vm_create(VM_MODE_DEFAULT, 0); if (!with_vcpus) return vm; =20 @@ -174,9 +174,9 @@ static void test_sev_migrate_parameters(void) =20 sev_vm =3D sev_vm_create(/* es=3D */ false); sev_es_vm =3D sev_vm_create(/* es=3D */ true); - vm_no_vcpu =3D vm_create(VM_MODE_DEFAULT, 0, O_RDWR); + vm_no_vcpu =3D vm_create(VM_MODE_DEFAULT, 0); vm_no_sev =3D aux_vm_create(true); - sev_es_vm_no_vmsa =3D vm_create(VM_MODE_DEFAULT, 0, O_RDWR); + sev_es_vm_no_vmsa =3D vm_create(VM_MODE_DEFAULT, 0); sev_ioctl(sev_es_vm_no_vmsa->fd, KVM_SEV_ES_INIT, NULL); vm_vcpu_add(sev_es_vm_no_vmsa, 1); =20 diff --git a/tools/testing/selftests/kvm/x86_64/smm_test.c b/tools/testing/= selftests/kvm/x86_64/smm_test.c index a626d40fdb48..9757c45575ff 100644 --- a/tools/testing/selftests/kvm/x86_64/smm_test.c +++ b/tools/testing/selftests/kvm/x86_64/smm_test.c @@ -206,7 +206,7 @@ int main(int argc, char *argv[]) =20 state =3D vcpu_save_state(vm, VCPU_ID); kvm_vm_release(vm); - kvm_vm_restart(vm, O_RDWR); + kvm_vm_restart(vm); vm_vcpu_add(vm, VCPU_ID); vcpu_set_cpuid(vm, VCPU_ID, kvm_get_supported_cpuid()); vcpu_load_state(vm, VCPU_ID, state); diff --git a/tools/testing/selftests/kvm/x86_64/state_test.c b/tools/testin= g/selftests/kvm/x86_64/state_test.c index 2e0a92da8ff5..41f7faaef2ac 100644 --- a/tools/testing/selftests/kvm/x86_64/state_test.c +++ b/tools/testing/selftests/kvm/x86_64/state_test.c @@ -213,7 +213,7 @@ int main(int argc, char *argv[]) kvm_vm_release(vm); =20 /* Restore state in a new VM. */ - kvm_vm_restart(vm, O_RDWR); + kvm_vm_restart(vm); vm_vcpu_add(vm, VCPU_ID); vcpu_set_cpuid(vm, VCPU_ID, kvm_get_supported_cpuid()); vcpu_load_state(vm, VCPU_ID, state); diff --git a/tools/testing/selftests/kvm/x86_64/vmx_preemption_timer_test.c= b/tools/testing/selftests/kvm/x86_64/vmx_preemption_timer_test.c index ff92e25b6f1e..f5b4ae914131 100644 --- a/tools/testing/selftests/kvm/x86_64/vmx_preemption_timer_test.c +++ b/tools/testing/selftests/kvm/x86_64/vmx_preemption_timer_test.c @@ -239,7 +239,7 @@ int main(int argc, char *argv[]) kvm_vm_release(vm); =20 /* Restore state in a new VM. */ - kvm_vm_restart(vm, O_RDWR); + kvm_vm_restart(vm); vm_vcpu_add(vm, VCPU_ID); vcpu_set_cpuid(vm, VCPU_ID, kvm_get_supported_cpuid()); vcpu_load_state(vm, VCPU_ID, state); --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 061E3C433EF for ; Fri, 11 Mar 2022 05:51:29 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346565AbiCKFw3 (ORCPT ); Fri, 11 Mar 2022 00:52:29 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54364 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346518AbiCKFwP (ORCPT ); Fri, 11 Mar 2022 00:52:15 -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 7E636ECB28 for ; Thu, 10 Mar 2022 21:51:12 -0800 (PST) Received: by mail-pf1-x449.google.com with SMTP id y7-20020a626407000000b004f6d39f1b0fso4624192pfb.5 for ; Thu, 10 Mar 2022 21:51:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=1YQu05ZjZIDjAKhhcQaIwwdAVFlEr0i1APQKfUMRuGA=; b=J1nzgrJ0gvXxJINzXXrbak4/+KicAbfXn005ALgbysdtqfrvUgknw+yFGBo6hL+e0p Q6McDn9HzoA7ifJjBK11eY7y41OhnZ4sYcylZOSoX51AadicClz7uGNQg3Z0Peo2PQYg p7o+syW/OQL/2S7w25M1yoJbsPuGKnMF//IvIjVO8B0xB2IyXcHyGx3N8uS5mIOp85ZZ S86BTiFtM6HQjwHvfB6Sqb2Q4T35bCwzge/ei5AkQscsNX0rfy0QGZXIoreKFzJr37Xs LKelRQSn4fpQfFRAnvelN5rAJioumZOHcFNeditbXMEX1meQ3gtBjLRwAYgyxxItU0i5 YFFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=1YQu05ZjZIDjAKhhcQaIwwdAVFlEr0i1APQKfUMRuGA=; b=GFpBvYVPBvuVksVOy6qvGBbdbXMqCjSFHtc3NbWtCcdcdatwj/ry1VTRAvbQktRi3K VRg3eChoir4kUALPRt/BlQshaYXrHtXq3L9mPgwnbjEt/xliHzf5t6bq0XoPrnyU/EWk jOVNMn5qiA3OYOkWwYsEGyU222gv319ZHpW1XY/1YbDdC7F5kaF4jQgb63EHSRj/U+wN 4Qj/QNnGITwsCWcptDqXz+Se7g6I8BB/Bu7VKQEotPj5NEO7lqwd6p1y3ybkrYxCLGGc PB4N/3vl85la9dqC4BdrSThNo/EE5KmbH1L6FWRHx6t9sUkiaPHBLnu1Hdag2NMQ55W1 GRxA== X-Gm-Message-State: AOAM531SmdxIeeZcVZyN/5LRZqpw/QVfmtBu2SRgyFSfdYAwkkCyhOzN fb4gUZs9f1vI8JgMPuSvkRBtwNtKEb+hL5PCKvEko7LKXkSFcpq/QlJ3fz+uspXQL7QTO0EkL4e 1LYkq0hbC2xZtucHi5pLbXi7ypks6zok+YOxpl9dezLjK+Gmk8SVD7G38ZOk1j/cIszJgOA== X-Google-Smtp-Source: ABdhPJzS8MUJHASK8RpsrldDPQRGh13Gd4OuNOZd0cOZ4sG4byqgvHPaDLBhETjHTHVf6qRfceUXJKAyub4= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a05:6a00:198b:b0:4f4:22f3:2fbb with SMTP id d11-20020a056a00198b00b004f422f32fbbmr8370157pfl.20.1646977871926; Thu, 10 Mar 2022 21:51:11 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:14 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-4-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 003/105] KVM: selftest: Add another underscore to inner ioctl helpers From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/aarch64/get-reg-list.c | 6 ++--- .../testing/selftests/kvm/aarch64/vgic_init.c | 2 +- .../selftests/kvm/include/kvm_util_base.h | 8 +++---- tools/testing/selftests/kvm/lib/kvm_util.c | 24 +++++++++---------- .../selftests/kvm/lib/riscv/processor.c | 2 +- tools/testing/selftests/kvm/s390x/memop.c | 14 +++++------ tools/testing/selftests/kvm/s390x/resets.c | 4 ++-- tools/testing/selftests/kvm/steal_time.c | 6 ++--- .../selftests/kvm/x86_64/hyperv_cpuid.c | 4 ++-- .../selftests/kvm/x86_64/set_boot_cpu_id.c | 6 ++--- .../kvm/x86_64/vmx_nested_tsc_scaling_test.c | 2 +- 11 files changed, 39 insertions(+), 39 deletions(-) diff --git a/tools/testing/selftests/kvm/aarch64/get-reg-list.c b/tools/tes= ting/selftests/kvm/aarch64/get-reg-list.c index 336de3e574d0..422f9a4792ba 100644 --- a/tools/testing/selftests/kvm/aarch64/get-reg-list.c +++ b/tools/testing/selftests/kvm/aarch64/get-reg-list.c @@ -452,7 +452,7 @@ static void run_test(struct vcpu_config *c) bool reject_reg =3D false; int ret; =20 - ret =3D _vcpu_ioctl(vm, 0, KVM_GET_ONE_REG, ®); + ret =3D __vcpu_ioctl(vm, 0, KVM_GET_ONE_REG, ®); if (ret) { printf("%s: Failed to get ", config_name(c)); print_reg(c, reg.id); @@ -464,7 +464,7 @@ static void run_test(struct vcpu_config *c) for_each_sublist(c, s) { if (s->rejects_set && find_reg(s->rejects_set, s->rejects_set_n, reg.id= )) { reject_reg =3D true; - ret =3D _vcpu_ioctl(vm, 0, KVM_SET_ONE_REG, ®); + ret =3D __vcpu_ioctl(vm, 0, KVM_SET_ONE_REG, ®); if (ret !=3D -1 || errno !=3D EPERM) { printf("%s: Failed to reject (ret=3D%d, errno=3D%d) ", config_name(c)= , ret, errno); print_reg(c, reg.id); @@ -476,7 +476,7 @@ static void run_test(struct vcpu_config *c) } =20 if (!reject_reg) { - ret =3D _vcpu_ioctl(vm, 0, KVM_SET_ONE_REG, ®); + ret =3D __vcpu_ioctl(vm, 0, KVM_SET_ONE_REG, ®); if (ret) { printf("%s: Failed to set ", config_name(c)); print_reg(c, reg.id); diff --git a/tools/testing/selftests/kvm/aarch64/vgic_init.c b/tools/testin= g/selftests/kvm/aarch64/vgic_init.c index 0f046e3e953d..373c8005c2e7 100644 --- a/tools/testing/selftests/kvm/aarch64/vgic_init.c +++ b/tools/testing/selftests/kvm/aarch64/vgic_init.c @@ -55,7 +55,7 @@ static void guest_code(void) static int run_vcpu(struct kvm_vm *vm, uint32_t vcpuid) { ucall_init(vm, NULL); - int ret =3D _vcpu_ioctl(vm, vcpuid, KVM_RUN, NULL); + int ret =3D __vcpu_ioctl(vm, vcpuid, KVM_RUN, NULL); if (ret) return -errno; return 0; diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/te= sting/selftests/kvm/include/kvm_util_base.h index bbc66442f91f..77aaac4d344e 100644 --- a/tools/testing/selftests/kvm/include/kvm_util_base.h +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h @@ -154,12 +154,12 @@ void vm_userspace_mem_region_add(struct kvm_vm *vm, =20 void vcpu_ioctl(struct kvm_vm *vm, uint32_t vcpuid, unsigned long ioctl, void *arg); -int _vcpu_ioctl(struct kvm_vm *vm, uint32_t vcpuid, unsigned long ioctl, - void *arg); +int __vcpu_ioctl(struct kvm_vm *vm, uint32_t vcpuid, unsigned long ioctl, + void *arg); void vm_ioctl(struct kvm_vm *vm, unsigned long ioctl, void *arg); -int _vm_ioctl(struct kvm_vm *vm, unsigned long cmd, void *arg); +int __vm_ioctl(struct kvm_vm *vm, unsigned long cmd, void *arg); void kvm_ioctl(struct kvm_vm *vm, unsigned long ioctl, void *arg); -int _kvm_ioctl(struct kvm_vm *vm, unsigned long ioctl, void *arg); +int __kvm_ioctl(struct kvm_vm *vm, unsigned long ioctl, void *arg); void vm_mem_region_set_flags(struct kvm_vm *vm, uint32_t slot, uint32_t fl= ags); void vm_mem_region_move(struct kvm_vm *vm, uint32_t slot, uint64_t new_gpa= ); void vm_mem_region_delete(struct kvm_vm *vm, uint32_t slot); diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index 3e9654e65a67..6f515333abe0 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -1680,7 +1680,7 @@ struct kvm_reg_list *vcpu_get_reg_list(struct kvm_vm = *vm, uint32_t vcpuid) struct kvm_reg_list reg_list_n =3D { .n =3D 0 }, *reg_list; int ret; =20 - ret =3D _vcpu_ioctl(vm, vcpuid, KVM_GET_REG_LIST, ®_list_n); + ret =3D __vcpu_ioctl(vm, vcpuid, KVM_GET_REG_LIST, ®_list_n); TEST_ASSERT(ret =3D=3D -1 && errno =3D=3D E2BIG, "KVM_GET_REG_LIST n=3D0"= ); reg_list =3D calloc(1, sizeof(*reg_list) + reg_list_n.n * sizeof(__u64)); reg_list->n =3D reg_list_n.n; @@ -1866,7 +1866,7 @@ void vcpu_fpu_get(struct kvm_vm *vm, uint32_t vcpuid,= struct kvm_fpu *fpu) { int ret; =20 - ret =3D _vcpu_ioctl(vm, vcpuid, KVM_GET_FPU, fpu); + ret =3D __vcpu_ioctl(vm, vcpuid, KVM_GET_FPU, fpu); TEST_ASSERT(ret =3D=3D 0, "KVM_GET_FPU failed, rc: %i errno: %i (%s)", ret, errno, strerror(errno)); } @@ -1875,7 +1875,7 @@ void vcpu_fpu_set(struct kvm_vm *vm, uint32_t vcpuid,= struct kvm_fpu *fpu) { int ret; =20 - ret =3D _vcpu_ioctl(vm, vcpuid, KVM_SET_FPU, fpu); + ret =3D __vcpu_ioctl(vm, vcpuid, KVM_SET_FPU, fpu); TEST_ASSERT(ret =3D=3D 0, "KVM_SET_FPU failed, rc: %i errno: %i (%s)", ret, errno, strerror(errno)); } @@ -1884,7 +1884,7 @@ void vcpu_get_reg(struct kvm_vm *vm, uint32_t vcpuid,= struct kvm_one_reg *reg) { int ret; =20 - ret =3D _vcpu_ioctl(vm, vcpuid, KVM_GET_ONE_REG, reg); + ret =3D __vcpu_ioctl(vm, vcpuid, KVM_GET_ONE_REG, reg); TEST_ASSERT(ret =3D=3D 0, "KVM_GET_ONE_REG failed, rc: %i errno: %i (%s)", ret, errno, strerror(errno)); } @@ -1893,7 +1893,7 @@ void vcpu_set_reg(struct kvm_vm *vm, uint32_t vcpuid,= struct kvm_one_reg *reg) { int ret; =20 - ret =3D _vcpu_ioctl(vm, vcpuid, KVM_SET_ONE_REG, reg); + ret =3D __vcpu_ioctl(vm, vcpuid, KVM_SET_ONE_REG, reg); TEST_ASSERT(ret =3D=3D 0, "KVM_SET_ONE_REG failed, rc: %i errno: %i (%s)", ret, errno, strerror(errno)); } @@ -1916,13 +1916,13 @@ void vcpu_ioctl(struct kvm_vm *vm, uint32_t vcpuid, { int ret; =20 - ret =3D _vcpu_ioctl(vm, vcpuid, cmd, arg); + ret =3D __vcpu_ioctl(vm, vcpuid, cmd, arg); TEST_ASSERT(ret =3D=3D 0, "vcpu ioctl %lu failed, rc: %i errno: %i (%s)", cmd, ret, errno, strerror(errno)); } =20 -int _vcpu_ioctl(struct kvm_vm *vm, uint32_t vcpuid, - unsigned long cmd, void *arg) +int __vcpu_ioctl(struct kvm_vm *vm, uint32_t vcpuid, + unsigned long cmd, void *arg) { struct vcpu *vcpu =3D vcpu_find(vm, vcpuid); int ret; @@ -1986,12 +1986,12 @@ void vm_ioctl(struct kvm_vm *vm, unsigned long cmd,= void *arg) { int ret; =20 - ret =3D _vm_ioctl(vm, cmd, arg); + ret =3D __vm_ioctl(vm, cmd, arg); TEST_ASSERT(ret =3D=3D 0, "vm ioctl %lu failed, rc: %i errno: %i (%s)", cmd, ret, errno, strerror(errno)); } =20 -int _vm_ioctl(struct kvm_vm *vm, unsigned long cmd, void *arg) +int __vm_ioctl(struct kvm_vm *vm, unsigned long cmd, void *arg) { return ioctl(vm->fd, cmd, arg); } @@ -2017,7 +2017,7 @@ void kvm_ioctl(struct kvm_vm *vm, unsigned long cmd, = void *arg) cmd, ret, errno, strerror(errno)); } =20 -int _kvm_ioctl(struct kvm_vm *vm, unsigned long cmd, void *arg) +int __kvm_ioctl(struct kvm_vm *vm, unsigned long cmd, void *arg) { return ioctl(vm->kvm_fd, cmd, arg); } @@ -2146,7 +2146,7 @@ int _kvm_irq_line(struct kvm_vm *vm, uint32_t irq, in= t level) .level =3D level, }; =20 - return _vm_ioctl(vm, KVM_IRQ_LINE, &irq_level); + return __vm_ioctl(vm, KVM_IRQ_LINE, &irq_level); } =20 void kvm_irq_line(struct kvm_vm *vm, uint32_t irq, int level) diff --git a/tools/testing/selftests/kvm/lib/riscv/processor.c b/tools/test= ing/selftests/kvm/lib/riscv/processor.c index d377f2603d98..1a404749094a 100644 --- a/tools/testing/selftests/kvm/lib/riscv/processor.c +++ b/tools/testing/selftests/kvm/lib/riscv/processor.c @@ -294,7 +294,7 @@ void vm_vcpu_add_default(struct kvm_vm *vm, uint32_t vc= puid, void *guest_code) * are powered-on using KVM_SET_MP_STATE ioctl(). */ mps.mp_state =3D KVM_MP_STATE_RUNNABLE; - r =3D _vcpu_ioctl(vm, vcpuid, KVM_SET_MP_STATE, &mps); + r =3D __vcpu_ioctl(vm, vcpuid, KVM_SET_MP_STATE, &mps); TEST_ASSERT(!r, "IOCTL KVM_SET_MP_STATE failed (error %d)", r); =20 /* Setup global pointer of guest to be same as the host */ diff --git a/tools/testing/selftests/kvm/s390x/memop.c b/tools/testing/self= tests/kvm/s390x/memop.c index 9f49ead380ab..460799cc2098 100644 --- a/tools/testing/selftests/kvm/s390x/memop.c +++ b/tools/testing/selftests/kvm/s390x/memop.c @@ -90,7 +90,7 @@ int main(int argc, char *argv[]) ksmo.op =3D KVM_S390_MEMOP_LOGICAL_WRITE; ksmo.buf =3D (uintptr_t)mem1; ksmo.ar =3D 0; - rv =3D _vcpu_ioctl(vm, VCPU_ID, KVM_S390_MEM_OP, &ksmo); + rv =3D __vcpu_ioctl(vm, VCPU_ID, KVM_S390_MEM_OP, &ksmo); TEST_ASSERT(rv =3D=3D -1 && errno =3D=3D E2BIG, "ioctl allows insane size= s"); =20 /* Zero size: */ @@ -100,7 +100,7 @@ int main(int argc, char *argv[]) ksmo.op =3D KVM_S390_MEMOP_LOGICAL_WRITE; ksmo.buf =3D (uintptr_t)mem1; ksmo.ar =3D 0; - rv =3D _vcpu_ioctl(vm, VCPU_ID, KVM_S390_MEM_OP, &ksmo); + rv =3D __vcpu_ioctl(vm, VCPU_ID, KVM_S390_MEM_OP, &ksmo); TEST_ASSERT(rv =3D=3D -1 && (errno =3D=3D EINVAL || errno =3D=3D ENOMEM), "ioctl allows 0 as size"); =20 @@ -111,7 +111,7 @@ int main(int argc, char *argv[]) ksmo.op =3D KVM_S390_MEMOP_LOGICAL_WRITE; ksmo.buf =3D (uintptr_t)mem1; ksmo.ar =3D 0; - rv =3D _vcpu_ioctl(vm, VCPU_ID, KVM_S390_MEM_OP, &ksmo); + rv =3D __vcpu_ioctl(vm, VCPU_ID, KVM_S390_MEM_OP, &ksmo); TEST_ASSERT(rv =3D=3D -1 && errno =3D=3D EINVAL, "ioctl allows all flags"= ); =20 /* Bad operation: */ @@ -121,7 +121,7 @@ int main(int argc, char *argv[]) ksmo.op =3D -1; ksmo.buf =3D (uintptr_t)mem1; ksmo.ar =3D 0; - rv =3D _vcpu_ioctl(vm, VCPU_ID, KVM_S390_MEM_OP, &ksmo); + rv =3D __vcpu_ioctl(vm, VCPU_ID, KVM_S390_MEM_OP, &ksmo); TEST_ASSERT(rv =3D=3D -1 && errno =3D=3D EINVAL, "ioctl allows bad operat= ions"); =20 /* Bad guest address: */ @@ -131,7 +131,7 @@ int main(int argc, char *argv[]) ksmo.op =3D KVM_S390_MEMOP_LOGICAL_WRITE; ksmo.buf =3D (uintptr_t)mem1; ksmo.ar =3D 0; - rv =3D _vcpu_ioctl(vm, VCPU_ID, KVM_S390_MEM_OP, &ksmo); + rv =3D __vcpu_ioctl(vm, VCPU_ID, KVM_S390_MEM_OP, &ksmo); TEST_ASSERT(rv > 0, "ioctl does not report bad guest memory access"); =20 /* Bad host address: */ @@ -141,7 +141,7 @@ int main(int argc, char *argv[]) ksmo.op =3D KVM_S390_MEMOP_LOGICAL_WRITE; ksmo.buf =3D 0; ksmo.ar =3D 0; - rv =3D _vcpu_ioctl(vm, VCPU_ID, KVM_S390_MEM_OP, &ksmo); + rv =3D __vcpu_ioctl(vm, VCPU_ID, KVM_S390_MEM_OP, &ksmo); TEST_ASSERT(rv =3D=3D -1 && errno =3D=3D EFAULT, "ioctl does not report bad host memory address"); =20 @@ -155,7 +155,7 @@ int main(int argc, char *argv[]) ksmo.op =3D KVM_S390_MEMOP_LOGICAL_WRITE; ksmo.buf =3D (uintptr_t)mem1; ksmo.ar =3D 17; - rv =3D _vcpu_ioctl(vm, VCPU_ID, KVM_S390_MEM_OP, &ksmo); + rv =3D __vcpu_ioctl(vm, VCPU_ID, KVM_S390_MEM_OP, &ksmo); TEST_ASSERT(rv =3D=3D -1 && errno =3D=3D EINVAL, "ioctl allows ARs > 15"); run->psw_mask &=3D ~(3UL << (63 - 17)); /* Disable AR mode */ vcpu_run(vm, VCPU_ID); /* Run to sync new state */ diff --git a/tools/testing/selftests/kvm/s390x/resets.c b/tools/testing/sel= ftests/kvm/s390x/resets.c index b143db6d8693..cc4b7c86d69f 100644 --- a/tools/testing/selftests/kvm/s390x/resets.c +++ b/tools/testing/selftests/kvm/s390x/resets.c @@ -76,7 +76,7 @@ static void assert_noirq(void) =20 irq_state.len =3D sizeof(buf); irq_state.buf =3D (unsigned long)buf; - irqs =3D _vcpu_ioctl(vm, VCPU_ID, KVM_S390_GET_IRQ_STATE, &irq_state); + irqs =3D __vcpu_ioctl(vm, VCPU_ID, KVM_S390_GET_IRQ_STATE, &irq_state); /* * irqs contains the number of retrieved interrupts. Any interrupt * (notably, the emergency call interrupt we have injected) should @@ -196,7 +196,7 @@ static void inject_irq(int cpu_id) irq_state.buf =3D (unsigned long)buf; irq->type =3D KVM_S390_INT_EMERGENCY; irq->u.emerg.code =3D cpu_id; - irqs =3D _vcpu_ioctl(vm, cpu_id, KVM_S390_SET_IRQ_STATE, &irq_state); + irqs =3D __vcpu_ioctl(vm, cpu_id, KVM_S390_SET_IRQ_STATE, &irq_state); TEST_ASSERT(irqs >=3D 0, "Error injecting EMERGENCY IRQ errno %d\n", errn= o); } =20 diff --git a/tools/testing/selftests/kvm/steal_time.c b/tools/testing/selft= ests/kvm/steal_time.c index 62f2eb9ee3d5..1d6a91a53eae 100644 --- a/tools/testing/selftests/kvm/steal_time.c +++ b/tools/testing/selftests/kvm/steal_time.c @@ -173,7 +173,7 @@ static void steal_time_init(struct kvm_vm *vm) }; int i, ret; =20 - ret =3D _vcpu_ioctl(vm, 0, KVM_HAS_DEVICE_ATTR, &dev); + ret =3D __vcpu_ioctl(vm, 0, KVM_HAS_DEVICE_ATTR, &dev); if (ret !=3D 0 && errno =3D=3D ENXIO) { print_skip("steal-time not supported"); exit(KSFT_SKIP); @@ -191,13 +191,13 @@ static void steal_time_init(struct kvm_vm *vm) sync_global_to_guest(vm, st_gva[i]); =20 st_ipa =3D (ulong)st_gva[i] | 1; - ret =3D _vcpu_ioctl(vm, i, KVM_SET_DEVICE_ATTR, &dev); + ret =3D __vcpu_ioctl(vm, i, KVM_SET_DEVICE_ATTR, &dev); TEST_ASSERT(ret =3D=3D -1 && errno =3D=3D EINVAL, "Bad IPA didn't report= EINVAL"); =20 st_ipa =3D (ulong)st_gva[i]; vcpu_ioctl(vm, i, KVM_SET_DEVICE_ATTR, &dev); =20 - ret =3D _vcpu_ioctl(vm, i, KVM_SET_DEVICE_ATTR, &dev); + ret =3D __vcpu_ioctl(vm, i, KVM_SET_DEVICE_ATTR, &dev); TEST_ASSERT(ret =3D=3D -1 && errno =3D=3D EEXIST, "Set IPA twice without= EEXIST"); =20 } diff --git a/tools/testing/selftests/kvm/x86_64/hyperv_cpuid.c b/tools/test= ing/selftests/kvm/x86_64/hyperv_cpuid.c index 8c245ab2d98a..7e45a3df8f98 100644 --- a/tools/testing/selftests/kvm/x86_64/hyperv_cpuid.c +++ b/tools/testing/selftests/kvm/x86_64/hyperv_cpuid.c @@ -121,9 +121,9 @@ void test_hv_cpuid_e2big(struct kvm_vm *vm, bool system) int ret; =20 if (!system) - ret =3D _vcpu_ioctl(vm, VCPU_ID, KVM_GET_SUPPORTED_HV_CPUID, &cpuid); + ret =3D __vcpu_ioctl(vm, VCPU_ID, KVM_GET_SUPPORTED_HV_CPUID, &cpuid); else - ret =3D _kvm_ioctl(vm, KVM_GET_SUPPORTED_HV_CPUID, &cpuid); + ret =3D __kvm_ioctl(vm, KVM_GET_SUPPORTED_HV_CPUID, &cpuid); =20 TEST_ASSERT(ret =3D=3D -1 && errno =3D=3D E2BIG, "%s KVM_GET_SUPPORTED_HV_CPUID didn't fail with -E2BIG when" diff --git a/tools/testing/selftests/kvm/x86_64/set_boot_cpu_id.c b/tools/t= esting/selftests/kvm/x86_64/set_boot_cpu_id.c index 2fe893ccedd0..ee3d058a9fe1 100644 --- a/tools/testing/selftests/kvm/x86_64/set_boot_cpu_id.c +++ b/tools/testing/selftests/kvm/x86_64/set_boot_cpu_id.c @@ -42,7 +42,7 @@ static void test_set_boot_busy(struct kvm_vm *vm) { int res; =20 - res =3D _vm_ioctl(vm, KVM_SET_BOOT_CPU_ID, (void *) VCPU_ID0); + res =3D __vm_ioctl(vm, KVM_SET_BOOT_CPU_ID, (void *) VCPU_ID0); TEST_ASSERT(res =3D=3D -1 && errno =3D=3D EBUSY, "KVM_SET_BOOT_CPU_ID set while running vm"); } @@ -133,13 +133,13 @@ static void check_set_bsp_busy(void) add_x86_vcpu(vm, VCPU_ID0, true); add_x86_vcpu(vm, VCPU_ID1, false); =20 - res =3D _vm_ioctl(vm, KVM_SET_BOOT_CPU_ID, (void *) VCPU_ID1); + res =3D __vm_ioctl(vm, KVM_SET_BOOT_CPU_ID, (void *) VCPU_ID1); TEST_ASSERT(res =3D=3D -1 && errno =3D=3D EBUSY, "KVM_SET_BOOT_CPU_ID set= after adding vcpu"); =20 run_vcpu(vm, VCPU_ID0); run_vcpu(vm, VCPU_ID1); =20 - res =3D _vm_ioctl(vm, KVM_SET_BOOT_CPU_ID, (void *) VCPU_ID1); + res =3D __vm_ioctl(vm, KVM_SET_BOOT_CPU_ID, (void *) VCPU_ID1); TEST_ASSERT(res =3D=3D -1 && errno =3D=3D EBUSY, "KVM_SET_BOOT_CPU_ID set= to a terminated vcpu"); =20 kvm_vm_free(vm); diff --git a/tools/testing/selftests/kvm/x86_64/vmx_nested_tsc_scaling_test= .c b/tools/testing/selftests/kvm/x86_64/vmx_nested_tsc_scaling_test.c index 280c01fd2412..c35ada9f7f9c 100644 --- a/tools/testing/selftests/kvm/x86_64/vmx_nested_tsc_scaling_test.c +++ b/tools/testing/selftests/kvm/x86_64/vmx_nested_tsc_scaling_test.c @@ -186,7 +186,7 @@ int main(int argc, char *argv[]) vcpu_alloc_vmx(vm, &vmx_pages_gva); vcpu_args_set(vm, VCPU_ID, 1, vmx_pages_gva); =20 - tsc_khz =3D _vcpu_ioctl(vm, VCPU_ID, KVM_GET_TSC_KHZ, NULL); + tsc_khz =3D __vcpu_ioctl(vm, VCPU_ID, KVM_GET_TSC_KHZ, NULL); TEST_ASSERT(tsc_khz !=3D -1, "vcpu ioctl KVM_GET_TSC_KHZ failed"); =20 /* scale down L1's TSC frequency */ --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 A4122C433F5 for ; Fri, 11 Mar 2022 05:51:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346578AbiCKFwf (ORCPT ); Fri, 11 Mar 2022 00:52:35 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54388 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346534AbiCKFwQ (ORCPT ); Fri, 11 Mar 2022 00:52: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 E7A59ED94F for ; Thu, 10 Mar 2022 21:51:13 -0800 (PST) Received: by mail-pg1-x54a.google.com with SMTP id h12-20020a63530c000000b0037c8f45bf1bso4234654pgb.7 for ; Thu, 10 Mar 2022 21:51:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=OGdeptO7GDLnSXzyDOFVHXNsC4c15uqK/LE1tOkpfmU=; b=nVV1f4vOqOQ6LkkTLgIp1v/U7+YVR4vCaUcitzqAj2VPCGFry8haznr5aq/oNfwSzD lw8l7HuSlPBKXFGvrKQ7zrpUJF0I3ABv4k9/Fro/uDxdXMQoSALr0R+Y6mgosFFwjJyN KnRPzW2iUi7RjS6KiahtlXXHRFvN+/dtEpQV1EeZM7eS50I7ZtCQ03XWJZ+Xr+uF32QO hDq68lRTTKUx+oF9CkApTK6R8DzeDSNimlAe5vrB9t5FxRxozPVgUqpqm3QhtM4p9Jk9 zqpj+qu9F4mpNvrGHjX5KoWhwHSq48GWBmXME48YaO/+65PbXjX8XITRl4xbGl9GBCyN N8Fw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=OGdeptO7GDLnSXzyDOFVHXNsC4c15uqK/LE1tOkpfmU=; b=6851wgdpVres2kt+yYBuZHRhTzAWSc8NcUWgZJWiYa9lHHeMtiz2Q4P3gDL9+6HNJC ArviDRnzK8c0T+J64C2A7vW1WIV1p3BK3YLadbP64oY6t/FcR/3fj2d3+sHCotes2f5D Wl56s/SUbNuVljdMikiHd5Pjfz9h6Ec1mnvMlVClys7O9R+fBE6Pwtyy+neeBOVdMj5m GsU/MBvzlhCKrtOeDPmgFdwt3IWJiX8g2i1FJcUpQRFknI5VmVjCRdRX1+NiV1ogeSEc dr5Ok3SSQMRGiUh6ouuZ2xo1zllA4kXzCgRtzzfKI2p7uWbntEcKB04yjJ5l06KhyJhw d1+A== X-Gm-Message-State: AOAM532TIl/N2d1v51j/EqB7J3LU+qcsqtyCix3KHR4AxabH6ZR/rNvk CWNyBAQaaVpnTLu9lWgUl+ljoVFrhek1+XVIZFvlaASUnnTyP3HEVP38Zxc0M9zdIt8HTaXfv5c JoOxwmz+JAOvGEajKTN++ioI3EYnVguaSeOC/2vP1Q2FStDMgV631ZtXwLHn/3RrR7qlvSg== X-Google-Smtp-Source: ABdhPJxNasJKZcvVk8lhnCtbgrZg1mXpU7HT/blAC83f0jJvgcsihlc/lOrTRiJXtS2cjYHIj0W/EHGQUFk= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:902:ee95:b0:151:8518:9f49 with SMTP id a21-20020a170902ee9500b0015185189f49mr8653226pld.1.1646977873268; Thu, 10 Mar 2022 21:51:13 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:15 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-5-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 004/105] KVM: selftests: Make vcpu_ioctl() a wrapper to pretty print ioctl name From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Deliberately do not use __stringify(), as that will expand the ioctl all the way down to its numerical sequence, the intent is print the name of the macro. Signed-off-by: Sean Christopherson --- .../selftests/kvm/include/kvm_util_base.h | 12 +++++-- tools/testing/selftests/kvm/lib/kvm_util.c | 31 +++++-------------- 2 files changed, 18 insertions(+), 25 deletions(-) diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/te= sting/selftests/kvm/include/kvm_util_base.h index 77aaac4d344e..28440c12ffbc 100644 --- a/tools/testing/selftests/kvm/include/kvm_util_base.h +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h @@ -152,10 +152,18 @@ void vm_userspace_mem_region_add(struct kvm_vm *vm, uint64_t guest_paddr, uint32_t slot, uint64_t npages, uint32_t flags); =20 -void vcpu_ioctl(struct kvm_vm *vm, uint32_t vcpuid, unsigned long ioctl, - void *arg); +#define __KVM_IOCTL_ERROR(_name, _ret) \ + "%s failed, rc: %i errno: %i (%s)", (_name), (_ret), errno, strerror(errn= o) + +#define KVM_IOCTL_ERROR(_ioctl, _ret) __KVM_IOCTL_ERROR(#_ioctl, _ret) + +void _vcpu_ioctl(struct kvm_vm *vm, uint32_t vcpuid, unsigned long ioctl, + const char *name, void *arg); int __vcpu_ioctl(struct kvm_vm *vm, uint32_t vcpuid, unsigned long ioctl, void *arg); +#define vcpu_ioctl(vm, vcpuid, ioctl, arg) \ + _vcpu_ioctl(vm, vcpuid, ioctl, #ioctl, arg) + void vm_ioctl(struct kvm_vm *vm, unsigned long ioctl, void *arg); int __vm_ioctl(struct kvm_vm *vm, unsigned long cmd, void *arg); void kvm_ioctl(struct kvm_vm *vm, unsigned long ioctl, void *arg); diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index 6f515333abe0..a6675d9aa7d9 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -1898,29 +1898,6 @@ void vcpu_set_reg(struct kvm_vm *vm, uint32_t vcpuid= , struct kvm_one_reg *reg) ret, errno, strerror(errno)); } =20 -/* - * VCPU Ioctl - * - * Input Args: - * vm - Virtual Machine - * vcpuid - VCPU ID - * cmd - Ioctl number - * arg - Argument to pass to the ioctl - * - * Return: None - * - * Issues an arbitrary ioctl on a VCPU fd. - */ -void vcpu_ioctl(struct kvm_vm *vm, uint32_t vcpuid, - unsigned long cmd, void *arg) -{ - int ret; - - ret =3D __vcpu_ioctl(vm, vcpuid, cmd, arg); - TEST_ASSERT(ret =3D=3D 0, "vcpu ioctl %lu failed, rc: %i errno: %i (%s)", - cmd, ret, errno, strerror(errno)); -} - int __vcpu_ioctl(struct kvm_vm *vm, uint32_t vcpuid, unsigned long cmd, void *arg) { @@ -1934,6 +1911,14 @@ int __vcpu_ioctl(struct kvm_vm *vm, uint32_t vcpuid, return ret; } =20 +void _vcpu_ioctl(struct kvm_vm *vm, uint32_t vcpuid, unsigned long cmd, + const char *name, void *arg) +{ + int ret =3D __vcpu_ioctl(vm, vcpuid, cmd, arg); + + TEST_ASSERT(!ret, __KVM_IOCTL_ERROR(name, ret)); +} + void *vcpu_map_dirty_ring(struct kvm_vm *vm, uint32_t vcpuid) { struct vcpu *vcpu; --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 AB8FEC433EF for ; Fri, 11 Mar 2022 05:51:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346556AbiCKFwk (ORCPT ); Fri, 11 Mar 2022 00:52:40 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54536 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346536AbiCKFwS (ORCPT ); Fri, 11 Mar 2022 00:52:18 -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 6A8B0ED95A for ; Thu, 10 Mar 2022 21:51:15 -0800 (PST) Received: by mail-pl1-x649.google.com with SMTP id b4-20020a170902a9c400b001532ec9005aso1216345plr.10 for ; Thu, 10 Mar 2022 21:51:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=dX7IuUZw3sw8TOh4qDkLh9p0JgbEeFWnKwYZjGvVjNg=; b=jLWAgMsErc0SGwO5i8qarX1TgIKs4j6J4ki1EaJaMJxeMKQp/giyZ274gZ1D98H7N8 GXhBPpQY7cIFlkgorWdcZxdvil29szmb/PEbYTZJtFaPpkBLsUptviUMAlJV0Sq3oJOV fIoPG+2wJUGyBqqKAJR9HIkNq4/8v2u0T8L/ocAoZjOZE+IaNHZvek5H0rMH8cNI2Dpn U/yoUH3lIddfniVNlMbYdlC/3+ygeFRWL4mvHbJrzzn/PxHV2tUEldZ5hgzgePutLKh3 kOQtzkuIBqWmomlFZz5gUeOsTSfaL1OrqNkZoXgcVvg24nM+Nljub9e/Dtbf969jYtQv pi8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=dX7IuUZw3sw8TOh4qDkLh9p0JgbEeFWnKwYZjGvVjNg=; b=BpMWdi06kqskBPLg51qwZ70Z3yybHrC28McMw0jTLcVyvBrEe0GU9VURttT/g3Xe4W 39zuZzB5AgtksqSkEQXMV3P4SdoS2fIOwH6vsVDL655tOzC2WP127kdRm5WoHiJgIhyZ AbU0E9CKM7olrV4s15wHGJaa29hhkBQLQYz9r8HnbFdEAyV7VmZSYO9CweH3uUPGFdXT 1hsyWVdGKI/74OmmSxajXwnj5YdIOEO1RGz2CQfw4V9zjo1lhK9YsNyJiXSx/GrPR+L/ M1Fuh3u9HsTag9H/4dCXt6A5riESXWzZA2ZMLzSp/gmc1p5jHtmQDiI937Llx92QWa5A ctHQ== X-Gm-Message-State: AOAM531Uwks4P4o/CErGr+3kPe6sBOxNsRl1G+Xbs8SvvcxFsaOwN8EB h9izQa/lAaiPPnZOIwK1jcXPUQfhp9hEVU1kP4oBXYXmJE38jPqN6stdgRFgI8TOG3Y7qcSrAzA 1blkfSP1TAcetuTs7BNsS3fu7T8SllBolXAIMObm8nTVTEvJ3rZQY0V6HeuF74eeAQ5ydhw== X-Google-Smtp-Source: ABdhPJwuUH5C2NRX0M1Aq3JUBX1L1t2NtpPLPeYUPzVqWbMH9PlDrsGuOQ1y7pxdiWHj1jQT27xf/CTevUg= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:90a:8987:b0:1be:dde1:c672 with SMTP id v7-20020a17090a898700b001bedde1c672mr9066734pjn.208.1646977874873; Thu, 10 Mar 2022 21:51:14 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:16 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-6-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 005/105] KVM: selftests: Drop @mode from common vm_create() helper From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/aarch64/get-reg-list.c | 2 +- .../selftests/kvm/aarch64/psci_cpu_on_test.c | 2 +- tools/testing/selftests/kvm/dirty_log_test.c | 2 +- .../selftests/kvm/hardware_disable_test.c | 2 +- .../selftests/kvm/include/kvm_util_base.h | 3 +- .../selftests/kvm/kvm_binary_stats_test.c | 3 +- .../selftests/kvm/kvm_create_max_vcpus.c | 2 +- tools/testing/selftests/kvm/lib/kvm_util.c | 43 ++++++++++--------- .../selftests/kvm/set_memory_region_test.c | 4 +- .../selftests/kvm/x86_64/set_boot_cpu_id.c | 2 +- .../selftests/kvm/x86_64/set_sregs_test.c | 2 +- .../selftests/kvm/x86_64/sev_migrate_tests.c | 8 ++-- 12 files changed, 39 insertions(+), 36 deletions(-) diff --git a/tools/testing/selftests/kvm/aarch64/get-reg-list.c b/tools/tes= ting/selftests/kvm/aarch64/get-reg-list.c index 422f9a4792ba..0cbee268c953 100644 --- a/tools/testing/selftests/kvm/aarch64/get-reg-list.c +++ b/tools/testing/selftests/kvm/aarch64/get-reg-list.c @@ -411,7 +411,7 @@ static void run_test(struct vcpu_config *c) =20 check_supported(c); =20 - vm =3D vm_create(VM_MODE_DEFAULT, DEFAULT_GUEST_PHY_PAGES); + vm =3D vm_create(DEFAULT_GUEST_PHY_PAGES); prepare_vcpu_init(c, &init); aarch64_vcpu_add_default(vm, 0, &init, NULL); finalize_vcpu(vm, 0, c); diff --git a/tools/testing/selftests/kvm/aarch64/psci_cpu_on_test.c b/tools= /testing/selftests/kvm/aarch64/psci_cpu_on_test.c index 15f4b3544ee5..bde7bae20a6e 100644 --- a/tools/testing/selftests/kvm/aarch64/psci_cpu_on_test.c +++ b/tools/testing/selftests/kvm/aarch64/psci_cpu_on_test.c @@ -76,7 +76,7 @@ int main(void) struct kvm_vm *vm; struct ucall uc; =20 - vm =3D vm_create(VM_MODE_DEFAULT, DEFAULT_GUEST_PHY_PAGES); + vm =3D vm_create(DEFAULT_GUEST_PHY_PAGES); kvm_vm_elf_load(vm, program_invocation_name); ucall_init(vm, NULL); =20 diff --git a/tools/testing/selftests/kvm/dirty_log_test.c b/tools/testing/s= elftests/kvm/dirty_log_test.c index 11bf606e3165..01c01d40201f 100644 --- a/tools/testing/selftests/kvm/dirty_log_test.c +++ b/tools/testing/selftests/kvm/dirty_log_test.c @@ -679,7 +679,7 @@ static struct kvm_vm *create_vm(enum vm_guest_mode mode= , uint32_t vcpuid, =20 pr_info("Testing guest mode: %s\n", vm_guest_mode_string(mode)); =20 - vm =3D vm_create(mode, DEFAULT_GUEST_PHY_PAGES + extra_pg_pages); + vm =3D __vm_create(mode, DEFAULT_GUEST_PHY_PAGES + extra_pg_pages); kvm_vm_elf_load(vm, program_invocation_name); #ifdef __x86_64__ vm_create_irqchip(vm); diff --git a/tools/testing/selftests/kvm/hardware_disable_test.c b/tools/te= sting/selftests/kvm/hardware_disable_test.c index 1c9e2295c75b..81ba8645772a 100644 --- a/tools/testing/selftests/kvm/hardware_disable_test.c +++ b/tools/testing/selftests/kvm/hardware_disable_test.c @@ -104,7 +104,7 @@ static void run_test(uint32_t run) for (i =3D 0; i < VCPU_NUM; i++) CPU_SET(i, &cpu_set); =20 - vm =3D vm_create(VM_MODE_DEFAULT, DEFAULT_GUEST_PHY_PAGES); + vm =3D vm_create(DEFAULT_GUEST_PHY_PAGES); kvm_vm_elf_load(vm, program_invocation_name); vm_create_irqchip(vm); =20 diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/te= sting/selftests/kvm/include/kvm_util_base.h index 28440c12ffbc..c29606be1268 100644 --- a/tools/testing/selftests/kvm/include/kvm_util_base.h +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h @@ -110,7 +110,8 @@ int vcpu_enable_cap(struct kvm_vm *vm, uint32_t vcpu_id, void vm_enable_dirty_ring(struct kvm_vm *vm, uint32_t ring_size); const char *vm_guest_mode_string(uint32_t i); =20 -struct kvm_vm *vm_create(enum vm_guest_mode mode, uint64_t phy_pages); +struct kvm_vm *__vm_create(enum vm_guest_mode mode, uint64_t phy_pages); +struct kvm_vm *vm_create(uint64_t phy_pages); void kvm_vm_free(struct kvm_vm *vmp); void kvm_vm_restart(struct kvm_vm *vmp); void kvm_vm_release(struct kvm_vm *vmp); diff --git a/tools/testing/selftests/kvm/kvm_binary_stats_test.c b/tools/te= sting/selftests/kvm/kvm_binary_stats_test.c index 6217f4630e6c..4b149b383678 100644 --- a/tools/testing/selftests/kvm/kvm_binary_stats_test.c +++ b/tools/testing/selftests/kvm/kvm_binary_stats_test.c @@ -229,8 +229,7 @@ int main(int argc, char *argv[]) vms =3D malloc(sizeof(vms[0]) * max_vm); TEST_ASSERT(vms, "Allocate memory for storing VM pointers"); for (i =3D 0; i < max_vm; ++i) { - vms[i] =3D vm_create(VM_MODE_DEFAULT, - DEFAULT_GUEST_PHY_PAGES); + vms[i] =3D vm_create(DEFAULT_GUEST_PHY_PAGES); for (j =3D 0; j < max_vcpu; ++j) vm_vcpu_add(vms[i], j); } diff --git a/tools/testing/selftests/kvm/kvm_create_max_vcpus.c b/tools/tes= ting/selftests/kvm/kvm_create_max_vcpus.c index bb69b75eac23..9de5e1376c49 100644 --- a/tools/testing/selftests/kvm/kvm_create_max_vcpus.c +++ b/tools/testing/selftests/kvm/kvm_create_max_vcpus.c @@ -28,7 +28,7 @@ void test_vcpu_creation(int first_vcpu_id, int num_vcpus) pr_info("Testing creating %d vCPUs, with IDs %d...%d.\n", num_vcpus, first_vcpu_id, first_vcpu_id + num_vcpus - 1); =20 - vm =3D vm_create(VM_MODE_DEFAULT, DEFAULT_GUEST_PHY_PAGES); + vm =3D vm_create(DEFAULT_GUEST_PHY_PAGES); =20 for (i =3D first_vcpu_id; i < first_vcpu_id + num_vcpus; i++) /* This asserts that the vCPU was created. */ diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index a6675d9aa7d9..03178004a6c3 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -234,25 +234,7 @@ const struct vm_guest_mode_params vm_guest_mode_params= [] =3D { _Static_assert(sizeof(vm_guest_mode_params)/sizeof(struct vm_guest_mode_pa= rams) =3D=3D NUM_VM_MODES, "Missing new mode params?"); =20 -/* - * VM Create - * - * Input Args: - * mode - VM Mode (e.g. VM_MODE_P52V48_4K) - * phy_pages - Physical memory pages - * - * Output Args: None - * - * Return: - * Pointer to opaque structure that describes the created VM. - * - * Creates a VM with the mode specified by mode (e.g. VM_MODE_P52V48_4K). - * When phy_pages is non-zero, a memory region of phy_pages physical pages - * is created and mapped starting at guest physical address 0. The file - * descriptor to control the created VM is created with the permissions - * given by perm (e.g. O_RDWR). - */ -struct kvm_vm *vm_create(enum vm_guest_mode mode, uint64_t phy_pages) +struct kvm_vm *__vm_create(enum vm_guest_mode mode, uint64_t phy_pages) { struct kvm_vm *vm; =20 @@ -361,6 +343,27 @@ struct kvm_vm *vm_create(enum vm_guest_mode mode, uint= 64_t phy_pages) return vm; } =20 + +/* + * VM Create + * + * Input Args: + * phy_pages - Physical memory pages + * + * Output Args: None + * + * Return: + * Pointer to opaque structure that describes the created VM. + * + * Creates a VM with the default physical/virtual address widths and page = size. + * When phy_pages is non-zero, a memory region of phy_pages physical pages + * is created and mapped starting at guest physical address 0. + */ +struct kvm_vm *vm_create(uint64_t phy_pages) +{ + return __vm_create(VM_MODE_DEFAULT, phy_pages); +} + /* * VM Create with customized parameters * @@ -411,7 +414,7 @@ struct kvm_vm *vm_create_with_vcpus(enum vm_guest_mode = mode, uint32_t nr_vcpus, nr_vcpus, kvm_check_cap(KVM_CAP_MAX_VCPUS)); =20 pages =3D vm_adjust_num_guest_pages(mode, pages); - vm =3D vm_create(mode, pages); + vm =3D __vm_create(mode, pages); =20 kvm_vm_elf_load(vm, program_invocation_name); =20 diff --git a/tools/testing/selftests/kvm/set_memory_region_test.c b/tools/t= esting/selftests/kvm/set_memory_region_test.c index 6a115d8d2fe3..fa4613010091 100644 --- a/tools/testing/selftests/kvm/set_memory_region_test.c +++ b/tools/testing/selftests/kvm/set_memory_region_test.c @@ -314,7 +314,7 @@ static void test_zero_memory_regions(void) =20 pr_info("Testing KVM_RUN with zero added memory regions\n"); =20 - vm =3D vm_create(VM_MODE_DEFAULT, 0); + vm =3D vm_create(0); vm_vcpu_add(vm, VCPU_ID); =20 TEST_ASSERT(!ioctl(vm_get_fd(vm), KVM_SET_NR_MMU_PAGES, 64), @@ -370,7 +370,7 @@ static void test_add_max_memory_regions(void) "KVM_CAP_NR_MEMSLOTS should be greater than 0"); pr_info("Allowed number of memory slots: %i\n", max_mem_slots); =20 - vm =3D vm_create(VM_MODE_DEFAULT, 0); + vm =3D vm_create(0); =20 /* Check it can be added memory slots up to the maximum allowed */ pr_info("Adding slots 0..%i, each memory region with %dK size\n", diff --git a/tools/testing/selftests/kvm/x86_64/set_boot_cpu_id.c b/tools/t= esting/selftests/kvm/x86_64/set_boot_cpu_id.c index ee3d058a9fe1..b4da92ddc1c6 100644 --- a/tools/testing/selftests/kvm/x86_64/set_boot_cpu_id.c +++ b/tools/testing/selftests/kvm/x86_64/set_boot_cpu_id.c @@ -88,7 +88,7 @@ static struct kvm_vm *create_vm(void) uint64_t pages =3D DEFAULT_GUEST_PHY_PAGES + vcpu_pages + extra_pg_pages; =20 pages =3D vm_adjust_num_guest_pages(VM_MODE_DEFAULT, pages); - vm =3D vm_create(VM_MODE_DEFAULT, pages); + vm =3D vm_create(pages); =20 kvm_vm_elf_load(vm, program_invocation_name); vm_create_irqchip(vm); diff --git a/tools/testing/selftests/kvm/x86_64/set_sregs_test.c b/tools/te= sting/selftests/kvm/x86_64/set_sregs_test.c index 44711ab735c3..4dc7fd925023 100644 --- a/tools/testing/selftests/kvm/x86_64/set_sregs_test.c +++ b/tools/testing/selftests/kvm/x86_64/set_sregs_test.c @@ -95,7 +95,7 @@ int main(int argc, char *argv[]) * use it to verify all supported CR4 bits can be set prior to defining * the vCPU model, i.e. without doing KVM_SET_CPUID2. */ - vm =3D vm_create(VM_MODE_DEFAULT, DEFAULT_GUEST_PHY_PAGES); + vm =3D vm_create(DEFAULT_GUEST_PHY_PAGES); vm_vcpu_add(vm, VCPU_ID); =20 vcpu_sregs_get(vm, VCPU_ID, &sregs); diff --git a/tools/testing/selftests/kvm/x86_64/sev_migrate_tests.c b/tools= /testing/selftests/kvm/x86_64/sev_migrate_tests.c index 7729ca60a9d7..d29cf773d7bf 100644 --- a/tools/testing/selftests/kvm/x86_64/sev_migrate_tests.c +++ b/tools/testing/selftests/kvm/x86_64/sev_migrate_tests.c @@ -52,7 +52,7 @@ static struct kvm_vm *sev_vm_create(bool es) struct kvm_sev_launch_start start =3D { 0 }; int i; =20 - vm =3D vm_create(VM_MODE_DEFAULT, 0); + vm =3D vm_create(0); sev_ioctl(vm->fd, es ? KVM_SEV_ES_INIT : KVM_SEV_INIT, NULL); for (i =3D 0; i < NR_MIGRATE_TEST_VCPUS; ++i) vm_vcpu_add(vm, i); @@ -69,7 +69,7 @@ static struct kvm_vm *aux_vm_create(bool with_vcpus) struct kvm_vm *vm; int i; =20 - vm =3D vm_create(VM_MODE_DEFAULT, 0); + vm =3D vm_create(0); if (!with_vcpus) return vm; =20 @@ -174,9 +174,9 @@ static void test_sev_migrate_parameters(void) =20 sev_vm =3D sev_vm_create(/* es=3D */ false); sev_es_vm =3D sev_vm_create(/* es=3D */ true); - vm_no_vcpu =3D vm_create(VM_MODE_DEFAULT, 0); + vm_no_vcpu =3D vm_create(0); vm_no_sev =3D aux_vm_create(true); - sev_es_vm_no_vmsa =3D vm_create(VM_MODE_DEFAULT, 0); + sev_es_vm_no_vmsa =3D vm_create(0); sev_ioctl(sev_es_vm_no_vmsa->fd, KVM_SEV_ES_INIT, NULL); vm_vcpu_add(sev_es_vm_no_vmsa, 1); =20 --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 03B41C433F5 for ; Fri, 11 Mar 2022 05:51:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346568AbiCKFwp (ORCPT ); Fri, 11 Mar 2022 00:52:45 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54662 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346541AbiCKFwU (ORCPT ); Fri, 11 Mar 2022 00:52:20 -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 021F5ECB30 for ; Thu, 10 Mar 2022 21:51:17 -0800 (PST) Received: by mail-pl1-x649.google.com with SMTP id d13-20020a170902b70d00b0015317d9f08bso2687083pls.1 for ; Thu, 10 Mar 2022 21:51:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=+//LVsfWbe87jUmquz/Z+X7CZ4GkPj4POMfX1hZXHjc=; b=J/PhaPb1/f7/9vzeB48d5h7wWcTsMXkMNef9B/X1bIgJf8GNCTGUFekdZ9bElmSk11 4vIrkh7iT58T2Avnwn0MhH4hg0CM8cqAiORgb0XPd6UppjZ1B/WnOjM9aPkVrzk2ndfX UE0FdPS3L1j8DqLzdNLei2dRhI6AjVMdRABwYB8DXXzdL+TZGT04gmjthDoUcAL0/JJc P8G6dPa99swN1nxgpVem2Zk4sCuqKkoQm7Hg1dR/4UtZP0srTw4CmQgMNs31uqCqP/g0 w2XyXFIu85/XrhUcQKWK5tVGQv4bgSMUKrAPEgo3P6CP4pBygCYCAHgpi2B3g09lfDa+ dJdQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=+//LVsfWbe87jUmquz/Z+X7CZ4GkPj4POMfX1hZXHjc=; b=lA+tyCbsf9O7cwHcWIZTDp3ZMpk6z+mE68CXBEsY+ET14GwNuwNQjB1TSHJDJqWZWV LwFBj1hv065DvI5wf9crKMUKwndz1UmgaDhhTtfkHWyzcHD/7RRV0p3C+Hhc77mRLVyL RpopLan6bVBwABvS6Ki2A+fRfTH+Hy/gVfF+hutASxOvMdA3STotBj1cmEgS3Ok1CDuF GVKMhipr44IiOmGxnML/usxNynsGfShNUyKLsm9PeluhNRpVY9bFv0wQ7xShP+/EiWjt +bb+wnSMU6yWKu+HsjAa9NrIdP9G0Pgw6bDG+sW1A6p0MQi1GEod4X38Gc4tJQdO5cPn +8aA== X-Gm-Message-State: AOAM532iYoJZGq2NusbEaqgrZ9RnACHjStBoaOxOhou2tPbBVBj7GIXH nGXK+yHr+b1IzS/440tVECEz+koqQPBCUhwtmjruIM/lVb85zKsbPgO2tc/pyX3/KDgXiF+WLyL w+FTr9+JNV9SlyVI3jxyjiKClw8Wr4U+ptJSCQwlFelrMXWmKNxyxv+vL5phVX/KeX8TFhw== X-Google-Smtp-Source: ABdhPJx1dtQKLL9fkJpRtpHNFAj7PP33Hj8C47vXN77FsCdEaBYiAA79DbbgCKR99fhismp3F8+aTV3Lxag= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a05:6a00:170a:b0:4f7:918a:1eac with SMTP id h10-20020a056a00170a00b004f7918a1eacmr299675pfc.16.1646977876423; Thu, 10 Mar 2022 21:51:16 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:17 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-7-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 006/105] KVM: selftests: Split vcpu_set_nested_state() into two helpers From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/include/kvm_util_base.h | 6 ++++-- tools/testing/selftests/kvm/lib/kvm_util.c | 20 +++++++++---------- .../kvm/x86_64/vmx_set_nested_state_test.c | 4 ++-- 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/te= sting/selftests/kvm/include/kvm_util_base.h index c29606be1268..aab258f17e91 100644 --- a/tools/testing/selftests/kvm/include/kvm_util_base.h +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h @@ -255,8 +255,10 @@ void vcpu_events_set(struct kvm_vm *vm, uint32_t vcpui= d, #ifdef __x86_64__ void vcpu_nested_state_get(struct kvm_vm *vm, uint32_t vcpuid, struct kvm_nested_state *state); -int vcpu_nested_state_set(struct kvm_vm *vm, uint32_t vcpuid, - struct kvm_nested_state *state, bool ignore_error); +int __vcpu_nested_state_set(struct kvm_vm *vm, uint32_t vcpuid, + struct kvm_nested_state *state); +void vcpu_nested_state_set(struct kvm_vm *vm, uint32_t vcpuid, + struct kvm_nested_state *state); #endif void *vcpu_map_dirty_ring(struct kvm_vm *vm, uint32_t vcpuid); =20 diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index 03178004a6c3..8dabea79e394 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -1788,22 +1788,22 @@ void vcpu_nested_state_get(struct kvm_vm *vm, uint3= 2_t vcpuid, ret, errno); } =20 -int vcpu_nested_state_set(struct kvm_vm *vm, uint32_t vcpuid, - struct kvm_nested_state *state, bool ignore_error) +int __vcpu_nested_state_set(struct kvm_vm *vm, uint32_t vcpuid, + struct kvm_nested_state *state) { struct vcpu *vcpu =3D vcpu_find(vm, vcpuid); - int ret; =20 TEST_ASSERT(vcpu !=3D NULL, "vcpu not found, vcpuid: %u", vcpuid); =20 - ret =3D ioctl(vcpu->fd, KVM_SET_NESTED_STATE, state); - if (!ignore_error) { - TEST_ASSERT(ret =3D=3D 0, - "KVM_SET_NESTED_STATE failed, ret: %i errno: %i", - ret, errno); - } + return ioctl(vcpu->fd, KVM_SET_NESTED_STATE, state); +} =20 - return ret; +void vcpu_nested_state_set(struct kvm_vm *vm, uint32_t vcpuid, + struct kvm_nested_state *state) +{ + int ret =3D __vcpu_nested_state_set(vm, vcpuid, state); + + TEST_ASSERT(!ret, "KVM_SET_NESTED_STATE failed, ret: %i errno: %i", ret, = errno); } #endif =20 diff --git a/tools/testing/selftests/kvm/x86_64/vmx_set_nested_state_test.c= b/tools/testing/selftests/kvm/x86_64/vmx_set_nested_state_test.c index 5827b9bae468..af3b60eb35ec 100644 --- a/tools/testing/selftests/kvm/x86_64/vmx_set_nested_state_test.c +++ b/tools/testing/selftests/kvm/x86_64/vmx_set_nested_state_test.c @@ -29,7 +29,7 @@ bool have_evmcs; =20 void test_nested_state(struct kvm_vm *vm, struct kvm_nested_state *state) { - vcpu_nested_state_set(vm, VCPU_ID, state, false); + vcpu_nested_state_set(vm, VCPU_ID, state); } =20 void test_nested_state_expect_errno(struct kvm_vm *vm, @@ -38,7 +38,7 @@ void test_nested_state_expect_errno(struct kvm_vm *vm, { int rv; =20 - rv =3D vcpu_nested_state_set(vm, VCPU_ID, state, true); + rv =3D __vcpu_nested_state_set(vm, VCPU_ID, state); TEST_ASSERT(rv =3D=3D -1 && errno =3D=3D expected_errno, "Expected %s (%d) from vcpu_nested_state_set but got rv: %i errno: %s (%= d)", strerror(expected_errno), expected_errno, rv, strerror(errno), --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 4C2ABC433EF for ; Fri, 11 Mar 2022 05:52:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346618AbiCKFwx (ORCPT ); Fri, 11 Mar 2022 00:52:53 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54760 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346543AbiCKFwW (ORCPT ); Fri, 11 Mar 2022 00:52:22 -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 9D370ECC72 for ; Thu, 10 Mar 2022 21:51:18 -0800 (PST) Received: by mail-pj1-x104a.google.com with SMTP id s12-20020a17090a13cc00b001bee1e1677fso4722912pjf.0 for ; Thu, 10 Mar 2022 21:51:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=LFNHAAPX/kZouSwMoXOBUFgDa9kMaYQcNIefhEVTw0c=; b=hZOQR8NNC7Jc6qPQsx2jRgRv8S3khyQzNleTtHfmHUKmr3aI1+sg0ysZ6XcshjO/cq aBX/GZY6n5t+VCt/fw97UsCU++MjJzKkM+D81d05KlTAlGatL46LrE107o66AJULdBIY Utt+hd8n3pbooLQpSKvuubTpfFaWGK+MnK0WsMDHRGOTuJ9WUrDNav7KyHI4GiHoSTje 2W0bzaAogcmPVqATfj8rzl3xX5wlu9q4t/Jr0YYmSvUeNegIqkxizh7BHTcUkSzSbvZN h+lSc46lZwV4Ys17GiUIlXesXLNLm3DPzFTxwAe8Ph7qHaql43MGVA5mNS63YC73HoQ9 YwWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=LFNHAAPX/kZouSwMoXOBUFgDa9kMaYQcNIefhEVTw0c=; b=GjBKC4tLJ5cfUSjkDBV6MimvmZ0tHz3BRzW6JjmZ+10ukfyayxLzyBGmhZ/+/ZLW+4 ktRDPsk/5B2cPYbBvG1Z5wC392ruwOdo1ylFxTxU2+8X1HP0ifp7ivmJStNuWXXUkvy7 iRS3paLpSDSUg/jQC1XX1f8ztNLMsQbLM4J9lC8X/bVv15/uPIIhB+APWcx8rh20SSyW Uo1Up9roqTmJlvncq970vuMz1yNFcere62NDZ/uQsIeSff1BwRePE6ylfb7/O4X8XoEk 122rAWeNTCD+6yy3nm4RZRxYNmWUssiJKc4vy+LsVnvA6+W/qjDiY14DnjmflHU/yARd 0nFw== X-Gm-Message-State: AOAM533clWZFqAJwTtBjL1vgcPghbDR3YEVWCF0LiujhEP5iocEOPkGI zXZDVmDdEjy35EmjaU1la8tHB/GJqUmnKnRdcJ2xz8iaDh2m0Qf8wi6/jr6GQBlibleF0WIthep o1ePZbLH0acUG/7RsK85h4hDD+7LgIgL4PB1hH7wyNbS/bkI4s/EcbpHut+VHc09P+aT0eQ== X-Google-Smtp-Source: ABdhPJzAYB5wZO5z4h0uJukX+hC2nTIMeUXg1DUD8TWi+zMbdXrqkGD6B5HaTk/m5CkoM38ut3TO/7kbhVg= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:902:b597:b0:14f:3396:a7a5 with SMTP id a23-20020a170902b59700b0014f3396a7a5mr8574736pls.29.1646977878060; Thu, 10 Mar 2022 21:51:18 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:18 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-8-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 007/105] KVM: selftests: Add hyperv_svm_test test binary to .gitignore From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- tools/testing/selftests/kvm/.gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/testing/selftests/kvm/.gitignore b/tools/testing/selftes= ts/kvm/.gitignore index dce7de7755e6..62f9b781545b 100644 --- a/tools/testing/selftests/kvm/.gitignore +++ b/tools/testing/selftests/kvm/.gitignore @@ -20,6 +20,7 @@ /x86_64/hyperv_clock /x86_64/hyperv_cpuid /x86_64/hyperv_features +/x86_64/hyperv_svm_test /x86_64/mmio_warning_test /x86_64/mmu_role_test /x86_64/platform_info_test --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 7116AC433F5 for ; Fri, 11 Mar 2022 05:52:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346652AbiCKFxD (ORCPT ); Fri, 11 Mar 2022 00:53:03 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54668 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346552AbiCKFwY (ORCPT ); Fri, 11 Mar 2022 00:52:24 -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 4C0CDECC7C for ; Thu, 10 Mar 2022 21:51:20 -0800 (PST) Received: by mail-pl1-x64a.google.com with SMTP id b1-20020a170902bd4100b00151f3f97b0cso4010491plx.5 for ; Thu, 10 Mar 2022 21:51:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=HwHmeooBbWLI8npkywCEH99zsYJWGlHEj/+w8MXdpgg=; b=Eb1mf8yw9GmK2czBz6kUSHT9/0oI/qe3JPmvh7QyFAp6NcH1ywTCpGHSfeOaBDe7fB B97+G7OV269wUCx1xbu27AmYptaBiqCukxm1zRumZeoFfynn1L43q5IulITGVAmY0IOb wGsUiyB5B7FL4zXEmr6t/CD/6sbx+MAu97k0FiOkM1rTTmsDAZpqVT5BeGbmAxk5cGlO /AOS9ZzCftEWQtWqkvBqYx2MHs6v6alOZ18EUzQC3nHy0yIwRYESDOHEuARIpGXvHGcg qWuA8k1BF5dL0yglvkXYgEvq3MPlHmtqRSW2obTXnCcPzd/MSXNMQ6pjN2zjLIgnRpuM bV/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=HwHmeooBbWLI8npkywCEH99zsYJWGlHEj/+w8MXdpgg=; b=GQhPQEaNOtCExx1Jpxq0wnuTpcFJEHFLsHcWKX1AD6fNXILW/KAOFIQ19mr1CCFNim AWYXU5A+9CVskQ/Or5MFqa54y7QF5MSvX82teq8oSXQIZQwC2T2bwZoq4+neTt3JeqWz JVtosm2pRvYxztsOdujd041OozTwSfWSEvXqGGLTx9oiwQA0yY4ISuuFOTMldBbsanrC umXIXz812cF4iZsnI4nY09aKKx0vvR31Z+DbCR7Mcvc5FjIZiz2HCkaV/ApXEXhp/GP0 S2cwE4NjFWZxfT9VBLSxRUT1clj8lP5B9rHAZbVmlsma8U6CwndIUklHQ0m3gXthKPyS F1EQ== X-Gm-Message-State: AOAM532TvgHw5pPSEhXJ3S8UpkivSFMZzWvMaEe1foLTYr/2mHEE8eqH WwwcLTBNgC+t1vXtqiAla3njwGDQY8TYj1OJtEUC2T5wJqhC4eDPgPk2W3x9rkvz2UUOnWGyqCZ UMfSTx/VcVsLHK/tmAAZExBulfUV66OyTPzS/2W8V64aXe40FjS5NeV5Og8Mi9qESqmX+AQ== X-Google-Smtp-Source: ABdhPJx4FCKW6PeMsftZLkeTDRPPp0gfnKuHxQHHPRNd0ElBS7E+9tAcHfTIIC8n5wBnjMGM+ztWj3cPBwc= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:902:9682:b0:153:2b0b:298f with SMTP id n2-20020a170902968200b001532b0b298fmr4421140plp.70.1646977879706; Thu, 10 Mar 2022 21:51:19 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:19 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-9-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 008/105] KVM: sefltests: Use vcpu_ioctl() and __vcpu_ioctl() helpers From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/include/kvm_util_base.h | 142 ++++++--- .../selftests/kvm/include/x86_64/processor.h | 28 +- .../selftests/kvm/kvm_binary_stats_test.c | 6 +- tools/testing/selftests/kvm/lib/kvm_util.c | 282 ------------------ .../selftests/kvm/lib/x86_64/processor.c | 103 +------ 5 files changed, 131 insertions(+), 430 deletions(-) diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/te= sting/selftests/kvm/include/kvm_util_base.h index aab258f17e91..cebfc667e3db 100644 --- a/tools/testing/selftests/kvm/include/kvm_util_base.h +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h @@ -105,8 +105,6 @@ int open_kvm_dev_path_or_exit(void); int kvm_check_cap(long cap); int vm_check_cap(struct kvm_vm *vm, long cap); int vm_enable_cap(struct kvm_vm *vm, struct kvm_enable_cap *cap); -int vcpu_enable_cap(struct kvm_vm *vm, uint32_t vcpu_id, - struct kvm_enable_cap *cap); void vm_enable_dirty_ring(struct kvm_vm *vm, uint32_t ring_size); const char *vm_guest_mode_string(uint32_t i); =20 @@ -206,13 +204,112 @@ void vcpu_run(struct kvm_vm *vm, uint32_t vcpuid); int _vcpu_run(struct kvm_vm *vm, uint32_t vcpuid); int vcpu_get_fd(struct kvm_vm *vm, uint32_t vcpuid); void vcpu_run_complete_io(struct kvm_vm *vm, uint32_t vcpuid); -void vcpu_set_guest_debug(struct kvm_vm *vm, uint32_t vcpuid, - struct kvm_guest_debug *debug); -void vcpu_set_mp_state(struct kvm_vm *vm, uint32_t vcpuid, - struct kvm_mp_state *mp_state); struct kvm_reg_list *vcpu_get_reg_list(struct kvm_vm *vm, uint32_t vcpuid); -void vcpu_regs_get(struct kvm_vm *vm, uint32_t vcpuid, struct kvm_regs *re= gs); -void vcpu_regs_set(struct kvm_vm *vm, uint32_t vcpuid, struct kvm_regs *re= gs); + +static inline void vcpu_enable_cap(struct kvm_vm *vm, uint32_t vcpu_id, + struct kvm_enable_cap *cap) +{ + vcpu_ioctl(vm, vcpu_id, KVM_ENABLE_CAP, cap); +} + +static inline void vcpu_set_guest_debug(struct kvm_vm *vm, uint32_t vcpuid, + struct kvm_guest_debug *debug) +{ + vcpu_ioctl(vm, vcpuid, KVM_SET_GUEST_DEBUG, debug); +} + +static inline void vcpu_set_mp_state(struct kvm_vm *vm, uint32_t vcpuid, + struct kvm_mp_state *mp_state) +{ + vcpu_ioctl(vm, vcpuid, KVM_SET_MP_STATE, mp_state); +} + +static inline void vcpu_regs_get(struct kvm_vm *vm, uint32_t vcpuid, + struct kvm_regs *regs) +{ + vcpu_ioctl(vm, vcpuid, KVM_GET_REGS, regs); +} + +static inline void vcpu_regs_set(struct kvm_vm *vm, uint32_t vcpuid, + struct kvm_regs *regs) +{ + vcpu_ioctl(vm, vcpuid, KVM_SET_REGS, regs); +} +static inline void vcpu_sregs_get(struct kvm_vm *vm, uint32_t vcpuid, + struct kvm_sregs *sregs) +{ + vcpu_ioctl(vm, vcpuid, KVM_GET_SREGS, sregs); + +} +static inline void vcpu_sregs_set(struct kvm_vm *vm, uint32_t vcpuid, + struct kvm_sregs *sregs) +{ + vcpu_ioctl(vm, vcpuid, KVM_SET_SREGS, sregs); +} +static inline int _vcpu_sregs_set(struct kvm_vm *vm, uint32_t vcpuid, + struct kvm_sregs *sregs) +{ + return __vcpu_ioctl(vm, vcpuid, KVM_SET_SREGS, sregs); +} +static inline void vcpu_fpu_get(struct kvm_vm *vm, uint32_t vcpuid, + struct kvm_fpu *fpu) +{ + vcpu_ioctl(vm, vcpuid, KVM_GET_FPU, fpu); +} +static inline void vcpu_fpu_set(struct kvm_vm *vm, uint32_t vcpuid, + struct kvm_fpu *fpu) +{ + vcpu_ioctl(vm, vcpuid, KVM_SET_FPU, fpu); +} +static inline void vcpu_get_reg(struct kvm_vm *vm, uint32_t vcpuid, + struct kvm_one_reg *reg) +{ + vcpu_ioctl(vm, vcpuid, KVM_GET_ONE_REG, reg); +} +static inline void vcpu_set_reg(struct kvm_vm *vm, uint32_t vcpuid, + struct kvm_one_reg *reg) +{ + vcpu_ioctl(vm, vcpuid, KVM_SET_ONE_REG, reg); +} +#ifdef __KVM_HAVE_VCPU_EVENTS +static inline void vcpu_events_get(struct kvm_vm *vm, uint32_t vcpuid, + struct kvm_vcpu_events *events) +{ + vcpu_ioctl(vm, vcpuid, KVM_GET_VCPU_EVENTS, events); +} +static inline void vcpu_events_set(struct kvm_vm *vm, uint32_t vcpuid, + struct kvm_vcpu_events *events) +{ + vcpu_ioctl(vm, vcpuid, KVM_SET_VCPU_EVENTS, events); +} +#endif +#ifdef __x86_64__ +static inline void vcpu_nested_state_get(struct kvm_vm *vm, uint32_t vcpui= d, + struct kvm_nested_state *state) +{ + vcpu_ioctl(vm, vcpuid, KVM_GET_NESTED_STATE, state); +} +static inline int __vcpu_nested_state_set(struct kvm_vm *vm, uint32_t vcpu= id, + struct kvm_nested_state *state) +{ + return __vcpu_ioctl(vm, vcpuid, KVM_SET_NESTED_STATE, state); +} + +static inline void vcpu_nested_state_set(struct kvm_vm *vm, uint32_t vcpui= d, + struct kvm_nested_state *state) +{ + vcpu_ioctl(vm, vcpuid, KVM_SET_NESTED_STATE, state); +} +#endif +static inline int vcpu_get_stats_fd(struct kvm_vm *vm, uint32_t vcpuid) +{ + int fd =3D __vcpu_ioctl(vm, vcpuid, KVM_GET_STATS_FD, NULL); + + TEST_ASSERT(fd >=3D 0, KVM_IOCTL_ERROR(KVM_GET_STATS_FD, fd)); + return fd; +} + +void *vcpu_map_dirty_ring(struct kvm_vm *vm, uint32_t vcpuid); =20 /* * VM VCPU Args Set @@ -234,34 +331,6 @@ void vcpu_regs_set(struct kvm_vm *vm, uint32_t vcpuid,= struct kvm_regs *regs); */ void vcpu_args_set(struct kvm_vm *vm, uint32_t vcpuid, unsigned int num, .= ..); =20 -void vcpu_sregs_get(struct kvm_vm *vm, uint32_t vcpuid, - struct kvm_sregs *sregs); -void vcpu_sregs_set(struct kvm_vm *vm, uint32_t vcpuid, - struct kvm_sregs *sregs); -int _vcpu_sregs_set(struct kvm_vm *vm, uint32_t vcpuid, - struct kvm_sregs *sregs); -void vcpu_fpu_get(struct kvm_vm *vm, uint32_t vcpuid, - struct kvm_fpu *fpu); -void vcpu_fpu_set(struct kvm_vm *vm, uint32_t vcpuid, - struct kvm_fpu *fpu); -void vcpu_get_reg(struct kvm_vm *vm, uint32_t vcpuid, struct kvm_one_reg *= reg); -void vcpu_set_reg(struct kvm_vm *vm, uint32_t vcpuid, struct kvm_one_reg *= reg); -#ifdef __KVM_HAVE_VCPU_EVENTS -void vcpu_events_get(struct kvm_vm *vm, uint32_t vcpuid, - struct kvm_vcpu_events *events); -void vcpu_events_set(struct kvm_vm *vm, uint32_t vcpuid, - struct kvm_vcpu_events *events); -#endif -#ifdef __x86_64__ -void vcpu_nested_state_get(struct kvm_vm *vm, uint32_t vcpuid, - struct kvm_nested_state *state); -int __vcpu_nested_state_set(struct kvm_vm *vm, uint32_t vcpuid, - struct kvm_nested_state *state); -void vcpu_nested_state_set(struct kvm_vm *vm, uint32_t vcpuid, - struct kvm_nested_state *state); -#endif -void *vcpu_map_dirty_ring(struct kvm_vm *vm, uint32_t vcpuid); - int _kvm_device_check_attr(int dev_fd, uint32_t group, uint64_t attr); int kvm_device_check_attr(int dev_fd, uint32_t group, uint64_t attr); int _kvm_create_device(struct kvm_vm *vm, uint64_t type, bool test, int *f= d); @@ -402,7 +471,6 @@ int vm_create_device(struct kvm_vm *vm, struct kvm_crea= te_device *cd); void assert_on_unhandled_exception(struct kvm_vm *vm, uint32_t vcpuid); =20 int vm_get_stats_fd(struct kvm_vm *vm); -int vcpu_get_stats_fd(struct kvm_vm *vm, uint32_t vcpuid); =20 uint32_t guest_get_vcpuid(void); =20 diff --git a/tools/testing/selftests/kvm/include/x86_64/processor.h b/tools= /testing/selftests/kvm/include/x86_64/processor.h index 8a470da7b71a..b20de7919411 100644 --- a/tools/testing/selftests/kvm/include/x86_64/processor.h +++ b/tools/testing/selftests/kvm/include/x86_64/processor.h @@ -391,12 +391,19 @@ void kvm_x86_state_cleanup(struct kvm_x86_state *stat= e); struct kvm_msr_list *kvm_get_msr_index_list(void); uint64_t kvm_get_feature_msr(uint64_t msr_index); struct kvm_cpuid2 *kvm_get_supported_cpuid(void); - struct kvm_cpuid2 *vcpu_get_cpuid(struct kvm_vm *vm, uint32_t vcpuid); -int __vcpu_set_cpuid(struct kvm_vm *vm, uint32_t vcpuid, - struct kvm_cpuid2 *cpuid); -void vcpu_set_cpuid(struct kvm_vm *vm, uint32_t vcpuid, - struct kvm_cpuid2 *cpuid); + +static inline int __vcpu_set_cpuid(struct kvm_vm *vm, uint32_t vcpuid, + struct kvm_cpuid2 *cpuid) +{ + return __vcpu_ioctl(vm, vcpuid, KVM_SET_CPUID2, cpuid); +} + +static inline void vcpu_set_cpuid(struct kvm_vm *vm, uint32_t vcpuid, + struct kvm_cpuid2 *cpuid) +{ + vcpu_ioctl(vm, vcpuid, KVM_SET_CPUID2, cpuid); +} =20 struct kvm_cpuid_entry2 * kvm_get_supported_cpuid_index(uint32_t function, uint32_t index); @@ -410,8 +417,15 @@ kvm_get_supported_cpuid_entry(uint32_t function) uint64_t vcpu_get_msr(struct kvm_vm *vm, uint32_t vcpuid, uint64_t msr_ind= ex); int _vcpu_set_msr(struct kvm_vm *vm, uint32_t vcpuid, uint64_t msr_index, uint64_t msr_value); -void vcpu_set_msr(struct kvm_vm *vm, uint32_t vcpuid, uint64_t msr_index, - uint64_t msr_value); + +static inline void vcpu_set_msr(struct kvm_vm *vm, uint32_t vcpuid, + uint64_t msr_index, uint64_t msr_value) +{ + int r =3D _vcpu_set_msr(vm, vcpuid, msr_index, msr_value); + + TEST_ASSERT(r =3D=3D 1, KVM_IOCTL_ERROR(KVM_SET_MSRS, r)); +} + =20 uint32_t kvm_get_cpuid_max_basic(void); uint32_t kvm_get_cpuid_max_extended(void); diff --git a/tools/testing/selftests/kvm/kvm_binary_stats_test.c b/tools/te= sting/selftests/kvm/kvm_binary_stats_test.c index 4b149b383678..bab8b49b52da 100644 --- a/tools/testing/selftests/kvm/kvm_binary_stats_test.c +++ b/tools/testing/selftests/kvm/kvm_binary_stats_test.c @@ -178,11 +178,7 @@ static void vm_stats_test(struct kvm_vm *vm) =20 static void vcpu_stats_test(struct kvm_vm *vm, int vcpu_id) { - int stats_fd; - - /* Get fd for VCPU stats */ - stats_fd =3D vcpu_get_stats_fd(vm, vcpu_id); - TEST_ASSERT(stats_fd >=3D 0, "Get VCPU stats fd"); + int stats_fd =3D vcpu_get_stats_fd(vm, vcpu_id); =20 stats_test(stats_fd); close(stats_fd); diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index 8dabea79e394..c9bbe69513eb 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -135,34 +135,6 @@ int vm_enable_cap(struct kvm_vm *vm, struct kvm_enable= _cap *cap) return ret; } =20 -/* VCPU Enable Capability - * - * Input Args: - * vm - Virtual Machine - * vcpu_id - VCPU - * cap - Capability - * - * Output Args: None - * - * Return: On success, 0. On failure a TEST_ASSERT failure is produced. - * - * Enables a capability (KVM_CAP_*) on the VCPU. - */ -int vcpu_enable_cap(struct kvm_vm *vm, uint32_t vcpu_id, - struct kvm_enable_cap *cap) -{ - struct vcpu *vcpu =3D vcpu_find(vm, vcpu_id); - int r; - - TEST_ASSERT(vcpu, "cannot find vcpu %d", vcpu_id); - - r =3D ioctl(vcpu->fd, KVM_ENABLE_CAP, cap); - TEST_ASSERT(!r, "KVM_ENABLE_CAP vCPU ioctl failed,\n" - " rc: %i, errno: %i", r, errno); - - return r; -} - void vm_enable_dirty_ring(struct kvm_vm *vm, uint32_t ring_size) { struct kvm_enable_cap cap =3D { 0 }; @@ -1625,43 +1597,6 @@ void vcpu_run_complete_io(struct kvm_vm *vm, uint32_= t vcpuid) ret, errno); } =20 -void vcpu_set_guest_debug(struct kvm_vm *vm, uint32_t vcpuid, - struct kvm_guest_debug *debug) -{ - struct vcpu *vcpu =3D vcpu_find(vm, vcpuid); - int ret =3D ioctl(vcpu->fd, KVM_SET_GUEST_DEBUG, debug); - - TEST_ASSERT(ret =3D=3D 0, "KVM_SET_GUEST_DEBUG failed: %d", ret); -} - -/* - * VM VCPU Set MP State - * - * Input Args: - * vm - Virtual Machine - * vcpuid - VCPU ID - * mp_state - mp_state to be set - * - * Output Args: None - * - * Return: None - * - * Sets the MP state of the VCPU given by vcpuid, to the state given - * by mp_state. - */ -void vcpu_set_mp_state(struct kvm_vm *vm, uint32_t vcpuid, - struct kvm_mp_state *mp_state) -{ - struct vcpu *vcpu =3D vcpu_find(vm, vcpuid); - int ret; - - TEST_ASSERT(vcpu !=3D NULL, "vcpu not found, vcpuid: %u", vcpuid); - - ret =3D ioctl(vcpu->fd, KVM_SET_MP_STATE, mp_state); - TEST_ASSERT(ret =3D=3D 0, "KVM_SET_MP_STATE IOCTL failed, " - "rc: %i errno: %i", ret, errno); -} - /* * VM VCPU Get Reg List * @@ -1691,216 +1626,6 @@ struct kvm_reg_list *vcpu_get_reg_list(struct kvm_v= m *vm, uint32_t vcpuid) return reg_list; } =20 -/* - * VM VCPU Regs Get - * - * Input Args: - * vm - Virtual Machine - * vcpuid - VCPU ID - * - * Output Args: - * regs - current state of VCPU regs - * - * Return: None - * - * Obtains the current register state for the VCPU specified by vcpuid - * and stores it at the location given by regs. - */ -void vcpu_regs_get(struct kvm_vm *vm, uint32_t vcpuid, struct kvm_regs *re= gs) -{ - struct vcpu *vcpu =3D vcpu_find(vm, vcpuid); - int ret; - - TEST_ASSERT(vcpu !=3D NULL, "vcpu not found, vcpuid: %u", vcpuid); - - ret =3D ioctl(vcpu->fd, KVM_GET_REGS, regs); - TEST_ASSERT(ret =3D=3D 0, "KVM_GET_REGS failed, rc: %i errno: %i", - ret, errno); -} - -/* - * VM VCPU Regs Set - * - * Input Args: - * vm - Virtual Machine - * vcpuid - VCPU ID - * regs - Values to set VCPU regs to - * - * Output Args: None - * - * Return: None - * - * Sets the regs of the VCPU specified by vcpuid to the values - * given by regs. - */ -void vcpu_regs_set(struct kvm_vm *vm, uint32_t vcpuid, struct kvm_regs *re= gs) -{ - struct vcpu *vcpu =3D vcpu_find(vm, vcpuid); - int ret; - - TEST_ASSERT(vcpu !=3D NULL, "vcpu not found, vcpuid: %u", vcpuid); - - ret =3D ioctl(vcpu->fd, KVM_SET_REGS, regs); - TEST_ASSERT(ret =3D=3D 0, "KVM_SET_REGS failed, rc: %i errno: %i", - ret, errno); -} - -#ifdef __KVM_HAVE_VCPU_EVENTS -void vcpu_events_get(struct kvm_vm *vm, uint32_t vcpuid, - struct kvm_vcpu_events *events) -{ - struct vcpu *vcpu =3D vcpu_find(vm, vcpuid); - int ret; - - TEST_ASSERT(vcpu !=3D NULL, "vcpu not found, vcpuid: %u", vcpuid); - - ret =3D ioctl(vcpu->fd, KVM_GET_VCPU_EVENTS, events); - TEST_ASSERT(ret =3D=3D 0, "KVM_GET_VCPU_EVENTS, failed, rc: %i errno: %i", - ret, errno); -} - -void vcpu_events_set(struct kvm_vm *vm, uint32_t vcpuid, - struct kvm_vcpu_events *events) -{ - struct vcpu *vcpu =3D vcpu_find(vm, vcpuid); - int ret; - - TEST_ASSERT(vcpu !=3D NULL, "vcpu not found, vcpuid: %u", vcpuid); - - ret =3D ioctl(vcpu->fd, KVM_SET_VCPU_EVENTS, events); - TEST_ASSERT(ret =3D=3D 0, "KVM_SET_VCPU_EVENTS, failed, rc: %i errno: %i", - ret, errno); -} -#endif - -#ifdef __x86_64__ -void vcpu_nested_state_get(struct kvm_vm *vm, uint32_t vcpuid, - struct kvm_nested_state *state) -{ - struct vcpu *vcpu =3D vcpu_find(vm, vcpuid); - int ret; - - TEST_ASSERT(vcpu !=3D NULL, "vcpu not found, vcpuid: %u", vcpuid); - - ret =3D ioctl(vcpu->fd, KVM_GET_NESTED_STATE, state); - TEST_ASSERT(ret =3D=3D 0, - "KVM_SET_NESTED_STATE failed, ret: %i errno: %i", - ret, errno); -} - -int __vcpu_nested_state_set(struct kvm_vm *vm, uint32_t vcpuid, - struct kvm_nested_state *state) -{ - struct vcpu *vcpu =3D vcpu_find(vm, vcpuid); - - TEST_ASSERT(vcpu !=3D NULL, "vcpu not found, vcpuid: %u", vcpuid); - - return ioctl(vcpu->fd, KVM_SET_NESTED_STATE, state); -} - -void vcpu_nested_state_set(struct kvm_vm *vm, uint32_t vcpuid, - struct kvm_nested_state *state) -{ - int ret =3D __vcpu_nested_state_set(vm, vcpuid, state); - - TEST_ASSERT(!ret, "KVM_SET_NESTED_STATE failed, ret: %i errno: %i", ret, = errno); -} -#endif - -/* - * VM VCPU System Regs Get - * - * Input Args: - * vm - Virtual Machine - * vcpuid - VCPU ID - * - * Output Args: - * sregs - current state of VCPU system regs - * - * Return: None - * - * Obtains the current system register state for the VCPU specified by - * vcpuid and stores it at the location given by sregs. - */ -void vcpu_sregs_get(struct kvm_vm *vm, uint32_t vcpuid, struct kvm_sregs *= sregs) -{ - struct vcpu *vcpu =3D vcpu_find(vm, vcpuid); - int ret; - - TEST_ASSERT(vcpu !=3D NULL, "vcpu not found, vcpuid: %u", vcpuid); - - ret =3D ioctl(vcpu->fd, KVM_GET_SREGS, sregs); - TEST_ASSERT(ret =3D=3D 0, "KVM_GET_SREGS failed, rc: %i errno: %i", - ret, errno); -} - -/* - * VM VCPU System Regs Set - * - * Input Args: - * vm - Virtual Machine - * vcpuid - VCPU ID - * sregs - Values to set VCPU system regs to - * - * Output Args: None - * - * Return: None - * - * Sets the system regs of the VCPU specified by vcpuid to the values - * given by sregs. - */ -void vcpu_sregs_set(struct kvm_vm *vm, uint32_t vcpuid, struct kvm_sregs *= sregs) -{ - int ret =3D _vcpu_sregs_set(vm, vcpuid, sregs); - TEST_ASSERT(ret =3D=3D 0, "KVM_SET_SREGS IOCTL failed, " - "rc: %i errno: %i", ret, errno); -} - -int _vcpu_sregs_set(struct kvm_vm *vm, uint32_t vcpuid, struct kvm_sregs *= sregs) -{ - struct vcpu *vcpu =3D vcpu_find(vm, vcpuid); - - TEST_ASSERT(vcpu !=3D NULL, "vcpu not found, vcpuid: %u", vcpuid); - - return ioctl(vcpu->fd, KVM_SET_SREGS, sregs); -} - -void vcpu_fpu_get(struct kvm_vm *vm, uint32_t vcpuid, struct kvm_fpu *fpu) -{ - int ret; - - ret =3D __vcpu_ioctl(vm, vcpuid, KVM_GET_FPU, fpu); - TEST_ASSERT(ret =3D=3D 0, "KVM_GET_FPU failed, rc: %i errno: %i (%s)", - ret, errno, strerror(errno)); -} - -void vcpu_fpu_set(struct kvm_vm *vm, uint32_t vcpuid, struct kvm_fpu *fpu) -{ - int ret; - - ret =3D __vcpu_ioctl(vm, vcpuid, KVM_SET_FPU, fpu); - TEST_ASSERT(ret =3D=3D 0, "KVM_SET_FPU failed, rc: %i errno: %i (%s)", - ret, errno, strerror(errno)); -} - -void vcpu_get_reg(struct kvm_vm *vm, uint32_t vcpuid, struct kvm_one_reg *= reg) -{ - int ret; - - ret =3D __vcpu_ioctl(vm, vcpuid, KVM_GET_ONE_REG, reg); - TEST_ASSERT(ret =3D=3D 0, "KVM_GET_ONE_REG failed, rc: %i errno: %i (%s)", - ret, errno, strerror(errno)); -} - -void vcpu_set_reg(struct kvm_vm *vm, uint32_t vcpuid, struct kvm_one_reg *= reg) -{ - int ret; - - ret =3D __vcpu_ioctl(vm, vcpuid, KVM_SET_ONE_REG, reg); - TEST_ASSERT(ret =3D=3D 0, "KVM_SET_ONE_REG failed, rc: %i errno: %i (%s)", - ret, errno, strerror(errno)); -} - int __vcpu_ioctl(struct kvm_vm *vm, uint32_t vcpuid, unsigned long cmd, void *arg) { @@ -2496,10 +2221,3 @@ int vm_get_stats_fd(struct kvm_vm *vm) { return ioctl(vm->fd, KVM_GET_STATS_FD, NULL); } - -int vcpu_get_stats_fd(struct kvm_vm *vm, uint32_t vcpuid) -{ - struct vcpu *vcpu =3D vcpu_find(vm, vcpuid); - - return ioctl(vcpu->fd, KVM_GET_STATS_FD, NULL); -} diff --git a/tools/testing/selftests/kvm/lib/x86_64/processor.c b/tools/tes= ting/selftests/kvm/lib/x86_64/processor.c index 9f000dfb5594..fb05bed7ec1e 100644 --- a/tools/testing/selftests/kvm/lib/x86_64/processor.c +++ b/tools/testing/selftests/kvm/lib/x86_64/processor.c @@ -901,132 +901,37 @@ kvm_get_supported_cpuid_index(uint32_t function, uin= t32_t index) return entry; } =20 - -int __vcpu_set_cpuid(struct kvm_vm *vm, uint32_t vcpuid, - struct kvm_cpuid2 *cpuid) -{ - struct vcpu *vcpu =3D vcpu_find(vm, vcpuid); - - TEST_ASSERT(vcpu !=3D NULL, "vcpu not found, vcpuid: %u", vcpuid); - - return ioctl(vcpu->fd, KVM_SET_CPUID2, cpuid); -} - -/* - * VM VCPU CPUID Set - * - * Input Args: - * vm - Virtual Machine - * vcpuid - VCPU id - * cpuid - The CPUID values to set. - * - * Output Args: None - * - * Return: void - * - * Set the VCPU's CPUID. - */ -void vcpu_set_cpuid(struct kvm_vm *vm, - uint32_t vcpuid, struct kvm_cpuid2 *cpuid) -{ - int rc; - - rc =3D __vcpu_set_cpuid(vm, vcpuid, cpuid); - TEST_ASSERT(rc =3D=3D 0, "KVM_SET_CPUID2 failed, rc: %i errno: %i", - rc, errno); - -} - -/* - * VCPU Get MSR - * - * Input Args: - * vm - Virtual Machine - * vcpuid - VCPU ID - * msr_index - Index of MSR - * - * Output Args: None - * - * Return: On success, value of the MSR. On failure a TEST_ASSERT is produ= ced. - * - * Get value of MSR for VCPU. - */ uint64_t vcpu_get_msr(struct kvm_vm *vm, uint32_t vcpuid, uint64_t msr_ind= ex) { - struct vcpu *vcpu =3D vcpu_find(vm, vcpuid); struct { struct kvm_msrs header; struct kvm_msr_entry entry; } buffer =3D {}; int r; =20 - TEST_ASSERT(vcpu !=3D NULL, "vcpu not found, vcpuid: %u", vcpuid); buffer.header.nmsrs =3D 1; buffer.entry.index =3D msr_index; - r =3D ioctl(vcpu->fd, KVM_GET_MSRS, &buffer.header); - TEST_ASSERT(r =3D=3D 1, "KVM_GET_MSRS IOCTL failed,\n" - " rc: %i errno: %i", r, errno); + + r =3D __vcpu_ioctl(vm, vcpuid, KVM_GET_MSRS, &buffer.header); + TEST_ASSERT(r =3D=3D 1, KVM_IOCTL_ERROR(KVM_GET_MSRS, r)); =20 return buffer.entry.data; } =20 -/* - * _VCPU Set MSR - * - * Input Args: - * vm - Virtual Machine - * vcpuid - VCPU ID - * msr_index - Index of MSR - * msr_value - New value of MSR - * - * Output Args: None - * - * Return: The result of KVM_SET_MSRS. - * - * Sets the value of an MSR for the given VCPU. - */ int _vcpu_set_msr(struct kvm_vm *vm, uint32_t vcpuid, uint64_t msr_index, uint64_t msr_value) { - struct vcpu *vcpu =3D vcpu_find(vm, vcpuid); struct { struct kvm_msrs header; struct kvm_msr_entry entry; } buffer =3D {}; - int r; =20 - TEST_ASSERT(vcpu !=3D NULL, "vcpu not found, vcpuid: %u", vcpuid); memset(&buffer, 0, sizeof(buffer)); buffer.header.nmsrs =3D 1; buffer.entry.index =3D msr_index; buffer.entry.data =3D msr_value; - r =3D ioctl(vcpu->fd, KVM_SET_MSRS, &buffer.header); - return r; -} =20 -/* - * VCPU Set MSR - * - * Input Args: - * vm - Virtual Machine - * vcpuid - VCPU ID - * msr_index - Index of MSR - * msr_value - New value of MSR - * - * Output Args: None - * - * Return: On success, nothing. On failure a TEST_ASSERT is produced. - * - * Set value of MSR for VCPU. - */ -void vcpu_set_msr(struct kvm_vm *vm, uint32_t vcpuid, uint64_t msr_index, - uint64_t msr_value) -{ - int r; - - r =3D _vcpu_set_msr(vm, vcpuid, msr_index, msr_value); - TEST_ASSERT(r =3D=3D 1, "KVM_SET_MSRS IOCTL failed,\n" - " rc: %i errno: %i", r, errno); + return __vcpu_ioctl(vm, vcpuid, KVM_SET_MSRS, &buffer.header); } =20 void vcpu_args_set(struct kvm_vm *vm, uint32_t vcpuid, unsigned int num, .= ..) --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 0BA53C433F5 for ; Fri, 11 Mar 2022 05:52:26 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346603AbiCKFxZ (ORCPT ); Fri, 11 Mar 2022 00:53:25 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54918 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346553AbiCKFwY (ORCPT ); Fri, 11 Mar 2022 00:52:24 -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 13967ED95A for ; Thu, 10 Mar 2022 21:51:22 -0800 (PST) Received: by mail-pl1-x64a.google.com with SMTP id q8-20020a170902f78800b00151cc484688so3987698pln.20 for ; Thu, 10 Mar 2022 21:51:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=1K8XiB8/q7GOUeGCOVODhNnDPMTUOmdv7nwendERxtY=; b=bWM96fI89WRJbvud1mF7qtvXeoYDhLED0TIIVdpEPN9crFK45Y5D4LJF1O1VqqKGyO a7IPuRnwJBOJ1ILG6YnVdXyy7NCXlkuUhlr+KDQO2PB7ctt/Pz9m2xJ7R5TAsV3hi1i4 Hyq8/GjIbVOziM5Q26QRousG1TuKyYwtTQRj/deqQvrg84RavxBNiHXQ3T+toGY69KdT DVbq73uFMLDRU0bftzuvzZQb7kfq+dt1C3tXnqFRSuNUO+jWDclMYDQZU+CFBxfKsOMl 4TccgRh+j0IAntbSExEPacHzjbmNYeyo65B7KkmyweMcVM4l2EqFHqsmnIU+Q72smcbs o3iA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=1K8XiB8/q7GOUeGCOVODhNnDPMTUOmdv7nwendERxtY=; b=SJvQDD7nWSMmT52uonDtn4r2IBEVDgYiqQrZ6A6T8/ic0iE03wldEDqOoWGlMr2Bnq nwRGGuwwsOgvAc7wdPOzdBgGt4i9GKNvF2ur+jCMWVU/0iLEByGBnozuhkU7CRMju67H 7ohbRnIm5fUlRtmQCJBhhxie06E5alOVl4540RdSvZhzCVMnHeXkJeXI+jL8kbOb4Hp7 s0YPouzJwWE9vIlKEp4bVOQfiPnekeNBT1yg/51UrhC4fvjY3VQrkviltoJ91qGyzNNs X7EtmkVsiIY8V0+a5+xfff4Bnl4wHW8c3Xg5EeO2dUr7WRdfg64lKo7KdtT8sQQVRoPi V0HQ== X-Gm-Message-State: AOAM530ChwEeHBQTl4WFLuv8TkhYUzz0WPvolTWa6trrN6HM9CY7xwJ0 gIVQup81iPTErKQQ7j8WZUknUi0S+qBB5a+C+giNFyusddDMUgtEcx9CVTgNm7z9/0Ypiwc5OFa ss0HxpwSZuU8DkUFjhclSPKk1VAzDoR5WYTBHUWrSmBc5LSeKAZiKEfKuVnedku7Narg37Q== X-Google-Smtp-Source: ABdhPJxzR/o9niaQRBy8TAxO+1nS0Sj/aF9vIzigjXaUjo9vtmDWIQdwFCY0LlGH/XE5gg5vEC9WTl3ar34= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:903:24d:b0:14f:84dd:babb with SMTP id j13-20020a170903024d00b0014f84ddbabbmr9117164plh.47.1646977881427; Thu, 10 Mar 2022 21:51:21 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:20 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-10-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 009/105] KVM: selftests: Add __vcpu_run() helper From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- tools/testing/selftests/kvm/aarch64/vgic_init.c | 6 ++---- tools/testing/selftests/kvm/dirty_log_test.c | 6 ++---- tools/testing/selftests/kvm/include/kvm_util_base.h | 6 ++++++ tools/testing/selftests/kvm/lib/kvm_util.c | 6 ++---- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/tools/testing/selftests/kvm/aarch64/vgic_init.c b/tools/testin= g/selftests/kvm/aarch64/vgic_init.c index 373c8005c2e7..9a153b2ea3de 100644 --- a/tools/testing/selftests/kvm/aarch64/vgic_init.c +++ b/tools/testing/selftests/kvm/aarch64/vgic_init.c @@ -55,10 +55,8 @@ static void guest_code(void) static int run_vcpu(struct kvm_vm *vm, uint32_t vcpuid) { ucall_init(vm, NULL); - int ret =3D __vcpu_ioctl(vm, vcpuid, KVM_RUN, NULL); - if (ret) - return -errno; - return 0; + + return __vcpu_run(vm, vcpuid) ? -errno : 0; } =20 static struct vm_gic vm_gic_create_with_vcpus(uint32_t gic_dev_type, uint3= 2_t nr_vcpus) diff --git a/tools/testing/selftests/kvm/dirty_log_test.c b/tools/testing/s= elftests/kvm/dirty_log_test.c index 01c01d40201f..5752486764c9 100644 --- a/tools/testing/selftests/kvm/dirty_log_test.c +++ b/tools/testing/selftests/kvm/dirty_log_test.c @@ -509,7 +509,7 @@ static void generate_random_array(uint64_t *guest_array= , uint64_t size) =20 static void *vcpu_worker(void *data) { - int ret, vcpu_fd; + int ret; struct kvm_vm *vm =3D data; uint64_t *guest_array; uint64_t pages_count =3D 0; @@ -517,8 +517,6 @@ static void *vcpu_worker(void *data) + sizeof(sigset_t)); sigset_t *sigset =3D (sigset_t *) &sigmask->sigset; =20 - vcpu_fd =3D vcpu_get_fd(vm, VCPU_ID); - /* * SIG_IPI is unblocked atomically while in KVM_RUN. It causes the * ioctl to return with -EINTR, but it is still pending and we need @@ -539,7 +537,7 @@ static void *vcpu_worker(void *data) generate_random_array(guest_array, TEST_PAGES_PER_LOOP); pages_count +=3D TEST_PAGES_PER_LOOP; /* Let the guest dirty the random pages */ - ret =3D ioctl(vcpu_fd, KVM_RUN, NULL); + ret =3D __vcpu_run(vm, VCPU_ID); if (ret =3D=3D -1 && errno =3D=3D EINTR) { int sig =3D -1; sigwait(sigset, &sig); diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/te= sting/selftests/kvm/include/kvm_util_base.h index cebfc667e3db..f4bf77eed00a 100644 --- a/tools/testing/selftests/kvm/include/kvm_util_base.h +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h @@ -202,6 +202,12 @@ vm_paddr_t addr_gva2gpa(struct kvm_vm *vm, vm_vaddr_t = gva); struct kvm_run *vcpu_state(struct kvm_vm *vm, uint32_t vcpuid); void vcpu_run(struct kvm_vm *vm, uint32_t vcpuid); int _vcpu_run(struct kvm_vm *vm, uint32_t vcpuid); + +static inline int __vcpu_run(struct kvm_vm *vm, uint32_t vcpuid) +{ + return __vcpu_ioctl(vm, vcpuid, KVM_RUN, NULL); +} + int vcpu_get_fd(struct kvm_vm *vm, uint32_t vcpuid); void vcpu_run_complete_io(struct kvm_vm *vm, uint32_t vcpuid); struct kvm_reg_list *vcpu_get_reg_list(struct kvm_vm *vm, uint32_t vcpuid); diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index c9bbe69513eb..066314ea880c 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -1559,12 +1559,10 @@ void vcpu_run(struct kvm_vm *vm, uint32_t vcpuid) =20 int _vcpu_run(struct kvm_vm *vm, uint32_t vcpuid) { - struct vcpu *vcpu =3D vcpu_find(vm, vcpuid); int rc; =20 - TEST_ASSERT(vcpu !=3D NULL, "vcpu not found, vcpuid: %u", vcpuid); do { - rc =3D ioctl(vcpu->fd, KVM_RUN, NULL); + rc =3D __vcpu_run(vm, vcpuid); } while (rc =3D=3D -1 && errno =3D=3D EINTR); =20 assert_on_unhandled_exception(vm, vcpuid); @@ -1589,7 +1587,7 @@ void vcpu_run_complete_io(struct kvm_vm *vm, uint32_t= vcpuid) TEST_ASSERT(vcpu !=3D NULL, "vcpu not found, vcpuid: %u", vcpuid); =20 vcpu->state->immediate_exit =3D 1; - ret =3D ioctl(vcpu->fd, KVM_RUN, NULL); + ret =3D __vcpu_run(vm, vcpuid); vcpu->state->immediate_exit =3D 0; =20 TEST_ASSERT(ret =3D=3D -1 && errno =3D=3D EINTR, --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 C1C4FC433EF for ; Fri, 11 Mar 2022 05:52:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240955AbiCKFxa (ORCPT ); Fri, 11 Mar 2022 00:53:30 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55050 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346555AbiCKFw0 (ORCPT ); Fri, 11 Mar 2022 00:52: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 1105FED957 for ; Thu, 10 Mar 2022 21:51:23 -0800 (PST) Received: by mail-pj1-x104a.google.com with SMTP id e1-20020a17090a280100b001bf44b6d74bso7304690pjd.0 for ; Thu, 10 Mar 2022 21:51:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=+lJW77CrTm1B5aYz/GHbu6G+GH67Q3IwynG0m3AG3M8=; b=a37KJrIsD3S5wc8jpFWQwt3/bF4nolB/GhKJQV63KiaY66vsJop7Z0TjUEzYXV1x2b yuSc7qPkXs6f02gTE65qsI71X56ZQvq0TFaMkAHi+cuW914Qk9G75sW1lnMMNE/FTtI+ dygSBDmqDKia+hy8JVYd2FPTJT5DmNtf6FE/OfZJ9jk1TCurym1Ba3r8A7o3tGz429Bq cJln5/fRzt2DGvPJFSuxOWdCvIl3EYsMqDSaYylYn8VBCHJAumsbO89PJR26Aly22XxE wNunZfiPcU39a1wCSsVFPsNS+1uIjWEG5jIameMoi1SuqzPm5OJdNgjV+Xp9XKQFJpk2 7Ecw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=+lJW77CrTm1B5aYz/GHbu6G+GH67Q3IwynG0m3AG3M8=; b=Zw922W8yRnotavYWIKd3K4T3eco1Gb5kXUFdNTsbnLKz10KkaT7bLLxRlI6szulpN1 kyd0yx7on71im83D6AJv9YtLQNvuOftDvZ5j6oUE4CCGUzDbGcFtzT0deNR/z8FZJ9ia 5XYKZEd4vtookArM8NRM7IgChqa8ckGjgTIq7ncIl9F2QjDOkVjEVd0x/ZCkVESWw1aE OWIb17io3IZdg4lZH/mTsZZ/GlXC/tmga1obV+oE3TPR5uR8Dd2xJRdd6yh2A/9+YR5o 43OVWPXHnsgFzTxLnUhHCd0acQhL5yVyWX7uTW7AwSbjwYBaWaHTKEQn3j3FO1rcKkuc Z7SQ== X-Gm-Message-State: AOAM531zKxx4ZiwERsXD5QKp5M7kvy5I+0pEaUdXu2kh3EJdvUh4I2Mp 3s/5qrDqzmtkJHdhPTGWMbwOU1RsNnPDVxIo2oS6qMdhh44pZJ5EqjE02V4qlk2iKl1NHQOQRJJ kucbBdpTYMTDyEzBQ4aNH/MNaCg4odNa23cG6HQQY0MJATCLCKQlzKe11v9f+Nw7jZktQOw== X-Google-Smtp-Source: ABdhPJy6q6yDkWs+K7zAlRT7vXU9elcC/F75OvWXhDJ1dGArInDVi6jwR/aWi6z3GK0japZQbYEohuadGyI= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:902:e791:b0:151:dbbd:aeae with SMTP id cp17-20020a170902e79100b00151dbbdaeaemr8842641plb.171.1646977882810; Thu, 10 Mar 2022 21:51:22 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:21 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-11-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 010/105] KVM: selftests: Use vcpu_access_device_attr() in arm64 code From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- tools/testing/selftests/kvm/aarch64/arch_timer.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/tools/testing/selftests/kvm/aarch64/arch_timer.c b/tools/testi= ng/selftests/kvm/aarch64/arch_timer.c index 9ad38bd360a4..92b2a6611e89 100644 --- a/tools/testing/selftests/kvm/aarch64/arch_timer.c +++ b/tools/testing/selftests/kvm/aarch64/arch_timer.c @@ -349,12 +349,10 @@ static void test_run(struct kvm_vm *vm) static void test_init_timer_irq(struct kvm_vm *vm) { /* Timer initid should be same for all the vCPUs, so query only vCPU-0 */ - int vcpu0_fd =3D vcpu_get_fd(vm, 0); - - kvm_device_access(vcpu0_fd, KVM_ARM_VCPU_TIMER_CTRL, - KVM_ARM_VCPU_TIMER_IRQ_PTIMER, &ptimer_irq, false); - kvm_device_access(vcpu0_fd, KVM_ARM_VCPU_TIMER_CTRL, - KVM_ARM_VCPU_TIMER_IRQ_VTIMER, &vtimer_irq, false); + vcpu_access_device_attr(vm, 0, KVM_ARM_VCPU_TIMER_CTRL, + KVM_ARM_VCPU_TIMER_IRQ_PTIMER, &ptimer_irq, false); + vcpu_access_device_attr(vm, 0, KVM_ARM_VCPU_TIMER_CTRL, + KVM_ARM_VCPU_TIMER_IRQ_VTIMER, &vtimer_irq, false); =20 sync_global_to_guest(vm, ptimer_irq); sync_global_to_guest(vm, vtimer_irq); --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 0DD84C433EF for ; Fri, 11 Mar 2022 05:52:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346541AbiCKFxg (ORCPT ); Fri, 11 Mar 2022 00:53:36 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55112 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346559AbiCKFw1 (ORCPT ); Fri, 11 Mar 2022 00:52:27 -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 2047CF11A6 for ; Thu, 10 Mar 2022 21:51:25 -0800 (PST) Received: by mail-pj1-x1049.google.com with SMTP id e14-20020a17090a684e00b001bf09ac2385so4717285pjm.1 for ; Thu, 10 Mar 2022 21:51:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=54mSR6Tud/AFQVI6bwk1W/vBoapcvRIqx1EJHluJf+w=; b=YNCRWr+YcJSSRC9dm+eOFAcuuNdURungE5bimPeuPOaz928FLAQBzQS+otqX1TpC7U hiiuaG4coq1QgCk2fP3r5v0QefVQZyXr6UkgSuMfEyn2Q6V3rqLIQEaOOCTCGxjpfman Ab8m1+C1YJVqKuyPVZjmnMFT0pjVlIs0m5EHERUgZd5kzFKvjmBdwTC2BMpWlSp7YTyd cQJTzFQlwZjcIo4bWZP7kAEgmIiHa6zwefR3s9uPRIK/A1ZIcdeIohHR7SqpJPZJhdOl CAnmmW4YFwLZobg3HWz3hNmQL6UeXmBCD+Mn8LTe2tb+0Ei1Ra9DWQZXuXNdACklTg6j /LxA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=54mSR6Tud/AFQVI6bwk1W/vBoapcvRIqx1EJHluJf+w=; b=qUpEwPiAeZAzUnkEZzajRDxco7fLWy1Qf2DeFc3un7LrtQ0wutoqNEYCTN4DXNMPqG 0HSfyHdDZ1T79fqwV6Cr+wjsWjbiLdsxSharubzWdcX8FPHcf4AVO1Qs9hHOVx2W/Ne1 1XateYQOqrGxJFcg1Lz8jV7qs6RTR6POSDLnLJcD/kLh8tG76mQW8+fMcpP00DPJqZBM G/dS4Y0wltzfjJvH0+aTnAK2JrpOdNvbzR+lh12gNyaf3+H0L2163Id7cRFCxvf9AQea kTRea+VDOX/Rrqui9gVO5+p1jwgMYpdhP0dZOtCmSv8aPqGwZSUuDZZSPIWM1s3OdPW7 suzw== X-Gm-Message-State: AOAM532Tm2kI4aO48uZL5aX5/UNr2cOXVt7QsKM0K/ZFpxrBM24ghqYf RRqg+zKjsOPc8g8rGRooHS6QC8Dm0V0iDyoqS3uTkGSkFMPBM8uwFca0vponS0kclrP0Wvq0XBx 4iq8u10DsItN+2tQJ6+XHupZi9DjOsgSjj9wTtVQKA3x0xOl0/8n7C0usrC6oXATbcRgzUQ== X-Google-Smtp-Source: ABdhPJwHBeTgJSAkaJdl22sS1uirZxKLjbgjmnLV6y7SstmdRAQd+lWiateXxCghyyGAl5rxb9a5RGxwUVA= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:90b:1e10:b0:1bf:6c78:54a9 with SMTP id pg16-20020a17090b1e1000b001bf6c7854a9mr460344pjb.1.1646977884184; Thu, 10 Mar 2022 21:51:24 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:22 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-12-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 011/105] KVM: selftests: Remove vcpu_get_fd() From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- tools/testing/selftests/kvm/include/kvm_util_base.h | 1 - tools/testing/selftests/kvm/lib/kvm_util.c | 9 --------- 2 files changed, 10 deletions(-) diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/te= sting/selftests/kvm/include/kvm_util_base.h index f4bf77eed00a..be8882dbe38a 100644 --- a/tools/testing/selftests/kvm/include/kvm_util_base.h +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h @@ -208,7 +208,6 @@ static inline int __vcpu_run(struct kvm_vm *vm, uint32_= t vcpuid) return __vcpu_ioctl(vm, vcpuid, KVM_RUN, NULL); } =20 -int vcpu_get_fd(struct kvm_vm *vm, uint32_t vcpuid); void vcpu_run_complete_io(struct kvm_vm *vm, uint32_t vcpuid); struct kvm_reg_list *vcpu_get_reg_list(struct kvm_vm *vm, uint32_t vcpuid); =20 diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index 066314ea880c..52fefa51071a 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -1570,15 +1570,6 @@ int _vcpu_run(struct kvm_vm *vm, uint32_t vcpuid) return rc; } =20 -int vcpu_get_fd(struct kvm_vm *vm, uint32_t vcpuid) -{ - struct vcpu *vcpu =3D vcpu_find(vm, vcpuid); - - TEST_ASSERT(vcpu !=3D NULL, "vcpu not found, vcpuid: %u", vcpuid); - - return vcpu->fd; -} - void vcpu_run_complete_io(struct kvm_vm *vm, uint32_t vcpuid) { struct vcpu *vcpu =3D vcpu_find(vm, vcpuid); --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 9E7A8C433F5 for ; Fri, 11 Mar 2022 05:52:44 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346601AbiCKFxp (ORCPT ); Fri, 11 Mar 2022 00:53:45 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55050 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346577AbiCKFwf (ORCPT ); Fri, 11 Mar 2022 00:52:35 -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 A9FEBF47FF for ; Thu, 10 Mar 2022 21:51:26 -0800 (PST) Received: by mail-pl1-x64a.google.com with SMTP id x10-20020a170902a38a00b00151e09a4e15so3992260pla.15 for ; Thu, 10 Mar 2022 21:51:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=WkJAS1hr239djJaFPKwZtnJzvkK6HzdcpNTsPKjbQqU=; b=pWGPPiqmaibkK8ArhRRP8yjhw/vIinIgDvtfkzKntiIgF5mixGMzT5jH7BYmJ/PlHA b3rHdeXdqAlhJB1C/3NBLDUqac2Wy8mfjNiNRX8mnZh6No3tPmBTFKczo6d9LHLwsXzH iJWRMPIdLJ4/egJNxgwfYlXU8e/eBVp9nY18LGNSaODrmCi7OwYniLF7x+g31bUpaOV/ XzvNqCFf2mTnds7cjqVWLrnWUJKVTo0ttDroJXzuomXhfd8DtCWGVosgDlXGcR56pwHO jpp4tl3fFfYi2dYsg00jfEnzoIgDlnmLKk3b9qu0vUMPfEbt1uS5ltUMzZ+f+WbiT54J 1Rlw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=WkJAS1hr239djJaFPKwZtnJzvkK6HzdcpNTsPKjbQqU=; b=b/3Z+hRRMgNioaCCRdlG6l57jBT77CsqfHo0TuBzxD04xdlPPE/nZNWZEXI3cylh0H j8U7KNynDxO2qbNoh+2uCIdEKm47K5OqmVTDaz2z85v2TYVEvFd+PfPYogi/lS0kD1QT kTPrIhQpxQOlzXZ7QemLbYsn3uX+sWPghF5T2zL2nuJxYIlVs0AST2ccQ+8eAW8moWnG +LVqi1mZ1hBDyDp0ZY70igy9QNy642pWXQx3gvsZVYM3VIU54F6lczm+zim5wCci4Md9 39OFUcAWqbRPWOAc5zxQOAkx0b7s1clxtQ7vxt1Mruc8lO/7P/6NfPeIEI9nB/oWX0+Y Qz5Q== X-Gm-Message-State: AOAM531PO5V6BAuueoLjO/kTusJCI0LzBcMKAKtNoPAqqiJeW7EQpD5U lXncA5ocjlNdLao2p8W/exKZePRhExn9BTT0Qa0T7nmF1jPsoNWKOS7WNmgK2yNRRbDW7R4C4wQ S8bFnO+oCc0MIHS4IeaFMsXcBeqGAl+tYCTUkMMbgfH6e3lsAkhoSpIintHetFAiOJIsnQw== X-Google-Smtp-Source: ABdhPJylMCdWfDYHbNdm8XSD3y4fYTR/jC+pweC9vNcCCoxLZhZZebrXAEdKNMhP/GKscmfosKU6ghkqMkY= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a05:6a00:1354:b0:4c9:1e96:d15c with SMTP id k20-20020a056a00135400b004c91e96d15cmr8442831pfu.30.1646977885980; Thu, 10 Mar 2022 21:51:25 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:23 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-13-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 012/105] KVM: selftests: Add vcpu_get() to retrieve and assert on vCPU existence From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- tools/testing/selftests/kvm/lib/kvm_util.c | 56 ++++++------------- .../selftests/kvm/lib/kvm_util_internal.h | 2 +- .../selftests/kvm/lib/s390x/processor.c | 5 +- .../selftests/kvm/lib/x86_64/processor.c | 6 +- 4 files changed, 21 insertions(+), 48 deletions(-) diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index 52fefa51071a..d45f2ec7b13e 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -553,23 +553,7 @@ kvm_userspace_memory_region_find(struct kvm_vm *vm, ui= nt64_t start, return ®ion->region; } =20 -/* - * VCPU Find - * - * Input Args: - * vm - Virtual Machine - * vcpuid - VCPU ID - * - * Output Args: None - * - * Return: - * Pointer to VCPU structure - * - * Locates a vcpu structure that describes the VCPU specified by vcpuid and - * returns a pointer to it. Returns NULL if the VM doesn't contain a VCPU - * for the specified vcpuid. - */ -struct vcpu *vcpu_find(struct kvm_vm *vm, uint32_t vcpuid) +static struct vcpu *vcpu_find(struct kvm_vm *vm, uint32_t vcpuid) { struct vcpu *vcpu; =20 @@ -581,6 +565,14 @@ struct vcpu *vcpu_find(struct kvm_vm *vm, uint32_t vcp= uid) return NULL; } =20 +struct vcpu *vcpu_get(struct kvm_vm *vm, uint32_t vcpuid) +{ + struct vcpu *vcpu =3D vcpu_find(vm, vcpuid); + + TEST_ASSERT(vcpu, "vCPU %d does not exist", vcpuid); + return vcpu; +} + /* * VM VCPU Remove * @@ -1530,8 +1522,7 @@ void vm_create_irqchip(struct kvm_vm *vm) */ struct kvm_run *vcpu_state(struct kvm_vm *vm, uint32_t vcpuid) { - struct vcpu *vcpu =3D vcpu_find(vm, vcpuid); - TEST_ASSERT(vcpu !=3D NULL, "vcpu not found, vcpuid: %u", vcpuid); + struct vcpu *vcpu =3D vcpu_get(vm, vcpuid); =20 return vcpu->state; } @@ -1572,11 +1563,9 @@ int _vcpu_run(struct kvm_vm *vm, uint32_t vcpuid) =20 void vcpu_run_complete_io(struct kvm_vm *vm, uint32_t vcpuid) { - struct vcpu *vcpu =3D vcpu_find(vm, vcpuid); + struct vcpu *vcpu =3D vcpu_get(vm, vcpuid); int ret; =20 - TEST_ASSERT(vcpu !=3D NULL, "vcpu not found, vcpuid: %u", vcpuid); - vcpu->state->immediate_exit =3D 1; ret =3D __vcpu_run(vm, vcpuid); vcpu->state->immediate_exit =3D 0; @@ -1618,14 +1607,9 @@ struct kvm_reg_list *vcpu_get_reg_list(struct kvm_vm= *vm, uint32_t vcpuid) int __vcpu_ioctl(struct kvm_vm *vm, uint32_t vcpuid, unsigned long cmd, void *arg) { - struct vcpu *vcpu =3D vcpu_find(vm, vcpuid); - int ret; + struct vcpu *vcpu =3D vcpu_get(vm, vcpuid); =20 - TEST_ASSERT(vcpu !=3D NULL, "vcpu not found, vcpuid: %u", vcpuid); - - ret =3D ioctl(vcpu->fd, cmd, arg); - - return ret; + return ioctl(vcpu->fd, cmd, arg); } =20 void _vcpu_ioctl(struct kvm_vm *vm, uint32_t vcpuid, unsigned long cmd, @@ -1638,15 +1622,11 @@ void _vcpu_ioctl(struct kvm_vm *vm, uint32_t vcpuid= , unsigned long cmd, =20 void *vcpu_map_dirty_ring(struct kvm_vm *vm, uint32_t vcpuid) { - struct vcpu *vcpu; + struct vcpu *vcpu =3D vcpu_get(vm, vcpuid); uint32_t size =3D vm->dirty_ring_size; =20 TEST_ASSERT(size > 0, "Should enable dirty ring first"); =20 - vcpu =3D vcpu_find(vm, vcpuid); - - TEST_ASSERT(vcpu, "Cannot find vcpu %u", vcpuid); - if (!vcpu->dirty_gfns) { void *addr; =20 @@ -1802,9 +1782,7 @@ int kvm_device_access(int dev_fd, uint32_t group, uin= t64_t attr, int _vcpu_has_device_attr(struct kvm_vm *vm, uint32_t vcpuid, uint32_t gro= up, uint64_t attr) { - struct vcpu *vcpu =3D vcpu_find(vm, vcpuid); - - TEST_ASSERT(vcpu, "nonexistent vcpu id: %d", vcpuid); + struct vcpu *vcpu =3D vcpu_get(vm, vcpuid); =20 return _kvm_device_check_attr(vcpu->fd, group, attr); } @@ -1821,9 +1799,7 @@ int vcpu_has_device_attr(struct kvm_vm *vm, uint32_t = vcpuid, uint32_t group, int _vcpu_access_device_attr(struct kvm_vm *vm, uint32_t vcpuid, uint32_t = group, uint64_t attr, void *val, bool write) { - struct vcpu *vcpu =3D vcpu_find(vm, vcpuid); - - TEST_ASSERT(vcpu, "nonexistent vcpu id: %d", vcpuid); + struct vcpu *vcpu =3D vcpu_get(vm, vcpuid); =20 return _kvm_device_access(vcpu->fd, group, attr, val, write); } diff --git a/tools/testing/selftests/kvm/lib/kvm_util_internal.h b/tools/te= sting/selftests/kvm/lib/kvm_util_internal.h index a03febc24ba6..0c7c44499129 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util_internal.h +++ b/tools/testing/selftests/kvm/lib/kvm_util_internal.h @@ -69,7 +69,7 @@ struct kvm_vm { uint32_t dirty_ring_size; }; =20 -struct vcpu *vcpu_find(struct kvm_vm *vm, uint32_t vcpuid); +struct vcpu *vcpu_get(struct kvm_vm *vm, uint32_t vcpuid); =20 /* * Virtual Translation Tables Dump diff --git a/tools/testing/selftests/kvm/lib/s390x/processor.c b/tools/test= ing/selftests/kvm/lib/s390x/processor.c index f87c7137598e..7cc1051c4b71 100644 --- a/tools/testing/selftests/kvm/lib/s390x/processor.c +++ b/tools/testing/selftests/kvm/lib/s390x/processor.c @@ -208,10 +208,7 @@ void vcpu_args_set(struct kvm_vm *vm, uint32_t vcpuid,= unsigned int num, ...) =20 void vcpu_dump(FILE *stream, struct kvm_vm *vm, uint32_t vcpuid, uint8_t i= ndent) { - struct vcpu *vcpu =3D vcpu_find(vm, vcpuid); - - if (!vcpu) - return; + struct vcpu *vcpu =3D vcpu_get(vm, vcpuid); =20 fprintf(stream, "%*spstate: psw: 0x%.16llx:0x%.16llx\n", indent, "", vcpu->state->psw_mask, vcpu->state->psw_addr); diff --git a/tools/testing/selftests/kvm/lib/x86_64/processor.c b/tools/tes= ting/selftests/kvm/lib/x86_64/processor.c index fb05bed7ec1e..4065fc4daada 100644 --- a/tools/testing/selftests/kvm/lib/x86_64/processor.c +++ b/tools/testing/selftests/kvm/lib/x86_64/processor.c @@ -841,7 +841,7 @@ uint64_t kvm_get_feature_msr(uint64_t msr_index) */ struct kvm_cpuid2 *vcpu_get_cpuid(struct kvm_vm *vm, uint32_t vcpuid) { - struct vcpu *vcpu =3D vcpu_find(vm, vcpuid); + struct vcpu *vcpu =3D vcpu_get(vm, vcpuid); struct kvm_cpuid2 *cpuid; int max_ent; int rc =3D -1; @@ -1039,7 +1039,7 @@ static int vcpu_save_xsave_state(struct kvm_vm *vm, s= truct vcpu *vcpu, =20 struct kvm_x86_state *vcpu_save_state(struct kvm_vm *vm, uint32_t vcpuid) { - struct vcpu *vcpu =3D vcpu_find(vm, vcpuid); + struct vcpu *vcpu =3D vcpu_get(vm, vcpuid); struct kvm_msr_list *list; struct kvm_x86_state *state; int nmsrs, r, i; @@ -1122,7 +1122,7 @@ struct kvm_x86_state *vcpu_save_state(struct kvm_vm *= vm, uint32_t vcpuid) =20 void vcpu_load_state(struct kvm_vm *vm, uint32_t vcpuid, struct kvm_x86_st= ate *state) { - struct vcpu *vcpu =3D vcpu_find(vm, vcpuid); + struct vcpu *vcpu =3D vcpu_get(vm, vcpuid); int r; =20 r =3D ioctl(vcpu->fd, KVM_SET_SREGS, &state->sregs); --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 F1454C433F5 for ; Fri, 11 Mar 2022 05:53:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346693AbiCKFyH (ORCPT ); Fri, 11 Mar 2022 00:54:07 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54916 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346574AbiCKFwf (ORCPT ); Fri, 11 Mar 2022 00:52:35 -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 4E9C0F65FE for ; Thu, 10 Mar 2022 21:51:28 -0800 (PST) Received: by mail-pj1-x1049.google.com with SMTP id m14-20020a17090a4d8e00b001bf2d4926c5so7280337pjh.3 for ; Thu, 10 Mar 2022 21:51:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=lIUB4qj7fpuCOBqeayWJn3UXJ9Pxwe0onYdsgb7hw0A=; b=bMnfVlFJ2I4svXMcRb6J6mYB7p1XwKtTnUoWFbt0hE+0Y0imWFW/QHHehQ/pD64Txz UoF5sxs7J1JHuyMMg8KZJzNvVGigvnCowPP11/aBi37dymu4oHi1JSrhJUJcfzC9z/9Q MjmDMBEZdclzwKCIefgyNDZ/ypJqSkrgGL2biq6MTmecL7WwQnLtrO8/EidEbHCFekeL A+oK/R2BwITZZ873VisucROEFoCL3gblG1jH7p4t9nqvC2RXpWHbJGjQtn1BF+RsPIQB vdpzSbMSP8v0T0Fpj3ZC7PuPFe/t71cy13KynYuYpI9JmIV192pY7waygDHqEsm1tL9h orqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=lIUB4qj7fpuCOBqeayWJn3UXJ9Pxwe0onYdsgb7hw0A=; b=F4eDFBKhaMHOtdQGmxaiKO0y88elV8KXvSHQ6ubp8VHNNPytSCZftC+KC5c26Lzw68 muljTQiRlCFlfzf+V/h6o+aln3hrgz1napqgLPF8SRkZGk4SqQSargi6hz7LOCVz5b82 88G+fOthbIQgW23orHDw2MvhR5cxKbS9cCw0RlDMGxVguGEiAnAkUjwO8jnoXWYtAvOP wNz4pyDaqwJnnzEV37/F+bprGkNwzFkt8LWof7Mm+njtqM6yHCTYp8FGLjz3MRDzALXp bUYAmUTBc7VvYRoO1VJ5NiXVBOA0gJ/sJsg88cizWBO/SS9Gob1lCkNuwUdPobIXgdoS w5bA== X-Gm-Message-State: AOAM531dLOy6AloCMpHkMwHdkXPo5oJ/gIosWCMocczg45dxM673EE7b iVIPxeOxa52o1dkY3l+mz9mpoTdM3RPDc00Al0v5DSoHkgeT6RgJvET0VJzzDHVd/vs1M6Y1x6p 17Of5f1hpXnEvwmkWgztO8zBlkTh88Jv6HlevQbAKsgo9tX7AzCTj/W22kRXZbIhmfREfYA== X-Google-Smtp-Source: ABdhPJwvVWgQ/qlK1dREYuK1HTus6CFRiBYVbGbH0iemh6a49GCqTOgm0x/zYJ0SX8cBkC7sniQVD0vlMaU= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:902:ec81:b0:151:f1c5:2f9f with SMTP id x1-20020a170902ec8100b00151f1c52f9fmr8713480plg.123.1646977887660; Thu, 10 Mar 2022 21:51:27 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:24 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-14-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 013/105] KVM: selftests: Make vm_ioctl() a wrapper to pretty print ioctl name From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Deliberately do not use __stringify(), as that will expand the ioctl all the way down to its numerical sequence, the intent is print the name of the macro. Signed-off-by: Sean Christopherson --- .../selftests/kvm/include/kvm_util_base.h | 36 ++++++++++--------- tools/testing/selftests/kvm/lib/kvm_util.c | 28 ++++----------- 2 files changed, 27 insertions(+), 37 deletions(-) diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/te= sting/selftests/kvm/include/kvm_util_base.h index be8882dbe38a..bcffd9f85490 100644 --- a/tools/testing/selftests/kvm/include/kvm_util_base.h +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h @@ -105,6 +105,26 @@ int open_kvm_dev_path_or_exit(void); int kvm_check_cap(long cap); int vm_check_cap(struct kvm_vm *vm, long cap); int vm_enable_cap(struct kvm_vm *vm, struct kvm_enable_cap *cap); + +#define __KVM_IOCTL_ERROR(_name, _ret) \ + "%s failed, rc: %i errno: %i (%s)", (_name), (_ret), errno, strerror(errn= o) + +#define KVM_IOCTL_ERROR(_ioctl, _ret) __KVM_IOCTL_ERROR(#_ioctl, _ret) + +int __kvm_ioctl(struct kvm_vm *vm, unsigned long cmd, void *arg); +void kvm_ioctl(struct kvm_vm *vm, unsigned long cmd, void *arg); + +int __vm_ioctl(struct kvm_vm *vm, unsigned long cmd, void *arg); +void _vm_ioctl(struct kvm_vm *vm, unsigned long cmd, const char *name, voi= d *arg); +#define vm_ioctl(vm, cmd, arg) _vm_ioctl(vm, cmd, #cmd, arg) + +int __vcpu_ioctl(struct kvm_vm *vm, uint32_t vcpuid, unsigned long cmd, + void *arg); +void _vcpu_ioctl(struct kvm_vm *vm, uint32_t vcpuid, unsigned long cmd, + const char *name, void *arg); +#define vcpu_ioctl(vm, vcpuid, cmd, arg) \ + _vcpu_ioctl(vm, vcpuid, cmd, #cmd, arg) + void vm_enable_dirty_ring(struct kvm_vm *vm, uint32_t ring_size); const char *vm_guest_mode_string(uint32_t i); =20 @@ -151,22 +171,6 @@ void vm_userspace_mem_region_add(struct kvm_vm *vm, uint64_t guest_paddr, uint32_t slot, uint64_t npages, uint32_t flags); =20 -#define __KVM_IOCTL_ERROR(_name, _ret) \ - "%s failed, rc: %i errno: %i (%s)", (_name), (_ret), errno, strerror(errn= o) - -#define KVM_IOCTL_ERROR(_ioctl, _ret) __KVM_IOCTL_ERROR(#_ioctl, _ret) - -void _vcpu_ioctl(struct kvm_vm *vm, uint32_t vcpuid, unsigned long ioctl, - const char *name, void *arg); -int __vcpu_ioctl(struct kvm_vm *vm, uint32_t vcpuid, unsigned long ioctl, - void *arg); -#define vcpu_ioctl(vm, vcpuid, ioctl, arg) \ - _vcpu_ioctl(vm, vcpuid, ioctl, #ioctl, arg) - -void vm_ioctl(struct kvm_vm *vm, unsigned long ioctl, void *arg); -int __vm_ioctl(struct kvm_vm *vm, unsigned long cmd, void *arg); -void kvm_ioctl(struct kvm_vm *vm, unsigned long ioctl, void *arg); -int __kvm_ioctl(struct kvm_vm *vm, unsigned long ioctl, void *arg); void vm_mem_region_set_flags(struct kvm_vm *vm, uint32_t slot, uint32_t fl= ags); void vm_mem_region_move(struct kvm_vm *vm, uint32_t slot, uint64_t new_gpa= ); void vm_mem_region_delete(struct kvm_vm *vm, uint32_t slot); diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index d45f2ec7b13e..a37baaddfeaf 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -1652,32 +1652,18 @@ void *vcpu_map_dirty_ring(struct kvm_vm *vm, uint32= _t vcpuid) return vcpu->dirty_gfns; } =20 -/* - * VM Ioctl - * - * Input Args: - * vm - Virtual Machine - * cmd - Ioctl number - * arg - Argument to pass to the ioctl - * - * Return: None - * - * Issues an arbitrary ioctl on a VM fd. - */ -void vm_ioctl(struct kvm_vm *vm, unsigned long cmd, void *arg) -{ - int ret; - - ret =3D __vm_ioctl(vm, cmd, arg); - TEST_ASSERT(ret =3D=3D 0, "vm ioctl %lu failed, rc: %i errno: %i (%s)", - cmd, ret, errno, strerror(errno)); -} - int __vm_ioctl(struct kvm_vm *vm, unsigned long cmd, void *arg) { return ioctl(vm->fd, cmd, arg); } =20 +void _vm_ioctl(struct kvm_vm *vm, unsigned long cmd, const char *name, voi= d *arg) +{ + int ret =3D __vm_ioctl(vm, cmd, arg); + + TEST_ASSERT(!ret, __KVM_IOCTL_ERROR(name, ret)); +} + /* * KVM system ioctl * --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 AF2C5C433EF for ; Fri, 11 Mar 2022 05:52:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346645AbiCKFxz (ORCPT ); Fri, 11 Mar 2022 00:53:55 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55708 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346585AbiCKFwg (ORCPT ); Fri, 11 Mar 2022 00:52:36 -0500 Received: from mail-yw1-x1149.google.com (mail-yw1-x1149.google.com [IPv6:2607:f8b0:4864:20::1149]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 415ABF70DE for ; Thu, 10 Mar 2022 21:51:30 -0800 (PST) Received: by mail-yw1-x1149.google.com with SMTP id 00721157ae682-2dcd6a5e4b6so60474207b3.4 for ; Thu, 10 Mar 2022 21:51:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=ttO2mNjkKQTdjqGFyuMzkYKBHRPA69OMuLHgjBQ1wEE=; b=dy+iu0Dq95hrIgpN5VkGj8rQbVsZIgij+5nkDsen1/PFHg0cso58WvhnDOCU7p8KVG dNnxEOmEgdIlUqe+Q4lpxiPazkL7J10Co0iXIPT2/K2exEDji1cwPSgNDJ6nRl3dx5Q3 OIhEO8gHIBT/8CESAW+VJz2EwahUZbH3JrfsCtd529IG5Qf+c3oQZ4xW1r1UMXWcXN+h d+KPHrZdqYUlNP+m9B4GJEOEI+GWLFcg28OZIyVJqTZa5M+WC4aRI/KOb9ES/7Dl6IU5 wpqrVwIZYiAjZ6Mbb4i8VwTuZM6fbJ52YTGb9bm1IEQyS5LjJGThg8Y1l9ZoYCQiyGPK aW9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=ttO2mNjkKQTdjqGFyuMzkYKBHRPA69OMuLHgjBQ1wEE=; b=Sgp4BR/yU3Z5PmDk1tVf9PcrLiFhSOI+hDJX15w4hUtHii7HTebXpCDJbthxlcRv3e XxDhJdGuvThFfPMZUX7pfAEYrCfF9phTwNrS3b4AA3SGv+RikAW7NoSVrdqlJ6ESQ7qK qCWxqN4F1OCOBY1xdJhS4K2VI7bzNpoSdzLbr0qFDYQWUWXAmULFS15QhMyhSHcLFnzH SOl4Uk3U/pQiPCR7HRQ4kbOqeuLaNKgyFy2Q+DJSlmxd3mZCX2+dTpQed7akmbMTKiEu 511bi/v1KNhgsTgsfd8rH5a4hJFsPK0KM1wdh3Wo9cO96V6wN21Tgr1hQ2oaEzJCNbur fACg== X-Gm-Message-State: AOAM530UqmSI5GL65URqQ4jGra5kTdwIqdE9Ee7OkTFTPAb1kmTHp7iu cow5cOe/SyEMK+jiaqRN6fwXDK/QBe0DwLbonr/BJ5DvTOcSJzABTONywQ7yclZ9lom0yyxHgZ6 JoVb5UbTTrFpJbJ6ndRzKdJaPfuf4NOcDwQ4uPvN16o9uTLsyaeqIgi3/dQPSOY0dzxIhwg== X-Google-Smtp-Source: ABdhPJyQ8tjtVZOycXT00xd5KlJliWb7UIq69pfawQKGkjwA19rGHGGD79ZQeF7uqLNFc0w9Zz4GyWhTknk= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a25:378e:0:b0:629:2b4c:56c7 with SMTP id e136-20020a25378e000000b006292b4c56c7mr6750664yba.134.1646977889381; Thu, 10 Mar 2022 21:51:29 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:25 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-15-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 014/105] KVM: sefltests: Use vm_ioctl() and __vm_ioctl() helpers From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/include/kvm_util_base.h | 59 ++++++++-- .../selftests/kvm/kvm_binary_stats_test.c | 6 +- tools/testing/selftests/kvm/lib/kvm_util.c | 111 ++---------------- .../selftests/kvm/set_memory_region_test.c | 5 +- 4 files changed, 65 insertions(+), 116 deletions(-) diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/te= sting/selftests/kvm/include/kvm_util_base.h index bcffd9f85490..09e84ce50331 100644 --- a/tools/testing/selftests/kvm/include/kvm_util_base.h +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h @@ -103,8 +103,6 @@ extern const struct vm_guest_mode_params vm_guest_mode_= params[]; int open_path_or_exit(const char *path, int flags); int open_kvm_dev_path_or_exit(void); int kvm_check_cap(long cap); -int vm_check_cap(struct kvm_vm *vm, long cap); -int vm_enable_cap(struct kvm_vm *vm, struct kvm_enable_cap *cap); =20 #define __KVM_IOCTL_ERROR(_name, _ret) \ "%s failed, rc: %i errno: %i (%s)", (_name), (_ret), errno, strerror(errn= o) @@ -125,6 +123,23 @@ void _vcpu_ioctl(struct kvm_vm *vm, uint32_t vcpuid, u= nsigned long cmd, #define vcpu_ioctl(vm, vcpuid, cmd, arg) \ _vcpu_ioctl(vm, vcpuid, cmd, #cmd, arg) =20 +/* + * Looks up and returns the value corresponding to the capability + * (KVM_CAP_*) given by cap. + */ +static inline int vm_check_cap(struct kvm_vm *vm, long cap) +{ + int ret =3D __vm_ioctl(vm, KVM_CHECK_EXTENSION, (void *)cap); + + TEST_ASSERT(ret >=3D 0, KVM_IOCTL_ERROR(KVM_CHECK_EXTENSION, ret)); + return ret; +} + +static inline void vm_enable_cap(struct kvm_vm *vm, struct kvm_enable_cap = *cap) +{ + vm_ioctl(vm, KVM_ENABLE_CAP, cap); +} + void vm_enable_dirty_ring(struct kvm_vm *vm, uint32_t ring_size); const char *vm_guest_mode_string(uint32_t i); =20 @@ -133,18 +148,46 @@ struct kvm_vm *vm_create(uint64_t phy_pages); void kvm_vm_free(struct kvm_vm *vmp); void kvm_vm_restart(struct kvm_vm *vmp); void kvm_vm_release(struct kvm_vm *vmp); -void kvm_vm_get_dirty_log(struct kvm_vm *vm, int slot, void *log); -void kvm_vm_clear_dirty_log(struct kvm_vm *vm, int slot, void *log, - uint64_t first_page, uint32_t num_pages); -uint32_t kvm_vm_reset_dirty_ring(struct kvm_vm *vm); - int kvm_memcmp_hva_gva(void *hva, struct kvm_vm *vm, const vm_vaddr_t gva, size_t len); - void kvm_vm_elf_load(struct kvm_vm *vm, const char *filename); =20 void vm_dump(FILE *stream, struct kvm_vm *vm, uint8_t indent); =20 +static inline void kvm_vm_get_dirty_log(struct kvm_vm *vm, int slot, void = *log) +{ + struct kvm_dirty_log args =3D { .dirty_bitmap =3D log, .slot =3D slot }; + + vm_ioctl(vm, KVM_GET_DIRTY_LOG, &args); +} + +static inline void kvm_vm_clear_dirty_log(struct kvm_vm *vm, int slot, voi= d *log, + uint64_t first_page, uint32_t num_pages) +{ + struct kvm_clear_dirty_log args =3D { + .dirty_bitmap =3D log, + .slot =3D slot, + .first_page =3D first_page, + .num_pages =3D num_pages + }; + + vm_ioctl(vm, KVM_CLEAR_DIRTY_LOG, &args); +} + +static inline uint32_t kvm_vm_reset_dirty_ring(struct kvm_vm *vm) +{ + return __vm_ioctl(vm, KVM_RESET_DIRTY_RINGS, NULL); +} + +static inline int vm_get_stats_fd(struct kvm_vm *vm) +{ + int fd =3D __vm_ioctl(vm, KVM_GET_STATS_FD, NULL); + + TEST_ASSERT(fd >=3D 0, KVM_IOCTL_ERROR(KVM_GET_STATS_FD, fd)); + return fd; +} + + /* * VM VCPU Dump * diff --git a/tools/testing/selftests/kvm/kvm_binary_stats_test.c b/tools/te= sting/selftests/kvm/kvm_binary_stats_test.c index bab8b49b52da..0a27b0f85009 100644 --- a/tools/testing/selftests/kvm/kvm_binary_stats_test.c +++ b/tools/testing/selftests/kvm/kvm_binary_stats_test.c @@ -165,11 +165,7 @@ static void stats_test(int stats_fd) =20 static void vm_stats_test(struct kvm_vm *vm) { - int stats_fd; - - /* Get fd for VM stats */ - stats_fd =3D vm_get_stats_fd(vm); - TEST_ASSERT(stats_fd >=3D 0, "Get VM stats fd"); + int stats_fd =3D vm_get_stats_fd(vm); =20 stats_test(stats_fd); close(stats_fd); diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index a37baaddfeaf..974de21eef23 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -85,56 +85,6 @@ int kvm_check_cap(long cap) return ret; } =20 -/* VM Check Capability - * - * Input Args: - * vm - Virtual Machine - * cap - Capability - * - * Output Args: None - * - * Return: - * On success, the Value corresponding to the capability (KVM_CAP_*) - * specified by the value of cap. On failure a TEST_ASSERT failure - * is produced. - * - * Looks up and returns the value corresponding to the capability - * (KVM_CAP_*) given by cap. - */ -int vm_check_cap(struct kvm_vm *vm, long cap) -{ - int ret; - - ret =3D ioctl(vm->fd, KVM_CHECK_EXTENSION, cap); - TEST_ASSERT(ret >=3D 0, "KVM_CHECK_EXTENSION VM IOCTL failed,\n" - " rc: %i errno: %i", ret, errno); - - return ret; -} - -/* VM Enable Capability - * - * Input Args: - * vm - Virtual Machine - * cap - Capability - * - * Output Args: None - * - * Return: On success, 0. On failure a TEST_ASSERT failure is produced. - * - * Enables a capability (KVM_CAP_*) on the VM. - */ -int vm_enable_cap(struct kvm_vm *vm, struct kvm_enable_cap *cap) -{ - int ret; - - ret =3D ioctl(vm->fd, KVM_ENABLE_CAP, cap); - TEST_ASSERT(ret =3D=3D 0, "KVM_ENABLE_CAP IOCTL failed,\n" - " rc: %i errno: %i", ret, errno); - - return ret; -} - void vm_enable_dirty_ring(struct kvm_vm *vm, uint32_t ring_size) { struct kvm_enable_cap cap =3D { 0 }; @@ -452,36 +402,6 @@ void kvm_vm_restart(struct kvm_vm *vmp) } } =20 -void kvm_vm_get_dirty_log(struct kvm_vm *vm, int slot, void *log) -{ - struct kvm_dirty_log args =3D { .dirty_bitmap =3D log, .slot =3D slot }; - int ret; - - ret =3D ioctl(vm->fd, KVM_GET_DIRTY_LOG, &args); - TEST_ASSERT(ret =3D=3D 0, "%s: KVM_GET_DIRTY_LOG failed: %s", - __func__, strerror(-ret)); -} - -void kvm_vm_clear_dirty_log(struct kvm_vm *vm, int slot, void *log, - uint64_t first_page, uint32_t num_pages) -{ - struct kvm_clear_dirty_log args =3D { - .dirty_bitmap =3D log, .slot =3D slot, - .first_page =3D first_page, - .num_pages =3D num_pages - }; - int ret; - - ret =3D ioctl(vm->fd, KVM_CLEAR_DIRTY_LOG, &args); - TEST_ASSERT(ret =3D=3D 0, "%s: KVM_CLEAR_DIRTY_LOG failed: %s", - __func__, strerror(-ret)); -} - -uint32_t kvm_vm_reset_dirty_ring(struct kvm_vm *vm) -{ - return ioctl(vm->fd, KVM_RESET_DIRTY_RINGS); -} - /* * Userspace Memory Region Find * @@ -637,7 +557,7 @@ static void __vm_mem_region_delete(struct kvm_vm *vm, } =20 region->region.memory_size =3D 0; - ret =3D ioctl(vm->fd, KVM_SET_USER_MEMORY_REGION, ®ion->region); + ret =3D __vm_ioctl(vm, KVM_SET_USER_MEMORY_REGION, ®ion->region); TEST_ASSERT(ret =3D=3D 0, "KVM_SET_USER_MEMORY_REGION IOCTL failed, " "rc: %i errno: %i", ret, errno); =20 @@ -955,7 +875,7 @@ void vm_userspace_mem_region_add(struct kvm_vm *vm, region->region.guest_phys_addr =3D guest_paddr; region->region.memory_size =3D npages * vm->page_size; region->region.userspace_addr =3D (uintptr_t) region->host_mem; - ret =3D ioctl(vm->fd, KVM_SET_USER_MEMORY_REGION, ®ion->region); + ret =3D __vm_ioctl(vm, KVM_SET_USER_MEMORY_REGION, ®ion->region); TEST_ASSERT(ret =3D=3D 0, "KVM_SET_USER_MEMORY_REGION IOCTL failed,\n" " rc: %i errno: %i\n" " slot: %u flags: 0x%x\n" @@ -1038,7 +958,7 @@ void vm_mem_region_set_flags(struct kvm_vm *vm, uint32= _t slot, uint32_t flags) =20 region->region.flags =3D flags; =20 - ret =3D ioctl(vm->fd, KVM_SET_USER_MEMORY_REGION, ®ion->region); + ret =3D __vm_ioctl(vm, KVM_SET_USER_MEMORY_REGION, ®ion->region); =20 TEST_ASSERT(ret =3D=3D 0, "KVM_SET_USER_MEMORY_REGION IOCTL failed,\n" " rc: %i errno: %i slot: %u flags: 0x%x", @@ -1068,7 +988,7 @@ void vm_mem_region_move(struct kvm_vm *vm, uint32_t sl= ot, uint64_t new_gpa) =20 region->region.guest_phys_addr =3D new_gpa; =20 - ret =3D ioctl(vm->fd, KVM_SET_USER_MEMORY_REGION, ®ion->region); + ret =3D __vm_ioctl(vm, KVM_SET_USER_MEMORY_REGION, ®ion->region); =20 TEST_ASSERT(!ret, "KVM_SET_USER_MEMORY_REGION failed\n" "ret: %i errno: %i slot: %u new_gpa: 0x%lx", @@ -1152,10 +1072,10 @@ void vm_vcpu_add(struct kvm_vm *vm, uint32_t vcpuid) /* Allocate and initialize new vcpu structure. */ vcpu =3D calloc(1, sizeof(*vcpu)); TEST_ASSERT(vcpu !=3D NULL, "Insufficient Memory"); + vcpu->id =3D vcpuid; - vcpu->fd =3D ioctl(vm->fd, KVM_CREATE_VCPU, vcpuid); - TEST_ASSERT(vcpu->fd >=3D 0, "KVM_CREATE_VCPU failed, rc: %i errno: %i", - vcpu->fd, errno); + vcpu->fd =3D __vm_ioctl(vm, KVM_CREATE_VCPU, (void *)(unsigned long)vcpui= d); + TEST_ASSERT(vcpu->fd >=3D 0, KVM_IOCTL_ERROR(KVM_CREATE_VCPU, vcpu->fd)); =20 TEST_ASSERT(vcpu_mmap_sz() >=3D sizeof(*vcpu->state), "vcpu mmap size " "smaller than expected, vcpu_mmap_sz: %i expected_min: %zi", @@ -1496,11 +1416,7 @@ void *addr_gpa2alias(struct kvm_vm *vm, vm_paddr_t g= pa) */ void vm_create_irqchip(struct kvm_vm *vm) { - int ret; - - ret =3D ioctl(vm->fd, KVM_CREATE_IRQCHIP, 0); - TEST_ASSERT(ret =3D=3D 0, "KVM_CREATE_IRQCHIP IOCTL failed, " - "rc: %i errno: %i", ret, errno); + vm_ioctl(vm, KVM_CREATE_IRQCHIP, NULL); =20 vm->has_irqchip =3D true; } @@ -1721,7 +1637,7 @@ int _kvm_create_device(struct kvm_vm *vm, uint64_t ty= pe, bool test, int *fd) create_dev.type =3D type; create_dev.fd =3D -1; create_dev.flags =3D test ? KVM_CREATE_DEVICE_TEST : 0; - ret =3D ioctl(vm_get_fd(vm), KVM_CREATE_DEVICE, &create_dev); + ret =3D __vm_ioctl(vm, KVM_CREATE_DEVICE, &create_dev); *fd =3D create_dev.fd; return ret; } @@ -1817,7 +1733,7 @@ void kvm_irq_line(struct kvm_vm *vm, uint32_t irq, in= t level) { int ret =3D _kvm_irq_line(vm, irq, level); =20 - TEST_ASSERT(ret >=3D 0, "KVM_IRQ_LINE failed, rc: %i errno: %i", ret, err= no); + TEST_ASSERT(ret >=3D 0, KVM_IOCTL_ERROR(KVM_IRQ_LINE, ret)); } =20 struct kvm_irq_routing *kvm_gsi_routing_create(void) @@ -1856,7 +1772,7 @@ int _kvm_gsi_routing_write(struct kvm_vm *vm, struct = kvm_irq_routing *routing) int ret; =20 assert(routing); - ret =3D ioctl(vm_get_fd(vm), KVM_SET_GSI_ROUTING, routing); + ret =3D __vm_ioctl(vm, KVM_SET_GSI_ROUTING, routing); free(routing); =20 return ret; @@ -2167,8 +2083,3 @@ unsigned int vm_calc_num_guest_pages(enum vm_guest_mo= de mode, size_t size) n =3D DIV_ROUND_UP(size, vm_guest_mode_params[mode].page_size); return vm_adjust_num_guest_pages(mode, n); } - -int vm_get_stats_fd(struct kvm_vm *vm) -{ - return ioctl(vm->fd, KVM_GET_STATS_FD, NULL); -} diff --git a/tools/testing/selftests/kvm/set_memory_region_test.c b/tools/t= esting/selftests/kvm/set_memory_region_test.c index fa4613010091..482ae2ad662c 100644 --- a/tools/testing/selftests/kvm/set_memory_region_test.c +++ b/tools/testing/selftests/kvm/set_memory_region_test.c @@ -317,8 +317,7 @@ static void test_zero_memory_regions(void) vm =3D vm_create(0); vm_vcpu_add(vm, VCPU_ID); =20 - TEST_ASSERT(!ioctl(vm_get_fd(vm), KVM_SET_NR_MMU_PAGES, 64), - "KVM_SET_NR_MMU_PAGES failed, errno =3D %d\n", errno); + vm_ioctl(vm, KVM_SET_NR_MMU_PAGES, (void *)64ul); vcpu_run(vm, VCPU_ID); =20 run =3D vcpu_state(vm, VCPU_ID); @@ -340,7 +339,7 @@ static int test_memory_region_add(struct kvm_vm *vm, vo= id *mem, uint32_t slot, region.guest_phys_addr =3D guest_addr; region.memory_size =3D size; region.userspace_addr =3D (uintptr_t) mem; - ret =3D ioctl(vm_get_fd(vm), KVM_SET_USER_MEMORY_REGION, ®ion); + ret =3D __vm_ioctl(vm, KVM_SET_USER_MEMORY_REGION, ®ion); =20 return ret; } --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 AD9E0C433F5 for ; Fri, 11 Mar 2022 05:52:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346621AbiCKFx6 (ORCPT ); Fri, 11 Mar 2022 00:53:58 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55724 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346588AbiCKFwg (ORCPT ); Fri, 11 Mar 2022 00:52:36 -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 EFD78F744C for ; Thu, 10 Mar 2022 21:51:31 -0800 (PST) Received: by mail-pj1-x1049.google.com with SMTP id w3-20020a17090ac98300b001b8b914e91aso4628604pjt.0 for ; Thu, 10 Mar 2022 21:51:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=U30BYslSqMgS8jPD44uuCLBCYU7Bi5OSOxGJc5mPP8s=; b=FNcwLb7mLFAUSDK/IzRwHT2rVBfteGRQ43JSGQT8n2grIoCb8m1RbHDsZzWRmkWb48 9MVjBZUzMaYCnc3iY0WHXiBomCjeF3oG2sFEWLpBIPMD8MiNAHJZMNEl23XZiYm975IZ 16+tzCDLv5DnsJmpzkf8mpFiQipB47DKeZERabm7xqIH2YOH92ZSTBDrHgEegTeTkR4p Fx8rhZpWlpgs2OC/kLmSgJpK4m4qyoaHWIX519BRNFIdGNZRNFyL63PZ8WgYybFAQ6rV 0tP4FaVcYSu9WGkWNkzmRR/ajmyD1HoOW4rWsbIER0L/0efjq+wTNjrWvHvbEkibhOju 35IQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=U30BYslSqMgS8jPD44uuCLBCYU7Bi5OSOxGJc5mPP8s=; b=RYYnl8N0i2vM0ArrLLL5E/XaNObWQpDtJD16gtEX1GkJSx0TGC7Ebls5+XAW4WCeR9 wBFnCRgZ+sTBNmGbcJ1nZ7FH1gCpw9Bg+z0YDWL20jkH/3PS/awT2wrApDjzfeifBkYX MQy4rzag0q4erfUP9g5gQiW/ueqEmlYnx5w6Jn+ftvjVESn3Uv0MmmI/HwCKM0xIrnEQ doeJhvVJEvoGMrpGogmiTrHRG0UhCs9GFGl+JmxG/e0ifoE6BrFyvZ2dbra/12iPd4Hh 3oQNbh4tFGKcuRzQgNhPYucLqg6JZk6y+yqFGNvmIN0lTltUgnBlARTStnh3P/Z26bc9 qlrg== X-Gm-Message-State: AOAM530RkDU8HGaa5AlZzaCLLWgw7kqNU8AMbfqkC+aX3oc60sUnWgFx /ELCK/VZn4iAz8IuatFJoPSbg89TvlVr5zvUc8HuDRXYuUI6xU/nBlmuiHjWYgKjT6qbalINpGM Gpli5q/fSdPsxRgTOtnbUqcs/VDWszPdfexU7Pog5hLfQ5Y9hKlh+K4e3A/+bLiw0bMEafA== X-Google-Smtp-Source: ABdhPJyhyV97BT9f/9mApo1EDzJ793e/VzYIsTLRMdBPIF87JzEoq+Z2Ob8e0Wd2qwtSYHsi33ui2dj3f3s= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:903:20c4:b0:151:fe42:aaa3 with SMTP id i4-20020a17090320c400b00151fe42aaa3mr9017221plb.44.1646977890912; Thu, 10 Mar 2022 21:51:30 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:26 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-16-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 015/105] KVM: selftests: Make kvm_ioctl() a wrapper to pretty print ioctl name From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Deliberately do not use __stringify(), as that will expand the ioctl all the way down to its numerical sequence, the intent is print the name of the macro. Signed-off-by: Sean Christopherson --- .../selftests/kvm/include/kvm_util_base.h | 16 ++++++++-- tools/testing/selftests/kvm/lib/kvm_util.c | 31 +++---------------- .../selftests/kvm/x86_64/hyperv_cpuid.c | 2 +- 3 files changed, 20 insertions(+), 29 deletions(-) diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/te= sting/selftests/kvm/include/kvm_util_base.h index 09e84ce50331..e8dff9bdab89 100644 --- a/tools/testing/selftests/kvm/include/kvm_util_base.h +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h @@ -109,8 +109,19 @@ int kvm_check_cap(long cap); =20 #define KVM_IOCTL_ERROR(_ioctl, _ret) __KVM_IOCTL_ERROR(#_ioctl, _ret) =20 -int __kvm_ioctl(struct kvm_vm *vm, unsigned long cmd, void *arg); -void kvm_ioctl(struct kvm_vm *vm, unsigned long cmd, void *arg); +#define __kvm_ioctl(kvm_fd, cmd, arg) \ + ioctl(kvm_fd, cmd, arg) + +static inline void _kvm_ioctl(int kvm_fd, unsigned long cmd, const char *n= ame, + void *arg) +{ + int ret =3D __kvm_ioctl(kvm_fd, cmd, arg); + + TEST_ASSERT(!ret, __KVM_IOCTL_ERROR(name, ret)); +} + +#define kvm_ioctl(kvm_fd, cmd, arg) \ + _kvm_ioctl(kvm_fd, cmd, #cmd, arg) =20 int __vm_ioctl(struct kvm_vm *vm, unsigned long cmd, void *arg); void _vm_ioctl(struct kvm_vm *vm, unsigned long cmd, const char *name, voi= d *arg); @@ -484,6 +495,7 @@ unsigned int vm_get_page_size(struct kvm_vm *vm); unsigned int vm_get_page_shift(struct kvm_vm *vm); unsigned long vm_compute_max_gfn(struct kvm_vm *vm); uint64_t vm_get_max_gfn(struct kvm_vm *vm); +int vm_get_kvm_fd(struct kvm_vm *vm); int vm_get_fd(struct kvm_vm *vm); =20 unsigned int vm_calc_num_guest_pages(enum vm_guest_mode mode, size_t size); diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index 974de21eef23..1b120c7a7845 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -1580,32 +1580,6 @@ void _vm_ioctl(struct kvm_vm *vm, unsigned long cmd,= const char *name, void *arg TEST_ASSERT(!ret, __KVM_IOCTL_ERROR(name, ret)); } =20 -/* - * KVM system ioctl - * - * Input Args: - * vm - Virtual Machine - * cmd - Ioctl number - * arg - Argument to pass to the ioctl - * - * Return: None - * - * Issues an arbitrary ioctl on a KVM fd. - */ -void kvm_ioctl(struct kvm_vm *vm, unsigned long cmd, void *arg) -{ - int ret; - - ret =3D ioctl(vm->kvm_fd, cmd, arg); - TEST_ASSERT(ret =3D=3D 0, "KVM ioctl %lu failed, rc: %i errno: %i (%s)", - cmd, ret, errno, strerror(errno)); -} - -int __kvm_ioctl(struct kvm_vm *vm, unsigned long cmd, void *arg) -{ - return ioctl(vm->kvm_fd, cmd, arg); -} - /* * Device Ioctl */ @@ -2039,6 +2013,11 @@ uint64_t vm_get_max_gfn(struct kvm_vm *vm) return vm->max_gfn; } =20 +int vm_get_kvm_fd(struct kvm_vm *vm) +{ + return vm->kvm_fd; +} + int vm_get_fd(struct kvm_vm *vm) { return vm->fd; diff --git a/tools/testing/selftests/kvm/x86_64/hyperv_cpuid.c b/tools/test= ing/selftests/kvm/x86_64/hyperv_cpuid.c index 7e45a3df8f98..896e1e7c1df7 100644 --- a/tools/testing/selftests/kvm/x86_64/hyperv_cpuid.c +++ b/tools/testing/selftests/kvm/x86_64/hyperv_cpuid.c @@ -123,7 +123,7 @@ void test_hv_cpuid_e2big(struct kvm_vm *vm, bool system) if (!system) ret =3D __vcpu_ioctl(vm, VCPU_ID, KVM_GET_SUPPORTED_HV_CPUID, &cpuid); else - ret =3D __kvm_ioctl(vm, KVM_GET_SUPPORTED_HV_CPUID, &cpuid); + ret =3D __kvm_ioctl(vm_get_kvm_fd(vm), KVM_GET_SUPPORTED_HV_CPUID, &cpui= d); =20 TEST_ASSERT(ret =3D=3D -1 && errno =3D=3D E2BIG, "%s KVM_GET_SUPPORTED_HV_CPUID didn't fail with -E2BIG when" --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 AB4F3C433F5 for ; Fri, 11 Mar 2022 05:52:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242157AbiCKFxt (ORCPT ); Fri, 11 Mar 2022 00:53:49 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56064 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346594AbiCKFwm (ORCPT ); Fri, 11 Mar 2022 00:52:42 -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 130D6FABE6 for ; Thu, 10 Mar 2022 21:51:32 -0800 (PST) Received: by mail-pf1-x449.google.com with SMTP id y193-20020a62ceca000000b004f6f5bbaf7cso4600029pfg.16 for ; Thu, 10 Mar 2022 21:51:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=JZ18FvKyAgPHX4bJsnv+PWp+FVnhqOl3G32xWvFHUnA=; b=cCXD9CQKQa4o6Cy8J8TfGp3yHPjrpopdDOPGsraEysClIyvb0OvkAOxfugVyip6qGn y69AC2bl1NabaQTlUWpobE3eQGJDKoZttgU7Spzp7m75cdNsq0DXnceoL643Q/TWJWqp tPvktgFBmchJzVWefuvT4gUrFkrW9gR7wYQTa5iHwNCFIJrtb+OgHqE0PiNY9oK+qGKC eDsjyIlQQl8sWx/toEEPBfswKFPkz1jwvI+GPJaHt1UEc/gE+3A//waYaE/MkBoJKtgr RRxSEr28KscMNUSUU2JjODXw3bxX4OhgMWtJkNXRBeLPzpIO7LxlmKx4FfmFBre8UPcF pXkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=JZ18FvKyAgPHX4bJsnv+PWp+FVnhqOl3G32xWvFHUnA=; b=b6IaEDQhqB/UtcgoIrU95UucVnwNpCV49VssqIOptqS5KnuapwFLP94vtW2Cxh+QnW 8H68a5+3rH3nobzKFohnCrviLAfxFJ+CBS3gO8OLcCvfNKwdOZJIx7xNUUCFCN9Arbx5 BwlFS1iQwTLaLZ9t7JbjA843uX9M3/G5kQcbxSIVu3CbMu9NciW/+pp7TO60KwdM28uH r2Mv9T0RwejxZiL6mQpmd1BeMgPKH+/jYB8EGS18qEbOF4vtdTyz/H7KzaydvIIbUU/r Wu4p16Emhkp405add/p3SlXDb0zUifOlzW0abAoMuWmiDzDY1fnjj3NWES09g5VLpOfq Lkng== X-Gm-Message-State: AOAM532ay2iZvYYS6jQ7H/iGAO4apFtG73Z6apNyvF8xkAwJpWmNW4Xu 1RJ08hB6NUR+wkSSjHQr44kGTJshAWTn+rYSA+74Cspy39yqrmxcKzPz81d7HUunA3ycRn2dt6w moZEN2ElxIovSs7fHgjw9P+Z4qkndDxAW+MjTEw5wEjbHZG5JboZ8T+hrz8/2tKjSDs1wCQ== X-Google-Smtp-Source: ABdhPJx1cXVvTiNLkxFNCBhpxdqHcwfavHgc0rjvkR2vfHvRuOUUOcub/aLkP9/tnb3mhinFRXPCOszSngA= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:903:2287:b0:151:dbaf:564a with SMTP id b7-20020a170903228700b00151dbaf564amr8986209plh.110.1646977892354; Thu, 10 Mar 2022 21:51:32 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:27 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-17-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 016/105] KVM: selftests: Use kvm_ioctl() helpers From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/lib/aarch64/processor.c | 4 +-- tools/testing/selftests/kvm/lib/guest_modes.c | 2 +- tools/testing/selftests/kvm/lib/kvm_util.c | 10 +++--- .../selftests/kvm/lib/x86_64/processor.c | 31 ++++++------------- .../kvm/x86_64/get_msr_index_features.c | 16 +++------- .../selftests/kvm/x86_64/mmio_warning_test.c | 6 ++-- 6 files changed, 24 insertions(+), 45 deletions(-) diff --git a/tools/testing/selftests/kvm/lib/aarch64/processor.c b/tools/te= sting/selftests/kvm/lib/aarch64/processor.c index 9343d82519b4..06c3dafc82c4 100644 --- a/tools/testing/selftests/kvm/lib/aarch64/processor.c +++ b/tools/testing/selftests/kvm/lib/aarch64/processor.c @@ -469,8 +469,8 @@ void aarch64_get_supported_page_sizes(uint32_t ipa, }; =20 kvm_fd =3D open_kvm_dev_path_or_exit(); - vm_fd =3D ioctl(kvm_fd, KVM_CREATE_VM, ipa); - TEST_ASSERT(vm_fd >=3D 0, "Can't create VM"); + vm_fd =3D __kvm_ioctl(kvm_fd, KVM_CREATE_VM, ipa); + TEST_ASSERT(vm_fd >=3D 0, KVM_IOCTL_ERROR(KVM_CREATE_VM, vm_fd)); =20 vcpu_fd =3D ioctl(vm_fd, KVM_CREATE_VCPU, 0); TEST_ASSERT(vcpu_fd >=3D 0, "Can't create vcpu"); diff --git a/tools/testing/selftests/kvm/lib/guest_modes.c b/tools/testing/= selftests/kvm/lib/guest_modes.c index 8784013b747c..9ab27b4169bf 100644 --- a/tools/testing/selftests/kvm/lib/guest_modes.c +++ b/tools/testing/selftests/kvm/lib/guest_modes.c @@ -65,7 +65,7 @@ void guest_modes_append_default(void) struct kvm_s390_vm_cpu_processor info; =20 kvm_fd =3D open_kvm_dev_path_or_exit(); - vm_fd =3D ioctl(kvm_fd, KVM_CREATE_VM, 0); + vm_fd =3D __kvm_ioctl(kvm_fd, KVM_CREATE_VM, 0); kvm_device_access(vm_fd, KVM_S390_VM_CPU_MODEL, KVM_S390_VM_CPU_PROCESSOR, &info, false); close(vm_fd); diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index 1b120c7a7845..76f8b924fb31 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -76,9 +76,8 @@ int kvm_check_cap(long cap) int kvm_fd; =20 kvm_fd =3D open_kvm_dev_path_or_exit(); - ret =3D ioctl(kvm_fd, KVM_CHECK_EXTENSION, cap); - TEST_ASSERT(ret >=3D 0, "KVM_CHECK_EXTENSION IOCTL failed,\n" - " rc: %i errno: %i", ret, errno); + ret =3D __kvm_ioctl(kvm_fd, KVM_CHECK_EXTENSION, cap); + TEST_ASSERT(ret >=3D 0, KVM_IOCTL_ERROR(KVM_CHECK_EXTENSION, ret)); =20 close(kvm_fd); =20 @@ -104,9 +103,8 @@ static void vm_open(struct kvm_vm *vm) exit(KSFT_SKIP); } =20 - vm->fd =3D ioctl(vm->kvm_fd, KVM_CREATE_VM, vm->type); - TEST_ASSERT(vm->fd >=3D 0, "KVM_CREATE_VM ioctl failed, " - "rc: %i errno: %i", vm->fd, errno); + vm->fd =3D __kvm_ioctl(vm->kvm_fd, KVM_CREATE_VM, vm->type); + TEST_ASSERT(vm->fd >=3D 0, KVM_IOCTL_ERROR(KVM_CREATE_VM, vm->fd)); } =20 const char *vm_guest_mode_string(uint32_t i) diff --git a/tools/testing/selftests/kvm/lib/x86_64/processor.c b/tools/tes= ting/selftests/kvm/lib/x86_64/processor.c index 4065fc4daada..64dd2acb2ab7 100644 --- a/tools/testing/selftests/kvm/lib/x86_64/processor.c +++ b/tools/testing/selftests/kvm/lib/x86_64/processor.c @@ -677,7 +677,7 @@ void vm_xsave_req_perm(int bit) }; =20 kvm_fd =3D open_kvm_dev_path_or_exit(); - rc =3D ioctl(kvm_fd, KVM_GET_DEVICE_ATTR, &attr); + rc =3D __kvm_ioctl(kvm_fd, KVM_GET_DEVICE_ATTR, &attr); close(kvm_fd); if (rc =3D=3D -1 && (errno =3D=3D ENXIO || errno =3D=3D EINVAL)) exit(KSFT_SKIP); @@ -777,7 +777,6 @@ static struct kvm_cpuid2 *allocate_kvm_cpuid2(void) struct kvm_cpuid2 *kvm_get_supported_cpuid(void) { static struct kvm_cpuid2 *cpuid; - int ret; int kvm_fd; =20 if (cpuid) @@ -786,9 +785,7 @@ struct kvm_cpuid2 *kvm_get_supported_cpuid(void) cpuid =3D allocate_kvm_cpuid2(); kvm_fd =3D open_kvm_dev_path_or_exit(); =20 - ret =3D ioctl(kvm_fd, KVM_GET_SUPPORTED_CPUID, cpuid); - TEST_ASSERT(ret =3D=3D 0, "KVM_GET_SUPPORTED_CPUID failed %d %d\n", - ret, errno); + kvm_ioctl(kvm_fd, KVM_GET_SUPPORTED_CPUID, cpuid); =20 close(kvm_fd); return cpuid; @@ -818,7 +815,7 @@ uint64_t kvm_get_feature_msr(uint64_t msr_index) buffer.entry.index =3D msr_index; kvm_fd =3D open_kvm_dev_path_or_exit(); =20 - r =3D ioctl(kvm_fd, KVM_GET_MSRS, &buffer.header); + r =3D __kvm_ioctl(kvm_fd, KVM_GET_MSRS, &buffer.header); TEST_ASSERT(r =3D=3D 1, "KVM_GET_MSRS IOCTL failed,\n" " rc: %i errno: %i", r, errno); =20 @@ -990,9 +987,9 @@ static int kvm_get_num_msrs_fd(int kvm_fd) int r; =20 nmsrs.nmsrs =3D 0; - r =3D ioctl(kvm_fd, KVM_GET_MSR_INDEX_LIST, &nmsrs); - TEST_ASSERT(r =3D=3D -1 && errno =3D=3D E2BIG, "Unexpected result from KV= M_GET_MSR_INDEX_LIST probe, r: %i", - r); + r =3D __kvm_ioctl(kvm_fd, KVM_GET_MSR_INDEX_LIST, &nmsrs); + TEST_ASSERT(r =3D=3D -1 && errno =3D=3D E2BIG, + "Unexpected result from KVM_GET_MSR_INDEX_LIST probe, r: %i", r); =20 return nmsrs.nmsrs; } @@ -1005,19 +1002,16 @@ static int kvm_get_num_msrs(struct kvm_vm *vm) struct kvm_msr_list *kvm_get_msr_index_list(void) { struct kvm_msr_list *list; - int nmsrs, r, kvm_fd; + int nmsrs, kvm_fd; =20 kvm_fd =3D open_kvm_dev_path_or_exit(); =20 nmsrs =3D kvm_get_num_msrs_fd(kvm_fd); list =3D malloc(sizeof(*list) + nmsrs * sizeof(list->indices[0])); list->nmsrs =3D nmsrs; - r =3D ioctl(kvm_fd, KVM_GET_MSR_INDEX_LIST, list); + kvm_ioctl(kvm_fd, KVM_GET_MSR_INDEX_LIST, list); close(kvm_fd); =20 - TEST_ASSERT(r =3D=3D 0, "Unexpected result from KVM_GET_MSR_INDEX_LIST, r= : %i", - r); - return list; } =20 @@ -1063,9 +1057,7 @@ struct kvm_x86_state *vcpu_save_state(struct kvm_vm *= vm, uint32_t vcpuid) nmsrs =3D kvm_get_num_msrs(vm); list =3D malloc(sizeof(*list) + nmsrs * sizeof(list->indices[0])); list->nmsrs =3D nmsrs; - r =3D ioctl(vm->kvm_fd, KVM_GET_MSR_INDEX_LIST, list); - TEST_ASSERT(r =3D=3D 0, "Unexpected result from KVM_GET_MSR_INDEX_LIST, r= : %i", - r); + kvm_ioctl(vm->kvm_fd, KVM_GET_MSR_INDEX_LIST, list); =20 state =3D malloc(sizeof(*state) + nmsrs * sizeof(state->msrs.entries[0])); r =3D ioctl(vcpu->fd, KVM_GET_VCPU_EVENTS, &state->events); @@ -1373,7 +1365,6 @@ uint64_t kvm_hypercall(uint64_t nr, uint64_t a0, uint= 64_t a1, uint64_t a2, struct kvm_cpuid2 *kvm_get_supported_hv_cpuid(void) { static struct kvm_cpuid2 *cpuid; - int ret; int kvm_fd; =20 if (cpuid) @@ -1382,9 +1373,7 @@ struct kvm_cpuid2 *kvm_get_supported_hv_cpuid(void) cpuid =3D allocate_kvm_cpuid2(); kvm_fd =3D open_kvm_dev_path_or_exit(); =20 - ret =3D ioctl(kvm_fd, KVM_GET_SUPPORTED_HV_CPUID, cpuid); - TEST_ASSERT(ret =3D=3D 0, "KVM_GET_SUPPORTED_HV_CPUID failed %d %d\n", - ret, errno); + kvm_ioctl(kvm_fd, KVM_GET_SUPPORTED_HV_CPUID, cpuid); =20 close(kvm_fd); return cpuid; diff --git a/tools/testing/selftests/kvm/x86_64/get_msr_index_features.c b/= tools/testing/selftests/kvm/x86_64/get_msr_index_features.c index 8aed0db1331d..4ef60adbe108 100644 --- a/tools/testing/selftests/kvm/x86_64/get_msr_index_features.c +++ b/tools/testing/selftests/kvm/x86_64/get_msr_index_features.c @@ -34,7 +34,7 @@ static int kvm_num_index_msrs(int kvm_fd, int nmsrs) =20 static void test_get_msr_index(void) { - int old_res, res, kvm_fd, r; + int old_res, res, kvm_fd; struct kvm_msr_list *list; =20 kvm_fd =3D open_kvm_dev_path_or_exit(); @@ -50,11 +50,8 @@ static void test_get_msr_index(void) =20 list =3D malloc(sizeof(*list) + old_res * sizeof(list->indices[0])); list->nmsrs =3D old_res; - r =3D ioctl(kvm_fd, KVM_GET_MSR_INDEX_LIST, list); + kvm_ioctl(kvm_fd, KVM_GET_MSR_INDEX_LIST, list); =20 - TEST_ASSERT(r =3D=3D 0, - "Unexpected result from KVM_GET_MSR_FEATURE_INDEX_LIST, r: %i", - r); TEST_ASSERT(list->nmsrs =3D=3D old_res, "Expecting nmsrs to be identical"= ); free(list); =20 @@ -68,7 +65,7 @@ static int kvm_num_feature_msrs(int kvm_fd, int nmsrs) =20 list =3D malloc(sizeof(*list) + nmsrs * sizeof(list->indices[0])); list->nmsrs =3D nmsrs; - r =3D ioctl(kvm_fd, KVM_GET_MSR_FEATURE_INDEX_LIST, list); + r =3D __kvm_ioctl(kvm_fd, KVM_GET_MSR_FEATURE_INDEX_LIST, list); TEST_ASSERT(r =3D=3D -1 && errno =3D=3D E2BIG, "Unexpected result from KVM_GET_MSR_FEATURE_INDEX_LIST probe, r: %i", r); @@ -81,15 +78,10 @@ static int kvm_num_feature_msrs(int kvm_fd, int nmsrs) struct kvm_msr_list *kvm_get_msr_feature_list(int kvm_fd, int nmsrs) { struct kvm_msr_list *list; - int r; =20 list =3D malloc(sizeof(*list) + nmsrs * sizeof(list->indices[0])); list->nmsrs =3D nmsrs; - r =3D ioctl(kvm_fd, KVM_GET_MSR_FEATURE_INDEX_LIST, list); - - TEST_ASSERT(r =3D=3D 0, - "Unexpected result from KVM_GET_MSR_FEATURE_INDEX_LIST, r: %i", - r); + kvm_ioctl(kvm_fd, KVM_GET_MSR_FEATURE_INDEX_LIST, list); =20 return list; } diff --git a/tools/testing/selftests/kvm/x86_64/mmio_warning_test.c b/tools= /testing/selftests/kvm/x86_64/mmio_warning_test.c index 9f55ccd169a1..31ae837fedb1 100644 --- a/tools/testing/selftests/kvm/x86_64/mmio_warning_test.c +++ b/tools/testing/selftests/kvm/x86_64/mmio_warning_test.c @@ -59,10 +59,10 @@ void test(void) =20 kvm =3D open("/dev/kvm", O_RDWR); TEST_ASSERT(kvm !=3D -1, "failed to open /dev/kvm"); - kvmvm =3D ioctl(kvm, KVM_CREATE_VM, 0); - TEST_ASSERT(kvmvm !=3D -1, "KVM_CREATE_VM failed"); + kvmvm =3D __kvm_ioctl(kvm, KVM_CREATE_VM, 0); + TEST_ASSERT(kvmvm > 0, KVM_IOCTL_ERROR(KVM_CREATE_VM, kvmvm)); kvmcpu =3D ioctl(kvmvm, KVM_CREATE_VCPU, 0); - TEST_ASSERT(kvmcpu !=3D -1, "KVM_CREATE_VCPU failed"); + TEST_ASSERT(kvmcpu !=3D -1, KVM_IOCTL_ERROR(KVM_CREATE_VCPU, kvmcpu)); run =3D (struct kvm_run *)mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, kvmcpu, 0); tc.kvmcpu =3D kvmcpu; --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 CC728C433F5 for ; Fri, 11 Mar 2022 05:53:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346619AbiCKFyN (ORCPT ); Fri, 11 Mar 2022 00:54:13 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54918 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346602AbiCKFwm (ORCPT ); Fri, 11 Mar 2022 00:52:42 -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 61010ECB30 for ; Thu, 10 Mar 2022 21:51:34 -0800 (PST) Received: by mail-pj1-x104a.google.com with SMTP id p8-20020a17090a74c800b001bf257861efso7268144pjl.6 for ; Thu, 10 Mar 2022 21:51:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=emCA/tvvyJ2efmmGNI3zej5xo0FQCGV6fGdLSat4I7c=; b=lWtf2u3vSetMdZSOR+twpZfb0d0apL+VekYKn3VhGok6LLdMZHCuxKf0fWY2+ACJ1X JR3BrxghU1yFmU7XYIXMu6JbUWNqE9AP2O3MXVVlfI9I1wuBUKD6IBj6Ch8HzSZ73Gri RrKbXcz8v4Ld5hAy/MJz6kwsl7RFmUWEbpBnvtjnfTdcONj/UIYyRWygJtcpnQtFNcuU wROFXjDVMPtDtCE7a6vaOVqc7kjbphu8TxahJIAFFhkC6jT8Rdq5dhcB+7NsmKKp4zSA q+LOzX64bG2elXXjQZVPxYd4kd9nuhipWPItBIjAhlC7SaeKztoeimmEm33oBY/WTYMR Q7pg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=emCA/tvvyJ2efmmGNI3zej5xo0FQCGV6fGdLSat4I7c=; b=wLB2jYIXhLdcYEHTnSSemR8GGY1vjcJzKd7JMDa5yivIwUZ09nXulmEiwIBsWOajMV LzwgJSMmUlEDFVGivOm19IcA8p9O9dOcDIG066hQzUszbPVS+1fCgornnnEvZVL6313k 5X1YJiGKt0mz9XXINp06IDI2x+RwHL+HXISAPgPm+CJAh1sGgHEL7tZvW7kUzGoPYM4u RS7DXygR/q7TbqdGzQZSLynTEYMiSvDuKaV49bVPAOCawoF8j0wsAXR1mj+eCmA4vRX/ RSAPGCsVbb/zBGxue43PjnaHr/8PzfF4pfVLrKs05bPH1VDM98v0xQMXi5Zgr4YYVFt0 XVlA== X-Gm-Message-State: AOAM532+11yOVWo+R249IT+GdQSnmkazdshX6fQaKNocinEND3AHyvhz dXipa7nC9n8wTf903FheVWELCosbMDC5D27fV1rAps/gPQGttsynSV/74QDhVtDGGwdLRgVIS9x dZpGYLQNRekH/lRt3Iee4fXgN3IuKtPONip3MXzo6Ci1XFUUZwo0TbCt7wzu7Hb/rG4ZaIg== X-Google-Smtp-Source: ABdhPJxt9q09h8ksPAnjIoTfHEG4b9LnDxuEEWORenT0r305qH/wfd3AKOK1MW1Nq/ey1T/Etxw4EnG7F24= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:aa7:9017:0:b0:4df:e33f:f1b4 with SMTP id m23-20020aa79017000000b004dfe33ff1b4mr8800411pfo.80.1646977893746; Thu, 10 Mar 2022 21:51:33 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:28 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-18-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 017/105] KVM: selftests: Make x86-64's register dump helpers static From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/lib/kvm_util_internal.h | 34 ------------------ .../selftests/kvm/lib/x86_64/processor.c | 36 ++----------------- 2 files changed, 2 insertions(+), 68 deletions(-) diff --git a/tools/testing/selftests/kvm/lib/kvm_util_internal.h b/tools/te= sting/selftests/kvm/lib/kvm_util_internal.h index 0c7c44499129..544b90df2f80 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util_internal.h +++ b/tools/testing/selftests/kvm/lib/kvm_util_internal.h @@ -88,40 +88,6 @@ struct vcpu *vcpu_get(struct kvm_vm *vm, uint32_t vcpuid= ); */ void virt_dump(FILE *stream, struct kvm_vm *vm, uint8_t indent); =20 -/* - * Register Dump - * - * Input Args: - * stream - Output FILE stream - * regs - Registers - * indent - Left margin indent amount - * - * Output Args: None - * - * Return: None - * - * Dumps the state of the registers given by @regs, to the FILE stream - * given by @stream. - */ -void regs_dump(FILE *stream, struct kvm_regs *regs, uint8_t indent); - -/* - * System Register Dump - * - * Input Args: - * stream - Output FILE stream - * sregs - System registers - * indent - Left margin indent amount - * - * Output Args: None - * - * Return: None - * - * Dumps the state of the system registers given by @sregs, to the FILE st= ream - * given by @stream. - */ -void sregs_dump(FILE *stream, struct kvm_sregs *sregs, uint8_t indent); - struct userspace_mem_region * memslot2region(struct kvm_vm *vm, uint32_t memslot); =20 diff --git a/tools/testing/selftests/kvm/lib/x86_64/processor.c b/tools/tes= ting/selftests/kvm/lib/x86_64/processor.c index 64dd2acb2ab7..c47b84449a8a 100644 --- a/tools/testing/selftests/kvm/lib/x86_64/processor.c +++ b/tools/testing/selftests/kvm/lib/x86_64/processor.c @@ -51,8 +51,7 @@ struct pageTableEntry { uint64_t execute_disable:1; }; =20 -void regs_dump(FILE *stream, struct kvm_regs *regs, - uint8_t indent) +static void regs_dump(FILE *stream, struct kvm_regs *regs, uint8_t indent) { fprintf(stream, "%*srax: 0x%.16llx rbx: 0x%.16llx " "rcx: 0x%.16llx rdx: 0x%.16llx\n", @@ -75,21 +74,6 @@ void regs_dump(FILE *stream, struct kvm_regs *regs, regs->rip, regs->rflags); } =20 -/* - * Segment Dump - * - * Input Args: - * stream - Output FILE stream - * segment - KVM segment - * indent - Left margin indent amount - * - * Output Args: None - * - * Return: None - * - * Dumps the state of the KVM segment given by @segment, to the FILE stream - * given by @stream. - */ static void segment_dump(FILE *stream, struct kvm_segment *segment, uint8_t indent) { @@ -107,21 +91,6 @@ static void segment_dump(FILE *stream, struct kvm_segme= nt *segment, segment->unusable, segment->padding); } =20 -/* - * dtable Dump - * - * Input Args: - * stream - Output FILE stream - * dtable - KVM dtable - * indent - Left margin indent amount - * - * Output Args: None - * - * Return: None - * - * Dumps the state of the KVM dtable given by @dtable, to the FILE stream - * given by @stream. - */ static void dtable_dump(FILE *stream, struct kvm_dtable *dtable, uint8_t indent) { @@ -131,8 +100,7 @@ static void dtable_dump(FILE *stream, struct kvm_dtable= *dtable, dtable->padding[0], dtable->padding[1], dtable->padding[2]); } =20 -void sregs_dump(FILE *stream, struct kvm_sregs *sregs, - uint8_t indent) +static void sregs_dump(FILE *stream, struct kvm_sregs *sregs, uint8_t inde= nt) { unsigned int i; =20 --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 DCC15C433F5 for ; Fri, 11 Mar 2022 05:53:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346719AbiCKFys (ORCPT ); Fri, 11 Mar 2022 00:54:48 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56092 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346604AbiCKFwn (ORCPT ); Fri, 11 Mar 2022 00:52:43 -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 6DAE8F119D for ; Thu, 10 Mar 2022 21:51:36 -0800 (PST) Received: by mail-pg1-x549.google.com with SMTP id u4-20020a63b544000000b0037c62d8b0ecso4220325pgo.13 for ; Thu, 10 Mar 2022 21:51:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=83ox6MFG0EX4V2yEKmicUksG2rfzlzzM1E5YxwUEA4Q=; b=VcjJlw1fpl5emaHSGbqT6XdvxtzWzgDYRmg7UBnEB2LZWC0zekMAsnATxrnTaWYHqR icwsuR4u9obW+FzOaw/2vACjE9lvR8fN3TigNUud9OulhcQ/iEnxOV9msDqxyGMz83Py bUA6gQIfW6+Pssmj7xO18Z+Rb7yP+rW/+i7SjMuv4LdHZFc+qFgVz3UwJ4yAHiAtq6Go QzDiw7j2ccAKpa3+uFG5ruYbtFvu+aE0DRTgx7X6EGLJzmdWphFw/1lFV6sinp1j+sZZ otU07GVpPGj+q8mckaWoPgZs4wSOMiJdkQ36vIKTPi/SD0kD9paVvLNqBzB+krK/HhEH wKlQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=83ox6MFG0EX4V2yEKmicUksG2rfzlzzM1E5YxwUEA4Q=; b=zGkcyPHOCJLwZWumAMG71z6Jvs51dEjk/VX9PTV/9z8MMDNSUi+hqTeZ0Kp03aoLaV BcCOHS/dBZFeRH3jnUFWEO7NnJ5lTgYOHbeQtBmGMItdDO3hRl1aaHh1MFb7KrM719Dx ymdrQ5ZgAndTPtaahPrnZ+mLvhwSPSNVTgj3nKYQYFJJJy0+1h8kiUzU50fSzvLmjCi1 rJEiz2CK5MxYyRQgJxT5mPdAK4EMjd4cifzMiitzz2TDK7W5fd64+p4JNuTuFfaVkxqV Zvaee+Dbj7OARGSvzxejWyWIgEJhpkfMU6LcFNEE3+s8xWVuN/WPIKDkOyqE45DLS2vY PGaA== X-Gm-Message-State: AOAM5320Mda3dkuefjzRE+EbSlzmufk/kwMc3WKlwU9B52n1LS2EV2Dp oIbgzQqKC9F14dXtF6cNKK8wHxFJeg/YR/kdIklAc91rRmD4Ew3yU1O/IXiuCTCNCqXU3+37hfv 5MLk6IEYjKlaJgIeCyRykIl3tCL5MwA/KxfcbPUyvuUdakhTzJShm74Xd7c6QrBdJi7jUMA== X-Google-Smtp-Source: ABdhPJwvRCEt9XnQw8nnK0Gz0SaI98HD5H9OtcKH8Ll4L4m73bxxj9mq8sj/2r/KnntvPpfabQUj47QoG/E= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:90b:4d81:b0:1bf:8ce4:4f51 with SMTP id oj1-20020a17090b4d8100b001bf8ce44f51mr461111pjb.0.1646977895395; Thu, 10 Mar 2022 21:51:35 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:29 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-19-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 018/105] KVM: selftests: Get rid of kvm_util_internal.h From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/include/kvm_util_base.h | 99 +++++++++++++++++-- .../selftests/kvm/lib/aarch64/processor.c | 1 - .../testing/selftests/kvm/lib/aarch64/ucall.c | 1 - .../testing/selftests/kvm/lib/aarch64/vgic.c | 1 - tools/testing/selftests/kvm/lib/elf.c | 1 - tools/testing/selftests/kvm/lib/kvm_util.c | 1 - .../selftests/kvm/lib/kvm_util_internal.h | 94 ------------------ .../selftests/kvm/lib/riscv/processor.c | 1 - tools/testing/selftests/kvm/lib/riscv/ucall.c | 1 - .../selftests/kvm/lib/s390x/processor.c | 1 - .../selftests/kvm/lib/x86_64/processor.c | 1 - tools/testing/selftests/kvm/lib/x86_64/svm.c | 1 - tools/testing/selftests/kvm/lib/x86_64/vmx.c | 1 - .../selftests/kvm/x86_64/sev_migrate_tests.c | 1 - 14 files changed, 91 insertions(+), 114 deletions(-) delete mode 100644 tools/testing/selftests/kvm/lib/kvm_util_internal.h diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/te= sting/selftests/kvm/include/kvm_util_base.h index e8dff9bdab89..d2550c6e82c1 100644 --- a/tools/testing/selftests/kvm/include/kvm_util_base.h +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h @@ -9,9 +9,13 @@ =20 #include "test_util.h" =20 -#include "asm/kvm.h" +#include +#include "linux/hashtable.h" #include "linux/list.h" -#include "linux/kvm.h" +#include +#include +#include "linux/rbtree.h" + #include =20 #include "sparsebit.h" @@ -21,15 +25,94 @@ =20 #define NSEC_PER_SEC 1000000000L =20 -/* - * Callers of kvm_util only have an incomplete/opaque description of the - * structure kvm_util is using to maintain the state of a VM. - */ -struct kvm_vm; - typedef uint64_t vm_paddr_t; /* Virtual Machine (Guest) physical address */ typedef uint64_t vm_vaddr_t; /* Virtual Machine (Guest) virtual address */ =20 +struct userspace_mem_region { + struct kvm_userspace_memory_region region; + struct sparsebit *unused_phy_pages; + int fd; + off_t offset; + void *host_mem; + void *host_alias; + void *mmap_start; + void *mmap_alias; + size_t mmap_size; + struct rb_node gpa_node; + struct rb_node hva_node; + struct hlist_node slot_node; +}; + +struct vcpu { + struct list_head list; + uint32_t id; + int fd; + struct kvm_run *state; + struct kvm_dirty_gfn *dirty_gfns; + uint32_t fetch_index; + uint32_t dirty_gfns_count; +}; + +struct userspace_mem_regions { + struct rb_root gpa_tree; + struct rb_root hva_tree; + DECLARE_HASHTABLE(slot_hash, 9); +}; + +struct kvm_vm { + int mode; + unsigned long type; + int kvm_fd; + int fd; + unsigned int pgtable_levels; + unsigned int page_size; + unsigned int page_shift; + unsigned int pa_bits; + unsigned int va_bits; + uint64_t max_gfn; + struct list_head vcpus; + struct userspace_mem_regions regions; + struct sparsebit *vpages_valid; + struct sparsebit *vpages_mapped; + bool has_irqchip; + bool pgd_created; + vm_paddr_t pgd; + vm_vaddr_t gdt; + vm_vaddr_t tss; + vm_vaddr_t idt; + vm_vaddr_t handlers; + uint32_t dirty_ring_size; +}; + + +#define kvm_for_each_vcpu(vm, i, vcpu) \ + for ((i) =3D 0; (i) <=3D (vm)->last_vcpu_id; (i)++) \ + if (!((vcpu) =3D vm->vcpus[i])) \ + continue; \ + else + +struct vcpu *vcpu_get(struct kvm_vm *vm, uint32_t vcpuid); + +/* + * Virtual Translation Tables Dump + * + * Input Args: + * stream - Output FILE stream + * vm - Virtual Machine + * indent - Left margin indent amount + * + * Output Args: None + * + * Return: None + * + * Dumps to the FILE stream given by @stream, the contents of all the + * virtual translation tables for the VM given by @vm. + */ +void virt_dump(FILE *stream, struct kvm_vm *vm, uint8_t indent); + +struct userspace_mem_region * +memslot2region(struct kvm_vm *vm, uint32_t memslot); + /* Minimum allocated guest virtual and physical addresses */ #define KVM_UTIL_MIN_VADDR 0x2000 #define KVM_GUEST_PAGE_TABLE_MIN_PADDR 0x180000 diff --git a/tools/testing/selftests/kvm/lib/aarch64/processor.c b/tools/te= sting/selftests/kvm/lib/aarch64/processor.c index 06c3dafc82c4..6fa52e141e1b 100644 --- a/tools/testing/selftests/kvm/lib/aarch64/processor.c +++ b/tools/testing/selftests/kvm/lib/aarch64/processor.c @@ -10,7 +10,6 @@ =20 #include "guest_modes.h" #include "kvm_util.h" -#include "../kvm_util_internal.h" #include "processor.h" =20 #define DEFAULT_ARM64_GUEST_STACK_VADDR_MIN 0xac0000 diff --git a/tools/testing/selftests/kvm/lib/aarch64/ucall.c b/tools/testin= g/selftests/kvm/lib/aarch64/ucall.c index e0b0164e9af8..e14663ab2056 100644 --- a/tools/testing/selftests/kvm/lib/aarch64/ucall.c +++ b/tools/testing/selftests/kvm/lib/aarch64/ucall.c @@ -5,7 +5,6 @@ * Copyright (C) 2018, Red Hat, Inc. */ #include "kvm_util.h" -#include "../kvm_util_internal.h" =20 static vm_vaddr_t *ucall_exit_mmio_addr; =20 diff --git a/tools/testing/selftests/kvm/lib/aarch64/vgic.c b/tools/testing= /selftests/kvm/lib/aarch64/vgic.c index b3a0fca0d780..a169e662d6ae 100644 --- a/tools/testing/selftests/kvm/lib/aarch64/vgic.c +++ b/tools/testing/selftests/kvm/lib/aarch64/vgic.c @@ -9,7 +9,6 @@ #include =20 #include "kvm_util.h" -#include "../kvm_util_internal.h" #include "vgic.h" #include "gic.h" #include "gic_v3.h" diff --git a/tools/testing/selftests/kvm/lib/elf.c b/tools/testing/selftest= s/kvm/lib/elf.c index 13e8e3dcf984..9f54c098d9d0 100644 --- a/tools/testing/selftests/kvm/lib/elf.c +++ b/tools/testing/selftests/kvm/lib/elf.c @@ -11,7 +11,6 @@ #include =20 #include "kvm_util.h" -#include "kvm_util_internal.h" =20 static void elfhdr_get(const char *filename, Elf64_Ehdr *hdrp) { diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index 76f8b924fb31..c6fee457735b 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -8,7 +8,6 @@ #define _GNU_SOURCE /* for program_invocation_name */ #include "test_util.h" #include "kvm_util.h" -#include "kvm_util_internal.h" #include "processor.h" =20 #include diff --git a/tools/testing/selftests/kvm/lib/kvm_util_internal.h b/tools/te= sting/selftests/kvm/lib/kvm_util_internal.h deleted file mode 100644 index 544b90df2f80..000000000000 --- a/tools/testing/selftests/kvm/lib/kvm_util_internal.h +++ /dev/null @@ -1,94 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only */ -/* - * tools/testing/selftests/kvm/lib/kvm_util_internal.h - * - * Copyright (C) 2018, Google LLC. - */ - -#ifndef SELFTEST_KVM_UTIL_INTERNAL_H -#define SELFTEST_KVM_UTIL_INTERNAL_H - -#include "linux/hashtable.h" -#include "linux/rbtree.h" - -#include "sparsebit.h" - -struct userspace_mem_region { - struct kvm_userspace_memory_region region; - struct sparsebit *unused_phy_pages; - int fd; - off_t offset; - void *host_mem; - void *host_alias; - void *mmap_start; - void *mmap_alias; - size_t mmap_size; - struct rb_node gpa_node; - struct rb_node hva_node; - struct hlist_node slot_node; -}; - -struct vcpu { - struct list_head list; - uint32_t id; - int fd; - struct kvm_run *state; - struct kvm_dirty_gfn *dirty_gfns; - uint32_t fetch_index; - uint32_t dirty_gfns_count; -}; - -struct userspace_mem_regions { - struct rb_root gpa_tree; - struct rb_root hva_tree; - DECLARE_HASHTABLE(slot_hash, 9); -}; - -struct kvm_vm { - int mode; - unsigned long type; - int kvm_fd; - int fd; - unsigned int pgtable_levels; - unsigned int page_size; - unsigned int page_shift; - unsigned int pa_bits; - unsigned int va_bits; - uint64_t max_gfn; - struct list_head vcpus; - struct userspace_mem_regions regions; - struct sparsebit *vpages_valid; - struct sparsebit *vpages_mapped; - bool has_irqchip; - bool pgd_created; - vm_paddr_t pgd; - vm_vaddr_t gdt; - vm_vaddr_t tss; - vm_vaddr_t idt; - vm_vaddr_t handlers; - uint32_t dirty_ring_size; -}; - -struct vcpu *vcpu_get(struct kvm_vm *vm, uint32_t vcpuid); - -/* - * Virtual Translation Tables Dump - * - * Input Args: - * stream - Output FILE stream - * vm - Virtual Machine - * indent - Left margin indent amount - * - * Output Args: None - * - * Return: None - * - * Dumps to the FILE stream given by @stream, the contents of all the - * virtual translation tables for the VM given by @vm. - */ -void virt_dump(FILE *stream, struct kvm_vm *vm, uint8_t indent); - -struct userspace_mem_region * -memslot2region(struct kvm_vm *vm, uint32_t memslot); - -#endif /* SELFTEST_KVM_UTIL_INTERNAL_H */ diff --git a/tools/testing/selftests/kvm/lib/riscv/processor.c b/tools/test= ing/selftests/kvm/lib/riscv/processor.c index 1a404749094a..f17c7542cc53 100644 --- a/tools/testing/selftests/kvm/lib/riscv/processor.c +++ b/tools/testing/selftests/kvm/lib/riscv/processor.c @@ -9,7 +9,6 @@ #include =20 #include "kvm_util.h" -#include "../kvm_util_internal.h" #include "processor.h" =20 #define DEFAULT_RISCV_GUEST_STACK_VADDR_MIN 0xac0000 diff --git a/tools/testing/selftests/kvm/lib/riscv/ucall.c b/tools/testing/= selftests/kvm/lib/riscv/ucall.c index 9e42d8248fa6..c554ed173b38 100644 --- a/tools/testing/selftests/kvm/lib/riscv/ucall.c +++ b/tools/testing/selftests/kvm/lib/riscv/ucall.c @@ -8,7 +8,6 @@ #include =20 #include "kvm_util.h" -#include "../kvm_util_internal.h" #include "processor.h" =20 void ucall_init(struct kvm_vm *vm, void *arg) diff --git a/tools/testing/selftests/kvm/lib/s390x/processor.c b/tools/test= ing/selftests/kvm/lib/s390x/processor.c index 7cc1051c4b71..53c413932f64 100644 --- a/tools/testing/selftests/kvm/lib/s390x/processor.c +++ b/tools/testing/selftests/kvm/lib/s390x/processor.c @@ -7,7 +7,6 @@ =20 #include "processor.h" #include "kvm_util.h" -#include "../kvm_util_internal.h" =20 #define PAGES_PER_REGION 4 =20 diff --git a/tools/testing/selftests/kvm/lib/x86_64/processor.c b/tools/tes= ting/selftests/kvm/lib/x86_64/processor.c index c47b84449a8a..e9b3f254e8f9 100644 --- a/tools/testing/selftests/kvm/lib/x86_64/processor.c +++ b/tools/testing/selftests/kvm/lib/x86_64/processor.c @@ -7,7 +7,6 @@ =20 #include "test_util.h" #include "kvm_util.h" -#include "../kvm_util_internal.h" #include "processor.h" =20 #ifndef NUM_INTERRUPTS diff --git a/tools/testing/selftests/kvm/lib/x86_64/svm.c b/tools/testing/s= elftests/kvm/lib/x86_64/svm.c index 736ee4a23df6..01a9d831da13 100644 --- a/tools/testing/selftests/kvm/lib/x86_64/svm.c +++ b/tools/testing/selftests/kvm/lib/x86_64/svm.c @@ -9,7 +9,6 @@ =20 #include "test_util.h" #include "kvm_util.h" -#include "../kvm_util_internal.h" #include "processor.h" #include "svm_util.h" =20 diff --git a/tools/testing/selftests/kvm/lib/x86_64/vmx.c b/tools/testing/s= elftests/kvm/lib/x86_64/vmx.c index d089d8b850b5..0d42aa821833 100644 --- a/tools/testing/selftests/kvm/lib/x86_64/vmx.c +++ b/tools/testing/selftests/kvm/lib/x86_64/vmx.c @@ -7,7 +7,6 @@ =20 #include "test_util.h" #include "kvm_util.h" -#include "../kvm_util_internal.h" #include "processor.h" #include "vmx.h" =20 diff --git a/tools/testing/selftests/kvm/x86_64/sev_migrate_tests.c b/tools= /testing/selftests/kvm/x86_64/sev_migrate_tests.c index d29cf773d7bf..fb26d0d85fcb 100644 --- a/tools/testing/selftests/kvm/x86_64/sev_migrate_tests.c +++ b/tools/testing/selftests/kvm/x86_64/sev_migrate_tests.c @@ -12,7 +12,6 @@ #include "processor.h" #include "svm_util.h" #include "kselftest.h" -#include "../lib/kvm_util_internal.h" =20 #define SEV_POLICY_ES 0b100 =20 --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 69A8DC433F5 for ; Fri, 11 Mar 2022 05:53:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346722AbiCKFyV (ORCPT ); Fri, 11 Mar 2022 00:54:21 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56114 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346550AbiCKFwn (ORCPT ); Fri, 11 Mar 2022 00:52:43 -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 E679FF9FB3 for ; Thu, 10 Mar 2022 21:51:37 -0800 (PST) Received: by mail-pg1-x549.google.com with SMTP id t18-20020a63dd12000000b00342725203b5so4205675pgg.16 for ; Thu, 10 Mar 2022 21:51:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=mSaO6+QnMWWeIwCnlQiy3I7psXBlkN5aFHPmI5GJrpE=; b=FCGnqjPbkseOrMYyCHrqxAIaVqtnLi8AxjGKJPZX3S5j3a66lxzSyS/yD62o0BjUPi D7bf3dIefvNcU97dei7CR+FUF4vB9txnMqMrE1ZfVmj/OI8ZWE3X9DVCvSX88KrsowqU UOBxu+rvxAl5/Nqx49/Tl5HkRLDedWQRZZLfidlpqIMrnXPdv0UWUm0cJ7u8sDK1tZgM e7YnxFLQuQApbNg5yA9XvELEOIWooHpkYs+JDjDMr/hMF++VutHq/NAN7U7r/Xo5Oo24 pY+kwEr6u8xXcdhQlWCtV2b/PlmpDdOd7pD8/YcEKSUwceX65jmEMJIZg4/PODi6pMKa 0uZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=mSaO6+QnMWWeIwCnlQiy3I7psXBlkN5aFHPmI5GJrpE=; b=UhpZdSxz+N8/SaWGUEFyUw9nKPKlYuRjUPVpIN562m2S5D6Z11Qdv+57WPLbH+6Qqz /B1Jku0KlNhUee1OM9PVHIXuUXrdENd/RF8xQ9Y2nf2VFMWcKG4pPTcRzBZqln3atKqp LxJqEhpQgUiD/glXTm7q6Dcb4P6Ihun8NVP1EBzRPOzvDqBvhjQpvff51X9y9Ao+NKhh A3q5dNpO+5whCURMmgqcP0ULZeG7Qb+hAHOTcyGvHQEQoul0pFfdHpNUdGe+YUidvIxV XGm4BJjrct6iVNloW2yYfu9GJfmiLh31DxyMKW30343ribAu6ZPDFiRKgae+HNOqt7t7 DREA== X-Gm-Message-State: AOAM533/7sS9dJcNPyc5X5SSM2PuXgK+ktfanH38p9uUg7XDe4QLjJIQ 2b8oEONjnVc/kKXm+4tY3fC3DCQ86t7Osq77eAXy4TPIZzgVnghmv90hEipHur6F89DUFc30jv5 z6d0lOcQh8d8uH9z4Wj/QK8Wp4BhnyBbhKvk6FKdpOMzwqA4GtSbLu/MNbxR+rgAiL6nACg== X-Google-Smtp-Source: ABdhPJwIafp9cvM1AbG13Srks7eDiQ4MqalsNr6N4Rrx/YQJKV3EBpTT9sxVnkvvt67S1nAllnBuda+MnlY= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:90b:4b4a:b0:1bf:83d:6805 with SMTP id mi10-20020a17090b4b4a00b001bf083d6805mr20581582pjb.174.1646977897282; Thu, 10 Mar 2022 21:51:37 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:30 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-20-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 019/105] KVM: selftests: Use KVM_IOCTL_ERROR() for one-off arm64 ioctls From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- tools/testing/selftests/kvm/lib/aarch64/processor.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/testing/selftests/kvm/lib/aarch64/processor.c b/tools/te= sting/selftests/kvm/lib/aarch64/processor.c index 6fa52e141e1b..5f6967058647 100644 --- a/tools/testing/selftests/kvm/lib/aarch64/processor.c +++ b/tools/testing/selftests/kvm/lib/aarch64/processor.c @@ -472,15 +472,15 @@ void aarch64_get_supported_page_sizes(uint32_t ipa, TEST_ASSERT(vm_fd >=3D 0, KVM_IOCTL_ERROR(KVM_CREATE_VM, vm_fd)); =20 vcpu_fd =3D ioctl(vm_fd, KVM_CREATE_VCPU, 0); - TEST_ASSERT(vcpu_fd >=3D 0, "Can't create vcpu"); + TEST_ASSERT(vcpu_fd >=3D 0, KVM_IOCTL_ERROR(KVM_CREATE_VCPU, vcpu_fd)); =20 err =3D ioctl(vm_fd, KVM_ARM_PREFERRED_TARGET, &preferred_init); - TEST_ASSERT(err =3D=3D 0, "Can't get target"); + TEST_ASSERT(err =3D=3D 0, KVM_IOCTL_ERROR(KVM_ARM_PREFERRED_TARGET, err)); err =3D ioctl(vcpu_fd, KVM_ARM_VCPU_INIT, &preferred_init); - TEST_ASSERT(err =3D=3D 0, "Can't get init vcpu"); + TEST_ASSERT(err =3D=3D 0, KVM_IOCTL_ERROR(KVM_ARM_VCPU_INIT, err)); =20 err =3D ioctl(vcpu_fd, KVM_GET_ONE_REG, ®); - TEST_ASSERT(err =3D=3D 0, "Can't get MMFR0"); + TEST_ASSERT(err =3D=3D 0, KVM_IOCTL_ERROR(KVM_GET_ONE_REG, vcpu_fd)); =20 *ps4k =3D ((val >> 28) & 0xf) !=3D 0xf; *ps64k =3D ((val >> 24) & 0xf) =3D=3D 0; --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 345F4C433EF for ; Fri, 11 Mar 2022 05:53:44 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346711AbiCKFyo (ORCPT ); Fri, 11 Mar 2022 00:54:44 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55722 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346614AbiCKFwo (ORCPT ); Fri, 11 Mar 2022 00:52:44 -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 C86C2FCB58 for ; Thu, 10 Mar 2022 21:51:39 -0800 (PST) Received: by mail-pg1-x549.google.com with SMTP id j5-20020a63e745000000b00378c359fac3so4232690pgk.2 for ; Thu, 10 Mar 2022 21:51:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=WmfQbrzgNF+V3yMmoSkqjh6GRSot3cwrASCe7AJKUjc=; b=NZCsyXWiAU5FsQpC8rhMNOvPGhWGKQi+iTqZ67BnV3QZ5hUL8WlbtKz+nVA/uud3FD utNisnnoIPiKpmzTNVJv1HFOrzm6JydI18mNquajPh/iYIRTcpjTqBK3WLNCd3ynES2P QUmfNC5sYaMW/dPiisFvIuMhE17MMK+DPiZJH5O8iUQeHVy0lg5SGQwwzhx1DRzwoG8X zwTNNQt3jF4beIEG5erX70eQs68ovhCUMKqSx57eTa9lmYKDnnapIEcJ6zS6mWEBuJPa d3+Q688LbuTlxgTxil7Jf/3TaPiCjHnJZ+zHJt83dbHc/wSevq/QT/QClw19URMsnMQ6 CoVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=WmfQbrzgNF+V3yMmoSkqjh6GRSot3cwrASCe7AJKUjc=; b=Xxb7BlTKE5D8o5c9oAzUkpwsQJc8Q/1bprEs+ZTSRL6OP7bOgecslsuUGjXri1Wq9n +rLqsQSTjJLBeC31nsXvvTlupszBJyYvF5g6yi+ZKEC5i8Ynyph/PoCn3c0xAxkLIsnR +0gdv645RyudVOSYUOJbUd2SIEo2nNs2KpA6Dn+xsNFWp6m7ZpvKMycNG3Rw3AXP0r6t zZPv2JAE1sCg+G85Y0ok3UMf1QVZ+oQw8blPFLmB2FJwQecHn9R0ZqVQuu3moXHPNQSr qgW+oKlVe+qwiOjz8BWsoJLsnD/zjlI2peENZRN7zxa7idwlCcJfswy1AmhxjrUszqGq 8e1Q== X-Gm-Message-State: AOAM5319+4eYbuI5MphZDYZLXLQmWpgO75C4580buJwQLTFly/17sl9q /HLEVFfNJ3RJyW7cmhupoYq0uQ4y6JDoPptHivqRSaXL20uF6IlvOwf7u2K/K0fxkosA4akmZCG dN3YJAMxCSm6mxoyxCxtpROtqOLplszVnXV3taaB2VqN7lblEwdEzybze7PxJHRVoLRNIQw== X-Google-Smtp-Source: ABdhPJyQ2scgZUvwiMTgKI72v5D5CcVYmN0damF6aLUUFqcL6qzDKGXFyxdI4RJFXwGh5+qI9hTXVZJKll0= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:90b:1e10:b0:1bf:6c78:54a9 with SMTP id pg16-20020a17090b1e1000b001bf6c7854a9mr460444pjb.1.1646977898870; Thu, 10 Mar 2022 21:51:38 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:31 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-21-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 020/105] KVM: selftests: Drop @test param from kvm_create_device() From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- tools/testing/selftests/kvm/aarch64/vgic_init.c | 14 ++++++-------- .../testing/selftests/kvm/include/kvm_util_base.h | 2 +- tools/testing/selftests/kvm/lib/aarch64/vgic.c | 2 +- tools/testing/selftests/kvm/lib/kvm_util.c | 12 ++++-------- 4 files changed, 12 insertions(+), 18 deletions(-) diff --git a/tools/testing/selftests/kvm/aarch64/vgic_init.c b/tools/testin= g/selftests/kvm/aarch64/vgic_init.c index 9a153b2ea3de..9cd58f22f5bd 100644 --- a/tools/testing/selftests/kvm/aarch64/vgic_init.c +++ b/tools/testing/selftests/kvm/aarch64/vgic_init.c @@ -65,7 +65,7 @@ static struct vm_gic vm_gic_create_with_vcpus(uint32_t gi= c_dev_type, uint32_t nr =20 v.gic_dev_type =3D gic_dev_type; v.vm =3D vm_create_default_with_vcpus(nr_vcpus, 0, 0, guest_code, NULL); - v.gic_fd =3D kvm_create_device(v.vm, gic_dev_type, false); + v.gic_fd =3D kvm_create_device(v.vm, gic_dev_type); =20 return v; } @@ -406,7 +406,7 @@ static void test_v3_typer_accesses(void) =20 v.vm =3D vm_create_default(0, 0, guest_code); =20 - v.gic_fd =3D kvm_create_device(v.vm, KVM_DEV_TYPE_ARM_VGIC_V3, false); + v.gic_fd =3D kvm_create_device(v.vm, KVM_DEV_TYPE_ARM_VGIC_V3); =20 vm_vcpu_add_default(v.vm, 3, guest_code); =20 @@ -486,7 +486,7 @@ static void test_v3_last_bit_redist_regions(void) =20 v.vm =3D vm_create_default_with_vcpus(6, 0, 0, guest_code, vcpuids); =20 - v.gic_fd =3D kvm_create_device(v.vm, KVM_DEV_TYPE_ARM_VGIC_V3, false); + v.gic_fd =3D kvm_create_device(v.vm, KVM_DEV_TYPE_ARM_VGIC_V3); =20 kvm_device_access(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_CTRL, KVM_DEV_ARM_VGIC_CTRL_INIT, NULL, true); @@ -535,7 +535,7 @@ static void test_v3_last_bit_single_rdist(void) =20 v.vm =3D vm_create_default_with_vcpus(6, 0, 0, guest_code, vcpuids); =20 - v.gic_fd =3D kvm_create_device(v.vm, KVM_DEV_TYPE_ARM_VGIC_V3, false); + v.gic_fd =3D kvm_create_device(v.vm, KVM_DEV_TYPE_ARM_VGIC_V3); =20 kvm_device_access(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_CTRL, KVM_DEV_ARM_VGIC_CTRL_INIT, NULL, true); @@ -602,7 +602,7 @@ static void test_v3_its_region(void) int its_fd, ret; =20 v =3D vm_gic_create_with_vcpus(KVM_DEV_TYPE_ARM_VGIC_V3, NR_VCPUS); - its_fd =3D kvm_create_device(v.vm, KVM_DEV_TYPE_ARM_VGIC_ITS, false); + its_fd =3D kvm_create_device(v.vm, KVM_DEV_TYPE_ARM_VGIC_ITS); =20 addr =3D 0x401000; ret =3D _kvm_device_access(its_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, @@ -655,13 +655,11 @@ int test_kvm_device(uint32_t gic_dev_type) ret =3D _kvm_create_device(v.vm, gic_dev_type, true, &fd); if (ret) return ret; - v.gic_fd =3D kvm_create_device(v.vm, gic_dev_type, false); + v.gic_fd =3D kvm_create_device(v.vm, gic_dev_type); =20 ret =3D _kvm_create_device(v.vm, gic_dev_type, false, &fd); TEST_ASSERT(ret && errno =3D=3D EEXIST, "create GIC device twice"); =20 - kvm_create_device(v.vm, gic_dev_type, true); - /* try to create the other gic_dev_type */ other =3D VGIC_DEV_IS_V2(gic_dev_type) ? KVM_DEV_TYPE_ARM_VGIC_V3 : KVM_DEV_TYPE_ARM_VGIC_V2; diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/te= sting/selftests/kvm/include/kvm_util_base.h index d2550c6e82c1..03575063ee13 100644 --- a/tools/testing/selftests/kvm/include/kvm_util_base.h +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h @@ -480,7 +480,7 @@ void vcpu_args_set(struct kvm_vm *vm, uint32_t vcpuid, = unsigned int num, ...); int _kvm_device_check_attr(int dev_fd, uint32_t group, uint64_t attr); int kvm_device_check_attr(int dev_fd, uint32_t group, uint64_t attr); int _kvm_create_device(struct kvm_vm *vm, uint64_t type, bool test, int *f= d); -int kvm_create_device(struct kvm_vm *vm, uint64_t type, bool test); +int kvm_create_device(struct kvm_vm *vm, uint64_t type); int _kvm_device_access(int dev_fd, uint32_t group, uint64_t attr, void *val, bool write); int kvm_device_access(int dev_fd, uint32_t group, uint64_t attr, diff --git a/tools/testing/selftests/kvm/lib/aarch64/vgic.c b/tools/testing= /selftests/kvm/lib/aarch64/vgic.c index a169e662d6ae..f0ef9530fefe 100644 --- a/tools/testing/selftests/kvm/lib/aarch64/vgic.c +++ b/tools/testing/selftests/kvm/lib/aarch64/vgic.c @@ -51,7 +51,7 @@ int vgic_v3_setup(struct kvm_vm *vm, unsigned int nr_vcpu= s, uint32_t nr_irqs, nr_vcpus, nr_vcpus_created); =20 /* Distributor setup */ - gic_fd =3D kvm_create_device(vm, KVM_DEV_TYPE_ARM_VGIC_V3, false); + gic_fd =3D kvm_create_device(vm, KVM_DEV_TYPE_ARM_VGIC_V3); =20 kvm_device_access(gic_fd, KVM_DEV_ARM_VGIC_GRP_NR_IRQS, 0, &nr_irqs, true); diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index c6fee457735b..bfa7174a7892 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -1613,18 +1613,14 @@ int _kvm_create_device(struct kvm_vm *vm, uint64_t = type, bool test, int *fd) return ret; } =20 -int kvm_create_device(struct kvm_vm *vm, uint64_t type, bool test) +int kvm_create_device(struct kvm_vm *vm, uint64_t type) { int fd, ret; =20 - ret =3D _kvm_create_device(vm, type, test, &fd); + ret =3D _kvm_create_device(vm, type, false, &fd); =20 - if (!test) { - TEST_ASSERT(!ret, - "KVM_CREATE_DEVICE IOCTL failed, rc: %i errno: %i", ret, errno); - return fd; - } - return ret; + TEST_ASSERT(!ret, "KVM_CREATE_DEVICE IOCTL failed, rc: %i errno: %i", ret= , errno); + return fd; } =20 int _kvm_device_access(int dev_fd, uint32_t group, uint64_t attr, --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 991BAC433EF for ; Fri, 11 Mar 2022 05:53:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346700AbiCKFyl (ORCPT ); Fri, 11 Mar 2022 00:54:41 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55706 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346617AbiCKFwo (ORCPT ); Fri, 11 Mar 2022 00:52:44 -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 3D5C9FCB63 for ; Thu, 10 Mar 2022 21:51:41 -0800 (PST) Received: by mail-pj1-x1049.google.com with SMTP id mt1-20020a17090b230100b001beef010919so7268619pjb.7 for ; Thu, 10 Mar 2022 21:51:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=ZrVDE6mEcY5E3SWlXhRtIq5EGnZtg/5TxJ+2uaelnxs=; b=fwoMk9stqQumCkI+juM15MEBjcVi3SEB6oSKXwMIaPC50YCJdKIfRGwHfDd4nSDC6i uMBKYguPm0f+Q+Fx6h0XcOd5+G0o5o6osSWPXweh0KYrQk4pwNckfpBETQ0nlfrFal4y m53IYRIhx5jwNpMjJls8iYkaiCFzrD0Ov5lJxYe1m6tNaMcylrOfh856O6cm/7vRzk+B ZbhHIOm8V2scU3fhKHbSl7v1Zrjrg0mh755pbs0wLv1pwVDwm+zLXLM+3hZgwexd87JL nCOJ3kip0CYqY5iPv0/hj7AF9EjVkGrWrth99PkUqGz1EV3aVA+Gd2K2jlnL88dFzJ1j i54w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=ZrVDE6mEcY5E3SWlXhRtIq5EGnZtg/5TxJ+2uaelnxs=; b=Ky5LtU1e0eDks4M+ri+oJnmO48An/1FD0bayL/n0CLtsipCj8sGq1IU6owjy96nBjr gkqbq/74QbVbMW3ao7VXGzjBf09o9ysX++slLp/43wHthY4V/lvKjwz8UaFRR8hqKxBt xTZiO43YulCio2sYAE8cq+C09fJ5n2pADPvm85ejecdwaULRI8WmMHtZxyVxwISU2AeU N2hcKrg6ILuvFGv4QNvOCAO5dOXLtDFMBgZaHa22Th5UXeYVJfIYwG/KGfTdgpNxJA00 F4CTjIp8u+w/A5MIYSK8PK6bPhx8h8SFVwE5rFVOV0auYkvZycCkXe5Zp1/wR+VtF7rd X5OQ== X-Gm-Message-State: AOAM533x2WCIyhtOp8w06lgiX15+DzrO4JIxgWcu2sh4jVpJQl5fNKyz IleFdpMejeq5bf/ZYSYuGpx5u+NNsKDNn3dVkVnEmwFPg32M8ZOcA2X9+3Au209Y9386h/lVG47 36gjLqiq+inCNrTEGUaPoyqXNp6COBV4l3yAUTMaHu/ICCCqSq3E45n7Q5eMFi/UkWmDnEQ== X-Google-Smtp-Source: ABdhPJwdIkxRqtj3kkMNwbeAXfiETEAI8TZ92ZvPp+I0aLcWl4ed0nE+VmzSt0+ed79k4Sziy7IRUJTh6c4= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:90a:7883:b0:1bd:2372:c990 with SMTP id x3-20020a17090a788300b001bd2372c990mr19863533pjk.55.1646977900532; Thu, 10 Mar 2022 21:51:40 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:32 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-22-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 021/105] KVM: selftests: Move KVM_CREATE_DEVICE_TEST code to separate helper From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../testing/selftests/kvm/aarch64/vgic_init.c | 10 ++++---- .../selftests/kvm/include/kvm_util_base.h | 3 ++- tools/testing/selftests/kvm/lib/kvm_util.c | 23 ++++++++++++++----- 3 files changed, 24 insertions(+), 12 deletions(-) diff --git a/tools/testing/selftests/kvm/aarch64/vgic_init.c b/tools/testin= g/selftests/kvm/aarch64/vgic_init.c index 9cd58f22f5bd..18d1d0335108 100644 --- a/tools/testing/selftests/kvm/aarch64/vgic_init.c +++ b/tools/testing/selftests/kvm/aarch64/vgic_init.c @@ -648,24 +648,24 @@ int test_kvm_device(uint32_t gic_dev_type) v.vm =3D vm_create_default_with_vcpus(NR_VCPUS, 0, 0, guest_code, NULL); =20 /* try to create a non existing KVM device */ - ret =3D _kvm_create_device(v.vm, 0, true, &fd); + ret =3D __kvm_test_create_device(v.vm, 0); TEST_ASSERT(ret && errno =3D=3D ENODEV, "unsupported device"); =20 /* trial mode */ - ret =3D _kvm_create_device(v.vm, gic_dev_type, true, &fd); + ret =3D __kvm_test_create_device(v.vm, gic_dev_type); if (ret) return ret; v.gic_fd =3D kvm_create_device(v.vm, gic_dev_type); =20 - ret =3D _kvm_create_device(v.vm, gic_dev_type, false, &fd); + ret =3D __kvm_create_device(v.vm, gic_dev_type, &fd); TEST_ASSERT(ret && errno =3D=3D EEXIST, "create GIC device twice"); =20 /* try to create the other gic_dev_type */ other =3D VGIC_DEV_IS_V2(gic_dev_type) ? KVM_DEV_TYPE_ARM_VGIC_V3 : KVM_DEV_TYPE_ARM_VGIC_V2; =20 - if (!_kvm_create_device(v.vm, other, true, &fd)) { - ret =3D _kvm_create_device(v.vm, other, false, &fd); + if (!__kvm_test_create_device(v.vm, other)) { + ret =3D __kvm_test_create_device(v.vm, other); TEST_ASSERT(ret && errno =3D=3D EINVAL, "create GIC device while other version exists"); } diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/te= sting/selftests/kvm/include/kvm_util_base.h index 03575063ee13..081ba04e5df3 100644 --- a/tools/testing/selftests/kvm/include/kvm_util_base.h +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h @@ -479,7 +479,8 @@ void vcpu_args_set(struct kvm_vm *vm, uint32_t vcpuid, = unsigned int num, ...); =20 int _kvm_device_check_attr(int dev_fd, uint32_t group, uint64_t attr); int kvm_device_check_attr(int dev_fd, uint32_t group, uint64_t attr); -int _kvm_create_device(struct kvm_vm *vm, uint64_t type, bool test, int *f= d); +int __kvm_test_create_device(struct kvm_vm *vm, uint64_t type); +int __kvm_create_device(struct kvm_vm *vm, uint64_t type, int *fd); int kvm_create_device(struct kvm_vm *vm, uint64_t type); int _kvm_device_access(int dev_fd, uint32_t group, uint64_t attr, void *val, bool write); diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index bfa7174a7892..f0a08de67f0f 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -1600,14 +1600,25 @@ int kvm_device_check_attr(int dev_fd, uint32_t grou= p, uint64_t attr) return ret; } =20 -int _kvm_create_device(struct kvm_vm *vm, uint64_t type, bool test, int *f= d) +int __kvm_test_create_device(struct kvm_vm *vm, uint64_t type) { - struct kvm_create_device create_dev; + struct kvm_create_device create_dev =3D { + .type =3D type, + .flags =3D KVM_CREATE_DEVICE_TEST, + }; + + return __vm_ioctl(vm, KVM_CREATE_DEVICE, &create_dev); +} + +int __kvm_create_device(struct kvm_vm *vm, uint64_t type, int *fd) +{ + struct kvm_create_device create_dev =3D { + .type =3D type, + .fd =3D -1, + .flags =3D 0, + }; int ret; =20 - create_dev.type =3D type; - create_dev.fd =3D -1; - create_dev.flags =3D test ? KVM_CREATE_DEVICE_TEST : 0; ret =3D __vm_ioctl(vm, KVM_CREATE_DEVICE, &create_dev); *fd =3D create_dev.fd; return ret; @@ -1617,7 +1628,7 @@ int kvm_create_device(struct kvm_vm *vm, uint64_t typ= e) { int fd, ret; =20 - ret =3D _kvm_create_device(vm, type, false, &fd); + ret =3D __kvm_create_device(vm, type, &fd); =20 TEST_ASSERT(!ret, "KVM_CREATE_DEVICE IOCTL failed, rc: %i errno: %i", ret= , errno); return fd; --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 8DC31C433EF for ; Fri, 11 Mar 2022 05:53:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346734AbiCKFyb (ORCPT ); Fri, 11 Mar 2022 00:54:31 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56072 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346560AbiCKFwp (ORCPT ); Fri, 11 Mar 2022 00:52:45 -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 E7643F11A6 for ; Thu, 10 Mar 2022 21:51:42 -0800 (PST) Received: by mail-pj1-x104a.google.com with SMTP id q21-20020a17090a2e1500b001c44f70fd38so338911pjd.6 for ; Thu, 10 Mar 2022 21:51:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=ObE4vFks/3TzFTIWtkMMXGOjctmkoD0LvkElMb+vMzk=; b=S1nS1658yfcQ53QosCnNh+vzGFFMhwmzYTFgLeCx2wARYRO2JnljUgQI+VcbSj4p1i BEyDre+/u31X7K3vWS1AAYZVrngXE3HnmSVWjusCa1teBUednQI0IgS3kIdCFHg5zXr1 /55G67M6+vBvehyZYByAchQzjPvRJEE4r+iAp132F1coVPCsQ8CCesXU4VQCHIzlu4ec SX4IanV1jEtL5xrZi0+XRTKVEn42zJFsOjhDrSs5GJdgqhtwiwsKBSXZ+rPN7CjgwhGl AbWgWDOAe+7hXK/UzuRsXVjkLlmh5squCKWQacm4pyhQJFvFom535HHyuNr96wxcagDq UN9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=ObE4vFks/3TzFTIWtkMMXGOjctmkoD0LvkElMb+vMzk=; b=OfbAPeTTChmvLgA3fGQU3CGHTylEOC+yDc4e4eS5XdIToJns1awyptkUfoj2/sJ+Jx /9PyT8ydeQdIVYF8obRgcRvXNdAox6Aiy1DFVg6BAvkuLJ5qFL+5LPtSA4YkfagMskQr TwOHa7ChxfSyPSnQT6wE7zmMhgnw/eqFIlpI3hK90WxdZ9++ZPXfbBbe+2QN7kCnCNE4 cMnBnODnQxEBz6n9jqtHK8WvOh0MEfZA8oeN3Ph6lKJ7UHrPSfypMk++0NftlRp7q3Bj sPmDF+sBTnxYIr1SxTcB5BkImVj27V1y6qwQNzy92jbwbM4Zyv7XBzbonJeOsOGCQmyi iwBA== X-Gm-Message-State: AOAM532cZfR7SDm1R/tfvS8G6s/K+pjs2HGm+Uy7kpzATJhj375q48Vg RnjzT+nMKCPGxmvI1aaAtRvrHAA8u1VViv7V06GH4XmMINTVJIckMBdUwXpxyfQuJrbUvPR4R6j EG7B3Jki9tq9GeE498J6FY+q3FMtq0lxzqUglx859cvrIlr7Qbco/kqWgypMO8xM6VqL/vg== X-Google-Smtp-Source: ABdhPJwgdUy/YJX0CA1VmDzsMYQJXRf9kV83UuZZXvbnfQlKNVpskQWtpae90LJ93LV7bkGYFYsuiuLPHdw= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a05:6a00:1a8b:b0:4f7:595c:b900 with SMTP id e11-20020a056a001a8b00b004f7595cb900mr8627237pfv.62.1646977902211; Thu, 10 Mar 2022 21:51:42 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:33 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-23-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 022/105] KVM: selftests: Multiplex return code and fd in __kvm_create_device() From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- tools/testing/selftests/kvm/aarch64/vgic_init.c | 6 +++--- .../selftests/kvm/include/kvm_util_base.h | 2 +- tools/testing/selftests/kvm/lib/kvm_util.c | 16 +++++++--------- 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/tools/testing/selftests/kvm/aarch64/vgic_init.c b/tools/testin= g/selftests/kvm/aarch64/vgic_init.c index 18d1d0335108..1015f6fc352c 100644 --- a/tools/testing/selftests/kvm/aarch64/vgic_init.c +++ b/tools/testing/selftests/kvm/aarch64/vgic_init.c @@ -642,8 +642,8 @@ static void test_v3_its_region(void) int test_kvm_device(uint32_t gic_dev_type) { struct vm_gic v; - int ret, fd; uint32_t other; + int ret; =20 v.vm =3D vm_create_default_with_vcpus(NR_VCPUS, 0, 0, guest_code, NULL); =20 @@ -657,8 +657,8 @@ int test_kvm_device(uint32_t gic_dev_type) return ret; v.gic_fd =3D kvm_create_device(v.vm, gic_dev_type); =20 - ret =3D __kvm_create_device(v.vm, gic_dev_type, &fd); - TEST_ASSERT(ret && errno =3D=3D EEXIST, "create GIC device twice"); + ret =3D __kvm_create_device(v.vm, gic_dev_type); + TEST_ASSERT(ret < 0 && errno =3D=3D EEXIST, "create GIC device twice"); =20 /* try to create the other gic_dev_type */ other =3D VGIC_DEV_IS_V2(gic_dev_type) ? KVM_DEV_TYPE_ARM_VGIC_V3 diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/te= sting/selftests/kvm/include/kvm_util_base.h index 081ba04e5df3..df1202bacc04 100644 --- a/tools/testing/selftests/kvm/include/kvm_util_base.h +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h @@ -480,7 +480,7 @@ void vcpu_args_set(struct kvm_vm *vm, uint32_t vcpuid, = unsigned int num, ...); int _kvm_device_check_attr(int dev_fd, uint32_t group, uint64_t attr); int kvm_device_check_attr(int dev_fd, uint32_t group, uint64_t attr); int __kvm_test_create_device(struct kvm_vm *vm, uint64_t type); -int __kvm_create_device(struct kvm_vm *vm, uint64_t type, int *fd); +int __kvm_create_device(struct kvm_vm *vm, uint64_t type); int kvm_create_device(struct kvm_vm *vm, uint64_t type); int _kvm_device_access(int dev_fd, uint32_t group, uint64_t attr, void *val, bool write); diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index f0a08de67f0f..e10894cc2bc1 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -1610,27 +1610,25 @@ int __kvm_test_create_device(struct kvm_vm *vm, uin= t64_t type) return __vm_ioctl(vm, KVM_CREATE_DEVICE, &create_dev); } =20 -int __kvm_create_device(struct kvm_vm *vm, uint64_t type, int *fd) +int __kvm_create_device(struct kvm_vm *vm, uint64_t type) { struct kvm_create_device create_dev =3D { .type =3D type, .fd =3D -1, .flags =3D 0, }; - int ret; + int err; =20 - ret =3D __vm_ioctl(vm, KVM_CREATE_DEVICE, &create_dev); - *fd =3D create_dev.fd; - return ret; + err =3D __vm_ioctl(vm, KVM_CREATE_DEVICE, &create_dev); + TEST_ASSERT(err <=3D 0, "KVM_CREATE_DEVICE shouldn't return a positive va= lue"); + return err ? : create_dev.fd; } =20 int kvm_create_device(struct kvm_vm *vm, uint64_t type) { - int fd, ret; + int fd =3D __kvm_create_device(vm, type); =20 - ret =3D __kvm_create_device(vm, type, &fd); - - TEST_ASSERT(!ret, "KVM_CREATE_DEVICE IOCTL failed, rc: %i errno: %i", ret= , errno); + TEST_ASSERT(fd >=3D 0, "KVM_CREATE_DEVICE IOCTL failed, rc: %i errno: %i"= , fd, errno); return fd; } =20 --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 9935DC433F5 for ; Fri, 11 Mar 2022 05:56:23 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235504AbiCKF5X (ORCPT ); Fri, 11 Mar 2022 00:57:23 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56282 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346592AbiCKFwr (ORCPT ); Fri, 11 Mar 2022 00:52:47 -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 A0ADDED94F for ; Thu, 10 Mar 2022 21:51:44 -0800 (PST) Received: by mail-pl1-x64a.google.com with SMTP id z13-20020a1709027e8d00b001518de7a06cso3996286pla.14 for ; Thu, 10 Mar 2022 21:51:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=prrVE6x5Q8AN6EtWUnqTXgKIWeuTvNDjFFQx2X65E3I=; b=AB0KHeGTT/fqNVqIkBgbtB8FbX21kpJVaL8CXVGaiY93sMJjdHjcvzQvPmx4DMsLXr S49zFCXNbZpQJ7A4G020OIE10mz4vYA1bAq62/UgtGFVBAoy+4gbXbizvjnGxqnAWA1S /Fr78+qL07JH4A6bsOa66DFNyn6O1FekcEH//F6VSfwsNXoLWuiwUg30vgI8SwNI0Vov AeoFF/+vvlZh1c7bwv5UDFQ7xGUoxo7ojAzt0NJem72d2wnkSi3a7GkXhCsFXG5HFCoy mRZ2qwRJEgmmsyfu/OG3YOtCg6bqr1uQPtVmWowBhvHMQ9bARkT3Fu84fZ4rvMbG06hQ u/XQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=prrVE6x5Q8AN6EtWUnqTXgKIWeuTvNDjFFQx2X65E3I=; b=AZem8ZmjRGal/GKXCCL02UZ9EPhM0r+cHg0J26xrEzowNNNLhhCbhPPf54sISe6Gtu 6/wV/RAAxrkbQPqa54hzwrEUHq0cSXNUdwP35Y9oltMAmQYlhpIWbFZZUoPNJmmEZG4t YTdPM1BXUEznQQecNB9on7K5xJpsCyYrwohmkf5ldjmEdVcbPET+s0IHYPxoZB6pSOcA 60mWFyjJSxICAX0mDUOv961i3Uk+hNYD3OBeYuA8b+1luwxiRV/5TI4/EwusuCdq8jCA wk1kRbCMVZjjXniOEFPtHAA/8L0ape9bkv/hKZ8ChT3Bu9quB84bw0CCkzTdCoW9X64y oSxg== X-Gm-Message-State: AOAM533ApR2nBxaC2Cn0JZahAyOviaQYw5mKUQlu3OZrLJUI6Up6NT90 wpagxAmeqwa/z+J/UR+WaPcNdXxW1NII0OQ4O2Ccb3TkZHB4DQrhfGxVOy+OwEQ/imgc6nMrv7/ 1Cyjbh/GVhksdGRNTb4fae5NH+4YpSPwUGhrLumo6NaF32nakjxrXQU680ZbtgHuomotnrQ== X-Google-Smtp-Source: ABdhPJyo9Jc8M5eLvDPKh+hpYxrQEdMCAVjiyaoxij+lz9YJl9+xTMBOSEMQgmtM2YvJsn7Lidtw17ppXl0= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:902:ced0:b0:151:a5fa:6b44 with SMTP id d16-20020a170902ced000b00151a5fa6b44mr8681190plg.31.1646977903985; Thu, 10 Mar 2022 21:51:43 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:34 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-24-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 023/105] KVM: selftests: Rename KVM_HAS_DEVICE_ATTR helpers for consistency From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- tools/testing/selftests/kvm/aarch64/vgic_init.c | 12 +++++------- tools/testing/selftests/kvm/include/kvm_util_base.h | 6 +++--- tools/testing/selftests/kvm/lib/kvm_util.c | 12 ++++++------ .../selftests/kvm/system_counter_offset_test.c | 2 +- 4 files changed, 15 insertions(+), 17 deletions(-) diff --git a/tools/testing/selftests/kvm/aarch64/vgic_init.c b/tools/testin= g/selftests/kvm/aarch64/vgic_init.c index 1015f6fc352c..223fef4c1f62 100644 --- a/tools/testing/selftests/kvm/aarch64/vgic_init.c +++ b/tools/testing/selftests/kvm/aarch64/vgic_init.c @@ -127,14 +127,12 @@ static void subtest_dist_rdist(struct vm_gic *v) : gic_v2_dist_region; =20 /* Check existing group/attributes */ - kvm_device_check_attr(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - dist.attr); + kvm_has_device_attr(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, dist.attr); =20 - kvm_device_check_attr(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - rdist.attr); + kvm_has_device_attr(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, rdist.attr); =20 /* check non existing attribute */ - ret =3D _kvm_device_check_attr(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, -1); + ret =3D __kvm_has_device_attr(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, -1); TEST_ASSERT(ret && errno =3D=3D ENXIO, "attribute not supported"); =20 /* misaligned DIST and REDIST address settings */ @@ -176,7 +174,7 @@ static void subtest_dist_rdist(struct vm_gic *v) rdist.attr, &addr, true); TEST_ASSERT(ret && errno =3D=3D EEXIST, "GIC redist base set again"); =20 - ret =3D _kvm_device_check_attr(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + ret =3D __kvm_has_device_attr(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, KVM_VGIC_V3_ADDR_TYPE_REDIST); if (!ret) { /* Attempt to mix legacy and new redistributor regions */ @@ -203,7 +201,7 @@ static void subtest_v3_redist_regions(struct vm_gic *v) uint64_t addr, expected_addr; int ret; =20 - ret =3D kvm_device_check_attr(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + ret =3D kvm_has_device_attr(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, KVM_VGIC_V3_ADDR_TYPE_REDIST); TEST_ASSERT(!ret, "Multiple redist regions advertised"); =20 diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/te= sting/selftests/kvm/include/kvm_util_base.h index df1202bacc04..97cdeeac4db6 100644 --- a/tools/testing/selftests/kvm/include/kvm_util_base.h +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h @@ -477,8 +477,8 @@ void *vcpu_map_dirty_ring(struct kvm_vm *vm, uint32_t v= cpuid); */ void vcpu_args_set(struct kvm_vm *vm, uint32_t vcpuid, unsigned int num, .= ..); =20 -int _kvm_device_check_attr(int dev_fd, uint32_t group, uint64_t attr); -int kvm_device_check_attr(int dev_fd, uint32_t group, uint64_t attr); +int __kvm_has_device_attr(int dev_fd, uint32_t group, uint64_t attr); +int kvm_has_device_attr(int dev_fd, uint32_t group, uint64_t attr); int __kvm_test_create_device(struct kvm_vm *vm, uint64_t type); int __kvm_create_device(struct kvm_vm *vm, uint64_t type); int kvm_create_device(struct kvm_vm *vm, uint64_t type); @@ -489,7 +489,7 @@ int kvm_device_access(int dev_fd, uint32_t group, uint6= 4_t attr, void kvm_irq_line(struct kvm_vm *vm, uint32_t irq, int level); int _kvm_irq_line(struct kvm_vm *vm, uint32_t irq, int level); =20 -int _vcpu_has_device_attr(struct kvm_vm *vm, uint32_t vcpuid, uint32_t gro= up, +int __vcpu_has_device_attr(struct kvm_vm *vm, uint32_t vcpuid, uint32_t gr= oup, uint64_t attr); int vcpu_has_device_attr(struct kvm_vm *vm, uint32_t vcpuid, uint32_t grou= p, uint64_t attr); diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index e10894cc2bc1..f9547edb30ad 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -1581,7 +1581,7 @@ void _vm_ioctl(struct kvm_vm *vm, unsigned long cmd, = const char *name, void *arg * Device Ioctl */ =20 -int _kvm_device_check_attr(int dev_fd, uint32_t group, uint64_t attr) +int __kvm_has_device_attr(int dev_fd, uint32_t group, uint64_t attr) { struct kvm_device_attr attribute =3D { .group =3D group, @@ -1592,9 +1592,9 @@ int _kvm_device_check_attr(int dev_fd, uint32_t group= , uint64_t attr) return ioctl(dev_fd, KVM_HAS_DEVICE_ATTR, &attribute); } =20 -int kvm_device_check_attr(int dev_fd, uint32_t group, uint64_t attr) +int kvm_has_device_attr(int dev_fd, uint32_t group, uint64_t attr) { - int ret =3D _kvm_device_check_attr(dev_fd, group, attr); + int ret =3D __kvm_has_device_attr(dev_fd, group, attr); =20 TEST_ASSERT(!ret, "KVM_HAS_DEVICE_ATTR failed, rc: %i errno: %i", ret, er= rno); return ret; @@ -1657,18 +1657,18 @@ int kvm_device_access(int dev_fd, uint32_t group, u= int64_t attr, return ret; } =20 -int _vcpu_has_device_attr(struct kvm_vm *vm, uint32_t vcpuid, uint32_t gro= up, +int __vcpu_has_device_attr(struct kvm_vm *vm, uint32_t vcpuid, uint32_t gr= oup, uint64_t attr) { struct vcpu *vcpu =3D vcpu_get(vm, vcpuid); =20 - return _kvm_device_check_attr(vcpu->fd, group, attr); + return __kvm_has_device_attr(vcpu->fd, group, attr); } =20 int vcpu_has_device_attr(struct kvm_vm *vm, uint32_t vcpuid, uint32_t grou= p, uint64_t attr) { - int ret =3D _vcpu_has_device_attr(vm, vcpuid, group, attr); + int ret =3D __vcpu_has_device_attr(vm, vcpuid, group, attr); =20 TEST_ASSERT(!ret, "KVM_HAS_DEVICE_ATTR IOCTL failed, rc: %i errno: %i", r= et, errno); return ret; diff --git a/tools/testing/selftests/kvm/system_counter_offset_test.c b/too= ls/testing/selftests/kvm/system_counter_offset_test.c index b337bbbfa41f..2b10c53abf4f 100644 --- a/tools/testing/selftests/kvm/system_counter_offset_test.c +++ b/tools/testing/selftests/kvm/system_counter_offset_test.c @@ -30,7 +30,7 @@ static struct test_case test_cases[] =3D { =20 static void check_preconditions(struct kvm_vm *vm) { - if (!_vcpu_has_device_attr(vm, VCPU_ID, KVM_VCPU_TSC_CTRL, KVM_VCPU_TSC_O= FFSET)) + if (!__vcpu_has_device_attr(vm, VCPU_ID, KVM_VCPU_TSC_CTRL, KVM_VCPU_TSC_= OFFSET)) return; =20 print_skip("KVM_VCPU_TSC_OFFSET not supported; skipping test"); --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 0029FC433F5 for ; Fri, 11 Mar 2022 05:54:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346736AbiCKFzA (ORCPT ); Fri, 11 Mar 2022 00:55:00 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56396 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346593AbiCKFws (ORCPT ); Fri, 11 Mar 2022 00:52:48 -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 9BE52F65FE for ; Thu, 10 Mar 2022 21:51:46 -0800 (PST) Received: by mail-yw1-x114a.google.com with SMTP id 00721157ae682-2d81518795fso60976507b3.0 for ; Thu, 10 Mar 2022 21:51:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=7H8ID3PArWSAJFJ6fYpFi7ULZbBg9B4ckFvVp1ij2d0=; b=HdpVEkn5gh7Y7pXFm/yfiLjrtEeWne7M5t+WTVmJB8OFpy4Bzgv/djJCldP+qjB8wR l0BsPv1hZviV6gcYyWD+Eb5yghuejzuUOMjMV3xKSnLH1oz77UaQvzu9bizjInbt7nxA o/+fYhWIdL/rg90ppDV8/oJiuvxOefrSBSzPom6t0ywcBzWitHtzm51lub8jpwXiWqEk 5rHvjkaxjdXP8j7yp23LFNAhByKAXn5E27KXNT7P1mHFsLH3AWzUGYz1q6iJx5zVdV5l yqV8bDGYzgYwigFDTThI7s2N6uxKdJAK1B6v5IF0JS6985sH/wbLyQdijowHDTC5zoUF WGhw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=7H8ID3PArWSAJFJ6fYpFi7ULZbBg9B4ckFvVp1ij2d0=; b=la2I0V5eT1jjfY7HrsAlY3PYA7YSwcsmYSiOsymilGhoUHAZX/ggxWLMFV3PijLz5W 8vUicDlRhmykxsU1WKjxNrAlJSdCd9HTWj+hfdV/T8y345vABMoQItVA7yiB8IomCc+H NqZTFijZqPDyN0PKEQ7c4Wxr4CcLwy+7kquPA2f6O2ZMqcSADz9xGaAaGPmDV4y19i8w OnC/nQIKWEHBCwec8SUl53iw3M68A96l4kPYNnbwINDWEPELQJjRFWROHFGmQl8iA668 FKbqJ3EPx5Ab7gAMm5dV3WETIOsZU8upQntXGEXZB/RbMwuWx2xeEA6wPAelDt/Nyjb/ OyIA== X-Gm-Message-State: AOAM532XVNblY2pe4ST5MrL1DWdcsSKjO8qruknTjpEGxAR2XQCHJwaa jXjz3yDeSZo7Mqt8+Kx5BthM1Ye0K038EOurRl4KQjSZ9BGuoD1UfM6tgZCWR9LPwBfEvxAeXTc NZo5RMBvTNkgrfjgT1NmdTDeVpt59iF8Llg7na3Olym3X8QdF4cGYtzIqalV/LpjNgZ/7Nw== X-Google-Smtp-Source: ABdhPJwYQjKdg5iUSKA4CBJzxuMoPO6ZIaxgAnDNH18z9Dz9Yt0ZY9Nao1hESo1NsjmIUIKJs4TSgyjoNfU= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a0d:ca16:0:b0:2dc:40af:d431 with SMTP id m22-20020a0dca16000000b002dc40afd431mr7014149ywd.206.1646977905744; Thu, 10 Mar 2022 21:51:45 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:35 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-25-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 024/105] KVM: selftests: Drop 'int' return from asserting *_device_has_attr() From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../testing/selftests/kvm/aarch64/vgic_init.c | 4 ++-- .../selftests/kvm/include/kvm_util_base.h | 20 ++++++++++++++++--- tools/testing/selftests/kvm/lib/kvm_util.c | 17 ---------------- 3 files changed, 19 insertions(+), 22 deletions(-) diff --git a/tools/testing/selftests/kvm/aarch64/vgic_init.c b/tools/testin= g/selftests/kvm/aarch64/vgic_init.c index 223fef4c1f62..2425894b3775 100644 --- a/tools/testing/selftests/kvm/aarch64/vgic_init.c +++ b/tools/testing/selftests/kvm/aarch64/vgic_init.c @@ -201,8 +201,8 @@ static void subtest_v3_redist_regions(struct vm_gic *v) uint64_t addr, expected_addr; int ret; =20 - ret =3D kvm_has_device_attr(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - KVM_VGIC_V3_ADDR_TYPE_REDIST); + ret =3D __kvm_has_device_attr(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + KVM_VGIC_V3_ADDR_TYPE_REDIST); TEST_ASSERT(!ret, "Multiple redist regions advertised"); =20 addr =3D REDIST_REGION_ATTR_ADDR(NR_VCPUS, 0x100000, 2, 0); diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/te= sting/selftests/kvm/include/kvm_util_base.h index 97cdeeac4db6..4cc2553887f7 100644 --- a/tools/testing/selftests/kvm/include/kvm_util_base.h +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h @@ -478,7 +478,14 @@ void *vcpu_map_dirty_ring(struct kvm_vm *vm, uint32_t = vcpuid); void vcpu_args_set(struct kvm_vm *vm, uint32_t vcpuid, unsigned int num, .= ..); =20 int __kvm_has_device_attr(int dev_fd, uint32_t group, uint64_t attr); -int kvm_has_device_attr(int dev_fd, uint32_t group, uint64_t attr); + +static inline void kvm_has_device_attr(int dev_fd, uint32_t group, uint64_= t attr) +{ + int ret =3D __kvm_has_device_attr(dev_fd, group, attr); + + TEST_ASSERT(!ret, "KVM_HAS_DEVICE_ATTR failed, rc: %i errno: %i", ret, er= rno); +} + int __kvm_test_create_device(struct kvm_vm *vm, uint64_t type); int __kvm_create_device(struct kvm_vm *vm, uint64_t type); int kvm_create_device(struct kvm_vm *vm, uint64_t type); @@ -491,8 +498,15 @@ int _kvm_irq_line(struct kvm_vm *vm, uint32_t irq, int= level); =20 int __vcpu_has_device_attr(struct kvm_vm *vm, uint32_t vcpuid, uint32_t gr= oup, uint64_t attr); -int vcpu_has_device_attr(struct kvm_vm *vm, uint32_t vcpuid, uint32_t grou= p, - uint64_t attr); + +static inline void vcpu_has_device_attr(struct kvm_vm *vm, uint32_t vcpuid, + uint32_t group, uint64_t attr) +{ + int ret =3D __vcpu_has_device_attr(vm, vcpuid, group, attr); + + TEST_ASSERT(!ret, KVM_IOCTL_ERROR(KVM_HAS_DEVICE_ATTR, ret)); +} + int _vcpu_access_device_attr(struct kvm_vm *vm, uint32_t vcpuid, uint32_t = group, uint64_t attr, void *val, bool write); int vcpu_access_device_attr(struct kvm_vm *vm, uint32_t vcpuid, uint32_t g= roup, diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index f9547edb30ad..e635241e3ee5 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -1592,14 +1592,6 @@ int __kvm_has_device_attr(int dev_fd, uint32_t group= , uint64_t attr) return ioctl(dev_fd, KVM_HAS_DEVICE_ATTR, &attribute); } =20 -int kvm_has_device_attr(int dev_fd, uint32_t group, uint64_t attr) -{ - int ret =3D __kvm_has_device_attr(dev_fd, group, attr); - - TEST_ASSERT(!ret, "KVM_HAS_DEVICE_ATTR failed, rc: %i errno: %i", ret, er= rno); - return ret; -} - int __kvm_test_create_device(struct kvm_vm *vm, uint64_t type) { struct kvm_create_device create_dev =3D { @@ -1665,15 +1657,6 @@ int __vcpu_has_device_attr(struct kvm_vm *vm, uint32= _t vcpuid, uint32_t group, return __kvm_has_device_attr(vcpu->fd, group, attr); } =20 -int vcpu_has_device_attr(struct kvm_vm *vm, uint32_t vcpuid, uint32_t grou= p, - uint64_t attr) -{ - int ret =3D __vcpu_has_device_attr(vm, vcpuid, group, attr); - - TEST_ASSERT(!ret, "KVM_HAS_DEVICE_ATTR IOCTL failed, rc: %i errno: %i", r= et, errno); - return ret; -} - int _vcpu_access_device_attr(struct kvm_vm *vm, uint32_t vcpuid, uint32_t = group, uint64_t attr, void *val, bool write) { --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 A815BC433F5 for ; Fri, 11 Mar 2022 05:56:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346878AbiCKF5N (ORCPT ); Fri, 11 Mar 2022 00:57:13 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56768 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346625AbiCKFw4 (ORCPT ); Fri, 11 Mar 2022 00:52:56 -0500 Received: from mail-yb1-xb4a.google.com (mail-yb1-xb4a.google.com [IPv6:2607:f8b0:4864:20::b4a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9400EF47CC for ; Thu, 10 Mar 2022 21:51:48 -0800 (PST) Received: by mail-yb1-xb4a.google.com with SMTP id i62-20020a25d141000000b0062896a69ed2so6562645ybg.3 for ; Thu, 10 Mar 2022 21:51:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=sP+Be7nU9jtM9UxeSD9vywzFj98+qXv3mRzJB6hPZhU=; b=f0nmfDLgcAaWPusLYZ+HPkOOaDoNZvCCDX0zXwBFAXwu/fuK4K2Q0SIkSs/pn8MAPg aCHgrcPww14uucNrJ+gcwpihiN3zvF9U70GoP8CqkJX06XbBrLAslk3aZ2Y6TPfG8b0M VmNYOwLEfA7qvk9WGC72+KlVT4m9X7tV6xoyTPeUy+QlBabSpw5daADwAIwGh1+w6Buw 9+MJIkdxTmSwAn5AEdg8OJrXx+EHIDyoFhG4kXG8KO/JggRO5swqJd5t2h0FuxXah1VW /iYs1ZVH14ady0p6SmstQPTTUKMe+HzlfhpcxrfL23LMu42EduiQy6dmFFoMVe63zTLH 0+iw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=sP+Be7nU9jtM9UxeSD9vywzFj98+qXv3mRzJB6hPZhU=; b=VX98kK6jq+NG9xsYXL7jq4+1MIhL2F+r9bd0zxsahnNd/Rn6OqprMC8lowrf9hZJ0w 9nIMSZUYhgUoMWAtzBv2U3ctdCcVFSXgygyy4Mf91hbKwPef7ucfvKoldFKNKH1I0OiG 04TFoOg9uVBqwTnbqbJtX0Lj7A8t90E20UH/y8sglwDnPAWYLC44MFHPWvW0xdlUjWZw J04Xoj1cvIASR1R/WuN+pwlAvkB9bKZAL+KVxuJzsZo1DIyUyZTZ9BVK4+FvGgf4SKKu lopNdVugkk6OREeIGvzShZGmi0K8A7A1w9DnqKHMX/vOvblzD4ivSr89wb4b2oJ+ZWCz tDbw== X-Gm-Message-State: AOAM531ti2MVPArh40mGuANTBwuj7dZg9YX+r4PjnO3ypGvgLfK8sQmU JuYrFbDeWwWEFWLD84MUNpaEcLmfKy4wGXrBWilyve83MJc4oJBTKW9ATlxtxYV3UOH4O5W6j0l mBrqQmCLj8Q50mAtD+JtVX/3JbrD5WKnPdb2GAiwvdaAFmaZw94cNwOJdgD2k6+pQ5Fn9OA== X-Google-Smtp-Source: ABdhPJw1FYNEvhPF+GifGtAnpwWxn1Qg00yeRhurZWmvQ6fbOtCpmDx7OUNWkSaiQToMuKENdk+RR7vFlqE= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a25:cb85:0:b0:628:f0db:b2c4 with SMTP id b127-20020a25cb85000000b00628f0dbb2c4mr6708353ybg.531.1646977907741; Thu, 10 Mar 2022 21:51:47 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:36 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-26-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 025/105] KVM: selftests: Split get/set device_attr helpers From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/aarch64/arch_timer.c | 8 +- .../testing/selftests/kvm/aarch64/vgic_init.c | 246 +++++++++--------- .../selftests/kvm/include/kvm_util_base.h | 105 +++++--- .../testing/selftests/kvm/lib/aarch64/vgic.c | 31 ++- tools/testing/selftests/kvm/lib/guest_modes.c | 4 +- tools/testing/selftests/kvm/lib/kvm_util.c | 59 ++--- .../kvm/system_counter_offset_test.c | 4 +- 7 files changed, 240 insertions(+), 217 deletions(-) diff --git a/tools/testing/selftests/kvm/aarch64/arch_timer.c b/tools/testi= ng/selftests/kvm/aarch64/arch_timer.c index 92b2a6611e89..127fb4f0c335 100644 --- a/tools/testing/selftests/kvm/aarch64/arch_timer.c +++ b/tools/testing/selftests/kvm/aarch64/arch_timer.c @@ -349,10 +349,10 @@ static void test_run(struct kvm_vm *vm) static void test_init_timer_irq(struct kvm_vm *vm) { /* Timer initid should be same for all the vCPUs, so query only vCPU-0 */ - vcpu_access_device_attr(vm, 0, KVM_ARM_VCPU_TIMER_CTRL, - KVM_ARM_VCPU_TIMER_IRQ_PTIMER, &ptimer_irq, false); - vcpu_access_device_attr(vm, 0, KVM_ARM_VCPU_TIMER_CTRL, - KVM_ARM_VCPU_TIMER_IRQ_VTIMER, &vtimer_irq, false); + vcpu_device_attr_get(vm, 0, KVM_ARM_VCPU_TIMER_CTRL, + KVM_ARM_VCPU_TIMER_IRQ_PTIMER, &ptimer_irq); + vcpu_device_attr_get(vm, 0, KVM_ARM_VCPU_TIMER_CTRL, + KVM_ARM_VCPU_TIMER_IRQ_VTIMER, &vtimer_irq); =20 sync_global_to_guest(vm, ptimer_irq); sync_global_to_guest(vm, vtimer_irq); diff --git a/tools/testing/selftests/kvm/aarch64/vgic_init.c b/tools/testin= g/selftests/kvm/aarch64/vgic_init.c index 2425894b3775..0329aa04da31 100644 --- a/tools/testing/selftests/kvm/aarch64/vgic_init.c +++ b/tools/testing/selftests/kvm/aarch64/vgic_init.c @@ -33,13 +33,10 @@ struct vm_gic { static uint64_t max_phys_size; =20 /* helper to access a redistributor register */ -static int access_v3_redist_reg(int gicv3_fd, int vcpu, int offset, - uint32_t *val, bool write) +static int v3_redist_reg_get(int gicv3_fd, int vcpu, int offset, uint32_t = *val) { - uint64_t attr =3D REG_OFFSET(vcpu, offset); - - return _kvm_device_access(gicv3_fd, KVM_DEV_ARM_VGIC_GRP_REDIST_REGS, - attr, val, write); + return __kvm_device_attr_get(gicv3_fd, KVM_DEV_ARM_VGIC_GRP_REDIST_REGS, + REG_OFFSET(vcpu, offset), val); } =20 /* dummy guest code */ @@ -137,41 +134,41 @@ static void subtest_dist_rdist(struct vm_gic *v) =20 /* misaligned DIST and REDIST address settings */ addr =3D dist.alignment / 0x10; - ret =3D _kvm_device_access(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - dist.attr, &addr, true); + ret =3D __kvm_device_attr_set(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + dist.attr, &addr); TEST_ASSERT(ret && errno =3D=3D EINVAL, "GIC dist base not aligned"); =20 addr =3D rdist.alignment / 0x10; - ret =3D _kvm_device_access(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - rdist.attr, &addr, true); + ret =3D __kvm_device_attr_set(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + rdist.attr, &addr); TEST_ASSERT(ret && errno =3D=3D EINVAL, "GIC redist/cpu base not aligned"= ); =20 /* out of range address */ addr =3D max_phys_size; - ret =3D _kvm_device_access(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - dist.attr, &addr, true); + ret =3D __kvm_device_attr_set(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + dist.attr, &addr); TEST_ASSERT(ret && errno =3D=3D E2BIG, "dist address beyond IPA limit"); =20 - ret =3D _kvm_device_access(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - rdist.attr, &addr, true); + ret =3D __kvm_device_attr_set(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + rdist.attr, &addr); TEST_ASSERT(ret && errno =3D=3D E2BIG, "redist address beyond IPA limit"); =20 /* Space for half a rdist (a rdist is: 2 * rdist.alignment). */ addr =3D max_phys_size - dist.alignment; - ret =3D _kvm_device_access(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - rdist.attr, &addr, true); + ret =3D __kvm_device_attr_set(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + rdist.attr, &addr); TEST_ASSERT(ret && errno =3D=3D E2BIG, "half of the redist is beyond IPA limit"); =20 /* set REDIST base address @0x0*/ addr =3D 0x00000; - kvm_device_access(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - rdist.attr, &addr, true); + kvm_device_attr_set(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + rdist.attr, &addr); =20 /* Attempt to create a second legacy redistributor region */ addr =3D 0xE0000; - ret =3D _kvm_device_access(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - rdist.attr, &addr, true); + ret =3D __kvm_device_attr_set(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + rdist.attr, &addr); TEST_ASSERT(ret && errno =3D=3D EEXIST, "GIC redist base set again"); =20 ret =3D __kvm_has_device_attr(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, @@ -179,9 +176,8 @@ static void subtest_dist_rdist(struct vm_gic *v) if (!ret) { /* Attempt to mix legacy and new redistributor regions */ addr =3D REDIST_REGION_ATTR_ADDR(NR_VCPUS, 0x100000, 0, 0); - ret =3D _kvm_device_access(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, - &addr, true); + ret =3D __kvm_device_attr_set(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr); TEST_ASSERT(ret && errno =3D=3D EINVAL, "attempt to mix GICv3 REDIST and REDIST_REGION"); } @@ -191,8 +187,8 @@ static void subtest_dist_rdist(struct vm_gic *v) * on first vcpu run instead. */ addr =3D rdist.size - rdist.alignment; - kvm_device_access(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - dist.attr, &addr, true); + kvm_device_attr_set(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + dist.attr, &addr); } =20 /* Test the new REDIST region API */ @@ -206,66 +202,66 @@ static void subtest_v3_redist_regions(struct vm_gic *= v) TEST_ASSERT(!ret, "Multiple redist regions advertised"); =20 addr =3D REDIST_REGION_ATTR_ADDR(NR_VCPUS, 0x100000, 2, 0); - ret =3D _kvm_device_access(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr, true); + ret =3D __kvm_device_attr_set(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr); TEST_ASSERT(ret && errno =3D=3D EINVAL, "redist region attr value with fl= ags !=3D 0"); =20 addr =3D REDIST_REGION_ATTR_ADDR(0, 0x100000, 0, 0); - ret =3D _kvm_device_access(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr, true); + ret =3D __kvm_device_attr_set(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr); TEST_ASSERT(ret && errno =3D=3D EINVAL, "redist region attr value with co= unt=3D=3D 0"); =20 addr =3D REDIST_REGION_ATTR_ADDR(2, 0x200000, 0, 1); - ret =3D _kvm_device_access(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr, true); + ret =3D __kvm_device_attr_set(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr); TEST_ASSERT(ret && errno =3D=3D EINVAL, "attempt to register the first rdist region with index !=3D 0"); =20 addr =3D REDIST_REGION_ATTR_ADDR(2, 0x201000, 0, 1); - ret =3D _kvm_device_access(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr, true); + ret =3D __kvm_device_attr_set(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr); TEST_ASSERT(ret && errno =3D=3D EINVAL, "rdist region with misaligned add= ress"); =20 addr =3D REDIST_REGION_ATTR_ADDR(2, 0x200000, 0, 0); - kvm_device_access(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr, true); + kvm_device_attr_set(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr); =20 addr =3D REDIST_REGION_ATTR_ADDR(2, 0x200000, 0, 1); - ret =3D _kvm_device_access(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr, true); + ret =3D __kvm_device_attr_set(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr); TEST_ASSERT(ret && errno =3D=3D EINVAL, "register an rdist region with al= ready used index"); =20 addr =3D REDIST_REGION_ATTR_ADDR(1, 0x210000, 0, 2); - ret =3D _kvm_device_access(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr, true); + ret =3D __kvm_device_attr_set(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr); TEST_ASSERT(ret && errno =3D=3D EINVAL, "register an rdist region overlapping with another one"); =20 addr =3D REDIST_REGION_ATTR_ADDR(1, 0x240000, 0, 2); - ret =3D _kvm_device_access(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr, true); + ret =3D __kvm_device_attr_set(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr); TEST_ASSERT(ret && errno =3D=3D EINVAL, "register redist region with inde= x not +1"); =20 addr =3D REDIST_REGION_ATTR_ADDR(1, 0x240000, 0, 1); - kvm_device_access(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr, true); + kvm_device_attr_set(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr); =20 addr =3D REDIST_REGION_ATTR_ADDR(1, max_phys_size, 0, 2); - ret =3D _kvm_device_access(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr, true); + ret =3D __kvm_device_attr_set(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr); TEST_ASSERT(ret && errno =3D=3D E2BIG, "register redist region with base address beyond IPA range"); =20 /* The last redist is above the pa range. */ addr =3D REDIST_REGION_ATTR_ADDR(2, max_phys_size - 0x30000, 0, 2); - ret =3D _kvm_device_access(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr, true); + ret =3D __kvm_device_attr_set(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr); TEST_ASSERT(ret && errno =3D=3D E2BIG, "register redist region with top address beyond IPA range"); =20 addr =3D 0x260000; - ret =3D _kvm_device_access(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - KVM_VGIC_V3_ADDR_TYPE_REDIST, &addr, true); + ret =3D __kvm_device_attr_set(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + KVM_VGIC_V3_ADDR_TYPE_REDIST, &addr); TEST_ASSERT(ret && errno =3D=3D EINVAL, "Mix KVM_VGIC_V3_ADDR_TYPE_REDIST and REDIST_REGION"); =20 @@ -278,28 +274,28 @@ static void subtest_v3_redist_regions(struct vm_gic *= v) =20 addr =3D REDIST_REGION_ATTR_ADDR(0, 0, 0, 0); expected_addr =3D REDIST_REGION_ATTR_ADDR(2, 0x200000, 0, 0); - ret =3D _kvm_device_access(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr, false); + ret =3D __kvm_device_attr_get(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr); TEST_ASSERT(!ret && addr =3D=3D expected_addr, "read characteristics of r= egion #0"); =20 addr =3D REDIST_REGION_ATTR_ADDR(0, 0, 0, 1); expected_addr =3D REDIST_REGION_ATTR_ADDR(1, 0x240000, 0, 1); - ret =3D _kvm_device_access(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr, false); + ret =3D __kvm_device_attr_get(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr); TEST_ASSERT(!ret && addr =3D=3D expected_addr, "read characteristics of r= egion #1"); =20 addr =3D REDIST_REGION_ATTR_ADDR(0, 0, 0, 2); - ret =3D _kvm_device_access(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr, false); + ret =3D __kvm_device_attr_get(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr); TEST_ASSERT(ret && errno =3D=3D ENOENT, "read characteristics of non exis= ting region"); =20 addr =3D 0x260000; - kvm_device_access(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - KVM_VGIC_V3_ADDR_TYPE_DIST, &addr, true); + kvm_device_attr_set(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + KVM_VGIC_V3_ADDR_TYPE_DIST, &addr); =20 addr =3D REDIST_REGION_ATTR_ADDR(1, 0x260000, 0, 2); - ret =3D _kvm_device_access(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr, true); + ret =3D __kvm_device_attr_set(v->gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr); TEST_ASSERT(ret && errno =3D=3D EINVAL, "register redist region colliding= with dist"); } =20 @@ -351,8 +347,8 @@ static void test_v3_new_redist_regions(void) =20 v =3D vm_gic_create_with_vcpus(KVM_DEV_TYPE_ARM_VGIC_V3, NR_VCPUS); subtest_v3_redist_regions(&v); - kvm_device_access(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_CTRL, - KVM_DEV_ARM_VGIC_CTRL_INIT, NULL, true); + kvm_device_attr_set(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_CTRL, + KVM_DEV_ARM_VGIC_CTRL_INIT, NULL); =20 ret =3D run_vcpu(v.vm, 3); TEST_ASSERT(ret =3D=3D -ENXIO, "running without sufficient number of rdis= ts"); @@ -364,8 +360,8 @@ static void test_v3_new_redist_regions(void) subtest_v3_redist_regions(&v); =20 addr =3D REDIST_REGION_ATTR_ADDR(1, 0x280000, 0, 2); - kvm_device_access(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr, true); + kvm_device_attr_set(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr); =20 ret =3D run_vcpu(v.vm, 3); TEST_ASSERT(ret =3D=3D -EBUSY, "running without vgic explicit init"); @@ -377,17 +373,17 @@ static void test_v3_new_redist_regions(void) v =3D vm_gic_create_with_vcpus(KVM_DEV_TYPE_ARM_VGIC_V3, NR_VCPUS); subtest_v3_redist_regions(&v); =20 - ret =3D _kvm_device_access(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, dummy, true); + ret =3D __kvm_device_attr_set(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, dummy); TEST_ASSERT(ret && errno =3D=3D EFAULT, "register a third region allowing to cover the 4 vcpus"); =20 addr =3D REDIST_REGION_ATTR_ADDR(1, 0x280000, 0, 2); - kvm_device_access(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr, true); + kvm_device_attr_set(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr); =20 - kvm_device_access(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_CTRL, - KVM_DEV_ARM_VGIC_CTRL_INIT, NULL, true); + kvm_device_attr_set(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_CTRL, + KVM_DEV_ARM_VGIC_CTRL_INIT, NULL); =20 ret =3D run_vcpu(v.vm, 3); TEST_ASSERT(!ret, "vcpu run"); @@ -408,56 +404,56 @@ static void test_v3_typer_accesses(void) =20 vm_vcpu_add_default(v.vm, 3, guest_code); =20 - ret =3D access_v3_redist_reg(v.gic_fd, 1, GICR_TYPER, &val, false); + ret =3D v3_redist_reg_get(v.gic_fd, 1, GICR_TYPER, &val); TEST_ASSERT(ret && errno =3D=3D EINVAL, "attempting to read GICR_TYPER of= non created vcpu"); =20 vm_vcpu_add_default(v.vm, 1, guest_code); =20 - ret =3D access_v3_redist_reg(v.gic_fd, 1, GICR_TYPER, &val, false); + ret =3D v3_redist_reg_get(v.gic_fd, 1, GICR_TYPER, &val); TEST_ASSERT(ret && errno =3D=3D EBUSY, "read GICR_TYPER before GIC initia= lized"); =20 vm_vcpu_add_default(v.vm, 2, guest_code); =20 - kvm_device_access(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_CTRL, - KVM_DEV_ARM_VGIC_CTRL_INIT, NULL, true); + kvm_device_attr_set(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_CTRL, + KVM_DEV_ARM_VGIC_CTRL_INIT, NULL); =20 for (i =3D 0; i < NR_VCPUS ; i++) { - ret =3D access_v3_redist_reg(v.gic_fd, 0, GICR_TYPER, &val, false); + ret =3D v3_redist_reg_get(v.gic_fd, 0, GICR_TYPER, &val); TEST_ASSERT(!ret && !val, "read GICR_TYPER before rdist region setting"); } =20 addr =3D REDIST_REGION_ATTR_ADDR(2, 0x200000, 0, 0); - kvm_device_access(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr, true); + kvm_device_attr_set(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr); =20 /* The 2 first rdists should be put there (vcpu 0 and 3) */ - ret =3D access_v3_redist_reg(v.gic_fd, 0, GICR_TYPER, &val, false); + ret =3D v3_redist_reg_get(v.gic_fd, 0, GICR_TYPER, &val); TEST_ASSERT(!ret && !val, "read typer of rdist #0"); =20 - ret =3D access_v3_redist_reg(v.gic_fd, 3, GICR_TYPER, &val, false); + ret =3D v3_redist_reg_get(v.gic_fd, 3, GICR_TYPER, &val); TEST_ASSERT(!ret && val =3D=3D 0x310, "read typer of rdist #1"); =20 addr =3D REDIST_REGION_ATTR_ADDR(10, 0x100000, 0, 1); - ret =3D _kvm_device_access(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr, true); + ret =3D __kvm_device_attr_set(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr); TEST_ASSERT(ret && errno =3D=3D EINVAL, "collision with previous rdist re= gion"); =20 - ret =3D access_v3_redist_reg(v.gic_fd, 1, GICR_TYPER, &val, false); + ret =3D v3_redist_reg_get(v.gic_fd, 1, GICR_TYPER, &val); TEST_ASSERT(!ret && val =3D=3D 0x100, "no redist region attached to vcpu #1 yet, last cannot be returned"); =20 - ret =3D access_v3_redist_reg(v.gic_fd, 2, GICR_TYPER, &val, false); + ret =3D v3_redist_reg_get(v.gic_fd, 2, GICR_TYPER, &val); TEST_ASSERT(!ret && val =3D=3D 0x200, "no redist region attached to vcpu #2, last cannot be returned"); =20 addr =3D REDIST_REGION_ATTR_ADDR(10, 0x20000, 0, 1); - kvm_device_access(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr, true); + kvm_device_attr_set(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr); =20 - ret =3D access_v3_redist_reg(v.gic_fd, 1, GICR_TYPER, &val, false); + ret =3D v3_redist_reg_get(v.gic_fd, 1, GICR_TYPER, &val); TEST_ASSERT(!ret && val =3D=3D 0x100, "read typer of rdist #1"); =20 - ret =3D access_v3_redist_reg(v.gic_fd, 2, GICR_TYPER, &val, false); + ret =3D v3_redist_reg_get(v.gic_fd, 2, GICR_TYPER, &val); TEST_ASSERT(!ret && val =3D=3D 0x210, "read typer of rdist #1, last properly returned"); =20 @@ -486,37 +482,37 @@ static void test_v3_last_bit_redist_regions(void) =20 v.gic_fd =3D kvm_create_device(v.vm, KVM_DEV_TYPE_ARM_VGIC_V3); =20 - kvm_device_access(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_CTRL, - KVM_DEV_ARM_VGIC_CTRL_INIT, NULL, true); + kvm_device_attr_set(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_CTRL, + KVM_DEV_ARM_VGIC_CTRL_INIT, NULL); =20 addr =3D REDIST_REGION_ATTR_ADDR(2, 0x100000, 0, 0); - kvm_device_access(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr, true); + kvm_device_attr_set(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr); =20 addr =3D REDIST_REGION_ATTR_ADDR(2, 0x240000, 0, 1); - kvm_device_access(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr, true); + kvm_device_attr_set(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr); =20 addr =3D REDIST_REGION_ATTR_ADDR(2, 0x200000, 0, 2); - kvm_device_access(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr, true); + kvm_device_attr_set(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr); =20 - ret =3D access_v3_redist_reg(v.gic_fd, 0, GICR_TYPER, &val, false); + ret =3D v3_redist_reg_get(v.gic_fd, 0, GICR_TYPER, &val); TEST_ASSERT(!ret && val =3D=3D 0x000, "read typer of rdist #0"); =20 - ret =3D access_v3_redist_reg(v.gic_fd, 1, GICR_TYPER, &val, false); + ret =3D v3_redist_reg_get(v.gic_fd, 1, GICR_TYPER, &val); TEST_ASSERT(!ret && val =3D=3D 0x100, "read typer of rdist #1"); =20 - ret =3D access_v3_redist_reg(v.gic_fd, 2, GICR_TYPER, &val, false); + ret =3D v3_redist_reg_get(v.gic_fd, 2, GICR_TYPER, &val); TEST_ASSERT(!ret && val =3D=3D 0x200, "read typer of rdist #2"); =20 - ret =3D access_v3_redist_reg(v.gic_fd, 3, GICR_TYPER, &val, false); + ret =3D v3_redist_reg_get(v.gic_fd, 3, GICR_TYPER, &val); TEST_ASSERT(!ret && val =3D=3D 0x310, "read typer of rdist #3"); =20 - ret =3D access_v3_redist_reg(v.gic_fd, 5, GICR_TYPER, &val, false); + ret =3D v3_redist_reg_get(v.gic_fd, 5, GICR_TYPER, &val); TEST_ASSERT(!ret && val =3D=3D 0x500, "read typer of rdist #5"); =20 - ret =3D access_v3_redist_reg(v.gic_fd, 4, GICR_TYPER, &val, false); + ret =3D v3_redist_reg_get(v.gic_fd, 4, GICR_TYPER, &val); TEST_ASSERT(!ret && val =3D=3D 0x410, "read typer of rdist #4"); =20 vm_gic_destroy(&v); @@ -535,26 +531,26 @@ static void test_v3_last_bit_single_rdist(void) =20 v.gic_fd =3D kvm_create_device(v.vm, KVM_DEV_TYPE_ARM_VGIC_V3); =20 - kvm_device_access(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_CTRL, - KVM_DEV_ARM_VGIC_CTRL_INIT, NULL, true); + kvm_device_attr_set(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_CTRL, + KVM_DEV_ARM_VGIC_CTRL_INIT, NULL); =20 addr =3D 0x10000; - kvm_device_access(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - KVM_VGIC_V3_ADDR_TYPE_REDIST, &addr, true); + kvm_device_attr_set(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + KVM_VGIC_V3_ADDR_TYPE_REDIST, &addr); =20 - ret =3D access_v3_redist_reg(v.gic_fd, 0, GICR_TYPER, &val, false); + ret =3D v3_redist_reg_get(v.gic_fd, 0, GICR_TYPER, &val); TEST_ASSERT(!ret && val =3D=3D 0x000, "read typer of rdist #0"); =20 - ret =3D access_v3_redist_reg(v.gic_fd, 3, GICR_TYPER, &val, false); + ret =3D v3_redist_reg_get(v.gic_fd, 3, GICR_TYPER, &val); TEST_ASSERT(!ret && val =3D=3D 0x300, "read typer of rdist #1"); =20 - ret =3D access_v3_redist_reg(v.gic_fd, 5, GICR_TYPER, &val, false); + ret =3D v3_redist_reg_get(v.gic_fd, 5, GICR_TYPER, &val); TEST_ASSERT(!ret && val =3D=3D 0x500, "read typer of rdist #2"); =20 - ret =3D access_v3_redist_reg(v.gic_fd, 1, GICR_TYPER, &val, false); + ret =3D v3_redist_reg_get(v.gic_fd, 1, GICR_TYPER, &val); TEST_ASSERT(!ret && val =3D=3D 0x100, "read typer of rdist #3"); =20 - ret =3D access_v3_redist_reg(v.gic_fd, 2, GICR_TYPER, &val, false); + ret =3D v3_redist_reg_get(v.gic_fd, 2, GICR_TYPER, &val); TEST_ASSERT(!ret && val =3D=3D 0x210, "read typer of rdist #3"); =20 vm_gic_destroy(&v); @@ -571,19 +567,19 @@ static void test_v3_redist_ipa_range_check_at_vcpu_ru= n(void) =20 /* Set space for 3 redists, we have 1 vcpu, so this succeeds. */ addr =3D max_phys_size - (3 * 2 * 0x10000); - kvm_device_access(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - KVM_VGIC_V3_ADDR_TYPE_REDIST, &addr, true); + kvm_device_attr_set(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + KVM_VGIC_V3_ADDR_TYPE_REDIST, &addr); =20 addr =3D 0x00000; - kvm_device_access(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - KVM_VGIC_V3_ADDR_TYPE_DIST, &addr, true); + kvm_device_attr_set(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + KVM_VGIC_V3_ADDR_TYPE_DIST, &addr); =20 /* Add the rest of the VCPUs */ for (i =3D 1; i < NR_VCPUS; ++i) vm_vcpu_add_default(v.vm, i, guest_code); =20 - kvm_device_access(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_CTRL, - KVM_DEV_ARM_VGIC_CTRL_INIT, NULL, true); + kvm_device_attr_set(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_CTRL, + KVM_DEV_ARM_VGIC_CTRL_INIT, NULL); =20 /* Attempt to run a vcpu without enough redist space. */ ret =3D run_vcpu(v.vm, 2); @@ -603,31 +599,31 @@ static void test_v3_its_region(void) its_fd =3D kvm_create_device(v.vm, KVM_DEV_TYPE_ARM_VGIC_ITS); =20 addr =3D 0x401000; - ret =3D _kvm_device_access(its_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - KVM_VGIC_ITS_ADDR_TYPE, &addr, true); + ret =3D __kvm_device_attr_set(its_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + KVM_VGIC_ITS_ADDR_TYPE, &addr); TEST_ASSERT(ret && errno =3D=3D EINVAL, "ITS region with misaligned address"); =20 addr =3D max_phys_size; - ret =3D _kvm_device_access(its_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - KVM_VGIC_ITS_ADDR_TYPE, &addr, true); + ret =3D __kvm_device_attr_set(its_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + KVM_VGIC_ITS_ADDR_TYPE, &addr); TEST_ASSERT(ret && errno =3D=3D E2BIG, "register ITS region with base address beyond IPA range"); =20 addr =3D max_phys_size - 0x10000; - ret =3D _kvm_device_access(its_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - KVM_VGIC_ITS_ADDR_TYPE, &addr, true); + ret =3D __kvm_device_attr_set(its_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + KVM_VGIC_ITS_ADDR_TYPE, &addr); TEST_ASSERT(ret && errno =3D=3D E2BIG, "Half of ITS region is beyond IPA range"); =20 /* This one succeeds setting the ITS base */ addr =3D 0x400000; - kvm_device_access(its_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - KVM_VGIC_ITS_ADDR_TYPE, &addr, true); + kvm_device_attr_set(its_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + KVM_VGIC_ITS_ADDR_TYPE, &addr); =20 addr =3D 0x300000; - ret =3D _kvm_device_access(its_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - KVM_VGIC_ITS_ADDR_TYPE, &addr, true); + ret =3D __kvm_device_attr_set(its_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + KVM_VGIC_ITS_ADDR_TYPE, &addr); TEST_ASSERT(ret && errno =3D=3D EEXIST, "ITS base set again"); =20 close(its_fd); diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/te= sting/selftests/kvm/include/kvm_util_base.h index 4cc2553887f7..f81443666f8c 100644 --- a/tools/testing/selftests/kvm/include/kvm_util_base.h +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h @@ -455,6 +455,79 @@ static inline int vcpu_get_stats_fd(struct kvm_vm *vm,= uint32_t vcpuid) return fd; } =20 +int __kvm_has_device_attr(int dev_fd, uint32_t group, uint64_t attr); + +static inline void kvm_has_device_attr(int dev_fd, uint32_t group, uint64_= t attr) +{ + int ret =3D __kvm_has_device_attr(dev_fd, group, attr); + + TEST_ASSERT(!ret, "KVM_HAS_DEVICE_ATTR failed, rc: %i errno: %i", ret, er= rno); +} + + +int __kvm_device_attr_access(int dev_fd, uint32_t group, uint64_t attr, + void *val, unsigned long cmd); + +static inline int __kvm_device_attr_get(int dev_fd, uint32_t group, + uint64_t attr, void *val) +{ + return __kvm_device_attr_access(dev_fd, group, attr, val, + KVM_GET_DEVICE_ATTR); +} + +static inline void kvm_device_attr_get(int dev_fd, uint32_t group, + uint64_t attr, void *val) +{ + int ret =3D __kvm_device_attr_get(dev_fd, group, attr, val); + + TEST_ASSERT(!ret, KVM_IOCTL_ERROR(KVM_GET_DEVICE_ATTR, ret)); +} + +static inline int __kvm_device_attr_set(int dev_fd, uint32_t group, + uint64_t attr, void *val) +{ + return __kvm_device_attr_access(dev_fd, group, attr, val, + KVM_SET_DEVICE_ATTR); +} + +static inline void kvm_device_attr_set(int dev_fd, uint32_t group, + uint64_t attr, void *val) +{ + int ret =3D __kvm_device_attr_set(dev_fd, group, attr, val); + + TEST_ASSERT(!ret, KVM_IOCTL_ERROR(KVM_SET_DEVICE_ATTR, ret)); +} + +int __vcpu_has_device_attr(struct kvm_vm *vm, uint32_t vcpuid, uint32_t gr= oup, + uint64_t attr); + +static inline void vcpu_has_device_attr(struct kvm_vm *vm, uint32_t vcpuid, + uint32_t group, uint64_t attr) +{ + int ret =3D __vcpu_has_device_attr(vm, vcpuid, group, attr); + + TEST_ASSERT(!ret, KVM_IOCTL_ERROR(KVM_HAS_DEVICE_ATTR, ret)); +} + +int __vcpu_device_attr_get(struct kvm_vm *vm, uint32_t vcpuid, uint32_t gr= oup, + uint64_t attr, void *val); +void vcpu_device_attr_get(struct kvm_vm *vm, uint32_t vcpuid, uint32_t gro= up, + uint64_t attr, void *val); +int __vcpu_device_attr_set(struct kvm_vm *vm, uint32_t vcpuid, uint32_t gr= oup, + uint64_t attr, void *val); +void vcpu_device_attr_set(struct kvm_vm *vm, uint32_t vcpuid, uint32_t gro= up, + uint64_t attr, void *val); +int __kvm_test_create_device(struct kvm_vm *vm, uint64_t type); +int __kvm_create_device(struct kvm_vm *vm, uint64_t type); + +static inline int kvm_create_device(struct kvm_vm *vm, uint64_t type) +{ + int fd =3D __kvm_create_device(vm, type); + + TEST_ASSERT(fd >=3D 0, KVM_IOCTL_ERROR(KVM_CREATE_DEVICE, fd)); + return fd; +} + void *vcpu_map_dirty_ring(struct kvm_vm *vm, uint32_t vcpuid); =20 /* @@ -477,41 +550,9 @@ void *vcpu_map_dirty_ring(struct kvm_vm *vm, uint32_t = vcpuid); */ void vcpu_args_set(struct kvm_vm *vm, uint32_t vcpuid, unsigned int num, .= ..); =20 -int __kvm_has_device_attr(int dev_fd, uint32_t group, uint64_t attr); - -static inline void kvm_has_device_attr(int dev_fd, uint32_t group, uint64_= t attr) -{ - int ret =3D __kvm_has_device_attr(dev_fd, group, attr); - - TEST_ASSERT(!ret, "KVM_HAS_DEVICE_ATTR failed, rc: %i errno: %i", ret, er= rno); -} - -int __kvm_test_create_device(struct kvm_vm *vm, uint64_t type); -int __kvm_create_device(struct kvm_vm *vm, uint64_t type); -int kvm_create_device(struct kvm_vm *vm, uint64_t type); -int _kvm_device_access(int dev_fd, uint32_t group, uint64_t attr, - void *val, bool write); -int kvm_device_access(int dev_fd, uint32_t group, uint64_t attr, - void *val, bool write); void kvm_irq_line(struct kvm_vm *vm, uint32_t irq, int level); int _kvm_irq_line(struct kvm_vm *vm, uint32_t irq, int level); =20 -int __vcpu_has_device_attr(struct kvm_vm *vm, uint32_t vcpuid, uint32_t gr= oup, - uint64_t attr); - -static inline void vcpu_has_device_attr(struct kvm_vm *vm, uint32_t vcpuid, - uint32_t group, uint64_t attr) -{ - int ret =3D __vcpu_has_device_attr(vm, vcpuid, group, attr); - - TEST_ASSERT(!ret, KVM_IOCTL_ERROR(KVM_HAS_DEVICE_ATTR, ret)); -} - -int _vcpu_access_device_attr(struct kvm_vm *vm, uint32_t vcpuid, uint32_t = group, - uint64_t attr, void *val, bool write); -int vcpu_access_device_attr(struct kvm_vm *vm, uint32_t vcpuid, uint32_t g= roup, - uint64_t attr, void *val, bool write); - #define KVM_MAX_IRQ_ROUTES 4096 =20 struct kvm_irq_routing *kvm_gsi_routing_create(void); diff --git a/tools/testing/selftests/kvm/lib/aarch64/vgic.c b/tools/testing= /selftests/kvm/lib/aarch64/vgic.c index f0ef9530fefe..25e765973f74 100644 --- a/tools/testing/selftests/kvm/lib/aarch64/vgic.c +++ b/tools/testing/selftests/kvm/lib/aarch64/vgic.c @@ -53,27 +53,26 @@ int vgic_v3_setup(struct kvm_vm *vm, unsigned int nr_vc= pus, uint32_t nr_irqs, /* Distributor setup */ gic_fd =3D kvm_create_device(vm, KVM_DEV_TYPE_ARM_VGIC_V3); =20 - kvm_device_access(gic_fd, KVM_DEV_ARM_VGIC_GRP_NR_IRQS, - 0, &nr_irqs, true); + kvm_device_attr_get(gic_fd, KVM_DEV_ARM_VGIC_GRP_NR_IRQS, 0, &nr_irqs); =20 - kvm_device_access(gic_fd, KVM_DEV_ARM_VGIC_GRP_CTRL, - KVM_DEV_ARM_VGIC_CTRL_INIT, NULL, true); + kvm_device_attr_set(gic_fd, KVM_DEV_ARM_VGIC_GRP_CTRL, + KVM_DEV_ARM_VGIC_CTRL_INIT, NULL); =20 - kvm_device_access(gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - KVM_VGIC_V3_ADDR_TYPE_DIST, &gicd_base_gpa, true); + kvm_device_attr_set(gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + KVM_VGIC_V3_ADDR_TYPE_DIST, &gicd_base_gpa); nr_gic_pages =3D vm_calc_num_guest_pages(vm->mode, KVM_VGIC_V3_DIST_SIZE); virt_map(vm, gicd_base_gpa, gicd_base_gpa, nr_gic_pages); =20 /* Redistributor setup */ redist_attr =3D REDIST_REGION_ATTR_ADDR(nr_vcpus, gicr_base_gpa, 0, 0); - kvm_device_access(gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, - KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &redist_attr, true); + kvm_device_attr_set(gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, + KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &redist_attr); nr_gic_pages =3D vm_calc_num_guest_pages(vm->mode, KVM_VGIC_V3_REDIST_SIZE * nr_vcpus); virt_map(vm, gicr_base_gpa, gicr_base_gpa, nr_gic_pages); =20 - kvm_device_access(gic_fd, KVM_DEV_ARM_VGIC_GRP_CTRL, - KVM_DEV_ARM_VGIC_CTRL_INIT, NULL, true); + kvm_device_attr_set(gic_fd, KVM_DEV_ARM_VGIC_GRP_CTRL, + KVM_DEV_ARM_VGIC_CTRL_INIT, NULL); =20 return gic_fd; } @@ -86,14 +85,14 @@ int _kvm_irq_set_level_info(int gic_fd, uint32_t intid,= int level) uint64_t val; int ret; =20 - ret =3D _kvm_device_access(gic_fd, KVM_DEV_ARM_VGIC_GRP_LEVEL_INFO, - attr, &val, false); + ret =3D __kvm_device_attr_get(gic_fd, KVM_DEV_ARM_VGIC_GRP_LEVEL_INFO, + attr, &val); if (ret !=3D 0) return ret; =20 val |=3D 1U << index; - ret =3D _kvm_device_access(gic_fd, KVM_DEV_ARM_VGIC_GRP_LEVEL_INFO, - attr, &val, true); + ret =3D __kvm_device_attr_set(gic_fd, KVM_DEV_ARM_VGIC_GRP_LEVEL_INFO, + attr, &val); return ret; } =20 @@ -154,9 +153,9 @@ static void vgic_poke_irq(int gic_fd, uint32_t intid, * intid will just make the read/writes point to above the intended * register space (i.e., ICPENDR after ISPENDR). */ - kvm_device_access(gic_fd, group, attr, &val, false); + kvm_device_attr_get(gic_fd, group, attr, &val); val |=3D 1ULL << index; - kvm_device_access(gic_fd, group, attr, &val, true); + kvm_device_attr_set(gic_fd, group, attr, &val); } =20 void kvm_irq_write_ispendr(int gic_fd, uint32_t intid, uint32_t vcpu) diff --git a/tools/testing/selftests/kvm/lib/guest_modes.c b/tools/testing/= selftests/kvm/lib/guest_modes.c index 9ab27b4169bf..0be56c63aed6 100644 --- a/tools/testing/selftests/kvm/lib/guest_modes.c +++ b/tools/testing/selftests/kvm/lib/guest_modes.c @@ -66,8 +66,8 @@ void guest_modes_append_default(void) =20 kvm_fd =3D open_kvm_dev_path_or_exit(); vm_fd =3D __kvm_ioctl(kvm_fd, KVM_CREATE_VM, 0); - kvm_device_access(vm_fd, KVM_S390_VM_CPU_MODEL, - KVM_S390_VM_CPU_PROCESSOR, &info, false); + kvm_device_attr_get(vm_fd, KVM_S390_VM_CPU_MODEL, + KVM_S390_VM_CPU_PROCESSOR, &info); close(vm_fd); close(kvm_fd); /* Starting with z13 we have 47bits of physical address */ diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index e635241e3ee5..e2427b51375d 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -1616,16 +1616,8 @@ int __kvm_create_device(struct kvm_vm *vm, uint64_t = type) return err ? : create_dev.fd; } =20 -int kvm_create_device(struct kvm_vm *vm, uint64_t type) -{ - int fd =3D __kvm_create_device(vm, type); - - TEST_ASSERT(fd >=3D 0, "KVM_CREATE_DEVICE IOCTL failed, rc: %i errno: %i"= , fd, errno); - return fd; -} - -int _kvm_device_access(int dev_fd, uint32_t group, uint64_t attr, - void *val, bool write) +int __kvm_device_attr_access(int dev_fd, uint32_t group, uint64_t attr, + void *val, unsigned long cmd) { struct kvm_device_attr kvmattr =3D { .group =3D group, @@ -1633,20 +1625,32 @@ int _kvm_device_access(int dev_fd, uint32_t group, = uint64_t attr, .flags =3D 0, .addr =3D (uintptr_t)val, }; - int ret; =20 - ret =3D ioctl(dev_fd, write ? KVM_SET_DEVICE_ATTR : KVM_GET_DEVICE_ATTR, - &kvmattr); - return ret; + return __kvm_ioctl(dev_fd, cmd, &kvmattr); } =20 -int kvm_device_access(int dev_fd, uint32_t group, uint64_t attr, - void *val, bool write) +int __vcpu_device_attr_get(struct kvm_vm *vm, uint32_t vcpuid, uint32_t gr= oup, + uint64_t attr, void *val) { - int ret =3D _kvm_device_access(dev_fd, group, attr, val, write); + return __kvm_device_attr_get(vcpu_get(vm, vcpuid)->fd, group, attr, val); +} + +void vcpu_device_attr_get(struct kvm_vm *vm, uint32_t vcpuid, uint32_t gro= up, + uint64_t attr, void *val) +{ + kvm_device_attr_get(vcpu_get(vm, vcpuid)->fd, group, attr, val); +} =20 - TEST_ASSERT(!ret, "KVM_SET|GET_DEVICE_ATTR IOCTL failed, rc: %i errno: %i= ", ret, errno); - return ret; +int __vcpu_device_attr_set(struct kvm_vm *vm, uint32_t vcpuid, uint32_t gr= oup, + uint64_t attr, void *val) +{ + return __kvm_device_attr_set(vcpu_get(vm, vcpuid)->fd, group, attr, val); +} + +void vcpu_device_attr_set(struct kvm_vm *vm, uint32_t vcpuid, uint32_t gro= up, + uint64_t attr, void *val) +{ + kvm_device_attr_set(vcpu_get(vm, vcpuid)->fd, group, attr, val); } =20 int __vcpu_has_device_attr(struct kvm_vm *vm, uint32_t vcpuid, uint32_t gr= oup, @@ -1657,23 +1661,6 @@ int __vcpu_has_device_attr(struct kvm_vm *vm, uint32= _t vcpuid, uint32_t group, return __kvm_has_device_attr(vcpu->fd, group, attr); } =20 -int _vcpu_access_device_attr(struct kvm_vm *vm, uint32_t vcpuid, uint32_t = group, - uint64_t attr, void *val, bool write) -{ - struct vcpu *vcpu =3D vcpu_get(vm, vcpuid); - - return _kvm_device_access(vcpu->fd, group, attr, val, write); -} - -int vcpu_access_device_attr(struct kvm_vm *vm, uint32_t vcpuid, uint32_t g= roup, - uint64_t attr, void *val, bool write) -{ - int ret =3D _vcpu_access_device_attr(vm, vcpuid, group, attr, val, write); - - TEST_ASSERT(!ret, "KVM_SET|GET_DEVICE_ATTR IOCTL failed, rc: %i errno: %i= ", ret, errno); - return ret; -} - /* * IRQ related functions. */ diff --git a/tools/testing/selftests/kvm/system_counter_offset_test.c b/too= ls/testing/selftests/kvm/system_counter_offset_test.c index 2b10c53abf4f..5dd9d28efb97 100644 --- a/tools/testing/selftests/kvm/system_counter_offset_test.c +++ b/tools/testing/selftests/kvm/system_counter_offset_test.c @@ -39,8 +39,8 @@ static void check_preconditions(struct kvm_vm *vm) =20 static void setup_system_counter(struct kvm_vm *vm, struct test_case *test) { - vcpu_access_device_attr(vm, VCPU_ID, KVM_VCPU_TSC_CTRL, - KVM_VCPU_TSC_OFFSET, &test->tsc_offset, true); + vcpu_device_attr_set(vm, VCPU_ID, KVM_VCPU_TSC_CTRL, + KVM_VCPU_TSC_OFFSET, &test->tsc_offset); } =20 static uint64_t guest_read_system_counter(struct test_case *test) --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 B45C1C433F5 for ; Fri, 11 Mar 2022 05:53:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346729AbiCKFyx (ORCPT ); Fri, 11 Mar 2022 00:54:53 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56114 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346629AbiCKFw5 (ORCPT ); Fri, 11 Mar 2022 00:52:57 -0500 Received: from mail-pf1-x44a.google.com (mail-pf1-x44a.google.com [IPv6:2607:f8b0:4864:20::44a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 24578F47EA for ; Thu, 10 Mar 2022 21:51:50 -0800 (PST) Received: by mail-pf1-x44a.google.com with SMTP id d145-20020a621d97000000b004f7285f67e8so4625108pfd.2 for ; Thu, 10 Mar 2022 21:51:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=iI4XTc/wR6t2j4zmaPouy0Ex+zWaKMJ1wxjoKdDM8s0=; b=TcFWlrsfKB4Ni5oft6Gi/P58XgEfWqvJIGiKdVIBM37zoyL9baSvAPQ9b5AYs4bWcy mlnwbCIvpURi8OdSxQEMyRFpl0eHyO3SyASQNpJZQtEtqWg9bl6psDtx9XFlTfsgfbb9 L95ebIUdrK4+AP82ez6XL0ma+VdlJ9al+CJIa6WWCc9wPHpFlNcjOYEcz/FeZHlcxikk kZ0NW+SXFwZKl+NflJVnVRF4ahyqCBZfSthLau400xUccnSR9YPx1SksMmqih1+ncAlA RhgeVgbzeMucp8hvLzAQlUciywClyoqSWDfZKi89DBcDd71fLVyqK1NPN2MWjJJr9Cks fb1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=iI4XTc/wR6t2j4zmaPouy0Ex+zWaKMJ1wxjoKdDM8s0=; b=XUBK3+4YfDtyXgi9jDdaQVhwLw6So+H7Me3eGkdzyT0ufGjBG6cl7etSCS7al1Bk4i 5+KE86pOKqDmahbFGNIWIUJYqFMOkElrhHsDrYw9SMSGHpYdsJ09Jt8bHoY0K1y2fG+2 V3D/5jEVa4O7bSm2xpAH37qFqspY/ALQ97+UwTvkjlnR3KUfwoumlEQKX3/DpzSd5EUs jcMNvSJoCGzwfoVDNbSqbVZzpP71N5gsjomttz1UV+y7w8AdvOnFejKxduBdUe5qlYC9 mv8aVMC5dJsf5zZ+WLpEvRnE8XIu/W9/xDrwGr0BH3Cwh9xhj1bh4cdlVV+m/z3zBLXt exXA== X-Gm-Message-State: AOAM5302JZJPj/rKO5yQL9mKusjUJeRnKtYN/YAS/vQUK3jLu16sTSCY ZOWXGIsHWxM+4TgoE8IArAz1u4aRHOnvGLxdmXyGKAb4/YojBbjaxSZLFQGPwtMMq0T5ZHjywuS ws/7yqPBjp/YcayP16PGnSADswTofuqHbHMP6o0OvP4HnVqsLUcpcxwXRr2ITEcGPXYV5rw== X-Google-Smtp-Source: ABdhPJx3FkLzWSbRDV3YpRaCRYf7Re45glg1XPevAsRxd0jqPrSD3CE+NHSAs6HX658gxxpy21AN7PhR3CI= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a05:6a00:1501:b0:4f7:948d:14fa with SMTP id q1-20020a056a00150100b004f7948d14famr94271pfu.74.1646977909517; Thu, 10 Mar 2022 21:51:49 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:37 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-27-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 026/105] KVM: selftests: Add a VM backpointer to 'struct vcpu' From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- tools/testing/selftests/kvm/include/kvm_util_base.h | 1 + tools/testing/selftests/kvm/lib/kvm_util.c | 1 + 2 files changed, 2 insertions(+) diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/te= sting/selftests/kvm/include/kvm_util_base.h index f81443666f8c..21020d6a4f01 100644 --- a/tools/testing/selftests/kvm/include/kvm_util_base.h +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h @@ -47,6 +47,7 @@ struct vcpu { struct list_head list; uint32_t id; int fd; + struct kvm_vm *vm; struct kvm_run *state; struct kvm_dirty_gfn *dirty_gfns; uint32_t fetch_index; diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index e2427b51375d..ed7e2c5b0062 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -1070,6 +1070,7 @@ void vm_vcpu_add(struct kvm_vm *vm, uint32_t vcpuid) vcpu =3D calloc(1, sizeof(*vcpu)); TEST_ASSERT(vcpu !=3D NULL, "Insufficient Memory"); =20 + vcpu->vm =3D vm; vcpu->id =3D vcpuid; vcpu->fd =3D __vm_ioctl(vm, KVM_CREATE_VCPU, (void *)(unsigned long)vcpui= d); TEST_ASSERT(vcpu->fd >=3D 0, KVM_IOCTL_ERROR(KVM_CREATE_VCPU, vcpu->fd)); --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 B21DFC433F5 for ; Fri, 11 Mar 2022 05:54:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346782AbiCKFza (ORCPT ); Fri, 11 Mar 2022 00:55:30 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55052 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346634AbiCKFw5 (ORCPT ); Fri, 11 Mar 2022 00:52:57 -0500 Received: from mail-pf1-x44a.google.com (mail-pf1-x44a.google.com [IPv6:2607:f8b0:4864:20::44a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6F913FABE6 for ; Thu, 10 Mar 2022 21:51:52 -0800 (PST) Received: by mail-pf1-x44a.google.com with SMTP id k130-20020a628488000000b004f362b45f28so4617535pfd.9 for ; Thu, 10 Mar 2022 21:51:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=kgxCOayuOfCfyQ/cB0i9Z9RutZCvQT+K5y78pquGYSc=; b=dm8K0vIoWRCu9ziESuUfuBYtCsMRUblpAfXcUhQEu8kpN2aYyRgi8ntjPI06+g144r ovX/3X2wFr1MLVZL4s1Fw6LT2Kcb0m6UQhQCFa14ifK/R91VuzJ24F4Ll7ozBJrwDY8Y qsivp/qQHK7Cg2O4k83TV0QrWkZtNF5c2obysNtHfg7Xb0ipBFnrvDYKjVUxkof2IhDU XiHAtzKRioyA5KzqM7OgDSOz6UOyZIh76c9fAruhvq0nSf7QPiHe4HB8/Nwlg/j+/8B8 jXUKZt5aGcU3yZ3LRCFgYwc5ua0LmbJbhDNv7Km+wQ6oFYfi4aDkMnr1dD0nx/TDxTkL HVsA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=kgxCOayuOfCfyQ/cB0i9Z9RutZCvQT+K5y78pquGYSc=; b=VpoVDOCXpxMVpqBa78J6+Mp1a6uGtqfW7kb2n+jG+wf+BmmJuji9fhfzCU+9hfMttI iO0gRM7CDs246Bkn4kPaS5m1f+3v9tGmo24mqM+AHwQIDYxBBtzAM/WCTuo6JMlf98dK LsassBk9Wf45vX0pbaHYIEhycxF53YC3VluKdZ4cFBIPphdoeFsXKQ6+sKFDczqeRrE+ NsQ9RZvUwDrtep5gsd+B6bULnM8Dxy6Ed1L1uW9Fo7rTRVKEKaMPFYQdWEEzW+TwRIXJ nZBXUUKfvAZmsoHT7J02VeglVp6iaSbbAGRmx16QbljLy1Ope/+OBOqzAoXNFrC2fyAq uUEQ== X-Gm-Message-State: AOAM530W2ErvSK9c75YMr4ccIt8UsmmL/ojwhebrzrUbsrp3R3odrcTG aTqM+wXRLyOgRebi+aYXiKlxYdKnq4NZBdzITEhiTWSmhCvuAk6cJ1XyT5BiLB9Hl8Bf+RxxQ7D +XlUl3LSQs7uOXC0T5CzfvnpQS6JAOsLjvVquLEBKbDvwrnq58kR5Bi08+MLQpsGQoqsU8w== X-Google-Smtp-Source: ABdhPJxw2ReaMDDN9SJrY6nV/XjF6hRxFCd4B2TkFx4aXHyDWnOjsZezpCPfmTvc65IMa+nVFzNVPQDkUWU= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:90b:4d81:b0:1bf:8ce4:4f51 with SMTP id oj1-20020a17090b4d8100b001bf8ce44f51mr461196pjb.0.1646977911305; Thu, 10 Mar 2022 21:51:51 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:38 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-28-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 027/105] KVM: selftests: Add vm_create_*() variants to expose/return 'struct vcpu' From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/include/kvm_util_base.h | 17 +++++++++++++++++ tools/testing/selftests/kvm/lib/kvm_util.c | 18 ++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/te= sting/selftests/kvm/include/kvm_util_base.h index 21020d6a4f01..e87988665607 100644 --- a/tools/testing/selftests/kvm/include/kvm_util_base.h +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h @@ -619,6 +619,23 @@ struct kvm_vm *vm_create_with_vcpus(enum vm_guest_mode= mode, uint32_t nr_vcpus, uint32_t num_percpu_pages, void *guest_code, uint32_t vcpuids[]); =20 + +/* + * Create a VM with a single vCPU with reasonable defaults and @extra_mem_= pages + * additional pages of guest memory. Returns the VM and vCPU (via out par= am). + */ +struct kvm_vm *__vm_create_with_one_vcpu(struct vcpu **vcpu, + uint64_t extra_mem_pages, + void *guest_code); + +static inline struct kvm_vm *vm_create_with_one_vcpu(struct vcpu **vcpu, + void *guest_code) +{ + return __vm_create_with_one_vcpu(vcpu, 0, guest_code); +} + +struct vcpu *vm_recreate_with_one_vcpu(struct kvm_vm *vm); + /* * Adds a vCPU with reasonable defaults (e.g. a stack) * diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index ed7e2c5b0062..0c088454e600 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -365,6 +365,16 @@ struct kvm_vm *vm_create_default(uint32_t vcpuid, uint= 64_t extra_mem_pages, (uint32_t []){ vcpuid }); } =20 +struct kvm_vm *__vm_create_with_one_vcpu(struct vcpu **vcpu, + uint64_t extra_mem_pages, + void *guest_code) +{ + struct kvm_vm *vm =3D vm_create_default(0, extra_mem_pages, guest_code); + + *vcpu =3D vcpu_get(vm, 0); + return vm; +} + /* * VM Restart * @@ -399,6 +409,14 @@ void kvm_vm_restart(struct kvm_vm *vmp) } } =20 +struct vcpu *vm_recreate_with_one_vcpu(struct kvm_vm *vm) +{ + kvm_vm_restart(vm); + + vm_vcpu_add(vm, 0); + return vcpu_get(vm, 0); +} + /* * Userspace Memory Region Find * --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 0E7C8C433EF for ; Fri, 11 Mar 2022 05:54:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346745AbiCKFzX (ORCPT ); Fri, 11 Mar 2022 00:55:23 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56090 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346635AbiCKFw5 (ORCPT ); Fri, 11 Mar 2022 00:52:57 -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 508D2F70DE for ; Thu, 10 Mar 2022 21:51:53 -0800 (PST) Received: by mail-pg1-x54a.google.com with SMTP id j5-20020a63e745000000b00378c359fac3so4232964pgk.2 for ; Thu, 10 Mar 2022 21:51:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=/fD5fP1bBRjGYsCEvIQqE65KVxkB7d1EdaEIshLLAnc=; b=hALZtKu88Pa5lD/VM36J8Q/f8WjAp9G7Xh27mORL4MlD0nYNPEriHZyU/mQxbpZ0F7 FUvjcQHjUmwTcnUjmn0ysCJpP3N4UZwIST5LsZZFerF+6I8OPyxoVpwDYi3Bi6PmrW2s +h1vGzz8nuqsuO3GisBMw+nDR/Qan2undr7XR8LRoAiJ3GcnddITFzVyjxOb5Emqch+c 18hdSeP99b/9Z2WM3RoFSZTDjEoQxZJZ11G+VzUtVCXp6iKxkUHS6h7fnMDjWSxKdQXI 2GyY8Isn5Tl2GMnlEL4nqQyijDbdYhfEjD+fOG+dkmBZKv5718Bu62X5c4rlUWCWwjXE lQ1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=/fD5fP1bBRjGYsCEvIQqE65KVxkB7d1EdaEIshLLAnc=; b=JdIllKLug6R+VqqdEnjf5iMtFnhfboqUetPRPc/XajYoNO6D540Q702Nr0OZr/jdT2 4QI2TrZvtv/jKeHDDdJvk9pKNw6eg9kBJ1XbiaVYNzEVMrLzPUXXrGN66vZQfxpLBBft WEbbeojVpvEVi1CmTKGJoeQ7Y+RmHw/rKFav8MUUWth8pMyg71E9ZLZ95Fc+JVh/oOTf m1fmghJpmeJ9Xn4a4BR2V0+8814x2sVNzL+lW9qf+8JV5U6+oXg85EsP6CVGMjVmhAUH l0o3IXjMuvpmRqwMun5E78+uz++y3JxT6pFpxSgLe7pPnvG3PrwXHjuaYiVYOiB662sR u5+g== X-Gm-Message-State: AOAM531r9o1xt6SGT9WakxzDPpVPXaz4wz5enbUwvhcvS15SSKfMzRTm Cxzsj6hcqo39qm2hT3P1IEicv8XVlnj967RqYJ1ifYi8oL8Shs21+i6jHgjKUgd2QY2T8vkwfS5 nUq7Kfp6F+Pnsx1K5NLUCcHdh3q/Mc6knh939eQp5IAmotACA2oXitb4D0ZRdeCWfvKDIjw== X-Google-Smtp-Source: ABdhPJx8xGlqyA9WArTMplO5X+kLZRO3ZhPxt9MhjnRwUECw+j9LdT0Umqp/EtJkoi9PXr+U8YKQ29saZP0= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a05:6a00:1907:b0:4f7:945:14cf with SMTP id y7-20020a056a00190700b004f7094514cfmr3364844pfi.47.1646977913250; Thu, 10 Mar 2022 21:51:53 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:39 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-29-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 028/105] KVM: selftests: Rename vcpu.state => vcpu.run From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/include/kvm_util_base.h | 2 +- tools/testing/selftests/kvm/lib/kvm_util.c | 24 +++++++------------ .../selftests/kvm/lib/s390x/processor.c | 2 +- 3 files changed, 11 insertions(+), 17 deletions(-) diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/te= sting/selftests/kvm/include/kvm_util_base.h index e87988665607..a71b532f07b2 100644 --- a/tools/testing/selftests/kvm/include/kvm_util_base.h +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h @@ -48,7 +48,7 @@ struct vcpu { uint32_t id; int fd; struct kvm_vm *vm; - struct kvm_run *state; + struct kvm_run *run; struct kvm_dirty_gfn *dirty_gfns; uint32_t fetch_index; uint32_t dirty_gfns_count; diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index 0c088454e600..d164b3962bb7 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -531,7 +531,7 @@ static void vm_vcpu_rm(struct kvm_vm *vm, struct vcpu *= vcpu) vcpu->dirty_gfns =3D NULL; } =20 - ret =3D munmap(vcpu->state, vcpu_mmap_sz()); + ret =3D munmap(vcpu->run, vcpu_mmap_sz()); TEST_ASSERT(ret =3D=3D 0, "munmap of VCPU fd failed, rc: %i " "errno: %i", ret, errno); ret =3D close(vcpu->fd); @@ -1076,13 +1076,7 @@ void vm_vcpu_add(struct kvm_vm *vm, uint32_t vcpuid) struct vcpu *vcpu; =20 /* Confirm a vcpu with the specified id doesn't already exist. */ - vcpu =3D vcpu_find(vm, vcpuid); - if (vcpu !=3D NULL) - TEST_FAIL("vcpu with the specified id " - "already exists,\n" - " requested vcpuid: %u\n" - " existing vcpuid: %u state: %p", - vcpuid, vcpu->id, vcpu->state); + TEST_ASSERT(!vcpu_find(vm, vcpuid), "vCPU%d already exists\n", vcpuid); =20 /* Allocate and initialize new vcpu structure. */ vcpu =3D calloc(1, sizeof(*vcpu)); @@ -1093,12 +1087,12 @@ void vm_vcpu_add(struct kvm_vm *vm, uint32_t vcpuid) vcpu->fd =3D __vm_ioctl(vm, KVM_CREATE_VCPU, (void *)(unsigned long)vcpui= d); TEST_ASSERT(vcpu->fd >=3D 0, KVM_IOCTL_ERROR(KVM_CREATE_VCPU, vcpu->fd)); =20 - TEST_ASSERT(vcpu_mmap_sz() >=3D sizeof(*vcpu->state), "vcpu mmap size " + TEST_ASSERT(vcpu_mmap_sz() >=3D sizeof(*vcpu->run), "vcpu mmap size " "smaller than expected, vcpu_mmap_sz: %i expected_min: %zi", - vcpu_mmap_sz(), sizeof(*vcpu->state)); - vcpu->state =3D (struct kvm_run *) mmap(NULL, vcpu_mmap_sz(), + vcpu_mmap_sz(), sizeof(*vcpu->run)); + vcpu->run =3D (struct kvm_run *) mmap(NULL, vcpu_mmap_sz(), PROT_READ | PROT_WRITE, MAP_SHARED, vcpu->fd, 0); - TEST_ASSERT(vcpu->state !=3D MAP_FAILED, "mmap vcpu_state failed, " + TEST_ASSERT(vcpu->run !=3D MAP_FAILED, "mmap vcpu_state failed, " "vcpu id: %u errno: %i", vcpuid, errno); =20 /* Add to linked-list of VCPUs. */ @@ -1456,7 +1450,7 @@ struct kvm_run *vcpu_state(struct kvm_vm *vm, uint32_= t vcpuid) { struct vcpu *vcpu =3D vcpu_get(vm, vcpuid); =20 - return vcpu->state; + return vcpu->run; } =20 /* @@ -1498,9 +1492,9 @@ void vcpu_run_complete_io(struct kvm_vm *vm, uint32_t= vcpuid) struct vcpu *vcpu =3D vcpu_get(vm, vcpuid); int ret; =20 - vcpu->state->immediate_exit =3D 1; + vcpu->run->immediate_exit =3D 1; ret =3D __vcpu_run(vm, vcpuid); - vcpu->state->immediate_exit =3D 0; + vcpu->run->immediate_exit =3D 0; =20 TEST_ASSERT(ret =3D=3D -1 && errno =3D=3D EINTR, "KVM_RUN IOCTL didn't exit immediately, rc: %i, errno: %i", diff --git a/tools/testing/selftests/kvm/lib/s390x/processor.c b/tools/test= ing/selftests/kvm/lib/s390x/processor.c index 53c413932f64..df9d9650d916 100644 --- a/tools/testing/selftests/kvm/lib/s390x/processor.c +++ b/tools/testing/selftests/kvm/lib/s390x/processor.c @@ -210,7 +210,7 @@ void vcpu_dump(FILE *stream, struct kvm_vm *vm, uint32_= t vcpuid, uint8_t indent) struct vcpu *vcpu =3D vcpu_get(vm, vcpuid); =20 fprintf(stream, "%*spstate: psw: 0x%.16llx:0x%.16llx\n", - indent, "", vcpu->state->psw_mask, vcpu->state->psw_addr); + indent, "", vcpu->run->psw_mask, vcpu->run->psw_addr); } =20 void assert_on_unhandled_exception(struct kvm_vm *vm, uint32_t vcpuid) --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 9C063C433F5 for ; Fri, 11 Mar 2022 05:54:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346646AbiCKFzT (ORCPT ); Fri, 11 Mar 2022 00:55:19 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56064 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346639AbiCKFw6 (ORCPT ); Fri, 11 Mar 2022 00:52:58 -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 A6435ECC63 for ; Thu, 10 Mar 2022 21:51:55 -0800 (PST) Received: by mail-pg1-x54a.google.com with SMTP id u4-20020a63b544000000b0037c62d8b0ecso4220634pgo.13 for ; Thu, 10 Mar 2022 21:51:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=l3UHYcPKeBd+OR5S1cLbaep2Sx81Dz0y9bty361aqfc=; b=jyfPOLiM1JZ9rgvPiMtETMD/PbBWyD47C7qF+WaoiCG58xJ2cM42CN+jBdq0Eg/Z8Y AbsfI6kYWaYFlNiXdV9NCihlT6xATtHvFwblc2y3ou+mUexHnhyIrTiRIaAHHrVsRPq2 Y8nDU8cF7gYLlx8dLscz+hhzfsf4e1IHmtV41soSVLRYR3KZHRPzPy9hiY/xzIm5rVHg k3S4YuIqsxMb2bUgDQ3QMWPIUPzK6uhXKwUVb8vyi4GAWVaKZN8zvOtlk6/GZ00MbzhN dq8SwpEdUyICR7kclVBpqlPV4/gv/MUIJ/gjHqhQq89RDC/X9vZNIVIzROtJ+Zc9PYIz YTWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=l3UHYcPKeBd+OR5S1cLbaep2Sx81Dz0y9bty361aqfc=; b=JqtUblr7FYSuTnzrHvnl5/5rtsORa8dnOScbeYVPISH1wwzFIeTDk7Scv6fYim2dYM 0q++j+5UXKJF2WPpb4GDVG88hkt7PjzOcr2vLxjRKRFvMaCr40tTpSRI5Tok0gTbi2MR OUOswAgAyHcKtQOWNQtuzWfq6PYq+riPVQRMRM4bZWc79MGUa5Imug0xmor0pFz3YEH2 fB7/rRqOJyimGF7sf0BSmp+d/TAVyOhFlq4RlBQL2CjRCmRMqcmXsOwLLM9F+Uqvoczz rQSA9Zp+2kAvGcAPh/3grFd7plD7soatq34ii/EUDMXmk89UvqwqJJ5B1/MagZ8W6xQ0 x4hA== X-Gm-Message-State: AOAM532ezrYH67aZ1oAsNpJ3GXuIiKY3IFldZR1I6jMMjf4eY4WputFH +1iSBCSleCqDAHwL65eqiHVejK5D61smqkTYckNLk9lZOPI5D0d2gt8GYRcoGqsJ+33F4mqvSYJ u6UIMI3j6Onmq1lkg8hoW2G1WVcdMrfgLR9Ecocg+eD4/s/jz2d6k5s+lEJaBocPI5UtnPw== X-Google-Smtp-Source: ABdhPJyu12cZ8EJ+tTNEMmGFJvd52UW2OADoDuw0kPgbI7aRc2bwQVsUM2wYnENqP/ggm00LN0xsSlX8Fu4= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:903:24e:b0:151:9fa5:ebdd with SMTP id j14-20020a170903024e00b001519fa5ebddmr8960233plh.84.1646977915088; Thu, 10 Mar 2022 21:51:55 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:40 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-30-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 029/105] KVM: selftests: Rename 'struct vcpu' to 'struct kvm_vcpu' From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/include/kvm_util_base.h | 11 ++++--- tools/testing/selftests/kvm/lib/kvm_util.c | 32 +++++++++---------- .../selftests/kvm/lib/s390x/processor.c | 2 +- .../selftests/kvm/lib/x86_64/processor.c | 8 ++--- 4 files changed, 27 insertions(+), 26 deletions(-) diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/te= sting/selftests/kvm/include/kvm_util_base.h index a71b532f07b2..bf9fe3b17705 100644 --- a/tools/testing/selftests/kvm/include/kvm_util_base.h +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h @@ -16,6 +16,7 @@ #include #include "linux/rbtree.h" =20 + #include =20 #include "sparsebit.h" @@ -43,7 +44,7 @@ struct userspace_mem_region { struct hlist_node slot_node; }; =20 -struct vcpu { +struct kvm_vcpu { struct list_head list; uint32_t id; int fd; @@ -92,7 +93,7 @@ struct kvm_vm { continue; \ else =20 -struct vcpu *vcpu_get(struct kvm_vm *vm, uint32_t vcpuid); +struct kvm_vcpu *vcpu_get(struct kvm_vm *vm, uint32_t vcpuid); =20 /* * Virtual Translation Tables Dump @@ -624,17 +625,17 @@ struct kvm_vm *vm_create_with_vcpus(enum vm_guest_mod= e mode, uint32_t nr_vcpus, * Create a VM with a single vCPU with reasonable defaults and @extra_mem_= pages * additional pages of guest memory. Returns the VM and vCPU (via out par= am). */ -struct kvm_vm *__vm_create_with_one_vcpu(struct vcpu **vcpu, +struct kvm_vm *__vm_create_with_one_vcpu(struct kvm_vcpu **vcpu, uint64_t extra_mem_pages, void *guest_code); =20 -static inline struct kvm_vm *vm_create_with_one_vcpu(struct vcpu **vcpu, +static inline struct kvm_vm *vm_create_with_one_vcpu(struct kvm_vcpu **vcp= u, void *guest_code) { return __vm_create_with_one_vcpu(vcpu, 0, guest_code); } =20 -struct vcpu *vm_recreate_with_one_vcpu(struct kvm_vm *vm); +struct kvm_vcpu *vm_recreate_with_one_vcpu(struct kvm_vm *vm); =20 /* * Adds a vCPU with reasonable defaults (e.g. a stack) diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index d164b3962bb7..7ce12a163483 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -365,7 +365,7 @@ struct kvm_vm *vm_create_default(uint32_t vcpuid, uint6= 4_t extra_mem_pages, (uint32_t []){ vcpuid }); } =20 -struct kvm_vm *__vm_create_with_one_vcpu(struct vcpu **vcpu, +struct kvm_vm *__vm_create_with_one_vcpu(struct kvm_vcpu **vcpu, uint64_t extra_mem_pages, void *guest_code) { @@ -409,7 +409,7 @@ void kvm_vm_restart(struct kvm_vm *vmp) } } =20 -struct vcpu *vm_recreate_with_one_vcpu(struct kvm_vm *vm) +struct kvm_vcpu *vm_recreate_with_one_vcpu(struct kvm_vm *vm) { kvm_vm_restart(vm); =20 @@ -488,23 +488,23 @@ kvm_userspace_memory_region_find(struct kvm_vm *vm, u= int64_t start, return ®ion->region; } =20 -static struct vcpu *vcpu_find(struct kvm_vm *vm, uint32_t vcpuid) +static struct kvm_vcpu *vcpu_find(struct kvm_vm *vm, uint32_t vcpu_id) { - struct vcpu *vcpu; + struct kvm_vcpu *vcpu; =20 list_for_each_entry(vcpu, &vm->vcpus, list) { - if (vcpu->id =3D=3D vcpuid) + if (vcpu->id =3D=3D vcpu_id) return vcpu; } =20 return NULL; } =20 -struct vcpu *vcpu_get(struct kvm_vm *vm, uint32_t vcpuid) +struct kvm_vcpu *vcpu_get(struct kvm_vm *vm, uint32_t vcpu_id) { - struct vcpu *vcpu =3D vcpu_find(vm, vcpuid); + struct kvm_vcpu *vcpu =3D vcpu_find(vm, vcpu_id); =20 - TEST_ASSERT(vcpu, "vCPU %d does not exist", vcpuid); + TEST_ASSERT(vcpu, "vCPU %d does not exist", vcpu_id); return vcpu; } =20 @@ -520,7 +520,7 @@ struct vcpu *vcpu_get(struct kvm_vm *vm, uint32_t vcpui= d) * * Removes a vCPU from a VM and frees its resources. */ -static void vm_vcpu_rm(struct kvm_vm *vm, struct vcpu *vcpu) +static void vm_vcpu_rm(struct kvm_vm *vm, struct kvm_vcpu *vcpu) { int ret; =20 @@ -544,7 +544,7 @@ static void vm_vcpu_rm(struct kvm_vm *vm, struct vcpu *= vcpu) =20 void kvm_vm_release(struct kvm_vm *vmp) { - struct vcpu *vcpu, *tmp; + struct kvm_vcpu *vcpu, *tmp; int ret; =20 list_for_each_entry_safe(vcpu, tmp, &vmp->vcpus, list) @@ -1073,7 +1073,7 @@ static int vcpu_mmap_sz(void) */ void vm_vcpu_add(struct kvm_vm *vm, uint32_t vcpuid) { - struct vcpu *vcpu; + struct kvm_vcpu *vcpu; =20 /* Confirm a vcpu with the specified id doesn't already exist. */ TEST_ASSERT(!vcpu_find(vm, vcpuid), "vCPU%d already exists\n", vcpuid); @@ -1448,7 +1448,7 @@ void vm_create_irqchip(struct kvm_vm *vm) */ struct kvm_run *vcpu_state(struct kvm_vm *vm, uint32_t vcpuid) { - struct vcpu *vcpu =3D vcpu_get(vm, vcpuid); + struct kvm_vcpu *vcpu =3D vcpu_get(vm, vcpuid); =20 return vcpu->run; } @@ -1489,7 +1489,7 @@ int _vcpu_run(struct kvm_vm *vm, uint32_t vcpuid) =20 void vcpu_run_complete_io(struct kvm_vm *vm, uint32_t vcpuid) { - struct vcpu *vcpu =3D vcpu_get(vm, vcpuid); + struct kvm_vcpu *vcpu =3D vcpu_get(vm, vcpuid); int ret; =20 vcpu->run->immediate_exit =3D 1; @@ -1533,7 +1533,7 @@ struct kvm_reg_list *vcpu_get_reg_list(struct kvm_vm = *vm, uint32_t vcpuid) int __vcpu_ioctl(struct kvm_vm *vm, uint32_t vcpuid, unsigned long cmd, void *arg) { - struct vcpu *vcpu =3D vcpu_get(vm, vcpuid); + struct kvm_vcpu *vcpu =3D vcpu_get(vm, vcpuid); =20 return ioctl(vcpu->fd, cmd, arg); } @@ -1548,7 +1548,7 @@ void _vcpu_ioctl(struct kvm_vm *vm, uint32_t vcpuid, = unsigned long cmd, =20 void *vcpu_map_dirty_ring(struct kvm_vm *vm, uint32_t vcpuid) { - struct vcpu *vcpu =3D vcpu_get(vm, vcpuid); + struct kvm_vcpu *vcpu =3D vcpu_get(vm, vcpuid); uint32_t size =3D vm->dirty_ring_size; =20 TEST_ASSERT(size > 0, "Should enable dirty ring first"); @@ -1765,7 +1765,7 @@ void vm_dump(FILE *stream, struct kvm_vm *vm, uint8_t= indent) { int ctr; struct userspace_mem_region *region; - struct vcpu *vcpu; + struct kvm_vcpu *vcpu; =20 fprintf(stream, "%*smode: 0x%x\n", indent, "", vm->mode); fprintf(stream, "%*sfd: %i\n", indent, "", vm->fd); diff --git a/tools/testing/selftests/kvm/lib/s390x/processor.c b/tools/test= ing/selftests/kvm/lib/s390x/processor.c index df9d9650d916..aec15ca9d887 100644 --- a/tools/testing/selftests/kvm/lib/s390x/processor.c +++ b/tools/testing/selftests/kvm/lib/s390x/processor.c @@ -207,7 +207,7 @@ void vcpu_args_set(struct kvm_vm *vm, uint32_t vcpuid, = unsigned int num, ...) =20 void vcpu_dump(FILE *stream, struct kvm_vm *vm, uint32_t vcpuid, uint8_t i= ndent) { - struct vcpu *vcpu =3D vcpu_get(vm, vcpuid); + struct kvm_vcpu *vcpu =3D vcpu_get(vm, vcpuid); =20 fprintf(stream, "%*spstate: psw: 0x%.16llx:0x%.16llx\n", indent, "", vcpu->run->psw_mask, vcpu->run->psw_addr); diff --git a/tools/testing/selftests/kvm/lib/x86_64/processor.c b/tools/tes= ting/selftests/kvm/lib/x86_64/processor.c index e9b3f254e8f9..289a73262f8c 100644 --- a/tools/testing/selftests/kvm/lib/x86_64/processor.c +++ b/tools/testing/selftests/kvm/lib/x86_64/processor.c @@ -805,7 +805,7 @@ uint64_t kvm_get_feature_msr(uint64_t msr_index) */ struct kvm_cpuid2 *vcpu_get_cpuid(struct kvm_vm *vm, uint32_t vcpuid) { - struct vcpu *vcpu =3D vcpu_get(vm, vcpuid); + struct kvm_vcpu *vcpu =3D vcpu_get(vm, vcpuid); struct kvm_cpuid2 *cpuid; int max_ent; int rc =3D -1; @@ -982,7 +982,7 @@ struct kvm_msr_list *kvm_get_msr_index_list(void) return list; } =20 -static int vcpu_save_xsave_state(struct kvm_vm *vm, struct vcpu *vcpu, +static int vcpu_save_xsave_state(struct kvm_vm *vm, struct kvm_vcpu *vcpu, struct kvm_x86_state *state) { int size; @@ -1000,7 +1000,7 @@ static int vcpu_save_xsave_state(struct kvm_vm *vm, s= truct vcpu *vcpu, =20 struct kvm_x86_state *vcpu_save_state(struct kvm_vm *vm, uint32_t vcpuid) { - struct vcpu *vcpu =3D vcpu_get(vm, vcpuid); + struct kvm_vcpu *vcpu =3D vcpu_get(vm, vcpuid); struct kvm_msr_list *list; struct kvm_x86_state *state; int nmsrs, r, i; @@ -1081,7 +1081,7 @@ struct kvm_x86_state *vcpu_save_state(struct kvm_vm *= vm, uint32_t vcpuid) =20 void vcpu_load_state(struct kvm_vm *vm, uint32_t vcpuid, struct kvm_x86_st= ate *state) { - struct vcpu *vcpu =3D vcpu_get(vm, vcpuid); + struct kvm_vcpu *vcpu =3D vcpu_get(vm, vcpuid); int r; =20 r =3D ioctl(vcpu->fd, KVM_SET_SREGS, &state->sregs); --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 63187C433F5 for ; Fri, 11 Mar 2022 05:54:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346753AbiCKFzH (ORCPT ); Fri, 11 Mar 2022 00:55:07 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55724 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346642AbiCKFw7 (ORCPT ); Fri, 11 Mar 2022 00:52:59 -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 5E469F119D for ; Thu, 10 Mar 2022 21:51:57 -0800 (PST) Received: by mail-pg1-x549.google.com with SMTP id s5-20020a637705000000b00380cf1d3eb0so3046038pgc.5 for ; Thu, 10 Mar 2022 21:51:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=4OiYQktq5yEzPJAbdBKcckIwJ6abmucl44DuReqop+0=; b=WdWsCSRzfmAIMp1rwbN2/Jq0MNgU8dpqEvL4t7v2Nx4psSpYvqdwnXRRlGNGG/I6yM ivZx4AWJHTT3StoJ9XP75JgN+FvghBolnXZnv+t5B1amcvTLNxaPdYZk2refWqa3A3H9 lJGVLZcpzJ4jQzpceo8FA+cAhwFmJajLyHLZG+zaBHZIDX+P1oHBgaYX3n7HIqPGVFF0 Dc7H6vaPMNF/TWsiLMDy+Rq8fzgvcBo6d3benpmJsJ99xqsR2ShsMV1ka+3bV14mtxZW +aJ/5wKDuVvLiXbxjSSQeLTlDb2nhT+CNhVPNPBMOA1LQEPtOtYbkNJItPPpqeB7D5br eqdA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=4OiYQktq5yEzPJAbdBKcckIwJ6abmucl44DuReqop+0=; b=pdC6su8STpo1HzkIVJTXkXfk8mZ//9NhvQ1221bAiX00pRSYplVTmgruta8elfsfVK Q7+cYB23fWukOz6muiBA03igd+61vW0p/mkrU6pjbdGsPTqy92uzX0fk+9qC63suOeF5 YbODcu1a3w1suJ+1WXWwweLM+7gngtJJf7fOlL2fGeoLUFQLkVLmYzSqHLUn+VFvggs9 Dmi5rZwGLhCHUAIczy7iywEQ5de4XrdFlATQkSF+7NTpHS3eWVhavfS+J/yK/EF4M4al /kp9noB7FopQOlFlkY9J7cv9jcDlzF+aBL3e8m47zY5zVFeInGWqzgT6w8V7TSPfuypU oxAA== X-Gm-Message-State: AOAM533A9/33OEADVQ9bK0tE7rR3puSwsUWxT05wDFV4oMNIJJGxN4A/ H3pGTEDv+qqfR83c2rvd/2V5h7EFoFjH2whG7sDy800itiWrN8dibIEmFlW2stc/iAtvKTQtdTk a9VSxo5bq7ywufJGJ+SzfgBtsnhFSU5y1L6wdqs88Bpa3dSzP/YlG4xraBM+ZKazuAeagrw== X-Google-Smtp-Source: ABdhPJyx7+g8TL0KjCAgdQonMYEaIpQwxOPM3iaUbRldwOH7lfTq/FGBvq/8SwGQhxlRp/3WOO4Qrvwb418= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:902:dad2:b0:151:f895:9c31 with SMTP id q18-20020a170902dad200b00151f8959c31mr8916964plx.93.1646977916778; Thu, 10 Mar 2022 21:51:56 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:41 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-31-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 030/105] KVM: selftests: Return the created vCPU from vm_vcpu_add() From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/include/kvm_util_base.h | 2 +- tools/testing/selftests/kvm/lib/kvm_util.c | 29 +++++++------------ 2 files changed, 11 insertions(+), 20 deletions(-) diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/te= sting/selftests/kvm/include/kvm_util_base.h index bf9fe3b17705..c64e99b9b6b3 100644 --- a/tools/testing/selftests/kvm/include/kvm_util_base.h +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h @@ -313,7 +313,7 @@ void vm_userspace_mem_region_add(struct kvm_vm *vm, void vm_mem_region_set_flags(struct kvm_vm *vm, uint32_t slot, uint32_t fl= ags); void vm_mem_region_move(struct kvm_vm *vm, uint32_t slot, uint64_t new_gpa= ); void vm_mem_region_delete(struct kvm_vm *vm, uint32_t slot); -void vm_vcpu_add(struct kvm_vm *vm, uint32_t vcpuid); +struct kvm_vcpu *vm_vcpu_add(struct kvm_vm *vm, uint32_t vcpuid); vm_vaddr_t vm_vaddr_alloc(struct kvm_vm *vm, size_t sz, vm_vaddr_t vaddr_m= in); vm_vaddr_t vm_vaddr_alloc_pages(struct kvm_vm *vm, int nr_pages); vm_vaddr_t vm_vaddr_alloc_page(struct kvm_vm *vm); diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index 7ce12a163483..fa880874c8d5 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -413,8 +413,7 @@ struct kvm_vcpu *vm_recreate_with_one_vcpu(struct kvm_v= m *vm) { kvm_vm_restart(vm); =20 - vm_vcpu_add(vm, 0); - return vcpu_get(vm, 0); + return vm_vcpu_add(vm, 0); } =20 /* @@ -1058,33 +1057,23 @@ static int vcpu_mmap_sz(void) } =20 /* - * VM VCPU Add - * - * Input Args: - * vm - Virtual Machine - * vcpuid - VCPU ID - * - * Output Args: None - * - * Return: None - * - * Adds a virtual CPU to the VM specified by vm with the ID given by vcpui= d. - * No additional VCPU setup is done. + * Adds a virtual CPU to the VM specified by vm with the ID given by vcpu_= id. + * No additional vCPU setup is done. Returns the vCPU. */ -void vm_vcpu_add(struct kvm_vm *vm, uint32_t vcpuid) +struct kvm_vcpu *vm_vcpu_add(struct kvm_vm *vm, uint32_t vcpu_id) { struct kvm_vcpu *vcpu; =20 /* Confirm a vcpu with the specified id doesn't already exist. */ - TEST_ASSERT(!vcpu_find(vm, vcpuid), "vCPU%d already exists\n", vcpuid); + TEST_ASSERT(!vcpu_find(vm, vcpu_id), "vCPU%d already exists\n", vcpu_id); =20 /* Allocate and initialize new vcpu structure. */ vcpu =3D calloc(1, sizeof(*vcpu)); TEST_ASSERT(vcpu !=3D NULL, "Insufficient Memory"); =20 vcpu->vm =3D vm; - vcpu->id =3D vcpuid; - vcpu->fd =3D __vm_ioctl(vm, KVM_CREATE_VCPU, (void *)(unsigned long)vcpui= d); + vcpu->id =3D vcpu_id; + vcpu->fd =3D __vm_ioctl(vm, KVM_CREATE_VCPU, (void *)(unsigned long)vcpu_= id); TEST_ASSERT(vcpu->fd >=3D 0, KVM_IOCTL_ERROR(KVM_CREATE_VCPU, vcpu->fd)); =20 TEST_ASSERT(vcpu_mmap_sz() >=3D sizeof(*vcpu->run), "vcpu mmap size " @@ -1093,10 +1082,12 @@ void vm_vcpu_add(struct kvm_vm *vm, uint32_t vcpuid) vcpu->run =3D (struct kvm_run *) mmap(NULL, vcpu_mmap_sz(), PROT_READ | PROT_WRITE, MAP_SHARED, vcpu->fd, 0); TEST_ASSERT(vcpu->run !=3D MAP_FAILED, "mmap vcpu_state failed, " - "vcpu id: %u errno: %i", vcpuid, errno); + "vcpu id: %u errno: %i", vcpu_id, errno); =20 /* Add to linked-list of VCPUs. */ list_add(&vcpu->list, &vm->vcpus); + + return vcpu; } =20 /* --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 B0C93C433F5 for ; Fri, 11 Mar 2022 05:54:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239130AbiCKFzQ (ORCPT ); Fri, 11 Mar 2022 00:55:16 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54760 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346646AbiCKFxC (ORCPT ); Fri, 11 Mar 2022 00:53:02 -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 0B2CDF1EA7 for ; Thu, 10 Mar 2022 21:51:59 -0800 (PST) Received: by mail-pj1-x104a.google.com with SMTP id mz5-20020a17090b378500b001bf46a762baso4597183pjb.5 for ; Thu, 10 Mar 2022 21:51:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=YnadzkYyNjF+fzeB8scKl4DilzlfzfccfFXWWoIeDLc=; b=LDDmXTEIAYa9pHs4CxDuIN7VI9GU6liI34vFnU3k6zfF/aBCFBmQGJ8A5M4xhyC53Q 1tJZD5x9HPo0yrIs2xFlx2t2IUqvkUBYEXaOLQ8roDwRfsDzEiUD/ljhb5n2dKYz8xR2 YOuNmFsxfABeqgA0eJUD+nY8eEurNxAnwloneyV2hZMS4ZW/rFavyOa4plmTiBC2iZKu KfXnrFn2eARy2y/UKrB0SZUXJLFwfxggn0UkxVdr6arrcxLMmjsGmwlHJiKD53rOONEv ZpBcCqCwzsrWchOqNKFtulrcHpxSovCyf7t8cT5cfIydk1+6C23WJTOsMqjGep/VVh6I qhxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=YnadzkYyNjF+fzeB8scKl4DilzlfzfccfFXWWoIeDLc=; b=xdE21jIOGpJ7xRz2qrgskCRqS0iQoy150R0K5kce58LEs//k0rSF9EdRNLUI3jpJxa Tzeq7WX9prGWI1RFWhTyy3lsih7fXqk16Y+uDihQJGnPRQtq9so76l6LOtlMmU2sx8yO tXzvs3knLzX3BuB0Y4nVxM2TSvJBvQHKqYguKwPwZs494caU6L5DebUTVMvCYKX4e6lx vND0OBNN/iuuto4DLlDqEjIyUf6zJXNwHkmcBWHCZv7B35HETsJ6xFSUFSKvzatjzKez AEj2ase47NFdCXktMXvW3nhEnAs7JC89eKEtQ8xw7yEHwBK1XFgaZf0Smh78mh7xuG3m e3fg== X-Gm-Message-State: AOAM530sD2IUS+hGTq58Frgb1Mtt+gc6cfcJ4w26C59f1r2ENR+Miw6X MJFlTyKF8o2Z5rLYCIAojGKW951Xwk2GzmXNzAcgyNTXui9cbtixuzqYckMRMwGS8DTPi06XiaO MBEVHNLp94piaon03KHEg3z+euLXNZoqDHcBXfZ4nK2fM9f9SajNoUKCFcy0ESehgOeiJ+A== X-Google-Smtp-Source: ABdhPJwxvswc6Yx2p7h+8fc+qyEzztddTjuD9WD0yQyJz78u+b8LwHy4EhFWAi7BACej6Gy/kFIlN87m2t8= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:903:22cd:b0:151:a884:d444 with SMTP id y13-20020a17090322cd00b00151a884d444mr8793101plg.141.1646977918459; Thu, 10 Mar 2022 21:51:58 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:42 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-32-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 031/105] KVM: selftests: Convert memslot_perf_test away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../testing/selftests/kvm/memslot_perf_test.c | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/tools/testing/selftests/kvm/memslot_perf_test.c b/tools/testin= g/selftests/kvm/memslot_perf_test.c index 1727f75e0c2c..009eb19b28af 100644 --- a/tools/testing/selftests/kvm/memslot_perf_test.c +++ b/tools/testing/selftests/kvm/memslot_perf_test.c @@ -25,8 +25,6 @@ #include #include =20 -#define VCPU_ID 0 - #define MEM_SIZE ((512U << 20) + 4096) #define MEM_SIZE_PAGES (MEM_SIZE / 4096) #define MEM_GPA 0x10000000UL @@ -90,6 +88,7 @@ static_assert(MEM_TEST_MOVE_SIZE <=3D MEM_TEST_SIZE, =20 struct vm_data { struct kvm_vm *vm; + struct kvm_vcpu *vcpu; pthread_t vcpu_thread; uint32_t nslots; uint64_t npages; @@ -127,29 +126,29 @@ static bool verbose; pr_info(__VA_ARGS__); \ } while (0) =20 -static void check_mmio_access(struct vm_data *vm, struct kvm_run *run) +static void check_mmio_access(struct vm_data *data, struct kvm_run *run) { - TEST_ASSERT(vm->mmio_ok, "Unexpected mmio exit"); + TEST_ASSERT(data->mmio_ok, "Unexpected mmio exit"); TEST_ASSERT(run->mmio.is_write, "Unexpected mmio read"); TEST_ASSERT(run->mmio.len =3D=3D 8, "Unexpected exit mmio size =3D %u", run->mmio.len); - TEST_ASSERT(run->mmio.phys_addr >=3D vm->mmio_gpa_min && - run->mmio.phys_addr <=3D vm->mmio_gpa_max, + TEST_ASSERT(run->mmio.phys_addr >=3D data->mmio_gpa_min && + run->mmio.phys_addr <=3D data->mmio_gpa_max, "Unexpected exit mmio address =3D 0x%llx", run->mmio.phys_addr); } =20 -static void *vcpu_worker(void *data) +static void *vcpu_worker(void *__data) { - struct vm_data *vm =3D data; - struct kvm_run *run; + struct vm_data *data =3D __data; + struct kvm_vcpu *vcpu =3D data->vcpu; + struct kvm_run *run =3D vcpu->run; struct ucall uc; =20 - run =3D vcpu_state(vm->vm, VCPU_ID); while (1) { - vcpu_run(vm->vm, VCPU_ID); + vcpu_run(data->vm, vcpu->id); =20 - switch (get_ucall(vm->vm, VCPU_ID, &uc)) { + switch (get_ucall(data->vm, vcpu->id, &uc)) { case UCALL_SYNC: TEST_ASSERT(uc.args[1] =3D=3D 0, "Unexpected sync ucall, got %lx", @@ -158,7 +157,7 @@ static void *vcpu_worker(void *data) continue; case UCALL_NONE: if (run->exit_reason =3D=3D KVM_EXIT_MMIO) - check_mmio_access(vm, run); + check_mmio_access(data, run); else goto done; break; @@ -238,6 +237,7 @@ static struct vm_data *alloc_vm(void) TEST_ASSERT(data, "malloc(vmdata) failed"); =20 data->vm =3D NULL; + data->vcpu =3D NULL; data->hva_slots =3D NULL; =20 return data; @@ -278,7 +278,7 @@ static bool prepare_vm(struct vm_data *data, int nslots= , uint64_t *maxslots, data->hva_slots =3D malloc(sizeof(*data->hva_slots) * data->nslots); TEST_ASSERT(data->hva_slots, "malloc() fail"); =20 - data->vm =3D vm_create_default(VCPU_ID, mempages, guest_code); + data->vm =3D __vm_create_with_one_vcpu(&data->vcpu, mempages, guest_code); ucall_init(data->vm, NULL); =20 pr_info_v("Adding slots 1..%i, each slot with %"PRIu64" pages + %"PRIu64"= extra pages last\n", --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 0DEE6C433F5 for ; Fri, 11 Mar 2022 05:54:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346791AbiCKFzk (ORCPT ); Fri, 11 Mar 2022 00:55:40 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55706 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346650AbiCKFxD (ORCPT ); Fri, 11 Mar 2022 00:53:03 -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 CEF8EF70D1 for ; Thu, 10 Mar 2022 21:52:00 -0800 (PST) Received: by mail-pl1-x64a.google.com with SMTP id d4-20020a170902f14400b001518350e5c7so4000776plb.13 for ; Thu, 10 Mar 2022 21:52:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=F/d/u+IWfPL42R/UWR3F2wSA+hyx4NiZRdMIs7NAVo8=; b=e/XObfqJW6x3eoqpQyPxaThYzqAN9xOEmXg6lRLwKOUDNzhwdu7Mgd/YeHmlY9q1tE 91JfDzZ1J262ZHeRT1toRUApHnk1zFgOYptqEYMgPd6HmETeTLmghtQK9Cy41ckFh0yu tGVvBKbK4T+ckLnXJ0h5HSbOK/2+dQmlTFxpu0O5cb6mlNifI84gZwqGu9+6L+yaVmFi l5jJMm7rIKYw59YW7O360drb2CLtGTNcsAmKvQ+PdIPtjRkLd1fbIn16i/q03nj0vwYG dTjZhhD02w3pvHz92sFhwikLAFbOYvy9aX4MJpshLujRd0Udlranpivouy1c3ReFl72T zUqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=F/d/u+IWfPL42R/UWR3F2wSA+hyx4NiZRdMIs7NAVo8=; b=aeoEhJpJReP/dF84lcNSVpefw0vG4HUJ8BberMKwrHfivyR3rpdo2OkDmytWUsX2oV jvPN37h/9Xcpy63pAnevH+9en9KPKieREnC4SxyIYlVC93DNjYjTEkfWEofoK0qqhBDU 2M7Wem3Ozt2cswt2eufZRQyR6lOSYQKxILIa8z2sKa51+mJRa+KYSkCUEWpM8Yvvs8np qDLP5Oql01mBv4ReNiCQoVO9NTR152RcS2ATCnYJNeomjJXH3yux9I85obENKDlKsGp7 q/t8JTSgNPUWJBar4P+0/TtC1SOnJbZBai2dXMkscoW0itIRiZngT4VQVRgSMu+ciaaJ BO2A== X-Gm-Message-State: AOAM530UB1RZB4moTQ66FzRnEOeriCa2rtrOn1sKEzmyO94SH5SnkjBA lrw5Z2khvGU8WMczxHTkhn6wozp5xeC4tSs06aGQTRIMqlqhxHvjXYxB5XceOSzEthk12OohLak ahUxmfVaFiHN7A338Tw2pQuhkfcsBVm/qBRqk/AXnSNeMTLeSikGAxw2BTtG6ask1qmnZHw== X-Google-Smtp-Source: ABdhPJyLJZLGldmByI6sEqm2zRO2zAtZzzKUoLwrx9JmNUVODzj7t7sWPoi6I4NOOsJDvPRmxFlYs/8L6hQ= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a05:6a00:1d28:b0:4f7:7b02:fad7 with SMTP id a40-20020a056a001d2800b004f77b02fad7mr5610935pfx.33.1646977920224; Thu, 10 Mar 2022 21:52:00 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:43 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-33-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 032/105] KVM: selftests: Convert rseq_test away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- tools/testing/selftests/kvm/rseq_test.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/tools/testing/selftests/kvm/rseq_test.c b/tools/testing/selfte= sts/kvm/rseq_test.c index 4158da0da2bb..fd754de0b74c 100644 --- a/tools/testing/selftests/kvm/rseq_test.c +++ b/tools/testing/selftests/kvm/rseq_test.c @@ -20,8 +20,6 @@ #include "processor.h" #include "test_util.h" =20 -#define VCPU_ID 0 - static __thread volatile struct rseq __rseq =3D { .cpu_id =3D RSEQ_CPU_ID_UNINITIALIZED, }; @@ -207,6 +205,7 @@ int main(int argc, char *argv[]) { int r, i, snapshot; struct kvm_vm *vm; + struct kvm_vcpu *vcpu; u32 cpu, rseq_cpu; =20 /* Tell stdout not to buffer its content */ @@ -228,14 +227,14 @@ int main(int argc, char *argv[]) * GUEST_SYNC, while concurrently migrating the process by setting its * CPU affinity. */ - vm =3D vm_create_default(VCPU_ID, 0, guest_code); + vm =3D vm_create_with_one_vcpu(&vcpu, guest_code); ucall_init(vm, NULL); =20 pthread_create(&migration_thread, NULL, migration_worker, 0); =20 for (i =3D 0; !done; i++) { - vcpu_run(vm, VCPU_ID); - TEST_ASSERT(get_ucall(vm, VCPU_ID, NULL) =3D=3D UCALL_SYNC, + vcpu_run(vm, vcpu->id); + TEST_ASSERT(get_ucall(vm, vcpu->id, NULL) =3D=3D UCALL_SYNC, "Guest failed?"); =20 /* --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 88815C433EF for ; Fri, 11 Mar 2022 05:56:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346938AbiCKF5I (ORCPT ); Fri, 11 Mar 2022 00:57:08 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55052 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346660AbiCKFxF (ORCPT ); Fri, 11 Mar 2022 00:53:05 -0500 Received: from mail-pf1-x44a.google.com (mail-pf1-x44a.google.com [IPv6:2607:f8b0:4864:20::44a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 78064ED94F for ; Thu, 10 Mar 2022 21:52:02 -0800 (PST) Received: by mail-pf1-x44a.google.com with SMTP id m22-20020a628c16000000b004f6f1b43114so4634929pfd.3 for ; Thu, 10 Mar 2022 21:52:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=EhgwfY2UJZoSUoAPo4cv0aFfvTRiXncKd75c7iQYd44=; b=DQqw9mAji/tvBOBByWFZtBchIFJK0AAdTTk2rqd3QOPT5/20f90UtcPPgLiCJjpUVP tKjfNTLGOgsq/amhT7f8B50kQ2/JhQumkvpHpfNmthd8tEsUlLXNHAqk0gTj7K0oa12t 1DXrJUB9Dz/KEZAAdyqG+xhBOPjKJMC1mTlA8J0HRlqQKEk3sg5v4FDbqlVouGozcmYV IixbY29mV+EsO/As91kG1p6GObLa+pPPNg1wvf9qfQqrvvlrPoGqdeg6gN8FoIRKejXx 0lSBtVd9H/KEhJ9HGQy3yj44qJVrVEOEInVao8BP1xdnYydIphCep7VVBMiRari9SWcT 5rBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=EhgwfY2UJZoSUoAPo4cv0aFfvTRiXncKd75c7iQYd44=; b=s+ALd8KE6nR+yRl97C1ms9Vb8kW56MdDyDGAI9HfChzSQfQeDS/9G4Ho/1UDQbM0JW NC5SdOu9Fx4rSnm7IFhQxnUK4M68LABX96kfkiSNbY0ZSTTgBlfbWNi7F3c5MKRLA40f S0I0cQa9zycvsxcO0Sl8Huj9Re7apHLf7Del1zKbPW4AHjIuo9TyjAwNohfO+yO0JjTF oX++Nc0nonga4VsbNag8ySlZUhRtaR85cSh3zVwuse/7zHKCJnVnC8s9egRUz5DlfzSe nMq7mr8J0QyfjHKsp+zGlFFsCPPW1SEr45dAPM2qXF/9I+lm6V0pM8FxRKJd6DLAjh03 tnbw== X-Gm-Message-State: AOAM5335aqCIWb0jRh3xeRQWuEK6/WIhJ5luKV0D+R43xAItpiClOvls uUIXdZ3jbD2yc7NadiXPquNJH62rZkdOskdRmkZ4ET2oFYSf3PPBZh+I9WlHLE/Q2KhlUurB9y9 R0+ZoFtDpB/oqjVPwicHg/+CPJzR4OhmNtvo24rLuqz4Ccd8FgQ1I6msoEPFNLul9jaKAdg== X-Google-Smtp-Source: ABdhPJxpuBnBwg6sJcTNEtDa7JsqTjL18p22Kvc8PCEir7ZMtK+uV8MuY4kYVeUHvWUbSgb22B0kTwzzl/w= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:90a:5291:b0:1bb:ef4d:947d with SMTP id w17-20020a17090a529100b001bbef4d947dmr19910328pjh.243.1646977921812; Thu, 10 Mar 2022 21:52:01 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:44 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-34-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 033/105] KVM: selftests: Convert xss_msr_test away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- tools/testing/selftests/kvm/x86_64/xss_msr_test.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/xss_msr_test.c b/tools/test= ing/selftests/kvm/x86_64/xss_msr_test.c index 3529376747c2..c5672d2949db 100644 --- a/tools/testing/selftests/kvm/x86_64/xss_msr_test.c +++ b/tools/testing/selftests/kvm/x86_64/xss_msr_test.c @@ -12,7 +12,6 @@ #include "kvm_util.h" #include "vmx.h" =20 -#define VCPU_ID 1 #define MSR_BITS 64 =20 #define X86_FEATURE_XSAVES (1<<3) @@ -40,11 +39,12 @@ int main(int argc, char *argv[]) struct kvm_cpuid_entry2 *entry; bool xss_supported =3D false; struct kvm_vm *vm; + struct kvm_vcpu *vcpu; uint64_t xss_val; int i, r; =20 /* Create VM */ - vm =3D vm_create_default(VCPU_ID, 0, 0); + vm =3D vm_create_with_one_vcpu(&vcpu, NULL); =20 if (kvm_get_cpuid_max_basic() >=3D 0xd) { entry =3D kvm_get_supported_cpuid_index(0xd, 1); @@ -55,11 +55,11 @@ int main(int argc, char *argv[]) exit(KSFT_SKIP); } =20 - xss_val =3D vcpu_get_msr(vm, VCPU_ID, MSR_IA32_XSS); + xss_val =3D vcpu_get_msr(vm, vcpu->id, MSR_IA32_XSS); TEST_ASSERT(xss_val =3D=3D 0, "MSR_IA32_XSS should be initialized to zero\n"); =20 - vcpu_set_msr(vm, VCPU_ID, MSR_IA32_XSS, xss_val); + vcpu_set_msr(vm, vcpu->id, MSR_IA32_XSS, xss_val); /* * At present, KVM only supports a guest IA32_XSS value of 0. Verify * that trying to set the guest IA32_XSS to an unsupported value fails. @@ -67,7 +67,7 @@ int main(int argc, char *argv[]) * IA32_XSS is in the KVM_GET_MSR_INDEX_LIST. */ for (i =3D 0; i < MSR_BITS; ++i) { - r =3D _vcpu_set_msr(vm, VCPU_ID, MSR_IA32_XSS, 1ull << i); + r =3D _vcpu_set_msr(vm, vcpu->id, MSR_IA32_XSS, 1ull << i); TEST_ASSERT(r =3D=3D 0 || is_supported_msr(MSR_IA32_XSS), "IA32_XSS was able to be set, but was not found in KVM_GET_MSR_INDE= X_LIST.\n"); } --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 CE5E4C433EF for ; Fri, 11 Mar 2022 05:54:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346764AbiCKFz1 (ORCPT ); Fri, 11 Mar 2022 00:55:27 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57258 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346663AbiCKFxG (ORCPT ); Fri, 11 Mar 2022 00:53:06 -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 EE809ECB30 for ; Thu, 10 Mar 2022 21:52:03 -0800 (PST) Received: by mail-pl1-x649.google.com with SMTP id d13-20020a170902b70d00b0015317d9f08bso2687945pls.1 for ; Thu, 10 Mar 2022 21:52:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=2u0xd0WcowKvmISsLBh9KyoTA6pAMwWdV2GBKIgUrbo=; b=pOUYZZCshqTXfQrSZFVmAf4rn78F8RsYlHJfnxQVU5d4HBhCgopz1vDHEpnckZrw9K QrHZhYyPWszPCMVLfhDBy/y/ZAhY5Ru019vjD93misUktnORHOAKuuixJcrLzR32Ji5I rQ3XbbubzduLdJ9y/2kalTtFn8SdHT7d7/ektpze50TTr8gXkJ2Cefhdv7oAHPcgfOMs P7LsgZHMu7fsx+ZRJvMEJRolNie5YLfdXm6HbxayEHLcQli3Eb8XD734VkoKDZiNfKYc 14qEJNSg2IRV5BYZb03ujSsEhDO2uKWjQcjvwv0vv1In1Qc+8g9Q5qVwLu0WvVMQ1DxU y+/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=2u0xd0WcowKvmISsLBh9KyoTA6pAMwWdV2GBKIgUrbo=; b=ycwaPVSZfexe+LN/8xgZjYQMjqmYp9xiFMwiXcOKJplL0OJijGAiVkWVRtN+ePHbom HKjn5jFozhXkZKPwfAeS4ZOHEO+H6mpNJ4aEUbilF2dtRHMrNGP03TMcN6muq/yF1cYe VzOvxTsNC/RxBbZ/oPxmFPd6EGvG8TwJAL5K6QeqzF0KGDEKnovAmRFhe1mlO65Hy5Hl 1JzKKhktLVzPXOsfZ6Mm4/CUhLSf0AXXrTut+CUT+1cABu7MtAnxydmVDGdlYgnZFLai LkbEID9Ya5tEs9udc7n7Ucfz1CwQ/1S5ba2u9ZrbYtQS61ttA6mclFbOp7PkIVN3R7rJ 1XVA== X-Gm-Message-State: AOAM531uWU/mr2EG37An+uONR+GzveuhjGqFqWdzzsqjRn83qvjGClOR DKGOoQ+wZ+nYXpYYBaMNyqj1NBNtaveFAM7NeBjLXca9uVTwNInQV0qTM5WYWmfeueHqee0FWAD o0F+zhwUpYFjALy2JV07sc+h1Kq/j+QRm/FEPSuAYEiowhRen43qVu5q8+VdDcltX02ds4g== X-Google-Smtp-Source: ABdhPJz9MPMo5uQwiaUROKw8oy+BpdG6vOyBaXXyEKbqec18KmT+bOo9I3kBBMWm0K4JR9tQfrPNsrVKew0= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a63:2a95:0:b0:37c:46b0:2088 with SMTP id q143-20020a632a95000000b0037c46b02088mr7222162pgq.150.1646977923323; Thu, 10 Mar 2022 21:52:03 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:45 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-35-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 034/105] KVM: selftests: Convert vmx_preemption_timer_test away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../kvm/x86_64/vmx_preemption_timer_test.c | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/vmx_preemption_timer_test.c= b/tools/testing/selftests/kvm/x86_64/vmx_preemption_timer_test.c index f5b4ae914131..168adc5b2272 100644 --- a/tools/testing/selftests/kvm/x86_64/vmx_preemption_timer_test.c +++ b/tools/testing/selftests/kvm/x86_64/vmx_preemption_timer_test.c @@ -22,7 +22,6 @@ #include "processor.h" #include "vmx.h" =20 -#define VCPU_ID 5 #define PREEMPTION_TIMER_VALUE 100000000ull #define PREEMPTION_TIMER_VALUE_THRESHOLD1 80000000ull =20 @@ -159,6 +158,7 @@ int main(int argc, char *argv[]) struct kvm_regs regs1, regs2; struct kvm_vm *vm; struct kvm_run *run; + struct kvm_vcpu *vcpu; struct kvm_x86_state *state; struct ucall uc; int stage; @@ -175,22 +175,22 @@ int main(int argc, char *argv[]) } =20 /* Create VM */ - vm =3D vm_create_default(VCPU_ID, 0, guest_code); - run =3D vcpu_state(vm, VCPU_ID); + vm =3D vm_create_with_one_vcpu(&vcpu, guest_code); + run =3D vcpu->run; =20 - vcpu_regs_get(vm, VCPU_ID, ®s1); + vcpu_regs_get(vm, vcpu->id, ®s1); =20 vcpu_alloc_vmx(vm, &vmx_pages_gva); - vcpu_args_set(vm, VCPU_ID, 1, vmx_pages_gva); + vcpu_args_set(vm, vcpu->id, 1, vmx_pages_gva); =20 for (stage =3D 1;; stage++) { - _vcpu_run(vm, VCPU_ID); + vcpu_run(vm, vcpu->id); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Stage %d: unexpected exit reason: %u (%s),\n", stage, run->exit_reason, exit_reason_str(run->exit_reason)); =20 - switch (get_ucall(vm, VCPU_ID, &uc)) { + switch (get_ucall(vm, vcpu->id, &uc)) { case UCALL_ABORT: TEST_FAIL("%s at %s:%ld", (const char *)uc.args[0], __FILE__, uc.args[1]); @@ -232,22 +232,22 @@ int main(int argc, char *argv[]) stage, uc.args[4], uc.args[5]); } =20 - state =3D vcpu_save_state(vm, VCPU_ID); + state =3D vcpu_save_state(vm, vcpu->id); memset(®s1, 0, sizeof(regs1)); - vcpu_regs_get(vm, VCPU_ID, ®s1); + vcpu_regs_get(vm, vcpu->id, ®s1); =20 kvm_vm_release(vm); =20 /* Restore state in a new VM. */ - kvm_vm_restart(vm); - vm_vcpu_add(vm, VCPU_ID); - vcpu_set_cpuid(vm, VCPU_ID, kvm_get_supported_cpuid()); - vcpu_load_state(vm, VCPU_ID, state); - run =3D vcpu_state(vm, VCPU_ID); + vcpu =3D vm_recreate_with_one_vcpu(vm); + + vcpu_set_cpuid(vm, vcpu->id, kvm_get_supported_cpuid()); + vcpu_load_state(vm, vcpu->id, state); + run =3D vcpu->run; kvm_x86_state_cleanup(state); =20 memset(®s2, 0, sizeof(regs2)); - vcpu_regs_get(vm, VCPU_ID, ®s2); + vcpu_regs_get(vm, vcpu->id, ®s2); TEST_ASSERT(!memcmp(®s1, ®s2, sizeof(regs2)), "Unexpected register values after vcpu_load_state; rdi: %lx rsi: %l= x", (ulong) regs2.rdi, (ulong) regs2.rsi); --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 B765AC433F5 for ; Fri, 11 Mar 2022 05:54:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346809AbiCKFzs (ORCPT ); Fri, 11 Mar 2022 00:55:48 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57388 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346672AbiCKFxH (ORCPT ); Fri, 11 Mar 2022 00:53:07 -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 BFDB8ECB30 for ; Thu, 10 Mar 2022 21:52:05 -0800 (PST) Received: by mail-pj1-x104a.google.com with SMTP id p15-20020a17090a748f00b001bf3ba2ae95so4694968pjk.9 for ; Thu, 10 Mar 2022 21:52:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=F7WunbLiKS/wqkMxeA4n9Mz5mHg6sYejl2gq2yFp4zY=; b=atD/qZ+53Jwm+gU4v6bfw8wwiWlESo+4csu5HtcfwYavf4FtNNsAIwNLtOTPaiej9+ 74/JrXUUrGmjiXslHVs8+hlRHeX9XPnZTV6SBdmuwtI9h3F4ZRnUTbFtVcAcbEirhrPx nk5eDXL6rvJwD517aj8lbP1Yzi+06+4BAjsWUrb+ewdcsiwH2JeXUMk79ZPV95JyvjU7 3kUQG2Dghn/nhJN7e9Zryslqaq4efvd1xMkxjUF6s3i/5PKHCZN9WDLxiYYxDHNJLhP3 OeuFAR8HDELsLCTY/OLTuYh2AN6V7cDwbV9oVyI0sVNqrQ6xTljnBUP1qbjrbqApHr7r 7QDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=F7WunbLiKS/wqkMxeA4n9Mz5mHg6sYejl2gq2yFp4zY=; b=TDSxePx5CSPdeTem3rI3tgcdXI7YTawmZMny+O+AZOAIOH+RELNXDXKe1dD1maxAx5 o/cgRvG7vsCOwMq5j1GASf8p0w8TkylvJbU+mtMB2YLLssrfzW5vrrsqszgEw6Rp3GbU rcYCu7Gx2uTbYxXgb1kETLC2T8tB09tTQq19cJil5F0Jsv2tgDsCH1CWAazLFL9d8tja NiQocumF/oO+f8Hlca5vpbD9D/fde8bH6p8HetfVa8ALv28axtP+O+Jgd1f/3TlUY3/g nz2mytw5ghDbF1a1HXVCx9dH0UYTnk59PBAxyei6kv2D86U5VGimLuI2LDjd7PUN+ej+ Hz7Q== X-Gm-Message-State: AOAM532cpW3lzMRSJmEBmSIaKwteUbOEFglb9e225WGKCdBhKygYuXmm d7I2U2z7nUnKx00D2CTdHaEE/5xoPCUZR4/NWST2CIw2XD4gQo0v6rhvBCO3M9N0jQc7UONAlMa xJ+pbT8mIYAe2Kt9+C3UTOgZ3Y4PmEtqSaH7Cs4bNQSJ1fvHfo879Kv0GwC2RXP/9QZl0ag== X-Google-Smtp-Source: ABdhPJyEzh3xDiW+Qhe0DkksBdU9lVC32o7WAdXJZm9d1ipPIPPXjkEG4T4fU0qz7vGC9Yh9zarRt4zuA/k= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a05:6a00:1f0c:b0:4f6:fee8:7c8c with SMTP id be12-20020a056a001f0c00b004f6fee87c8cmr8716777pfb.60.1646977925169; Thu, 10 Mar 2022 21:52:05 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:46 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-36-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 035/105] KVM: selftests: Convert vmx_pmu_msrs_test away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/x86_64/vmx_pmu_msrs_test.c | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/vmx_pmu_msrs_test.c b/tools= /testing/selftests/kvm/x86_64/vmx_pmu_msrs_test.c index 2454a1f2ca0c..7bb81b7a4825 100644 --- a/tools/testing/selftests/kvm/x86_64/vmx_pmu_msrs_test.c +++ b/tools/testing/selftests/kvm/x86_64/vmx_pmu_msrs_test.c @@ -18,8 +18,6 @@ #include "kvm_util.h" #include "vmx.h" =20 -#define VCPU_ID 0 - #define X86_FEATURE_PDCM (1<<15) #define PMU_CAP_FW_WRITES (1ULL << 13) #define PMU_CAP_LBR_FMT 0x3f @@ -62,6 +60,7 @@ int main(int argc, char *argv[]) struct kvm_cpuid_entry2 *entry_a_0; bool pdcm_supported =3D false; struct kvm_vm *vm; + struct kvm_vcpu *vcpu; int ret; union cpuid10_eax eax; union perf_capabilities host_cap; @@ -70,7 +69,7 @@ int main(int argc, char *argv[]) host_cap.capabilities &=3D (PMU_CAP_FW_WRITES | PMU_CAP_LBR_FMT); =20 /* Create VM */ - vm =3D vm_create_default(VCPU_ID, 0, guest_code); + vm =3D vm_create_with_one_vcpu(&vcpu, guest_code); cpuid =3D kvm_get_supported_cpuid(); =20 if (kvm_get_cpuid_max_basic() >=3D 0xa) { @@ -89,25 +88,25 @@ int main(int argc, char *argv[]) } =20 /* testcase 1, set capabilities when we have PDCM bit */ - vcpu_set_cpuid(vm, VCPU_ID, cpuid); - vcpu_set_msr(vm, 0, MSR_IA32_PERF_CAPABILITIES, PMU_CAP_FW_WRITES); + vcpu_set_cpuid(vm, vcpu->id, cpuid); + vcpu_set_msr(vm, vcpu->id, MSR_IA32_PERF_CAPABILITIES, PMU_CAP_FW_WRITES); =20 /* check capabilities can be retrieved with KVM_GET_MSR */ - ASSERT_EQ(vcpu_get_msr(vm, VCPU_ID, MSR_IA32_PERF_CAPABILITIES), PMU_CAP_= FW_WRITES); + ASSERT_EQ(vcpu_get_msr(vm, vcpu->id, MSR_IA32_PERF_CAPABILITIES), PMU_CAP= _FW_WRITES); =20 /* check whatever we write with KVM_SET_MSR is _not_ modified */ - vcpu_run(vm, VCPU_ID); - ASSERT_EQ(vcpu_get_msr(vm, VCPU_ID, MSR_IA32_PERF_CAPABILITIES), PMU_CAP_= FW_WRITES); + vcpu_run(vm, vcpu->id); + ASSERT_EQ(vcpu_get_msr(vm, vcpu->id, MSR_IA32_PERF_CAPABILITIES), PMU_CAP= _FW_WRITES); =20 /* testcase 2, check valid LBR formats are accepted */ - vcpu_set_msr(vm, 0, MSR_IA32_PERF_CAPABILITIES, 0); - ASSERT_EQ(vcpu_get_msr(vm, VCPU_ID, MSR_IA32_PERF_CAPABILITIES), 0); + vcpu_set_msr(vm, vcpu->id, MSR_IA32_PERF_CAPABILITIES, 0); + ASSERT_EQ(vcpu_get_msr(vm, vcpu->id, MSR_IA32_PERF_CAPABILITIES), 0); =20 - vcpu_set_msr(vm, 0, MSR_IA32_PERF_CAPABILITIES, host_cap.lbr_format); - ASSERT_EQ(vcpu_get_msr(vm, VCPU_ID, MSR_IA32_PERF_CAPABILITIES), (u64)hos= t_cap.lbr_format); + vcpu_set_msr(vm, vcpu->id, MSR_IA32_PERF_CAPABILITIES, host_cap.lbr_forma= t); + ASSERT_EQ(vcpu_get_msr(vm, vcpu->id, MSR_IA32_PERF_CAPABILITIES), (u64)ho= st_cap.lbr_format); =20 /* testcase 3, check invalid LBR format is rejected */ - ret =3D _vcpu_set_msr(vm, 0, MSR_IA32_PERF_CAPABILITIES, PMU_CAP_LBR_FMT); + ret =3D _vcpu_set_msr(vm, vcpu->id, MSR_IA32_PERF_CAPABILITIES, PMU_CAP_L= BR_FMT); TEST_ASSERT(ret =3D=3D 0, "Bad PERF_CAPABILITIES didn't fail."); =20 kvm_vm_free(vm); --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 12920C433F5 for ; Fri, 11 Mar 2022 05:54:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346762AbiCKFzz (ORCPT ); Fri, 11 Mar 2022 00:55:55 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57492 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346680AbiCKFxK (ORCPT ); Fri, 11 Mar 2022 00:53:10 -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 82FA1ECB28 for ; Thu, 10 Mar 2022 21:52:07 -0800 (PST) Received: by mail-pj1-x1049.google.com with SMTP id q21-20020a17090a2e1500b001c44f70fd38so339382pjd.6 for ; Thu, 10 Mar 2022 21:52:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=4dMumXj+STgcHBBHkoH0I3SOiGX9cCYhjKL516b4p3k=; b=h7ECZKXORI6fIW/ivxqq7ZYEUzc2m+byrDt4kLTLpuNgHrgGT7Li0trGsqDrzgbbia E/dX+JvJF9o5GmiosSQwGkFHRzRoVzEtLZdBgY/TdlLmlp8StWZGtG5/ZfVPu6V58Kgd 13YLZ5TPe2gvhieTl2rGXwSSlqbbs615Q8XylKvl4NpmF5PGXG2Iodl7+e+h4Z6bHFWa 3awotxCDRP4HAzz8kS8OMsTpZqwA6oTDijbzltxlhIi0jSF/K4lmrU6H1OnRRiPeK0dI 5366i4i4xgmEXXpd9kgEGfH8MwHTU/Opsw/kqNJOrEo3UYYRvuy8bXhha4fW+E1TsJzZ jS0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=4dMumXj+STgcHBBHkoH0I3SOiGX9cCYhjKL516b4p3k=; b=PwHFV9sD2seCX0nispGqCyHMbc5Ko81dX3LdU+TZdrq1Ozdl+VAf0ym/WuaafowGnJ Ijk6K9bzQFo4cD7JywdYbzl6as09fGu8VyFsmZC0KQwrZJR4PgroFnal1yfS/FP91Qz4 ra+I8kLD6+9xcGDX13+31xpV9+sq6WJV+gY+sNwSlKwx7VxtLi2BHTg0OFww+8w4e76Q GBg5CIZMPYYWMsGRyarbhMxb4+zaiX4sKisquDlWRaQlM2d7tnmr9jdDLCvqxQZUS13d IfTZIWqW9otivKBwnKwqBB8ax2p17kOs5JUwLRzgfDtfu2urDQOXjn3NS1Rn6e1drAqM Qjeg== X-Gm-Message-State: AOAM5330AkoZGAM4CkBsXhtdgnPkVE6UyqiNEu15WDSf7/mWhGpzsUiw iDwfxfbnDzkSYBmoWHFXU4xLJfpTVXVWT6/EyPgnieZhlviUKZNKoYj4xHTsond8XPBjSeYudav SaYksV7ICifuxTkBO9XGIRJ43W3OwfAAd3wB+k6UdZ8kQ0gPYQgBefIdgnA7HgZ60g3RUoA== X-Google-Smtp-Source: ABdhPJxiGBriGDf95E5Fdb4ITuGE/19fwQFlZkf83AOyQKe8lbAXcGTkqZHz66hG+yjrZzkFNpCgv/y3IAg= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:90a:d3d0:b0:1bb:f5b3:2fbf with SMTP id d16-20020a17090ad3d000b001bbf5b32fbfmr8950652pjw.87.1646977926952; Thu, 10 Mar 2022 21:52:06 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:47 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-37-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 036/105] KVM: selftests: Convert vmx_set_nested_state_test away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../kvm/x86_64/vmx_set_nested_state_test.c | 86 +++++++++---------- 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/vmx_set_nested_state_test.c= b/tools/testing/selftests/kvm/x86_64/vmx_set_nested_state_test.c index af3b60eb35ec..de38f0e68153 100644 --- a/tools/testing/selftests/kvm/x86_64/vmx_set_nested_state_test.c +++ b/tools/testing/selftests/kvm/x86_64/vmx_set_nested_state_test.c @@ -23,38 +23,37 @@ * changes this should be updated. */ #define VMCS12_REVISION 0x11e57ed0 -#define VCPU_ID 5 =20 bool have_evmcs; =20 -void test_nested_state(struct kvm_vm *vm, struct kvm_nested_state *state) +void test_nested_state(struct kvm_vcpu *vcpu, struct kvm_nested_state *sta= te) { - vcpu_nested_state_set(vm, VCPU_ID, state); + vcpu_nested_state_set(vcpu->vm, vcpu->id, state); } =20 -void test_nested_state_expect_errno(struct kvm_vm *vm, +void test_nested_state_expect_errno(struct kvm_vcpu *vcpu, struct kvm_nested_state *state, int expected_errno) { int rv; =20 - rv =3D __vcpu_nested_state_set(vm, VCPU_ID, state); + rv =3D __vcpu_nested_state_set(vcpu->vm, vcpu->id, state); TEST_ASSERT(rv =3D=3D -1 && errno =3D=3D expected_errno, "Expected %s (%d) from vcpu_nested_state_set but got rv: %i errno: %s (%= d)", strerror(expected_errno), expected_errno, rv, strerror(errno), errno); } =20 -void test_nested_state_expect_einval(struct kvm_vm *vm, +void test_nested_state_expect_einval(struct kvm_vcpu *vcpu, struct kvm_nested_state *state) { - test_nested_state_expect_errno(vm, state, EINVAL); + test_nested_state_expect_errno(vcpu, state, EINVAL); } =20 -void test_nested_state_expect_efault(struct kvm_vm *vm, +void test_nested_state_expect_efault(struct kvm_vcpu *vcpu, struct kvm_nested_state *state) { - test_nested_state_expect_errno(vm, state, EFAULT); + test_nested_state_expect_errno(vcpu, state, EFAULT); } =20 void set_revision_id_for_vmcs12(struct kvm_nested_state *state, @@ -86,7 +85,7 @@ void set_default_vmx_state(struct kvm_nested_state *state= , int size) set_revision_id_for_vmcs12(state, VMCS12_REVISION); } =20 -void test_vmx_nested_state(struct kvm_vm *vm) +void test_vmx_nested_state(struct kvm_vcpu *vcpu) { /* Add a page for VMCS12. */ const int state_sz =3D sizeof(struct kvm_nested_state) + getpagesize(); @@ -96,14 +95,14 @@ void test_vmx_nested_state(struct kvm_vm *vm) /* The format must be set to 0. 0 for VMX, 1 for SVM. */ set_default_vmx_state(state, state_sz); state->format =3D 1; - test_nested_state_expect_einval(vm, state); + test_nested_state_expect_einval(vcpu, state); =20 /* * We cannot virtualize anything if the guest does not have VMX * enabled. */ set_default_vmx_state(state, state_sz); - test_nested_state_expect_einval(vm, state); + test_nested_state_expect_einval(vcpu, state); =20 /* * We cannot virtualize anything if the guest does not have VMX @@ -112,17 +111,17 @@ void test_vmx_nested_state(struct kvm_vm *vm) */ set_default_vmx_state(state, state_sz); state->hdr.vmx.vmxon_pa =3D -1ull; - test_nested_state_expect_einval(vm, state); + test_nested_state_expect_einval(vcpu, state); =20 state->hdr.vmx.vmcs12_pa =3D -1ull; state->flags =3D KVM_STATE_NESTED_EVMCS; - test_nested_state_expect_einval(vm, state); + test_nested_state_expect_einval(vcpu, state); =20 state->flags =3D 0; - test_nested_state(vm, state); + test_nested_state(vcpu, state); =20 /* Enable VMX in the guest CPUID. */ - vcpu_set_cpuid(vm, VCPU_ID, kvm_get_supported_cpuid()); + vcpu_set_cpuid(vcpu->vm, vcpu->id, kvm_get_supported_cpuid()); =20 /* * Setting vmxon_pa =3D=3D -1ull and vmcs_pa =3D=3D -1ull exits early wit= hout @@ -133,34 +132,34 @@ void test_vmx_nested_state(struct kvm_vm *vm) set_default_vmx_state(state, state_sz); state->hdr.vmx.vmxon_pa =3D -1ull; state->hdr.vmx.vmcs12_pa =3D -1ull; - test_nested_state_expect_einval(vm, state); + test_nested_state_expect_einval(vcpu, state); =20 state->flags &=3D KVM_STATE_NESTED_EVMCS; if (have_evmcs) { - test_nested_state_expect_einval(vm, state); - vcpu_enable_evmcs(vm, VCPU_ID); + test_nested_state_expect_einval(vcpu, state); + vcpu_enable_evmcs(vcpu->vm, vcpu->id); } - test_nested_state(vm, state); + test_nested_state(vcpu, state); =20 /* It is invalid to have vmxon_pa =3D=3D -1ull and SMM flags non-zero. */ state->hdr.vmx.smm.flags =3D 1; - test_nested_state_expect_einval(vm, state); + test_nested_state_expect_einval(vcpu, state); =20 /* Invalid flags are rejected. */ set_default_vmx_state(state, state_sz); state->hdr.vmx.flags =3D ~0; - test_nested_state_expect_einval(vm, state); + test_nested_state_expect_einval(vcpu, state); =20 /* It is invalid to have vmxon_pa =3D=3D -1ull and vmcs_pa !=3D -1ull. */ set_default_vmx_state(state, state_sz); state->hdr.vmx.vmxon_pa =3D -1ull; state->flags =3D 0; - test_nested_state_expect_einval(vm, state); + test_nested_state_expect_einval(vcpu, state); =20 /* It is invalid to have vmxon_pa set to a non-page aligned address. */ set_default_vmx_state(state, state_sz); state->hdr.vmx.vmxon_pa =3D 1; - test_nested_state_expect_einval(vm, state); + test_nested_state_expect_einval(vcpu, state); =20 /* * It is invalid to have KVM_STATE_NESTED_SMM_GUEST_MODE and @@ -170,7 +169,7 @@ void test_vmx_nested_state(struct kvm_vm *vm) state->flags =3D KVM_STATE_NESTED_GUEST_MODE | KVM_STATE_NESTED_RUN_PENDING; state->hdr.vmx.smm.flags =3D KVM_STATE_NESTED_SMM_GUEST_MODE; - test_nested_state_expect_einval(vm, state); + test_nested_state_expect_einval(vcpu, state); =20 /* * It is invalid to have any of the SMM flags set besides: @@ -180,13 +179,13 @@ void test_vmx_nested_state(struct kvm_vm *vm) set_default_vmx_state(state, state_sz); state->hdr.vmx.smm.flags =3D ~(KVM_STATE_NESTED_SMM_GUEST_MODE | KVM_STATE_NESTED_SMM_VMXON); - test_nested_state_expect_einval(vm, state); + test_nested_state_expect_einval(vcpu, state); =20 /* Outside SMM, SMM flags must be zero. */ set_default_vmx_state(state, state_sz); state->flags =3D 0; state->hdr.vmx.smm.flags =3D KVM_STATE_NESTED_SMM_GUEST_MODE; - test_nested_state_expect_einval(vm, state); + test_nested_state_expect_einval(vcpu, state); =20 /* * Size must be large enough to fit kvm_nested_state and vmcs12 @@ -195,13 +194,13 @@ void test_vmx_nested_state(struct kvm_vm *vm) set_default_vmx_state(state, state_sz); state->size =3D sizeof(*state); state->flags =3D 0; - test_nested_state_expect_einval(vm, state); + test_nested_state_expect_einval(vcpu, state); =20 set_default_vmx_state(state, state_sz); state->size =3D sizeof(*state); state->flags =3D 0; state->hdr.vmx.vmcs12_pa =3D -1; - test_nested_state(vm, state); + test_nested_state(vcpu, state); =20 /* * KVM_SET_NESTED_STATE succeeds with invalid VMCS @@ -209,7 +208,7 @@ void test_vmx_nested_state(struct kvm_vm *vm) */ set_default_vmx_state(state, state_sz); state->flags =3D 0; - test_nested_state(vm, state); + test_nested_state(vcpu, state); =20 /* Invalid flags are rejected, even if no VMCS loaded. */ set_default_vmx_state(state, state_sz); @@ -217,13 +216,13 @@ void test_vmx_nested_state(struct kvm_vm *vm) state->flags =3D 0; state->hdr.vmx.vmcs12_pa =3D -1; state->hdr.vmx.flags =3D ~0; - test_nested_state_expect_einval(vm, state); + test_nested_state_expect_einval(vcpu, state); =20 /* vmxon_pa cannot be the same address as vmcs_pa. */ set_default_vmx_state(state, state_sz); state->hdr.vmx.vmxon_pa =3D 0; state->hdr.vmx.vmcs12_pa =3D 0; - test_nested_state_expect_einval(vm, state); + test_nested_state_expect_einval(vcpu, state); =20 /* * Test that if we leave nesting the state reflects that when we get @@ -233,8 +232,8 @@ void test_vmx_nested_state(struct kvm_vm *vm) state->hdr.vmx.vmxon_pa =3D -1ull; state->hdr.vmx.vmcs12_pa =3D -1ull; state->flags =3D 0; - test_nested_state(vm, state); - vcpu_nested_state_get(vm, VCPU_ID, state); + test_nested_state(vcpu, state); + vcpu_nested_state_get(vcpu->vm, vcpu->id, state); TEST_ASSERT(state->size >=3D sizeof(*state) && state->size <=3D state_sz, "Size must be between %ld and %d. The size returned was %d.", sizeof(*state), state_sz, state->size); @@ -244,7 +243,7 @@ void test_vmx_nested_state(struct kvm_vm *vm) free(state); } =20 -void disable_vmx(struct kvm_vm *vm) +void disable_vmx(struct kvm_vcpu *vcpu) { struct kvm_cpuid2 *cpuid =3D kvm_get_supported_cpuid(); int i; @@ -256,7 +255,7 @@ void disable_vmx(struct kvm_vm *vm) TEST_ASSERT(i !=3D cpuid->nent, "CPUID function 1 not found"); =20 cpuid->entries[i].ecx &=3D ~CPUID_VMX; - vcpu_set_cpuid(vm, VCPU_ID, cpuid); + vcpu_set_cpuid(vcpu->vm, vcpu->id, cpuid); cpuid->entries[i].ecx |=3D CPUID_VMX; } =20 @@ -264,6 +263,7 @@ int main(int argc, char *argv[]) { struct kvm_vm *vm; struct kvm_nested_state state; + struct kvm_vcpu *vcpu; =20 have_evmcs =3D kvm_check_cap(KVM_CAP_HYPERV_ENLIGHTENED_VMCS); =20 @@ -278,20 +278,20 @@ int main(int argc, char *argv[]) */ nested_vmx_check_supported(); =20 - vm =3D vm_create_default(VCPU_ID, 0, 0); + vm =3D vm_create_with_one_vcpu(&vcpu, NULL); =20 /* * First run tests with VMX disabled to check error handling. */ - disable_vmx(vm); + disable_vmx(vcpu); =20 /* Passing a NULL kvm_nested_state causes a EFAULT. */ - test_nested_state_expect_efault(vm, NULL); + test_nested_state_expect_efault(vcpu, NULL); =20 /* 'size' cannot be smaller than sizeof(kvm_nested_state). */ set_default_state(&state); state.size =3D 0; - test_nested_state_expect_einval(vm, &state); + test_nested_state_expect_einval(vcpu, &state); =20 /* * Setting the flags 0xf fails the flags check. The only flags that @@ -302,7 +302,7 @@ int main(int argc, char *argv[]) */ set_default_state(&state); state.flags =3D 0xf; - test_nested_state_expect_einval(vm, &state); + test_nested_state_expect_einval(vcpu, &state); =20 /* * If KVM_STATE_NESTED_RUN_PENDING is set then @@ -310,9 +310,9 @@ int main(int argc, char *argv[]) */ set_default_state(&state); state.flags =3D KVM_STATE_NESTED_RUN_PENDING; - test_nested_state_expect_einval(vm, &state); + test_nested_state_expect_einval(vcpu, &state); =20 - test_vmx_nested_state(vm); + test_vmx_nested_state(vcpu); =20 kvm_vm_free(vm); return 0; --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 23BEDC433F5 for ; Fri, 11 Mar 2022 05:55:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346797AbiCKF4C (ORCPT ); Fri, 11 Mar 2022 00:56:02 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57576 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346683AbiCKFxL (ORCPT ); Fri, 11 Mar 2022 00:53:11 -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 2E023ECC63 for ; Thu, 10 Mar 2022 21:52:09 -0800 (PST) Received: by mail-pl1-x64a.google.com with SMTP id x10-20020a170902a38a00b00151e09a4e15so3993068pla.15 for ; Thu, 10 Mar 2022 21:52:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=o3uJ88GNV+YQmj/m0RYhTpW5VxFfvF1M+nMyDCpDOt0=; b=fc5q73HcXBegm+0tBM3/k1V4t9anDkQG+c1YNeo573WEBzqnlIBMexUmN4+VsKMiFf rDZynj4GPr43tQKhGkdNsGCS6InEH38WbtIE7uiWJUYhC7Ydvpem38imCTaJbiWTvquJ HAtmHlMcrsVErdfq05Igei4LempIIC4TUAp64/QEvnQud9PHQKRW5CJVcP2atrVm4FKz q+v2zARtfoNFx2cjPP/yCnUuFfV6KvGYFASJGSXRDphZWITLXEToG0j7wg2CTNVQ6LVN 8gXG38SH5bhr0SDoFyuY+EWhyLJtj8ePNJIJGPumBOePOmvAO3DHFW6R6aqPPpadTNMx hm3A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=o3uJ88GNV+YQmj/m0RYhTpW5VxFfvF1M+nMyDCpDOt0=; b=pqGtubhnMnBa7JC+C9ReOfkOLfMM840gyinIsJCDp1Lvk6kcBZ7m6GrglDAntqo8bI B3EYB8U5Orhw2jj2lx7SV4H/wdo0XSXQti6J6W7kewNQDtq2Drl1Lf0HVuvIlPcpuFqs CgBpAVjn1wpUPIJ8CXAPr+3vSg6djvI2G1DqPgIcmH5AtkZrWuaBrzSief6eiAswzb4X 72hseUbt2YOtfY3j0U0gFyz4eVCN415bi4SxnSZT3/vDVkEFac5vJf8aUoZ9gOCTjjoy r6QsOUIJwAVa3pytcF9S56D4Sysq7YrFs5k6/oI5xUIBJ3aZkWzJ+Mkju03xi6W6rf4H u4mg== X-Gm-Message-State: AOAM530i97jAfVRLJs71+r8x7cm55FU3+lq2hPAXY1ALPLI/LGyGrK+k Pk2qNsnPFNHzauEGc8/ymlw+wkcNW1ui35/i7Z0dluk6PDKrGj2egpQAOlQERUUGnTm3MGp2iSf rdiRwlkaYOf377iyg5pZFopdj9cdm43D3CcLrx4bPOOPFSWru9sHEx0FZhRBUdnXVBN+avg== X-Google-Smtp-Source: ABdhPJxiJIIyJ3647IJ4mIt+GeSLDZ/OwMIU0Mqv8ujNyz27YRqFc6NRwnNVxWaaxa8TL33ZzuEIAnVO1CI= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a05:6a00:2482:b0:4f7:644b:97b5 with SMTP id c2-20020a056a00248200b004f7644b97b5mr8668543pfv.37.1646977928571; Thu, 10 Mar 2022 21:52:08 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:48 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-38-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 037/105] KVM: selftests: Convert vmx_tsc_adjust_test away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/x86_64/vmx_tsc_adjust_test.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/vmx_tsc_adjust_test.c b/too= ls/testing/selftests/kvm/x86_64/vmx_tsc_adjust_test.c index e683d0ac3e45..d5ce21d3c513 100644 --- a/tools/testing/selftests/kvm/x86_64/vmx_tsc_adjust_test.c +++ b/tools/testing/selftests/kvm/x86_64/vmx_tsc_adjust_test.c @@ -33,7 +33,6 @@ #endif =20 #define PAGE_SIZE 4096 -#define VCPU_ID 5 =20 #define TSC_ADJUST_VALUE (1ll << 32) #define TSC_OFFSET_VALUE -(1ll << 48) @@ -128,26 +127,27 @@ static void report(int64_t val) int main(int argc, char *argv[]) { vm_vaddr_t vmx_pages_gva; + struct kvm_vcpu *vcpu; =20 nested_vmx_check_supported(); =20 - vm =3D vm_create_default(VCPU_ID, 0, (void *) l1_guest_code); + vm =3D vm_create_with_one_vcpu(&vcpu, (void *) l1_guest_code); =20 /* Allocate VMX pages and shared descriptors (vmx_pages). */ vcpu_alloc_vmx(vm, &vmx_pages_gva); - vcpu_args_set(vm, VCPU_ID, 1, vmx_pages_gva); + vcpu_args_set(vm, vcpu->id, 1, vmx_pages_gva); =20 for (;;) { - volatile struct kvm_run *run =3D vcpu_state(vm, VCPU_ID); + volatile struct kvm_run *run =3D vcpu->run; struct ucall uc; =20 - vcpu_run(vm, VCPU_ID); + vcpu_run(vm, vcpu->id); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Got exit_reason other than KVM_EXIT_IO: %u (%s)\n", run->exit_reason, exit_reason_str(run->exit_reason)); =20 - switch (get_ucall(vm, VCPU_ID, &uc)) { + switch (get_ucall(vm, vcpu->id, &uc)) { case UCALL_ABORT: TEST_FAIL("%s", (const char *)uc.args[0]); /* NOT REACHED */ --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 DBB5EC433F5 for ; Fri, 11 Mar 2022 05:55:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346798AbiCKF4K (ORCPT ); Fri, 11 Mar 2022 00:56:10 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57682 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346687AbiCKFxN (ORCPT ); Fri, 11 Mar 2022 00:53:13 -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 04646ECB28 for ; Thu, 10 Mar 2022 21:52:11 -0800 (PST) Received: by mail-pg1-x549.google.com with SMTP id u10-20020a63df0a000000b0037886b8707bso4195233pgg.23 for ; Thu, 10 Mar 2022 21:52:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=dx2akcBLzpkqjsYc61+Ndp3tB6jxXz9uwF83mP2tgxA=; b=kfamdwzf3WiNt+nrNqK3rqOO2EWCK2oNLFypd42ds2uu9OHf3C+x70VZYH/bjJWKsT TJRL2noKkIzxNWbfVFEBwvJweu81w1NZd7GDuBVML7zhysixiw0czd3+1JLHYjliKrRd uRDh5l5XrdNbab2bniYwzpf6hp5jjaYAKQrYtLgMfO4zU3SEl3Lb8wkmJAqHIXz+MWEP gzE54G5wnR43X4TqgkyRds6PRIM53pgyAhkOvx/pfg+xcJUYO5KNtWVphJTi9a3uc6xj iUajsdkLxd50Cf18I+dNSmQa+lvuMhuXTO+F8z9obfHG+OYCrGmta9mZjAqLB6m+VFMD 6x1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=dx2akcBLzpkqjsYc61+Ndp3tB6jxXz9uwF83mP2tgxA=; b=6MHd9NtII6FKyLlZOfWi8iTCrA378XGfvkSU9LFhOlvTjP3oHJ9kWtHuwYUWnijJKb 0vR8FRNI8vFjH9iUnDRrY7g2SNTcGvivm4p6NkO3fq5ZKLVBjss6NMbmNHE6sM6wRykt dgeK2hHkuUVwwdwlBuUqFfqayZZauYpSmlZj0XOEK0IPg6mdOujKfMrkG80U0Ac9IApi 9x6PMN4Ag4uLjluv3kKq/HPtIE61aC+X9ZBf6s5YRVi5XZuy1qybbi5hjGAkxw0UAFOF EAcxGjHNJs6g1pvtecoP5QzlLHeXvSwi3rULOwWoNEFX+VDfwM4dxGLUvVRwIIrkllO7 U71g== X-Gm-Message-State: AOAM532GIvMSsftdWyO9UugHKE6TddhkDa8izIXTsX60UffIyKNJGT1f 0RSHBs3gxJS/owqtCA8EaHh+oZ7j6sey+9RPyPMnufOQXDW5FbWnCKYs4ncbgPoi+1hNjOeBukp 1jya9PQUZYQeQVUHasQ53RVB4B6QJ+gMgaLld/03vi2GUfK59OiKmrzVjnVbigL7+W5ttPw== X-Google-Smtp-Source: ABdhPJxTvL5R45R5JDKDLNTWlk8U5NMiMwnmxrMy0/kurQwFOB5Bzwa1itKsjG0kil1C0mDa2M55X6s7MAo= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a65:6d09:0:b0:378:5646:24c2 with SMTP id bf9-20020a656d09000000b00378564624c2mr7025263pgb.522.1646977930391; Thu, 10 Mar 2022 21:52:10 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:49 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-39-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 038/105] KVM: selftests: Convert mmu_role_test away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/x86_64/mmu_role_test.c | 20 ++++++++----------- 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/mmu_role_test.c b/tools/tes= ting/selftests/kvm/x86_64/mmu_role_test.c index da2325fcad87..809aa0153cee 100644 --- a/tools/testing/selftests/kvm/x86_64/mmu_role_test.c +++ b/tools/testing/selftests/kvm/x86_64/mmu_role_test.c @@ -3,8 +3,6 @@ #include "kvm_util.h" #include "processor.h" =20 -#define VCPU_ID 1 - #define MMIO_GPA 0x100000000ull =20 static void guest_code(void) @@ -25,22 +23,21 @@ static void guest_pf_handler(struct ex_regs *regs) static void mmu_role_test(u32 *cpuid_reg, u32 evil_cpuid_val) { u32 good_cpuid_val =3D *cpuid_reg; + struct kvm_vcpu *vcpu; struct kvm_run *run; struct kvm_vm *vm; uint64_t cmd; - int r; =20 /* Create VM */ - vm =3D vm_create_default(VCPU_ID, 0, guest_code); - run =3D vcpu_state(vm, VCPU_ID); + vm =3D vm_create_with_one_vcpu(&vcpu, guest_code); + run =3D vcpu->run; =20 /* Map 1gb page without a backing memlot. */ __virt_pg_map(vm, MMIO_GPA, MMIO_GPA, X86_PAGE_SIZE_1G); =20 - r =3D _vcpu_run(vm, VCPU_ID); + vcpu_run(vm, vcpu->id); =20 /* Guest access to the 1gb page should trigger MMIO. */ - TEST_ASSERT(r =3D=3D 0, "vcpu_run failed: %d\n", r); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_MMIO, "Unexpected exit reason: %u (%s), expected MMIO exit (1gb page w/o m= emslot)\n", run->exit_reason, exit_reason_str(run->exit_reason)); @@ -57,7 +54,7 @@ static void mmu_role_test(u32 *cpuid_reg, u32 evil_cpuid_= val) * returns the struct that contains the entry being modified. Eww. */ *cpuid_reg =3D evil_cpuid_val; - vcpu_set_cpuid(vm, VCPU_ID, kvm_get_supported_cpuid()); + vcpu_set_cpuid(vm, vcpu->id, kvm_get_supported_cpuid()); =20 /* * Add a dummy memslot to coerce KVM into bumping the MMIO generation. @@ -70,13 +67,12 @@ static void mmu_role_test(u32 *cpuid_reg, u32 evil_cpui= d_val) =20 /* Set up a #PF handler to eat the RSVD #PF and signal all done! */ vm_init_descriptor_tables(vm); - vcpu_init_descriptor_tables(vm, VCPU_ID); + vcpu_init_descriptor_tables(vm, vcpu->id); vm_install_exception_handler(vm, PF_VECTOR, guest_pf_handler); =20 - r =3D _vcpu_run(vm, VCPU_ID); - TEST_ASSERT(r =3D=3D 0, "vcpu_run failed: %d\n", r); + vcpu_run(vm, vcpu->id); =20 - cmd =3D get_ucall(vm, VCPU_ID, NULL); + cmd =3D get_ucall(vm, vcpu->id, NULL); TEST_ASSERT(cmd =3D=3D UCALL_DONE, "Unexpected guest exit, exit_reason=3D%s, ucall.cmd =3D %lu\n", exit_reason_str(run->exit_reason), cmd); --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 9D6EAC433EF for ; Fri, 11 Mar 2022 05:55:22 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346856AbiCKF4U (ORCPT ); Fri, 11 Mar 2022 00:56:20 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57838 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346696AbiCKFxP (ORCPT ); Fri, 11 Mar 2022 00:53:15 -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 0E1A3ECB28 for ; Thu, 10 Mar 2022 21:52:13 -0800 (PST) Received: by mail-pf1-x449.google.com with SMTP id i72-20020a62874b000000b004f66c5b963cso4612982pfe.6 for ; Thu, 10 Mar 2022 21:52:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=Qd/x2R16uSY/REGDmxgyGFYaGegCoIrTGo5hh2WV2cY=; b=Qeesr7vUc8MvhtHLOxHATcpkGHMENbv/D3MSOMYzoab6utEjo6BZy7gJU6+BNjoKxv rH3pEutBIe+kAX0THBT7eBTWfmNrCVAgWikXAlfbH6sDF0X6tFkf9Jsmya4WhbcnciG6 kt251kdDUAE+44C5VuvcONMu5GUL36JF920dwVt6IgAejnHfm2W4zrTG5kqIDpwmix2O ZI3QRRP1ZRtW7Kz+zovBJOfUaeWruoZr+5hC9jenEdXsQWqJ7QRhJQiIkNGhlTdEhDjr 8gi3Vk46xcmMPiNCfJj/wjs5wzmEY5uOL7Ee+sTtjiTKdz2HA+RsYYgpD7xVYRhQIe+5 XL1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=Qd/x2R16uSY/REGDmxgyGFYaGegCoIrTGo5hh2WV2cY=; b=rIjqkUZT2qVqOVTOMTC81eaWzH1AzFrKEv3f5+VnPHxAXOabrY3wpK4jwYXrmKWUN6 W5axBc43IgCfm1o4xCMm8oKEBlAl8qTeMqIOL9oWnC/QXoXVBHWDewSlM8RARQKziLwY nCln2/GckwljM4jsnx1ohv+DekwSn1FC3gctD46U/aiKuPNEJaP+5LDyxQzmBneS8Snc UQ8F2Zl95Tj5rv2DZ402b2OJvKZS8i1ulZmHtRRo9v6YQuyPZWorrMps2gOFk5TZ3hiu EqHEzEiB4xCv0Mra9HCBFmdC+gsard1vK3fr5eRDtZ6c3f2qa17TWwD11bP8yy66KR0u QMmg== X-Gm-Message-State: AOAM532sI3THT2KFcAq9j6pESPCeN7VbFiHBmwHtDIG4tjJmOT8SL3Vx P8SaXrBfYBKXzt1s1va+T5oR8KD0lLqzoweqy+ZGg6mYmOI1JpgUNLMSLxi5esJsg6BQfi0ABNX 1UqYCi2G1nWcDjrP+gTvtkDihNI2cK2EdioYqcY7UbJVvT9DLXMkv4/5KA6XVCgIAbOlvtA== X-Google-Smtp-Source: ABdhPJw1UehOAI7TB7A6XZWEaIezajBM5jIeW9SuODmIutAEugtXb5eJBRnGAl/fVrMEqG/uP27VALfgfHo= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:90b:1e10:b0:1bf:6c78:54a9 with SMTP id pg16-20020a17090b1e1000b001bf6c7854a9mr460642pjb.1.1646977932208; Thu, 10 Mar 2022 21:52:12 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:50 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-40-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 039/105] KVM: selftests: Convert pmu_event_filter_test away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../kvm/x86_64/pmu_event_filter_test.c | 60 +++++++++---------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/pmu_event_filter_test.c b/t= ools/testing/selftests/kvm/x86_64/pmu_event_filter_test.c index c715adcbd487..9aaad99f8986 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 @@ -49,7 +49,6 @@ union cpuid10_ebx { /* Oddly, this isn't in perf_event.h. */ #define ARCH_PERFMON_BRANCHES_RETIRED 5 =20 -#define VCPU_ID 0 #define NUM_BRANCHES 42 =20 /* @@ -173,17 +172,17 @@ static void amd_guest_code(void) * Run the VM to the next GUEST_SYNC(value), and return the value passed * to the sync. Any other exit from the guest is fatal. */ -static uint64_t run_vm_to_sync(struct kvm_vm *vm) +static uint64_t run_vcpu_to_sync(struct kvm_vcpu *vcpu) { - struct kvm_run *run =3D vcpu_state(vm, VCPU_ID); + struct kvm_run *run =3D vcpu->run; struct ucall uc; =20 - vcpu_run(vm, VCPU_ID); + vcpu_run(vcpu->vm, vcpu->id); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Exit_reason other than KVM_EXIT_IO: %u (%s)\n", run->exit_reason, exit_reason_str(run->exit_reason)); - get_ucall(vm, VCPU_ID, &uc); + get_ucall(vcpu->vm, vcpu->id, &uc); TEST_ASSERT(uc.cmd =3D=3D UCALL_SYNC, "Received ucall other than UCALL_SYNC: %lu", uc.cmd); return uc.args[1]; @@ -197,13 +196,13 @@ static uint64_t run_vm_to_sync(struct kvm_vm *vm) * a sanity check and then GUEST_SYNC(success). In the case of failure, * the behavior of the guest on resumption is undefined. */ -static bool sanity_check_pmu(struct kvm_vm *vm) +static bool sanity_check_pmu(struct kvm_vcpu *vcpu) { bool success; =20 - vm_install_exception_handler(vm, GP_VECTOR, guest_gp_handler); - success =3D run_vm_to_sync(vm); - vm_install_exception_handler(vm, GP_VECTOR, NULL); + vm_install_exception_handler(vcpu->vm, GP_VECTOR, guest_gp_handler); + success =3D run_vcpu_to_sync(vcpu); + vm_install_exception_handler(vcpu->vm, GP_VECTOR, NULL); =20 return success; } @@ -254,9 +253,9 @@ static struct kvm_pmu_event_filter *remove_event(struct= kvm_pmu_event_filter *f, return f; } =20 -static void test_without_filter(struct kvm_vm *vm) +static void test_without_filter(struct kvm_vcpu *vcpu) { - uint64_t count =3D run_vm_to_sync(vm); + uint64_t count =3D run_vcpu_to_sync(vcpu); =20 if (count !=3D NUM_BRANCHES) pr_info("%s: Branch instructions retired =3D %lu (expected %u)\n", @@ -264,17 +263,17 @@ static void test_without_filter(struct kvm_vm *vm) TEST_ASSERT(count, "Allowed PMU event is not counting"); } =20 -static uint64_t test_with_filter(struct kvm_vm *vm, +static uint64_t test_with_filter(struct kvm_vcpu *vcpu, struct kvm_pmu_event_filter *f) { - vm_ioctl(vm, KVM_SET_PMU_EVENT_FILTER, (void *)f); - return run_vm_to_sync(vm); + vm_ioctl(vcpu->vm, KVM_SET_PMU_EVENT_FILTER, (void *)f); + return run_vcpu_to_sync(vcpu); } =20 -static void test_member_deny_list(struct kvm_vm *vm) +static void test_member_deny_list(struct kvm_vcpu *vcpu) { struct kvm_pmu_event_filter *f =3D event_filter(KVM_PMU_EVENT_DENY); - uint64_t count =3D test_with_filter(vm, f); + uint64_t count =3D test_with_filter(vcpu, f); =20 free(f); if (count) @@ -283,10 +282,10 @@ static void test_member_deny_list(struct kvm_vm *vm) TEST_ASSERT(!count, "Disallowed PMU Event is counting"); } =20 -static void test_member_allow_list(struct kvm_vm *vm) +static void test_member_allow_list(struct kvm_vcpu *vcpu) { struct kvm_pmu_event_filter *f =3D event_filter(KVM_PMU_EVENT_ALLOW); - uint64_t count =3D test_with_filter(vm, f); + uint64_t count =3D test_with_filter(vcpu, f); =20 free(f); if (count !=3D NUM_BRANCHES) @@ -295,14 +294,14 @@ static void test_member_allow_list(struct kvm_vm *vm) TEST_ASSERT(count, "Allowed PMU event is not counting"); } =20 -static void test_not_member_deny_list(struct kvm_vm *vm) +static void test_not_member_deny_list(struct kvm_vcpu *vcpu) { struct kvm_pmu_event_filter *f =3D event_filter(KVM_PMU_EVENT_DENY); uint64_t count; =20 remove_event(f, INTEL_BR_RETIRED); remove_event(f, AMD_ZEN_BR_RETIRED); - count =3D test_with_filter(vm, f); + count =3D test_with_filter(vcpu, f); free(f); if (count !=3D NUM_BRANCHES) pr_info("%s: Branch instructions retired =3D %lu (expected %u)\n", @@ -310,14 +309,14 @@ static void test_not_member_deny_list(struct kvm_vm *= vm) TEST_ASSERT(count, "Allowed PMU event is not counting"); } =20 -static void test_not_member_allow_list(struct kvm_vm *vm) +static void test_not_member_allow_list(struct kvm_vcpu *vcpu) { struct kvm_pmu_event_filter *f =3D event_filter(KVM_PMU_EVENT_ALLOW); uint64_t count; =20 remove_event(f, INTEL_BR_RETIRED); remove_event(f, AMD_ZEN_BR_RETIRED); - count =3D test_with_filter(vm, f); + count =3D test_with_filter(vcpu, f); free(f); if (count) pr_info("%s: Branch instructions retired =3D %lu (expected 0)\n", @@ -390,6 +389,7 @@ static bool use_amd_pmu(void) int main(int argc, char *argv[]) { void (*guest_code)(void) =3D NULL; + struct kvm_vcpu *vcpu; struct kvm_vm *vm; int r; =20 @@ -412,21 +412,21 @@ int main(int argc, char *argv[]) exit(KSFT_SKIP); } =20 - vm =3D vm_create_default(VCPU_ID, 0, guest_code); + vm =3D vm_create_with_one_vcpu(&vcpu, guest_code); =20 vm_init_descriptor_tables(vm); - vcpu_init_descriptor_tables(vm, VCPU_ID); + vcpu_init_descriptor_tables(vm, vcpu->id); =20 - if (!sanity_check_pmu(vm)) { + if (!sanity_check_pmu(vcpu)) { print_skip("Guest PMU is not functional"); exit(KSFT_SKIP); } =20 - test_without_filter(vm); - test_member_deny_list(vm); - test_member_allow_list(vm); - test_not_member_deny_list(vm); - test_not_member_allow_list(vm); + test_without_filter(vcpu); + test_member_deny_list(vcpu); + test_member_allow_list(vcpu); + test_not_member_deny_list(vcpu); + test_not_member_allow_list(vcpu); =20 kvm_vm_free(vm); =20 --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 897A6C433F5 for ; Fri, 11 Mar 2022 05:55:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346810AbiCKF4S (ORCPT ); Fri, 11 Mar 2022 00:56:18 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57896 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346699AbiCKFxQ (ORCPT ); Fri, 11 Mar 2022 00:53:16 -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 71359ECB30 for ; Thu, 10 Mar 2022 21:52:14 -0800 (PST) Received: by mail-pj1-x104a.google.com with SMTP id cl16-20020a17090af69000b001beea61ada4so4702178pjb.5 for ; Thu, 10 Mar 2022 21:52:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=BXhZ32UeZA2N9sp+HsqAw39sp2L4IX0xoHyzHMKPW7w=; b=eibMyiMXeqZdSvzj+yxzBb0DhJhXftgt/wmm3arKwyi1tKVLXWQiohdisujNn++QKU Ct6XcnQP9iBSXd9HmifA04IbwykwbJyeMsRzSh5F6uZYgR/6NM2ESUncupMM9aCL3hz8 k+D/qS/FrnAK+e+A0h5Lxz7ns0fEUhPQpTh6b0yvwTwHmpOysCwp8w2ifnYmQnX52XJu 6XuxYzIxjBGeHnZpf6OIkuPa6bs4/KUJvJvzCZ/4KiIcmSpqYHC/D2IeuopnEY8vWMxe YDgqWJxys9RqhvjNAX2JT75k81C66NkAX2dVcww5jafV49DSVUJVAsjqvvoyLJUyeMGo VDkg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=BXhZ32UeZA2N9sp+HsqAw39sp2L4IX0xoHyzHMKPW7w=; b=cuATIgCmea1cbvevIYPcu5nWvwp1E53DkEuaqnENg0zW5xwKxcsNj0mdVNYvCl+Ezw +N5veCx+kQPnkxhniASwID8ajixcsE0CC9pINzfsKJD3qBeY0XqG7L1Y4F2m5fuEX6jx Qcv1q6zn+07ixmrZ5IKEKSiWcxHxB3uO2E0MsjOTSDUPSudDSbXJI/x3Sbe6WO8EngWR v5MW3m7rhmH2uXBFc2jcp7WhEnDL2Bz/ibrfNxNFD1/3MYIILfpvJuC3YYWZQ7HwwWM3 DTCM1SKSRCFMw9znn3AiDhaijqA47zJRaDXIcRH/QJQsR3dxNcOhaAsPATYVq1wsjVyR zEOQ== X-Gm-Message-State: AOAM530i9PQykx7wh698IGm2t/GRjqeVyiMpjnZI7qxP0xiwmZrbEP7N uw9CKZTr2jaut2HpLskXY6RwbJmVSwrdNf8I9tBTUp1krkGh2hB+OuffSspDiYFdSFnGzQk+U1J CSq4zEM0HUiNjyjXg4bLmsD9NkX8LO8Tx6ur3BG3rf5nwyUhIkE1X6aPWWT84mfSqSP8Vlg== X-Google-Smtp-Source: ABdhPJwzHwH0cO/li+QfVKcvwAUCDjzet/Mfy3LUSmTzawys+63ZWY7GdHWPDQ7t6jQtjDwGzWJoQqu8fMU= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:902:c407:b0:152:fd74:8a5 with SMTP id k7-20020a170902c40700b00152fd7408a5mr8756864plk.1.1646977933779; Thu, 10 Mar 2022 21:52:13 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:51 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-41-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 040/105] KVM: selftests: Convert smm_test away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- tools/testing/selftests/kvm/x86_64/smm_test.c | 37 +++++++++---------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/smm_test.c b/tools/testing/= selftests/kvm/x86_64/smm_test.c index 9757c45575ff..dfb2e92e8e12 100644 --- a/tools/testing/selftests/kvm/x86_64/smm_test.c +++ b/tools/testing/selftests/kvm/x86_64/smm_test.c @@ -19,8 +19,6 @@ #include "vmx.h" #include "svm_util.h" =20 -#define VCPU_ID 1 - #define PAGE_SIZE 4096 =20 #define SMRAM_SIZE 65536 @@ -118,22 +116,23 @@ static void guest_code(void *arg) sync_with_host(DONE); } =20 -void inject_smi(struct kvm_vm *vm) +void inject_smi(struct kvm_vcpu *vcpu) { struct kvm_vcpu_events events; =20 - vcpu_events_get(vm, VCPU_ID, &events); + vcpu_events_get(vcpu->vm, vcpu->id, &events); =20 events.smi.pending =3D 1; events.flags |=3D KVM_VCPUEVENT_VALID_SMM; =20 - vcpu_events_set(vm, VCPU_ID, &events); + vcpu_events_set(vcpu->vm, vcpu->id, &events); } =20 int main(int argc, char *argv[]) { vm_vaddr_t nested_gva =3D 0; =20 + struct kvm_vcpu *vcpu; struct kvm_regs regs; struct kvm_vm *vm; struct kvm_run *run; @@ -141,9 +140,9 @@ int main(int argc, char *argv[]) int stage, stage_reported; =20 /* Create VM */ - vm =3D vm_create_default(VCPU_ID, 0, guest_code); + vm =3D vm_create_with_one_vcpu(&vcpu, guest_code); =20 - run =3D vcpu_state(vm, VCPU_ID); + run =3D vcpu->run; =20 vm_userspace_mem_region_add(vm, VM_MEM_SRC_ANONYMOUS, SMRAM_GPA, SMRAM_MEMSLOT, SMRAM_PAGES, 0); @@ -154,7 +153,7 @@ int main(int argc, char *argv[]) memcpy(addr_gpa2hva(vm, SMRAM_GPA) + 0x8000, smi_handler, sizeof(smi_handler)); =20 - vcpu_set_msr(vm, VCPU_ID, MSR_IA32_SMBASE, SMRAM_GPA); + vcpu_set_msr(vm, vcpu->id, MSR_IA32_SMBASE, SMRAM_GPA); =20 if (kvm_check_cap(KVM_CAP_NESTED_STATE)) { if (nested_svm_supported()) @@ -166,17 +165,17 @@ int main(int argc, char *argv[]) if (!nested_gva) pr_info("will skip SMM test with VMX enabled\n"); =20 - vcpu_args_set(vm, VCPU_ID, 1, nested_gva); + vcpu_args_set(vm, vcpu->id, 1, nested_gva); =20 for (stage =3D 1;; stage++) { - _vcpu_run(vm, VCPU_ID); + vcpu_run(vm, vcpu->id); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Stage %d: unexpected exit reason: %u (%s),\n", stage, run->exit_reason, exit_reason_str(run->exit_reason)); =20 memset(®s, 0, sizeof(regs)); - vcpu_regs_get(vm, VCPU_ID, ®s); + vcpu_regs_get(vm, vcpu->id, ®s); =20 stage_reported =3D regs.rax & 0xff; =20 @@ -193,7 +192,7 @@ int main(int argc, char *argv[]) * return from it. Do not perform save/restore while in SMM yet. */ if (stage =3D=3D 8) { - inject_smi(vm); + inject_smi(vcpu); continue; } =20 @@ -202,15 +201,15 @@ int main(int argc, char *argv[]) * during L2 execution. */ if (stage =3D=3D 10) - inject_smi(vm); + inject_smi(vcpu); =20 - state =3D vcpu_save_state(vm, VCPU_ID); + state =3D vcpu_save_state(vm, vcpu->id); kvm_vm_release(vm); - kvm_vm_restart(vm); - vm_vcpu_add(vm, VCPU_ID); - vcpu_set_cpuid(vm, VCPU_ID, kvm_get_supported_cpuid()); - vcpu_load_state(vm, VCPU_ID, state); - run =3D vcpu_state(vm, VCPU_ID); + + vcpu =3D vm_recreate_with_one_vcpu(vm); + vcpu_set_cpuid(vm, vcpu->id, kvm_get_supported_cpuid()); + vcpu_load_state(vm, vcpu->id, state); + run =3D vcpu->run; kvm_x86_state_cleanup(state); } =20 --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 8B3ECC433EF for ; Fri, 11 Mar 2022 05:55:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346826AbiCKF4a (ORCPT ); Fri, 11 Mar 2022 00:56:30 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57996 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346705AbiCKFxS (ORCPT ); Fri, 11 Mar 2022 00:53:18 -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 CD28DECB30 for ; Thu, 10 Mar 2022 21:52:15 -0800 (PST) Received: by mail-pl1-x64a.google.com with SMTP id j1-20020a170903028100b0014b1f9e0068so4004436plr.8 for ; Thu, 10 Mar 2022 21:52:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=nKY1NzHsWE0nPtq6NzlHkZcJxY2/2SkdN5bv0Qzxtt0=; b=MIOSM+P4kYdacEJPzB057gOAFVlDlVwTPFsoMbSV0srTJYPcS3kFivvRUFri5iog9W l2PHLtP5L1YerP4vciygSjXp7Ww47pghklZGZLEhmz9mLG58t3BiJfQzT7AbefdceXke YVemMe+1QuE5HOBFZBxuk9Uq+0ZlEKFR3TiS/+ROxtS/BjhNJFEqzZYiJ2bAQ5/W0r63 aeijpbCUtS1Y488VSCdueNkGymwccB7wakWbOvOjJrgcx3vn7kJyP/NgE3rN170BIMjd bkHNLko02DxhJAoZdgMoeD92l9b5ISlk37kbnSCsaFsDo75XgeAtC24LMItlj3/EZP07 hkkw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=nKY1NzHsWE0nPtq6NzlHkZcJxY2/2SkdN5bv0Qzxtt0=; b=TIDgYfwUdfm/ZUAITKA4TeclLwKj4nU0PQmqTaGC6/0t+8UGKooqSkPC3P6BJC9jar NBAHWoVr7Adm6/U2iJnLSv1SWTG2tFO0M8qqbzW7zHZBHvNGgoTnEfm63zcEP7wSPDyj XXQNswsxTAJcQ/Gozc7t4nFzWtFmt/CS4dDplMBWSXWQaIJtMggz2zm91ExKn4UE2UGA VRQFeMt304ZsmElV8jKzMXYzdhA1sfSTaL5vmYKoGDx5ccx6d2VFAXaRZozZL6DBHo3X DUfR5kPXTdJ0wUdCzWvVoB8E5yk+6BankKyX5H+LuOAysgjnOGZd5Qv+F+5/ku8gGez+ gRzQ== X-Gm-Message-State: AOAM532XZu4lfQ7Xh8jbsLD4BmQav++0EEXbswkXg7LoEeoKnGcnHuvZ rSYowyYUrkK1wODXFtlZnuiDs0sdsEzHKSWOVXcXGmVWq0iq8W6nAAcQ20fQdREWdLk769wQRof sWwQPlYSM35Og9Dzsj+82EaxIOKuBto7hZFYYVeH2I8VsuJPqybReqPKlAsfb1Au3XT6rmQ== X-Google-Smtp-Source: ABdhPJxQEkoH+pyuGe2G9eSTbcti9GGr1+HYCZ09I7QB9VS1hVu+Qitazy19TehG5UTzEoevi8+DBKaiMHQ= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:90b:1e4f:b0:1bf:88d1:d97f with SMTP id pi15-20020a17090b1e4f00b001bf88d1d97fmr9119461pjb.150.1646977935191; Thu, 10 Mar 2022 21:52:15 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:52 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-42-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 041/105] KVM: selftests: Convert state_test away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../testing/selftests/kvm/x86_64/state_test.c | 29 +++++++++---------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/state_test.c b/tools/testin= g/selftests/kvm/x86_64/state_test.c index 41f7faaef2ac..b7869efad22a 100644 --- a/tools/testing/selftests/kvm/x86_64/state_test.c +++ b/tools/testing/selftests/kvm/x86_64/state_test.c @@ -20,7 +20,6 @@ #include "vmx.h" #include "svm_util.h" =20 -#define VCPU_ID 5 #define L2_GUEST_STACK_SIZE 256 =20 void svm_l2_guest_code(void) @@ -157,6 +156,7 @@ int main(int argc, char *argv[]) vm_vaddr_t nested_gva =3D 0; =20 struct kvm_regs regs1, regs2; + struct kvm_vcpu *vcpu; struct kvm_vm *vm; struct kvm_run *run; struct kvm_x86_state *state; @@ -164,10 +164,10 @@ int main(int argc, char *argv[]) int stage; =20 /* Create VM */ - vm =3D vm_create_default(VCPU_ID, 0, guest_code); - run =3D vcpu_state(vm, VCPU_ID); + vm =3D vm_create_with_one_vcpu(&vcpu, guest_code); + run =3D vcpu->run; =20 - vcpu_regs_get(vm, VCPU_ID, ®s1); + vcpu_regs_get(vm, vcpu->id, ®s1); =20 if (kvm_check_cap(KVM_CAP_NESTED_STATE)) { if (nested_svm_supported()) @@ -179,16 +179,16 @@ int main(int argc, char *argv[]) if (!nested_gva) pr_info("will skip nested state checks\n"); =20 - vcpu_args_set(vm, VCPU_ID, 1, nested_gva); + vcpu_args_set(vm, vcpu->id, 1, nested_gva); =20 for (stage =3D 1;; stage++) { - _vcpu_run(vm, VCPU_ID); + vcpu_run(vm, vcpu->id); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Stage %d: unexpected exit reason: %u (%s),\n", stage, run->exit_reason, exit_reason_str(run->exit_reason)); =20 - switch (get_ucall(vm, VCPU_ID, &uc)) { + switch (get_ucall(vm, vcpu->id, &uc)) { case UCALL_ABORT: TEST_FAIL("%s at %s:%ld", (const char *)uc.args[0], __FILE__, uc.args[1]); @@ -206,22 +206,21 @@ int main(int argc, char *argv[]) uc.args[1] =3D=3D stage, "Stage %d: Unexpected register values vmex= it, got %lx", stage, (ulong)uc.args[1]); =20 - state =3D vcpu_save_state(vm, VCPU_ID); + state =3D vcpu_save_state(vm, vcpu->id); memset(®s1, 0, sizeof(regs1)); - vcpu_regs_get(vm, VCPU_ID, ®s1); + vcpu_regs_get(vm, vcpu->id, ®s1); =20 kvm_vm_release(vm); =20 /* Restore state in a new VM. */ - kvm_vm_restart(vm); - vm_vcpu_add(vm, VCPU_ID); - vcpu_set_cpuid(vm, VCPU_ID, kvm_get_supported_cpuid()); - vcpu_load_state(vm, VCPU_ID, state); - run =3D vcpu_state(vm, VCPU_ID); + vcpu =3D vm_recreate_with_one_vcpu(vm); + vcpu_set_cpuid(vm, vcpu->id, kvm_get_supported_cpuid()); + vcpu_load_state(vm, vcpu->id, state); + run =3D vcpu->run; kvm_x86_state_cleanup(state); =20 memset(®s2, 0, sizeof(regs2)); - vcpu_regs_get(vm, VCPU_ID, ®s2); + vcpu_regs_get(vm, vcpu->id, ®s2); TEST_ASSERT(!memcmp(®s1, ®s2, sizeof(regs2)), "Unexpected register values after vcpu_load_state; rdi: %lx rsi: %l= x", (ulong) regs2.rdi, (ulong) regs2.rsi); --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 31E5AC433EF for ; Fri, 11 Mar 2022 05:55:36 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346833AbiCKF4f (ORCPT ); Fri, 11 Mar 2022 00:56:35 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58130 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S244465AbiCKFxT (ORCPT ); Fri, 11 Mar 2022 00:53:19 -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 86575ECB28 for ; Thu, 10 Mar 2022 21:52:17 -0800 (PST) Received: by mail-pj1-x104a.google.com with SMTP id t10-20020a17090a5d8a00b001bed9556134so7267449pji.5 for ; Thu, 10 Mar 2022 21:52:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=jXKfJEbRo4wgcpXR+nudnPrt2By/ukg4awgalUHtnrg=; b=bhWYddmf9OWMqOrfl7UD7PpBkwu9nCh+4kkkRvxNqaFwj7ccUqTLvNd6080ljVYYkP 8V/f6uNYLp5EwkksvE5k7zeVjrbhmt2VzryqFQU6akcJ5fUVttQMOEiMRvr6xNVMGk7k zj/Lo3ehzfgCAylBsw8Z1fuQ/belomp2FcChByevUYiaZ5w3hBFg0rxX2mwLvOQiQF0u comAmm5xsonBb/Fz9F/2QRDdGW48ItwRAeqhORQtJIXyATbJP24GvLuq7CddeOEzSJQE EKlVZTAlFK9etSfx/L8HdDY7wYIk18Nm9LXIAVOBdGhy5HobyfLP/kFd/RLzvPFaH8mR +v2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=jXKfJEbRo4wgcpXR+nudnPrt2By/ukg4awgalUHtnrg=; b=2WNBr6sygdoFP1PArERwzyqGbTlx6t9AlecKLmlPWj1gmUasYCaObTLwvdJGQHm+lu uIZ3lKETakDlDg98sB1wK64/0UqqVqwEOkyODXa9+WlcZfiZa9lU0IdP+qNK71GtBN7n M7IKm0ocohOQpIHZR/SKKn8pl5++AvOm+WCH5OIB5R3WXdphegT47xWHw14l5krGszat fkdrxLZBbY+OJpKCsbWe/33W93bSqbKrT4SQ+QCLAkCiAk1B6SKJjZ4EaVPJSVzNbepz 2y/WjHgVDyyWh8QlOyhDjwBcMuSdbadLAWtUDI4OfhdfQC9WiVM47xRlfKAYTYwbBgl1 jLZA== X-Gm-Message-State: AOAM532SJnHkIe7Yt+SKcYbgVrNLI+N+ruUWYHcWC7bnJxIJLNH9Oy3L +wI6a+T+EB22DwknF74nlIaSIfU4lNgRpi8Klgenmv/KD7Nv1qcS/4M8uydRRaVwiUrTytQAQy9 OlHhEVewPvwWZGCcKAWac9aDij8nufdmUp1CjfgsXxQLk8mMBI+tkfMM156ApwZH2Tbb7Fw== X-Google-Smtp-Source: ABdhPJwuo+Da6mL6saEdXjwnwLZBMSjMWdbMlTqygZ1zEQVREvbqR1KJ9h+YLNWDujFzTpg9uQV5T97L4sA= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:902:b906:b0:14f:76a0:ad48 with SMTP id bf6-20020a170902b90600b0014f76a0ad48mr8569396plb.79.1646977936875; Thu, 10 Mar 2022 21:52:16 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:53 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-43-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 042/105] KVM: selftests: Convert svm_int_ctl_test away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/x86_64/svm_int_ctl_test.c | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/svm_int_ctl_test.c b/tools/= testing/selftests/kvm/x86_64/svm_int_ctl_test.c index 30a81038df46..8e90e463895a 100644 --- a/tools/testing/selftests/kvm/x86_64/svm_int_ctl_test.c +++ b/tools/testing/selftests/kvm/x86_64/svm_int_ctl_test.c @@ -13,10 +13,6 @@ #include "svm_util.h" #include "apic.h" =20 -#define VCPU_ID 0 - -static struct kvm_vm *vm; - bool vintr_irq_called; bool intr_irq_called; =20 @@ -88,31 +84,34 @@ static void l1_guest_code(struct svm_test_data *svm) =20 int main(int argc, char *argv[]) { + struct kvm_vcpu *vcpu; + struct kvm_run *run; vm_vaddr_t svm_gva; + struct kvm_vm *vm; + struct ucall uc; =20 nested_svm_check_supported(); =20 - vm =3D vm_create_default(VCPU_ID, 0, (void *) l1_guest_code); + vm =3D vm_create_with_one_vcpu(&vcpu, l1_guest_code); =20 vm_init_descriptor_tables(vm); - vcpu_init_descriptor_tables(vm, VCPU_ID); + vcpu_init_descriptor_tables(vm, vcpu->id); =20 vm_install_exception_handler(vm, VINTR_IRQ_NUMBER, vintr_irq_handler); vm_install_exception_handler(vm, INTR_IRQ_NUMBER, intr_irq_handler); =20 vcpu_alloc_svm(vm, &svm_gva); - vcpu_args_set(vm, VCPU_ID, 1, svm_gva); + vcpu_args_set(vm, vcpu->id, 1, svm_gva); =20 - struct kvm_run *run =3D vcpu_state(vm, VCPU_ID); - struct ucall uc; + run =3D vcpu->run; =20 - vcpu_run(vm, VCPU_ID); + vcpu_run(vm, vcpu->id); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Got exit_reason other than KVM_EXIT_IO: %u (%s)\n", run->exit_reason, exit_reason_str(run->exit_reason)); =20 - switch (get_ucall(vm, VCPU_ID, &uc)) { + switch (get_ucall(vm, vcpu->id, &uc)) { case UCALL_ABORT: TEST_FAIL("%s", (const char *)uc.args[0]); break; --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 76118C433EF for ; Fri, 11 Mar 2022 05:55:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239736AbiCKF4m (ORCPT ); Fri, 11 Mar 2022 00:56:42 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58240 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239358AbiCKFxV (ORCPT ); Fri, 11 Mar 2022 00:53:21 -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 06B89ED95A for ; Thu, 10 Mar 2022 21:52:19 -0800 (PST) Received: by mail-pl1-x649.google.com with SMTP id q8-20020a170902f78800b00151cc484688so3988791pln.20 for ; Thu, 10 Mar 2022 21:52:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=7GiJxySC4T+Pob+Yt72qF7V+PSmyAN911vam4VpEA3c=; b=IuMEt9lpw4IXWmfVeXUh8+ZwxqN74W+pwZCdIULUm9DuF6Sjc3QMwizfXY5xYuRr0R Ek1Xf6IW3rK+wT44xksdnyd2KX3zSCRdZmwkwSLcsEVdkQp1R48Of58oJ/VphB42mxoy +y2gR1imGs14NdwvCUxwLCTgbk5tX6GOeJbdKZ1bs/LSoosehdU/d3BMNULasJNX9ah9 jICLqOnVmAi8yw355rMH9m5GaGt0zFzBdJ4Zg6+KddZ+4LO5F38wdHUCVNwLTap1XjJt ZN344Udf4FdbJss+NYF1WcH5Gsnqobmj1IrMjqTNW1v6CTWxsp2HZ78HHE/czFklOpwA rNeQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=7GiJxySC4T+Pob+Yt72qF7V+PSmyAN911vam4VpEA3c=; b=67t7OgKSPManxySkQkIMpNbG1cACvKNxWyZ/Z9LUoZZfo09DCDlFqnifMZjO6sPRue GTyw3qcubnYcHIWK4yfZglYAsveDKAsDTtKzHkZVx3B65m9p+xK0GilxT3Sn/fUtfLGG EpUPqirL2pEwedRZT1AL/2yvOjuHwn/0/2HiAPvEpbwtmdS+K+DsASAeeFcQWZhA2cdS xdSaFwU9omRyLyiwZKHg7Hag1OeXn72V/zRzAu2XUx7cTy+SQ4K/soAaLaWSQ3KDRIjm fK9GwOd6F7LqLgy5KqVZlldSOzKWb5BuvzQYSVAHiIcGRwZKH0D49aJUXYKteVbal7l4 i/kw== X-Gm-Message-State: AOAM531kXyDt99v8AkMl982uIOTSNKLr9xBGQbU9tfj8BzncPe3oWoXx y5w3UjrrUJTa/MHSnzkq1vcGLFik/cxsh1Uea9P9Z/GLxmgdbjVRLTS0Oga9yQspDG5LnCdoQbS Ep6P7pXSnM+nSCSukW7i6iohIJ7ur+TQqgS3Lskc3ewCjgQd70f0+0lSRDIuMHww+26MTZw== X-Google-Smtp-Source: ABdhPJwUaU+X48QC7iLkm0/3LvEchD2X4RhzgEZfVrlpRFrTqs08s5maywb6S6xmpnFEkJcTsy6XZmUbJGE= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a05:6a00:885:b0:4f4:17d8:be31 with SMTP id q5-20020a056a00088500b004f417d8be31mr8649990pfj.57.1646977938440; Thu, 10 Mar 2022 21:52:18 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:54 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-44-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 043/105] KVM: selftests: Convert svm_vmcall_test away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/x86_64/svm_vmcall_test.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/svm_vmcall_test.c b/tools/t= esting/selftests/kvm/x86_64/svm_vmcall_test.c index be2ca157485b..15e389a7cd31 100644 --- a/tools/testing/selftests/kvm/x86_64/svm_vmcall_test.c +++ b/tools/testing/selftests/kvm/x86_64/svm_vmcall_test.c @@ -12,10 +12,6 @@ #include "processor.h" #include "svm_util.h" =20 -#define VCPU_ID 5 - -static struct kvm_vm *vm; - static void l2_guest_code(struct svm_test_data *svm) { __asm__ __volatile__("vmcall"); @@ -39,26 +35,28 @@ static void l1_guest_code(struct svm_test_data *svm) =20 int main(int argc, char *argv[]) { + struct kvm_vcpu *vcpu; vm_vaddr_t svm_gva; + struct kvm_vm *vm; =20 nested_svm_check_supported(); =20 - vm =3D vm_create_default(VCPU_ID, 0, (void *) l1_guest_code); + vm =3D vm_create_with_one_vcpu(&vcpu, l1_guest_code); =20 vcpu_alloc_svm(vm, &svm_gva); - vcpu_args_set(vm, VCPU_ID, 1, svm_gva); + vcpu_args_set(vm, vcpu->id, 1, svm_gva); =20 for (;;) { - volatile struct kvm_run *run =3D vcpu_state(vm, VCPU_ID); + volatile struct kvm_run *run =3D vcpu->run; struct ucall uc; =20 - vcpu_run(vm, VCPU_ID); + vcpu_run(vm, vcpu->id); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Got exit_reason other than KVM_EXIT_IO: %u (%s)\n", run->exit_reason, exit_reason_str(run->exit_reason)); =20 - switch (get_ucall(vm, VCPU_ID, &uc)) { + switch (get_ucall(vm, vcpu->id, &uc)) { case UCALL_ABORT: TEST_FAIL("%s", (const char *)uc.args[0]); /* NOT REACHED */ --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 66418C433F5 for ; Fri, 11 Mar 2022 05:55:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346865AbiCKF4q (ORCPT ); Fri, 11 Mar 2022 00:56:46 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58338 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346582AbiCKFxX (ORCPT ); Fri, 11 Mar 2022 00:53:23 -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 ADF6AED95A for ; Thu, 10 Mar 2022 21:52:20 -0800 (PST) Received: by mail-pf1-x449.google.com with SMTP id w68-20020a62dd47000000b004f6aa5e4824so4618974pff.4 for ; Thu, 10 Mar 2022 21:52:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=igKDeEiD7Ubl4DfKdnpJFWKIeV0YPSRN96cAhPxa8YI=; b=eBofnVJSeVtonunwpBIziTu6BYKajGn/TU9mb3wSHN4IxqeEBbo9xHRQY5+c5M3QLG yufYAy0wD/Ky1McsyN20qSSVbJoaOCkDXThAfgKJt0ss93QX8rbgMwg3PtFUnA052vss YNJGgbzecg6uFb7pDHpG8yLifDNbcgm+/eZ3H2Kdk0x2aorAB94FLyDlR7JJIw4toXbH yyjE1SO+yV7WIJ7OayJRANrIwiuyo4kGqSkFTT87SG8jk1A1yDORmGADv15LrxmYvnVp R1njiw7+rCommYYZP9LkyreaLUZ54A8Aaq9AxpRvzzy147GRh3+fW1rIbQTSeyGCIbw3 n82g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=igKDeEiD7Ubl4DfKdnpJFWKIeV0YPSRN96cAhPxa8YI=; b=tpktPOFn3c2sbXoR46kYFKlRFMRCnZEyV7Hayn+ldN5GzyuMk7g6eY5//p5JuU/obp TB5s5V2WabTragri5lnCMuNmJiTtx73mW9LQumKANCt2vX77I33hFV3gHXwkexKwiwu6 2G3TrbPGB2+vMaaCu8Ip7Is/exdy3D+0PWxi4heI1JIYu+754C/PtmI7rB9tgM+f43aF CijZUg7fZCrviiiRPbDA2QfcI9y59qAqcNzO3FgnueXhrQ0Kjvh0XKVyHf9/7PbdZUtM oiii0Wl+WXUUf1MZoMugnGiEl++Dt2IVvVgCv2Bdbue1GrVpriEHna9Tzh+Hs65HdP42 tGYA== X-Gm-Message-State: AOAM530vz5tH2laz3MyV0kaB0xeWPKkgLbhDDTdSt3LpDEI3LzIrYJNZ 1kjjU41P6hRM4GcP+mPyNNqcsLz9YgJZg7Ea+qyVNLmlFu4t0Qj98Z3uK/yQNBXmX3Mdj1Di1JF gnbtMxoqDLhb1pHCYVkZkoQAZKfU4v15GqbYElQK5k8yKcDJpg+Acx7DSZ8Kqa3+FqKkgCQ== X-Google-Smtp-Source: ABdhPJw1HXAlJIwbOe6tO32nrbqkdey8Y7QaZJMuLUK0YIqaQHIzkQwVvqVc5RhDLhzj6NDNbvl8YfIy/jc= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:902:ef52:b0:151:84fe:bccb with SMTP id e18-20020a170902ef5200b0015184febccbmr8900097plx.9.1646977940135; Thu, 10 Mar 2022 21:52:20 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:55 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-45-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 044/105] KVM: selftests: Convert sync_regs_test away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/x86_64/sync_regs_test.c | 52 +++++++++---------- 1 file changed, 25 insertions(+), 27 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/sync_regs_test.c b/tools/te= sting/selftests/kvm/x86_64/sync_regs_test.c index fc03a150278d..c971706b49f5 100644 --- a/tools/testing/selftests/kvm/x86_64/sync_regs_test.c +++ b/tools/testing/selftests/kvm/x86_64/sync_regs_test.c @@ -20,8 +20,6 @@ #include "kvm_util.h" #include "processor.h" =20 -#define VCPU_ID 5 - #define UCALL_PIO_PORT ((uint16_t)0x1000) =20 struct ucall uc_none =3D { @@ -84,6 +82,7 @@ static void compare_vcpu_events(struct kvm_vcpu_events *l= eft, =20 int main(int argc, char *argv[]) { + struct kvm_vcpu *vcpu; struct kvm_vm *vm; struct kvm_run *run; struct kvm_regs regs; @@ -104,57 +103,56 @@ int main(int argc, char *argv[]) exit(KSFT_SKIP); } =20 - /* Create VM */ - vm =3D vm_create_default(VCPU_ID, 0, guest_code); + vm =3D vm_create_with_one_vcpu(&vcpu, guest_code); =20 - run =3D vcpu_state(vm, VCPU_ID); + run =3D vcpu->run; =20 /* Request reading invalid register set from VCPU. */ run->kvm_valid_regs =3D INVALID_SYNC_FIELD; - rv =3D _vcpu_run(vm, VCPU_ID); + rv =3D _vcpu_run(vm, vcpu->id); TEST_ASSERT(rv < 0 && errno =3D=3D EINVAL, "Invalid kvm_valid_regs did not cause expected KVM_RUN error: %d\n", rv); - vcpu_state(vm, VCPU_ID)->kvm_valid_regs =3D 0; + run->kvm_valid_regs =3D 0; =20 run->kvm_valid_regs =3D INVALID_SYNC_FIELD | TEST_SYNC_FIELDS; - rv =3D _vcpu_run(vm, VCPU_ID); + rv =3D _vcpu_run(vm, vcpu->id); TEST_ASSERT(rv < 0 && errno =3D=3D EINVAL, "Invalid kvm_valid_regs did not cause expected KVM_RUN error: %d\n", rv); - vcpu_state(vm, VCPU_ID)->kvm_valid_regs =3D 0; + run->kvm_valid_regs =3D 0; =20 /* Request setting invalid register set into VCPU. */ run->kvm_dirty_regs =3D INVALID_SYNC_FIELD; - rv =3D _vcpu_run(vm, VCPU_ID); + rv =3D _vcpu_run(vm, vcpu->id); TEST_ASSERT(rv < 0 && errno =3D=3D EINVAL, "Invalid kvm_dirty_regs did not cause expected KVM_RUN error: %d\n", rv); - vcpu_state(vm, VCPU_ID)->kvm_dirty_regs =3D 0; + run->kvm_dirty_regs =3D 0; =20 run->kvm_dirty_regs =3D INVALID_SYNC_FIELD | TEST_SYNC_FIELDS; - rv =3D _vcpu_run(vm, VCPU_ID); + rv =3D _vcpu_run(vm, vcpu->id); TEST_ASSERT(rv < 0 && errno =3D=3D EINVAL, "Invalid kvm_dirty_regs did not cause expected KVM_RUN error: %d\n", rv); - vcpu_state(vm, VCPU_ID)->kvm_dirty_regs =3D 0; + run->kvm_dirty_regs =3D 0; =20 /* Request and verify all valid register sets. */ /* TODO: BUILD TIME CHECK: TEST_ASSERT(KVM_SYNC_X86_NUM_FIELDS !=3D 3); */ run->kvm_valid_regs =3D TEST_SYNC_FIELDS; - rv =3D _vcpu_run(vm, VCPU_ID); + rv =3D _vcpu_run(vm, vcpu->id); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Unexpected exit reason: %u (%s),\n", run->exit_reason, exit_reason_str(run->exit_reason)); =20 - vcpu_regs_get(vm, VCPU_ID, ®s); + vcpu_regs_get(vm, vcpu->id, ®s); compare_regs(®s, &run->s.regs.regs); =20 - vcpu_sregs_get(vm, VCPU_ID, &sregs); + vcpu_sregs_get(vm, vcpu->id, &sregs); compare_sregs(&sregs, &run->s.regs.sregs); =20 - vcpu_events_get(vm, VCPU_ID, &events); + vcpu_events_get(vm, vcpu->id, &events); compare_vcpu_events(&events, &run->s.regs.events); =20 /* Set and verify various register values. */ @@ -164,7 +162,7 @@ int main(int argc, char *argv[]) =20 run->kvm_valid_regs =3D TEST_SYNC_FIELDS; run->kvm_dirty_regs =3D KVM_SYNC_X86_REGS | KVM_SYNC_X86_SREGS; - rv =3D _vcpu_run(vm, VCPU_ID); + rv =3D _vcpu_run(vm, vcpu->id); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Unexpected exit reason: %u (%s),\n", run->exit_reason, @@ -176,13 +174,13 @@ int main(int argc, char *argv[]) "apic_base sync regs value incorrect 0x%llx.", run->s.regs.sregs.apic_base); =20 - vcpu_regs_get(vm, VCPU_ID, ®s); + vcpu_regs_get(vm, vcpu->id, ®s); compare_regs(®s, &run->s.regs.regs); =20 - vcpu_sregs_get(vm, VCPU_ID, &sregs); + vcpu_sregs_get(vm, vcpu->id, &sregs); compare_sregs(&sregs, &run->s.regs.sregs); =20 - vcpu_events_get(vm, VCPU_ID, &events); + vcpu_events_get(vm, vcpu->id, &events); compare_vcpu_events(&events, &run->s.regs.events); =20 /* Clear kvm_dirty_regs bits, verify new s.regs values are @@ -191,7 +189,7 @@ int main(int argc, char *argv[]) run->kvm_valid_regs =3D TEST_SYNC_FIELDS; run->kvm_dirty_regs =3D 0; run->s.regs.regs.rbx =3D 0xDEADBEEF; - rv =3D _vcpu_run(vm, VCPU_ID); + rv =3D _vcpu_run(vm, vcpu->id); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Unexpected exit reason: %u (%s),\n", run->exit_reason, @@ -208,8 +206,8 @@ int main(int argc, char *argv[]) run->kvm_dirty_regs =3D 0; run->s.regs.regs.rbx =3D 0xAAAA; regs.rbx =3D 0xBAC0; - vcpu_regs_set(vm, VCPU_ID, ®s); - rv =3D _vcpu_run(vm, VCPU_ID); + vcpu_regs_set(vm, vcpu->id, ®s); + rv =3D _vcpu_run(vm, vcpu->id); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Unexpected exit reason: %u (%s),\n", run->exit_reason, @@ -217,7 +215,7 @@ int main(int argc, char *argv[]) TEST_ASSERT(run->s.regs.regs.rbx =3D=3D 0xAAAA, "rbx sync regs value incorrect 0x%llx.", run->s.regs.regs.rbx); - vcpu_regs_get(vm, VCPU_ID, ®s); + vcpu_regs_get(vm, vcpu->id, ®s); TEST_ASSERT(regs.rbx =3D=3D 0xBAC0 + 1, "rbx guest value incorrect 0x%llx.", regs.rbx); @@ -229,7 +227,7 @@ int main(int argc, char *argv[]) run->kvm_valid_regs =3D 0; run->kvm_dirty_regs =3D TEST_SYNC_FIELDS; run->s.regs.regs.rbx =3D 0xBBBB; - rv =3D _vcpu_run(vm, VCPU_ID); + rv =3D _vcpu_run(vm, vcpu->id); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Unexpected exit reason: %u (%s),\n", run->exit_reason, @@ -237,7 +235,7 @@ int main(int argc, char *argv[]) TEST_ASSERT(run->s.regs.regs.rbx =3D=3D 0xBBBB, "rbx sync regs value incorrect 0x%llx.", run->s.regs.regs.rbx); - vcpu_regs_get(vm, VCPU_ID, ®s); + vcpu_regs_get(vm, vcpu->id, ®s); TEST_ASSERT(regs.rbx =3D=3D 0xBBBB + 1, "rbx guest value incorrect 0x%llx.", regs.rbx); --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 3F767C433F5 for ; Fri, 11 Mar 2022 05:55:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346913AbiCKF4y (ORCPT ); Fri, 11 Mar 2022 00:56:54 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58528 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346385AbiCKFx1 (ORCPT ); Fri, 11 Mar 2022 00:53: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 B2031F11AA for ; Thu, 10 Mar 2022 21:52:22 -0800 (PST) Received: by mail-pg1-x549.google.com with SMTP id 9-20020a630509000000b0037c8607d296so4213765pgf.22 for ; Thu, 10 Mar 2022 21:52:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=qNHxLuoAyv4DnFmFmSk7rckTIqCWdXG9wIHiYiVPFF8=; b=svN7FdfTZzjDmegUq4EAKPhLCe1UY+82AzltGqxG7LOdhTbNfVypJEo1q5HuuhsXZJ kZVAo35B5Ju/srfXtsIH4ao2c9uLhqcvrmVJB/JDdHEBQ92YMtYEItHnfnbfQLYuY7O2 oOasmx5EYjpbsFfRHUF8AbSQdKrwNu67CKHX6eTqgFHwCTvPfDMqeiZPWr9E1tDXb21p Ut1bvpl6/qEi5kZnh0LClNKySwNy/Nv4a5NWEnys1xkhGY2n9iCmZgsxEJqNUf4T48xB cT6Ueq1jmpM7X66fQUi8lxpd3MW3NppB1EI3NoxnY2xX67eEyv5S6k7SOdMl2XsKHtL/ AsxA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=qNHxLuoAyv4DnFmFmSk7rckTIqCWdXG9wIHiYiVPFF8=; b=hBBZfMQBe8FHxToBfnrciQlV/EVTssLSoKkqEs1Qc47RQvRCIz2ha0/gLiipYmi2Zz +FOH1wqcRDJhe3vYpW0Mm800E4P57bR4J0POfl7PBHMryEv8t16ihiw2zLSFBCh64fKq AeSMsC80ncL4sFpJrsuhVhsIRw2Rijb3JyScaqMEkHsmM+DJSU3QFhsewqpbMxW4wlDq /C4bxL9rAI9ZShc+2/iPIXP/reLpuD5uVwduQ0BRWeAOZHKmoyCB7LapNMm9jGJX1eR0 5/3l7tE7I7MIhlTm76Q5aQTnLvHBNRH5GHGVmdWWjgWDntHJ/9UCjOsag/8F11j83YCM gt3g== X-Gm-Message-State: AOAM530IlIMpkzBQsE/r8I2BJre4wVURhwAYPYoKFRmte6Km0hHqsHJ7 916aj++Oy6foDLcn/T5TmVeQhNmuiDeV2PrsXeRnaT1MNSSJ9fCPgkY5Gi7Ee8YaQZQ4+BpR7F4 BgSwNPwbJMX7tfJNdIK8FbBgdMcRLAvyO79jy/SZvr3OntIq0DWsDFCNDEUmcCT+DVJCF0w== X-Google-Smtp-Source: ABdhPJxGrx2+pbshWIZ3v4K9JdE2MynM19YE3vpbN1xfolqTNevcDNgqjUmDXN3wL59ejqw9nu1B+avi+/E= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:90b:1e10:b0:1bf:6c78:54a9 with SMTP id pg16-20020a17090b1e1000b001bf6c7854a9mr460700pjb.1.1646977941881; Thu, 10 Mar 2022 21:52:21 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:56 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-46-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 045/105] KVM: selftests: Convert hyperv_cpuid away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/x86_64/hyperv_cpuid.c | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/hyperv_cpuid.c b/tools/test= ing/selftests/kvm/x86_64/hyperv_cpuid.c index 896e1e7c1df7..d1a22ee98cf3 100644 --- a/tools/testing/selftests/kvm/x86_64/hyperv_cpuid.c +++ b/tools/testing/selftests/kvm/x86_64/hyperv_cpuid.c @@ -20,8 +20,6 @@ #include "processor.h" #include "vmx.h" =20 -#define VCPU_ID 0 - static void guest_code(void) { } @@ -115,25 +113,26 @@ static void test_hv_cpuid(struct kvm_cpuid2 *hv_cpuid= _entries, } } =20 -void test_hv_cpuid_e2big(struct kvm_vm *vm, bool system) +void test_hv_cpuid_e2big(struct kvm_vm *vm, struct kvm_vcpu *vcpu) { static struct kvm_cpuid2 cpuid =3D {.nent =3D 0}; int ret; =20 - if (!system) - ret =3D __vcpu_ioctl(vm, VCPU_ID, KVM_GET_SUPPORTED_HV_CPUID, &cpuid); + if (vcpu) + ret =3D __vcpu_ioctl(vm, vcpu->id, KVM_GET_SUPPORTED_HV_CPUID, &cpuid); else ret =3D __kvm_ioctl(vm_get_kvm_fd(vm), KVM_GET_SUPPORTED_HV_CPUID, &cpui= d); =20 TEST_ASSERT(ret =3D=3D -1 && errno =3D=3D E2BIG, "%s KVM_GET_SUPPORTED_HV_CPUID didn't fail with -E2BIG when" - " it should have: %d %d", system ? "KVM" : "vCPU", ret, errno); + " it should have: %d %d", !vcpu ? "KVM" : "vCPU", ret, errno); } =20 int main(int argc, char *argv[]) { struct kvm_vm *vm; struct kvm_cpuid2 *hv_cpuid_entries; + struct kvm_vcpu *vcpu; =20 /* Tell stdout not to buffer its content */ setbuf(stdout, NULL); @@ -143,12 +142,12 @@ int main(int argc, char *argv[]) exit(KSFT_SKIP); } =20 - vm =3D vm_create_default(VCPU_ID, 0, guest_code); + vm =3D vm_create_with_one_vcpu(&vcpu, guest_code); =20 /* Test vCPU ioctl version */ - test_hv_cpuid_e2big(vm, false); + test_hv_cpuid_e2big(vm, vcpu); =20 - hv_cpuid_entries =3D vcpu_get_supported_hv_cpuid(vm, VCPU_ID); + hv_cpuid_entries =3D vcpu_get_supported_hv_cpuid(vm, vcpu->id); test_hv_cpuid(hv_cpuid_entries, false); free(hv_cpuid_entries); =20 @@ -157,8 +156,8 @@ int main(int argc, char *argv[]) print_skip("Enlightened VMCS is unsupported"); goto do_sys; } - vcpu_enable_evmcs(vm, VCPU_ID); - hv_cpuid_entries =3D vcpu_get_supported_hv_cpuid(vm, VCPU_ID); + vcpu_enable_evmcs(vm, vcpu->id); + hv_cpuid_entries =3D vcpu_get_supported_hv_cpuid(vm, vcpu->id); test_hv_cpuid(hv_cpuid_entries, true); free(hv_cpuid_entries); =20 @@ -169,7 +168,7 @@ int main(int argc, char *argv[]) goto out; } =20 - test_hv_cpuid_e2big(vm, true); + test_hv_cpuid_e2big(vm, NULL); =20 hv_cpuid_entries =3D kvm_get_supported_hv_cpuid(); test_hv_cpuid(hv_cpuid_entries, nested_vmx_supported()); --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 A1CD2C433F5 for ; Fri, 11 Mar 2022 05:56:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237301AbiCKF5C (ORCPT ); Fri, 11 Mar 2022 00:57:02 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58538 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346606AbiCKFx1 (ORCPT ); Fri, 11 Mar 2022 00:53:27 -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 5E7A7F1EA7 for ; Thu, 10 Mar 2022 21:52:24 -0800 (PST) Received: by mail-pf1-x449.google.com with SMTP id a23-20020aa794b7000000b004f6a3ac7a87so4581996pfl.23 for ; Thu, 10 Mar 2022 21:52:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=cCguG6PrmOTm/zXaI/ZSqU9KbkF2Vy3lLn/GfqDjzqA=; b=i29nOWMl4hDna0ox86JlbTor4E34FZnnUw5fmazu3jXQpWQ+vxxM/xekpHSMJkekOP 4DLw30Kfu9BDGntz/vAmOyuL8wzUn9h/RH0T/vQtEInzHGMWQycPob6u/hlqOrrddNlu uRofm2pnYNV7O9AfP5vjNF+EeYGkupyBQbzJDnsibL3cuyyIBphpFwbirR5gGCuAKMO1 bHFZWrfZ/4O6OkiErzoDpVD5O4ievCZbofM+IYbbCm165yBUJ5yt4ThQSkSB/zod9M8C K5JuIkS/cvOrRX+eedUqW4akFq55TcGNxWPysboRAnAsYAQh/4+KW+R4wPK5K8N9eBjR yzpQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=cCguG6PrmOTm/zXaI/ZSqU9KbkF2Vy3lLn/GfqDjzqA=; b=Es/aNZt4WVocvdiIKA0yCMwc4TqZ3pnrXOIHgSOZE0/S0mIjXUALsdX82QhNKewWHD XZa1e4DPE5+NR0ppP0v1lHNilRSGQXwni63pW2OGqCHjYOzbG722wemyhrlowi5U08Uv XXS6uG1oS2sTyckUcviycVECzYMZFmBZUFTKKxh14irBBPhTKDW9QFYWQbHCv6xM7+8U pqpp2cgvVraUO+XmyyOo4GUyjVBu6gCi47SVgCS9PSVs9f0DWkKEDs3M0rDhbj82m8kw bQ4FAerez15MhkpXVtpOrtiHUrQa1bIO4MKb8q9p5I2HXrhM2vMpCzcgmSRBTjEg8nIt 9iPg== X-Gm-Message-State: AOAM5330lJlikp0roGUp+UxLQsI+XQUIH6vqM3EiOTHPKVp7igwqv9sT Br3Xmmhy4G4dFxh0Wt2B6KHFvkZKDZFTs/bBgkCxiThgMVQUPnx/FVIag3RqnT+gG1Xu/WP3Y62 kgnbSrb18d44A+ayazmrrAmR0vb5cIo36VlV5XOFNhcBb3/cTMZXlXJ4VlOMKbUGS/YObiQ== X-Google-Smtp-Source: ABdhPJwLYBQW8QsnxkCgO5qH1T+UMmOF92iginNzLsff0IaFveiRBPa0LjM5KDL6zzREVcYSJa7ck1uhYg4= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:902:e748:b0:14f:969b:f6b6 with SMTP id p8-20020a170902e74800b0014f969bf6b6mr8504168plf.15.1646977943810; Thu, 10 Mar 2022 21:52:23 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:57 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-47-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 046/105] KVM: selftests: Convert kvm_pv_test away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/x86_64/kvm_pv_test.c | 25 ++++++++----------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/kvm_pv_test.c b/tools/testi= ng/selftests/kvm/x86_64/kvm_pv_test.c index 04ed975662c9..cce9016e31a7 100644 --- a/tools/testing/selftests/kvm/x86_64/kvm_pv_test.c +++ b/tools/testing/selftests/kvm/x86_64/kvm_pv_test.c @@ -171,24 +171,18 @@ static void handle_abort(struct ucall *uc) __FILE__, uc->args[1]); } =20 -#define VCPU_ID 0 - -static void enter_guest(struct kvm_vm *vm) +static void enter_guest(struct kvm_vcpu *vcpu) { - struct kvm_run *run; + struct kvm_run *run =3D vcpu->run; struct ucall uc; - int r; - - run =3D vcpu_state(vm, VCPU_ID); =20 while (true) { - r =3D _vcpu_run(vm, VCPU_ID); - TEST_ASSERT(!r, "vcpu_run failed: %d\n", r); + vcpu_run(vcpu->vm, vcpu->id); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "unexpected exit reason: %u (%s)", run->exit_reason, exit_reason_str(run->exit_reason)); =20 - switch (get_ucall(vm, VCPU_ID, &uc)) { + switch (get_ucall(vcpu->vm, vcpu->id, &uc)) { case UCALL_PR_MSR: pr_msr(&uc); break; @@ -208,6 +202,7 @@ int main(void) { struct kvm_enable_cap cap =3D {0}; struct kvm_cpuid2 *best; + struct kvm_vcpu *vcpu; struct kvm_vm *vm; =20 if (!kvm_check_cap(KVM_CAP_ENFORCE_PV_FEATURE_CPUID)) { @@ -215,20 +210,20 @@ int main(void) exit(KSFT_SKIP); } =20 - vm =3D vm_create_default(VCPU_ID, 0, guest_main); + vm =3D vm_create_with_one_vcpu(&vcpu, guest_main); =20 cap.cap =3D KVM_CAP_ENFORCE_PV_FEATURE_CPUID; cap.args[0] =3D 1; - vcpu_enable_cap(vm, VCPU_ID, &cap); + vcpu_enable_cap(vm, vcpu->id, &cap); =20 best =3D kvm_get_supported_cpuid(); clear_kvm_cpuid_features(best); - vcpu_set_cpuid(vm, VCPU_ID, best); + vcpu_set_cpuid(vm, vcpu->id, best); =20 vm_init_descriptor_tables(vm); - vcpu_init_descriptor_tables(vm, VCPU_ID); + vcpu_init_descriptor_tables(vm, vcpu->id); vm_install_exception_handler(vm, GP_VECTOR, guest_gp_handler); =20 - enter_guest(vm); + enter_guest(vcpu); kvm_vm_free(vm); } --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 1DCAEC433F5 for ; Fri, 11 Mar 2022 05:56:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346931AbiCKF5G (ORCPT ); Fri, 11 Mar 2022 00:57:06 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58868 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346616AbiCKFxg (ORCPT ); Fri, 11 Mar 2022 00:53:36 -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 17152EF08D for ; Thu, 10 Mar 2022 21:52:26 -0800 (PST) Received: by mail-pj1-x104a.google.com with SMTP id r64-20020a17090a43c600b001bf8e05847eso6643638pjg.4 for ; Thu, 10 Mar 2022 21:52:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=rrEN1al/iXqLo5WYs8SKT4+jkWFFWdw4MDQg5iqhYi4=; b=frEC44pjOH8hf6UY4PXxBoT6F5ZGHVakMLPzRI65B5AA2JawhN+IFRyVxVWoYFeNmS TL6qkvJnOyTrB8jg1Do43fgfC6UZDUr4dC2Zqmma/uKQOAL+UCmfdP9+A04vjMShugW3 Z1/s7beO5JqyHk23ql/GM1/vprTyRnIbtZeoJlRf8avhhzmUJQTQKsCW8BNS2SU6NJ8D 3uMJRXdM1DJI/D4vlbbSNoii9Yvix1lwSqKHYMaCmnbWFs/z0N/r/UC5w5Vv3BbsL0Pn qvzARQh22cihu7qYmbJrp/YIpGOz27FANgRRQCFi654CF5PFMgPWc8J6SzulEADmoUoI 4HFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=rrEN1al/iXqLo5WYs8SKT4+jkWFFWdw4MDQg5iqhYi4=; b=Rm7OHxxnVRxZo5+Hg98E12PkUdBAkTOwaoWv1TiMhove6Kgo4iU3coSrdoiFVm+1w5 jaooZpFuUBJIdYOGQWMtjvKhhzFiCm6GkqXPxbnbQpbUKN1SV+NRVbXJ/XFGkEPf4YUn 5urSRwrQi0kFwzT9f0rGVyo+0PVHxZhpSzWbwXNM0oPq+Vtvgd34qtCIJMP7UpMjcqQY DD77c5ky65lKR3pBjOjpKYPwBUNHFegwaa05gmgCdjYeiwNm7aFcf5lTJIyegsHfVv5A oHIVulYdkByncL52bCABBmr/dODWMIrBnhZ31sO/G71EYaqHHx4FNT3gYodG5CgX/3vA xyKA== X-Gm-Message-State: AOAM531/fsZigv5+Z2jkAfYNcNxxBt6pLmMc93H1KfscgfeUtcPjWZSI Epa+opYVl4Qkdi+uwvNoKhHwzS1HeoYVRWEbmiIc7YhRoPSTCbkn/Mcey7w7/Yfy4xnyBKVVNZA I6dDKISVLcXAOTplyKto4NZoDJP8wE/N5h8bnF91/gu/3aw+oaHNTFmCO8T4mobKjE9mivw== X-Google-Smtp-Source: ABdhPJz2Wm/4d5jI1jEbmfIuQrkySOfsh8ldsGOzIz/v3oijFLCVDIYF+ejwAWnuwTJaB6na4rrcaylZ8ho= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:90b:1e10:b0:1bf:6c78:54a9 with SMTP id pg16-20020a17090b1e1000b001bf6c7854a9mr460718pjb.1.1646977945258; Thu, 10 Mar 2022 21:52:25 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:58 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-48-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 047/105] KVM: selftests: Convert platform_info_test away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/x86_64/platform_info_test.c | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/platform_info_test.c b/tool= s/testing/selftests/kvm/x86_64/platform_info_test.c index 1e89688cbbbf..0468a51c05f6 100644 --- a/tools/testing/selftests/kvm/x86_64/platform_info_test.c +++ b/tools/testing/selftests/kvm/x86_64/platform_info_test.c @@ -21,7 +21,6 @@ #include "kvm_util.h" #include "processor.h" =20 -#define VCPU_ID 0 #define MSR_PLATFORM_INFO_MAX_TURBO_RATIO 0xff00 =20 static void guest_code(void) @@ -45,18 +44,18 @@ static void set_msr_platform_info_enabled(struct kvm_vm= *vm, bool enable) vm_enable_cap(vm, &cap); } =20 -static void test_msr_platform_info_enabled(struct kvm_vm *vm) +static void test_msr_platform_info_enabled(struct kvm_vcpu *vcpu) { - struct kvm_run *run =3D vcpu_state(vm, VCPU_ID); + struct kvm_run *run =3D vcpu->run; struct ucall uc; =20 - set_msr_platform_info_enabled(vm, true); - vcpu_run(vm, VCPU_ID); + set_msr_platform_info_enabled(vcpu->vm, true); + vcpu_run(vcpu->vm, vcpu->id); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Exit_reason other than KVM_EXIT_IO: %u (%s),\n", run->exit_reason, exit_reason_str(run->exit_reason)); - get_ucall(vm, VCPU_ID, &uc); + get_ucall(vcpu->vm, vcpu->id, &uc); TEST_ASSERT(uc.cmd =3D=3D UCALL_SYNC, "Received ucall other than UCALL_SYNC: %lu\n", uc.cmd); TEST_ASSERT((uc.args[1] & MSR_PLATFORM_INFO_MAX_TURBO_RATIO) =3D=3D @@ -65,12 +64,12 @@ static void test_msr_platform_info_enabled(struct kvm_v= m *vm) MSR_PLATFORM_INFO_MAX_TURBO_RATIO); } =20 -static void test_msr_platform_info_disabled(struct kvm_vm *vm) +static void test_msr_platform_info_disabled(struct kvm_vcpu *vcpu) { - struct kvm_run *run =3D vcpu_state(vm, VCPU_ID); + struct kvm_run *run =3D vcpu->run; =20 - set_msr_platform_info_enabled(vm, false); - vcpu_run(vm, VCPU_ID); + set_msr_platform_info_enabled(vcpu->vm, false); + vcpu_run(vcpu->vm, vcpu->id); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_SHUTDOWN, "Exit_reason other than KVM_EXIT_SHUTDOWN: %u (%s)\n", run->exit_reason, @@ -79,6 +78,7 @@ static void test_msr_platform_info_disabled(struct kvm_vm= *vm) =20 int main(int argc, char *argv[]) { + struct kvm_vcpu *vcpu; struct kvm_vm *vm; int rv; uint64_t msr_platform_info; @@ -92,14 +92,14 @@ int main(int argc, char *argv[]) exit(KSFT_SKIP); } =20 - vm =3D vm_create_default(VCPU_ID, 0, guest_code); + vm =3D vm_create_with_one_vcpu(&vcpu, guest_code); =20 - msr_platform_info =3D vcpu_get_msr(vm, VCPU_ID, MSR_PLATFORM_INFO); - vcpu_set_msr(vm, VCPU_ID, MSR_PLATFORM_INFO, + msr_platform_info =3D vcpu_get_msr(vm, vcpu->id, MSR_PLATFORM_INFO); + vcpu_set_msr(vm, vcpu->id, MSR_PLATFORM_INFO, msr_platform_info | MSR_PLATFORM_INFO_MAX_TURBO_RATIO); - test_msr_platform_info_enabled(vm); - test_msr_platform_info_disabled(vm); - vcpu_set_msr(vm, VCPU_ID, MSR_PLATFORM_INFO, msr_platform_info); + test_msr_platform_info_enabled(vcpu); + test_msr_platform_info_disabled(vcpu); + vcpu_set_msr(vm, vcpu->id, MSR_PLATFORM_INFO, msr_platform_info); =20 kvm_vm_free(vm); =20 --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 9FFE2C433EF for ; Fri, 11 Mar 2022 05:56:36 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346660AbiCKF5g (ORCPT ); Fri, 11 Mar 2022 00:57:36 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58956 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346610AbiCKFxq (ORCPT ); Fri, 11 Mar 2022 00:53:46 -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 1A305F8B8D for ; Thu, 10 Mar 2022 21:52:27 -0800 (PST) Received: by mail-pj1-x1049.google.com with SMTP id mz5-20020a17090b378500b001bf46a762baso4597777pjb.5 for ; Thu, 10 Mar 2022 21:52:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=f/9Fx/PavHslU1pUv3Zhw8t4foCTO0SPxMweKFyRcn0=; b=DRoorF0Y6CoKhgZbThJ9t9slOtpoTWCDboPK3SgR53t0wNdXSq3CfLwXEFeqPRXUq2 D3KQVFop9A/hFOgB5u6oaOahbJHLa4x2HP0bbj6FvWKKbr0E/Pwwzi+DjEufEQoajhq9 o6Xjzb58vrZFV9Vy8XfY79sRbQS4b3BBRORw4SAyJ6xZkRITi4N9PSlY1m6vNKw4aia6 v7qXVinLlgMkj36BvD8CJTIOaQIxQB9q/dn6fDTqpbOHmUu3kzAL4UmKUY+Ckg7SEpef sDJurQ36h7rC6V/SLLt7C0kD9mq6nf8SEVmkyGnwja4lhmfK8vlfsBTh3tUhan9ee6IW XaWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=f/9Fx/PavHslU1pUv3Zhw8t4foCTO0SPxMweKFyRcn0=; b=uBrGinROuGDgvGuG28DJOoPK9CASmNlxTqhvnvu5G2YqODYMpnpJQPtH7eUVCEkygX u+Syv4XgthYcIh/UcNr/rFOADbR5hBr8T8blkEJ4LOFGRm0GmiGtBwgrMqDMhORwx0YV bLfXgPx58WE3DylRaGnoBZCZNhMjq9Cf6HlLgLz5og7tM38PtMD9x4/0/26JIaPlrZkm JZVu+1o5gR9arrLeLHoAJzlXsfRhD465JV49nwIfRMXrtbcDyNjAIk9LCyNeHpeiP03Z Wo1TvfABJNV08Ge89XvK2hnHYNHz9+w9gLh2mjvsBRxtY+GuE6l7Kf22PlEw7jVJr0Wk UDkw== X-Gm-Message-State: AOAM530UKjrfzQh+a/5qOYzsQb7LW1sMuYHlTpReDT/DxFoBc2rJEFLc AZiIO20iDQlKVXYSvwTqiFOI040KtnRVHrTMOTo6s7aN3s2G1TLZAixC2dn5R+nEz74DU4/8htK cR/78lDxxvRfnMMP8QnIFV6w0ylRMVXqFVYmipY/tJ4GJbunB1FZAYDzntanzRdblQ9BrXQ== X-Google-Smtp-Source: ABdhPJzLRZkhXT+5/qVqea23evUC9ic9DpPgnu4xEAZdBo4BGlsCDB3cpMT65kDigMqVsmhd4VBKqqlRDoI= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a05:6a00:240c:b0:4e1:2d98:d2c9 with SMTP id z12-20020a056a00240c00b004e12d98d2c9mr8530102pfh.51.1646977947007; Thu, 10 Mar 2022 21:52:27 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:49:59 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-49-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 048/105] KVM: selftests: Convert vmx_nested_tsc_scaling_test away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../kvm/x86_64/vmx_nested_tsc_scaling_test.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/vmx_nested_tsc_scaling_test= .c b/tools/testing/selftests/kvm/x86_64/vmx_nested_tsc_scaling_test.c index c35ada9f7f9c..c9cb29f06244 100644 --- a/tools/testing/selftests/kvm/x86_64/vmx_nested_tsc_scaling_test.c +++ b/tools/testing/selftests/kvm/x86_64/vmx_nested_tsc_scaling_test.c @@ -15,9 +15,6 @@ #include "vmx.h" #include "kselftest.h" =20 - -#define VCPU_ID 0 - /* L2 is scaled up (from L1's perspective) by this factor */ #define L2_SCALE_FACTOR 4ULL =20 @@ -150,6 +147,7 @@ static void stable_tsc_check_supported(void) =20 int main(int argc, char *argv[]) { + struct kvm_vcpu *vcpu; struct kvm_vm *vm; vm_vaddr_t vmx_pages_gva; =20 @@ -182,28 +180,28 @@ int main(int argc, char *argv[]) l0_tsc_freq =3D tsc_end - tsc_start; printf("real TSC frequency is around: %"PRIu64"\n", l0_tsc_freq); =20 - vm =3D vm_create_default(VCPU_ID, 0, (void *) l1_guest_code); + vm =3D vm_create_with_one_vcpu(&vcpu, l1_guest_code); vcpu_alloc_vmx(vm, &vmx_pages_gva); - vcpu_args_set(vm, VCPU_ID, 1, vmx_pages_gva); + vcpu_args_set(vm, vcpu->id, 1, vmx_pages_gva); =20 - tsc_khz =3D __vcpu_ioctl(vm, VCPU_ID, KVM_GET_TSC_KHZ, NULL); + tsc_khz =3D __vcpu_ioctl(vm, vcpu->id, KVM_GET_TSC_KHZ, NULL); TEST_ASSERT(tsc_khz !=3D -1, "vcpu ioctl KVM_GET_TSC_KHZ failed"); =20 /* scale down L1's TSC frequency */ - vcpu_ioctl(vm, VCPU_ID, KVM_SET_TSC_KHZ, + vcpu_ioctl(vm, vcpu->id, KVM_SET_TSC_KHZ, (void *) (tsc_khz / l1_scale_factor)); =20 for (;;) { - volatile struct kvm_run *run =3D vcpu_state(vm, VCPU_ID); + volatile struct kvm_run *run =3D vcpu->run; struct ucall uc; =20 - vcpu_run(vm, VCPU_ID); + vcpu_run(vm, vcpu->id); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Got exit_reason other than KVM_EXIT_IO: %u (%s)\n", run->exit_reason, exit_reason_str(run->exit_reason)); =20 - switch (get_ucall(vm, VCPU_ID, &uc)) { + switch (get_ucall(vm, vcpu->id, &uc)) { case UCALL_ABORT: TEST_FAIL("%s", (const char *) uc.args[0]); case UCALL_SYNC: --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 13582C433F5 for ; Fri, 11 Mar 2022 05:56:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S244336AbiCKF5m (ORCPT ); Fri, 11 Mar 2022 00:57:42 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58990 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346638AbiCKFxq (ORCPT ); Fri, 11 Mar 2022 00:53:46 -0500 Received: from mail-pf1-x44a.google.com (mail-pf1-x44a.google.com [IPv6:2607:f8b0:4864:20::44a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C2D6729828 for ; Thu, 10 Mar 2022 21:52:29 -0800 (PST) Received: by mail-pf1-x44a.google.com with SMTP id x205-20020a627cd6000000b004f6e1b97b45so4589926pfc.18 for ; Thu, 10 Mar 2022 21:52:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=grb5a6vd5s389/PkvAcjoLVljHIGkLuaJsaIdEv33mY=; b=YFjKQa0E0JuYvS/yaq6ESb3DkJnZPMDL032gaFvp9UIIwFNfgfFJULVAKSga4rRMfF 2NdoY73oUSUbbChOCEUb2Nd7YIfIvuPYVY2ze0h0yixtfKdRhPuWqTL3RBHdsB2KnbtP pMSP6fiP3GUt1K5xBLOVXq1GYGCEK3ssX82dGNIqXVCM0vQshKWKCFGfOZt3LeI0mTPp 8TOpmGUJ/hG1NMLZfNaUZ8HySUhMCuNw2anzrG8vMVLf+7aeDnYPQfbx5i4LqTWVfaiY gt8yGnpI3BNGBlcDRESIf6JQp3o3/t7Nl7rY7BLHWlLGISnEy3a7jzL5ihAjqoHW9Krq oVVQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=grb5a6vd5s389/PkvAcjoLVljHIGkLuaJsaIdEv33mY=; b=KzRLxL2Wfk+2EgTTx1F7NQ6gtkfWaH0sqyvsXYYkoEkyQ524dP/19mx2Og/o4Yg/Cb yz8SEPNnqsaEnmYOLtYrWpSFqIckR5APUgEi4Hz61NcNmcJVyGwnEomypnTIdS+yi8Mb BkSo+eCTwPD0JliM6fs3jHEzfuEg/rgbTu2Q9M8FZeBI6NXiA626P+VcbYrfNPRt73VS lbm8ftqULKxN2zAs/nmGeO7TRt+DKyNmhc5HEyq5LMGZj8uRUcTdJNhekWdpBBTfvj5C vbZkF8IsBjjefa8M3pM4+VIqoUQHxcx2VtESuhnJFrNFdwB7qnVy5t0817T0L8MWT2yt RMKg== X-Gm-Message-State: AOAM532OWiu/YMLWzvMwvQdkJMsvZcqmozG3qmINFVyv0ij0S8YXfOGE LcibFB/LjHy+eaZChnixrW71WP0fnZ8FgAIaJsKptJ1m+aE0rEO2NmYmIn+spBViTBLM/CeJOa3 Yg3bMqjYiVdE9Jv94nkWR1B+JpWsF/uhoxoP6FTU4Fop3kH7DlxrNwgifRbm42zFaljeM2A== X-Google-Smtp-Source: ABdhPJxp1BucRXL83iX9rBdt3M9lRLSk6MRY+TSzC7R8KusOHiCWrN3BzlkVMCq8ooUFdEjNp3t6/tqD/po= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:90b:1e10:b0:1bf:6c78:54a9 with SMTP id pg16-20020a17090b1e1000b001bf6c7854a9mr460737pjb.1.1646977948789; Thu, 10 Mar 2022 21:52:28 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:00 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-50-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 049/105] KVM: selftests: Convert set_sregs_test away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/x86_64/set_sregs_test.c | 45 +++++++++---------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/set_sregs_test.c b/tools/te= sting/selftests/kvm/x86_64/set_sregs_test.c index 4dc7fd925023..2b3cae9a1d5b 100644 --- a/tools/testing/selftests/kvm/x86_64/set_sregs_test.c +++ b/tools/testing/selftests/kvm/x86_64/set_sregs_test.c @@ -22,9 +22,7 @@ #include "kvm_util.h" #include "processor.h" =20 -#define VCPU_ID 5 - -static void test_cr4_feature_bit(struct kvm_vm *vm, struct kvm_sregs *orig, +static void test_cr4_feature_bit(struct kvm_vcpu *vcpu, struct kvm_sregs *= orig, uint64_t feature_bit) { struct kvm_sregs sregs; @@ -37,11 +35,11 @@ static void test_cr4_feature_bit(struct kvm_vm *vm, str= uct kvm_sregs *orig, memcpy(&sregs, orig, sizeof(sregs)); sregs.cr4 |=3D feature_bit; =20 - rc =3D _vcpu_sregs_set(vm, VCPU_ID, &sregs); + rc =3D _vcpu_sregs_set(vcpu->vm, vcpu->id, &sregs); TEST_ASSERT(rc, "KVM allowed unsupported CR4 bit (0x%lx)", feature_bit); =20 /* Sanity check that KVM didn't change anything. */ - vcpu_sregs_get(vm, VCPU_ID, &sregs); + vcpu_sregs_get(vcpu->vm, vcpu->id, &sregs); TEST_ASSERT(!memcmp(&sregs, orig, sizeof(sregs)), "KVM modified sregs"); } =20 @@ -83,6 +81,7 @@ static uint64_t calc_cr4_feature_bits(struct kvm_vm *vm) int main(int argc, char *argv[]) { struct kvm_sregs sregs; + struct kvm_vcpu *vcpu; struct kvm_vm *vm; uint64_t cr4; int rc; @@ -96,43 +95,43 @@ int main(int argc, char *argv[]) * the vCPU model, i.e. without doing KVM_SET_CPUID2. */ vm =3D vm_create(DEFAULT_GUEST_PHY_PAGES); - vm_vcpu_add(vm, VCPU_ID); + vcpu =3D vm_vcpu_add(vm, 0); =20 - vcpu_sregs_get(vm, VCPU_ID, &sregs); + vcpu_sregs_get(vm, vcpu->id, &sregs); =20 sregs.cr4 |=3D calc_cr4_feature_bits(vm); cr4 =3D sregs.cr4; =20 - rc =3D _vcpu_sregs_set(vm, VCPU_ID, &sregs); + rc =3D _vcpu_sregs_set(vm, vcpu->id, &sregs); TEST_ASSERT(!rc, "Failed to set supported CR4 bits (0x%lx)", cr4); =20 - vcpu_sregs_get(vm, VCPU_ID, &sregs); + vcpu_sregs_get(vm, vcpu->id, &sregs); TEST_ASSERT(sregs.cr4 =3D=3D cr4, "sregs.CR4 (0x%llx) !=3D CR4 (0x%lx)", sregs.cr4, cr4); =20 /* Verify all unsupported features are rejected by KVM. */ - test_cr4_feature_bit(vm, &sregs, X86_CR4_UMIP); - test_cr4_feature_bit(vm, &sregs, X86_CR4_LA57); - test_cr4_feature_bit(vm, &sregs, X86_CR4_VMXE); - test_cr4_feature_bit(vm, &sregs, X86_CR4_SMXE); - test_cr4_feature_bit(vm, &sregs, X86_CR4_FSGSBASE); - test_cr4_feature_bit(vm, &sregs, X86_CR4_PCIDE); - test_cr4_feature_bit(vm, &sregs, X86_CR4_OSXSAVE); - test_cr4_feature_bit(vm, &sregs, X86_CR4_SMEP); - test_cr4_feature_bit(vm, &sregs, X86_CR4_SMAP); - test_cr4_feature_bit(vm, &sregs, X86_CR4_PKE); + test_cr4_feature_bit(vcpu, &sregs, X86_CR4_UMIP); + test_cr4_feature_bit(vcpu, &sregs, X86_CR4_LA57); + test_cr4_feature_bit(vcpu, &sregs, X86_CR4_VMXE); + test_cr4_feature_bit(vcpu, &sregs, X86_CR4_SMXE); + test_cr4_feature_bit(vcpu, &sregs, X86_CR4_FSGSBASE); + test_cr4_feature_bit(vcpu, &sregs, X86_CR4_PCIDE); + test_cr4_feature_bit(vcpu, &sregs, X86_CR4_OSXSAVE); + test_cr4_feature_bit(vcpu, &sregs, X86_CR4_SMEP); + test_cr4_feature_bit(vcpu, &sregs, X86_CR4_SMAP); + test_cr4_feature_bit(vcpu, &sregs, X86_CR4_PKE); kvm_vm_free(vm); =20 /* Create a "real" VM and verify APIC_BASE can be set. */ - vm =3D vm_create_default(VCPU_ID, 0, NULL); + vm =3D vm_create_with_one_vcpu(&vcpu, NULL); =20 - vcpu_sregs_get(vm, VCPU_ID, &sregs); + vcpu_sregs_get(vm, vcpu->id, &sregs); sregs.apic_base =3D 1 << 10; - rc =3D _vcpu_sregs_set(vm, VCPU_ID, &sregs); + rc =3D _vcpu_sregs_set(vm, vcpu->id, &sregs); TEST_ASSERT(rc, "Set IA32_APIC_BASE to %llx (invalid)", sregs.apic_base); sregs.apic_base =3D 1 << 11; - rc =3D _vcpu_sregs_set(vm, VCPU_ID, &sregs); + rc =3D _vcpu_sregs_set(vm, vcpu->id, &sregs); TEST_ASSERT(!rc, "Couldn't set IA32_APIC_BASE to %llx (valid)", sregs.apic_base); =20 --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 811C1C433F5 for ; Fri, 11 Mar 2022 05:56:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346385AbiCKF5r (ORCPT ); Fri, 11 Mar 2022 00:57:47 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58570 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346643AbiCKFxr (ORCPT ); Fri, 11 Mar 2022 00:53:47 -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 749E7C4F for ; Thu, 10 Mar 2022 21:52:31 -0800 (PST) Received: by mail-pj1-x104a.google.com with SMTP id c7-20020a17090a674700b001beef0afd32so4710281pjm.2 for ; Thu, 10 Mar 2022 21:52:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=XUeIxaJPBuNQuCYNQZ93S//8bghme83ZNdK7Pf65uzI=; b=qUDIHocJC53kBWqba7+6hpgTpb9XEJrOG19q2OBqMhLr35ZL9pep0J6pN1YWlLFelu YA9umKxxW1W7nuC7bIkdSkylFj3LaBA+kSQ9xRpnNUZNvadWeiBF3sobOAHoRM9QQKbT Cj3VXZ9ALmIMoeMFjMKaOewgKqUjicR75sVwi0aZ4W4gQA5t2Rs+Q+VKBG/+/TbQxa2i 2hugzANq8QWXfmRpnOB7j1neOZo3iG1/0jX4n9l/sM/gpn/4ahsFpvjnW6ApGqsSPgZb IsppuH9iA6IrwfQhTe/pz8WcHNH+5xI0g1SDTidbbnuZVaSo3AYaT4WYvLZ5LhSOTFLd QQjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=XUeIxaJPBuNQuCYNQZ93S//8bghme83ZNdK7Pf65uzI=; b=uKW82LC/WoBfv8xLNvBtZzs9cvorHJ6cli4rOgtTTLMAkMeGYj8HYo6wGP1lm2wBnl HYO0VpI8/0JPN0w3L36XLgJiRKm3DZpBWUTZOygTwmT5hHXC/5YXSr+J1j1CqDiEbFtx Zns6DQo/ecUVC+dW14QkjEPi7BRdJaUI1Ge7pwbEJ/7WUbNQkS73YTrQnjTSRSscyAHH 8lBU9ceDvekF5NiWl3slklWHuEc9rJSHmkaCa/duOYqC9K7GMrjD93IVx7k5yjgaPTnR utPFRcTUY3tKYkfWR6DyrYztfmYOzFoc+ic0pEZEm1PbrDCtqjeI4JH7hP/Mc7R3G6bq 1ObA== X-Gm-Message-State: AOAM531eqGdECsQqmeNx+/6pgU5HP6njkAZnIByWkpMA6NvbzScs6Cuh vWT2iHfyQm2eCcNiDq7yOwHNG3zboTpCtbK8p3mgl7P4I3wG2JqjYIN7l6Myl7pMaNh7yI3H3oc V+7I16Wdu1U5wYEoy6TiHHIbIzG9FXwvBhF3wVO79/lJcp2nwwTZiMz+NAeW65aiMbhkpMA== X-Google-Smtp-Source: ABdhPJwDycjRrhtZFnXXWZeJUf1trL7SjYtbATLpvLYHR5roeOqFf/K3Hs2H1NroM/k2QelNev9LjB+EUFQ= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:aa7:88d5:0:b0:4f7:7fbd:c653 with SMTP id k21-20020aa788d5000000b004f77fbdc653mr5228547pff.41.1646977950526; Thu, 10 Mar 2022 21:52:30 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:01 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-51-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 050/105] KVM: selftests: Convert vmx_dirty_log_test away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/x86_64/vmx_dirty_log_test.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/vmx_dirty_log_test.c b/tool= s/testing/selftests/kvm/x86_64/vmx_dirty_log_test.c index 68f26a8b4f42..fb8c7f7236f7 100644 --- a/tools/testing/selftests/kvm/x86_64/vmx_dirty_log_test.c +++ b/tools/testing/selftests/kvm/x86_64/vmx_dirty_log_test.c @@ -17,8 +17,6 @@ #include "processor.h" #include "vmx.h" =20 -#define VCPU_ID 1 - /* The memory slot index to track dirty pages */ #define TEST_MEM_SLOT_INDEX 1 #define TEST_MEM_PAGES 3 @@ -73,6 +71,7 @@ int main(int argc, char *argv[]) unsigned long *bmap; uint64_t *host_test_mem; =20 + struct kvm_vcpu *vcpu; struct kvm_vm *vm; struct kvm_run *run; struct ucall uc; @@ -81,10 +80,10 @@ int main(int argc, char *argv[]) nested_vmx_check_supported(); =20 /* Create VM */ - vm =3D vm_create_default(VCPU_ID, 0, l1_guest_code); + vm =3D vm_create_with_one_vcpu(&vcpu, l1_guest_code); vmx =3D vcpu_alloc_vmx(vm, &vmx_pages_gva); - vcpu_args_set(vm, VCPU_ID, 1, vmx_pages_gva); - run =3D vcpu_state(vm, VCPU_ID); + vcpu_args_set(vm, vcpu->id, 1, vmx_pages_gva); + run =3D vcpu->run; =20 /* Add an extra memory slot for testing dirty logging */ vm_userspace_mem_region_add(vm, VM_MEM_SRC_ANONYMOUS, @@ -116,13 +115,13 @@ int main(int argc, char *argv[]) =20 while (!done) { memset(host_test_mem, 0xaa, TEST_MEM_PAGES * 4096); - _vcpu_run(vm, VCPU_ID); + vcpu_run(vm, vcpu->id); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Unexpected exit reason: %u (%s),\n", run->exit_reason, exit_reason_str(run->exit_reason)); =20 - switch (get_ucall(vm, VCPU_ID, &uc)) { + switch (get_ucall(vm, vcpu->id, &uc)) { case UCALL_ABORT: TEST_FAIL("%s at %s:%ld", (const char *)uc.args[0], __FILE__, uc.args[1]); --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 A5787C433F5 for ; Fri, 11 Mar 2022 05:59:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346841AbiCKF5w (ORCPT ); Fri, 11 Mar 2022 00:57:52 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59178 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346581AbiCKFxs (ORCPT ); Fri, 11 Mar 2022 00:53:48 -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 CD182E54 for ; Thu, 10 Mar 2022 21:52:32 -0800 (PST) Received: by mail-pg1-x549.google.com with SMTP id v4-20020a63f844000000b003745fd0919aso4211744pgj.20 for ; Thu, 10 Mar 2022 21:52:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=K0H87htZ43Oywx7CtDoyzUl7rJXnMPIXTzsnNX6ofLE=; b=fW3+D0jYolbKcoGiJvlm5no3+9/vaS3U33WgjDwICgUXByOVIw3eCmDpYTwxLzPrr+ eQSVG7qe2QYimVW7aP1Ry+UYOotV4xbmj+D1lrHZvM/T8zjTuEZECSA3ytzW6XnoBR+t YMqQKFBUoZnNwcBL7W3WLdUVnTplt5GnqvGcNyeH4MrHUB5Subltkah9/gvpuJTcNSg5 xNmFn8bCBvyvRlQ5odcoPCeGRGnmom4/6ARMm60LVqN46Z7DQjMAx0CpSzwa+myR4t55 aPqhlG+krnojLkTrQoSPdcJW4bbTlublpyyPBjZCYx10kdjvvyhoWxFuv9qFp7iL/Z+Z kQ1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=K0H87htZ43Oywx7CtDoyzUl7rJXnMPIXTzsnNX6ofLE=; b=wUJPgDnH1UZAcqH8y+e8ahAHyoR6yUeKXcqQ/G2EPLMtLwE3b88GywmAeSXjWzIs9m BvoJq0DgTEhYiJkY2TjvMSA/dFatS/xaY8PyvCf3miVO5SA9UoyFL1g3img1/Gp0J8KM effFaepWZjI5v+1cklcuO/gsGGvHDcvYi5d4xI98SQtCt59d7LyCN6oIFrPdK0TlGz0N 0bKKzbKIoWlkZxY3lWRmBAVQmc68mAlVdhlFAhFNtBoB80IUNKqv7YUAXGtkXRoUT2IQ sFbdrF5QNbhrFuir5HjIoBiQjawXV3MD2CbHFFRIOVM44x+GOOBG4Eq0LoMnWPcr87vz N18g== X-Gm-Message-State: AOAM5322q6Ycx9CsW1yRdtotDa42roOSV+jyzNxDMjeNgoZ290JpcFFi HlCcpQMCvUzXl50I4DQlOfJ70O03RklNaihLHx4PUAf9/feY8alHOLZAiGzUa1SWWnC0ojeqUCa dT0ByWHEx1IHAzz0U76+EU0Jp5NecHxnnLLE4Mm5LNckbDuekmpiJfXggEwOePSCTsgV1Sw== X-Google-Smtp-Source: ABdhPJxgk+W3Q3sy51UA3F6OsO6tyR98RX1dV9ZarvoSPTqJXOytRF2F7LZmuHn0YPmevAQ0AXm/AErBvS4= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a62:7c58:0:b0:4f6:ebf1:e78d with SMTP id x85-20020a627c58000000b004f6ebf1e78dmr8893697pfc.18.1646977952022; Thu, 10 Mar 2022 21:52:32 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:02 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-52-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 051/105] KVM: selftests: Convert vmx_close_while_nested_test away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../kvm/x86_64/vmx_close_while_nested_test.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/vmx_close_while_nested_test= .c b/tools/testing/selftests/kvm/x86_64/vmx_close_while_nested_test.c index edac8839e717..da0363076fba 100644 --- a/tools/testing/selftests/kvm/x86_64/vmx_close_while_nested_test.c +++ b/tools/testing/selftests/kvm/x86_64/vmx_close_while_nested_test.c @@ -18,15 +18,10 @@ =20 #include "kselftest.h" =20 -#define VCPU_ID 5 - enum { PORT_L0_EXIT =3D 0x2000, }; =20 -/* The virtual machine object. */ -static struct kvm_vm *vm; - static void l2_guest_code(void) { /* Exit to L0 */ @@ -53,20 +48,22 @@ static void l1_guest_code(struct vmx_pages *vmx_pages) int main(int argc, char *argv[]) { vm_vaddr_t vmx_pages_gva; + struct kvm_vcpu *vcpu; + struct kvm_vm *vm; =20 nested_vmx_check_supported(); =20 - vm =3D vm_create_default(VCPU_ID, 0, (void *) l1_guest_code); + vm =3D vm_create_with_one_vcpu(&vcpu, l1_guest_code); =20 /* Allocate VMX pages and shared descriptors (vmx_pages). */ vcpu_alloc_vmx(vm, &vmx_pages_gva); - vcpu_args_set(vm, VCPU_ID, 1, vmx_pages_gva); + vcpu_args_set(vm, vcpu->id, 1, vmx_pages_gva); =20 for (;;) { - volatile struct kvm_run *run =3D vcpu_state(vm, VCPU_ID); + volatile struct kvm_run *run =3D vcpu->run; struct ucall uc; =20 - vcpu_run(vm, VCPU_ID); + vcpu_run(vm, vcpu->id); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Got exit_reason other than KVM_EXIT_IO: %u (%s)\n", run->exit_reason, @@ -75,7 +72,7 @@ int main(int argc, char *argv[]) if (run->io.port =3D=3D PORT_L0_EXIT) break; =20 - switch (get_ucall(vm, VCPU_ID, &uc)) { + switch (get_ucall(vm, vcpu->id, &uc)) { case UCALL_ABORT: TEST_FAIL("%s", (const char *)uc.args[0]); /* NOT REACHED */ --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 DB162C433F5 for ; Fri, 11 Mar 2022 05:59:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347019AbiCKF5z (ORCPT ); Fri, 11 Mar 2022 00:57:55 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58884 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346662AbiCKFxr (ORCPT ); Fri, 11 Mar 2022 00:53:47 -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 BA1E7C66 for ; Thu, 10 Mar 2022 21:52:34 -0800 (PST) Received: by mail-pf1-x449.google.com with SMTP id x205-20020a627cd6000000b004f6e1b97b45so4590019pfc.18 for ; Thu, 10 Mar 2022 21:52:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=e0XSYsFnw1sKQYkuuRvbhEksoxu4hcJVSS0NA+QiSNk=; b=IlCA/LVGlypWW34yYUxnmARSZ6o3y157dD8URQlwXOwnlZ/OjeIdNw9xfGqiBDY1sj ouWngEMAQXPf+dLbN1v+pOckQgnF1t9hb99uYZHCVwOdrMSR7E6vfCf2lePKUNsi/12s rwA9puJE+dCbuBrFs7YZQlzXfOHcg7qsMM/uCX+6YpAdL6OiOIzOx4mVvaTuuGiAjP22 Zpc5h6Zy01wd475CMocPOPeW/gWsVv53IaQE8tY8qChRxvCJCUcvZde/rlDXnN87toNi lkiC70X70sImfQ809R3+cznQgFf5+HI+qNhKcEqNLx8bMDLWbK5HQsTj2nKfLSuDYYe8 89gQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=e0XSYsFnw1sKQYkuuRvbhEksoxu4hcJVSS0NA+QiSNk=; b=e1JVsUpx0Fa+EsArpIYCCo8cO2KslEjJeTTs1mZPS47FN8NqBIc9ZYqz2vgrCf6ctJ KR2D+Tt4+a/dXNegAW/sgV9R1eDM5xjVOdYzLdtWDQEMHVB1XAQ2oRPyY2jhJaWeXLYM qdHRywRmJcDS73LfSlzEaSsaN/1M5jTtlFsK482bN7peLAreKKBjbE7GpyFhVCW6aATw rzNpOnTWhS4r2iVMcL6oJnzt+z283qOQK1hq+fL70ZnZigj8/Q8ee6o1h3el9N5Ye2a2 tB3HkPiphur4p6Yg39GBvX9MK5ikYhT5zTJxx85SihrtUBhISjJ6vLA/4REtWSB9RJUX dI5g== X-Gm-Message-State: AOAM530VB4S5I+olQlESs4bbv6MFJy8M4ir3mbK1NMTEGIQXdUWPcpAK N8C11LwsPedFncQFAFb5ms9od6/mXPymQV9L3dHGoT/BkQBd2Z3ivjF5ZBvp02RUqWxwbwj7ZZV /8sXJfSV7yn7R8+QAQ5lc4hE8dr/lH/jlEYjvwY0Ez+g0e8Fweklj75R3kApsFB7JXov8wg== X-Google-Smtp-Source: ABdhPJwcnOysE1aEEi/3tYnwDeL2d3stWnhYb6nj9lfKtZKsFge3QHrjR0nl+XBrr4Ps9Mm1j4dppZ4AORA= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:902:6903:b0:151:6781:9397 with SMTP id j3-20020a170902690300b0015167819397mr9059514plk.137.1646977953618; Thu, 10 Mar 2022 21:52:33 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:03 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-53-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 052/105] KVM: selftests: Convert vmx_apic_access_test away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../kvm/x86_64/vmx_apic_access_test.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/vmx_apic_access_test.c b/to= ols/testing/selftests/kvm/x86_64/vmx_apic_access_test.c index d438c4d3228a..10f9c86029e6 100644 --- a/tools/testing/selftests/kvm/x86_64/vmx_apic_access_test.c +++ b/tools/testing/selftests/kvm/x86_64/vmx_apic_access_test.c @@ -28,11 +28,6 @@ =20 #include "kselftest.h" =20 -#define VCPU_ID 0 - -/* The virtual machine object. */ -static struct kvm_vm *vm; - static void l2_guest_code(void) { /* Exit to L1 */ @@ -84,9 +79,12 @@ int main(int argc, char *argv[]) struct vmx_pages *vmx; bool done =3D false; =20 + struct kvm_vcpu *vcpu; + struct kvm_vm *vm; + nested_vmx_check_supported(); =20 - vm =3D vm_create_default(VCPU_ID, 0, (void *) l1_guest_code); + vm =3D vm_create_with_one_vcpu(&vcpu, l1_guest_code); =20 kvm_get_cpu_address_width(&paddr_width, &vaddr_width); high_gpa =3D (1ul << paddr_width) - getpagesize(); @@ -97,13 +95,13 @@ int main(int argc, char *argv[]) =20 vmx =3D vcpu_alloc_vmx(vm, &vmx_pages_gva); prepare_virtualize_apic_accesses(vmx, vm); - vcpu_args_set(vm, VCPU_ID, 2, vmx_pages_gva, high_gpa); + vcpu_args_set(vm, vcpu->id, 2, vmx_pages_gva, high_gpa); =20 while (!done) { - volatile struct kvm_run *run =3D vcpu_state(vm, VCPU_ID); + volatile struct kvm_run *run =3D vcpu->run; struct ucall uc; =20 - vcpu_run(vm, VCPU_ID); + vcpu_run(vm, vcpu->id); if (apic_access_addr =3D=3D high_gpa) { TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_INTERNAL_ERROR, @@ -121,7 +119,7 @@ int main(int argc, char *argv[]) run->exit_reason, exit_reason_str(run->exit_reason)); =20 - switch (get_ucall(vm, VCPU_ID, &uc)) { + switch (get_ucall(vm, vcpu->id, &uc)) { case UCALL_ABORT: TEST_FAIL("%s at %s:%ld", (const char *)uc.args[0], __FILE__, uc.args[1]); --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 2858FC43217 for ; Fri, 11 Mar 2022 05:59:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347258AbiCKF6R (ORCPT ); Fri, 11 Mar 2022 00:58:17 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58570 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346654AbiCKFxv (ORCPT ); Fri, 11 Mar 2022 00:53: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 B6D89109A for ; Thu, 10 Mar 2022 21:52:35 -0800 (PST) Received: by mail-pj1-x1049.google.com with SMTP id x6-20020a17090aa38600b001c227fbfbc5so1418974pjp.0 for ; Thu, 10 Mar 2022 21:52:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=5wCOP2Gugq2tkSCgx55n1Cw37znPo8KpXeaNkhMh15g=; b=d5oV3MmwpnwMxhDCroU79fbweIIBFUoLG/XHf4oWIM6W0uSRWgUED04Ajhl3hdsQIW 2+BQ+i/qplMj9uA6JWyx4Uv7knSM/6XaI5JkyT11D53QyiWtIJXDBtvuQNIULa3ESwM7 R4Nq3bfIVct7ntowNzNa1naqJRr94qVbQRPRYvMcqnibPy6Qn9ORJ5ysnIB2xb9nAjYY TXaTTQmF03IGgXhrbLvhm7nug8r6uwvWCVEX6a4S/xFImcADpBSotzasZbx9m8XUApeQ Vb+6F+27t8fRkLMWZKbQDa9m2AhWxw6R+yyChWICaWIhaTgGHa0Fs9HrJmgcwSFyDWhP IG2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=5wCOP2Gugq2tkSCgx55n1Cw37znPo8KpXeaNkhMh15g=; b=3doYlHfZ59QFniV2DHB5AYoyVM1ZhJFu1VAyEbMcTW2DmXvOptI9OaLJj1bKs4CgaY 54wQeWZn2ISMBjgrXQ4STzjW3KbMp/i+KGc++aAdSfV5GaKWbsDTXw4bMtQBgb2vF6xo GimkwXUjJDUGfXWCH1Uq2ct2MvZ58royNNsGQ+nMMB7LUh3/1j9adNrud2AS89QvEXo1 SMXIh8H0oEJfE080JAz3QAbOi5YkFZbu2ijOarPkC963QCKLxJaIo8S9Dd323Fsn6zbP AlO4jF1/LaWTO/GADwh59NtJqUY4gmMQ2dq7r+NBWVh2S2lKKVhzQ4Q6VogZieU6SPkz dEcw== X-Gm-Message-State: AOAM531nboQ6FAQPnRcWbfEZKajTJyT4pwvyfB4PkN3npxCs0AbcbxkY 8aGVZMBeuisR6xc7ME26rFJjr1Z7vHaL/6S+WGUmAcmwkQKMcwdr3L0RVPyom18wgqGsjfZaDhZ V4A2gJNDAi43Y7qlzgsZF6mbKqV0AwVMyRw47bNTtM0BMylTZo5/E0h0GbDxXoOXXr2kRkQ== X-Google-Smtp-Source: ABdhPJzkAM7Vqde/zpDpBrOABg8G/QVtdsUkDguou7ech8kpOs7HlPTDkbxJ3BWDNd+PDEbGhPDZlUwAetE= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:aa7:918f:0:b0:4cc:3c00:b2dd with SMTP id x15-20020aa7918f000000b004cc3c00b2ddmr8755772pfa.77.1646977955091; Thu, 10 Mar 2022 21:52:35 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:04 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-54-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 053/105] KVM: selftests: Convert userspace_msr_exit_test away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../kvm/x86_64/userspace_msr_exit_test.c | 165 +++++++++--------- 1 file changed, 78 insertions(+), 87 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/userspace_msr_exit_test.c b= /tools/testing/selftests/kvm/x86_64/userspace_msr_exit_test.c index e3e20e8848d0..e261c50fac5c 100644 --- a/tools/testing/selftests/kvm/x86_64/userspace_msr_exit_test.c +++ b/tools/testing/selftests/kvm/x86_64/userspace_msr_exit_test.c @@ -17,7 +17,6 @@ #define KVM_FEP_LENGTH 5 static int fep_available =3D 1; =20 -#define VCPU_ID 1 #define MSR_NON_EXISTENT 0x474f4f00 =20 static u64 deny_bits =3D 0; @@ -395,31 +394,22 @@ static void guest_ud_handler(struct ex_regs *regs) regs->rip +=3D KVM_FEP_LENGTH; } =20 -static void run_guest(struct kvm_vm *vm) +static void check_for_guest_assert(struct kvm_vcpu *vcpu) { - int rc; - - rc =3D _vcpu_run(vm, VCPU_ID); - TEST_ASSERT(rc =3D=3D 0, "vcpu_run failed: %d\n", rc); -} - -static void check_for_guest_assert(struct kvm_vm *vm) -{ - struct kvm_run *run =3D vcpu_state(vm, VCPU_ID); struct ucall uc; =20 - if (run->exit_reason =3D=3D KVM_EXIT_IO && - get_ucall(vm, VCPU_ID, &uc) =3D=3D UCALL_ABORT) { - TEST_FAIL("%s at %s:%ld", (const char *)uc.args[0], - __FILE__, uc.args[1]); + if (vcpu->run->exit_reason =3D=3D KVM_EXIT_IO && + get_ucall(vcpu->vm, vcpu->id, &uc) =3D=3D UCALL_ABORT) { + TEST_FAIL("%s at %s:%ld", + (const char *)uc.args[0], __FILE__, uc.args[1]); } } =20 -static void process_rdmsr(struct kvm_vm *vm, uint32_t msr_index) +static void process_rdmsr(struct kvm_vcpu *vcpu, uint32_t msr_index) { - struct kvm_run *run =3D vcpu_state(vm, VCPU_ID); + struct kvm_run *run =3D vcpu->run; =20 - check_for_guest_assert(vm); + check_for_guest_assert(vcpu); =20 TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_X86_RDMSR, "Unexpected exit reason: %u (%s),\n", @@ -450,11 +440,11 @@ static void process_rdmsr(struct kvm_vm *vm, uint32_t= msr_index) } } =20 -static void process_wrmsr(struct kvm_vm *vm, uint32_t msr_index) +static void process_wrmsr(struct kvm_vcpu *vcpu, uint32_t msr_index) { - struct kvm_run *run =3D vcpu_state(vm, VCPU_ID); + struct kvm_run *run =3D vcpu->run; =20 - check_for_guest_assert(vm); + check_for_guest_assert(vcpu); =20 TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_X86_WRMSR, "Unexpected exit reason: %u (%s),\n", @@ -481,43 +471,43 @@ static void process_wrmsr(struct kvm_vm *vm, uint32_t= msr_index) } } =20 -static void process_ucall_done(struct kvm_vm *vm) +static void process_ucall_done(struct kvm_vcpu *vcpu) { - struct kvm_run *run =3D vcpu_state(vm, VCPU_ID); + struct kvm_run *run =3D vcpu->run; struct ucall uc; =20 - check_for_guest_assert(vm); + check_for_guest_assert(vcpu); =20 TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Unexpected exit reason: %u (%s)", run->exit_reason, exit_reason_str(run->exit_reason)); =20 - TEST_ASSERT(get_ucall(vm, VCPU_ID, &uc) =3D=3D UCALL_DONE, + TEST_ASSERT(get_ucall(vcpu->vm, vcpu->id, &uc) =3D=3D UCALL_DONE, "Unexpected ucall command: %lu, expected UCALL_DONE (%d)", uc.cmd, UCALL_DONE); } =20 -static uint64_t process_ucall(struct kvm_vm *vm) +static uint64_t process_ucall(struct kvm_vcpu *vcpu) { - struct kvm_run *run =3D vcpu_state(vm, VCPU_ID); + struct kvm_run *run =3D vcpu->run; struct ucall uc =3D {}; =20 - check_for_guest_assert(vm); + check_for_guest_assert(vcpu); =20 TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Unexpected exit reason: %u (%s)", run->exit_reason, exit_reason_str(run->exit_reason)); =20 - switch (get_ucall(vm, VCPU_ID, &uc)) { + switch (get_ucall(vcpu->vm, vcpu->id, &uc)) { case UCALL_SYNC: break; case UCALL_ABORT: - check_for_guest_assert(vm); + check_for_guest_assert(vcpu); break; case UCALL_DONE: - process_ucall_done(vm); + process_ucall_done(vcpu); break; default: TEST_ASSERT(false, "Unexpected ucall"); @@ -526,41 +516,43 @@ static uint64_t process_ucall(struct kvm_vm *vm) return uc.cmd; } =20 -static void run_guest_then_process_rdmsr(struct kvm_vm *vm, uint32_t msr_i= ndex) +static void run_guest_then_process_rdmsr(struct kvm_vcpu *vcpu, + uint32_t msr_index) { - run_guest(vm); - process_rdmsr(vm, msr_index); + vcpu_run(vcpu->vm, vcpu->id); + process_rdmsr(vcpu, msr_index); } =20 -static void run_guest_then_process_wrmsr(struct kvm_vm *vm, uint32_t msr_i= ndex) +static void run_guest_then_process_wrmsr(struct kvm_vcpu *vcpu, + uint32_t msr_index) { - run_guest(vm); - process_wrmsr(vm, msr_index); + vcpu_run(vcpu->vm, vcpu->id); + process_wrmsr(vcpu, msr_index); } =20 -static uint64_t run_guest_then_process_ucall(struct kvm_vm *vm) +static uint64_t run_guest_then_process_ucall(struct kvm_vcpu *vcpu) { - run_guest(vm); - return process_ucall(vm); + vcpu_run(vcpu->vm, vcpu->id); + return process_ucall(vcpu); } =20 -static void run_guest_then_process_ucall_done(struct kvm_vm *vm) +static void run_guest_then_process_ucall_done(struct kvm_vcpu *vcpu) { - run_guest(vm); - process_ucall_done(vm); + vcpu_run(vcpu->vm, vcpu->id); + process_ucall_done(vcpu); } =20 -static void test_msr_filter_allow(void) { +static void test_msr_filter_allow(void) +{ struct kvm_enable_cap cap =3D { .cap =3D KVM_CAP_X86_USER_SPACE_MSR, .args[0] =3D KVM_MSR_EXIT_REASON_FILTER, }; + struct kvm_vcpu *vcpu; struct kvm_vm *vm; int rc; =20 - /* Create VM */ - vm =3D vm_create_default(VCPU_ID, 0, guest_code_filter_allow); - vcpu_set_cpuid(vm, VCPU_ID, kvm_get_supported_cpuid()); + vm =3D vm_create_with_one_vcpu(&vcpu, guest_code_filter_allow); =20 rc =3D kvm_check_cap(KVM_CAP_X86_USER_SPACE_MSR); TEST_ASSERT(rc, "KVM_CAP_X86_USER_SPACE_MSR is available"); @@ -572,43 +564,43 @@ static void test_msr_filter_allow(void) { vm_ioctl(vm, KVM_X86_SET_MSR_FILTER, &filter_allow); =20 vm_init_descriptor_tables(vm); - vcpu_init_descriptor_tables(vm, VCPU_ID); + vcpu_init_descriptor_tables(vm, vcpu->id); =20 vm_install_exception_handler(vm, GP_VECTOR, guest_gp_handler); =20 /* Process guest code userspace exits. */ - run_guest_then_process_rdmsr(vm, MSR_IA32_XSS); - run_guest_then_process_wrmsr(vm, MSR_IA32_XSS); - run_guest_then_process_wrmsr(vm, MSR_IA32_XSS); + run_guest_then_process_rdmsr(vcpu, MSR_IA32_XSS); + run_guest_then_process_wrmsr(vcpu, MSR_IA32_XSS); + run_guest_then_process_wrmsr(vcpu, MSR_IA32_XSS); =20 - run_guest_then_process_rdmsr(vm, MSR_IA32_FLUSH_CMD); - run_guest_then_process_wrmsr(vm, MSR_IA32_FLUSH_CMD); - run_guest_then_process_wrmsr(vm, MSR_IA32_FLUSH_CMD); + run_guest_then_process_rdmsr(vcpu, MSR_IA32_FLUSH_CMD); + run_guest_then_process_wrmsr(vcpu, MSR_IA32_FLUSH_CMD); + run_guest_then_process_wrmsr(vcpu, MSR_IA32_FLUSH_CMD); =20 - run_guest_then_process_wrmsr(vm, MSR_NON_EXISTENT); - run_guest_then_process_rdmsr(vm, MSR_NON_EXISTENT); + run_guest_then_process_wrmsr(vcpu, MSR_NON_EXISTENT); + run_guest_then_process_rdmsr(vcpu, MSR_NON_EXISTENT); =20 vm_install_exception_handler(vm, UD_VECTOR, guest_ud_handler); - run_guest(vm); + vcpu_run(vm, vcpu->id); vm_install_exception_handler(vm, UD_VECTOR, NULL); =20 - if (process_ucall(vm) !=3D UCALL_DONE) { + if (process_ucall(vcpu) !=3D UCALL_DONE) { vm_install_exception_handler(vm, GP_VECTOR, guest_fep_gp_handler); =20 /* Process emulated rdmsr and wrmsr instructions. */ - run_guest_then_process_rdmsr(vm, MSR_IA32_XSS); - run_guest_then_process_wrmsr(vm, MSR_IA32_XSS); - run_guest_then_process_wrmsr(vm, MSR_IA32_XSS); + run_guest_then_process_rdmsr(vcpu, MSR_IA32_XSS); + run_guest_then_process_wrmsr(vcpu, MSR_IA32_XSS); + run_guest_then_process_wrmsr(vcpu, MSR_IA32_XSS); =20 - run_guest_then_process_rdmsr(vm, MSR_IA32_FLUSH_CMD); - run_guest_then_process_wrmsr(vm, MSR_IA32_FLUSH_CMD); - run_guest_then_process_wrmsr(vm, MSR_IA32_FLUSH_CMD); + run_guest_then_process_rdmsr(vcpu, MSR_IA32_FLUSH_CMD); + run_guest_then_process_wrmsr(vcpu, MSR_IA32_FLUSH_CMD); + run_guest_then_process_wrmsr(vcpu, MSR_IA32_FLUSH_CMD); =20 - run_guest_then_process_wrmsr(vm, MSR_NON_EXISTENT); - run_guest_then_process_rdmsr(vm, MSR_NON_EXISTENT); + run_guest_then_process_wrmsr(vcpu, MSR_NON_EXISTENT); + run_guest_then_process_rdmsr(vcpu, MSR_NON_EXISTENT); =20 /* Confirm the guest completed without issues. */ - run_guest_then_process_ucall_done(vm); + run_guest_then_process_ucall_done(vcpu); } else { printf("To run the instruction emulated tests set the module parameter '= kvm.force_emulation_prefix=3D1'\n"); } @@ -616,16 +608,16 @@ static void test_msr_filter_allow(void) { kvm_vm_free(vm); } =20 -static int handle_ucall(struct kvm_vm *vm) +static int handle_ucall(struct kvm_vcpu *vcpu) { struct ucall uc; =20 - switch (get_ucall(vm, VCPU_ID, &uc)) { + switch (get_ucall(vcpu->vm, vcpu->id, &uc)) { case UCALL_ABORT: TEST_FAIL("Guest assertion not met"); break; case UCALL_SYNC: - vm_ioctl(vm, KVM_X86_SET_MSR_FILTER, &no_filter_deny); + vm_ioctl(vcpu->vm, KVM_X86_SET_MSR_FILTER, &no_filter_deny); break; case UCALL_DONE: return 1; @@ -673,21 +665,21 @@ static void handle_wrmsr(struct kvm_run *run) } } =20 -static void test_msr_filter_deny(void) { +static void test_msr_filter_deny(void) +{ struct kvm_enable_cap cap =3D { .cap =3D KVM_CAP_X86_USER_SPACE_MSR, .args[0] =3D KVM_MSR_EXIT_REASON_INVAL | KVM_MSR_EXIT_REASON_UNKNOWN | KVM_MSR_EXIT_REASON_FILTER, }; + struct kvm_vcpu *vcpu; struct kvm_vm *vm; struct kvm_run *run; int rc; =20 - /* Create VM */ - vm =3D vm_create_default(VCPU_ID, 0, guest_code_filter_deny); - vcpu_set_cpuid(vm, VCPU_ID, kvm_get_supported_cpuid()); - run =3D vcpu_state(vm, VCPU_ID); + vm =3D vm_create_with_one_vcpu(&vcpu, guest_code_filter_deny); + run =3D vcpu->run; =20 rc =3D kvm_check_cap(KVM_CAP_X86_USER_SPACE_MSR); TEST_ASSERT(rc, "KVM_CAP_X86_USER_SPACE_MSR is available"); @@ -700,9 +692,7 @@ static void test_msr_filter_deny(void) { vm_ioctl(vm, KVM_X86_SET_MSR_FILTER, &filter_deny); =20 while (1) { - rc =3D _vcpu_run(vm, VCPU_ID); - - TEST_ASSERT(rc =3D=3D 0, "vcpu_run failed: %d\n", rc); + vcpu_run(vm, vcpu->id); =20 switch (run->exit_reason) { case KVM_EXIT_X86_RDMSR: @@ -712,7 +702,7 @@ static void test_msr_filter_deny(void) { handle_wrmsr(run); break; case KVM_EXIT_IO: - if (handle_ucall(vm)) + if (handle_ucall(vcpu)) goto done; break; } @@ -726,17 +716,17 @@ static void test_msr_filter_deny(void) { kvm_vm_free(vm); } =20 -static void test_msr_permission_bitmap(void) { +static void test_msr_permission_bitmap(void) +{ struct kvm_enable_cap cap =3D { .cap =3D KVM_CAP_X86_USER_SPACE_MSR, .args[0] =3D KVM_MSR_EXIT_REASON_FILTER, }; + struct kvm_vcpu *vcpu; struct kvm_vm *vm; int rc; =20 - /* Create VM */ - vm =3D vm_create_default(VCPU_ID, 0, guest_code_permission_bitmap); - vcpu_set_cpuid(vm, VCPU_ID, kvm_get_supported_cpuid()); + vm =3D vm_create_with_one_vcpu(&vcpu, guest_code_permission_bitmap); =20 rc =3D kvm_check_cap(KVM_CAP_X86_USER_SPACE_MSR); TEST_ASSERT(rc, "KVM_CAP_X86_USER_SPACE_MSR is available"); @@ -746,11 +736,12 @@ static void test_msr_permission_bitmap(void) { TEST_ASSERT(rc, "KVM_CAP_X86_MSR_FILTER is available"); =20 vm_ioctl(vm, KVM_X86_SET_MSR_FILTER, &filter_fs); - run_guest_then_process_rdmsr(vm, MSR_FS_BASE); - TEST_ASSERT(run_guest_then_process_ucall(vm) =3D=3D UCALL_SYNC, "Expected= ucall state to be UCALL_SYNC."); + run_guest_then_process_rdmsr(vcpu, MSR_FS_BASE); + TEST_ASSERT(run_guest_then_process_ucall(vcpu) =3D=3D UCALL_SYNC, + "Expected ucall state to be UCALL_SYNC."); vm_ioctl(vm, KVM_X86_SET_MSR_FILTER, &filter_gs); - run_guest_then_process_rdmsr(vm, MSR_GS_BASE); - run_guest_then_process_ucall_done(vm); + run_guest_then_process_rdmsr(vcpu, MSR_GS_BASE); + run_guest_then_process_ucall_done(vcpu); =20 kvm_vm_free(vm); } --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:00 2026 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 7364CC4167B for ; Fri, 11 Mar 2022 05:59:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347534AbiCKF6k (ORCPT ); Fri, 11 Mar 2022 00:58:40 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59304 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346673AbiCKFxv (ORCPT ); Fri, 11 Mar 2022 00:53:51 -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 B82AA6344 for ; Thu, 10 Mar 2022 21:52:37 -0800 (PST) Received: by mail-pl1-x64a.google.com with SMTP id q8-20020a170902f78800b00151cc484688so3989346pln.20 for ; Thu, 10 Mar 2022 21:52:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=EG76RmjpT36oc/OYWnIelI/676foWe9jWdF9au7Hu10=; b=Js+NAHJdk6Ux7fMRiJFASq0FtWxMG4ry18aV8wwU00YK06PiDx5ZN4HLOGk2cN+XjP KxymBtCzRfUVkd4FEzePBr2hVSA3wLjSxueXeE8HbOw1VJVH0VJjglAwMYhOZhy5dSFq 1z8/2aPFfWZhRNiTojvhbHis+az276ZQL3fpvFMYo0lspobg4bKcFfH1s++RZleo4xFM N9wdrsQ59lfCJIUyLH6tmLK8ISXp1pRVmHuIdfkLSbBvdMiMHg8DwT8ENyDS/qO3Nc3c O39WZpxX+JQpW7FIaI8X/RyM5nLQ9ltNDO+e/7M9w4t6gej2dx3VX1yx3CVDcPoOxNhy dzdw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=EG76RmjpT36oc/OYWnIelI/676foWe9jWdF9au7Hu10=; b=o3C+0wdfTwcezyzJyJ6ARiyPRoTycJqc62NUNqTwzLnLHQ2z4aOJOuLsCrWyy6U4/v tlA/u/YfiV6KVxHCOz0DY7PfYwjdjKtjExfmRnbM4eu+2FpsZaI9fuBYG+TVhvontlbg 58I2dFKC5Ktxxwc9e4wMf274WaKbsuH+r2dmAAKL8TOfJJ6Eer+RKfj0AtOFY/GmQ43k HEaQLuM+E789yHD+T00sAYf+mF1xr4z06CTVVPRYeRAIu/HCGitYvOMcos50A/nshTYA A4qK3qFmKKv7Jl3qYsZlyo4HdYvCk0P4rdySdJKRaYrlJ0R882EVFOF0F5lc9H7F8+8B rcrQ== X-Gm-Message-State: AOAM531lmaB1n73KpS7OW+xETWQK09jyFwt4wrwjSAPlHai4shbmQa/5 iqaW4U4o1JvY0cE4HrAy+MgAEuqv5L0QX2AqpvZwZ3zuPVPk5xBDfE+uAb6MzBPocgH3xGID8bY F8G/+4Tit5uxAN1WTaWGq1SywInWthY0MRguNm3CNyTaspaD3FPTKbcFJHCx5vBC3O/6hTA== X-Google-Smtp-Source: ABdhPJxr/GvkFCYLQqvtdJqyR+cAjzBSQVwxHqBpvFxx1Zl5wUtYShVzOhZeH8qLlxoAlRU2gSSkU2ermug= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:90b:4d81:b0:1bf:8ce4:4f51 with SMTP id oj1-20020a17090b4d8100b001bf8ce44f51mr461471pjb.0.1646977956785; Thu, 10 Mar 2022 21:52:36 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:05 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-55-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 054/105] KVM: selftests: Convert vmx_exception_with_invalid_guest_state away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../vmx_exception_with_invalid_guest_state.c | 62 +++++++++++-------- 1 file changed, 36 insertions(+), 26 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/vmx_exception_with_invalid_= guest_state.c b/tools/testing/selftests/kvm/x86_64/vmx_exception_with_inval= id_guest_state.c index 27a850f3d7ce..70b30583e50d 100644 --- a/tools/testing/selftests/kvm/x86_64/vmx_exception_with_invalid_guest_s= tate.c +++ b/tools/testing/selftests/kvm/x86_64/vmx_exception_with_invalid_guest_s= tate.c @@ -10,10 +10,6 @@ =20 #include "kselftest.h" =20 -#define VCPU_ID 0 - -static struct kvm_vm *vm; - static void guest_ud_handler(struct ex_regs *regs) { /* Loop on the ud2 until guest state is made invalid. */ @@ -24,11 +20,11 @@ static void guest_code(void) asm volatile("ud2"); } =20 -static void __run_vcpu_with_invalid_state(void) +static void __run_vcpu_with_invalid_state(struct kvm_vcpu *vcpu) { - struct kvm_run *run =3D vcpu_state(vm, VCPU_ID); + struct kvm_run *run =3D vcpu->run; =20 - vcpu_run(vm, VCPU_ID); + vcpu_run(vcpu->vm, vcpu->id); =20 TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_INTERNAL_ERROR, "Expected KVM_EXIT_INTERNAL_ERROR, got %d (%s)\n", @@ -38,15 +34,15 @@ static void __run_vcpu_with_invalid_state(void) run->emulation_failure.suberror); } =20 -static void run_vcpu_with_invalid_state(void) +static void run_vcpu_with_invalid_state(struct kvm_vcpu *vcpu) { /* * Always run twice to verify KVM handles the case where _KVM_ queues * an exception with invalid state and then exits to userspace, i.e. * that KVM doesn't explode if userspace ignores the initial error. */ - __run_vcpu_with_invalid_state(); - __run_vcpu_with_invalid_state(); + __run_vcpu_with_invalid_state(vcpu); + __run_vcpu_with_invalid_state(vcpu); } =20 static void set_timer(void) @@ -59,33 +55,43 @@ static void set_timer(void) ASSERT_EQ(setitimer(ITIMER_REAL, &timer, NULL), 0); } =20 -static void set_or_clear_invalid_guest_state(bool set) +static void set_or_clear_invalid_guest_state(struct kvm_vcpu *vcpu, bool s= et) { static struct kvm_sregs sregs; =20 if (!sregs.cr0) - vcpu_sregs_get(vm, VCPU_ID, &sregs); + vcpu_sregs_get(vcpu->vm, vcpu->id, &sregs); sregs.tr.unusable =3D !!set; - vcpu_sregs_set(vm, VCPU_ID, &sregs); + vcpu_sregs_set(vcpu->vm, vcpu->id, &sregs); } =20 -static void set_invalid_guest_state(void) +static void set_invalid_guest_state(struct kvm_vcpu *vcpu) { - set_or_clear_invalid_guest_state(true); + set_or_clear_invalid_guest_state(vcpu, true); } =20 -static void clear_invalid_guest_state(void) +static void clear_invalid_guest_state(struct kvm_vcpu *vcpu) { - set_or_clear_invalid_guest_state(false); + set_or_clear_invalid_guest_state(vcpu, false); +} + +static struct kvm_vcpu *get_set_sigalrm_vcpu(struct kvm_vcpu *__vcpu) +{ + static struct kvm_vcpu *vcpu =3D NULL; + + if (__vcpu) + vcpu =3D __vcpu; + return vcpu; } =20 static void sigalrm_handler(int sig) { + struct kvm_vcpu *vcpu =3D get_set_sigalrm_vcpu(NULL); struct kvm_vcpu_events events; =20 TEST_ASSERT(sig =3D=3D SIGALRM, "Unexpected signal =3D %d", sig); =20 - vcpu_events_get(vm, VCPU_ID, &events); + vcpu_events_get(vcpu->vm, vcpu->id, &events); =20 /* * If an exception is pending, attempt KVM_RUN with invalid guest, @@ -93,8 +99,8 @@ static void sigalrm_handler(int sig) * between KVM queueing an exception and re-entering the guest. */ if (events.exception.pending) { - set_invalid_guest_state(); - run_vcpu_with_invalid_state(); + set_invalid_guest_state(vcpu); + run_vcpu_with_invalid_state(vcpu); } else { set_timer(); } @@ -102,15 +108,19 @@ static void sigalrm_handler(int sig) =20 int main(int argc, char *argv[]) { + struct kvm_vcpu *vcpu; + struct kvm_vm *vm; + if (!is_intel_cpu() || vm_is_unrestricted_guest(NULL)) { print_skip("Must be run with kvm_intel.unrestricted_guest=3D0"); exit(KSFT_SKIP); } =20 - vm =3D vm_create_default(VCPU_ID, 0, (void *)guest_code); + vm =3D vm_create_with_one_vcpu(&vcpu, guest_code); + get_set_sigalrm_vcpu(vcpu); =20 vm_init_descriptor_tables(vm); - vcpu_init_descriptor_tables(vm, VCPU_ID); + vcpu_init_descriptor_tables(vm, vcpu->id); =20 vm_install_exception_handler(vm, UD_VECTOR, guest_ud_handler); =20 @@ -119,8 +129,8 @@ int main(int argc, char *argv[]) * KVM_RUN should induce a TRIPLE_FAULT in L2 as KVM doesn't support * emulating invalid guest state for L2. */ - set_invalid_guest_state(); - run_vcpu_with_invalid_state(); + set_invalid_guest_state(vcpu); + run_vcpu_with_invalid_state(vcpu); =20 /* * Verify KVM also handles the case where userspace gains control while @@ -129,11 +139,11 @@ int main(int argc, char *argv[]) * guest with invalid state when the handler interrupts KVM with an * exception pending. */ - clear_invalid_guest_state(); + clear_invalid_guest_state(vcpu); TEST_ASSERT(signal(SIGALRM, sigalrm_handler) !=3D SIG_ERR, "Failed to register SIGALRM handler, errno =3D %d (%s)", errno, strerror(errno)); =20 set_timer(); - run_vcpu_with_invalid_state(); + run_vcpu_with_invalid_state(vcpu); } --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 E9C70C433FE for ; Fri, 11 Mar 2022 05:59:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347094AbiCKF6A (ORCPT ); Fri, 11 Mar 2022 00:58:00 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58994 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346630AbiCKFxv (ORCPT ); Fri, 11 Mar 2022 00:53:51 -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 B84C464FD for ; Thu, 10 Mar 2022 21:52:39 -0800 (PST) Received: by mail-pl1-x64a.google.com with SMTP id d4-20020a170902f14400b001518350e5c7so4001626plb.13 for ; Thu, 10 Mar 2022 21:52:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=nJj229TRmV5L/s8dhQs+LqzdZ8PgCyr6F1iJqF+wT7c=; b=J/FNluQYD7eQse7hXITl1xID2UmuUj/0awu9XhdtJ4sWtrL0RAyMCwnqD7JAabkMNN teIpUMUqMzWChBNHEHg1LmtdM5ygOOoBD4vLZ9UpE7SwVbZfa5as6CEWCznXQejzXVfa SH9JDgxVQxQDZEv/4D4+vf/xNhtDi0athdoANfT4s0L5H9eXMbY/7zbu2jQR7etAo1eF DIzYAHjQnWyUaJ1FLUEj+Mpmu874wzsPt2KOv+xRB3F5JFIvi3xoCS9fiLTQ+BIu+R1k Za/81HX3fwOfBFpY/ZqTQ3gs10wsppltniuzlZ5uBCXajjEcLKYAoSId9paM/9eAhld/ qkgA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=nJj229TRmV5L/s8dhQs+LqzdZ8PgCyr6F1iJqF+wT7c=; b=rAl7FG7/GWz8/INU77tvR9gdq/QSLuyvBUI7Y7zAr2AfyUg9K+IcOko49HxU5rvZ0M zrPvle0erU6SQiYWSokyHfEKV5BqZXkeOG8HknNi5bxc8zLvgdEbKwTyql2bSkQOle4i 3XXYcEIcpWR5cbvBqmd/MlOuii2eh+qDfHAr+oGvCpvF7KRNz+ce59/t7XRKlJN056hb +oRfIe92Y1i+ix6UP5dKqXauR1RtQ53Jkp2yA1GhgG9TJjaUNbI7WpDWk+c3nx5ldnzf evfgJ6+6LxKlqyR22WF7Y/drITopQAg/BzHejnC/p0HBLkCTHyTSjFArCE1cRnRf5kS4 mYcg== X-Gm-Message-State: AOAM530aIoK58N0M9kUSwX4zxCl0kt/bWgJQGNjaqqgHd8joz5sSTMdL QHNvaTTOUyv9mOsTkbRnRH0FGG4/SNvmxrc5ITB63K36Gz/eeRlx7Hkpx4137tpoQChtQ2F1QAH QT9Am1EOqIC6Z8Aslr/3eqzeTgpetwUueMwpVWOY3gHQ5Dc6CqSubYIMmblb8s/cg6+CaEA== X-Google-Smtp-Source: ABdhPJx5gPw/d/bfoVNtbpOhROhFl4Bk6R5lHqqx80S/bN382ebnmrhAK79o4crBaZTskfN0KU84ZpMThTY= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:902:f643:b0:14d:7b8f:14b3 with SMTP id m3-20020a170902f64300b0014d7b8f14b3mr8665364plg.19.1646977958666; Thu, 10 Mar 2022 21:52:38 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:06 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-56-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 055/105] KVM: selftests: Convert tsc_msrs_test away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/x86_64/tsc_msrs_test.c | 35 +++++++++---------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/tsc_msrs_test.c b/tools/tes= ting/selftests/kvm/x86_64/tsc_msrs_test.c index a426078b16a3..3b7bf660eced 100644 --- a/tools/testing/selftests/kvm/x86_64/tsc_msrs_test.c +++ b/tools/testing/selftests/kvm/x86_64/tsc_msrs_test.c @@ -9,14 +9,12 @@ #include "kvm_util.h" #include "processor.h" =20 -#define VCPU_ID 0 - #define UNITY (1ull << 30) #define HOST_ADJUST (UNITY * 64) #define GUEST_STEP (UNITY * 4) #define ROUND(x) ((x + UNITY / 2) & -UNITY) #define rounded_rdmsr(x) ROUND(rdmsr(x)) -#define rounded_host_rdmsr(x) ROUND(vcpu_get_msr(vm, 0, x)) +#define rounded_host_rdmsr(x) ROUND(vcpu_get_msr(vm, vcpu->id, x)) =20 static void guest_code(void) { @@ -66,15 +64,13 @@ static void guest_code(void) GUEST_DONE(); } =20 -static void run_vcpu(struct kvm_vm *vm, uint32_t vcpuid, int stage) +static void run_vcpu(struct kvm_vcpu *vcpu, int stage) { struct ucall uc; =20 - vcpu_args_set(vm, vcpuid, 1, vcpuid); + vcpu_run(vcpu->vm, vcpu->id); =20 - vcpu_ioctl(vm, vcpuid, KVM_RUN, NULL); - - switch (get_ucall(vm, vcpuid, &uc)) { + switch (get_ucall(vcpu->vm, vcpu->id, &uc)) { case UCALL_SYNC: TEST_ASSERT(!strcmp((const char *)uc.args[0], "hello") && uc.args[1] =3D=3D stage + 1, "Stage %d: Unexpected register values = vmexit, got %lx", @@ -88,29 +84,30 @@ static void run_vcpu(struct kvm_vm *vm, uint32_t vcpuid= , int stage) __FILE__, uc.args[1], uc.args[2], uc.args[3]); default: TEST_ASSERT(false, "Unexpected exit: %s", - exit_reason_str(vcpu_state(vm, vcpuid)->exit_reason)); + exit_reason_str(vcpu->run->exit_reason)); } } =20 int main(void) { + struct kvm_vcpu *vcpu; struct kvm_vm *vm; uint64_t val; =20 - vm =3D vm_create_default(VCPU_ID, 0, guest_code); + vm =3D vm_create_with_one_vcpu(&vcpu, guest_code); =20 val =3D 0; ASSERT_EQ(rounded_host_rdmsr(MSR_IA32_TSC), val); ASSERT_EQ(rounded_host_rdmsr(MSR_IA32_TSC_ADJUST), val); =20 /* Guest: writes to MSR_IA32_TSC affect both MSRs. */ - run_vcpu(vm, VCPU_ID, 1); + run_vcpu(vcpu, 1); val =3D 1ull * GUEST_STEP; ASSERT_EQ(rounded_host_rdmsr(MSR_IA32_TSC), val); ASSERT_EQ(rounded_host_rdmsr(MSR_IA32_TSC_ADJUST), val); =20 /* Guest: writes to MSR_IA32_TSC_ADJUST affect both MSRs. */ - run_vcpu(vm, VCPU_ID, 2); + run_vcpu(vcpu, 2); val =3D 2ull * GUEST_STEP; ASSERT_EQ(rounded_host_rdmsr(MSR_IA32_TSC), val); ASSERT_EQ(rounded_host_rdmsr(MSR_IA32_TSC_ADJUST), val); @@ -119,18 +116,18 @@ int main(void) * Host: writes to MSR_IA32_TSC set the host-side offset * and therefore do not change MSR_IA32_TSC_ADJUST. */ - vcpu_set_msr(vm, 0, MSR_IA32_TSC, HOST_ADJUST + val); + vcpu_set_msr(vm, vcpu->id, MSR_IA32_TSC, HOST_ADJUST + val); ASSERT_EQ(rounded_host_rdmsr(MSR_IA32_TSC), HOST_ADJUST + val); ASSERT_EQ(rounded_host_rdmsr(MSR_IA32_TSC_ADJUST), val); - run_vcpu(vm, VCPU_ID, 3); + run_vcpu(vcpu, 3); =20 /* Host: writes to MSR_IA32_TSC_ADJUST do not modify the TSC. */ - vcpu_set_msr(vm, 0, MSR_IA32_TSC_ADJUST, UNITY * 123456); + vcpu_set_msr(vm, vcpu->id, MSR_IA32_TSC_ADJUST, UNITY * 123456); ASSERT_EQ(rounded_host_rdmsr(MSR_IA32_TSC), HOST_ADJUST + val); - ASSERT_EQ(vcpu_get_msr(vm, 0, MSR_IA32_TSC_ADJUST), UNITY * 123456); + ASSERT_EQ(vcpu_get_msr(vm, vcpu->id, MSR_IA32_TSC_ADJUST), UNITY * 123456= ); =20 /* Restore previous value. */ - vcpu_set_msr(vm, 0, MSR_IA32_TSC_ADJUST, val); + vcpu_set_msr(vm, vcpu->id, MSR_IA32_TSC_ADJUST, val); ASSERT_EQ(rounded_host_rdmsr(MSR_IA32_TSC), HOST_ADJUST + val); ASSERT_EQ(rounded_host_rdmsr(MSR_IA32_TSC_ADJUST), val); =20 @@ -138,7 +135,7 @@ int main(void) * Guest: writes to MSR_IA32_TSC_ADJUST do not destroy the * host-side offset and affect both MSRs. */ - run_vcpu(vm, VCPU_ID, 4); + run_vcpu(vcpu, 4); val =3D 3ull * GUEST_STEP; ASSERT_EQ(rounded_host_rdmsr(MSR_IA32_TSC), HOST_ADJUST + val); ASSERT_EQ(rounded_host_rdmsr(MSR_IA32_TSC_ADJUST), val); @@ -147,7 +144,7 @@ int main(void) * Guest: writes to MSR_IA32_TSC affect both MSRs, so the host-side * offset is now visible in MSR_IA32_TSC_ADJUST. */ - run_vcpu(vm, VCPU_ID, 5); + run_vcpu(vcpu, 5); val =3D 4ull * GUEST_STEP; ASSERT_EQ(rounded_host_rdmsr(MSR_IA32_TSC), val); ASSERT_EQ(rounded_host_rdmsr(MSR_IA32_TSC_ADJUST), val - HOST_ADJUST); --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 0A34AC433EF for ; Fri, 11 Mar 2022 05:59:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347175AbiCKF6L (ORCPT ); Fri, 11 Mar 2022 00:58:11 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58526 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346648AbiCKFxv (ORCPT ); Fri, 11 Mar 2022 00:53:51 -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 B72A52192 for ; Thu, 10 Mar 2022 21:52:40 -0800 (PST) Received: by mail-pl1-x64a.google.com with SMTP id d13-20020a170902b70d00b0015317d9f08bso2688977pls.1 for ; Thu, 10 Mar 2022 21:52:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=yYOWngW9swEKoLiocViJlPgmRX4RHGJvexYuDT9PE58=; b=V1xn4EL2rQjK9VxhDt12y6eHFft5VoAiqFGwVlfh7VrkqaFkdal58HTg+9wBCibVCg 29oPSxE4bRVMSW7GCvXTeImPeBIErbEeB/7SNeqMP3I72H6l86oiH/2Z3SDKlI6C5KC1 4Nkz3/T+eUN1Ao7dJRmrgnSp4pJTiNtBQ1kr+FkMRU9y90a0iRAFYD4PYfHR+sly0FoK Jb1gAYK/igayAcJod52RCrXBsHYAO+0X3c2Qy3GaOlC6HyvezWPYZqz/YWseHc5FrUY9 TQS6VqGmPgV27uAnuOb4gwKmbokb47vr5AAnkB3IrYgo3VcPRsTFdd5CPMBiythb06ML fO7w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=yYOWngW9swEKoLiocViJlPgmRX4RHGJvexYuDT9PE58=; b=FQdew/eq+bBUHrHqZYYLkuTM9H+lvbtDPpUEeA3iQycRmdtQwEsbZ/cTWnIAl/Bni3 q09cjngGIKSOgX55inT28YpYU5CYnVHNLryzeEBJoXDBuagcl7wazWTgLDeeUA0mUM57 tGGhAw8nHlzW+sCcYyUeVNcP3t132jKI61FAo7WdxA3mBP24XKt0lqRgi55CfYcN5gKB AkQRwG3klWgPl6c3if1CWkkWXq1sG9kJjPFOuPO9r32wU8GgpsrHfzAPzb7ExaLfJJe5 3g9ZTXncowKEPmMCJ08jaKxhU8X1dbGZ1pa1iLzrkksOhNA50tDSE+PoRn8QxpbZEajb M6mQ== X-Gm-Message-State: AOAM532TmXuKMYsgtcv+55PVobm6DrHWX8RXbLSGNEjpS+Z8x/8QaA7I xMCJVWcKguGgfPUqdrXSc7MfAeBgM36U8A4KnfnCtpaEr0dOwF5xwFO9u+CgS4C2hbpcgkjc6/E D9onTOc+miwD2U7lNm/54ss/f5f14VErc6sYpQ+rZLATVHdigzKliObsgI0Nsz+HfVJISWg== X-Google-Smtp-Source: ABdhPJxpFuwtvTbry1S7ITod/9XBv2lZURI65ms7NABslXFkXMfuPcV72oNPWXfzXUmgvymFEeKHsOWmZIg= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a05:6a00:2182:b0:4f6:5051:61db with SMTP id h2-20020a056a00218200b004f6505161dbmr8744162pfi.40.1646977960092; Thu, 10 Mar 2022 21:52:40 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:07 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-57-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 056/105] KVM: selftests: Convert kvm_clock_test away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/x86_64/kvm_clock_test.c | 23 ++++++++----------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/kvm_clock_test.c b/tools/te= sting/selftests/kvm/x86_64/kvm_clock_test.c index 97731454f3f3..2c1f850c4053 100644 --- a/tools/testing/selftests/kvm/x86_64/kvm_clock_test.c +++ b/tools/testing/selftests/kvm/x86_64/kvm_clock_test.c @@ -16,8 +16,6 @@ #include "kvm_util.h" #include "processor.h" =20 -#define VCPU_ID 0 - struct test_case { uint64_t kvmclock_base; int64_t realtime_offset; @@ -105,29 +103,27 @@ static void setup_clock(struct kvm_vm *vm, struct tes= t_case *test_case) vm_ioctl(vm, KVM_SET_CLOCK, &data); } =20 -static void enter_guest(struct kvm_vm *vm) +static void enter_guest(struct kvm_vcpu *vcpu) { struct kvm_clock_data start, end; - struct kvm_run *run; + struct kvm_run *run =3D vcpu->run; + struct kvm_vm *vm =3D vcpu->vm; struct ucall uc; - int i, r; - - run =3D vcpu_state(vm, VCPU_ID); + int i; =20 for (i =3D 0; i < ARRAY_SIZE(test_cases); i++) { setup_clock(vm, &test_cases[i]); =20 vm_ioctl(vm, KVM_GET_CLOCK, &start); =20 - r =3D _vcpu_run(vm, VCPU_ID); + vcpu_run(vcpu->vm, vcpu->id); vm_ioctl(vm, KVM_GET_CLOCK, &end); =20 - TEST_ASSERT(!r, "vcpu_run failed: %d\n", r); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "unexpected exit reason: %u (%s)", run->exit_reason, exit_reason_str(run->exit_reason)); =20 - switch (get_ucall(vm, VCPU_ID, &uc)) { + switch (get_ucall(vcpu->vm, vcpu->id, &uc)) { case UCALL_SYNC: handle_sync(&uc, &start, &end); break; @@ -178,6 +174,7 @@ static void check_clocksource(void) =20 int main(void) { + struct kvm_vcpu *vcpu; vm_vaddr_t pvti_gva; vm_paddr_t pvti_gpa; struct kvm_vm *vm; @@ -192,12 +189,12 @@ int main(void) =20 check_clocksource(); =20 - vm =3D vm_create_default(VCPU_ID, 0, guest_main); + vm =3D vm_create_with_one_vcpu(&vcpu, guest_main); =20 pvti_gva =3D vm_vaddr_alloc(vm, getpagesize(), 0x10000); pvti_gpa =3D addr_gva2gpa(vm, pvti_gva); - vcpu_args_set(vm, VCPU_ID, 2, pvti_gpa, pvti_gva); + vcpu_args_set(vm, vcpu->id, 2, pvti_gpa, pvti_gva); =20 - enter_guest(vm); + enter_guest(vcpu); kvm_vm_free(vm); } --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 81F74C4321E for ; Fri, 11 Mar 2022 05:59:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347548AbiCKF6p (ORCPT ); Fri, 11 Mar 2022 00:58:45 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59320 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346674AbiCKFxv (ORCPT ); Fri, 11 Mar 2022 00:53:51 -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 B8D6011A12 for ; Thu, 10 Mar 2022 21:52:42 -0800 (PST) Received: by mail-pl1-x64a.google.com with SMTP id j9-20020a170903024900b0015195e68490so3986396plh.19 for ; Thu, 10 Mar 2022 21:52:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=7cybGKQ7twwpsb/qnodDyF8Mn5LXVu4ZlYZ7x+hR7eE=; b=NRbOWYomFJU5rcwGuhVhK6pUeZd0VFoa7YkR9KcnQboKYAbUo8syVNH1PBl8kO4Zwz n+VsyRw9IcxN95utqJzP1V0HtKHkKJYs1o3grj4YXiotZuaYEYmhIHi+icd638OJEsOF 3ZJRIQJmLQUF37sscaNPRepes7SqSlK7PVMgG7E0GF0EOdsvcP3vJQ2elEV4WMJvstO3 sjViPs2KOWcfOl7cB/f8bINNh0ons0yyXRAQikdjInC8gMC0I1uRdoMigko1iv019G4D A+YfVnsBSyz4aeMFUEQJxENHGzHW2cnHXmCkwLyxSLtNeMyym9YZG/lSC35vjJ1UJkFQ BFpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=7cybGKQ7twwpsb/qnodDyF8Mn5LXVu4ZlYZ7x+hR7eE=; b=KB+KiedCsPHZYhTCWTnprC9h8Ihf2hGKQ27MeGEREE0L/E8zrNT7qa8pgJuK7vstXH eZzUqopARQMsFs2JRkps0H8YUSvoKvUBXov8pba8HmtkVCfwVfZHZyEWc4/JgogM189q vX+kFYt33HJXjIpPCZn3Oi8MdkO2bb7hefHXAj1akoggkvXF57zrT15q27A87Xpt6TrL yxX9NZNYdsszxBGt0mrwV3+75dU8AIu09TZyCWkms9C7Pk4UbVkpgO6ESy7TNP/lI+nU 3NReuDT+VMYTkdEpgxTwrSE57Pgnb8asdNGihdh4w5tj+R1/FErob45YGAlwisUNUkMH AJAw== X-Gm-Message-State: AOAM5334m/5HceAFF0UwxYWEdnjzIPPLsHxgKz078K8ptwZFW5ZgmOzD IpBSr47UrJFyOE6Rn75tduyZ0xNX97yY4lzf9/qv62xjQbujTjmxfTmMHr0vk6UdsO0O4eX3eEw I+IZz6EPDu2YTHtXpwwJ2KHOZCAaGTuPNyqqfv29LDmWnt1F9VrcToJPX8YYgeSRRdy/SbA== X-Google-Smtp-Source: ABdhPJzLD70AGjURuPHSsew9G6xF7zeOA14Yn1vRGVxEEbwnUT94A/qJoqtHo85gvyxbExcA7vh/EIUtpA8= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:903:2442:b0:151:e3e2:cbf9 with SMTP id l2-20020a170903244200b00151e3e2cbf9mr9088495pls.115.1646977961959; Thu, 10 Mar 2022 21:52:41 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:08 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-58-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 057/105] KVM: selftests: Convert hyperv_svm_test away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../testing/selftests/kvm/x86_64/hyperv_svm_test.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/hyperv_svm_test.c b/tools/t= esting/selftests/kvm/x86_64/hyperv_svm_test.c index 21f5ca9197da..46f1070e7297 100644 --- a/tools/testing/selftests/kvm/x86_64/hyperv_svm_test.c +++ b/tools/testing/selftests/kvm/x86_64/hyperv_svm_test.c @@ -21,7 +21,6 @@ #include "svm_util.h" #include "hyperv.h" =20 -#define VCPU_ID 1 #define L2_GUEST_STACK_SIZE 256 =20 struct hv_enlightenments { @@ -127,6 +126,7 @@ int main(int argc, char *argv[]) { vm_vaddr_t nested_gva =3D 0; =20 + struct kvm_vcpu *vcpu; struct kvm_vm *vm; struct kvm_run *run; struct ucall uc; @@ -137,20 +137,20 @@ int main(int argc, char *argv[]) exit(KSFT_SKIP); } /* Create VM */ - vm =3D vm_create_default(VCPU_ID, 0, guest_code); - vcpu_set_hv_cpuid(vm, VCPU_ID); - run =3D vcpu_state(vm, VCPU_ID); + vm =3D vm_create_with_one_vcpu(&vcpu, guest_code); + vcpu_set_hv_cpuid(vm, vcpu->id); + run =3D vcpu->run; vcpu_alloc_svm(vm, &nested_gva); - vcpu_args_set(vm, VCPU_ID, 1, nested_gva); + vcpu_args_set(vm, vcpu->id, 1, nested_gva); =20 for (stage =3D 1;; stage++) { - _vcpu_run(vm, VCPU_ID); + vcpu_run(vm, vcpu->id); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Stage %d: unexpected exit reason: %u (%s),\n", stage, run->exit_reason, exit_reason_str(run->exit_reason)); =20 - switch (get_ucall(vm, VCPU_ID, &uc)) { + switch (get_ucall(vm, vcpu->id, &uc)) { case UCALL_ABORT: TEST_FAIL("%s at %s:%ld", (const char *)uc.args[0], __FILE__, uc.args[1]); --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 3716FC4332F for ; Fri, 11 Mar 2022 05:59:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347351AbiCKF6X (ORCPT ); Fri, 11 Mar 2022 00:58:23 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59460 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346679AbiCKFxz (ORCPT ); Fri, 11 Mar 2022 00:53:55 -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 B925A12AC3 for ; Thu, 10 Mar 2022 21:52:44 -0800 (PST) Received: by mail-pl1-x649.google.com with SMTP id q8-20020a170902f78800b00151cc484688so3989683pln.20 for ; Thu, 10 Mar 2022 21:52:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=ZSUJTP9gEU1+SswDMGWGFfMC4wNzBrqEY1Iu8k+gKjY=; b=hgEdaubvD3SsWpIASY+NVnipCf7Mu1m914vVk1hqcmTx3KZPtQt+A7y3HP7DAsPyRG ZOe8s5jDNu6S503osvtsNhOjrprmN2qCVQv84a/RAYurJ8RBomLL3ovg2hl3V/p7a2IE BdwEnjpI1a2zR3an5y5nlxpcyAaSL9VB5trjh2JE5vrw9BeQbqF0aeFn19jaEeWaoeHU ln/iWpage12gfjRJXGGssHSLmHhZ2VI4QH14vSW190J0P4XUlezSjfv0IjIxIJ+IIkPv AS5oRUoW6X/fMImNIEpPACTzQXFFFuKZ67pbbLb2n2aILNoz3zlRMJ4jxBVCK9Nh1e5n 7VdA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=ZSUJTP9gEU1+SswDMGWGFfMC4wNzBrqEY1Iu8k+gKjY=; b=4x7LJuUsAvtbY8rCTtyyQd+JW9Eqrus+8APRFter2aviQtil5rE3IDmZ2vJVRfCgT/ tiuYsJ02bHvZofwwWSPIiBklLipBmX5Kfwxdw8Omd7XTpw4K/S2xTE6X1FiXWXv2JoJ7 PNeuMOph3RtFFKxRGc7KtBsmoHgHRKqQOt1Svr0nJl2+fBJJxW3ql+Ggc2pZQFWe+5s5 dYJ3OQj9mIQIG1paTpiV5SiJJzbyGC0rE8m7qKyJoqWox02BrRCVta3FLHYIhUujlBx+ Br2mgNSa+Yq3plNqxy23oO/WU1U2MMR9cysack8B8oSgc1jtLIovQ4QFxzMx0kiboV7d fBWw== X-Gm-Message-State: AOAM533GjlgPScuvMJSgK/2lYB+u7FTxIa5zQpWuQwfrlbVVHKb1blbn 0x1/dd0HlNdMuUDjKKDweEQ6pRBrztWYaJJNSqbQOC2xvo0wy9Bf+2GO1UFA/VCc2exzM8lvcGz apBHnWNrn1NDOEtNFlNXDKH8PcmsmM7O5z2cs8g7cVsEMxwBoTcRCoAS/g1Zi9sQEq0DhYQ== X-Google-Smtp-Source: ABdhPJy/IXC/H9MQzrSF7hzAq19c0hLy837X3JEIS27c+6W2dG/JInIC8tjWuL4+Gxqfze3nKwWyrhYSmw8= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:902:d4c2:b0:151:d590:a13d with SMTP id o2-20020a170902d4c200b00151d590a13dmr8627765plg.85.1646977963753; Thu, 10 Mar 2022 21:52:43 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:09 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-59-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 058/105] KVM: selftests: Convert hyperv_features away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/x86_64/hyperv_features.c | 51 +++++++++---------- 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/hyperv_features.c b/tools/t= esting/selftests/kvm/x86_64/hyperv_features.c index 672915ce73d8..52686e2f8d53 100644 --- a/tools/testing/selftests/kvm/x86_64/hyperv_features.c +++ b/tools/testing/selftests/kvm/x86_64/hyperv_features.c @@ -13,7 +13,6 @@ #include "processor.h" #include "hyperv.h" =20 -#define VCPU_ID 0 #define LINUX_OS_ID ((u64)0x8100 << 48) =20 extern unsigned char rdmsr_start; @@ -151,7 +150,7 @@ static void guest_hcall(vm_vaddr_t pgs_gpa, struct hcal= l_data *hcall) GUEST_DONE(); } =20 -static void hv_set_cpuid(struct kvm_vm *vm, struct kvm_cpuid2 *cpuid, +static void hv_set_cpuid(struct kvm_vcpu *vcpu, struct kvm_cpuid2 *cpuid, struct kvm_cpuid_entry2 *feat, struct kvm_cpuid_entry2 *recomm, struct kvm_cpuid_entry2 *dbg) @@ -162,15 +161,16 @@ static void hv_set_cpuid(struct kvm_vm *vm, struct kv= m_cpuid2 *cpuid, "failed to set HYPERV_CPUID_ENLIGHTMENT_INFO leaf"); TEST_ASSERT(set_cpuid(cpuid, dbg), "failed to set HYPERV_CPUID_SYNDBG_PLATFORM_CAPABILITIES leaf"); - vcpu_set_cpuid(vm, VCPU_ID, cpuid); + vcpu_set_cpuid(vcpu->vm, vcpu->id, cpuid); } =20 static void guest_test_msrs_access(void) { + struct kvm_vcpu *vcpu; struct kvm_run *run; struct kvm_vm *vm; struct ucall uc; - int stage =3D 0, r; + int stage =3D 0; struct kvm_cpuid_entry2 feat =3D { .function =3D HYPERV_CPUID_FEATURES }; @@ -189,24 +189,24 @@ static void guest_test_msrs_access(void) struct msr_data *msr; =20 while (true) { - vm =3D vm_create_default(VCPU_ID, 0, guest_msr); + vm =3D vm_create_with_one_vcpu(&vcpu, guest_msr); =20 msr_gva =3D vm_vaddr_alloc_page(vm); memset(addr_gva2hva(vm, msr_gva), 0x0, getpagesize()); msr =3D addr_gva2hva(vm, msr_gva); =20 - vcpu_args_set(vm, VCPU_ID, 1, msr_gva); - vcpu_enable_cap(vm, VCPU_ID, &cap); + vcpu_args_set(vm, vcpu->id, 1, msr_gva); + vcpu_enable_cap(vm, vcpu->id, &cap); =20 - vcpu_set_hv_cpuid(vm, VCPU_ID); + vcpu_set_hv_cpuid(vm, vcpu->id); =20 best =3D kvm_get_supported_hv_cpuid(); =20 vm_init_descriptor_tables(vm); - vcpu_init_descriptor_tables(vm, VCPU_ID); + vcpu_init_descriptor_tables(vm, vcpu->id); vm_install_exception_handler(vm, GP_VECTOR, guest_gp_handler); =20 - run =3D vcpu_state(vm, VCPU_ID); + run =3D vcpu->run; =20 switch (stage) { case 0: @@ -339,7 +339,7 @@ static void guest_test_msrs_access(void) */ cap.cap =3D KVM_CAP_HYPERV_SYNIC2; cap.args[0] =3D 0; - vcpu_enable_cap(vm, VCPU_ID, &cap); + vcpu_enable_cap(vm, vcpu->id, &cap); break; case 22: feat.eax |=3D HV_MSR_SYNIC_AVAILABLE; @@ -469,7 +469,7 @@ static void guest_test_msrs_access(void) break; } =20 - hv_set_cpuid(vm, best, &feat, &recomm, &dbg); + hv_set_cpuid(vcpu, best, &feat, &recomm, &dbg); =20 if (msr->idx) pr_debug("Stage %d: testing msr: 0x%x for %s\n", stage, @@ -477,13 +477,12 @@ static void guest_test_msrs_access(void) else pr_debug("Stage %d: finish\n", stage); =20 - r =3D _vcpu_run(vm, VCPU_ID); - TEST_ASSERT(!r, "vcpu_run failed: %d\n", r); + vcpu_run(vm, vcpu->id); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "unexpected exit reason: %u (%s)", run->exit_reason, exit_reason_str(run->exit_reason)); =20 - switch (get_ucall(vm, VCPU_ID, &uc)) { + switch (get_ucall(vm, vcpu->id, &uc)) { case UCALL_SYNC: TEST_ASSERT(uc.args[1] =3D=3D 0, "Unexpected stage: %ld (0 expected)\n", @@ -504,10 +503,11 @@ static void guest_test_msrs_access(void) =20 static void guest_test_hcalls_access(void) { + struct kvm_vcpu *vcpu; struct kvm_run *run; struct kvm_vm *vm; struct ucall uc; - int stage =3D 0, r; + int stage =3D 0; struct kvm_cpuid_entry2 feat =3D { .function =3D HYPERV_CPUID_FEATURES, .eax =3D HV_MSR_HYPERCALL_AVAILABLE @@ -527,10 +527,10 @@ static void guest_test_hcalls_access(void) struct kvm_cpuid2 *best; =20 while (true) { - vm =3D vm_create_default(VCPU_ID, 0, guest_hcall); + vm =3D vm_create_with_one_vcpu(&vcpu, guest_hcall); =20 vm_init_descriptor_tables(vm); - vcpu_init_descriptor_tables(vm, VCPU_ID); + vcpu_init_descriptor_tables(vm, vcpu->id); vm_install_exception_handler(vm, UD_VECTOR, guest_ud_handler); =20 /* Hypercall input/output */ @@ -541,14 +541,14 @@ static void guest_test_hcalls_access(void) hcall_params =3D vm_vaddr_alloc_page(vm); memset(addr_gva2hva(vm, hcall_params), 0x0, getpagesize()); =20 - vcpu_args_set(vm, VCPU_ID, 2, addr_gva2gpa(vm, hcall_page), hcall_params= ); - vcpu_enable_cap(vm, VCPU_ID, &cap); + vcpu_args_set(vm, vcpu->id, 2, addr_gva2gpa(vm, hcall_page), hcall_param= s); + vcpu_enable_cap(vm, vcpu->id, &cap); =20 - vcpu_set_hv_cpuid(vm, VCPU_ID); + vcpu_set_hv_cpuid(vm, vcpu->id); =20 best =3D kvm_get_supported_hv_cpuid(); =20 - run =3D vcpu_state(vm, VCPU_ID); + run =3D vcpu->run; =20 switch (stage) { case 0: @@ -643,7 +643,7 @@ static void guest_test_hcalls_access(void) break; } =20 - hv_set_cpuid(vm, best, &feat, &recomm, &dbg); + hv_set_cpuid(vcpu, best, &feat, &recomm, &dbg); =20 if (hcall->control) pr_debug("Stage %d: testing hcall: 0x%lx\n", stage, @@ -651,13 +651,12 @@ static void guest_test_hcalls_access(void) else pr_debug("Stage %d: finish\n", stage); =20 - r =3D _vcpu_run(vm, VCPU_ID); - TEST_ASSERT(!r, "vcpu_run failed: %d\n", r); + vcpu_run(vm, vcpu->id); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "unexpected exit reason: %u (%s)", run->exit_reason, exit_reason_str(run->exit_reason)); =20 - switch (get_ucall(vm, VCPU_ID, &uc)) { + switch (get_ucall(vm, vcpu->id, &uc)) { case UCALL_SYNC: TEST_ASSERT(uc.args[1] =3D=3D 0, "Unexpected stage: %ld (0 expected)\n", --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 5564BC43219 for ; Fri, 11 Mar 2022 05:59:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347453AbiCKF63 (ORCPT ); Fri, 11 Mar 2022 00:58:29 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59468 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346628AbiCKFxz (ORCPT ); Fri, 11 Mar 2022 00:53:55 -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 1DC891A815 for ; Thu, 10 Mar 2022 21:52:46 -0800 (PST) Received: by mail-pg1-x54a.google.com with SMTP id f21-20020a633815000000b0038105768c61so1017186pga.21 for ; Thu, 10 Mar 2022 21:52:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=7U7G4ALbdiuLS3ZHKyVSI7ZzJ4cEKDAs0AuckoMKbn8=; b=LuwwEux2gAAv/ehbXUSCHfeOQ2oNIFRHgMMd5lrdxiXjZkFA8RTpCwg7/Q+woF4ndy IKB1tSYRlZLL7ubSrKms5wGSpJ+pK8meHfe0nQuG/FNKTHlOwzErE+A/aG4QlZram2Zx Absg0t4M/6TzpWZFU7xJeRN26fOsfvfb3TBwZjGC6s+mlU3e+ZRVwxjoL+zieTgw5PVi 1QHB6eW+lgeZZt+5vFyRZJR1l+dp1yqQj61RAQ9xskPvkmrgL5ONY/bGuNI55zCVM9kW LryQmNYQYIa9qL3NxYoXRXQU1uFNpPO9tKUxrJQ8sHYbiER+rW5bTnAtRQBvgHWrRj0X XfRQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=7U7G4ALbdiuLS3ZHKyVSI7ZzJ4cEKDAs0AuckoMKbn8=; b=CcrnfOA8uGxoZ6knjjVsDVLxcVYNjd8HEbscXL1tKSB31Juyl4+XbtIoFW0wpRWNP1 BIQIx/TkcJ3ok+8lWg/M3WXEQ336ZVWqfL+/dmVbvHdxiz72vErojPqRifsktRBb3Qwg vykJegAZuTRZNb3CMfpm9Qqz1yblHmAuWVzqiQO/WvP1ryE0edg9tNs9avXRQNmnRrJO GSS9onSvFUDT7T3m+9G1RlUuG9gIeIXAoSe3vmtoO3zKW5v/W4rJm5NXu5tBbYC/vB2Z huIUMANWXjEEHUlYKk05otwOqT/zqJ3BTyqDjkuWhEfAyG7VksInrlYeQL0HSDFuXmMt fT4A== X-Gm-Message-State: AOAM533eEZs6EJF9JQ+lRsZ657MydyNtdiwQ0P2n1g0kCmMdxF02hm7H On3SA7447YaO8yIRXCMIxrQKQ7071Qc7TMcvZfFnAaknLerIJ+uZR0qd1IRx2VtPcm79sruR9yb Pw2J2fIE6xuMjDiWd17eNe0x614YTdNuAAomLNUHZ7Qz8uc1fOGBahoUu2hl5JwaNkPu2cQ== X-Google-Smtp-Source: ABdhPJzvoUwYnDlBdw2GhELRmmSWDdTSILCiFAtrzZQA4NYDbxPKoXGXVVcQePmODtuqxCS4eDnRfqZS+7E= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:902:ba8e:b0:151:ed65:fda4 with SMTP id k14-20020a170902ba8e00b00151ed65fda4mr8852878pls.127.1646977965338; Thu, 10 Mar 2022 21:52:45 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:10 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-60-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 059/105] KVM: selftests: Convert hyperv_clock away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/x86_64/hyperv_clock.c | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/hyperv_clock.c b/tools/test= ing/selftests/kvm/x86_64/hyperv_clock.c index e0b2bb1339b1..43584ddc4de0 100644 --- a/tools/testing/selftests/kvm/x86_64/hyperv_clock.c +++ b/tools/testing/selftests/kvm/x86_64/hyperv_clock.c @@ -171,22 +171,20 @@ static void guest_main(struct ms_hyperv_tsc_page *tsc= _page, vm_paddr_t tsc_page_ GUEST_DONE(); } =20 -#define VCPU_ID 0 - -static void host_check_tsc_msr_rdtsc(struct kvm_vm *vm) +static void host_check_tsc_msr_rdtsc(struct kvm_vcpu *vcpu) { u64 tsc_freq, r1, r2, t1, t2; s64 delta_ns; =20 - tsc_freq =3D vcpu_get_msr(vm, VCPU_ID, HV_X64_MSR_TSC_FREQUENCY); + tsc_freq =3D vcpu_get_msr(vcpu->vm, vcpu->id, HV_X64_MSR_TSC_FREQUENCY); TEST_ASSERT(tsc_freq > 0, "TSC frequency must be nonzero"); =20 /* First, check MSR-based clocksource */ r1 =3D rdtsc(); - t1 =3D vcpu_get_msr(vm, VCPU_ID, HV_X64_MSR_TIME_REF_COUNT); + t1 =3D vcpu_get_msr(vcpu->vm, vcpu->id, HV_X64_MSR_TIME_REF_COUNT); nop_loop(); r2 =3D rdtsc(); - t2 =3D vcpu_get_msr(vm, VCPU_ID, HV_X64_MSR_TIME_REF_COUNT); + t2 =3D vcpu_get_msr(vcpu->vm, vcpu->id, HV_X64_MSR_TIME_REF_COUNT); =20 TEST_ASSERT(t2 > t1, "Time reference MSR is not monotonic (%ld <=3D %ld)"= , t1, t2); =20 @@ -203,33 +201,34 @@ static void host_check_tsc_msr_rdtsc(struct kvm_vm *v= m) =20 int main(void) { + struct kvm_vcpu *vcpu; struct kvm_vm *vm; struct kvm_run *run; struct ucall uc; vm_vaddr_t tsc_page_gva; int stage; =20 - vm =3D vm_create_default(VCPU_ID, 0, guest_main); - run =3D vcpu_state(vm, VCPU_ID); + vm =3D vm_create_with_one_vcpu(&vcpu, guest_main); + run =3D vcpu->run; =20 - vcpu_set_hv_cpuid(vm, VCPU_ID); + vcpu_set_hv_cpuid(vm, vcpu->id); =20 tsc_page_gva =3D vm_vaddr_alloc_page(vm); memset(addr_gva2hva(vm, tsc_page_gva), 0x0, getpagesize()); TEST_ASSERT((addr_gva2gpa(vm, tsc_page_gva) & (getpagesize() - 1)) =3D=3D= 0, "TSC page has to be page aligned\n"); - vcpu_args_set(vm, VCPU_ID, 2, tsc_page_gva, addr_gva2gpa(vm, tsc_page_gva= )); + vcpu_args_set(vm, vcpu->id, 2, tsc_page_gva, addr_gva2gpa(vm, tsc_page_gv= a)); =20 - host_check_tsc_msr_rdtsc(vm); + host_check_tsc_msr_rdtsc(vcpu); =20 for (stage =3D 1;; stage++) { - _vcpu_run(vm, VCPU_ID); + vcpu_run(vm, vcpu->id); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Stage %d: unexpected exit reason: %u (%s),\n", stage, run->exit_reason, exit_reason_str(run->exit_reason)); =20 - switch (get_ucall(vm, VCPU_ID, &uc)) { + switch (get_ucall(vm, vcpu->id, &uc)) { case UCALL_ABORT: TEST_FAIL("%s at %s:%ld", (const char *)uc.args[0], __FILE__, uc.args[1]); --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 2B5C9C4332F for ; Fri, 11 Mar 2022 05:59:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347518AbiCKF6f (ORCPT ); Fri, 11 Mar 2022 00:58:35 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59032 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346685AbiCKFx4 (ORCPT ); Fri, 11 Mar 2022 00:53:56 -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 0201F24BD0 for ; Thu, 10 Mar 2022 21:52:47 -0800 (PST) Received: by mail-pg1-x549.google.com with SMTP id bh9-20020a056a02020900b0036c0d29eb3eso4229250pgb.9 for ; Thu, 10 Mar 2022 21:52:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=nUHZ1KA1ftEOMfEbikAYeJFQo8bEj6QMYdpYS9qK0NM=; b=Z0Q964YhE/4eI7sjNOXnSy4JgpCGRK68K2SXng9Zxoy3avE7ySYJ1cxXMO7qLV4bi0 6TzfoTkyHkqIbmxIeZep9oDChHausUCjOLLpaQI1hORgfxlOkGcXjFRFp7fCtX/YltoC SLSXT2pyx+zsii7/bubGymCHnZvTfjzsj2qEwNmM0FEhaFP2l2/ym+sX8hMFGXT/Dt/h yooCnKpvdllukAs4wELb4r5+KJMrtQi/Xcw7DCdzJCTYCU4U2W9BaON8fN6ghRjHduM8 lIrt2qMPFHn5CvoF9y2CoV0hP2MnTZ27ez7PxZ4CES5ZUgyOShYdNQh+R2K7HCXwqh91 gflg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=nUHZ1KA1ftEOMfEbikAYeJFQo8bEj6QMYdpYS9qK0NM=; b=3hbbhkER7dEy5mj0vb1/amyBC2KYeH9ZhevoAWDZT3ZYhHiohFQ7tgOW0rkqIPdTCb GjdZ/ed+nsBjw3H/gp9aQFEJY+iW9SvY4m4zkoZAPuQ71F3m07bQmCm4v+dcajMW55ai 25s1mwfeTDZLqmRpVzuvmHsLdVQNWKFPDHyFhHh9M2cBm4hSXTaVJyuHCBAOSMdXUGuI LYb8Mr99xgYa9VEmZ7QxR10s+8itPbFRLpwtelUisrdpDdWwED31UYBh3dBLAJO+5r/m f7tUxRsbNv7NtKdvdX6XA4g5OrpvAlJrAkDKVFrGZTrpQMUbib4rF0kKfxr1DShthOYY lKbA== X-Gm-Message-State: AOAM533G6+w0lMNW61HItDg3jopUQY+NskS/xuJj7uw+XWTO4oOOvBPW svBbj3pZ+SZ6Vgm99FnJjNxBKYUvVkKU1BoyI7+3cZ9MCosl624E3+d1ghUvIa8I/0RRoSn0DmZ WCA6v1+YV8sj2/L8dS7mnRGXJrSzfP4ZbjHfOPYokbjmz/UXziQFs7AxD4jRHLEBM6Yn1GQ== X-Google-Smtp-Source: ABdhPJz0fXDVhF/jmxD1s70qnp6Oy4ARUe3EyBDOzyQFlw1uQ90B6FVEG0XLJg/D5rvQPnIMW+1d0SaTWYY= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:90b:4d81:b0:1bf:8ce4:4f51 with SMTP id oj1-20020a17090b4d8100b001bf8ce44f51mr461518pjb.0.1646977966903; Thu, 10 Mar 2022 21:52:46 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:11 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-61-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 060/105] KVM: selftests: Convert evmcs_test away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../testing/selftests/kvm/x86_64/evmcs_test.c | 51 ++++++++++--------- 1 file changed, 26 insertions(+), 25 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/evmcs_test.c b/tools/testin= g/selftests/kvm/x86_64/evmcs_test.c index f97049ab045f..dc7c1eb28fd4 100644 --- a/tools/testing/selftests/kvm/x86_64/evmcs_test.c +++ b/tools/testing/selftests/kvm/x86_64/evmcs_test.c @@ -18,7 +18,6 @@ =20 #include "vmx.h" =20 -#define VCPU_ID 5 #define NMI_VECTOR 2 =20 static int ud_count; @@ -160,55 +159,56 @@ void guest_code(struct vmx_pages *vmx_pages) GUEST_DONE(); } =20 -void inject_nmi(struct kvm_vm *vm) +void inject_nmi(struct kvm_vcpu *vcpu) { struct kvm_vcpu_events events; =20 - vcpu_events_get(vm, VCPU_ID, &events); + vcpu_events_get(vcpu->vm, vcpu->id, &events); =20 events.nmi.pending =3D 1; events.flags |=3D KVM_VCPUEVENT_VALID_NMI_PENDING; =20 - vcpu_events_set(vm, VCPU_ID, &events); + vcpu_events_set(vcpu->vm, vcpu->id, &events); } =20 -static void save_restore_vm(struct kvm_vm *vm) +static struct kvm_vcpu *save_restore_vm(struct kvm_vm *vm, + struct kvm_vcpu *vcpu) { struct kvm_regs regs1, regs2; struct kvm_x86_state *state; =20 - state =3D vcpu_save_state(vm, VCPU_ID); + state =3D vcpu_save_state(vm, vcpu->id); memset(®s1, 0, sizeof(regs1)); - vcpu_regs_get(vm, VCPU_ID, ®s1); + vcpu_regs_get(vm, vcpu->id, ®s1); =20 kvm_vm_release(vm); =20 /* Restore state in a new VM. */ - kvm_vm_restart(vm); - vm_vcpu_add(vm, VCPU_ID); - vcpu_set_hv_cpuid(vm, VCPU_ID); - vcpu_enable_evmcs(vm, VCPU_ID); - vcpu_load_state(vm, VCPU_ID, state); + vcpu =3D vm_recreate_with_one_vcpu(vm); + vcpu_set_hv_cpuid(vm, vcpu->id); + vcpu_enable_evmcs(vm, vcpu->id); + vcpu_load_state(vm, vcpu->id, state); kvm_x86_state_cleanup(state); =20 memset(®s2, 0, sizeof(regs2)); - vcpu_regs_get(vm, VCPU_ID, ®s2); + vcpu_regs_get(vm, vcpu->id, ®s2); TEST_ASSERT(!memcmp(®s1, ®s2, sizeof(regs2)), "Unexpected register values after vcpu_load_state; rdi: %lx rsi: %lx= ", (ulong) regs2.rdi, (ulong) regs2.rsi); + return vcpu; } =20 int main(int argc, char *argv[]) { vm_vaddr_t vmx_pages_gva =3D 0; =20 + struct kvm_vcpu *vcpu; struct kvm_vm *vm; struct kvm_run *run; struct ucall uc; int stage; =20 - /* Create VM */ - vm =3D vm_create_default(VCPU_ID, 0, guest_code); + vm =3D vm_create_with_one_vcpu(&vcpu, guest_code); =20 if (!nested_vmx_supported() || !kvm_check_cap(KVM_CAP_NESTED_STATE) || @@ -217,28 +217,29 @@ int main(int argc, char *argv[]) exit(KSFT_SKIP); } =20 - vcpu_set_hv_cpuid(vm, VCPU_ID); - vcpu_enable_evmcs(vm, VCPU_ID); + vcpu_set_hv_cpuid(vm, vcpu->id); + vcpu_enable_evmcs(vm, vcpu->id); =20 vcpu_alloc_vmx(vm, &vmx_pages_gva); - vcpu_args_set(vm, VCPU_ID, 1, vmx_pages_gva); + vcpu_args_set(vm, vcpu->id, 1, vmx_pages_gva); =20 vm_init_descriptor_tables(vm); - vcpu_init_descriptor_tables(vm, VCPU_ID); + vcpu_init_descriptor_tables(vm, vcpu->id); vm_install_exception_handler(vm, UD_VECTOR, guest_ud_handler); vm_install_exception_handler(vm, NMI_VECTOR, guest_nmi_handler); =20 pr_info("Running L1 which uses EVMCS to run L2\n"); =20 for (stage =3D 1;; stage++) { - run =3D vcpu_state(vm, VCPU_ID); - _vcpu_run(vm, VCPU_ID); + run =3D vcpu->run; + + vcpu_run(vm, vcpu->id); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Stage %d: unexpected exit reason: %u (%s),\n", stage, run->exit_reason, exit_reason_str(run->exit_reason)); =20 - switch (get_ucall(vm, VCPU_ID, &uc)) { + switch (get_ucall(vm, vcpu->id, &uc)) { case UCALL_ABORT: TEST_FAIL("%s at %s:%ld", (const char *)uc.args[0], __FILE__, uc.args[1]); @@ -256,12 +257,12 @@ int main(int argc, char *argv[]) uc.args[1] =3D=3D stage, "Stage %d: Unexpected register values vmex= it, got %lx", stage, (ulong)uc.args[1]); =20 - save_restore_vm(vm); + vcpu =3D save_restore_vm(vm, vcpu); =20 /* Force immediate L2->L1 exit before resuming */ if (stage =3D=3D 8) { pr_info("Injecting NMI into L1 before L2 had a chance to run after rest= ore\n"); - inject_nmi(vm); + inject_nmi(vcpu); } =20 /* @@ -271,7 +272,7 @@ int main(int argc, char *argv[]) */ if (stage =3D=3D 9) { pr_info("Trying extra KVM_GET_NESTED_STATE/KVM_SET_NESTED_STATE cycle\n= "); - save_restore_vm(vm); + vcpu =3D save_restore_vm(vm, vcpu); } } =20 --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 9E87EC4167E for ; Fri, 11 Mar 2022 05:59:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347565AbiCKF6u (ORCPT ); Fri, 11 Mar 2022 00:58:50 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59500 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346689AbiCKFx4 (ORCPT ); Fri, 11 Mar 2022 00:53:56 -0500 Received: from mail-pf1-x44a.google.com (mail-pf1-x44a.google.com [IPv6:2607:f8b0:4864:20::44a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5C936CE8 for ; Thu, 10 Mar 2022 21:52:49 -0800 (PST) Received: by mail-pf1-x44a.google.com with SMTP id 127-20020a620685000000b004f6eaf868easo4595604pfg.22 for ; Thu, 10 Mar 2022 21:52:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=aIlast7SeDZbSse0VHs2W97AenslyGPrXfgogBD650o=; b=l5e1cJZ2A16f8VzkpHEyqFaLmuGTwxG7ksmG5c7EhA582nRuBR8RoX7SiewjgaB286 oaA8DOphbSm2bsq8s3739uz5ywbwPOjjkfot+16aGJ2fkBGqVezVFOfcZLWOHk3TG8jF adzbkVQi1N1I0OuzQFtiYj6g+VwzSdRbqDKfeeIe16l/xFTzTDd4QtAfRsUeX9HwtqEN bXxLLfQI6cZ2vr0flQ6ZGGcNyXOjzDhf1++6KGLrzDrdwADDHZ4Kq2fnNHmH5tv+Hkn9 Y1K851Fmki7jsE/0OVjezbG/vMXFFtPtQkA4Z8Dn7KU1aY07RmWb0Pq0s3QxPZA2y4By HVPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=aIlast7SeDZbSse0VHs2W97AenslyGPrXfgogBD650o=; b=WIYuSYLGQIucb3q3NCNisACyvshVU4sQtp19kU97UGQw73p7i6ufvkToL7qKpD6orm Z9UGbHGNm5lk4RM+nfXNNnZH5ik/NJS+J2aVLSqU2az6ksyC5E6++huf/oFXvQoP2uc8 y1QIo/j5L2JB7Qljg+igcXizVu246PiRRNrSaQipX8rWwQ3tYNQqYTfiF2yZVOZ8kEsh QzxKs1gqveqlbQ8OXoXH5c49HJIEmt+/ES5PBZHMMiW5otW6bmWiXebkL76UCRfVI2lr z7jbzC/65Zh5/YIa0bNr/XF2HU9RqVAGTwucHvyXbZENc7bJHi4r3Ha1yXoyy0/Hi1/C D2fg== X-Gm-Message-State: AOAM53199ba3B9Nk2Dr0Ap4EhJRK5ue0/ZGdVqnXokWpAq7x2svN7tjE o0VN3Mdb0Z3C9UgGQNKehyzqm0vA6mG5Ud9B9LQ40kn6G+KizUuuDl9CO/cF4lek0F2P6A7noRN h5o4+cO05tN/uwJk0FblrRo1JM0g3HXyVEkTxRFHV4sYhQJJNjvDKWhvxyUHSLDDvDmiBdw== X-Google-Smtp-Source: ABdhPJy8o0ETLg681mQJQCWaYBK9eIREsoErKcp3JUOp39fbKsF1ljnAK4pZR7aGlEseDYr8M7ARTZY9Dns= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a62:7a10:0:b0:4f6:9396:ddde with SMTP id v16-20020a627a10000000b004f69396dddemr8404463pfc.82.1646977968753; Thu, 10 Mar 2022 21:52:48 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:12 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-62-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 061/105] KVM: selftests: Convert emulator_error_test away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../kvm/x86_64/emulator_error_test.c | 65 ++++++++----------- 1 file changed, 28 insertions(+), 37 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/emulator_error_test.c b/too= ls/testing/selftests/kvm/x86_64/emulator_error_test.c index f070ff0224fa..77b302f653a8 100644 --- a/tools/testing/selftests/kvm/x86_64/emulator_error_test.c +++ b/tools/testing/selftests/kvm/x86_64/emulator_error_test.c @@ -11,7 +11,6 @@ #include "kvm_util.h" #include "vmx.h" =20 -#define VCPU_ID 1 #define PAGE_SIZE 4096 #define MAXPHYADDR 36 =20 @@ -28,14 +27,6 @@ static void guest_code(void) GUEST_DONE(); } =20 -static void run_guest(struct kvm_vm *vm) -{ - int rc; - - rc =3D _vcpu_run(vm, VCPU_ID); - TEST_ASSERT(rc =3D=3D 0, "vcpu_run failed: %d\n", rc); -} - /* * Accessors to get R/M, REG, and Mod bits described in the SDM vol 2, * figure 2-2 "Table Interpretation of ModR/M Byte (C8H)". @@ -57,9 +48,9 @@ static bool is_flds(uint8_t *insn_bytes, uint8_t insn_siz= e) GET_RM(insn_bytes[1]) !=3D 0x5; } =20 -static void process_exit_on_emulation_error(struct kvm_vm *vm) +static void process_exit_on_emulation_error(struct kvm_vcpu *vcpu) { - struct kvm_run *run =3D vcpu_state(vm, VCPU_ID); + struct kvm_run *run =3D vcpu->run; struct kvm_regs regs; uint8_t *insn_bytes; uint8_t insn_size; @@ -93,50 +84,49 @@ static void process_exit_on_emulation_error(struct kvm_= vm *vm) * contained an flds instruction that is 2-bytes in * length (ie: no prefix, no SIB, no displacement). */ - vcpu_regs_get(vm, VCPU_ID, ®s); + vcpu_regs_get(vcpu->vm, vcpu->id, ®s); regs.rip +=3D 2; - vcpu_regs_set(vm, VCPU_ID, ®s); + vcpu_regs_set(vcpu->vm, vcpu->id, ®s); } } } =20 -static void do_guest_assert(struct kvm_vm *vm, struct ucall *uc) +static void do_guest_assert(struct ucall *uc) { TEST_FAIL("%s at %s:%ld", (const char *)uc->args[0], __FILE__, uc->args[1]); } =20 -static void check_for_guest_assert(struct kvm_vm *vm) +static void check_for_guest_assert(struct kvm_vcpu *vcpu) { - struct kvm_run *run =3D vcpu_state(vm, VCPU_ID); struct ucall uc; =20 - if (run->exit_reason =3D=3D KVM_EXIT_IO && - get_ucall(vm, VCPU_ID, &uc) =3D=3D UCALL_ABORT) { - do_guest_assert(vm, &uc); + if (vcpu->run->exit_reason =3D=3D KVM_EXIT_IO && + get_ucall(vcpu->vm, vcpu->id, &uc) =3D=3D UCALL_ABORT) { + do_guest_assert(&uc); } } =20 -static void process_ucall_done(struct kvm_vm *vm) +static void process_ucall_done(struct kvm_vcpu *vcpu) { - struct kvm_run *run =3D vcpu_state(vm, VCPU_ID); + struct kvm_run *run =3D vcpu->run; struct ucall uc; =20 - check_for_guest_assert(vm); + check_for_guest_assert(vcpu); =20 TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Unexpected exit reason: %u (%s)", run->exit_reason, exit_reason_str(run->exit_reason)); =20 - TEST_ASSERT(get_ucall(vm, VCPU_ID, &uc) =3D=3D UCALL_DONE, + TEST_ASSERT(get_ucall(vcpu->vm, vcpu->id, &uc) =3D=3D UCALL_DONE, "Unexpected ucall command: %lu, expected UCALL_DONE (%d)", uc.cmd, UCALL_DONE); } =20 -static uint64_t process_ucall(struct kvm_vm *vm) +static uint64_t process_ucall(struct kvm_vcpu *vcpu) { - struct kvm_run *run =3D vcpu_state(vm, VCPU_ID); + struct kvm_run *run =3D vcpu->run; struct ucall uc; =20 TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, @@ -144,14 +134,14 @@ static uint64_t process_ucall(struct kvm_vm *vm) run->exit_reason, exit_reason_str(run->exit_reason)); =20 - switch (get_ucall(vm, VCPU_ID, &uc)) { + switch (get_ucall(vcpu->vm, vcpu->id, &uc)) { case UCALL_SYNC: break; case UCALL_ABORT: - do_guest_assert(vm, &uc); + do_guest_assert(&uc); break; case UCALL_DONE: - process_ucall_done(vm); + process_ucall_done(vcpu); break; default: TEST_ASSERT(false, "Unexpected ucall"); @@ -168,6 +158,7 @@ int main(int argc, char *argv[]) }; struct kvm_cpuid_entry2 *entry; struct kvm_cpuid2 *cpuid; + struct kvm_vcpu *vcpu; struct kvm_vm *vm; uint64_t gpa, pte; uint64_t *hva; @@ -176,20 +167,20 @@ int main(int argc, char *argv[]) /* Tell stdout not to buffer its content */ setbuf(stdout, NULL); =20 - vm =3D vm_create_default(VCPU_ID, 0, guest_code); - if (!kvm_check_cap(KVM_CAP_SMALLER_MAXPHYADDR)) { printf("module parameter 'allow_smaller_maxphyaddr' is not set. Skippin= g test.\n"); return 0; } =20 + vm =3D vm_create_with_one_vcpu(&vcpu, guest_code); + cpuid =3D kvm_get_supported_cpuid(); =20 entry =3D kvm_get_supported_cpuid_index(0x80000008, 0); entry->eax =3D (entry->eax & 0xffffff00) | MAXPHYADDR; set_cpuid(cpuid, entry); =20 - vcpu_set_cpuid(vm, VCPU_ID, cpuid); + vcpu_set_cpuid(vm, vcpu->id, cpuid); =20 rc =3D kvm_check_cap(KVM_CAP_EXIT_ON_EMULATION_FAILURE); TEST_ASSERT(rc, "KVM_CAP_EXIT_ON_EMULATION_FAILURE is unavailable"); @@ -204,14 +195,14 @@ int main(int argc, char *argv[]) virt_map(vm, MEM_REGION_GVA, MEM_REGION_GPA, 1); hva =3D addr_gpa2hva(vm, MEM_REGION_GPA); memset(hva, 0, PAGE_SIZE); - pte =3D vm_get_page_table_entry(vm, VCPU_ID, MEM_REGION_GVA); - vm_set_page_table_entry(vm, VCPU_ID, MEM_REGION_GVA, pte | (1ull << 36)); + pte =3D vm_get_page_table_entry(vm, vcpu->id, MEM_REGION_GVA); + vm_set_page_table_entry(vm, vcpu->id, MEM_REGION_GVA, pte | (1ull << 36)); =20 - run_guest(vm); - process_exit_on_emulation_error(vm); - run_guest(vm); + vcpu_run(vm, vcpu->id); + process_exit_on_emulation_error(vcpu); + vcpu_run(vm, vcpu->id); =20 - TEST_ASSERT(process_ucall(vm) =3D=3D UCALL_DONE, "Expected UCALL_DONE"); + TEST_ASSERT(process_ucall(vcpu) =3D=3D UCALL_DONE, "Expected UCALL_DONE"); =20 kvm_vm_free(vm); =20 --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 AD293C4167D for ; Fri, 11 Mar 2022 05:59:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347585AbiCKF6y (ORCPT ); Fri, 11 Mar 2022 00:58:54 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59316 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346692AbiCKFx4 (ORCPT ); Fri, 11 Mar 2022 00:53:56 -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 0B3BA31220 for ; Thu, 10 Mar 2022 21:52:51 -0800 (PST) Received: by mail-pg1-x54a.google.com with SMTP id u75-20020a63794e000000b003810e49ae0eso377234pgc.3 for ; Thu, 10 Mar 2022 21:52:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=md9Z2HGwLpUJPLh7hrz8fCfKl27Eqrxt7Q5qmGcaeqM=; b=T7ysRkVQy8+4RfPFqNX9XQ2dnPsihGlYKnx4JPa1vkHeIo+fG6Z6wGXmkEIx8lJ/Yl /H0nSxJPWBTClEbPFergwARs+GhSwwstsyKg9ngoj54fGpJANyUHPO8vbSgqFYOoMS5F xAZKx1YwmtzijePIOVqThUlON3lqTOQmN2r07I2pxM5Fe8appemcOg2CPPu7vv+U1LxH sBkXCQJWB3Oo1NY29VsmwmoSxlrkKCiiMc5GUNjbyehi+Q/SuOukOryQTijThKITozZX 9c7XRXGiWMPwmIKtmch6eTINlB9E6dHhsJXlOAQL9BVtgOVkC380UxC69iSrQ8sByjbG JOHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=md9Z2HGwLpUJPLh7hrz8fCfKl27Eqrxt7Q5qmGcaeqM=; b=JEgDXUU4dfdKSoeczhwyRRzTWcGUuwoUBa36bv58WJrBPeoRFopTP1PQ+DC0tbugAD NwdiMxvS2YQlrXV4HvyrJ602RTU2cex+g3ScpZ4V79QMh1xM2uiaRC2oOq78DiBEex3i KSPHap1DzY6FJlfMDxa+2qv0SFMAGDJq6V4Jc7AP1Oa6Wz37kYBVi5L/7cVUpo8edMX1 VdCTiR3rPzogKMK+mlW9eHS3RhTA1iHui+n5s2HETUgjmF8RHFrgliRTl/1/woPCgYeh wAWXVSx+8uxjZaocsJWYEC8KOR/lnbVIsf5XBHf43r6/hjALnw9eXjNr/gMsTwMogeL1 kIJw== X-Gm-Message-State: AOAM530ltiEXlftGCCi1A5Kv1m4B6jckUdoYhoHxmeKQrM8P/3NdjsvF +e64uyEVG4yvWeugfmFkH0d2Ye/DSwYBTo3YfALxv3kn5DmqtG0cNQHv7E+ZaN1BGrAnJL+9My4 IBQfjyJwoZiliyy+hSJigCpNltMGjE+kmEIum79xLpmEyNT4sfPB3gEZetGxoECJxlRb8mg== X-Google-Smtp-Source: ABdhPJyTMACpTql+gyx/pp8gmjenG4VnKafSVZnGtaRAiOzo9dn+wxq9zpGZC1ygQO3wxaBghTBxJLFVQ0c= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:aa7:8b14:0:b0:4f7:83b1:2e0b with SMTP id f20-20020aa78b14000000b004f783b12e0bmr4702259pfd.37.1646977970456; Thu, 10 Mar 2022 21:52:50 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:13 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-63-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 062/105] KVM: selftests: Convert debug_regs away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../testing/selftests/kvm/x86_64/debug_regs.c | 53 +++++++++---------- 1 file changed, 25 insertions(+), 28 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/debug_regs.c b/tools/testin= g/selftests/kvm/x86_64/debug_regs.c index 5f078db1bcba..b999c9753fc3 100644 --- a/tools/testing/selftests/kvm/x86_64/debug_regs.c +++ b/tools/testing/selftests/kvm/x86_64/debug_regs.c @@ -10,8 +10,6 @@ #include "processor.h" #include "apic.h" =20 -#define VCPU_ID 0 - #define DR6_BD (1 << 13) #define DR7_GD (1 << 13) =20 @@ -66,13 +64,11 @@ static void guest_code(void) GUEST_DONE(); } =20 -#define CLEAR_DEBUG() memset(&debug, 0, sizeof(debug)) -#define APPLY_DEBUG() vcpu_set_guest_debug(vm, VCPU_ID, &debug) #define CAST_TO_RIP(v) ((unsigned long long)&(v)) #define SET_RIP(v) do { \ - vcpu_regs_get(vm, VCPU_ID, ®s); \ + vcpu_regs_get(vm, vcpu->id, ®s); \ regs.rip =3D (v); \ - vcpu_regs_set(vm, VCPU_ID, ®s); \ + vcpu_regs_set(vm, vcpu->id, ®s); \ } while (0) #define MOVE_RIP(v) SET_RIP(regs.rip + (v)); =20 @@ -80,6 +76,7 @@ int main(void) { struct kvm_guest_debug debug; unsigned long long target_dr6, target_rip; + struct kvm_vcpu *vcpu; struct kvm_regs regs; struct kvm_run *run; struct kvm_vm *vm; @@ -101,14 +98,14 @@ int main(void) return 0; } =20 - vm =3D vm_create_default(VCPU_ID, 0, guest_code); - run =3D vcpu_state(vm, VCPU_ID); + vm =3D vm_create_with_one_vcpu(&vcpu, guest_code); + run =3D vcpu->run; =20 /* Test software BPs - int3 */ - CLEAR_DEBUG(); + memset(&debug, 0, sizeof(debug)); debug.control =3D KVM_GUESTDBG_ENABLE | KVM_GUESTDBG_USE_SW_BP; - APPLY_DEBUG(); - vcpu_run(vm, VCPU_ID); + vcpu_set_guest_debug(vm, vcpu->id, &debug); + vcpu_run(vm, vcpu->id); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_DEBUG && run->debug.arch.exception =3D=3D BP_VECTOR && run->debug.arch.pc =3D=3D CAST_TO_RIP(sw_bp), @@ -119,12 +116,12 @@ int main(void) =20 /* Test instruction HW BP over DR[0-3] */ for (i =3D 0; i < 4; i++) { - CLEAR_DEBUG(); + memset(&debug, 0, sizeof(debug)); debug.control =3D KVM_GUESTDBG_ENABLE | KVM_GUESTDBG_USE_HW_BP; debug.arch.debugreg[i] =3D CAST_TO_RIP(hw_bp); debug.arch.debugreg[7] =3D 0x400 | (1UL << (2*i+1)); - APPLY_DEBUG(); - vcpu_run(vm, VCPU_ID); + vcpu_set_guest_debug(vm, vcpu->id, &debug); + vcpu_run(vm, vcpu->id); target_dr6 =3D 0xffff0ff0 | (1UL << i); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_DEBUG && run->debug.arch.exception =3D=3D DB_VECTOR && @@ -141,13 +138,13 @@ int main(void) =20 /* Test data access HW BP over DR[0-3] */ for (i =3D 0; i < 4; i++) { - CLEAR_DEBUG(); + memset(&debug, 0, sizeof(debug)); debug.control =3D KVM_GUESTDBG_ENABLE | KVM_GUESTDBG_USE_HW_BP; debug.arch.debugreg[i] =3D CAST_TO_RIP(guest_value); debug.arch.debugreg[7] =3D 0x00000400 | (1UL << (2*i+1)) | (0x000d0000UL << (4*i)); - APPLY_DEBUG(); - vcpu_run(vm, VCPU_ID); + vcpu_set_guest_debug(vm, vcpu->id, &debug); + vcpu_run(vm, vcpu->id); target_dr6 =3D 0xffff0ff0 | (1UL << i); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_DEBUG && run->debug.arch.exception =3D=3D DB_VECTOR && @@ -167,15 +164,15 @@ int main(void) /* Test single step */ target_rip =3D CAST_TO_RIP(ss_start); target_dr6 =3D 0xffff4ff0ULL; - vcpu_regs_get(vm, VCPU_ID, ®s); + vcpu_regs_get(vm, vcpu->id, ®s); for (i =3D 0; i < (sizeof(ss_size) / sizeof(ss_size[0])); i++) { target_rip +=3D ss_size[i]; - CLEAR_DEBUG(); + memset(&debug, 0, sizeof(debug)); debug.control =3D KVM_GUESTDBG_ENABLE | KVM_GUESTDBG_SINGLESTEP | KVM_GUESTDBG_BLOCKIRQ; debug.arch.debugreg[7] =3D 0x00000400; - APPLY_DEBUG(); - vcpu_run(vm, VCPU_ID); + vcpu_set_guest_debug(vm, vcpu->id, &debug); + vcpu_run(vm, vcpu->id); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_DEBUG && run->debug.arch.exception =3D=3D DB_VECTOR && run->debug.arch.pc =3D=3D target_rip && @@ -188,11 +185,11 @@ int main(void) } =20 /* Finally test global disable */ - CLEAR_DEBUG(); + memset(&debug, 0, sizeof(debug)); debug.control =3D KVM_GUESTDBG_ENABLE | KVM_GUESTDBG_USE_HW_BP; debug.arch.debugreg[7] =3D 0x400 | DR7_GD; - APPLY_DEBUG(); - vcpu_run(vm, VCPU_ID); + vcpu_set_guest_debug(vm, vcpu->id, &debug); + vcpu_run(vm, vcpu->id); target_dr6 =3D 0xffff0ff0 | DR6_BD; TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_DEBUG && run->debug.arch.exception =3D=3D DB_VECTOR && @@ -205,12 +202,12 @@ int main(void) target_dr6); =20 /* Disable all debug controls, run to the end */ - CLEAR_DEBUG(); - APPLY_DEBUG(); + memset(&debug, 0, sizeof(debug)); + vcpu_set_guest_debug(vm, vcpu->id, &debug); =20 - vcpu_run(vm, VCPU_ID); + vcpu_run(vm, vcpu->id); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "KVM_EXIT_IO"); - cmd =3D get_ucall(vm, VCPU_ID, &uc); + cmd =3D get_ucall(vm, vcpu->id, &uc); TEST_ASSERT(cmd =3D=3D UCALL_DONE, "UCALL_DONE"); =20 kvm_vm_free(vm); --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 BBC89C41535 for ; Fri, 11 Mar 2022 05:59:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347602AbiCKF7B (ORCPT ); Fri, 11 Mar 2022 00:59:01 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59034 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346325AbiCKFx6 (ORCPT ); Fri, 11 Mar 2022 00:53:58 -0500 Received: from mail-pf1-x44a.google.com (mail-pf1-x44a.google.com [IPv6:2607:f8b0:4864:20::44a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4525133365 for ; Thu, 10 Mar 2022 21:52:53 -0800 (PST) Received: by mail-pf1-x44a.google.com with SMTP id m22-20020a628c16000000b004f6f1b43114so4636155pfd.3 for ; Thu, 10 Mar 2022 21:52:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=uj7mAABif4Ddq7lKfkCnuKGQskrveL83cSygqcTPo+k=; b=Op7LLtBAMNCU0RMvfN41LJyBMaXkfjyfp7KueQVqkA9yPKvSBHftgo7eTx7K9qL7zi ON9pQ6eBEbnFVonT/myDasV1FyqI9eLQLLGOATovuFVJkdGZGvx7UpGVoL/XTt27WKrY B+qGOuvb5r5Xqa2Vn4RfLrIMiqxJSiqh408Fhmrna6WAEf3cfEL3Lp4RTW1bg4FJSNBB yO9sreZ6kDsW70WGWdcXyvHaqhww9XgEcKJA2GlTUsPEnpSk308DdplTOlervi0iXn64 6AAOxJhB0X8u3M57WkNDsc6kvXbD54H0FNBXNmB/B4puFCZnIJrrwdAJjGyr2AwlAAmC Pskg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=uj7mAABif4Ddq7lKfkCnuKGQskrveL83cSygqcTPo+k=; b=kfVCqDlVWICUwm0wt/jcQLVlM8UhlH+EhKYH9n3QThjDTLyIoxxdaHgBDAxdU5XtoG VVtsdr3OEDTwBjlCxgWbhd8NQTdIqfqAFSSD40cAuJSvAJBMqZA2gSGYJcYUOJ6ylXR3 v8rsVl1ykhLnsDISNykjw5c3l6PiEiSq16Ubz9jD1aigNeQdFQMwGYMPhaVI4zTzLICs G//FlopmOOrqJTniX6/Tmm0Tda4NFcCLzzjjNn6XvPxqhAmCEmU5A4/29npQ+TZCQI0D rCP2LC99Oc700iur59iqFb4QRi+SHrVulneANDq716WnV4vOE2NmXx1pNHDKFjlTSSba Plqw== X-Gm-Message-State: AOAM533ur4XiNyBGzHKtMNJ4+zoZNQYIedDbA8ozf0Btyrms3mB+TPIa y879s3okPBUoy/m22eRCAHlzQW8GXMB2YBo3mCCkRH0VbmCwC6mx8ITjmvoyh6EFulOpbPkAmBW uKsddvmUxEAAMVPctbGvL0tV+UpkTB73Jxnwe9i9lmxZ1FnigJu3YEHKMS+qsJ3wiI3lOwg== X-Google-Smtp-Source: ABdhPJw3i5YMuAjcXxcAd2ain6eljOWqXL7G8Wtej+7wX9ZVUWL++AAQ8obxNd3wQd/C9r3fNBPXtvetzk8= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:90b:4d81:b0:1bf:8ce4:4f51 with SMTP id oj1-20020a17090b4d8100b001bf8ce44f51mr461558pjb.0.1646977971971; Thu, 10 Mar 2022 21:52:51 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:14 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-64-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 063/105] KVM: selftests: Add proper helper for advancing RIP in debug_regs From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../testing/selftests/kvm/x86_64/debug_regs.c | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/debug_regs.c b/tools/testin= g/selftests/kvm/x86_64/debug_regs.c index b999c9753fc3..487d0ae3e75f 100644 --- a/tools/testing/selftests/kvm/x86_64/debug_regs.c +++ b/tools/testing/selftests/kvm/x86_64/debug_regs.c @@ -65,19 +65,21 @@ static void guest_code(void) } =20 #define CAST_TO_RIP(v) ((unsigned long long)&(v)) -#define SET_RIP(v) do { \ - vcpu_regs_get(vm, vcpu->id, ®s); \ - regs.rip =3D (v); \ - vcpu_regs_set(vm, vcpu->id, ®s); \ - } while (0) -#define MOVE_RIP(v) SET_RIP(regs.rip + (v)); + +static void vcpu_skip_insn(struct kvm_vcpu *vcpu, int insn_len) +{ + struct kvm_regs regs; + + vcpu_regs_get(vcpu->vm, vcpu->id, ®s); + regs.rip +=3D insn_len; + vcpu_regs_set(vcpu->vm, vcpu->id, ®s); +} =20 int main(void) { struct kvm_guest_debug debug; unsigned long long target_dr6, target_rip; struct kvm_vcpu *vcpu; - struct kvm_regs regs; struct kvm_run *run; struct kvm_vm *vm; struct ucall uc; @@ -112,7 +114,7 @@ int main(void) "INT3: exit %d exception %d rip 0x%llx (should be 0x%llx)", run->exit_reason, run->debug.arch.exception, run->debug.arch.pc, CAST_TO_RIP(sw_bp)); - MOVE_RIP(1); + vcpu_skip_insn(vcpu, 1); =20 /* Test instruction HW BP over DR[0-3] */ for (i =3D 0; i < 4; i++) { @@ -134,7 +136,7 @@ int main(void) run->debug.arch.dr6, target_dr6); } /* Skip "nop" */ - MOVE_RIP(1); + vcpu_skip_insn(vcpu, 1); =20 /* Test data access HW BP over DR[0-3] */ for (i =3D 0; i < 4; i++) { @@ -156,15 +158,14 @@ int main(void) run->debug.arch.pc, CAST_TO_RIP(write_data), run->debug.arch.dr6, target_dr6); /* Rollback the 4-bytes "mov" */ - MOVE_RIP(-7); + vcpu_skip_insn(vcpu, -7); } /* Skip the 4-bytes "mov" */ - MOVE_RIP(7); + vcpu_skip_insn(vcpu, 7); =20 /* Test single step */ target_rip =3D CAST_TO_RIP(ss_start); target_dr6 =3D 0xffff4ff0ULL; - vcpu_regs_get(vm, vcpu->id, ®s); for (i =3D 0; i < (sizeof(ss_size) / sizeof(ss_size[0])); i++) { target_rip +=3D ss_size[i]; memset(&debug, 0, sizeof(debug)); --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 4163FC352A7 for ; Fri, 11 Mar 2022 05:59:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347622AbiCKF7H (ORCPT ); Fri, 11 Mar 2022 00:59:07 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59660 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346669AbiCKFyA (ORCPT ); Fri, 11 Mar 2022 00:54:00 -0500 Received: from mail-yb1-xb49.google.com (mail-yb1-xb49.google.com [IPv6:2607:f8b0:4864:20::b49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 426F865C6 for ; Thu, 10 Mar 2022 21:52:54 -0800 (PST) Received: by mail-yb1-xb49.google.com with SMTP id b70-20020a253449000000b0062c16d950c5so6536577yba.9 for ; Thu, 10 Mar 2022 21:52:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=BHTniUnZLHzExLKWJC5iuCglVl1tbe9p6eIowKy0GQM=; b=pwrwOwn9+tJo509wahAPqMGhQ2rvAbKv6/ghJQdd6I5mQ+Cjy4DKzBktwKWL86+Chk FnzXllpNtO/3FK2NDSSwYOhGaUm6ECpT2npxpiwI2GxgHdjfBQwdCYOfTahCA/lt7Mx7 b656+TF0aYMaisWYv5cRjl49hSw5SxaoCFcvreene5/tsV8CBb7aNojQ7AIssaRBwbBl vGqeumBoksGL42JZz81Dq9zaZ8WV/9DSS5cOKsuOsoi03DzCHtmxMx+fGLJvGhSm15A1 7H4EAtgSObUTA1CJRpvN0cRBNwq5AIJhWI2Ju71QZu2PHXuwUFMkMR/t/oDB3x8eTI8Z 3lKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=BHTniUnZLHzExLKWJC5iuCglVl1tbe9p6eIowKy0GQM=; b=dvebp7PR6tjcNhxQkCVtV19t8IReIA62j2Hv6ajvY5l15ckG05+zcyTD37fVInMD/t DFo6mathcmNGmoIN12uptCBxCooKkkO+GLDgivxkOrlQ+BR85sYoN6Z9m9CHu+j6i/SX NP1YB8xmq5/yLBDWNHx67UFnJt+d7uKbY2xLP8qImi1XsIPPucDYE/i4kW7ax3lBJQid i47+rsUxT83rZPeivLW3gS9LbaN/MXZFmPU8dx+Wl/d4+SLqQ577jqgsXLb/bQKLwKpn 4iyluHdoeaou5PSN80stkxEZeJ7NScMj1KatfmbHnJvEeBe2MzFt+UA4H4MGCuQVY0Og Ym7Q== X-Gm-Message-State: AOAM531OYNFic0w12X14ocZqwn/vhg321EiWmJ2LKNnMcLv4hxIixMMw nXet3oh49C8elGSldGfFBlQhdlWEnImhnJzJWdxIylzaAtQADcj9c/xpWACPHuifnHSr/zdC5tj 0HuOyq6NG2x6bSbA3cKXefrOCelmdM9SxV7Z9JuMw34yd5SXc3T93TYqz/7yxJ1ESKFYgag== X-Google-Smtp-Source: ABdhPJydwvYY8q1PnDU3RNwscBmDVt6S5yfy7oMnsJHXIa1RsuR2ODkdAzZ93yT/Rm1125zfUhsdQZowe1E= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a25:b11c:0:b0:62c:16d9:c028 with SMTP id g28-20020a25b11c000000b0062c16d9c028mr6971040ybj.288.1646977973807; Thu, 10 Mar 2022 21:52:53 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:15 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-65-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 064/105] KVM: selftests: Convert amx_test away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- tools/testing/selftests/kvm/x86_64/amx_test.c | 33 +++++++++---------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/amx_test.c b/tools/testing/= selftests/kvm/x86_64/amx_test.c index 89d2423a2ffd..cd5a71f5a7ac 100644 --- a/tools/testing/selftests/kvm/x86_64/amx_test.c +++ b/tools/testing/selftests/kvm/x86_64/amx_test.c @@ -25,7 +25,6 @@ # error This test is 64-bit only #endif =20 -#define VCPU_ID 0 #define X86_FEATURE_XSAVE (1 << 26) #define X86_FEATURE_OSXSAVE (1 << 27) =20 @@ -320,6 +319,7 @@ int main(int argc, char *argv[]) struct kvm_cpuid_entry2 *entry; struct kvm_regs regs1, regs2; bool amx_supported =3D false; + struct kvm_vcpu *vcpu; struct kvm_vm *vm; struct kvm_run *run; struct kvm_x86_state *state; @@ -332,7 +332,7 @@ int main(int argc, char *argv[]) vm_xsave_req_perm(XSTATE_XTILE_DATA_BIT); =20 /* Create VM */ - vm =3D vm_create_default(VCPU_ID, 0, guest_code); + vm =3D vm_create_with_one_vcpu(&vcpu, guest_code); =20 entry =3D kvm_get_supported_cpuid_entry(1); if (!(entry->ecx & X86_FEATURE_XSAVE)) { @@ -351,12 +351,12 @@ int main(int argc, char *argv[]) xsave_restore_size =3D entry->ecx; } =20 - run =3D vcpu_state(vm, VCPU_ID); - vcpu_regs_get(vm, VCPU_ID, ®s1); + run =3D vcpu->run; + vcpu_regs_get(vm, vcpu->id, ®s1); =20 /* Register #NM handler */ vm_init_descriptor_tables(vm); - vcpu_init_descriptor_tables(vm, VCPU_ID); + vcpu_init_descriptor_tables(vm, vcpu->id); vm_install_exception_handler(vm, NM_VECTOR, guest_nm_handler); =20 /* amx cfg for guest_code */ @@ -370,16 +370,16 @@ int main(int argc, char *argv[]) /* xsave data for guest_code */ xsavedata =3D vm_vaddr_alloc_pages(vm, 3); memset(addr_gva2hva(vm, xsavedata), 0, 3 * getpagesize()); - vcpu_args_set(vm, VCPU_ID, 3, amx_cfg, tiledata, xsavedata); + vcpu_args_set(vm, vcpu->id, 3, amx_cfg, tiledata, xsavedata); =20 for (stage =3D 1; ; stage++) { - _vcpu_run(vm, VCPU_ID); + vcpu_run(vm, vcpu->id); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Stage %d: unexpected exit reason: %u (%s),\n", stage, run->exit_reason, exit_reason_str(run->exit_reason)); =20 - switch (get_ucall(vm, VCPU_ID, &uc)) { + switch (get_ucall(vm, vcpu->id, &uc)) { case UCALL_ABORT: TEST_FAIL("%s at %s:%ld", (const char *)uc.args[0], __FILE__, uc.args[1]); @@ -404,7 +404,7 @@ int main(int argc, char *argv[]) * size subtract 8K amx size. */ amx_offset =3D xsave_restore_size - NUM_TILES*TILE_SIZE; - state =3D vcpu_save_state(vm, VCPU_ID); + state =3D vcpu_save_state(vm, vcpu->id); void *amx_start =3D (void *)state->xsave + amx_offset; void *tiles_data =3D (void *)addr_gva2hva(vm, tiledata); /* Only check TMM0 register, 1 tile */ @@ -425,22 +425,21 @@ int main(int argc, char *argv[]) TEST_FAIL("Unknown ucall %lu", uc.cmd); } =20 - state =3D vcpu_save_state(vm, VCPU_ID); + state =3D vcpu_save_state(vm, vcpu->id); memset(®s1, 0, sizeof(regs1)); - vcpu_regs_get(vm, VCPU_ID, ®s1); + vcpu_regs_get(vm, vcpu->id, ®s1); =20 kvm_vm_release(vm); =20 /* Restore state in a new VM. */ - kvm_vm_restart(vm); - vm_vcpu_add(vm, VCPU_ID); - vcpu_set_cpuid(vm, VCPU_ID, kvm_get_supported_cpuid()); - vcpu_load_state(vm, VCPU_ID, state); - run =3D vcpu_state(vm, VCPU_ID); + vcpu =3D vm_recreate_with_one_vcpu(vm); + vcpu_set_cpuid(vm, vcpu->id, kvm_get_supported_cpuid()); + vcpu_load_state(vm, vcpu->id, state); + run =3D vcpu->run; kvm_x86_state_cleanup(state); =20 memset(®s2, 0, sizeof(regs2)); - vcpu_regs_get(vm, VCPU_ID, ®s2); + vcpu_regs_get(vm, vcpu->id, ®s2); TEST_ASSERT(!memcmp(®s1, ®s2, sizeof(regs2)), "Unexpected register values after vcpu_load_state; rdi: %lx rsi: %l= x", (ulong) regs2.rdi, (ulong) regs2.rsi); --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 DEEAEC46467 for ; Fri, 11 Mar 2022 05:59:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347661AbiCKF7S (ORCPT ); Fri, 11 Mar 2022 00:59:18 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59296 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346675AbiCKFyB (ORCPT ); Fri, 11 Mar 2022 00:54:01 -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 17DEB4CD49 for ; Thu, 10 Mar 2022 21:52:56 -0800 (PST) Received: by mail-pg1-x54a.google.com with SMTP id 9-20020a630509000000b0037c8607d296so4214914pgf.22 for ; Thu, 10 Mar 2022 21:52:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=ps9uAAiwAcVTTH/yb1s5LSlXQ12+IJIbxw2+bvSNcUM=; b=oz4L0QnTrNVJLa/7xFrob+aTe6eCQjRBTc3fqhtXYWr2VOUFGT5f3rK+zYSuPzvB3S tVeEYA5Dbcx/mbUZD7BueJNjjLadap/nq2vQI/YSBN0RP+Vb3dCDGros7V7S0udvShNq Nnvnf43ZBppoTQw3J5HVLmAz0G+ABDQoSpFPolivqN61j2io7uo0dpAi+k+Kn7xN9eUB sJDOVI9n5UW09u7wMo3lenO6CBHEMd91CDYHTTUOsLMqWgQTunjpnxc2hgjEj+Nps97x phYMyxjvBqLDa/U2rQ3w0+KZiIezbrmwGfQDMTM0h9/tGvZuVdBZ+oiXU3ca//st+yoH MjBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=ps9uAAiwAcVTTH/yb1s5LSlXQ12+IJIbxw2+bvSNcUM=; b=u1WKtL6kJM+Vl+H4Dkq+q7QV+AE72FubIidxEPAp5alFNTheJy+cQkPLy0xSOo/eOH 0KOyb0G9CvVxFABRSemyEJfwtWvDo6aL9XJ8lj9uR3wBXPk/ddqqRXUC7C2khYP9WVkp fFLho9ttMsLpxklDMFVyQATueOIJeFVJiewn3j2AwzadWpKcHBm8YlZaMfnJa8r8kwg5 QtUvr2YyQpaOYPS1bdnOMkXlC+AocNIC3EWjzUM5FL1RLBkq2RcCm3GCyEpGzh6kd4P4 Q6H2iXkw4cgr0lDRSia1IaAbQmtRir2CuyCuN+9bp6I/1m1H5o2BLy/9F6k9d/U8htnQ TEag== X-Gm-Message-State: AOAM530ilZuYclmBUMixKxcv8zswAKjSOF78i6HpQqhLmSaIJ1J8E3CV 5ulhCl3N/wErt4pfFCAe5tqhUi9vDHKQsmIXfTtzUgpGQj+Oc/STIueFlqIAxgCG+gPMvdaCJH0 RRJGgzbCJhETxIXLj0vFmknXcFSAlWBaBITei0SwBJoX0Ko4SRSz+fgPhs7Nky3Q7gKBDAQ== X-Google-Smtp-Source: ABdhPJwSGlZHI+t/zrF/jeaWCb8h9SZnqc1mxWXnNYt+DArsN3L265yB76K4OZd+GRa6bx+5O9kzNVVP32w= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:90b:4d81:b0:1bf:8ce4:4f51 with SMTP id oj1-20020a17090b4d8100b001bf8ce44f51mr461584pjb.0.1646977975650; Thu, 10 Mar 2022 21:52:55 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:16 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-66-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 065/105] KVM: selftests: Convert cr4_cpuid_sync_test away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/x86_64/cr4_cpuid_sync_test.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/cr4_cpuid_sync_test.c b/too= ls/testing/selftests/kvm/x86_64/cr4_cpuid_sync_test.c index 6f6fd189dda3..d5615cd0b81b 100644 --- a/tools/testing/selftests/kvm/x86_64/cr4_cpuid_sync_test.c +++ b/tools/testing/selftests/kvm/x86_64/cr4_cpuid_sync_test.c @@ -21,7 +21,6 @@ =20 #define X86_FEATURE_XSAVE (1<<26) #define X86_FEATURE_OSXSAVE (1<<27) -#define VCPU_ID 1 =20 static inline bool cr4_cpuid_is_sync(void) { @@ -63,12 +62,12 @@ static void guest_code(void) =20 int main(int argc, char *argv[]) { + struct kvm_vcpu *vcpu; struct kvm_run *run; struct kvm_vm *vm; struct kvm_sregs sregs; struct kvm_cpuid_entry2 *entry; struct ucall uc; - int rc; =20 entry =3D kvm_get_supported_cpuid_entry(1); if (!(entry->ecx & X86_FEATURE_XSAVE)) { @@ -79,25 +78,23 @@ int main(int argc, char *argv[]) /* Tell stdout not to buffer its content */ setbuf(stdout, NULL); =20 - /* Create VM */ - vm =3D vm_create_default(VCPU_ID, 0, guest_code); - run =3D vcpu_state(vm, VCPU_ID); + vm =3D vm_create_with_one_vcpu(&vcpu, guest_code); + run =3D vcpu->run; =20 while (1) { - rc =3D _vcpu_run(vm, VCPU_ID); + vcpu_run(vm, vcpu->id); =20 - TEST_ASSERT(rc =3D=3D 0, "vcpu_run failed: %d\n", rc); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Unexpected exit reason: %u (%s),\n", run->exit_reason, exit_reason_str(run->exit_reason)); =20 - switch (get_ucall(vm, VCPU_ID, &uc)) { + switch (get_ucall(vm, vcpu->id, &uc)) { case UCALL_SYNC: /* emulate hypervisor clearing CR4.OSXSAVE */ - vcpu_sregs_get(vm, VCPU_ID, &sregs); + vcpu_sregs_get(vm, vcpu->id, &sregs); sregs.cr4 &=3D ~X86_CR4_OSXSAVE; - vcpu_sregs_set(vm, VCPU_ID, &sregs); + vcpu_sregs_set(vm, vcpu->id, &sregs); break; case UCALL_ABORT: TEST_FAIL("Guest CR4 bit (OSXSAVE) unsynchronized with CPUID bit."); --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 CA00DC3525A for ; Fri, 11 Mar 2022 05:59:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347636AbiCKF7N (ORCPT ); Fri, 11 Mar 2022 00:59:13 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59744 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346671AbiCKFyB (ORCPT ); Fri, 11 Mar 2022 00:54:01 -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 17BE61263C for ; Thu, 10 Mar 2022 21:52:57 -0800 (PST) Received: by mail-pl1-x649.google.com with SMTP id x6-20020a1709029a4600b0014efe26b04fso3977626plv.21 for ; Thu, 10 Mar 2022 21:52:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=XUXPD0nWjg99B9sTK5klaYVXSQj8HOXxZq7Zxx2uYqs=; b=q44++PDViHATwr4obLahML3WIIoMsZ0p5iHjjr4vMYBMmKZpOhsvKp7eKtflaFuNb0 oZZxf9x8Jn65vpk6Cc4xuVZl6wGmPIiBGNfEOSrPNmindXXdLEPBB02u4qouQYKBL10E Ghreja17ykck+V5TvLCFoHnFj7nMtxv62jLbYDg4INNzM+Qom9sqxtN3hoaVAeej0Ymo nKsHzP4vAgbjUgP48ztxbGUtY4AS01Rrc0mSYFDxGFUFEKYwwA2uKeyLJdAvebYvaijM XIGQfU65o/LmkX0KxOedss1CgpPCTryt5G/R6UWmLJ+f5ftoaNQ5P8JVeRwo7qlAuw9W rodQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=XUXPD0nWjg99B9sTK5klaYVXSQj8HOXxZq7Zxx2uYqs=; b=R5h098SvM5URMaGyDjpx0caxJoS/wadx1QyjKZe7a6cfjXjSjibhmeYNDzbxLr6BXO 8Be3oWCl1UmFN44XwrflMzktecuQf4Q+Ywinr9iE+rcyz4BArgDP9Eb/HIMyTdCbo+BD fTeQZ7r6wwWAK61+6hgYJYkTvuYiLqyPvPTPKKdl+tOGryO944GdqQD3p35OUp9SVUKI 8mags2TPmUDiZGzO8/6jX6xW1itRgWZ6ZNZNa2CoQmrBRxpwm5qmZL1gYj6VNTgAGgv9 Aa4rDTs2cNoD3Qb86UYbyq2QzBCBePEWnIKK1VtDCJWj4jTWzSJx42ELTSi2LkwxUBGe z4jw== X-Gm-Message-State: AOAM530DvY8XDl7GLu3p7l1roRmF0X8tsJsSQOIfWhTC0n6GFm4QSLH0 SD6LDuoqrrj4r/2jfP0xr4vTwo/h8CvDhz2XRiaXhPzIXWbkT6t6z96uDIw9R4Br3AzUziqjtTk d2IvRJbBT9llgBQ0YVohcKjSR5u3SFmb3TPBu4QuRotIW3/PWXcRvM0LjDCzRRQ2cRturpg== X-Google-Smtp-Source: ABdhPJyh6KD+oga8p2s5R/j/GBTjxhNXb96cwa2RkrdjggzYtJr4uXfRQ8JH5Z5PYyvECqpCfdyM/17lSCM= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:90a:788f:b0:1bd:59c5:748e with SMTP id x15-20020a17090a788f00b001bd59c5748emr20071395pjk.158.1646977977332; Thu, 10 Mar 2022 21:52:57 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:17 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-67-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 066/105] KVM: selftests: Convert cpuid_test away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../testing/selftests/kvm/x86_64/cpuid_test.c | 29 +++++++++---------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/cpuid_test.c b/tools/testin= g/selftests/kvm/x86_64/cpuid_test.c index 16d2465c5634..76cdd0d10757 100644 --- a/tools/testing/selftests/kvm/x86_64/cpuid_test.c +++ b/tools/testing/selftests/kvm/x86_64/cpuid_test.c @@ -12,8 +12,6 @@ #include "kvm_util.h" #include "processor.h" =20 -#define VCPU_ID 0 - /* CPUIDs known to differ */ struct { u32 function; @@ -118,13 +116,13 @@ static void compare_cpuids(struct kvm_cpuid2 *cpuid1,= struct kvm_cpuid2 *cpuid2) check_cpuid(cpuid1, &cpuid2->entries[i]); } =20 -static void run_vcpu(struct kvm_vm *vm, uint32_t vcpuid, int stage) +static void run_vcpu(struct kvm_vcpu *vcpu, int stage) { struct ucall uc; =20 - _vcpu_run(vm, vcpuid); + vcpu_run(vcpu->vm, vcpu->id); =20 - switch (get_ucall(vm, vcpuid, &uc)) { + switch (get_ucall(vcpu->vm, vcpu->id, &uc)) { case UCALL_SYNC: TEST_ASSERT(!strcmp((const char *)uc.args[0], "hello") && uc.args[1] =3D=3D stage + 1, @@ -138,7 +136,7 @@ static void run_vcpu(struct kvm_vm *vm, uint32_t vcpuid= , int stage) __FILE__, uc.args[1], uc.args[2], uc.args[3]); default: TEST_ASSERT(false, "Unexpected exit: %s", - exit_reason_str(vcpu_state(vm, vcpuid)->exit_reason)); + exit_reason_str(vcpu->run->exit_reason)); } } =20 @@ -154,21 +152,21 @@ struct kvm_cpuid2 *vcpu_alloc_cpuid(struct kvm_vm *vm= , vm_vaddr_t *p_gva, struct return guest_cpuids; } =20 -static void set_cpuid_after_run(struct kvm_vm *vm, struct kvm_cpuid2 *cpui= d) +static void set_cpuid_after_run(struct kvm_vcpu *vcpu, struct kvm_cpuid2 *= cpuid) { struct kvm_cpuid_entry2 *ent; int rc; u32 eax, ebx, x; =20 /* Setting unmodified CPUID is allowed */ - rc =3D __vcpu_set_cpuid(vm, VCPU_ID, cpuid); + rc =3D __vcpu_set_cpuid(vcpu->vm, vcpu->id, cpuid); TEST_ASSERT(!rc, "Setting unmodified CPUID after KVM_RUN failed: %d", rc); =20 /* Changing CPU features is forbidden */ ent =3D get_cpuid(cpuid, 0x7, 0); ebx =3D ent->ebx; ent->ebx--; - rc =3D __vcpu_set_cpuid(vm, VCPU_ID, cpuid); + rc =3D __vcpu_set_cpuid(vcpu->vm, vcpu->id, cpuid); TEST_ASSERT(rc, "Changing CPU features should fail"); ent->ebx =3D ebx; =20 @@ -177,7 +175,7 @@ static void set_cpuid_after_run(struct kvm_vm *vm, stru= ct kvm_cpuid2 *cpuid) eax =3D ent->eax; x =3D eax & 0xff; ent->eax =3D (eax & ~0xffu) | (x - 1); - rc =3D __vcpu_set_cpuid(vm, VCPU_ID, cpuid); + rc =3D __vcpu_set_cpuid(vcpu->vm, vcpu->id, cpuid); TEST_ASSERT(rc, "Changing MAXPHYADDR should fail"); ent->eax =3D eax; } @@ -185,25 +183,26 @@ static void set_cpuid_after_run(struct kvm_vm *vm, st= ruct kvm_cpuid2 *cpuid) int main(void) { struct kvm_cpuid2 *supp_cpuid, *cpuid2; + struct kvm_vcpu *vcpu; vm_vaddr_t cpuid_gva; struct kvm_vm *vm; int stage; =20 - vm =3D vm_create_default(VCPU_ID, 0, guest_main); + vm =3D vm_create_with_one_vcpu(&vcpu, guest_main); =20 supp_cpuid =3D kvm_get_supported_cpuid(); - cpuid2 =3D vcpu_get_cpuid(vm, VCPU_ID); + cpuid2 =3D vcpu_get_cpuid(vm, vcpu->id); =20 compare_cpuids(supp_cpuid, cpuid2); =20 vcpu_alloc_cpuid(vm, &cpuid_gva, cpuid2); =20 - vcpu_args_set(vm, VCPU_ID, 1, cpuid_gva); + vcpu_args_set(vm, vcpu->id, 1, cpuid_gva); =20 for (stage =3D 0; stage < 3; stage++) - run_vcpu(vm, VCPU_ID, stage); + run_vcpu(vcpu, stage); =20 - set_cpuid_after_run(vm, cpuid2); + set_cpuid_after_run(vcpu, cpuid2); =20 kvm_vm_free(vm); } --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 60EE0C43217 for ; Fri, 11 Mar 2022 05:59:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347676AbiCKF7V (ORCPT ); Fri, 11 Mar 2022 00:59:21 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59892 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346684AbiCKFyG (ORCPT ); Fri, 11 Mar 2022 00:54:06 -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 BDD0190260 for ; Thu, 10 Mar 2022 21:52:59 -0800 (PST) Received: by mail-pj1-x104a.google.com with SMTP id p5-20020a17090a748500b001bee6752974so4596741pjk.8 for ; Thu, 10 Mar 2022 21:52:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=fm4Ez6oGyl4LPe9mYSi8bmbgLSQ68BKOeDO53IkpUIM=; b=h2CP2Jb+1kLR3+tIB5df6wfhbrMGxGnDLUSNLhNxdM2RsuHjfcoet0BNBwRXOAeK2f szCSLE93OqwEegMEjnRTq10gpQIHmafLmv01EJyA7aVKAD4gkg71WQ0S+Kz9sUvWHtk7 QqGqEthqNkBq9m0haZMwagHBuYi6ony/jB3d9SO+H2I+QKvTi0YlQG6D+vGxgiL2zFLU jc8m5iU0J8R9YWyUMo1a5XmpkFHij3b9IOao0gFWXDaPJV4EAS6Nrg6V/MHm/E4XmdYi F0EmkuNDV8mHn5A0toFk3SoZQpEPojbmm+OV5tryDVpCKdDRF0GcsH6cFzl9Q0SJssw+ VOBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=fm4Ez6oGyl4LPe9mYSi8bmbgLSQ68BKOeDO53IkpUIM=; b=KialOnRalucgAa8vApHqrUHlkczQkzGmfeb2LBPLEq2CGeMz6XdqObtU3C6VtuFuPz b/r9yjluD0+1mT/Jgn/RJ7PT4kZIOe4PeQ+X50Ah0j1ZDYFXwSSUcoFYWqv3K004l9aR V96yDX+8qcQgdPkEd9fPbG5kPdk1G5FmzK7JCsd7zeMWHngngsZ28oPv17SbUEzDIt4g TOU+9ssbvX7IIirJG7AB+Sv6Dgp2ZCyBrsLJ01c+dvjq9dZzJsZnfXdXhXpKPmHcqY+7 m7NckWbevd9FN1oQiGEFCD2aR7+IR11Ww/Vtz5G2m7LrEpCv38QvHS+10/nMCXNflLBW 7fSw== X-Gm-Message-State: AOAM531sEUY2SoOYzYajPqEDRlMssr9LWUkHbarBa4Sstnv4votEKdYV Kw/v9Qo73ZKCxIHdmwVFQvBXhZzm2ysMjw5CBLQwkraqEhxgynjmIh70MDCMGFl/NaMIxtgaeJp /gjqLZz5WSEUjA4RaP2hyAn01sVoGXZgt9x9W1Kg2qION4+5lH6hjjx0HemyJs75ADGGlmA== X-Google-Smtp-Source: ABdhPJzdtT0AWT0bvZgzHoaNplzt1NmCVMJtRt66d8Nt4cxwnXp20DzahHhYlQsC6SnyOiu32qDl8l/vBec= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:90b:1e10:b0:1bf:6c78:54a9 with SMTP id pg16-20020a17090b1e1000b001bf6c7854a9mr460945pjb.1.1646977979005; Thu, 10 Mar 2022 21:52:59 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:18 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-68-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 067/105] KVM: selftests: Convert userspace_io_test away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/x86_64/userspace_io_test.c | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/userspace_io_test.c b/tools= /testing/selftests/kvm/x86_64/userspace_io_test.c index e4bef2e05686..0ba774ed6476 100644 --- a/tools/testing/selftests/kvm/x86_64/userspace_io_test.c +++ b/tools/testing/selftests/kvm/x86_64/userspace_io_test.c @@ -10,8 +10,6 @@ #include "kvm_util.h" #include "processor.h" =20 -#define VCPU_ID 1 - static void guest_ins_port80(uint8_t *buffer, unsigned int count) { unsigned long end; @@ -52,31 +50,29 @@ static void guest_code(void) =20 int main(int argc, char *argv[]) { + struct kvm_vcpu *vcpu; struct kvm_regs regs; struct kvm_run *run; struct kvm_vm *vm; struct ucall uc; - int rc; =20 /* Tell stdout not to buffer its content */ setbuf(stdout, NULL); =20 - /* Create VM */ - vm =3D vm_create_default(VCPU_ID, 0, guest_code); - run =3D vcpu_state(vm, VCPU_ID); + vm =3D vm_create_with_one_vcpu(&vcpu, guest_code); + run =3D vcpu->run; =20 memset(®s, 0, sizeof(regs)); =20 while (1) { - rc =3D _vcpu_run(vm, VCPU_ID); + vcpu_run(vm, vcpu->id); =20 - TEST_ASSERT(rc =3D=3D 0, "vcpu_run failed: %d\n", rc); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Unexpected exit reason: %u (%s),\n", run->exit_reason, exit_reason_str(run->exit_reason)); =20 - if (get_ucall(vm, VCPU_ID, &uc)) + if (get_ucall(vm, vcpu->id, &uc)) break; =20 TEST_ASSERT(run->io.port =3D=3D 0x80, @@ -89,13 +85,13 @@ int main(int argc, char *argv[]) * scope from a testing perspective as it's not ABI in any way, * i.e. it really is abusing internal KVM knowledge. */ - vcpu_regs_get(vm, VCPU_ID, ®s); + vcpu_regs_get(vm, vcpu->id, ®s); if (regs.rcx =3D=3D 2) regs.rcx =3D 1; if (regs.rcx =3D=3D 3) regs.rcx =3D 8192; memset((void *)run + run->io.data_offset, 0xaa, 4096); - vcpu_regs_set(vm, VCPU_ID, ®s); + vcpu_regs_set(vm, vcpu->id, ®s); } =20 switch (uc.cmd) { --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 ED843C35272 for ; Fri, 11 Mar 2022 05:59:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347693AbiCKF7W (ORCPT ); Fri, 11 Mar 2022 00:59:22 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59898 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346686AbiCKFyG (ORCPT ); Fri, 11 Mar 2022 00:54:06 -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 CC430939BC for ; Thu, 10 Mar 2022 21:53:01 -0800 (PST) Received: by mail-pl1-x64a.google.com with SMTP id q8-20020a170902f78800b00151cc484688so3990099pln.20 for ; Thu, 10 Mar 2022 21:53:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=BA/9wv0f77CQq9BIsQx7F9vfIHz6iVe/678SmR1+8tE=; b=WQF0KgysDaaJu9Y3mx+KOlWf0ZVKyEj3J6Yn37Z1WDSBbXs0Wr6wBHwlQgXe8qFULo AJWJXIT/r/VILG7HoZF/D1lEUWkA1o1mDXA6kwRcXMv2uSxSuPbAxxJq1yxsHzH3uOeS dssXE0Ry2xZMKNFOaIpoezS9O1J93nnzg+qtYDKV/PSYwIueaIVROCGFdKCZ5uLG4egM FhkkxTh10f0DigiUdfYidO6grQV/pEaho01RK+t/yRiM8rN5eL6I5ugy4ZDgWwVd7RP+ g53m63bybBML5s8IJy26KN2ZDjfD2xoGDV2poQEW2EFrQSvQcBS1fc1PMfuDOq4rLC06 pQvQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=BA/9wv0f77CQq9BIsQx7F9vfIHz6iVe/678SmR1+8tE=; b=K42/yRZKKcYd8zsJW0ZOc9I9G4gbKcRywYZKC5MfWuXvJWONCXI2D6uu/rxRkqXC0S 4TMmnjDhxzKBtBTJ7O2nLb7+rDunpQXMrbMDENiOEyifMZzFaFCpV24eCo7+d1QE8Hr9 1gvvgpVfeTpH4riSU7TxHFIkAThtaNP7NpJgDnghMiLSHZipZWSJx+3SnmQW2kdYMNGk WfYeEGnjHtYn9wARO0tWoMvYhlzmThXRRnyTdpe5Syv/0Uki2qaMPyxF7DxUllUMczx6 J3e3zFiuaZL/F6SyxufDmm3zfwXwRqC2lvlxTfTlsaNBcE0zn0FX/8mZry/XPW6iv5cb LeqA== X-Gm-Message-State: AOAM5318yMm6oDHi+d1fH48oXLdH5mNZCOximSxeeveHaJQSFatvc1lS gPkjGp1HOKr/OZyJSww/o/YQXX1WeyxVrp0QOmJxeDmuOKAmcKqqMrpwzflgMCHsiDKEGJMFXrw paCplpBB1v8lrBz1P+vKkh3xEa7EMchLTvoYtSrqqUmahkpssAyAp0TVumgtfvXoJAqcwvA== X-Google-Smtp-Source: ABdhPJyO64b4YYiRZ6am1T9W0ltMlJVXEu1ZlQDof+yx1PjYN3s/VQ5OMluVlq7lpxdVg7A/EO4tQw8BTCE= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:902:e3c5:b0:153:3022:4fb8 with SMTP id r5-20020a170902e3c500b0015330224fb8mr3168241ple.106.1646977980948; Thu, 10 Mar 2022 21:53:00 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:19 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-69-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 068/105] KVM: selftests: Convert vmx_invalid_nested_guest_state away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../x86_64/vmx_invalid_nested_guest_state.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/vmx_invalid_nested_guest_st= ate.c b/tools/testing/selftests/kvm/x86_64/vmx_invalid_nested_guest_state.c index 489fbed4ca6f..ba534be498f9 100644 --- a/tools/testing/selftests/kvm/x86_64/vmx_invalid_nested_guest_state.c +++ b/tools/testing/selftests/kvm/x86_64/vmx_invalid_nested_guest_state.c @@ -9,7 +9,6 @@ =20 #include "kselftest.h" =20 -#define VCPU_ID 0 #define ARBITRARY_IO_PORT 0x2000 =20 static struct kvm_vm *vm; @@ -55,20 +54,21 @@ int main(int argc, char *argv[]) { vm_vaddr_t vmx_pages_gva; struct kvm_sregs sregs; + struct kvm_vcpu *vcpu; struct kvm_run *run; struct ucall uc; =20 nested_vmx_check_supported(); =20 - vm =3D vm_create_default(VCPU_ID, 0, (void *) l1_guest_code); + vm =3D vm_create_with_one_vcpu(&vcpu, l1_guest_code); =20 /* Allocate VMX pages and shared descriptors (vmx_pages). */ vcpu_alloc_vmx(vm, &vmx_pages_gva); - vcpu_args_set(vm, VCPU_ID, 1, vmx_pages_gva); + vcpu_args_set(vm, vcpu->id, 1, vmx_pages_gva); =20 - vcpu_run(vm, VCPU_ID); + vcpu_run(vm, vcpu->id); =20 - run =3D vcpu_state(vm, VCPU_ID); + run =3D vcpu->run; =20 /* * The first exit to L0 userspace should be an I/O access from L2. @@ -88,13 +88,13 @@ int main(int argc, char *argv[]) * emulating invalid guest state for L2. */ memset(&sregs, 0, sizeof(sregs)); - vcpu_sregs_get(vm, VCPU_ID, &sregs); + vcpu_sregs_get(vm, vcpu->id, &sregs); sregs.tr.unusable =3D 1; - vcpu_sregs_set(vm, VCPU_ID, &sregs); + vcpu_sregs_set(vm, vcpu->id, &sregs); =20 - vcpu_run(vm, VCPU_ID); + vcpu_run(vm, vcpu->id); =20 - switch (get_ucall(vm, VCPU_ID, &uc)) { + switch (get_ucall(vm, vcpu->id, &uc)) { case UCALL_DONE: break; case UCALL_ABORT: --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 087E2C4707A for ; Fri, 11 Mar 2022 05:59:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347709AbiCKF7Y (ORCPT ); Fri, 11 Mar 2022 00:59:24 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59964 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346694AbiCKFyH (ORCPT ); Fri, 11 Mar 2022 00:54:07 -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 5A5A2972E9 for ; Thu, 10 Mar 2022 21:53:03 -0800 (PST) Received: by mail-pg1-x549.google.com with SMTP id u4-20020a63b544000000b0037c62d8b0ecso4222420pgo.13 for ; Thu, 10 Mar 2022 21:53:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=l+5q7YcGx7JEeqQ1wJ9qxAXrZVr2O0Z2hjOe2CD1PZI=; b=ftuiKe+MncIe7cg/3drPTyEgNpu3YhIJH8O2iEHwzFLoU3nBJhlNP/MwrUCX+PZs5j /ohcz1/U/lqr7mMm504IaZEARSTkDgDJ8WB5YIzff9PRO+Pv1cmxl+WVqu8ZcbZZaJBX xJlPYW+DAUCpdcy6VfleX0HYk4rnEy5CwiijGVBBkbnsQ2EZXp0DYbqHGTBzluAsjKms yJezZrAC601zSdFISCmC7fdBk0ti/aD+NRCS3SvfBdKK5bCLT/HpSpC2RrchlzV+fCQ7 z2wcKNgN3BTc7XakzcjqMU82w8GEVai4bg83aEiCFjg6TTSKSwMiSwBLdp95t7IKzfRH h5ig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=l+5q7YcGx7JEeqQ1wJ9qxAXrZVr2O0Z2hjOe2CD1PZI=; b=PnqLFyMfTJz8uBcKR2igYXz7kLV61OLtX6BWmcBSBn+HAmP6k0juEvrtKIXwO5utse jD+MT0IBhYwv/F/94b29nTZB+qDZNsb1Nsj5w6P7fW/FifUOj8RwG6jDUylOgq8kN7XU rLlgvEZpSG5dvmkGjTJfGh1LZ3GnXur5FP9ym6XiWcDon0GWvy0d0BPF58r5etPYCj+2 zrpeixQKMmCqzQNyfr90Uc9yAuA+MksPvfTwkoZSneQJ0sTYbmosKYrAi0Km/FpnxmbK QROmNjgI/qX1jRgG9AHkQg/2TIcd7KKAKo49Gy05iIOSjMobwPWIgkO+Jr7VKUsP40RU AuRA== X-Gm-Message-State: AOAM532tLNnnoc3JFjNG6emAFmC3wQdH+MhzV26ERAkF5lZRvmL5wIzw mJvOmuKs2C6mvAIxtZ2CKOIw2UsQjh2CDw4QHL9Nj+2nqMljJO0xXPvcsmdaH/FmqE2Tz3+78nO haYSnvs4KD1UVHkYoWGJKVnS5yDHR5GayJzrmagnvQhMinhjMkSpC8SbzsplF7JRJkSNAzQ== X-Google-Smtp-Source: ABdhPJy3yiGaPv1AMJkXheKYfViIbnDm5xRDF+viJaPNa+3E4CxnoeBV1EI6A1+U8D4+YbeSmXxaUdcKI4o= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a05:6a00:148a:b0:4f7:7286:a3e8 with SMTP id v10-20020a056a00148a00b004f77286a3e8mr7311278pfu.15.1646977982515; Thu, 10 Mar 2022 21:53:02 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:20 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-70-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 069/105] KVM: selftests: Convert xen_vmcall_test away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/x86_64/xen_vmcall_test.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/xen_vmcall_test.c b/tools/t= esting/selftests/kvm/x86_64/xen_vmcall_test.c index adc94452b57c..6badb0c8b2f7 100644 --- a/tools/testing/selftests/kvm/x86_64/xen_vmcall_test.c +++ b/tools/testing/selftests/kvm/x86_64/xen_vmcall_test.c @@ -11,14 +11,10 @@ #include "kvm_util.h" #include "processor.h" =20 -#define VCPU_ID 5 - #define HCALL_REGION_GPA 0xc0000000ULL #define HCALL_REGION_SLOT 10 #define PAGE_SIZE 4096 =20 -static struct kvm_vm *vm; - #define INPUTVALUE 17 #define ARGVALUE(x) (0xdeadbeef5a5a0000UL + x) #define RETVALUE 0xcafef00dfbfbffffUL @@ -85,14 +81,17 @@ static void guest_code(void) =20 int main(int argc, char *argv[]) { + struct kvm_vcpu *vcpu; + struct kvm_vm *vm; + if (!(kvm_check_cap(KVM_CAP_XEN_HVM) & KVM_XEN_HVM_CONFIG_INTERCEPT_HCALL) ) { print_skip("KVM_XEN_HVM_CONFIG_INTERCEPT_HCALL not available"); exit(KSFT_SKIP); } =20 - vm =3D vm_create_default(VCPU_ID, 0, (void *) guest_code); - vcpu_set_hv_cpuid(vm, VCPU_ID); + vm =3D vm_create_with_one_vcpu(&vcpu, guest_code); + vcpu_set_hv_cpuid(vm, vcpu->id); =20 struct kvm_xen_hvm_config hvmc =3D { .flags =3D KVM_XEN_HVM_CONFIG_INTERCEPT_HCALL, @@ -106,10 +105,10 @@ int main(int argc, char *argv[]) virt_map(vm, HCALL_REGION_GPA, HCALL_REGION_GPA, 2); =20 for (;;) { - volatile struct kvm_run *run =3D vcpu_state(vm, VCPU_ID); + volatile struct kvm_run *run =3D vcpu->run; struct ucall uc; =20 - vcpu_run(vm, VCPU_ID); + vcpu_run(vm, vcpu->id); =20 if (run->exit_reason =3D=3D KVM_EXIT_XEN) { ASSERT_EQ(run->xen.type, KVM_EXIT_XEN_HCALL); @@ -131,7 +130,7 @@ int main(int argc, char *argv[]) run->exit_reason, exit_reason_str(run->exit_reason)); =20 - switch (get_ucall(vm, VCPU_ID, &uc)) { + switch (get_ucall(vm, vcpu->id, &uc)) { case UCALL_ABORT: TEST_FAIL("%s", (const char *)uc.args[0]); /* NOT REACHED */ --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 26BC1C3527A for ; Fri, 11 Mar 2022 05:59:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347727AbiCKF73 (ORCPT ); Fri, 11 Mar 2022 00:59:29 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60034 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346624AbiCKFyJ (ORCPT ); Fri, 11 Mar 2022 00:54:09 -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 524CF9F3B2 for ; Thu, 10 Mar 2022 21:53:04 -0800 (PST) Received: by mail-pl1-x64a.google.com with SMTP id b4-20020a170902e94400b0015309b5c481so3402183pll.6 for ; Thu, 10 Mar 2022 21:53:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=sHmUP9wjFdrYC4PoZij4qatGMxKFSxmAp5vE/0mTYTw=; b=TiX/cIfh64JVKqwYUu7dwo0+Q8vjwPafUxY0/uKUXOrhPEHs9dfDRYhDQCh7OTarh3 ndpsKk4N3CU6lrFj+rSDfMqRACGDmcZ94WP/Q2Fk7psSBkf075qIAeItsKof2ds8hRq4 tPnJOvHnesnjOHT7R5HXRSrgszp31LCYkigsktb03nXpkH6NTVBkeh0uKl7QH0A6aE9h 5N2cowPfc/e16uvzA5nAugVCJr04Lw/cTcusu02TtIciXVygoS/J79v7/LczCC6yyctZ 0u5ql3jtX/5qVZnlhKTf82CGy7EyqdkN/Af190jdrHM7AOVBHTd7MnEmihWjx9nCncp7 iViw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=sHmUP9wjFdrYC4PoZij4qatGMxKFSxmAp5vE/0mTYTw=; b=JpQtBHXaTpsocOUCCGsNvB3OtyQxHjjKOoUYdQ09FYOQoj4vBYv1vJbFU+rdSqu+aO pUWpVVhrh8jZlfDK/5Z1p6VxUa0YtlhBggJYGas7iWRsytuI49/frQfeDIN2LvRaWM7v V1hkXnHU+V/x/WZ3klU5PHJBcoDqZtj1EknL2Vq5P9u8aBsml8vwqYzrLm+r9eUeQOrw XbG8Ow4a7DgvnGHk9HmEx9frdb2Bql4xyci9myhLw2Tx/py7kT8UhiJQYau0nl4mKnkZ EmxaU0xtZ+fnaQXYWMJPfKzlUzumCWq68iLvOv72AtgXucAJGba4WdB//3d8jHf2+ZE3 Vomw== X-Gm-Message-State: AOAM530+RAlJWuzYnTlm5/vDbo/c++6KhOrQT0LuZB2KX/mAiMGvqXJP yeajpjzj8jU4rsQmZnUF/FEEIe5CIFjJEqBv9ai2wCau6pTdQotTyXoGQGETpTgEuvUF99o7JLT CtmQ7Vl/Kq3hZGPYE+IBlZSkZi0tgyrka0P0gJfYS76xz+HLlEKTZBrpmW4tIdrZplw251w== X-Google-Smtp-Source: ABdhPJzYURgC+6bd2Ckmcvbvfwh6efbnJt01C1icEtAo8Sjzs1KPqSohyr7BSjMNXbPxL9STmfrSBp11L6c= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:902:f789:b0:14e:ebbc:264b with SMTP id q9-20020a170902f78900b0014eebbc264bmr8517746pln.169.1646977984320; Thu, 10 Mar 2022 21:53:04 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:21 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-71-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 070/105] KVM: selftests: Convert xen_shinfo_test away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/x86_64/xen_shinfo_test.c | 35 +++++++++---------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/xen_shinfo_test.c b/tools/t= esting/selftests/kvm/x86_64/xen_shinfo_test.c index 865e17146815..228b61630c0f 100644 --- a/tools/testing/selftests/kvm/x86_64/xen_shinfo_test.c +++ b/tools/testing/selftests/kvm/x86_64/xen_shinfo_test.c @@ -18,8 +18,6 @@ =20 #include =20 -#define VCPU_ID 5 - #define SHINFO_REGION_GVA 0xc0000000ULL #define SHINFO_REGION_GPA 0xc0000000ULL #define SHINFO_REGION_SLOT 10 @@ -39,8 +37,6 @@ =20 #define EVTCHN_VECTOR 0x10 =20 -static struct kvm_vm *vm; - #define XEN_HYPERCALL_MSR 0x40000000 =20 #define MIN_STEAL_TIME 50000 @@ -200,6 +196,8 @@ static void handle_alrm(int sig) int main(int argc, char *argv[]) { struct timespec min_ts, max_ts, vm_ts; + struct kvm_vcpu *vcpu; + struct kvm_vm *vm; bool verbose; =20 verbose =3D argc > 1 && (!strncmp(argv[1], "-v", 3) || @@ -216,8 +214,7 @@ int main(int argc, char *argv[]) =20 clock_gettime(CLOCK_REALTIME, &min_ts); =20 - vm =3D vm_create_default(VCPU_ID, 0, (void *) guest_code); - vcpu_set_cpuid(vm, VCPU_ID, kvm_get_supported_cpuid()); + vm =3D vm_create_with_one_vcpu(&vcpu, guest_code); =20 /* Map a region for the shared_info page */ vm_userspace_mem_region_add(vm, VM_MEM_SRC_ANONYMOUS, @@ -261,13 +258,13 @@ int main(int argc, char *argv[]) .type =3D KVM_XEN_VCPU_ATTR_TYPE_VCPU_INFO, .u.gpa =3D VCPU_INFO_ADDR, }; - vcpu_ioctl(vm, VCPU_ID, KVM_XEN_VCPU_SET_ATTR, &vi); + vcpu_ioctl(vm, vcpu->id, KVM_XEN_VCPU_SET_ATTR, &vi); =20 struct kvm_xen_vcpu_attr pvclock =3D { .type =3D KVM_XEN_VCPU_ATTR_TYPE_VCPU_TIME_INFO, .u.gpa =3D PVTIME_ADDR, }; - vcpu_ioctl(vm, VCPU_ID, KVM_XEN_VCPU_SET_ATTR, &pvclock); + vcpu_ioctl(vm, vcpu->id, KVM_XEN_VCPU_SET_ATTR, &pvclock); =20 struct kvm_xen_hvm_attr vec =3D { .type =3D KVM_XEN_ATTR_TYPE_UPCALL_VECTOR, @@ -276,7 +273,7 @@ int main(int argc, char *argv[]) vm_ioctl(vm, KVM_XEN_HVM_SET_ATTR, &vec); =20 vm_init_descriptor_tables(vm); - vcpu_init_descriptor_tables(vm, VCPU_ID); + vcpu_init_descriptor_tables(vm, vcpu->id); vm_install_exception_handler(vm, EVTCHN_VECTOR, evtchn_handler); =20 if (do_runstate_tests) { @@ -284,7 +281,7 @@ int main(int argc, char *argv[]) .type =3D KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_ADDR, .u.gpa =3D RUNSTATE_ADDR, }; - vcpu_ioctl(vm, VCPU_ID, KVM_XEN_VCPU_SET_ATTR, &st); + vcpu_ioctl(vm, vcpu->id, KVM_XEN_VCPU_SET_ATTR, &st); } =20 int irq_fd[2] =3D { -1, -1 }; @@ -304,13 +301,13 @@ int main(int argc, char *argv[]) irq_routes.entries[0].gsi =3D 32; irq_routes.entries[0].type =3D KVM_IRQ_ROUTING_XEN_EVTCHN; irq_routes.entries[0].u.xen_evtchn.port =3D 15; - irq_routes.entries[0].u.xen_evtchn.vcpu =3D VCPU_ID; + irq_routes.entries[0].u.xen_evtchn.vcpu =3D vcpu->id; irq_routes.entries[0].u.xen_evtchn.priority =3D KVM_IRQ_ROUTING_XEN_EVTC= HN_PRIO_2LEVEL; =20 irq_routes.entries[1].gsi =3D 33; irq_routes.entries[1].type =3D KVM_IRQ_ROUTING_XEN_EVTCHN; irq_routes.entries[1].u.xen_evtchn.port =3D 66; - irq_routes.entries[1].u.xen_evtchn.vcpu =3D VCPU_ID; + irq_routes.entries[1].u.xen_evtchn.vcpu =3D vcpu->id; irq_routes.entries[1].u.xen_evtchn.priority =3D KVM_IRQ_ROUTING_XEN_EVTC= HN_PRIO_2LEVEL; =20 vm_ioctl(vm, KVM_SET_GSI_ROUTING, &irq_routes); @@ -339,17 +336,17 @@ int main(int argc, char *argv[]) bool evtchn_irq_expected =3D false; =20 for (;;) { - volatile struct kvm_run *run =3D vcpu_state(vm, VCPU_ID); + volatile struct kvm_run *run =3D vcpu->run; struct ucall uc; =20 - vcpu_run(vm, VCPU_ID); + vcpu_run(vm, vcpu->id); =20 TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Got exit_reason other than KVM_EXIT_IO: %u (%s)\n", run->exit_reason, exit_reason_str(run->exit_reason)); =20 - switch (get_ucall(vm, VCPU_ID, &uc)) { + switch (get_ucall(vm, vcpu->id, &uc)) { case UCALL_ABORT: TEST_FAIL("%s", (const char *)uc.args[0]); /* NOT REACHED */ @@ -378,7 +375,7 @@ int main(int argc, char *argv[]) printf("Testing runstate %s\n", runstate_names[uc.args[1]]); rst.type =3D KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_CURRENT; rst.u.runstate.state =3D uc.args[1]; - vcpu_ioctl(vm, VCPU_ID, KVM_XEN_VCPU_SET_ATTR, &rst); + vcpu_ioctl(vm, vcpu->id, KVM_XEN_VCPU_SET_ATTR, &rst); break; =20 case 4: @@ -393,7 +390,7 @@ int main(int argc, char *argv[]) 0x6b6b - rs->time[RUNSTATE_offline]; rst.u.runstate.time_runnable =3D -rst.u.runstate.time_blocked - rst.u.runstate.time_offline; - vcpu_ioctl(vm, VCPU_ID, KVM_XEN_VCPU_SET_ATTR, &rst); + vcpu_ioctl(vm, vcpu->id, KVM_XEN_VCPU_SET_ATTR, &rst); break; =20 case 5: @@ -405,7 +402,7 @@ int main(int argc, char *argv[]) rst.u.runstate.state_entry_time =3D 0x6b6b + 0x5a; rst.u.runstate.time_blocked =3D 0x6b6b; rst.u.runstate.time_offline =3D 0x5a; - vcpu_ioctl(vm, VCPU_ID, KVM_XEN_VCPU_SET_ATTR, &rst); + vcpu_ioctl(vm, vcpu->id, KVM_XEN_VCPU_SET_ATTR, &rst); break; =20 case 6: @@ -512,7 +509,7 @@ int main(int argc, char *argv[]) struct kvm_xen_vcpu_attr rst =3D { .type =3D KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_DATA, }; - vcpu_ioctl(vm, VCPU_ID, KVM_XEN_VCPU_GET_ATTR, &rst); + vcpu_ioctl(vm, vcpu->id, KVM_XEN_VCPU_GET_ATTR, &rst); =20 if (verbose) { printf("Runstate: %s(%d), entry %" PRIu64 " ns\n", --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 04A96C433F5 for ; Fri, 11 Mar 2022 05:59:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347742AbiCKF7f (ORCPT ); Fri, 11 Mar 2022 00:59:35 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60046 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346706AbiCKFyJ (ORCPT ); Fri, 11 Mar 2022 00:54:09 -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 DD82492D30 for ; Thu, 10 Mar 2022 21:53:06 -0800 (PST) Received: by mail-pl1-x649.google.com with SMTP id j1-20020a170903028100b0014b1f9e0068so4005844plr.8 for ; Thu, 10 Mar 2022 21:53:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=19AYdxlQF5CgqwXk1D5hC7bENj8MzASyLlm16VdNZxc=; b=MJdNmvvECtXKdZmpMuTVaChct4A9DCWUBsEBDSbW6HJWChoSJYaP1RwXnsTN+WmjAi nxbEWp/Wk+RGcsmEHMu1p+bLO5gt+fKlbE5bXz02xmV67N41FGuk/c72RbdKkzICcZ98 gbsSTxRtk3hgQcCjHPLCW9cknOzecrUNKrxxsWTuHdIYvyWCfxX9XFNs4xnPF/8eypCh 3El6mU38u/2jseK5bfsTW//bFXwjpN2sEdCXH8DV5D29OYMq3MRJSWuQvrpctLjVL7da CJGAzfsgAWC6qXoHVV5TnxVwZxYnXPghNSQJJ+hlXzDQXlwKijnVFhGdQMzovXcJHz2z yqPQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=19AYdxlQF5CgqwXk1D5hC7bENj8MzASyLlm16VdNZxc=; b=aXH3LWVBgeISL7/zUIJKRJlqdLJrGJhzqLc2WAdWuaXqpCVu7iJWQtuWLq8bJTUlUR iyHCIQj70tppX/VNm44UD6Qhtm0HSUab2kubkgopHgc/dlA5G6jLtaC6fLd23vwobyth +wuCdWXSDHbRxUSuFk6jR7cmoMjPHGjNTYcBn6UVOUHk4lqD0lnl3PqIlKdywiWcjBJt twkbkNahC50bnBaeX8fCN6FA6+tnIwyFjTRXJ1uesAZ6gIWGzkdR6MbZjg1qAOwi64Gq P9j56f6tEqRFnOnmGYrb2gIB19VBMpkQT99C4XrgWo4RtG4vlzc2X801jd045C51BRyp BsnA== X-Gm-Message-State: AOAM530vG4bPhuZQDWe3QbN7eRfLb5d/FoTMrSz1XwxGcelACfKwXVA/ a/4osylX+Dh1exbT3JGsu+SCZhvlL0y5g+CqclLpLO+NxCUZYnqfQaHmBvIpgmUtCD6uEbS35OL 2C3CztlbueyfDr04PHt6HK2wI/27YzecKOjZq6R5kq6AHIomAQvWO2hEEuoO9BAiTZ9g6QQ== X-Google-Smtp-Source: ABdhPJxT5A7kKgjNE0dIXSGTFFaWvyRTcCsyYiFb9iBCuQcuOZ5/G6eJrTlGomKiFeVopyMnXY7d6+Xn5oY= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:90b:1e10:b0:1bf:6c78:54a9 with SMTP id pg16-20020a17090b1e1000b001bf6c7854a9mr460989pjb.1.1646977986046; Thu, 10 Mar 2022 21:53:06 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:22 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-72-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 071/105] KVM: selftests: Convert dirty_log_test away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- tools/testing/selftests/kvm/dirty_log_test.c | 59 ++++++++++---------- 1 file changed, 30 insertions(+), 29 deletions(-) diff --git a/tools/testing/selftests/kvm/dirty_log_test.c b/tools/testing/s= elftests/kvm/dirty_log_test.c index 5752486764c9..1c7d25bf4a5a 100644 --- a/tools/testing/selftests/kvm/dirty_log_test.c +++ b/tools/testing/selftests/kvm/dirty_log_test.c @@ -23,8 +23,6 @@ #include "guest_modes.h" #include "processor.h" =20 -#define VCPU_ID 1 - /* The memory slot index to track dirty pages */ #define TEST_MEM_SLOT_INDEX 1 =20 @@ -229,17 +227,17 @@ static void clear_log_create_vm_done(struct kvm_vm *v= m) vm_enable_cap(vm, &cap); } =20 -static void dirty_log_collect_dirty_pages(struct kvm_vm *vm, int slot, +static void dirty_log_collect_dirty_pages(struct kvm_vcpu *vcpu, int slot, void *bitmap, uint32_t num_pages) { - kvm_vm_get_dirty_log(vm, slot, bitmap); + kvm_vm_get_dirty_log(vcpu->vm, slot, bitmap); } =20 -static void clear_log_collect_dirty_pages(struct kvm_vm *vm, int slot, +static void clear_log_collect_dirty_pages(struct kvm_vcpu *vcpu, int slot, void *bitmap, uint32_t num_pages) { - kvm_vm_get_dirty_log(vm, slot, bitmap); - kvm_vm_clear_dirty_log(vm, slot, bitmap, 0, num_pages); + kvm_vm_get_dirty_log(vcpu->vm, slot, bitmap); + kvm_vm_clear_dirty_log(vcpu->vm, slot, bitmap, 0, num_pages); } =20 /* Should only be called after a GUEST_SYNC */ @@ -253,14 +251,14 @@ static void vcpu_handle_sync_stop(void) } } =20 -static void default_after_vcpu_run(struct kvm_vm *vm, int ret, int err) +static void default_after_vcpu_run(struct kvm_vcpu *vcpu, int ret, int err) { - struct kvm_run *run =3D vcpu_state(vm, VCPU_ID); + struct kvm_run *run =3D vcpu->run; =20 TEST_ASSERT(ret =3D=3D 0 || (ret =3D=3D -1 && err =3D=3D EINTR), "vcpu run failed: errno=3D%d", err); =20 - TEST_ASSERT(get_ucall(vm, VCPU_ID, NULL) =3D=3D UCALL_SYNC, + TEST_ASSERT(get_ucall(vcpu->vm, vcpu->id, NULL) =3D=3D UCALL_SYNC, "Invalid guest sync status: exit_reason=3D%s\n", exit_reason_str(run->exit_reason)); =20 @@ -331,7 +329,7 @@ static void dirty_ring_continue_vcpu(void) sem_post(&sem_vcpu_cont); } =20 -static void dirty_ring_collect_dirty_pages(struct kvm_vm *vm, int slot, +static void dirty_ring_collect_dirty_pages(struct kvm_vcpu *vcpu, int slot, void *bitmap, uint32_t num_pages) { /* We only have one vcpu */ @@ -351,10 +349,10 @@ static void dirty_ring_collect_dirty_pages(struct kvm= _vm *vm, int slot, } =20 /* Only have one vcpu */ - count =3D dirty_ring_collect_one(vcpu_map_dirty_ring(vm, VCPU_ID), + count =3D dirty_ring_collect_one(vcpu_map_dirty_ring(vcpu->vm, vcpu->id), slot, bitmap, num_pages, &fetch_index); =20 - cleared =3D kvm_vm_reset_dirty_ring(vm); + cleared =3D kvm_vm_reset_dirty_ring(vcpu->vm); =20 /* Cleared pages should be the same as collected */ TEST_ASSERT(cleared =3D=3D count, "Reset dirty pages (%u) mismatch " @@ -369,12 +367,12 @@ static void dirty_ring_collect_dirty_pages(struct kvm= _vm *vm, int slot, pr_info("Iteration %ld collected %u pages\n", iteration, count); } =20 -static void dirty_ring_after_vcpu_run(struct kvm_vm *vm, int ret, int err) +static void dirty_ring_after_vcpu_run(struct kvm_vcpu *vcpu, int ret, int = err) { - struct kvm_run *run =3D vcpu_state(vm, VCPU_ID); + struct kvm_run *run =3D vcpu->run; =20 /* A ucall-sync or ring-full event is allowed */ - if (get_ucall(vm, VCPU_ID, NULL) =3D=3D UCALL_SYNC) { + if (get_ucall(vcpu->vm, vcpu->id, NULL) =3D=3D UCALL_SYNC) { /* We should allow this to continue */ ; } else if (run->exit_reason =3D=3D KVM_EXIT_DIRTY_RING_FULL || @@ -408,10 +406,10 @@ struct log_mode { /* Hook when the vm creation is done (before vcpu creation) */ void (*create_vm_done)(struct kvm_vm *vm); /* Hook to collect the dirty pages into the bitmap provided */ - void (*collect_dirty_pages) (struct kvm_vm *vm, int slot, + void (*collect_dirty_pages) (struct kvm_vcpu *vcpu, int slot, void *bitmap, uint32_t num_pages); /* Hook to call when after each vcpu run */ - void (*after_vcpu_run)(struct kvm_vm *vm, int ret, int err); + void (*after_vcpu_run)(struct kvm_vcpu *vcpu, int ret, int err); void (*before_vcpu_join) (void); } log_modes[LOG_MODE_NUM] =3D { { @@ -473,22 +471,22 @@ static void log_mode_create_vm_done(struct kvm_vm *vm) mode->create_vm_done(vm); } =20 -static void log_mode_collect_dirty_pages(struct kvm_vm *vm, int slot, +static void log_mode_collect_dirty_pages(struct kvm_vcpu *vcpu, int slot, void *bitmap, uint32_t num_pages) { struct log_mode *mode =3D &log_modes[host_log_mode]; =20 TEST_ASSERT(mode->collect_dirty_pages !=3D NULL, "collect_dirty_pages() is required for any log mode!"); - mode->collect_dirty_pages(vm, slot, bitmap, num_pages); + mode->collect_dirty_pages(vcpu, slot, bitmap, num_pages); } =20 -static void log_mode_after_vcpu_run(struct kvm_vm *vm, int ret, int err) +static void log_mode_after_vcpu_run(struct kvm_vcpu *vcpu, int ret, int er= r) { struct log_mode *mode =3D &log_modes[host_log_mode]; =20 if (mode->after_vcpu_run) - mode->after_vcpu_run(vm, ret, err); + mode->after_vcpu_run(vcpu, ret, err); } =20 static void log_mode_before_vcpu_join(void) @@ -510,7 +508,8 @@ static void generate_random_array(uint64_t *guest_array= , uint64_t size) static void *vcpu_worker(void *data) { int ret; - struct kvm_vm *vm =3D data; + struct kvm_vcpu *vcpu =3D data; + struct kvm_vm *vm =3D vcpu->vm; uint64_t *guest_array; uint64_t pages_count =3D 0; struct kvm_signal_mask *sigmask =3D alloca(offsetof(struct kvm_signal_mas= k, sigset) @@ -525,7 +524,7 @@ static void *vcpu_worker(void *data) sigmask->len =3D 8; pthread_sigmask(0, NULL, sigset); sigdelset(sigset, SIG_IPI); - vcpu_ioctl(vm, VCPU_ID, KVM_SET_SIGNAL_MASK, sigmask); + vcpu_ioctl(vm, vcpu->id, KVM_SET_SIGNAL_MASK, sigmask); =20 sigemptyset(sigset); sigaddset(sigset, SIG_IPI); @@ -537,13 +536,13 @@ static void *vcpu_worker(void *data) generate_random_array(guest_array, TEST_PAGES_PER_LOOP); pages_count +=3D TEST_PAGES_PER_LOOP; /* Let the guest dirty the random pages */ - ret =3D __vcpu_run(vm, VCPU_ID); + ret =3D __vcpu_run(vm, vcpu->id); if (ret =3D=3D -1 && errno =3D=3D EINTR) { int sig =3D -1; sigwait(sigset, &sig); assert(sig =3D=3D SIG_IPI); } - log_mode_after_vcpu_run(vm, ret, errno); + log_mode_after_vcpu_run(vcpu, ret, errno); } =20 pr_info("Dirtied %"PRIu64" pages\n", pages_count); @@ -699,6 +698,7 @@ struct test_params { static void run_test(enum vm_guest_mode mode, void *arg) { struct test_params *p =3D arg; + struct kvm_vcpu *vcpu; struct kvm_vm *vm; unsigned long *bmap; =20 @@ -716,9 +716,10 @@ static void run_test(enum vm_guest_mode mode, void *ar= g) * (e.g., 64K page size guest will need even less memory for * page tables). */ - vm =3D create_vm(mode, VCPU_ID, + vm =3D create_vm(mode, 0, 2ul << (DIRTY_MEM_BITS - PAGE_SHIFT_4K), guest_code); + vcpu =3D vcpu_get(vm, 0); =20 guest_page_size =3D vm_get_page_size(vm); /* @@ -779,12 +780,12 @@ static void run_test(enum vm_guest_mode mode, void *a= rg) host_clear_count =3D 0; host_track_next_count =3D 0; =20 - pthread_create(&vcpu_thread, NULL, vcpu_worker, vm); + pthread_create(&vcpu_thread, NULL, vcpu_worker, vcpu); =20 while (iteration < p->iterations) { /* Give the vcpu thread some time to dirty some pages */ usleep(p->interval * 1000); - log_mode_collect_dirty_pages(vm, TEST_MEM_SLOT_INDEX, + log_mode_collect_dirty_pages(vcpu, TEST_MEM_SLOT_INDEX, bmap, host_num_pages); =20 /* --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 16E55C4707E for ; Fri, 11 Mar 2022 05:59:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347927AbiCKGAJ (ORCPT ); Fri, 11 Mar 2022 01:00:09 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60222 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346656AbiCKFyO (ORCPT ); Fri, 11 Mar 2022 00:54:14 -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 6C1CFD4457 for ; Thu, 10 Mar 2022 21:53:08 -0800 (PST) Received: by mail-pj1-x104a.google.com with SMTP id gm17-20020a17090b101100b001c21939cad2so1836154pjb.8 for ; Thu, 10 Mar 2022 21:53:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=QAQlQyWYSCBoIkWO9Ed61vpRUsTVwhacM47gPSZkrDE=; b=WX2PLr57YODXi1mLgn1L1g+tLJjU5gm9zc8wcDs6Jsh9x/7TFkp930CPqm4I63DL/e WLUMX8ottPBt3qJx+TRsl/5B+oPbTLb8f7FN9AcDyPEwTGcDoCTfWP/F0xbiQ09XgnU0 L7+NLuwsx4AATs7i3uoT1NBszGafTufPd77D1N9Qm5RNTzleCoVsqzM+bzhsiJePMgGw pJXZe6ktYZbwD/xtJ3zHBfu6mfoYL2bcY/oJ9XOZHfWHNLHDpB7xVy/FD9QBu8YrBn7d ypsrVohrLtQeMI4cz7lt/DZALhgvz+vg2s7FXTKmsCQzb+TIbMGpz3YIof+atjApC0Y/ Jujw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=QAQlQyWYSCBoIkWO9Ed61vpRUsTVwhacM47gPSZkrDE=; b=BF1odrv7WVaS4pl5KqiV2v1Ubrm2Q6XHQLuEAljhWtH7c0GrVkralbh821Cq6dUShc kcPkPKv88HoPDxh8Teq+Tico2wTWeo1HK6oNk6luAEH5FD87DTm2/iQ40/Jv+ekNdx+3 6T+IkmHl7+pwPqtYFJSr9dV3ld3L5pNDVQEFMqP1VQTCmQ6G4XmkhNiC5bnFUCxof0C1 QQa7AuCjoa9Acr4ymEHNHAeHRHI58rO2NdllDRtaDT23bGfJFIXtnq3eR4xC0FswTM/V C6uZhruS1BPmLE/QMRh439kyPRxJDU6mKb2RVh2PrOjfDmZBKw7dBW+D0d4OiAVWZhV5 z0hg== X-Gm-Message-State: AOAM533aGOZ04xaTJrFopJIDXtimECNAdz2zlmOMNsvr4gem9ji/EgU1 a7mCn9lYfMhB1WO3ykKSLXncalPmmd+f97JYTy16qXPMo56+j6rw+OyS5Y7ZnOdn2V43TLQnoPd BWddHPFfQM9B6PYm4dsumrxYA25hKBoXZsYRsOfo1XeXLUv7c1Rzoh+pg+6tGA7k3bYw63A== X-Google-Smtp-Source: ABdhPJwl1FhNL5DQfwYG0D379PrFWKBxxlvjf9yXX5UzoNDVB4KblDf2ttkoN1lIgCkEEn0OhfPzw94n0RI= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:90b:f88:b0:1bf:a7c5:501f with SMTP id ft8-20020a17090b0f8800b001bfa7c5501fmr13929243pjb.56.1646977987844; Thu, 10 Mar 2022 21:53:07 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:23 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-73-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 072/105] KVM: selftests: Convert set_memory_region_test away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/set_memory_region_test.c | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/tools/testing/selftests/kvm/set_memory_region_test.c b/tools/t= esting/selftests/kvm/set_memory_region_test.c index 482ae2ad662c..13859b37e28d 100644 --- a/tools/testing/selftests/kvm/set_memory_region_test.c +++ b/tools/testing/selftests/kvm/set_memory_region_test.c @@ -17,8 +17,6 @@ #include #include =20 -#define VCPU_ID 0 - /* * s390x needs at least 1MB alignment, and the x86_64 MOVE/DELETE tests ne= ed a * 2MB sized and aligned region so that the initial region corresponds to @@ -54,8 +52,8 @@ static inline uint64_t guest_spin_on_val(uint64_t spin_va= l) =20 static void *vcpu_worker(void *data) { - struct kvm_vm *vm =3D data; - struct kvm_run *run; + struct kvm_vcpu *vcpu =3D data; + struct kvm_run *run =3D vcpu->run; struct ucall uc; uint64_t cmd; =20 @@ -64,13 +62,11 @@ static void *vcpu_worker(void *data) * which will occur if the guest attempts to access a memslot after it * has been deleted or while it is being moved . */ - run =3D vcpu_state(vm, VCPU_ID); - while (1) { - vcpu_run(vm, VCPU_ID); + vcpu_run(vcpu->vm, vcpu->id); =20 if (run->exit_reason =3D=3D KVM_EXIT_IO) { - cmd =3D get_ucall(vm, VCPU_ID, &uc); + cmd =3D get_ucall(vcpu->vm, vcpu->id, &uc); if (cmd !=3D UCALL_SYNC) break; =20 @@ -113,13 +109,14 @@ static void wait_for_vcpu(void) usleep(100000); } =20 -static struct kvm_vm *spawn_vm(pthread_t *vcpu_thread, void *guest_code) +static struct kvm_vm *spawn_vm(struct kvm_vcpu **vcpu, pthread_t *vcpu_thr= ead, + void *guest_code) { struct kvm_vm *vm; uint64_t *hva; uint64_t gpa; =20 - vm =3D vm_create_default(VCPU_ID, 0, guest_code); + vm =3D vm_create_with_one_vcpu(vcpu, guest_code); =20 vm_userspace_mem_region_add(vm, VM_MEM_SRC_ANONYMOUS_THP, MEM_REGION_GPA, MEM_REGION_SLOT, @@ -138,7 +135,7 @@ static struct kvm_vm *spawn_vm(pthread_t *vcpu_thread, = void *guest_code) hva =3D addr_gpa2hva(vm, MEM_REGION_GPA); memset(hva, 0, 2 * 4096); =20 - pthread_create(vcpu_thread, NULL, vcpu_worker, vm); + pthread_create(vcpu_thread, NULL, vcpu_worker, vcpu); =20 /* Ensure the guest thread is spun up. */ wait_for_vcpu(); @@ -180,10 +177,11 @@ static void guest_code_move_memory_region(void) static void test_move_memory_region(void) { pthread_t vcpu_thread; + struct kvm_vcpu *vcpu; struct kvm_vm *vm; uint64_t *hva; =20 - vm =3D spawn_vm(&vcpu_thread, guest_code_move_memory_region); + vm =3D spawn_vm(&vcpu, &vcpu_thread, guest_code_move_memory_region); =20 hva =3D addr_gpa2hva(vm, MEM_REGION_GPA); =20 @@ -258,11 +256,12 @@ static void guest_code_delete_memory_region(void) static void test_delete_memory_region(void) { pthread_t vcpu_thread; + struct kvm_vcpu *vcpu; struct kvm_regs regs; struct kvm_run *run; struct kvm_vm *vm; =20 - vm =3D spawn_vm(&vcpu_thread, guest_code_delete_memory_region); + vm =3D spawn_vm(&vcpu, &vcpu_thread, guest_code_delete_memory_region); =20 /* Delete the memory region, the guest should not die. */ vm_mem_region_delete(vm, MEM_REGION_SLOT); @@ -286,13 +285,13 @@ static void test_delete_memory_region(void) =20 pthread_join(vcpu_thread, NULL); =20 - run =3D vcpu_state(vm, VCPU_ID); + run =3D vcpu->run; =20 TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_SHUTDOWN || run->exit_reason =3D=3D KVM_EXIT_INTERNAL_ERROR, "Unexpected exit reason =3D %d", run->exit_reason); =20 - vcpu_regs_get(vm, VCPU_ID, ®s); + vcpu_regs_get(vm, vcpu->id, ®s); =20 /* * On AMD, after KVM_EXIT_SHUTDOWN the VMCB has been reinitialized alread= y, @@ -309,18 +308,19 @@ static void test_delete_memory_region(void) =20 static void test_zero_memory_regions(void) { + struct kvm_vcpu *vcpu; struct kvm_run *run; struct kvm_vm *vm; =20 pr_info("Testing KVM_RUN with zero added memory regions\n"); =20 vm =3D vm_create(0); - vm_vcpu_add(vm, VCPU_ID); + vcpu =3D vm_vcpu_add(vm, 0); =20 vm_ioctl(vm, KVM_SET_NR_MMU_PAGES, (void *)64ul); - vcpu_run(vm, VCPU_ID); + vcpu_run(vm, vcpu->id); =20 - run =3D vcpu_state(vm, VCPU_ID); + run =3D vcpu->run; TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_INTERNAL_ERROR, "Unexpected exit_reason =3D %u\n", run->exit_reason); =20 --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 0032AC35296 for ; Fri, 11 Mar 2022 05:59:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347912AbiCKGAG (ORCPT ); Fri, 11 Mar 2022 01:00:06 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60414 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346666AbiCKFyS (ORCPT ); Fri, 11 Mar 2022 00:54:18 -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 DD5B2ECC63 for ; Thu, 10 Mar 2022 21:53:10 -0800 (PST) Received: by mail-yw1-x114a.google.com with SMTP id 00721157ae682-2d7eaa730d9so60681557b3.13 for ; Thu, 10 Mar 2022 21:53:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=YwhyU05L7Ko0hIsmYp9gm9BkDv+Toat6glatzPogOBo=; b=mL1zeahftIebrFmW45WnNK0m1a6a6j1NgihbFsPw/LJJG0x01QWqQZYTD4wtFSRfzg 91jT5Q0fxcBVJlSw85RRX+0SmohXjbxD/vKVwRHGQHnazR05DD6RTn9+r3aKJM4Sh7wi Y1XJlDfx+WzpRbNVb958zuPvQm79CDeeirQ1zXQ9dhVtFn6qHEmuNrZrTWhfaBvxpbn2 hY3wkw4uOBp6qb5j8OfBaF8xjzNnYLPcNN3FklyScWskvN9Xj8shWZ08800K7rBb1PhE hgeWXTNE3r18Lr8ECKcDVVkge8S7TTU7bUGK6YDqn0KQW7DQTb00BqdzDYC5ZJKZSKWG akfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=YwhyU05L7Ko0hIsmYp9gm9BkDv+Toat6glatzPogOBo=; b=30K+d3asp4F6yzM7UO0t0gPtK9iJAzPi+GsrxS6CUWF+w0lb/o5wneN8z4cBmz12dS MfSThWnMETeVWE0gqm4BTTIOHITfvmiAWeltEaF9NngMPAfpU7wRqKbjDlcNgO31mrWu unlAxmsFuW30btm6Qu8HMcT57ZDXcMMSUhKr2pAVFzTh21KTTivQkjpmO62hOr0leRbl PKvezM3WDH0KQpGBg1QxEk/5qos473RD6cOytYObOWjI0mQsLeUPSpwWngXQfzW8TxKz EHb+iP0xx0aM4HPejzbep7qfycGCH2gR0KqnFtdxolfFYblZfs66ULm5i2bV65gOAYhU yBiQ== X-Gm-Message-State: AOAM533k0xv5OZN7aNuvdBlM/mNZC5NJV7DbD4Rl37yOrnjw4sfs6Fez K3tF1UPZoJPhKDw7bB2kRhyVP7xxPdSvQiEyGfrYyQpKIma0cKomOQx+oWViDo6lfCYsvRy8fx8 OeUqNdRjdj+Z2h2Qc7LnbaHNdxaZxPNNouBjwJ5rJTtZ1m6m2/LDebTnYJqNygDg5NJjC1g== X-Google-Smtp-Source: ABdhPJyYbSFXBd7kMqLEVN6dQnESGkxhq/0rS1nlftze0nl+kQuzzjMrdx/UCs1mxyV5DBQMYrpfgaFTOJw= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a25:b991:0:b0:610:bf4e:1b33 with SMTP id r17-20020a25b991000000b00610bf4e1b33mr7044533ybg.352.1646977989530; Thu, 10 Mar 2022 21:53:09 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:24 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-74-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 073/105] KVM: selftests: Convert system_counter_offset_test away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../kvm/system_counter_offset_test.c | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/tools/testing/selftests/kvm/system_counter_offset_test.c b/too= ls/testing/selftests/kvm/system_counter_offset_test.c index 5dd9d28efb97..0690ce0ae4fa 100644 --- a/tools/testing/selftests/kvm/system_counter_offset_test.c +++ b/tools/testing/selftests/kvm/system_counter_offset_test.c @@ -14,8 +14,6 @@ #include "kvm_util.h" #include "processor.h" =20 -#define VCPU_ID 0 - #ifdef __x86_64__ =20 struct test_case { @@ -28,18 +26,19 @@ static struct test_case test_cases[] =3D { { -180 * NSEC_PER_SEC }, }; =20 -static void check_preconditions(struct kvm_vm *vm) +static void check_preconditions(struct kvm_vcpu *vcpu) { - if (!__vcpu_has_device_attr(vm, VCPU_ID, KVM_VCPU_TSC_CTRL, KVM_VCPU_TSC_= OFFSET)) + if (!__vcpu_has_device_attr(vcpu->vm, vcpu->id, KVM_VCPU_TSC_CTRL, + KVM_VCPU_TSC_OFFSET)) return; =20 print_skip("KVM_VCPU_TSC_OFFSET not supported; skipping test"); exit(KSFT_SKIP); } =20 -static void setup_system_counter(struct kvm_vm *vm, struct test_case *test) +static void setup_system_counter(struct kvm_vcpu *vcpu, struct test_case *= test) { - vcpu_device_attr_set(vm, VCPU_ID, KVM_VCPU_TSC_CTRL, + vcpu_device_attr_set(vcpu->vm, vcpu->id, KVM_VCPU_TSC_CTRL, KVM_VCPU_TSC_OFFSET, &test->tsc_offset); } =20 @@ -91,7 +90,7 @@ static void handle_abort(struct ucall *uc) __FILE__, uc->args[1]); } =20 -static void enter_guest(struct kvm_vm *vm) +static void enter_guest(struct kvm_vcpu *vcpu) { uint64_t start, end; struct ucall uc; @@ -100,12 +99,12 @@ static void enter_guest(struct kvm_vm *vm) for (i =3D 0; i < ARRAY_SIZE(test_cases); i++) { struct test_case *test =3D &test_cases[i]; =20 - setup_system_counter(vm, test); + setup_system_counter(vcpu, test); start =3D host_read_guest_system_counter(test); - vcpu_run(vm, VCPU_ID); + vcpu_run(vcpu->vm, vcpu->id); end =3D host_read_guest_system_counter(test); =20 - switch (get_ucall(vm, VCPU_ID, &uc)) { + switch (get_ucall(vcpu->vm, vcpu->id, &uc)) { case UCALL_SYNC: handle_sync(&uc, start, end); break; @@ -114,19 +113,20 @@ static void enter_guest(struct kvm_vm *vm) return; default: TEST_ASSERT(0, "unhandled ucall %ld\n", - get_ucall(vm, VCPU_ID, &uc)); + get_ucall(vcpu->vm, vcpu->id, &uc)); } } } =20 int main(void) { + struct kvm_vcpu *vcpu; struct kvm_vm *vm; =20 - vm =3D vm_create_default(VCPU_ID, 0, guest_main); - check_preconditions(vm); + vm =3D vm_create_with_one_vcpu(&vcpu, guest_main); + check_preconditions(vcpu); ucall_init(vm, NULL); =20 - enter_guest(vm); + enter_guest(vcpu); kvm_vm_free(vm); } --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 AE336C4167B for ; Fri, 11 Mar 2022 05:59:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347896AbiCKGAF (ORCPT ); Fri, 11 Mar 2022 01:00:05 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60418 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346678AbiCKFyS (ORCPT ); Fri, 11 Mar 2022 00:54:18 -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 DD15BEC5C0 for ; Thu, 10 Mar 2022 21:53:12 -0800 (PST) Received: by mail-yw1-x114a.google.com with SMTP id 00721157ae682-2dd2c5ef10eso60196057b3.14 for ; Thu, 10 Mar 2022 21:53:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=zLf3U3X5JZYsMDSdUgQiDaIVL0JiAkLrePe1XVgJWV0=; b=pikXvfRzsvUZMp7Naom7qO6c4qw9bajKzo/LX3wS/th4BOcTm6NWV7JI5vwfCUjuWr PJGsDjn3F8IJlk9LT8+jgQ4B+UjEJNooibMvuhIEM5JU+GlZU8AqHbB1K37IGmKd0Dic qTuA7n0FYgyj5/HMfgJ0A9rSZKOtYEltUUQFHd4nCeSYcDi5plUe8dnPplSfP9jBjvFm 0Ov+uSzfi1yq3MLdKX6zXhsC9hEDDheqbDAlrYs481sfMeqA7rXa7K0FFEFBDMfI9VYf MZHlwQbaLaHnw/WHm1S168yHJEKAhX5Bxv8w9eAs4yGICTFIdqXSee77LgqIvyLlWYQN Uvgg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=zLf3U3X5JZYsMDSdUgQiDaIVL0JiAkLrePe1XVgJWV0=; b=6nbSFRv4gU5L+p8G6yzaFJSlOj651Q/NqJ39EiU24jIMye5mtD3mpHppDsmsHhCkLW 0mglDV80HC7LShSxxONVMHfODxOtiWOs40plQfDEEUKCcLrTdRZU52oijKcBpY+O8cb4 8HWQPIcIpOcanbAKoEb3OBHNPiQnJFsVV0RrBpsyDLbgO8tGPRy3YoSZTed5fV7lNqx5 uw30NaY1qrOUXQcGpvjoqgheO66Mv2hrGenHiURD4tDrlSBm4L3S5JR9gOCgQHOI6ZOD w9RJrNrX2cxtFpRkrqEhqDmCucb4wrQHOz0wGH89sNHlnNPN3hjbkGO1C5WP0iq365zm 7I+Q== X-Gm-Message-State: AOAM532Tge4T/drJRPgDZkgqQ54EvA8NCBTdyK2UAZqUTxVYIjzns2WZ qi99pltdEFv2ml+qZmBorPUH6s6uXhMnxUjy029i09+cN9L4lMs4fZBA1XcOF9SZAhetoPagChg UAYGLKfOb8hA2VVwlmlOBFwdgacX73AnCS8c1KcLpKAyH+ltYP8uWGmZBFvost1UGEAzaTw== X-Google-Smtp-Source: ABdhPJzDS2ZnTpyuv5B86K8sNOM8I1m0l0v75LrXwF3pqugMznd+Epb2gwN2t9SBLf5syQfA46Kkp6CqnXY= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a0d:d9c9:0:b0:2dc:22e:74a5 with SMTP id b192-20020a0dd9c9000000b002dc022e74a5mr7119116ywe.338.1646977991236; Thu, 10 Mar 2022 21:53:11 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:25 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-75-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 074/105] KVM: selftests: Convert debug-exceptions away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/aarch64/debug-exceptions.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/tools/testing/selftests/kvm/aarch64/debug-exceptions.c b/tools= /testing/selftests/kvm/aarch64/debug-exceptions.c index ea189d83abf7..d27f30dc57b6 100644 --- a/tools/testing/selftests/kvm/aarch64/debug-exceptions.c +++ b/tools/testing/selftests/kvm/aarch64/debug-exceptions.c @@ -3,8 +3,6 @@ #include #include =20 -#define VCPU_ID 0 - #define MDSCR_KDE (1 << 13) #define MDSCR_MDE (1 << 15) #define MDSCR_SS (1 << 0) @@ -186,27 +184,28 @@ static void guest_svc_handler(struct ex_regs *regs) svc_addr =3D regs->pc; } =20 -static int debug_version(struct kvm_vm *vm) +static int debug_version(struct kvm_vcpu *vcpu) { uint64_t id_aa64dfr0; =20 - get_reg(vm, VCPU_ID, KVM_ARM64_SYS_REG(SYS_ID_AA64DFR0_EL1), &id_aa64dfr0= ); + get_reg(vcpu->vm, vcpu->id, KVM_ARM64_SYS_REG(SYS_ID_AA64DFR0_EL1), &id_a= a64dfr0); return id_aa64dfr0 & 0xf; } =20 int main(int argc, char *argv[]) { + struct kvm_vcpu *vcpu; struct kvm_vm *vm; struct ucall uc; int stage; =20 - vm =3D vm_create_default(VCPU_ID, 0, guest_code); + vm =3D vm_create_with_one_vcpu(&vcpu, guest_code); ucall_init(vm, NULL); =20 vm_init_descriptor_tables(vm); - vcpu_init_descriptor_tables(vm, VCPU_ID); + vcpu_init_descriptor_tables(vm, vcpu->id); =20 - if (debug_version(vm) < 6) { + if (debug_version(vcpu) < 6) { print_skip("Armv8 debug architecture not supported."); kvm_vm_free(vm); exit(KSFT_SKIP); @@ -224,9 +223,9 @@ int main(int argc, char *argv[]) ESR_EC_SVC64, guest_svc_handler); =20 for (stage =3D 0; stage < 7; stage++) { - vcpu_run(vm, VCPU_ID); + vcpu_run(vm, vcpu->id); =20 - switch (get_ucall(vm, VCPU_ID, &uc)) { + switch (get_ucall(vm, vcpu->id, &uc)) { case UCALL_SYNC: TEST_ASSERT(uc.args[1] =3D=3D stage, "Stage %d: Unexpected sync ucall, got %lx", --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 D9FD8C35295 for ; Fri, 11 Mar 2022 05:59:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347881AbiCKGAD (ORCPT ); Fri, 11 Mar 2022 01:00:03 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60560 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346720AbiCKFyU (ORCPT ); Fri, 11 Mar 2022 00:54:20 -0500 Received: from mail-pf1-x44a.google.com (mail-pf1-x44a.google.com [IPv6:2607:f8b0:4864:20::44a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4C6BBF1AD3 for ; Thu, 10 Mar 2022 21:53:13 -0800 (PST) Received: by mail-pf1-x44a.google.com with SMTP id t184-20020a6281c1000000b004e103c5f726so4614943pfd.8 for ; Thu, 10 Mar 2022 21:53:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=ASMbPf1pAfd0lY/Kp4YmL7EogyqKjavAbHGYSHJu3g0=; b=tDFbJWVphzc2HUPXOZhKG9oM6SVIcjBOfkDj/X0PNvcfaTTW9mMaY5I+q4mOFipEkM 0IED3CLLyYpfg4icpffFsjeR/Y2ztv0zpjiBXm3vN3Ota+MaIvwsLVOJMBi8lRTKCXEG z7GEQY0h2wpeyDrbs7LW9mkxHq2Y7KJvczFKF2NR5VF6vUeLBfx8oPzxER0isxfJ9sAK bEkt7NQ8Iydd0HYjNFWr6NGTYF5gMhaCEmoZ/vt40OzUVt6ReAOWjCLyxg4aTG+4lXQo TguQEJZhx2tOsx7+cy0i+7Na99c7ymYvhIwY5PZr6RpQb7kgmLL42y949rRURByx2Vm0 0zZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=ASMbPf1pAfd0lY/Kp4YmL7EogyqKjavAbHGYSHJu3g0=; b=zHehxZgAz1e61ZLwAkiUncZHq2phWE3G9AeeTo9KtUsyHSW9idipsqXLu72loDq4cG Mfl7DXC9EI8ipxLlnkDqz3AKeFk4RyIzk/rH2UyPcoyYR8jZ+8Eb15O2YWztx1pw/7vK f0YTGwHtNuI+fy7Y5wBeSg1/7uy/Y0+GuL12WRnaszlxXH8GElsafn6/SNLg+yeJi1x7 7/7vKwSCQ+khVY4WG0Z3e9+jlq/JBnJgGWek/i7ufmG+sf1LF5aMWxvo8oZWNkY/LgI6 W1znqTsp/gwjdJRBHPUOoOHz4RGSiFkw3vhYr1YnXGxMzumY5HR0VCb2p9O6OQk3AAC3 swoQ== X-Gm-Message-State: AOAM532x239l+6OcWJXhw3Ey0CasN9pGsxKTjhRKEK3KL1Z36m0pwGVD 5jde/2Q3CYBkleaaGJ0Aicm8gvP+ylZnbS+vyafUamjXAK72+eoHJeaQ3tnx5al6JLZG7cQEtiy lHD4Q2URhRIPoU9u6FK4KmCkjnhS7w9c84iF3iXl58os4GvFdpm0AIwJaEKgYiZcNzQK8MA== X-Google-Smtp-Source: ABdhPJxCKn8TnczvY8kx1zKXaq7SEtGa16zqKAz+NPIluavhLfCA9OtHWXPblJuwSX+NADWJ9qobZ1C1CAg= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:90b:1e10:b0:1bf:6c78:54a9 with SMTP id pg16-20020a17090b1e1000b001bf6c7854a9mr461041pjb.1.1646977992898; Thu, 10 Mar 2022 21:53:12 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:26 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-76-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 075/105] KVM: selftests: Convert vgic_irq.c include/aarch64/vgic.h lib/aarch64/vgic away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../testing/selftests/kvm/aarch64/vgic_irq.c | 30 ++++++++++--------- .../selftests/kvm/include/aarch64/vgic.h | 6 ++-- .../testing/selftests/kvm/lib/aarch64/vgic.c | 10 +++---- 3 files changed, 25 insertions(+), 21 deletions(-) diff --git a/tools/testing/selftests/kvm/aarch64/vgic_irq.c b/tools/testing= /selftests/kvm/aarch64/vgic_irq.c index e6c7d7f8fbd1..75c2c2d28801 100644 --- a/tools/testing/selftests/kvm/aarch64/vgic_irq.c +++ b/tools/testing/selftests/kvm/aarch64/vgic_irq.c @@ -22,7 +22,6 @@ =20 #define GICD_BASE_GPA 0x08000000ULL #define GICR_BASE_GPA 0x080A0000ULL -#define VCPU_ID 0 =20 /* * Stores the user specified args; it's passed to the guest and to every t= est @@ -586,7 +585,8 @@ static void kvm_set_gsi_routing_irqchip_check(struct kv= m_vm *vm, } =20 static void kvm_irq_write_ispendr_check(int gic_fd, uint32_t intid, - uint32_t vcpu, bool expect_failure) + struct kvm_vcpu *vcpu, + bool expect_failure) { /* * Ignore this when expecting failure as invalid intids will lead to @@ -657,15 +657,16 @@ static void kvm_routing_and_irqfd_check(struct kvm_vm= *vm, (tmp) < (uint64_t)(first) + (uint64_t)(num); \ (tmp)++, (i)++) =20 -static void run_guest_cmd(struct kvm_vm *vm, int gic_fd, - struct kvm_inject_args *inject_args, - struct test_args *test_args) +static void run_guest_cmd(struct kvm_vcpu *vcpu, int gic_fd, + struct kvm_inject_args *inject_args, + struct test_args *test_args) { kvm_inject_cmd cmd =3D inject_args->cmd; uint32_t intid =3D inject_args->first_intid; uint32_t num =3D inject_args->num; int level =3D inject_args->level; bool expect_failure =3D inject_args->expect_failure; + struct kvm_vm *vm =3D vcpu->vm; uint64_t tmp; uint32_t i; =20 @@ -703,12 +704,12 @@ static void run_guest_cmd(struct kvm_vm *vm, int gic_= fd, break; case KVM_WRITE_ISPENDR: for (i =3D intid; i < intid + num; i++) - kvm_irq_write_ispendr_check(gic_fd, i, - VCPU_ID, expect_failure); + kvm_irq_write_ispendr_check(gic_fd, i, vcpu, + expect_failure); break; case KVM_WRITE_ISACTIVER: for (i =3D intid; i < intid + num; i++) - kvm_irq_write_isactiver(gic_fd, i, VCPU_ID); + kvm_irq_write_isactiver(gic_fd, i, vcpu); break; default: break; @@ -737,6 +738,7 @@ static void test_vgic(uint32_t nr_irqs, bool level_sens= itive, bool eoi_split) { struct ucall uc; int gic_fd; + struct kvm_vcpu *vcpu; struct kvm_vm *vm; struct kvm_inject_args inject_args; =20 @@ -750,14 +752,14 @@ static void test_vgic(uint32_t nr_irqs, bool level_se= nsitive, bool eoi_split) =20 print_args(&args); =20 - vm =3D vm_create_default(VCPU_ID, 0, guest_code); + vm =3D vm_create_with_one_vcpu(&vcpu, guest_code); ucall_init(vm, NULL); =20 vm_init_descriptor_tables(vm); - vcpu_init_descriptor_tables(vm, VCPU_ID); + vcpu_init_descriptor_tables(vm, vcpu->id); =20 /* Setup the guest args page (so it gets the args). */ - vcpu_args_set(vm, 0, 1, args); + vcpu_args_set(vm, vcpu->id, 1, args); =20 gic_fd =3D vgic_v3_setup(vm, 1, nr_irqs, GICD_BASE_GPA, GICR_BASE_GPA); @@ -766,12 +768,12 @@ static void test_vgic(uint32_t nr_irqs, bool level_se= nsitive, bool eoi_split) guest_irq_handlers[args.eoi_split][args.level_sensitive]); =20 while (1) { - vcpu_run(vm, VCPU_ID); + vcpu_run(vm, vcpu->id); =20 - switch (get_ucall(vm, VCPU_ID, &uc)) { + switch (get_ucall(vm, vcpu->id, &uc)) { case UCALL_SYNC: kvm_inject_get_call(vm, &uc, &inject_args); - run_guest_cmd(vm, gic_fd, &inject_args, &args); + run_guest_cmd(vcpu, gic_fd, &inject_args, &args); break; case UCALL_ABORT: TEST_FAIL("%s at %s:%ld\n\tvalues: %#lx, %#lx", diff --git a/tools/testing/selftests/kvm/include/aarch64/vgic.h b/tools/tes= ting/selftests/kvm/include/aarch64/vgic.h index 4442081221a0..0ac6f05c63f9 100644 --- a/tools/testing/selftests/kvm/include/aarch64/vgic.h +++ b/tools/testing/selftests/kvm/include/aarch64/vgic.h @@ -8,6 +8,8 @@ =20 #include =20 +#include "kvm_util.h" + #define REDIST_REGION_ATTR_ADDR(count, base, flags, index) \ (((uint64_t)(count) << 52) | \ ((uint64_t)((base) >> 16) << 16) | \ @@ -26,8 +28,8 @@ void kvm_arm_irq_line(struct kvm_vm *vm, uint32_t intid, = int level); int _kvm_arm_irq_line(struct kvm_vm *vm, uint32_t intid, int level); =20 /* The vcpu arg only applies to private interrupts. */ -void kvm_irq_write_ispendr(int gic_fd, uint32_t intid, uint32_t vcpu); -void kvm_irq_write_isactiver(int gic_fd, uint32_t intid, uint32_t vcpu); +void kvm_irq_write_ispendr(int gic_fd, uint32_t intid, struct kvm_vcpu *vc= pu); +void kvm_irq_write_isactiver(int gic_fd, uint32_t intid, struct kvm_vcpu *= vcpu); =20 #define KVM_IRQCHIP_NUM_PINS (1020 - 32) =20 diff --git a/tools/testing/selftests/kvm/lib/aarch64/vgic.c b/tools/testing= /selftests/kvm/lib/aarch64/vgic.c index 25e765973f74..4a0ae7426498 100644 --- a/tools/testing/selftests/kvm/lib/aarch64/vgic.c +++ b/tools/testing/selftests/kvm/lib/aarch64/vgic.c @@ -127,8 +127,8 @@ void kvm_arm_irq_line(struct kvm_vm *vm, uint32_t intid= , int level) ret, errno); } =20 -static void vgic_poke_irq(int gic_fd, uint32_t intid, - uint32_t vcpu, uint64_t reg_off) +static void vgic_poke_irq(int gic_fd, uint32_t intid, struct kvm_vcpu *vcp= u, + uint64_t reg_off) { uint64_t reg =3D intid / 32; uint64_t index =3D intid % 32; @@ -144,7 +144,7 @@ static void vgic_poke_irq(int gic_fd, uint32_t intid, =20 if (intid_is_private) { /* TODO: only vcpu 0 implemented for now. */ - assert(vcpu =3D=3D 0); + assert(vcpu->id =3D=3D 0); attr +=3D SZ_64K; } =20 @@ -158,12 +158,12 @@ static void vgic_poke_irq(int gic_fd, uint32_t intid, kvm_device_attr_set(gic_fd, group, attr, &val); } =20 -void kvm_irq_write_ispendr(int gic_fd, uint32_t intid, uint32_t vcpu) +void kvm_irq_write_ispendr(int gic_fd, uint32_t intid, struct kvm_vcpu *vc= pu) { vgic_poke_irq(gic_fd, intid, vcpu, GICD_ISPENDR); } =20 -void kvm_irq_write_isactiver(int gic_fd, uint32_t intid, uint32_t vcpu) +void kvm_irq_write_isactiver(int gic_fd, uint32_t intid, struct kvm_vcpu *= vcpu) { vgic_poke_irq(gic_fd, intid, vcpu, GICD_ISACTIVER); } --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 13B8FC3527D for ; Fri, 11 Mar 2022 05:59:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347774AbiCKF7o (ORCPT ); Fri, 11 Mar 2022 00:59:44 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60528 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346716AbiCKFyT (ORCPT ); Fri, 11 Mar 2022 00:54:19 -0500 Received: from mail-pf1-x44a.google.com (mail-pf1-x44a.google.com [IPv6:2607:f8b0:4864:20::44a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4D8F2F3284 for ; Thu, 10 Mar 2022 21:53:15 -0800 (PST) Received: by mail-pf1-x44a.google.com with SMTP id a23-20020aa794b7000000b004f6a3ac7a87so4583209pfl.23 for ; Thu, 10 Mar 2022 21:53:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=/WQ/0mOujKZ36BCdIZx9sI/vMxrt+4LV8z0YUs+nqw8=; b=N4cvXe8EbhS/+75CxW7kF1EHZ7Xr9VdS5zvE3jK2zHzelPN0omdZjQEfjWpOAMn2vx kkJpwDvZ8HbJFScDb4r1BlBGh0Dc/nHsoYvvDLhZRMNlzfrS4pO2tpM/RZS0fAFis/lM yhK5u/znRjTvBMXIddmA6hxdEtEqRNh7GORTpkSAuehB4KYSPj8DWVMwChc4IIZhmhm7 N/RS6Z7qO8+MVTLbmcq6R47fziCcP3tNcOZuCJY2njA+ABQFW14TpZa7tttMNANxntmt a49+qosrbjtsnP6vw7pC1v9i8ao8T7PiSFIcylouJVUcOM0aT34+D2MiukD5Mn8ENdf3 f/fw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=/WQ/0mOujKZ36BCdIZx9sI/vMxrt+4LV8z0YUs+nqw8=; b=R9m4IFepXuayvT5I9wlMPdQVtUqxPTo9mliiVqtfGz03E0YpsJArd9ZZnau6HcghRf vT+nfF7EEoCVwHbdaQiF4Qo8QcyU4UEnw7h0DH4JqIRsVgSoyuTFwchiVB9cruUKCHlV 32Stc5UpPZSqWZKfJGLhi9anwv70ic1FxJ9RKkvw9S1the1cNFRWa4Xp+b5aHiyWXioU gd3Zik1+LndSoQyVMbZP7IJnaUm6CTWO2scp8B5o3aXxGJFngZ+vdf1qXHr6FfPxxKxE wORq4B/8G3KCUp57XWkwUk/kOqTnF6vi5E7pndpOlYekZbnRHjakk/7ApBjxXpkulPDj upEQ== X-Gm-Message-State: AOAM532kmHm6pEsTTIO6Gp+B0yJRC6j5McbCMIsdlZWxD7wwoLZSuKHo xSOJA6wrlRocm1BFqiNYyGW6gVH6cxBZ5tzL22EYSH2lo+6Rn1/ofxmF0mXzs6YZEfxv2ZDjaLN 86lwrfshrSHKJafa5XIRvlV6skZ4Q0NnR9xaELE5MQhKXrIf8u2xCrcz/kppg5l1dRH5xjQ== X-Google-Smtp-Source: ABdhPJyPLbR6ORW8inWJGmqblVriXBMezUrwzT/HHG7N529A2poFo1YjB0SDB/YlfR/Wgh0Z6vn+9+ZKqXs= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:90b:1e10:b0:1bf:6c78:54a9 with SMTP id pg16-20020a17090b1e1000b001bf6c7854a9mr461050pjb.1.1646977994704; Thu, 10 Mar 2022 21:53:14 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:27 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-77-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 076/105] KVM: selftests: Make arm64's guest_get_vcpuid() declaration arm64-only From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- tools/testing/selftests/kvm/include/aarch64/processor.h | 2 ++ tools/testing/selftests/kvm/include/kvm_util_base.h | 2 -- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/kvm/include/aarch64/processor.h b/tool= s/testing/selftests/kvm/include/aarch64/processor.h index 8f9f46979a00..9a430980100e 100644 --- a/tools/testing/selftests/kvm/include/aarch64/processor.h +++ b/tools/testing/selftests/kvm/include/aarch64/processor.h @@ -185,4 +185,6 @@ static inline void local_irq_disable(void) asm volatile("msr daifset, #3" : : : "memory"); } =20 +uint32_t guest_get_vcpuid(void); + #endif /* SELFTEST_KVM_PROCESSOR_H */ diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/te= sting/selftests/kvm/include/kvm_util_base.h index c64e99b9b6b3..e1e25ec09158 100644 --- a/tools/testing/selftests/kvm/include/kvm_util_base.h +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h @@ -694,6 +694,4 @@ void assert_on_unhandled_exception(struct kvm_vm *vm, u= int32_t vcpuid); =20 int vm_get_stats_fd(struct kvm_vm *vm); =20 -uint32_t guest_get_vcpuid(void); - #endif /* SELFTEST_KVM_UTIL_BASE_H */ --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 23306C433FE for ; Fri, 11 Mar 2022 05:59:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347790AbiCKF7q (ORCPT ); Fri, 11 Mar 2022 00:59:46 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60526 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346714AbiCKFyT (ORCPT ); Fri, 11 Mar 2022 00:54:19 -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 4CE82F1EAC for ; Thu, 10 Mar 2022 21:53:17 -0800 (PST) Received: by mail-pj1-x1049.google.com with SMTP id t12-20020a17090a448c00b001b9cbac9c43so4615832pjg.2 for ; Thu, 10 Mar 2022 21:53:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=dT/eOvE+WRX23Q5t+kOORFXcbEma/L7+oPwtuT8Wl1k=; b=Ypg8JDkxFk3q2+eigzxvEb8qG8c+Su567Vz0MTkMvceU0QnQXvqi56CiExZxo88Nty +yE3ubHh+W09IWhZ6pqoLxEWM8y58JWC+7wv7L/CP4oY8SsAwu6Mbg1QsZSri7aGoYUS 5/V54butK3A+xjRiibV/A1VP4I9AIsRRQvIjdTZDNKQs3dtzOu5zxyO22M2sSKpeKZMO v7GxMsKqtS0No3REMFU/z2OD51K1Vk4VLHqvUrMvFBr7SDZpKExCrBAn7FJOgqVqvBXY W8x7Ck7CVRGj62xjpg1lMqjAYswBKtBcp0DEBbXCz7XhB2Phrs0mbGw3Y2tzizlimUNP dhqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=dT/eOvE+WRX23Q5t+kOORFXcbEma/L7+oPwtuT8Wl1k=; b=PJ9H1IsAnsGzfRusdxVILwCX5VM4UfshEyaZ6RL/9rv9b5JXTreYQpcQzaEA2QskhJ j73l1xtdlQm9V4PD6GJTwADRQdcHK9Hu1I/sWBh5sRW4rjIoUl5CFNIweBe0GJ03ujyZ zIo2oLr/ZtP6UpQS1JyrwhUbUM59SyIOTVnbGAp4ltUB8hPKUbcfp+MhIAyoG/JW7znV Vc1OkogtSTo1dvWZrvqrrZ8s0I2keM6XqG47gW/CNcpfYVQGPQYuGM6qtYOcuEHdlev7 lgn+DvGyO1DZNuKgNGSFP3oKeP+8OhoEEqGkpC+zwfwEzpKqsuOjI/IGjVqeiGRAfXz6 GwzQ== X-Gm-Message-State: AOAM533fdWgnDenYL8MWahNDiUJTTAwGkn/65Mr+D0MmLE+juGFJ5psn zP7qBvj6uKg/hVDxtrOnbyuzTnTOQr9DcOqBVfuguVQDJgSljnb2phc8cAcYFJARoqsnUePWjzt uWWA3Ifn9XLNTTziTzZFm9DhgbGSpvHPUgBKUnaxxl4i8+IGDydom5kP2rJ5Erx34ZdPCXQ== X-Google-Smtp-Source: ABdhPJwMvY5G7stWPNnlBP0tdatZSWEU54XnWgMGviSbOSjFJTPkGBwNcqHvCSlHiQKojBVguoBRrMrzCtI= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a62:7793:0:b0:4f6:27a8:ae6d with SMTP id s141-20020a627793000000b004f627a8ae6dmr8700532pfc.65.1646977996447; Thu, 10 Mar 2022 21:53:16 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:28 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-78-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 077/105] KVM: selftests: Move vm_is_unrestricted_guest() to x86-64 From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/include/kvm_util_base.h | 7 ---- .../selftests/kvm/include/x86_64/processor.h | 1 + tools/testing/selftests/kvm/lib/kvm_util.c | 33 ------------------- .../selftests/kvm/lib/x86_64/processor.c | 21 ++++++++++++ 4 files changed, 22 insertions(+), 40 deletions(-) diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/te= sting/selftests/kvm/include/kvm_util_base.h index e1e25ec09158..042c39e474da 100644 --- a/tools/testing/selftests/kvm/include/kvm_util_base.h +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h @@ -647,8 +647,6 @@ struct kvm_vcpu *vm_recreate_with_one_vcpu(struct kvm_v= m *vm); */ void vm_vcpu_add_default(struct kvm_vm *vm, uint32_t vcpuid, void *guest_c= ode); =20 -bool vm_is_unrestricted_guest(struct kvm_vm *vm); - unsigned int vm_get_page_size(struct kvm_vm *vm); unsigned int vm_get_page_shift(struct kvm_vm *vm); unsigned long vm_compute_max_gfn(struct kvm_vm *vm); @@ -675,11 +673,6 @@ struct kvm_userspace_memory_region * kvm_userspace_memory_region_find(struct kvm_vm *vm, uint64_t start, uint64_t end); =20 -struct kvm_dirty_log * -allocate_kvm_dirty_log(struct kvm_userspace_memory_region *region); - -int vm_create_device(struct kvm_vm *vm, struct kvm_create_device *cd); - #define sync_global_to_guest(vm, g) ({ \ typeof(g) *_p =3D addr_gva2hva(vm, (vm_vaddr_t)&(g)); \ memcpy(_p, &(g), sizeof(g)); \ diff --git a/tools/testing/selftests/kvm/include/x86_64/processor.h b/tools= /testing/selftests/kvm/include/x86_64/processor.h index b20de7919411..d67cb5d7fded 100644 --- a/tools/testing/selftests/kvm/include/x86_64/processor.h +++ b/tools/testing/selftests/kvm/include/x86_64/processor.h @@ -430,6 +430,7 @@ static inline void vcpu_set_msr(struct kvm_vm *vm, uint= 32_t vcpuid, uint32_t kvm_get_cpuid_max_basic(void); uint32_t kvm_get_cpuid_max_extended(void); void kvm_get_cpu_address_width(unsigned int *pa_bits, unsigned int *va_bit= s); +bool vm_is_unrestricted_guest(struct kvm_vm *vm); =20 struct ex_regs { uint64_t rax, rcx, rdx, rbx; diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index fa880874c8d5..23de0335f22b 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -1936,39 +1936,6 @@ void *addr_gva2hva(struct kvm_vm *vm, vm_vaddr_t gva) return addr_gpa2hva(vm, addr_gva2gpa(vm, gva)); } =20 -/* - * Is Unrestricted Guest - * - * Input Args: - * vm - Virtual Machine - * - * Output Args: None - * - * Return: True if the unrestricted guest is set to 'Y', otherwise return = false. - * - * Check if the unrestricted guest flag is enabled. - */ -bool vm_is_unrestricted_guest(struct kvm_vm *vm) -{ - char val =3D 'N'; - size_t count; - FILE *f; - - if (vm =3D=3D NULL) { - /* Ensure that the KVM vendor-specific module is loaded. */ - close(open_kvm_dev_path_or_exit()); - } - - f =3D fopen("/sys/module/kvm_intel/parameters/unrestricted_guest", "r"); - if (f) { - count =3D fread(&val, sizeof(char), 1, f); - TEST_ASSERT(count =3D=3D 1, "Unable to read from param file."); - fclose(f); - } - - return val =3D=3D 'Y'; -} - unsigned int vm_get_page_size(struct kvm_vm *vm) { return vm->page_size; diff --git a/tools/testing/selftests/kvm/lib/x86_64/processor.c b/tools/tes= ting/selftests/kvm/lib/x86_64/processor.c index 289a73262f8c..ea7f1703e51e 100644 --- a/tools/testing/selftests/kvm/lib/x86_64/processor.c +++ b/tools/testing/selftests/kvm/lib/x86_64/processor.c @@ -1440,3 +1440,24 @@ unsigned long vm_compute_max_gfn(struct kvm_vm *vm) done: return min(max_gfn, ht_gfn - 1); } + +/* Returns true if kvm_intel was loaded with unrestricted_guest=3D1. */ +bool vm_is_unrestricted_guest(struct kvm_vm *vm) +{ + char val =3D 'N'; + size_t count; + FILE *f; + + /* Ensure that a KVM vendor-specific module is loaded. */ + if (vm =3D=3D NULL) + close(open_kvm_dev_path_or_exit()); + + f =3D fopen("/sys/module/kvm_intel/parameters/unrestricted_guest", "r"); + if (f) { + count =3D fread(&val, sizeof(char), 1, f); + TEST_ASSERT(count =3D=3D 1, "Unable to read from param file."); + fclose(f); + } + + return val =3D=3D 'Y'; +} --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 6440DC433EF for ; Fri, 11 Mar 2022 05:59:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347821AbiCKF7w (ORCPT ); Fri, 11 Mar 2022 00:59:52 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60736 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346728AbiCKFyZ (ORCPT ); Fri, 11 Mar 2022 00:54:25 -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 B10BAF462E for ; Thu, 10 Mar 2022 21:53:18 -0800 (PST) Received: by mail-pj1-x104a.google.com with SMTP id b9-20020a17090aa58900b001b8b14b4aabso4593511pjq.9 for ; Thu, 10 Mar 2022 21:53:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=VWHuU9MolKPjIOCQpIL2Y/NWUuWP1ElFniKbCLjQYMM=; b=RaOWakoomPaCY/XqvKvFF3rZenAn1DvqVR6luC0+wXkuq6Ui01BLWFI+jM2K9nGwnV /e64/JTwKId8OlRZxKqP4/hxmrZJEpUazIjOWIsWixpP7UgTkDWQS3LW8Pdb2CVrGkFM 8z7Vks4oFmHSc46GoKeBx2PD74ShHhHQqaKa/ecolP3A9jSleDM2l4cM3p/vKB8VzZSl TTQ4EaBXHsZUMBvH2ES9BlGf1aCCjVT1DdMG0ZFYGA3xt8osnB29wyMEhpOL/L5lwBjY l4jJ1+v9sNtNo1iOTSrn93XH7k+YJygsywqyLwMygknSI8ONIm8E8A0r7axSUwhiaGTr DRyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=VWHuU9MolKPjIOCQpIL2Y/NWUuWP1ElFniKbCLjQYMM=; b=kkk5hD2zHdycMDQ8m6Er6WxAq/VygFnBoDmTVgc6iT+3KcXrAuDeT9ljvKL8olJK3S bMTQkxA5hlC/2spYc/Uw+TpiznJCF5F+DrQnMiKFlQC1MeFme+blC+Ij+Kptk9trGmVV 7TTkBwcp5UdPR0GnIyDSjy1J9mPfO761OfffByQqDg+yMCPD4Q6nU++NAoaQip1sWunb SlhN3PhGi4qDVnGekRCBBgCCtM5SNy/PuN75EHWBqBBy7Ndd0ReefdFFtbc5zleCNnUo axOHOl8fjcD7X8ZVfRYtCEGPuzpyICuT+kpD5cGTRIrdm89WRdM1CJvvSvil2BXSPsl9 3PXQ== X-Gm-Message-State: AOAM5304IpK+XlgxTG0U3U8q5suedRBbTqntwN/1oLY4AwJ3AwyZpBG7 dvGM9NtmxOGSzKEpTpilojMoUNd0bJ7jZGOpSdMEEMAc+Krxg6c6Gkw/eLDfMi9BWOFOzHFOoNg p1OuUqQwEK2wiNRdvtpgOelFxIBtDDLOC1ih052z0R9MRzqFSx2rpd+aKiDJoPxsyYsKJFA== X-Google-Smtp-Source: ABdhPJxoqrBi8xWU2kSJLJrYYym9/08CGELgzJrDnXI24Z8UILwOCMilibWBzJHWSv2jHacs4mGm0XX463Y= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a05:6a00:1955:b0:4f7:8b67:865d with SMTP id s21-20020a056a00195500b004f78b67865dmr1920116pfk.10.1646977998026; Thu, 10 Mar 2022 21:53:18 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:29 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-79-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 078/105] KVM: selftests: Add "arch" to common utils that have arch implementations From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/include/kvm_util_base.h | 201 ++++++++++-------- .../selftests/kvm/lib/aarch64/processor.c | 12 +- .../selftests/kvm/lib/riscv/processor.c | 12 +- .../selftests/kvm/lib/s390x/processor.c | 12 +- .../selftests/kvm/lib/x86_64/processor.c | 12 +- 5 files changed, 141 insertions(+), 108 deletions(-) diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/te= sting/selftests/kvm/include/kvm_util_base.h index 042c39e474da..aa2e68bca741 100644 --- a/tools/testing/selftests/kvm/include/kvm_util_base.h +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h @@ -95,23 +95,6 @@ struct kvm_vm { =20 struct kvm_vcpu *vcpu_get(struct kvm_vm *vm, uint32_t vcpuid); =20 -/* - * Virtual Translation Tables Dump - * - * Input Args: - * stream - Output FILE stream - * vm - Virtual Machine - * indent - Left margin indent amount - * - * Output Args: None - * - * Return: None - * - * Dumps to the FILE stream given by @stream, the contents of all the - * virtual translation tables for the VM given by @vm. - */ -void virt_dump(FILE *stream, struct kvm_vm *vm, uint8_t indent); - struct userspace_mem_region * memslot2region(struct kvm_vm *vm, uint32_t memslot); =20 @@ -283,26 +266,6 @@ static inline int vm_get_stats_fd(struct kvm_vm *vm) return fd; } =20 - -/* - * VM VCPU Dump - * - * Input Args: - * stream - Output FILE stream - * vm - Virtual Machine - * vcpuid - VCPU ID - * indent - Left margin indent amount - * - * Output Args: None - * - * Return: None - * - * Dumps the current state of the VCPU specified by @vcpuid, within the VM - * given by @vm, to the FILE stream given by @stream. - */ -void vcpu_dump(FILE *stream, struct kvm_vm *vm, uint32_t vcpuid, - uint8_t indent); - void vm_create_irqchip(struct kvm_vm *vm); =20 void vm_userspace_mem_region_add(struct kvm_vm *vm, @@ -325,23 +288,6 @@ void *addr_gva2hva(struct kvm_vm *vm, vm_vaddr_t gva); vm_paddr_t addr_hva2gpa(struct kvm_vm *vm, void *hva); void *addr_gpa2alias(struct kvm_vm *vm, vm_paddr_t gpa); =20 -/* - * Address Guest Virtual to Guest Physical - * - * Input Args: - * vm - Virtual Machine - * gva - VM virtual address - * - * Output Args: None - * - * Return: - * Equivalent VM physical address - * - * Returns the VM physical address of the translated VM virtual - * address given by @gva. - */ -vm_paddr_t addr_gva2gpa(struct kvm_vm *vm, vm_vaddr_t gva); - struct kvm_run *vcpu_state(struct kvm_vm *vm, uint32_t vcpuid); void vcpu_run(struct kvm_vm *vm, uint32_t vcpuid); int _vcpu_run(struct kvm_vm *vm, uint32_t vcpuid); @@ -565,26 +511,6 @@ void kvm_gsi_routing_write(struct kvm_vm *vm, struct k= vm_irq_routing *routing); =20 const char *exit_reason_str(unsigned int exit_reason); =20 -void virt_pgd_alloc(struct kvm_vm *vm); - -/* - * VM Virtual Page Map - * - * Input Args: - * vm - Virtual Machine - * vaddr - VM Virtual Address - * paddr - VM Physical Address - * memslot - Memory region slot for new virtual translation tables - * - * Output Args: None - * - * Return: None - * - * Within @vm, creates a virtual translation for the page starting - * at @vaddr to the page starting at @paddr. - */ -void virt_pg_map(struct kvm_vm *vm, uint64_t vaddr, uint64_t paddr); - vm_paddr_t vm_phy_page_alloc(struct kvm_vm *vm, vm_paddr_t paddr_min, uint32_t memslot); vm_paddr_t vm_phy_pages_alloc(struct kvm_vm *vm, size_t num, @@ -637,16 +563,6 @@ static inline struct kvm_vm *vm_create_with_one_vcpu(s= truct kvm_vcpu **vcpu, =20 struct kvm_vcpu *vm_recreate_with_one_vcpu(struct kvm_vm *vm); =20 -/* - * Adds a vCPU with reasonable defaults (e.g. a stack) - * - * Input Args: - * vm - Virtual Machine - * vcpuid - The id of the VCPU to add to the VM. - * guest_code - The vCPU's entry point - */ -void vm_vcpu_add_default(struct kvm_vm *vm, uint32_t vcpuid, void *guest_c= ode); - unsigned int vm_get_page_size(struct kvm_vm *vm); unsigned int vm_get_page_shift(struct kvm_vm *vm); unsigned long vm_compute_max_gfn(struct kvm_vm *vm); @@ -687,4 +603,121 @@ void assert_on_unhandled_exception(struct kvm_vm *vm,= uint32_t vcpuid); =20 int vm_get_stats_fd(struct kvm_vm *vm); =20 +/* + * VM VCPU Dump + * + * Input Args: + * stream - Output FILE stream + * vm - Virtual Machine + * vcpuid - VCPU ID + * indent - Left margin indent amount + * + * Output Args: None + * + * Return: None + * + * Dumps the current state of the VCPU specified by @vcpuid, within the VM + * given by @vm, to the FILE stream given by @stream. + */ + +void vcpu_arch_dump(FILE *stream, struct kvm_vm *vm, uint32_t vcpuid, + uint8_t indent); + +static inline void vcpu_dump(FILE *stream, struct kvm_vm *vm, uint32_t vcp= uid, + uint8_t indent) +{ + vcpu_arch_dump(stream, vm, vcpuid, indent); +} + +/* + * Adds a vCPU with reasonable defaults (e.g. a stack) + * + * Input Args: + * vm - Virtual Machine + * vcpuid - The id of the VCPU to add to the VM. + * guest_code - The vCPU's entry point + */ +void vm_arch_vcpu_add(struct kvm_vm *vm, uint32_t vcpuid, void *guest_code= ); + +static inline void vm_vcpu_add_default(struct kvm_vm *vm, uint32_t vcpuid, + void *guest_code) +{ + vm_arch_vcpu_add(vm, vcpuid, guest_code); +} + +void virt_arch_pgd_alloc(struct kvm_vm *vm); + +static inline void virt_pgd_alloc(struct kvm_vm *vm) +{ + virt_arch_pgd_alloc(vm); +} + +/* + * VM Virtual Page Map + * + * Input Args: + * vm - Virtual Machine + * vaddr - VM Virtual Address + * paddr - VM Physical Address + * memslot - Memory region slot for new virtual translation tables + * + * Output Args: None + * + * Return: None + * + * Within @vm, creates a virtual translation for the page starting + * at @vaddr to the page starting at @paddr. + */ +void virt_arch_pg_map(struct kvm_vm *vm, uint64_t vaddr, uint64_t paddr); + +static inline void virt_pg_map(struct kvm_vm *vm, uint64_t vaddr, uint64_t= paddr) +{ + virt_arch_pg_map(vm, vaddr, paddr); +} + + +/* + * Address Guest Virtual to Guest Physical + * + * Input Args: + * vm - Virtual Machine + * gva - VM virtual address + * + * Output Args: None + * + * Return: + * Equivalent VM physical address + * + * Returns the VM physical address of the translated VM virtual + * address given by @gva. + */ +vm_paddr_t addr_arch_gva2gpa(struct kvm_vm *vm, vm_vaddr_t gva); + +static inline vm_paddr_t addr_gva2gpa(struct kvm_vm *vm, vm_vaddr_t gva) +{ + return addr_arch_gva2gpa(vm, gva); +} + +/* + * Virtual Translation Tables Dump + * + * Input Args: + * stream - Output FILE stream + * vm - Virtual Machine + * indent - Left margin indent amount + * + * Output Args: None + * + * Return: None + * + * Dumps to the FILE stream given by @stream, the contents of all the + * virtual translation tables for the VM given by @vm. + */ +void virt_arch_dump(FILE *stream, struct kvm_vm *vm, uint8_t indent); + +static inline void virt_dump(FILE *stream, struct kvm_vm *vm, uint8_t inde= nt) +{ + virt_arch_dump(stream, vm, indent); +} + #endif /* SELFTEST_KVM_UTIL_BASE_H */ diff --git a/tools/testing/selftests/kvm/lib/aarch64/processor.c b/tools/te= sting/selftests/kvm/lib/aarch64/processor.c index 5f6967058647..653e740c46b1 100644 --- a/tools/testing/selftests/kvm/lib/aarch64/processor.c +++ b/tools/testing/selftests/kvm/lib/aarch64/processor.c @@ -74,7 +74,7 @@ static uint64_t __maybe_unused ptrs_per_pte(struct kvm_vm= *vm) return 1 << (vm->page_shift - 3); } =20 -void virt_pgd_alloc(struct kvm_vm *vm) +void virt_arch_pgd_alloc(struct kvm_vm *vm) { if (!vm->pgd_created) { vm_paddr_t paddr =3D vm_phy_pages_alloc(vm, @@ -131,14 +131,14 @@ static void _virt_pg_map(struct kvm_vm *vm, uint64_t = vaddr, uint64_t paddr, *ptep |=3D (attr_idx << 2) | (1 << 10) /* Access Flag */; } =20 -void virt_pg_map(struct kvm_vm *vm, uint64_t vaddr, uint64_t paddr) +void virt_arch_pg_map(struct kvm_vm *vm, uint64_t vaddr, uint64_t paddr) { uint64_t attr_idx =3D 4; /* NORMAL (See DEFAULT_MAIR_EL1) */ =20 _virt_pg_map(vm, vaddr, paddr, attr_idx); } =20 -vm_paddr_t addr_gva2gpa(struct kvm_vm *vm, vm_vaddr_t gva) +vm_paddr_t addr_arch_gva2gpa(struct kvm_vm *vm, vm_vaddr_t gva) { uint64_t *ptep; =20 @@ -195,7 +195,7 @@ static void pte_dump(FILE *stream, struct kvm_vm *vm, u= int8_t indent, uint64_t p #endif } =20 -void virt_dump(FILE *stream, struct kvm_vm *vm, uint8_t indent) +void virt_arch_dump(FILE *stream, struct kvm_vm *vm, uint8_t indent) { int level =3D 4 - (vm->pgtable_levels - 1); uint64_t pgd, *ptep; @@ -303,7 +303,7 @@ void aarch64_vcpu_setup(struct kvm_vm *vm, uint32_t vcp= uid, struct kvm_vcpu_init set_reg(vm, vcpuid, KVM_ARM64_SYS_REG(SYS_TPIDR_EL1), vcpuid); } =20 -void vcpu_dump(FILE *stream, struct kvm_vm *vm, uint32_t vcpuid, uint8_t i= ndent) +void vcpu_arch_dump(FILE *stream, struct kvm_vm *vm, uint32_t vcpuid, uint= 8_t indent) { uint64_t pstate, pc; =20 @@ -330,7 +330,7 @@ void aarch64_vcpu_add_default(struct kvm_vm *vm, uint32= _t vcpuid, set_reg(vm, vcpuid, ARM64_CORE_REG(regs.pc), (uint64_t)guest_code); } =20 -void vm_vcpu_add_default(struct kvm_vm *vm, uint32_t vcpuid, void *guest_c= ode) +void vm_arch_vcpu_add(struct kvm_vm *vm, uint32_t vcpuid, void *guest_code) { aarch64_vcpu_add_default(vm, vcpuid, NULL, guest_code); } diff --git a/tools/testing/selftests/kvm/lib/riscv/processor.c b/tools/test= ing/selftests/kvm/lib/riscv/processor.c index f17c7542cc53..8f415633ed12 100644 --- a/tools/testing/selftests/kvm/lib/riscv/processor.c +++ b/tools/testing/selftests/kvm/lib/riscv/processor.c @@ -53,7 +53,7 @@ static uint64_t pte_index(struct kvm_vm *vm, vm_vaddr_t g= va, int level) return (gva & pte_index_mask[level]) >> pte_index_shift[level]; } =20 -void virt_pgd_alloc(struct kvm_vm *vm) +void virt_arch_pgd_alloc(struct kvm_vm *vm) { if (!vm->pgd_created) { vm_paddr_t paddr =3D vm_phy_pages_alloc(vm, @@ -64,7 +64,7 @@ void virt_pgd_alloc(struct kvm_vm *vm) } } =20 -void virt_pg_map(struct kvm_vm *vm, uint64_t vaddr, uint64_t paddr) +void virt_arch_pg_map(struct kvm_vm *vm, uint64_t vaddr, uint64_t paddr) { uint64_t *ptep, next_ppn; int level =3D vm->pgtable_levels - 1; @@ -108,7 +108,7 @@ void virt_pg_map(struct kvm_vm *vm, uint64_t vaddr, uin= t64_t paddr) PGTBL_PTE_PERM_MASK | PGTBL_PTE_VALID_MASK; } =20 -vm_paddr_t addr_gva2gpa(struct kvm_vm *vm, vm_vaddr_t gva) +vm_paddr_t addr_arch_gva2gpa(struct kvm_vm *vm, vm_vaddr_t gva) { uint64_t *ptep; int level =3D vm->pgtable_levels - 1; @@ -159,7 +159,7 @@ static void pte_dump(FILE *stream, struct kvm_vm *vm, u= int8_t indent, #endif } =20 -void virt_dump(FILE *stream, struct kvm_vm *vm, uint8_t indent) +void virt_arch_dump(FILE *stream, struct kvm_vm *vm, uint8_t indent) { int level =3D vm->pgtable_levels - 1; uint64_t pgd, *ptep; @@ -201,7 +201,7 @@ void riscv_vcpu_mmu_setup(struct kvm_vm *vm, int vcpuid) set_reg(vm, vcpuid, RISCV_CSR_REG(satp), satp); } =20 -void vcpu_dump(FILE *stream, struct kvm_vm *vm, uint32_t vcpuid, uint8_t i= ndent) +void vcpu_arch_dump(FILE *stream, struct kvm_vm *vm, uint32_t vcpuid, uint= 8_t indent) { struct kvm_riscv_core core; =20 @@ -273,7 +273,7 @@ static void guest_hang(void) ; } =20 -void vm_vcpu_add_default(struct kvm_vm *vm, uint32_t vcpuid, void *guest_c= ode) +void vm_arch_vcpu_add(struct kvm_vm *vm, uint32_t vcpuid, void *guest_code) { int r; size_t stack_size =3D vm->page_size =3D=3D 4096 ? diff --git a/tools/testing/selftests/kvm/lib/s390x/processor.c b/tools/test= ing/selftests/kvm/lib/s390x/processor.c index aec15ca9d887..c2fe56a3fb74 100644 --- a/tools/testing/selftests/kvm/lib/s390x/processor.c +++ b/tools/testing/selftests/kvm/lib/s390x/processor.c @@ -10,7 +10,7 @@ =20 #define PAGES_PER_REGION 4 =20 -void virt_pgd_alloc(struct kvm_vm *vm) +void virt_arch_pgd_alloc(struct kvm_vm *vm) { vm_paddr_t paddr; =20 @@ -46,7 +46,7 @@ static uint64_t virt_alloc_region(struct kvm_vm *vm, int = ri) | ((ri < 4 ? (PAGES_PER_REGION - 1) : 0) & REGION_ENTRY_LENGTH); } =20 -void virt_pg_map(struct kvm_vm *vm, uint64_t gva, uint64_t gpa) +void virt_arch_pg_map(struct kvm_vm *vm, uint64_t gva, uint64_t gpa) { int ri, idx; uint64_t *entry; @@ -85,7 +85,7 @@ void virt_pg_map(struct kvm_vm *vm, uint64_t gva, uint64_= t gpa) entry[idx] =3D gpa; } =20 -vm_paddr_t addr_gva2gpa(struct kvm_vm *vm, vm_vaddr_t gva) +vm_paddr_t addr_arch_gva2gpa(struct kvm_vm *vm, vm_vaddr_t gva) { int ri, idx; uint64_t *entry; @@ -146,7 +146,7 @@ static void virt_dump_region(FILE *stream, struct kvm_v= m *vm, uint8_t indent, } } =20 -void virt_dump(FILE *stream, struct kvm_vm *vm, uint8_t indent) +void virt_arch_dump(FILE *stream, struct kvm_vm *vm, uint8_t indent) { if (!vm->pgd_created) return; @@ -154,7 +154,7 @@ void virt_dump(FILE *stream, struct kvm_vm *vm, uint8_t= indent) virt_dump_region(stream, vm, indent, vm->pgd); } =20 -void vm_vcpu_add_default(struct kvm_vm *vm, uint32_t vcpuid, void *guest_c= ode) +void vm_arch_vcpu_add(struct kvm_vm *vm, uint32_t vcpuid, void *guest_code) { size_t stack_size =3D DEFAULT_STACK_PGS * getpagesize(); uint64_t stack_vaddr; @@ -205,7 +205,7 @@ void vcpu_args_set(struct kvm_vm *vm, uint32_t vcpuid, = unsigned int num, ...) va_end(ap); } =20 -void vcpu_dump(FILE *stream, struct kvm_vm *vm, uint32_t vcpuid, uint8_t i= ndent) +void vcpu_arch_dump(FILE *stream, struct kvm_vm *vm, uint32_t vcpuid, uint= 8_t indent) { struct kvm_vcpu *vcpu =3D vcpu_get(vm, vcpuid); =20 diff --git a/tools/testing/selftests/kvm/lib/x86_64/processor.c b/tools/tes= ting/selftests/kvm/lib/x86_64/processor.c index ea7f1703e51e..fd14351a3835 100644 --- a/tools/testing/selftests/kvm/lib/x86_64/processor.c +++ b/tools/testing/selftests/kvm/lib/x86_64/processor.c @@ -141,7 +141,7 @@ static void sregs_dump(FILE *stream, struct kvm_sregs *= sregs, uint8_t indent) } } =20 -void virt_pgd_alloc(struct kvm_vm *vm) +void virt_arch_pgd_alloc(struct kvm_vm *vm) { TEST_ASSERT(vm->mode =3D=3D VM_MODE_PXXV48_4K, "Attempt to use " "unknown or unsupported guest mode, mode: 0x%x", vm->mode); @@ -244,7 +244,7 @@ void __virt_pg_map(struct kvm_vm *vm, uint64_t vaddr, u= int64_t paddr, pte->present =3D 1; } =20 -void virt_pg_map(struct kvm_vm *vm, uint64_t vaddr, uint64_t paddr) +void virt_arch_pg_map(struct kvm_vm *vm, uint64_t vaddr, uint64_t paddr) { __virt_pg_map(vm, vaddr, paddr, X86_PAGE_SIZE_4K); } @@ -341,7 +341,7 @@ void vm_set_page_table_entry(struct kvm_vm *vm, int vcp= uid, uint64_t vaddr, *(uint64_t *)new_pte =3D pte; } =20 -void virt_dump(FILE *stream, struct kvm_vm *vm, uint8_t indent) +void virt_arch_dump(FILE *stream, struct kvm_vm *vm, uint8_t indent) { struct pageUpperEntry *pml4e, *pml4e_start; struct pageUpperEntry *pdpe, *pdpe_start; @@ -522,7 +522,7 @@ static void kvm_seg_set_kernel_data_64bit(struct kvm_vm= *vm, uint16_t selector, kvm_seg_fill_gdt_64bit(vm, segp); } =20 -vm_paddr_t addr_gva2gpa(struct kvm_vm *vm, vm_vaddr_t gva) +vm_paddr_t addr_arch_gva2gpa(struct kvm_vm *vm, vm_vaddr_t gva) { uint16_t index[4]; struct pageUpperEntry *pml4e, *pdpe, *pde; @@ -671,7 +671,7 @@ void vm_xsave_req_perm(int bit) bitmask); } =20 -void vm_vcpu_add_default(struct kvm_vm *vm, uint32_t vcpuid, void *guest_c= ode) +void vm_arch_vcpu_add(struct kvm_vm *vm, uint32_t vcpuid, void *guest_code) { struct kvm_mp_state mp_state; struct kvm_regs regs; @@ -932,7 +932,7 @@ void vcpu_args_set(struct kvm_vm *vm, uint32_t vcpuid, = unsigned int num, ...) va_end(ap); } =20 -void vcpu_dump(FILE *stream, struct kvm_vm *vm, uint32_t vcpuid, uint8_t i= ndent) +void vcpu_arch_dump(FILE *stream, struct kvm_vm *vm, uint32_t vcpuid, uint= 8_t indent) { struct kvm_regs regs; struct kvm_sregs sregs; --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 A3F72C43219 for ; Fri, 11 Mar 2022 05:59:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347852AbiCKF76 (ORCPT ); Fri, 11 Mar 2022 00:59:58 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60428 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346703AbiCKFy3 (ORCPT ); Fri, 11 Mar 2022 00:54:29 -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 8E9F1F94F6 for ; Thu, 10 Mar 2022 21:53:20 -0800 (PST) Received: by mail-pl1-x64a.google.com with SMTP id q8-20020a170902f78800b00151cc484688so3990506pln.20 for ; Thu, 10 Mar 2022 21:53:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=n3s9d5PJ5CxB3J3mwvRAzn5Ka7HL6th0ys+7GPz8bVo=; b=LSujlnxYNWAJuDBKUliNb8AB9scPhTz4YYBeWuORJ2cbBSReeAVtn/WuNXav+lmPIF yjBXwOz20m9OZ3KY/c0GdhalthMss259C203EmxYT7vgTkxOZd72m9MHe+gL/pxGkLkF 62pw2IyGlCLwZuny1AiIHNQ2l6S22J+6A1n0r0/lytt9gMlhQDqJFBiTkNi6mCwzvYsR DekKpw1CYDwgDnmJ6qqC4eFjIPhOBUGAYhXT07ETs0DE4y+7wKMLjFfkde3EijhfSOgP U07ipHAb+5th4mY4F3hzBvoEIGIjQrWhKUSEzW3rz5U5jDGasqZDnN2vf/9C7++Fq4E4 t2EA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=n3s9d5PJ5CxB3J3mwvRAzn5Ka7HL6th0ys+7GPz8bVo=; b=5qoInRjB7u+OSeF3O2XfgpgMqHfvdbGx6yiNtc/5P3fVFNIPohh6M0SIr1Z1wFFs65 eVqXyKo9GF3rgSgAXdYWDZK5gqt761YlwMRVlOoQNWgxpc3adRGg/Dax+rBSWsT7mi+X oKgviqaIj7k93pqntLMgT3U8a+cj6sjOr7Ol0HD8PnnwgPSSW/GnAUctZaH5YqyB1AhW itkKGzeHm/VeVaNQe2E7Uz2sln1rKnnnn1YsY7vQ4tOHsMVIEMORnvKQyjwDKLFXpoLq piDLuuDIk4EyHhr8Ms2oRb7kVL+ejil2Wm0Wn9/gwBebnP1FK0AvvI/7AYUu3qY9Ty3N aN/A== X-Gm-Message-State: AOAM531jOiO3T2q65JsAJ0XERDb7v5OWPYIME4ZNiZ2q9Q2eegXyAyOO pXHpjV5FiWIvZ5fYOskCgmV5krX524Q54C8IITHOaua2Fi6pRFO+CMMOSMuFbGD429U15ompdYT dI9DVZsf99wNvQpckHbt+9r3s/lQbE3RQE52AynsYwczbann2riyjCVVb6RARKfPpnk+arQ== X-Google-Smtp-Source: ABdhPJxGGYwbjuSOL+G6F+qLrwDJBmyEytWrYa+3IjKPMJ5KIdDHHlG9G6TfP6OyHmnXAiBNLcjoYimslEw= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:902:bb10:b0:153:1b4b:d143 with SMTP id im16-20020a170902bb1000b001531b4bd143mr7654335plb.142.1646977999775; Thu, 10 Mar 2022 21:53:19 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:30 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-80-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 079/105] KVM: selftests: Return created vcpu from vm_vcpu_add_default() From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/include/aarch64/processor.h | 5 +++-- .../selftests/kvm/include/kvm_util_base.h | 10 ++++++---- .../selftests/kvm/lib/aarch64/processor.c | 20 +++++++++++-------- .../selftests/kvm/lib/riscv/processor.c | 18 ++++++++++------- .../selftests/kvm/lib/s390x/processor.c | 18 ++++++++++------- .../selftests/kvm/lib/x86_64/processor.c | 20 +++++++++++-------- 6 files changed, 55 insertions(+), 36 deletions(-) diff --git a/tools/testing/selftests/kvm/include/aarch64/processor.h b/tool= s/testing/selftests/kvm/include/aarch64/processor.h index 9a430980100e..5999e7ae7b29 100644 --- a/tools/testing/selftests/kvm/include/aarch64/processor.h +++ b/tools/testing/selftests/kvm/include/aarch64/processor.h @@ -64,8 +64,9 @@ static inline void set_reg(struct kvm_vm *vm, uint32_t vc= puid, uint64_t id, uint } =20 void aarch64_vcpu_setup(struct kvm_vm *vm, uint32_t vcpuid, struct kvm_vcp= u_init *init); -void aarch64_vcpu_add_default(struct kvm_vm *vm, uint32_t vcpuid, - struct kvm_vcpu_init *init, void *guest_code); +struct kvm_vcpu *aarch64_vcpu_add_default(struct kvm_vm *vm, uint32_t vcpu= _id, + struct kvm_vcpu_init *init, + void *guest_code); =20 struct ex_regs { u64 regs[31]; diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/te= sting/selftests/kvm/include/kvm_util_base.h index aa2e68bca741..19a7e507b8e7 100644 --- a/tools/testing/selftests/kvm/include/kvm_util_base.h +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h @@ -637,12 +637,14 @@ static inline void vcpu_dump(FILE *stream, struct kvm= _vm *vm, uint32_t vcpuid, * vcpuid - The id of the VCPU to add to the VM. * guest_code - The vCPU's entry point */ -void vm_arch_vcpu_add(struct kvm_vm *vm, uint32_t vcpuid, void *guest_code= ); +struct kvm_vcpu *vm_arch_vcpu_add(struct kvm_vm *vm, uint32_t vcpu_id, + void *guest_code); =20 -static inline void vm_vcpu_add_default(struct kvm_vm *vm, uint32_t vcpuid, - void *guest_code) +static inline struct kvm_vcpu *vm_vcpu_add_default(struct kvm_vm *vm, + uint32_t vcpu_id, + void *guest_code) { - vm_arch_vcpu_add(vm, vcpuid, guest_code); + return vm_arch_vcpu_add(vm, vcpu_id, guest_code); } =20 void virt_arch_pgd_alloc(struct kvm_vm *vm); diff --git a/tools/testing/selftests/kvm/lib/aarch64/processor.c b/tools/te= sting/selftests/kvm/lib/aarch64/processor.c index 653e740c46b1..089e6de2160c 100644 --- a/tools/testing/selftests/kvm/lib/aarch64/processor.c +++ b/tools/testing/selftests/kvm/lib/aarch64/processor.c @@ -314,25 +314,29 @@ void vcpu_arch_dump(FILE *stream, struct kvm_vm *vm, = uint32_t vcpuid, uint8_t in indent, "", pstate, pc); } =20 -void aarch64_vcpu_add_default(struct kvm_vm *vm, uint32_t vcpuid, - struct kvm_vcpu_init *init, void *guest_code) +struct kvm_vcpu *aarch64_vcpu_add_default(struct kvm_vm *vm, uint32_t vcpu= _id, + struct kvm_vcpu_init *init, + void *guest_code) { size_t stack_size =3D vm->page_size =3D=3D 4096 ? DEFAULT_STACK_PGS * vm->page_size : vm->page_size; uint64_t stack_vaddr =3D vm_vaddr_alloc(vm, stack_size, DEFAULT_ARM64_GUEST_STACK_VADDR_MIN); + struct kvm_vcpu *vcpu =3D vm_vcpu_add(vm, vcpu_id); =20 - vm_vcpu_add(vm, vcpuid); - aarch64_vcpu_setup(vm, vcpuid, init); + aarch64_vcpu_setup(vm, vcpu_id, init); =20 - set_reg(vm, vcpuid, ARM64_CORE_REG(sp_el1), stack_vaddr + stack_size); - set_reg(vm, vcpuid, ARM64_CORE_REG(regs.pc), (uint64_t)guest_code); + set_reg(vm, vcpu_id, ARM64_CORE_REG(sp_el1), stack_vaddr + stack_size); + set_reg(vm, vcpu_id, ARM64_CORE_REG(regs.pc), (uint64_t)guest_code); + + return vcpu; } =20 -void vm_arch_vcpu_add(struct kvm_vm *vm, uint32_t vcpuid, void *guest_code) +struct kvm_vcpu *vm_arch_vcpu_add(struct kvm_vm *vm, uint32_t vcpu_id, + void *guest_code) { - aarch64_vcpu_add_default(vm, vcpuid, NULL, guest_code); + return aarch64_vcpu_add_default(vm, vcpu_id, NULL, guest_code); } =20 void vcpu_args_set(struct kvm_vm *vm, uint32_t vcpuid, unsigned int num, .= ..) diff --git a/tools/testing/selftests/kvm/lib/riscv/processor.c b/tools/test= ing/selftests/kvm/lib/riscv/processor.c index 8f415633ed12..34a9f0cf05ba 100644 --- a/tools/testing/selftests/kvm/lib/riscv/processor.c +++ b/tools/testing/selftests/kvm/lib/riscv/processor.c @@ -273,7 +273,8 @@ static void guest_hang(void) ; } =20 -void vm_arch_vcpu_add(struct kvm_vm *vm, uint32_t vcpuid, void *guest_code) +struct kvm_vcpu *vm_arch_vcpu_add(struct kvm_vm *vm, uint32_t vcpu_id, + void *guest_code) { int r; size_t stack_size =3D vm->page_size =3D=3D 4096 ? @@ -283,8 +284,9 @@ void vm_arch_vcpu_add(struct kvm_vm *vm, uint32_t vcpui= d, void *guest_code) DEFAULT_RISCV_GUEST_STACK_VADDR_MIN); unsigned long current_gp =3D 0; struct kvm_mp_state mps; + struct kvm_vcpu *vcpu; =20 - vm_vcpu_add(vm, vcpuid); + vcpu =3D vm_vcpu_add(vm, vcpuid); riscv_vcpu_mmu_setup(vm, vcpuid); =20 /* @@ -293,23 +295,25 @@ void vm_arch_vcpu_add(struct kvm_vm *vm, uint32_t vcp= uid, void *guest_code) * are powered-on using KVM_SET_MP_STATE ioctl(). */ mps.mp_state =3D KVM_MP_STATE_RUNNABLE; - r =3D __vcpu_ioctl(vm, vcpuid, KVM_SET_MP_STATE, &mps); + r =3D __vcpu_ioctl(vm, vcpu_id, KVM_SET_MP_STATE, &mps); TEST_ASSERT(!r, "IOCTL KVM_SET_MP_STATE failed (error %d)", r); =20 /* Setup global pointer of guest to be same as the host */ asm volatile ( "add %0, gp, zero" : "=3Dr" (current_gp) : : "memory"); - set_reg(vm, vcpuid, RISCV_CORE_REG(regs.gp), current_gp); + set_reg(vm, vcpu_id, RISCV_CORE_REG(regs.gp), current_gp); =20 /* Setup stack pointer and program counter of guest */ - set_reg(vm, vcpuid, RISCV_CORE_REG(regs.sp), + set_reg(vm, vcpu_id, RISCV_CORE_REG(regs.sp), stack_vaddr + stack_size); - set_reg(vm, vcpuid, RISCV_CORE_REG(regs.pc), + set_reg(vm, vcpu_id, RISCV_CORE_REG(regs.pc), (unsigned long)guest_code); =20 /* Setup default exception vector of guest */ - set_reg(vm, vcpuid, RISCV_CSR_REG(stvec), + set_reg(vm, vcpu_id, RISCV_CSR_REG(stvec), (unsigned long)guest_hang); + + return vcpu; } =20 void vcpu_args_set(struct kvm_vm *vm, uint32_t vcpuid, unsigned int num, .= ..) diff --git a/tools/testing/selftests/kvm/lib/s390x/processor.c b/tools/test= ing/selftests/kvm/lib/s390x/processor.c index c2fe56a3fb74..5c59a1d7ec6d 100644 --- a/tools/testing/selftests/kvm/lib/s390x/processor.c +++ b/tools/testing/selftests/kvm/lib/s390x/processor.c @@ -154,12 +154,14 @@ void virt_arch_dump(FILE *stream, struct kvm_vm *vm, = uint8_t indent) virt_dump_region(stream, vm, indent, vm->pgd); } =20 -void vm_arch_vcpu_add(struct kvm_vm *vm, uint32_t vcpuid, void *guest_code) +struct kvm_vcpu *vm_arch_vcpu_add(struct kvm_vm *vm, uint32_t vcpu_id, + void *guest_code) { size_t stack_size =3D DEFAULT_STACK_PGS * getpagesize(); uint64_t stack_vaddr; struct kvm_regs regs; struct kvm_sregs sregs; + struct kvm_vcpu *vcpu; struct kvm_run *run; =20 TEST_ASSERT(vm->page_size =3D=3D 4096, "Unsupported page size: 0x%x", @@ -168,21 +170,23 @@ void vm_arch_vcpu_add(struct kvm_vm *vm, uint32_t vcp= uid, void *guest_code) stack_vaddr =3D vm_vaddr_alloc(vm, stack_size, DEFAULT_GUEST_STACK_VADDR_MIN); =20 - vm_vcpu_add(vm, vcpuid); + vcpu =3D vm_vcpu_add(vm, vcpuid); =20 /* Setup guest registers */ - vcpu_regs_get(vm, vcpuid, ®s); + vcpu_regs_get(vm, vcpu_id, ®s); regs.gprs[15] =3D stack_vaddr + (DEFAULT_STACK_PGS * getpagesize()) - 160; - vcpu_regs_set(vm, vcpuid, ®s); + vcpu_regs_set(vm, vcpu_id, ®s); =20 - vcpu_sregs_get(vm, vcpuid, &sregs); + vcpu_sregs_get(vm, vcpu_id, &sregs); sregs.crs[0] |=3D 0x00040000; /* Enable floating point regs */ sregs.crs[1] =3D vm->pgd | 0xf; /* Primary region table */ - vcpu_sregs_set(vm, vcpuid, &sregs); + vcpu_sregs_set(vm, vcpu_id, &sregs); =20 - run =3D vcpu_state(vm, vcpuid); + run =3D vcpu_state(vm, vcpu_id); run->psw_mask =3D 0x0400000180000000ULL; /* DAT enabled + 64 bit mode */ run->psw_addr =3D (uintptr_t)guest_code; + + return vcpu; } =20 void vcpu_args_set(struct kvm_vm *vm, uint32_t vcpuid, unsigned int num, .= ..) diff --git a/tools/testing/selftests/kvm/lib/x86_64/processor.c b/tools/tes= ting/selftests/kvm/lib/x86_64/processor.c index fd14351a3835..24ec376c5d6d 100644 --- a/tools/testing/selftests/kvm/lib/x86_64/processor.c +++ b/tools/testing/selftests/kvm/lib/x86_64/processor.c @@ -671,29 +671,33 @@ void vm_xsave_req_perm(int bit) bitmask); } =20 -void vm_arch_vcpu_add(struct kvm_vm *vm, uint32_t vcpuid, void *guest_code) +struct kvm_vcpu *vm_arch_vcpu_add(struct kvm_vm *vm, uint32_t vcpu_id, + void *guest_code) { struct kvm_mp_state mp_state; struct kvm_regs regs; vm_vaddr_t stack_vaddr; + struct kvm_vcpu *vcpu; + stack_vaddr =3D vm_vaddr_alloc(vm, DEFAULT_STACK_PGS * getpagesize(), DEFAULT_GUEST_STACK_VADDR_MIN); =20 - /* Create VCPU */ - vm_vcpu_add(vm, vcpuid); - vcpu_set_cpuid(vm, vcpuid, kvm_get_supported_cpuid()); - vcpu_setup(vm, vcpuid); + vcpu =3D vm_vcpu_add(vm, vcpu_id); + vcpu_set_cpuid(vm, vcpu_id, kvm_get_supported_cpuid()); + vcpu_setup(vm, vcpu_id); =20 /* Setup guest general purpose registers */ - vcpu_regs_get(vm, vcpuid, ®s); + vcpu_regs_get(vm, vcpu_id, ®s); regs.rflags =3D regs.rflags | 0x2; regs.rsp =3D stack_vaddr + (DEFAULT_STACK_PGS * getpagesize()); regs.rip =3D (unsigned long) guest_code; - vcpu_regs_set(vm, vcpuid, ®s); + vcpu_regs_set(vm, vcpu_id, ®s); =20 /* Setup the MP state */ mp_state.mp_state =3D 0; - vcpu_set_mp_state(vm, vcpuid, &mp_state); + vcpu_set_mp_state(vm, vcpu_id, &mp_state); + + return vcpu; } =20 /* --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 7A61EC35280 for ; Fri, 11 Mar 2022 05:59:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347837AbiCKF7z (ORCPT ); Fri, 11 Mar 2022 00:59:55 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60430 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346698AbiCKFy3 (ORCPT ); Fri, 11 Mar 2022 00:54:29 -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 8E796F94F1 for ; Thu, 10 Mar 2022 21:53:22 -0800 (PST) Received: by mail-pg1-x549.google.com with SMTP id q7-20020a63e207000000b003801b9bb18dso4222104pgh.15 for ; Thu, 10 Mar 2022 21:53:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=mhB004cy6+dADAkBPE+SuqIl2YbNKraaLFuQQI2+f4o=; b=RoFg37Gt//DUkSpnZJhtP+ST7pd4Pdcgnq2kss0spJso9tdIjSXC3yG+yytv/WCN2c TTC3tjGCBxwXhcOAzoOvSNUYhr95xOWWY+S3gCRD7EyVtp4C32XQMZWMtorMNys0wOWE /1/CZDjS4nMnt43FN86BMQUmCSbuQkQrS1OvhrLMdhVv5L2GZnVFAyH43vIwuX0cOVkj vVYy1cMu2bBKgkBCnR3w3nbkwFwsDvzM9lRbu8LU/rN1WkPycL6D97p0lpNcBDMv4AQD Qaf1Xj8Wt0ce7ohdz4GSFSXZpr0lajxXfg/0blweewGBEYk9kiKOaVv9zYZZCGV2TUFM uZeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=mhB004cy6+dADAkBPE+SuqIl2YbNKraaLFuQQI2+f4o=; b=toL53Gig5Nz6hc7W8fwuATKjQqA2iQnRnWZ2o/ta62ddiYzFheiaMJRl9lU9OUwZ6/ YiGS47O6b4l+rn4VwanfAzLe2KpNdayYUgQlOXgyMfBEQHl6Ga8z/c4XorFLzSsCBFkO yHETAsfSdE/ERuRhdt2TSyFqwKsuRM+LzijNbVE+14wMaEUtleCBEvYRi7OsJ3+OkD/V A51/MU9zoqrZGtQ4Qry8lanytOIay96qBSM34YhaSZWVIuqnbm0SYGIlct7ZdcC6+jwp XdlShqV6FFf/f4BAhIxZWnt5UgUtKcHV2fJqKg+ccFsNpzcdF2KDwPFB8e47seyRJNcz DD9w== X-Gm-Message-State: AOAM532NyM4qt/+e8jkjvmZqdXUDxFPzIneXRAwHix//NZgTvAOOugiB mxoixAo5qsNKlHfGoB8LoCWX2tW7YAQKE5bl+bPQIxKSyDcEwXdN5UJIrD6jcHv9KYNCC5ULbkU wGVA6+7XQp8MYpy8CU/YMIJGQ61GH6ub250wUCkZNOZ1JwhJCcqXEVij+A1Yt7dNjqFj4zw== X-Google-Smtp-Source: ABdhPJz+uUSdzHFWt0ewnAph32viOrqhyPHIMsE7YmTtyxZJhquCjPb+vk42jti/XJ0ca3j9tD1urCLmQxY= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:90b:1e10:b0:1bf:6c78:54a9 with SMTP id pg16-20020a17090b1e1000b001bf6c7854a9mr461092pjb.1.1646978001428; Thu, 10 Mar 2022 21:53:21 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:31 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-81-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 080/105] KVM: selftests: Rename vm_vcpu_add* helpers to better show relationships From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- tools/testing/selftests/kvm/aarch64/get-reg-list.c | 2 +- tools/testing/selftests/kvm/aarch64/psci_cpu_on_test.c | 4 ++-- tools/testing/selftests/kvm/aarch64/vgic_init.c | 10 +++++----- tools/testing/selftests/kvm/dirty_log_test.c | 2 +- tools/testing/selftests/kvm/hardware_disable_test.c | 2 +- .../testing/selftests/kvm/include/aarch64/processor.h | 5 ++--- tools/testing/selftests/kvm/include/kvm_util_base.h | 7 +++---- tools/testing/selftests/kvm/kvm_binary_stats_test.c | 2 +- tools/testing/selftests/kvm/kvm_create_max_vcpus.c | 2 +- tools/testing/selftests/kvm/lib/aarch64/processor.c | 9 ++++----- tools/testing/selftests/kvm/lib/kvm_util.c | 6 +++--- tools/testing/selftests/kvm/lib/riscv/processor.c | 2 +- tools/testing/selftests/kvm/lib/s390x/processor.c | 2 +- tools/testing/selftests/kvm/lib/x86_64/processor.c | 2 +- tools/testing/selftests/kvm/set_memory_region_test.c | 2 +- tools/testing/selftests/kvm/steal_time.c | 2 +- tools/testing/selftests/kvm/x86_64/set_boot_cpu_id.c | 4 ++-- tools/testing/selftests/kvm/x86_64/set_sregs_test.c | 2 +- tools/testing/selftests/kvm/x86_64/sev_migrate_tests.c | 8 ++++---- tools/testing/selftests/kvm/x86_64/xapic_ipi_test.c | 2 +- 20 files changed, 37 insertions(+), 40 deletions(-) diff --git a/tools/testing/selftests/kvm/aarch64/get-reg-list.c b/tools/tes= ting/selftests/kvm/aarch64/get-reg-list.c index 0cbee268c953..f486223ac98c 100644 --- a/tools/testing/selftests/kvm/aarch64/get-reg-list.c +++ b/tools/testing/selftests/kvm/aarch64/get-reg-list.c @@ -413,7 +413,7 @@ static void run_test(struct vcpu_config *c) =20 vm =3D vm_create(DEFAULT_GUEST_PHY_PAGES); prepare_vcpu_init(c, &init); - aarch64_vcpu_add_default(vm, 0, &init, NULL); + aarch64_vcpu_add(vm, 0, &init, NULL); finalize_vcpu(vm, 0, c); =20 reg_list =3D vcpu_get_reg_list(vm, 0); diff --git a/tools/testing/selftests/kvm/aarch64/psci_cpu_on_test.c b/tools= /testing/selftests/kvm/aarch64/psci_cpu_on_test.c index bde7bae20a6e..3677cb2df19c 100644 --- a/tools/testing/selftests/kvm/aarch64/psci_cpu_on_test.c +++ b/tools/testing/selftests/kvm/aarch64/psci_cpu_on_test.c @@ -83,13 +83,13 @@ int main(void) vm_ioctl(vm, KVM_ARM_PREFERRED_TARGET, &init); init.features[0] |=3D (1 << KVM_ARM_VCPU_PSCI_0_2); =20 - aarch64_vcpu_add_default(vm, VCPU_ID_SOURCE, &init, guest_main); + aarch64_vcpu_add(vm, VCPU_ID_SOURCE, &init, guest_main); =20 /* * make sure the target is already off when executing the test. */ init.features[0] |=3D (1 << KVM_ARM_VCPU_POWER_OFF); - aarch64_vcpu_add_default(vm, VCPU_ID_TARGET, &init, guest_main); + aarch64_vcpu_add(vm, VCPU_ID_TARGET, &init, guest_main); =20 get_reg(vm, VCPU_ID_TARGET, KVM_ARM64_SYS_REG(SYS_MPIDR_EL1), &target_mpi= dr); vcpu_args_set(vm, VCPU_ID_SOURCE, 1, target_mpidr & MPIDR_HWID_BITMASK); diff --git a/tools/testing/selftests/kvm/aarch64/vgic_init.c b/tools/testin= g/selftests/kvm/aarch64/vgic_init.c index 0329aa04da31..32dac03f5600 100644 --- a/tools/testing/selftests/kvm/aarch64/vgic_init.c +++ b/tools/testing/selftests/kvm/aarch64/vgic_init.c @@ -314,7 +314,7 @@ static void test_vgic_then_vcpus(uint32_t gic_dev_type) =20 /* Add the rest of the VCPUs */ for (i =3D 1; i < NR_VCPUS; ++i) - vm_vcpu_add_default(v.vm, i, guest_code); + vm_vcpu_add(v.vm, i, guest_code); =20 ret =3D run_vcpu(v.vm, 3); TEST_ASSERT(ret =3D=3D -EINVAL, "dist/rdist overlap detected on 1st vcpu = run"); @@ -402,17 +402,17 @@ static void test_v3_typer_accesses(void) =20 v.gic_fd =3D kvm_create_device(v.vm, KVM_DEV_TYPE_ARM_VGIC_V3); =20 - vm_vcpu_add_default(v.vm, 3, guest_code); + vm_vcpu_add(v.vm, 3, guest_code); =20 ret =3D v3_redist_reg_get(v.gic_fd, 1, GICR_TYPER, &val); TEST_ASSERT(ret && errno =3D=3D EINVAL, "attempting to read GICR_TYPER of= non created vcpu"); =20 - vm_vcpu_add_default(v.vm, 1, guest_code); + vm_vcpu_add(v.vm, 1, guest_code); =20 ret =3D v3_redist_reg_get(v.gic_fd, 1, GICR_TYPER, &val); TEST_ASSERT(ret && errno =3D=3D EBUSY, "read GICR_TYPER before GIC initia= lized"); =20 - vm_vcpu_add_default(v.vm, 2, guest_code); + vm_vcpu_add(v.vm, 2, guest_code); =20 kvm_device_attr_set(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_CTRL, KVM_DEV_ARM_VGIC_CTRL_INIT, NULL); @@ -576,7 +576,7 @@ static void test_v3_redist_ipa_range_check_at_vcpu_run(= void) =20 /* Add the rest of the VCPUs */ for (i =3D 1; i < NR_VCPUS; ++i) - vm_vcpu_add_default(v.vm, i, guest_code); + vm_vcpu_add(v.vm, i, guest_code); =20 kvm_device_attr_set(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_CTRL, KVM_DEV_ARM_VGIC_CTRL_INIT, NULL); diff --git a/tools/testing/selftests/kvm/dirty_log_test.c b/tools/testing/s= elftests/kvm/dirty_log_test.c index 1c7d25bf4a5a..e480b503c08b 100644 --- a/tools/testing/selftests/kvm/dirty_log_test.c +++ b/tools/testing/selftests/kvm/dirty_log_test.c @@ -682,7 +682,7 @@ static struct kvm_vm *create_vm(enum vm_guest_mode mode= , uint32_t vcpuid, vm_create_irqchip(vm); #endif log_mode_create_vm_done(vm); - vm_vcpu_add_default(vm, vcpuid, guest_code); + vm_vcpu_add(vm, vcpuid, guest_code); return vm; } =20 diff --git a/tools/testing/selftests/kvm/hardware_disable_test.c b/tools/te= sting/selftests/kvm/hardware_disable_test.c index 81ba8645772a..c31af07fae97 100644 --- a/tools/testing/selftests/kvm/hardware_disable_test.c +++ b/tools/testing/selftests/kvm/hardware_disable_test.c @@ -110,7 +110,7 @@ static void run_test(uint32_t run) =20 pr_debug("%s: [%d] start vcpus\n", __func__, run); for (i =3D 0; i < VCPU_NUM; ++i) { - vm_vcpu_add_default(vm, i, guest_code); + vm_vcpu_add(vm, i, guest_code); payloads[i].vm =3D vm; payloads[i].index =3D i; =20 diff --git a/tools/testing/selftests/kvm/include/aarch64/processor.h b/tool= s/testing/selftests/kvm/include/aarch64/processor.h index 5999e7ae7b29..f64607c136df 100644 --- a/tools/testing/selftests/kvm/include/aarch64/processor.h +++ b/tools/testing/selftests/kvm/include/aarch64/processor.h @@ -64,9 +64,8 @@ static inline void set_reg(struct kvm_vm *vm, uint32_t vc= puid, uint64_t id, uint } =20 void aarch64_vcpu_setup(struct kvm_vm *vm, uint32_t vcpuid, struct kvm_vcp= u_init *init); -struct kvm_vcpu *aarch64_vcpu_add_default(struct kvm_vm *vm, uint32_t vcpu= _id, - struct kvm_vcpu_init *init, - void *guest_code); +struct kvm_vcpu *aarch64_vcpu_add(struct kvm_vm *vm, uint32_t vcpu_id, + struct kvm_vcpu_init *init, void *guest_code); =20 struct ex_regs { u64 regs[31]; diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/te= sting/selftests/kvm/include/kvm_util_base.h index 19a7e507b8e7..14457f98080b 100644 --- a/tools/testing/selftests/kvm/include/kvm_util_base.h +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h @@ -276,7 +276,7 @@ void vm_userspace_mem_region_add(struct kvm_vm *vm, void vm_mem_region_set_flags(struct kvm_vm *vm, uint32_t slot, uint32_t fl= ags); void vm_mem_region_move(struct kvm_vm *vm, uint32_t slot, uint64_t new_gpa= ); void vm_mem_region_delete(struct kvm_vm *vm, uint32_t slot); -struct kvm_vcpu *vm_vcpu_add(struct kvm_vm *vm, uint32_t vcpuid); +struct kvm_vcpu *__vm_vcpu_add(struct kvm_vm *vm, uint32_t vcpuid); vm_vaddr_t vm_vaddr_alloc(struct kvm_vm *vm, size_t sz, vm_vaddr_t vaddr_m= in); vm_vaddr_t vm_vaddr_alloc_pages(struct kvm_vm *vm, int nr_pages); vm_vaddr_t vm_vaddr_alloc_page(struct kvm_vm *vm); @@ -640,9 +640,8 @@ static inline void vcpu_dump(FILE *stream, struct kvm_v= m *vm, uint32_t vcpuid, struct kvm_vcpu *vm_arch_vcpu_add(struct kvm_vm *vm, uint32_t vcpu_id, void *guest_code); =20 -static inline struct kvm_vcpu *vm_vcpu_add_default(struct kvm_vm *vm, - uint32_t vcpu_id, - void *guest_code) +static inline struct kvm_vcpu *vm_vcpu_add(struct kvm_vm *vm, uint32_t vcp= u_id, + void *guest_code) { return vm_arch_vcpu_add(vm, vcpu_id, guest_code); } diff --git a/tools/testing/selftests/kvm/kvm_binary_stats_test.c b/tools/te= sting/selftests/kvm/kvm_binary_stats_test.c index 0a27b0f85009..77b8967fe702 100644 --- a/tools/testing/selftests/kvm/kvm_binary_stats_test.c +++ b/tools/testing/selftests/kvm/kvm_binary_stats_test.c @@ -223,7 +223,7 @@ int main(int argc, char *argv[]) for (i =3D 0; i < max_vm; ++i) { vms[i] =3D vm_create(DEFAULT_GUEST_PHY_PAGES); for (j =3D 0; j < max_vcpu; ++j) - vm_vcpu_add(vms[i], j); + __vm_vcpu_add(vms[i], j); } =20 /* Check stats read for every VM and VCPU */ diff --git a/tools/testing/selftests/kvm/kvm_create_max_vcpus.c b/tools/tes= ting/selftests/kvm/kvm_create_max_vcpus.c index 9de5e1376c49..8fa8db12d452 100644 --- a/tools/testing/selftests/kvm/kvm_create_max_vcpus.c +++ b/tools/testing/selftests/kvm/kvm_create_max_vcpus.c @@ -32,7 +32,7 @@ void test_vcpu_creation(int first_vcpu_id, int num_vcpus) =20 for (i =3D first_vcpu_id; i < first_vcpu_id + num_vcpus; i++) /* This asserts that the vCPU was created. */ - vm_vcpu_add(vm, i); + __vm_vcpu_add(vm, i); =20 kvm_vm_free(vm); } diff --git a/tools/testing/selftests/kvm/lib/aarch64/processor.c b/tools/te= sting/selftests/kvm/lib/aarch64/processor.c index 089e6de2160c..35bec85f43b0 100644 --- a/tools/testing/selftests/kvm/lib/aarch64/processor.c +++ b/tools/testing/selftests/kvm/lib/aarch64/processor.c @@ -314,16 +314,15 @@ void vcpu_arch_dump(FILE *stream, struct kvm_vm *vm, = uint32_t vcpuid, uint8_t in indent, "", pstate, pc); } =20 -struct kvm_vcpu *aarch64_vcpu_add_default(struct kvm_vm *vm, uint32_t vcpu= _id, - struct kvm_vcpu_init *init, - void *guest_code) +struct kvm_vcpu *aarch64_vcpu_add(struct kvm_vm *vm, uint32_t vcpu_id, + struct kvm_vcpu_init *init, void *guest_code) { size_t stack_size =3D vm->page_size =3D=3D 4096 ? DEFAULT_STACK_PGS * vm->page_size : vm->page_size; uint64_t stack_vaddr =3D vm_vaddr_alloc(vm, stack_size, DEFAULT_ARM64_GUEST_STACK_VADDR_MIN); - struct kvm_vcpu *vcpu =3D vm_vcpu_add(vm, vcpu_id); + struct kvm_vcpu *vcpu =3D __vm_vcpu_add(vm, vcpu_id); =20 aarch64_vcpu_setup(vm, vcpu_id, init); =20 @@ -336,7 +335,7 @@ struct kvm_vcpu *aarch64_vcpu_add_default(struct kvm_vm= *vm, uint32_t vcpu_id, struct kvm_vcpu *vm_arch_vcpu_add(struct kvm_vm *vm, uint32_t vcpu_id, void *guest_code) { - return aarch64_vcpu_add_default(vm, vcpu_id, NULL, guest_code); + return aarch64_vcpu_add(vm, vcpu_id, NULL, guest_code); } =20 void vcpu_args_set(struct kvm_vm *vm, uint32_t vcpuid, unsigned int num, .= ..) diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index 23de0335f22b..1580d4888d74 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -344,7 +344,7 @@ struct kvm_vm *vm_create_with_vcpus(enum vm_guest_mode = mode, uint32_t nr_vcpus, for (i =3D 0; i < nr_vcpus; ++i) { uint32_t vcpuid =3D vcpuids ? vcpuids[i] : i; =20 - vm_vcpu_add_default(vm, vcpuid, guest_code); + vm_vcpu_add(vm, vcpuid, guest_code); } =20 return vm; @@ -413,7 +413,7 @@ struct kvm_vcpu *vm_recreate_with_one_vcpu(struct kvm_v= m *vm) { kvm_vm_restart(vm); =20 - return vm_vcpu_add(vm, 0); + return __vm_vcpu_add(vm, 0); } =20 /* @@ -1060,7 +1060,7 @@ static int vcpu_mmap_sz(void) * Adds a virtual CPU to the VM specified by vm with the ID given by vcpu_= id. * No additional vCPU setup is done. Returns the vCPU. */ -struct kvm_vcpu *vm_vcpu_add(struct kvm_vm *vm, uint32_t vcpu_id) +struct kvm_vcpu *__vm_vcpu_add(struct kvm_vm *vm, uint32_t vcpu_id) { struct kvm_vcpu *vcpu; =20 diff --git a/tools/testing/selftests/kvm/lib/riscv/processor.c b/tools/test= ing/selftests/kvm/lib/riscv/processor.c index 34a9f0cf05ba..5a57494751e1 100644 --- a/tools/testing/selftests/kvm/lib/riscv/processor.c +++ b/tools/testing/selftests/kvm/lib/riscv/processor.c @@ -286,7 +286,7 @@ struct kvm_vcpu *vm_arch_vcpu_add(struct kvm_vm *vm, ui= nt32_t vcpu_id, struct kvm_mp_state mps; struct kvm_vcpu *vcpu; =20 - vcpu =3D vm_vcpu_add(vm, vcpuid); + vcpu =3D __vm_vcpu_add(vm, vcpuid); riscv_vcpu_mmu_setup(vm, vcpuid); =20 /* diff --git a/tools/testing/selftests/kvm/lib/s390x/processor.c b/tools/test= ing/selftests/kvm/lib/s390x/processor.c index 5c59a1d7ec6d..f8170e97eeb7 100644 --- a/tools/testing/selftests/kvm/lib/s390x/processor.c +++ b/tools/testing/selftests/kvm/lib/s390x/processor.c @@ -170,7 +170,7 @@ struct kvm_vcpu *vm_arch_vcpu_add(struct kvm_vm *vm, ui= nt32_t vcpu_id, stack_vaddr =3D vm_vaddr_alloc(vm, stack_size, DEFAULT_GUEST_STACK_VADDR_MIN); =20 - vcpu =3D vm_vcpu_add(vm, vcpuid); + vcpu =3D __vm_vcpu_add(vm, vcpu_id); =20 /* Setup guest registers */ vcpu_regs_get(vm, vcpu_id, ®s); diff --git a/tools/testing/selftests/kvm/lib/x86_64/processor.c b/tools/tes= ting/selftests/kvm/lib/x86_64/processor.c index 24ec376c5d6d..c773f7b1ed4c 100644 --- a/tools/testing/selftests/kvm/lib/x86_64/processor.c +++ b/tools/testing/selftests/kvm/lib/x86_64/processor.c @@ -682,7 +682,7 @@ struct kvm_vcpu *vm_arch_vcpu_add(struct kvm_vm *vm, ui= nt32_t vcpu_id, stack_vaddr =3D vm_vaddr_alloc(vm, DEFAULT_STACK_PGS * getpagesize(), DEFAULT_GUEST_STACK_VADDR_MIN); =20 - vcpu =3D vm_vcpu_add(vm, vcpu_id); + vcpu =3D __vm_vcpu_add(vm, vcpu_id); vcpu_set_cpuid(vm, vcpu_id, kvm_get_supported_cpuid()); vcpu_setup(vm, vcpu_id); =20 diff --git a/tools/testing/selftests/kvm/set_memory_region_test.c b/tools/t= esting/selftests/kvm/set_memory_region_test.c index 13859b37e28d..4913d6a5b311 100644 --- a/tools/testing/selftests/kvm/set_memory_region_test.c +++ b/tools/testing/selftests/kvm/set_memory_region_test.c @@ -315,7 +315,7 @@ static void test_zero_memory_regions(void) pr_info("Testing KVM_RUN with zero added memory regions\n"); =20 vm =3D vm_create(0); - vcpu =3D vm_vcpu_add(vm, 0); + vcpu =3D __vm_vcpu_add(vm, 0); =20 vm_ioctl(vm, KVM_SET_NR_MMU_PAGES, (void *)64ul); vcpu_run(vm, vcpu->id); diff --git a/tools/testing/selftests/kvm/steal_time.c b/tools/testing/selft= ests/kvm/steal_time.c index 1d6a91a53eae..741892cec1ea 100644 --- a/tools/testing/selftests/kvm/steal_time.c +++ b/tools/testing/selftests/kvm/steal_time.c @@ -282,7 +282,7 @@ int main(int ac, char **av) =20 /* Add the rest of the VCPUs */ for (i =3D 1; i < NR_VCPUS; ++i) - vm_vcpu_add_default(vm, i, guest_code); + vm_vcpu_add(vm, i, guest_code); =20 steal_time_init(vm); =20 diff --git a/tools/testing/selftests/kvm/x86_64/set_boot_cpu_id.c b/tools/t= esting/selftests/kvm/x86_64/set_boot_cpu_id.c index b4da92ddc1c6..b6a1dceb2be9 100644 --- a/tools/testing/selftests/kvm/x86_64/set_boot_cpu_id.c +++ b/tools/testing/selftests/kvm/x86_64/set_boot_cpu_id.c @@ -99,9 +99,9 @@ static struct kvm_vm *create_vm(void) static void add_x86_vcpu(struct kvm_vm *vm, uint32_t vcpuid, bool bsp_code) { if (bsp_code) - vm_vcpu_add_default(vm, vcpuid, guest_bsp_vcpu); + vm_vcpu_add(vm, vcpuid, guest_bsp_vcpu); else - vm_vcpu_add_default(vm, vcpuid, guest_not_bsp_vcpu); + vm_vcpu_add(vm, vcpuid, guest_not_bsp_vcpu); } =20 static void run_vm_bsp(uint32_t bsp_vcpu) diff --git a/tools/testing/selftests/kvm/x86_64/set_sregs_test.c b/tools/te= sting/selftests/kvm/x86_64/set_sregs_test.c index 2b3cae9a1d5b..9bc1d6b33172 100644 --- a/tools/testing/selftests/kvm/x86_64/set_sregs_test.c +++ b/tools/testing/selftests/kvm/x86_64/set_sregs_test.c @@ -95,7 +95,7 @@ int main(int argc, char *argv[]) * the vCPU model, i.e. without doing KVM_SET_CPUID2. */ vm =3D vm_create(DEFAULT_GUEST_PHY_PAGES); - vcpu =3D vm_vcpu_add(vm, 0); + vcpu =3D __vm_vcpu_add(vm, 0); =20 vcpu_sregs_get(vm, vcpu->id, &sregs); =20 diff --git a/tools/testing/selftests/kvm/x86_64/sev_migrate_tests.c b/tools= /testing/selftests/kvm/x86_64/sev_migrate_tests.c index fb26d0d85fcb..d8ebae374f88 100644 --- a/tools/testing/selftests/kvm/x86_64/sev_migrate_tests.c +++ b/tools/testing/selftests/kvm/x86_64/sev_migrate_tests.c @@ -54,7 +54,7 @@ static struct kvm_vm *sev_vm_create(bool es) vm =3D vm_create(0); sev_ioctl(vm->fd, es ? KVM_SEV_ES_INIT : KVM_SEV_INIT, NULL); for (i =3D 0; i < NR_MIGRATE_TEST_VCPUS; ++i) - vm_vcpu_add(vm, i); + __vm_vcpu_add(vm, i); if (es) start.policy |=3D SEV_POLICY_ES; sev_ioctl(vm->fd, KVM_SEV_LAUNCH_START, &start); @@ -73,7 +73,7 @@ static struct kvm_vm *aux_vm_create(bool with_vcpus) return vm; =20 for (i =3D 0; i < NR_MIGRATE_TEST_VCPUS; ++i) - vm_vcpu_add(vm, i); + __vm_vcpu_add(vm, i); =20 return vm; } @@ -177,7 +177,7 @@ static void test_sev_migrate_parameters(void) vm_no_sev =3D aux_vm_create(true); sev_es_vm_no_vmsa =3D vm_create(0); sev_ioctl(sev_es_vm_no_vmsa->fd, KVM_SEV_ES_INIT, NULL); - vm_vcpu_add(sev_es_vm_no_vmsa, 1); + __vm_vcpu_add(sev_es_vm_no_vmsa, 1); =20 ret =3D __sev_migrate_from(sev_vm->fd, sev_es_vm->fd); TEST_ASSERT( @@ -282,7 +282,7 @@ static void test_sev_mirror(bool es) =20 /* Check that we can complete creation of the mirror VM. */ for (i =3D 0; i < NR_MIGRATE_TEST_VCPUS; ++i) - vm_vcpu_add(dst_vm, i); + __vm_vcpu_add(dst_vm, i); =20 if (es) sev_ioctl(dst_vm->fd, KVM_SEV_LAUNCH_UPDATE_VMSA, NULL); diff --git a/tools/testing/selftests/kvm/x86_64/xapic_ipi_test.c b/tools/te= sting/selftests/kvm/x86_64/xapic_ipi_test.c index afbbc40df884..8b366652be31 100644 --- a/tools/testing/selftests/kvm/x86_64/xapic_ipi_test.c +++ b/tools/testing/selftests/kvm/x86_64/xapic_ipi_test.c @@ -425,7 +425,7 @@ int main(int argc, char *argv[]) =20 virt_pg_map(vm, APIC_DEFAULT_GPA, APIC_DEFAULT_GPA); =20 - vm_vcpu_add_default(vm, SENDER_VCPU_ID, sender_guest_code); + vm_vcpu_add(vm, SENDER_VCPU_ID, sender_guest_code); =20 test_data_page_vaddr =3D vm_vaddr_alloc_page(vm); data =3D --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 38CB8C3527E for ; Fri, 11 Mar 2022 05:59:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347806AbiCKF7u (ORCPT ); Fri, 11 Mar 2022 00:59:50 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59744 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1343852AbiCKFy2 (ORCPT ); Fri, 11 Mar 2022 00:54:28 -0500 Received: from mail-pf1-x44a.google.com (mail-pf1-x44a.google.com [IPv6:2607:f8b0:4864:20::44a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8F674F9FA2 for ; Thu, 10 Mar 2022 21:53:23 -0800 (PST) Received: by mail-pf1-x44a.google.com with SMTP id m22-20020a628c16000000b004f6f1b43114so4636906pfd.3 for ; Thu, 10 Mar 2022 21:53:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=uKYTBectaVm/Y0jJplfWszpZg0O+1WvZXscz8WnXDIM=; b=ZHbFKDCDY26RmxF2lrXLnuLUDaYy+NLYeDBlWkj5wnbwfO695LnXfvHGSXK8xXYfYw yYhIBIyiypbCoF0EhOqGka3/uW8QYRTnP0pGry77RHlsFGxukx35sQnvcUZ45UQvHSfT Cgwuqoyq19qnaItiQahN7UWBZQZAvECbeK3oZ/a6yiCriN3uUYEbHJybcnNdd92VDcA8 f9lLwwETjCmNp/fQp1eC8d8aTTkRCI5XQZ0U/7vW/e658DO+R/mfyLXoIXsFeq+1pO7V KVmgfSAjVMeAaGnmGdisSqG+h45BCegK036SuOa4/U/rT0M7IJJSkBvXFAFLNtAisw4N ZFkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=uKYTBectaVm/Y0jJplfWszpZg0O+1WvZXscz8WnXDIM=; b=xbx3Ql3mGscrEFdhdmnubdruvD6abpZEeTq/caPK7MlhNmm7KtS+CBf7iOC6TCASz3 5UWUhmqIuppbZ/PUgixFaf7PgwAxWSzcNo5y6lrpSqLcmdINSHwlr67JHkrvB1mXaTnx rEVgSIylZZGz2TaxpdYj+nRJFrEJTX5j8d2+VIKLwWCO8nP36bWCWXNp3qfCsvyROIny fsODPubVTTGQ4Fa6dbtzWK3NSP3MLsI21f9CQtjb/ey6M9BRf+CMFFS9rm+naUWPitgg nliHQuZg3+N/R8Zgi9yYfR91orGl6KPrq9nX20Ko9DgzZDxmSNC4oWM08LgeCZtHgoOv 2b4w== X-Gm-Message-State: AOAM531uSy4qBhx0Q0pjc6D0gNX0mnyh/5k8jLd780E8QsqiCp9lxlfs dSlAGMayrLbFEdR6L3/F5cLmdzuO5zIPniLkyncW9Q8dQIwd/Untv+AAoD52jq2SL7DmLodK5+c VoIzF2trmZpQp/H+usir5PGx1MyeQ0zPsIDboGGuCfJM+mKF5bv7enoPmH2hjNivbRRTaqg== X-Google-Smtp-Source: ABdhPJzip6Op8+MsNxuwfrUGKnTbwiwxz8v3Z1PXF9YqYQhW13p9DuT8Cjz1QTJ8eWLjNcJyi34AG5JduGY= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:903:228f:b0:151:8379:9438 with SMTP id b15-20020a170903228f00b0015183799438mr8725123plh.51.1646978003298; Thu, 10 Mar 2022 21:53:23 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:32 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-82-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 081/105] KVM: selftests: Convert set_boot_cpu_id away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/x86_64/set_boot_cpu_id.c | 85 ++++++++----------- 1 file changed, 34 insertions(+), 51 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/set_boot_cpu_id.c b/tools/t= esting/selftests/kvm/x86_64/set_boot_cpu_id.c index b6a1dceb2be9..5b0c61127dd7 100644 --- a/tools/testing/selftests/kvm/x86_64/set_boot_cpu_id.c +++ b/tools/testing/selftests/kvm/x86_64/set_boot_cpu_id.c @@ -16,10 +16,6 @@ #include "processor.h" #include "apic.h" =20 -#define N_VCPU 2 -#define VCPU_ID0 0 -#define VCPU_ID1 1 - static void guest_bsp_vcpu(void *arg) { GUEST_SYNC(1); @@ -38,31 +34,30 @@ static void guest_not_bsp_vcpu(void *arg) GUEST_DONE(); } =20 -static void test_set_boot_busy(struct kvm_vm *vm) +static void test_set_bsp_busy(struct kvm_vcpu *vcpu, const char *msg) { - int res; + int r =3D __vm_ioctl(vcpu->vm, KVM_SET_BOOT_CPU_ID, + (void *)(unsigned long)vcpu->id); =20 - res =3D __vm_ioctl(vm, KVM_SET_BOOT_CPU_ID, (void *) VCPU_ID0); - TEST_ASSERT(res =3D=3D -1 && errno =3D=3D EBUSY, - "KVM_SET_BOOT_CPU_ID set while running vm"); + TEST_ASSERT(r =3D=3D -1 && errno =3D=3D EBUSY, "KVM_SET_BOOT_CPU_ID set %= s", msg); } =20 -static void run_vcpu(struct kvm_vm *vm, uint32_t vcpuid) +static void run_vcpu(struct kvm_vcpu *vcpu) { struct ucall uc; int stage; =20 for (stage =3D 0; stage < 2; stage++) { =20 - vcpu_run(vm, vcpuid); + vcpu_run(vcpu->vm, vcpu->id); =20 - switch (get_ucall(vm, vcpuid, &uc)) { + switch (get_ucall(vcpu->vm, vcpu->id, &uc)) { case UCALL_SYNC: TEST_ASSERT(!strcmp((const char *)uc.args[0], "hello") && uc.args[1] =3D=3D stage + 1, "Stage %d: Unexpected register values vmexit, got %lx", stage + 1, (ulong)uc.args[1]); - test_set_boot_busy(vm); + test_set_bsp_busy(vcpu, "while running vm"); break; case UCALL_DONE: TEST_ASSERT(stage =3D=3D 1, @@ -75,17 +70,19 @@ static void run_vcpu(struct kvm_vm *vm, uint32_t vcpuid) uc.args[1], uc.args[2], uc.args[3]); default: TEST_ASSERT(false, "Unexpected exit: %s", - exit_reason_str(vcpu_state(vm, vcpuid)->exit_reason)); + exit_reason_str(vcpu->run->exit_reason)); } } } =20 -static struct kvm_vm *create_vm(void) +static struct kvm_vm *create_vm(uint32_t nr_vcpus, uint32_t bsp_vcpu_id, + struct kvm_vcpu *vcpus[]) { - struct kvm_vm *vm; - uint64_t vcpu_pages =3D (DEFAULT_STACK_PGS) * 2; - uint64_t extra_pg_pages =3D vcpu_pages / PTES_PER_MIN_PAGE * N_VCPU; + uint64_t vcpu_pages =3D (DEFAULT_STACK_PGS) * nr_vcpus; + uint64_t extra_pg_pages =3D vcpu_pages / PTES_PER_MIN_PAGE * nr_vcpus; uint64_t pages =3D DEFAULT_GUEST_PHY_PAGES + vcpu_pages + extra_pg_pages; + struct kvm_vm *vm; + uint32_t i; =20 pages =3D vm_adjust_num_guest_pages(VM_MODE_DEFAULT, pages); vm =3D vm_create(pages); @@ -93,54 +90,40 @@ static struct kvm_vm *create_vm(void) kvm_vm_elf_load(vm, program_invocation_name); vm_create_irqchip(vm); =20 + vm_ioctl(vm, KVM_SET_BOOT_CPU_ID, (void *)(unsigned long)bsp_vcpu_id); + + for (i =3D 0; i < nr_vcpus; i++) + vcpus[i] =3D vm_vcpu_add(vm, i, i =3D=3D bsp_vcpu_id ? guest_bsp_vcpu : + guest_not_bsp_vcpu); return vm; } =20 -static void add_x86_vcpu(struct kvm_vm *vm, uint32_t vcpuid, bool bsp_code) -{ - if (bsp_code) - vm_vcpu_add(vm, vcpuid, guest_bsp_vcpu); - else - vm_vcpu_add(vm, vcpuid, guest_not_bsp_vcpu); -} - -static void run_vm_bsp(uint32_t bsp_vcpu) +static void run_vm_bsp(uint32_t bsp_vcpu_id) { + struct kvm_vcpu *vcpus[2]; struct kvm_vm *vm; - bool is_bsp_vcpu1 =3D bsp_vcpu =3D=3D VCPU_ID1; =20 - vm =3D create_vm(); + vm =3D create_vm(ARRAY_SIZE(vcpus), bsp_vcpu_id, vcpus); =20 - if (is_bsp_vcpu1) - vm_ioctl(vm, KVM_SET_BOOT_CPU_ID, (void *) VCPU_ID1); - - add_x86_vcpu(vm, VCPU_ID0, !is_bsp_vcpu1); - add_x86_vcpu(vm, VCPU_ID1, is_bsp_vcpu1); - - run_vcpu(vm, VCPU_ID0); - run_vcpu(vm, VCPU_ID1); + run_vcpu(vcpus[0]); + run_vcpu(vcpus[1]); =20 kvm_vm_free(vm); } =20 static void check_set_bsp_busy(void) { + struct kvm_vcpu *vcpus[2]; struct kvm_vm *vm; - int res; =20 - vm =3D create_vm(); + vm =3D create_vm(ARRAY_SIZE(vcpus), 0, vcpus); =20 - add_x86_vcpu(vm, VCPU_ID0, true); - add_x86_vcpu(vm, VCPU_ID1, false); + test_set_bsp_busy(vcpus[1], "after adding vcpu"); =20 - res =3D __vm_ioctl(vm, KVM_SET_BOOT_CPU_ID, (void *) VCPU_ID1); - TEST_ASSERT(res =3D=3D -1 && errno =3D=3D EBUSY, "KVM_SET_BOOT_CPU_ID set= after adding vcpu"); + run_vcpu(vcpus[0]); + run_vcpu(vcpus[1]); =20 - run_vcpu(vm, VCPU_ID0); - run_vcpu(vm, VCPU_ID1); - - res =3D __vm_ioctl(vm, KVM_SET_BOOT_CPU_ID, (void *) VCPU_ID1); - TEST_ASSERT(res =3D=3D -1 && errno =3D=3D EBUSY, "KVM_SET_BOOT_CPU_ID set= to a terminated vcpu"); + test_set_bsp_busy(vcpus[1], "to a terminated vcpu"); =20 kvm_vm_free(vm); } @@ -152,9 +135,9 @@ int main(int argc, char *argv[]) return 0; } =20 - run_vm_bsp(VCPU_ID0); - run_vm_bsp(VCPU_ID1); - run_vm_bsp(VCPU_ID0); + run_vm_bsp(0); + run_vm_bsp(1); + run_vm_bsp(0); =20 check_set_bsp_busy(); } --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 C212AC35294 for ; Fri, 11 Mar 2022 05:59:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347867AbiCKGAA (ORCPT ); Fri, 11 Mar 2022 01:00:00 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59316 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346704AbiCKFyb (ORCPT ); Fri, 11 Mar 2022 00:54:31 -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 A9CE4A9A5F for ; Thu, 10 Mar 2022 21:53:25 -0800 (PST) Received: by mail-pl1-x64a.google.com with SMTP id d14-20020a170902654e00b001518cc774d3so4020912pln.2 for ; Thu, 10 Mar 2022 21:53:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=ioX6wfUpsndkJitzTAba4Po2XVWDeKDX7eMlmBuk4/U=; b=hWaiXpifwkAbjvK2QfpoZjFDqWEDdchT0SsvW7lNrok4lVkY1JoVKus+/k90+iaUri JvM0qM9gcn99UuRPUxs1WegGGxw7+xTXbKfs1f1k1t0svyIUTW+sHkCFPf738XBP7K95 9NTi+HAPXgsLY3rbU1drz5OPDIVjWv5Z6ex2kNZaFjt7I57KpGt4BKdqiJH9xIJdXwVk TU0tD1F7YzqvBRQpZ4K0j6lotXlqjbLf59gCsAqZ9qfE8EOSADkz9bIZnKqcQWi7o6vH JblyMRXPLNMSFBAR3YClvQ4FgNGqRgCmrjPBRHLGQ8t/QvPE3hGlTq9PRtDAtuapL1+V xJKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=ioX6wfUpsndkJitzTAba4Po2XVWDeKDX7eMlmBuk4/U=; b=53QeHmPAukrS8WcXXjgjXpRPjS4Cksm+iiZAybxAyPfTTDHlNc3WLiPR02bNA8Xcmu +1MUEYBKV02gcQ1tIdI+oOdNxkJO1ahACSkSiZYOClhGVU0x4BzzV5DF/CE5dVaXy/Sa N7FqeYSu3etUTbwRyOb9W4FxkVPruKqAFMYbo5ip3MQIcpssdG7TO4eljBWyGRVghGPE XnRdgVdQx+HLmmmPr1Is9fSrJSSfxQ3NaMFLPHMzfA3N4Z+zN5aoeveJexB6Q6JjzsI8 wfnta7/kdx+9nbI/h5R21elgjctYZe2rIkOUBWmF3XhXChVPE2ub9YpMIBF5lz+8iT1R 8KbQ== X-Gm-Message-State: AOAM530mIil1vzw1dV1n8knvbxG+Uxph0W4634HOm7xWNOyEzukSYkTq 8lidiY83SJjZZAd353qOck7W8RBXVNbMwqfI07zdXVTbuT0/gku9s+yX++e45Gd97fyW4naLxQt pegHWhLvfN5RrEcmdiHAmXdu1qMK/I6YzDBzaZa1Yb1fCaTGNC3BlD8ONIfYv1DLf+VdRrw== X-Google-Smtp-Source: ABdhPJxPazRvto6tq3PYS/5Jcbouuu+cpUD0PwviXHFqAeZkuzTKYldRniByqYim1DnqqYfYXGLaRJeRMoc= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:90a:d501:b0:1bf:381a:c851 with SMTP id t1-20020a17090ad50100b001bf381ac851mr19912416pju.124.1646978005095; Thu, 10 Mar 2022 21:53:25 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:33 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-83-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 082/105] KVM: selftests: Convert psci_cpu_on_test away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/aarch64/psci_cpu_on_test.c | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/tools/testing/selftests/kvm/aarch64/psci_cpu_on_test.c b/tools= /testing/selftests/kvm/aarch64/psci_cpu_on_test.c index 3677cb2df19c..226603597917 100644 --- a/tools/testing/selftests/kvm/aarch64/psci_cpu_on_test.c +++ b/tools/testing/selftests/kvm/aarch64/psci_cpu_on_test.c @@ -17,9 +17,6 @@ #include "processor.h" #include "test_util.h" =20 -#define VCPU_ID_SOURCE 0 -#define VCPU_ID_TARGET 1 - #define CPU_ON_ENTRY_ADDR 0xfeedf00dul #define CPU_ON_CONTEXT_ID 0xdeadc0deul =20 @@ -72,6 +69,7 @@ static void guest_main(uint64_t target_cpu) int main(void) { uint64_t target_mpidr, obs_pc, obs_x0; + struct kvm_vcpu *vcpu0, *vcpu1; struct kvm_vcpu_init init; struct kvm_vm *vm; struct ucall uc; @@ -83,19 +81,19 @@ int main(void) vm_ioctl(vm, KVM_ARM_PREFERRED_TARGET, &init); init.features[0] |=3D (1 << KVM_ARM_VCPU_PSCI_0_2); =20 - aarch64_vcpu_add(vm, VCPU_ID_SOURCE, &init, guest_main); + vcpu0 =3D aarch64_vcpu_add(vm, 0, &init, guest_main); =20 /* * make sure the target is already off when executing the test. */ init.features[0] |=3D (1 << KVM_ARM_VCPU_POWER_OFF); - aarch64_vcpu_add(vm, VCPU_ID_TARGET, &init, guest_main); + vcpu1 =3D aarch64_vcpu_add(vm, 1, &init, guest_main); =20 - get_reg(vm, VCPU_ID_TARGET, KVM_ARM64_SYS_REG(SYS_MPIDR_EL1), &target_mpi= dr); - vcpu_args_set(vm, VCPU_ID_SOURCE, 1, target_mpidr & MPIDR_HWID_BITMASK); - vcpu_run(vm, VCPU_ID_SOURCE); + get_reg(vm, vcpu1->id, KVM_ARM64_SYS_REG(SYS_MPIDR_EL1), &target_mpidr); + vcpu_args_set(vm, vcpu0->id, 1, target_mpidr & MPIDR_HWID_BITMASK); + vcpu_run(vm, vcpu0->id); =20 - switch (get_ucall(vm, VCPU_ID_SOURCE, &uc)) { + switch (get_ucall(vm, vcpu0->id, &uc)) { case UCALL_DONE: break; case UCALL_ABORT: @@ -106,8 +104,8 @@ int main(void) TEST_FAIL("Unhandled ucall: %lu", uc.cmd); } =20 - get_reg(vm, VCPU_ID_TARGET, ARM64_CORE_REG(regs.pc), &obs_pc); - get_reg(vm, VCPU_ID_TARGET, ARM64_CORE_REG(regs.regs[0]), &obs_x0); + get_reg(vm, vcpu1->id, ARM64_CORE_REG(regs.pc), &obs_pc); + get_reg(vm, vcpu1->id, ARM64_CORE_REG(regs.regs[0]), &obs_x0); =20 TEST_ASSERT(obs_pc =3D=3D CPU_ON_ENTRY_ADDR, "unexpected target cpu pc: %lx (expected: %lx)", --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 F22B4C47080 for ; Fri, 11 Mar 2022 05:59:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236833AbiCKGAO (ORCPT ); Fri, 11 Mar 2022 01:00:14 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32912 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346682AbiCKFyf (ORCPT ); Fri, 11 Mar 2022 00:54:35 -0500 Received: from mail-yw1-x1149.google.com (mail-yw1-x1149.google.com [IPv6:2607:f8b0:4864:20::1149]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0ED8DFBA40 for ; Thu, 10 Mar 2022 21:53:27 -0800 (PST) Received: by mail-yw1-x1149.google.com with SMTP id 00721157ae682-2dbd2b5e180so60958177b3.3 for ; Thu, 10 Mar 2022 21:53:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=QNnRoJhZKEQyM/+E7bB1cN1LmMxMwC2JWJu27WTAeTM=; b=Ry+dEZKN+MH4zff16isFV3FfMvQ+BCkZ32pitHXN2VEamd2AJiR9FphyjNg88P9VuP 8nvTXjSCfBCvopww/LlHrgabXXcLMSCZ84lxQIJ6oQLWjF/RmSIDl10AyoJgUKzKri03 NAzEUV0PPow9po5JjaMnFg24lGgc7WpD7RsC36w8ULy6EHpxBYL2vmSjklcvAPX26+Xy vy4aGAQWQYjxGA0QK+lexwp6iIX/PQkgwX85YSxdGO0XBzeXIz/N6P65kCesqfXSOox/ Lq3vq9Q4A5UpyHZa4BxHaRiuJizQLI1VpY5FYxDbzle+cn0PAWFTClDHVxAU2YoSPXCO u9Mw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=QNnRoJhZKEQyM/+E7bB1cN1LmMxMwC2JWJu27WTAeTM=; b=4clJFHclZEMiZ6CORHnGmqMJblFz/nbGfr/46RR54mGKQJ3C5N0Uo2XhQJFJKpyAdW uPjkHNjNenVUmQYAc7SDPZqwznDMkhdhTVQ7gZl9vPdSxqFoSP076JC5LL5bvUnB898B 6L8lCJ0w7Aq8ZB+Na99Aq77R0meM37Xh8TNJesepi9R/FF4CXv3agaJi0iK0ERTuzHL3 jNG0l0EKvjEDxeXyg8irgkUOk9SB7YKVP5yhUNdRaww/tEWVJxzV21MNZZ+6pnK8FdyF GdiJHfSl4hzxYOuPimbFPlSOQau6Tz9ezg1Pao0Q56/ILDFRPLIScUQWUmQRoUySuHT/ 43vg== X-Gm-Message-State: AOAM530FEbtPbvgL0MgzSadj3Of6jWPWWChL5juiFcUk88tyqW8LCzVp ZA/l17SlmuJ6WxaTuCpRqulL2J20HbT2ybCbTgrEDVaAMVTc4rstJYrCFINs/tzPZjwK/J25shC mZOWN4YcdyRPI+UKzhAqsSe7sxwd/k/Jg5GShYl/ex8Jr3Z+/7bVK8jmtcQIzYiJJRO2/jw== X-Google-Smtp-Source: ABdhPJyyEB4J3/QUI+gHEPET1+jXWCa7sRxei7S9luq6Lzr95phlO6T30+GGBVDQpCwT4yY23CoEf61XufU= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a05:6902:108:b0:621:165e:5c1e with SMTP id o8-20020a056902010800b00621165e5c1emr6589152ybh.204.1646978006526; Thu, 10 Mar 2022 21:53:26 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:34 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-84-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 083/105] KVM: selftests: Convert hardware_disable_test away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/hardware_disable_test.c | 25 ++++++------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/tools/testing/selftests/kvm/hardware_disable_test.c b/tools/te= sting/selftests/kvm/hardware_disable_test.c index c31af07fae97..70cd22485357 100644 --- a/tools/testing/selftests/kvm/hardware_disable_test.c +++ b/tools/testing/selftests/kvm/hardware_disable_test.c @@ -27,12 +27,6 @@ =20 sem_t *sem; =20 -/* Arguments for the pthreads */ -struct payload { - struct kvm_vm *vm; - uint32_t index; -}; - static void guest_code(void) { for (;;) @@ -42,14 +36,14 @@ static void guest_code(void) =20 static void *run_vcpu(void *arg) { - struct payload *payload =3D (struct payload *)arg; - struct kvm_run *state =3D vcpu_state(payload->vm, payload->index); + struct kvm_vcpu *vcpu =3D arg; + struct kvm_run *run =3D vcpu->run; =20 - vcpu_run(payload->vm, payload->index); + vcpu_run(vcpu->vm, vcpu->id); =20 TEST_ASSERT(false, "%s: exited with reason %d: %s\n", - __func__, state->exit_reason, - exit_reason_str(state->exit_reason)); + __func__, run->exit_reason, + exit_reason_str(run->exit_reason)); pthread_exit(NULL); } =20 @@ -92,11 +86,11 @@ static inline void check_join(pthread_t thread, void **= retval) =20 static void run_test(uint32_t run) { + struct kvm_vcpu *vcpu; struct kvm_vm *vm; cpu_set_t cpu_set; pthread_t threads[VCPU_NUM]; pthread_t throw_away; - struct payload payloads[VCPU_NUM]; void *b; uint32_t i, j; =20 @@ -110,12 +104,9 @@ static void run_test(uint32_t run) =20 pr_debug("%s: [%d] start vcpus\n", __func__, run); for (i =3D 0; i < VCPU_NUM; ++i) { - vm_vcpu_add(vm, i, guest_code); - payloads[i].vm =3D vm; - payloads[i].index =3D i; + vcpu =3D vm_vcpu_add(vm, i, guest_code); =20 - check_create_thread(&threads[i], NULL, run_vcpu, - (void *)&payloads[i]); + check_create_thread(&threads[i], NULL, run_vcpu, vcpu); check_set_affinity(threads[i], &cpu_set); =20 for (j =3D 0; j < SLEEPING_THREAD_NUM; ++j) { --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 AF34BC433F5 for ; Fri, 11 Mar 2022 05:59:36 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231960AbiCKGAd (ORCPT ); Fri, 11 Mar 2022 01:00:33 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34696 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346742AbiCKFzF (ORCPT ); Fri, 11 Mar 2022 00:55:05 -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 8B4C1FCB48 for ; Thu, 10 Mar 2022 21:53:28 -0800 (PST) Received: by mail-pf1-x449.google.com with SMTP id 64-20020a621743000000b004f778ce34eeso2060058pfx.20 for ; Thu, 10 Mar 2022 21:53:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=hnr6XEqehIXzCALgq9vRASMm6oo2AIu/MDOgH1LyShk=; b=EoAgH5cJ31OJjhXsxuxR7e6zL32VPZA1g5mhlp8NSkqu6WpqnN7tDwnR+BwidyrDHZ pAKDW7xU+9JeydShcuwof5FE5nB2xiMZF4pCXYy3utxwDDQ2dDIQdbhJRXQdhfLtRcSN ldRCHIBqwAibsAScSbT+Nw6lmZTleUEhtebNqzqG85lkPxptvWG74elShld6F6clTIje Pqzqdn9TkCTBRjfia/iKSXrQ1Jqm4yfuRihsxbz2fIwnQdrxcYN506d2H17KZc9YErfk RJis4C1EWALn1bzMWMEqwpOFrQJ0n9WeZwoYLDmMek/pOr6CcApLohsdahFyY4YmaNLx pRZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=hnr6XEqehIXzCALgq9vRASMm6oo2AIu/MDOgH1LyShk=; b=KVQSpkHi75fVKbO+pHO96f/CpYm1X5oZaOpJlj9Iq03G4RrCFF229pyR8vMHS2Jb5m 6VhnegO8IP8yk7+cQOLVAg9yzV60t/29i1D+q8VK7Z5YUc9KFz07/qL0UubCQsjJqYzc HV+6kgsmWjnn34fO+OjaQmOGMINUK6tVg+fQ5oft+cg9UfMQcI+5PgwrtCGERRWa9EZT lnSUUugI3sH1lSeFgCk+3bUC7Lxdha33wkPr/BvlHhwaB4chiTQe7aZI2fh3CxM+6tud 5qSjUuMxoxomN7lXHzaAW0VI4BIpQj0nW/pEcXuEoxhFdI6exOvFlz/eH3xOQBghvnml WssQ== X-Gm-Message-State: AOAM5332XTuHbE4JmLVvR/DlMcA5gep67ZbTsSmpBjeu2HdLN0W7mWfy fcAhqdzJkl7DB93jxn81L/sQrbk0IiVEk+N6Q9F0Ltq1KBx2mHohCK2jQtASG6a8aEZuVGP2c3G UEc3VxzgmlIJvZ0VJjIc/Xd5nQ8MOtmd+XN9LN+vav7JzEFTwN4Ho9OmMZth83AFCpH8YYQ== X-Google-Smtp-Source: ABdhPJzX+Pnx85Bo0dMNSMCJtoCR/r5g9PUrtYDfOe+8lfxOmFP6cvRUh9u+RsJbE9AUrqZmlGq2yN8yoOo= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a05:6a00:2312:b0:4f7:2d1f:d83e with SMTP id h18-20020a056a00231200b004f72d1fd83emr8785234pfh.14.1646978008030; Thu, 10 Mar 2022 21:53:28 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:35 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-85-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 084/105] KVM: selftests: Add VM creation helper that "returns" vCPUs From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/include/kvm_util_base.h | 16 ++++++++++++---- .../testing/selftests/kvm/kvm_page_table_test.c | 4 ++-- tools/testing/selftests/kvm/lib/kvm_util.c | 17 ++++++++++------- .../testing/selftests/kvm/lib/perf_test_util.c | 4 ++-- 4 files changed, 26 insertions(+), 15 deletions(-) diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/te= sting/selftests/kvm/include/kvm_util_base.h index 14457f98080b..051d9707e2e7 100644 --- a/tools/testing/selftests/kvm/include/kvm_util_base.h +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h @@ -541,11 +541,19 @@ struct kvm_vm *vm_create_default_with_vcpus(uint32_t = nr_vcpus, uint64_t extra_me uint32_t vcpuids[]); =20 /* Like vm_create_default_with_vcpus, but accepts mode and slot0 memory as= a parameter */ -struct kvm_vm *vm_create_with_vcpus(enum vm_guest_mode mode, uint32_t nr_v= cpus, - uint64_t slot0_mem_pages, uint64_t extra_mem_pages, - uint32_t num_percpu_pages, void *guest_code, - uint32_t vcpuids[]); +struct kvm_vm *__vm_create_with_vcpus(enum vm_guest_mode mode, uint32_t nr= _vcpus, + uint64_t slot0_mem_pages, uint64_t extra_mem_pages, + uint32_t num_percpu_pages, void *guest_code, + uint32_t vcpuids[], struct kvm_vcpu *vcpus[]); =20 +static inline struct kvm_vm *vm_create_with_vcpus(uint32_t nr_vcpus, + void *guest_code, + struct kvm_vcpu *vcpus[]) +{ + return __vm_create_with_vcpus(VM_MODE_DEFAULT, nr_vcpus, + DEFAULT_GUEST_PHY_PAGES, 0, 0, + guest_code, NULL, vcpus); +} =20 /* * Create a VM with a single vCPU with reasonable defaults and @extra_mem_= pages diff --git a/tools/testing/selftests/kvm/kvm_page_table_test.c b/tools/test= ing/selftests/kvm/kvm_page_table_test.c index ba1fdc3dcf4a..b969257f646d 100644 --- a/tools/testing/selftests/kvm/kvm_page_table_test.c +++ b/tools/testing/selftests/kvm/kvm_page_table_test.c @@ -268,8 +268,8 @@ static struct kvm_vm *pre_init_before_test(enum vm_gues= t_mode mode, void *arg) =20 /* Create a VM with enough guest pages */ guest_num_pages =3D test_mem_size / guest_page_size; - vm =3D vm_create_with_vcpus(mode, nr_vcpus, DEFAULT_GUEST_PHY_PAGES, - guest_num_pages, 0, guest_code, NULL); + vm =3D __vm_create_with_vcpus(mode, nr_vcpus, DEFAULT_GUEST_PHY_PAGES, + guest_num_pages, 0, guest_code, NULL, NULL); =20 /* Align down GPA of the testing memslot */ if (!p->phys_offset) diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index 1580d4888d74..de568d0a2ccc 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -305,12 +305,13 @@ struct kvm_vm *vm_create(uint64_t phy_pages) * extra_mem_pages is only used to calculate the maximum page table size, * no real memory allocation for non-slot0 memory in this function. */ -struct kvm_vm *vm_create_with_vcpus(enum vm_guest_mode mode, uint32_t nr_v= cpus, - uint64_t slot0_mem_pages, uint64_t extra_mem_pages, - uint32_t num_percpu_pages, void *guest_code, - uint32_t vcpuids[]) +struct kvm_vm *__vm_create_with_vcpus(enum vm_guest_mode mode, uint32_t nr= _vcpus, + uint64_t slot0_mem_pages, uint64_t extra_mem_pages, + uint32_t num_percpu_pages, void *guest_code, + uint32_t vcpuids[], struct kvm_vcpu *vcpus[]) { uint64_t vcpu_pages, extra_pg_pages, pages; + struct kvm_vcpu *vcpu; struct kvm_vm *vm; int i; =20 @@ -344,7 +345,9 @@ struct kvm_vm *vm_create_with_vcpus(enum vm_guest_mode = mode, uint32_t nr_vcpus, for (i =3D 0; i < nr_vcpus; ++i) { uint32_t vcpuid =3D vcpuids ? vcpuids[i] : i; =20 - vm_vcpu_add(vm, vcpuid, guest_code); + vcpu =3D vm_vcpu_add(vm, vcpuid, guest_code); + if (vcpus) + vcpus[i] =3D vcpu; } =20 return vm; @@ -354,8 +357,8 @@ struct kvm_vm *vm_create_default_with_vcpus(uint32_t nr= _vcpus, uint64_t extra_me uint32_t num_percpu_pages, void *guest_code, uint32_t vcpuids[]) { - return vm_create_with_vcpus(VM_MODE_DEFAULT, nr_vcpus, DEFAULT_GUEST_PHY_= PAGES, - extra_mem_pages, num_percpu_pages, guest_code, vcpuids); + return __vm_create_with_vcpus(VM_MODE_DEFAULT, nr_vcpus, DEFAULT_GUEST_PH= Y_PAGES, + extra_mem_pages, num_percpu_pages, guest_code, vcpuids, NULL); } =20 struct kvm_vm *vm_create_default(uint32_t vcpuid, uint64_t extra_mem_pages, diff --git a/tools/testing/selftests/kvm/lib/perf_test_util.c b/tools/testi= ng/selftests/kvm/lib/perf_test_util.c index 722df3a28791..5b80ba7f12e4 100644 --- a/tools/testing/selftests/kvm/lib/perf_test_util.c +++ b/tools/testing/selftests/kvm/lib/perf_test_util.c @@ -139,8 +139,8 @@ struct kvm_vm *perf_test_create_vm(enum vm_guest_mode m= ode, int vcpus, * The memory is also added to memslot 0, but that's a benign side * effect as KVM allows aliasing HVAs in meslots. */ - vm =3D vm_create_with_vcpus(mode, vcpus, DEFAULT_GUEST_PHY_PAGES, - guest_num_pages, 0, guest_code, NULL); + vm =3D __vm_create_with_vcpus(mode, vcpus, DEFAULT_GUEST_PHY_PAGES, + guest_num_pages, 0, guest_code, NULL, NULL); =20 pta->vm =3D vm; =20 --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 AF773C433F5 for ; Fri, 11 Mar 2022 05:59:21 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346628AbiCKGAS (ORCPT ); Fri, 11 Mar 2022 01:00:18 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34680 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242820AbiCKFzE (ORCPT ); Fri, 11 Mar 2022 00:55:04 -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 8B392FCB43 for ; Thu, 10 Mar 2022 21:53:30 -0800 (PST) Received: by mail-pg1-x549.google.com with SMTP id i4-20020a63b304000000b0038108d6e7cdso761761pgf.14 for ; Thu, 10 Mar 2022 21:53:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=fJcjxxaNZsUzxQ7YsSiwfIENO7Kf+loL8mauwQgQyUk=; b=KmMifenitTRX+EPj2GyGPqriFuTx+YIHqGEFXqeP8oE+8WDTxt+4TGZseINy+JmCfi DrMs3vuh31aOWtmVyaTEJZWnMLyF7ZM3iyaRunynYe41yk2GidiOaWP3nn+fUe32KaBZ gb17nWCRcW9y9pN6h8XZSJpq9IZXi8ZAlnoRLCpgORNEWmsjKosJHytU48DlO6TUMLFN 7xdtgiixFS+vZ7BB5ETdLsQ14/5oJI2U4mcjrObyFH4+dZnYo5p8Yb/XLgYjKVbpr/vq q60xYQU+NDypzZUF4f27XXcUnWLrbj51TYuAPGAgZUlXvHq13FZdSwyQVmoGZphx2NNs 5xww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=fJcjxxaNZsUzxQ7YsSiwfIENO7Kf+loL8mauwQgQyUk=; b=4wHFBYcZhcDqoJEUbs0OeK7sTcvmgRtkLecX06jgrkU3cTWmfwE72KHycPpTFk7mjb XVdEThrTGTLNY+l2/Mp61L9HWIqzQTy6WluuuKPMZV2YWP/6Kbri4NihnKRXeHG3+xyn iF15EEV1FXsWBgMWptDesvKF3bFAUmnn/PTpPAMtZBcLg5YaEyAGaFQTrdfIZdzc4EQ8 BGvcyFCZQOR5iU4h68wGJAWkVFqrdZIvFoU1UjNOrIWlxRFIjND3o28H7Cr3t0Y3ODLK m/y1esdApSZ/y91gaf3OdKaGnQD07wNWzk2Zleme1ZK/JfIB9i+OHrlitReoHtAdO81D PQ0Q== X-Gm-Message-State: AOAM533U8Y7Oayr+tTSwh2rk1fLsfAPN3BXRidAgzsRg5umGmdydETxO escohN0yhMAU5a6Pw9tPhZUGnhBnacVK0zdEKpzU4PsD+IbrKsEQQ7cQl42F7DrZvvV+9zyXX0w 3dPAwrzunDiYk8iPm8588hyjm4HVOdjPJegn9n/NCLTOcF0EqjpHNPGYCl11C92arlQrdSA== X-Google-Smtp-Source: ABdhPJxkNLcfAj1SbQ8ffCFB2DJTzWt/d1BJ1ZLLykojRJxeERiZmyOucU+fxNVdb3kkbRqpUU8OljfVQWw= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:902:6b4a:b0:14d:474f:4904 with SMTP id g10-20020a1709026b4a00b0014d474f4904mr8943717plt.122.1646978009661; Thu, 10 Mar 2022 21:53:29 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:36 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-86-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 085/105] KVM: selftests: Convert steal_time away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- tools/testing/selftests/kvm/steal_time.c | 120 +++++++++++------------ 1 file changed, 60 insertions(+), 60 deletions(-) diff --git a/tools/testing/selftests/kvm/steal_time.c b/tools/testing/selft= ests/kvm/steal_time.c index 741892cec1ea..fe64fac0a5f4 100644 --- a/tools/testing/selftests/kvm/steal_time.c +++ b/tools/testing/selftests/kvm/steal_time.c @@ -58,36 +58,33 @@ static void guest_code(int cpu) GUEST_DONE(); } =20 -static void steal_time_init(struct kvm_vm *vm) +static bool is_steal_time_supported(struct kvm_vcpu *vcpu) { - int i; + struct kvm_cpuid_entry2 *cpuid =3D kvm_get_supported_cpuid_entry(KVM_CPUI= D_FEATURES); =20 - if (!(kvm_get_supported_cpuid_entry(KVM_CPUID_FEATURES)->eax & - KVM_FEATURE_STEAL_TIME)) { - print_skip("steal-time not supported"); - exit(KSFT_SKIP); - } + return cpuid && (cpuid->eax & KVM_FEATURE_STEAL_TIME); +} =20 - for (i =3D 0; i < NR_VCPUS; ++i) { - int ret; +static void steal_time_init(struct kvm_vcpu *vcpu, uint32_t i) +{ + int ret; =20 - /* ST_GPA_BASE is identity mapped */ - st_gva[i] =3D (void *)(ST_GPA_BASE + i * STEAL_TIME_SIZE); - sync_global_to_guest(vm, st_gva[i]); + /* ST_GPA_BASE is identity mapped */ + st_gva[i] =3D (void *)(ST_GPA_BASE + i * STEAL_TIME_SIZE); + sync_global_to_guest(vcpu->vm, st_gva[i]); =20 - ret =3D _vcpu_set_msr(vm, i, MSR_KVM_STEAL_TIME, (ulong)st_gva[i] | KVM_= STEAL_RESERVED_MASK); - TEST_ASSERT(ret =3D=3D 0, "Bad GPA didn't fail"); + ret =3D _vcpu_set_msr(vcpu->vm, vcpu->id, MSR_KVM_STEAL_TIME, (ulong)st_g= va[i] | KVM_STEAL_RESERVED_MASK); + TEST_ASSERT(ret =3D=3D 0, "Bad GPA didn't fail"); =20 - vcpu_set_msr(vm, i, MSR_KVM_STEAL_TIME, (ulong)st_gva[i] | KVM_MSR_ENABL= ED); - } + vcpu_set_msr(vcpu->vm, vcpu->id, MSR_KVM_STEAL_TIME, (ulong)st_gva[i] | K= VM_MSR_ENABLED); } =20 -static void steal_time_dump(struct kvm_vm *vm, uint32_t vcpuid) +static void steal_time_dump(struct kvm_vm *vm, uint32_t vcpu_idx) { - struct kvm_steal_time *st =3D addr_gva2hva(vm, (ulong)st_gva[vcpuid]); + struct kvm_steal_time *st =3D addr_gva2hva(vm, (ulong)st_gva[vcpu_idx]); int i; =20 - pr_info("VCPU%d:\n", vcpuid); + pr_info("VCPU%d:\n", vcpu_idx); pr_info(" steal: %lld\n", st->steal); pr_info(" version: %d\n", st->version); pr_info(" flags: %d\n", st->flags); @@ -165,49 +162,50 @@ static void guest_code(int cpu) GUEST_DONE(); } =20 -static void steal_time_init(struct kvm_vm *vm) +static bool is_steal_time_supported(struct kvm_vcpu *vcpu) { struct kvm_device_attr dev =3D { .group =3D KVM_ARM_VCPU_PVTIME_CTRL, .attr =3D KVM_ARM_VCPU_PVTIME_IPA, }; - int i, ret; =20 - ret =3D __vcpu_ioctl(vm, 0, KVM_HAS_DEVICE_ATTR, &dev); - if (ret !=3D 0 && errno =3D=3D ENXIO) { - print_skip("steal-time not supported"); - exit(KSFT_SKIP); - } - - for (i =3D 0; i < NR_VCPUS; ++i) { - uint64_t st_ipa; + return !__vcpu_ioctl(vcpu->vm, vcpu->id, KVM_HAS_DEVICE_ATTR, &dev); +} =20 - vcpu_ioctl(vm, i, KVM_HAS_DEVICE_ATTR, &dev); +static void steal_time_init(struct kvm_vcpu *vcpu, uint32_t i) +{ + struct kvm_vm *vm =3D vcpu->vm; + uint64_t st_ipa; + int ret; =20 - dev.addr =3D (uint64_t)&st_ipa; + struct kvm_device_attr dev =3D { + .group =3D KVM_ARM_VCPU_PVTIME_CTRL, + .attr =3D KVM_ARM_VCPU_PVTIME_IPA, + .addr =3D (uint64_t)&st_ipa, + }; =20 - /* ST_GPA_BASE is identity mapped */ - st_gva[i] =3D (void *)(ST_GPA_BASE + i * STEAL_TIME_SIZE); - sync_global_to_guest(vm, st_gva[i]); + vcpu_ioctl(vm, vcpu->id, KVM_HAS_DEVICE_ATTR, &dev); =20 - st_ipa =3D (ulong)st_gva[i] | 1; - ret =3D __vcpu_ioctl(vm, i, KVM_SET_DEVICE_ATTR, &dev); - TEST_ASSERT(ret =3D=3D -1 && errno =3D=3D EINVAL, "Bad IPA didn't report= EINVAL"); + /* ST_GPA_BASE is identity mapped */ + st_gva[i] =3D (void *)(ST_GPA_BASE + i * STEAL_TIME_SIZE); + sync_global_to_guest(vm, st_gva[i]); =20 - st_ipa =3D (ulong)st_gva[i]; - vcpu_ioctl(vm, i, KVM_SET_DEVICE_ATTR, &dev); + st_ipa =3D (ulong)st_gva[i] | 1; + ret =3D __vcpu_ioctl(vm, vcpu->id, KVM_SET_DEVICE_ATTR, &dev); + TEST_ASSERT(ret =3D=3D -1 && errno =3D=3D EINVAL, "Bad IPA didn't report = EINVAL"); =20 - ret =3D __vcpu_ioctl(vm, i, KVM_SET_DEVICE_ATTR, &dev); - TEST_ASSERT(ret =3D=3D -1 && errno =3D=3D EEXIST, "Set IPA twice without= EEXIST"); + st_ipa =3D (ulong)st_gva[i]; + vcpu_ioctl(vm, vcpu->id, KVM_SET_DEVICE_ATTR, &dev); =20 - } + ret =3D __vcpu_ioctl(vm, vcpu->id, KVM_SET_DEVICE_ATTR, &dev); + TEST_ASSERT(ret =3D=3D -1 && errno =3D=3D EEXIST, "Set IPA twice without = EEXIST"); } =20 -static void steal_time_dump(struct kvm_vm *vm, uint32_t vcpuid) +static void steal_time_dump(struct kvm_vm *vm, uint32_t vcpu_idx) { - struct st_time *st =3D addr_gva2hva(vm, (ulong)st_gva[vcpuid]); + struct st_time *st =3D addr_gva2hva(vm, (ulong)st_gva[vcpu_idx]); =20 - pr_info("VCPU%d:\n", vcpuid); + pr_info("VCPU%d:\n", vcpu_idx); pr_info(" rev: %d\n", st->rev); pr_info(" attr: %d\n", st->attr); pr_info(" st_time: %ld\n", st->st_time); @@ -231,15 +229,13 @@ static void *do_steal_time(void *arg) return NULL; } =20 -static void run_vcpu(struct kvm_vm *vm, uint32_t vcpuid) +static void run_vcpu(struct kvm_vcpu *vcpu) { struct ucall uc; =20 - vcpu_args_set(vm, vcpuid, 1, vcpuid); + vcpu_run(vcpu->vm, vcpu->id); =20 - vcpu_ioctl(vm, vcpuid, KVM_RUN, NULL); - - switch (get_ucall(vm, vcpuid, &uc)) { + switch (get_ucall(vcpu->vm, vcpu->id, &uc)) { case UCALL_SYNC: case UCALL_DONE: break; @@ -248,12 +244,13 @@ static void run_vcpu(struct kvm_vm *vm, uint32_t vcpu= id) __FILE__, uc.args[1]); default: TEST_ASSERT(false, "Unexpected exit: %s", - exit_reason_str(vcpu_state(vm, vcpuid)->exit_reason)); + exit_reason_str(vcpu->run->exit_reason)); } } =20 int main(int ac, char **av) { + struct kvm_vcpu *vcpus[NR_VCPUS]; struct kvm_vm *vm; pthread_attr_t attr; pthread_t thread; @@ -274,25 +271,28 @@ int main(int ac, char **av) pthread_setaffinity_np(pthread_self(), sizeof(cpu_set_t), &cpuset); =20 /* Create a one VCPU guest and an identity mapped memslot for the steal t= ime structure */ - vm =3D vm_create_default(0, 0, guest_code); + vm =3D vm_create_with_vcpus(NR_VCPUS, guest_code, vcpus); gpages =3D vm_calc_num_guest_pages(VM_MODE_DEFAULT, STEAL_TIME_SIZE * NR_= VCPUS); vm_userspace_mem_region_add(vm, VM_MEM_SRC_ANONYMOUS, ST_GPA_BASE, 1, gpa= ges, 0); virt_map(vm, ST_GPA_BASE, ST_GPA_BASE, gpages); ucall_init(vm, NULL); =20 - /* Add the rest of the VCPUs */ - for (i =3D 1; i < NR_VCPUS; ++i) - vm_vcpu_add(vm, i, guest_code); - - steal_time_init(vm); + if (!is_steal_time_supported(vcpus[0])) { + print_skip("steal-time not supported"); + exit(KSFT_SKIP);\ + } =20 /* Run test on each VCPU */ for (i =3D 0; i < NR_VCPUS; ++i) { + steal_time_init(vcpus[i], i); + =09 + vcpu_args_set(vm, vcpus[i]->id, 1, i); + /* First VCPU run initializes steal-time */ - run_vcpu(vm, i); + run_vcpu(vcpus[i]); =20 /* Second VCPU run, expect guest stolen time to be <=3D run_delay */ - run_vcpu(vm, i); + run_vcpu(vcpus[i]); sync_global_from_guest(vm, guest_stolen_time[i]); stolen_time =3D guest_stolen_time[i]; run_delay =3D get_run_delay(); @@ -313,7 +313,7 @@ int main(int ac, char **av) MIN_RUN_DELAY_NS, run_delay); =20 /* Run VCPU again to confirm stolen time is consistent with run_delay */ - run_vcpu(vm, i); + run_vcpu(vcpus[i]); sync_global_from_guest(vm, guest_stolen_time[i]); stolen_time =3D guest_stolen_time[i] - stolen_time; TEST_ASSERT(stolen_time >=3D run_delay, --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 0F9EEC433F5 for ; Fri, 11 Mar 2022 06:00:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346568AbiCKGBL (ORCPT ); Fri, 11 Mar 2022 01:01:11 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34708 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346750AbiCKFzF (ORCPT ); Fri, 11 Mar 2022 00:55:05 -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 E318490260 for ; Thu, 10 Mar 2022 21:53:31 -0800 (PST) Received: by mail-pg1-x54a.google.com with SMTP id r11-20020a63440b000000b0038068f34b0cso4256442pga.0 for ; Thu, 10 Mar 2022 21:53:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=4cqRUT39er837P1PsE20nSgl01JijnWfe+nU7XJK38c=; b=tShz/GWTl4ypK3JmY1jyn63jX5pcTsMZ+dLuXRQ3oTtU6wjJWxQrIY88MjUVjnonCT NUYIwXCqyG1Fbpzv6GjWEYK2LQ8W805hq3hLuT90OThTFaVzInrYsEkOn1h+kEXkAUnk 12T4pgd3UJjuruP8itmyiovxp9Uqw92slFiShBYJwwqKcs62/rra41LVGEOfAdJop4Ko P1ll1+ojzMb/CnhLQwpR9hXFx49SO6iTK8VIIKy2QLd9qfPo2RocixmlDEZgRJFtSjp/ ptk/G5JDtbvGB5bwQctUOg8Ak3xDupQYs+nAy5pNOhafMI0IWqR/th33e5ZUvMdKW2sR 65WA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=4cqRUT39er837P1PsE20nSgl01JijnWfe+nU7XJK38c=; b=so3tRCTIwACI2oY9LTGwXAAL2RYlww7QtoFvnL1HR02bZ+TLlPeoQIsFayRi2z2i8h 7+pXTITH9vOI07FRDqasGIHnVj4/4RDssKKMQRozpkztBHQ4VO/gm8HxgdFdyvXpRZsz gcB3XKLSYZo1WG5KcmMsvwgCsD6cT6Nm3LutxoGWrZyfoSy4ZjRidigxCglOhDySwCHo UqX1ywjePxHZkb8e5TxwCY9j1+JWeDOR2rp1Q7Y5KevaDEg25chTko1Yf5jkPT9MDyOf +Jh9NJdENtRgPfT1xcXYZEIaS9R09IG5pSiGoeLFW1lB+Il5o0RzKsDPql6BlJ3fUDBV hmew== X-Gm-Message-State: AOAM533bSL0W17vmV9jXMoIzVheO69CRwpPNsoupGyjHSd1+ELj1boV4 C4f4Z1rcv6j75Ug/f6R2PgMSb5ejmcrV9d24S3sAMntcqgE5RLr0MR7Uq/ONPczLGFWw+qAfxfM a24vUNC4/j5xEfb/LjVGx7corI2BeTnjoYW/xUydgdhJCDjYlTt6RWpF1Ni3blsZWB4cGVQ== X-Google-Smtp-Source: ABdhPJzWUn6HxaW6lqim3t0X9zOtfeonq8fe40eFR76AFWm8v9kr+jm/dw5EtrGTEaHGhQPL4z/mdHJb9lI= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:902:e5c2:b0:151:cc18:9ea9 with SMTP id u2-20020a170902e5c200b00151cc189ea9mr8469774plf.24.1646978011338; Thu, 10 Mar 2022 21:53:31 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:37 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-87-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 086/105] KVM: selftests: Convert arch_timer away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/aarch64/arch_timer.c | 62 ++++++++----------- 1 file changed, 27 insertions(+), 35 deletions(-) diff --git a/tools/testing/selftests/kvm/aarch64/arch_timer.c b/tools/testi= ng/selftests/kvm/aarch64/arch_timer.c index 127fb4f0c335..de9b5ecea54e 100644 --- a/tools/testing/selftests/kvm/aarch64/arch_timer.c +++ b/tools/testing/selftests/kvm/aarch64/arch_timer.c @@ -76,13 +76,8 @@ struct test_vcpu_shared_data { uint64_t xcnt; }; =20 -struct test_vcpu { - uint32_t vcpuid; - pthread_t pt_vcpu_run; - struct kvm_vm *vm; -}; - -static struct test_vcpu test_vcpu[KVM_MAX_VCPUS]; +static struct kvm_vcpu *vcpus[KVM_MAX_VCPUS]; +static pthread_t pt_vcpu_run[KVM_MAX_VCPUS]; static struct test_vcpu_shared_data vcpu_shared_data[KVM_MAX_VCPUS]; =20 static int vtimer_irq, ptimer_irq; @@ -217,20 +212,20 @@ static void guest_code(void) =20 static void *test_vcpu_run(void *arg) { + unsigned int vcpu_idx =3D (unsigned long)arg; struct ucall uc; - struct test_vcpu *vcpu =3D arg; + struct kvm_vcpu *vcpu =3D vcpus[vcpu_idx]; struct kvm_vm *vm =3D vcpu->vm; - uint32_t vcpuid =3D vcpu->vcpuid; - struct test_vcpu_shared_data *shared_data =3D &vcpu_shared_data[vcpuid]; + struct test_vcpu_shared_data *shared_data =3D &vcpu_shared_data[vcpu_idx]; =20 - vcpu_run(vm, vcpuid); + vcpu_run(vm, vcpu->id); =20 /* Currently, any exit from guest is an indication of completion */ pthread_mutex_lock(&vcpu_done_map_lock); - set_bit(vcpuid, vcpu_done_map); + set_bit(vcpu_idx, vcpu_done_map); pthread_mutex_unlock(&vcpu_done_map_lock); =20 - switch (get_ucall(vm, vcpuid, &uc)) { + switch (get_ucall(vm, vcpu->id, &uc)) { case UCALL_SYNC: case UCALL_DONE: break; @@ -238,7 +233,7 @@ static void *test_vcpu_run(void *arg) sync_global_from_guest(vm, *shared_data); TEST_FAIL("%s at %s:%ld\n\tvalues: %lu, %lu; %lu, vcpu: %u; stage: %u; i= ter: %u", (const char *)uc.args[0], __FILE__, uc.args[1], - uc.args[2], uc.args[3], uc.args[4], vcpuid, + uc.args[2], uc.args[3], uc.args[4], vcpu_idx, shared_data->guest_stage, shared_data->nr_iter); break; default: @@ -265,7 +260,7 @@ static uint32_t test_get_pcpu(void) return pcpu; } =20 -static int test_migrate_vcpu(struct test_vcpu *vcpu) +static int test_migrate_vcpu(unsigned int vcpu_idx) { int ret; cpu_set_t cpuset; @@ -274,15 +269,15 @@ static int test_migrate_vcpu(struct test_vcpu *vcpu) CPU_ZERO(&cpuset); CPU_SET(new_pcpu, &cpuset); =20 - pr_debug("Migrating vCPU: %u to pCPU: %u\n", vcpu->vcpuid, new_pcpu); + pr_debug("Migrating vCPU: %u to pCPU: %u\n", vcpu_idx, new_pcpu); =20 - ret =3D pthread_setaffinity_np(vcpu->pt_vcpu_run, - sizeof(cpuset), &cpuset); + ret =3D pthread_setaffinity_np(pt_vcpu_run[vcpu_idx], + sizeof(cpuset), &cpuset); =20 /* Allow the error where the vCPU thread is already finished */ TEST_ASSERT(ret =3D=3D 0 || ret =3D=3D ESRCH, - "Failed to migrate the vCPU:%u to pCPU: %u; ret: %d\n", - vcpu->vcpuid, new_pcpu, ret); + "Failed to migrate the vCPU:%u to pCPU: %u; ret: %d\n", + vcpu_idx, new_pcpu, ret); =20 return ret; } @@ -305,7 +300,7 @@ static void *test_vcpu_migration(void *arg) continue; } =20 - test_migrate_vcpu(&test_vcpu[i]); + test_migrate_vcpu(i); } } while (test_args.nr_vcpus !=3D n_done); =20 @@ -314,16 +309,17 @@ static void *test_vcpu_migration(void *arg) =20 static void test_run(struct kvm_vm *vm) { - int i, ret; pthread_t pt_vcpu_migration; + unsigned int i; + int ret; =20 pthread_mutex_init(&vcpu_done_map_lock, NULL); vcpu_done_map =3D bitmap_zalloc(test_args.nr_vcpus); TEST_ASSERT(vcpu_done_map, "Failed to allocate vcpu done bitmap\n"); =20 - for (i =3D 0; i < test_args.nr_vcpus; i++) { - ret =3D pthread_create(&test_vcpu[i].pt_vcpu_run, NULL, - test_vcpu_run, &test_vcpu[i]); + for (i =3D 0; i < (unsigned long)test_args.nr_vcpus; i++) { + ret =3D pthread_create(&pt_vcpu_run[i], NULL, test_vcpu_run, + (void *)(unsigned long)i); TEST_ASSERT(!ret, "Failed to create vCPU-%d pthread\n", i); } =20 @@ -338,7 +334,7 @@ static void test_run(struct kvm_vm *vm) =20 =20 for (i =3D 0; i < test_args.nr_vcpus; i++) - pthread_join(test_vcpu[i].pt_vcpu_run, NULL); + pthread_join(pt_vcpu_run[i], NULL); =20 if (test_args.migration_freq_ms) pthread_join(pt_vcpu_migration, NULL); @@ -349,9 +345,9 @@ static void test_run(struct kvm_vm *vm) static void test_init_timer_irq(struct kvm_vm *vm) { /* Timer initid should be same for all the vCPUs, so query only vCPU-0 */ - vcpu_device_attr_get(vm, 0, KVM_ARM_VCPU_TIMER_CTRL, + vcpu_device_attr_get(vm, vcpus[0]->id, KVM_ARM_VCPU_TIMER_CTRL, KVM_ARM_VCPU_TIMER_IRQ_PTIMER, &ptimer_irq); - vcpu_device_attr_get(vm, 0, KVM_ARM_VCPU_TIMER_CTRL, + vcpu_device_attr_get(vm, vcpus[0]->id, KVM_ARM_VCPU_TIMER_CTRL, KVM_ARM_VCPU_TIMER_IRQ_VTIMER, &vtimer_irq); =20 sync_global_to_guest(vm, ptimer_irq); @@ -366,17 +362,13 @@ static struct kvm_vm *test_vm_create(void) unsigned int i; int nr_vcpus =3D test_args.nr_vcpus; =20 - vm =3D vm_create_default_with_vcpus(nr_vcpus, 0, 0, guest_code, NULL); + vm =3D vm_create_with_vcpus(nr_vcpus, guest_code, vcpus); =20 vm_init_descriptor_tables(vm); vm_install_exception_handler(vm, VECTOR_IRQ_CURRENT, guest_irq_handler); =20 - for (i =3D 0; i < nr_vcpus; i++) { - vcpu_init_descriptor_tables(vm, i); - - test_vcpu[i].vcpuid =3D i; - test_vcpu[i].vm =3D vm; - } + for (i =3D 0; i < nr_vcpus; i++) + vcpu_init_descriptor_tables(vm, vcpus[i]->id); =20 ucall_init(vm, NULL); test_init_timer_irq(vm); --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 BB4B8C433F5 for ; Fri, 11 Mar 2022 05:59:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346529AbiCKGA0 (ORCPT ); Fri, 11 Mar 2022 01:00:26 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33180 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346749AbiCKFzF (ORCPT ); Fri, 11 Mar 2022 00:55:05 -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 E3EC0EC5CC for ; Thu, 10 Mar 2022 21:53:33 -0800 (PST) Received: by mail-pl1-x649.google.com with SMTP id n11-20020a170902d2cb00b0015331a5d02fso993297plc.12 for ; Thu, 10 Mar 2022 21:53:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=dbOZYIDkIB5UtzwmNzQd2PJFJKvUjWfX0QUBO7DMuHY=; b=ZW7p3/empagVn6qWi2qV2Fw/Jea9KHyPEQ/vR2lLt7x5xQ/n9QFJgs20pAfrcFhOX5 Mg2VlAUZQUDCSPkkY/XK50S7uRv20+ltLZRzpwJtLZXcfmO5BcxfbSwUwVn0b1ZuC2Es usMkbxzEHJ7QAQhg2z5MjIcEE15DRqRw14x7iO6wi/CENn8V2uHCxmJ+1ReWzKdUX7D9 za3uttdMRh7xJtfxr3sqKRwitHzUxd/yxh2SmBQcLLxIlK/abZ3E56em3/3n+ZRHFi+f 1tqiZRcsESrr0HQbBxeGxYr72C+N6KIkMs95vPa/uANoRwGkkWDKHAwURrj0LPA1sHLa FOFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=dbOZYIDkIB5UtzwmNzQd2PJFJKvUjWfX0QUBO7DMuHY=; b=SX9ao2i8jPA7jbPfBv2Obw5pAjIGETfJuYh9zm9NPdngxa5Qc+feAwdAGnmbbMao9y 3WTG9ajHALUyu/sZMk4Up2P2fDquyXDZ++4ILMy4nCYfOZOPC0csZP+1hJ+8lcLGEUjp Q+G4oNHW5QR3WdnCkFOT7pby3fyPps1cQbRvTE82q5ougrkNnCXrd23O6EdFe2Z0iKQS zo41FOtdM5Bq11DpD4OCvdzKqHbpGNfvx3nQVm1UI3fG1CXEq6LxFw8c4gBF9xTDeQ2w WXEZFpqpxebBXwhAePje431rPNjMAO7Uc/Vf4WRyi33+rFIMWA9HcJ/xISLh1KWvEcc+ 8I2A== X-Gm-Message-State: AOAM5310hbYo45CFMjd4dB/9EiHMRQfOXRwao093HPLVC/pmy0Ul1vnv NVQP5V53D3/IcKEs83n3VgdFC8cHZbTQIRNRqjXu4fouEfQqe369Gek3HBEUuhuX8Zgt/ovnXV7 EZnMFBJS20tkGRdCwgUiYGGFGhWRHXlkYpey2E95LABAZ5cXYblt96d7OsMh8I+VPZ9lpNA== X-Google-Smtp-Source: ABdhPJxYLaOH73e7m+mnSAZekPfjT2yy59uVJxgfjNuVkH+Ngsckb8WhTzoVwTs89r4J4osxvPLlWshdVnI= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a05:6a00:2181:b0:4f6:f1b1:1ba7 with SMTP id h1-20020a056a00218100b004f6f1b11ba7mr8300681pfi.73.1646978013119; Thu, 10 Mar 2022 21:53:33 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:38 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-88-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 087/105] KVM: selftests: Fix typo in vgic_init test From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- tools/testing/selftests/kvm/aarch64/vgic_init.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/testing/selftests/kvm/aarch64/vgic_init.c b/tools/testin= g/selftests/kvm/aarch64/vgic_init.c index 32dac03f5600..f8d41f12bdca 100644 --- a/tools/testing/selftests/kvm/aarch64/vgic_init.c +++ b/tools/testing/selftests/kvm/aarch64/vgic_init.c @@ -418,7 +418,7 @@ static void test_v3_typer_accesses(void) KVM_DEV_ARM_VGIC_CTRL_INIT, NULL); =20 for (i =3D 0; i < NR_VCPUS ; i++) { - ret =3D v3_redist_reg_get(v.gic_fd, 0, GICR_TYPER, &val); + ret =3D v3_redist_reg_get(v.gic_fd, i, GICR_TYPER, &val); TEST_ASSERT(!ret && !val, "read GICR_TYPER before rdist region setting"); } =20 --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 E836EC4332F for ; Fri, 11 Mar 2022 06:03:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347135AbiCKGDT (ORCPT ); Fri, 11 Mar 2022 01:03:19 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34574 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346751AbiCKFzF (ORCPT ); Fri, 11 Mar 2022 00:55:05 -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 724F4FCB73 for ; Thu, 10 Mar 2022 21:53:35 -0800 (PST) Received: by mail-pg1-x549.google.com with SMTP id u10-20020a63df0a000000b0037886b8707bso4197461pgg.23 for ; Thu, 10 Mar 2022 21:53:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=Z6V8RdmCSyTdblUoos+5ZwZ6zYh8wjDJReVbHcS70Jc=; b=KVStH9DBT9gdRdPXz9PoPrxXoSTwjAOirL63AgKrVXc3e6QpZ1xHOjat9qeMktGWkf QBMse04t6K63mWD3hyT7vI8wTakyKozjjggrRK9wAaLYg2fNWWM5VN1KszdHNWXLyOzZ scfjNnXhqztH6rPVS8nAwazxmYP32579aOoQWnDt9bbaSmHKYkxack/oRgWuZfk5vGgZ GidwQxVLoZIS5TGb3BuyQpOud3UBr5zr/KCpP/tVj3xE7h9SIQ4oymc/sbPqYFEZSERt 558pa2Ii4RUjH0++PG/nnpS1PYS6YC4+zM92bsYhReTlP0F1qTk4NbrwTWfSgq7GZazL Qabw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=Z6V8RdmCSyTdblUoos+5ZwZ6zYh8wjDJReVbHcS70Jc=; b=mPzmBsEleEmFgN8kNWgbVu8AW7Fp3myY+SCUaiEx6oe5FvXe/IGgRD3NUFAIUkRlvD ayfXWz5300m6zkIxPJ1RBATGf+Jj0/CJMGcBpnAVXwWDP0IXutyGnzhpEczCCH0CORf8 s5HdyE/+Qx+GL9Kf6ZHeba5J9PdUKmKS9lJ1NmuM+r+B1NPipVGFfrjd4bZ9HS4vmMMK GPebYboh6UHwukwlEOOweD7vS4wv/TiEDzYwcuwAwcTPFy0WzGug82Sw88yyfetdKcqp mwZIChtxREU+WX932r4YvBcWzcN5sP/9aGI5guwPr7S7JhTjZtjh6mJQBNl4w2lmMwfn McBw== X-Gm-Message-State: AOAM533kkW1Khs0bGDN3wkIB9gnNEzp5tkUfrkaTEMEIKHtsuXC3Jqd6 Nz0onFK+gXjNq8U9v9jzDhXihvcSAAsA261gFcmGuNsvdLlt49f85gt5f9rdQg6TzYck+hbKR0H cfWyBaFNyXF7z1zpX3n7I1Zpcgsqr2iyW5WleE3sxey6dGdALN2Lsq8ZmPDmBn2K2msC4nA== X-Google-Smtp-Source: ABdhPJxe1h3t3KsJ0TFrw0i438CJY9gJvu6NuThT5ESkEgqPnrL2RnadG8/hff+/6eVkXQw2wOpnrGW7Ukk= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a05:6a00:134c:b0:4f7:65a6:88b with SMTP id k12-20020a056a00134c00b004f765a6088bmr8395750pfu.79.1646978014574; Thu, 10 Mar 2022 21:53:34 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:39 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-89-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 088/105] KVM: selftests: Convert vgic_init away from vm_create_default_with_vcpus() From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../testing/selftests/kvm/aarch64/vgic_init.c | 79 ++++++++++++------- 1 file changed, 49 insertions(+), 30 deletions(-) diff --git a/tools/testing/selftests/kvm/aarch64/vgic_init.c b/tools/testin= g/selftests/kvm/aarch64/vgic_init.c index f8d41f12bdca..435c4b762335 100644 --- a/tools/testing/selftests/kvm/aarch64/vgic_init.c +++ b/tools/testing/selftests/kvm/aarch64/vgic_init.c @@ -49,19 +49,21 @@ static void guest_code(void) } =20 /* we don't want to assert on run execution, hence that helper */ -static int run_vcpu(struct kvm_vm *vm, uint32_t vcpuid) +static int run_vcpu(struct kvm_vcpu *vcpu) { - ucall_init(vm, NULL); + ucall_init(vcpu->vm, NULL); =20 - return __vcpu_run(vm, vcpuid) ? -errno : 0; + return __vcpu_run(vcpu->vm, vcpu->id) ? -errno : 0; } =20 -static struct vm_gic vm_gic_create_with_vcpus(uint32_t gic_dev_type, uint3= 2_t nr_vcpus) +static struct vm_gic vm_gic_create_with_vcpus(uint32_t gic_dev_type, + uint32_t nr_vcpus, + struct kvm_vcpu *vcpus[]) { struct vm_gic v; =20 v.gic_dev_type =3D gic_dev_type; - v.vm =3D vm_create_default_with_vcpus(nr_vcpus, 0, 0, guest_code, NULL); + v.vm =3D vm_create_with_vcpus(nr_vcpus, guest_code, vcpus); v.gic_fd =3D kvm_create_device(v.vm, gic_dev_type); =20 return v; @@ -305,10 +307,11 @@ static void subtest_v3_redist_regions(struct vm_gic *= v) */ static void test_vgic_then_vcpus(uint32_t gic_dev_type) { + struct kvm_vcpu *vcpus[NR_VCPUS]; struct vm_gic v; int ret, i; =20 - v =3D vm_gic_create_with_vcpus(gic_dev_type, 1); + v =3D vm_gic_create_with_vcpus(gic_dev_type, 1, vcpus); =20 subtest_dist_rdist(&v); =20 @@ -316,7 +319,7 @@ static void test_vgic_then_vcpus(uint32_t gic_dev_type) for (i =3D 1; i < NR_VCPUS; ++i) vm_vcpu_add(v.vm, i, guest_code); =20 - ret =3D run_vcpu(v.vm, 3); + ret =3D run_vcpu(vcpus[3]); TEST_ASSERT(ret =3D=3D -EINVAL, "dist/rdist overlap detected on 1st vcpu = run"); =20 vm_gic_destroy(&v); @@ -325,14 +328,15 @@ static void test_vgic_then_vcpus(uint32_t gic_dev_typ= e) /* All the VCPUs are created before the VGIC KVM device gets initialized */ static void test_vcpus_then_vgic(uint32_t gic_dev_type) { + struct kvm_vcpu *vcpus[NR_VCPUS]; struct vm_gic v; int ret; =20 - v =3D vm_gic_create_with_vcpus(gic_dev_type, NR_VCPUS); + v =3D vm_gic_create_with_vcpus(gic_dev_type, NR_VCPUS, vcpus); =20 subtest_dist_rdist(&v); =20 - ret =3D run_vcpu(v.vm, 3); + ret =3D run_vcpu(vcpus[3]); TEST_ASSERT(ret =3D=3D -EINVAL, "dist/rdist overlap detected on 1st vcpu = run"); =20 vm_gic_destroy(&v); @@ -340,37 +344,38 @@ static void test_vcpus_then_vgic(uint32_t gic_dev_typ= e) =20 static void test_v3_new_redist_regions(void) { + struct kvm_vcpu *vcpus[NR_VCPUS]; void *dummy =3D NULL; struct vm_gic v; uint64_t addr; int ret; =20 - v =3D vm_gic_create_with_vcpus(KVM_DEV_TYPE_ARM_VGIC_V3, NR_VCPUS); + v =3D vm_gic_create_with_vcpus(KVM_DEV_TYPE_ARM_VGIC_V3, NR_VCPUS, vcpus); subtest_v3_redist_regions(&v); kvm_device_attr_set(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_CTRL, KVM_DEV_ARM_VGIC_CTRL_INIT, NULL); =20 - ret =3D run_vcpu(v.vm, 3); + ret =3D run_vcpu(vcpus[3]); TEST_ASSERT(ret =3D=3D -ENXIO, "running without sufficient number of rdis= ts"); vm_gic_destroy(&v); =20 /* step2 */ =20 - v =3D vm_gic_create_with_vcpus(KVM_DEV_TYPE_ARM_VGIC_V3, NR_VCPUS); + v =3D vm_gic_create_with_vcpus(KVM_DEV_TYPE_ARM_VGIC_V3, NR_VCPUS, vcpus); subtest_v3_redist_regions(&v); =20 addr =3D REDIST_REGION_ATTR_ADDR(1, 0x280000, 0, 2); kvm_device_attr_set(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, &addr); =20 - ret =3D run_vcpu(v.vm, 3); + ret =3D run_vcpu(vcpus[3]); TEST_ASSERT(ret =3D=3D -EBUSY, "running without vgic explicit init"); =20 vm_gic_destroy(&v); =20 /* step 3 */ =20 - v =3D vm_gic_create_with_vcpus(KVM_DEV_TYPE_ARM_VGIC_V3, NR_VCPUS); + v =3D vm_gic_create_with_vcpus(KVM_DEV_TYPE_ARM_VGIC_V3, NR_VCPUS, vcpus); subtest_v3_redist_regions(&v); =20 ret =3D __kvm_device_attr_set(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_ADDR, @@ -385,7 +390,7 @@ static void test_v3_new_redist_regions(void) kvm_device_attr_set(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_CTRL, KVM_DEV_ARM_VGIC_CTRL_INIT, NULL); =20 - ret =3D run_vcpu(v.vm, 3); + ret =3D run_vcpu(vcpus[3]); TEST_ASSERT(!ret, "vcpu run"); =20 vm_gic_destroy(&v); @@ -393,26 +398,27 @@ static void test_v3_new_redist_regions(void) =20 static void test_v3_typer_accesses(void) { + struct kvm_vcpu *vcpus[NR_VCPUS]; struct vm_gic v; uint64_t addr; uint32_t val; int ret, i; =20 - v.vm =3D vm_create_default(0, 0, guest_code); + v.vm =3D vm_create_with_one_vcpu(&vcpus[0], guest_code); =20 v.gic_fd =3D kvm_create_device(v.vm, KVM_DEV_TYPE_ARM_VGIC_V3); =20 - vm_vcpu_add(v.vm, 3, guest_code); + vcpus[3] =3D vm_vcpu_add(v.vm, 3, guest_code); =20 ret =3D v3_redist_reg_get(v.gic_fd, 1, GICR_TYPER, &val); TEST_ASSERT(ret && errno =3D=3D EINVAL, "attempting to read GICR_TYPER of= non created vcpu"); =20 - vm_vcpu_add(v.vm, 1, guest_code); + vcpus[1] =3D vm_vcpu_add(v.vm, 1, guest_code); =20 ret =3D v3_redist_reg_get(v.gic_fd, 1, GICR_TYPER, &val); TEST_ASSERT(ret && errno =3D=3D EBUSY, "read GICR_TYPER before GIC initia= lized"); =20 - vm_vcpu_add(v.vm, 2, guest_code); + vcpus[2] =3D vm_vcpu_add(v.vm, 2, guest_code); =20 kvm_device_attr_set(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_CTRL, KVM_DEV_ARM_VGIC_CTRL_INIT, NULL); @@ -460,6 +466,21 @@ static void test_v3_typer_accesses(void) vm_gic_destroy(&v); } =20 +static struct vm_gic vm_gic_v3_create_with_vcpuids(int nr_vcpus, + uint32_t vcpuids[]) +{ + struct vm_gic v; + int i; + + v.vm =3D vm_create_with_vcpus(0, NULL, NULL); + for (i =3D 0; i < nr_vcpus; i++) + vm_vcpu_add(v.vm, vcpuids[i], guest_code); + + v.gic_fd =3D kvm_create_device(v.vm, KVM_DEV_TYPE_ARM_VGIC_V3); + + return v; +} + /** * Test GICR_TYPER last bit with new redist regions * rdist regions #1 and #2 are contiguous @@ -478,9 +499,7 @@ static void test_v3_last_bit_redist_regions(void) uint32_t val; int ret; =20 - v.vm =3D vm_create_default_with_vcpus(6, 0, 0, guest_code, vcpuids); - - v.gic_fd =3D kvm_create_device(v.vm, KVM_DEV_TYPE_ARM_VGIC_V3); + v =3D vm_gic_v3_create_with_vcpuids(ARRAY_SIZE(vcpuids), vcpuids); =20 kvm_device_attr_set(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_CTRL, KVM_DEV_ARM_VGIC_CTRL_INIT, NULL); @@ -527,9 +546,7 @@ static void test_v3_last_bit_single_rdist(void) uint32_t val; int ret; =20 - v.vm =3D vm_create_default_with_vcpus(6, 0, 0, guest_code, vcpuids); - - v.gic_fd =3D kvm_create_device(v.vm, KVM_DEV_TYPE_ARM_VGIC_V3); + v =3D vm_gic_v3_create_with_vcpuids(ARRAY_SIZE(vcpuids), vcpuids); =20 kvm_device_attr_set(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_CTRL, KVM_DEV_ARM_VGIC_CTRL_INIT, NULL); @@ -559,11 +576,12 @@ static void test_v3_last_bit_single_rdist(void) /* Uses the legacy REDIST region API. */ static void test_v3_redist_ipa_range_check_at_vcpu_run(void) { + struct kvm_vcpu *vcpus[NR_VCPUS]; struct vm_gic v; int ret, i; uint64_t addr; =20 - v =3D vm_gic_create_with_vcpus(KVM_DEV_TYPE_ARM_VGIC_V3, 1); + v =3D vm_gic_create_with_vcpus(KVM_DEV_TYPE_ARM_VGIC_V3, 1, vcpus); =20 /* Set space for 3 redists, we have 1 vcpu, so this succeeds. */ addr =3D max_phys_size - (3 * 2 * 0x10000); @@ -576,13 +594,13 @@ static void test_v3_redist_ipa_range_check_at_vcpu_ru= n(void) =20 /* Add the rest of the VCPUs */ for (i =3D 1; i < NR_VCPUS; ++i) - vm_vcpu_add(v.vm, i, guest_code); + vcpus[i] =3D vm_vcpu_add(v.vm, i, guest_code); =20 kvm_device_attr_set(v.gic_fd, KVM_DEV_ARM_VGIC_GRP_CTRL, KVM_DEV_ARM_VGIC_CTRL_INIT, NULL); =20 /* Attempt to run a vcpu without enough redist space. */ - ret =3D run_vcpu(v.vm, 2); + ret =3D run_vcpu(vcpus[2]); TEST_ASSERT(ret && errno =3D=3D EINVAL, "redist base+size above PA range detected on 1st vcpu run"); =20 @@ -591,11 +609,12 @@ static void test_v3_redist_ipa_range_check_at_vcpu_ru= n(void) =20 static void test_v3_its_region(void) { + struct kvm_vcpu *vcpus[NR_VCPUS]; struct vm_gic v; uint64_t addr; int its_fd, ret; =20 - v =3D vm_gic_create_with_vcpus(KVM_DEV_TYPE_ARM_VGIC_V3, NR_VCPUS); + v =3D vm_gic_create_with_vcpus(KVM_DEV_TYPE_ARM_VGIC_V3, NR_VCPUS, vcpus); its_fd =3D kvm_create_device(v.vm, KVM_DEV_TYPE_ARM_VGIC_ITS); =20 addr =3D 0x401000; @@ -639,7 +658,7 @@ int test_kvm_device(uint32_t gic_dev_type) uint32_t other; int ret; =20 - v.vm =3D vm_create_default_with_vcpus(NR_VCPUS, 0, 0, guest_code, NULL); + v.vm =3D vm_create_with_vcpus(NR_VCPUS, guest_code, NULL); =20 /* try to create a non existing KVM device */ ret =3D __kvm_test_create_device(v.vm, 0); --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 9B5CCC433EF for ; Fri, 11 Mar 2022 05:59:44 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346685AbiCKGAl (ORCPT ); Fri, 11 Mar 2022 01:00:41 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34816 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346755AbiCKFzH (ORCPT ); Fri, 11 Mar 2022 00:55:07 -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 E921DFDF90 for ; Thu, 10 Mar 2022 21:53:36 -0800 (PST) Received: by mail-pg1-x54a.google.com with SMTP id 9-20020a630509000000b0037c8607d296so4215923pgf.22 for ; Thu, 10 Mar 2022 21:53:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=fTRgciqd2oM8e2A4aufW48NTHgVD8bRTOiK4pDiyJUo=; b=m5bsNEazzsuwHW0xRT8haw7lzZuXLgZtmFN8xzebFO9bXazVKcIHIoMhymRPrAqpzc j63SRbaasMrPd17YcBx+/PJApTGKMTAKG/kDECofUmvTGUdsY3QHpFgt3HsaI+Ys4UqN AHDKFKEIQgQoBLPHqTh6BpD05E4HaT3EOIEGp5lvnrzEoYvypQW/TBTNhUoEYwyIkYqN JBP2HkuZMcFmAlKOLffXqk5sysRmpqn1dXiUatOGc8drmUnMKMaN24VpgxM1zGOVq/jn baTl9RtY0hJsz1jsU+sgIZwc5tL1z2SU6DqUtvCaqg+QwQDMTBs8MV2LoT/fi6WxI/n3 gzGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=fTRgciqd2oM8e2A4aufW48NTHgVD8bRTOiK4pDiyJUo=; b=ctONNLreUPoEOICc9BrbvMX2uAcmiEA0eIY/8eHruiewGJ1VPZ+XShOzVuPUSjY0Bo Y1Gnx1H2AHCMZIqNWDff2GBGrgfukcvE7Jx2RJFcLQufUSBp8MzFpj9kxQjQAo+75HRB HDpzaIqk7Rf35G7c/8pdeh5xerJBEAP/iGPuoB+rplFsFUunHB34WOwGxCQ1HJvObwSz dqpR3uVBxcCbUWH5qXvJ3qWeEvBoSnzD4ldDvScbTBfjqZxsoqbdl8eCiUnNMZRyTgko GXTiPs2AUPOmjkdcfqnfTUm74nFFspepGO4xek33NPHNIyh7fv46RaBBMs9iqnpXFZEJ 5mPQ== X-Gm-Message-State: AOAM532kgctOCwD25mbXlFEPPDq4u3gvkJSYTt4kOOIc2S0JXihIq5hK 8ov1TfhYm47PuMRkdC2qc+YSiufv5DqJNOxIp35iU4TTSqvJ/KvHzhTvJYeOwJ3YVb5W+JTr8Ln FJAs8TmP+gbnijW0XC0/5TScn7SbjxekTOjm64+uJWmQykzQYSqNNavq+ACq/lrZBqkfuYg== X-Google-Smtp-Source: ABdhPJy6g9iYQAPZVUkq+vp5vislrXjLxDopYT4xNw13R0aEyl1eIeiW0c4oQdnjEZaYB+vz8vpfK+LH+QA= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a05:6a00:a8b:b0:4cd:6030:4df3 with SMTP id b11-20020a056a000a8b00b004cd60304df3mr8461343pfl.40.1646978016360; Thu, 10 Mar 2022 21:53:36 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:40 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-90-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 089/105] KVM: selftests: Convert xapic_ipi_test away from *_VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/x86_64/xapic_ipi_test.c | 48 ++++++++----------- 1 file changed, 20 insertions(+), 28 deletions(-) diff --git a/tools/testing/selftests/kvm/x86_64/xapic_ipi_test.c b/tools/te= sting/selftests/kvm/x86_64/xapic_ipi_test.c index 8b366652be31..4484ee563b18 100644 --- a/tools/testing/selftests/kvm/x86_64/xapic_ipi_test.c +++ b/tools/testing/selftests/kvm/x86_64/xapic_ipi_test.c @@ -39,9 +39,6 @@ /* Default delay between migrate_pages calls (microseconds) */ #define DEFAULT_DELAY_USECS 500000 =20 -#define HALTER_VCPU_ID 0 -#define SENDER_VCPU_ID 1 - /* * Vector for IPI from sender vCPU to halting vCPU. * Value is arbitrary and was chosen for the alternating bit pattern. Any @@ -79,8 +76,7 @@ struct test_data_page { =20 struct thread_params { struct test_data_page *data; - struct kvm_vm *vm; - uint32_t vcpu_id; + struct kvm_vcpu *vcpu; uint64_t *pipis_rcvd; /* host address of ipis_rcvd global */ }; =20 @@ -198,6 +194,7 @@ static void sender_guest_code(struct test_data_page *da= ta) static void *vcpu_thread(void *arg) { struct thread_params *params =3D (struct thread_params *)arg; + struct kvm_vcpu *vcpu =3D params->vcpu; struct ucall uc; int old; int r; @@ -206,17 +203,17 @@ static void *vcpu_thread(void *arg) r =3D pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, &old); TEST_ASSERT(r =3D=3D 0, "pthread_setcanceltype failed on vcpu_id=3D%u with errno=3D%d", - params->vcpu_id, r); + vcpu->id, r); =20 - fprintf(stderr, "vCPU thread running vCPU %u\n", params->vcpu_id); - vcpu_run(params->vm, params->vcpu_id); - exit_reason =3D vcpu_state(params->vm, params->vcpu_id)->exit_reason; + fprintf(stderr, "vCPU thread running vCPU %u\n", vcpu->id); + vcpu_run(vcpu->vm, vcpu->id); + exit_reason =3D vcpu->run->exit_reason; =20 TEST_ASSERT(exit_reason =3D=3D KVM_EXIT_IO, "vCPU %u exited with unexpected exit reason %u-%s, expected KVM_EXIT= _IO", - params->vcpu_id, exit_reason, exit_reason_str(exit_reason)); + vcpu->id, exit_reason, exit_reason_str(exit_reason)); =20 - if (get_ucall(params->vm, params->vcpu_id, &uc) =3D=3D UCALL_ABORT) { + if (get_ucall(vcpu->vm, vcpu->id, &uc) =3D=3D UCALL_ABORT) { TEST_ASSERT(false, "vCPU %u exited with error: %s.\n" "Sending vCPU sent %lu IPIs to halting vCPU\n" @@ -224,7 +221,7 @@ static void *vcpu_thread(void *arg) "Halter TPR=3D%#x PPR=3D%#x LVR=3D%#x\n" "Migrations attempted: %lu\n" "Migrations completed: %lu\n", - params->vcpu_id, (const char *)uc.args[0], + vcpu->id, (const char *)uc.args[0], params->data->ipis_sent, params->data->hlt_count, params->data->wake_count, *params->pipis_rcvd, params->data->halter_tpr, @@ -236,7 +233,7 @@ static void *vcpu_thread(void *arg) return NULL; } =20 -static void cancel_join_vcpu_thread(pthread_t thread, uint32_t vcpu_id) +static void cancel_join_vcpu_thread(pthread_t thread, struct kvm_vcpu *vcp= u) { void *retval; int r; @@ -244,12 +241,12 @@ static void cancel_join_vcpu_thread(pthread_t thread,= uint32_t vcpu_id) r =3D pthread_cancel(thread); TEST_ASSERT(r =3D=3D 0, "pthread_cancel on vcpu_id=3D%d failed with errno=3D%d", - vcpu_id, r); + vcpu->id, r); =20 r =3D pthread_join(thread, &retval); TEST_ASSERT(r =3D=3D 0, "pthread_join on vcpu_id=3D%d failed with errno=3D%d", - vcpu_id, r); + vcpu->id, r); TEST_ASSERT(retval =3D=3D PTHREAD_CANCELED, "expected retval=3D%p, got %p", PTHREAD_CANCELED, retval); @@ -415,34 +412,30 @@ int main(int argc, char *argv[]) if (delay_usecs <=3D 0) delay_usecs =3D DEFAULT_DELAY_USECS; =20 - vm =3D vm_create_default(HALTER_VCPU_ID, 0, halter_guest_code); - params[0].vm =3D vm; - params[1].vm =3D vm; + vm =3D vm_create_with_one_vcpu(¶ms[0].vcpu, halter_guest_code); =20 vm_init_descriptor_tables(vm); - vcpu_init_descriptor_tables(vm, HALTER_VCPU_ID); + vcpu_init_descriptor_tables(vm, params[0].vcpu->id); vm_install_exception_handler(vm, IPI_VECTOR, guest_ipi_handler); =20 virt_pg_map(vm, APIC_DEFAULT_GPA, APIC_DEFAULT_GPA); =20 - vm_vcpu_add(vm, SENDER_VCPU_ID, sender_guest_code); + params[1].vcpu =3D vm_vcpu_add(vm, 1, sender_guest_code); =20 test_data_page_vaddr =3D vm_vaddr_alloc_page(vm); - data =3D - (struct test_data_page *)addr_gva2hva(vm, test_data_page_vaddr); + data =3D addr_gva2hva(vm, test_data_page_vaddr); memset(data, 0, sizeof(*data)); params[0].data =3D data; params[1].data =3D data; =20 - vcpu_args_set(vm, HALTER_VCPU_ID, 1, test_data_page_vaddr); - vcpu_args_set(vm, SENDER_VCPU_ID, 1, test_data_page_vaddr); + vcpu_args_set(vm, params[0].vcpu->id, 1, test_data_page_vaddr); + vcpu_args_set(vm, params[1].vcpu->id, 1, test_data_page_vaddr); =20 pipis_rcvd =3D (uint64_t *)addr_gva2hva(vm, (uint64_t)&ipis_rcvd); params[0].pipis_rcvd =3D pipis_rcvd; params[1].pipis_rcvd =3D pipis_rcvd; =20 /* Start halter vCPU thread and wait for it to execute first HLT. */ - params[0].vcpu_id =3D HALTER_VCPU_ID; r =3D pthread_create(&threads[0], NULL, vcpu_thread, ¶ms[0]); TEST_ASSERT(r =3D=3D 0, "pthread_create halter failed errno=3D%d", errno); @@ -462,7 +455,6 @@ int main(int argc, char *argv[]) "Halter vCPU thread reported its APIC ID: %u after %d seconds.\n", data->halter_apic_id, wait_secs); =20 - params[1].vcpu_id =3D SENDER_VCPU_ID; r =3D pthread_create(&threads[1], NULL, vcpu_thread, ¶ms[1]); TEST_ASSERT(r =3D=3D 0, "pthread_create sender failed errno=3D%d", errno); =20 @@ -478,8 +470,8 @@ int main(int argc, char *argv[]) /* * Cancel threads and wait for them to stop. */ - cancel_join_vcpu_thread(threads[0], HALTER_VCPU_ID); - cancel_join_vcpu_thread(threads[1], SENDER_VCPU_ID); + cancel_join_vcpu_thread(threads[0], params[0].vcpu); + cancel_join_vcpu_thread(threads[1], params[1].vcpu); =20 fprintf(stderr, "Test successful after running for %d seconds.\n" --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 6CA11C433EF for ; Fri, 11 Mar 2022 06:00:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1343894AbiCKGBE (ORCPT ); Fri, 11 Mar 2022 01:01:04 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34682 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345663AbiCKFzI (ORCPT ); Fri, 11 Mar 2022 00:55:08 -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 9F873FDFB7 for ; Thu, 10 Mar 2022 21:53:38 -0800 (PST) Received: by mail-pl1-x649.google.com with SMTP id j9-20020a170903024900b0015195e68490so3987576plh.19 for ; Thu, 10 Mar 2022 21:53:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=aSZw3cVRwIZyv3OvfWBlsLbpqJYb1+qc9avxdMzlJBU=; b=AKo44+76eji6YCYGKYs3dEqrNoTpgl2D7pdtuusQ8AGncsdnr2qTq1U9hsrB8ZqNGo paywt59Dlcun6hMi1PFHufP2MY+ViGoX4j2nTEf3pW08GARVjmFH/WTXKNcqj4GllfHW u9ysiY5+TbhRHwmA3sYx+ceWmmPeXlqEUXdLBh632M9dL7F+EYg+VUbb6N43ABuM2Z4q q0XtRlsEC3EaoIBKU3GcNMF9Qb3EBRNOvLDwvgQ4T45r91gp2ipC3lwAkEolWlGhc/XO UA5o9a6FbRDRMjs9fV/OJWqPdV9+M8U/rLGprOAPl7cPrXzqXsTAneuwe8chtbMuYevu 3mzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=aSZw3cVRwIZyv3OvfWBlsLbpqJYb1+qc9avxdMzlJBU=; b=ad9qEJdDX/NQN9e585TWPEslB+oJeHdU7//bXrJmheeyalAaBdkgjBAYstWieeG3QK WVh0M/esra7wPuXiwcgyyDfeb+Vl3A8oQnzqCCrrMI47pShZtXL87WaqIJXVMB+ZKG6T A2daJBYE8hMNxXSoFFMl6Vmk8E++MYGHYYb2Onc286IEeSuasBZylqGHlTWyO8ogjEJ/ 7KJP12euJKT49gEAaWrwr43y1TmVrRh/fbB16apSgM5urGJ0f+u4yBArG1YRCR4jyOs/ GDqcEMLiW3rovwofCT0CIwADAKkYqnrsOuetnNJo2JD2eNfiM/qrKf+R9Efj3B/M7TDA eaNg== X-Gm-Message-State: AOAM5322Yu55x5AOyHxuzmkUvuQLieHKh45xTbtCfDTNlB6BpLIFNOST 2XyouDqX6nDfmKZapl3jFMUaS06D5EkiLxx0rjudOjW3KyCGHyBEzsu+nrYDAiWCQPSyw8L7xly jElvCMVWKjVSYt7AHwDc7+rK8NBLv0aehx3nASW9TKy4VNIFeZxuSX2rE6ZdhoapBGMeDJg== X-Google-Smtp-Source: ABdhPJwBlXVWBzKNRqmkAWJr8zwTqftT5bJDqC8Ws/HaXSDB6WzDju7WmQNnjsHoG3z2TuHUKceMohkjsrA= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a05:6a00:23c5:b0:4f7:b50:e5f3 with SMTP id g5-20020a056a0023c500b004f70b50e5f3mr8777882pfc.36.1646978017920; Thu, 10 Mar 2022 21:53:37 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:41 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-91-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 090/105] KVM: selftests: Convert sync_regs_test away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/s390x/sync_regs_test.c | 37 +++++++++---------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/tools/testing/selftests/kvm/s390x/sync_regs_test.c b/tools/tes= ting/selftests/kvm/s390x/sync_regs_test.c index caf7b8859a94..bf52cabeaed6 100644 --- a/tools/testing/selftests/kvm/s390x/sync_regs_test.c +++ b/tools/testing/selftests/kvm/s390x/sync_regs_test.c @@ -22,8 +22,6 @@ #include "kvm_util.h" #include "diag318_test_handler.h" =20 -#define VCPU_ID 5 - static void guest_code(void) { /* @@ -76,6 +74,7 @@ static void compare_sregs(struct kvm_sregs *left, struct = kvm_sync_regs *right) =20 int main(int argc, char *argv[]) { + struct kvm_vcpu *vcpu; struct kvm_vm *vm; struct kvm_run *run; struct kvm_regs regs; @@ -92,43 +91,43 @@ int main(int argc, char *argv[]) } =20 /* Create VM */ - vm =3D vm_create_default(VCPU_ID, 0, guest_code); + vm =3D vm_create_with_one_vcpu(&vcpu, guest_code); =20 - run =3D vcpu_state(vm, VCPU_ID); + run =3D vcpu->run; =20 /* Request reading invalid register set from VCPU. */ run->kvm_valid_regs =3D INVALID_SYNC_FIELD; - rv =3D _vcpu_run(vm, VCPU_ID); + rv =3D _vcpu_run(vm, vcpu->id); TEST_ASSERT(rv < 0 && errno =3D=3D EINVAL, "Invalid kvm_valid_regs did not cause expected KVM_RUN error: %d\n", rv); - vcpu_state(vm, VCPU_ID)->kvm_valid_regs =3D 0; + run->kvm_valid_regs =3D 0; =20 run->kvm_valid_regs =3D INVALID_SYNC_FIELD | TEST_SYNC_FIELDS; - rv =3D _vcpu_run(vm, VCPU_ID); + rv =3D _vcpu_run(vm, vcpu->id); TEST_ASSERT(rv < 0 && errno =3D=3D EINVAL, "Invalid kvm_valid_regs did not cause expected KVM_RUN error: %d\n", rv); - vcpu_state(vm, VCPU_ID)->kvm_valid_regs =3D 0; + run->kvm_valid_regs =3D 0; =20 /* Request setting invalid register set into VCPU. */ run->kvm_dirty_regs =3D INVALID_SYNC_FIELD; - rv =3D _vcpu_run(vm, VCPU_ID); + rv =3D _vcpu_run(vm, vcpu->id); TEST_ASSERT(rv < 0 && errno =3D=3D EINVAL, "Invalid kvm_dirty_regs did not cause expected KVM_RUN error: %d\n", rv); - vcpu_state(vm, VCPU_ID)->kvm_dirty_regs =3D 0; + run->kvm_dirty_regs =3D 0; =20 run->kvm_dirty_regs =3D INVALID_SYNC_FIELD | TEST_SYNC_FIELDS; - rv =3D _vcpu_run(vm, VCPU_ID); + rv =3D _vcpu_run(vm, vcpu->id); TEST_ASSERT(rv < 0 && errno =3D=3D EINVAL, "Invalid kvm_dirty_regs did not cause expected KVM_RUN error: %d\n", rv); - vcpu_state(vm, VCPU_ID)->kvm_dirty_regs =3D 0; + run->kvm_dirty_regs =3D 0; =20 /* Request and verify all valid register sets. */ run->kvm_valid_regs =3D TEST_SYNC_FIELDS; - rv =3D _vcpu_run(vm, VCPU_ID); + rv =3D _vcpu_run(vm, vcpu->id); TEST_ASSERT(rv =3D=3D 0, "vcpu_run failed: %d\n", rv); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_S390_SIEIC, "Unexpected exit reason: %u (%s)\n", @@ -141,10 +140,10 @@ int main(int argc, char *argv[]) run->s390_sieic.icptcode, run->s390_sieic.ipa, run->s390_sieic.ipb); =20 - vcpu_regs_get(vm, VCPU_ID, ®s); + vcpu_regs_get(vm, vcpu->id, ®s); compare_regs(®s, &run->s.regs); =20 - vcpu_sregs_get(vm, VCPU_ID, &sregs); + vcpu_sregs_get(vm, vcpu->id, &sregs); compare_sregs(&sregs, &run->s.regs); =20 /* Set and verify various register values */ @@ -159,7 +158,7 @@ int main(int argc, char *argv[]) run->kvm_dirty_regs |=3D KVM_SYNC_DIAG318; } =20 - rv =3D _vcpu_run(vm, VCPU_ID); + rv =3D _vcpu_run(vm, vcpu->id); TEST_ASSERT(rv =3D=3D 0, "vcpu_run failed: %d\n", rv); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_S390_SIEIC, "Unexpected exit reason: %u (%s)\n", @@ -175,10 +174,10 @@ int main(int argc, char *argv[]) "diag318 sync regs value incorrect 0x%llx.", run->s.regs.diag318); =20 - vcpu_regs_get(vm, VCPU_ID, ®s); + vcpu_regs_get(vm, vcpu->id, ®s); compare_regs(®s, &run->s.regs); =20 - vcpu_sregs_get(vm, VCPU_ID, &sregs); + vcpu_sregs_get(vm, vcpu->id, &sregs); compare_sregs(&sregs, &run->s.regs); =20 /* Clear kvm_dirty_regs bits, verify new s.regs values are @@ -188,7 +187,7 @@ int main(int argc, char *argv[]) run->kvm_dirty_regs =3D 0; run->s.regs.gprs[11] =3D 0xDEADBEEF; run->s.regs.diag318 =3D 0x4B1D; - rv =3D _vcpu_run(vm, VCPU_ID); + rv =3D _vcpu_run(vm, vcpu->id); TEST_ASSERT(rv =3D=3D 0, "vcpu_run failed: %d\n", rv); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_S390_SIEIC, "Unexpected exit reason: %u (%s)\n", --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 75809C433F5 for ; Fri, 11 Mar 2022 06:00:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346603AbiCKGBT (ORCPT ); Fri, 11 Mar 2022 01:01:19 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34680 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240807AbiCKFzI (ORCPT ); Fri, 11 Mar 2022 00:55:08 -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 6E6FDF7459 for ; Thu, 10 Mar 2022 21:53:40 -0800 (PST) Received: by mail-pj1-x1049.google.com with SMTP id s12-20020a17090a13cc00b001bee1e1677fso4726431pjf.0 for ; Thu, 10 Mar 2022 21:53:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=iey8L3Z4CR9iUjbvcUtJbA1o/xGa5avmZpYhOaewg5k=; b=A1dmX2Sczyy/Iy0SXBak7gDNlvN06zb3uUAx0jkRGFZOS3tTeq6Z4zkNvd3Lbp7Yke nqOUT4TEB7Q7/27tXhQVtnYCigZYGb4CDNVMhiSTs7N9nZKdngYHNqj2T2Et7Zm4g6Of 2ve1lg9Dl3gj/kfgPYqtCF3o3MSjp1zXE9cGzBV8DSxF2Fs9tfG9ScAaaZhMCTa3Cw2g /NBDuNtrS1uWxMPD0ZqaGlvoV+Vtck+ATb+LjrEV/LT4VNUyZxDT2/sFcNYyUYFIXIZz URAChJR6kPKIzvcDFK3Dl3w168eYRQtARb0AhKoBNBeO388YNXcjCmVjp2FI9Hy7n1CN VwdQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=iey8L3Z4CR9iUjbvcUtJbA1o/xGa5avmZpYhOaewg5k=; b=hYTsDMc9+P7AUJ41nFpkO/Xy+XSBBxb/syzwBuYVOyyJI4wo+yd+5FJRg8N3Hnp+gQ 65NZ5nKfPGhGzD8IW5+wa01F/OC3N9fMeuquIL+NjXTZsGOSWgVmZB/13gUBr2TUxZ/M nMtyoiWBAoHdkk5S34LzEhfAbsQt2lTNjbp0mPT/xsUcXTedH77n+Ij0IW+985D9gZK5 6fksaWNxWElOH/i/RawCVeWfGCcyvJvUxjkRCC4+1PvVlpRsKJ4z08IkIQFVDTzmJlVM ymORTjPTA0hI/2kKKk5nQiX9+y+fPJMJMAU+9zSsj5wvp5hkFajsFk3hfo6eZW2okQS1 uHzw== X-Gm-Message-State: AOAM530S3QpR6SaSpjDJoIx9bHaVn2+3uvwNzEDDXYIjrvkrg2ppWqWN bdIp1zDgJHKJHcrI8ypBPBllgb4aQZO6Alvl8d5zexnQPIzd+HrKyCUidEtDS/PF/ncXuvhlo+F LKPo2ADVyxREePeSz2DFrhJKjBz8dot63vqAqZK/RBLfkBJbMwImQpZc5tZ6cwV7FwIvE3A== X-Google-Smtp-Source: ABdhPJxCL3Y6XTQqCNwxdfb9s98MT8i7whK+wve7UosLI538D9akwt09VmhT8uS3Xw6jYse2nXnxl9En3u8= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:90b:4d81:b0:1bf:8ce4:4f51 with SMTP id oj1-20020a17090b4d8100b001bf8ce44f51mr461827pjb.0.1646978019527; Thu, 10 Mar 2022 21:53:39 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:42 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-92-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 091/105] KVM: selftests: Convert resets away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- tools/testing/selftests/kvm/s390x/resets.c | 137 ++++++++++++--------- 1 file changed, 77 insertions(+), 60 deletions(-) diff --git a/tools/testing/selftests/kvm/s390x/resets.c b/tools/testing/sel= ftests/kvm/s390x/resets.c index cc4b7c86d69f..37e375729a39 100644 --- a/tools/testing/selftests/kvm/s390x/resets.c +++ b/tools/testing/selftests/kvm/s390x/resets.c @@ -13,14 +13,12 @@ #include "test_util.h" #include "kvm_util.h" =20 -#define VCPU_ID 3 #define LOCAL_IRQS 32 =20 -struct kvm_s390_irq buf[VCPU_ID + LOCAL_IRQS]; +#define ARBITRARY_NON_ZERO_VCPU_ID 3 + +struct kvm_s390_irq buf[ARBITRARY_NON_ZERO_VCPU_ID + LOCAL_IRQS]; =20 -struct kvm_vm *vm; -struct kvm_run *run; -struct kvm_sync_regs *sync_regs; static uint8_t regs_null[512]; =20 static void guest_code_initial(void) @@ -58,25 +56,25 @@ static void guest_code_initial(void) ); } =20 -static void test_one_reg(uint64_t id, uint64_t value) +static void test_one_reg(struct kvm_vcpu *vcpu, uint64_t id, uint64_t valu= e) { struct kvm_one_reg reg; uint64_t eval_reg; =20 reg.addr =3D (uintptr_t)&eval_reg; reg.id =3D id; - vcpu_get_reg(vm, VCPU_ID, ®); + vcpu_get_reg(vcpu->vm, vcpu->id, ®); TEST_ASSERT(eval_reg =3D=3D value, "value =3D=3D 0x%lx", value); } =20 -static void assert_noirq(void) +static void assert_noirq(struct kvm_vcpu *vcpu) { struct kvm_s390_irq_state irq_state; int irqs; =20 irq_state.len =3D sizeof(buf); irq_state.buf =3D (unsigned long)buf; - irqs =3D __vcpu_ioctl(vm, VCPU_ID, KVM_S390_GET_IRQ_STATE, &irq_state); + irqs =3D __vcpu_ioctl(vcpu->vm, vcpu->id, KVM_S390_GET_IRQ_STATE, &irq_st= ate); /* * irqs contains the number of retrieved interrupts. Any interrupt * (notably, the emergency call interrupt we have injected) should @@ -86,19 +84,20 @@ static void assert_noirq(void) TEST_ASSERT(!irqs, "IRQ pending"); } =20 -static void assert_clear(void) +static void assert_clear(struct kvm_vcpu *vcpu) { + struct kvm_sync_regs *sync_regs =3D &vcpu->run->s.regs; struct kvm_sregs sregs; struct kvm_regs regs; struct kvm_fpu fpu; =20 - vcpu_regs_get(vm, VCPU_ID, ®s); + vcpu_regs_get(vcpu->vm, vcpu->id, ®s); TEST_ASSERT(!memcmp(®s.gprs, regs_null, sizeof(regs.gprs)), "grs =3D= =3D 0"); =20 - vcpu_sregs_get(vm, VCPU_ID, &sregs); + vcpu_sregs_get(vcpu->vm, vcpu->id, &sregs); TEST_ASSERT(!memcmp(&sregs.acrs, regs_null, sizeof(sregs.acrs)), "acrs = =3D=3D 0"); =20 - vcpu_fpu_get(vm, VCPU_ID, &fpu); + vcpu_fpu_get(vcpu->vm, vcpu->id, &fpu); TEST_ASSERT(!memcmp(&fpu.fprs, regs_null, sizeof(fpu.fprs)), "fprs =3D=3D= 0"); =20 /* sync regs */ @@ -112,8 +111,10 @@ static void assert_clear(void) "vrs0-15 =3D=3D 0 (sync_regs)"); } =20 -static void assert_initial_noclear(void) +static void assert_initial_noclear(struct kvm_vcpu *vcpu) { + struct kvm_sync_regs *sync_regs =3D &vcpu->run->s.regs; + TEST_ASSERT(sync_regs->gprs[0] =3D=3D 0xffff000000000000UL, "gpr0 =3D=3D 0xffff000000000000 (sync_regs)"); TEST_ASSERT(sync_regs->gprs[1] =3D=3D 0x0000555500000000UL, @@ -127,13 +128,14 @@ static void assert_initial_noclear(void) TEST_ASSERT(sync_regs->acrs[9] =3D=3D 1, "ar9 =3D=3D 1 (sync_regs)"); } =20 -static void assert_initial(void) +static void assert_initial(struct kvm_vcpu *vcpu) { + struct kvm_sync_regs *sync_regs =3D &vcpu->run->s.regs; struct kvm_sregs sregs; struct kvm_fpu fpu; =20 /* KVM_GET_SREGS */ - vcpu_sregs_get(vm, VCPU_ID, &sregs); + vcpu_sregs_get(vcpu->vm, vcpu->id, &sregs); TEST_ASSERT(sregs.crs[0] =3D=3D 0xE0UL, "cr0 =3D=3D 0xE0 (KVM_GET_SREGS)"= ); TEST_ASSERT(sregs.crs[14] =3D=3D 0xC2000000UL, "cr14 =3D=3D 0xC2000000 (KVM_GET_SREGS)"); @@ -156,36 +158,38 @@ static void assert_initial(void) TEST_ASSERT(sync_regs->gbea =3D=3D 1, "gbea =3D=3D 1 (sync_regs)"); =20 /* kvm_run */ - TEST_ASSERT(run->psw_addr =3D=3D 0, "psw_addr =3D=3D 0 (kvm_run)"); - TEST_ASSERT(run->psw_mask =3D=3D 0, "psw_mask =3D=3D 0 (kvm_run)"); + TEST_ASSERT(vcpu->run->psw_addr =3D=3D 0, "psw_addr =3D=3D 0 (kvm_run)"); + TEST_ASSERT(vcpu->run->psw_mask =3D=3D 0, "psw_mask =3D=3D 0 (kvm_run)"); =20 - vcpu_fpu_get(vm, VCPU_ID, &fpu); + vcpu_fpu_get(vcpu->vm, vcpu->id, &fpu); TEST_ASSERT(!fpu.fpc, "fpc =3D=3D 0"); =20 - test_one_reg(KVM_REG_S390_GBEA, 1); - test_one_reg(KVM_REG_S390_PP, 0); - test_one_reg(KVM_REG_S390_TODPR, 0); - test_one_reg(KVM_REG_S390_CPU_TIMER, 0); - test_one_reg(KVM_REG_S390_CLOCK_COMP, 0); + test_one_reg(vcpu, KVM_REG_S390_GBEA, 1); + test_one_reg(vcpu, KVM_REG_S390_PP, 0); + test_one_reg(vcpu, KVM_REG_S390_TODPR, 0); + test_one_reg(vcpu, KVM_REG_S390_CPU_TIMER, 0); + test_one_reg(vcpu, KVM_REG_S390_CLOCK_COMP, 0); } =20 -static void assert_normal_noclear(void) +static void assert_normal_noclear(struct kvm_vcpu *vcpu) { + struct kvm_sync_regs *sync_regs =3D &vcpu->run->s.regs; + TEST_ASSERT(sync_regs->crs[2] =3D=3D 0x10, "cr2 =3D=3D 10 (sync_regs)"); TEST_ASSERT(sync_regs->crs[8] =3D=3D 1, "cr10 =3D=3D 1 (sync_regs)"); TEST_ASSERT(sync_regs->crs[10] =3D=3D 1, "cr10 =3D=3D 1 (sync_regs)"); TEST_ASSERT(sync_regs->crs[11] =3D=3D -1, "cr11 =3D=3D -1 (sync_regs)"); } =20 -static void assert_normal(void) +static void assert_normal(struct kvm_vcpu *vcpu) { - test_one_reg(KVM_REG_S390_PFTOKEN, KVM_S390_PFAULT_TOKEN_INVALID); - TEST_ASSERT(sync_regs->pft =3D=3D KVM_S390_PFAULT_TOKEN_INVALID, + test_one_reg(vcpu, KVM_REG_S390_PFTOKEN, KVM_S390_PFAULT_TOKEN_INVALID); + TEST_ASSERT(vcpu->run->s.regs.pft =3D=3D KVM_S390_PFAULT_TOKEN_INVALID, "pft =3D=3D 0xff..... (sync_regs)"); - assert_noirq(); + assert_noirq(vcpu); } =20 -static void inject_irq(int cpu_id) +static void inject_irq(struct kvm_vcpu *vcpu) { struct kvm_s390_irq_state irq_state; struct kvm_s390_irq *irq =3D &buf[0]; @@ -195,73 +199,86 @@ static void inject_irq(int cpu_id) irq_state.len =3D sizeof(struct kvm_s390_irq); irq_state.buf =3D (unsigned long)buf; irq->type =3D KVM_S390_INT_EMERGENCY; - irq->u.emerg.code =3D cpu_id; - irqs =3D __vcpu_ioctl(vm, cpu_id, KVM_S390_SET_IRQ_STATE, &irq_state); + irq->u.emerg.code =3D vcpu->id; + irqs =3D __vcpu_ioctl(vcpu->vm, vcpu->id, KVM_S390_SET_IRQ_STATE, &irq_st= ate); TEST_ASSERT(irqs >=3D 0, "Error injecting EMERGENCY IRQ errno %d\n", errn= o); } =20 +static struct kvm_vm *create_vm(struct kvm_vcpu **vcpu) +{ + struct kvm_vm *vm; + + vm =3D vm_create_with_vcpus(0, NULL, NULL); + + *vcpu =3D vm_vcpu_add(vm, ARBITRARY_NON_ZERO_VCPU_ID, guest_code_initial); + + return vm; +} + static void test_normal(void) { + struct kvm_vcpu *vcpu; + struct kvm_vm *vm; + pr_info("Testing normal reset\n"); - /* Create VM */ - vm =3D vm_create_default(VCPU_ID, 0, guest_code_initial); - run =3D vcpu_state(vm, VCPU_ID); - sync_regs =3D &run->s.regs; + vm =3D create_vm(&vcpu); =20 - vcpu_run(vm, VCPU_ID); + vcpu_run(vm, vcpu->id); =20 - inject_irq(VCPU_ID); + inject_irq(vcpu); =20 - vcpu_ioctl(vm, VCPU_ID, KVM_S390_NORMAL_RESET, 0); + vcpu_ioctl(vm, vcpu->id, KVM_S390_NORMAL_RESET, 0); =20 /* must clears */ - assert_normal(); + assert_normal(vcpu); /* must not clears */ - assert_normal_noclear(); - assert_initial_noclear(); + assert_normal_noclear(vcpu); + assert_initial_noclear(vcpu); =20 kvm_vm_free(vm); } =20 static void test_initial(void) { + struct kvm_vcpu *vcpu; + struct kvm_vm *vm; + pr_info("Testing initial reset\n"); - vm =3D vm_create_default(VCPU_ID, 0, guest_code_initial); - run =3D vcpu_state(vm, VCPU_ID); - sync_regs =3D &run->s.regs; + vm =3D create_vm(&vcpu); =20 - vcpu_run(vm, VCPU_ID); + vcpu_run(vm, vcpu->id); =20 - inject_irq(VCPU_ID); + inject_irq(vcpu); =20 - vcpu_ioctl(vm, VCPU_ID, KVM_S390_INITIAL_RESET, 0); + vcpu_ioctl(vm, vcpu->id, KVM_S390_INITIAL_RESET, 0); =20 /* must clears */ - assert_normal(); - assert_initial(); + assert_normal(vcpu); + assert_initial(vcpu); /* must not clears */ - assert_initial_noclear(); + assert_initial_noclear(vcpu); =20 kvm_vm_free(vm); } =20 static void test_clear(void) { + struct kvm_vcpu *vcpu; + struct kvm_vm *vm; + pr_info("Testing clear reset\n"); - vm =3D vm_create_default(VCPU_ID, 0, guest_code_initial); - run =3D vcpu_state(vm, VCPU_ID); - sync_regs =3D &run->s.regs; + vm =3D create_vm(&vcpu); =20 - vcpu_run(vm, VCPU_ID); + vcpu_run(vm, vcpu->id); =20 - inject_irq(VCPU_ID); + inject_irq(vcpu); =20 - vcpu_ioctl(vm, VCPU_ID, KVM_S390_CLEAR_RESET, 0); + vcpu_ioctl(vm, vcpu->id, KVM_S390_CLEAR_RESET, 0); =20 /* must clears */ - assert_normal(); - assert_initial(); - assert_clear(); + assert_normal(vcpu); + assert_initial(vcpu); + assert_clear(vcpu); =20 kvm_vm_free(vm); } --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 E7C34C433F5 for ; Fri, 11 Mar 2022 05:59:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345199AbiCKGAx (ORCPT ); Fri, 11 Mar 2022 01:00:53 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34874 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346688AbiCKFzI (ORCPT ); Fri, 11 Mar 2022 00:55:08 -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 E4136FFF9C for ; Thu, 10 Mar 2022 21:53:41 -0800 (PST) Received: by mail-pl1-x649.google.com with SMTP id y3-20020a1709029b8300b0014c8bcb70a1so4019570plp.3 for ; Thu, 10 Mar 2022 21:53:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=3kN0MYjfZR0BF6JbBsye3XJksluYj8f6Xh8iEcuCoNk=; b=Al1dQ7JRLtGWo/GJ2RefXVayagFQinXXM6EvQUf/l3Sahfl1bT4v6P/Pxr0mtssCKK 6WyaL8H24o0nqZQEVAr1KC8YdSXT3JXLO5PwHs8jT7M+oJrRSKKsblCDeRd/ZjlTO6tJ h/lT2Syp/xbV4f+SgxZSRCE+kERoPQ+IBA/rCD/Au9P3G2hhvCBFv7bZBZm+16Wu4PMe 4h4X42/2LkSc/0/ldSaxikunEb8hfdSM+8cmk4T0KOtVp7Hfy5xqmY0PDpYPNn/kZxI/ 5dSjJCKCcl4Y4gYUHYnn2TNgPhA+TCTMbdrLnx0zMw1j6s8SDYOZIqxRsP9ECI+Mgg6B 8H0Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=3kN0MYjfZR0BF6JbBsye3XJksluYj8f6Xh8iEcuCoNk=; b=jYA3As/SGavdM045VHWmVhl2IPwA9gZ+2uQvN1tUmH1/8IKdXbo6NtQcVdjZWrNk3y gNkwsgEnRVcrXK1/UsY1XykLrkS2ggx4IY63Ea3ejgllGGLpI66Ou2YVv4MWCg63Bgnq NsWVj/R8OUbbK9SSUZITKmC+U8OWRH4k9zEyXAClE3rWcCPcWeLefuG2Kwibn6FB9RQq pLVx+b8HFtn0DmToqqwy25A4Ag8jPlCXanPLCY8CF4CjrIwno8ibwtKHaBnsvtvYO+Tn JMcwSmtWlsuANozg7IHXdV5EaG5LPJE1D5yjvPjC1gS6QSwMT1hmK3ZWiROebU7yAQFg g2ww== X-Gm-Message-State: AOAM530Uf9CdQz3TOR6ICA/TMHlE26dytBn9Mmykk6YwpxOaO1zsALKu XKL2CsEGFtCEe8FsqKLXyS5I8C7qmt/ifka9wS3U1jLwwk/MHxFYqFdFJEcdKBcfF6qLqufmdcq nzK7K5WfQTao+6lziTEavhrNJ+Az1F3Zmqc+Ha3/G44FzbWQG+5Ex8tcgyRy9gEpM/n8G7g== X-Google-Smtp-Source: ABdhPJxRcyBVNMtn377xng1PjvGXjhHyMQLleIdIKIJ9OG5at0dMqPIfAvhWDyUELyH9qerIRwgztYvAmYI= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a62:7bc4:0:b0:4f6:aaa1:91f8 with SMTP id w187-20020a627bc4000000b004f6aaa191f8mr8704511pfc.48.1646978021357; Thu, 10 Mar 2022 21:53:41 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:43 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-93-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 092/105] KVM: selftests: Convert memop away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- tools/testing/selftests/kvm/s390x/memop.c | 31 +++++++++++------------ 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/tools/testing/selftests/kvm/s390x/memop.c b/tools/testing/self= tests/kvm/s390x/memop.c index 460799cc2098..a09b1b654d7f 100644 --- a/tools/testing/selftests/kvm/s390x/memop.c +++ b/tools/testing/selftests/kvm/s390x/memop.c @@ -13,8 +13,6 @@ #include "test_util.h" #include "kvm_util.h" =20 -#define VCPU_ID 1 - static uint8_t mem1[65536]; static uint8_t mem2[65536]; =20 @@ -31,6 +29,7 @@ static void guest_code(void) =20 int main(int argc, char *argv[]) { + struct kvm_vcpu *vcpu; struct kvm_vm *vm; struct kvm_run *run; struct kvm_s390_mem_op ksmo; @@ -47,8 +46,8 @@ int main(int argc, char *argv[]) maxsize =3D sizeof(mem1); =20 /* Create VM */ - vm =3D vm_create_default(VCPU_ID, 0, guest_code); - run =3D vcpu_state(vm, VCPU_ID); + vm =3D vm_create_with_one_vcpu(&vcpu, guest_code); + run =3D vcpu->run; =20 for (i =3D 0; i < sizeof(mem1); i++) mem1[i] =3D i * i + i; @@ -60,10 +59,10 @@ int main(int argc, char *argv[]) ksmo.op =3D KVM_S390_MEMOP_LOGICAL_WRITE; ksmo.buf =3D (uintptr_t)mem1; ksmo.ar =3D 0; - vcpu_ioctl(vm, VCPU_ID, KVM_S390_MEM_OP, &ksmo); + vcpu_ioctl(vm, vcpu->id, KVM_S390_MEM_OP, &ksmo); =20 /* Let the guest code copy the first array to the second */ - vcpu_run(vm, VCPU_ID); + vcpu_run(vm, vcpu->id); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_S390_SIEIC, "Unexpected exit reason: %u (%s)\n", run->exit_reason, @@ -78,7 +77,7 @@ int main(int argc, char *argv[]) ksmo.op =3D KVM_S390_MEMOP_LOGICAL_READ; ksmo.buf =3D (uintptr_t)mem2; ksmo.ar =3D 0; - vcpu_ioctl(vm, VCPU_ID, KVM_S390_MEM_OP, &ksmo); + vcpu_ioctl(vm, vcpu->id, KVM_S390_MEM_OP, &ksmo); =20 TEST_ASSERT(!memcmp(mem1, mem2, maxsize), "Memory contents do not match!"); @@ -90,7 +89,7 @@ int main(int argc, char *argv[]) ksmo.op =3D KVM_S390_MEMOP_LOGICAL_WRITE; ksmo.buf =3D (uintptr_t)mem1; ksmo.ar =3D 0; - rv =3D __vcpu_ioctl(vm, VCPU_ID, KVM_S390_MEM_OP, &ksmo); + rv =3D __vcpu_ioctl(vm, vcpu->id, KVM_S390_MEM_OP, &ksmo); TEST_ASSERT(rv =3D=3D -1 && errno =3D=3D E2BIG, "ioctl allows insane size= s"); =20 /* Zero size: */ @@ -100,7 +99,7 @@ int main(int argc, char *argv[]) ksmo.op =3D KVM_S390_MEMOP_LOGICAL_WRITE; ksmo.buf =3D (uintptr_t)mem1; ksmo.ar =3D 0; - rv =3D __vcpu_ioctl(vm, VCPU_ID, KVM_S390_MEM_OP, &ksmo); + rv =3D __vcpu_ioctl(vm, vcpu->id, KVM_S390_MEM_OP, &ksmo); TEST_ASSERT(rv =3D=3D -1 && (errno =3D=3D EINVAL || errno =3D=3D ENOMEM), "ioctl allows 0 as size"); =20 @@ -111,7 +110,7 @@ int main(int argc, char *argv[]) ksmo.op =3D KVM_S390_MEMOP_LOGICAL_WRITE; ksmo.buf =3D (uintptr_t)mem1; ksmo.ar =3D 0; - rv =3D __vcpu_ioctl(vm, VCPU_ID, KVM_S390_MEM_OP, &ksmo); + rv =3D __vcpu_ioctl(vm, vcpu->id, KVM_S390_MEM_OP, &ksmo); TEST_ASSERT(rv =3D=3D -1 && errno =3D=3D EINVAL, "ioctl allows all flags"= ); =20 /* Bad operation: */ @@ -121,7 +120,7 @@ int main(int argc, char *argv[]) ksmo.op =3D -1; ksmo.buf =3D (uintptr_t)mem1; ksmo.ar =3D 0; - rv =3D __vcpu_ioctl(vm, VCPU_ID, KVM_S390_MEM_OP, &ksmo); + rv =3D __vcpu_ioctl(vm, vcpu->id, KVM_S390_MEM_OP, &ksmo); TEST_ASSERT(rv =3D=3D -1 && errno =3D=3D EINVAL, "ioctl allows bad operat= ions"); =20 /* Bad guest address: */ @@ -131,7 +130,7 @@ int main(int argc, char *argv[]) ksmo.op =3D KVM_S390_MEMOP_LOGICAL_WRITE; ksmo.buf =3D (uintptr_t)mem1; ksmo.ar =3D 0; - rv =3D __vcpu_ioctl(vm, VCPU_ID, KVM_S390_MEM_OP, &ksmo); + rv =3D __vcpu_ioctl(vm, vcpu->id, KVM_S390_MEM_OP, &ksmo); TEST_ASSERT(rv > 0, "ioctl does not report bad guest memory access"); =20 /* Bad host address: */ @@ -141,24 +140,24 @@ int main(int argc, char *argv[]) ksmo.op =3D KVM_S390_MEMOP_LOGICAL_WRITE; ksmo.buf =3D 0; ksmo.ar =3D 0; - rv =3D __vcpu_ioctl(vm, VCPU_ID, KVM_S390_MEM_OP, &ksmo); + rv =3D __vcpu_ioctl(vm, vcpu->id, KVM_S390_MEM_OP, &ksmo); TEST_ASSERT(rv =3D=3D -1 && errno =3D=3D EFAULT, "ioctl does not report bad host memory address"); =20 /* Bad access register: */ run->psw_mask &=3D ~(3UL << (63 - 17)); run->psw_mask |=3D 1UL << (63 - 17); /* Enable AR mode */ - vcpu_run(vm, VCPU_ID); /* To sync new state to SIE block */ + vcpu_run(vm, vcpu->id); /* To sync new state to SIE block */ ksmo.gaddr =3D (uintptr_t)mem1; ksmo.flags =3D 0; ksmo.size =3D maxsize; ksmo.op =3D KVM_S390_MEMOP_LOGICAL_WRITE; ksmo.buf =3D (uintptr_t)mem1; ksmo.ar =3D 17; - rv =3D __vcpu_ioctl(vm, VCPU_ID, KVM_S390_MEM_OP, &ksmo); + rv =3D __vcpu_ioctl(vm, vcpu->id, KVM_S390_MEM_OP, &ksmo); TEST_ASSERT(rv =3D=3D -1 && errno =3D=3D EINVAL, "ioctl allows ARs > 15"); run->psw_mask &=3D ~(3UL << (63 - 17)); /* Disable AR mode */ - vcpu_run(vm, VCPU_ID); /* Run to sync new state */ + vcpu_run(vm, vcpu->id); /* Run to sync new state */ =20 kvm_vm_free(vm); =20 --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 C5C9CC433EF for ; Fri, 11 Mar 2022 06:03:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347103AbiCKGDB (ORCPT ); Fri, 11 Mar 2022 01:03:01 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33182 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346756AbiCKFzI (ORCPT ); Fri, 11 Mar 2022 00:55:08 -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 A4A37FFFB8 for ; Thu, 10 Mar 2022 21:53:43 -0800 (PST) Received: by mail-pg1-x54a.google.com with SMTP id j15-20020a633c0f000000b00380ed7c5e91so1973418pga.6 for ; Thu, 10 Mar 2022 21:53:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=ofFBB4c5rOaIb3neyIo33ooJpytj9xkzw7AbqyDBID4=; b=Smz1YUw/PJiXcA87/XZNdy5svGjVCUkkW3++TDKBW/XYFuBCMra2fgtXR1k0Kk1Rvi 1ef9WSEhi37Ikxl8VZ/7Ah+0sbqMRdORA1n20U6viuR9Af9m7AKGDWpGKhMI6Viq7aDj Qa+OOILTygq4RMOiYNsuZSwJERxcGAzDb3qkADLZkuSMkmd7Nh2+Ht8dQ7So6tnIF1c4 +c7wJAlEl4OKBxyH5sBvICQfp9byb8vGq9pTRGRPcL8BHGtT0BsNFPPpuuMWWmRGoKOR S0rLSNzIgdLYJe5R5fUkrvaSIR1wdV/Qkn8HI/QHdwLpMoonUfKO96XYnAJ8ea3muTCU ltLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=ofFBB4c5rOaIb3neyIo33ooJpytj9xkzw7AbqyDBID4=; b=Lpm6qFlrXCGJY8ihTM1q4UEW20GZGRHzxO9oOkOY9ml28YPGrWUutkBRcqr2K6epxm fddZ1+HGTClboHbZLgLqP7pvFks/8VVm5FD2dUdRUtJEQIKW1TpSLa/xeft8SBS5FQ7p GTIzWF55Jxxnw1+OOercZm0puVS5FcdGiybmCyzo/+IPSy38pFpY6u6trNdoLW6Gem4S hTZPLyvwf6QcXfvdmBJOvERd6Vziou7Aswpy9RTn+JZsmiiZ1lK5nf8bO4RDFvTDSQ4/ G6UXpr6Du7uOSPPdV5sFVYMMlcWnjEHE19pWjw9Sue/oTsBNWbDKPpsph+Degig+HSiE l0gQ== X-Gm-Message-State: AOAM533vpAkn3R7Sp60c4y/nkM1FKvHvkt9gzTIYhnJWvKale3sKNDMY qdLkvPom+WjQVtkTzMYtv353RNAQ82EVhbt5h5cs/UKdnMqjf1DGYLMYMDPyP4U8schuIfRcH1G BrUUE6tjtU/oUbo2k132qBVNgXuQGEc+0Sk2dkP3ruNk3Sr4hw8uRjvDG3y+JA/iPNf0AlQ== X-Google-Smtp-Source: ABdhPJw3VG2mNuYAKP64VB8P2+kRw8QsRSzhKaC6Lp1Qa74aomTuMMVxlBTjADhVIWTKhFZmQnHMBq1XYBA= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a05:6a00:174f:b0:4f3:fe06:61b5 with SMTP id j15-20020a056a00174f00b004f3fe0661b5mr8491682pfc.50.1646978022977; Thu, 10 Mar 2022 21:53:42 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:44 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-94-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 093/105] KVM: selftests: Convert s390x/diag318_test_handler away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/lib/s390x/diag318_test_handler.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/tools/testing/selftests/kvm/lib/s390x/diag318_test_handler.c b= /tools/testing/selftests/kvm/lib/s390x/diag318_test_handler.c index 86b9e611ad87..21c31fe10c1a 100644 --- a/tools/testing/selftests/kvm/lib/s390x/diag318_test_handler.c +++ b/tools/testing/selftests/kvm/lib/s390x/diag318_test_handler.c @@ -8,8 +8,6 @@ #include "test_util.h" #include "kvm_util.h" =20 -#define VCPU_ID 6 - #define ICPT_INSTRUCTION 0x04 #define IPA0_DIAG 0x8300 =20 @@ -27,14 +25,15 @@ static void guest_code(void) */ static uint64_t diag318_handler(void) { + struct kvm_vcpu *vcpu; struct kvm_vm *vm; struct kvm_run *run; uint64_t reg; uint64_t diag318_info; =20 - vm =3D vm_create_default(VCPU_ID, 0, guest_code); - vcpu_run(vm, VCPU_ID); - run =3D vcpu_state(vm, VCPU_ID); + vm =3D vm_create_with_one_vcpu(&vcpu, guest_code); + vcpu_run(vm, vcpu->id); + run =3D vcpu->run; =20 TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_S390_SIEIC, "DIAGNOSE 0x0318 instruction was not intercepted"); --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 D470DC433FE for ; Fri, 11 Mar 2022 06:03:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347119AbiCKGDI (ORCPT ); Fri, 11 Mar 2022 01:03:08 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33180 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346738AbiCKFzI (ORCPT ); Fri, 11 Mar 2022 00:55:08 -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 0BD5A100752 for ; Thu, 10 Mar 2022 21:53:45 -0800 (PST) Received: by mail-pj1-x1049.google.com with SMTP id c14-20020a17090a674e00b001bf1c750f9bso7258169pjm.9 for ; Thu, 10 Mar 2022 21:53:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=Q1GD4eEQsvZ1Ive+fR6RX/dgJvQAbI+B/yP5IlUtfuc=; b=rgMXYfBlK3JFnqwB568fBYwS5ANJA0r18Psfs0C87WWFZnh/Ss6ZWEyliDQOwutJcn T9q827cJu3R+Yeo/l2xdb6Bxa1Xr9bGrsaqQUU5bjAiTfHB5WG7vGPI/XpNFr4rwp2vm cv4fwmZedQ3gzvwQiTESrgj2tNdqjdztwnQKgr6jqTReF6ZqQlbxW7LEJo8+hQQgR+zM ZSH/dGHIpK2PHYDglajMpoMTo2MgXrRUJndxVyx/g+pnk3+xRfI+oo9u4p578NuCq0M0 EYWJrMwoO9wBnXBUgKGcEICmwvXGjLHghHUXhQrOEmtzhlJKErDNChrzpU0JMR5jLMtN NVuA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=Q1GD4eEQsvZ1Ive+fR6RX/dgJvQAbI+B/yP5IlUtfuc=; b=aN0KvypK2d7qX3kdkANPXDrSBIwaOLbkDfe8LWKmzCqdU/+MgnhldEftc6w2DXpIsH +GOvv09aOKH57o2SNc7Pax1SPQMI0DaRJkMZpsSXa31nz77CPOSy6n6LzMil1ks3l40z 7G2UN1BCSE12PAbM0q4xuh7O7MqHhD0nuS6GXBlbK9Rr9FAQvr7jwcggvuZ5zORQ6FFp rOLdTCah5wtrtRfo4FfjxnCzNdpjaGANOU767wfdVy3Ekc224sGGZmh+L0J7bq3NNzwp NkSzancp39SvndI9DspsqdTDZYYvlkzOo6j7XLw5knT8CZTsTVXcDIm7aCqCyQVtHKOu L3fw== X-Gm-Message-State: AOAM531GOsgMen9NG6EFZK2XHIDoJjIBkFgIguX7rNYRuNmg3+2ZplrP P9Bn+HfU8JEiVaMdkLRRzGthwib+NSQVIHgFODwfO3gAUTMxBPysRay3qU92Eh4ctfTemqadmkr jK5uImSjyIkJ239kuUCLWJiCr9BVvCOmYRwm2Sgf3dtLNRtgaM6bo3rRrq26p/VMDOE30Rg== X-Google-Smtp-Source: ABdhPJzWGLB/KRxURryJ1G067fJ2Q81Pev+9aAc3zavqQzkAe8k8Kv7FvmoTheaMUNgwqfPZZSy2KS6kN+s= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:902:be14:b0:14f:ce67:d0a1 with SMTP id r20-20020a170902be1400b0014fce67d0a1mr8670620pls.29.1646978024427; Thu, 10 Mar 2022 21:53:44 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:45 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-95-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 094/105] KVM: selftests: Drop vm_create_default* helpers From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/include/kvm_util_base.h | 24 ------------------- tools/testing/selftests/kvm/lib/kvm_util.c | 23 +++++------------- 2 files changed, 6 insertions(+), 41 deletions(-) diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/te= sting/selftests/kvm/include/kvm_util_base.h index 051d9707e2e7..608f9d3cdfbf 100644 --- a/tools/testing/selftests/kvm/include/kvm_util_base.h +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h @@ -517,30 +517,6 @@ vm_paddr_t vm_phy_pages_alloc(struct kvm_vm *vm, size_= t num, vm_paddr_t paddr_min, uint32_t memslot); vm_paddr_t vm_alloc_page_table(struct kvm_vm *vm); =20 -/* - * Create a VM with reasonable defaults - * - * Input Args: - * vcpuid - The id of the single VCPU to add to the VM. - * extra_mem_pages - The number of extra pages to add (this will - * decide how much extra space we will need to - * setup the page tables using memslot 0) - * guest_code - The vCPU's entry point - * - * Output Args: None - * - * Return: - * Pointer to opaque structure that describes the created VM. - */ -struct kvm_vm *vm_create_default(uint32_t vcpuid, uint64_t extra_mem_pages, - void *guest_code); - -/* Same as vm_create_default, but can be used for more than one vcpu */ -struct kvm_vm *vm_create_default_with_vcpus(uint32_t nr_vcpus, uint64_t ex= tra_mem_pages, - uint32_t num_percpu_pages, void *guest_code, - uint32_t vcpuids[]); - -/* Like vm_create_default_with_vcpus, but accepts mode and slot0 memory as= a parameter */ struct kvm_vm *__vm_create_with_vcpus(enum vm_guest_mode mode, uint32_t nr= _vcpus, uint64_t slot0_mem_pages, uint64_t extra_mem_pages, uint32_t num_percpu_pages, void *guest_code, diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index de568d0a2ccc..a89369505232 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -353,28 +353,17 @@ struct kvm_vm *__vm_create_with_vcpus(enum vm_guest_m= ode mode, uint32_t nr_vcpus return vm; } =20 -struct kvm_vm *vm_create_default_with_vcpus(uint32_t nr_vcpus, uint64_t ex= tra_mem_pages, - uint32_t num_percpu_pages, void *guest_code, - uint32_t vcpuids[]) -{ - return __vm_create_with_vcpus(VM_MODE_DEFAULT, nr_vcpus, DEFAULT_GUEST_PH= Y_PAGES, - extra_mem_pages, num_percpu_pages, guest_code, vcpuids, NULL); -} - -struct kvm_vm *vm_create_default(uint32_t vcpuid, uint64_t extra_mem_pages, - void *guest_code) -{ - return vm_create_default_with_vcpus(1, extra_mem_pages, 0, guest_code, - (uint32_t []){ vcpuid }); -} - struct kvm_vm *__vm_create_with_one_vcpu(struct kvm_vcpu **vcpu, uint64_t extra_mem_pages, void *guest_code) { - struct kvm_vm *vm =3D vm_create_default(0, extra_mem_pages, guest_code); + struct kvm_vcpu *vcpus[1]; + struct kvm_vm *vm; =20 - *vcpu =3D vcpu_get(vm, 0); + vm =3D __vm_create_with_vcpus(VM_MODE_DEFAULT, 1, DEFAULT_GUEST_PHY_PAGES, + extra_mem_pages, 0, guest_code, NULL, vcpus); + + *vcpu =3D vcpus[0]; return vm; } =20 --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 89A56C433F5 for ; Fri, 11 Mar 2022 06:03:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347085AbiCKGC4 (ORCPT ); Fri, 11 Mar 2022 01:02:56 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34910 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346739AbiCKFzJ (ORCPT ); Fri, 11 Mar 2022 00:55:09 -0500 Received: from mail-yw1-x1149.google.com (mail-yw1-x1149.google.com [IPv6:2607:f8b0:4864:20::1149]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0DB6210077B for ; Thu, 10 Mar 2022 21:53:47 -0800 (PST) Received: by mail-yw1-x1149.google.com with SMTP id 00721157ae682-2d07ae11462so60714007b3.8 for ; Thu, 10 Mar 2022 21:53:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=7S+sogfkTHCN8PvKieHvUcDB5oUV+qAvQ7j4xyqNqSI=; b=Z3UujuDimW53k/l1MWX50jt9w2LPYFbYyPPurCSq4/D2FiXfpRzJ109ZjoaGzsF5s0 TA8nJjte9Hctcto+it0cLeSAuph+Id3yFLn+ryyRy7GUEcSwqGUlIZZhE1hRR/cfkypt cFAm5AgPXqB7dkqIRsBbehwz6BVIi03A+nYwBbYagx50qrmhyH+o0gQIggI9vvqcXYCB bqQ11CctfrnnivZkIgf4kqhpOETe/5WEv48Wyjw0x3ftXZ51Y5NMCvfg656vF5nZL8Vv y+uqJihXRsUoi3XcVPyMugrop3LiMQigBs/ntGlVv2B79S0uZwGmFFRwhNalTwu5XTMx DyHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=7S+sogfkTHCN8PvKieHvUcDB5oUV+qAvQ7j4xyqNqSI=; b=uzLcR+SQM8ZLU+VVxFpRDKIOG/r2XejI7voZI2lGsddaKnWZLMvfhfTb7rxFLuzfVC CfPT+/FfUiT3nHP660/t12ZW4XkSb4+4AisiLv9Q/WbjAo4tDo1jTHzQI5wIbr/dAQfV xKhvK6DM/vPvcfQcQQ3HboukRah5L/dyXkqE+4LRkB+K/rZNC6dfHH6mxRg/ok9s6a0Z znSv8c6tODJhyOq3uGq2DxhftFwuNZCjyKS8lumLfylkp+2jmcS47RpyJqaRUVKrQUdJ rpHEQLSrGE1yW4fWYFUqI4D3bbWaKSsiUphwHEBpU7LVeM6FsykAvy4FcKFyo88JPRON p/nw== X-Gm-Message-State: AOAM531+gl105TM/wvq7xhBu8uc2gKhiXahP3kCdCA4yb+zPtFKOK/Zm CjuFGpkG1nxiriGilYZ+J60SBmlKiWHhO1DTqr5E/qLGcrc6wjPhlATrKPsMmsUhxhh2v8bRDra yF9nOevz+Lqtq7UxQw593HCuCDrtKqq6dURia+/NR5oNN5+q9gWisfFQBxYcCDrXXBPRpaQ== X-Google-Smtp-Source: ABdhPJwd1wYoCF16lYoSN8c4z4Uiu/3AzODQr/0b0YnzNhZCbFyqElFbuGW7XOHD4g/o+2WNNPlwRe9bZBY= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a25:6854:0:b0:628:9263:c327 with SMTP id d81-20020a256854000000b006289263c327mr7008339ybc.184.1646978026198; Thu, 10 Mar 2022 21:53:46 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:46 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-96-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 095/105] KVM: selftests: Drop vcpuids param from VM creators From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- tools/testing/selftests/kvm/include/kvm_util_base.h | 4 ++-- tools/testing/selftests/kvm/kvm_page_table_test.c | 2 +- tools/testing/selftests/kvm/lib/kvm_util.c | 8 +++----- tools/testing/selftests/kvm/lib/perf_test_util.c | 2 +- 4 files changed, 7 insertions(+), 9 deletions(-) diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/te= sting/selftests/kvm/include/kvm_util_base.h index 608f9d3cdfbf..391f72eb9bcb 100644 --- a/tools/testing/selftests/kvm/include/kvm_util_base.h +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h @@ -520,7 +520,7 @@ vm_paddr_t vm_alloc_page_table(struct kvm_vm *vm); struct kvm_vm *__vm_create_with_vcpus(enum vm_guest_mode mode, uint32_t nr= _vcpus, uint64_t slot0_mem_pages, uint64_t extra_mem_pages, uint32_t num_percpu_pages, void *guest_code, - uint32_t vcpuids[], struct kvm_vcpu *vcpus[]); + struct kvm_vcpu *vcpus[]); =20 static inline struct kvm_vm *vm_create_with_vcpus(uint32_t nr_vcpus, void *guest_code, @@ -528,7 +528,7 @@ static inline struct kvm_vm *vm_create_with_vcpus(uint3= 2_t nr_vcpus, { return __vm_create_with_vcpus(VM_MODE_DEFAULT, nr_vcpus, DEFAULT_GUEST_PHY_PAGES, 0, 0, - guest_code, NULL, vcpus); + guest_code, vcpus); } =20 /* diff --git a/tools/testing/selftests/kvm/kvm_page_table_test.c b/tools/test= ing/selftests/kvm/kvm_page_table_test.c index b969257f646d..a3e3957f67fa 100644 --- a/tools/testing/selftests/kvm/kvm_page_table_test.c +++ b/tools/testing/selftests/kvm/kvm_page_table_test.c @@ -269,7 +269,7 @@ static struct kvm_vm *pre_init_before_test(enum vm_gues= t_mode mode, void *arg) /* Create a VM with enough guest pages */ guest_num_pages =3D test_mem_size / guest_page_size; vm =3D __vm_create_with_vcpus(mode, nr_vcpus, DEFAULT_GUEST_PHY_PAGES, - guest_num_pages, 0, guest_code, NULL, NULL); + guest_num_pages, 0, guest_code, NULL); =20 /* Align down GPA of the testing memslot */ if (!p->phys_offset) diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index a89369505232..861d18ed868d 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -308,7 +308,7 @@ struct kvm_vm *vm_create(uint64_t phy_pages) struct kvm_vm *__vm_create_with_vcpus(enum vm_guest_mode mode, uint32_t nr= _vcpus, uint64_t slot0_mem_pages, uint64_t extra_mem_pages, uint32_t num_percpu_pages, void *guest_code, - uint32_t vcpuids[], struct kvm_vcpu *vcpus[]) + struct kvm_vcpu *vcpus[]) { uint64_t vcpu_pages, extra_pg_pages, pages; struct kvm_vcpu *vcpu; @@ -343,9 +343,7 @@ struct kvm_vm *__vm_create_with_vcpus(enum vm_guest_mod= e mode, uint32_t nr_vcpus #endif =20 for (i =3D 0; i < nr_vcpus; ++i) { - uint32_t vcpuid =3D vcpuids ? vcpuids[i] : i; - - vcpu =3D vm_vcpu_add(vm, vcpuid, guest_code); + vcpu =3D vm_vcpu_add(vm, i, guest_code); if (vcpus) vcpus[i] =3D vcpu; } @@ -361,7 +359,7 @@ struct kvm_vm *__vm_create_with_one_vcpu(struct kvm_vcp= u **vcpu, struct kvm_vm *vm; =20 vm =3D __vm_create_with_vcpus(VM_MODE_DEFAULT, 1, DEFAULT_GUEST_PHY_PAGES, - extra_mem_pages, 0, guest_code, NULL, vcpus); + extra_mem_pages, 0, guest_code, vcpus); =20 *vcpu =3D vcpus[0]; return vm; diff --git a/tools/testing/selftests/kvm/lib/perf_test_util.c b/tools/testi= ng/selftests/kvm/lib/perf_test_util.c index 5b80ba7f12e4..ffbd3664e162 100644 --- a/tools/testing/selftests/kvm/lib/perf_test_util.c +++ b/tools/testing/selftests/kvm/lib/perf_test_util.c @@ -140,7 +140,7 @@ struct kvm_vm *perf_test_create_vm(enum vm_guest_mode m= ode, int vcpus, * effect as KVM allows aliasing HVAs in meslots. */ vm =3D __vm_create_with_vcpus(mode, vcpus, DEFAULT_GUEST_PHY_PAGES, - guest_num_pages, 0, guest_code, NULL, NULL); + guest_num_pages, 0, guest_code, NULL); =20 pta->vm =3D vm; =20 --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 39DECC433EF for ; Fri, 11 Mar 2022 06:01:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347044AbiCKGCt (ORCPT ); Fri, 11 Mar 2022 01:02:49 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34758 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346768AbiCKFzJ (ORCPT ); Fri, 11 Mar 2022 00:55:09 -0500 Received: from mail-pf1-x44a.google.com (mail-pf1-x44a.google.com [IPv6:2607:f8b0:4864:20::44a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AF0331017F9 for ; Thu, 10 Mar 2022 21:53:48 -0800 (PST) Received: by mail-pf1-x44a.google.com with SMTP id h69-20020a628348000000b004f769e5b4bdso2827815pfe.10 for ; Thu, 10 Mar 2022 21:53:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=ik8aZKQiVh0KHQbr87ubLxwNVrAP3Y5BKOg9RURF8F4=; b=mjOO+xp7DwVMQPq2fKDbBmtTDW/Bu8dUEwPrLqBds1noEDa77ZKAOxw4n/6SUHgQ41 IQxOaaif25LQJyrs2bsPHXUfYw5fXnVlcQaOiAfZoKhGdUcrm4RRo8wlim5uWctAbB2d Qn3UvwwBk0jpNeOVOF+hOHppV9aXbyJ2fOybhpJIx63rvHp2BXBcxeo8ONHoE+fLal7C WIABNrIPxhIeavnq+yNl1H2XAaumNq82Ze6GQsyCjm1Z/qEl3bF3N0A8DGwW7+Dui/+i Xt5eAMJER7cPeZNB+Msp2l92bybEsST7KkeSKQOAmtgOjYwFNelr4P5Q75Z+k4MqiIVt d+Yg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=ik8aZKQiVh0KHQbr87ubLxwNVrAP3Y5BKOg9RURF8F4=; b=Jb271hf4GLwTfwdniRIVY17Tr/xomEQ6zvxciRLBqZ7Yj4FrKNXxuQWKeXR+2nxAxq 3QGkvD2J+qD5E6Yv4KALCd0YdNj3Box44Ec3JxNmhGKlTQXlb4L8k9EWorbAtvUJoUiX fdGSsAk5QQZ3QkJysW6SKlS4aZEuMro1wjuQoyypLgzU38zXzNuvZccu7ZSIWtdmYWoF kCglV1z6S2UJ4ZGzT+0ztYUIjGOYQGhC1G8MQPvm/3ckD4WThMe+mixHt1Uc/EBuv+44 EB7AF7s7GGhAc13SGOmZVaCbO8BcZIKsn/2Q5yFfKCWGSc85ZaMqRMVvPEtS0OgvPg5r FjjQ== X-Gm-Message-State: AOAM530A5ZugmVhU7OEn/0P5UkzMjtORc77vxSxWq+Hle1kIRrc5v8RB dloDrembHbf7wiRHaiVqv+bs2ya+/ZRQMWc3OUhJhzMfNBEW+4Y6OyidajVP+l0Dpkk9nZKopLM v+fGmQbyl6K6yXmJ6R4GUI327lxTcTrBT3LaX46WTdnWGDrjR3QeUcUyNiFQ1SYq+OjeJqw== X-Google-Smtp-Source: ABdhPJx4KnPfQN5NHHK4QhPpBVi2K73b5cxXJ7iG159FSiDZnmHrWeV8vzLa9fYm8qfqBUW0p2P3ZDk0rHQ= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:90b:4d81:b0:1bf:8ce4:4f51 with SMTP id oj1-20020a17090b4d8100b001bf8ce44f51mr461891pjb.0.1646978027765; Thu, 10 Mar 2022 21:53:47 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:47 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-97-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 096/105] KVM: selftests: Convert kvm_page_table_test away from reliance on vcpu_id From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/kvm_page_table_test.c | 61 +++++++------------ 1 file changed, 21 insertions(+), 40 deletions(-) diff --git a/tools/testing/selftests/kvm/kvm_page_table_test.c b/tools/test= ing/selftests/kvm/kvm_page_table_test.c index a3e3957f67fa..2c92aef163f9 100644 --- a/tools/testing/selftests/kvm/kvm_page_table_test.c +++ b/tools/testing/selftests/kvm/kvm_page_table_test.c @@ -46,11 +46,6 @@ static const char * const test_stage_string[] =3D { "KVM_ADJUST_MAPPINGS", }; =20 -struct vcpu_args { - int vcpu_id; - bool vcpu_write; -}; - struct test_args { struct kvm_vm *vm; uint64_t guest_test_virt_mem; @@ -60,7 +55,7 @@ struct test_args { uint64_t large_num_pages; uint64_t host_pages_per_lpage; enum vm_mem_backing_src_type src_type; - struct vcpu_args vcpu_args[KVM_MAX_VCPUS]; + struct kvm_vcpu *vcpus[KVM_MAX_VCPUS]; }; =20 /* @@ -92,17 +87,13 @@ static uint64_t guest_test_phys_mem; */ static uint64_t guest_test_virt_mem =3D DEFAULT_GUEST_TEST_MEM; =20 -static void guest_code(int vcpu_id) +static void guest_code(bool do_write) { struct test_args *p =3D &test_args; - struct vcpu_args *vcpu_args =3D &p->vcpu_args[vcpu_id]; enum test_stage *current_stage =3D &guest_test_stage; uint64_t addr; int i, j; =20 - /* Make sure vCPU args data structure is not corrupt */ - GUEST_ASSERT(vcpu_args->vcpu_id =3D=3D vcpu_id); - while (true) { addr =3D p->guest_test_virt_mem; =20 @@ -123,7 +114,7 @@ static void guest_code(int vcpu_id) */ case KVM_CREATE_MAPPINGS: for (i =3D 0; i < p->large_num_pages; i++) { - if (vcpu_args->vcpu_write) + if (do_write) *(uint64_t *)addr =3D 0x0123456789ABCDEF; else READ_ONCE(*(uint64_t *)addr); @@ -193,17 +184,15 @@ static void guest_code(int vcpu_id) =20 static void *vcpu_worker(void *data) { - int ret; - struct vcpu_args *vcpu_args =3D data; struct kvm_vm *vm =3D test_args.vm; - int vcpu_id =3D vcpu_args->vcpu_id; - struct kvm_run *run; + struct kvm_vcpu *vcpu =3D data; + bool do_write =3D !(vcpu->id % 2); struct timespec start; struct timespec ts_diff; enum test_stage stage; + int ret; =20 - vcpu_args_set(vm, vcpu_id, 1, vcpu_id); - run =3D vcpu_state(vm, vcpu_id); + vcpu_args_set(vm, vcpu->id, 1, do_write); =20 while (!READ_ONCE(host_quit)) { ret =3D sem_wait(&test_stage_updated); @@ -213,15 +202,15 @@ static void *vcpu_worker(void *data) return NULL; =20 clock_gettime(CLOCK_MONOTONIC_RAW, &start); - ret =3D _vcpu_run(vm, vcpu_id); + ret =3D _vcpu_run(vm, vcpu->id); ts_diff =3D timespec_elapsed(start); =20 TEST_ASSERT(ret =3D=3D 0, "vcpu_run failed: %d\n", ret); - TEST_ASSERT(get_ucall(vm, vcpu_id, NULL) =3D=3D UCALL_SYNC, + TEST_ASSERT(get_ucall(vm, vcpu->id, NULL) =3D=3D UCALL_SYNC, "Invalid guest sync status: exit_reason=3D%s\n", - exit_reason_str(run->exit_reason)); + exit_reason_str(vcpu->run->exit_reason)); =20 - pr_debug("Got sync event from vCPU %d\n", vcpu_id); + pr_debug("Got sync event from vCPU %d\n", vcpu->id); stage =3D READ_ONCE(*current_stage); =20 /* @@ -230,7 +219,7 @@ static void *vcpu_worker(void *data) */ pr_debug("vCPU %d has completed stage %s\n" "execution time is: %ld.%.9lds\n\n", - vcpu_id, test_stage_string[stage], + vcpu->id, test_stage_string[stage], ts_diff.tv_sec, ts_diff.tv_nsec); =20 ret =3D sem_post(&test_stage_completed); @@ -250,7 +239,6 @@ static struct kvm_vm *pre_init_before_test(enum vm_gues= t_mode mode, void *arg) { int ret; struct test_params *p =3D arg; - struct vcpu_args *vcpu_args; enum vm_mem_backing_src_type src_type =3D p->src_type; uint64_t large_page_size =3D get_backing_src_pagesz(src_type); uint64_t guest_page_size =3D vm_guest_mode_params[mode].page_size; @@ -260,7 +248,6 @@ static struct kvm_vm *pre_init_before_test(enum vm_gues= t_mode mode, void *arg) uint64_t alignment; void *host_test_mem; struct kvm_vm *vm; - int vcpu_id; =20 /* Align up the test memory size */ alignment =3D max(large_page_size, guest_page_size); @@ -269,7 +256,8 @@ static struct kvm_vm *pre_init_before_test(enum vm_gues= t_mode mode, void *arg) /* Create a VM with enough guest pages */ guest_num_pages =3D test_mem_size / guest_page_size; vm =3D __vm_create_with_vcpus(mode, nr_vcpus, DEFAULT_GUEST_PHY_PAGES, - guest_num_pages, 0, guest_code, NULL); + guest_num_pages, 0, guest_code, + test_args.vcpus); =20 /* Align down GPA of the testing memslot */ if (!p->phys_offset) @@ -292,12 +280,6 @@ static struct kvm_vm *pre_init_before_test(enum vm_gue= st_mode mode, void *arg) test_args.host_pages_per_lpage =3D large_page_size / host_page_size; test_args.src_type =3D src_type; =20 - for (vcpu_id =3D 0; vcpu_id < KVM_MAX_VCPUS; vcpu_id++) { - vcpu_args =3D &test_args.vcpu_args[vcpu_id]; - vcpu_args->vcpu_id =3D vcpu_id; - vcpu_args->vcpu_write =3D !(vcpu_id % 2); - } - /* Add an extra memory slot with specified backing src type */ vm_userspace_mem_region_add(vm, src_type, guest_test_phys_mem, TEST_MEM_SLOT_INDEX, guest_num_pages, 0); @@ -363,12 +345,11 @@ static void vcpus_complete_new_stage(enum test_stage = stage) =20 static void run_test(enum vm_guest_mode mode, void *arg) { - int ret; pthread_t *vcpu_threads; struct kvm_vm *vm; - int vcpu_id; struct timespec start; struct timespec ts_diff; + int ret, i; =20 /* Create VM with vCPUs and make some pre-initialization */ vm =3D pre_init_before_test(mode, arg); @@ -379,9 +360,9 @@ static void run_test(enum vm_guest_mode mode, void *arg) host_quit =3D false; *current_stage =3D KVM_BEFORE_MAPPINGS; =20 - for (vcpu_id =3D 0; vcpu_id < nr_vcpus; vcpu_id++) { - pthread_create(&vcpu_threads[vcpu_id], NULL, vcpu_worker, - &test_args.vcpu_args[vcpu_id]); + for (i =3D 0; i < nr_vcpus; i++) { + pthread_create(&vcpu_threads[i], NULL, vcpu_worker, + &test_args.vcpus[i]); } =20 vcpus_complete_new_stage(*current_stage); @@ -424,13 +405,13 @@ static void run_test(enum vm_guest_mode mode, void *a= rg) =20 /* Tell the vcpu thread to quit */ host_quit =3D true; - for (vcpu_id =3D 0; vcpu_id < nr_vcpus; vcpu_id++) { + for (i =3D 0; i < nr_vcpus; i++) { ret =3D sem_post(&test_stage_updated); TEST_ASSERT(ret =3D=3D 0, "Error in sem_post"); } =20 - for (vcpu_id =3D 0; vcpu_id < nr_vcpus; vcpu_id++) - pthread_join(vcpu_threads[vcpu_id], NULL); + for (i =3D 0; i < nr_vcpus; i++) + pthread_join(vcpu_threads[i], NULL); =20 ret =3D sem_destroy(&test_stage_updated); TEST_ASSERT(ret =3D=3D 0, "Error in sem_destroy"); --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 6F630C433F5 for ; Fri, 11 Mar 2022 06:01:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347002AbiCKGCi (ORCPT ); Fri, 11 Mar 2022 01:02:38 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34816 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346767AbiCKFzJ (ORCPT ); Fri, 11 Mar 2022 00:55:09 -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 EDFA2101F31 for ; Thu, 10 Mar 2022 21:53:49 -0800 (PST) Received: by mail-pg1-x54a.google.com with SMTP id j15-20020a633c0f000000b00380ed7c5e91so1973503pga.6 for ; Thu, 10 Mar 2022 21:53:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=YsmSUUnuP1TZg4m7zR4w99uQOnLeSOOSgT5uhyswrMk=; b=h4wQDFuoS19enz8Gmes9qfh9OUYMoQ7iHhJ2cXjyeWp24bbNuUNzwqi8ThtwiiASkY otGdfb2PEP3LnBpFn16jSclnOAlAg9wbEQN8nBUoByorQbnI2pQp8/DEpP4mMTWA0N+c vlzD0YG6fw5OaZG0oAfOULgGnSaW2ABKqoxKd5jxkQh4d9R6DCZfYQ6DYYZwxiNYvMp6 iCZdHl1l7GGwntfjmEhhSXd4V/1pLFM10ERD8lA2HHGgITWnb7oXVazuJOy/1kueWhf5 iie0F3xwy26tpXFRS0AQGMNJeT+IfHrszXGds5ZWSLptzmZbCqxHayqFeKGeh3umV4mP aMvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=YsmSUUnuP1TZg4m7zR4w99uQOnLeSOOSgT5uhyswrMk=; b=J2vBicQdQoHlLIfXqu/MULh/oXei9Ar2o1NgaxiRoVPs3ERusM3xYpLRJSjtLo9MK9 VOHQFKBkCzHMRthA9PTVBUdgb5ufnzL4sJ9QGFKd0RtzeY5BgiBYalv1alckdhaCOZQ2 hfZpMdjJXu/Ej1v9yL66bdE+mqCjNVQg1y9xzG4W/L2AGdoTkUAxUygRcSfIXLs999o/ 5v+yeNtC8HnJtC+m2nqfLOnT0GEORdt+PYCPHxphlOde5tqzQtIlLOCTdU5EQ5d9R1G7 tZHcnXQojKzk2w8fWJYx3r8/JnCqi43g7Fw/vqc9QscwrYY5IwB6BmoooKfnz3eUaq+o O41w== X-Gm-Message-State: AOAM532ct8oTpnFEXXwCEwrlwtJXLNxNktA110pSkGb0gQNjilLH+htD jBstCzhvr22u/SWQWVAtUzP65V8WGYBjK+/lhvVp09iRRtFCQEJrIzloJ7wNO6tsxAsSdID1qYA 1qbISvNYzUTjqkLqrjJsXF1QD/qyyPDOxNU6aBbI+Oiif5nc54+ZxMo7EUVK+f6Mt0j3+1A== X-Google-Smtp-Source: ABdhPJw67FEZBNKiGXdERoQH8KjfsqKkRVrPMW8OGzGAW3bflpaPTmZ/Zw4kaHRfI+YUvtt+oFMxeFva7Ck= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:902:ea04:b0:152:7cf:1b85 with SMTP id s4-20020a170902ea0400b0015207cf1b85mr8905466plg.80.1646978029310; Thu, 10 Mar 2022 21:53:49 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:48 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-98-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 097/105] KVM: selftests: Convert kvm_binary_stats_test away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../testing/selftests/kvm/kvm_binary_stats_test.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/tools/testing/selftests/kvm/kvm_binary_stats_test.c b/tools/te= sting/selftests/kvm/kvm_binary_stats_test.c index 77b8967fe702..3a1eabd64137 100644 --- a/tools/testing/selftests/kvm/kvm_binary_stats_test.c +++ b/tools/testing/selftests/kvm/kvm_binary_stats_test.c @@ -172,9 +172,9 @@ static void vm_stats_test(struct kvm_vm *vm) TEST_ASSERT(fcntl(stats_fd, F_GETFD) =3D=3D -1, "Stats fd not freed"); } =20 -static void vcpu_stats_test(struct kvm_vm *vm, int vcpu_id) +static void vcpu_stats_test(struct kvm_vcpu *vcpu) { - int stats_fd =3D vcpu_get_stats_fd(vm, vcpu_id); + int stats_fd =3D vcpu_get_stats_fd(vcpu->vm, vcpu->id); =20 stats_test(stats_fd); close(stats_fd); @@ -195,6 +195,7 @@ static void vcpu_stats_test(struct kvm_vm *vm, int vcpu= _id) int main(int argc, char *argv[]) { int i, j; + struct kvm_vcpu ***vcpus; struct kvm_vm **vms; int max_vm =3D DEFAULT_NUM_VM; int max_vcpu =3D DEFAULT_NUM_VCPU; @@ -220,17 +221,22 @@ int main(int argc, char *argv[]) /* Create VMs and VCPUs */ vms =3D malloc(sizeof(vms[0]) * max_vm); TEST_ASSERT(vms, "Allocate memory for storing VM pointers"); + + vcpus =3D malloc(sizeof(struct kvm_vcpu *) * max_vm * max_vcpu); + TEST_ASSERT(vcpus, "Allocate memory for storing vCPU pointers"); + for (i =3D 0; i < max_vm; ++i) { vms[i] =3D vm_create(DEFAULT_GUEST_PHY_PAGES); + for (j =3D 0; j < max_vcpu; ++j) - __vm_vcpu_add(vms[i], j); + vcpus[i][j] =3D __vm_vcpu_add(vms[i], j); } =20 /* Check stats read for every VM and VCPU */ for (i =3D 0; i < max_vm; ++i) { vm_stats_test(vms[i]); for (j =3D 0; j < max_vcpu; ++j) - vcpu_stats_test(vms[i], j); + vcpu_stats_test(vcpus[i][j]); } =20 for (i =3D 0; i < max_vm; ++i) --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 028A7C433EF for ; Fri, 11 Mar 2022 06:01:44 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347007AbiCKGCn (ORCPT ); Fri, 11 Mar 2022 01:02:43 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34940 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346773AbiCKFzJ (ORCPT ); Fri, 11 Mar 2022 00:55:09 -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 A3AD7102426 for ; Thu, 10 Mar 2022 21:53:51 -0800 (PST) Received: by mail-pj1-x104a.google.com with SMTP id b9-20020a17090aa58900b001b8b14b4aabso4594184pjq.9 for ; Thu, 10 Mar 2022 21:53:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=JCgIMWGYylR+0tTDSMULgiIUTl6bxuspkWjswelD2mY=; b=dftDPqlC860oR+YtSmDAdpFLZVJQ6LcOSvBFChN+hEqJdNGd5A0tzub22j7KFGA/oq DOrq1fbA2viJfssQ+b/cYho/HlqZ6f0GDMLg9uBZUGg0j6+K3LeDv/wahQ9V8D/Z8DBN GdmqFKJlm19aBd2Rccipc9NET3R+tPlkwGAnBXq6wv+bumjubuGwC6Y2qB8h3Ass0Dlk hj0sQGUCNPL0ttwqjjoVspn3AHyEVpKDztH4yv9REvul9AnBTvgrySLurFs68bY/xKjQ a/4zdfIAD8tAgmXjUVIA9DHO0MG04rHhqPQt7QQVoY4NKpqhVsVWPtbiW+VMYguWZBQc QPKQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=JCgIMWGYylR+0tTDSMULgiIUTl6bxuspkWjswelD2mY=; b=bTpoHvS85VkS28v3WVvWAbbHmLizlE+5pQga2Ppp5dXOBoazj8797JPp/Q6bkJgPic vyUYLlWPa5zEbPDNYiSBF2xcgPE+biVg1nYmfU+wXrs9kiROmvwpvGFS9xTVDwhMEnR3 6DWAJU5NF8VsqgIE9oDXZpP4UuqJl5UlGaN3WToAzhW1qxfgY6M2S5o2reZ5/3iR19lf GN/RxDLjpPEqB8kZcziyW3Ifa0f0gdhwA8bbQckcDk4JT+6xr2JhBs2XRS3yWWmx7hPX HhwwwUCAkldMFSM7WdWiOXgQ7SwK8M9fyBNJwCNR+h7zcPMiBFzr/yUVUyb6kLUDqyzh XVRA== X-Gm-Message-State: AOAM530KUnmpPdTpBBz6JpxOxt8cV3fSJIIUd4bJ8DhSK+uYi5naKSYw 1GCJ4u7p9DBZi5uIffv+sWYRPPb0m3e4th1tOejRZEG024PmPcJ+zKD/dg7S+GkDFVnXvqU2xfK FTIHeBjdUCovrpUHc5Z1a/MOzcTST3zl8sohvCwp9w31c93EwE+Tt2XxPDL41o19Mez0WqA== X-Google-Smtp-Source: ABdhPJyTJP7rL+1gD5w6tK3Fdaw41/XRz8mFHhRF27RmpHx521Yc3It9AttvmkJnlMK5bJpP//rnEH6hRD0= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a05:6a00:ccd:b0:4f6:f6dd:8288 with SMTP id b13-20020a056a000ccd00b004f6f6dd8288mr8724418pfv.25.1646978030995; Thu, 10 Mar 2022 21:53:50 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:49 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-99-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 098/105] KVM: selftests: Convert get-reg-list away from VCPU_ID From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- tools/testing/selftests/kvm/aarch64/get-reg-list.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/tools/testing/selftests/kvm/aarch64/get-reg-list.c b/tools/tes= ting/selftests/kvm/aarch64/get-reg-list.c index f486223ac98c..56da85f3851b 100644 --- a/tools/testing/selftests/kvm/aarch64/get-reg-list.c +++ b/tools/testing/selftests/kvm/aarch64/get-reg-list.c @@ -406,6 +406,7 @@ static void run_test(struct vcpu_config *c) struct kvm_vcpu_init init =3D { .target =3D -1, }; int new_regs =3D 0, missing_regs =3D 0, i, n; int failed_get =3D 0, failed_set =3D 0, failed_reject =3D 0; + struct kvm_vcpu *vcpu; struct kvm_vm *vm; struct reg_sublist *s; =20 @@ -413,10 +414,10 @@ static void run_test(struct vcpu_config *c) =20 vm =3D vm_create(DEFAULT_GUEST_PHY_PAGES); prepare_vcpu_init(c, &init); - aarch64_vcpu_add(vm, 0, &init, NULL); - finalize_vcpu(vm, 0, c); + vcpu =3D aarch64_vcpu_add(vm, 0, &init, NULL); + finalize_vcpu(vm, vcpu->id, c); =20 - reg_list =3D vcpu_get_reg_list(vm, 0); + reg_list =3D vcpu_get_reg_list(vm, vcpu->id); =20 if (fixup_core_regs) core_reg_fixup(); @@ -452,7 +453,7 @@ static void run_test(struct vcpu_config *c) bool reject_reg =3D false; int ret; =20 - ret =3D __vcpu_ioctl(vm, 0, KVM_GET_ONE_REG, ®); + ret =3D __vcpu_ioctl(vm, vcpu->id, KVM_GET_ONE_REG, ®); if (ret) { printf("%s: Failed to get ", config_name(c)); print_reg(c, reg.id); @@ -464,7 +465,7 @@ static void run_test(struct vcpu_config *c) for_each_sublist(c, s) { if (s->rejects_set && find_reg(s->rejects_set, s->rejects_set_n, reg.id= )) { reject_reg =3D true; - ret =3D __vcpu_ioctl(vm, 0, KVM_SET_ONE_REG, ®); + ret =3D __vcpu_ioctl(vm, vcpu->id, KVM_SET_ONE_REG, ®); if (ret !=3D -1 || errno !=3D EPERM) { printf("%s: Failed to reject (ret=3D%d, errno=3D%d) ", config_name(c)= , ret, errno); print_reg(c, reg.id); @@ -476,7 +477,7 @@ static void run_test(struct vcpu_config *c) } =20 if (!reject_reg) { - ret =3D __vcpu_ioctl(vm, 0, KVM_SET_ONE_REG, ®); + ret =3D __vcpu_ioctl(vm, vcpu->id, KVM_SET_ONE_REG, ®); if (ret) { printf("%s: Failed to set ", config_name(c)); print_reg(c, reg.id); --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 1EBF4C433F5 for ; Fri, 11 Mar 2022 06:01:31 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346993AbiCKGC2 (ORCPT ); Fri, 11 Mar 2022 01:02:28 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34982 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346778AbiCKFzL (ORCPT ); Fri, 11 Mar 2022 00:55:11 -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 3C8A61029E5 for ; Thu, 10 Mar 2022 21:53:53 -0800 (PST) Received: by mail-pj1-x104a.google.com with SMTP id e14-20020a17090a684e00b001bf09ac2385so4720858pjm.1 for ; Thu, 10 Mar 2022 21:53:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=6zvyMqzS7CM0QtVWmT0R9xPHl3CReE8GWQ2vSaO/pMo=; b=UTYxnqL82zV5MKy4cpvOK1A/SoKYrjP4y6XTKVz4hBOKsTrobxUfBPNgDKqRRSMuT8 xYtuWK8vqDIJ2syVrL8E2QzVlxIlGMMxIFMAMu5kQIkdK2qavcslF8jtPC7vIvng+vtB zXOv3ls9jLiA4Z4zSJF+kfpUpKHakZ0wYBgBJ7f3IT21rWKga548+emtJkuZmHVO6CJc Lo3WBo4+1Q6VWnT/sx7SEdyTFieZlKNuWKLCPcPoYsD+e5o2HvQJ/jXJtvtk6JymYBTx /TtRW4jOHQhiTOucuo3aCQ0Lg3WMNu1JHvs9gbdwZMxJ5DtcEcIQSvLBBF997UMZzPZQ HAzw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=6zvyMqzS7CM0QtVWmT0R9xPHl3CReE8GWQ2vSaO/pMo=; b=2x3Yb4rycs7zMXbzv6W1v6VTvppECeoT6uZoWPe/YcC+qNI9L3DMa2VUschIYCn0q5 T6kp/2U6l5Ji1+yTrrPQZECX1Eo0DccFi4dVYO550EFkWvbqOgVdNXLdbe5u9Td43MQV E54OICWpt5/J7Zj6tLrJKXGj4/YDR6sQ1s0APcdwhu6imUCfIuoV9wIPV/hF7gm8cRxA YTCIphbcrEZ3/SF1XNZ7LXfNZqfxA9BsXDEhBTsE+RPlpv1lyvNTZUllvEMcyXdW3v92 GmUblIpwCgCQo2fG0aIb0RwrsjVZtH8XxbWpPsrIX9s7QzDwMMSPIyNYrVcHPSoBMW6m Wgcw== X-Gm-Message-State: AOAM533k0lOqzLRj8Y1rtvw7nC6i9kARYlqLT0HYzJLRkLU7+YGTZxkc RgYLXU8Jx8kfAneA58ZXzz6fqx1LUhfg20yMEp56Qf+I1qDPyIoWoZQX4G5e3eBKovWNKCia5ah boCv5wlhAzcdSQUe4uUjH4uYC9CSa4Rqg0GG86GQnGowW0IU6AkaJYIpXgpOQRMrD3wRcOw== X-Google-Smtp-Source: ABdhPJzPO9Y2KEYG1zBhQOvzSzZKPAmjQ39EGMDEAGHY6PSwE9EZYKgF0jPmP/mMQvMC/ScVYtu8UACA0gI= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:aa7:8585:0:b0:4f6:f528:2e02 with SMTP id w5-20020aa78585000000b004f6f5282e02mr8325368pfn.76.1646978032662; Thu, 10 Mar 2022 21:53:52 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:50 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-100-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 099/105] KVM: selftests: Stop conflating vCPU index and ID in perf tests From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/access_tracking_perf_test.c | 81 ++++++++++--------- .../selftests/kvm/demand_paging_test.c | 36 ++++----- .../selftests/kvm/dirty_log_perf_test.c | 39 ++++----- .../selftests/kvm/include/perf_test_util.h | 5 +- .../selftests/kvm/lib/perf_test_util.c | 79 +++++++++--------- .../kvm/memslot_modification_stress_test.c | 10 +-- 6 files changed, 129 insertions(+), 121 deletions(-) diff --git a/tools/testing/selftests/kvm/access_tracking_perf_test.c b/tool= s/testing/selftests/kvm/access_tracking_perf_test.c index d8909032317a..86a90222f913 100644 --- a/tools/testing/selftests/kvm/access_tracking_perf_test.c +++ b/tools/testing/selftests/kvm/access_tracking_perf_test.c @@ -74,7 +74,7 @@ struct test_params { uint64_t vcpu_memory_bytes; =20 /* The number of vCPUs to create in the VM. */ - int vcpus; + int nr_vcpus; }; =20 static uint64_t pread_uint64(int fd, const char *filename, uint64_t index) @@ -127,10 +127,12 @@ static void mark_page_idle(int page_idle_fd, uint64_t= pfn) "Set page_idle bits for PFN 0x%" PRIx64, pfn); } =20 -static void mark_vcpu_memory_idle(struct kvm_vm *vm, int vcpu_id) +static void mark_vcpu_memory_idle(struct kvm_vm *vm, + struct perf_test_vcpu_args *vcpu_args) { - uint64_t base_gva =3D perf_test_args.vcpu_args[vcpu_id].gva; - uint64_t pages =3D perf_test_args.vcpu_args[vcpu_id].pages; + int vcpu_idx =3D vcpu_args->vcpu_idx; + uint64_t base_gva =3D vcpu_args->gva; + uint64_t pages =3D vcpu_args->pages; uint64_t page; uint64_t still_idle =3D 0; uint64_t no_pfn =3D 0; @@ -138,7 +140,7 @@ static void mark_vcpu_memory_idle(struct kvm_vm *vm, in= t vcpu_id) int pagemap_fd; =20 /* If vCPUs are using an overlapping region, let vCPU 0 mark it idle. */ - if (overlap_memory_access && vcpu_id) + if (overlap_memory_access && vcpu_idx) return; =20 page_idle_fd =3D open("/sys/kernel/mm/page_idle/bitmap", O_RDWR); @@ -170,7 +172,7 @@ static void mark_vcpu_memory_idle(struct kvm_vm *vm, in= t vcpu_id) */ TEST_ASSERT(no_pfn < pages / 100, "vCPU %d: No PFN for %" PRIu64 " out of %" PRIu64 " pages.", - vcpu_id, no_pfn, pages); + vcpu_idx, no_pfn, pages); =20 /* * Test that at least 90% of memory has been marked idle (the rest might @@ -183,17 +185,16 @@ static void mark_vcpu_memory_idle(struct kvm_vm *vm, = int vcpu_id) TEST_ASSERT(still_idle < pages / 10, "vCPU%d: Too many pages still idle (%"PRIu64 " out of %" PRIu64 ").\n", - vcpu_id, still_idle, pages); + vcpu_idx, still_idle, pages); =20 close(page_idle_fd); close(pagemap_fd); } =20 -static void assert_ucall(struct kvm_vm *vm, uint32_t vcpu_id, - uint64_t expected_ucall) +static void assert_ucall(struct kvm_vcpu *vcpu, uint64_t expected_ucall) { struct ucall uc; - uint64_t actual_ucall =3D get_ucall(vm, vcpu_id, &uc); + uint64_t actual_ucall =3D get_ucall(vcpu->vm, vcpu->id, &uc); =20 TEST_ASSERT(expected_ucall =3D=3D actual_ucall, "Guest exited unexpectedly (expected ucall %" PRIu64 @@ -217,28 +218,29 @@ static bool spin_wait_for_next_iteration(int *current= _iteration) =20 static void vcpu_thread_main(struct perf_test_vcpu_args *vcpu_args) { + struct kvm_vcpu *vcpu =3D vcpu_args->vcpu; struct kvm_vm *vm =3D perf_test_args.vm; - int vcpu_id =3D vcpu_args->vcpu_id; + int vcpu_idx =3D vcpu_args->vcpu_idx; int current_iteration =3D 0; =20 while (spin_wait_for_next_iteration(¤t_iteration)) { switch (READ_ONCE(iteration_work)) { case ITERATION_ACCESS_MEMORY: - vcpu_run(vm, vcpu_id); - assert_ucall(vm, vcpu_id, UCALL_SYNC); + vcpu_run(vm, vcpu->id); + assert_ucall(vcpu, UCALL_SYNC); break; case ITERATION_MARK_IDLE: - mark_vcpu_memory_idle(vm, vcpu_id); + mark_vcpu_memory_idle(vm, vcpu_args); break; }; =20 - vcpu_last_completed_iteration[vcpu_id] =3D current_iteration; + vcpu_last_completed_iteration[vcpu_idx] =3D current_iteration; } } =20 -static void spin_wait_for_vcpu(int vcpu_id, int target_iteration) +static void spin_wait_for_vcpu(int vcpu_idx, int target_iteration) { - while (READ_ONCE(vcpu_last_completed_iteration[vcpu_id]) !=3D + while (READ_ONCE(vcpu_last_completed_iteration[vcpu_idx]) !=3D target_iteration) { continue; } @@ -250,12 +252,11 @@ enum access_type { ACCESS_WRITE, }; =20 -static void run_iteration(struct kvm_vm *vm, int vcpus, const char *descri= ption) +static void run_iteration(struct kvm_vm *vm, int nr_vcpus, const char *des= cription) { struct timespec ts_start; struct timespec ts_elapsed; - int next_iteration; - int vcpu_id; + int next_iteration, i; =20 /* Kick off the vCPUs by incrementing iteration. */ next_iteration =3D ++iteration; @@ -263,23 +264,23 @@ static void run_iteration(struct kvm_vm *vm, int vcpu= s, const char *description) clock_gettime(CLOCK_MONOTONIC, &ts_start); =20 /* Wait for all vCPUs to finish the iteration. */ - for (vcpu_id =3D 0; vcpu_id < vcpus; vcpu_id++) - spin_wait_for_vcpu(vcpu_id, next_iteration); + for (i =3D 0; i < nr_vcpus; i++) + spin_wait_for_vcpu(i, next_iteration); =20 ts_elapsed =3D timespec_elapsed(ts_start); pr_info("%-30s: %ld.%09lds\n", description, ts_elapsed.tv_sec, ts_elapsed.tv_nsec); } =20 -static void access_memory(struct kvm_vm *vm, int vcpus, enum access_type a= ccess, - const char *description) +static void access_memory(struct kvm_vm *vm, int nr_vcpus, + enum access_type access, const char *description) { perf_test_set_wr_fract(vm, (access =3D=3D ACCESS_READ) ? INT_MAX : 1); iteration_work =3D ITERATION_ACCESS_MEMORY; - run_iteration(vm, vcpus, description); + run_iteration(vm, nr_vcpus, description); } =20 -static void mark_memory_idle(struct kvm_vm *vm, int vcpus) +static void mark_memory_idle(struct kvm_vm *vm, int nr_vcpus) { /* * Even though this parallelizes the work across vCPUs, this is still a @@ -289,37 +290,37 @@ static void mark_memory_idle(struct kvm_vm *vm, int v= cpus) */ pr_debug("Marking VM memory idle (slow)...\n"); iteration_work =3D ITERATION_MARK_IDLE; - run_iteration(vm, vcpus, "Mark memory idle"); + run_iteration(vm, nr_vcpus, "Mark memory idle"); } =20 static void run_test(enum vm_guest_mode mode, void *arg) { struct test_params *params =3D arg; struct kvm_vm *vm; - int vcpus =3D params->vcpus; + int nr_vcpus =3D params->nr_vcpus; =20 - vm =3D perf_test_create_vm(mode, vcpus, params->vcpu_memory_bytes, 1, + vm =3D perf_test_create_vm(mode, nr_vcpus, params->vcpu_memory_bytes, 1, params->backing_src, !overlap_memory_access); =20 - perf_test_start_vcpu_threads(vcpus, vcpu_thread_main); + perf_test_start_vcpu_threads(nr_vcpus, vcpu_thread_main); =20 pr_info("\n"); - access_memory(vm, vcpus, ACCESS_WRITE, "Populating memory"); + access_memory(vm, nr_vcpus, ACCESS_WRITE, "Populating memory"); =20 /* As a control, read and write to the populated memory first. */ - access_memory(vm, vcpus, ACCESS_WRITE, "Writing to populated memory"); - access_memory(vm, vcpus, ACCESS_READ, "Reading from populated memory"); + access_memory(vm, nr_vcpus, ACCESS_WRITE, "Writing to populated memory"); + access_memory(vm, nr_vcpus, ACCESS_READ, "Reading from populated memory"); =20 /* Repeat on memory that has been marked as idle. */ - mark_memory_idle(vm, vcpus); - access_memory(vm, vcpus, ACCESS_WRITE, "Writing to idle memory"); - mark_memory_idle(vm, vcpus); - access_memory(vm, vcpus, ACCESS_READ, "Reading from idle memory"); + mark_memory_idle(vm, nr_vcpus); + access_memory(vm, nr_vcpus, ACCESS_WRITE, "Writing to idle memory"); + mark_memory_idle(vm, nr_vcpus); + access_memory(vm, nr_vcpus, ACCESS_READ, "Reading from idle memory"); =20 /* Set done to signal the vCPU threads to exit */ done =3D true; =20 - perf_test_join_vcpu_threads(vcpus); + perf_test_join_vcpu_threads(nr_vcpus); perf_test_destroy_vm(vm); } =20 @@ -347,7 +348,7 @@ int main(int argc, char *argv[]) struct test_params params =3D { .backing_src =3D DEFAULT_VM_MEM_SRC, .vcpu_memory_bytes =3D DEFAULT_PER_VCPU_MEM_SIZE, - .vcpus =3D 1, + .nr_vcpus =3D 1, }; int page_idle_fd; int opt; @@ -363,7 +364,7 @@ int main(int argc, char *argv[]) params.vcpu_memory_bytes =3D parse_size(optarg); break; case 'v': - params.vcpus =3D atoi(optarg); + params.nr_vcpus =3D atoi(optarg); break; case 'o': overlap_memory_access =3D true; diff --git a/tools/testing/selftests/kvm/demand_paging_test.c b/tools/testi= ng/selftests/kvm/demand_paging_test.c index 6a719d065599..da10e1604991 100644 --- a/tools/testing/selftests/kvm/demand_paging_test.c +++ b/tools/testing/selftests/kvm/demand_paging_test.c @@ -44,28 +44,27 @@ static char *guest_data_prototype; =20 static void vcpu_worker(struct perf_test_vcpu_args *vcpu_args) { - int ret; - int vcpu_id =3D vcpu_args->vcpu_id; + struct kvm_vcpu *vcpu =3D vcpu_args->vcpu; struct kvm_vm *vm =3D perf_test_args.vm; - struct kvm_run *run; + int vcpu_idx =3D vcpu_args->vcpu_idx; + struct kvm_run *run =3D vcpu->run; struct timespec start; struct timespec ts_diff; - - run =3D vcpu_state(vm, vcpu_id); + int ret; =20 clock_gettime(CLOCK_MONOTONIC, &start); =20 /* Let the guest access its memory */ - ret =3D _vcpu_run(vm, vcpu_id); + ret =3D _vcpu_run(vm, vcpu->id); TEST_ASSERT(ret =3D=3D 0, "vcpu_run failed: %d\n", ret); - if (get_ucall(vm, vcpu_id, NULL) !=3D UCALL_SYNC) { + if (get_ucall(vm, vcpu->id, NULL) !=3D UCALL_SYNC) { TEST_ASSERT(false, "Invalid guest sync status: exit_reason=3D%s\n", exit_reason_str(run->exit_reason)); } =20 ts_diff =3D timespec_elapsed(start); - PER_VCPU_DEBUG("vCPU %d execution time: %ld.%.9lds\n", vcpu_id, + PER_VCPU_DEBUG("vCPU %d execution time: %ld.%.9lds\n", vcpu_idx, ts_diff.tv_sec, ts_diff.tv_nsec); } =20 @@ -285,8 +284,7 @@ static void run_test(enum vm_guest_mode mode, void *arg) struct timespec ts_diff; int *pipefds =3D NULL; struct kvm_vm *vm; - int vcpu_id; - int r; + int r, i; =20 vm =3D perf_test_create_vm(mode, nr_vcpus, guest_percpu_mem_size, 1, p->src_type, p->partition_vcpu_memory_access); @@ -309,12 +307,12 @@ static void run_test(enum vm_guest_mode mode, void *a= rg) pipefds =3D malloc(sizeof(int) * nr_vcpus * 2); TEST_ASSERT(pipefds, "Unable to allocate memory for pipefd"); =20 - for (vcpu_id =3D 0; vcpu_id < nr_vcpus; vcpu_id++) { + for (i =3D 0; i < nr_vcpus; i++) { struct perf_test_vcpu_args *vcpu_args; void *vcpu_hva; void *vcpu_alias; =20 - vcpu_args =3D &perf_test_args.vcpu_args[vcpu_id]; + vcpu_args =3D &perf_test_args.vcpu_args[i]; =20 /* Cache the host addresses of the region */ vcpu_hva =3D addr_gpa2hva(vm, vcpu_args->gpa); @@ -324,13 +322,13 @@ static void run_test(enum vm_guest_mode mode, void *a= rg) * Set up user fault fd to handle demand paging * requests. */ - r =3D pipe2(&pipefds[vcpu_id * 2], + r =3D pipe2(&pipefds[i * 2], O_CLOEXEC | O_NONBLOCK); TEST_ASSERT(!r, "Failed to set up pipefd"); =20 - setup_demand_paging(vm, &uffd_handler_threads[vcpu_id], - pipefds[vcpu_id * 2], p->uffd_mode, - p->uffd_delay, &uffd_args[vcpu_id], + setup_demand_paging(vm, &uffd_handler_threads[i], + pipefds[i * 2], p->uffd_mode, + p->uffd_delay, &uffd_args[i], vcpu_hva, vcpu_alias, vcpu_args->pages * perf_test_args.guest_page_size); } @@ -350,11 +348,11 @@ static void run_test(enum vm_guest_mode mode, void *a= rg) char c; =20 /* Tell the user fault fd handler threads to quit */ - for (vcpu_id =3D 0; vcpu_id < nr_vcpus; vcpu_id++) { - r =3D write(pipefds[vcpu_id * 2 + 1], &c, 1); + for (i =3D 0; i < nr_vcpus; i++) { + r =3D write(pipefds[i * 2 + 1], &c, 1); TEST_ASSERT(r =3D=3D 1, "Unable to write to pipefd"); =20 - pthread_join(uffd_handler_threads[vcpu_id], NULL); + pthread_join(uffd_handler_threads[i], NULL); } } =20 diff --git a/tools/testing/selftests/kvm/dirty_log_perf_test.c b/tools/test= ing/selftests/kvm/dirty_log_perf_test.c index 101759ac93a4..d250f246996e 100644 --- a/tools/testing/selftests/kvm/dirty_log_perf_test.c +++ b/tools/testing/selftests/kvm/dirty_log_perf_test.c @@ -33,44 +33,45 @@ static int vcpu_last_completed_iteration[KVM_MAX_VCPUS]; =20 static void vcpu_worker(struct perf_test_vcpu_args *vcpu_args) { - int ret; + struct kvm_vcpu *vcpu =3D vcpu_args->vcpu; struct kvm_vm *vm =3D perf_test_args.vm; + int vcpu_idx =3D vcpu_args->vcpu_idx; uint64_t pages_count =3D 0; struct kvm_run *run; struct timespec start; struct timespec ts_diff; struct timespec total =3D (struct timespec){0}; struct timespec avg; - int vcpu_id =3D vcpu_args->vcpu_id; + int ret; =20 - run =3D vcpu_state(vm, vcpu_id); + run =3D vcpu->run; =20 while (!READ_ONCE(host_quit)) { int current_iteration =3D READ_ONCE(iteration); =20 clock_gettime(CLOCK_MONOTONIC, &start); - ret =3D _vcpu_run(vm, vcpu_id); + ret =3D _vcpu_run(vm, vcpu->id); ts_diff =3D timespec_elapsed(start); =20 TEST_ASSERT(ret =3D=3D 0, "vcpu_run failed: %d\n", ret); - TEST_ASSERT(get_ucall(vm, vcpu_id, NULL) =3D=3D UCALL_SYNC, + TEST_ASSERT(get_ucall(vm, vcpu->id, NULL) =3D=3D UCALL_SYNC, "Invalid guest sync status: exit_reason=3D%s\n", exit_reason_str(run->exit_reason)); =20 - pr_debug("Got sync event from vCPU %d\n", vcpu_id); - vcpu_last_completed_iteration[vcpu_id] =3D current_iteration; + pr_debug("Got sync event from vCPU %d\n", vcpu_idx); + vcpu_last_completed_iteration[vcpu_idx] =3D current_iteration; pr_debug("vCPU %d updated last completed iteration to %d\n", - vcpu_id, vcpu_last_completed_iteration[vcpu_id]); + vcpu->id, vcpu_last_completed_iteration[vcpu_idx]); =20 if (current_iteration) { pages_count +=3D vcpu_args->pages; total =3D timespec_add(total, ts_diff); pr_debug("vCPU %d iteration %d dirty memory time: %ld.%.9lds\n", - vcpu_id, current_iteration, ts_diff.tv_sec, + vcpu_idx, current_iteration, ts_diff.tv_sec, ts_diff.tv_nsec); } else { pr_debug("vCPU %d iteration %d populate memory time: %ld.%.9lds\n", - vcpu_id, current_iteration, ts_diff.tv_sec, + vcpu_idx, current_iteration, ts_diff.tv_sec, ts_diff.tv_nsec); } =20 @@ -78,9 +79,9 @@ static void vcpu_worker(struct perf_test_vcpu_args *vcpu_= args) !READ_ONCE(host_quit)) {} } =20 - avg =3D timespec_div(total, vcpu_last_completed_iteration[vcpu_id]); + avg =3D timespec_div(total, vcpu_last_completed_iteration[vcpu_idx]); pr_debug("\nvCPU %d dirtied 0x%lx pages over %d iterations in %ld.%.9lds.= (Avg %ld.%.9lds/iteration)\n", - vcpu_id, pages_count, vcpu_last_completed_iteration[vcpu_id], + vcpu_idx, pages_count, vcpu_last_completed_iteration[vcpu_idx], total.tv_sec, total.tv_nsec, avg.tv_sec, avg.tv_nsec); } =20 @@ -172,7 +173,6 @@ static void run_test(enum vm_guest_mode mode, void *arg) uint64_t guest_num_pages; uint64_t host_num_pages; uint64_t pages_per_slot; - int vcpu_id; struct timespec start; struct timespec ts_diff; struct timespec get_dirty_log_total =3D (struct timespec){0}; @@ -180,6 +180,7 @@ static void run_test(enum vm_guest_mode mode, void *arg) struct timespec avg; struct kvm_enable_cap cap =3D {}; struct timespec clear_dirty_log_total =3D (struct timespec){0}; + int i; =20 vm =3D perf_test_create_vm(mode, nr_vcpus, guest_percpu_mem_size, p->slots, p->backing_src, @@ -205,15 +206,15 @@ static void run_test(enum vm_guest_mode mode, void *a= rg) host_quit =3D false; =20 clock_gettime(CLOCK_MONOTONIC, &start); - for (vcpu_id =3D 0; vcpu_id < nr_vcpus; vcpu_id++) - vcpu_last_completed_iteration[vcpu_id] =3D -1; + for (i =3D 0; i < nr_vcpus; i++) + vcpu_last_completed_iteration[i] =3D -1; =20 perf_test_start_vcpu_threads(nr_vcpus, vcpu_worker); =20 /* Allow the vCPUs to populate memory */ pr_debug("Starting iteration %d - Populating\n", iteration); - for (vcpu_id =3D 0; vcpu_id < nr_vcpus; vcpu_id++) { - while (READ_ONCE(vcpu_last_completed_iteration[vcpu_id]) !=3D + for (i =3D 0; i < nr_vcpus; i++) { + while (READ_ONCE(vcpu_last_completed_iteration[i]) !=3D iteration) ; } @@ -238,8 +239,8 @@ static void run_test(enum vm_guest_mode mode, void *arg) iteration++; =20 pr_debug("Starting iteration %d\n", iteration); - for (vcpu_id =3D 0; vcpu_id < nr_vcpus; vcpu_id++) { - while (READ_ONCE(vcpu_last_completed_iteration[vcpu_id]) + for (i =3D 0; i < nr_vcpus; i++) { + while (READ_ONCE(vcpu_last_completed_iteration[i]) !=3D iteration) ; } diff --git a/tools/testing/selftests/kvm/include/perf_test_util.h b/tools/t= esting/selftests/kvm/include/perf_test_util.h index a86f953d8d36..9a6cdaed33f6 100644 --- a/tools/testing/selftests/kvm/include/perf_test_util.h +++ b/tools/testing/selftests/kvm/include/perf_test_util.h @@ -25,7 +25,8 @@ struct perf_test_vcpu_args { uint64_t pages; =20 /* Only used by the host userspace part of the vCPU thread */ - int vcpu_id; + struct kvm_vcpu *vcpu; + int vcpu_idx; }; =20 struct perf_test_args { @@ -39,7 +40,7 @@ struct perf_test_args { =20 extern struct perf_test_args perf_test_args; =20 -struct kvm_vm *perf_test_create_vm(enum vm_guest_mode mode, int vcpus, +struct kvm_vm *perf_test_create_vm(enum vm_guest_mode mode, int nr_vcpus, uint64_t vcpu_memory_bytes, int slots, enum vm_mem_backing_src_type backing_src, bool partition_vcpu_memory_access); diff --git a/tools/testing/selftests/kvm/lib/perf_test_util.c b/tools/testi= ng/selftests/kvm/lib/perf_test_util.c index ffbd3664e162..679f64527f1a 100644 --- a/tools/testing/selftests/kvm/lib/perf_test_util.c +++ b/tools/testing/selftests/kvm/lib/perf_test_util.c @@ -17,8 +17,8 @@ struct perf_test_args perf_test_args; static uint64_t guest_test_virt_mem =3D DEFAULT_GUEST_TEST_MEM; =20 struct vcpu_thread { - /* The id of the vCPU. */ - int vcpu_id; + /* The index of the vCPU. */ + int vcpu_idx; =20 /* The pthread backing the vCPU. */ pthread_t thread; @@ -36,24 +36,26 @@ static void (*vcpu_thread_fn)(struct perf_test_vcpu_arg= s *); /* Set to true once all vCPU threads are up and running. */ static bool all_vcpu_threads_running; =20 +static struct kvm_vcpu *vcpus[KVM_MAX_VCPUS]; + /* * Continuously write to the first 8 bytes of each page in the * specified region. */ -static void guest_code(uint32_t vcpu_id) +static void guest_code(uint32_t vcpu_idx) { struct perf_test_args *pta =3D &perf_test_args; - struct perf_test_vcpu_args *vcpu_args =3D &pta->vcpu_args[vcpu_id]; + struct perf_test_vcpu_args *vcpu_args =3D &pta->vcpu_args[vcpu_idx]; uint64_t gva; uint64_t pages; int i; =20 - /* Make sure vCPU args data structure is not corrupt. */ - GUEST_ASSERT(vcpu_args->vcpu_id =3D=3D vcpu_id); - gva =3D vcpu_args->gva; pages =3D vcpu_args->pages; =20 + /* Make sure vCPU args data structure is not corrupt. */ + GUEST_ASSERT(vcpu_args->vcpu_idx =3D=3D vcpu_idx); + while (true) { for (i =3D 0; i < pages; i++) { uint64_t addr =3D gva + (i * pta->guest_page_size); @@ -68,40 +70,43 @@ static void guest_code(uint32_t vcpu_id) } } =20 -void perf_test_setup_vcpus(struct kvm_vm *vm, int vcpus, +void perf_test_setup_vcpus(struct kvm_vm *vm, int nr_vcpus, + struct kvm_vcpu *vcpus[], uint64_t vcpu_memory_bytes, bool partition_vcpu_memory_access) { struct perf_test_args *pta =3D &perf_test_args; struct perf_test_vcpu_args *vcpu_args; - int vcpu_id; + int i; =20 - for (vcpu_id =3D 0; vcpu_id < vcpus; vcpu_id++) { - vcpu_args =3D &pta->vcpu_args[vcpu_id]; + for (i =3D 0; i < nr_vcpus; i++) { + vcpu_args =3D &pta->vcpu_args[i]; + + vcpu_args->vcpu =3D vcpus[i]; + vcpu_args->vcpu_idx =3D i; =20 - vcpu_args->vcpu_id =3D vcpu_id; if (partition_vcpu_memory_access) { vcpu_args->gva =3D guest_test_virt_mem + - (vcpu_id * vcpu_memory_bytes); + (i * vcpu_memory_bytes); vcpu_args->pages =3D vcpu_memory_bytes / pta->guest_page_size; - vcpu_args->gpa =3D pta->gpa + (vcpu_id * vcpu_memory_bytes); + vcpu_args->gpa =3D pta->gpa + (i * vcpu_memory_bytes); } else { vcpu_args->gva =3D guest_test_virt_mem; - vcpu_args->pages =3D (vcpus * vcpu_memory_bytes) / + vcpu_args->pages =3D (nr_vcpus * vcpu_memory_bytes) / pta->guest_page_size; vcpu_args->gpa =3D pta->gpa; } =20 - vcpu_args_set(vm, vcpu_id, 1, vcpu_id); + vcpu_args_set(vm, vcpus[i]->id, 1, i); =20 pr_debug("Added VCPU %d with test mem gpa [%lx, %lx)\n", - vcpu_id, vcpu_args->gpa, vcpu_args->gpa + + i, vcpu_args->gpa, vcpu_args->gpa + (vcpu_args->pages * pta->guest_page_size)); } } =20 -struct kvm_vm *perf_test_create_vm(enum vm_guest_mode mode, int vcpus, +struct kvm_vm *perf_test_create_vm(enum vm_guest_mode mode, int nr_vcpus, uint64_t vcpu_memory_bytes, int slots, enum vm_mem_backing_src_type backing_src, bool partition_vcpu_memory_access) @@ -124,7 +129,7 @@ struct kvm_vm *perf_test_create_vm(enum vm_guest_mode m= ode, int vcpus, pta->guest_page_size =3D vm_guest_mode_params[mode].page_size; =20 guest_num_pages =3D vm_adjust_num_guest_pages(mode, - (vcpus * vcpu_memory_bytes) / pta->guest_page_size); + (nr_vcpus * vcpu_memory_bytes) / pta->guest_page_size); =20 TEST_ASSERT(vcpu_memory_bytes % getpagesize() =3D=3D 0, "Guest memory size is not host page size aligned."); @@ -139,8 +144,8 @@ struct kvm_vm *perf_test_create_vm(enum vm_guest_mode m= ode, int vcpus, * The memory is also added to memslot 0, but that's a benign side * effect as KVM allows aliasing HVAs in meslots. */ - vm =3D __vm_create_with_vcpus(mode, vcpus, DEFAULT_GUEST_PHY_PAGES, - guest_num_pages, 0, guest_code, NULL); + vm =3D __vm_create_with_vcpus(mode, nr_vcpus, DEFAULT_GUEST_PHY_PAGES, + guest_num_pages, 0, guest_code, vcpus); =20 pta->vm =3D vm; =20 @@ -151,8 +156,8 @@ struct kvm_vm *perf_test_create_vm(enum vm_guest_mode m= ode, int vcpus, TEST_ASSERT(guest_num_pages < vm_get_max_gfn(vm), "Requested more guest memory than address space allows.\n" " guest pages: %" PRIx64 " max gfn: %" PRIx64 - " vcpus: %d wss: %" PRIx64 "]\n", - guest_num_pages, vm_get_max_gfn(vm), vcpus, + " nr_vcpus: %d wss: %" PRIx64 "]\n", + guest_num_pages, vm_get_max_gfn(vm), nr_vcpus, vcpu_memory_bytes); =20 pta->gpa =3D (vm_get_max_gfn(vm) - guest_num_pages) * pta->guest_page_siz= e; @@ -176,7 +181,8 @@ struct kvm_vm *perf_test_create_vm(enum vm_guest_mode m= ode, int vcpus, /* Do mapping for the demand paging memory slot */ virt_map(vm, guest_test_virt_mem, pta->gpa, guest_num_pages); =20 - perf_test_setup_vcpus(vm, vcpus, vcpu_memory_bytes, partition_vcpu_memory= _access); + perf_test_setup_vcpus(vm, nr_vcpus, vcpus, vcpu_memory_bytes, + partition_vcpu_memory_access); =20 ucall_init(vm, NULL); =20 @@ -213,39 +219,40 @@ static void *vcpu_thread_main(void *data) while (!READ_ONCE(all_vcpu_threads_running)) ; =20 - vcpu_thread_fn(&perf_test_args.vcpu_args[vcpu->vcpu_id]); + vcpu_thread_fn(&perf_test_args.vcpu_args[vcpu->vcpu_idx]); =20 return NULL; } =20 -void perf_test_start_vcpu_threads(int vcpus, void (*vcpu_fn)(struct perf_t= est_vcpu_args *)) +void perf_test_start_vcpu_threads(int nr_vcpus, + void (*vcpu_fn)(struct perf_test_vcpu_args *)) { - int vcpu_id; + int i; =20 vcpu_thread_fn =3D vcpu_fn; WRITE_ONCE(all_vcpu_threads_running, false); =20 - for (vcpu_id =3D 0; vcpu_id < vcpus; vcpu_id++) { - struct vcpu_thread *vcpu =3D &vcpu_threads[vcpu_id]; + for (i =3D 0; i < nr_vcpus; i++) { + struct vcpu_thread *vcpu =3D &vcpu_threads[i]; =20 - vcpu->vcpu_id =3D vcpu_id; + vcpu->vcpu_idx =3D i; WRITE_ONCE(vcpu->running, false); =20 pthread_create(&vcpu->thread, NULL, vcpu_thread_main, vcpu); } =20 - for (vcpu_id =3D 0; vcpu_id < vcpus; vcpu_id++) { - while (!READ_ONCE(vcpu_threads[vcpu_id].running)) + for (i =3D 0; i < nr_vcpus; i++) { + while (!READ_ONCE(vcpu_threads[i].running)) ; } =20 WRITE_ONCE(all_vcpu_threads_running, true); } =20 -void perf_test_join_vcpu_threads(int vcpus) +void perf_test_join_vcpu_threads(int nr_vcpus) { - int vcpu_id; + int i; =20 - for (vcpu_id =3D 0; vcpu_id < vcpus; vcpu_id++) - pthread_join(vcpu_threads[vcpu_id].thread, NULL); + for (i =3D 0; i < nr_vcpus; i++) + pthread_join(vcpu_threads[i].thread, NULL); } diff --git a/tools/testing/selftests/kvm/memslot_modification_stress_test.c= b/tools/testing/selftests/kvm/memslot_modification_stress_test.c index 1410d0a9141a..a3efb3182119 100644 --- a/tools/testing/selftests/kvm/memslot_modification_stress_test.c +++ b/tools/testing/selftests/kvm/memslot_modification_stress_test.c @@ -38,19 +38,19 @@ static bool run_vcpus =3D true; =20 static void vcpu_worker(struct perf_test_vcpu_args *vcpu_args) { - int ret; - int vcpu_id =3D vcpu_args->vcpu_id; + struct kvm_vcpu *vcpu =3D vcpu_args->vcpu; struct kvm_vm *vm =3D perf_test_args.vm; struct kvm_run *run; + int ret; =20 - run =3D vcpu_state(vm, vcpu_id); + run =3D vcpu->run; =20 /* Let the guest access its memory until a stop signal is received */ while (READ_ONCE(run_vcpus)) { - ret =3D _vcpu_run(vm, vcpu_id); + ret =3D _vcpu_run(vm, vcpu->id); TEST_ASSERT(ret =3D=3D 0, "vcpu_run failed: %d\n", ret); =20 - if (get_ucall(vm, vcpu_id, NULL) =3D=3D UCALL_SYNC) + if (get_ucall(vm, vcpu->id, NULL) =3D=3D UCALL_SYNC) continue; =20 TEST_ASSERT(false, --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 2D691C433EF for ; Fri, 11 Mar 2022 06:00:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346284AbiCKGBa (ORCPT ); Fri, 11 Mar 2022 01:01:30 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34874 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346781AbiCKFzM (ORCPT ); Fri, 11 Mar 2022 00:55:12 -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 A28B71045B3 for ; Thu, 10 Mar 2022 21:53:54 -0800 (PST) Received: by mail-pg1-x549.google.com with SMTP id v4-20020a63f844000000b003745fd0919aso4213867pgj.20 for ; Thu, 10 Mar 2022 21:53:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=n6MVcBp9xF00LuCwzBhnfGyYw6cwlL4e+hz2gsv1tH0=; b=pyxdEO9F3FP7xAgGgt1/oJekPIzt1FBQXaReU39K22pjrZhYTlxK/j6Mt5ctVKCZRt CAeL/cSURQpYTH6VT5rGmjVaYf0XUUnyTB9+v25Zyo/MmjXXury7MgJGh9cUNgG3JfOW uo886/We5zDTTFWSWp93RF1x4qv8EbBzJKQnbRlvUNnpegHr+6wk57DEfaFBesGRtkzV M92gmNtyMT+/WwbPF8SgFUtU78lHwF+kBRx+tsBUdp7zShYRP/2EakgWh6P8dBoINp/w WLMdVjoZ5Jl0xuC425RetQpmnGchCP01Ayft8uG1WzqPYgeV7cdap8pINeptigwv/aqR gPEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=n6MVcBp9xF00LuCwzBhnfGyYw6cwlL4e+hz2gsv1tH0=; b=hsIdk24drW6xVuZuBd9aTzk8OdwwSHn4mFJBJ+zPRvx1kt9V6hoscb36Wv2DlWoZH8 WEoXLIfZ5PeISFpp4GkBZKyfsYr0KlrKvFlW1z+/ZgjpSr4ogbvyoVosF52Jp4OdKWka 3hM4NLYN5+jrCoC6IuZbtXxmjPaH44sRZ/Vv8YGvDA3q7kWIrthIa8NFyAB2Nn5b22O1 84tmgfc1XhMvRKNNytVstgMhLYb325CcmYINrnc6c2FPQJeqOQHE/BNQr1QgfogyxQKO hm8xyWCbSBTh3NT/fFtdQEY3QpgMaEacsUeDOyskAoIcQ1pt7AwdmjZfmFbmzrx5OB3Z QCQw== X-Gm-Message-State: AOAM531FdqIom/BAbLXJ3xOppNu7kXCf5FlOrxZDkSnvijljDWzIgHJY ujxoO5gZ9QcLG4got4yjFeR9hlFtYRXs3jNRBQ449RKGDk2lw9jrJIsNdKIshWGwOevHNOdiA99 Zi2XKW3yrQk+oHGIbFWEgu9+0fgeba3xnUgf4DkXxSmG/LkGV0QweOY1hcvrOePLA0GtZ6w== X-Google-Smtp-Source: ABdhPJz/c7ZdvJfr7lmo/fQkf9d/zyTPhjXn+vUCORaETFy5iwpKKTesUOeCTuNUvdpKDg/QcrkglxaFXLs= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:90a:5ae4:b0:1bf:9c61:6973 with SMTP id n91-20020a17090a5ae400b001bf9c616973mr9155539pji.73.1646978034000; Thu, 10 Mar 2022 21:53:54 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:51 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-101-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 100/105] KVM: selftests: Remove vcpu_get() usage from dirty_log_test From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- tools/testing/selftests/kvm/dirty_log_test.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/tools/testing/selftests/kvm/dirty_log_test.c b/tools/testing/s= elftests/kvm/dirty_log_test.c index e480b503c08b..7bc2c027492d 100644 --- a/tools/testing/selftests/kvm/dirty_log_test.c +++ b/tools/testing/selftests/kvm/dirty_log_test.c @@ -668,7 +668,7 @@ static void vm_dirty_log_verify(enum vm_guest_mode mode= , unsigned long *bmap) } } =20 -static struct kvm_vm *create_vm(enum vm_guest_mode mode, uint32_t vcpuid, +static struct kvm_vm *create_vm(enum vm_guest_mode mode, struct kvm_vcpu *= *vcpu, uint64_t extra_mem_pages, void *guest_code) { struct kvm_vm *vm; @@ -682,7 +682,7 @@ static struct kvm_vm *create_vm(enum vm_guest_mode mode= , uint32_t vcpuid, vm_create_irqchip(vm); #endif log_mode_create_vm_done(vm); - vm_vcpu_add(vm, vcpuid, guest_code); + *vcpu =3D vm_vcpu_add(vm, 0, guest_code); return vm; } =20 @@ -716,10 +716,8 @@ static void run_test(enum vm_guest_mode mode, void *ar= g) * (e.g., 64K page size guest will need even less memory for * page tables). */ - vm =3D create_vm(mode, 0, - 2ul << (DIRTY_MEM_BITS - PAGE_SHIFT_4K), - guest_code); - vcpu =3D vcpu_get(vm, 0); + vm =3D create_vm(mode, &vcpu, + 2ul << (DIRTY_MEM_BITS - PAGE_SHIFT_4K), guest_code); =20 guest_page_size =3D vm_get_page_size(vm); /* --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 95E2CC433F5 for ; Fri, 11 Mar 2022 06:01:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346899AbiCKGCQ (ORCPT ); Fri, 11 Mar 2022 01:02:16 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34696 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346788AbiCKFzM (ORCPT ); Fri, 11 Mar 2022 00:55:12 -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 0DB1D10529C for ; Thu, 10 Mar 2022 21:53:56 -0800 (PST) Received: by mail-pj1-x1049.google.com with SMTP id mt1-20020a17090b230100b001beef010919so7272266pjb.7 for ; Thu, 10 Mar 2022 21:53:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=PHifpinCKbWrFK0UtCfVbKILS2hQoNnJeB9lRg5RHRQ=; b=ArbrkDj/nFgmvkL3MQLRyrd58IQJFnbtgXd03N48lGkFYfBcxp6HujrX1j+wFl9h9P F/KmGtaN6pohWfhmWC1SQnn+uwf3xh0euTouVjbOkAAkjJoAdSlJFwUxzZN3wVo1FIQa mrd+5l8sjXLB5FnzpI8t4JhlZlwy/IITthf8t0kfPlrwPX74t5+NWOoHDzrKu+voPM7j TBiFWA0gIlHYKeJFD1tMgqa5i/VQaWUh5t+7OWrI+Yrg8ifuJzPJnUxyrPRa4+bXA0Nk 7t5KIFpUVJ4lQnvs+Blxagf4gwydJA452CeOl/8efekIrKlfEisClY0/2e4NlYUDSPmO 61JQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=PHifpinCKbWrFK0UtCfVbKILS2hQoNnJeB9lRg5RHRQ=; b=Cbj1MUb+w0fEgPjSgh74huTzsUivtUi8I/AIVI2pdHFsd+CzXjw9jWxTwTq4xE1z+A z43wyTjNgGKn75nBEXS1MeCB20MXfDrqFvHTrO32q2HoL3pryeX9eM5DKryRWZB1UCph ij39Cyno/AYZtwZW+GEkWuWZfJfFp4IlpRaLwk+IsZDEWFmfHsoccHd/9LCP3MN0D3D7 YVCYCG5QN2HWcvX/vPIiN3ua2AnDxJLQSBaRKeIMyylEIcMuHA5Pczfpe9ZmhZ1nVJo8 0yZWhN+Us+FGyjMo+x+hsQEE5fovrdbKQdgxnUEal5Cr9rkfBw/zTZqDbAsycY2s23tz SZmw== X-Gm-Message-State: AOAM532+GqGT0t32ZpygZYUzN8hHipfy6f0gqXwIbe/wY0ZRBEPn1dh+ 32rUIecFiiVulXvBLCmYpUIYeZwq5hPhEVGnVIsCtrXte07kKs0iT5TAYsijVkYlWU12lNJXN05 4WBzHWKHKkpCXg8QAorZiw5TVuQCyRgz2ZzI6pFq75E/FXIJqWnlllN4pkP7zENpcnDd3Bw== X-Google-Smtp-Source: ABdhPJwH99CncSlMl5QqboY65EPZ1txiNZoQr5PWUVmiu5/hqgtuUTJzrP2+jAGVeHcYv/WkEY4xGa4euwg= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:aa7:85d8:0:b0:4f6:8ae9:16a8 with SMTP id z24-20020aa785d8000000b004f68ae916a8mr8755179pfn.15.1646978035776; Thu, 10 Mar 2022 21:53:55 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:52 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-102-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 101/105] KVM: selftests: Require vCPU output array when creating VM with vCPUs From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- tools/testing/selftests/kvm/lib/kvm_util.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index 861d18ed868d..3a09ed1a02d2 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -311,10 +311,11 @@ struct kvm_vm *__vm_create_with_vcpus(enum vm_guest_m= ode mode, uint32_t nr_vcpus struct kvm_vcpu *vcpus[]) { uint64_t vcpu_pages, extra_pg_pages, pages; - struct kvm_vcpu *vcpu; struct kvm_vm *vm; int i; =20 + TEST_ASSERT(!nr_vcpus || vcpus, "Must provide vCPU array"); + /* Force slot0 memory size not small than DEFAULT_GUEST_PHY_PAGES */ if (slot0_mem_pages < DEFAULT_GUEST_PHY_PAGES) slot0_mem_pages =3D DEFAULT_GUEST_PHY_PAGES; @@ -342,11 +343,8 @@ struct kvm_vm *__vm_create_with_vcpus(enum vm_guest_mo= de mode, uint32_t nr_vcpus vm_create_irqchip(vm); #endif =20 - for (i =3D 0; i < nr_vcpus; ++i) { - vcpu =3D vm_vcpu_add(vm, i, guest_code); - if (vcpus) - vcpus[i] =3D vcpu; - } + for (i =3D 0; i < nr_vcpus; ++i) + vcpus[i] =3D vm_vcpu_add(vm, i, guest_code); =20 return vm; } --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 3C18AC433F5 for ; Fri, 11 Mar 2022 06:00:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346926AbiCKGBo (ORCPT ); Fri, 11 Mar 2022 01:01:44 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35062 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346792AbiCKFzM (ORCPT ); Fri, 11 Mar 2022 00:55:12 -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 0DC971052A7 for ; Thu, 10 Mar 2022 21:53:57 -0800 (PST) Received: by mail-pg1-x54a.google.com with SMTP id j5-20020a63e745000000b00378c359fac3so4235653pgk.2 for ; Thu, 10 Mar 2022 21:53:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=q/iAW9Sm7w7qn4Hfdfj6elEMrkOnDPuzJvv+p1xQZw4=; b=c82pLz8RTxBbZEZJEFFlCtfYvZGy4UOctTbEJQL9+fGG4PVUq1khB4aeHlCQMmKtCH /vSDWspXRHdxt4vmMotDtOxJNdqrjT0H/ySKfc3O4Ah79O0hUGGPQVNqsqUP0TQoL3Bz hqHp3EbUI9zsaQIHsm2GYhk6ev34pgvrzGQnhouZxmE7YQQFfcMT95zBiS5Eqg5PDdr7 Lmi7sxUsy7U32+RkUSxPcrfcEKZX0ncbH/DZbuF9y/Bl8tD8CGo4bM4vahXoPxwoGSxD kHcP7YUnpMs+jCCD9IU305H+i0z11wBx1jXIFXniY8mz8dj+DtWzE+DxcZz5dNlKs1Ey icqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=q/iAW9Sm7w7qn4Hfdfj6elEMrkOnDPuzJvv+p1xQZw4=; b=jlWBWschOGPN3lGq5okVhx602tC8MGk6q++rAgDXPW344ToXki62i6+57IMijfKxc2 scKM+9baKX/zSwfmJOg8YYu+Trd2ZWa4xwdQ7wjhfffjXUzZDGdQuzoFKcg1azduLd1I 53eKhoGKPz5Jbuo3sD/IO86Qu+xT1XCeqwGtRE+LZyPylNL0dHfI4qE5Plb/gqtNwstF AWaozYiQAKow/P2+SdWyvp2cNwIjPaFCjFyaMJKp/3kV8khhF8BErmuQTWe809jqrZ0P 7KERlIlVL6X/9V/PT+toCihYUsf6NvhRRsjy98RV3KNeA9JPQBQsqAWz+ZMmaviorRfZ 80Cg== X-Gm-Message-State: AOAM530sQxG4Id1t8hJtW8GmZGsT1oOf0V37EMk8XdfZ+5NoOd61JEwb pp0PuDIMVwHY+yVNMdDuzTNf49cMY9XhVbbzkC023CatJQaCHOSgywHTnU9P7VTqHZY/tRypFLO cgh15i6+ZX6fS36ma+V67JYXDbF5bLSJ9b2OnYkVGN6K0I9BTqaPAb6AfeyHXkGGE35tWpQ== X-Google-Smtp-Source: ABdhPJxyh/AiYW3Yfqqlkx/SGNFc8MAEMkZ5YhpdrCZBWgF9iMFmd6rEdjRvDbweq6aX4uK7pOInZlC1kwU= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:902:e5c2:b0:151:cc18:9ea9 with SMTP id u2-20020a170902e5c200b00151cc189ea9mr8470832plf.24.1646978037195; Thu, 10 Mar 2022 21:53:57 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:53 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-103-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 102/105] KVM: selftest: Purge vm+vcpu_id == vcpu silliness From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/aarch64/arch_timer.c | 10 +- .../selftests/kvm/aarch64/debug-exceptions.c | 8 +- .../selftests/kvm/aarch64/get-reg-list.c | 14 +- .../selftests/kvm/aarch64/psci_cpu_on_test.c | 12 +- .../testing/selftests/kvm/aarch64/vgic_init.c | 2 +- .../testing/selftests/kvm/aarch64/vgic_irq.c | 8 +- .../selftests/kvm/access_tracking_perf_test.c | 4 +- .../selftests/kvm/demand_paging_test.c | 5 +- .../selftests/kvm/dirty_log_perf_test.c | 7 +- tools/testing/selftests/kvm/dirty_log_test.c | 10 +- .../selftests/kvm/hardware_disable_test.c | 2 +- .../selftests/kvm/include/aarch64/processor.h | 14 +- .../selftests/kvm/include/kvm_util_base.h | 192 +++++++++--------- .../selftests/kvm/include/riscv/processor.h | 8 +- .../selftests/kvm/include/ucall_common.h | 2 +- .../selftests/kvm/include/x86_64/evmcs.h | 2 +- .../selftests/kvm/include/x86_64/processor.h | 39 ++-- .../selftests/kvm/kvm_binary_stats_test.c | 2 +- .../selftests/kvm/kvm_page_table_test.c | 7 +- .../selftests/kvm/lib/aarch64/processor.c | 45 ++-- .../testing/selftests/kvm/lib/aarch64/ucall.c | 8 +- tools/testing/selftests/kvm/lib/kvm_util.c | 165 ++++----------- .../selftests/kvm/lib/perf_test_util.c | 2 +- .../selftests/kvm/lib/riscv/processor.c | 95 +++++---- tools/testing/selftests/kvm/lib/riscv/ucall.c | 6 +- .../kvm/lib/s390x/diag318_test_handler.c | 2 +- .../selftests/kvm/lib/s390x/processor.c | 22 +- tools/testing/selftests/kvm/lib/s390x/ucall.c | 8 +- .../selftests/kvm/lib/x86_64/processor.c | 103 ++++------ .../testing/selftests/kvm/lib/x86_64/ucall.c | 10 +- tools/testing/selftests/kvm/lib/x86_64/vmx.c | 4 +- .../kvm/memslot_modification_stress_test.c | 5 +- .../testing/selftests/kvm/memslot_perf_test.c | 4 +- tools/testing/selftests/kvm/rseq_test.c | 4 +- tools/testing/selftests/kvm/s390x/memop.c | 24 +-- tools/testing/selftests/kvm/s390x/resets.c | 28 +-- .../selftests/kvm/s390x/sync_regs_test.c | 22 +- .../selftests/kvm/set_memory_region_test.c | 8 +- tools/testing/selftests/kvm/steal_time.c | 20 +- .../kvm/system_counter_offset_test.c | 13 +- tools/testing/selftests/kvm/x86_64/amx_test.c | 22 +- .../testing/selftests/kvm/x86_64/cpuid_test.c | 14 +- .../kvm/x86_64/cr4_cpuid_sync_test.c | 8 +- .../testing/selftests/kvm/x86_64/debug_regs.c | 30 +-- .../kvm/x86_64/emulator_error_test.c | 20 +- .../testing/selftests/kvm/x86_64/evmcs_test.c | 28 +-- .../selftests/kvm/x86_64/hyperv_clock.c | 14 +- .../selftests/kvm/x86_64/hyperv_cpuid.c | 8 +- .../selftests/kvm/x86_64/hyperv_features.c | 28 +-- .../selftests/kvm/x86_64/hyperv_svm_test.c | 8 +- .../selftests/kvm/x86_64/kvm_clock_test.c | 6 +- .../selftests/kvm/x86_64/kvm_pv_test.c | 10 +- .../selftests/kvm/x86_64/mmu_role_test.c | 10 +- .../selftests/kvm/x86_64/platform_info_test.c | 14 +- .../kvm/x86_64/pmu_event_filter_test.c | 6 +- .../selftests/kvm/x86_64/set_boot_cpu_id.c | 4 +- .../selftests/kvm/x86_64/set_sregs_test.c | 16 +- tools/testing/selftests/kvm/x86_64/smm_test.c | 18 +- .../testing/selftests/kvm/x86_64/state_test.c | 18 +- .../selftests/kvm/x86_64/svm_int_ctl_test.c | 8 +- .../selftests/kvm/x86_64/svm_vmcall_test.c | 6 +- .../selftests/kvm/x86_64/sync_regs_test.c | 36 ++-- .../selftests/kvm/x86_64/tsc_msrs_test.c | 14 +- .../selftests/kvm/x86_64/userspace_io_test.c | 8 +- .../kvm/x86_64/userspace_msr_exit_test.c | 22 +- .../kvm/x86_64/vmx_apic_access_test.c | 6 +- .../kvm/x86_64/vmx_close_while_nested_test.c | 6 +- .../selftests/kvm/x86_64/vmx_dirty_log_test.c | 6 +- .../vmx_exception_with_invalid_guest_state.c | 10 +- .../x86_64/vmx_invalid_nested_guest_state.c | 12 +- .../kvm/x86_64/vmx_nested_tsc_scaling_test.c | 11 +- .../selftests/kvm/x86_64/vmx_pmu_msrs_test.c | 20 +- .../kvm/x86_64/vmx_preemption_timer_test.c | 18 +- .../kvm/x86_64/vmx_set_nested_state_test.c | 12 +- .../kvm/x86_64/vmx_tsc_adjust_test.c | 6 +- .../selftests/kvm/x86_64/xapic_ipi_test.c | 10 +- .../selftests/kvm/x86_64/xen_shinfo_test.c | 20 +- .../selftests/kvm/x86_64/xen_vmcall_test.c | 6 +- .../selftests/kvm/x86_64/xss_msr_test.c | 6 +- 79 files changed, 676 insertions(+), 795 deletions(-) diff --git a/tools/testing/selftests/kvm/aarch64/arch_timer.c b/tools/testi= ng/selftests/kvm/aarch64/arch_timer.c index de9b5ecea54e..152619cfed1c 100644 --- a/tools/testing/selftests/kvm/aarch64/arch_timer.c +++ b/tools/testing/selftests/kvm/aarch64/arch_timer.c @@ -218,14 +218,14 @@ static void *test_vcpu_run(void *arg) struct kvm_vm *vm =3D vcpu->vm; struct test_vcpu_shared_data *shared_data =3D &vcpu_shared_data[vcpu_idx]; =20 - vcpu_run(vm, vcpu->id); + vcpu_run(vcpu); =20 /* Currently, any exit from guest is an indication of completion */ pthread_mutex_lock(&vcpu_done_map_lock); set_bit(vcpu_idx, vcpu_done_map); pthread_mutex_unlock(&vcpu_done_map_lock); =20 - switch (get_ucall(vm, vcpu->id, &uc)) { + switch (get_ucall(vcpu, &uc)) { case UCALL_SYNC: case UCALL_DONE: break; @@ -345,9 +345,9 @@ static void test_run(struct kvm_vm *vm) static void test_init_timer_irq(struct kvm_vm *vm) { /* Timer initid should be same for all the vCPUs, so query only vCPU-0 */ - vcpu_device_attr_get(vm, vcpus[0]->id, KVM_ARM_VCPU_TIMER_CTRL, + vcpu_device_attr_get(vcpus[0], KVM_ARM_VCPU_TIMER_CTRL, KVM_ARM_VCPU_TIMER_IRQ_PTIMER, &ptimer_irq); - vcpu_device_attr_get(vm, vcpus[0]->id, KVM_ARM_VCPU_TIMER_CTRL, + vcpu_device_attr_get(vcpus[0], KVM_ARM_VCPU_TIMER_CTRL, KVM_ARM_VCPU_TIMER_IRQ_VTIMER, &vtimer_irq); =20 sync_global_to_guest(vm, ptimer_irq); @@ -368,7 +368,7 @@ static struct kvm_vm *test_vm_create(void) vm_install_exception_handler(vm, VECTOR_IRQ_CURRENT, guest_irq_handler); =20 for (i =3D 0; i < nr_vcpus; i++) - vcpu_init_descriptor_tables(vm, vcpus[i]->id); + vcpu_init_descriptor_tables(vcpus[i]); =20 ucall_init(vm, NULL); test_init_timer_irq(vm); diff --git a/tools/testing/selftests/kvm/aarch64/debug-exceptions.c b/tools= /testing/selftests/kvm/aarch64/debug-exceptions.c index d27f30dc57b6..52a983a89d75 100644 --- a/tools/testing/selftests/kvm/aarch64/debug-exceptions.c +++ b/tools/testing/selftests/kvm/aarch64/debug-exceptions.c @@ -188,7 +188,7 @@ static int debug_version(struct kvm_vcpu *vcpu) { uint64_t id_aa64dfr0; =20 - get_reg(vcpu->vm, vcpu->id, KVM_ARM64_SYS_REG(SYS_ID_AA64DFR0_EL1), &id_a= a64dfr0); + get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_ID_AA64DFR0_EL1), &id_aa64dfr0); return id_aa64dfr0 & 0xf; } =20 @@ -203,7 +203,7 @@ int main(int argc, char *argv[]) ucall_init(vm, NULL); =20 vm_init_descriptor_tables(vm); - vcpu_init_descriptor_tables(vm, vcpu->id); + vcpu_init_descriptor_tables(vcpu); =20 if (debug_version(vcpu) < 6) { print_skip("Armv8 debug architecture not supported."); @@ -223,9 +223,9 @@ int main(int argc, char *argv[]) ESR_EC_SVC64, guest_svc_handler); =20 for (stage =3D 0; stage < 7; stage++) { - vcpu_run(vm, vcpu->id); + vcpu_run(vcpu); =20 - switch (get_ucall(vm, vcpu->id, &uc)) { + switch (get_ucall(vcpu, &uc)) { case UCALL_SYNC: TEST_ASSERT(uc.args[1] =3D=3D stage, "Stage %d: Unexpected sync ucall, got %lx", diff --git a/tools/testing/selftests/kvm/aarch64/get-reg-list.c b/tools/tes= ting/selftests/kvm/aarch64/get-reg-list.c index 56da85f3851b..4bee11e2538d 100644 --- a/tools/testing/selftests/kvm/aarch64/get-reg-list.c +++ b/tools/testing/selftests/kvm/aarch64/get-reg-list.c @@ -372,7 +372,7 @@ static void prepare_vcpu_init(struct vcpu_config *c, st= ruct kvm_vcpu_init *init) init->features[s->feature / 32] |=3D 1 << (s->feature % 32); } =20 -static void finalize_vcpu(struct kvm_vm *vm, uint32_t vcpuid, struct vcpu_= config *c) +static void finalize_vcpu(struct kvm_vcpu *vcpu, struct vcpu_config *c) { struct reg_sublist *s; int feature; @@ -380,7 +380,7 @@ static void finalize_vcpu(struct kvm_vm *vm, uint32_t v= cpuid, struct vcpu_config for_each_sublist(c, s) { if (s->finalize) { feature =3D s->feature; - vcpu_ioctl(vm, vcpuid, KVM_ARM_VCPU_FINALIZE, &feature); + vcpu_ioctl(vcpu, KVM_ARM_VCPU_FINALIZE, &feature); } } } @@ -415,9 +415,9 @@ static void run_test(struct vcpu_config *c) vm =3D vm_create(DEFAULT_GUEST_PHY_PAGES); prepare_vcpu_init(c, &init); vcpu =3D aarch64_vcpu_add(vm, 0, &init, NULL); - finalize_vcpu(vm, vcpu->id, c); + finalize_vcpu(vcpu, c); =20 - reg_list =3D vcpu_get_reg_list(vm, vcpu->id); + reg_list =3D vcpu_get_reg_list(vcpu); =20 if (fixup_core_regs) core_reg_fixup(); @@ -453,7 +453,7 @@ static void run_test(struct vcpu_config *c) bool reject_reg =3D false; int ret; =20 - ret =3D __vcpu_ioctl(vm, vcpu->id, KVM_GET_ONE_REG, ®); + ret =3D __vcpu_ioctl(vcpu, KVM_GET_ONE_REG, ®); if (ret) { printf("%s: Failed to get ", config_name(c)); print_reg(c, reg.id); @@ -465,7 +465,7 @@ static void run_test(struct vcpu_config *c) for_each_sublist(c, s) { if (s->rejects_set && find_reg(s->rejects_set, s->rejects_set_n, reg.id= )) { reject_reg =3D true; - ret =3D __vcpu_ioctl(vm, vcpu->id, KVM_SET_ONE_REG, ®); + ret =3D __vcpu_ioctl(vcpu, KVM_SET_ONE_REG, ®); if (ret !=3D -1 || errno !=3D EPERM) { printf("%s: Failed to reject (ret=3D%d, errno=3D%d) ", config_name(c)= , ret, errno); print_reg(c, reg.id); @@ -477,7 +477,7 @@ static void run_test(struct vcpu_config *c) } =20 if (!reject_reg) { - ret =3D __vcpu_ioctl(vm, vcpu->id, KVM_SET_ONE_REG, ®); + ret =3D __vcpu_ioctl(vcpu, KVM_SET_ONE_REG, ®); if (ret) { printf("%s: Failed to set ", config_name(c)); print_reg(c, reg.id); diff --git a/tools/testing/selftests/kvm/aarch64/psci_cpu_on_test.c b/tools= /testing/selftests/kvm/aarch64/psci_cpu_on_test.c index 226603597917..278f63ff9a17 100644 --- a/tools/testing/selftests/kvm/aarch64/psci_cpu_on_test.c +++ b/tools/testing/selftests/kvm/aarch64/psci_cpu_on_test.c @@ -89,11 +89,11 @@ int main(void) init.features[0] |=3D (1 << KVM_ARM_VCPU_POWER_OFF); vcpu1 =3D aarch64_vcpu_add(vm, 1, &init, guest_main); =20 - get_reg(vm, vcpu1->id, KVM_ARM64_SYS_REG(SYS_MPIDR_EL1), &target_mpidr); - vcpu_args_set(vm, vcpu0->id, 1, target_mpidr & MPIDR_HWID_BITMASK); - vcpu_run(vm, vcpu0->id); + get_reg(vcpu1, KVM_ARM64_SYS_REG(SYS_MPIDR_EL1), &target_mpidr); + vcpu_args_set(vcpu0, 1, target_mpidr & MPIDR_HWID_BITMASK); + vcpu_run(vcpu0); =20 - switch (get_ucall(vm, vcpu0->id, &uc)) { + switch (get_ucall(vcpu0, &uc)) { case UCALL_DONE: break; case UCALL_ABORT: @@ -104,8 +104,8 @@ int main(void) TEST_FAIL("Unhandled ucall: %lu", uc.cmd); } =20 - get_reg(vm, vcpu1->id, ARM64_CORE_REG(regs.pc), &obs_pc); - get_reg(vm, vcpu1->id, ARM64_CORE_REG(regs.regs[0]), &obs_x0); + get_reg(vcpu1, ARM64_CORE_REG(regs.pc), &obs_pc); + get_reg(vcpu1, ARM64_CORE_REG(regs.regs[0]), &obs_x0); =20 TEST_ASSERT(obs_pc =3D=3D CPU_ON_ENTRY_ADDR, "unexpected target cpu pc: %lx (expected: %lx)", diff --git a/tools/testing/selftests/kvm/aarch64/vgic_init.c b/tools/testin= g/selftests/kvm/aarch64/vgic_init.c index 435c4b762335..375cc56a7c4c 100644 --- a/tools/testing/selftests/kvm/aarch64/vgic_init.c +++ b/tools/testing/selftests/kvm/aarch64/vgic_init.c @@ -53,7 +53,7 @@ static int run_vcpu(struct kvm_vcpu *vcpu) { ucall_init(vcpu->vm, NULL); =20 - return __vcpu_run(vcpu->vm, vcpu->id) ? -errno : 0; + return __vcpu_run(vcpu) ? -errno : 0; } =20 static struct vm_gic vm_gic_create_with_vcpus(uint32_t gic_dev_type, diff --git a/tools/testing/selftests/kvm/aarch64/vgic_irq.c b/tools/testing= /selftests/kvm/aarch64/vgic_irq.c index 75c2c2d28801..0176da54a2f0 100644 --- a/tools/testing/selftests/kvm/aarch64/vgic_irq.c +++ b/tools/testing/selftests/kvm/aarch64/vgic_irq.c @@ -756,10 +756,10 @@ static void test_vgic(uint32_t nr_irqs, bool level_se= nsitive, bool eoi_split) ucall_init(vm, NULL); =20 vm_init_descriptor_tables(vm); - vcpu_init_descriptor_tables(vm, vcpu->id); + vcpu_init_descriptor_tables(vcpu); =20 /* Setup the guest args page (so it gets the args). */ - vcpu_args_set(vm, vcpu->id, 1, args); + vcpu_args_set(vcpu, 1, args); =20 gic_fd =3D vgic_v3_setup(vm, 1, nr_irqs, GICD_BASE_GPA, GICR_BASE_GPA); @@ -768,9 +768,9 @@ static void test_vgic(uint32_t nr_irqs, bool level_sens= itive, bool eoi_split) guest_irq_handlers[args.eoi_split][args.level_sensitive]); =20 while (1) { - vcpu_run(vm, vcpu->id); + vcpu_run(vcpu); =20 - switch (get_ucall(vm, vcpu->id, &uc)) { + switch (get_ucall(vcpu, &uc)) { case UCALL_SYNC: kvm_inject_get_call(vm, &uc, &inject_args); run_guest_cmd(vcpu, gic_fd, &inject_args, &args); diff --git a/tools/testing/selftests/kvm/access_tracking_perf_test.c b/tool= s/testing/selftests/kvm/access_tracking_perf_test.c index 86a90222f913..1c771378f7f4 100644 --- a/tools/testing/selftests/kvm/access_tracking_perf_test.c +++ b/tools/testing/selftests/kvm/access_tracking_perf_test.c @@ -194,7 +194,7 @@ static void mark_vcpu_memory_idle(struct kvm_vm *vm, static void assert_ucall(struct kvm_vcpu *vcpu, uint64_t expected_ucall) { struct ucall uc; - uint64_t actual_ucall =3D get_ucall(vcpu->vm, vcpu->id, &uc); + uint64_t actual_ucall =3D get_ucall(vcpu, &uc); =20 TEST_ASSERT(expected_ucall =3D=3D actual_ucall, "Guest exited unexpectedly (expected ucall %" PRIu64 @@ -226,7 +226,7 @@ static void vcpu_thread_main(struct perf_test_vcpu_args= *vcpu_args) while (spin_wait_for_next_iteration(¤t_iteration)) { switch (READ_ONCE(iteration_work)) { case ITERATION_ACCESS_MEMORY: - vcpu_run(vm, vcpu->id); + vcpu_run(vcpu); assert_ucall(vcpu, UCALL_SYNC); break; case ITERATION_MARK_IDLE: diff --git a/tools/testing/selftests/kvm/demand_paging_test.c b/tools/testi= ng/selftests/kvm/demand_paging_test.c index da10e1604991..ff86f5151184 100644 --- a/tools/testing/selftests/kvm/demand_paging_test.c +++ b/tools/testing/selftests/kvm/demand_paging_test.c @@ -45,7 +45,6 @@ static char *guest_data_prototype; static void vcpu_worker(struct perf_test_vcpu_args *vcpu_args) { struct kvm_vcpu *vcpu =3D vcpu_args->vcpu; - struct kvm_vm *vm =3D perf_test_args.vm; int vcpu_idx =3D vcpu_args->vcpu_idx; struct kvm_run *run =3D vcpu->run; struct timespec start; @@ -55,9 +54,9 @@ static void vcpu_worker(struct perf_test_vcpu_args *vcpu_= args) clock_gettime(CLOCK_MONOTONIC, &start); =20 /* Let the guest access its memory */ - ret =3D _vcpu_run(vm, vcpu->id); + ret =3D _vcpu_run(vcpu); TEST_ASSERT(ret =3D=3D 0, "vcpu_run failed: %d\n", ret); - if (get_ucall(vm, vcpu->id, NULL) !=3D UCALL_SYNC) { + if (get_ucall(vcpu, NULL) !=3D UCALL_SYNC) { TEST_ASSERT(false, "Invalid guest sync status: exit_reason=3D%s\n", exit_reason_str(run->exit_reason)); diff --git a/tools/testing/selftests/kvm/dirty_log_perf_test.c b/tools/test= ing/selftests/kvm/dirty_log_perf_test.c index d250f246996e..4d021f1ae479 100644 --- a/tools/testing/selftests/kvm/dirty_log_perf_test.c +++ b/tools/testing/selftests/kvm/dirty_log_perf_test.c @@ -34,7 +34,6 @@ static int vcpu_last_completed_iteration[KVM_MAX_VCPUS]; static void vcpu_worker(struct perf_test_vcpu_args *vcpu_args) { struct kvm_vcpu *vcpu =3D vcpu_args->vcpu; - struct kvm_vm *vm =3D perf_test_args.vm; int vcpu_idx =3D vcpu_args->vcpu_idx; uint64_t pages_count =3D 0; struct kvm_run *run; @@ -50,18 +49,18 @@ static void vcpu_worker(struct perf_test_vcpu_args *vcp= u_args) int current_iteration =3D READ_ONCE(iteration); =20 clock_gettime(CLOCK_MONOTONIC, &start); - ret =3D _vcpu_run(vm, vcpu->id); + ret =3D _vcpu_run(vcpu); ts_diff =3D timespec_elapsed(start); =20 TEST_ASSERT(ret =3D=3D 0, "vcpu_run failed: %d\n", ret); - TEST_ASSERT(get_ucall(vm, vcpu->id, NULL) =3D=3D UCALL_SYNC, + TEST_ASSERT(get_ucall(vcpu, NULL) =3D=3D UCALL_SYNC, "Invalid guest sync status: exit_reason=3D%s\n", exit_reason_str(run->exit_reason)); =20 pr_debug("Got sync event from vCPU %d\n", vcpu_idx); vcpu_last_completed_iteration[vcpu_idx] =3D current_iteration; pr_debug("vCPU %d updated last completed iteration to %d\n", - vcpu->id, vcpu_last_completed_iteration[vcpu_idx]); + vcpu_idx, vcpu_last_completed_iteration[vcpu_idx]); =20 if (current_iteration) { pages_count +=3D vcpu_args->pages; diff --git a/tools/testing/selftests/kvm/dirty_log_test.c b/tools/testing/s= elftests/kvm/dirty_log_test.c index 7bc2c027492d..d8a5e45520fb 100644 --- a/tools/testing/selftests/kvm/dirty_log_test.c +++ b/tools/testing/selftests/kvm/dirty_log_test.c @@ -258,7 +258,7 @@ static void default_after_vcpu_run(struct kvm_vcpu *vcp= u, int ret, int err) TEST_ASSERT(ret =3D=3D 0 || (ret =3D=3D -1 && err =3D=3D EINTR), "vcpu run failed: errno=3D%d", err); =20 - TEST_ASSERT(get_ucall(vcpu->vm, vcpu->id, NULL) =3D=3D UCALL_SYNC, + TEST_ASSERT(get_ucall(vcpu, NULL) =3D=3D UCALL_SYNC, "Invalid guest sync status: exit_reason=3D%s\n", exit_reason_str(run->exit_reason)); =20 @@ -349,7 +349,7 @@ static void dirty_ring_collect_dirty_pages(struct kvm_v= cpu *vcpu, int slot, } =20 /* Only have one vcpu */ - count =3D dirty_ring_collect_one(vcpu_map_dirty_ring(vcpu->vm, vcpu->id), + count =3D dirty_ring_collect_one(vcpu_map_dirty_ring(vcpu), slot, bitmap, num_pages, &fetch_index); =20 cleared =3D kvm_vm_reset_dirty_ring(vcpu->vm); @@ -372,7 +372,7 @@ static void dirty_ring_after_vcpu_run(struct kvm_vcpu *= vcpu, int ret, int err) struct kvm_run *run =3D vcpu->run; =20 /* A ucall-sync or ring-full event is allowed */ - if (get_ucall(vcpu->vm, vcpu->id, NULL) =3D=3D UCALL_SYNC) { + if (get_ucall(vcpu, NULL) =3D=3D UCALL_SYNC) { /* We should allow this to continue */ ; } else if (run->exit_reason =3D=3D KVM_EXIT_DIRTY_RING_FULL || @@ -524,7 +524,7 @@ static void *vcpu_worker(void *data) sigmask->len =3D 8; pthread_sigmask(0, NULL, sigset); sigdelset(sigset, SIG_IPI); - vcpu_ioctl(vm, vcpu->id, KVM_SET_SIGNAL_MASK, sigmask); + vcpu_ioctl(vcpu, KVM_SET_SIGNAL_MASK, sigmask); =20 sigemptyset(sigset); sigaddset(sigset, SIG_IPI); @@ -536,7 +536,7 @@ static void *vcpu_worker(void *data) generate_random_array(guest_array, TEST_PAGES_PER_LOOP); pages_count +=3D TEST_PAGES_PER_LOOP; /* Let the guest dirty the random pages */ - ret =3D __vcpu_run(vm, vcpu->id); + ret =3D __vcpu_run(vcpu); if (ret =3D=3D -1 && errno =3D=3D EINTR) { int sig =3D -1; sigwait(sigset, &sig); diff --git a/tools/testing/selftests/kvm/hardware_disable_test.c b/tools/te= sting/selftests/kvm/hardware_disable_test.c index 70cd22485357..ccb91db0d49e 100644 --- a/tools/testing/selftests/kvm/hardware_disable_test.c +++ b/tools/testing/selftests/kvm/hardware_disable_test.c @@ -39,7 +39,7 @@ static void *run_vcpu(void *arg) struct kvm_vcpu *vcpu =3D arg; struct kvm_run *run =3D vcpu->run; =20 - vcpu_run(vcpu->vm, vcpu->id); + vcpu_run(vcpu); =20 TEST_ASSERT(false, "%s: exited with reason %d: %s\n", __func__, run->exit_reason, diff --git a/tools/testing/selftests/kvm/include/aarch64/processor.h b/tool= s/testing/selftests/kvm/include/aarch64/processor.h index f64607c136df..db01666e7e13 100644 --- a/tools/testing/selftests/kvm/include/aarch64/processor.h +++ b/tools/testing/selftests/kvm/include/aarch64/processor.h @@ -47,23 +47,25 @@ =20 #define MPIDR_HWID_BITMASK (0xff00fffffful) =20 -static inline void get_reg(struct kvm_vm *vm, uint32_t vcpuid, uint64_t id= , uint64_t *addr) +static inline void get_reg(struct kvm_vcpu *vcpu, uint64_t id, uint64_t *a= ddr) { struct kvm_one_reg reg; + reg.id =3D id; reg.addr =3D (uint64_t)addr; - vcpu_ioctl(vm, vcpuid, KVM_GET_ONE_REG, ®); + vcpu_ioctl(vcpu, KVM_GET_ONE_REG, ®); } =20 -static inline void set_reg(struct kvm_vm *vm, uint32_t vcpuid, uint64_t id= , uint64_t val) +static inline void set_reg(struct kvm_vcpu *vcpu, uint64_t id, uint64_t va= l) { struct kvm_one_reg reg; + reg.id =3D id; reg.addr =3D (uint64_t)&val; - vcpu_ioctl(vm, vcpuid, KVM_SET_ONE_REG, ®); + vcpu_ioctl(vcpu, KVM_SET_ONE_REG, ®); } =20 -void aarch64_vcpu_setup(struct kvm_vm *vm, uint32_t vcpuid, struct kvm_vcp= u_init *init); +void aarch64_vcpu_setup(struct kvm_vcpu *vcpu, struct kvm_vcpu_init *init); struct kvm_vcpu *aarch64_vcpu_add(struct kvm_vm *vm, uint32_t vcpu_id, struct kvm_vcpu_init *init, void *guest_code); =20 @@ -117,7 +119,7 @@ void aarch64_get_supported_page_sizes(uint32_t ipa, bool *ps4k, bool *ps16k, bool *ps64k); =20 void vm_init_descriptor_tables(struct kvm_vm *vm); -void vcpu_init_descriptor_tables(struct kvm_vm *vm, uint32_t vcpuid); +void vcpu_init_descriptor_tables(struct kvm_vcpu *vcpu); =20 typedef void(*handler_fn)(struct ex_regs *); void vm_install_exception_handler(struct kvm_vm *vm, diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/te= sting/selftests/kvm/include/kvm_util_base.h index 391f72eb9bcb..c0873a5ca3c3 100644 --- a/tools/testing/selftests/kvm/include/kvm_util_base.h +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h @@ -93,7 +93,7 @@ struct kvm_vm { continue; \ else =20 -struct kvm_vcpu *vcpu_get(struct kvm_vm *vm, uint32_t vcpuid); +struct kvm_vcpu *vcpu_get(struct kvm_vm *vm, uint32_t vcpu_id); =20 struct userspace_mem_region * memslot2region(struct kvm_vm *vm, uint32_t memslot); @@ -195,12 +195,12 @@ int __vm_ioctl(struct kvm_vm *vm, unsigned long cmd, = void *arg); void _vm_ioctl(struct kvm_vm *vm, unsigned long cmd, const char *name, voi= d *arg); #define vm_ioctl(vm, cmd, arg) _vm_ioctl(vm, cmd, #cmd, arg) =20 -int __vcpu_ioctl(struct kvm_vm *vm, uint32_t vcpuid, unsigned long cmd, +int __vcpu_ioctl(struct kvm_vcpu *vcpu, unsigned long cmd, void *arg); -void _vcpu_ioctl(struct kvm_vm *vm, uint32_t vcpuid, unsigned long cmd, +void _vcpu_ioctl(struct kvm_vcpu *vcpu, unsigned long cmd, const char *name, void *arg); -#define vcpu_ioctl(vm, vcpuid, cmd, arg) \ - _vcpu_ioctl(vm, vcpuid, cmd, #cmd, arg) +#define vcpu_ioctl(vcpu, cmd, arg) \ + _vcpu_ioctl(vcpu, cmd, #cmd, arg) =20 /* * Looks up and returns the value corresponding to the capability @@ -276,7 +276,7 @@ void vm_userspace_mem_region_add(struct kvm_vm *vm, void vm_mem_region_set_flags(struct kvm_vm *vm, uint32_t slot, uint32_t fl= ags); void vm_mem_region_move(struct kvm_vm *vm, uint32_t slot, uint64_t new_gpa= ); void vm_mem_region_delete(struct kvm_vm *vm, uint32_t slot); -struct kvm_vcpu *__vm_vcpu_add(struct kvm_vm *vm, uint32_t vcpuid); +struct kvm_vcpu *__vm_vcpu_add(struct kvm_vm *vm, uint32_t vcpu_id); vm_vaddr_t vm_vaddr_alloc(struct kvm_vm *vm, size_t sz, vm_vaddr_t vaddr_m= in); vm_vaddr_t vm_vaddr_alloc_pages(struct kvm_vm *vm, int nr_pages); vm_vaddr_t vm_vaddr_alloc_page(struct kvm_vm *vm); @@ -288,116 +288,107 @@ void *addr_gva2hva(struct kvm_vm *vm, vm_vaddr_t gv= a); vm_paddr_t addr_hva2gpa(struct kvm_vm *vm, void *hva); void *addr_gpa2alias(struct kvm_vm *vm, vm_paddr_t gpa); =20 -struct kvm_run *vcpu_state(struct kvm_vm *vm, uint32_t vcpuid); -void vcpu_run(struct kvm_vm *vm, uint32_t vcpuid); -int _vcpu_run(struct kvm_vm *vm, uint32_t vcpuid); +struct kvm_run *vcpu_state(struct kvm_vcpu *vcpu); +void vcpu_run(struct kvm_vcpu *vcpu); +int _vcpu_run(struct kvm_vcpu *vcpu); =20 -static inline int __vcpu_run(struct kvm_vm *vm, uint32_t vcpuid) +static inline int __vcpu_run(struct kvm_vcpu *vcpu) { - return __vcpu_ioctl(vm, vcpuid, KVM_RUN, NULL); + return __vcpu_ioctl(vcpu, KVM_RUN, NULL); } =20 -void vcpu_run_complete_io(struct kvm_vm *vm, uint32_t vcpuid); -struct kvm_reg_list *vcpu_get_reg_list(struct kvm_vm *vm, uint32_t vcpuid); +void vcpu_run_complete_io(struct kvm_vcpu *vcpu); +struct kvm_reg_list *vcpu_get_reg_list(struct kvm_vcpu *vcpu); =20 -static inline void vcpu_enable_cap(struct kvm_vm *vm, uint32_t vcpu_id, +static inline void vcpu_enable_cap(struct kvm_vcpu *vcpu, struct kvm_enable_cap *cap) { - vcpu_ioctl(vm, vcpu_id, KVM_ENABLE_CAP, cap); + vcpu_ioctl(vcpu, KVM_ENABLE_CAP, cap); } =20 -static inline void vcpu_set_guest_debug(struct kvm_vm *vm, uint32_t vcpuid, +static inline void vcpu_set_guest_debug(struct kvm_vcpu *vcpu, struct kvm_guest_debug *debug) { - vcpu_ioctl(vm, vcpuid, KVM_SET_GUEST_DEBUG, debug); + vcpu_ioctl(vcpu, KVM_SET_GUEST_DEBUG, debug); } =20 -static inline void vcpu_set_mp_state(struct kvm_vm *vm, uint32_t vcpuid, +static inline void vcpu_set_mp_state(struct kvm_vcpu *vcpu, struct kvm_mp_state *mp_state) { - vcpu_ioctl(vm, vcpuid, KVM_SET_MP_STATE, mp_state); + vcpu_ioctl(vcpu, KVM_SET_MP_STATE, mp_state); } =20 -static inline void vcpu_regs_get(struct kvm_vm *vm, uint32_t vcpuid, - struct kvm_regs *regs) +static inline void vcpu_regs_get(struct kvm_vcpu *vcpu, struct kvm_regs *r= egs) { - vcpu_ioctl(vm, vcpuid, KVM_GET_REGS, regs); + vcpu_ioctl(vcpu, KVM_GET_REGS, regs); } =20 -static inline void vcpu_regs_set(struct kvm_vm *vm, uint32_t vcpuid, - struct kvm_regs *regs) +static inline void vcpu_regs_set(struct kvm_vcpu *vcpu, struct kvm_regs *r= egs) { - vcpu_ioctl(vm, vcpuid, KVM_SET_REGS, regs); + vcpu_ioctl(vcpu, KVM_SET_REGS, regs); } -static inline void vcpu_sregs_get(struct kvm_vm *vm, uint32_t vcpuid, - struct kvm_sregs *sregs) +static inline void vcpu_sregs_get(struct kvm_vcpu *vcpu, struct kvm_sregs = *sregs) { - vcpu_ioctl(vm, vcpuid, KVM_GET_SREGS, sregs); + vcpu_ioctl(vcpu, KVM_GET_SREGS, sregs); =20 } -static inline void vcpu_sregs_set(struct kvm_vm *vm, uint32_t vcpuid, - struct kvm_sregs *sregs) +static inline void vcpu_sregs_set(struct kvm_vcpu *vcpu, struct kvm_sregs = *sregs) { - vcpu_ioctl(vm, vcpuid, KVM_SET_SREGS, sregs); + vcpu_ioctl(vcpu, KVM_SET_SREGS, sregs); } -static inline int _vcpu_sregs_set(struct kvm_vm *vm, uint32_t vcpuid, - struct kvm_sregs *sregs) +static inline int _vcpu_sregs_set(struct kvm_vcpu *vcpu, struct kvm_sregs = *sregs) { - return __vcpu_ioctl(vm, vcpuid, KVM_SET_SREGS, sregs); + return __vcpu_ioctl(vcpu, KVM_SET_SREGS, sregs); } -static inline void vcpu_fpu_get(struct kvm_vm *vm, uint32_t vcpuid, - struct kvm_fpu *fpu) +static inline void vcpu_fpu_get(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu) { - vcpu_ioctl(vm, vcpuid, KVM_GET_FPU, fpu); + vcpu_ioctl(vcpu, KVM_GET_FPU, fpu); } -static inline void vcpu_fpu_set(struct kvm_vm *vm, uint32_t vcpuid, - struct kvm_fpu *fpu) +static inline void vcpu_fpu_set(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu) { - vcpu_ioctl(vm, vcpuid, KVM_SET_FPU, fpu); + vcpu_ioctl(vcpu, KVM_SET_FPU, fpu); } -static inline void vcpu_get_reg(struct kvm_vm *vm, uint32_t vcpuid, - struct kvm_one_reg *reg) +static inline void vcpu_get_reg(struct kvm_vcpu *vcpu, struct kvm_one_reg = *reg) { - vcpu_ioctl(vm, vcpuid, KVM_GET_ONE_REG, reg); + vcpu_ioctl(vcpu, KVM_GET_ONE_REG, reg); } -static inline void vcpu_set_reg(struct kvm_vm *vm, uint32_t vcpuid, - struct kvm_one_reg *reg) +static inline void vcpu_set_reg(struct kvm_vcpu *vcpu, struct kvm_one_reg = *reg) { - vcpu_ioctl(vm, vcpuid, KVM_SET_ONE_REG, reg); + vcpu_ioctl(vcpu, KVM_SET_ONE_REG, reg); } #ifdef __KVM_HAVE_VCPU_EVENTS -static inline void vcpu_events_get(struct kvm_vm *vm, uint32_t vcpuid, +static inline void vcpu_events_get(struct kvm_vcpu *vcpu, struct kvm_vcpu_events *events) { - vcpu_ioctl(vm, vcpuid, KVM_GET_VCPU_EVENTS, events); + vcpu_ioctl(vcpu, KVM_GET_VCPU_EVENTS, events); } -static inline void vcpu_events_set(struct kvm_vm *vm, uint32_t vcpuid, +static inline void vcpu_events_set(struct kvm_vcpu *vcpu, struct kvm_vcpu_events *events) { - vcpu_ioctl(vm, vcpuid, KVM_SET_VCPU_EVENTS, events); + vcpu_ioctl(vcpu, KVM_SET_VCPU_EVENTS, events); } #endif #ifdef __x86_64__ -static inline void vcpu_nested_state_get(struct kvm_vm *vm, uint32_t vcpui= d, +static inline void vcpu_nested_state_get(struct kvm_vcpu *vcpu, struct kvm_nested_state *state) { - vcpu_ioctl(vm, vcpuid, KVM_GET_NESTED_STATE, state); + vcpu_ioctl(vcpu, KVM_GET_NESTED_STATE, state); } -static inline int __vcpu_nested_state_set(struct kvm_vm *vm, uint32_t vcpu= id, +static inline int __vcpu_nested_state_set(struct kvm_vcpu *vcpu, struct kvm_nested_state *state) { - return __vcpu_ioctl(vm, vcpuid, KVM_SET_NESTED_STATE, state); + return __vcpu_ioctl(vcpu, KVM_SET_NESTED_STATE, state); } =20 -static inline void vcpu_nested_state_set(struct kvm_vm *vm, uint32_t vcpui= d, +static inline void vcpu_nested_state_set(struct kvm_vcpu *vcpu, struct kvm_nested_state *state) { - vcpu_ioctl(vm, vcpuid, KVM_SET_NESTED_STATE, state); + vcpu_ioctl(vcpu, KVM_SET_NESTED_STATE, state); } #endif -static inline int vcpu_get_stats_fd(struct kvm_vm *vm, uint32_t vcpuid) +static inline int vcpu_get_stats_fd(struct kvm_vcpu *vcpu) { - int fd =3D __vcpu_ioctl(vm, vcpuid, KVM_GET_STATS_FD, NULL); + int fd =3D __vcpu_ioctl(vcpu, KVM_GET_STATS_FD, NULL); =20 TEST_ASSERT(fd >=3D 0, KVM_IOCTL_ERROR(KVM_GET_STATS_FD, fd)); return fd; @@ -446,25 +437,42 @@ static inline void kvm_device_attr_set(int dev_fd, ui= nt32_t group, TEST_ASSERT(!ret, KVM_IOCTL_ERROR(KVM_SET_DEVICE_ATTR, ret)); } =20 -int __vcpu_has_device_attr(struct kvm_vm *vm, uint32_t vcpuid, uint32_t gr= oup, - uint64_t attr); +static inline int __vcpu_has_device_attr(struct kvm_vcpu *vcpu, uint32_t g= roup, + uint64_t attr) +{ + return __kvm_has_device_attr(vcpu->fd, group, attr); +} =20 -static inline void vcpu_has_device_attr(struct kvm_vm *vm, uint32_t vcpuid, - uint32_t group, uint64_t attr) +static inline void vcpu_has_device_attr(struct kvm_vcpu *vcpu, uint32_t gr= oup, + uint64_t attr) { - int ret =3D __vcpu_has_device_attr(vm, vcpuid, group, attr); + kvm_has_device_attr(vcpu->fd, group, attr); +} =20 - TEST_ASSERT(!ret, KVM_IOCTL_ERROR(KVM_HAS_DEVICE_ATTR, ret)); +static inline int __vcpu_device_attr_get(struct kvm_vcpu *vcpu, uint32_t g= roup, + uint64_t attr, void *val) +{ + return __kvm_device_attr_get(vcpu->fd, group, attr, val); +} + +static inline void vcpu_device_attr_get(struct kvm_vcpu *vcpu, uint32_t gr= oup, + uint64_t attr, void *val) +{ + kvm_device_attr_get(vcpu->fd, group, attr, val); +} + +static inline int __vcpu_device_attr_set(struct kvm_vcpu *vcpu, uint32_t g= roup, + uint64_t attr, void *val) +{ + return __kvm_device_attr_set(vcpu->fd, group, attr, val); +} + +static inline void vcpu_device_attr_set(struct kvm_vcpu *vcpu, uint32_t gr= oup, + uint64_t attr, void *val) +{ + kvm_device_attr_set(vcpu->fd, group, attr, val); } =20 -int __vcpu_device_attr_get(struct kvm_vm *vm, uint32_t vcpuid, uint32_t gr= oup, - uint64_t attr, void *val); -void vcpu_device_attr_get(struct kvm_vm *vm, uint32_t vcpuid, uint32_t gro= up, - uint64_t attr, void *val); -int __vcpu_device_attr_set(struct kvm_vm *vm, uint32_t vcpuid, uint32_t gr= oup, - uint64_t attr, void *val); -void vcpu_device_attr_set(struct kvm_vm *vm, uint32_t vcpuid, uint32_t gro= up, - uint64_t attr, void *val); int __kvm_test_create_device(struct kvm_vm *vm, uint64_t type); int __kvm_create_device(struct kvm_vm *vm, uint64_t type); =20 @@ -476,14 +484,13 @@ static inline int kvm_create_device(struct kvm_vm *vm= , uint64_t type) return fd; } =20 -void *vcpu_map_dirty_ring(struct kvm_vm *vm, uint32_t vcpuid); +void *vcpu_map_dirty_ring(struct kvm_vcpu *vcpu); =20 /* * VM VCPU Args Set * * Input Args: * vm - Virtual Machine - * vcpuid - VCPU ID * num - number of arguments * ... - arguments, each of type uint64_t * @@ -491,12 +498,12 @@ void *vcpu_map_dirty_ring(struct kvm_vm *vm, uint32_t= vcpuid); * * Return: None * - * Sets the first @num function input registers of the VCPU with @vcpuid, - * per the C calling convention of the architecture, to the values given - * as variable args. Each of the variable args is expected to be of type - * uint64_t. The maximum @num can be is specific to the architecture. + * Sets the first @num input paramters for the function at @vcpu's entry p= oint, + * per the C calling convention of the architecture, to the values given as + * variable args. Each of the variable args is expected to be of type uint= 64_t. + * The maximum @num can be is specific to the architecture. */ -void vcpu_args_set(struct kvm_vm *vm, uint32_t vcpuid, unsigned int num, .= ..); +void vcpu_args_set(struct kvm_vcpu *vcpu, unsigned int num, ...); =20 void kvm_irq_line(struct kvm_vm *vm, uint32_t irq, int level); int _kvm_irq_line(struct kvm_vm *vm, uint32_t irq, int level); @@ -583,34 +590,17 @@ kvm_userspace_memory_region_find(struct kvm_vm *vm, u= int64_t start, memcpy(&(g), _p, sizeof(g)); \ }) =20 -void assert_on_unhandled_exception(struct kvm_vm *vm, uint32_t vcpuid); +void assert_on_unhandled_exception(struct kvm_vcpu *vcpu); =20 int vm_get_stats_fd(struct kvm_vm *vm); =20 -/* - * VM VCPU Dump - * - * Input Args: - * stream - Output FILE stream - * vm - Virtual Machine - * vcpuid - VCPU ID - * indent - Left margin indent amount - * - * Output Args: None - * - * Return: None - * - * Dumps the current state of the VCPU specified by @vcpuid, within the VM - * given by @vm, to the FILE stream given by @stream. - */ - -void vcpu_arch_dump(FILE *stream, struct kvm_vm *vm, uint32_t vcpuid, +void vcpu_arch_dump(FILE *stream, struct kvm_vcpu *vcpu, uint8_t indent); =20 -static inline void vcpu_dump(FILE *stream, struct kvm_vm *vm, uint32_t vcp= uid, +static inline void vcpu_dump(FILE *stream, struct kvm_vcpu *vcpu, uint8_t indent) { - vcpu_arch_dump(stream, vm, vcpuid, indent); + vcpu_arch_dump(stream, vcpu, indent); } =20 /* @@ -618,7 +608,7 @@ static inline void vcpu_dump(FILE *stream, struct kvm_v= m *vm, uint32_t vcpuid, * * Input Args: * vm - Virtual Machine - * vcpuid - The id of the VCPU to add to the VM. + * vcpu_id - The id of the VCPU to add to the VM. * guest_code - The vCPU's entry point */ struct kvm_vcpu *vm_arch_vcpu_add(struct kvm_vm *vm, uint32_t vcpu_id, diff --git a/tools/testing/selftests/kvm/include/riscv/processor.h b/tools/= testing/selftests/kvm/include/riscv/processor.h index dc284c6bdbc3..0747ab78edc2 100644 --- a/tools/testing/selftests/kvm/include/riscv/processor.h +++ b/tools/testing/selftests/kvm/include/riscv/processor.h @@ -38,24 +38,24 @@ static inline uint64_t __kvm_reg_id(uint64_t type, uint= 64_t idx, KVM_REG_RISCV_TIMER_REG(name), \ KVM_REG_SIZE_U64) =20 -static inline void get_reg(struct kvm_vm *vm, uint32_t vcpuid, uint64_t id, +static inline void get_reg(struct kvm_vcpu *vcpu, uint64_t id, unsigned long *addr) { struct kvm_one_reg reg; =20 reg.id =3D id; reg.addr =3D (unsigned long)addr; - vcpu_get_reg(vm, vcpuid, ®); + vcpu_get_reg(vcpu, ®); } =20 -static inline void set_reg(struct kvm_vm *vm, uint32_t vcpuid, uint64_t id, +static inline void set_reg(struct kvm_vcpu *vcpu, uint64_t id, unsigned long val) { struct kvm_one_reg reg; =20 reg.id =3D id; reg.addr =3D (unsigned long)&val; - vcpu_set_reg(vm, vcpuid, ®); + vcpu_set_reg(vcpu, ®); } =20 /* L3 index Bit[47:39] */ diff --git a/tools/testing/selftests/kvm/include/ucall_common.h b/tools/tes= ting/selftests/kvm/include/ucall_common.h index 9eecc9d40b79..98562f685151 100644 --- a/tools/testing/selftests/kvm/include/ucall_common.h +++ b/tools/testing/selftests/kvm/include/ucall_common.h @@ -26,7 +26,7 @@ struct ucall { void ucall_init(struct kvm_vm *vm, void *arg); void ucall_uninit(struct kvm_vm *vm); void ucall(uint64_t cmd, int nargs, ...); -uint64_t get_ucall(struct kvm_vm *vm, uint32_t vcpu_id, struct ucall *uc); +uint64_t get_ucall(struct kvm_vcpu *vcpu, struct ucall *uc); =20 #define GUEST_SYNC_ARGS(stage, arg1, arg2, arg3, arg4) \ ucall(UCALL_SYNC, 6, "hello", stage, arg1, arg2, arg3, arg4) diff --git a/tools/testing/selftests/kvm/include/x86_64/evmcs.h b/tools/tes= ting/selftests/kvm/include/x86_64/evmcs.h index cc5d14a45702..3c9260f8e116 100644 --- a/tools/testing/selftests/kvm/include/x86_64/evmcs.h +++ b/tools/testing/selftests/kvm/include/x86_64/evmcs.h @@ -241,7 +241,7 @@ struct hv_enlightened_vmcs { extern struct hv_enlightened_vmcs *current_evmcs; extern struct hv_vp_assist_page *current_vp_assist; =20 -int vcpu_enable_evmcs(struct kvm_vm *vm, int vcpu_id); +int vcpu_enable_evmcs(struct kvm_vcpu *vcpu); =20 static inline int enable_vp_assist(uint64_t vp_assist_pa, void *vp_assist) { diff --git a/tools/testing/selftests/kvm/include/x86_64/processor.h b/tools= /testing/selftests/kvm/include/x86_64/processor.h index d67cb5d7fded..333aab23ba3f 100644 --- a/tools/testing/selftests/kvm/include/x86_64/processor.h +++ b/tools/testing/selftests/kvm/include/x86_64/processor.h @@ -383,26 +383,25 @@ static inline unsigned int x86_model(unsigned int eax) return ((eax >> 12) & 0xf0) | ((eax >> 4) & 0x0f); } =20 -struct kvm_x86_state *vcpu_save_state(struct kvm_vm *vm, uint32_t vcpuid); -void vcpu_load_state(struct kvm_vm *vm, uint32_t vcpuid, - struct kvm_x86_state *state); +struct kvm_x86_state *vcpu_save_state(struct kvm_vcpu *vcpu); +void vcpu_load_state(struct kvm_vcpu *vcpu, struct kvm_x86_state *state); void kvm_x86_state_cleanup(struct kvm_x86_state *state); =20 struct kvm_msr_list *kvm_get_msr_index_list(void); uint64_t kvm_get_feature_msr(uint64_t msr_index); struct kvm_cpuid2 *kvm_get_supported_cpuid(void); -struct kvm_cpuid2 *vcpu_get_cpuid(struct kvm_vm *vm, uint32_t vcpuid); +struct kvm_cpuid2 *vcpu_get_cpuid(struct kvm_vcpu *vcpu); =20 -static inline int __vcpu_set_cpuid(struct kvm_vm *vm, uint32_t vcpuid, +static inline int __vcpu_set_cpuid(struct kvm_vcpu *vcpu, struct kvm_cpuid2 *cpuid) { - return __vcpu_ioctl(vm, vcpuid, KVM_SET_CPUID2, cpuid); + return __vcpu_ioctl(vcpu, KVM_SET_CPUID2, cpuid); } =20 -static inline void vcpu_set_cpuid(struct kvm_vm *vm, uint32_t vcpuid, +static inline void vcpu_set_cpuid(struct kvm_vcpu *vcpu, struct kvm_cpuid2 *cpuid) { - vcpu_ioctl(vm, vcpuid, KVM_SET_CPUID2, cpuid); + vcpu_ioctl(vcpu, KVM_SET_CPUID2, cpuid); } =20 struct kvm_cpuid_entry2 * @@ -414,14 +413,13 @@ kvm_get_supported_cpuid_entry(uint32_t function) return kvm_get_supported_cpuid_index(function, 0); } =20 -uint64_t vcpu_get_msr(struct kvm_vm *vm, uint32_t vcpuid, uint64_t msr_ind= ex); -int _vcpu_set_msr(struct kvm_vm *vm, uint32_t vcpuid, uint64_t msr_index, - uint64_t msr_value); +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); =20 -static inline void vcpu_set_msr(struct kvm_vm *vm, uint32_t vcpuid, - 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 =3D _vcpu_set_msr(vm, vcpuid, msr_index, msr_value); + int r =3D _vcpu_set_msr(vcpu, msr_index, msr_value); =20 TEST_ASSERT(r =3D=3D 1, KVM_IOCTL_ERROR(KVM_SET_MSRS, r)); } @@ -445,13 +443,14 @@ struct ex_regs { }; =20 void vm_init_descriptor_tables(struct kvm_vm *vm); -void vcpu_init_descriptor_tables(struct kvm_vm *vm, uint32_t vcpuid); +void vcpu_init_descriptor_tables(struct kvm_vcpu *vcpu); void vm_install_exception_handler(struct kvm_vm *vm, int vector, void (*handler)(struct ex_regs *)); =20 -uint64_t vm_get_page_table_entry(struct kvm_vm *vm, int vcpuid, uint64_t v= addr); -void vm_set_page_table_entry(struct kvm_vm *vm, int vcpuid, uint64_t vaddr, - uint64_t pte); +uint64_t vm_get_page_table_entry(struct kvm_vm *vm, struct kvm_vcpu *vcpu, + uint64_t vaddr); +void vm_set_page_table_entry(struct kvm_vm *vm, struct kvm_vcpu *vcpu, + uint64_t vaddr, uint64_t pte); =20 /* * get_cpuid() - find matching CPUID entry and return pointer to it. @@ -471,8 +470,8 @@ uint64_t kvm_hypercall(uint64_t nr, uint64_t a0, uint64= _t a1, uint64_t a2, uint64_t a3); =20 struct kvm_cpuid2 *kvm_get_supported_hv_cpuid(void); -void vcpu_set_hv_cpuid(struct kvm_vm *vm, uint32_t vcpuid); -struct kvm_cpuid2 *vcpu_get_supported_hv_cpuid(struct kvm_vm *vm, uint32_t= vcpuid); +void vcpu_set_hv_cpuid(struct kvm_vcpu *vcpu); +struct kvm_cpuid2 *vcpu_get_supported_hv_cpuid(struct kvm_vcpu *vcpu); void vm_xsave_req_perm(int bit); =20 enum x86_page_size { diff --git a/tools/testing/selftests/kvm/kvm_binary_stats_test.c b/tools/te= sting/selftests/kvm/kvm_binary_stats_test.c index 3a1eabd64137..e511b41f7021 100644 --- a/tools/testing/selftests/kvm/kvm_binary_stats_test.c +++ b/tools/testing/selftests/kvm/kvm_binary_stats_test.c @@ -174,7 +174,7 @@ static void vm_stats_test(struct kvm_vm *vm) =20 static void vcpu_stats_test(struct kvm_vcpu *vcpu) { - int stats_fd =3D vcpu_get_stats_fd(vcpu->vm, vcpu->id); + int stats_fd =3D vcpu_get_stats_fd(vcpu); =20 stats_test(stats_fd); close(stats_fd); diff --git a/tools/testing/selftests/kvm/kvm_page_table_test.c b/tools/test= ing/selftests/kvm/kvm_page_table_test.c index 2c92aef163f9..cb7ffe9671bc 100644 --- a/tools/testing/selftests/kvm/kvm_page_table_test.c +++ b/tools/testing/selftests/kvm/kvm_page_table_test.c @@ -184,7 +184,6 @@ static void guest_code(bool do_write) =20 static void *vcpu_worker(void *data) { - struct kvm_vm *vm =3D test_args.vm; struct kvm_vcpu *vcpu =3D data; bool do_write =3D !(vcpu->id % 2); struct timespec start; @@ -192,7 +191,7 @@ static void *vcpu_worker(void *data) enum test_stage stage; int ret; =20 - vcpu_args_set(vm, vcpu->id, 1, do_write); + vcpu_args_set(vcpu, 1, do_write); =20 while (!READ_ONCE(host_quit)) { ret =3D sem_wait(&test_stage_updated); @@ -202,11 +201,11 @@ static void *vcpu_worker(void *data) return NULL; =20 clock_gettime(CLOCK_MONOTONIC_RAW, &start); - ret =3D _vcpu_run(vm, vcpu->id); + ret =3D _vcpu_run(vcpu); ts_diff =3D timespec_elapsed(start); =20 TEST_ASSERT(ret =3D=3D 0, "vcpu_run failed: %d\n", ret); - TEST_ASSERT(get_ucall(vm, vcpu->id, NULL) =3D=3D UCALL_SYNC, + TEST_ASSERT(get_ucall(vcpu, NULL) =3D=3D UCALL_SYNC, "Invalid guest sync status: exit_reason=3D%s\n", exit_reason_str(vcpu->run->exit_reason)); =20 diff --git a/tools/testing/selftests/kvm/lib/aarch64/processor.c b/tools/te= sting/selftests/kvm/lib/aarch64/processor.c index 35bec85f43b0..97b68fce763a 100644 --- a/tools/testing/selftests/kvm/lib/aarch64/processor.c +++ b/tools/testing/selftests/kvm/lib/aarch64/processor.c @@ -212,9 +212,10 @@ void virt_arch_dump(FILE *stream, struct kvm_vm *vm, u= int8_t indent) } } =20 -void aarch64_vcpu_setup(struct kvm_vm *vm, uint32_t vcpuid, struct kvm_vcp= u_init *init) +void aarch64_vcpu_setup(struct kvm_vcpu *vcpu, struct kvm_vcpu_init *init) { struct kvm_vcpu_init default_init =3D { .target =3D -1, }; + struct kvm_vm *vm =3D vcpu->vm; uint64_t sctlr_el1, tcr_el1; =20 if (!init) @@ -226,16 +227,16 @@ void aarch64_vcpu_setup(struct kvm_vm *vm, uint32_t v= cpuid, struct kvm_vcpu_init init->target =3D preferred.target; } =20 - vcpu_ioctl(vm, vcpuid, KVM_ARM_VCPU_INIT, init); + vcpu_ioctl(vcpu, KVM_ARM_VCPU_INIT, init); =20 /* * Enable FP/ASIMD to avoid trapping when accessing Q0-Q15 * registers, which the variable argument list macros do. */ - set_reg(vm, vcpuid, KVM_ARM64_SYS_REG(SYS_CPACR_EL1), 3 << 20); + set_reg(vcpu, KVM_ARM64_SYS_REG(SYS_CPACR_EL1), 3 << 20); =20 - get_reg(vm, vcpuid, KVM_ARM64_SYS_REG(SYS_SCTLR_EL1), &sctlr_el1); - get_reg(vm, vcpuid, KVM_ARM64_SYS_REG(SYS_TCR_EL1), &tcr_el1); + get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_SCTLR_EL1), &sctlr_el1); + get_reg(vcpu, KVM_ARM64_SYS_REG(SYS_TCR_EL1), &tcr_el1); =20 /* Configure base granule size */ switch (vm->mode) { @@ -296,19 +297,19 @@ void aarch64_vcpu_setup(struct kvm_vm *vm, uint32_t v= cpuid, struct kvm_vcpu_init tcr_el1 |=3D (1 << 8) | (1 << 10) | (3 << 12); tcr_el1 |=3D (64 - vm->va_bits) /* T0SZ */; =20 - set_reg(vm, vcpuid, KVM_ARM64_SYS_REG(SYS_SCTLR_EL1), sctlr_el1); - set_reg(vm, vcpuid, KVM_ARM64_SYS_REG(SYS_TCR_EL1), tcr_el1); - set_reg(vm, vcpuid, KVM_ARM64_SYS_REG(SYS_MAIR_EL1), DEFAULT_MAIR_EL1); - set_reg(vm, vcpuid, KVM_ARM64_SYS_REG(SYS_TTBR0_EL1), vm->pgd); - set_reg(vm, vcpuid, KVM_ARM64_SYS_REG(SYS_TPIDR_EL1), vcpuid); + set_reg(vcpu, KVM_ARM64_SYS_REG(SYS_SCTLR_EL1), sctlr_el1); + set_reg(vcpu, KVM_ARM64_SYS_REG(SYS_TCR_EL1), tcr_el1); + set_reg(vcpu, KVM_ARM64_SYS_REG(SYS_MAIR_EL1), DEFAULT_MAIR_EL1); + set_reg(vcpu, KVM_ARM64_SYS_REG(SYS_TTBR0_EL1), vm->pgd); + set_reg(vcpu, KVM_ARM64_SYS_REG(SYS_TPIDR_EL1), vcpu->id); } =20 -void vcpu_arch_dump(FILE *stream, struct kvm_vm *vm, uint32_t vcpuid, uint= 8_t indent) +void vcpu_arch_dump(FILE *stream, struct kvm_vcpu *vcpu, uint8_t indent) { uint64_t pstate, pc; =20 - get_reg(vm, vcpuid, ARM64_CORE_REG(regs.pstate), &pstate); - get_reg(vm, vcpuid, ARM64_CORE_REG(regs.pc), &pc); + get_reg(vcpu, ARM64_CORE_REG(regs.pstate), &pstate); + get_reg(vcpu, ARM64_CORE_REG(regs.pc), &pc); =20 fprintf(stream, "%*spstate: 0x%.16lx pc: 0x%.16lx\n", indent, "", pstate, pc); @@ -324,10 +325,10 @@ struct kvm_vcpu *aarch64_vcpu_add(struct kvm_vm *vm, = uint32_t vcpu_id, DEFAULT_ARM64_GUEST_STACK_VADDR_MIN); struct kvm_vcpu *vcpu =3D __vm_vcpu_add(vm, vcpu_id); =20 - aarch64_vcpu_setup(vm, vcpu_id, init); + aarch64_vcpu_setup(vcpu, init); =20 - set_reg(vm, vcpu_id, ARM64_CORE_REG(sp_el1), stack_vaddr + stack_size); - set_reg(vm, vcpu_id, ARM64_CORE_REG(regs.pc), (uint64_t)guest_code); + set_reg(vcpu, ARM64_CORE_REG(sp_el1), stack_vaddr + stack_size); + set_reg(vcpu, ARM64_CORE_REG(regs.pc), (uint64_t)guest_code); =20 return vcpu; } @@ -338,7 +339,7 @@ struct kvm_vcpu *vm_arch_vcpu_add(struct kvm_vm *vm, ui= nt32_t vcpu_id, return aarch64_vcpu_add(vm, vcpu_id, NULL, guest_code); } =20 -void vcpu_args_set(struct kvm_vm *vm, uint32_t vcpuid, unsigned int num, .= ..) +void vcpu_args_set(struct kvm_vcpu *vcpu, unsigned int num, ...) { va_list ap; int i; @@ -349,7 +350,7 @@ void vcpu_args_set(struct kvm_vm *vm, uint32_t vcpuid, = unsigned int num, ...) va_start(ap, num); =20 for (i =3D 0; i < num; i++) { - set_reg(vm, vcpuid, ARM64_CORE_REG(regs.regs[i]), + set_reg(vcpu, ARM64_CORE_REG(regs.regs[i]), va_arg(ap, uint64_t)); } =20 @@ -363,11 +364,11 @@ void kvm_exit_unexpected_exception(int vector, uint64= _t ec, bool valid_ec) ; } =20 -void assert_on_unhandled_exception(struct kvm_vm *vm, uint32_t vcpuid) +void assert_on_unhandled_exception(struct kvm_vcpu *vcpu) { struct ucall uc; =20 - if (get_ucall(vm, vcpuid, &uc) !=3D UCALL_UNHANDLED) + if (get_ucall(vcpu, &uc) !=3D UCALL_UNHANDLED) return; =20 if (uc.args[2]) /* valid_ec */ { @@ -385,11 +386,11 @@ struct handlers { handler_fn exception_handlers[VECTOR_NUM][ESR_EC_NUM]; }; =20 -void vcpu_init_descriptor_tables(struct kvm_vm *vm, uint32_t vcpuid) +void vcpu_init_descriptor_tables(struct kvm_vcpu *vcpu) { extern char vectors; =20 - set_reg(vm, vcpuid, KVM_ARM64_SYS_REG(SYS_VBAR_EL1), (uint64_t)&vectors); + set_reg(vcpu, KVM_ARM64_SYS_REG(SYS_VBAR_EL1), (uint64_t)&vectors); } =20 void route_exception(struct ex_regs *regs, int vector) diff --git a/tools/testing/selftests/kvm/lib/aarch64/ucall.c b/tools/testin= g/selftests/kvm/lib/aarch64/ucall.c index e14663ab2056..12a02e77271a 100644 --- a/tools/testing/selftests/kvm/lib/aarch64/ucall.c +++ b/tools/testing/selftests/kvm/lib/aarch64/ucall.c @@ -88,9 +88,9 @@ void ucall(uint64_t cmd, int nargs, ...) *ucall_exit_mmio_addr =3D (vm_vaddr_t)&uc; } =20 -uint64_t get_ucall(struct kvm_vm *vm, uint32_t vcpu_id, struct ucall *uc) +uint64_t get_ucall(struct kvm_vcpu *vcpu, struct ucall *uc) { - struct kvm_run *run =3D vcpu_state(vm, vcpu_id); + struct kvm_run *run =3D vcpu->run; struct ucall ucall =3D {}; =20 if (uc) @@ -103,9 +103,9 @@ uint64_t get_ucall(struct kvm_vm *vm, uint32_t vcpu_id,= struct ucall *uc) TEST_ASSERT(run->mmio.is_write && run->mmio.len =3D=3D 8, "Unexpected ucall exit mmio address access"); memcpy(&gva, run->mmio.data, sizeof(gva)); - memcpy(&ucall, addr_gva2hva(vm, gva), sizeof(ucall)); + memcpy(&ucall, addr_gva2hva(vcpu->vm, gva), sizeof(ucall)); =20 - vcpu_run_complete_io(vm, vcpu_id); + vcpu_run_complete_io(vcpu); if (uc) memcpy(uc, &ucall, sizeof(ucall)); } diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index 3a09ed1a02d2..b6faffcdcf39 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -1391,88 +1391,50 @@ void *addr_gpa2alias(struct kvm_vm *vm, vm_paddr_t = gpa) return (void *) ((uintptr_t) region->host_alias + offset); } =20 -/* - * VM Create IRQ Chip - * - * Input Args: - * vm - Virtual Machine - * - * Output Args: None - * - * Return: None - * - * Creates an interrupt controller chip for the VM specified by vm. - */ +/* Create an interrupt controller chip for the specified VM. */ void vm_create_irqchip(struct kvm_vm *vm) { vm_ioctl(vm, KVM_CREATE_IRQCHIP, NULL); =20 vm->has_irqchip =3D true; } - -/* - * VM VCPU State - * - * Input Args: - * vm - Virtual Machine - * vcpuid - VCPU ID - * - * Output Args: None - * - * Return: - * Pointer to structure that describes the state of the VCPU. - * - * Locates and returns a pointer to a structure that describes the - * state of the VCPU with the given vcpuid. - */ -struct kvm_run *vcpu_state(struct kvm_vm *vm, uint32_t vcpuid) +struct kvm_run *vcpu_state(struct kvm_vcpu *vcpu) { - struct kvm_vcpu *vcpu =3D vcpu_get(vm, vcpuid); - return vcpu->run; } =20 -/* - * VM VCPU Run - * - * Input Args: - * vm - Virtual Machine - * vcpuid - VCPU ID - * - * Output Args: None - * - * Return: None - * - * Switch to executing the code for the VCPU given by vcpuid, within the VM - * given by vm. - */ -void vcpu_run(struct kvm_vm *vm, uint32_t vcpuid) -{ - int ret =3D _vcpu_run(vm, vcpuid); - TEST_ASSERT(ret =3D=3D 0, "KVM_RUN IOCTL failed, " - "rc: %i errno: %i", ret, errno); -} =20 -int _vcpu_run(struct kvm_vm *vm, uint32_t vcpuid) +int _vcpu_run(struct kvm_vcpu *vcpu) { int rc; =20 do { - rc =3D __vcpu_run(vm, vcpuid); + rc =3D __vcpu_run(vcpu); } while (rc =3D=3D -1 && errno =3D=3D EINTR); =20 - assert_on_unhandled_exception(vm, vcpuid); + assert_on_unhandled_exception(vcpu); =20 return rc; } =20 -void vcpu_run_complete_io(struct kvm_vm *vm, uint32_t vcpuid) +/* + * Invoke KVM_RUN on a vCPU until KVM returns something other than -EINTR. + * Assert if the KVM returns an error (other than -EINTR). + */ +void vcpu_run(struct kvm_vcpu *vcpu) +{ + int ret =3D _vcpu_run(vcpu); + TEST_ASSERT(ret =3D=3D 0, "KVM_RUN IOCTL failed, " + "rc: %i errno: %i", ret, errno); +} + + +void vcpu_run_complete_io(struct kvm_vcpu *vcpu) { - struct kvm_vcpu *vcpu =3D vcpu_get(vm, vcpuid); int ret; =20 vcpu->run->immediate_exit =3D 1; - ret =3D __vcpu_run(vm, vcpuid); + ret =3D __vcpu_run(vcpu); vcpu->run->immediate_exit =3D 0; =20 TEST_ASSERT(ret =3D=3D -1 && errno =3D=3D EINTR, @@ -1481,73 +1443,57 @@ void vcpu_run_complete_io(struct kvm_vm *vm, uint32= _t vcpuid) } =20 /* - * VM VCPU Get Reg List - * - * Input Args: - * vm - Virtual Machine - * vcpuid - VCPU ID - * - * Output Args: - * None - * - * Return: - * A pointer to an allocated struct kvm_reg_list - * * Get the list of guest registers which are supported for - * KVM_GET_ONE_REG/KVM_SET_ONE_REG calls + * KVM_GET_ONE_REG/KVM_SET_ONE_REG ioctls. Returns a kvm_reg_list pointer, + * it is the callers responsibility to free the list. */ -struct kvm_reg_list *vcpu_get_reg_list(struct kvm_vm *vm, uint32_t vcpuid) +struct kvm_reg_list *vcpu_get_reg_list(struct kvm_vcpu *vcpu) { struct kvm_reg_list reg_list_n =3D { .n =3D 0 }, *reg_list; int ret; =20 - ret =3D __vcpu_ioctl(vm, vcpuid, KVM_GET_REG_LIST, ®_list_n); + ret =3D __vcpu_ioctl(vcpu, KVM_GET_REG_LIST, ®_list_n); TEST_ASSERT(ret =3D=3D -1 && errno =3D=3D E2BIG, "KVM_GET_REG_LIST n=3D0"= ); + reg_list =3D calloc(1, sizeof(*reg_list) + reg_list_n.n * sizeof(__u64)); reg_list->n =3D reg_list_n.n; - vcpu_ioctl(vm, vcpuid, KVM_GET_REG_LIST, reg_list); + vcpu_ioctl(vcpu, KVM_GET_REG_LIST, reg_list); return reg_list; } =20 -int __vcpu_ioctl(struct kvm_vm *vm, uint32_t vcpuid, - unsigned long cmd, void *arg) +int __vcpu_ioctl(struct kvm_vcpu *vcpu, unsigned long cmd, void *arg) { - struct kvm_vcpu *vcpu =3D vcpu_get(vm, vcpuid); - return ioctl(vcpu->fd, cmd, arg); } =20 -void _vcpu_ioctl(struct kvm_vm *vm, uint32_t vcpuid, unsigned long cmd, - const char *name, void *arg) +void _vcpu_ioctl(struct kvm_vcpu *vcpu, unsigned long cmd, const char *nam= e, + void *arg) { - int ret =3D __vcpu_ioctl(vm, vcpuid, cmd, arg); + int ret =3D __vcpu_ioctl(vcpu, cmd, arg); =20 TEST_ASSERT(!ret, __KVM_IOCTL_ERROR(name, ret)); } =20 -void *vcpu_map_dirty_ring(struct kvm_vm *vm, uint32_t vcpuid) +void *vcpu_map_dirty_ring(struct kvm_vcpu *vcpu) { - struct kvm_vcpu *vcpu =3D vcpu_get(vm, vcpuid); - uint32_t size =3D vm->dirty_ring_size; + uint32_t page_size =3D vcpu->vm->page_size; + uint32_t size =3D vcpu->vm->dirty_ring_size; =20 TEST_ASSERT(size > 0, "Should enable dirty ring first"); =20 if (!vcpu->dirty_gfns) { void *addr; =20 - addr =3D mmap(NULL, size, PROT_READ, - MAP_PRIVATE, vcpu->fd, - vm->page_size * KVM_DIRTY_LOG_PAGE_OFFSET); + addr =3D mmap(NULL, size, PROT_READ, MAP_PRIVATE, vcpu->fd, + page_size * KVM_DIRTY_LOG_PAGE_OFFSET); TEST_ASSERT(addr =3D=3D MAP_FAILED, "Dirty ring mapped private"); =20 - addr =3D mmap(NULL, size, PROT_READ | PROT_EXEC, - MAP_PRIVATE, vcpu->fd, - vm->page_size * KVM_DIRTY_LOG_PAGE_OFFSET); + addr =3D mmap(NULL, size, PROT_READ | PROT_EXEC, MAP_PRIVATE, vcpu->fd, + page_size * KVM_DIRTY_LOG_PAGE_OFFSET); TEST_ASSERT(addr =3D=3D MAP_FAILED, "Dirty ring mapped exec"); =20 - addr =3D mmap(NULL, size, PROT_READ | PROT_WRITE, - MAP_SHARED, vcpu->fd, - vm->page_size * KVM_DIRTY_LOG_PAGE_OFFSET); + addr =3D mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, vcpu->fd, + page_size * KVM_DIRTY_LOG_PAGE_OFFSET); TEST_ASSERT(addr !=3D MAP_FAILED, "Dirty ring map failed"); =20 vcpu->dirty_gfns =3D addr; @@ -1621,38 +1567,6 @@ int __kvm_device_attr_access(int dev_fd, uint32_t gr= oup, uint64_t attr, return __kvm_ioctl(dev_fd, cmd, &kvmattr); } =20 -int __vcpu_device_attr_get(struct kvm_vm *vm, uint32_t vcpuid, uint32_t gr= oup, - uint64_t attr, void *val) -{ - return __kvm_device_attr_get(vcpu_get(vm, vcpuid)->fd, group, attr, val); -} - -void vcpu_device_attr_get(struct kvm_vm *vm, uint32_t vcpuid, uint32_t gro= up, - uint64_t attr, void *val) -{ - kvm_device_attr_get(vcpu_get(vm, vcpuid)->fd, group, attr, val); -} - -int __vcpu_device_attr_set(struct kvm_vm *vm, uint32_t vcpuid, uint32_t gr= oup, - uint64_t attr, void *val) -{ - return __kvm_device_attr_set(vcpu_get(vm, vcpuid)->fd, group, attr, val); -} - -void vcpu_device_attr_set(struct kvm_vm *vm, uint32_t vcpuid, uint32_t gro= up, - uint64_t attr, void *val) -{ - kvm_device_attr_set(vcpu_get(vm, vcpuid)->fd, group, attr, val); -} - -int __vcpu_has_device_attr(struct kvm_vm *vm, uint32_t vcpuid, uint32_t gr= oup, - uint64_t attr) -{ - struct vcpu *vcpu =3D vcpu_get(vm, vcpuid); - - return __kvm_has_device_attr(vcpu->fd, group, attr); -} - /* * IRQ related functions. */ @@ -1769,8 +1683,9 @@ void vm_dump(FILE *stream, struct kvm_vm *vm, uint8_t= indent) virt_dump(stream, vm, indent + 4); } fprintf(stream, "%*sVCPUs:\n", indent, ""); + list_for_each_entry(vcpu, &vm->vcpus, list) - vcpu_dump(stream, vm, vcpu->id, indent + 2); + vcpu_dump(stream, vcpu, indent + 2); } =20 /* Known KVM exit reasons */ diff --git a/tools/testing/selftests/kvm/lib/perf_test_util.c b/tools/testi= ng/selftests/kvm/lib/perf_test_util.c index 679f64527f1a..7faed18f7719 100644 --- a/tools/testing/selftests/kvm/lib/perf_test_util.c +++ b/tools/testing/selftests/kvm/lib/perf_test_util.c @@ -98,7 +98,7 @@ void perf_test_setup_vcpus(struct kvm_vm *vm, int nr_vcpu= s, vcpu_args->gpa =3D pta->gpa; } =20 - vcpu_args_set(vm, vcpus[i]->id, 1, i); + vcpu_args_set(vcpus[i], 1, i); =20 pr_debug("Added VCPU %d with test mem gpa [%lx, %lx)\n", i, vcpu_args->gpa, vcpu_args->gpa + diff --git a/tools/testing/selftests/kvm/lib/riscv/processor.c b/tools/test= ing/selftests/kvm/lib/riscv/processor.c index 5a57494751e1..47e609430b39 100644 --- a/tools/testing/selftests/kvm/lib/riscv/processor.c +++ b/tools/testing/selftests/kvm/lib/riscv/processor.c @@ -178,7 +178,7 @@ void virt_arch_dump(FILE *stream, struct kvm_vm *vm, ui= nt8_t indent) } } =20 -void riscv_vcpu_mmu_setup(struct kvm_vm *vm, int vcpuid) +void riscv_vcpu_mmu_setup(struct kvm_vcpu *vcpu) { unsigned long satp; =20 @@ -198,46 +198,46 @@ void riscv_vcpu_mmu_setup(struct kvm_vm *vm, int vcpu= id) satp =3D (vm->pgd >> PGTBL_PAGE_SIZE_SHIFT) & SATP_PPN; satp |=3D SATP_MODE_48; =20 - set_reg(vm, vcpuid, RISCV_CSR_REG(satp), satp); + set_reg(vcpu, RISCV_CSR_REG(satp), satp); } =20 -void vcpu_arch_dump(FILE *stream, struct kvm_vm *vm, uint32_t vcpuid, uint= 8_t indent) +void vcpu_arch_dump(FILE *stream, struct kvm_vcpu *vcpu, uint8_t indent) { struct kvm_riscv_core core; =20 - get_reg(vm, vcpuid, RISCV_CORE_REG(mode), &core.mode); - get_reg(vm, vcpuid, RISCV_CORE_REG(regs.pc), &core.regs.pc); - get_reg(vm, vcpuid, RISCV_CORE_REG(regs.ra), &core.regs.ra); - get_reg(vm, vcpuid, RISCV_CORE_REG(regs.sp), &core.regs.sp); - get_reg(vm, vcpuid, RISCV_CORE_REG(regs.gp), &core.regs.gp); - get_reg(vm, vcpuid, RISCV_CORE_REG(regs.tp), &core.regs.tp); - get_reg(vm, vcpuid, RISCV_CORE_REG(regs.t0), &core.regs.t0); - get_reg(vm, vcpuid, RISCV_CORE_REG(regs.t1), &core.regs.t1); - get_reg(vm, vcpuid, RISCV_CORE_REG(regs.t2), &core.regs.t2); - get_reg(vm, vcpuid, RISCV_CORE_REG(regs.s0), &core.regs.s0); - get_reg(vm, vcpuid, RISCV_CORE_REG(regs.s1), &core.regs.s1); - get_reg(vm, vcpuid, RISCV_CORE_REG(regs.a0), &core.regs.a0); - get_reg(vm, vcpuid, RISCV_CORE_REG(regs.a1), &core.regs.a1); - get_reg(vm, vcpuid, RISCV_CORE_REG(regs.a2), &core.regs.a2); - get_reg(vm, vcpuid, RISCV_CORE_REG(regs.a3), &core.regs.a3); - get_reg(vm, vcpuid, RISCV_CORE_REG(regs.a4), &core.regs.a4); - get_reg(vm, vcpuid, RISCV_CORE_REG(regs.a5), &core.regs.a5); - get_reg(vm, vcpuid, RISCV_CORE_REG(regs.a6), &core.regs.a6); - get_reg(vm, vcpuid, RISCV_CORE_REG(regs.a7), &core.regs.a7); - get_reg(vm, vcpuid, RISCV_CORE_REG(regs.s2), &core.regs.s2); - get_reg(vm, vcpuid, RISCV_CORE_REG(regs.s3), &core.regs.s3); - get_reg(vm, vcpuid, RISCV_CORE_REG(regs.s4), &core.regs.s4); - get_reg(vm, vcpuid, RISCV_CORE_REG(regs.s5), &core.regs.s5); - get_reg(vm, vcpuid, RISCV_CORE_REG(regs.s6), &core.regs.s6); - get_reg(vm, vcpuid, RISCV_CORE_REG(regs.s7), &core.regs.s7); - get_reg(vm, vcpuid, RISCV_CORE_REG(regs.s8), &core.regs.s8); - get_reg(vm, vcpuid, RISCV_CORE_REG(regs.s9), &core.regs.s9); - get_reg(vm, vcpuid, RISCV_CORE_REG(regs.s10), &core.regs.s10); - get_reg(vm, vcpuid, RISCV_CORE_REG(regs.s11), &core.regs.s11); - get_reg(vm, vcpuid, RISCV_CORE_REG(regs.t3), &core.regs.t3); - get_reg(vm, vcpuid, RISCV_CORE_REG(regs.t4), &core.regs.t4); - get_reg(vm, vcpuid, RISCV_CORE_REG(regs.t5), &core.regs.t5); - get_reg(vm, vcpuid, RISCV_CORE_REG(regs.t6), &core.regs.t6); + get_reg(vcpu, RISCV_CORE_REG(mode), &core.mode); + get_reg(vcpu, RISCV_CORE_REG(regs.pc), &core.regs.pc); + get_reg(vcpu, RISCV_CORE_REG(regs.ra), &core.regs.ra); + get_reg(vcpu, RISCV_CORE_REG(regs.sp), &core.regs.sp); + get_reg(vcpu, RISCV_CORE_REG(regs.gp), &core.regs.gp); + get_reg(vcpu, RISCV_CORE_REG(regs.tp), &core.regs.tp); + get_reg(vcpu, RISCV_CORE_REG(regs.t0), &core.regs.t0); + get_reg(vcpu, RISCV_CORE_REG(regs.t1), &core.regs.t1); + get_reg(vcpu, RISCV_CORE_REG(regs.t2), &core.regs.t2); + get_reg(vcpu, RISCV_CORE_REG(regs.s0), &core.regs.s0); + get_reg(vcpu, RISCV_CORE_REG(regs.s1), &core.regs.s1); + get_reg(vcpu, RISCV_CORE_REG(regs.a0), &core.regs.a0); + get_reg(vcpu, RISCV_CORE_REG(regs.a1), &core.regs.a1); + get_reg(vcpu, RISCV_CORE_REG(regs.a2), &core.regs.a2); + get_reg(vcpu, RISCV_CORE_REG(regs.a3), &core.regs.a3); + get_reg(vcpu, RISCV_CORE_REG(regs.a4), &core.regs.a4); + get_reg(vcpu, RISCV_CORE_REG(regs.a5), &core.regs.a5); + get_reg(vcpu, RISCV_CORE_REG(regs.a6), &core.regs.a6); + get_reg(vcpu, RISCV_CORE_REG(regs.a7), &core.regs.a7); + get_reg(vcpu, RISCV_CORE_REG(regs.s2), &core.regs.s2); + get_reg(vcpu, RISCV_CORE_REG(regs.s3), &core.regs.s3); + get_reg(vcpu, RISCV_CORE_REG(regs.s4), &core.regs.s4); + get_reg(vcpu, RISCV_CORE_REG(regs.s5), &core.regs.s5); + get_reg(vcpu, RISCV_CORE_REG(regs.s6), &core.regs.s6); + get_reg(vcpu, RISCV_CORE_REG(regs.s7), &core.regs.s7); + get_reg(vcpu, RISCV_CORE_REG(regs.s8), &core.regs.s8); + get_reg(vcpu, RISCV_CORE_REG(regs.s9), &core.regs.s9); + get_reg(vcpu, RISCV_CORE_REG(regs.s10), &core.regs.s10); + get_reg(vcpu, RISCV_CORE_REG(regs.s11), &core.regs.s11); + get_reg(vcpu, RISCV_CORE_REG(regs.t3), &core.regs.t3); + get_reg(vcpu, RISCV_CORE_REG(regs.t4), &core.regs.t4); + get_reg(vcpu, RISCV_CORE_REG(regs.t5), &core.regs.t5); + get_reg(vcpu, RISCV_CORE_REG(regs.t6), &core.regs.t6); =20 fprintf(stream, " MODE: 0x%lx\n", core.mode); @@ -286,8 +286,8 @@ struct kvm_vcpu *vm_arch_vcpu_add(struct kvm_vm *vm, ui= nt32_t vcpu_id, struct kvm_mp_state mps; struct kvm_vcpu *vcpu; =20 - vcpu =3D __vm_vcpu_add(vm, vcpuid); - riscv_vcpu_mmu_setup(vm, vcpuid); + vcpu =3D __vm_vcpu_add(vm, vcpu_id); + riscv_vcpu_mmu_setup(vcpu); =20 /* * With SBI HSM support in KVM RISC-V, all secondary VCPUs are @@ -295,28 +295,25 @@ struct kvm_vcpu *vm_arch_vcpu_add(struct kvm_vm *vm, = uint32_t vcpu_id, * are powered-on using KVM_SET_MP_STATE ioctl(). */ mps.mp_state =3D KVM_MP_STATE_RUNNABLE; - r =3D __vcpu_ioctl(vm, vcpu_id, KVM_SET_MP_STATE, &mps); + r =3D __vcpu_ioctl(vcpu, KVM_SET_MP_STATE, &mps); TEST_ASSERT(!r, "IOCTL KVM_SET_MP_STATE failed (error %d)", r); =20 /* Setup global pointer of guest to be same as the host */ asm volatile ( "add %0, gp, zero" : "=3Dr" (current_gp) : : "memory"); - set_reg(vm, vcpu_id, RISCV_CORE_REG(regs.gp), current_gp); + set_reg(vcpu, RISCV_CORE_REG(regs.gp), current_gp); =20 /* Setup stack pointer and program counter of guest */ - set_reg(vm, vcpu_id, RISCV_CORE_REG(regs.sp), - stack_vaddr + stack_size); - set_reg(vm, vcpu_id, RISCV_CORE_REG(regs.pc), - (unsigned long)guest_code); + set_reg(vcpu, RISCV_CORE_REG(regs.sp), stack_vaddr + stack_size); + set_reg(vcpu, RISCV_CORE_REG(regs.pc), (unsigned long)guest_code); =20 /* Setup default exception vector of guest */ - set_reg(vm, vcpu_id, RISCV_CSR_REG(stvec), - (unsigned long)guest_hang); + set_reg(vcpu, RISCV_CSR_REG(stvec), (unsigned long)guest_hang); =20 return vcpu; } =20 -void vcpu_args_set(struct kvm_vm *vm, uint32_t vcpuid, unsigned int num, .= ..) +void vcpu_args_set(struct kvm_vcpu *vcpu, unsigned int num, ...) { va_list ap; uint64_t id =3D RISCV_CORE_REG(regs.a0); @@ -354,12 +351,12 @@ void vcpu_args_set(struct kvm_vm *vm, uint32_t vcpuid= , unsigned int num, ...) id =3D RISCV_CORE_REG(regs.a7); break; }; - set_reg(vm, vcpuid, id, va_arg(ap, uint64_t)); + set_reg(vcpu, id, va_arg(ap, uint64_t)); } =20 va_end(ap); } =20 -void assert_on_unhandled_exception(struct kvm_vm *vm, uint32_t vcpuid) +void assert_on_unhandled_exception(struct kvm_vcpu *vcpu) { } diff --git a/tools/testing/selftests/kvm/lib/riscv/ucall.c b/tools/testing/= selftests/kvm/lib/riscv/ucall.c index c554ed173b38..db563f57a68f 100644 --- a/tools/testing/selftests/kvm/lib/riscv/ucall.c +++ b/tools/testing/selftests/kvm/lib/riscv/ucall.c @@ -63,9 +63,9 @@ void ucall(uint64_t cmd, int nargs, ...) 0, 0, 0, 0, 0); } =20 -uint64_t get_ucall(struct kvm_vm *vm, uint32_t vcpu_id, struct ucall *uc) +uint64_t get_ucall(struct kvm_vcpu *vcpu, struct ucall *uc) { - struct kvm_run *run =3D vcpu_state(vm, vcpu_id); + struct kvm_run *run =3D vcpu->run; struct ucall ucall =3D {}; =20 if (uc) @@ -77,7 +77,7 @@ uint64_t get_ucall(struct kvm_vm *vm, uint32_t vcpu_id, s= truct ucall *uc) memcpy(&ucall, addr_gva2hva(vm, run->riscv_sbi.args[0]), sizeof(ucall)); =20 - vcpu_run_complete_io(vm, vcpu_id); + vcpu_run_complete_io(vcpu); if (uc) memcpy(uc, &ucall, sizeof(ucall)); } diff --git a/tools/testing/selftests/kvm/lib/s390x/diag318_test_handler.c b= /tools/testing/selftests/kvm/lib/s390x/diag318_test_handler.c index 21c31fe10c1a..05283f8c9948 100644 --- a/tools/testing/selftests/kvm/lib/s390x/diag318_test_handler.c +++ b/tools/testing/selftests/kvm/lib/s390x/diag318_test_handler.c @@ -32,7 +32,7 @@ static uint64_t diag318_handler(void) uint64_t diag318_info; =20 vm =3D vm_create_with_one_vcpu(&vcpu, guest_code); - vcpu_run(vm, vcpu->id); + vcpu_run(vcpu); run =3D vcpu->run; =20 TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_S390_SIEIC, diff --git a/tools/testing/selftests/kvm/lib/s390x/processor.c b/tools/test= ing/selftests/kvm/lib/s390x/processor.c index f8170e97eeb7..89d7340d9cbd 100644 --- a/tools/testing/selftests/kvm/lib/s390x/processor.c +++ b/tools/testing/selftests/kvm/lib/s390x/processor.c @@ -173,23 +173,23 @@ struct kvm_vcpu *vm_arch_vcpu_add(struct kvm_vm *vm, = uint32_t vcpu_id, vcpu =3D __vm_vcpu_add(vm, vcpu_id); =20 /* Setup guest registers */ - vcpu_regs_get(vm, vcpu_id, ®s); + vcpu_regs_get(vcpu, ®s); regs.gprs[15] =3D stack_vaddr + (DEFAULT_STACK_PGS * getpagesize()) - 160; - vcpu_regs_set(vm, vcpu_id, ®s); + vcpu_regs_set(vcpu, ®s); =20 - vcpu_sregs_get(vm, vcpu_id, &sregs); + vcpu_sregs_get(vcpu, &sregs); sregs.crs[0] |=3D 0x00040000; /* Enable floating point regs */ sregs.crs[1] =3D vm->pgd | 0xf; /* Primary region table */ - vcpu_sregs_set(vm, vcpu_id, &sregs); + vcpu_sregs_set(vcpu, &sregs); =20 - run =3D vcpu_state(vm, vcpu_id); + run =3D vcpu->run; run->psw_mask =3D 0x0400000180000000ULL; /* DAT enabled + 64 bit mode */ run->psw_addr =3D (uintptr_t)guest_code; =20 return vcpu; } =20 -void vcpu_args_set(struct kvm_vm *vm, uint32_t vcpuid, unsigned int num, .= ..) +void vcpu_args_set(struct kvm_vcpu *vcpu, unsigned int num, ...) { va_list ap; struct kvm_regs regs; @@ -200,23 +200,21 @@ void vcpu_args_set(struct kvm_vm *vm, uint32_t vcpuid= , unsigned int num, ...) num); =20 va_start(ap, num); - vcpu_regs_get(vm, vcpuid, ®s); + vcpu_regs_get(vcpu, ®s); =20 for (i =3D 0; i < num; i++) regs.gprs[i + 2] =3D va_arg(ap, uint64_t); =20 - vcpu_regs_set(vm, vcpuid, ®s); + vcpu_regs_set(vcpu, ®s); va_end(ap); } =20 -void vcpu_arch_dump(FILE *stream, struct kvm_vm *vm, uint32_t vcpuid, uint= 8_t indent) +void vcpu_arch_dump(FILE *stream, struct kvm_vcpu *vcpu, uint8_t indent) { - struct kvm_vcpu *vcpu =3D vcpu_get(vm, vcpuid); - fprintf(stream, "%*spstate: psw: 0x%.16llx:0x%.16llx\n", indent, "", vcpu->run->psw_mask, vcpu->run->psw_addr); } =20 -void assert_on_unhandled_exception(struct kvm_vm *vm, uint32_t vcpuid) +void assert_on_unhandled_exception(struct kvm_vcpu *vcpu) { } diff --git a/tools/testing/selftests/kvm/lib/s390x/ucall.c b/tools/testing/= selftests/kvm/lib/s390x/ucall.c index 9d3b0f15249a..78dfa2402b5e 100644 --- a/tools/testing/selftests/kvm/lib/s390x/ucall.c +++ b/tools/testing/selftests/kvm/lib/s390x/ucall.c @@ -33,9 +33,9 @@ void ucall(uint64_t cmd, int nargs, ...) asm volatile ("diag 0,%0,0x501" : : "a"(&uc) : "memory"); } =20 -uint64_t get_ucall(struct kvm_vm *vm, uint32_t vcpu_id, struct ucall *uc) +uint64_t get_ucall(struct kvm_vcpu *vcpu, struct ucall *uc) { - struct kvm_run *run =3D vcpu_state(vm, vcpu_id); + struct kvm_run *run =3D vcpu->run; struct ucall ucall =3D {}; =20 if (uc) @@ -47,10 +47,10 @@ uint64_t get_ucall(struct kvm_vm *vm, uint32_t vcpu_id,= struct ucall *uc) (run->s390_sieic.ipb >> 16) =3D=3D 0x501) { int reg =3D run->s390_sieic.ipa & 0xf; =20 - memcpy(&ucall, addr_gva2hva(vm, run->s.regs.gprs[reg]), + memcpy(&ucall, addr_gva2hva(vcpu->vm, run->s.regs.gprs[reg]), sizeof(ucall)); =20 - vcpu_run_complete_io(vm, vcpu_id); + vcpu_run_complete_io(vcpu); if (uc) memcpy(uc, &ucall, sizeof(ucall)); } diff --git a/tools/testing/selftests/kvm/lib/x86_64/processor.c b/tools/tes= ting/selftests/kvm/lib/x86_64/processor.c index c773f7b1ed4c..78c85d023654 100644 --- a/tools/testing/selftests/kvm/lib/x86_64/processor.c +++ b/tools/testing/selftests/kvm/lib/x86_64/processor.c @@ -249,7 +249,8 @@ void virt_arch_pg_map(struct kvm_vm *vm, uint64_t vaddr= , uint64_t paddr) __virt_pg_map(vm, vaddr, paddr, X86_PAGE_SIZE_4K); } =20 -static struct pageTableEntry *_vm_get_page_table_entry(struct kvm_vm *vm, = int vcpuid, +static struct pageTableEntry *_vm_get_page_table_entry(struct kvm_vm *vm, + struct kvm_vcpu *vcpu, uint64_t vaddr) { uint16_t index[4]; @@ -272,7 +273,7 @@ static struct pageTableEntry *_vm_get_page_table_entry(= struct kvm_vm *vm, int vc * If IA32_EFER.NXE =3D 0 and the P flag of a paging-structure entry is 1, * the XD flag (bit 63) is reserved. */ - vcpu_sregs_get(vm, vcpuid, &sregs); + vcpu_sregs_get(vcpu, &sregs); if ((sregs.efer & EFER_NX) =3D=3D 0) { rsvd_mask |=3D (1ull << 63); } @@ -325,17 +326,18 @@ static struct pageTableEntry *_vm_get_page_table_entr= y(struct kvm_vm *vm, int vc return &pte[index[0]]; } =20 -uint64_t vm_get_page_table_entry(struct kvm_vm *vm, int vcpuid, uint64_t v= addr) +uint64_t vm_get_page_table_entry(struct kvm_vm *vm, struct kvm_vcpu *vcpu, + uint64_t vaddr) { - struct pageTableEntry *pte =3D _vm_get_page_table_entry(vm, vcpuid, vaddr= ); + struct pageTableEntry *pte =3D _vm_get_page_table_entry(vm, vcpu, vaddr); =20 return *(uint64_t *)pte; } =20 -void vm_set_page_table_entry(struct kvm_vm *vm, int vcpuid, uint64_t vaddr, - uint64_t pte) +void vm_set_page_table_entry(struct kvm_vm *vm, struct kvm_vcpu *vcpu, + uint64_t vaddr, uint64_t pte) { - struct pageTableEntry *new_pte =3D _vm_get_page_table_entry(vm, vcpuid, + struct pageTableEntry *new_pte =3D _vm_get_page_table_entry(vm, vcpu, vaddr); =20 *(uint64_t *)new_pte =3D pte; @@ -585,12 +587,12 @@ static void kvm_setup_tss_64bit(struct kvm_vm *vm, st= ruct kvm_segment *segp, kvm_seg_fill_gdt_64bit(vm, segp); } =20 -static void vcpu_setup(struct kvm_vm *vm, int vcpuid) +static void vcpu_setup(struct kvm_vm *vm, struct kvm_vcpu *vcpu) { struct kvm_sregs sregs; =20 /* Set mode specific system register values. */ - vcpu_sregs_get(vm, vcpuid, &sregs); + vcpu_sregs_get(vcpu, &sregs); =20 sregs.idt.limit =3D 0; =20 @@ -614,7 +616,7 @@ static void vcpu_setup(struct kvm_vm *vm, int vcpuid) } =20 sregs.cr3 =3D vm->pgd; - vcpu_sregs_set(vm, vcpuid, &sregs); + vcpu_sregs_set(vcpu, &sregs); } =20 #define CPUID_XFD_BIT (1 << 4) @@ -683,19 +685,19 @@ struct kvm_vcpu *vm_arch_vcpu_add(struct kvm_vm *vm, = uint32_t vcpu_id, DEFAULT_GUEST_STACK_VADDR_MIN); =20 vcpu =3D __vm_vcpu_add(vm, vcpu_id); - vcpu_set_cpuid(vm, vcpu_id, kvm_get_supported_cpuid()); - vcpu_setup(vm, vcpu_id); + vcpu_set_cpuid(vcpu, kvm_get_supported_cpuid()); + vcpu_setup(vm, vcpu); =20 /* Setup guest general purpose registers */ - vcpu_regs_get(vm, vcpu_id, ®s); + vcpu_regs_get(vcpu, ®s); regs.rflags =3D regs.rflags | 0x2; regs.rsp =3D stack_vaddr + (DEFAULT_STACK_PGS * getpagesize()); regs.rip =3D (unsigned long) guest_code; - vcpu_regs_set(vm, vcpu_id, ®s); + vcpu_regs_set(vcpu, ®s); =20 /* Setup the MP state */ mp_state.mp_state =3D 0; - vcpu_set_mp_state(vm, vcpu_id, &mp_state); + vcpu_set_mp_state(vcpu, &mp_state); =20 return vcpu; } @@ -794,33 +796,17 @@ uint64_t kvm_get_feature_msr(uint64_t msr_index) return buffer.entry.data; } =20 -/* - * VM VCPU CPUID Set - * - * Input Args: - * vm - Virtual Machine - * vcpuid - VCPU id - * - * Output Args: None - * - * Return: KVM CPUID (KVM_GET_CPUID2) - * - * Set the VCPU's CPUID. - */ -struct kvm_cpuid2 *vcpu_get_cpuid(struct kvm_vm *vm, uint32_t vcpuid) +struct kvm_cpuid2 *vcpu_get_cpuid(struct kvm_vcpu *vcpu) { - struct kvm_vcpu *vcpu =3D vcpu_get(vm, vcpuid); struct kvm_cpuid2 *cpuid; int max_ent; int rc =3D -1; =20 - TEST_ASSERT(vcpu !=3D NULL, "vcpu not found, vcpuid: %u", vcpuid); - cpuid =3D allocate_kvm_cpuid2(); max_ent =3D cpuid->nent; =20 for (cpuid->nent =3D 1; cpuid->nent <=3D max_ent; cpuid->nent++) { - rc =3D ioctl(vcpu->fd, KVM_GET_CPUID2, cpuid); + rc =3D __vcpu_ioctl(vcpu, KVM_GET_CPUID2, cpuid); if (!rc) break; =20 @@ -869,7 +855,7 @@ kvm_get_supported_cpuid_index(uint32_t function, uint32= _t index) return entry; } =20 -uint64_t vcpu_get_msr(struct kvm_vm *vm, uint32_t vcpuid, uint64_t msr_ind= ex) +uint64_t vcpu_get_msr(struct kvm_vcpu *vcpu, uint64_t msr_index) { struct { struct kvm_msrs header; @@ -880,14 +866,13 @@ uint64_t vcpu_get_msr(struct kvm_vm *vm, uint32_t vcp= uid, uint64_t msr_index) buffer.header.nmsrs =3D 1; buffer.entry.index =3D msr_index; =20 - r =3D __vcpu_ioctl(vm, vcpuid, KVM_GET_MSRS, &buffer.header); + r =3D __vcpu_ioctl(vcpu, KVM_GET_MSRS, &buffer.header); TEST_ASSERT(r =3D=3D 1, KVM_IOCTL_ERROR(KVM_GET_MSRS, r)); =20 return buffer.entry.data; } =20 -int _vcpu_set_msr(struct kvm_vm *vm, uint32_t vcpuid, uint64_t msr_index, - uint64_t msr_value) +int _vcpu_set_msr(struct kvm_vcpu *vcpu, uint64_t msr_index, uint64_t msr_= value) { struct { struct kvm_msrs header; @@ -899,10 +884,10 @@ int _vcpu_set_msr(struct kvm_vm *vm, uint32_t vcpuid,= uint64_t msr_index, buffer.entry.index =3D msr_index; buffer.entry.data =3D msr_value; =20 - return __vcpu_ioctl(vm, vcpuid, KVM_SET_MSRS, &buffer.header); + return __vcpu_ioctl(vcpu, KVM_SET_MSRS, &buffer.header); } =20 -void vcpu_args_set(struct kvm_vm *vm, uint32_t vcpuid, unsigned int num, .= ..) +void vcpu_args_set(struct kvm_vcpu *vcpu, unsigned int num, ...) { va_list ap; struct kvm_regs regs; @@ -912,7 +897,7 @@ void vcpu_args_set(struct kvm_vm *vm, uint32_t vcpuid, = unsigned int num, ...) num); =20 va_start(ap, num); - vcpu_regs_get(vm, vcpuid, ®s); + vcpu_regs_get(vcpu, ®s); =20 if (num >=3D 1) regs.rdi =3D va_arg(ap, uint64_t); @@ -932,23 +917,23 @@ void vcpu_args_set(struct kvm_vm *vm, uint32_t vcpuid= , unsigned int num, ...) if (num >=3D 6) regs.r9 =3D va_arg(ap, uint64_t); =20 - vcpu_regs_set(vm, vcpuid, ®s); + vcpu_regs_set(vcpu, ®s); va_end(ap); } =20 -void vcpu_arch_dump(FILE *stream, struct kvm_vm *vm, uint32_t vcpuid, uint= 8_t indent) +void vcpu_arch_dump(FILE *stream, struct kvm_vcpu *vcpu, uint8_t indent) { struct kvm_regs regs; struct kvm_sregs sregs; =20 - fprintf(stream, "%*scpuid: %u\n", indent, "", vcpuid); + fprintf(stream, "%*svCPU ID: %u\n", indent, "", vcpu->id); =20 fprintf(stream, "%*sregs:\n", indent + 2, ""); - vcpu_regs_get(vm, vcpuid, ®s); + vcpu_regs_get(vcpu, ®s); regs_dump(stream, ®s, indent + 4); =20 fprintf(stream, "%*ssregs:\n", indent + 2, ""); - vcpu_sregs_get(vm, vcpuid, &sregs); + vcpu_sregs_get(vcpu, &sregs); sregs_dump(stream, &sregs, indent + 4); } =20 @@ -1002,9 +987,9 @@ static int vcpu_save_xsave_state(struct kvm_vm *vm, st= ruct kvm_vcpu *vcpu, return ioctl(vcpu->fd, KVM_GET_XSAVE2, state->xsave); } =20 -struct kvm_x86_state *vcpu_save_state(struct kvm_vm *vm, uint32_t vcpuid) +struct kvm_x86_state *vcpu_save_state(struct kvm_vcpu *vcpu) { - struct kvm_vcpu *vcpu =3D vcpu_get(vm, vcpuid); + struct kvm_vm *vm =3D vcpu->vm; struct kvm_msr_list *list; struct kvm_x86_state *state; int nmsrs, r, i; @@ -1023,7 +1008,7 @@ struct kvm_x86_state *vcpu_save_state(struct kvm_vm *= vm, uint32_t vcpuid) * kernel with KVM_RUN. Complete IO prior to migrating state * to a new VM. */ - vcpu_run_complete_io(vm, vcpuid); + vcpu_run_complete_io(vcpu); =20 nmsrs =3D kvm_get_num_msrs(vm); list =3D malloc(sizeof(*list) + nmsrs * sizeof(list->indices[0])); @@ -1083,9 +1068,8 @@ struct kvm_x86_state *vcpu_save_state(struct kvm_vm *= vm, uint32_t vcpuid) return state; } =20 -void vcpu_load_state(struct kvm_vm *vm, uint32_t vcpuid, struct kvm_x86_st= ate *state) +void vcpu_load_state(struct kvm_vcpu *vcpu, struct kvm_x86_state *state) { - struct kvm_vcpu *vcpu =3D vcpu_get(vm, vcpuid); int r; =20 r =3D ioctl(vcpu->fd, KVM_SET_SREGS, &state->sregs); @@ -1253,17 +1237,18 @@ void vm_init_descriptor_tables(struct kvm_vm *vm) DEFAULT_CODE_SELECTOR); } =20 -void vcpu_init_descriptor_tables(struct kvm_vm *vm, uint32_t vcpuid) +void vcpu_init_descriptor_tables(struct kvm_vcpu *vcpu) { + struct kvm_vm *vm =3D vcpu->vm; struct kvm_sregs sregs; =20 - vcpu_sregs_get(vm, vcpuid, &sregs); + vcpu_sregs_get(vcpu, &sregs); sregs.idt.base =3D vm->idt; sregs.idt.limit =3D NUM_INTERRUPTS * sizeof(struct idt_entry) - 1; sregs.gdt.base =3D vm->gdt; sregs.gdt.limit =3D getpagesize() - 1; kvm_seg_set_kernel_data_64bit(NULL, DEFAULT_DATA_SELECTOR, &sregs.gs); - vcpu_sregs_set(vm, vcpuid, &sregs); + vcpu_sregs_set(vcpu, &sregs); *(vm_vaddr_t *)addr_gva2hva(vm, (vm_vaddr_t)(&exception_handlers)) =3D vm= ->handlers; } =20 @@ -1275,11 +1260,11 @@ void vm_install_exception_handler(struct kvm_vm *vm= , int vector, handlers[vector] =3D (vm_vaddr_t)handler; } =20 -void assert_on_unhandled_exception(struct kvm_vm *vm, uint32_t vcpuid) +void assert_on_unhandled_exception(struct kvm_vcpu *vcpu) { struct ucall uc; =20 - if (get_ucall(vm, vcpuid, &uc) =3D=3D UCALL_UNHANDLED) { + if (get_ucall(vcpu, &uc) =3D=3D UCALL_UNHANDLED) { uint64_t vector =3D uc.args[0]; =20 TEST_FAIL("Unexpected vectored event in guest (vector:0x%lx)", @@ -1350,7 +1335,7 @@ struct kvm_cpuid2 *kvm_get_supported_hv_cpuid(void) return cpuid; } =20 -void vcpu_set_hv_cpuid(struct kvm_vm *vm, uint32_t vcpuid) +void vcpu_set_hv_cpuid(struct kvm_vcpu *vcpu) { static struct kvm_cpuid2 *cpuid_full; struct kvm_cpuid2 *cpuid_sys, *cpuid_hv; @@ -1382,16 +1367,16 @@ void vcpu_set_hv_cpuid(struct kvm_vm *vm, uint32_t = vcpuid) cpuid_full->nent =3D nent + cpuid_hv->nent; } =20 - vcpu_set_cpuid(vm, vcpuid, cpuid_full); + vcpu_set_cpuid(vcpu, cpuid_full); } =20 -struct kvm_cpuid2 *vcpu_get_supported_hv_cpuid(struct kvm_vm *vm, uint32_t= vcpuid) +struct kvm_cpuid2 *vcpu_get_supported_hv_cpuid(struct kvm_vcpu *vcpu) { static struct kvm_cpuid2 *cpuid; =20 cpuid =3D allocate_kvm_cpuid2(); =20 - vcpu_ioctl(vm, vcpuid, KVM_GET_SUPPORTED_HV_CPUID, cpuid); + vcpu_ioctl(vcpu, KVM_GET_SUPPORTED_HV_CPUID, cpuid); =20 return cpuid; } diff --git a/tools/testing/selftests/kvm/lib/x86_64/ucall.c b/tools/testing= /selftests/kvm/lib/x86_64/ucall.c index a3489973e290..e39857aa646d 100644 --- a/tools/testing/selftests/kvm/lib/x86_64/ucall.c +++ b/tools/testing/selftests/kvm/lib/x86_64/ucall.c @@ -35,9 +35,9 @@ void ucall(uint64_t cmd, int nargs, ...) : : [port] "d" (UCALL_PIO_PORT), "D" (&uc) : "rax", "memory"); } =20 -uint64_t get_ucall(struct kvm_vm *vm, uint32_t vcpu_id, struct ucall *uc) +uint64_t get_ucall(struct kvm_vcpu *vcpu, struct ucall *uc) { - struct kvm_run *run =3D vcpu_state(vm, vcpu_id); + struct kvm_run *run =3D vcpu->run; struct ucall ucall =3D {}; =20 if (uc) @@ -46,11 +46,11 @@ uint64_t get_ucall(struct kvm_vm *vm, uint32_t vcpu_id,= struct ucall *uc) if (run->exit_reason =3D=3D KVM_EXIT_IO && run->io.port =3D=3D UCALL_PIO_= PORT) { struct kvm_regs regs; =20 - vcpu_regs_get(vm, vcpu_id, ®s); - memcpy(&ucall, addr_gva2hva(vm, (vm_vaddr_t)regs.rdi), + vcpu_regs_get(vcpu, ®s); + memcpy(&ucall, addr_gva2hva(vcpu->vm, (vm_vaddr_t)regs.rdi), sizeof(ucall)); =20 - vcpu_run_complete_io(vm, vcpu_id); + vcpu_run_complete_io(vcpu); if (uc) memcpy(uc, &ucall, sizeof(ucall)); } diff --git a/tools/testing/selftests/kvm/lib/x86_64/vmx.c b/tools/testing/s= elftests/kvm/lib/x86_64/vmx.c index 0d42aa821833..0d66d1704867 100644 --- a/tools/testing/selftests/kvm/lib/x86_64/vmx.c +++ b/tools/testing/selftests/kvm/lib/x86_64/vmx.c @@ -42,7 +42,7 @@ struct eptPageTablePointer { uint64_t address:40; uint64_t reserved_63_52:12; }; -int vcpu_enable_evmcs(struct kvm_vm *vm, int vcpu_id) +int vcpu_enable_evmcs(struct kvm_vcpu *vcpu) { uint16_t evmcs_ver; =20 @@ -51,7 +51,7 @@ int vcpu_enable_evmcs(struct kvm_vm *vm, int vcpu_id) .args[0] =3D (unsigned long)&evmcs_ver }; =20 - vcpu_ioctl(vm, vcpu_id, KVM_ENABLE_CAP, &enable_evmcs_cap); + vcpu_ioctl(vcpu, KVM_ENABLE_CAP, &enable_evmcs_cap); =20 /* KVM should return supported EVMCS version range */ TEST_ASSERT(((evmcs_ver >> 8) >=3D (evmcs_ver & 0xff)) && diff --git a/tools/testing/selftests/kvm/memslot_modification_stress_test.c= b/tools/testing/selftests/kvm/memslot_modification_stress_test.c index a3efb3182119..1f9036cdcaa9 100644 --- a/tools/testing/selftests/kvm/memslot_modification_stress_test.c +++ b/tools/testing/selftests/kvm/memslot_modification_stress_test.c @@ -39,7 +39,6 @@ static bool run_vcpus =3D true; static void vcpu_worker(struct perf_test_vcpu_args *vcpu_args) { struct kvm_vcpu *vcpu =3D vcpu_args->vcpu; - struct kvm_vm *vm =3D perf_test_args.vm; struct kvm_run *run; int ret; =20 @@ -47,10 +46,10 @@ static void vcpu_worker(struct perf_test_vcpu_args *vcp= u_args) =20 /* Let the guest access its memory until a stop signal is received */ while (READ_ONCE(run_vcpus)) { - ret =3D _vcpu_run(vm, vcpu->id); + ret =3D _vcpu_run(vcpu); TEST_ASSERT(ret =3D=3D 0, "vcpu_run failed: %d\n", ret); =20 - if (get_ucall(vm, vcpu->id, NULL) =3D=3D UCALL_SYNC) + if (get_ucall(vcpu, NULL) =3D=3D UCALL_SYNC) continue; =20 TEST_ASSERT(false, diff --git a/tools/testing/selftests/kvm/memslot_perf_test.c b/tools/testin= g/selftests/kvm/memslot_perf_test.c index 009eb19b28af..5f98489e4f4d 100644 --- a/tools/testing/selftests/kvm/memslot_perf_test.c +++ b/tools/testing/selftests/kvm/memslot_perf_test.c @@ -146,9 +146,9 @@ static void *vcpu_worker(void *__data) struct ucall uc; =20 while (1) { - vcpu_run(data->vm, vcpu->id); + vcpu_run(vcpu); =20 - switch (get_ucall(data->vm, vcpu->id, &uc)) { + switch (get_ucall(vcpu, &uc)) { case UCALL_SYNC: TEST_ASSERT(uc.args[1] =3D=3D 0, "Unexpected sync ucall, got %lx", diff --git a/tools/testing/selftests/kvm/rseq_test.c b/tools/testing/selfte= sts/kvm/rseq_test.c index fd754de0b74c..68c0c8bb206e 100644 --- a/tools/testing/selftests/kvm/rseq_test.c +++ b/tools/testing/selftests/kvm/rseq_test.c @@ -233,8 +233,8 @@ int main(int argc, char *argv[]) pthread_create(&migration_thread, NULL, migration_worker, 0); =20 for (i =3D 0; !done; i++) { - vcpu_run(vm, vcpu->id); - TEST_ASSERT(get_ucall(vm, vcpu->id, NULL) =3D=3D UCALL_SYNC, + vcpu_run(vcpu); + TEST_ASSERT(get_ucall(vcpu, NULL) =3D=3D UCALL_SYNC, "Guest failed?"); =20 /* diff --git a/tools/testing/selftests/kvm/s390x/memop.c b/tools/testing/self= tests/kvm/s390x/memop.c index a09b1b654d7f..3af62ad726ca 100644 --- a/tools/testing/selftests/kvm/s390x/memop.c +++ b/tools/testing/selftests/kvm/s390x/memop.c @@ -59,10 +59,10 @@ int main(int argc, char *argv[]) ksmo.op =3D KVM_S390_MEMOP_LOGICAL_WRITE; ksmo.buf =3D (uintptr_t)mem1; ksmo.ar =3D 0; - vcpu_ioctl(vm, vcpu->id, KVM_S390_MEM_OP, &ksmo); + vcpu_ioctl(vcpu, KVM_S390_MEM_OP, &ksmo); =20 /* Let the guest code copy the first array to the second */ - vcpu_run(vm, vcpu->id); + vcpu_run(vcpu); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_S390_SIEIC, "Unexpected exit reason: %u (%s)\n", run->exit_reason, @@ -77,7 +77,7 @@ int main(int argc, char *argv[]) ksmo.op =3D KVM_S390_MEMOP_LOGICAL_READ; ksmo.buf =3D (uintptr_t)mem2; ksmo.ar =3D 0; - vcpu_ioctl(vm, vcpu->id, KVM_S390_MEM_OP, &ksmo); + vcpu_ioctl(vcpu, KVM_S390_MEM_OP, &ksmo); =20 TEST_ASSERT(!memcmp(mem1, mem2, maxsize), "Memory contents do not match!"); @@ -89,7 +89,7 @@ int main(int argc, char *argv[]) ksmo.op =3D KVM_S390_MEMOP_LOGICAL_WRITE; ksmo.buf =3D (uintptr_t)mem1; ksmo.ar =3D 0; - rv =3D __vcpu_ioctl(vm, vcpu->id, KVM_S390_MEM_OP, &ksmo); + rv =3D __vcpu_ioctl(vcpu, KVM_S390_MEM_OP, &ksmo); TEST_ASSERT(rv =3D=3D -1 && errno =3D=3D E2BIG, "ioctl allows insane size= s"); =20 /* Zero size: */ @@ -99,7 +99,7 @@ int main(int argc, char *argv[]) ksmo.op =3D KVM_S390_MEMOP_LOGICAL_WRITE; ksmo.buf =3D (uintptr_t)mem1; ksmo.ar =3D 0; - rv =3D __vcpu_ioctl(vm, vcpu->id, KVM_S390_MEM_OP, &ksmo); + rv =3D __vcpu_ioctl(vcpu, KVM_S390_MEM_OP, &ksmo); TEST_ASSERT(rv =3D=3D -1 && (errno =3D=3D EINVAL || errno =3D=3D ENOMEM), "ioctl allows 0 as size"); =20 @@ -110,7 +110,7 @@ int main(int argc, char *argv[]) ksmo.op =3D KVM_S390_MEMOP_LOGICAL_WRITE; ksmo.buf =3D (uintptr_t)mem1; ksmo.ar =3D 0; - rv =3D __vcpu_ioctl(vm, vcpu->id, KVM_S390_MEM_OP, &ksmo); + rv =3D __vcpu_ioctl(vcpu, KVM_S390_MEM_OP, &ksmo); TEST_ASSERT(rv =3D=3D -1 && errno =3D=3D EINVAL, "ioctl allows all flags"= ); =20 /* Bad operation: */ @@ -120,7 +120,7 @@ int main(int argc, char *argv[]) ksmo.op =3D -1; ksmo.buf =3D (uintptr_t)mem1; ksmo.ar =3D 0; - rv =3D __vcpu_ioctl(vm, vcpu->id, KVM_S390_MEM_OP, &ksmo); + rv =3D __vcpu_ioctl(vcpu, KVM_S390_MEM_OP, &ksmo); TEST_ASSERT(rv =3D=3D -1 && errno =3D=3D EINVAL, "ioctl allows bad operat= ions"); =20 /* Bad guest address: */ @@ -130,7 +130,7 @@ int main(int argc, char *argv[]) ksmo.op =3D KVM_S390_MEMOP_LOGICAL_WRITE; ksmo.buf =3D (uintptr_t)mem1; ksmo.ar =3D 0; - rv =3D __vcpu_ioctl(vm, vcpu->id, KVM_S390_MEM_OP, &ksmo); + rv =3D __vcpu_ioctl(vcpu, KVM_S390_MEM_OP, &ksmo); TEST_ASSERT(rv > 0, "ioctl does not report bad guest memory access"); =20 /* Bad host address: */ @@ -140,24 +140,24 @@ int main(int argc, char *argv[]) ksmo.op =3D KVM_S390_MEMOP_LOGICAL_WRITE; ksmo.buf =3D 0; ksmo.ar =3D 0; - rv =3D __vcpu_ioctl(vm, vcpu->id, KVM_S390_MEM_OP, &ksmo); + rv =3D __vcpu_ioctl(vcpu, KVM_S390_MEM_OP, &ksmo); TEST_ASSERT(rv =3D=3D -1 && errno =3D=3D EFAULT, "ioctl does not report bad host memory address"); =20 /* Bad access register: */ run->psw_mask &=3D ~(3UL << (63 - 17)); run->psw_mask |=3D 1UL << (63 - 17); /* Enable AR mode */ - vcpu_run(vm, vcpu->id); /* To sync new state to SIE block */ + vcpu_run(vcpu); /* To sync new state to SIE block */ ksmo.gaddr =3D (uintptr_t)mem1; ksmo.flags =3D 0; ksmo.size =3D maxsize; ksmo.op =3D KVM_S390_MEMOP_LOGICAL_WRITE; ksmo.buf =3D (uintptr_t)mem1; ksmo.ar =3D 17; - rv =3D __vcpu_ioctl(vm, vcpu->id, KVM_S390_MEM_OP, &ksmo); + rv =3D __vcpu_ioctl(vcpu, KVM_S390_MEM_OP, &ksmo); TEST_ASSERT(rv =3D=3D -1 && errno =3D=3D EINVAL, "ioctl allows ARs > 15"); run->psw_mask &=3D ~(3UL << (63 - 17)); /* Disable AR mode */ - vcpu_run(vm, vcpu->id); /* Run to sync new state */ + vcpu_run(vcpu); /* Run to sync new state */ =20 kvm_vm_free(vm); =20 diff --git a/tools/testing/selftests/kvm/s390x/resets.c b/tools/testing/sel= ftests/kvm/s390x/resets.c index 37e375729a39..7593397f03f7 100644 --- a/tools/testing/selftests/kvm/s390x/resets.c +++ b/tools/testing/selftests/kvm/s390x/resets.c @@ -63,7 +63,7 @@ static void test_one_reg(struct kvm_vcpu *vcpu, uint64_t = id, uint64_t value) =20 reg.addr =3D (uintptr_t)&eval_reg; reg.id =3D id; - vcpu_get_reg(vcpu->vm, vcpu->id, ®); + vcpu_get_reg(vcpu, ®); TEST_ASSERT(eval_reg =3D=3D value, "value =3D=3D 0x%lx", value); } =20 @@ -74,7 +74,7 @@ static void assert_noirq(struct kvm_vcpu *vcpu) =20 irq_state.len =3D sizeof(buf); irq_state.buf =3D (unsigned long)buf; - irqs =3D __vcpu_ioctl(vcpu->vm, vcpu->id, KVM_S390_GET_IRQ_STATE, &irq_st= ate); + irqs =3D __vcpu_ioctl(vcpu, KVM_S390_GET_IRQ_STATE, &irq_state); /* * irqs contains the number of retrieved interrupts. Any interrupt * (notably, the emergency call interrupt we have injected) should @@ -91,13 +91,13 @@ static void assert_clear(struct kvm_vcpu *vcpu) struct kvm_regs regs; struct kvm_fpu fpu; =20 - vcpu_regs_get(vcpu->vm, vcpu->id, ®s); + vcpu_regs_get(vcpu, ®s); TEST_ASSERT(!memcmp(®s.gprs, regs_null, sizeof(regs.gprs)), "grs =3D= =3D 0"); =20 - vcpu_sregs_get(vcpu->vm, vcpu->id, &sregs); + vcpu_sregs_get(vcpu, &sregs); TEST_ASSERT(!memcmp(&sregs.acrs, regs_null, sizeof(sregs.acrs)), "acrs = =3D=3D 0"); =20 - vcpu_fpu_get(vcpu->vm, vcpu->id, &fpu); + vcpu_fpu_get(vcpu, &fpu); TEST_ASSERT(!memcmp(&fpu.fprs, regs_null, sizeof(fpu.fprs)), "fprs =3D=3D= 0"); =20 /* sync regs */ @@ -135,7 +135,7 @@ static void assert_initial(struct kvm_vcpu *vcpu) struct kvm_fpu fpu; =20 /* KVM_GET_SREGS */ - vcpu_sregs_get(vcpu->vm, vcpu->id, &sregs); + vcpu_sregs_get(vcpu, &sregs); TEST_ASSERT(sregs.crs[0] =3D=3D 0xE0UL, "cr0 =3D=3D 0xE0 (KVM_GET_SREGS)"= ); TEST_ASSERT(sregs.crs[14] =3D=3D 0xC2000000UL, "cr14 =3D=3D 0xC2000000 (KVM_GET_SREGS)"); @@ -161,7 +161,7 @@ static void assert_initial(struct kvm_vcpu *vcpu) TEST_ASSERT(vcpu->run->psw_addr =3D=3D 0, "psw_addr =3D=3D 0 (kvm_run)"); TEST_ASSERT(vcpu->run->psw_mask =3D=3D 0, "psw_mask =3D=3D 0 (kvm_run)"); =20 - vcpu_fpu_get(vcpu->vm, vcpu->id, &fpu); + vcpu_fpu_get(vcpu, &fpu); TEST_ASSERT(!fpu.fpc, "fpc =3D=3D 0"); =20 test_one_reg(vcpu, KVM_REG_S390_GBEA, 1); @@ -200,7 +200,7 @@ static void inject_irq(struct kvm_vcpu *vcpu) irq_state.buf =3D (unsigned long)buf; irq->type =3D KVM_S390_INT_EMERGENCY; irq->u.emerg.code =3D vcpu->id; - irqs =3D __vcpu_ioctl(vcpu->vm, vcpu->id, KVM_S390_SET_IRQ_STATE, &irq_st= ate); + irqs =3D __vcpu_ioctl(vcpu, KVM_S390_SET_IRQ_STATE, &irq_state); TEST_ASSERT(irqs >=3D 0, "Error injecting EMERGENCY IRQ errno %d\n", errn= o); } =20 @@ -223,11 +223,11 @@ static void test_normal(void) pr_info("Testing normal reset\n"); vm =3D create_vm(&vcpu); =20 - vcpu_run(vm, vcpu->id); + vcpu_run(vcpu); =20 inject_irq(vcpu); =20 - vcpu_ioctl(vm, vcpu->id, KVM_S390_NORMAL_RESET, 0); + vcpu_ioctl(vcpu, KVM_S390_NORMAL_RESET, 0); =20 /* must clears */ assert_normal(vcpu); @@ -246,11 +246,11 @@ static void test_initial(void) pr_info("Testing initial reset\n"); vm =3D create_vm(&vcpu); =20 - vcpu_run(vm, vcpu->id); + vcpu_run(vcpu); =20 inject_irq(vcpu); =20 - vcpu_ioctl(vm, vcpu->id, KVM_S390_INITIAL_RESET, 0); + vcpu_ioctl(vcpu, KVM_S390_INITIAL_RESET, 0); =20 /* must clears */ assert_normal(vcpu); @@ -269,11 +269,11 @@ static void test_clear(void) pr_info("Testing clear reset\n"); vm =3D create_vm(&vcpu); =20 - vcpu_run(vm, vcpu->id); + vcpu_run(vcpu); =20 inject_irq(vcpu); =20 - vcpu_ioctl(vm, vcpu->id, KVM_S390_CLEAR_RESET, 0); + vcpu_ioctl(vcpu, KVM_S390_CLEAR_RESET, 0); =20 /* must clears */ assert_normal(vcpu); diff --git a/tools/testing/selftests/kvm/s390x/sync_regs_test.c b/tools/tes= ting/selftests/kvm/s390x/sync_regs_test.c index bf52cabeaed6..13c4c091aa66 100644 --- a/tools/testing/selftests/kvm/s390x/sync_regs_test.c +++ b/tools/testing/selftests/kvm/s390x/sync_regs_test.c @@ -97,14 +97,14 @@ int main(int argc, char *argv[]) =20 /* Request reading invalid register set from VCPU. */ run->kvm_valid_regs =3D INVALID_SYNC_FIELD; - rv =3D _vcpu_run(vm, vcpu->id); + rv =3D _vcpu_run(vcpu); TEST_ASSERT(rv < 0 && errno =3D=3D EINVAL, "Invalid kvm_valid_regs did not cause expected KVM_RUN error: %d\n", rv); run->kvm_valid_regs =3D 0; =20 run->kvm_valid_regs =3D INVALID_SYNC_FIELD | TEST_SYNC_FIELDS; - rv =3D _vcpu_run(vm, vcpu->id); + rv =3D _vcpu_run(vcpu); TEST_ASSERT(rv < 0 && errno =3D=3D EINVAL, "Invalid kvm_valid_regs did not cause expected KVM_RUN error: %d\n", rv); @@ -112,14 +112,14 @@ int main(int argc, char *argv[]) =20 /* Request setting invalid register set into VCPU. */ run->kvm_dirty_regs =3D INVALID_SYNC_FIELD; - rv =3D _vcpu_run(vm, vcpu->id); + rv =3D _vcpu_run(vcpu); TEST_ASSERT(rv < 0 && errno =3D=3D EINVAL, "Invalid kvm_dirty_regs did not cause expected KVM_RUN error: %d\n", rv); run->kvm_dirty_regs =3D 0; =20 run->kvm_dirty_regs =3D INVALID_SYNC_FIELD | TEST_SYNC_FIELDS; - rv =3D _vcpu_run(vm, vcpu->id); + rv =3D _vcpu_run(vcpu); TEST_ASSERT(rv < 0 && errno =3D=3D EINVAL, "Invalid kvm_dirty_regs did not cause expected KVM_RUN error: %d\n", rv); @@ -127,7 +127,7 @@ int main(int argc, char *argv[]) =20 /* Request and verify all valid register sets. */ run->kvm_valid_regs =3D TEST_SYNC_FIELDS; - rv =3D _vcpu_run(vm, vcpu->id); + rv =3D _vcpu_run(vcpu); TEST_ASSERT(rv =3D=3D 0, "vcpu_run failed: %d\n", rv); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_S390_SIEIC, "Unexpected exit reason: %u (%s)\n", @@ -140,10 +140,10 @@ int main(int argc, char *argv[]) run->s390_sieic.icptcode, run->s390_sieic.ipa, run->s390_sieic.ipb); =20 - vcpu_regs_get(vm, vcpu->id, ®s); + vcpu_regs_get(vcpu, ®s); compare_regs(®s, &run->s.regs); =20 - vcpu_sregs_get(vm, vcpu->id, &sregs); + vcpu_sregs_get(vcpu, &sregs); compare_sregs(&sregs, &run->s.regs); =20 /* Set and verify various register values */ @@ -158,7 +158,7 @@ int main(int argc, char *argv[]) run->kvm_dirty_regs |=3D KVM_SYNC_DIAG318; } =20 - rv =3D _vcpu_run(vm, vcpu->id); + rv =3D _vcpu_run(vcpu); TEST_ASSERT(rv =3D=3D 0, "vcpu_run failed: %d\n", rv); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_S390_SIEIC, "Unexpected exit reason: %u (%s)\n", @@ -174,10 +174,10 @@ int main(int argc, char *argv[]) "diag318 sync regs value incorrect 0x%llx.", run->s.regs.diag318); =20 - vcpu_regs_get(vm, vcpu->id, ®s); + vcpu_regs_get(vcpu, ®s); compare_regs(®s, &run->s.regs); =20 - vcpu_sregs_get(vm, vcpu->id, &sregs); + vcpu_sregs_get(vcpu, &sregs); compare_sregs(&sregs, &run->s.regs); =20 /* Clear kvm_dirty_regs bits, verify new s.regs values are @@ -187,7 +187,7 @@ int main(int argc, char *argv[]) run->kvm_dirty_regs =3D 0; run->s.regs.gprs[11] =3D 0xDEADBEEF; run->s.regs.diag318 =3D 0x4B1D; - rv =3D _vcpu_run(vm, vcpu->id); + rv =3D _vcpu_run(vcpu); TEST_ASSERT(rv =3D=3D 0, "vcpu_run failed: %d\n", rv); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_S390_SIEIC, "Unexpected exit reason: %u (%s)\n", diff --git a/tools/testing/selftests/kvm/set_memory_region_test.c b/tools/t= esting/selftests/kvm/set_memory_region_test.c index 4913d6a5b311..d0c7e41e031b 100644 --- a/tools/testing/selftests/kvm/set_memory_region_test.c +++ b/tools/testing/selftests/kvm/set_memory_region_test.c @@ -63,10 +63,10 @@ static void *vcpu_worker(void *data) * has been deleted or while it is being moved . */ while (1) { - vcpu_run(vcpu->vm, vcpu->id); + vcpu_run(vcpu); =20 if (run->exit_reason =3D=3D KVM_EXIT_IO) { - cmd =3D get_ucall(vcpu->vm, vcpu->id, &uc); + cmd =3D get_ucall(vcpu, &uc); if (cmd !=3D UCALL_SYNC) break; =20 @@ -291,7 +291,7 @@ static void test_delete_memory_region(void) run->exit_reason =3D=3D KVM_EXIT_INTERNAL_ERROR, "Unexpected exit reason =3D %d", run->exit_reason); =20 - vcpu_regs_get(vm, vcpu->id, ®s); + vcpu_regs_get(vcpu, ®s); =20 /* * On AMD, after KVM_EXIT_SHUTDOWN the VMCB has been reinitialized alread= y, @@ -318,7 +318,7 @@ static void test_zero_memory_regions(void) vcpu =3D __vm_vcpu_add(vm, 0); =20 vm_ioctl(vm, KVM_SET_NR_MMU_PAGES, (void *)64ul); - vcpu_run(vm, vcpu->id); + vcpu_run(vcpu); =20 run =3D vcpu->run; TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_INTERNAL_ERROR, diff --git a/tools/testing/selftests/kvm/steal_time.c b/tools/testing/selft= ests/kvm/steal_time.c index fe64fac0a5f4..2c330bc48f17 100644 --- a/tools/testing/selftests/kvm/steal_time.c +++ b/tools/testing/selftests/kvm/steal_time.c @@ -73,10 +73,10 @@ static void steal_time_init(struct kvm_vcpu *vcpu, uint= 32_t i) st_gva[i] =3D (void *)(ST_GPA_BASE + i * STEAL_TIME_SIZE); sync_global_to_guest(vcpu->vm, st_gva[i]); =20 - ret =3D _vcpu_set_msr(vcpu->vm, vcpu->id, MSR_KVM_STEAL_TIME, (ulong)st_g= va[i] | KVM_STEAL_RESERVED_MASK); + ret =3D _vcpu_set_msr(vcpu, MSR_KVM_STEAL_TIME, (ulong)st_gva[i] | KVM_ST= EAL_RESERVED_MASK); TEST_ASSERT(ret =3D=3D 0, "Bad GPA didn't fail"); =20 - vcpu_set_msr(vcpu->vm, vcpu->id, MSR_KVM_STEAL_TIME, (ulong)st_gva[i] | K= VM_MSR_ENABLED); + vcpu_set_msr(vcpu, MSR_KVM_STEAL_TIME, (ulong)st_gva[i] | KVM_MSR_ENABLED= ); } =20 static void steal_time_dump(struct kvm_vm *vm, uint32_t vcpu_idx) @@ -169,7 +169,7 @@ static bool is_steal_time_supported(struct kvm_vcpu *vc= pu) .attr =3D KVM_ARM_VCPU_PVTIME_IPA, }; =20 - return !__vcpu_ioctl(vcpu->vm, vcpu->id, KVM_HAS_DEVICE_ATTR, &dev); + return !__vcpu_ioctl(vcpu, KVM_HAS_DEVICE_ATTR, &dev); } =20 static void steal_time_init(struct kvm_vcpu *vcpu, uint32_t i) @@ -184,20 +184,20 @@ static void steal_time_init(struct kvm_vcpu *vcpu, ui= nt32_t i) .addr =3D (uint64_t)&st_ipa, }; =20 - vcpu_ioctl(vm, vcpu->id, KVM_HAS_DEVICE_ATTR, &dev); + vcpu_ioctl(vcpu, KVM_HAS_DEVICE_ATTR, &dev); =20 /* ST_GPA_BASE is identity mapped */ st_gva[i] =3D (void *)(ST_GPA_BASE + i * STEAL_TIME_SIZE); sync_global_to_guest(vm, st_gva[i]); =20 st_ipa =3D (ulong)st_gva[i] | 1; - ret =3D __vcpu_ioctl(vm, vcpu->id, KVM_SET_DEVICE_ATTR, &dev); + ret =3D __vcpu_ioctl(vcpu, KVM_SET_DEVICE_ATTR, &dev); TEST_ASSERT(ret =3D=3D -1 && errno =3D=3D EINVAL, "Bad IPA didn't report = EINVAL"); =20 st_ipa =3D (ulong)st_gva[i]; - vcpu_ioctl(vm, vcpu->id, KVM_SET_DEVICE_ATTR, &dev); + vcpu_ioctl(vcpu, KVM_SET_DEVICE_ATTR, &dev); =20 - ret =3D __vcpu_ioctl(vm, vcpu->id, KVM_SET_DEVICE_ATTR, &dev); + ret =3D __vcpu_ioctl(vcpu, KVM_SET_DEVICE_ATTR, &dev); TEST_ASSERT(ret =3D=3D -1 && errno =3D=3D EEXIST, "Set IPA twice without = EEXIST"); } =20 @@ -233,9 +233,9 @@ static void run_vcpu(struct kvm_vcpu *vcpu) { struct ucall uc; =20 - vcpu_run(vcpu->vm, vcpu->id); + vcpu_run(vcpu); =20 - switch (get_ucall(vcpu->vm, vcpu->id, &uc)) { + switch (get_ucall(vcpu, &uc)) { case UCALL_SYNC: case UCALL_DONE: break; @@ -286,7 +286,7 @@ int main(int ac, char **av) for (i =3D 0; i < NR_VCPUS; ++i) { steal_time_init(vcpus[i], i); =09 - vcpu_args_set(vm, vcpus[i]->id, 1, i); + vcpu_args_set(vcpus[i], 1, i); =20 /* First VCPU run initializes steal-time */ run_vcpu(vcpus[i]); diff --git a/tools/testing/selftests/kvm/system_counter_offset_test.c b/too= ls/testing/selftests/kvm/system_counter_offset_test.c index 0690ce0ae4fa..7c8be0930737 100644 --- a/tools/testing/selftests/kvm/system_counter_offset_test.c +++ b/tools/testing/selftests/kvm/system_counter_offset_test.c @@ -28,8 +28,7 @@ static struct test_case test_cases[] =3D { =20 static void check_preconditions(struct kvm_vcpu *vcpu) { - if (!__vcpu_has_device_attr(vcpu->vm, vcpu->id, KVM_VCPU_TSC_CTRL, - KVM_VCPU_TSC_OFFSET)) + if (!__vcpu_has_device_attr(vcpu, KVM_VCPU_TSC_CTRL, KVM_VCPU_TSC_OFFSET)) return; =20 print_skip("KVM_VCPU_TSC_OFFSET not supported; skipping test"); @@ -38,8 +37,8 @@ static void check_preconditions(struct kvm_vcpu *vcpu) =20 static void setup_system_counter(struct kvm_vcpu *vcpu, struct test_case *= test) { - vcpu_device_attr_set(vcpu->vm, vcpu->id, KVM_VCPU_TSC_CTRL, - KVM_VCPU_TSC_OFFSET, &test->tsc_offset); + vcpu_device_attr_set(vcpu, KVM_VCPU_TSC_CTRL, KVM_VCPU_TSC_OFFSET, + &test->tsc_offset); } =20 static uint64_t guest_read_system_counter(struct test_case *test) @@ -101,10 +100,10 @@ static void enter_guest(struct kvm_vcpu *vcpu) =20 setup_system_counter(vcpu, test); start =3D host_read_guest_system_counter(test); - vcpu_run(vcpu->vm, vcpu->id); + vcpu_run(vcpu); end =3D host_read_guest_system_counter(test); =20 - switch (get_ucall(vcpu->vm, vcpu->id, &uc)) { + switch (get_ucall(vcpu, &uc)) { case UCALL_SYNC: handle_sync(&uc, start, end); break; @@ -113,7 +112,7 @@ static void enter_guest(struct kvm_vcpu *vcpu) return; default: TEST_ASSERT(0, "unhandled ucall %ld\n", - get_ucall(vcpu->vm, vcpu->id, &uc)); + get_ucall(vcpu, &uc)); } } } diff --git a/tools/testing/selftests/kvm/x86_64/amx_test.c b/tools/testing/= selftests/kvm/x86_64/amx_test.c index cd5a71f5a7ac..5a89cbe1b735 100644 --- a/tools/testing/selftests/kvm/x86_64/amx_test.c +++ b/tools/testing/selftests/kvm/x86_64/amx_test.c @@ -352,11 +352,11 @@ int main(int argc, char *argv[]) } =20 run =3D vcpu->run; - vcpu_regs_get(vm, vcpu->id, ®s1); + vcpu_regs_get(vcpu, ®s1); =20 /* Register #NM handler */ vm_init_descriptor_tables(vm); - vcpu_init_descriptor_tables(vm, vcpu->id); + vcpu_init_descriptor_tables(vcpu); vm_install_exception_handler(vm, NM_VECTOR, guest_nm_handler); =20 /* amx cfg for guest_code */ @@ -370,16 +370,16 @@ int main(int argc, char *argv[]) /* xsave data for guest_code */ xsavedata =3D vm_vaddr_alloc_pages(vm, 3); memset(addr_gva2hva(vm, xsavedata), 0, 3 * getpagesize()); - vcpu_args_set(vm, vcpu->id, 3, amx_cfg, tiledata, xsavedata); + vcpu_args_set(vcpu, 3, amx_cfg, tiledata, xsavedata); =20 for (stage =3D 1; ; stage++) { - vcpu_run(vm, vcpu->id); + vcpu_run(vcpu); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Stage %d: unexpected exit reason: %u (%s),\n", stage, run->exit_reason, exit_reason_str(run->exit_reason)); =20 - switch (get_ucall(vm, vcpu->id, &uc)) { + switch (get_ucall(vcpu, &uc)) { case UCALL_ABORT: TEST_FAIL("%s at %s:%ld", (const char *)uc.args[0], __FILE__, uc.args[1]); @@ -404,7 +404,7 @@ int main(int argc, char *argv[]) * size subtract 8K amx size. */ amx_offset =3D xsave_restore_size - NUM_TILES*TILE_SIZE; - state =3D vcpu_save_state(vm, vcpu->id); + state =3D vcpu_save_state(vcpu); void *amx_start =3D (void *)state->xsave + amx_offset; void *tiles_data =3D (void *)addr_gva2hva(vm, tiledata); /* Only check TMM0 register, 1 tile */ @@ -425,21 +425,21 @@ int main(int argc, char *argv[]) TEST_FAIL("Unknown ucall %lu", uc.cmd); } =20 - state =3D vcpu_save_state(vm, vcpu->id); + state =3D vcpu_save_state(vcpu); memset(®s1, 0, sizeof(regs1)); - vcpu_regs_get(vm, vcpu->id, ®s1); + vcpu_regs_get(vcpu, ®s1); =20 kvm_vm_release(vm); =20 /* Restore state in a new VM. */ vcpu =3D vm_recreate_with_one_vcpu(vm); - vcpu_set_cpuid(vm, vcpu->id, kvm_get_supported_cpuid()); - vcpu_load_state(vm, vcpu->id, state); + vcpu_set_cpuid(vcpu, kvm_get_supported_cpuid()); + vcpu_load_state(vcpu, state); run =3D vcpu->run; kvm_x86_state_cleanup(state); =20 memset(®s2, 0, sizeof(regs2)); - vcpu_regs_get(vm, vcpu->id, ®s2); + vcpu_regs_get(vcpu, ®s2); TEST_ASSERT(!memcmp(®s1, ®s2, sizeof(regs2)), "Unexpected register values after vcpu_load_state; rdi: %lx rsi: %l= x", (ulong) regs2.rdi, (ulong) regs2.rsi); diff --git a/tools/testing/selftests/kvm/x86_64/cpuid_test.c b/tools/testin= g/selftests/kvm/x86_64/cpuid_test.c index 76cdd0d10757..4aa784932597 100644 --- a/tools/testing/selftests/kvm/x86_64/cpuid_test.c +++ b/tools/testing/selftests/kvm/x86_64/cpuid_test.c @@ -120,9 +120,9 @@ static void run_vcpu(struct kvm_vcpu *vcpu, int stage) { struct ucall uc; =20 - vcpu_run(vcpu->vm, vcpu->id); + vcpu_run(vcpu); =20 - switch (get_ucall(vcpu->vm, vcpu->id, &uc)) { + switch (get_ucall(vcpu, &uc)) { case UCALL_SYNC: TEST_ASSERT(!strcmp((const char *)uc.args[0], "hello") && uc.args[1] =3D=3D stage + 1, @@ -159,14 +159,14 @@ static void set_cpuid_after_run(struct kvm_vcpu *vcpu= , struct kvm_cpuid2 *cpuid) u32 eax, ebx, x; =20 /* Setting unmodified CPUID is allowed */ - rc =3D __vcpu_set_cpuid(vcpu->vm, vcpu->id, cpuid); + rc =3D __vcpu_set_cpuid(vcpu, cpuid); TEST_ASSERT(!rc, "Setting unmodified CPUID after KVM_RUN failed: %d", rc); =20 /* Changing CPU features is forbidden */ ent =3D get_cpuid(cpuid, 0x7, 0); ebx =3D ent->ebx; ent->ebx--; - rc =3D __vcpu_set_cpuid(vcpu->vm, vcpu->id, cpuid); + rc =3D __vcpu_set_cpuid(vcpu, cpuid); TEST_ASSERT(rc, "Changing CPU features should fail"); ent->ebx =3D ebx; =20 @@ -175,7 +175,7 @@ static void set_cpuid_after_run(struct kvm_vcpu *vcpu, = struct kvm_cpuid2 *cpuid) eax =3D ent->eax; x =3D eax & 0xff; ent->eax =3D (eax & ~0xffu) | (x - 1); - rc =3D __vcpu_set_cpuid(vcpu->vm, vcpu->id, cpuid); + rc =3D __vcpu_set_cpuid(vcpu, cpuid); TEST_ASSERT(rc, "Changing MAXPHYADDR should fail"); ent->eax =3D eax; } @@ -191,13 +191,13 @@ int main(void) vm =3D vm_create_with_one_vcpu(&vcpu, guest_main); =20 supp_cpuid =3D kvm_get_supported_cpuid(); - cpuid2 =3D vcpu_get_cpuid(vm, vcpu->id); + cpuid2 =3D vcpu_get_cpuid(vcpu); =20 compare_cpuids(supp_cpuid, cpuid2); =20 vcpu_alloc_cpuid(vm, &cpuid_gva, cpuid2); =20 - vcpu_args_set(vm, vcpu->id, 1, cpuid_gva); + vcpu_args_set(vcpu, 1, cpuid_gva); =20 for (stage =3D 0; stage < 3; stage++) run_vcpu(vcpu, stage); diff --git a/tools/testing/selftests/kvm/x86_64/cr4_cpuid_sync_test.c b/too= ls/testing/selftests/kvm/x86_64/cr4_cpuid_sync_test.c index d5615cd0b81b..1635aae970e9 100644 --- a/tools/testing/selftests/kvm/x86_64/cr4_cpuid_sync_test.c +++ b/tools/testing/selftests/kvm/x86_64/cr4_cpuid_sync_test.c @@ -82,19 +82,19 @@ int main(int argc, char *argv[]) run =3D vcpu->run; =20 while (1) { - vcpu_run(vm, vcpu->id); + vcpu_run(vcpu); =20 TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Unexpected exit reason: %u (%s),\n", run->exit_reason, exit_reason_str(run->exit_reason)); =20 - switch (get_ucall(vm, vcpu->id, &uc)) { + switch (get_ucall(vcpu, &uc)) { case UCALL_SYNC: /* emulate hypervisor clearing CR4.OSXSAVE */ - vcpu_sregs_get(vm, vcpu->id, &sregs); + vcpu_sregs_get(vcpu, &sregs); sregs.cr4 &=3D ~X86_CR4_OSXSAVE; - vcpu_sregs_set(vm, vcpu->id, &sregs); + vcpu_sregs_set(vcpu, &sregs); break; case UCALL_ABORT: TEST_FAIL("Guest CR4 bit (OSXSAVE) unsynchronized with CPUID bit."); diff --git a/tools/testing/selftests/kvm/x86_64/debug_regs.c b/tools/testin= g/selftests/kvm/x86_64/debug_regs.c index 487d0ae3e75f..5f07f86efc76 100644 --- a/tools/testing/selftests/kvm/x86_64/debug_regs.c +++ b/tools/testing/selftests/kvm/x86_64/debug_regs.c @@ -70,9 +70,9 @@ static void vcpu_skip_insn(struct kvm_vcpu *vcpu, int ins= n_len) { struct kvm_regs regs; =20 - vcpu_regs_get(vcpu->vm, vcpu->id, ®s); + vcpu_regs_get(vcpu, ®s); regs.rip +=3D insn_len; - vcpu_regs_set(vcpu->vm, vcpu->id, ®s); + vcpu_regs_set(vcpu, ®s); } =20 int main(void) @@ -106,8 +106,8 @@ int main(void) /* Test software BPs - int3 */ memset(&debug, 0, sizeof(debug)); debug.control =3D KVM_GUESTDBG_ENABLE | KVM_GUESTDBG_USE_SW_BP; - vcpu_set_guest_debug(vm, vcpu->id, &debug); - vcpu_run(vm, vcpu->id); + vcpu_set_guest_debug(vcpu, &debug); + vcpu_run(vcpu); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_DEBUG && run->debug.arch.exception =3D=3D BP_VECTOR && run->debug.arch.pc =3D=3D CAST_TO_RIP(sw_bp), @@ -122,8 +122,8 @@ int main(void) debug.control =3D KVM_GUESTDBG_ENABLE | KVM_GUESTDBG_USE_HW_BP; debug.arch.debugreg[i] =3D CAST_TO_RIP(hw_bp); debug.arch.debugreg[7] =3D 0x400 | (1UL << (2*i+1)); - vcpu_set_guest_debug(vm, vcpu->id, &debug); - vcpu_run(vm, vcpu->id); + vcpu_set_guest_debug(vcpu, &debug); + vcpu_run(vcpu); target_dr6 =3D 0xffff0ff0 | (1UL << i); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_DEBUG && run->debug.arch.exception =3D=3D DB_VECTOR && @@ -145,8 +145,8 @@ int main(void) debug.arch.debugreg[i] =3D CAST_TO_RIP(guest_value); debug.arch.debugreg[7] =3D 0x00000400 | (1UL << (2*i+1)) | (0x000d0000UL << (4*i)); - vcpu_set_guest_debug(vm, vcpu->id, &debug); - vcpu_run(vm, vcpu->id); + vcpu_set_guest_debug(vcpu, &debug); + vcpu_run(vcpu); target_dr6 =3D 0xffff0ff0 | (1UL << i); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_DEBUG && run->debug.arch.exception =3D=3D DB_VECTOR && @@ -172,8 +172,8 @@ int main(void) debug.control =3D KVM_GUESTDBG_ENABLE | KVM_GUESTDBG_SINGLESTEP | KVM_GUESTDBG_BLOCKIRQ; debug.arch.debugreg[7] =3D 0x00000400; - vcpu_set_guest_debug(vm, vcpu->id, &debug); - vcpu_run(vm, vcpu->id); + vcpu_set_guest_debug(vcpu, &debug); + vcpu_run(vcpu); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_DEBUG && run->debug.arch.exception =3D=3D DB_VECTOR && run->debug.arch.pc =3D=3D target_rip && @@ -189,8 +189,8 @@ int main(void) memset(&debug, 0, sizeof(debug)); debug.control =3D KVM_GUESTDBG_ENABLE | KVM_GUESTDBG_USE_HW_BP; debug.arch.debugreg[7] =3D 0x400 | DR7_GD; - vcpu_set_guest_debug(vm, vcpu->id, &debug); - vcpu_run(vm, vcpu->id); + vcpu_set_guest_debug(vcpu, &debug); + vcpu_run(vcpu); target_dr6 =3D 0xffff0ff0 | DR6_BD; TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_DEBUG && run->debug.arch.exception =3D=3D DB_VECTOR && @@ -204,11 +204,11 @@ int main(void) =20 /* Disable all debug controls, run to the end */ memset(&debug, 0, sizeof(debug)); - vcpu_set_guest_debug(vm, vcpu->id, &debug); + vcpu_set_guest_debug(vcpu, &debug); =20 - vcpu_run(vm, vcpu->id); + vcpu_run(vcpu); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "KVM_EXIT_IO"); - cmd =3D get_ucall(vm, vcpu->id, &uc); + cmd =3D get_ucall(vcpu, &uc); TEST_ASSERT(cmd =3D=3D UCALL_DONE, "UCALL_DONE"); =20 kvm_vm_free(vm); diff --git a/tools/testing/selftests/kvm/x86_64/emulator_error_test.c b/too= ls/testing/selftests/kvm/x86_64/emulator_error_test.c index 77b302f653a8..107a28010b26 100644 --- a/tools/testing/selftests/kvm/x86_64/emulator_error_test.c +++ b/tools/testing/selftests/kvm/x86_64/emulator_error_test.c @@ -84,9 +84,9 @@ static void process_exit_on_emulation_error(struct kvm_vc= pu *vcpu) * contained an flds instruction that is 2-bytes in * length (ie: no prefix, no SIB, no displacement). */ - vcpu_regs_get(vcpu->vm, vcpu->id, ®s); + vcpu_regs_get(vcpu, ®s); regs.rip +=3D 2; - vcpu_regs_set(vcpu->vm, vcpu->id, ®s); + vcpu_regs_set(vcpu, ®s); } } } @@ -102,7 +102,7 @@ static void check_for_guest_assert(struct kvm_vcpu *vcp= u) struct ucall uc; =20 if (vcpu->run->exit_reason =3D=3D KVM_EXIT_IO && - get_ucall(vcpu->vm, vcpu->id, &uc) =3D=3D UCALL_ABORT) { + get_ucall(vcpu, &uc) =3D=3D UCALL_ABORT) { do_guest_assert(&uc); } } @@ -119,7 +119,7 @@ static void process_ucall_done(struct kvm_vcpu *vcpu) run->exit_reason, exit_reason_str(run->exit_reason)); =20 - TEST_ASSERT(get_ucall(vcpu->vm, vcpu->id, &uc) =3D=3D UCALL_DONE, + TEST_ASSERT(get_ucall(vcpu, &uc) =3D=3D UCALL_DONE, "Unexpected ucall command: %lu, expected UCALL_DONE (%d)", uc.cmd, UCALL_DONE); } @@ -134,7 +134,7 @@ static uint64_t process_ucall(struct kvm_vcpu *vcpu) run->exit_reason, exit_reason_str(run->exit_reason)); =20 - switch (get_ucall(vcpu->vm, vcpu->id, &uc)) { + switch (get_ucall(vcpu, &uc)) { case UCALL_SYNC: break; case UCALL_ABORT: @@ -180,7 +180,7 @@ int main(int argc, char *argv[]) entry->eax =3D (entry->eax & 0xffffff00) | MAXPHYADDR; set_cpuid(cpuid, entry); =20 - vcpu_set_cpuid(vm, vcpu->id, cpuid); + vcpu_set_cpuid(vcpu, cpuid); =20 rc =3D kvm_check_cap(KVM_CAP_EXIT_ON_EMULATION_FAILURE); TEST_ASSERT(rc, "KVM_CAP_EXIT_ON_EMULATION_FAILURE is unavailable"); @@ -195,12 +195,12 @@ int main(int argc, char *argv[]) virt_map(vm, MEM_REGION_GVA, MEM_REGION_GPA, 1); hva =3D addr_gpa2hva(vm, MEM_REGION_GPA); memset(hva, 0, PAGE_SIZE); - pte =3D vm_get_page_table_entry(vm, vcpu->id, MEM_REGION_GVA); - vm_set_page_table_entry(vm, vcpu->id, MEM_REGION_GVA, pte | (1ull << 36)); + pte =3D vm_get_page_table_entry(vm, vcpu, MEM_REGION_GVA); + vm_set_page_table_entry(vm, vcpu, MEM_REGION_GVA, pte | (1ull << 36)); =20 - vcpu_run(vm, vcpu->id); + vcpu_run(vcpu); process_exit_on_emulation_error(vcpu); - vcpu_run(vm, vcpu->id); + vcpu_run(vcpu); =20 TEST_ASSERT(process_ucall(vcpu) =3D=3D UCALL_DONE, "Expected UCALL_DONE"); =20 diff --git a/tools/testing/selftests/kvm/x86_64/evmcs_test.c b/tools/testin= g/selftests/kvm/x86_64/evmcs_test.c index dc7c1eb28fd4..ee31281b56d8 100644 --- a/tools/testing/selftests/kvm/x86_64/evmcs_test.c +++ b/tools/testing/selftests/kvm/x86_64/evmcs_test.c @@ -163,12 +163,12 @@ void inject_nmi(struct kvm_vcpu *vcpu) { struct kvm_vcpu_events events; =20 - vcpu_events_get(vcpu->vm, vcpu->id, &events); + vcpu_events_get(vcpu, &events); =20 events.nmi.pending =3D 1; events.flags |=3D KVM_VCPUEVENT_VALID_NMI_PENDING; =20 - vcpu_events_set(vcpu->vm, vcpu->id, &events); + vcpu_events_set(vcpu, &events); } =20 static struct kvm_vcpu *save_restore_vm(struct kvm_vm *vm, @@ -177,21 +177,21 @@ static struct kvm_vcpu *save_restore_vm(struct kvm_vm= *vm, struct kvm_regs regs1, regs2; struct kvm_x86_state *state; =20 - state =3D vcpu_save_state(vm, vcpu->id); + state =3D vcpu_save_state(vcpu); memset(®s1, 0, sizeof(regs1)); - vcpu_regs_get(vm, vcpu->id, ®s1); + vcpu_regs_get(vcpu, ®s1); =20 kvm_vm_release(vm); =20 /* Restore state in a new VM. */ vcpu =3D vm_recreate_with_one_vcpu(vm); - vcpu_set_hv_cpuid(vm, vcpu->id); - vcpu_enable_evmcs(vm, vcpu->id); - vcpu_load_state(vm, vcpu->id, state); + vcpu_set_hv_cpuid(vcpu); + vcpu_enable_evmcs(vcpu); + vcpu_load_state(vcpu, state); kvm_x86_state_cleanup(state); =20 memset(®s2, 0, sizeof(regs2)); - vcpu_regs_get(vm, vcpu->id, ®s2); + vcpu_regs_get(vcpu, ®s2); TEST_ASSERT(!memcmp(®s1, ®s2, sizeof(regs2)), "Unexpected register values after vcpu_load_state; rdi: %lx rsi: %lx= ", (ulong) regs2.rdi, (ulong) regs2.rsi); @@ -217,14 +217,14 @@ int main(int argc, char *argv[]) exit(KSFT_SKIP); } =20 - vcpu_set_hv_cpuid(vm, vcpu->id); - vcpu_enable_evmcs(vm, vcpu->id); + vcpu_set_hv_cpuid(vcpu); + vcpu_enable_evmcs(vcpu); =20 vcpu_alloc_vmx(vm, &vmx_pages_gva); - vcpu_args_set(vm, vcpu->id, 1, vmx_pages_gva); + vcpu_args_set(vcpu, 1, vmx_pages_gva); =20 vm_init_descriptor_tables(vm); - vcpu_init_descriptor_tables(vm, vcpu->id); + vcpu_init_descriptor_tables(vcpu); vm_install_exception_handler(vm, UD_VECTOR, guest_ud_handler); vm_install_exception_handler(vm, NMI_VECTOR, guest_nmi_handler); =20 @@ -233,13 +233,13 @@ int main(int argc, char *argv[]) for (stage =3D 1;; stage++) { run =3D vcpu->run; =20 - vcpu_run(vm, vcpu->id); + vcpu_run(vcpu); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Stage %d: unexpected exit reason: %u (%s),\n", stage, run->exit_reason, exit_reason_str(run->exit_reason)); =20 - switch (get_ucall(vm, vcpu->id, &uc)) { + switch (get_ucall(vcpu, &uc)) { case UCALL_ABORT: TEST_FAIL("%s at %s:%ld", (const char *)uc.args[0], __FILE__, uc.args[1]); diff --git a/tools/testing/selftests/kvm/x86_64/hyperv_clock.c b/tools/test= ing/selftests/kvm/x86_64/hyperv_clock.c index 43584ddc4de0..c2e37705e5c8 100644 --- a/tools/testing/selftests/kvm/x86_64/hyperv_clock.c +++ b/tools/testing/selftests/kvm/x86_64/hyperv_clock.c @@ -176,15 +176,15 @@ static void host_check_tsc_msr_rdtsc(struct kvm_vcpu = *vcpu) u64 tsc_freq, r1, r2, t1, t2; s64 delta_ns; =20 - tsc_freq =3D vcpu_get_msr(vcpu->vm, vcpu->id, HV_X64_MSR_TSC_FREQUENCY); + tsc_freq =3D vcpu_get_msr(vcpu, HV_X64_MSR_TSC_FREQUENCY); TEST_ASSERT(tsc_freq > 0, "TSC frequency must be nonzero"); =20 /* First, check MSR-based clocksource */ r1 =3D rdtsc(); - t1 =3D vcpu_get_msr(vcpu->vm, vcpu->id, HV_X64_MSR_TIME_REF_COUNT); + t1 =3D vcpu_get_msr(vcpu, HV_X64_MSR_TIME_REF_COUNT); nop_loop(); r2 =3D rdtsc(); - t2 =3D vcpu_get_msr(vcpu->vm, vcpu->id, HV_X64_MSR_TIME_REF_COUNT); + t2 =3D vcpu_get_msr(vcpu, HV_X64_MSR_TIME_REF_COUNT); =20 TEST_ASSERT(t2 > t1, "Time reference MSR is not monotonic (%ld <=3D %ld)"= , t1, t2); =20 @@ -211,24 +211,24 @@ int main(void) vm =3D vm_create_with_one_vcpu(&vcpu, guest_main); run =3D vcpu->run; =20 - vcpu_set_hv_cpuid(vm, vcpu->id); + vcpu_set_hv_cpuid(vcpu); =20 tsc_page_gva =3D vm_vaddr_alloc_page(vm); memset(addr_gva2hva(vm, tsc_page_gva), 0x0, getpagesize()); TEST_ASSERT((addr_gva2gpa(vm, tsc_page_gva) & (getpagesize() - 1)) =3D=3D= 0, "TSC page has to be page aligned\n"); - vcpu_args_set(vm, vcpu->id, 2, tsc_page_gva, addr_gva2gpa(vm, tsc_page_gv= a)); + vcpu_args_set(vcpu, 2, tsc_page_gva, addr_gva2gpa(vm, tsc_page_gva)); =20 host_check_tsc_msr_rdtsc(vcpu); =20 for (stage =3D 1;; stage++) { - vcpu_run(vm, vcpu->id); + vcpu_run(vcpu); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Stage %d: unexpected exit reason: %u (%s),\n", stage, run->exit_reason, exit_reason_str(run->exit_reason)); =20 - switch (get_ucall(vm, vcpu->id, &uc)) { + switch (get_ucall(vcpu, &uc)) { case UCALL_ABORT: TEST_FAIL("%s at %s:%ld", (const char *)uc.args[0], __FILE__, uc.args[1]); diff --git a/tools/testing/selftests/kvm/x86_64/hyperv_cpuid.c b/tools/test= ing/selftests/kvm/x86_64/hyperv_cpuid.c index d1a22ee98cf3..af13c48f0f30 100644 --- a/tools/testing/selftests/kvm/x86_64/hyperv_cpuid.c +++ b/tools/testing/selftests/kvm/x86_64/hyperv_cpuid.c @@ -119,7 +119,7 @@ void test_hv_cpuid_e2big(struct kvm_vm *vm, struct kvm_= vcpu *vcpu) int ret; =20 if (vcpu) - ret =3D __vcpu_ioctl(vm, vcpu->id, KVM_GET_SUPPORTED_HV_CPUID, &cpuid); + ret =3D __vcpu_ioctl(vcpu, KVM_GET_SUPPORTED_HV_CPUID, &cpuid); else ret =3D __kvm_ioctl(vm_get_kvm_fd(vm), KVM_GET_SUPPORTED_HV_CPUID, &cpui= d); =20 @@ -147,7 +147,7 @@ int main(int argc, char *argv[]) /* Test vCPU ioctl version */ test_hv_cpuid_e2big(vm, vcpu); =20 - hv_cpuid_entries =3D vcpu_get_supported_hv_cpuid(vm, vcpu->id); + hv_cpuid_entries =3D vcpu_get_supported_hv_cpuid(vcpu); test_hv_cpuid(hv_cpuid_entries, false); free(hv_cpuid_entries); =20 @@ -156,8 +156,8 @@ int main(int argc, char *argv[]) print_skip("Enlightened VMCS is unsupported"); goto do_sys; } - vcpu_enable_evmcs(vm, vcpu->id); - hv_cpuid_entries =3D vcpu_get_supported_hv_cpuid(vm, vcpu->id); + vcpu_enable_evmcs(vcpu); + hv_cpuid_entries =3D vcpu_get_supported_hv_cpuid(vcpu); test_hv_cpuid(hv_cpuid_entries, true); free(hv_cpuid_entries); =20 diff --git a/tools/testing/selftests/kvm/x86_64/hyperv_features.c b/tools/t= esting/selftests/kvm/x86_64/hyperv_features.c index 52686e2f8d53..d2479f379e28 100644 --- a/tools/testing/selftests/kvm/x86_64/hyperv_features.c +++ b/tools/testing/selftests/kvm/x86_64/hyperv_features.c @@ -161,7 +161,7 @@ static void hv_set_cpuid(struct kvm_vcpu *vcpu, struct = kvm_cpuid2 *cpuid, "failed to set HYPERV_CPUID_ENLIGHTMENT_INFO leaf"); TEST_ASSERT(set_cpuid(cpuid, dbg), "failed to set HYPERV_CPUID_SYNDBG_PLATFORM_CAPABILITIES leaf"); - vcpu_set_cpuid(vcpu->vm, vcpu->id, cpuid); + vcpu_set_cpuid(vcpu, cpuid); } =20 static void guest_test_msrs_access(void) @@ -195,15 +195,15 @@ static void guest_test_msrs_access(void) memset(addr_gva2hva(vm, msr_gva), 0x0, getpagesize()); msr =3D addr_gva2hva(vm, msr_gva); =20 - vcpu_args_set(vm, vcpu->id, 1, msr_gva); - vcpu_enable_cap(vm, vcpu->id, &cap); + vcpu_args_set(vcpu, 1, msr_gva); + vcpu_enable_cap(vcpu, &cap); =20 - vcpu_set_hv_cpuid(vm, vcpu->id); + vcpu_set_hv_cpuid(vcpu); =20 best =3D kvm_get_supported_hv_cpuid(); =20 vm_init_descriptor_tables(vm); - vcpu_init_descriptor_tables(vm, vcpu->id); + vcpu_init_descriptor_tables(vcpu); vm_install_exception_handler(vm, GP_VECTOR, guest_gp_handler); =20 run =3D vcpu->run; @@ -339,7 +339,7 @@ static void guest_test_msrs_access(void) */ cap.cap =3D KVM_CAP_HYPERV_SYNIC2; cap.args[0] =3D 0; - vcpu_enable_cap(vm, vcpu->id, &cap); + vcpu_enable_cap(vcpu, &cap); break; case 22: feat.eax |=3D HV_MSR_SYNIC_AVAILABLE; @@ -477,12 +477,12 @@ static void guest_test_msrs_access(void) else pr_debug("Stage %d: finish\n", stage); =20 - vcpu_run(vm, vcpu->id); + vcpu_run(vcpu); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "unexpected exit reason: %u (%s)", run->exit_reason, exit_reason_str(run->exit_reason)); =20 - switch (get_ucall(vm, vcpu->id, &uc)) { + switch (get_ucall(vcpu, &uc)) { case UCALL_SYNC: TEST_ASSERT(uc.args[1] =3D=3D 0, "Unexpected stage: %ld (0 expected)\n", @@ -530,7 +530,7 @@ static void guest_test_hcalls_access(void) vm =3D vm_create_with_one_vcpu(&vcpu, guest_hcall); =20 vm_init_descriptor_tables(vm); - vcpu_init_descriptor_tables(vm, vcpu->id); + vcpu_init_descriptor_tables(vcpu); vm_install_exception_handler(vm, UD_VECTOR, guest_ud_handler); =20 /* Hypercall input/output */ @@ -541,10 +541,10 @@ static void guest_test_hcalls_access(void) hcall_params =3D vm_vaddr_alloc_page(vm); memset(addr_gva2hva(vm, hcall_params), 0x0, getpagesize()); =20 - vcpu_args_set(vm, vcpu->id, 2, addr_gva2gpa(vm, hcall_page), hcall_param= s); - vcpu_enable_cap(vm, vcpu->id, &cap); + vcpu_args_set(vcpu, 2, addr_gva2gpa(vm, hcall_page), hcall_params); + vcpu_enable_cap(vcpu, &cap); =20 - vcpu_set_hv_cpuid(vm, vcpu->id); + vcpu_set_hv_cpuid(vcpu); =20 best =3D kvm_get_supported_hv_cpuid(); =20 @@ -651,12 +651,12 @@ static void guest_test_hcalls_access(void) else pr_debug("Stage %d: finish\n", stage); =20 - vcpu_run(vm, vcpu->id); + vcpu_run(vcpu); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "unexpected exit reason: %u (%s)", run->exit_reason, exit_reason_str(run->exit_reason)); =20 - switch (get_ucall(vm, vcpu->id, &uc)) { + switch (get_ucall(vcpu, &uc)) { case UCALL_SYNC: TEST_ASSERT(uc.args[1] =3D=3D 0, "Unexpected stage: %ld (0 expected)\n", diff --git a/tools/testing/selftests/kvm/x86_64/hyperv_svm_test.c b/tools/t= esting/selftests/kvm/x86_64/hyperv_svm_test.c index 46f1070e7297..02b3e2f3dff3 100644 --- a/tools/testing/selftests/kvm/x86_64/hyperv_svm_test.c +++ b/tools/testing/selftests/kvm/x86_64/hyperv_svm_test.c @@ -138,19 +138,19 @@ int main(int argc, char *argv[]) } /* Create VM */ vm =3D vm_create_with_one_vcpu(&vcpu, guest_code); - vcpu_set_hv_cpuid(vm, vcpu->id); + vcpu_set_hv_cpuid(vcpu); run =3D vcpu->run; vcpu_alloc_svm(vm, &nested_gva); - vcpu_args_set(vm, vcpu->id, 1, nested_gva); + vcpu_args_set(vcpu, 1, nested_gva); =20 for (stage =3D 1;; stage++) { - vcpu_run(vm, vcpu->id); + vcpu_run(vcpu); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Stage %d: unexpected exit reason: %u (%s),\n", stage, run->exit_reason, exit_reason_str(run->exit_reason)); =20 - switch (get_ucall(vm, vcpu->id, &uc)) { + switch (get_ucall(vcpu, &uc)) { case UCALL_ABORT: TEST_FAIL("%s at %s:%ld", (const char *)uc.args[0], __FILE__, uc.args[1]); diff --git a/tools/testing/selftests/kvm/x86_64/kvm_clock_test.c b/tools/te= sting/selftests/kvm/x86_64/kvm_clock_test.c index 2c1f850c4053..6e3c4bd60b76 100644 --- a/tools/testing/selftests/kvm/x86_64/kvm_clock_test.c +++ b/tools/testing/selftests/kvm/x86_64/kvm_clock_test.c @@ -116,14 +116,14 @@ static void enter_guest(struct kvm_vcpu *vcpu) =20 vm_ioctl(vm, KVM_GET_CLOCK, &start); =20 - vcpu_run(vcpu->vm, vcpu->id); + vcpu_run(vcpu); vm_ioctl(vm, KVM_GET_CLOCK, &end); =20 TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "unexpected exit reason: %u (%s)", run->exit_reason, exit_reason_str(run->exit_reason)); =20 - switch (get_ucall(vcpu->vm, vcpu->id, &uc)) { + switch (get_ucall(vcpu, &uc)) { case UCALL_SYNC: handle_sync(&uc, &start, &end); break; @@ -193,7 +193,7 @@ int main(void) =20 pvti_gva =3D vm_vaddr_alloc(vm, getpagesize(), 0x10000); pvti_gpa =3D addr_gva2gpa(vm, pvti_gva); - vcpu_args_set(vm, vcpu->id, 2, pvti_gpa, pvti_gva); + vcpu_args_set(vcpu, 2, pvti_gpa, pvti_gva); =20 enter_guest(vcpu); kvm_vm_free(vm); diff --git a/tools/testing/selftests/kvm/x86_64/kvm_pv_test.c b/tools/testi= ng/selftests/kvm/x86_64/kvm_pv_test.c index cce9016e31a7..79cab212772c 100644 --- a/tools/testing/selftests/kvm/x86_64/kvm_pv_test.c +++ b/tools/testing/selftests/kvm/x86_64/kvm_pv_test.c @@ -177,12 +177,12 @@ static void enter_guest(struct kvm_vcpu *vcpu) struct ucall uc; =20 while (true) { - vcpu_run(vcpu->vm, vcpu->id); + vcpu_run(vcpu); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "unexpected exit reason: %u (%s)", run->exit_reason, exit_reason_str(run->exit_reason)); =20 - switch (get_ucall(vcpu->vm, vcpu->id, &uc)) { + switch (get_ucall(vcpu, &uc)) { case UCALL_PR_MSR: pr_msr(&uc); break; @@ -214,14 +214,14 @@ int main(void) =20 cap.cap =3D KVM_CAP_ENFORCE_PV_FEATURE_CPUID; cap.args[0] =3D 1; - vcpu_enable_cap(vm, vcpu->id, &cap); + vcpu_enable_cap(vcpu, &cap); =20 best =3D kvm_get_supported_cpuid(); clear_kvm_cpuid_features(best); - vcpu_set_cpuid(vm, vcpu->id, best); + vcpu_set_cpuid(vcpu, best); =20 vm_init_descriptor_tables(vm); - vcpu_init_descriptor_tables(vm, vcpu->id); + vcpu_init_descriptor_tables(vcpu); vm_install_exception_handler(vm, GP_VECTOR, guest_gp_handler); =20 enter_guest(vcpu); diff --git a/tools/testing/selftests/kvm/x86_64/mmu_role_test.c b/tools/tes= ting/selftests/kvm/x86_64/mmu_role_test.c index 809aa0153cee..62e674095bd2 100644 --- a/tools/testing/selftests/kvm/x86_64/mmu_role_test.c +++ b/tools/testing/selftests/kvm/x86_64/mmu_role_test.c @@ -35,7 +35,7 @@ static void mmu_role_test(u32 *cpuid_reg, u32 evil_cpuid_= val) /* Map 1gb page without a backing memlot. */ __virt_pg_map(vm, MMIO_GPA, MMIO_GPA, X86_PAGE_SIZE_1G); =20 - vcpu_run(vm, vcpu->id); + vcpu_run(vcpu); =20 /* Guest access to the 1gb page should trigger MMIO. */ TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_MMIO, @@ -54,7 +54,7 @@ static void mmu_role_test(u32 *cpuid_reg, u32 evil_cpuid_= val) * returns the struct that contains the entry being modified. Eww. */ *cpuid_reg =3D evil_cpuid_val; - vcpu_set_cpuid(vm, vcpu->id, kvm_get_supported_cpuid()); + vcpu_set_cpuid(vcpu, kvm_get_supported_cpuid()); =20 /* * Add a dummy memslot to coerce KVM into bumping the MMIO generation. @@ -67,12 +67,12 @@ static void mmu_role_test(u32 *cpuid_reg, u32 evil_cpui= d_val) =20 /* Set up a #PF handler to eat the RSVD #PF and signal all done! */ vm_init_descriptor_tables(vm); - vcpu_init_descriptor_tables(vm, vcpu->id); + vcpu_init_descriptor_tables(vcpu); vm_install_exception_handler(vm, PF_VECTOR, guest_pf_handler); =20 - vcpu_run(vm, vcpu->id); + vcpu_run(vcpu); =20 - cmd =3D get_ucall(vm, vcpu->id, NULL); + cmd =3D get_ucall(vcpu, NULL); TEST_ASSERT(cmd =3D=3D UCALL_DONE, "Unexpected guest exit, exit_reason=3D%s, ucall.cmd =3D %lu\n", exit_reason_str(run->exit_reason), cmd); diff --git a/tools/testing/selftests/kvm/x86_64/platform_info_test.c b/tool= s/testing/selftests/kvm/x86_64/platform_info_test.c index 0468a51c05f6..68fb086a8451 100644 --- a/tools/testing/selftests/kvm/x86_64/platform_info_test.c +++ b/tools/testing/selftests/kvm/x86_64/platform_info_test.c @@ -50,12 +50,12 @@ static void test_msr_platform_info_enabled(struct kvm_v= cpu *vcpu) struct ucall uc; =20 set_msr_platform_info_enabled(vcpu->vm, true); - vcpu_run(vcpu->vm, vcpu->id); + vcpu_run(vcpu); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Exit_reason other than KVM_EXIT_IO: %u (%s),\n", run->exit_reason, exit_reason_str(run->exit_reason)); - get_ucall(vcpu->vm, vcpu->id, &uc); + get_ucall(vcpu, &uc); TEST_ASSERT(uc.cmd =3D=3D UCALL_SYNC, "Received ucall other than UCALL_SYNC: %lu\n", uc.cmd); TEST_ASSERT((uc.args[1] & MSR_PLATFORM_INFO_MAX_TURBO_RATIO) =3D=3D @@ -69,7 +69,7 @@ static void test_msr_platform_info_disabled(struct kvm_vc= pu *vcpu) struct kvm_run *run =3D vcpu->run; =20 set_msr_platform_info_enabled(vcpu->vm, false); - vcpu_run(vcpu->vm, vcpu->id); + vcpu_run(vcpu); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_SHUTDOWN, "Exit_reason other than KVM_EXIT_SHUTDOWN: %u (%s)\n", run->exit_reason, @@ -94,12 +94,12 @@ int main(int argc, char *argv[]) =20 vm =3D vm_create_with_one_vcpu(&vcpu, guest_code); =20 - msr_platform_info =3D vcpu_get_msr(vm, vcpu->id, MSR_PLATFORM_INFO); - vcpu_set_msr(vm, vcpu->id, MSR_PLATFORM_INFO, - msr_platform_info | MSR_PLATFORM_INFO_MAX_TURBO_RATIO); + msr_platform_info =3D vcpu_get_msr(vcpu, MSR_PLATFORM_INFO); + vcpu_set_msr(vcpu, MSR_PLATFORM_INFO, + msr_platform_info | MSR_PLATFORM_INFO_MAX_TURBO_RATIO); test_msr_platform_info_enabled(vcpu); test_msr_platform_info_disabled(vcpu); - vcpu_set_msr(vm, vcpu->id, MSR_PLATFORM_INFO, msr_platform_info); + vcpu_set_msr(vcpu, MSR_PLATFORM_INFO, msr_platform_info); =20 kvm_vm_free(vm); =20 diff --git a/tools/testing/selftests/kvm/x86_64/pmu_event_filter_test.c b/t= ools/testing/selftests/kvm/x86_64/pmu_event_filter_test.c index 9aaad99f8986..c5acd7e081d1 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 @@ -177,12 +177,12 @@ static uint64_t run_vcpu_to_sync(struct kvm_vcpu *vcp= u) struct kvm_run *run =3D vcpu->run; struct ucall uc; =20 - vcpu_run(vcpu->vm, vcpu->id); + vcpu_run(vcpu); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Exit_reason other than KVM_EXIT_IO: %u (%s)\n", run->exit_reason, exit_reason_str(run->exit_reason)); - get_ucall(vcpu->vm, vcpu->id, &uc); + get_ucall(vcpu, &uc); TEST_ASSERT(uc.cmd =3D=3D UCALL_SYNC, "Received ucall other than UCALL_SYNC: %lu", uc.cmd); return uc.args[1]; @@ -415,7 +415,7 @@ int main(int argc, char *argv[]) vm =3D vm_create_with_one_vcpu(&vcpu, guest_code); =20 vm_init_descriptor_tables(vm); - vcpu_init_descriptor_tables(vm, vcpu->id); + vcpu_init_descriptor_tables(vcpu); =20 if (!sanity_check_pmu(vcpu)) { print_skip("Guest PMU is not functional"); diff --git a/tools/testing/selftests/kvm/x86_64/set_boot_cpu_id.c b/tools/t= esting/selftests/kvm/x86_64/set_boot_cpu_id.c index 5b0c61127dd7..4bd26482f17e 100644 --- a/tools/testing/selftests/kvm/x86_64/set_boot_cpu_id.c +++ b/tools/testing/selftests/kvm/x86_64/set_boot_cpu_id.c @@ -49,9 +49,9 @@ static void run_vcpu(struct kvm_vcpu *vcpu) =20 for (stage =3D 0; stage < 2; stage++) { =20 - vcpu_run(vcpu->vm, vcpu->id); + vcpu_run(vcpu); =20 - switch (get_ucall(vcpu->vm, vcpu->id, &uc)) { + switch (get_ucall(vcpu, &uc)) { case UCALL_SYNC: TEST_ASSERT(!strcmp((const char *)uc.args[0], "hello") && uc.args[1] =3D=3D stage + 1, diff --git a/tools/testing/selftests/kvm/x86_64/set_sregs_test.c b/tools/te= sting/selftests/kvm/x86_64/set_sregs_test.c index 9bc1d6b33172..150a07f5dfda 100644 --- a/tools/testing/selftests/kvm/x86_64/set_sregs_test.c +++ b/tools/testing/selftests/kvm/x86_64/set_sregs_test.c @@ -35,11 +35,11 @@ static void test_cr4_feature_bit(struct kvm_vcpu *vcpu,= struct kvm_sregs *orig, memcpy(&sregs, orig, sizeof(sregs)); sregs.cr4 |=3D feature_bit; =20 - rc =3D _vcpu_sregs_set(vcpu->vm, vcpu->id, &sregs); + rc =3D _vcpu_sregs_set(vcpu, &sregs); TEST_ASSERT(rc, "KVM allowed unsupported CR4 bit (0x%lx)", feature_bit); =20 /* Sanity check that KVM didn't change anything. */ - vcpu_sregs_get(vcpu->vm, vcpu->id, &sregs); + vcpu_sregs_get(vcpu, &sregs); TEST_ASSERT(!memcmp(&sregs, orig, sizeof(sregs)), "KVM modified sregs"); } =20 @@ -97,15 +97,15 @@ int main(int argc, char *argv[]) vm =3D vm_create(DEFAULT_GUEST_PHY_PAGES); vcpu =3D __vm_vcpu_add(vm, 0); =20 - vcpu_sregs_get(vm, vcpu->id, &sregs); + vcpu_sregs_get(vcpu, &sregs); =20 sregs.cr4 |=3D calc_cr4_feature_bits(vm); cr4 =3D sregs.cr4; =20 - rc =3D _vcpu_sregs_set(vm, vcpu->id, &sregs); + rc =3D _vcpu_sregs_set(vcpu, &sregs); TEST_ASSERT(!rc, "Failed to set supported CR4 bits (0x%lx)", cr4); =20 - vcpu_sregs_get(vm, vcpu->id, &sregs); + vcpu_sregs_get(vcpu, &sregs); TEST_ASSERT(sregs.cr4 =3D=3D cr4, "sregs.CR4 (0x%llx) !=3D CR4 (0x%lx)", sregs.cr4, cr4); =20 @@ -125,13 +125,13 @@ int main(int argc, char *argv[]) /* Create a "real" VM and verify APIC_BASE can be set. */ vm =3D vm_create_with_one_vcpu(&vcpu, NULL); =20 - vcpu_sregs_get(vm, vcpu->id, &sregs); + vcpu_sregs_get(vcpu, &sregs); sregs.apic_base =3D 1 << 10; - rc =3D _vcpu_sregs_set(vm, vcpu->id, &sregs); + rc =3D _vcpu_sregs_set(vcpu, &sregs); TEST_ASSERT(rc, "Set IA32_APIC_BASE to %llx (invalid)", sregs.apic_base); sregs.apic_base =3D 1 << 11; - rc =3D _vcpu_sregs_set(vm, vcpu->id, &sregs); + rc =3D _vcpu_sregs_set(vcpu, &sregs); TEST_ASSERT(!rc, "Couldn't set IA32_APIC_BASE to %llx (valid)", sregs.apic_base); =20 diff --git a/tools/testing/selftests/kvm/x86_64/smm_test.c b/tools/testing/= selftests/kvm/x86_64/smm_test.c index dfb2e92e8e12..74e40fae6781 100644 --- a/tools/testing/selftests/kvm/x86_64/smm_test.c +++ b/tools/testing/selftests/kvm/x86_64/smm_test.c @@ -120,12 +120,12 @@ void inject_smi(struct kvm_vcpu *vcpu) { struct kvm_vcpu_events events; =20 - vcpu_events_get(vcpu->vm, vcpu->id, &events); + vcpu_events_get(vcpu, &events); =20 events.smi.pending =3D 1; events.flags |=3D KVM_VCPUEVENT_VALID_SMM; =20 - vcpu_events_set(vcpu->vm, vcpu->id, &events); + vcpu_events_set(vcpu, &events); } =20 int main(int argc, char *argv[]) @@ -153,7 +153,7 @@ int main(int argc, char *argv[]) memcpy(addr_gpa2hva(vm, SMRAM_GPA) + 0x8000, smi_handler, sizeof(smi_handler)); =20 - vcpu_set_msr(vm, vcpu->id, MSR_IA32_SMBASE, SMRAM_GPA); + vcpu_set_msr(vcpu, MSR_IA32_SMBASE, SMRAM_GPA); =20 if (kvm_check_cap(KVM_CAP_NESTED_STATE)) { if (nested_svm_supported()) @@ -165,17 +165,17 @@ int main(int argc, char *argv[]) if (!nested_gva) pr_info("will skip SMM test with VMX enabled\n"); =20 - vcpu_args_set(vm, vcpu->id, 1, nested_gva); + vcpu_args_set(vcpu, 1, nested_gva); =20 for (stage =3D 1;; stage++) { - vcpu_run(vm, vcpu->id); + vcpu_run(vcpu); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Stage %d: unexpected exit reason: %u (%s),\n", stage, run->exit_reason, exit_reason_str(run->exit_reason)); =20 memset(®s, 0, sizeof(regs)); - vcpu_regs_get(vm, vcpu->id, ®s); + vcpu_regs_get(vcpu, ®s); =20 stage_reported =3D regs.rax & 0xff; =20 @@ -203,12 +203,12 @@ int main(int argc, char *argv[]) if (stage =3D=3D 10) inject_smi(vcpu); =20 - state =3D vcpu_save_state(vm, vcpu->id); + state =3D vcpu_save_state(vcpu); kvm_vm_release(vm); =20 vcpu =3D vm_recreate_with_one_vcpu(vm); - vcpu_set_cpuid(vm, vcpu->id, kvm_get_supported_cpuid()); - vcpu_load_state(vm, vcpu->id, state); + vcpu_set_cpuid(vcpu, kvm_get_supported_cpuid()); + vcpu_load_state(vcpu, state); run =3D vcpu->run; kvm_x86_state_cleanup(state); } diff --git a/tools/testing/selftests/kvm/x86_64/state_test.c b/tools/testin= g/selftests/kvm/x86_64/state_test.c index b7869efad22a..0bcd78cf7c79 100644 --- a/tools/testing/selftests/kvm/x86_64/state_test.c +++ b/tools/testing/selftests/kvm/x86_64/state_test.c @@ -167,7 +167,7 @@ int main(int argc, char *argv[]) vm =3D vm_create_with_one_vcpu(&vcpu, guest_code); run =3D vcpu->run; =20 - vcpu_regs_get(vm, vcpu->id, ®s1); + vcpu_regs_get(vcpu, ®s1); =20 if (kvm_check_cap(KVM_CAP_NESTED_STATE)) { if (nested_svm_supported()) @@ -179,16 +179,16 @@ int main(int argc, char *argv[]) if (!nested_gva) pr_info("will skip nested state checks\n"); =20 - vcpu_args_set(vm, vcpu->id, 1, nested_gva); + vcpu_args_set(vcpu, 1, nested_gva); =20 for (stage =3D 1;; stage++) { - vcpu_run(vm, vcpu->id); + vcpu_run(vcpu); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Stage %d: unexpected exit reason: %u (%s),\n", stage, run->exit_reason, exit_reason_str(run->exit_reason)); =20 - switch (get_ucall(vm, vcpu->id, &uc)) { + switch (get_ucall(vcpu, &uc)) { case UCALL_ABORT: TEST_FAIL("%s at %s:%ld", (const char *)uc.args[0], __FILE__, uc.args[1]); @@ -206,21 +206,21 @@ int main(int argc, char *argv[]) uc.args[1] =3D=3D stage, "Stage %d: Unexpected register values vmex= it, got %lx", stage, (ulong)uc.args[1]); =20 - state =3D vcpu_save_state(vm, vcpu->id); + state =3D vcpu_save_state(vcpu); memset(®s1, 0, sizeof(regs1)); - vcpu_regs_get(vm, vcpu->id, ®s1); + vcpu_regs_get(vcpu, ®s1); =20 kvm_vm_release(vm); =20 /* Restore state in a new VM. */ vcpu =3D vm_recreate_with_one_vcpu(vm); - vcpu_set_cpuid(vm, vcpu->id, kvm_get_supported_cpuid()); - vcpu_load_state(vm, vcpu->id, state); + vcpu_set_cpuid(vcpu, kvm_get_supported_cpuid()); + vcpu_load_state(vcpu, state); run =3D vcpu->run; kvm_x86_state_cleanup(state); =20 memset(®s2, 0, sizeof(regs2)); - vcpu_regs_get(vm, vcpu->id, ®s2); + vcpu_regs_get(vcpu, ®s2); TEST_ASSERT(!memcmp(®s1, ®s2, sizeof(regs2)), "Unexpected register values after vcpu_load_state; rdi: %lx rsi: %l= x", (ulong) regs2.rdi, (ulong) regs2.rsi); diff --git a/tools/testing/selftests/kvm/x86_64/svm_int_ctl_test.c b/tools/= testing/selftests/kvm/x86_64/svm_int_ctl_test.c index 8e90e463895a..9c68a47b69e1 100644 --- a/tools/testing/selftests/kvm/x86_64/svm_int_ctl_test.c +++ b/tools/testing/selftests/kvm/x86_64/svm_int_ctl_test.c @@ -95,23 +95,23 @@ int main(int argc, char *argv[]) vm =3D vm_create_with_one_vcpu(&vcpu, l1_guest_code); =20 vm_init_descriptor_tables(vm); - vcpu_init_descriptor_tables(vm, vcpu->id); + vcpu_init_descriptor_tables(vcpu); =20 vm_install_exception_handler(vm, VINTR_IRQ_NUMBER, vintr_irq_handler); vm_install_exception_handler(vm, INTR_IRQ_NUMBER, intr_irq_handler); =20 vcpu_alloc_svm(vm, &svm_gva); - vcpu_args_set(vm, vcpu->id, 1, svm_gva); + vcpu_args_set(vcpu, 1, svm_gva); =20 run =3D vcpu->run; =20 - vcpu_run(vm, vcpu->id); + vcpu_run(vcpu); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Got exit_reason other than KVM_EXIT_IO: %u (%s)\n", run->exit_reason, exit_reason_str(run->exit_reason)); =20 - switch (get_ucall(vm, vcpu->id, &uc)) { + switch (get_ucall(vcpu, &uc)) { case UCALL_ABORT: TEST_FAIL("%s", (const char *)uc.args[0]); break; diff --git a/tools/testing/selftests/kvm/x86_64/svm_vmcall_test.c b/tools/t= esting/selftests/kvm/x86_64/svm_vmcall_test.c index 15e389a7cd31..e6d7191866a5 100644 --- a/tools/testing/selftests/kvm/x86_64/svm_vmcall_test.c +++ b/tools/testing/selftests/kvm/x86_64/svm_vmcall_test.c @@ -44,19 +44,19 @@ int main(int argc, char *argv[]) vm =3D vm_create_with_one_vcpu(&vcpu, l1_guest_code); =20 vcpu_alloc_svm(vm, &svm_gva); - vcpu_args_set(vm, vcpu->id, 1, svm_gva); + vcpu_args_set(vcpu, 1, svm_gva); =20 for (;;) { volatile struct kvm_run *run =3D vcpu->run; struct ucall uc; =20 - vcpu_run(vm, vcpu->id); + vcpu_run(vcpu); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Got exit_reason other than KVM_EXIT_IO: %u (%s)\n", run->exit_reason, exit_reason_str(run->exit_reason)); =20 - switch (get_ucall(vm, vcpu->id, &uc)) { + switch (get_ucall(vcpu, &uc)) { case UCALL_ABORT: TEST_FAIL("%s", (const char *)uc.args[0]); /* NOT REACHED */ diff --git a/tools/testing/selftests/kvm/x86_64/sync_regs_test.c b/tools/te= sting/selftests/kvm/x86_64/sync_regs_test.c index c971706b49f5..773db9d4f228 100644 --- a/tools/testing/selftests/kvm/x86_64/sync_regs_test.c +++ b/tools/testing/selftests/kvm/x86_64/sync_regs_test.c @@ -109,14 +109,14 @@ int main(int argc, char *argv[]) =20 /* Request reading invalid register set from VCPU. */ run->kvm_valid_regs =3D INVALID_SYNC_FIELD; - rv =3D _vcpu_run(vm, vcpu->id); + rv =3D _vcpu_run(vcpu); TEST_ASSERT(rv < 0 && errno =3D=3D EINVAL, "Invalid kvm_valid_regs did not cause expected KVM_RUN error: %d\n", rv); run->kvm_valid_regs =3D 0; =20 run->kvm_valid_regs =3D INVALID_SYNC_FIELD | TEST_SYNC_FIELDS; - rv =3D _vcpu_run(vm, vcpu->id); + rv =3D _vcpu_run(vcpu); TEST_ASSERT(rv < 0 && errno =3D=3D EINVAL, "Invalid kvm_valid_regs did not cause expected KVM_RUN error: %d\n", rv); @@ -124,14 +124,14 @@ int main(int argc, char *argv[]) =20 /* Request setting invalid register set into VCPU. */ run->kvm_dirty_regs =3D INVALID_SYNC_FIELD; - rv =3D _vcpu_run(vm, vcpu->id); + rv =3D _vcpu_run(vcpu); TEST_ASSERT(rv < 0 && errno =3D=3D EINVAL, "Invalid kvm_dirty_regs did not cause expected KVM_RUN error: %d\n", rv); run->kvm_dirty_regs =3D 0; =20 run->kvm_dirty_regs =3D INVALID_SYNC_FIELD | TEST_SYNC_FIELDS; - rv =3D _vcpu_run(vm, vcpu->id); + rv =3D _vcpu_run(vcpu); TEST_ASSERT(rv < 0 && errno =3D=3D EINVAL, "Invalid kvm_dirty_regs did not cause expected KVM_RUN error: %d\n", rv); @@ -140,19 +140,19 @@ int main(int argc, char *argv[]) /* Request and verify all valid register sets. */ /* TODO: BUILD TIME CHECK: TEST_ASSERT(KVM_SYNC_X86_NUM_FIELDS !=3D 3); */ run->kvm_valid_regs =3D TEST_SYNC_FIELDS; - rv =3D _vcpu_run(vm, vcpu->id); + rv =3D _vcpu_run(vcpu); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Unexpected exit reason: %u (%s),\n", run->exit_reason, exit_reason_str(run->exit_reason)); =20 - vcpu_regs_get(vm, vcpu->id, ®s); + vcpu_regs_get(vcpu, ®s); compare_regs(®s, &run->s.regs.regs); =20 - vcpu_sregs_get(vm, vcpu->id, &sregs); + vcpu_sregs_get(vcpu, &sregs); compare_sregs(&sregs, &run->s.regs.sregs); =20 - vcpu_events_get(vm, vcpu->id, &events); + vcpu_events_get(vcpu, &events); compare_vcpu_events(&events, &run->s.regs.events); =20 /* Set and verify various register values. */ @@ -162,7 +162,7 @@ int main(int argc, char *argv[]) =20 run->kvm_valid_regs =3D TEST_SYNC_FIELDS; run->kvm_dirty_regs =3D KVM_SYNC_X86_REGS | KVM_SYNC_X86_SREGS; - rv =3D _vcpu_run(vm, vcpu->id); + rv =3D _vcpu_run(vcpu); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Unexpected exit reason: %u (%s),\n", run->exit_reason, @@ -174,13 +174,13 @@ int main(int argc, char *argv[]) "apic_base sync regs value incorrect 0x%llx.", run->s.regs.sregs.apic_base); =20 - vcpu_regs_get(vm, vcpu->id, ®s); + vcpu_regs_get(vcpu, ®s); compare_regs(®s, &run->s.regs.regs); =20 - vcpu_sregs_get(vm, vcpu->id, &sregs); + vcpu_sregs_get(vcpu, &sregs); compare_sregs(&sregs, &run->s.regs.sregs); =20 - vcpu_events_get(vm, vcpu->id, &events); + vcpu_events_get(vcpu, &events); compare_vcpu_events(&events, &run->s.regs.events); =20 /* Clear kvm_dirty_regs bits, verify new s.regs values are @@ -189,7 +189,7 @@ int main(int argc, char *argv[]) run->kvm_valid_regs =3D TEST_SYNC_FIELDS; run->kvm_dirty_regs =3D 0; run->s.regs.regs.rbx =3D 0xDEADBEEF; - rv =3D _vcpu_run(vm, vcpu->id); + rv =3D _vcpu_run(vcpu); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Unexpected exit reason: %u (%s),\n", run->exit_reason, @@ -206,8 +206,8 @@ int main(int argc, char *argv[]) run->kvm_dirty_regs =3D 0; run->s.regs.regs.rbx =3D 0xAAAA; regs.rbx =3D 0xBAC0; - vcpu_regs_set(vm, vcpu->id, ®s); - rv =3D _vcpu_run(vm, vcpu->id); + vcpu_regs_set(vcpu, ®s); + rv =3D _vcpu_run(vcpu); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Unexpected exit reason: %u (%s),\n", run->exit_reason, @@ -215,7 +215,7 @@ int main(int argc, char *argv[]) TEST_ASSERT(run->s.regs.regs.rbx =3D=3D 0xAAAA, "rbx sync regs value incorrect 0x%llx.", run->s.regs.regs.rbx); - vcpu_regs_get(vm, vcpu->id, ®s); + vcpu_regs_get(vcpu, ®s); TEST_ASSERT(regs.rbx =3D=3D 0xBAC0 + 1, "rbx guest value incorrect 0x%llx.", regs.rbx); @@ -227,7 +227,7 @@ int main(int argc, char *argv[]) run->kvm_valid_regs =3D 0; run->kvm_dirty_regs =3D TEST_SYNC_FIELDS; run->s.regs.regs.rbx =3D 0xBBBB; - rv =3D _vcpu_run(vm, vcpu->id); + rv =3D _vcpu_run(vcpu); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Unexpected exit reason: %u (%s),\n", run->exit_reason, @@ -235,7 +235,7 @@ int main(int argc, char *argv[]) TEST_ASSERT(run->s.regs.regs.rbx =3D=3D 0xBBBB, "rbx sync regs value incorrect 0x%llx.", run->s.regs.regs.rbx); - vcpu_regs_get(vm, vcpu->id, ®s); + vcpu_regs_get(vcpu, ®s); TEST_ASSERT(regs.rbx =3D=3D 0xBBBB + 1, "rbx guest value incorrect 0x%llx.", regs.rbx); diff --git a/tools/testing/selftests/kvm/x86_64/tsc_msrs_test.c b/tools/tes= ting/selftests/kvm/x86_64/tsc_msrs_test.c index 3b7bf660eced..3165d3f7e065 100644 --- a/tools/testing/selftests/kvm/x86_64/tsc_msrs_test.c +++ b/tools/testing/selftests/kvm/x86_64/tsc_msrs_test.c @@ -14,7 +14,7 @@ #define GUEST_STEP (UNITY * 4) #define ROUND(x) ((x + UNITY / 2) & -UNITY) #define rounded_rdmsr(x) ROUND(rdmsr(x)) -#define rounded_host_rdmsr(x) ROUND(vcpu_get_msr(vm, vcpu->id, x)) +#define rounded_host_rdmsr(x) ROUND(vcpu_get_msr(vcpu, x)) =20 static void guest_code(void) { @@ -68,9 +68,9 @@ static void run_vcpu(struct kvm_vcpu *vcpu, int stage) { struct ucall uc; =20 - vcpu_run(vcpu->vm, vcpu->id); + vcpu_run(vcpu); =20 - switch (get_ucall(vcpu->vm, vcpu->id, &uc)) { + switch (get_ucall(vcpu, &uc)) { case UCALL_SYNC: TEST_ASSERT(!strcmp((const char *)uc.args[0], "hello") && uc.args[1] =3D=3D stage + 1, "Stage %d: Unexpected register values = vmexit, got %lx", @@ -116,18 +116,18 @@ int main(void) * Host: writes to MSR_IA32_TSC set the host-side offset * and therefore do not change MSR_IA32_TSC_ADJUST. */ - vcpu_set_msr(vm, vcpu->id, MSR_IA32_TSC, HOST_ADJUST + val); + vcpu_set_msr(vcpu, MSR_IA32_TSC, HOST_ADJUST + val); ASSERT_EQ(rounded_host_rdmsr(MSR_IA32_TSC), HOST_ADJUST + val); ASSERT_EQ(rounded_host_rdmsr(MSR_IA32_TSC_ADJUST), val); run_vcpu(vcpu, 3); =20 /* Host: writes to MSR_IA32_TSC_ADJUST do not modify the TSC. */ - vcpu_set_msr(vm, vcpu->id, MSR_IA32_TSC_ADJUST, UNITY * 123456); + vcpu_set_msr(vcpu, MSR_IA32_TSC_ADJUST, UNITY * 123456); ASSERT_EQ(rounded_host_rdmsr(MSR_IA32_TSC), HOST_ADJUST + val); - ASSERT_EQ(vcpu_get_msr(vm, vcpu->id, MSR_IA32_TSC_ADJUST), UNITY * 123456= ); + ASSERT_EQ(vcpu_get_msr(vcpu, MSR_IA32_TSC_ADJUST), UNITY * 123456); =20 /* Restore previous value. */ - vcpu_set_msr(vm, vcpu->id, MSR_IA32_TSC_ADJUST, val); + vcpu_set_msr(vcpu, MSR_IA32_TSC_ADJUST, val); ASSERT_EQ(rounded_host_rdmsr(MSR_IA32_TSC), HOST_ADJUST + val); ASSERT_EQ(rounded_host_rdmsr(MSR_IA32_TSC_ADJUST), val); =20 diff --git a/tools/testing/selftests/kvm/x86_64/userspace_io_test.c b/tools= /testing/selftests/kvm/x86_64/userspace_io_test.c index 0ba774ed6476..7538d57a41d5 100644 --- a/tools/testing/selftests/kvm/x86_64/userspace_io_test.c +++ b/tools/testing/selftests/kvm/x86_64/userspace_io_test.c @@ -65,14 +65,14 @@ int main(int argc, char *argv[]) memset(®s, 0, sizeof(regs)); =20 while (1) { - vcpu_run(vm, vcpu->id); + vcpu_run(vcpu); =20 TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Unexpected exit reason: %u (%s),\n", run->exit_reason, exit_reason_str(run->exit_reason)); =20 - if (get_ucall(vm, vcpu->id, &uc)) + if (get_ucall(vcpu, &uc)) break; =20 TEST_ASSERT(run->io.port =3D=3D 0x80, @@ -85,13 +85,13 @@ int main(int argc, char *argv[]) * scope from a testing perspective as it's not ABI in any way, * i.e. it really is abusing internal KVM knowledge. */ - vcpu_regs_get(vm, vcpu->id, ®s); + vcpu_regs_get(vcpu, ®s); if (regs.rcx =3D=3D 2) regs.rcx =3D 1; if (regs.rcx =3D=3D 3) regs.rcx =3D 8192; memset((void *)run + run->io.data_offset, 0xaa, 4096); - vcpu_regs_set(vm, vcpu->id, ®s); + vcpu_regs_set(vcpu, ®s); } =20 switch (uc.cmd) { diff --git a/tools/testing/selftests/kvm/x86_64/userspace_msr_exit_test.c b= /tools/testing/selftests/kvm/x86_64/userspace_msr_exit_test.c index e261c50fac5c..bdb898e751fe 100644 --- a/tools/testing/selftests/kvm/x86_64/userspace_msr_exit_test.c +++ b/tools/testing/selftests/kvm/x86_64/userspace_msr_exit_test.c @@ -399,7 +399,7 @@ static void check_for_guest_assert(struct kvm_vcpu *vcp= u) struct ucall uc; =20 if (vcpu->run->exit_reason =3D=3D KVM_EXIT_IO && - get_ucall(vcpu->vm, vcpu->id, &uc) =3D=3D UCALL_ABORT) { + get_ucall(vcpu, &uc) =3D=3D UCALL_ABORT) { TEST_FAIL("%s at %s:%ld", (const char *)uc.args[0], __FILE__, uc.args[1]); } @@ -483,7 +483,7 @@ static void process_ucall_done(struct kvm_vcpu *vcpu) run->exit_reason, exit_reason_str(run->exit_reason)); =20 - TEST_ASSERT(get_ucall(vcpu->vm, vcpu->id, &uc) =3D=3D UCALL_DONE, + TEST_ASSERT(get_ucall(vcpu, &uc) =3D=3D UCALL_DONE, "Unexpected ucall command: %lu, expected UCALL_DONE (%d)", uc.cmd, UCALL_DONE); } @@ -500,7 +500,7 @@ static uint64_t process_ucall(struct kvm_vcpu *vcpu) run->exit_reason, exit_reason_str(run->exit_reason)); =20 - switch (get_ucall(vcpu->vm, vcpu->id, &uc)) { + switch (get_ucall(vcpu, &uc)) { case UCALL_SYNC: break; case UCALL_ABORT: @@ -519,26 +519,26 @@ static uint64_t process_ucall(struct kvm_vcpu *vcpu) static void run_guest_then_process_rdmsr(struct kvm_vcpu *vcpu, uint32_t msr_index) { - vcpu_run(vcpu->vm, vcpu->id); + vcpu_run(vcpu); process_rdmsr(vcpu, msr_index); } =20 static void run_guest_then_process_wrmsr(struct kvm_vcpu *vcpu, uint32_t msr_index) { - vcpu_run(vcpu->vm, vcpu->id); + vcpu_run(vcpu); process_wrmsr(vcpu, msr_index); } =20 static uint64_t run_guest_then_process_ucall(struct kvm_vcpu *vcpu) { - vcpu_run(vcpu->vm, vcpu->id); + vcpu_run(vcpu); return process_ucall(vcpu); } =20 static void run_guest_then_process_ucall_done(struct kvm_vcpu *vcpu) { - vcpu_run(vcpu->vm, vcpu->id); + vcpu_run(vcpu); process_ucall_done(vcpu); } =20 @@ -564,7 +564,7 @@ static void test_msr_filter_allow(void) vm_ioctl(vm, KVM_X86_SET_MSR_FILTER, &filter_allow); =20 vm_init_descriptor_tables(vm); - vcpu_init_descriptor_tables(vm, vcpu->id); + vcpu_init_descriptor_tables(vcpu); =20 vm_install_exception_handler(vm, GP_VECTOR, guest_gp_handler); =20 @@ -581,7 +581,7 @@ static void test_msr_filter_allow(void) run_guest_then_process_rdmsr(vcpu, MSR_NON_EXISTENT); =20 vm_install_exception_handler(vm, UD_VECTOR, guest_ud_handler); - vcpu_run(vm, vcpu->id); + vcpu_run(vcpu); vm_install_exception_handler(vm, UD_VECTOR, NULL); =20 if (process_ucall(vcpu) !=3D UCALL_DONE) { @@ -612,7 +612,7 @@ static int handle_ucall(struct kvm_vcpu *vcpu) { struct ucall uc; =20 - switch (get_ucall(vcpu->vm, vcpu->id, &uc)) { + switch (get_ucall(vcpu, &uc)) { case UCALL_ABORT: TEST_FAIL("Guest assertion not met"); break; @@ -692,7 +692,7 @@ static void test_msr_filter_deny(void) vm_ioctl(vm, KVM_X86_SET_MSR_FILTER, &filter_deny); =20 while (1) { - vcpu_run(vm, vcpu->id); + vcpu_run(vcpu); =20 switch (run->exit_reason) { case KVM_EXIT_X86_RDMSR: diff --git a/tools/testing/selftests/kvm/x86_64/vmx_apic_access_test.c b/to= ols/testing/selftests/kvm/x86_64/vmx_apic_access_test.c index 10f9c86029e6..ef7514376b1e 100644 --- a/tools/testing/selftests/kvm/x86_64/vmx_apic_access_test.c +++ b/tools/testing/selftests/kvm/x86_64/vmx_apic_access_test.c @@ -95,13 +95,13 @@ int main(int argc, char *argv[]) =20 vmx =3D vcpu_alloc_vmx(vm, &vmx_pages_gva); prepare_virtualize_apic_accesses(vmx, vm); - vcpu_args_set(vm, vcpu->id, 2, vmx_pages_gva, high_gpa); + vcpu_args_set(vcpu, 2, vmx_pages_gva, high_gpa); =20 while (!done) { volatile struct kvm_run *run =3D vcpu->run; struct ucall uc; =20 - vcpu_run(vm, vcpu->id); + vcpu_run(vcpu); if (apic_access_addr =3D=3D high_gpa) { TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_INTERNAL_ERROR, @@ -119,7 +119,7 @@ int main(int argc, char *argv[]) run->exit_reason, exit_reason_str(run->exit_reason)); =20 - switch (get_ucall(vm, vcpu->id, &uc)) { + switch (get_ucall(vcpu, &uc)) { case UCALL_ABORT: TEST_FAIL("%s at %s:%ld", (const char *)uc.args[0], __FILE__, uc.args[1]); diff --git a/tools/testing/selftests/kvm/x86_64/vmx_close_while_nested_test= .c b/tools/testing/selftests/kvm/x86_64/vmx_close_while_nested_test.c index da0363076fba..40c77bb706a1 100644 --- a/tools/testing/selftests/kvm/x86_64/vmx_close_while_nested_test.c +++ b/tools/testing/selftests/kvm/x86_64/vmx_close_while_nested_test.c @@ -57,13 +57,13 @@ int main(int argc, char *argv[]) =20 /* Allocate VMX pages and shared descriptors (vmx_pages). */ vcpu_alloc_vmx(vm, &vmx_pages_gva); - vcpu_args_set(vm, vcpu->id, 1, vmx_pages_gva); + vcpu_args_set(vcpu, 1, vmx_pages_gva); =20 for (;;) { volatile struct kvm_run *run =3D vcpu->run; struct ucall uc; =20 - vcpu_run(vm, vcpu->id); + vcpu_run(vcpu); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Got exit_reason other than KVM_EXIT_IO: %u (%s)\n", run->exit_reason, @@ -72,7 +72,7 @@ int main(int argc, char *argv[]) if (run->io.port =3D=3D PORT_L0_EXIT) break; =20 - switch (get_ucall(vm, vcpu->id, &uc)) { + switch (get_ucall(vcpu, &uc)) { case UCALL_ABORT: TEST_FAIL("%s", (const char *)uc.args[0]); /* NOT REACHED */ diff --git a/tools/testing/selftests/kvm/x86_64/vmx_dirty_log_test.c b/tool= s/testing/selftests/kvm/x86_64/vmx_dirty_log_test.c index fb8c7f7236f7..215ffa0589d4 100644 --- a/tools/testing/selftests/kvm/x86_64/vmx_dirty_log_test.c +++ b/tools/testing/selftests/kvm/x86_64/vmx_dirty_log_test.c @@ -82,7 +82,7 @@ int main(int argc, char *argv[]) /* Create VM */ vm =3D vm_create_with_one_vcpu(&vcpu, l1_guest_code); vmx =3D vcpu_alloc_vmx(vm, &vmx_pages_gva); - vcpu_args_set(vm, vcpu->id, 1, vmx_pages_gva); + vcpu_args_set(vcpu, 1, vmx_pages_gva); run =3D vcpu->run; =20 /* Add an extra memory slot for testing dirty logging */ @@ -115,13 +115,13 @@ int main(int argc, char *argv[]) =20 while (!done) { memset(host_test_mem, 0xaa, TEST_MEM_PAGES * 4096); - vcpu_run(vm, vcpu->id); + vcpu_run(vcpu); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Unexpected exit reason: %u (%s),\n", run->exit_reason, exit_reason_str(run->exit_reason)); =20 - switch (get_ucall(vm, vcpu->id, &uc)) { + switch (get_ucall(vcpu, &uc)) { case UCALL_ABORT: TEST_FAIL("%s at %s:%ld", (const char *)uc.args[0], __FILE__, uc.args[1]); diff --git a/tools/testing/selftests/kvm/x86_64/vmx_exception_with_invalid_= guest_state.c b/tools/testing/selftests/kvm/x86_64/vmx_exception_with_inval= id_guest_state.c index 70b30583e50d..5bc2cee0d613 100644 --- a/tools/testing/selftests/kvm/x86_64/vmx_exception_with_invalid_guest_s= tate.c +++ b/tools/testing/selftests/kvm/x86_64/vmx_exception_with_invalid_guest_s= tate.c @@ -24,7 +24,7 @@ static void __run_vcpu_with_invalid_state(struct kvm_vcpu= *vcpu) { struct kvm_run *run =3D vcpu->run; =20 - vcpu_run(vcpu->vm, vcpu->id); + vcpu_run(vcpu); =20 TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_INTERNAL_ERROR, "Expected KVM_EXIT_INTERNAL_ERROR, got %d (%s)\n", @@ -60,9 +60,9 @@ static void set_or_clear_invalid_guest_state(struct kvm_v= cpu *vcpu, bool set) static struct kvm_sregs sregs; =20 if (!sregs.cr0) - vcpu_sregs_get(vcpu->vm, vcpu->id, &sregs); + vcpu_sregs_get(vcpu, &sregs); sregs.tr.unusable =3D !!set; - vcpu_sregs_set(vcpu->vm, vcpu->id, &sregs); + vcpu_sregs_set(vcpu, &sregs); } =20 static void set_invalid_guest_state(struct kvm_vcpu *vcpu) @@ -91,7 +91,7 @@ static void sigalrm_handler(int sig) =20 TEST_ASSERT(sig =3D=3D SIGALRM, "Unexpected signal =3D %d", sig); =20 - vcpu_events_get(vcpu->vm, vcpu->id, &events); + vcpu_events_get(vcpu, &events); =20 /* * If an exception is pending, attempt KVM_RUN with invalid guest, @@ -120,7 +120,7 @@ int main(int argc, char *argv[]) get_set_sigalrm_vcpu(vcpu); =20 vm_init_descriptor_tables(vm); - vcpu_init_descriptor_tables(vm, vcpu->id); + vcpu_init_descriptor_tables(vcpu); =20 vm_install_exception_handler(vm, UD_VECTOR, guest_ud_handler); =20 diff --git a/tools/testing/selftests/kvm/x86_64/vmx_invalid_nested_guest_st= ate.c b/tools/testing/selftests/kvm/x86_64/vmx_invalid_nested_guest_state.c index ba534be498f9..683f4f0a1616 100644 --- a/tools/testing/selftests/kvm/x86_64/vmx_invalid_nested_guest_state.c +++ b/tools/testing/selftests/kvm/x86_64/vmx_invalid_nested_guest_state.c @@ -64,9 +64,9 @@ int main(int argc, char *argv[]) =20 /* Allocate VMX pages and shared descriptors (vmx_pages). */ vcpu_alloc_vmx(vm, &vmx_pages_gva); - vcpu_args_set(vm, vcpu->id, 1, vmx_pages_gva); + vcpu_args_set(vcpu, 1, vmx_pages_gva); =20 - vcpu_run(vm, vcpu->id); + vcpu_run(vcpu); =20 run =3D vcpu->run; =20 @@ -88,13 +88,13 @@ int main(int argc, char *argv[]) * emulating invalid guest state for L2. */ memset(&sregs, 0, sizeof(sregs)); - vcpu_sregs_get(vm, vcpu->id, &sregs); + vcpu_sregs_get(vcpu, &sregs); sregs.tr.unusable =3D 1; - vcpu_sregs_set(vm, vcpu->id, &sregs); + vcpu_sregs_set(vcpu, &sregs); =20 - vcpu_run(vm, vcpu->id); + vcpu_run(vcpu); =20 - switch (get_ucall(vm, vcpu->id, &uc)) { + switch (get_ucall(vcpu, &uc)) { case UCALL_DONE: break; case UCALL_ABORT: diff --git a/tools/testing/selftests/kvm/x86_64/vmx_nested_tsc_scaling_test= .c b/tools/testing/selftests/kvm/x86_64/vmx_nested_tsc_scaling_test.c index c9cb29f06244..647a4320d3bc 100644 --- a/tools/testing/selftests/kvm/x86_64/vmx_nested_tsc_scaling_test.c +++ b/tools/testing/selftests/kvm/x86_64/vmx_nested_tsc_scaling_test.c @@ -182,26 +182,25 @@ int main(int argc, char *argv[]) =20 vm =3D vm_create_with_one_vcpu(&vcpu, l1_guest_code); vcpu_alloc_vmx(vm, &vmx_pages_gva); - vcpu_args_set(vm, vcpu->id, 1, vmx_pages_gva); + vcpu_args_set(vcpu, 1, vmx_pages_gva); =20 - tsc_khz =3D __vcpu_ioctl(vm, vcpu->id, KVM_GET_TSC_KHZ, NULL); + tsc_khz =3D __vcpu_ioctl(vcpu, KVM_GET_TSC_KHZ, NULL); TEST_ASSERT(tsc_khz !=3D -1, "vcpu ioctl KVM_GET_TSC_KHZ failed"); =20 /* scale down L1's TSC frequency */ - vcpu_ioctl(vm, vcpu->id, KVM_SET_TSC_KHZ, - (void *) (tsc_khz / l1_scale_factor)); + vcpu_ioctl(vcpu, KVM_SET_TSC_KHZ, (void *) (tsc_khz / l1_scale_factor)); =20 for (;;) { volatile struct kvm_run *run =3D vcpu->run; struct ucall uc; =20 - vcpu_run(vm, vcpu->id); + vcpu_run(vcpu); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Got exit_reason other than KVM_EXIT_IO: %u (%s)\n", run->exit_reason, exit_reason_str(run->exit_reason)); =20 - switch (get_ucall(vm, vcpu->id, &uc)) { + switch (get_ucall(vcpu, &uc)) { case UCALL_ABORT: TEST_FAIL("%s", (const char *) uc.args[0]); case UCALL_SYNC: diff --git a/tools/testing/selftests/kvm/x86_64/vmx_pmu_msrs_test.c b/tools= /testing/selftests/kvm/x86_64/vmx_pmu_msrs_test.c index 7bb81b7a4825..8a2695975a63 100644 --- a/tools/testing/selftests/kvm/x86_64/vmx_pmu_msrs_test.c +++ b/tools/testing/selftests/kvm/x86_64/vmx_pmu_msrs_test.c @@ -88,25 +88,25 @@ int main(int argc, char *argv[]) } =20 /* testcase 1, set capabilities when we have PDCM bit */ - vcpu_set_cpuid(vm, vcpu->id, cpuid); - vcpu_set_msr(vm, vcpu->id, MSR_IA32_PERF_CAPABILITIES, PMU_CAP_FW_WRITES); + vcpu_set_cpuid(vcpu, cpuid); + vcpu_set_msr(vcpu, MSR_IA32_PERF_CAPABILITIES, PMU_CAP_FW_WRITES); =20 /* check capabilities can be retrieved with KVM_GET_MSR */ - ASSERT_EQ(vcpu_get_msr(vm, vcpu->id, MSR_IA32_PERF_CAPABILITIES), PMU_CAP= _FW_WRITES); + ASSERT_EQ(vcpu_get_msr(vcpu, MSR_IA32_PERF_CAPABILITIES), PMU_CAP_FW_WRIT= ES); =20 /* check whatever we write with KVM_SET_MSR is _not_ modified */ - vcpu_run(vm, vcpu->id); - ASSERT_EQ(vcpu_get_msr(vm, vcpu->id, MSR_IA32_PERF_CAPABILITIES), PMU_CAP= _FW_WRITES); + vcpu_run(vcpu); + ASSERT_EQ(vcpu_get_msr(vcpu, MSR_IA32_PERF_CAPABILITIES), PMU_CAP_FW_WRIT= ES); =20 /* testcase 2, check valid LBR formats are accepted */ - vcpu_set_msr(vm, vcpu->id, MSR_IA32_PERF_CAPABILITIES, 0); - ASSERT_EQ(vcpu_get_msr(vm, vcpu->id, MSR_IA32_PERF_CAPABILITIES), 0); + vcpu_set_msr(vcpu, MSR_IA32_PERF_CAPABILITIES, 0); + ASSERT_EQ(vcpu_get_msr(vcpu, MSR_IA32_PERF_CAPABILITIES), 0); =20 - vcpu_set_msr(vm, vcpu->id, MSR_IA32_PERF_CAPABILITIES, host_cap.lbr_forma= t); - ASSERT_EQ(vcpu_get_msr(vm, vcpu->id, MSR_IA32_PERF_CAPABILITIES), (u64)ho= st_cap.lbr_format); + 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.l= br_format); =20 /* testcase 3, check invalid LBR format is rejected */ - ret =3D _vcpu_set_msr(vm, vcpu->id, MSR_IA32_PERF_CAPABILITIES, PMU_CAP_L= BR_FMT); + ret =3D _vcpu_set_msr(vcpu, MSR_IA32_PERF_CAPABILITIES, PMU_CAP_LBR_FMT); TEST_ASSERT(ret =3D=3D 0, "Bad PERF_CAPABILITIES didn't fail."); =20 kvm_vm_free(vm); diff --git a/tools/testing/selftests/kvm/x86_64/vmx_preemption_timer_test.c= b/tools/testing/selftests/kvm/x86_64/vmx_preemption_timer_test.c index 168adc5b2272..b775a11ec08b 100644 --- a/tools/testing/selftests/kvm/x86_64/vmx_preemption_timer_test.c +++ b/tools/testing/selftests/kvm/x86_64/vmx_preemption_timer_test.c @@ -178,19 +178,19 @@ int main(int argc, char *argv[]) vm =3D vm_create_with_one_vcpu(&vcpu, guest_code); run =3D vcpu->run; =20 - vcpu_regs_get(vm, vcpu->id, ®s1); + vcpu_regs_get(vcpu, ®s1); =20 vcpu_alloc_vmx(vm, &vmx_pages_gva); - vcpu_args_set(vm, vcpu->id, 1, vmx_pages_gva); + vcpu_args_set(vcpu, 1, vmx_pages_gva); =20 for (stage =3D 1;; stage++) { - vcpu_run(vm, vcpu->id); + vcpu_run(vcpu); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Stage %d: unexpected exit reason: %u (%s),\n", stage, run->exit_reason, exit_reason_str(run->exit_reason)); =20 - switch (get_ucall(vm, vcpu->id, &uc)) { + switch (get_ucall(vcpu, &uc)) { case UCALL_ABORT: TEST_FAIL("%s at %s:%ld", (const char *)uc.args[0], __FILE__, uc.args[1]); @@ -232,22 +232,22 @@ int main(int argc, char *argv[]) stage, uc.args[4], uc.args[5]); } =20 - state =3D vcpu_save_state(vm, vcpu->id); + state =3D vcpu_save_state(vcpu); memset(®s1, 0, sizeof(regs1)); - vcpu_regs_get(vm, vcpu->id, ®s1); + vcpu_regs_get(vcpu, ®s1); =20 kvm_vm_release(vm); =20 /* Restore state in a new VM. */ vcpu =3D vm_recreate_with_one_vcpu(vm); =20 - vcpu_set_cpuid(vm, vcpu->id, kvm_get_supported_cpuid()); - vcpu_load_state(vm, vcpu->id, state); + vcpu_set_cpuid(vcpu, kvm_get_supported_cpuid()); + vcpu_load_state(vcpu, state); run =3D vcpu->run; kvm_x86_state_cleanup(state); =20 memset(®s2, 0, sizeof(regs2)); - vcpu_regs_get(vm, vcpu->id, ®s2); + vcpu_regs_get(vcpu, ®s2); TEST_ASSERT(!memcmp(®s1, ®s2, sizeof(regs2)), "Unexpected register values after vcpu_load_state; rdi: %lx rsi: %l= x", (ulong) regs2.rdi, (ulong) regs2.rsi); diff --git a/tools/testing/selftests/kvm/x86_64/vmx_set_nested_state_test.c= b/tools/testing/selftests/kvm/x86_64/vmx_set_nested_state_test.c index de38f0e68153..ba783ceb007f 100644 --- a/tools/testing/selftests/kvm/x86_64/vmx_set_nested_state_test.c +++ b/tools/testing/selftests/kvm/x86_64/vmx_set_nested_state_test.c @@ -28,7 +28,7 @@ bool have_evmcs; =20 void test_nested_state(struct kvm_vcpu *vcpu, struct kvm_nested_state *sta= te) { - vcpu_nested_state_set(vcpu->vm, vcpu->id, state); + vcpu_nested_state_set(vcpu, state); } =20 void test_nested_state_expect_errno(struct kvm_vcpu *vcpu, @@ -37,7 +37,7 @@ void test_nested_state_expect_errno(struct kvm_vcpu *vcpu, { int rv; =20 - rv =3D __vcpu_nested_state_set(vcpu->vm, vcpu->id, state); + rv =3D __vcpu_nested_state_set(vcpu, state); TEST_ASSERT(rv =3D=3D -1 && errno =3D=3D expected_errno, "Expected %s (%d) from vcpu_nested_state_set but got rv: %i errno: %s (%= d)", strerror(expected_errno), expected_errno, rv, strerror(errno), @@ -121,7 +121,7 @@ void test_vmx_nested_state(struct kvm_vcpu *vcpu) test_nested_state(vcpu, state); =20 /* Enable VMX in the guest CPUID. */ - vcpu_set_cpuid(vcpu->vm, vcpu->id, kvm_get_supported_cpuid()); + vcpu_set_cpuid(vcpu, kvm_get_supported_cpuid()); =20 /* * Setting vmxon_pa =3D=3D -1ull and vmcs_pa =3D=3D -1ull exits early wit= hout @@ -137,7 +137,7 @@ void test_vmx_nested_state(struct kvm_vcpu *vcpu) state->flags &=3D KVM_STATE_NESTED_EVMCS; if (have_evmcs) { test_nested_state_expect_einval(vcpu, state); - vcpu_enable_evmcs(vcpu->vm, vcpu->id); + vcpu_enable_evmcs(vcpu); } test_nested_state(vcpu, state); =20 @@ -233,7 +233,7 @@ void test_vmx_nested_state(struct kvm_vcpu *vcpu) state->hdr.vmx.vmcs12_pa =3D -1ull; state->flags =3D 0; test_nested_state(vcpu, state); - vcpu_nested_state_get(vcpu->vm, vcpu->id, state); + vcpu_nested_state_get(vcpu, state); TEST_ASSERT(state->size >=3D sizeof(*state) && state->size <=3D state_sz, "Size must be between %ld and %d. The size returned was %d.", sizeof(*state), state_sz, state->size); @@ -255,7 +255,7 @@ void disable_vmx(struct kvm_vcpu *vcpu) TEST_ASSERT(i !=3D cpuid->nent, "CPUID function 1 not found"); =20 cpuid->entries[i].ecx &=3D ~CPUID_VMX; - vcpu_set_cpuid(vcpu->vm, vcpu->id, cpuid); + vcpu_set_cpuid(vcpu, cpuid); cpuid->entries[i].ecx |=3D CPUID_VMX; } =20 diff --git a/tools/testing/selftests/kvm/x86_64/vmx_tsc_adjust_test.c b/too= ls/testing/selftests/kvm/x86_64/vmx_tsc_adjust_test.c index d5ce21d3c513..ffe68fedd076 100644 --- a/tools/testing/selftests/kvm/x86_64/vmx_tsc_adjust_test.c +++ b/tools/testing/selftests/kvm/x86_64/vmx_tsc_adjust_test.c @@ -135,19 +135,19 @@ int main(int argc, char *argv[]) =20 /* Allocate VMX pages and shared descriptors (vmx_pages). */ vcpu_alloc_vmx(vm, &vmx_pages_gva); - vcpu_args_set(vm, vcpu->id, 1, vmx_pages_gva); + vcpu_args_set(vcpu, 1, vmx_pages_gva); =20 for (;;) { volatile struct kvm_run *run =3D vcpu->run; struct ucall uc; =20 - vcpu_run(vm, vcpu->id); + vcpu_run(vcpu); TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Got exit_reason other than KVM_EXIT_IO: %u (%s)\n", run->exit_reason, exit_reason_str(run->exit_reason)); =20 - switch (get_ucall(vm, vcpu->id, &uc)) { + switch (get_ucall(vcpu, &uc)) { case UCALL_ABORT: TEST_FAIL("%s", (const char *)uc.args[0]); /* NOT REACHED */ diff --git a/tools/testing/selftests/kvm/x86_64/xapic_ipi_test.c b/tools/te= sting/selftests/kvm/x86_64/xapic_ipi_test.c index 4484ee563b18..3d272d7f961e 100644 --- a/tools/testing/selftests/kvm/x86_64/xapic_ipi_test.c +++ b/tools/testing/selftests/kvm/x86_64/xapic_ipi_test.c @@ -206,14 +206,14 @@ static void *vcpu_thread(void *arg) vcpu->id, r); =20 fprintf(stderr, "vCPU thread running vCPU %u\n", vcpu->id); - vcpu_run(vcpu->vm, vcpu->id); + vcpu_run(vcpu); exit_reason =3D vcpu->run->exit_reason; =20 TEST_ASSERT(exit_reason =3D=3D KVM_EXIT_IO, "vCPU %u exited with unexpected exit reason %u-%s, expected KVM_EXIT= _IO", vcpu->id, exit_reason, exit_reason_str(exit_reason)); =20 - if (get_ucall(vcpu->vm, vcpu->id, &uc) =3D=3D UCALL_ABORT) { + if (get_ucall(vcpu, &uc) =3D=3D UCALL_ABORT) { TEST_ASSERT(false, "vCPU %u exited with error: %s.\n" "Sending vCPU sent %lu IPIs to halting vCPU\n" @@ -415,7 +415,7 @@ int main(int argc, char *argv[]) vm =3D vm_create_with_one_vcpu(¶ms[0].vcpu, halter_guest_code); =20 vm_init_descriptor_tables(vm); - vcpu_init_descriptor_tables(vm, params[0].vcpu->id); + vcpu_init_descriptor_tables(params[0].vcpu); vm_install_exception_handler(vm, IPI_VECTOR, guest_ipi_handler); =20 virt_pg_map(vm, APIC_DEFAULT_GPA, APIC_DEFAULT_GPA); @@ -428,8 +428,8 @@ int main(int argc, char *argv[]) params[0].data =3D data; params[1].data =3D data; =20 - vcpu_args_set(vm, params[0].vcpu->id, 1, test_data_page_vaddr); - vcpu_args_set(vm, params[1].vcpu->id, 1, test_data_page_vaddr); + vcpu_args_set(params[0].vcpu, 1, test_data_page_vaddr); + vcpu_args_set(params[1].vcpu, 1, test_data_page_vaddr); =20 pipis_rcvd =3D (uint64_t *)addr_gva2hva(vm, (uint64_t)&ipis_rcvd); params[0].pipis_rcvd =3D pipis_rcvd; diff --git a/tools/testing/selftests/kvm/x86_64/xen_shinfo_test.c b/tools/t= esting/selftests/kvm/x86_64/xen_shinfo_test.c index 228b61630c0f..b4642064a8a4 100644 --- a/tools/testing/selftests/kvm/x86_64/xen_shinfo_test.c +++ b/tools/testing/selftests/kvm/x86_64/xen_shinfo_test.c @@ -258,13 +258,13 @@ int main(int argc, char *argv[]) .type =3D KVM_XEN_VCPU_ATTR_TYPE_VCPU_INFO, .u.gpa =3D VCPU_INFO_ADDR, }; - vcpu_ioctl(vm, vcpu->id, KVM_XEN_VCPU_SET_ATTR, &vi); + vcpu_ioctl(vcpu, KVM_XEN_VCPU_SET_ATTR, &vi); =20 struct kvm_xen_vcpu_attr pvclock =3D { .type =3D KVM_XEN_VCPU_ATTR_TYPE_VCPU_TIME_INFO, .u.gpa =3D PVTIME_ADDR, }; - vcpu_ioctl(vm, vcpu->id, KVM_XEN_VCPU_SET_ATTR, &pvclock); + vcpu_ioctl(vcpu, KVM_XEN_VCPU_SET_ATTR, &pvclock); =20 struct kvm_xen_hvm_attr vec =3D { .type =3D KVM_XEN_ATTR_TYPE_UPCALL_VECTOR, @@ -273,7 +273,7 @@ int main(int argc, char *argv[]) vm_ioctl(vm, KVM_XEN_HVM_SET_ATTR, &vec); =20 vm_init_descriptor_tables(vm); - vcpu_init_descriptor_tables(vm, vcpu->id); + vcpu_init_descriptor_tables(vcpu); vm_install_exception_handler(vm, EVTCHN_VECTOR, evtchn_handler); =20 if (do_runstate_tests) { @@ -281,7 +281,7 @@ int main(int argc, char *argv[]) .type =3D KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_ADDR, .u.gpa =3D RUNSTATE_ADDR, }; - vcpu_ioctl(vm, vcpu->id, KVM_XEN_VCPU_SET_ATTR, &st); + vcpu_ioctl(vcpu, KVM_XEN_VCPU_SET_ATTR, &st); } =20 int irq_fd[2] =3D { -1, -1 }; @@ -339,14 +339,14 @@ int main(int argc, char *argv[]) volatile struct kvm_run *run =3D vcpu->run; struct ucall uc; =20 - vcpu_run(vm, vcpu->id); + vcpu_run(vcpu); =20 TEST_ASSERT(run->exit_reason =3D=3D KVM_EXIT_IO, "Got exit_reason other than KVM_EXIT_IO: %u (%s)\n", run->exit_reason, exit_reason_str(run->exit_reason)); =20 - switch (get_ucall(vm, vcpu->id, &uc)) { + switch (get_ucall(vcpu, &uc)) { case UCALL_ABORT: TEST_FAIL("%s", (const char *)uc.args[0]); /* NOT REACHED */ @@ -375,7 +375,7 @@ int main(int argc, char *argv[]) printf("Testing runstate %s\n", runstate_names[uc.args[1]]); rst.type =3D KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_CURRENT; rst.u.runstate.state =3D uc.args[1]; - vcpu_ioctl(vm, vcpu->id, KVM_XEN_VCPU_SET_ATTR, &rst); + vcpu_ioctl(vcpu, KVM_XEN_VCPU_SET_ATTR, &rst); break; =20 case 4: @@ -390,7 +390,7 @@ int main(int argc, char *argv[]) 0x6b6b - rs->time[RUNSTATE_offline]; rst.u.runstate.time_runnable =3D -rst.u.runstate.time_blocked - rst.u.runstate.time_offline; - vcpu_ioctl(vm, vcpu->id, KVM_XEN_VCPU_SET_ATTR, &rst); + vcpu_ioctl(vcpu, KVM_XEN_VCPU_SET_ATTR, &rst); break; =20 case 5: @@ -402,7 +402,7 @@ int main(int argc, char *argv[]) rst.u.runstate.state_entry_time =3D 0x6b6b + 0x5a; rst.u.runstate.time_blocked =3D 0x6b6b; rst.u.runstate.time_offline =3D 0x5a; - vcpu_ioctl(vm, vcpu->id, KVM_XEN_VCPU_SET_ATTR, &rst); + vcpu_ioctl(vcpu, KVM_XEN_VCPU_SET_ATTR, &rst); break; =20 case 6: @@ -509,7 +509,7 @@ int main(int argc, char *argv[]) struct kvm_xen_vcpu_attr rst =3D { .type =3D KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_DATA, }; - vcpu_ioctl(vm, vcpu->id, KVM_XEN_VCPU_GET_ATTR, &rst); + vcpu_ioctl(vcpu, KVM_XEN_VCPU_GET_ATTR, &rst); =20 if (verbose) { printf("Runstate: %s(%d), entry %" PRIu64 " ns\n", diff --git a/tools/testing/selftests/kvm/x86_64/xen_vmcall_test.c b/tools/t= esting/selftests/kvm/x86_64/xen_vmcall_test.c index 6badb0c8b2f7..faecfa1ca8a5 100644 --- a/tools/testing/selftests/kvm/x86_64/xen_vmcall_test.c +++ b/tools/testing/selftests/kvm/x86_64/xen_vmcall_test.c @@ -91,7 +91,7 @@ int main(int argc, char *argv[]) } =20 vm =3D vm_create_with_one_vcpu(&vcpu, guest_code); - vcpu_set_hv_cpuid(vm, vcpu->id); + vcpu_set_hv_cpuid(vcpu); =20 struct kvm_xen_hvm_config hvmc =3D { .flags =3D KVM_XEN_HVM_CONFIG_INTERCEPT_HCALL, @@ -108,7 +108,7 @@ int main(int argc, char *argv[]) volatile struct kvm_run *run =3D vcpu->run; struct ucall uc; =20 - vcpu_run(vm, vcpu->id); + vcpu_run(vcpu); =20 if (run->exit_reason =3D=3D KVM_EXIT_XEN) { ASSERT_EQ(run->xen.type, KVM_EXIT_XEN_HCALL); @@ -130,7 +130,7 @@ int main(int argc, char *argv[]) run->exit_reason, exit_reason_str(run->exit_reason)); =20 - switch (get_ucall(vm, vcpu->id, &uc)) { + switch (get_ucall(vcpu, &uc)) { case UCALL_ABORT: TEST_FAIL("%s", (const char *)uc.args[0]); /* NOT REACHED */ diff --git a/tools/testing/selftests/kvm/x86_64/xss_msr_test.c b/tools/test= ing/selftests/kvm/x86_64/xss_msr_test.c index c5672d2949db..d5cdd09b7f96 100644 --- a/tools/testing/selftests/kvm/x86_64/xss_msr_test.c +++ b/tools/testing/selftests/kvm/x86_64/xss_msr_test.c @@ -55,11 +55,11 @@ int main(int argc, char *argv[]) exit(KSFT_SKIP); } =20 - xss_val =3D vcpu_get_msr(vm, vcpu->id, MSR_IA32_XSS); + xss_val =3D vcpu_get_msr(vcpu, MSR_IA32_XSS); TEST_ASSERT(xss_val =3D=3D 0, "MSR_IA32_XSS should be initialized to zero\n"); =20 - vcpu_set_msr(vm, vcpu->id, MSR_IA32_XSS, xss_val); + vcpu_set_msr(vcpu, MSR_IA32_XSS, xss_val); /* * At present, KVM only supports a guest IA32_XSS value of 0. Verify * that trying to set the guest IA32_XSS to an unsupported value fails. @@ -67,7 +67,7 @@ int main(int argc, char *argv[]) * IA32_XSS is in the KVM_GET_MSR_INDEX_LIST. */ for (i =3D 0; i < MSR_BITS; ++i) { - r =3D _vcpu_set_msr(vm, vcpu->id, MSR_IA32_XSS, 1ull << i); + r =3D _vcpu_set_msr(vcpu, MSR_IA32_XSS, 1ull << i); TEST_ASSERT(r =3D=3D 0 || is_supported_msr(MSR_IA32_XSS), "IA32_XSS was able to be set, but was not found in KVM_GET_MSR_INDE= X_LIST.\n"); } --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 511DBC433EF for ; Fri, 11 Mar 2022 06:00:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346944AbiCKGBv (ORCPT ); Fri, 11 Mar 2022 01:01:51 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34710 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346681AbiCKFzN (ORCPT ); Fri, 11 Mar 2022 00:55:13 -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 71C1F10612C for ; Thu, 10 Mar 2022 21:53:59 -0800 (PST) Received: by mail-pj1-x1049.google.com with SMTP id lp2-20020a17090b4a8200b001bc449ecbceso7263839pjb.8 for ; Thu, 10 Mar 2022 21:53:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=d9N99i+QpGyC5SnNdmZZfNM/fJE6Xn0g3WkRGRvLwsU=; b=fAZNZTYGrO/Fa9d2l/9Sp9pVcLj/TuKJyynO9X3/NCGgO22NaY4AMXfgeab3qhvbzA Nzj9fsDnDT/XJooHuuqneqw7zDGzuNZNj5IGn/coVzuoOYNfNnRFKGcQjImOYJvS3IUm oMikvbsPHtxITRCcxsbtzHySG8IDyDg/qRLmj+5cBqMYxNHIFJ/AOPxqzzkgM1s29Jek gb7xdNwuGOuiveye1PjGTmQDQQSIvImMjGlQ6I5edby9JLCKooSqL2CvbTf9Wc8Ots/5 tWLHNhtyIyOKbLwM5TDUojIs/qvVUgOtuaoKce8zk+tXVg20EjahbpgZU8L3JZFLIDcj tCVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=d9N99i+QpGyC5SnNdmZZfNM/fJE6Xn0g3WkRGRvLwsU=; b=bssmR1K2z4wFDOyNWxY+/qMJ/f+DQlHFISUAa3IPTWZUXUJut8jy+JBhFt2W5ksyko 9mjpIPDQw10aS9YwoOGrt9FUtdA14pWOmyhe515FZBGiRHuUQTfDIsgBFCfciZ8LI8HR QT/+A+M/KeowP1BXIr+nMPnS/AUqZQL7ItcRreIofrRzjH8tMTPo7ho719NB3ALlItIj INMIMRa/+z5Km0G0cbxtjZdhGv0yMrqK7mYzQDANpgqGIhkGtH+G//aPKFnWPGYscqyQ 9wmcpYQapwsQKqPg6I1XX7JEGsxWNk7P+a40/UzKk8gbuLknwzMZ72JUF6FzOoxZLxCa UKww== X-Gm-Message-State: AOAM531MXXCKWUp8ROinY31nmkoUHSOWQFMyMRc43f/wOgOYfi51MubB aLt75yZWtGWS0+vhFq5cYU7DVSFmLo4vJXWileZt739iC2qcYMqgh3nzOy66zw1XU/NIdmPF8cw x4B5dK1Cbk2gKSQtJeWH903mlcVJ68PWeZXvqM7Aj6hMbkuZWOIpckxiv5sRIxiswIH5Cbw== X-Google-Smtp-Source: ABdhPJxeU4vxUmktStnJAKuNMGxU0n1Gn6A68XktF4tGG8J66xIl2Du8JtFIo3xZRJB0g2GXuiyXtRln2wo= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a63:28d:0:b0:365:8e16:5c19 with SMTP id 135-20020a63028d000000b003658e165c19mr7174704pgc.579.1646978038904; Thu, 10 Mar 2022 21:53:58 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:54 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-104-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 103/105] KVM: selftests: Drop vcpu_get(), rename vcpu_find() => vcpu_exists() From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/include/kvm_util_base.h | 2 -- tools/testing/selftests/kvm/lib/kvm_util.c | 34 +++++++------------ 2 files changed, 13 insertions(+), 23 deletions(-) diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/te= sting/selftests/kvm/include/kvm_util_base.h index c0873a5ca3c3..6d46261432cb 100644 --- a/tools/testing/selftests/kvm/include/kvm_util_base.h +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h @@ -93,8 +93,6 @@ struct kvm_vm { continue; \ else =20 -struct kvm_vcpu *vcpu_get(struct kvm_vm *vm, uint32_t vcpu_id); - struct userspace_mem_region * memslot2region(struct kvm_vm *vm, uint32_t memslot); =20 diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index b6faffcdcf39..b86c8b0883ad 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -475,26 +475,6 @@ kvm_userspace_memory_region_find(struct kvm_vm *vm, ui= nt64_t start, return ®ion->region; } =20 -static struct kvm_vcpu *vcpu_find(struct kvm_vm *vm, uint32_t vcpu_id) -{ - struct kvm_vcpu *vcpu; - - list_for_each_entry(vcpu, &vm->vcpus, list) { - if (vcpu->id =3D=3D vcpu_id) - return vcpu; - } - - return NULL; -} - -struct kvm_vcpu *vcpu_get(struct kvm_vm *vm, uint32_t vcpu_id) -{ - struct kvm_vcpu *vcpu =3D vcpu_find(vm, vcpu_id); - - TEST_ASSERT(vcpu, "vCPU %d does not exist", vcpu_id); - return vcpu; -} - /* * VM VCPU Remove * @@ -1044,6 +1024,18 @@ static int vcpu_mmap_sz(void) return ret; } =20 +static bool vcpu_exists(struct kvm_vm *vm, uint32_t vcpu_id) +{ + struct kvm_vcpu *vcpu; + + list_for_each_entry(vcpu, &vm->vcpus, list) { + if (vcpu->id =3D=3D vcpu_id) + return true; + } + + return false; +} + /* * Adds a virtual CPU to the VM specified by vm with the ID given by vcpu_= id. * No additional vCPU setup is done. Returns the vCPU. @@ -1053,7 +1045,7 @@ struct kvm_vcpu *__vm_vcpu_add(struct kvm_vm *vm, uin= t32_t vcpu_id) struct kvm_vcpu *vcpu; =20 /* Confirm a vcpu with the specified id doesn't already exist. */ - TEST_ASSERT(!vcpu_find(vm, vcpu_id), "vCPU%d already exists\n", vcpu_id); + TEST_ASSERT(!vcpu_exists(vm, vcpu_id), "vCPU%d already exists\n", vcpu_id= ); =20 /* Allocate and initialize new vcpu structure. */ vcpu =3D calloc(1, sizeof(*vcpu)); --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 BDD5EC433EF for ; Fri, 11 Mar 2022 06:01:06 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241769AbiCKGCG (ORCPT ); Fri, 11 Mar 2022 01:02:06 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34910 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346800AbiCKFzN (ORCPT ); Fri, 11 Mar 2022 00:55:13 -0500 Received: from mail-yw1-x1149.google.com (mail-yw1-x1149.google.com [IPv6:2607:f8b0:4864:20::1149]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 851F71066EA for ; Thu, 10 Mar 2022 21:54:01 -0800 (PST) Received: by mail-yw1-x1149.google.com with SMTP id 00721157ae682-2d11b6259adso60482517b3.19 for ; Thu, 10 Mar 2022 21:54:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=Kn/HnA5rR+b1ag9HSM3XGXZfT8rvt/Eg3GcAJHw/mwc=; b=To+kc8mPWMuTU0J3rBkWWZBpyfgOSAgRZOVDkBwlYBknya5lBPmbV5FMVCZje9xAVJ SVEgTthX6hSVrSCoCZ0R+xx2HOY3QYY4/OtR/utdM4gpBGD+sKoZX91lEePDUVFvhcsV h2rfnLo+Hf74WSVn00o/OAcUOQncgHxH5RzI2/kVV30RDOBj8kRLJ6Hdp2SGoYoZ7i7k H8OngS10d1mIye2c3BV89ILh5nMYpYTAHcJjEy7S5RGwgfENuyg5oMiulWXuba8Xj0Ly ncWiQLgiQt0WXUug5XJhaaB0QcmvkOSQoILOhIRJONx7252t7/lDzUaeH1U/m5d2qqls 0Cdg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=Kn/HnA5rR+b1ag9HSM3XGXZfT8rvt/Eg3GcAJHw/mwc=; b=8HzyvMIl+1BORmForz3+miF1lfk8t73mdPptZtD9FlwXx8qKcQsADrjOliDuj0KV+y mbEVILJT0s5hfu2reBQN7o5KCWK3BZq9YhKrNUk1QDCzcnskqbvbNsiD8p5oOXpswhBL MeIAVPGmRcDnrkT+wam8i3jQcvCEHe2Elh8alkQv3jnyrHfEOZdN2jJV543XwuBlDHL+ RDx7NLZJTSYED6CbML0UKp7Cq8i9fYa5hqujVYA9mppy/SyrA6/SUPNlF8kyLX7kY/fB 9a4XFB+dONVud4mnXzpoOAjuGGf41J9eoVW2jy+UiY/yzEPLv3ERY+PgbVJScTvYVFnZ nvVA== X-Gm-Message-State: AOAM532fz5eLq4s8WaN+Qedyu6Es703pS3yTXiw6ReKDxO17l4biCXhW GT2/Uufc9+p2b1q/rohjiqY4GtqxHJoPXhRr3ioDBwn1BlDSco6yGQASEn6/EkvU66huc7z9OJB REORXM8sx8wEH1xQ2PnftL62SLbKIP4cgNTAdklvhwOqEHYcuySEBnubDcGhUtJojpWZkyQ== X-Google-Smtp-Source: ABdhPJzb3JaM3NIYmSjttXrygqxsxgmsx+EuLMO3oY7c2t/ukX+yIJy+FFYKILEBWMwMkDkhGjyYFtEOV3k= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a0d:dbca:0:b0:2dc:f1ff:2676 with SMTP id d193-20020a0ddbca000000b002dcf1ff2676mr6971988ywe.165.1646978040602; Thu, 10 Mar 2022 21:54:00 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:55 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-105-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 104/105] KVM: selftests: Remove vcpu_state() helper From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/include/kvm_util_base.h | 1 - tools/testing/selftests/kvm/lib/kvm_util.c | 21 ++----------------- 2 files changed, 2 insertions(+), 20 deletions(-) diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/te= sting/selftests/kvm/include/kvm_util_base.h index 6d46261432cb..f6926ab277d3 100644 --- a/tools/testing/selftests/kvm/include/kvm_util_base.h +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h @@ -286,7 +286,6 @@ void *addr_gva2hva(struct kvm_vm *vm, vm_vaddr_t gva); vm_paddr_t addr_hva2gpa(struct kvm_vm *vm, void *hva); void *addr_gpa2alias(struct kvm_vm *vm, vm_paddr_t gpa); =20 -struct kvm_run *vcpu_state(struct kvm_vcpu *vcpu); void vcpu_run(struct kvm_vcpu *vcpu); int _vcpu_run(struct kvm_vcpu *vcpu); =20 diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index b86c8b0883ad..7f82c6ba2a37 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -995,19 +995,7 @@ void vm_mem_region_delete(struct kvm_vm *vm, uint32_t = slot) __vm_mem_region_delete(vm, memslot2region(vm, slot), true); } =20 -/* - * VCPU mmap Size - * - * Input Args: None - * - * Output Args: None - * - * Return: - * Size of VCPU state - * - * Returns the size of the structure pointed to by the return value - * of vcpu_state(). - */ +/* Returns the size of a vCPU's kvm_run structure. */ static int vcpu_mmap_sz(void) { int dev_fd, ret; @@ -1061,7 +1049,7 @@ struct kvm_vcpu *__vm_vcpu_add(struct kvm_vm *vm, uin= t32_t vcpu_id) vcpu_mmap_sz(), sizeof(*vcpu->run)); vcpu->run =3D (struct kvm_run *) mmap(NULL, vcpu_mmap_sz(), PROT_READ | PROT_WRITE, MAP_SHARED, vcpu->fd, 0); - TEST_ASSERT(vcpu->run !=3D MAP_FAILED, "mmap vcpu_state failed, " + TEST_ASSERT(vcpu->run !=3D MAP_FAILED, "mmap kvm_run page failed, " "vcpu id: %u errno: %i", vcpu_id, errno); =20 /* Add to linked-list of VCPUs. */ @@ -1390,11 +1378,6 @@ void vm_create_irqchip(struct kvm_vm *vm) =20 vm->has_irqchip =3D true; } -struct kvm_run *vcpu_state(struct kvm_vcpu *vcpu) -{ - return vcpu->run; -} - =20 int _vcpu_run(struct kvm_vcpu *vcpu) { --=20 2.35.1.723.g4982287a31-goog From nobody Wed Jun 24 09:55:01 2026 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 23BB4C433F5 for ; Fri, 11 Mar 2022 06:00:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346963AbiCKGB6 (ORCPT ); Fri, 11 Mar 2022 01:01:58 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35102 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346803AbiCKFzN (ORCPT ); Fri, 11 Mar 2022 00:55:13 -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 DC11F107087 for ; Thu, 10 Mar 2022 21:54:03 -0800 (PST) Received: by mail-pl1-x649.google.com with SMTP id d4-20020a170902f14400b001518350e5c7so4003729plb.13 for ; Thu, 10 Mar 2022 21:54:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=Gh9b7yGh71XESe9+XJf/ZpDDs0MzOvk/6zKTOSCjZ2o=; b=bi09KmRsZELpB1WnhRIg7A6s2byKUhPKkBYC8hIGM/0yRMW4uzG7OTg8SVx+WVlNeD m+EZTzbRrA8o1TDY0G8JVYzOiB1UdJeHtSXyOPCPwxXh7AEVWoTqDi1SaH2XvhgI6Mv1 r/ha11ToX4GOl9clpa+/9s9DT1EhKjyuGZkmfSsUeHlBs8TT+CZFFszuqmPtioW1KL0k 7G5TuJG8DuEVPtRWjTUsav+Xyu6pfsAtykIeX+9xfGav+HRRWSvc2N2ZNKa2tkG8eIOm CKcUXzlV2jvHgKh+VUyqXx5ZlVl+m3/gp5jm7qPyg686FVyX62qD80L2Kw/Bho2vQfOf yNwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=Gh9b7yGh71XESe9+XJf/ZpDDs0MzOvk/6zKTOSCjZ2o=; b=cksTQJZyDd7e3P3+UIeMRDAzUKnQwOqyb+CG1iGVCWZqejkxkl5pkwnEcxUziPYURX EamF47+vk3O647nAZSAdUhpRKSXVEOA1fJSz7rjlEOAhpaln44nKFpaZEqjfdPWzK3o8 bUMeOa8v7HA0r1pw2d9O9qwbCQaXSX2Z1JtR8GA6rAlrp4SvrkWHgw9IlRjlh6w1SuGi 8k0Nh2tOckwNrCErxmfWUmxRgirTWKSvA9fbLiNmToJFPloRR5AmImGjmRkqWp3T7p5b lThhCTHH80l2e1wIitygcO+oDW0i52CTvW9ZRFDU0eSe0pJTzBCICtAEh3Erm0wX97AP dMhg== X-Gm-Message-State: AOAM530SNCA3JgZE0oINla5SKtGp9VZoUmHw9ZZK9efRcNybb+BLM+2/ JzEf5ybYccYWAEMrczrwTpWq0mbEAQH+zlmKos1cf/hPiRpmZyRkewCjIqaL2lXMn3tYHBG/ZfY 19z1TLClICT4UPtDmYA6y604Nq2ex2wjh9NzaHb5D6wUVks4KgTrPY7B5qQflkAljGspwGg== X-Google-Smtp-Source: ABdhPJzLkGRFjJZj+AM4mYNXbt9RR5JLlYixtGiL8Y0iPuA+6ut2aG2nUoCBR5N3SAfGI9juXnyyfZPheXY= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a17:90b:4d81:b0:1bf:8ce4:4f51 with SMTP id oj1-20020a17090b4d8100b001bf8ce44f51mr461979pjb.0.1646978042280; Thu, 10 Mar 2022 21:54:02 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 11 Mar 2022 05:50:56 +0000 In-Reply-To: <20220311055056.57265-1-seanjc@google.com> Message-Id: <20220311055056.57265-106-seanjc@google.com> Mime-Version: 1.0 References: <20220311055056.57265-1-seanjc@google.com> X-Mailer: git-send-email 2.35.1.723.g4982287a31-goog Subject: [RFC PATCH 105/105] KVM: selftests: Open code and drop kvm_vm accessors From: Sean Christopherson To: linux-kernel@vger.kernel.org Cc: Sean Christopherson Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Sean Christopherson --- .../selftests/kvm/dirty_log_perf_test.c | 2 +- tools/testing/selftests/kvm/dirty_log_test.c | 9 +++---- .../selftests/kvm/include/kvm_util_base.h | 6 ----- .../selftests/kvm/kvm_page_table_test.c | 2 +- tools/testing/selftests/kvm/lib/kvm_util.c | 25 ------------------- .../selftests/kvm/lib/perf_test_util.c | 7 +++--- .../kvm/memslot_modification_stress_test.c | 2 +- .../selftests/kvm/x86_64/hyperv_cpuid.c | 2 +- 8 files changed, 11 insertions(+), 44 deletions(-) diff --git a/tools/testing/selftests/kvm/dirty_log_perf_test.c b/tools/test= ing/selftests/kvm/dirty_log_perf_test.c index 4d021f1ae479..d06c684664c3 100644 --- a/tools/testing/selftests/kvm/dirty_log_perf_test.c +++ b/tools/testing/selftests/kvm/dirty_log_perf_test.c @@ -187,7 +187,7 @@ static void run_test(enum vm_guest_mode mode, void *arg) =20 perf_test_set_wr_fract(vm, p->wr_fract); =20 - guest_num_pages =3D (nr_vcpus * guest_percpu_mem_size) >> vm_get_page_shi= ft(vm); + guest_num_pages =3D (nr_vcpus * guest_percpu_mem_size) >> vm->page_shift; guest_num_pages =3D vm_adjust_num_guest_pages(mode, guest_num_pages); host_num_pages =3D vm_num_host_pages(mode, guest_num_pages); pages_per_slot =3D host_num_pages / p->slots; diff --git a/tools/testing/selftests/kvm/dirty_log_test.c b/tools/testing/s= elftests/kvm/dirty_log_test.c index d8a5e45520fb..116c6bf0e6b1 100644 --- a/tools/testing/selftests/kvm/dirty_log_test.c +++ b/tools/testing/selftests/kvm/dirty_log_test.c @@ -719,21 +719,20 @@ static void run_test(enum vm_guest_mode mode, void *a= rg) vm =3D create_vm(mode, &vcpu, 2ul << (DIRTY_MEM_BITS - PAGE_SHIFT_4K), guest_code); =20 - guest_page_size =3D vm_get_page_size(vm); + guest_page_size =3D vm->page_size; /* * A little more than 1G of guest page sized pages. Cover the * case where the size is not aligned to 64 pages. */ - guest_num_pages =3D (1ul << (DIRTY_MEM_BITS - - vm_get_page_shift(vm))) + 3; + guest_num_pages =3D (1ul << (DIRTY_MEM_BITS - vm->page_shift)) + 3; guest_num_pages =3D vm_adjust_num_guest_pages(mode, guest_num_pages); =20 host_page_size =3D getpagesize(); host_num_pages =3D vm_num_host_pages(mode, guest_num_pages); =20 if (!p->phys_offset) { - guest_test_phys_mem =3D (vm_get_max_gfn(vm) - - guest_num_pages) * guest_page_size; + guest_test_phys_mem =3D (vm->max_gfn - guest_num_pages) * + guest_page_size; guest_test_phys_mem =3D align_down(guest_test_phys_mem, host_page_size); } else { guest_test_phys_mem =3D p->phys_offset; diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/te= sting/selftests/kvm/include/kvm_util_base.h index f6926ab277d3..2f06eecfbb78 100644 --- a/tools/testing/selftests/kvm/include/kvm_util_base.h +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h @@ -551,13 +551,7 @@ static inline struct kvm_vm *vm_create_with_one_vcpu(s= truct kvm_vcpu **vcpu, =20 struct kvm_vcpu *vm_recreate_with_one_vcpu(struct kvm_vm *vm); =20 -unsigned int vm_get_page_size(struct kvm_vm *vm); -unsigned int vm_get_page_shift(struct kvm_vm *vm); unsigned long vm_compute_max_gfn(struct kvm_vm *vm); -uint64_t vm_get_max_gfn(struct kvm_vm *vm); -int vm_get_kvm_fd(struct kvm_vm *vm); -int vm_get_fd(struct kvm_vm *vm); - unsigned int vm_calc_num_guest_pages(enum vm_guest_mode mode, size_t size); unsigned int vm_num_host_pages(enum vm_guest_mode mode, unsigned int num_g= uest_pages); unsigned int vm_num_guest_pages(enum vm_guest_mode mode, unsigned int num_= host_pages); diff --git a/tools/testing/selftests/kvm/kvm_page_table_test.c b/tools/test= ing/selftests/kvm/kvm_page_table_test.c index cb7ffe9671bc..e6acae147d44 100644 --- a/tools/testing/selftests/kvm/kvm_page_table_test.c +++ b/tools/testing/selftests/kvm/kvm_page_table_test.c @@ -260,7 +260,7 @@ static struct kvm_vm *pre_init_before_test(enum vm_gues= t_mode mode, void *arg) =20 /* Align down GPA of the testing memslot */ if (!p->phys_offset) - guest_test_phys_mem =3D (vm_get_max_gfn(vm) - guest_num_pages) * + guest_test_phys_mem =3D (vm->max_gfn - guest_num_pages) * guest_page_size; else guest_test_phys_mem =3D p->phys_offset; diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/sel= ftests/kvm/lib/kvm_util.c index 7f82c6ba2a37..a028d3705cf5 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -1814,36 +1814,11 @@ void *addr_gva2hva(struct kvm_vm *vm, vm_vaddr_t gv= a) return addr_gpa2hva(vm, addr_gva2gpa(vm, gva)); } =20 -unsigned int vm_get_page_size(struct kvm_vm *vm) -{ - return vm->page_size; -} - -unsigned int vm_get_page_shift(struct kvm_vm *vm) -{ - return vm->page_shift; -} - unsigned long __attribute__((weak)) vm_compute_max_gfn(struct kvm_vm *vm) { return ((1ULL << vm->pa_bits) >> vm->page_shift) - 1; } =20 -uint64_t vm_get_max_gfn(struct kvm_vm *vm) -{ - return vm->max_gfn; -} - -int vm_get_kvm_fd(struct kvm_vm *vm) -{ - return vm->kvm_fd; -} - -int vm_get_fd(struct kvm_vm *vm) -{ - return vm->fd; -} - static unsigned int vm_calc_num_pages(unsigned int num_pages, unsigned int page_shift, unsigned int new_page_shift, diff --git a/tools/testing/selftests/kvm/lib/perf_test_util.c b/tools/testi= ng/selftests/kvm/lib/perf_test_util.c index 7faed18f7719..f62d773eb29c 100644 --- a/tools/testing/selftests/kvm/lib/perf_test_util.c +++ b/tools/testing/selftests/kvm/lib/perf_test_util.c @@ -153,14 +153,13 @@ struct kvm_vm *perf_test_create_vm(enum vm_guest_mode= mode, int nr_vcpus, * If there should be more memory in the guest test region than there * can be pages in the guest, it will definitely cause problems. */ - TEST_ASSERT(guest_num_pages < vm_get_max_gfn(vm), + TEST_ASSERT(guest_num_pages < vm->max_gfn, "Requested more guest memory than address space allows.\n" " guest pages: %" PRIx64 " max gfn: %" PRIx64 " nr_vcpus: %d wss: %" PRIx64 "]\n", - guest_num_pages, vm_get_max_gfn(vm), nr_vcpus, - vcpu_memory_bytes); + guest_num_pages, vm->max_gfn, nr_vcpus, vcpu_memory_bytes); =20 - pta->gpa =3D (vm_get_max_gfn(vm) - guest_num_pages) * pta->guest_page_siz= e; + pta->gpa =3D (vm->max_gfn - guest_num_pages) * pta->guest_page_size; pta->gpa =3D align_down(pta->gpa, backing_src_pagesz); #ifdef __s390x__ /* Align to 1M (segment size) */ diff --git a/tools/testing/selftests/kvm/memslot_modification_stress_test.c= b/tools/testing/selftests/kvm/memslot_modification_stress_test.c index 1f9036cdcaa9..6ee7e1dde404 100644 --- a/tools/testing/selftests/kvm/memslot_modification_stress_test.c +++ b/tools/testing/selftests/kvm/memslot_modification_stress_test.c @@ -75,7 +75,7 @@ static void add_remove_memslot(struct kvm_vm *vm, usecond= s_t delay, * Add the dummy memslot just below the perf_test_util memslot, which is * at the top of the guest physical address space. */ - gpa =3D perf_test_args.gpa - pages * vm_get_page_size(vm); + gpa =3D perf_test_args.gpa - pages * vm->page_size; =20 for (i =3D 0; i < nr_modifications; i++) { usleep(delay); diff --git a/tools/testing/selftests/kvm/x86_64/hyperv_cpuid.c b/tools/test= ing/selftests/kvm/x86_64/hyperv_cpuid.c index af13c48f0f30..6df5a6356181 100644 --- a/tools/testing/selftests/kvm/x86_64/hyperv_cpuid.c +++ b/tools/testing/selftests/kvm/x86_64/hyperv_cpuid.c @@ -121,7 +121,7 @@ void test_hv_cpuid_e2big(struct kvm_vm *vm, struct kvm_= vcpu *vcpu) if (vcpu) ret =3D __vcpu_ioctl(vcpu, KVM_GET_SUPPORTED_HV_CPUID, &cpuid); else - ret =3D __kvm_ioctl(vm_get_kvm_fd(vm), KVM_GET_SUPPORTED_HV_CPUID, &cpui= d); + ret =3D __kvm_ioctl(vm->kvm_fd, KVM_GET_SUPPORTED_HV_CPUID, &cpuid); =20 TEST_ASSERT(ret =3D=3D -1 && errno =3D=3D E2BIG, "%s KVM_GET_SUPPORTED_HV_CPUID didn't fail with -E2BIG when" --=20 2.35.1.723.g4982287a31-goog