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

Philippe Mathieu-Daudé posted 48 patches 4 months, 3 weeks ago
Only 41 patches received!
There is a newer version of this series
[RFC PATCH v2 40/48] accel: Factor accel_cpu_realize() out
Posted by Philippe Mathieu-Daudé 4 months, 3 weeks ago
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);
+}
+
 void accel_cpu_common_unrealize(CPUState *cpu)
 {
     AccelState *accel = current_accel();
-- 
2.49.0


Re: [RFC PATCH v2 40/48] accel: Factor accel_cpu_realize() out
Posted by Richard Henderson 4 months, 3 weeks ago
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();


Re: [RFC PATCH v2 40/48] accel: Factor accel_cpu_realize() out
Posted by Philippe Mathieu-Daudé 4 months, 3 weeks ago
On 22/6/25 04:14, Richard Henderson wrote:
> 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?

Indeed ;)