<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/tools/testing/selftests/kvm/arm64, branch linux-rolling-lts</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-rolling-lts</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-rolling-lts'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2025-10-30T16:13:27Z</updated>
<entry>
<title>KVM: arm64: selftests: Filter ZCR_EL2 in get-reg-list</title>
<updated>2025-10-30T16:13:27Z</updated>
<author>
<name>Mark Brown</name>
</author>
<published>2025-10-23T23:43:39Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=a186fbcfd845699d51809f7c7e54cf997fe32820'/>
<id>urn:sha1:a186fbcfd845699d51809f7c7e54cf997fe32820</id>
<content type='text'>
get-reg-list includes ZCR_EL2 in the list of EL2 registers that it looks
for when NV is enabled but does not have any feature gate for this register,
meaning that testing any combination of features that includes EL2 but does
not include SVE will result in a test failure due to a missing register
being reported:

| The following lines are missing registers:
|
|	ARM64_SYS_REG(3, 4, 1, 2, 0),

Add ZCR_EL2 to feat_id_regs so that the test knows not to expect to see it
without SVE being enabled.

Fixes: 3a90b6f27964 ("KVM: arm64: selftests: get-reg-list: Add base EL2 registers")
Signed-off-by: Mark Brown &lt;broonie@kernel.org&gt;
Link: https://patch.msgid.link/20251024-kvm-arm64-get-reg-list-zcr-el2-v1-1-0cd0ff75e22f@kernel.org
Signed-off-by: Marc Zyngier &lt;maz@kernel.org&gt;
</content>
</entry>
<entry>
<title>KVM: arm64: selftests: Add SCTLR2_EL2 to get-reg-list</title>
<updated>2025-10-30T16:13:04Z</updated>
<author>
<name>Mark Brown</name>
</author>
<published>2025-10-23T21:19:29Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=92e781c93ebe75e39ecdf78fb8ef1fdf1b63a9f8'/>
<id>urn:sha1:92e781c93ebe75e39ecdf78fb8ef1fdf1b63a9f8</id>
<content type='text'>
We recently added support for SCTLR2_EL2 to the kernel but did not add it
to get-reg-list, resulting in it reporting the missing register when it
is available. Add it.

Signed-off-by: Mark Brown &lt;broonie@kernel.org&gt;
Link: https://patch.msgid.link/20251023-b4-kvm-arm64-get-reg-list-sctlr-el2-v1-1-088f88ff992a@kernel.org
Signed-off-by: Marc Zyngier &lt;maz@kernel.org&gt;
</content>
</entry>
<entry>
<title>KVM: arm64: selftests: Fix misleading comment about virtual timer encoding</title>
<updated>2025-10-13T13:43:12Z</updated>
<author>
<name>Marc Zyngier</name>
</author>
<published>2025-09-29T16:04:57Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=5c7cf1e44e94a5408b1b5277810502b0f82b77fe'/>
<id>urn:sha1:5c7cf1e44e94a5408b1b5277810502b0f82b77fe</id>
<content type='text'>
The userspace-visible encoding for CNTV_CVAL_EL0 and CNTVCNT_EL0
have been swapped for as long as usersapce has had access to the
registers. This is documented in arch/arm64/include/uapi/asm/kvm.h.

Despite that, the get_reg_list test has unhelpful comments indicating
the wrong register for the encoding.

Replace this with definitions exposed in the include file, and
a comment explaining again the brokenness.

Signed-off-by: Marc Zyngier &lt;maz@kernel.org&gt;
</content>
</entry>
<entry>
<title>KVM: arm64: selftests: Add an E2H=0-specific configuration to get_reg_list</title>
<updated>2025-10-13T13:42:41Z</updated>
<author>
<name>Marc Zyngier</name>
</author>
<published>2025-09-29T16:04:56Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4da5a9af78b74fb771a4d25dc794296d10e170b1'/>
<id>urn:sha1:4da5a9af78b74fb771a4d25dc794296d10e170b1</id>
<content type='text'>
Add yet another configuration, this time dealing E2H=0.

Signed-off-by: Marc Zyngier &lt;maz@kernel.org&gt;
</content>
</entry>
<entry>
<title>KVM: arm64: selftests: Make dependencies on VHE-specific registers explicit</title>
<updated>2025-10-13T13:42:41Z</updated>
<author>
<name>Marc Zyngier</name>
</author>
<published>2025-09-29T16:04:55Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=6418330c8478735f625398bc4e96d3ac6ce1e055'/>
<id>urn:sha1:6418330c8478735f625398bc4e96d3ac6ce1e055</id>
<content type='text'>
The hyp virtual timer registers only exist when VHE is present,
Similarly, VNCR_EL2 only exists when NV2 is present.

Make these dependencies explicit.

Signed-off-by: Marc Zyngier &lt;maz@kernel.org&gt;
</content>
</entry>
<entry>
<title>KVM: arm64: selftests: Actually enable IRQs in vgic_lpi_stress</title>
<updated>2025-10-13T13:28:27Z</updated>
<author>
<name>Oliver Upton</name>
</author>
<published>2025-10-07T19:52:55Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d5e6310a0d996493b1af9f3eeec418350523388b'/>
<id>urn:sha1:d5e6310a0d996493b1af9f3eeec418350523388b</id>
<content type='text'>
vgic_lpi_stress rather hilariously leaves IRQs disabled for the duration
of the test. While the ITS translation of MSIs happens regardless of
this, for completeness the guest should actually handle the LPIs.

