diff mbox series

[RFC,v2,40/48] accel: Factor accel_cpu_realize() out

Message ID 20250620171342.92678-41-philmd@linaro.org
State New
Headers show
Series accel: Preparatory cleanups for split-accel | expand

Commit Message

Philippe Mathieu-Daudé June 20, 2025, 5:13 p.m. UTC
Factor accel_cpu_realize() out of accel_cpu_common_realize()
for re-use.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 accel/accel-internal.h |  2 ++
 accel/accel-common.c   | 15 ++++++++++++---
 2 files changed, 14 insertions(+), 3 deletions(-)

Comments

Richard Henderson June 22, 2025, 2:14 a.m. UTC | #1
On 6/20/25 10:13, Philippe Mathieu-Daudé wrote:
> Factor accel_cpu_realize() out of accel_cpu_common_realize()
> for re-use.
> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
>   accel/accel-internal.h |  2 ++
>   accel/accel-common.c   | 15 ++++++++++++---
>   2 files changed, 14 insertions(+), 3 deletions(-)
> 
> diff --git a/accel/accel-internal.h b/accel/accel-internal.h
> index d3a4422cbf7..b541377c349 100644
> --- a/accel/accel-internal.h
> +++ b/accel/accel-internal.h
> @@ -14,4 +14,6 @@
>   
>   void accel_init_ops_interfaces(AccelClass *ac);
>   
> +bool accel_cpu_realize(AccelState *accel, CPUState *cpu, Error **errp);
> +
>   #endif /* ACCEL_SYSTEM_H */
> diff --git a/accel/accel-common.c b/accel/accel-common.c
> index 24038acf4aa..0f2aa783ab2 100644
> --- a/accel/accel-common.c
> +++ b/accel/accel-common.c
> @@ -122,10 +122,14 @@ void accel_create_vcpu_thread(AccelState *accel, CPUState *cpu)
>       }
>   }
>   
> -bool accel_cpu_common_realize(CPUState *cpu, Error **errp)
> +bool accel_cpu_realize(AccelState *accel, CPUState *cpu, Error **errp)
>   {
> -    AccelState *accel = current_accel();
> -    AccelClass *acc = ACCEL_GET_CLASS(accel);
> +    AccelClass *acc;
> +
> +    if (!accel) {
> +        accel = current_accel();
> +    }
> +    acc = ACCEL_GET_CLASS(accel);
>   
>       /* target specific realization */
>       if (cpu->cc->accel_cpu
> @@ -147,6 +151,11 @@ bool accel_cpu_common_realize(CPUState *cpu, Error **errp)
>       return true;
>   }
>   
> +bool accel_cpu_common_realize(CPUState *cpu, Error **errp)
> +{
> +    return accel_cpu_realize(NULL, cpu, errp);

Why pass null here, and why check for it in the new function?

r~

> +}
> +
>   void accel_cpu_common_unrealize(CPUState *cpu)
>   {
>       AccelState *accel = current_accel();
diff mbox series

Patch

diff --git a/accel/accel-internal.h b/accel/accel-internal.h
index d3a4422cbf7..b541377c349 100644
--- a/accel/accel-internal.h
+++ b/accel/accel-internal.h
@@ -14,4 +14,6 @@ 
 
 void accel_init_ops_interfaces(AccelClass *ac);
 
+bool accel_cpu_realize(AccelState *accel, CPUState *cpu, Error **errp);
+
 #endif /* ACCEL_SYSTEM_H */
diff --git a/accel/accel-common.c b/accel/accel-common.c
index 24038acf4aa..0f2aa783ab2 100644
--- a/accel/accel-common.c
+++ b/accel/accel-common.c
@@ -122,10 +122,14 @@  void accel_create_vcpu_thread(AccelState *accel, CPUState *cpu)
     }
 }
 
-bool accel_cpu_common_realize(CPUState *cpu, Error **errp)
+bool accel_cpu_realize(AccelState *accel, CPUState *cpu, Error **errp)
 {
-    AccelState *accel = current_accel();
-    AccelClass *acc = ACCEL_GET_CLASS(accel);
+    AccelClass *acc;
+
+    if (!accel) {
+        accel = current_accel();
+    }
+    acc = ACCEL_GET_CLASS(accel);
 
     /* target specific realization */
     if (cpu->cc->accel_cpu
@@ -147,6 +151,11 @@  bool accel_cpu_common_realize(CPUState *cpu, Error **errp)
     return true;
 }
 
+bool accel_cpu_common_realize(CPUState *cpu, Error **errp)
+{
+    return accel_cpu_realize(NULL, cpu, errp);
+}
+
 void accel_cpu_common_unrealize(CPUState *cpu)
 {
     AccelState *accel = current_accel();