[PATCH] accel/common: Remove last bit of target-specific code

Philippe Mathieu-Daudé posted 1 patch 2 days, 2 hours ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20260528140857.44130-1-philmd@linaro.org
Maintainers: Richard Henderson <richard.henderson@linaro.org>, Paolo Bonzini <pbonzini@redhat.com>, "Philippe Mathieu-Daudé" <philmd@mailo.com>
accel/accel-common.c | 15 +++++++++++++++
accel/accel-target.c | 41 -----------------------------------------
accel/meson.build    |  1 -
3 files changed, 15 insertions(+), 42 deletions(-)
delete mode 100644 accel/accel-target.c
[PATCH] accel/common: Remove last bit of target-specific code
Posted by Philippe Mathieu-Daudé 2 days, 2 hours ago
Initialize the TypeInfo structure at runtime using the TargetInfo
API to resolve TYPE_ACCEL_CPU, replacing CPU_RESOLVING_TYPE by
target_cpu_type(). Since the code is no more target-specific, move
it to accel-common.c, removing the need for accel-target.c.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
Cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>

Pierrick, this is an alternative for both
20260528051642.115721-4-pierrick.bouvier@oss.qualcomm.com
and
20260528051642.115721-5-pierrick.bouvier@oss.qualcomm.com
for your "single-binary: fix compilation/execution for {arm,
aarch32, microblaze}" series. WDYT?
---
 accel/accel-common.c | 15 +++++++++++++++
 accel/accel-target.c | 41 -----------------------------------------
 accel/meson.build    |  1 -
 3 files changed, 15 insertions(+), 42 deletions(-)
 delete mode 100644 accel/accel-target.c

diff --git a/accel/accel-common.c b/accel/accel-common.c
index 9c5b4111c8d..62590a7d9a6 100644
--- a/accel/accel-common.c
+++ b/accel/accel-common.c
@@ -134,3 +134,18 @@ static const TypeInfo accel_types[] = {
 };
 
 DEFINE_TYPES(accel_types)
+
+static void register_accel_target_type(void)
+{
+    g_autofree char *name = g_strconcat("accel-", target_cpu_type(), NULL);
+    const TypeInfo accel_cpu_type = {
+        .name = name,
+        .parent = TYPE_OBJECT,
+        .abstract = true,
+        .class_size = sizeof(AccelCPUClass),
+    };
+
+    type_register_static(&accel_cpu_type);
+}
+
+type_init(register_accel_target_type);
diff --git a/accel/accel-target.c b/accel/accel-target.c
deleted file mode 100644
index 7fd392fbc4a..00000000000
--- a/accel/accel-target.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * QEMU accel class, components common to system emulation and user mode
- *
- * Copyright (c) 2003-2008 Fabrice Bellard
- * Copyright (c) 2014 Red Hat Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-#include "qemu/osdep.h"
-#include "accel/accel-cpu-target.h"
-
-static const TypeInfo accel_cpu_type = {
-    .name = TYPE_ACCEL_CPU,
-    .parent = TYPE_OBJECT,
-    .abstract = true,
-    .class_size = sizeof(AccelCPUClass),
-};
-
-static void register_accel_types(void)
-{
-    type_register_static(&accel_cpu_type);
-}
-
-type_init(register_accel_types);
diff --git a/accel/meson.build b/accel/meson.build
index 7da12b9741f..1b5b37e3097 100644
--- a/accel/meson.build
+++ b/accel/meson.build
@@ -1,5 +1,4 @@
 common_ss.add(files('accel-common.c'))
-specific_ss.add(files('accel-target.c'))
 system_ss.add(files('accel-system.c', 'accel-blocker.c', 'accel-qmp.c', 'accel-irq.c'))
 user_ss.add(files('accel-user.c'))
 
-- 
2.53.0


