mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
hw/arm/virt: Register valid CPU types dynamically
Replace the static array returned as MachineClass::valid_cpu_types[] by a runtime one generated by MachineClass::get_valid_cpu_types() once the machine is created (its options being processed). Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Acked-by: Peter Maydell <peter.maydell@linaro.org> Message-Id: <20251021211135.61179-1-philmd@linaro.org>
This commit is contained in:
+32
-27
@@ -3256,36 +3256,41 @@ static int virt_hvf_get_physical_address_range(MachineState *ms)
|
||||
return requested_ipa_size;
|
||||
}
|
||||
|
||||
static GPtrArray *virt_get_valid_cpu_types(const MachineState *ms)
|
||||
{
|
||||
GPtrArray *vct = g_ptr_array_new_with_free_func(g_free);
|
||||
|
||||
#ifdef CONFIG_TCG
|
||||
g_ptr_array_add(vct, g_strdup(ARM_CPU_TYPE_NAME("cortex-a7")));
|
||||
g_ptr_array_add(vct, g_strdup(ARM_CPU_TYPE_NAME("cortex-a15")));
|
||||
#ifdef TARGET_AARCH64
|
||||
g_ptr_array_add(vct, g_strdup(ARM_CPU_TYPE_NAME("cortex-a35")));
|
||||
g_ptr_array_add(vct, g_strdup(ARM_CPU_TYPE_NAME("cortex-a55")));
|
||||
g_ptr_array_add(vct, g_strdup(ARM_CPU_TYPE_NAME("cortex-a72")));
|
||||
g_ptr_array_add(vct, g_strdup(ARM_CPU_TYPE_NAME("cortex-a76")));
|
||||
g_ptr_array_add(vct, g_strdup(ARM_CPU_TYPE_NAME("cortex-a710")));
|
||||
g_ptr_array_add(vct, g_strdup(ARM_CPU_TYPE_NAME("a64fx")));
|
||||
g_ptr_array_add(vct, g_strdup(ARM_CPU_TYPE_NAME("neoverse-n1")));
|
||||
g_ptr_array_add(vct, g_strdup(ARM_CPU_TYPE_NAME("neoverse-v1")));
|
||||
g_ptr_array_add(vct, g_strdup(ARM_CPU_TYPE_NAME("neoverse-n2")));
|
||||
#endif /* TARGET_AARCH64 */
|
||||
#endif /* CONFIG_TCG */
|
||||
#ifdef TARGET_AARCH64
|
||||
g_ptr_array_add(vct, g_strdup(ARM_CPU_TYPE_NAME("cortex-a53")));
|
||||
g_ptr_array_add(vct, g_strdup(ARM_CPU_TYPE_NAME("cortex-a57")));
|
||||
#if defined(CONFIG_KVM) || defined(CONFIG_HVF)
|
||||
g_ptr_array_add(vct, g_strdup(ARM_CPU_TYPE_NAME("host")));
|
||||
#endif /* CONFIG_KVM || CONFIG_HVF */
|
||||
#endif /* TARGET_AARCH64 */
|
||||
g_ptr_array_add(vct, g_strdup(ARM_CPU_TYPE_NAME("max")));
|
||||
|
||||
return vct;
|
||||
}
|
||||
|
||||
static void virt_machine_class_init(ObjectClass *oc, const void *data)
|
||||
{
|
||||
MachineClass *mc = MACHINE_CLASS(oc);
|
||||
HotplugHandlerClass *hc = HOTPLUG_HANDLER_CLASS(oc);
|
||||
static const char * const valid_cpu_types[] = {
|
||||
#ifdef CONFIG_TCG
|
||||
ARM_CPU_TYPE_NAME("cortex-a7"),
|
||||
ARM_CPU_TYPE_NAME("cortex-a15"),
|
||||
#ifdef TARGET_AARCH64
|
||||
ARM_CPU_TYPE_NAME("cortex-a35"),
|
||||
ARM_CPU_TYPE_NAME("cortex-a55"),
|
||||
ARM_CPU_TYPE_NAME("cortex-a72"),
|
||||
ARM_CPU_TYPE_NAME("cortex-a76"),
|
||||
ARM_CPU_TYPE_NAME("cortex-a710"),
|
||||
ARM_CPU_TYPE_NAME("a64fx"),
|
||||
ARM_CPU_TYPE_NAME("neoverse-n1"),
|
||||
ARM_CPU_TYPE_NAME("neoverse-v1"),
|
||||
ARM_CPU_TYPE_NAME("neoverse-n2"),
|
||||
#endif /* TARGET_AARCH64 */
|
||||
#endif /* CONFIG_TCG */
|
||||
#ifdef TARGET_AARCH64
|
||||
ARM_CPU_TYPE_NAME("cortex-a53"),
|
||||
ARM_CPU_TYPE_NAME("cortex-a57"),
|
||||
#if defined(CONFIG_KVM) || defined(CONFIG_HVF)
|
||||
ARM_CPU_TYPE_NAME("host"),
|
||||
#endif /* CONFIG_KVM || CONFIG_HVF */
|
||||
#endif /* TARGET_AARCH64 */
|
||||
ARM_CPU_TYPE_NAME("max"),
|
||||
NULL
|
||||
};
|
||||
|
||||
mc->init = machvirt_init;
|
||||
/* Start with max_cpus set to 512, which is the maximum supported by KVM.
|
||||
@@ -3311,7 +3316,7 @@ static void virt_machine_class_init(ObjectClass *oc, const void *data)
|
||||
#else
|
||||
mc->default_cpu_type = ARM_CPU_TYPE_NAME("max");
|
||||
#endif
|
||||
mc->valid_cpu_types = valid_cpu_types;
|
||||
mc->get_valid_cpu_types = virt_get_valid_cpu_types;
|
||||
mc->get_default_cpu_node_id = virt_get_default_cpu_node_id;
|
||||
mc->kvm_type = virt_kvm_type;
|
||||
mc->hvf_get_physical_address_range = virt_hvf_get_physical_address_range;
|
||||
|
||||
Reference in New Issue
Block a user