diff mbox series

[RFC,v4,13/19] hw/arm/virt: Check accelerator availability at runtime

Message ID 20250422145502.70770-14-philmd@linaro.org
State New
Headers show
Series single-binary: Make hw/arm/ common | expand

Commit Message

Philippe Mathieu-Daudé April 22, 2025, 2:54 p.m. UTC
Replace compile-time check on CONFIG_{ACCEL} by
runtime check on {accel}_enabled() helpers.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 hw/arm/virt.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

Comments

Richard Henderson April 22, 2025, 5:56 p.m. UTC | #1
On 4/22/25 07:54, Philippe Mathieu-Daudé wrote:
> Replace compile-time check on CONFIG_{ACCEL} by
> runtime check on {accel}_enabled() helpers.
> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
>   hw/arm/virt.c | 8 ++++----
>   1 file changed, 4 insertions(+), 4 deletions(-)

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>


r~

> 
> diff --git a/hw/arm/virt.c b/hw/arm/virt.c
> index c6ae7cc1705..d7197958f7c 100644
> --- a/hw/arm/virt.c
> +++ b/hw/arm/virt.c
> @@ -3134,7 +3134,7 @@ static GSList *virt_get_valid_cpu_types(const MachineState *ms)
>   {
>       GSList *vct = NULL;
>   
> -#ifdef CONFIG_TCG
> +    if (tcg_enabled()) {
>           vct = g_slist_prepend(vct, g_strdup(ARM_CPU_TYPE_NAME("cortex-a7")));
>           vct = g_slist_prepend(vct, g_strdup(ARM_CPU_TYPE_NAME("cortex-a15")));
>   #ifdef TARGET_AARCH64
> @@ -3148,13 +3148,13 @@ static GSList *virt_get_valid_cpu_types(const MachineState *ms)
>           vct = g_slist_prepend(vct, g_strdup(ARM_CPU_TYPE_NAME("neoverse-v1")));
>           vct = g_slist_prepend(vct, g_strdup(ARM_CPU_TYPE_NAME("neoverse-n2")));
>   #endif /* TARGET_AARCH64 */
> -#endif /* CONFIG_TCG */
> +    }
>   #ifdef TARGET_AARCH64
>           vct = g_slist_prepend(vct, g_strdup(ARM_CPU_TYPE_NAME("cortex-a53")));
>           vct = g_slist_prepend(vct, g_strdup(ARM_CPU_TYPE_NAME("cortex-a57")));
> -#if defined(CONFIG_KVM) || defined(CONFIG_HVF)
> +        if (kvm_enabled() || hvf_enabled()) {
>               vct = g_slist_prepend(vct, g_strdup(ARM_CPU_TYPE_NAME("host")));
> -#endif /* CONFIG_KVM || CONFIG_HVF */
> +        }
>   #endif /* TARGET_AARCH64 */
>       vct = g_slist_prepend(vct, g_strdup(ARM_CPU_TYPE_NAME("max")));
>
Pierrick Bouvier April 22, 2025, 6:18 p.m. UTC | #2
On 4/22/25 07:54, Philippe Mathieu-Daudé wrote:
> Replace compile-time check on CONFIG_{ACCEL} by
> runtime check on {accel}_enabled() helpers.
> 

Maybe we can add it the description why it works: since 
get_valid_cpu_types is called after accelerator initialization.

qmp_x_exit_preconfig
   + qemu_init_board
     + machine_run_board_init
       + is_cpu_type_supported

which is called after:
configure_accelerators

It was an issue with the first approach building the list before main(), 
so worth mentioning.

> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
>   hw/arm/virt.c | 8 ++++----
>   1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/hw/arm/virt.c b/hw/arm/virt.c
> index c6ae7cc1705..d7197958f7c 100644
> --- a/hw/arm/virt.c
> +++ b/hw/arm/virt.c
> @@ -3134,7 +3134,7 @@ static GSList *virt_get_valid_cpu_types(const MachineState *ms)
>   {
>       GSList *vct = NULL;
>   
> -#ifdef CONFIG_TCG
> +    if (tcg_enabled()) {
>           vct = g_slist_prepend(vct, g_strdup(ARM_CPU_TYPE_NAME("cortex-a7")));
>           vct = g_slist_prepend(vct, g_strdup(ARM_CPU_TYPE_NAME("cortex-a15")));
>   #ifdef TARGET_AARCH64
> @@ -3148,13 +3148,13 @@ static GSList *virt_get_valid_cpu_types(const MachineState *ms)
>           vct = g_slist_prepend(vct, g_strdup(ARM_CPU_TYPE_NAME("neoverse-v1")));
>           vct = g_slist_prepend(vct, g_strdup(ARM_CPU_TYPE_NAME("neoverse-n2")));
>   #endif /* TARGET_AARCH64 */
> -#endif /* CONFIG_TCG */
> +    }
>   #ifdef TARGET_AARCH64
>           vct = g_slist_prepend(vct, g_strdup(ARM_CPU_TYPE_NAME("cortex-a53")));
>           vct = g_slist_prepend(vct, g_strdup(ARM_CPU_TYPE_NAME("cortex-a57")));
> -#if defined(CONFIG_KVM) || defined(CONFIG_HVF)
> +        if (kvm_enabled() || hvf_enabled()) {
>               vct = g_slist_prepend(vct, g_strdup(ARM_CPU_TYPE_NAME("host")));
> -#endif /* CONFIG_KVM || CONFIG_HVF */
> +        }
>   #endif /* TARGET_AARCH64 */
>       vct = g_slist_prepend(vct, g_strdup(ARM_CPU_TYPE_NAME("max")));
>
diff mbox series

Patch

diff --git a/hw/arm/virt.c b/hw/arm/virt.c
index c6ae7cc1705..d7197958f7c 100644
--- a/hw/arm/virt.c
+++ b/hw/arm/virt.c
@@ -3134,7 +3134,7 @@  static GSList *virt_get_valid_cpu_types(const MachineState *ms)
 {
     GSList *vct = NULL;
 
-#ifdef CONFIG_TCG
+    if (tcg_enabled()) {
         vct = g_slist_prepend(vct, g_strdup(ARM_CPU_TYPE_NAME("cortex-a7")));
         vct = g_slist_prepend(vct, g_strdup(ARM_CPU_TYPE_NAME("cortex-a15")));
 #ifdef TARGET_AARCH64
@@ -3148,13 +3148,13 @@  static GSList *virt_get_valid_cpu_types(const MachineState *ms)
         vct = g_slist_prepend(vct, g_strdup(ARM_CPU_TYPE_NAME("neoverse-v1")));
         vct = g_slist_prepend(vct, g_strdup(ARM_CPU_TYPE_NAME("neoverse-n2")));
 #endif /* TARGET_AARCH64 */
-#endif /* CONFIG_TCG */
+    }
 #ifdef TARGET_AARCH64
         vct = g_slist_prepend(vct, g_strdup(ARM_CPU_TYPE_NAME("cortex-a53")));
         vct = g_slist_prepend(vct, g_strdup(ARM_CPU_TYPE_NAME("cortex-a57")));
-#if defined(CONFIG_KVM) || defined(CONFIG_HVF)
+        if (kvm_enabled() || hvf_enabled()) {
             vct = g_slist_prepend(vct, g_strdup(ARM_CPU_TYPE_NAME("host")));
-#endif /* CONFIG_KVM || CONFIG_HVF */
+        }
 #endif /* TARGET_AARCH64 */
     vct = g_slist_prepend(vct, g_strdup(ARM_CPU_TYPE_NAME("max")));