Re: [PATCH] accel/common: Remove last bit of target-specific code
Posted by Pierrick Bouvier 1 day, 22 hours ago
On 5/28/2026 7:08 AM, Philippe Mathieu-Daudé wrote:
> Initialize the TypeInfo structure at runtime using the TargetInfo
> API to resolve TYPE_ACCEL_CPU, replacing CPU_RESOLVING_TYPE by
> target_cpu_type(). Since the code is no more target-specific, move
> it to accel-common.c, removing the need for accel-target.c.
> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
> Cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
> 
> Pierrick, this is an alternative for both
> 20260528051642.115721-4-pierrick.bouvier@oss.qualcomm.com
> and
> 20260528051642.115721-5-pierrick.bouvier@oss.qualcomm.com
> for your "single-binary: fix compilation/execution for {arm,
> aarch32, microblaze}" series. WDYT?
> ---
>  accel/accel-common.c | 15 +++++++++++++++
>  accel/accel-target.c | 41 -----------------------------------------
>  accel/meson.build    |  1 -
>  3 files changed, 15 insertions(+), 42 deletions(-)
>  delete mode 100644 accel/accel-target.c
> 
> diff --git a/accel/accel-common.c b/accel/accel-common.c
> index 9c5b4111c8d..62590a7d9a6 100644
> --- a/accel/accel-common.c
> +++ b/accel/accel-common.c
> @@ -134,3 +134,18 @@ static const TypeInfo accel_types[] = {
>  };
>  
>  DEFINE_TYPES(accel_types)
> +
> +static void register_accel_target_type(void)
> +{
> +    g_autofree char *name = g_strconcat("accel-", target_cpu_type(), NULL);
> +    const TypeInfo accel_cpu_type = {
> +        .name = name,
> +        .parent = TYPE_OBJECT,
> +        .abstract = true,
> +        .class_size = sizeof(AccelCPUClass),
> +    };
> +
> +    type_register_static(&accel_cpu_type);
> +}
> +
> +type_init(register_accel_target_type);
> diff --git a/accel/accel-target.c b/accel/accel-target.c
> deleted file mode 100644
> index 7fd392fbc4a..00000000000
> --- a/accel/accel-target.c
> +++ /dev/null
> @@ -1,41 +0,0 @@
> -/*
> - * QEMU accel class, components common to system emulation and user mode
> - *
> - * Copyright (c) 2003-2008 Fabrice Bellard
> - * Copyright (c) 2014 Red Hat Inc.
> - *
> - * Permission is hereby granted, free of charge, to any person obtaining a copy
> - * of this software and associated documentation files (the "Software"), to deal
> - * in the Software without restriction, including without limitation the rights
> - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> - * copies of the Software, and to permit persons to whom the Software is
> - * furnished to do so, subject to the following conditions:
> - *
> - * The above copyright notice and this permission notice shall be included in
> - * all copies or substantial portions of the Software.
> - *
> - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
> - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
> - * THE SOFTWARE.
> - */
> -
> -#include "qemu/osdep.h"
> -#include "accel/accel-cpu-target.h"
> -
> -static const TypeInfo accel_cpu_type = {
> -    .name = TYPE_ACCEL_CPU,
> -    .parent = TYPE_OBJECT,
> -    .abstract = true,
> -    .class_size = sizeof(AccelCPUClass),
> -};
> -
> -static void register_accel_types(void)
> -{
> -    type_register_static(&accel_cpu_type);
> -}
> -
> -type_init(register_accel_types);
> diff --git a/accel/meson.build b/accel/meson.build
> index 7da12b9741f..1b5b37e3097 100644
> --- a/accel/meson.build
> +++ b/accel/meson.build
> @@ -1,5 +1,4 @@
>  common_ss.add(files('accel-common.c'))
> -specific_ss.add(files('accel-target.c'))
>  system_ss.add(files('accel-system.c', 'accel-blocker.c', 'accel-qmp.c', 'accel-irq.c'))
>  user_ss.add(files('accel-user.c'))
>  

I'm open to follow this approach first .
The only downside is that it limits to a single accelerator parent type,
which will be a problem as soon as we have two arch using this framework
for tcg. Nothing we can't solve later though.

Regards,
Pierrick

