[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 2/7] Convert pc cpu to qdev
From: |
Anthony Liguori |
Subject: |
Re: [Qemu-devel] [PATCH 2/7] Convert pc cpu to qdev |
Date: |
Thu, 16 Feb 2012 10:09:53 -0600 |
User-agent: |
Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.23) Gecko/20110922 Lightning/1.0b2 Thunderbird/3.1.15 |
On 02/16/2012 06:54 AM, Jan Kiszka wrote:
On 2012-02-16 13:51, Anthony Liguori wrote:
On 02/16/2012 06:01 AM, Jan Kiszka wrote:
On 2012-02-16 00:16, Igor Mammedov wrote:
+static ICCBusDeviceInfo cpu_device_info = {
+ .qdev.name = "cpu-pc",
+ .qdev.size = sizeof(CPUPC),
+ .qdev.reset = cpu_device_reset,
+ .init = cpu_device_init,
+ .qdev.props = (Property[]) {
+ DEFINE_PROP_STRING("model", CPUPC, model),
And how do you pass in feature flags? Or the core layout? Basically both
-cpu and -smp need to be expressible via multiple "-device cpu-x86,xxx"
(not "pc") commands.
The approach that I'd recommend is:
1) convert CPU_COMMON_STATE to a structure named CPUCommonState, query/replace
all references to members of CPU_COMMON_STATE appropriately.
2) convert as many users of CPUState to CPUCommonState as possible.
3) make CPUCommonState a base class, move it to the front of the structure, and
attempt to measure the impact to TCG.
4) if (3) is significant, special case things in QOM
5) make target specific code use target specific CPUState typename
6) eliminate #define CPUState
7) make on-processor devices (like lapic) children of target specific CPUState
8) express target specific flags/features via QOM properties
9) make machine expose target specific CPUState links that can be set by the
user.
Also, I'm wondering what names those CPUs should have. I think we should
expose model names as device names and avoid a "model" property.
Yeah, I think we want a CPUX86State and then a bunch of subclasses defined by
that.
By making use of the class_data field, we can register classes based on
combinations of feature flags. So for instance:
static TypeInfo opteron_g2 = {
.name = "cpu-opteron-g2",
.parent = TYPE_CPU_X86",
.class_init = cpu_x86_generic_class_init,
.class_data = (CPUX86Definition[]){
.level = 5,
.vendor = "AuthenticAMD",
.family = 15,
.model = 6,
.stepping = 1,
.feature_edx = "sse2 sse fxsr mmx pat cmov pge sep apic cx8 mce pae msr
tsc pse de fpu mtrr clflush mca pse36",
...
},
};
And obviously, we can still using the existing cpudef directive to generate
types.
Regards,
Anthony Liguori
Jan
- [Qemu-devel] [PATCH 7/7] Implement cpu hot-add using device_add monitor command, (continued)