On 1/15/26 22:20, Manos Pitsidianakis wrote:
diff --git a/target/arm/cpu64.c b/target/arm/cpu64.c index bf303813701972648fa6751ffe352ba074ca6442..8dd9eb46c783a799a53891a6ddad40b930e95eb4 100644 --- a/target/arm/cpu64.c +++ b/target/arm/cpu64.c @@ -329,9 +329,20 @@ void arm_cpu_sme_finalize(ARMCPU *cpu, Error **errp) { uint32_t vq_map = cpu->sme_vq.map; uint32_t vq_init = cpu->sme_vq.init; - uint32_t vq_supported = cpu->sme_vq.supported; + uint32_t vq_supported; uint32_t vq;+ if (hvf_enabled()) {+ if (hvf_arm_sme2_supported()) { + vq_supported = hvf_arm_sme2_get_svl(); + } else { + assert(!cpu_isar_feature(aa64_sme, cpu)); + vq_supported = 0; + } + } else { + vq_supported = cpu->sme_vq.supported; + }
While this mirrors what we do for kvm and sve, I don't think this is sustainable. I think cpu->sme_vq should be initialized in hvf_arm_set_cpu_features_from_host.
r~