Re: [PATCH] accel/common: Remove last bit of target-specific code
Posted by Pierrick Bouvier 1 day, 22 hours ago
On 5/28/2026 11:47 AM, Pierrick Bouvier wrote:
> On 5/28/2026 7:08 AM, Philippe Mathieu-Daudé wrote:
>> Initialize the TypeInfo structure at runtime using the TargetInfo
>> API to resolve TYPE_ACCEL_CPU, replacing CPU_RESOLVING_TYPE by
>> target_cpu_type(). Since the code is no more target-specific, move
>> it to accel-common.c, removing the need for accel-target.c.
>>
>> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>> ---
>> Cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
>>
>> Pierrick, this is an alternative for both
>> 20260528051642.115721-4-pierrick.bouvier@oss.qualcomm.com
>> and
>> 20260528051642.115721-5-pierrick.bouvier@oss.qualcomm.com
>> for your "single-binary: fix compilation/execution for {arm,
>> aarch32, microblaze}" series. WDYT?
>> ---
>>  accel/accel-common.c | 15 +++++++++++++++
>>  accel/accel-target.c | 41 -----------------------------------------
>>  accel/meson.build    |  1 -
>>  3 files changed, 15 insertions(+), 42 deletions(-)
>>  delete mode 100644 accel/accel-target.c
>>
>> diff --git a/accel/accel-common.c b/accel/accel-common.c
>> index 9c5b4111c8d..62590a7d9a6 100644
>> --- a/accel/accel-common.c
>> +++ b/accel/accel-common.c
>> @@ -134,3 +134,18 @@ static const TypeInfo accel_types[] = {
>>  };
>>  
>>  DEFINE_TYPES(accel_types)
>> +
>> +static void register_accel_target_type(void)
>> +{
>> +    g_autofree char *name = g_strconcat("accel-", target_cpu_type(), NULL);
>> +    const TypeInfo accel_cpu_type = {
>> +        .name = name,
>> +        .parent = TYPE_OBJECT,
>> +        .abstract = true,
>> +        .class_size = sizeof(AccelCPUClass),
>> +    };
>> +
>> +    type_register_static(&accel_cpu_type);
>> +}
>> +
>> +type_init(register_accel_target_type);
>> diff --git a/accel/accel-target.c b/accel/accel-target.c
>> deleted file mode 100644
>> index 7fd392fbc4a..00000000000
>> --- a/accel/accel-target.c
>> +++ /dev/null
>> @@ -1,41 +0,0 @@
>> -/*
>> - * QEMU accel class, components common to system emulation and user mode
>> - *
>> - * Copyright (c) 2003-2008 Fabrice Bellard
>> - * Copyright (c) 2014 Red Hat Inc.
>> - *
>> - * Permission is hereby granted, free of charge, to any person obtaining a copy
>> - * of this software and associated documentation files (the "Software"), to deal
>> - * in the Software without restriction, including without limitation the rights
>> - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
>> - * copies of the Software, and to permit persons to whom the Software is
>> - * furnished to do so, subject to the following conditions:
>> - *
>> - * The above copyright notice and this permission notice shall be included in
>> - * all copies or substantial portions of the Software.
>> - *
>> - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
>> - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
>> - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
>> - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
>> - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
>> - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
>> - * THE SOFTWARE.
>> - */
>> -
>> -#include "qemu/osdep.h"
>> -#include "accel/accel-cpu-target.h"
>> -
>> -static const TypeInfo accel_cpu_type = {
>> -    .name = TYPE_ACCEL_CPU,
>> -    .parent = TYPE_OBJECT,
>> -    .abstract = true,
>> -    .class_size = sizeof(AccelCPUClass),
>> -};
>> -
>> -static void register_accel_types(void)
>> -{
>> -    type_register_static(&accel_cpu_type);
>> -}
>> -
>> -type_init(register_accel_types);
>> diff --git a/accel/meson.build b/accel/meson.build
>> index 7da12b9741f..1b5b37e3097 100644
>> --- a/accel/meson.build
>> +++ b/accel/meson.build
>> @@ -1,5 +1,4 @@
>>  common_ss.add(files('accel-common.c'))
>> -specific_ss.add(files('accel-target.c'))
>>  system_ss.add(files('accel-system.c', 'accel-blocker.c', 'accel-qmp.c', 'accel-irq.c'))
>>  user_ss.add(files('accel-user.c'))
>>  
> 
> I'm open to follow this approach first .
> The only downside is that it limits to a single accelerator parent type,
> which will be a problem as soon as we have two arch using this framework
> for tcg. Nothing we can't solve later though.
> 
> Regards,
> Pierrick

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

