On 9/16/2026 2:19 AM, Anton Johansson wrote:
> Filters for 32- or 64-bit machine types using TypeInfo::is_available,
> machines available for both 32-bit and 64-bit (amd-microblaze-v-generic,
> sifive-[e|u], spike, virt) leave the field unset.
> 
> Signed-off-by: Anton Johansson <[email protected]>
> ---
>  hw/riscv/boston-aia.c      | 3 ++-
>  hw/riscv/k230.c            | 3 +++
>  hw/riscv/microchip_pfsoc.c | 3 +++
>  hw/riscv/opentitan.c       | 3 +++
>  hw/riscv/shakti_c.c        | 3 +++
>  hw/riscv/tt_atlantis.c     | 3 +++
>  hw/riscv/xiangshan_kmh.c   | 3 +++
>  7 files changed, 20 insertions(+), 1 deletion(-)
> 
> diff --git a/hw/riscv/boston-aia.c b/hw/riscv/boston-aia.c
> index b90da096ea..e8371ff1f1 100644
> --- a/hw/riscv/boston-aia.c
> +++ b/hw/riscv/boston-aia.c
> @@ -10,6 +10,7 @@
>   */
>  
>  #include "qemu/osdep.h"
> +#include "qemu/target-info.h"
>  #include "qemu/units.h"
>  
>  #include "hw/core/boards.h"
> @@ -473,4 +474,4 @@ static void boston_mach_class_init(MachineClass *mc)
>      mc->default_cpu_type = TYPE_RISCV_CPU_MIPS_P8700;
>  }
>  
> -DEFINE_MACHINE("boston-aia", boston_mach_class_init)
> +DEFINE_MACHINE_WITH_GUARD("boston-aia", boston_mach_class_init, 
> target_riscv64)

Convert that to a "full" declaration, and add is_available on the way.

