[PATCH] target/arm: Restrict arm_do_plugin_vcpu_discon_cb() to TCG

Philippe Mathieu-Daudé posted 1 patch 1 week, 5 days ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20260814080507.23196-1-philmd@oss.qualcomm.com
Maintainers: Peter Maydell <peter.maydell@linaro.org>
target/arm/helper.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
[PATCH] target/arm: Restrict arm_do_plugin_vcpu_discon_cb() to TCG
Posted by Philippe Mathieu-Daudé 1 week, 5 days ago
So far TCG plugins can only be used when TCG is available.
Move the arm_do_plugin_vcpu_discon_cb() call within the
'if tcg_enabled' block and wrap the definition with #ifdef'ry.

Signed-off-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>
---
 target/arm/helper.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/target/arm/helper.c b/target/arm/helper.c
index af45234ad2a..adae2b2b8e5 100644
--- a/target/arm/helper.c
+++ b/target/arm/helper.c
@@ -8915,6 +8915,7 @@ static void take_aarch32_exception(CPUARMState *env, int new_mode,
     }
 }
 
+#ifdef CONFIG_TCG
 void arm_do_plugin_vcpu_discon_cb(CPUState *cs, uint64_t from)
 {
     switch (cs->exception_index) {
@@ -8932,6 +8933,7 @@ void arm_do_plugin_vcpu_discon_cb(CPUState *cs, uint64_t from)
         qemu_plugin_vcpu_exception_cb(cs, from);
     }
 }
+#endif
 
 static void arm_cpu_do_interrupt_aarch32_hyp(CPUState *cs)
 {
@@ -9677,9 +9679,9 @@ void arm_cpu_do_interrupt(CPUState *cs)
 
     if (tcg_enabled()) {
         cpu_set_interrupt(cs, CPU_INTERRUPT_EXITTB);
-    }
 
-    arm_do_plugin_vcpu_discon_cb(cs, last_pc);
+        arm_do_plugin_vcpu_discon_cb(cs, last_pc);
+    }
 }
 #endif /* !CONFIG_USER_ONLY */
 
-- 
2.53.0


Re: [PATCH] target/arm: Restrict arm_do_plugin_vcpu_discon_cb() to TCG
Posted by Peter Maydell 1 week, 4 days ago
On Fri, 14 Aug 2026 at 09:05, Philippe Mathieu-Daudé
<philmd@oss.qualcomm.com> wrote:
>
> So far TCG plugins can only be used when TCG is available.
> Move the arm_do_plugin_vcpu_discon_cb() call within the
> 'if tcg_enabled' block and wrap the definition with #ifdef'ry.
>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>

Applied to target-arm.next, thanks.

Does this fix any user-facing issue, or is it just something
we need to sort out for hybrid acceleration ?

-- PMM
Re: [PATCH] target/arm: Restrict arm_do_plugin_vcpu_discon_cb() to TCG
Posted by Philippe Mathieu-Daudé 1 week, 4 days ago
On 15/8/26 17:08, Peter Maydell wrote:
> On Fri, 14 Aug 2026 at 09:05, Philippe Mathieu-Daudé
> <philmd@oss.qualcomm.com> wrote:
>>
>> So far TCG plugins can only be used when TCG is available.
>> Move the arm_do_plugin_vcpu_discon_cb() call within the
>> 'if tcg_enabled' block and wrap the definition with #ifdef'ry.
>>
>> Signed-off-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>
> 
> Applied to target-arm.next, thanks.
> 
> Does this fix any user-facing issue, or is it just something
> we need to sort out for hybrid acceleration ?

Not an user-facing issue so far, but will emerge soon (the
hybrid-accel series is too big and hard to split, I am trying to
split unasorted cleanups of to reduce its size).

Re: [PATCH] target/arm: Restrict arm_do_plugin_vcpu_discon_cb() to TCG
Posted by Pierrick Bouvier 1 week, 5 days ago
On 8/14/2026 1:05 AM, Philippe Mathieu-Daudé wrote:
> So far TCG plugins can only be used when TCG is available.
> Move the arm_do_plugin_vcpu_discon_cb() call within the
> 'if tcg_enabled' block and wrap the definition with #ifdef'ry.
> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>
> ---
>  target/arm/helper.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 

Reviewed-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>

Re: [PATCH] target/arm: Restrict arm_do_plugin_vcpu_discon_cb() to TCG
Posted by Pierrick Bouvier 1 week, 5 days ago
On 8/14/2026 8:35 AM, Pierrick Bouvier wrote:
> On 8/14/2026 1:05 AM, Philippe Mathieu-Daudé wrote:
>> So far TCG plugins can only be used when TCG is available.
>> Move the arm_do_plugin_vcpu_discon_cb() call within the
>> 'if tcg_enabled' block and wrap the definition with #ifdef'ry.
>>
>> Signed-off-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>
>> ---
>>  target/arm/helper.c | 6 ++++--
>>  1 file changed, 4 insertions(+), 2 deletions(-)
>>
> 
> Reviewed-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>

I'll let Peter pull this, even if related to plugins, it belongs to
target/arm.

Regards,
Pierrick

Re: [PATCH] target/arm: Restrict arm_do_plugin_vcpu_discon_cb() to TCG
Posted by Philippe Mathieu-Daudé 1 week, 5 days ago
On 14/8/26 10:05, Philippe Mathieu-Daudé wrote:
> So far TCG plugins can only be used when TCG is available.
> Move the arm_do_plugin_vcpu_discon_cb() call within the
> 'if tcg_enabled' block and wrap the definition with #ifdef'ry.
> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>
> ---

BTW luckily, except PPC, all other targets with HW accelerator
support already have this restricted to TCG (X86, LoongArch,
RISCV, S390x). Since I'm only testing hybrid acceleration on
ARM I don't have the need to do the equivalent cleanup on PPC.

>   target/arm/helper.c | 6 ++++--
>   1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/target/arm/helper.c b/target/arm/helper.c
> index af45234ad2a..adae2b2b8e5 100644
> --- a/target/arm/helper.c
> +++ b/target/arm/helper.c
> @@ -8915,6 +8915,7 @@ static void take_aarch32_exception(CPUARMState *env, int new_mode,
>       }
>   }
>   
> +#ifdef CONFIG_TCG
>   void arm_do_plugin_vcpu_discon_cb(CPUState *cs, uint64_t from)
>   {
>       switch (cs->exception_index) {
> @@ -8932,6 +8933,7 @@ void arm_do_plugin_vcpu_discon_cb(CPUState *cs, uint64_t from)
>           qemu_plugin_vcpu_exception_cb(cs, from);
>       }
>   }
> +#endif
>   
>   static void arm_cpu_do_interrupt_aarch32_hyp(CPUState *cs)
>   {
> @@ -9677,9 +9679,9 @@ void arm_cpu_do_interrupt(CPUState *cs)
>   
>       if (tcg_enabled()) {
>           cpu_set_interrupt(cs, CPU_INTERRUPT_EXITTB);
> -    }
>   
> -    arm_do_plugin_vcpu_discon_cb(cs, last_pc);
> +        arm_do_plugin_vcpu_discon_cb(cs, last_pc);
> +    }
>   }
>   #endif /* !CONFIG_USER_ONLY */
>