Re: [PATCH] accel/common: Remove last bit of target-specific code
Posted by Philippe Mathieu-Daudé 1 day, 20 hours ago
On 28/5/26 20:47, Pierrick Bouvier wrote:
> On 5/28/2026 11:47 AM, Pierrick Bouvier wrote:
>> On 5/28/2026 7:08 AM, Philippe Mathieu-Daudé wrote:
>>> Initialize the TypeInfo structure at runtime using the TargetInfo
>>> API to resolve TYPE_ACCEL_CPU, replacing CPU_RESOLVING_TYPE by
>>> target_cpu_type(). Since the code is no more target-specific, move
>>> it to accel-common.c, removing the need for accel-target.c.
>>>
>>> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>>> ---
>>> Cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
>>>
>>> Pierrick, this is an alternative for both
>>> 20260528051642.115721-4-pierrick.bouvier@oss.qualcomm.com
>>> and
>>> 20260528051642.115721-5-pierrick.bouvier@oss.qualcomm.com
>>> for your "single-binary: fix compilation/execution for {arm,
>>> aarch32, microblaze}" series. WDYT?
>>> ---
>>>   accel/accel-common.c | 15 +++++++++++++++
>>>   accel/accel-target.c | 41 -----------------------------------------
>>>   accel/meson.build    |  1 -
>>>   3 files changed, 15 insertions(+), 42 deletions(-)
>>>   delete mode 100644 accel/accel-target.c
>>>
>>> diff --git a/accel/accel-common.c b/accel/accel-common.c
>>> index 9c5b4111c8d..62590a7d9a6 100644
>>> --- a/accel/accel-common.c
>>> +++ b/accel/accel-common.c
>>> @@ -134,3 +134,18 @@ static const TypeInfo accel_types[] = {
>>>   };
>>>   
>>>   DEFINE_TYPES(accel_types)
>>> +
>>> +static void register_accel_target_type(void)
>>> +{
>>> +    g_autofree char *name = g_strconcat("accel-", target_cpu_type(), NULL);
>>> +    const TypeInfo accel_cpu_type = {
>>> +        .name = name,
>>> +        .parent = TYPE_OBJECT,
>>> +        .abstract = true,
>>> +        .class_size = sizeof(AccelCPUClass),
>>> +    };
>>> +
>>> +    type_register_static(&accel_cpu_type);
>>> +}
>>> +
>>> +type_init(register_accel_target_type);
>>> diff --git a/accel/accel-target.c b/accel/accel-target.c
>>> deleted file mode 100644
>>> index 7fd392fbc4a..00000000000
>>> --- a/accel/accel-target.c
>>> +++ /dev/null
>>> @@ -1,41 +0,0 @@
>>> -/*
>>> - * QEMU accel class, components common to system emulation and user mode
>>> - *
>>> - * Copyright (c) 2003-2008 Fabrice Bellard
>>> - * Copyright (c) 2014 Red Hat Inc.
>>> - *
>>> - * Permission is hereby granted, free of charge, to any person obtaining a copy
>>> - * of this software and associated documentation files (the "Software"), to deal
>>> - * in the Software without restriction, including without limitation the rights
>>> - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
>>> - * copies of the Software, and to permit persons to whom the Software is
>>> - * furnished to do so, subject to the following conditions:
>>> - *
>>> - * The above copyright notice and this permission notice shall be included in
>>> - * all copies or substantial portions of the Software.
>>> - *
>>> - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
>>> - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
>>> - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
>>> - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
>>> - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
>>> - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
>>> - * THE SOFTWARE.
>>> - */
>>> -
>>> -#include "qemu/osdep.h"
>>> -#include "accel/accel-cpu-target.h"
>>> -
>>> -static const TypeInfo accel_cpu_type = {
>>> -    .name = TYPE_ACCEL_CPU,
>>> -    .parent = TYPE_OBJECT,
>>> -    .abstract = true,
>>> -    .class_size = sizeof(AccelCPUClass),
>>> -};
>>> -
>>> -static void register_accel_types(void)
>>> -{
>>> -    type_register_static(&accel_cpu_type);
>>> -}
>>> -
>>> -type_init(register_accel_types);
>>> diff --git a/accel/meson.build b/accel/meson.build
>>> index 7da12b9741f..1b5b37e3097 100644
>>> --- a/accel/meson.build
>>> +++ b/accel/meson.build
>>> @@ -1,5 +1,4 @@
>>>   common_ss.add(files('accel-common.c'))
>>> -specific_ss.add(files('accel-target.c'))
>>>   system_ss.add(files('accel-system.c', 'accel-blocker.c', 'accel-qmp.c', 'accel-irq.c'))
>>>   user_ss.add(files('accel-user.c'))
>>>   
>>
>> I'm open to follow this approach first .
>> The only downside is that it limits to a single accelerator parent type,
>> which will be a problem as soon as we have two arch using this framework
>> for tcg. Nothing we can't solve later though.