> diff --git a/hw/riscv/k230.c b/hw/riscv/k230.c
> index 1e4ca38579..43b6ae6d2f 100644
> --- a/hw/riscv/k230.c
> +++ b/hw/riscv/k230.c
> @@ -17,6 +17,7 @@
>  #include "cpu-qom.h"
>  #include "qemu/cutils.h"
>  #include "qemu/error-report.h"
> +#include "qemu/target-info.h"
>  #include "qapi/error.h"
>  #include "system/device_tree.h"
>  #include "system/system.h"
> @@ -420,6 +421,7 @@ static const TypeInfo k230_soc_type_info = {
>      .instance_size = sizeof(K230SoCState),
>      .instance_init = k230_soc_init,
>      .class_init = k230_soc_class_init,
> +    .is_available = target_riscv64,
>  };
>  
>  static void k230_soc_register_types(void)
> @@ -558,6 +560,7 @@ static const TypeInfo k230_machine_typeinfo = {
>      .class_init = k230_machine_class_init,
>      .instance_init = k230_machine_instance_init,
>      .instance_size = sizeof(K230MachineState),
> +    .is_available = target_riscv64,
>  };
>  
>  static void k230_machine_init_register_types(void)
> diff --git a/hw/riscv/microchip_pfsoc.c b/hw/riscv/microchip_pfsoc.c
> index edd29626fa..b2991e5a71 100644
> --- a/hw/riscv/microchip_pfsoc.c
> +++ b/hw/riscv/microchip_pfsoc.c
> @@ -38,6 +38,7 @@
>  #include "qemu/error-report.h"
>  #include "qemu/units.h"
>  #include "qemu/cutils.h"
> +#include "qemu/target-info.h"
>  #include "qapi/error.h"
>  #include "qapi/visitor.h"
>  #include "hw/core/boards.h"
> @@ -504,6 +505,7 @@ static const TypeInfo microchip_pfsoc_soc_type_info = {
>      .instance_size = sizeof(MicrochipPFSoCState),
>      .instance_init = microchip_pfsoc_soc_instance_init,
>      .class_init = microchip_pfsoc_soc_class_init,
> +    .is_available = target_riscv64,
>  };
>  
>  static void microchip_pfsoc_soc_register_types(void)
> @@ -757,6 +759,7 @@ static const TypeInfo 
> microchip_icicle_kit_machine_typeinfo = {
>      .class_init = microchip_icicle_kit_machine_class_init,
>      .instance_init = microchip_icicle_kit_machine_instance_init,
>      .instance_size = sizeof(MicrochipIcicleKitState),
> +    .is_available = target_riscv64,
>  };
>  
>  static void microchip_icicle_kit_machine_init_register_types(void)
> diff --git a/hw/riscv/opentitan.c b/hw/riscv/opentitan.c
> index 8cd660dd41..c3a563db92 100644
> --- a/hw/riscv/opentitan.c
> +++ b/hw/riscv/opentitan.c
> @@ -20,6 +20,7 @@
>  
>  #include "qemu/osdep.h"
>  #include "qemu/cutils.h"
> +#include "qemu/target-info.h"
>  #include "hw/riscv/opentitan.h"
>  #include "qapi/error.h"
>  #include "qemu/error-report.h"
> @@ -332,11 +333,13 @@ static const TypeInfo open_titan_types[] = {
>          .instance_size  = sizeof(LowRISCIbexSoCState),
>          .instance_init  = lowrisc_ibex_soc_init,
>          .class_init     = lowrisc_ibex_soc_class_init,
> +        .is_available   = target_riscv32,
>      }, {
>          .name           = TYPE_OPENTITAN_MACHINE,
>          .parent         = TYPE_MACHINE,
>          .instance_size  = sizeof(OpenTitanState),
>          .class_init     = opentitan_machine_class_init,
> +        .is_available   = target_riscv32,
>      }
>  };
>  
> diff --git a/hw/riscv/shakti_c.c b/hw/riscv/shakti_c.c
> index 3b6efd25be..76cfe30918 100644
> --- a/hw/riscv/shakti_c.c
> +++ b/hw/riscv/shakti_c.c
> @@ -21,6 +21,7 @@
>  #include "hw/riscv/shakti_c.h"
>  #include "qapi/error.h"
>  #include "qemu/error-report.h"
> +#include "qemu/target-info.h"
>  #include "hw/intc/sifive_plic.h"
>  #include "hw/intc/riscv_aclint.h"
>  #include "system/system.h"
> @@ -97,6 +98,7 @@ static const TypeInfo shakti_c_machine_type_info = {
>      .class_init = shakti_c_machine_class_init,
>      .instance_init = shakti_c_machine_instance_init,
>      .instance_size = sizeof(ShaktiCMachineState),
> +    .is_available = target_riscv64,
>  };
>  
>  static void shakti_c_machine_type_info_register(void)
> @@ -186,6 +188,7 @@ static const TypeInfo shakti_c_type_info = {
>      .class_init = shakti_c_soc_class_init,
>      .instance_init = shakti_c_soc_instance_init,
>      .instance_size = sizeof(ShaktiCSoCState),
> +    .is_available = target_riscv64,
>  };
>  
>  static void shakti_c_type_info_register(void)
> diff --git a/hw/riscv/tt_atlantis.c b/hw/riscv/tt_atlantis.c
> index b2333e7f6a..f54eb942f3 100644
> --- a/hw/riscv/tt_atlantis.c
> +++ b/hw/riscv/tt_atlantis.c
> @@ -11,6 +11,7 @@
>  #include "qemu/cutils.h"
>  #include "qemu/error-report.h"
>  #include "qemu/guest-random.h"
> +#include "qemu/target-info.h"
>  #include "qemu/units.h"
>  
>  #include "hw/core/boards.h"
> @@ -694,11 +695,13 @@ static const TypeInfo tt_atlantis_types[] = {
>          .instance_size = sizeof(TTAtlantisSoCState),
>          .instance_init = tt_atlantis_soc_init,
>          .class_init = tt_atlantis_soc_class_init,
> +        .is_available = target_riscv64,
>      }, {
>          .name       = MACHINE_TYPE_NAME("tt-atlantis"),
>          .parent     = TYPE_MACHINE,
>          .class_init = tt_atlantis_machine_class_init,
>          .instance_size = sizeof(TTAtlantisState),
> +        .is_available = target_riscv64,
>      },
>  };
>  
> diff --git a/hw/riscv/xiangshan_kmh.c b/hw/riscv/xiangshan_kmh.c
> index a234c5f352..f2383c5399 100644
> --- a/hw/riscv/xiangshan_kmh.c
> +++ b/hw/riscv/xiangshan_kmh.c
> @@ -30,6 +30,7 @@
>   */
>  
>  #include "qemu/osdep.h"
> +#include "qemu/target-info.h"
>  #include "qapi/error.h"
>  #include "system/address-spaces.h"
>  #include "hw/core/boards.h"
> @@ -157,6 +158,7 @@ static const TypeInfo xiangshan_kmh_soc_info = {
>      .instance_size = sizeof(XiangshanKmhSoCState),
>      .instance_init = xiangshan_kmh_soc_instance_init,
>      .class_init = xiangshan_kmh_soc_class_init,
> +    .is_available = target_riscv64,
>  };
>  
>  static void xiangshan_kmh_soc_register_types(void)
> @@ -220,6 +222,7 @@ static const TypeInfo xiangshan_kmh_machine_info = {
>      .parent = TYPE_MACHINE,
>      .instance_size = sizeof(XiangshanKmhState),
>      .class_init = xiangshan_kmh_machine_class_init,
> +    .is_available = target_riscv64,
>  };
>  
>  static void xiangshan_kmh_machine_register_types(void)
> 


Reply via email to