From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:40650) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Ry0r7-0002rZ-FK for qemu-devel@nongnu.org; Thu, 16 Feb 2012 07:54:43 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Ry0r2-0006sx-Cz for qemu-devel@nongnu.org; Thu, 16 Feb 2012 07:54:37 -0500 Received: from david.siemens.de ([192.35.17.14]:27071) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Ry0r2-0006sn-1M for qemu-devel@nongnu.org; Thu, 16 Feb 2012 07:54:32 -0500 Message-ID: <4F3CFC85.9080706@siemens.com> Date: Thu, 16 Feb 2012 13:54:29 +0100 From: Jan Kiszka MIME-Version: 1.0 References: <1329347774-23262-1-git-send-email-imammedo@redhat.com> <1329347774-23262-3-git-send-email-imammedo@redhat.com> <4F3CF010.1040607@siemens.com> <4F3CFBBB.5020600@codemonkey.ws> In-Reply-To: <4F3CFBBB.5020600@codemonkey.ws> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 2/7] Convert pc cpu to qdev List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Anthony Liguori Cc: Igor Mammedov , "qemu-devel@nongnu.org" , "gleb@redhat.com" 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