Good point. I'll see how to handle that (as a following up patch).

>>
>> Regards,
>> Pierrick
> 
> Forgot :)
> Reviewed-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>


Re: [PATCH] accel/common: Remove last bit of target-specific code
Posted by Pierrick Bouvier 1 day, 20 hours ago
On 5/28/2026 12:59 PM, Philippe Mathieu-Daudé wrote:
> On 28/5/26 20:47, Pierrick Bouvier wrote:
>> On 5/28/2026 11:47 AM, Pierrick Bouvier wrote:
>>> On 5/28/2026 7:08 AM, Philippe Mathieu-Daudé wrote:
>>>> Initialize the TypeInfo structure at runtime using the TargetInfo
>>>> API to resolve TYPE_ACCEL_CPU, replacing CPU_RESOLVING_TYPE by
>>>> target_cpu_type(). Since the code is no more target-specific, move
>>>> it to accel-common.c, removing the need for accel-target.c.
>>>>
>>>> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>>>> ---
>>>> Cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
>>>>
>>>> Pierrick, this is an alternative for both
>>>> 20260528051642.115721-4-pierrick.bouvier@oss.qualcomm.com
>>>> and
>>>> 20260528051642.115721-5-pierrick.bouvier@oss.qualcomm.com
>>>> for your "single-binary: fix compilation/execution for {arm,
>>>> aarch32, microblaze}" series. WDYT?
>>>> ---
>>>>   accel/accel-common.c | 15 +++++++++++++++
>>>>   accel/accel-target.c | 41 -----------------------------------------
>>>>   accel/meson.build    |  1 -
>>>>   3 files changed, 15 insertions(+), 42 deletions(-)
>>>>   delete mode 100644 accel/accel-target.c
>>>>
>>>> diff --git a/accel/accel-common.c b/accel/accel-common.c
>>>> index 9c5b4111c8d..62590a7d9a6 100644
>>>> --- a/accel/accel-common.c
>>>> +++ b/accel/accel-common.c
>>>> @@ -134,3 +134,18 @@ static const TypeInfo accel_types[] = {
>>>>   };
>>>>     DEFINE_TYPES(accel_types)
>>>> +
>>>> +static void register_accel_target_type(void)
>>>> +{
>>>> +    g_autofree char *name = g_strconcat("accel-",
>>>> target_cpu_type(), NULL);
>>>> +    const TypeInfo accel_cpu_type = {
>>>> +        .name = name,
>>>> +        .parent = TYPE_OBJECT,
>>>> +        .abstract = true,
>>>> +        .class_size = sizeof(AccelCPUClass),
>>>> +    };
>>>> +
>>>> +    type_register_static(&accel_cpu_type);
>>>> +}
>>>> +
>>>> +type_init(register_accel_target_type);
>>>> diff --git a/accel/accel-target.c b/accel/accel-target.c
>>>> deleted file mode 100644
>>>> index 7fd392fbc4a..00000000000
>>>> --- a/accel/accel-target.c
>>>> +++ /dev/null
>>>> @@ -1,41 +0,0 @@
>>>> -/*
>>>> - * QEMU accel class, components common to system emulation and user
>>>> mode
>>>> - *
>>>> - * Copyright (c) 2003-2008 Fabrice Bellard
>>>> - * Copyright (c) 2014 Red Hat Inc.
>>>> - *
>>>> - * Permission is hereby granted, free of charge, to any person
>>>> obtaining a copy
>>>> - * of this software and associated documentation files (the
>>>> "Software"), to deal
>>>> - * in the Software without restriction, including without
>>>> limitation the rights
>>>> - * to use, copy, modify, merge, publish, distribute, sublicense,
>>>> and/or sell
>>>> - * copies of the Software, and to permit persons to whom the
>>>> Software is
>>>> - * furnished to do so, subject to the following conditions:
>>>> - *
>>>> - * The above copyright notice and this permission notice shall be
>>>> included in
>>>> - * all copies or substantial portions of the Software.
>>>> - *
>>>> - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
>>>> EXPRESS OR
>>>> - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
>>>> MERCHANTABILITY,
>>>> - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
>>>> EVENT SHALL
>>>> - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
>>>> DAMAGES OR OTHER
>>>> - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
>>>> ARISING FROM,
>>>> - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
>>>> DEALINGS IN
>>>> - * THE SOFTWARE.
>>>> - */
>>>> -
>>>> -#include "qemu/osdep.h"
>>>> -#include "accel/accel-cpu-target.h"
>>>> -
>>>> -static const TypeInfo accel_cpu_type = {
>>>> -    .name = TYPE_ACCEL_CPU,
>>>> -    .parent = TYPE_OBJECT,
>>>> -    .abstract = true,
>>>> -    .class_size = sizeof(AccelCPUClass),
>>>> -};
>>>> -
>>>> -static void register_accel_types(void)
>>>> -{
>>>> -    type_register_static(&accel_cpu_type);
>>>> -}
>>>> -
>>>> -type_init(register_accel_types);
>>>> diff --git a/accel/meson.build b/accel/meson.build
>>>> index 7da12b9741f..1b5b37e3097 100644
>>>> --- a/accel/meson.build
>>>> +++ b/accel/meson.build
>>>> @@ -1,5 +1,4 @@
>>>>   common_ss.add(files('accel-common.c'))
>>>> -specific_ss.add(files('accel-target.c'))
>>>>   system_ss.add(files('accel-system.c', 'accel-blocker.c', 'accel-
>>>> qmp.c', 'accel-irq.c'))
>>>>   user_ss.add(files('accel-user.c'))
>>>>   
>>>
>>> I'm open to follow this approach first .
>>> The only downside is that it limits to a single accelerator parent type,
>>> which will be a problem as soon as we have two arch using this framework
>>> for tcg. Nothing we can't solve later though.
> 
> Good point. I'll see how to handle that (as a following up patch).
>

Maybe we need to duplicate this struct for each base architecture? :)

>>>
>>> Regards,
>>> Pierrick
>>
>> Forgot :)
>> Reviewed-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
> 


