target-i386: X86CPU model subclasses
authorEduardo Habkost <ehabkost@redhat.com>
Mon, 10 Feb 2014 10:21:30 +0000 (08:21 -0200)
committerAndreas Färber <afaerber@suse.de>
Thu, 13 Mar 2014 18:20:07 +0000 (19:20 +0100)
commitd940ee9b787d37a9ea90f4379a79825ade08bb05
tree25cf5863d0cf298e258984accc4240028b9c3dfb
parent500050d1e0fd4bf61bd77915f5e42e2180cf6f7d
target-i386: X86CPU model subclasses

Register separate QOM types for each x86 CPU model.

This will allow management code to more easily probe what each CPU model
provides, by simply creating objects using the appropriate class name,
without having to restart QEMU.

This also allows us to eliminate the qdev_prop_set_globals_for_type()
hack to set CPU-model-specific global properties.

Instead of creating separate class_init functions for each class, I just
used class_data to store a pointer to the X86CPUDefinition struct for
each CPU model. This should make the patch shorter and easier to review.
Later we can gradually convert each X86CPUDefinition field to lists of
per-class property defaults.

The "host" CPU model is special, as the feature flags depend on KVM
being initialized. So it has its own class_init and instance_init
function, and feature flags are set on instance_init instead of
class_init.

Signed-off-by: Andreas Färber <afaerber@suse.de>
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
Tested-by: Eduardo Habkost <ehabkost@redhat.com>
[AF: Limit the host CPU type to CONFIG_KVM as build fix]
Signed-off-by: Andreas Färber <afaerber@suse.de>
target-i386/cpu-qom.h
target-i386/cpu.c