From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:53279) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T6jaU-0000E5-SV for qemu-devel@nongnu.org; Wed, 29 Aug 2012 10:49:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1T6jaT-0002rD-Fz for qemu-devel@nongnu.org; Wed, 29 Aug 2012 10:49:46 -0400 Received: from mail-ob0-f173.google.com ([209.85.214.173]:47563) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T6jaT-0002qp-9E for qemu-devel@nongnu.org; Wed, 29 Aug 2012 10:49:45 -0400 Received: by obbta14 with SMTP id ta14so1061543obb.4 for ; Wed, 29 Aug 2012 07:49:43 -0700 (PDT) From: Anthony Liguori In-Reply-To: References: Date: Wed, 29 Aug 2012 09:49:39 -0500 Message-ID: <87zk5dycqk.fsf@codemonkey.ws> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Subject: Re: [Qemu-devel] [PATCHv4 2/4] pc: refactor compat code List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "Michael S. Tsirkin" , avi@redhat.com, mtosatti@redhat.com, gleb@redhat.com, qemu-devel@nongnu.org, kvm@vger.kernel.org, Jan Kiszka Cc: Blue Swirl "Michael S. Tsirkin" writes: > In preparation to adding PV EOI migration for 1.2, > trivially refactor some some compat code > to make it easier to add version specific > cpuid tweaks. > > Signed-off-by: Michael S. Tsirkin How I'd like to do this for 1.3 is to have CPU's have properties and to use global properties to enable/disable the feature. We really want machine compatibility to be described entirely by global properties because in the long term, this allows downstreams to define their own machine types without hacking QEMU directly. Most of the patches necessary to do this are already on the list. We should be able to merge it all very shortly after 1.3 opens up. Regards, Anthony Liguori > --- > hw/pc_piix.c | 44 ++++++++++++++++++++++++++++++++++++-------- > 1 file changed, 36 insertions(+), 8 deletions(-) > > diff --git a/hw/pc_piix.c b/hw/pc_piix.c > index a771d79..008d42f 100644 > --- a/hw/pc_piix.c > +++ b/hw/pc_piix.c > @@ -369,6 +369,22 @@ static QEMUMachine pc_machine_v1_2 = { > .default_machine_opts = KVM_MACHINE_OPTIONS, > }; > > +static void pc_machine_v1_1_compat(void) > +{ > +} > + > +static void pc_init_pci_v1_1(ram_addr_t ram_size, > + const char *boot_device, > + const char *kernel_filename, > + const char *kernel_cmdline, > + const char *initrd_filename, > + const char *cpu_model) > +{ > + pc_machine_v1_1_compat(); > + pc_init_pci(ram_size, boot_device, kernel_filename, > + kernel_cmdline, initrd_filename, cpu_model); > +} > + > #define PC_COMPAT_1_1 \ > {\ > .driver = "virtio-scsi-pci",\ > @@ -403,7 +419,7 @@ static QEMUMachine pc_machine_v1_2 = { > static QEMUMachine pc_machine_v1_1 = { > .name = "pc-1.1", > .desc = "Standard PC", > - .init = pc_init_pci, > + .init = pc_init_pci_v1_1, > .max_cpus = 255, > .default_machine_opts = KVM_MACHINE_OPTIONS, > .compat_props = (GlobalProperty[]) { > @@ -439,7 +455,7 @@ static QEMUMachine pc_machine_v1_1 = { > static QEMUMachine pc_machine_v1_0 = { > .name = "pc-1.0", > .desc = "Standard PC", > - .init = pc_init_pci, > + .init = pc_init_pci_v1_1, > .max_cpus = 255, > .default_machine_opts = KVM_MACHINE_OPTIONS, > .compat_props = (GlobalProperty[]) { > @@ -455,7 +471,7 @@ static QEMUMachine pc_machine_v1_0 = { > static QEMUMachine pc_machine_v0_15 = { > .name = "pc-0.15", > .desc = "Standard PC", > - .init = pc_init_pci, > + .init = pc_init_pci_v1_1, > .max_cpus = 255, > .default_machine_opts = KVM_MACHINE_OPTIONS, > .compat_props = (GlobalProperty[]) { > @@ -488,7 +504,7 @@ static QEMUMachine pc_machine_v0_15 = { > static QEMUMachine pc_machine_v0_14 = { > .name = "pc-0.14", > .desc = "Standard PC", > - .init = pc_init_pci, > + .init = pc_init_pci_v1_1, > .max_cpus = 255, > .default_machine_opts = KVM_MACHINE_OPTIONS, > .compat_props = (GlobalProperty[]) { > @@ -519,10 +535,22 @@ static QEMUMachine pc_machine_v0_14 = { > .value = stringify(1),\ > } > > +static void pc_init_pci_v0_13(ram_addr_t ram_size, > + const char *boot_device, > + const char *kernel_filename, > + const char *kernel_cmdline, > + const char *initrd_filename, > + const char *cpu_model) > +{ > + pc_machine_v1_1_compat(); > + pc_init_pci_no_kvmclock(ram_size, boot_device, kernel_filename, > + kernel_cmdline, initrd_filename, cpu_model); > +} > + > static QEMUMachine pc_machine_v0_13 = { > .name = "pc-0.13", > .desc = "Standard PC", > - .init = pc_init_pci_no_kvmclock, > + .init = pc_init_pci_v0_13, > .max_cpus = 255, > .default_machine_opts = KVM_MACHINE_OPTIONS, > .compat_props = (GlobalProperty[]) { > @@ -560,7 +588,7 @@ static QEMUMachine pc_machine_v0_13 = { > static QEMUMachine pc_machine_v0_12 = { > .name = "pc-0.12", > .desc = "Standard PC", > - .init = pc_init_pci_no_kvmclock, > + .init = pc_init_pci_v0_13, > .max_cpus = 255, > .default_machine_opts = KVM_MACHINE_OPTIONS, > .compat_props = (GlobalProperty[]) { > @@ -594,7 +622,7 @@ static QEMUMachine pc_machine_v0_12 = { > static QEMUMachine pc_machine_v0_11 = { > .name = "pc-0.11", > .desc = "Standard PC, qemu 0.11", > - .init = pc_init_pci_no_kvmclock, > + .init = pc_init_pci_v0_13, > .max_cpus = 255, > .default_machine_opts = KVM_MACHINE_OPTIONS, > .compat_props = (GlobalProperty[]) { > @@ -616,7 +644,7 @@ static QEMUMachine pc_machine_v0_11 = { > static QEMUMachine pc_machine_v0_10 = { > .name = "pc-0.10", > .desc = "Standard PC, qemu 0.10", > - .init = pc_init_pci_no_kvmclock, > + .init = pc_init_pci_v0_13, > .max_cpus = 255, > .default_machine_opts = KVM_MACHINE_OPTIONS, > .compat_props = (GlobalProperty[]) { > -- > MST