Re: [PATCH] accel/common: Remove last bit of target-specific code
Posted by Philippe Mathieu-Daudé 1 day, 2 hours ago
On 28/5/26 22:02, Pierrick Bouvier wrote:
> On 5/28/2026 12:59 PM, Philippe Mathieu-Daudé wrote:
>> On 28/5/26 20:47, Pierrick Bouvier wrote:
>>> On 5/28/2026 11:47 AM, Pierrick Bouvier wrote:
>>>> On 5/28/2026 7:08 AM, Philippe Mathieu-Daudé wrote:
>>>>> Initialize the TypeInfo structure at runtime using the TargetInfo
>>>>> API to resolve TYPE_ACCEL_CPU, replacing CPU_RESOLVING_TYPE by
>>>>> target_cpu_type(). Since the code is no more target-specific, move
>>>>> it to accel-common.c, removing the need for accel-target.c.
>>>>>
>>>>> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>>>>> ---
>>>>> Cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
>>>>>
>>>>> Pierrick, this is an alternative for both
>>>>> 20260528051642.115721-4-pierrick.bouvier@oss.qualcomm.com
>>>>> and
>>>>> 20260528051642.115721-5-pierrick.bouvier@oss.qualcomm.com
>>>>> for your "single-binary: fix compilation/execution for {arm,
>>>>> aarch32, microblaze}" series. WDYT?
>>>>> ---
>>>>>    accel/accel-common.c | 15 +++++++++++++++
>>>>>    accel/accel-target.c | 41 -----------------------------------------
>>>>>    accel/meson.build    |  1 -
>>>>>    3 files changed, 15 insertions(+), 42 deletions(-)
>>>>>    delete mode 100644 accel/accel-target.c


