On 16/09/26, Pierrick Bouvier wrote: > On 9/16/2026 2:19 AM, Anton Johansson wrote: > > Allows specifying is_available when defining machines using convenience > > macros. Also introduces DEFINE_MACHINE_WITH_GUARD() replacing > > DEFINE_MACHINE() for machines that need to specify is_available. > > > > Signed-off-by: Anton Johansson <[email protected]> > > --- > > include/hw/core/boards.h | 11 ++++++++--- > > hw/arm/bananapi_m2u.c | 2 +- > > hw/arm/cubieboard.c | 2 +- > > hw/arm/imx8mm-evk.c | 2 +- > > hw/arm/integratorcp.c | 2 +- > > hw/arm/mcimx7d-sabre.c | 2 +- > > hw/arm/orangepi.c | 2 +- > > hw/ppc/pegasos.c | 3 ++- > > 8 files changed, 16 insertions(+), 10 deletions(-) > > > > diff --git a/include/hw/core/boards.h b/include/hw/core/boards.h > > index dba465efc2..8c35516622 100644 > > --- a/include/hw/core/boards.h > > +++ b/include/hw/core/boards.h > > @@ -514,7 +514,7 @@ struct MachineState { > > */ > > > > #define DEFINE_MACHINE_EXTENDED(namestr, PARENT_NAME, InstanceName, \ > > - machine_initfn, ABSTRACT, ifaces...) \ > > + machine_initfn, ABSTRACT, availfn, > > ifaces...) \ > > static void machine_initfn##_class_init(ObjectClass *oc, const void > > *data) \ > > { \ > > MachineClass *mc = MACHINE_CLASS(oc); \ > > @@ -526,6 +526,7 @@ struct MachineState { > > .class_init = machine_initfn##_class_init, \ > > .instance_size = sizeof(InstanceName), \ > > .abstract = ABSTRACT, \ > > + .is_available = availfn, \ > > .interfaces = ifaces, \ > > }; \ > > static void machine_initfn##_register_types(void) \ > > @@ -536,11 +537,15 @@ struct MachineState { > > > > #define DEFINE_MACHINE(namestr, machine_initfn) \ > > DEFINE_MACHINE_EXTENDED(namestr, MACHINE, MachineState, > > machine_initfn, \ > > - false, NULL) > > + false, NULL, NULL) > > + > > +#define DEFINE_MACHINE_WITH_GUARD(namestr, machine_initfn, availfn) \ > > + DEFINE_MACHINE_EXTENDED(namestr, MACHINE, MachineState, > > machine_initfn, \ > > + false, availfn, NULL) > > > > #define DEFINE_MACHINE_WITH_INTERFACE_ARRAY(namestr, machine_initfn, > > ifaces...)\ > > DEFINE_MACHINE_EXTENDED(namestr, MACHINE, MachineState, > > machine_initfn, \ > > - false, ifaces) > > + false, NULL, ifaces) > > > > #define DEFINE_MACHINE_WITH_INTERFACES(namestr, machine_initfn, ...) \ > > DEFINE_MACHINE_WITH_INTERFACE_ARRAY(namestr, machine_initfn, \ > > diff --git a/hw/arm/bananapi_m2u.c b/hw/arm/bananapi_m2u.c > > index 8f59111fd4..7b86986efb 100644 > > --- a/hw/arm/bananapi_m2u.c > > +++ b/hw/arm/bananapi_m2u.c > > @@ -153,4 +153,4 @@ static void bpim2u_machine_init(MachineClass *mc) > > } > > > > DEFINE_MACHINE_EXTENDED("bpim2u", MACHINE, Bpim2uMachineState, > > - bpim2u_machine_init, false, NULL) > > + bpim2u_machine_init, false, NULL, NULL) > > diff --git a/hw/arm/cubieboard.c b/hw/arm/cubieboard.c > > index ae27056938..da45bb2be5 100644 > > --- a/hw/arm/cubieboard.c > > +++ b/hw/arm/cubieboard.c > > @@ -134,4 +134,4 @@ static void cubieboard_machine_init(MachineClass *mc) > > > > DEFINE_MACHINE_EXTENDED("cubieboard", MACHINE, CubieboardMachineState, > > cubieboard_machine_init, false, > > - NULL) > > + NULL, NULL) > > diff --git a/hw/arm/imx8mm-evk.c b/hw/arm/imx8mm-evk.c > > index 8a5737502f..68526c0e43 100644 > > --- a/hw/arm/imx8mm-evk.c > > +++ b/hw/arm/imx8mm-evk.c > > @@ -135,4 +135,4 @@ static void imx8mm_evk_machine_init(MachineClass *mc) > > > > DEFINE_MACHINE_EXTENDED("imx8mm-evk", MACHINE, Imx8mmEvkMachineState, > > imx8mm_evk_machine_init, false, > > - NULL) > > + NULL, NULL) > > diff --git a/hw/arm/integratorcp.c b/hw/arm/integratorcp.c > > index 382ea7850d..6314bbb6c1 100644 > > --- a/hw/arm/integratorcp.c > > +++ b/hw/arm/integratorcp.c > > @@ -705,7 +705,7 @@ static void integratorcp_machine_init(MachineClass *mc) > > > > DEFINE_MACHINE_EXTENDED("integratorcp", MACHINE, IntegratorcpMachineState, > > integratorcp_machine_init, false, > > - NULL) > > + NULL, NULL) > > > > static const Property core_properties[] = { > > DEFINE_PROP_UINT32("memsz", IntegratorCMState, memsz, 0), > > diff --git a/hw/arm/mcimx7d-sabre.c b/hw/arm/mcimx7d-sabre.c > > index db8a62e5f6..2c884b5c78 100644 > > --- a/hw/arm/mcimx7d-sabre.c > > +++ b/hw/arm/mcimx7d-sabre.c > > @@ -87,4 +87,4 @@ static void mcimx7d_sabre_machine_init(MachineClass *mc) > > > > DEFINE_MACHINE_EXTENDED("mcimx7d-sabre", MACHINE, Mcimx7dSabreMachineState, > > mcimx7d_sabre_machine_init, false, > > - NULL) > > + NULL, NULL) > > diff --git a/hw/arm/orangepi.c b/hw/arm/orangepi.c > > index 7a19732f5d..87ed2ef4b6 100644 > > --- a/hw/arm/orangepi.c > > +++ b/hw/arm/orangepi.c > > @@ -134,4 +134,4 @@ static void orangepi_machine_init(MachineClass *mc) > > > > DEFINE_MACHINE_EXTENDED("orangepi-pc", MACHINE, OrangePiMachineState, > > orangepi_machine_init, false, > > - NULL) > > + NULL, NULL) > > diff --git a/hw/ppc/pegasos.c b/hw/ppc/pegasos.c > > index 9d7e279123..cbff8bb59d 100644 > > --- a/hw/ppc/pegasos.c > > +++ b/hw/ppc/pegasos.c > > @@ -788,7 +788,8 @@ static void pegasos2_machine_class_init(ObjectClass > > *oc, const void *data) > > } > > > > DEFINE_MACHINE_EXTENDED("pegasos", MACHINE, PegasosMachineState, > > - pegasos_machine_init, true, (const > > InterfaceInfo[]) { > > + pegasos_machine_init, true, NULL, > > + (const InterfaceInfo[]) { > > { TYPE_PPC_VIRTUAL_HYPERVISOR }, > > { TYPE_VOF_MACHINE_IF }, { } }) > > > > > > Since full filtering concept was dropped for now, and since > there are not so many usage of DEFINE_MACHINE in the codebase, maybe we > can simply do a full declaration when a guard need to be set. > > In current series, only one occurence would need this: boston-aia. > > Regards, > Pierrick
Good point I'll drop this patch then and just expand fully for boston-aia then, similar to other targets, thanks!:) -- Anton Johansson rev.ng Labs Srl.
