From mboxrd@z Thu Jan 1 00:00:00 1970 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 A8542C433FE for ; Wed, 4 May 2022 22:57:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1359567AbiEDXBP (ORCPT ); Wed, 4 May 2022 19:01:15 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46150 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1379623AbiEDWzh (ORCPT ); Wed, 4 May 2022 18:55:37 -0400 Received: from mail-ot1-x34a.google.com (mail-ot1-x34a.google.com [IPv6:2607:f8b0:4864:20::34a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 18ED554BFB for ; Wed, 4 May 2022 15:51:33 -0700 (PDT) Received: by mail-ot1-x34a.google.com with SMTP id q21-20020a056830233500b00605db4a91a0so979824otg.17 for ; Wed, 04 May 2022 15:51:33 -0700 (PDT) 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=KiE9VficpCeN1xBVdUN8xYll0C4HLuJFd4x1wesa6do=; b=RR06S68mHbetxo2/DFm9fevn41ldDuSZzFIqQLw3luNwdEAeyVrZbWkd4295+phqwo zuWTiWktZRYLy1NzIDnkeeQNPvRmX/dihUUNC3FybgUvKuRkBaoSDI83eMKomc2MQOrO TFVKi7CcYGQ9Oe25D7B26dz9I8/odtVhXmuNRho0rQHGz5LiB+6xmZS3+4WNsDq0tTfY ZinvBHjG2Hv4w7Wk0WSeTR4yOOrBoUyAXOF7knimUSprtXe1wtpvx3Fk00t7kqiG6o+N i6yalRzQjGKAFffYBMmVfB+7i2QC0DBm9REMmycPmq29wbOBv8u9C0jUawysWhu04qVC VdCg== 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=KiE9VficpCeN1xBVdUN8xYll0C4HLuJFd4x1wesa6do=; b=pdeos36yooRHcm2OE82qLsfZIs/YpFrC+gVgp+PsrAxZP3wSpuOapNw1OxIzhwKVY7 NDU57yy2RZBd0i0n8j78aT9FEc9E4iITgThz5Wc1faemrlBvUVK+/FY84BdO99pbz0UC sBm3zngeofRyVzjjlvLUfRtK6H1KVbQ8zDY8e+E+SfcXWz2UtOLgiVpBMd6//P2wY6lR vLLdJCVLQubdM8rr5T+HD7q8DpCTHM1LEZtg0rj3YKtduMmyMGywSSUlEBdtSGtH2c2r 3bY52QOA4a13q2wxnUX4fKQFdqSnaTvkNpamkxe/EH3FiWBkKr1k2a1T+0AOTCz6N91k FiLA== X-Gm-Message-State: AOAM5324B3HRYQ940L1MLzQM6Bvdo4GYwmM17ka8n360vTcSzQmTtBhf VuFrvZ92SO1kBUm+NV6FKnGtRruJCZQ= X-Google-Smtp-Source: ABdhPJxnrpq5WxtjmZ6u+D0kWIimk3PB8r/vORqJp7aU2tk7sgFX4X0l+1lPevztzsqswm3eWOEIXvXDCdQ= X-Received: from seanjc.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3e5]) (user=seanjc job=sendgmr) by 2002:a05:6870:32d6:b0:e3:6e1a:e56b with SMTP id r22-20020a05687032d600b000e36e1ae56bmr904389oac.206.1651704692371; Wed, 04 May 2022 15:51:32 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 4 May 2022 22:48:16 +0000 In-Reply-To: <20220504224914.1654036-1-seanjc@google.com> Message-Id: <20220504224914.1654036-71-seanjc@google.com> Mime-Version: 1.0 References: <20220504224914.1654036-1-seanjc@google.com> X-Mailer: git-send-email 2.36.0.464.gb9c8b46e94-goog Subject: [PATCH 070/128] KVM: selftests: Convert hyperv_clock away from VCPU_ID From: Sean Christopherson To: Paolo Bonzini Cc: linux-kernel@vger.kernel.org, kvm@vger.kernel.org, Vitaly Kuznetsov , Andrew Jones , David Matlack , Ben Gardon , Oliver Upton , Sean Christopherson Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Convert hyperv_clock to use vm_create_with_one_vcpu() and pass around a 'struct kvm_vcpu' object instead of using a global VCPU_ID. Opportunistically use vcpu_run() instead of _vcpu_run() with an open coded assert that KVM_RUN succeeded. 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/testing/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(); } -#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; - tsc_freq = vcpu_get_msr(vm, VCPU_ID, HV_X64_MSR_TSC_FREQUENCY); + tsc_freq = vcpu_get_msr(vcpu->vm, vcpu->id, HV_X64_MSR_TSC_FREQUENCY); TEST_ASSERT(tsc_freq > 0, "TSC frequency must be nonzero"); /* First, check MSR-based clocksource */ r1 = rdtsc(); - t1 = vcpu_get_msr(vm, VCPU_ID, HV_X64_MSR_TIME_REF_COUNT); + t1 = vcpu_get_msr(vcpu->vm, vcpu->id, HV_X64_MSR_TIME_REF_COUNT); nop_loop(); r2 = rdtsc(); - t2 = vcpu_get_msr(vm, VCPU_ID, HV_X64_MSR_TIME_REF_COUNT); + t2 = vcpu_get_msr(vcpu->vm, vcpu->id, HV_X64_MSR_TIME_REF_COUNT); TEST_ASSERT(t2 > t1, "Time reference MSR is not monotonic (%ld <= %ld)", t1, t2); @@ -203,33 +201,34 @@ static void host_check_tsc_msr_rdtsc(struct kvm_vm *vm) 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; - vm = vm_create_default(VCPU_ID, 0, guest_main); - run = vcpu_state(vm, VCPU_ID); + vm = vm_create_with_one_vcpu(&vcpu, guest_main); + run = vcpu->run; - vcpu_set_hv_cpuid(vm, VCPU_ID); + vcpu_set_hv_cpuid(vm, vcpu->id); tsc_page_gva = vm_vaddr_alloc_page(vm); memset(addr_gva2hva(vm, tsc_page_gva), 0x0, getpagesize()); TEST_ASSERT((addr_gva2gpa(vm, tsc_page_gva) & (getpagesize() - 1)) == 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_gva)); - host_check_tsc_msr_rdtsc(vm); + host_check_tsc_msr_rdtsc(vcpu); for (stage = 1;; stage++) { - _vcpu_run(vm, VCPU_ID); + vcpu_run(vm, vcpu->id); TEST_ASSERT(run->exit_reason == KVM_EXIT_IO, "Stage %d: unexpected exit reason: %u (%s),\n", stage, run->exit_reason, exit_reason_str(run->exit_reason)); - 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]); -- 2.36.0.464.gb9c8b46e94-goog