>>>>> diff --git a/accel/meson.build b/accel/meson.build
>>>>> index 7da12b9741f..1b5b37e3097 100644
>>>>> --- a/accel/meson.build
>>>>> +++ b/accel/meson.build
>>>>> @@ -1,5 +1,4 @@
>>>>>    common_ss.add(files('accel-common.c'))
>>>>> -specific_ss.add(files('accel-target.c'))
>>>>>    system_ss.add(files('accel-system.c', 'accel-blocker.c', 'accel-
>>>>> qmp.c', 'accel-irq.c'))
>>>>>    user_ss.add(files('accel-user.c'))
>>>>>    
>>>>
>>>> I'm open to follow this approach first .
>>>> The only downside is that it limits to a single accelerator parent type,
>>>> which will be a problem as soon as we have two arch using this framework
>>>> for tcg. Nothing we can't solve later though.
>>
>> Good point. I'll see how to handle that (as a following up patch).
>>
> 
> Maybe we need to duplicate this struct for each base architecture? :)

Back to your patch? I was never fond of AccelCPUClass and its QOM use,
ended to ditch it completly:
https://lore.kernel.org/qemu-devel/20260529142434.87880-1-philmd@linaro.org/

> 
>>>>
>>>> Regards,
>>>> Pierrick
>>>
>>> Forgot :)
>>> Reviewed-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
>>
> 


