Skip to content

Commit 28e505d

Browse files
Sticklyman1936Marc Zyngier
authored andcommitted
KVM: arm64: Correct test for ICH_HCR_EL2_TDIR cap for GICv5 hosts
The original order of checks in the ICH_HCR_EL2_TDIR test returned with false early in the case where the native GICv3 CPUIF was not present. The result was that on GICv5 hosts with legacy support - which do not have the GICv3 CPUIF - the test always returned false. Reshuffle the checks such that support for GICv5 legacy is checked prior to checking for the native GICv3 CPUIF. Signed-off-by: Sascha Bischoff <sascha.bischoff@arm.com> Fixes: 2a28810 ("KVM: arm64: GICv3: Detect and work around the lack of ICV_DIR_EL1 trapping") Link: https://patch.msgid.link/20251208152724.3637157-4-sascha.bischoff@arm.com Signed-off-by: Marc Zyngier <maz@kernel.org>
1 parent da63758 commit 28e505d

1 file changed

Lines changed: 4 additions & 4 deletions

File tree

arch/arm64/kernel/cpufeature.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2326,16 +2326,16 @@ static bool can_trap_icv_dir_el1(const struct arm64_cpu_capabilities *entry,
23262326

23272327
BUILD_BUG_ON(ARM64_HAS_ICH_HCR_EL2_TDIR <= ARM64_HAS_GICV3_CPUIF);
23282328
BUILD_BUG_ON(ARM64_HAS_ICH_HCR_EL2_TDIR <= ARM64_HAS_GICV5_LEGACY);
2329-
if (!this_cpu_has_cap(ARM64_HAS_GICV3_CPUIF) &&
2330-
!is_midr_in_range_list(has_vgic_v3))
2331-
return false;
2332-
23332329
if (!is_hyp_mode_available())
23342330
return false;
23352331

23362332
if (this_cpu_has_cap(ARM64_HAS_GICV5_LEGACY))
23372333
return true;
23382334

2335+
if (!this_cpu_has_cap(ARM64_HAS_GICV3_CPUIF) &&
2336+
!is_midr_in_range_list(has_vgic_v3))
2337+
return false;
2338+
23392339
if (is_kernel_in_hyp_mode())
23402340
res.a1 = read_sysreg_s(SYS_ICH_VTR_EL2);
23412341
else

0 commit comments

Comments
 (0)