linux-2.6-microblaze.git
22 months agoKVM: SEV: fix misplaced closing parenthesis
Paolo Bonzini [Wed, 15 Jun 2022 12:03:53 +0000 (08:03 -0400)]
KVM: SEV: fix misplaced closing parenthesis

This caused a warning on 32-bit systems, but undoubtedly would have acted
funny on 64-bit as well.

The fix was applied directly on merge in 5.19, see commit 24625f7d91fb ("Merge
tag for-linus of git://git.kernel.org/pub/scm/virt/kvm/kvm").

Fixes: 3743c2f02517 ("KVM: x86: inhibit APICv/AVIC on changes to APIC ID or APIC base")
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Remove the mismatched parameter comments
Shaoqin Huang [Tue, 14 Jun 2022 22:41:19 +0000 (16:41 -0600)]
KVM: selftests: Remove the mismatched parameter comments

There are some parameter being removed in function but the parameter
comments still exist, so remove them.

Signed-off-by: Shaoqin Huang <shaoqin.huang@intel.com>
Message-Id: <20220614224126.211054-1-shaoqin.huang@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Use kvm_has_cap(), not kvm_check_cap(), where possible
Sean Christopherson [Mon, 13 Jun 2022 16:19:42 +0000 (16:19 +0000)]
KVM: selftests: Use kvm_has_cap(), not kvm_check_cap(), where possible

Replace calls to kvm_check_cap() that treat its return as a boolean with
calls to kvm_has_cap().  Several instances of kvm_check_cap() were missed
when kvm_has_cap() was introduced.

Reported-by: Andrew Jones <drjones@redhat.com>
Fixes: 3ea9b809650b ("KVM: selftests: Add kvm_has_cap() to provide syntactic sugar")
Signed-off-by: Sean Christopherson <seanjc@google.com>
Message-Id: <20220613161942.1586791-5-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Drop a duplicate TEST_ASSERT() in vm_nr_pages_required()
Sean Christopherson [Mon, 13 Jun 2022 16:19:41 +0000 (16:19 +0000)]
KVM: selftests: Drop a duplicate TEST_ASSERT() in vm_nr_pages_required()

Remove a duplicate TEST_ASSERT() on the number of runnable vCPUs in
vm_nr_pages_required() that snuck in during a rebase gone bad.

Reported-by: Andrew Jones <drjones@redhat.com>
Fixes: 6e1d13bf3815 ("KVM: selftests: Move per-VM/per-vCPU nr pages calculation to __vm_create()")
Signed-off-by: Sean Christopherson <seanjc@google.com>
Message-Id: <20220613161942.1586791-4-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Call a dummy helper in VM/vCPU ioctls() to enforce type
Sean Christopherson [Mon, 13 Jun 2022 16:19:40 +0000 (16:19 +0000)]
KVM: selftests: Call a dummy helper in VM/vCPU ioctls() to enforce type

Replace the goofy static_assert on the size of the @vm/@vcpu parameters
with a call to a dummy helper, i.e. let the compiler naturally complain
about an incompatible type instead of homebrewing a poor replacement.

Reported-by: Andrew Jones <drjones@redhat.com>
Fixes: fcba483e8246 ("KVM: selftests: Sanity check input to ioctls() at build time")
Signed-off-by: Sean Christopherson <seanjc@google.com>
Message-Id: <20220613161942.1586791-3-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Add a missing apostrophe in comment to show ownership
Sean Christopherson [Mon, 13 Jun 2022 16:19:39 +0000 (16:19 +0000)]
KVM: selftests: Add a missing apostrophe in comment to show ownership

Add an apostrophe in a comment about it being the caller's, not callers,
responsibility to free an object.

Reported-by: Andrew Jones <drjones@redhat.com>
Fixes: 768e9a61856b ("KVM: selftests: Purge vm+vcpu_id == vcpu silliness")
Signed-off-by: Sean Christopherson <seanjc@google.com>
Message-Id: <20220613161942.1586791-2-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: kvm_binary_stats_test: Fix index expressions
Andrew Jones [Tue, 14 Jun 2022 08:10:41 +0000 (10:10 +0200)]
KVM: selftests: kvm_binary_stats_test: Fix index expressions

kvm_binary_stats_test accepts two arguments, the number of vms
and number of vcpus. If these inputs are not equal then the
test would likely crash for one reason or another due to using
miscalculated indices for the vcpus array. Fix the index
expressions by swapping the use of i and j.

Signed-off-by: Andrew Jones <drjones@redhat.com>
Message-Id: <20220614081041.2571511-1-drjones@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Sanity check input to ioctls() at build time
Sean Christopherson [Wed, 1 Jun 2022 18:01:58 +0000 (11:01 -0700)]
KVM: selftests: Sanity check input to ioctls() at build time

Add a static assert to the KVM/VM/vCPU ioctl() helpers to verify that the
size of the argument provided matches the expected size of the IOCTL.
Because ioctl() ultimately takes a "void *", it's all too easy to pass in
garbage and not detect the error until runtime.  E.g. while working on a
CPUID rework, selftests happily compiled when vcpu_set_cpuid()
unintentionally passed the cpuid() function as the parameter to ioctl()
(a local "cpuid" parameter was removed, but its use was not replaced with
"vcpu->cpuid" as intended).

Tweak a variety of benign issues that aren't compatible with the sanity
check, e.g. passing a non-pointer for ioctls().

Note, static_assert() requires a string on older versions of GCC.  Feed
it an empty string to make the compiler happy.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Use TAP-friendly ksft_exit_skip() in __TEST_REQUIRE
Sean Christopherson [Fri, 10 Jun 2022 00:03:19 +0000 (17:03 -0700)]
KVM: selftests: Use TAP-friendly ksft_exit_skip() in __TEST_REQUIRE

Use the TAP-friendly ksft_exit_skip() instead of KVM's custom print_skip()
when skipping a test via __TEST_REQUIRE.  KVM's "skipping test" has no
known benefit, whereas some setups rely on TAP output.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Add TEST_REQUIRE macros to reduce skipping copy+paste
Sean Christopherson [Fri, 27 May 2022 23:24:02 +0000 (16:24 -0700)]
KVM: selftests: Add TEST_REQUIRE macros to reduce skipping copy+paste

Add TEST_REQUIRE() and __TEST_REQUIRE() to replace the myriad open coded
instances of selftests exiting with KSFT_SKIP after printing an
informational message.  In addition to reducing the amount of boilerplate
code in selftests, the UPPERCASE macro names make it easier to visually
identify a test's requirements.

Convert usage that erroneously uses something other than print_skip()
and/or "exits" with '0' or some other non-KSFT_SKIP value.

Intentionally drop a kvm_vm_free() in aarch64/debug-exceptions.c as part
of the conversion.  All memory and file descriptors are freed on process
exit, so the explicit free is superfluous.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Add kvm_has_cap() to provide syntactic sugar
Sean Christopherson [Fri, 27 May 2022 22:13:03 +0000 (15:13 -0700)]
KVM: selftests: Add kvm_has_cap() to provide syntactic sugar

Add kvm_has_cap() to wrap kvm_check_cap() and return a bool for the use
cases where the caller only wants check if a capability is supported,
i.e. doesn't care about the value beyond whether or not it's non-zero.
The "check" terminology is somewhat ambiguous as the non-boolean return
suggests that '0' might mean "success", i.e. suggests that the ioctl uses
the 0/-errno pattern.  Provide a wrapper instead of trying to find a new
name for the raw helper; the "check" terminology is derived from the name
of the ioctl, so using e.g. "get" isn't a clear win.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Return an 'unsigned int' from kvm_check_cap()
Sean Christopherson [Fri, 27 May 2022 22:09:52 +0000 (15:09 -0700)]
KVM: selftests: Return an 'unsigned int' from kvm_check_cap()

Return an 'unsigned int' instead of a signed 'int' from kvm_check_cap(),
to make it more obvious that kvm_check_cap() can never return a negative
value due to its assertion that the return is ">= 0".

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Drop DEFAULT_GUEST_PHY_PAGES, open code the magic number
Sean Christopherson [Tue, 3 May 2022 22:26:02 +0000 (15:26 -0700)]
KVM: selftests: Drop DEFAULT_GUEST_PHY_PAGES, open code the magic number

Remove DEFAULT_GUEST_PHY_PAGES and open code the magic number (with a
comment) in vm_nr_pages_required().  Exposing DEFAULT_GUEST_PHY_PAGES to
tests was a symptom of the VM creation APIs not cleanly supporting tests
that create runnable vCPUs, but can't do so immediately.  Now that tests
don't have to manually compute the amount of memory needed for basic
operation, make it harder for tests to do things that should be handled
by the framework, i.e. force developers to improve the framework instead
of hacking around flaws in individual tests.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Trust that MAXPHYADDR > memslot0 in vmx_apic_access_test
Sean Christopherson [Tue, 3 May 2022 21:48:59 +0000 (14:48 -0700)]
KVM: selftests: Trust that MAXPHYADDR > memslot0 in vmx_apic_access_test

Use vm->max_gfn to compute the highest gpa in vmx_apic_access_test, and
blindly trust that the highest gfn/gpa will be well above the memory
carved out for memslot0.  The existing check is beyond paranoid; KVM
doesn't support CPUs with host.MAXPHYADDR < 32, and the selftests are all
kinds of hosed if memslot0 overlaps the local xAPIC, which resides above
"lower" (below 4gb) DRAM.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Move per-VM/per-vCPU nr pages calculation to __vm_create()
Sean Christopherson [Tue, 3 May 2022 16:52:48 +0000 (09:52 -0700)]
KVM: selftests: Move per-VM/per-vCPU nr pages calculation to __vm_create()

Handle all memslot0 size adjustments in __vm_create().  Currently, the
adjustments reside in __vm_create_with_vcpus(), which means tests that
call vm_create() or __vm_create() directly are left to their own devices.
Some tests just pass DEFAULT_GUEST_PHY_PAGES and don't bother with any
adjustments, while others mimic the per-vCPU calculations.

For vm_create(), and thus __vm_create(), take the number of vCPUs that
will be runnable to calculate that number of per-vCPU pages needed for
memslot0.  To give readers a hint that neither vm_create() nor
__vm_create() create vCPUs, name the parameter @nr_runnable_vcpus instead
of @nr_vcpus.  That also gives readers a hint as to why tests that create
larger numbers of vCPUs but never actually run those vCPUs can skip
straight to the vm_create_barebones() variant.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Drop @num_percpu_pages from __vm_create_with_vcpus()
Sean Christopherson [Tue, 3 May 2022 00:39:47 +0000 (17:39 -0700)]
KVM: selftests: Drop @num_percpu_pages from __vm_create_with_vcpus()

Drop @num_percpu_pages from __vm_create_with_vcpus(), all callers pass
'0' and there's unlikely to be a test that allocates just enough memory
that it needs a per-CPU allocation, but not so much that it won't just do
its own memory management.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Drop @slot0_mem_pages from __vm_create_with_vcpus()
Sean Christopherson [Tue, 3 May 2022 00:25:17 +0000 (17:25 -0700)]
KVM: selftests: Drop @slot0_mem_pages from __vm_create_with_vcpus()

All callers of __vm_create_with_vcpus() pass DEFAULT_GUEST_PHY_PAGES for
@slot_mem_pages; drop the param and just hardcode the "default" as the
base number of pages for slot0.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Open code and drop 'struct kvm_vm' accessors
Sean Christopherson [Thu, 17 Feb 2022 00:51:20 +0000 (16:51 -0800)]
KVM: selftests: Open code and drop 'struct kvm_vm' accessors

Drop a variety of 'struct kvm_vm' accessors that wrap a single variable
now that tests can simply reference the variable directly.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Remove vcpu_state() helper
Sean Christopherson [Thu, 17 Feb 2022 00:48:13 +0000 (16:48 -0800)]
KVM: selftests: Remove vcpu_state() helper

Drop vcpu_state() now that all tests reference vcpu->run directly.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Drop vcpu_get(), rename vcpu_find() => vcpu_exists()
Sean Christopherson [Thu, 17 Feb 2022 00:46:46 +0000 (16:46 -0800)]
KVM: selftests: Drop vcpu_get(), rename vcpu_find() => vcpu_exists()

Drop vcpu_get() and rename vcpu_find() to vcpu_exists() to make it that
much harder for a test to give meaning to a vCPU ID.  I.e. force tests to
capture a vCPU when the vCPU is created.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Purge vm+vcpu_id == vcpu silliness
Sean Christopherson [Thu, 2 Jun 2022 20:41:33 +0000 (13:41 -0700)]
KVM: selftests: Purge vm+vcpu_id == vcpu silliness

Take a vCPU directly instead of a VM+vcpu pair in all vCPU-scoped helpers
and ioctls.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Require vCPU output array when creating VM with vCPUs
Sean Christopherson [Wed, 16 Feb 2022 21:53:23 +0000 (13:53 -0800)]
KVM: selftests: Require vCPU output array when creating VM with vCPUs

Require the caller of __vm_create_with_vcpus() to provide a non-NULL
array of vCPUs now that all callers do so.  It's extremely unlikely a
test will have a legitimate use case for creating a VM with vCPUs without
wanting to do something with those vCPUs, and if there is such a use case,
requiring that one-off test to provide a dummy array is a minor
annoyance.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Remove vcpu_get() usage from dirty_log_test
Sean Christopherson [Thu, 17 Feb 2022 00:44:34 +0000 (16:44 -0800)]
KVM: selftests: Remove vcpu_get() usage from dirty_log_test

Grab the vCPU from vm_vcpu_add() directly instead of doing vcpu_get()
after the fact.  This will allow removing vcpu_get() entirely.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Stop conflating vCPU index and ID in perf tests
Sean Christopherson [Wed, 16 Feb 2022 21:38:12 +0000 (13:38 -0800)]
KVM: selftests: Stop conflating vCPU index and ID in perf tests

Track vCPUs by their 'struct kvm_vcpu' object, and stop assuming that a
vCPU's ID is the same as its index when referencing a vCPU's metadata.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Stop hardcoding vCPU IDs in vcpu_width_config
Sean Christopherson [Wed, 20 Apr 2022 19:15:50 +0000 (12:15 -0700)]
KVM: selftests: Stop hardcoding vCPU IDs in vcpu_width_config

In preparation for taking a vCPU pointer in vCPU-scoped functions, grab
the vCPU(s) created by __vm_vcpu_add() and use the ID from the vCPU
object instead of hardcoding the ID in ioctl() invocations.

Rename init1/init2 => init0/init1 to avoid having odd/confusing code
where vcpu0 consumes init1 and vcpu1 consumes init2.

Note, this change could easily be done when the functions are converted
in the future, and/or the vcpu{0,1} vs. init{1,2} discrepancy could be
ignored, but then there would be no opportunity to poke fun at the
1-based counting scheme.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert get-reg-list away from its "VCPU_ID"
Sean Christopherson [Fri, 18 Feb 2022 01:01:58 +0000 (17:01 -0800)]
KVM: selftests: Convert get-reg-list away from its "VCPU_ID"

Track the vCPU's 'struct kvm_vcpu' object in get-reg-list instead of
hardcoding '0' everywhere.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert kvm_binary_stats_test away from vCPU IDs
Sean Christopherson [Thu, 17 Feb 2022 00:16:32 +0000 (16:16 -0800)]
KVM: selftests: Convert kvm_binary_stats_test away from vCPU IDs

Track vCPUs by their 'struct kvm_vcpu' object in kvm_binary_stats_test,
not by their ID.  The per-vCPU helpers will soon take a vCPU instead of a
VM+vcpu_id pair.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert kvm_page_table_test away from reliance on vcpu_id
Sean Christopherson [Wed, 16 Feb 2022 21:06:18 +0000 (13:06 -0800)]
KVM: selftests: Convert kvm_page_table_test away from reliance on vcpu_id

Reference vCPUs by their 'struct kvm_vcpu' object in kvm_page_table_test
instead of by their ID.  This moves selftests one step closer towards
taking a 'struct kvm_vcpu *' instead of VM+vcpu_id for vCPU helpers.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Drop @vcpuids param from VM creators
Sean Christopherson [Wed, 16 Feb 2022 20:49:13 +0000 (12:49 -0800)]
KVM: selftests: Drop @vcpuids param from VM creators

Drop the @vcpuids parameter from VM creators now that there are no users.
Allowing tests to specify IDs was a gigantic mistake as it resulted in
tests with arbitrary and ultimately meaningless IDs that differed only
because the author used test X intead of test Y as the source for
copy+paste (the de facto standard way to create a KVM selftest).

Except for literally two tests, x86's set_boot_cpu_id and s390's resets,
tests do not and should not care about the vCPU ID.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Drop vm_create_default* helpers
Sean Christopherson [Wed, 16 Feb 2022 20:45:22 +0000 (12:45 -0800)]
KVM: selftests: Drop vm_create_default* helpers

Drop all vm_create_default*() helpers, the "default" naming turned out to
terrible as wasn't extensible (hard to have multiple defaults), was a lie
(half the settings were default, half weren't), and failed to capture
relationships between helpers, e.g. compared with the kernel's standard
underscores pattern.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Use vm_create_with_vcpus() in max_guest_memory_test
Sean Christopherson [Tue, 19 Apr 2022 18:35:28 +0000 (11:35 -0700)]
KVM: selftests: Use vm_create_with_vcpus() in max_guest_memory_test

Use vm_create_with_vcpus() in max_guest_memory_test and reference vCPUs
by their 'struct kvm_vcpu' object instead of their ID.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Use vm_create() in tsc_scaling_sync
Sean Christopherson [Tue, 19 Apr 2022 00:35:33 +0000 (17:35 -0700)]
KVM: selftests: Use vm_create() in tsc_scaling_sync

Use vm_create() instead of vm_create_default_with_vcpus() in
tsc_scaling_sync.  The existing call doesn't create any vCPUs, and the
guest_code() entry point is set when vm_vcpu_add_default() is invoked.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert tprot away from VCPU_ID
Sean Christopherson [Thu, 21 Apr 2022 15:34:06 +0000 (08:34 -0700)]
KVM: selftests: Convert tprot away from VCPU_ID

Convert tprot to use vm_create_with_vcpus() and pass around a
'struct kvm_vcpu' object instead of passing around vCPU IDs.  Note, this is
a "functional" change in the sense that the test now creates a vCPU with
vcpu_id==0 instead of vcpu_id==1.  The non-zero VCPU_ID was 100% arbitrary
and added little to no validation coverage.  If testing non-zero vCPU IDs
is desirable for generic tests, that can be done in the future by tweaking
the VM creation helpers.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert s390x/diag318_test_handler away from VCPU_ID
Sean Christopherson [Wed, 16 Feb 2022 20:40:18 +0000 (12:40 -0800)]
KVM: selftests: Convert s390x/diag318_test_handler away from VCPU_ID

Convert diag318_test_handler to use vm_create_with_vcpus() and pass around a
'struct kvm_vcpu' object instead of passing around vCPU IDs.  Note, this is
a "functional" change in the sense that the test now creates a vCPU with
vcpu_id==0 instead of vcpu_id==6.  The non-zero VCPU_ID was 100% arbitrary
and added little to no validation coverage.  If testing non-zero vCPU IDs
is desirable for generic tests, that can be done in the future by tweaking
the VM creation helpers.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert memop away from VCPU_ID
Sean Christopherson [Wed, 16 Feb 2022 20:39:34 +0000 (12:39 -0800)]
KVM: selftests: Convert memop away from VCPU_ID

Pass around a 'struct kvm_vcpu' object instead of a vCPU ID in s390's
memop test.  Pass NULL for the vCPU instead of a magic '-1' ID to
indicate that an ioctl/test should be done at VM scope.

Rename "struct test_vcpu vcpu" to "struct test_info info" in order to
avoid naming collisions (this is the bulk of the diff :-( ).

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert s390's "resets" test away from VCPU_ID
Sean Christopherson [Wed, 16 Feb 2022 20:38:26 +0000 (12:38 -0800)]
KVM: selftests: Convert s390's "resets" test away from VCPU_ID

Pass around a 'struct kvm_vcpu' object in the "resets" test instead of
referencing the vCPU by the global VCPU_ID.  Rename the #define for the
vCPU's ID to ARBITRARY_NON_ZERO_VCPU_ID to make it more obvious that (a)
the value matters but (b) is otherwise arbitrary.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert sync_regs_test away from VCPU_ID
Sean Christopherson [Wed, 16 Feb 2022 20:20:41 +0000 (12:20 -0800)]
KVM: selftests: Convert sync_regs_test away from VCPU_ID

Convert sync_regs_test to use vm_create_with_vcpus() and pass around a
'struct kvm_vcpu' object instead of passing around vCPU IDs.  Note, this
is a "functional" change in the sense that the test now creates a vCPU
with vcpu_id==0 instead of vcpu_id==5.  The non-zero VCPU_ID was 100%
arbitrary and added little to no validation coverage.  If testing
non-zero vCPU IDs is desirable for generic tests, that can be done in the
future by tweaking the VM creation helpers.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert xapic_ipi_test away from *_VCPU_ID
Sean Christopherson [Wed, 16 Feb 2022 20:10:40 +0000 (12:10 -0800)]
KVM: selftests: Convert xapic_ipi_test away from *_VCPU_ID

Convert vm_create_with_one_vcpu to use vm_create_with_vcpus() and pass
around 'struct kvm_vcpu' objects instead of passing around vCPU IDs.
Don't bother with macros for the HALTER versus SENDER indices, the vast
majority of references don't differentiate between the vCPU roles, and
the code that does either has a comment or an explicit reference to the
role, e.g. to halter_guest_code() or sender_guest_code().

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert hypercalls test away from vm_create_default()
Sean Christopherson [Thu, 2 Jun 2022 00:32:52 +0000 (17:32 -0700)]
KVM: selftests: Convert hypercalls test away from vm_create_default()

Use a combination of vm_create(), vm_create_with_vcpus(), and
    vm_vcpu_add() to convert vgic_init from vm_create_default_with_vcpus(),
    and away from referncing vCPUs by ID.

Thus continues the march toward total annihilation of "default" helpers.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Sync stage before VM is freed in hypercalls test
Sean Christopherson [Thu, 2 Jun 2022 00:27:51 +0000 (17:27 -0700)]
KVM: selftests: Sync stage before VM is freed in hypercalls test

Sync the next stage using the VM before said VM is potentially freed by
the TEST_STAGE_HVC_IFACE_FEAT_DISABLED stage.

Opportunistically take a double pointer in anticipation of also having to
set the new vCPU pointer once the test stops hardcoding '0' everywhere.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Consolidate KVM_{G,S}ET_ONE_REG helpers
Sean Christopherson [Thu, 2 Jun 2022 00:16:11 +0000 (17:16 -0700)]
KVM: selftests: Consolidate KVM_{G,S}ET_ONE_REG helpers

Rework vcpu_{g,s}et_reg() to provide the APIs that tests actually want to
use, and drop the three "one-off" implementations that cropped up due to
the poor API.

Ignore the handful of direct KVM_{G,S}ET_ONE_REG calls that don't fit the
APIs for one reason or another.

No functional change intended.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert vgic_init away from vm_create_default_with_vcpus()
Sean Christopherson [Wed, 16 Feb 2022 19:57:41 +0000 (11:57 -0800)]
KVM: selftests: Convert vgic_init away from vm_create_default_with_vcpus()

Use a combination of vm_create(), vm_create_with_vcpus(), and
vm_vcpu_add() to convert vgic_init from vm_create_default_with_vcpus(),
and away from referncing vCPUs by ID.

Thus continues the march toward total annihilation of "default" helpers.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert triple_fault_event_test away from VCPU_ID
Sean Christopherson [Wed, 1 Jun 2022 20:43:40 +0000 (13:43 -0700)]
KVM: selftests: Convert triple_fault_event_test away from VCPU_ID

Convert triple_fault_event_test to use vm_create_with_one_vcpu() and pull
the vCPU's ID from 'struct kvm_vcpu'.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert svm_nested_soft_inject_test away from VCPU_ID
Sean Christopherson [Wed, 1 Jun 2022 20:41:09 +0000 (13:41 -0700)]
KVM: selftests: Convert svm_nested_soft_inject_test away from VCPU_ID

Convert svm_nested_soft_inject_test to use vm_create_with_one_vcpu() and
pull the vCPU's ID from 'struct kvm_vcpu'.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert arch_timer away from VCPU_ID
Sean Christopherson [Wed, 16 Feb 2022 19:40:33 +0000 (11:40 -0800)]
KVM: selftests: Convert arch_timer away from VCPU_ID

Convert arch_timer to use vm_create_with_vcpus() and pass around a
'struct kvm_vcpu' object instead of requiring that the index into the
array of vCPUs for a given vCPU is also the ID of the vCPU

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert steal_time away from VCPU_ID
Sean Christopherson [Wed, 16 Feb 2022 19:24:01 +0000 (11:24 -0800)]
KVM: selftests: Convert steal_time away from VCPU_ID

Convert steal_time to use vm_create_with_vcpus() and pass around a
'struct kvm_vcpu' object instead of requiring that the index into the
array of vCPUs for a given vCPU is also the ID of the vCPU.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Add VM creation helper that "returns" vCPUs
Sean Christopherson [Wed, 16 Feb 2022 19:19:18 +0000 (11:19 -0800)]
KVM: selftests: Add VM creation helper that "returns" vCPUs

Add a VM creator that "returns" the created vCPUs by filling the provided
array.  This will allow converting multi-vCPU tests away from hardcoded
vCPU IDs.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert hardware_disable_test to pass around vCPU objects
Sean Christopherson [Wed, 16 Feb 2022 19:15:08 +0000 (11:15 -0800)]
KVM: selftests: Convert hardware_disable_test to pass around vCPU objects

Pass around 'struct kvm_vcpu' objects in hardware_disable_test instead of
the VM+vcpu_id (called "index" by the test).

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert psci_test away from VCPU_ID
Sean Christopherson [Wed, 16 Feb 2022 19:11:50 +0000 (11:11 -0800)]
KVM: selftests: Convert psci_test away from VCPU_ID

Pass around 'struct kvm_vcpu' objects in psci_test instead of relying on
global VCPU_IDs.  Ideally, the test wouldn't have to manually create
vCPUs and thus care about vCPU IDs, but it's not the end of the world and
avoiding that behavior isn't guaranteed to be a net positive (an attempt
at macro shenanigans did not go very well).

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert set_boot_cpu_id away from global VCPU_IDs
Sean Christopherson [Wed, 16 Feb 2022 19:07:09 +0000 (11:07 -0800)]
KVM: selftests: Convert set_boot_cpu_id away from global VCPU_IDs

Rework set_boot_cpu_id to pass around 'struct kvm_vcpu' objects instead
of relying on global VCPU_IDs.  The test is still ugly, but that's
unavoidable since the point of the test is to verify that KVM correctly
assigns VCPU_ID==0 to be the BSP by default.  This is literally one of
two KVM selftests that legitimately needs to care about the exact vCPU
IDs of the vCPUs it creates.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Rename vm_vcpu_add* helpers to better show relationships
Sean Christopherson [Wed, 16 Feb 2022 17:56:24 +0000 (09:56 -0800)]
KVM: selftests: Rename vm_vcpu_add* helpers to better show relationships

Rename vm_vcpu_add() to __vm_vcpu_add(), and vm_vcpu_add_default() to
vm_vcpu_add() to show the relationship between the newly minted
vm_vcpu_add() and __vm_vcpu_add().

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Return created vcpu from vm_vcpu_add_default()
Sean Christopherson [Wed, 16 Feb 2022 17:37:11 +0000 (09:37 -0800)]
KVM: selftests: Return created vcpu from vm_vcpu_add_default()

Return the created 'struct kvm_vcpu' object from vm_vcpu_add_default(),
which cleans up a few tests and will eventually allow removing vcpu_get()
entirely.

Opportunistically rename @vcpuid to @vcpu_id to follow preferred kernel
style.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Add "arch" to common utils that have arch implementations
Sean Christopherson [Wed, 16 Feb 2022 17:30:39 +0000 (09:30 -0800)]
KVM: selftests: Add "arch" to common utils that have arch implementations

Add "arch" into the name of utility functions that are declared in common
code, but (surprise!) have arch-specific implementations.  Shuffle code
around so that all such helpers' declarations are bundled together.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Move vm_is_unrestricted_guest() to x86-64
Sean Christopherson [Wed, 16 Feb 2022 17:08:00 +0000 (09:08 -0800)]
KVM: selftests: Move vm_is_unrestricted_guest() to x86-64

An "unrestricted guest" is an VMX-only concept, move the relevant helper
to x86-64 code.  Assume most readers can correctly convert underscores to
spaces and oppurtunistically trim the function comment.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Make arm64's guest_get_vcpuid() declaration arm64-only
Sean Christopherson [Wed, 16 Feb 2022 17:02:27 +0000 (09:02 -0800)]
KVM: selftests: Make arm64's guest_get_vcpuid() declaration arm64-only

Move the declaration of guest_get_vcpuid() to include/aarch64/processor.h,
it is implemented and used only by arm64.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert vgic_irq away from VCPU_ID
Sean Christopherson [Wed, 16 Feb 2022 16:41:38 +0000 (08:41 -0800)]
KVM: selftests: Convert vgic_irq away from VCPU_ID

Convert vgic_irq to use vm_create_with_one_vcpu() and pass around a
'struct kvm_vcpu' object instead of passing around a vCPU ID (which is
always the global VCPU_ID...).

Opportunstically align the indentation for multiple functions'
parameters.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert fix_hypercall_test away from VCPU_ID
Sean Christopherson [Mon, 18 Apr 2022 18:50:15 +0000 (11:50 -0700)]
KVM: selftests: Convert fix_hypercall_test away from VCPU_ID

Convert fix_hypercall_test to use vm_create_with_one_vcpu() and pass
around a 'struct kvm_vcpu' object instead of using a global VCPU_ID.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert debug-exceptions away from VCPU_ID
Sean Christopherson [Wed, 16 Feb 2022 16:35:01 +0000 (08:35 -0800)]
KVM: selftests: Convert debug-exceptions away from VCPU_ID

Convert debug-exceptions to use vm_create_with_one_vcpu() and pass around
a 'struct kvm_vcpu' object instead of using a global VCPU_ID.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert xapic_state_test away from hardcoded vCPU ID
Sean Christopherson [Mon, 18 Apr 2022 19:11:54 +0000 (12:11 -0700)]
KVM: selftests: Convert xapic_state_test away from hardcoded vCPU ID

Convert xapic_state_test to use vm_create_with_one_vcpu() and pass around
a 'struct kvm_vcpu' object instead of the raw vCPU ID.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Track kvm_vcpu object in tsc_scaling_sync
Sean Christopherson [Mon, 18 Apr 2022 18:28:21 +0000 (11:28 -0700)]
KVM: selftests: Track kvm_vcpu object in tsc_scaling_sync

Track the added 'struct kvm_vcpu' object in tsc_scaling_sync instead of
relying purely on the VM + vcpu_id combination.  Ideally, the test
wouldn't need to manually manage vCPUs, but the need to invoke a per-VM
ioctl before creating vCPUs is not handled by the selftests framework,
at least not yet...

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert system_counter_offset_test away from VCPU_ID
Sean Christopherson [Mon, 18 Apr 2022 18:28:15 +0000 (11:28 -0700)]
KVM: selftests: Convert system_counter_offset_test away from VCPU_ID

Convert system_counter_offset_test to use vm_create_with_one_vcpu() and
pass around a 'struct kvm_vcpu' object instead of using a global VCPU_ID.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert set_memory_region_test away from VCPU_ID
Sean Christopherson [Wed, 16 Feb 2022 01:44:50 +0000 (17:44 -0800)]
KVM: selftests: Convert set_memory_region_test away from VCPU_ID

Convert set_memory_region_test to use vm_create_with_one_vcpu() and pass
around a 'struct kvm_vcpu' object instead of using a global VCPU_ID.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert dirty_log_test away from VCPU_ID
Sean Christopherson [Wed, 16 Feb 2022 01:40:19 +0000 (17:40 -0800)]
KVM: selftests: Convert dirty_log_test away from VCPU_ID

Convert dirty_log_test to pass around a 'struct kvm_vcpu' object instead
of using a global VCPU_ID.  Note, this is a "functional" change in the
sense that the test now creates a vCPU with vcpu_id==0 instead of
vcpu_id==5.  The non-zero VCPU_ID was 100% arbitrary and added little to
no validation coverage.  If testing non-zero vCPU IDs is desirable for
generic tests, that can be done in the future by tweaking the VM creation
helpers.

The test still hardcodes usage of vcpu_id==0, but only for a few lines.
That wart will be removed in the not-too-distant future.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert xen_shinfo_test away from VCPU_ID
Sean Christopherson [Wed, 16 Feb 2022 01:34:32 +0000 (17:34 -0800)]
KVM: selftests: Convert xen_shinfo_test away from VCPU_ID

Convert xen_shinfo_test to use vm_create_with_one_vcpu() and pass around a
'struct kvm_vcpu' object instead of using a global VCPU_ID.  Note, this is
a "functional" change in the sense that the test now creates a vCPU with
vcpu_id==0 instead of vcpu_id==5.  The non-zero VCPU_ID was 100% arbitrary
and added little to no validation coverage.  If testing non-zero vCPU IDs
is desirable for generic tests, that can be done in the future by tweaking
the VM creation helpers.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert xen_vmcall_test away from VCPU_ID
Sean Christopherson [Wed, 16 Feb 2022 01:33:28 +0000 (17:33 -0800)]
KVM: selftests: Convert xen_vmcall_test away from VCPU_ID

Convert xen_vmcall_test to use vm_create_with_one_vcpu() and pass around a
'struct kvm_vcpu' object instead of using a global VCPU_ID.  Note, this is
a "functional" change in the sense that the test now creates a vCPU with
vcpu_id==0 instead of vcpu_id==5.  The non-zero VCPU_ID was 100% arbitrary
and added little to no validation coverage.  If testing non-zero vCPU IDs
is desirable for generic tests, that can be done in the future by tweaking
the VM creation helpers.

Opportunistically make the "vm" variable local, it is unused outside of
main().

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert vmx_invalid_nested_guest_state away from VCPU_ID
Sean Christopherson [Wed, 16 Feb 2022 01:30:35 +0000 (17:30 -0800)]
KVM: selftests: Convert vmx_invalid_nested_guest_state away from VCPU_ID

Convert vmx_invalid_nested_guest_state to use vm_create_with_one_vcpu() and
pass around a 'struct kvm_vcpu' object instead of using a global VCPU_ID.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert userspace_io_test away from VCPU_ID
Sean Christopherson [Wed, 16 Feb 2022 01:15:15 +0000 (17:15 -0800)]
KVM: selftests: Convert userspace_io_test away from VCPU_ID

Convert userspace_io_test to use vm_create_with_one_vcpu() and pass around
a 'struct kvm_vcpu' object instead of using a global VCPU_ID.  Note,
this is a "functional" change in the sense that the test now creates a vCPU
with vcpu_id==0 instead of vcpu_id==1.  The non-zero VCPU_ID was 100%
arbitrary and added little to no validation coverage.  If testing non-zero
vCPU IDs is desirable for generic tests, that can be done in the future by
tweaking the VM creation helpers.

Opportunistically use vcpu_run() instead of _vcpu_run() with an open
coded assert that KVM_RUN succeeded.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert cpuid_test away from VCPU_ID
Sean Christopherson [Wed, 16 Feb 2022 01:13:53 +0000 (17:13 -0800)]
KVM: selftests: Convert cpuid_test away from VCPU_ID

Convert cpuid_test 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(), the test expects
KVM_RUN to succeed.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert cr4_cpuid_sync_test away from VCPU_ID
Sean Christopherson [Wed, 16 Feb 2022 01:12:37 +0000 (17:12 -0800)]
KVM: selftests: Convert cr4_cpuid_sync_test away from VCPU_ID

Convert cr4_cpuid_sync_test to use vm_create_with_one_vcpu() and pass
around a 'struct kvm_vcpu' object instead of using a global VCPU_ID.  Note,
this is a "functional" change in the sense that the test now creates a vCPU
with vcpu_id==0 instead of vcpu_id==1.  The non-zero VCPU_ID was 100%
arbitrary and added little to no validation coverage.  If testing non-zero
vCPU IDs is desirable for generic tests, that can be done in the future by
tweaking the VM creation helpers.

Opportunistically use vcpu_run() instead of _vcpu_run() with an open
coded assert that KVM_RUN succeeded.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert amx_test away from VCPU_ID
Sean Christopherson [Wed, 16 Feb 2022 01:11:25 +0000 (17:11 -0800)]
KVM: selftests: Convert amx_test away from VCPU_ID

Convert amx_test to use vm_create_with_one_vcpu() and pass around a
'struct kvm_vcpu' object instead of using a global VCPU_ID.o

Opportunistically use vcpu_run() instead of _vcpu_run(), the test expects
KVM_RUN to succeed.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Add proper helper for advancing RIP in debug_regs
Sean Christopherson [Wed, 16 Feb 2022 01:09:25 +0000 (17:09 -0800)]
KVM: selftests: Add proper helper for advancing RIP in debug_regs

Replace MOVE_RIP+SET_RIP with a proper helper, vcpu_skip_insn(), that is
more descriptive, doesn't subtly access local variables, and provides
type safety.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert debug_regs away from VCPU_ID
Sean Christopherson [Wed, 16 Feb 2022 01:06:02 +0000 (17:06 -0800)]
KVM: selftests: Convert debug_regs away from VCPU_ID

Convert debug_regs to use vm_create_with_one_vcpu() and pass around a
'struct kvm_vcpu' object instead of using a global VCPU_ID.

Opportunstically drop the CLEAR_DEBUG/APPLY_DEBUG macros as they only
obfuscate the code, e.g. operating on local variables not "passed" to the
macro is all kinds of confusing.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert emulator_error_test away from VCPU_ID
Sean Christopherson [Wed, 16 Feb 2022 01:02:44 +0000 (17:02 -0800)]
KVM: selftests: Convert emulator_error_test away from VCPU_ID

Convert emulator_error_test to use vm_create_with_one_vcpu() and pass
around a 'struct kvm_vcpu' object instead of using a global VCPU_ID.  Note,
this is a "functional" change in the sense that the test now creates a vCPU
with vcpu_id==0 instead of vcpu_id==5.  The non-zero VCPU_ID was 100%
arbitrary and added little to no validation coverage.  If testing non-zero
vCPU IDs is desirable for generic tests, that can be done in the future by
tweaking the VM creation helpers.

Opportunistically use vcpu_run() instead of _vcpu_run() with an open
coded assert that KVM_RUN succeeded.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert evmcs_test away from VCPU_ID
Sean Christopherson [Wed, 16 Feb 2022 00:57:49 +0000 (16:57 -0800)]
KVM: selftests: Convert evmcs_test away from VCPU_ID

Convert evmcs_test to use vm_create_with_one_vcpu() and pass around a
'struct kvm_vcpu' object instead of using a global VCPU_ID.  Note, this is
a "functional" change in the sense that the test now creates a vCPU with
vcpu_id==0 instead of vcpu_id==5.  The non-zero VCPU_ID was 100% arbitrary
and added little to no validation coverage.  If testing non-zero vCPU IDs
is desirable for generic tests, that can be done in the future by tweaking
the VM creation helpers.

Opportunistically use vcpu_run() instead of _vcpu_run(), the test expects
KVM_RUN to succeed.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert hyperv_clock away from VCPU_ID
Sean Christopherson [Wed, 16 Feb 2022 00:54:04 +0000 (16:54 -0800)]
KVM: selftests: Convert hyperv_clock away from VCPU_ID

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 <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert hyperv_features away from VCPU_ID
Sean Christopherson [Wed, 16 Feb 2022 00:50:11 +0000 (16:50 -0800)]
KVM: selftests: Convert hyperv_features away from VCPU_ID

Convert hyperv_features 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 <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert hyperv_svm_test away from VCPU_ID
Sean Christopherson [Wed, 16 Feb 2022 00:47:48 +0000 (16:47 -0800)]
KVM: selftests: Convert hyperv_svm_test away from VCPU_ID

Convert hyperv_svm_test to use vm_create_with_one_vcpu() and pass around a
'struct kvm_vcpu' object instead of using a global VCPU_ID.  Note, this is
a "functional" change in the sense that the test now creates a vCPU with
vcpu_id==0 instead of vcpu_id==1.  The non-zero VCPU_ID was 100% arbitrary
and added little to no validation coverage.  If testing non-zero vCPU IDs
is desirable for generic tests, that can be done in the future by tweaking
the VM creation helpers.

Opportunistically use vcpu_run() instead of _vcpu_run(), the test expects
KVM_RUN to succeed.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert kvm_clock_test away from VCPU_ID
Sean Christopherson [Wed, 16 Feb 2022 00:46:56 +0000 (16:46 -0800)]
KVM: selftests: Convert kvm_clock_test away from VCPU_ID

Convert kvm_clock_test 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 <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert tsc_msrs_test away from VCPU_ID
Sean Christopherson [Wed, 16 Feb 2022 00:45:15 +0000 (16:45 -0800)]
KVM: selftests: Convert tsc_msrs_test away from VCPU_ID

Convert tsc_msrs_test to use vm_create_with_one_vcpu() and pass around a
'struct kvm_vcpu' object instead of using a global VCPU_ID.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert vmx_exception_with_invalid_guest_state away from VCPU_ID
Sean Christopherson [Wed, 16 Feb 2022 00:44:36 +0000 (16:44 -0800)]
KVM: selftests: Convert vmx_exception_with_invalid_guest_state away from VCPU_ID

Convert vmx_exception_with_invalid_guest_state to use
vm_create_with_one_vcpu() and pass around a 'struct kvm_vcpu' object
instead of using a global VCPU_ID.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert userspace_msr_exit_test away from VCPU_ID
Sean Christopherson [Wed, 16 Feb 2022 00:38:01 +0000 (16:38 -0800)]
KVM: selftests: Convert userspace_msr_exit_test away from VCPU_ID

Convert userspace_msr_exit_test to use vm_create_with_one_vcpu() and pass
around a 'struct kvm_vcpu' object instead of using a global VCPU_ID.
Note, this is a "functional" change in the sense that the test now
creates a vCPU with vcpu_id==0 instead of vcpu_id==1.  The non-zero
VCPU_ID was 100% arbitrary and added little to no validation coverage.
If testing non-zero vCPU IDs is desirable for generic tests, that can be
done in the future by tweaking the VM creation helpers.

Opportunistically use vcpu_run() instead of _vcpu_run() with an open
coded assert that KVM_RUN succeeded.  Fix minor coding style violations
too.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert vmx_apic_access_test away from VCPU_ID
Sean Christopherson [Wed, 16 Feb 2022 00:27:47 +0000 (16:27 -0800)]
KVM: selftests: Convert vmx_apic_access_test away from VCPU_ID

Convert vmx_apic_access_test to use vm_create_with_one_vcpu() and pass
around a 'struct kvm_vcpu' object instead of using a global VCPU_ID.

Opportunistically make the "vm" variable local, it is unused outside of
main().

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert vmx_close_while_nested_test away from VCPU_ID
Sean Christopherson [Wed, 16 Feb 2022 00:26:58 +0000 (16:26 -0800)]
KVM: selftests: Convert vmx_close_while_nested_test away from VCPU_ID

Convert vmx_close_while_nested_test to use vm_create_with_one_vcpu() and
pass around a 'struct kvm_vcpu' object instead of using a global VCPU_ID.
Note, this is a "functional" change in the sense that the test now
creates a vCPU with vcpu_id==0 instead of vcpu_id==5.  The non-zero
VCPU_ID was 100% arbitrary and added little to no validation coverage.
If testing non-zero vCPU IDs is desirable for generic tests, that can be
done in the future by tweaking the VM creation helpers.

Opportunistically make the "vm" variable local, it is unused outside of
main().

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert vmx_dirty_log_test away from VCPU_ID
Sean Christopherson [Wed, 16 Feb 2022 00:26:03 +0000 (16:26 -0800)]
KVM: selftests: Convert vmx_dirty_log_test away from VCPU_ID

Convert vmx_dirty_log_test to use vm_create_with_one_vcpu() and pass
around a 'struct kvm_vcpu' object instead of using a global VCPU_ID.
Note, this is a "functional" change in the sense that the test now
creates a vCPU with vcpu_id==0 instead of vcpu_id==1.  The non-zero
VCPU_ID was 100% arbitrary and added little to no validation coverage.
If testing non-zero vCPU IDs is desirable for generic tests, that can be
done in the future by tweaking the VM creation helpers.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert set_sregs_test away from VCPU_ID
Sean Christopherson [Wed, 16 Feb 2022 00:24:50 +0000 (16:24 -0800)]
KVM: selftests: Convert set_sregs_test away from VCPU_ID

Convert set_sregs_test to use vm_create_with_one_vcpu() and pass around
a 'struct kvm_vcpu' object instead of using a global VCPU_ID.  Note, this
is a "functional" change in the sense that the test now creates a vCPU
with vcpu_id==0 instead of vcpu_id==5.  The non-zero VCPU_ID was 100%
arbitrary and added little to no validation coverage.  If testing
non-zero vCPU IDs is desirable for generic tests, that can be
done in the future by tweaking the VM creation helpers.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert vmx_nested_tsc_scaling_test away from VCPU_ID
Sean Christopherson [Wed, 16 Feb 2022 00:23:43 +0000 (16:23 -0800)]
KVM: selftests: Convert vmx_nested_tsc_scaling_test away from VCPU_ID

Convert vmx_nested_tsc_scaling_test to use vm_create_with_one_vcpu() and
pass around a 'struct kvm_vcpu' object instead of using a global VCPU_ID.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert platform_info_test away from VCPU_ID
Sean Christopherson [Wed, 16 Feb 2022 00:11:59 +0000 (16:11 -0800)]
KVM: selftests: Convert platform_info_test away from VCPU_ID

Convert platform_info_test to use vm_create_with_one_vcpu() and pass
around a 'struct kvm_vcpu' object instead of using a global VCPU_ID.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert kvm_pv_test away from VCPU_ID
Sean Christopherson [Wed, 16 Feb 2022 00:10:04 +0000 (16:10 -0800)]
KVM: selftests: Convert kvm_pv_test away from VCPU_ID

Convert kvm_pv_test to use vm_create_with_one_vcpu() and pass arounda
'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 <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert hyperv_cpuid away from VCPU_ID
Sean Christopherson [Wed, 16 Feb 2022 00:08:48 +0000 (16:08 -0800)]
KVM: selftests: Convert hyperv_cpuid away from VCPU_ID

Convert hyperv_cpuid to use vm_create_with_one_vcpu() and pass around a
'struct kvm_vcpu' object instead of using a global VCPU_ID.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert sync_regs_test away from VCPU_ID
Sean Christopherson [Wed, 16 Feb 2022 00:04:25 +0000 (16:04 -0800)]
KVM: selftests: Convert sync_regs_test away from VCPU_ID

Convert sync_regs_test to use vm_create_with_one_vcpu() and pass around
a 'struct kvm_vcpu' object instead of using a global VCPU_ID.  Note, this
is a "functional" change in the sense that the test now creates a vCPU
with vcpu_id==0 instead of vcpu_id==5.  The non-zero VCPU_ID was 100%
arbitrary and added little to no validation coverage.  If testing
non-zero vCPU IDs is desirable for generic tests, that can be
done in the future by tweaking the VM creation helpers.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert svm_vmcall_test away from VCPU_ID
Sean Christopherson [Tue, 15 Feb 2022 23:56:54 +0000 (15:56 -0800)]
KVM: selftests: Convert svm_vmcall_test away from VCPU_ID

Convert svm_vmcall_test to use vm_create_with_one_vcpu() and pass around
a 'struct kvm_vcpu' object instead of using a global VCPU_ID.  Note, this
is a "functional" change in the sense that the test now creates a vCPU
with vcpu_id==0 instead of vcpu_id==5.  The non-zero VCPU_ID was 100%
arbitrary and added little to no validation coverage.  If testing
non-zero vCPU IDs is desirable for generic tests, that can be done in the
future by tweaking the VM creation helpers.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert svm_int_ctl_test away from VCPU_ID
Sean Christopherson [Tue, 15 Feb 2022 23:55:26 +0000 (15:55 -0800)]
KVM: selftests: Convert svm_int_ctl_test away from VCPU_ID

Convert svm_int_ctl_test to use vm_create_with_one_vcpu() and pass around
a 'struct kvm_vcpu' object instead of using a global VCPU_ID.

Opportunistically make the "vm" variable a local function variable, there
are no users outside of main().

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert state_test away from VCPU_ID
Sean Christopherson [Tue, 15 Feb 2022 23:53:16 +0000 (15:53 -0800)]
KVM: selftests: Convert state_test away from VCPU_ID

Convert state_test to use vm_create_with_one_vcpu() and
vm_recreate_with_one_vcpu(), and pass around a 'struct kvm_vcpu' object
instead of using a global VCPU_ID.  Note, this is a "functional" change
in the sense that the test now creates a vCPU with vcpu_id==0 instead of
vcpu_id==5.  The non-zero VCPU_ID was 100% arbitrary and added little to
no validation coverage.  If testing non-zero vCPU IDs is desirable for
generic tests, that can be done in the future by tweaking the VM creation
helpers.

Opportunistically use vcpu_run() instead of _vcpu_run(), the test expects
KVM_RUN to succeed.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert smm_test away from VCPU_ID
Sean Christopherson [Tue, 15 Feb 2022 23:51:19 +0000 (15:51 -0800)]
KVM: selftests: Convert smm_test away from VCPU_ID

Convert smm_test to use vm_create_with_one_vcpu() and pass around a
'struct kvm_vcpu' object instead of using a global VCPU_ID.  Note, this
is a "functional" change in the sense that the test now creates a vCPU
with vcpu_id==0 instead of vcpu_id==1.  The non-zero VCPU_ID was 100%
arbitrary and added little to no validation coverage.  If testing
non-zero vCPU IDs is desirable for generic tests, that can be done in the
future by tweaking the VM creation helpers.

Opportunistically use vcpu_run() instead of _vcpu_run(), the test expects
KVM_RUN to succeed.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert pmu_event_filter_test away from VCPU_ID
Sean Christopherson [Tue, 15 Feb 2022 23:39:45 +0000 (15:39 -0800)]
KVM: selftests: Convert pmu_event_filter_test away from VCPU_ID

Convert pmu_event_filter_test to use vm_create_with_one_vcpu() and pass
around a 'struct kvm_vcpu' object instead of using a global VCPU_ID.
Rename run_vm_to_sync() to run_vcpu_to_sync() accordingly.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert mmu_role_test away from VCPU_ID
Sean Christopherson [Tue, 15 Feb 2022 23:28:49 +0000 (15:28 -0800)]
KVM: selftests: Convert mmu_role_test away from VCPU_ID

Convert mmu_role_test to use vm_create_with_one_vcpu() and pass around
a 'struct kvm_vcpu' object instead of using a global VCPU_ID.
Note, this is a "functional" change in the sense that the test now
creates a vCPU with vcpu_id==0 instead of vcpu_id==1.  The non-zero
VCPU_ID was 100% arbitrary and added little to no validation coverage.
If testing non-zero vCPU IDs is desirable for generic tests, that can be
done in the future by tweaking the VM creation helpers.

Opportunistically use vcpu_run() instead of _vcpu_run() plus an open
coded assert that KVM_RUN succeeded.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert vmx_tsc_adjust_test away from VCPU_ID
Sean Christopherson [Tue, 15 Feb 2022 23:22:03 +0000 (15:22 -0800)]
KVM: selftests: Convert vmx_tsc_adjust_test away from VCPU_ID

Convert vmx_tsc_adjust_test to use vm_create_with_one_vcpu() and pass
around a 'struct kvm_vcpu' object instead of using a global VCPU_ID.
Note, this is a "functional" change in the sense that the test now
creates a vCPU with vcpu_id==0 instead of vcpu_id==5.  The non-zero
VCPU_ID was 100% arbitrary and added little to no validation coverage.
If testing non-zero vCPU IDs is desirable for generic tests, that can be
done in the future by tweaking the VM creation helpers.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert vmx_set_nested_state_test away from VCPU_ID
Sean Christopherson [Tue, 15 Feb 2022 21:56:58 +0000 (13:56 -0800)]
KVM: selftests: Convert vmx_set_nested_state_test away from VCPU_ID

Convert vmx_set_nested_state_test to use vm_create_with_one_vcpu() and
pass around a 'struct kvm_vcpu' object instead of using a global VCPU_ID.
Note, this is a "functional" change in the sense that the test now
creates a vCPU with vcpu_id==0 instead of vcpu_id==5.  The non-zero
VCPU_ID was 100% arbitrary and added little to no validation coverage.
If testing non-zero vCPU IDs is desirable for generic tests, that can be
done in the future by tweaking the VM creation helpers.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert vmx_pmu_msrs_test away from VCPU_ID
Sean Christopherson [Tue, 15 Feb 2022 21:53:06 +0000 (13:53 -0800)]
KVM: selftests: Convert vmx_pmu_msrs_test away from VCPU_ID

Convert vmx_pmu_msrs_test to use vm_create_with_one_vcpu() and pass
around a 'struct kvm_vcpu' object instead of using a global VCPU_ID.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
22 months agoKVM: selftests: Convert vmx_preemption_timer_test away from VCPU_ID
Sean Christopherson [Tue, 15 Feb 2022 21:51:14 +0000 (13:51 -0800)]
KVM: selftests: Convert vmx_preemption_timer_test away from VCPU_ID

Convert vmx_preemption_timer_test to use vm_create_with_one_vcpu() and
pass around a 'struct kvm_vcpu' object instead of using a global VCPU_ID.
Note, this is a "functional" change in the sense that the test now
creates a vCPU with vcpu_id==0 instead of vcpu_id==5.  The non-zero
VCPU_ID was 100% arbitrary and added little to no validation coverage.
If testing non-zero vCPU IDs is desirable for generic tests, that can be
done in the future by tweaking the VM creation helpers.

Opportunistically use vcpu_run() instead of _vcpu_run(), the test expects
KVM_RUN to succeed.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>