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. Jan -- Siemens AG, Corporate Technology, CT T DE IT 1 Corporate Competence Center Embedded Linux