Signed-off-by: Oliver Upton &lt;oliver.upton@linux.dev&gt;
Reviewed-by: Zenghui Yu &lt;zenghui.yu@linux.dev&gt;
Signed-off-by: Marc Zyngier &lt;maz@kernel.org&gt;
</content>
</entry>
<entry>
<title>KVM: arm64: selftests: Allocate vcpus with correct size</title>
<updated>2025-10-13T13:27:55Z</updated>
<author>
<name>Zenghui Yu</name>
</author>
<published>2025-10-08T15:45:20Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=2192d348c0aa0cc2e7249dc3709f21bfe0a0170c'/>
<id>urn:sha1:2192d348c0aa0cc2e7249dc3709f21bfe0a0170c</id>
<content type='text'>
vcpus array contains pointers to struct kvm_vcpu {}. It is way overkill
to allocate the array with (nr_cpus * sizeof(struct kvm_vcpu)). Fix the
allocation by using the correct size.

Signed-off-by: Zenghui Yu &lt;zenghui.yu@linux.dev&gt;
Signed-off-by: Marc Zyngier &lt;maz@kernel.org&gt;
</content>
</entry>
<entry>
<title>KVM: arm64: selftests: Sync ID_AA64PFR1, MPIDR, CLIDR in guest</title>
<updated>2025-10-13T13:17:03Z</updated>
<author>
<name>Zenghui Yu</name>
</author>
<published>2025-10-12T15:43:52Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=9a7f87eb587da49993f47f44c4c5535d8de76750'/>
<id>urn:sha1:9a7f87eb587da49993f47f44c4c5535d8de76750</id>
<content type='text'>
We forgot to sync several registers (ID_AA64PFR1, MPIDR, CLIDR) in guest to
make sure that the guest had seen the written value.

Add them to the list.

Signed-off-by: Zenghui Yu &lt;zenghui.yu@linux.dev&gt;
Reviewed-By: Ben Horgan &lt;ben.horgan@arm.com&gt;
Signed-off-by: Marc Zyngier &lt;maz@kernel.org&gt;
</content>
</entry>
<entry>
<title>KVM: arm64: selftests: Track width of timer counter as "int", not "uint64_t"</title>
<updated>2025-10-13T13:17:03Z</updated>
<author>
<name>Sean Christopherson</name>
</author>
<published>2025-09-26T15:58:38Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=cb49b7b8622e914171e9eb7197c006320889e0fc'/>
<id>urn:sha1:cb49b7b8622e914171e9eb7197c006320889e0fc</id>
<content type='text'>
Store the width of arm64's timer counter as an "int", not a "uint64_t".
ilog2() returns an "int", and more importantly using what is an "unsigned
long" under the hood makes clang unhappy due to a type mismatch when
clamping the width to a sane value.

  arm64/arch_timer_edge_cases.c:1032:10: error: comparison of distinct pointer types
     ('typeof (width) *' (aka 'unsigned long *') and 'typeof (56) *' (aka 'int *'))
     [-Werror,-Wcompare-distinct-pointer-types]
   1032 |         width = clamp(width, 56, 64);
        |                 ^~~~~~~~~~~~~~~~~~~~
  tools/include/linux/kernel.h:47:45: note: expanded from macro 'clamp'
     47 | #define clamp(val, lo, hi)      min((typeof(val))max(val, lo), hi)
        |                                                  ^~~~~~~~~~~~
  tools/include/linux/kernel.h:33:17: note: expanded from macro 'max'
     33 |         (void) (&amp;_max1 == &amp;_max2);              \
        |                 ~~~~~~ ^  ~~~~~~
  tools/include/linux/kernel.h:39:9: note: expanded from macro 'min'
     39 |         typeof(x) _min1 = (x);                  \
        |                ^

Fixes: fad4cf944839 ("KVM: arm64: selftests: Determine effective counter width in arch_timer_edge_cases")
Cc: Sebastian Ott &lt;sebott@redhat.com&gt;
Signed-off-by: Sean Christopherson &lt;seanjc@google.com&gt;
Reviewed-by: Oliver Upton &lt;oliver.upton@linux.dev&gt;
Signed-off-by: Marc Zyngier &lt;maz@kernel.org&gt;
</content>
</entry>
<entry>
<title>KVM: arm64: selftests: Test effective value of HCR_EL2.AMO</title>
<updated>2025-10-13T13:17:03Z</updated>
<author>
<name>Oliver Upton</name>
</author>
<published>2025-09-26T22:44:54Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=890c608b4d5e6a616693da92a2d4e7de4ab9e6c5'/>
<id>urn:sha1:890c608b4d5e6a616693da92a2d4e7de4ab9e6c5</id>
<content type='text'>
A defect against the architecture now allows an implementation to treat
AMO as 1 when HCR_EL2.{E2H, TGE} = {1, 0}. KVM now takes advantage of
this interpretation to address a quality of emulation issue w.r.t.
SError injection.

Add a corresponding test case and expect a pending SError to be taken.

Signed-off-by: Oliver Upton &lt;oliver.upton@linux.dev&gt;
Signed-off-by: Marc Zyngier &lt;maz@kernel.org&gt;
</content>
</entry>
</feed>
