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é <[email protected]> > --- > Cc: Pierrick Bouvier <[email protected]> > > Pierrick, this is an alternative for both > [email protected] > and > [email protected] > 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