Re: [PATCH] accel/common: Remove last bit of target-specific code
Posted by Pierrick Bouvier 1 day ago
On 5/29/2026 7:37 AM, Philippe Mathieu-Daudé wrote:
> On 28/5/26 22:02, Pierrick Bouvier wrote:
>> On 5/28/2026 12:59 PM, Philippe Mathieu-Daudé wrote:
>>> On 28/5/26 20:47, Pierrick Bouvier wrote:
>>>> On 5/28/2026 11:47 AM, Pierrick Bouvier wrote:
>>>>> On 5/28/2026 7:08 AM, Philippe Mathieu-Daudé wrote:
>>>>>> Initialize the TypeInfo structure at runtime using the TargetInfo
>>>>>> API to resolve TYPE_ACCEL_CPU, replacing CPU_RESOLVING_TYPE by
>>>>>> target_cpu_type(). Since the code is no more target-specific, move
>>>>>> it to accel-common.c, removing the need for accel-target.c.
>>>>>>
>>>>>> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>>>>>> ---
>>>>>> Cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
>>>>>>
>>>>>> Pierrick, this is an alternative for both
>>>>>> 20260528051642.115721-4-pierrick.bouvier@oss.qualcomm.com
>>>>>> and
>>>>>> 20260528051642.115721-5-pierrick.bouvier@oss.qualcomm.com
>>>>>> for your "single-binary: fix compilation/execution for {arm,
>>>>>> aarch32, microblaze}" series. WDYT?
>>>>>> ---
>>>>>>    accel/accel-common.c | 15 +++++++++++++++
>>>>>>    accel/accel-target.c | 41
>>>>>> -----------------------------------------
>>>>>>    accel/meson.build    |  1 -
>>>>>>    3 files changed, 15 insertions(+), 42 deletions(-)
>>>>>>    delete mode 100644 accel/accel-target.c
> 
> 
>>>>>> diff --git a/accel/meson.build b/accel/meson.build
>>>>>> index 7da12b9741f..1b5b37e3097 100644
>>>>>> --- a/accel/meson.build
>>>>>> +++ b/accel/meson.build
>>>>>> @@ -1,5 +1,4 @@
>>>>>>    common_ss.add(files('accel-common.c'))
>>>>>> -specific_ss.add(files('accel-target.c'))
>>>>>>    system_ss.add(files('accel-system.c', 'accel-blocker.c', 'accel-
>>>>>> qmp.c', 'accel-irq.c'))
>>>>>>    user_ss.add(files('accel-user.c'))
>>>>>>    
>>>>>
>>>>> I'm open to follow this approach first .
>>>>> The only downside is that it limits to a single accelerator parent
>>>>> type,
>>>>> which will be a problem as soon as we have two arch using this
>>>>> framework
>>>>> for tcg. Nothing we can't solve later though.
>>>
>>> Good point. I'll see how to handle that (as a following up patch).
>>>
>>
>> Maybe we need to duplicate this struct for each base architecture? :)
> 
> Back to your patch? I was never fond of AccelCPUClass and its QOM use,
> ended to ditch it completly:
> https://lore.kernel.org/qemu-devel/20260529142434.87880-1-
> philmd@linaro.org/
> 

Great! I'll take a look.

>>
>>>>>
>>>>> Regards,
>>>>> Pierrick
>>>>
>>>> Forgot :)
>>>> Reviewed-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
>>>
>>
> 


Re: [PATCH] accel/common: Remove last bit of target-specific code
Posted by Anton Johansson via qemu development 1 day, 23 hours ago
On 28/05/26, Philippe Mathieu-Daudé wrote:
> Initialize the TypeInfo structure at runtime using the TargetInfo
> API to resolve TYPE_ACCEL_CPU, replacing CPU_RESOLVING_TYPE by
> target_cpu_type(). Since the code is no more target-specific, move
> it to accel-common.c, removing the need for accel-target.c.
> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
> Cc: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
> 
> Pierrick, this is an alternative for both
> 20260528051642.115721-4-pierrick.bouvier@oss.qualcomm.com
> and
> 20260528051642.115721-5-pierrick.bouvier@oss.qualcomm.com
> for your "single-binary: fix compilation/execution for {arm,
> aarch32, microblaze}" series. WDYT?
> ---
>  accel/accel-common.c | 15 +++++++++++++++
>  accel/accel-target.c | 41 -----------------------------------------
>  accel/meson.build    |  1 -
>  3 files changed, 15 insertions(+), 42 deletions(-)
>  delete mode 100644 accel/accel-target.c
> 
> diff --git a/accel/accel-common.c b/accel/accel-common.c
> index 9c5b4111c8d..62590a7d9a6 100644
> --- a/accel/accel-common.c
> +++ b/accel/accel-common.c
> @@ -134,3 +134,18 @@ static const TypeInfo accel_types[] = {
>  };
>  
>  DEFINE_TYPES(accel_types)
> +
> +static void register_accel_target_type(void)
> +{
> +    g_autofree char *name = g_strconcat("accel-", target_cpu_type(), NULL);
> +    const TypeInfo accel_cpu_type = {
> +        .name = name,
> +        .parent = TYPE_OBJECT,
> +        .abstract = true,
> +        .class_size = sizeof(AccelCPUClass),
> +    };
> +
> +    type_register_static(&accel_cpu_type);
> +}

I think this is a nice solution compared to including accel_target_c in
every target/.

Reviewed-by: Anton Johansson <anjo@rev.ng>