[RFC PATCH RESEND 13/42] accel/split: Implement cpu_reset_hold()

Philippe Mathieu-Daudé posted 42 patches 4 months, 3 weeks ago
[RFC PATCH RESEND 13/42] accel/split: Implement cpu_reset_hold()
Posted by Philippe Mathieu-Daudé 4 months, 3 weeks ago
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 accel/split/split-accel-ops.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/accel/split/split-accel-ops.c b/accel/split/split-accel-ops.c
index 39495fdff14..d4fa07c2dec 100644
--- a/accel/split/split-accel-ops.c
+++ b/accel/split/split-accel-ops.c
@@ -10,6 +10,7 @@
 #include "qemu/main-loop.h"
 #include "qemu/guest-random.h"
 #include "exec/cpu-common.h"
+#include "hw/core/cpu.h"
 #include "system/accel-ops.h"
 #include "system/cpus.h"
 #include "split-accel.h"
@@ -121,7 +122,16 @@ static void split_cpu_common_unrealize(CPUState *cpu)
 
 static void split_cpu_reset_hold(CPUState *cpu)
 {
-    g_assert_not_reached();
+    SplitAccelState *sas = SPLIT_ACCEL(cpu->accel->accel);
+    AccelClass *hwc = ACCEL_GET_CLASS(sas->hw);
+    AccelClass *swc = ACCEL_GET_CLASS(sas->sw);
+
+    if (hwc->ops->cpu_reset_hold) {
+        hwc->ops->cpu_reset_hold(cpu);
+    }
+    if (swc->ops->cpu_reset_hold) {
+        swc->ops->cpu_reset_hold(cpu);
+    }
 }
 
 static void split_kick_vcpu_thread(CPUState *cpu)
-- 
2.49.0


Re: [RFC PATCH RESEND 13/42] accel/split: Implement cpu_reset_hold()
Posted by Richard Henderson 4 months, 3 weeks ago
On 6/20/25 10:27, Philippe Mathieu-Daudé wrote:
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
>   accel/split/split-accel-ops.c | 12 +++++++++++-
>   1 file changed, 11 insertions(+), 1 deletion(-)

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

r~

> 
> diff --git a/accel/split/split-accel-ops.c b/accel/split/split-accel-ops.c
> index 39495fdff14..d4fa07c2dec 100644
> --- a/accel/split/split-accel-ops.c
> +++ b/accel/split/split-accel-ops.c
> @@ -10,6 +10,7 @@
>   #include "qemu/main-loop.h"
>   #include "qemu/guest-random.h"
>   #include "exec/cpu-common.h"
> +#include "hw/core/cpu.h"
>   #include "system/accel-ops.h"
>   #include "system/cpus.h"
>   #include "split-accel.h"
> @@ -121,7 +122,16 @@ static void split_cpu_common_unrealize(CPUState *cpu)
>   
>   static void split_cpu_reset_hold(CPUState *cpu)
>   {
> -    g_assert_not_reached();
> +    SplitAccelState *sas = SPLIT_ACCEL(cpu->accel->accel);
> +    AccelClass *hwc = ACCEL_GET_CLASS(sas->hw);
> +    AccelClass *swc = ACCEL_GET_CLASS(sas->sw);
> +
> +    if (hwc->ops->cpu_reset_hold) {
> +        hwc->ops->cpu_reset_hold(cpu);
> +    }
> +    if (swc->ops->cpu_reset_hold) {
> +        swc->ops->cpu_reset_hold(cpu);
> +    }
>   }
>   
>   static void split_kick_vcpu_thread(CPUState *cpu)