qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Eduardo Habkost <ehabkost@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Igor Mammedov" <imammedo@redhat.com>,
	"Andreas Färber" <afaerber@suse.de>
Subject: [Qemu-devel] [RFC 00/19] i386 CPU code cleanup + CPU model classes
Date: Thu,  2 Aug 2012 23:59:07 -0300	[thread overview]
Message-ID: <1343962766-22024-1-git-send-email-ehabkost@redhat.com> (raw)

Hi,

I started looking at how the current CPU models could be converted to QOM
classes, and ended up implementing this. It's completely experimental and
untested, and the final step involves a hack, that is necessary until we remove
support for the cpudef config section.

The first 7 patches are pure cleanups. Patches 8 to 17 does lots of code
movements to isolate the CPU model string parsing and CPU object creation
together, so they can be changed to use the right CPU class.

Patch 18 finally does the change to use a CPU class corresponding to the
requested CPU model. Patch 19 is an ugly hack to make it possible to test this
code, by now.

This is surely not something for 1.2 (maybe just some cleanups from the first
few patches). It's just a RFC to see what you think about this approach. It
conflicts with ongoing work in this area, too, but I can rebase as necessary.

The series depends on the "[PATCH 0/3] Move CPU model definitions to C" series I
submitted yesterday.

Note that there's still lots of room for improvement. The X86CPUDefinition
struct could be much cleaner and simpler, and cpu_x86_create() (and the
functions it calls) could be simplified and become more QOM-like, too. But I
believe these changes at least make the steps involved in the CPU object
creation more visible, and can facilitate further refactorings.


Eduardo Habkost (19):
  target-i386/cpu.c: coding style fixes
  x86_cpudef_setup: coding style change
  i386: x86_def_t: rename 'flags' field
  rename cpu_x86_find_by_name to x86_cpu_build_from_name
  cpu_x86_build_from_name: use strtok_r()
  i386: cpu: extract the full feature list before parsing it
  i386: cpu: extract parsing of feature strings to separate function
  i386: extract CPU model lookup to a separate function
  i386: reorder object setup on cpu_x86_init()
  move CPU object creation to cpu.c
  rename x86_def_t to X86CPUDefinition
  create struct X86CPUModelTableEntry
  move X86CPUDefinition to cpu-qom.h
  extract CPU object field initialization from cpu_x86_register()
  cpu_x86_create: move error handling to end of function
  kill cpu_x86_register()
  kill cpu_x86_build_from_name()
  register a class for each CPU model
  HACK: late CPU class initialization

 target-i386/cpu-qom.h |  22 ++++
 target-i386/cpu.c     | 356 ++++++++++++++++++++++++++++++++------------------
 target-i386/cpu.h     |   2 +-
 target-i386/helper.c  |  14 +-
 4 files changed, 256 insertions(+), 138 deletions(-)

-- 
1.7.11.2

             reply	other threads:[~2012-08-03  3:06 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-03  2:59 Eduardo Habkost [this message]
2012-08-03  2:59 ` [Qemu-devel] [RFC 01/19] target-i386/cpu.c: coding style fixes Eduardo Habkost
2012-08-03  2:59 ` [Qemu-devel] [RFC 02/19] x86_cpudef_setup: coding style change Eduardo Habkost
2012-08-03  2:59 ` [Qemu-devel] [RFC 03/19] i386: x86_def_t: rename 'flags' field Eduardo Habkost
2012-08-03  2:59 ` [Qemu-devel] [RFC 04/19] rename cpu_x86_find_by_name to x86_cpu_build_from_name Eduardo Habkost
2012-08-03  2:59 ` [Qemu-devel] [RFC 05/19] cpu_x86_build_from_name: use strtok_r() Eduardo Habkost
2012-08-03  2:59 ` [Qemu-devel] [RFC 06/19] i386: cpu: extract the full feature list before parsing it Eduardo Habkost
2012-08-03  2:59 ` [Qemu-devel] [RFC 07/19] i386: cpu: extract parsing of feature strings to separate function Eduardo Habkost
2012-08-03  2:59 ` [Qemu-devel] [RFC 08/19] i386: extract CPU model lookup to a " Eduardo Habkost
2012-08-03  2:59 ` [Qemu-devel] [RFC 09/19] i386: reorder object setup on cpu_x86_init() Eduardo Habkost
2012-08-03  2:59 ` [Qemu-devel] [RFC 10/19] move CPU object creation to cpu.c Eduardo Habkost
2012-08-03  2:59 ` [Qemu-devel] [RFC 11/19] rename x86_def_t to X86CPUDefinition Eduardo Habkost
2012-08-03  2:59 ` [Qemu-devel] [RFC 12/19] create struct X86CPUModelTableEntry Eduardo Habkost
2012-08-03  2:59 ` [Qemu-devel] [RFC 13/19] move X86CPUDefinition to cpu-qom.h Eduardo Habkost
2012-08-03  2:59 ` [Qemu-devel] [RFC 14/19] extract CPU object field initialization from cpu_x86_register() Eduardo Habkost
2012-08-03  2:59 ` [Qemu-devel] [RFC 15/19] cpu_x86_create: move error handling to end of function Eduardo Habkost
2012-08-03  2:59 ` [Qemu-devel] [RFC 16/19] kill cpu_x86_register() Eduardo Habkost
2012-08-03  2:59 ` [Qemu-devel] [RFC 17/19] kill cpu_x86_build_from_name() Eduardo Habkost
2012-08-03  2:59 ` [Qemu-devel] [RFC 18/19] register a class for each CPU model Eduardo Habkost
2012-08-03  2:59 ` [Qemu-devel] [RFC 19/19] HACK: late CPU class initialization Eduardo Habkost

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=1343962766-22024-1-git-send-email-ehabkost@redhat.com \
    --to=ehabkost@redhat.com \
    --cc=afaerber@suse.de \
    --cc=imammedo@redhat.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).