[PATCH v5 05/13] target/arm: convert host CPU feature ifdef ladder to runtime checks
Aastha Rawat <[email protected]>
| Newsgroups | org.nongnu.qemu-arm,org.nongnu.qemu-devel |
|---|---|
| Message-ID | <20260717-mshv_accel_arm64_supp-v5-5-ef07d4c6b337@linux.microsoft.com> |
Replace the compile-time #if/#elif preprocessor ladder in aarch64_host_initfn() with runtime calls and add mshv_enabled() to it. This ensures the correct accelerator is selected at runtime when multiple accelerators are compiled in. Add CONFIG_MSHV to the aarch64_cpus[] guard so that mshv accelerator can register the "host" CPU type. Signed-off-by: Aastha Rawat <[email protected]> --- target/arm/cpu64.c | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/target/arm/cpu64.c b/target/arm/cpu64.c index 2816735577..9724c9475d 100644 --- a/target/arm/cpu64.c +++ b/target/arm/cpu64.c @@ -802,17 +802,21 @@ void aarch64_host_initfn(Object *obj) } #endif + if (mshv_enabled()) { + mshv_arm_set_cpu_features_from_host(cpu); + } else if (kvm_enabled()) { #if defined(CONFIG_KVM) - kvm_arm_set_cpreg_mig_tolerances(cpu); - kvm_arm_set_cpu_features_from_host(cpu); - aarch64_add_sve_properties(obj); -#elif defined(CONFIG_HVF) - hvf_arm_set_cpu_features_from_host(cpu); -#elif defined(CONFIG_WHPX) - whpx_arm_set_cpu_features_from_host(cpu); -#else - g_assert_not_reached(); + kvm_arm_set_cpreg_mig_tolerances(cpu); #endif + kvm_arm_set_cpu_features_from_host(cpu); + aarch64_add_sve_properties(obj); + } else if (hvf_enabled()) { + hvf_arm_set_cpu_features_from_host(cpu); + } else if (whpx_enabled()) { + whpx_arm_set_cpu_features_from_host(cpu); + } else { + g_assert_not_reached(); + } if (arm_feature(&cpu->env, ARM_FEATURE_AARCH64)) { aarch64_add_pauth_properties(obj); } @@ -821,7 +825,8 @@ void aarch64_host_initfn(Object *obj) static const ARMCPUInfo aarch64_cpus[] = { { .name = "cortex-a57", .initfn = aarch64_a57_initfn }, { .name = "cortex-a53", .initfn = aarch64_a53_initfn }, -#if defined(CONFIG_KVM) || defined(CONFIG_HVF) || defined(CONFIG_WHPX) +#if defined(CONFIG_KVM) || defined(CONFIG_HVF) || \ + defined(CONFIG_WHPX) || defined(CONFIG_MSHV) { .name = "host", .initfn = aarch64_host_initfn }, #endif }; -- 2.45.4