kvm_arm_set_cpu_features_from_host() treats dtb_compatible as the host
feature cache valid bit, but kvm_arm_get_host_cpu_features() set it
before later register reads could fail.
Set target and dtb_compatible only after the feature data is complete.
Signed-off-by: Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp>
---
This fixes a semantic issue I found while writing the next version of [1].
I am not aware of any case where it manifests as a real bug.
[1] http://lore.kernel.org/qemu-devel/20260225-kvm-v2-1-b8d743db0f73@rsg.ci.i.u-tokyo.ac.jp/
("[PATCH RFC v2] target/arm/kvm: Choose PMU backend")
---
target/arm/kvm.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/target/arm/kvm.c b/target/arm/kvm.c
index d4a68874b880..03c3346d50ed 100644
--- a/target/arm/kvm.c
+++ b/target/arm/kvm.c
@@ -329,8 +329,6 @@ static bool kvm_arm_get_host_cpu_features(ARMHostCPUFeatures *ahcf)
return false;
}
- ahcf->target = init.target;
- ahcf->dtb_compatible = "arm,armv8";
int fd = fdarray[2];
err = get_host_cpu_reg(fd, ahcf, ID_AA64PFR0_EL1_IDX);
@@ -472,6 +470,8 @@ static bool kvm_arm_get_host_cpu_features(ARMHostCPUFeatures *ahcf)
}
ahcf->features = features;
+ ahcf->target = init.target;
+ ahcf->dtb_compatible = "arm,armv8";
return true;
}
---
base-commit: 98b060da3a4f92b2a994ead5b16a87e783baf77c
change-id: 20260422-arm-84b23dad0561
Best regards,
--
Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp>