From: Anthony Liguori <anthony@codemonkey.ws>
To: Jan Kiszka <jan.kiszka@siemens.com>
Cc: Igor Mammedov <imammedo@redhat.com>,
"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
"gleb@redhat.com" <gleb@redhat.com>
Subject: Re: [Qemu-devel] [PATCH 2/7] Convert pc cpu to qdev
Date: Thu, 16 Feb 2012 10:09:53 -0600 [thread overview]
Message-ID: <4F3D2A51.1010107@codemonkey.ws> (raw)
In-Reply-To: <4F3CFC85.9080706@siemens.com>
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
>
next prev parent reply other threads:[~2012-02-16 16:10 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-02-15 23:16 [Qemu-devel] [PATCH 0/7] Add CPU hot-plug to qemu (pc only). v2 Igor Mammedov
2012-02-15 23:16 ` [Qemu-devel] [PATCH 1/7] Introduce a new bus "ICC" to connect APIC Igor Mammedov
2012-02-16 11:25 ` Jan Kiszka
2012-02-16 12:42 ` Anthony Liguori
2012-02-16 12:50 ` Jan Kiszka
2012-02-16 12:59 ` Anthony Liguori
2012-02-16 13:06 ` Jan Kiszka
2012-02-17 17:02 ` Igor Mammedov
2012-02-24 13:05 ` Igor Mammedov
2012-02-24 13:30 ` Andreas Färber
2012-02-24 13:40 ` Paolo Bonzini
2012-02-24 13:47 ` Anthony Liguori
2012-02-24 13:50 ` Paolo Bonzini
2012-02-24 14:44 ` Anthony Liguori
2012-02-15 23:16 ` [Qemu-devel] [PATCH 2/7] Convert pc cpu to qdev Igor Mammedov
2012-02-16 11:27 ` Jan Kiszka
2012-02-16 12:01 ` Jan Kiszka
2012-02-16 12:51 ` Anthony Liguori
2012-02-16 12:54 ` Jan Kiszka
2012-02-16 16:09 ` Anthony Liguori [this message]
2012-03-13 9:32 ` Lai Jiangshan
2012-03-13 11:04 ` Andreas Färber
2012-03-14 7:59 ` Lai Jiangshan
2012-03-14 8:37 ` Igor Mammedov
2012-03-14 13:49 ` Vasilis Liaskovitis
2012-03-14 15:23 ` Gleb Natapov
2012-03-14 15:32 ` Anthony Liguori
2012-03-14 15:35 ` Gleb Natapov
2012-03-14 15:42 ` Anthony Liguori
2012-03-14 15:54 ` Gleb Natapov
2012-03-14 15:57 ` Anthony Liguori
2012-03-14 16:27 ` Gleb Natapov
2012-03-14 19:55 ` Vasilis Liaskovitis
2012-03-15 12:07 ` Gleb Natapov
2012-02-16 12:45 ` Anthony Liguori
2012-02-16 16:09 ` Andreas Färber
2012-02-17 17:16 ` Igor Mammedov
2012-02-17 18:07 ` Andreas Färber
2012-02-15 23:16 ` [Qemu-devel] [PATCH 3/7] cleanup: get rid of pc_new_cpu Igor Mammedov
2012-02-15 23:16 ` [Qemu-devel] [PATCH 4/7] cleanup: remove redundant pc_cpu_reset Igor Mammedov
2012-02-16 11:32 ` Jan Kiszka
2012-02-15 23:16 ` [Qemu-devel] [PATCH 5/7] Set default 'model' property if it wasn't specified yet Igor Mammedov
2012-02-16 11:36 ` Jan Kiszka
2012-02-15 23:16 ` [Qemu-devel] [PATCH 6/7] Prepare ACPI infrastructure for cpu hot-plug in acpi_piix4 Igor Mammedov
2012-02-16 11:41 ` Jan Kiszka
2012-02-15 23:16 ` [Qemu-devel] [PATCH 7/7] Implement cpu hot-add using device_add monitor command Igor Mammedov
2012-02-15 23:35 ` Anthony Liguori
2012-02-16 9:33 ` Igor Mammedov
2012-02-16 15:52 ` Andreas Färber
2012-02-16 10:16 ` Jan Kiszka
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4F3D2A51.1010107@codemonkey.ws \
--to=anthony@codemonkey.ws \
--cc=gleb@redhat.com \
--cc=imammedo@redhat.com \
--cc=jan.kiszka@siemens.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).