* Alexander Graf <agraf@xxxxxxx> [2012-01-08 17:53]: > When running QEMU without -cpu parameter, the user usually wants a sane > default. So far, we're using the qemu64/qemu32 CPU type, which basically > means "the maximum TCG can emulate". it also means we all maximum possible migration targets. Have you given any thought to migration with -cpu best? > > That's a really good default when using TCG, but when running with KVM > we much rather want a default saying "the maximum performance I can get". > > Fortunately we just added an option that gives us the best performance > while still staying safe on the testability side of things: -cpu best. > So all we need to do is make -cpu best the default when the user doesn't > define any. > > This fixes a lot of subtile breakage in the GNU toolchain (libgmp) which > hicks up on QEMU's non-existent CPU models. > > This patch also adds a new pc-1.1 machine type to keep backwards compatible > with older versions of QEMU. > > Signed-off-by: Alexander Graf <agraf@xxxxxxx> > --- > hw/pc_piix.c | 42 ++++++++++++++++++++++++++++++++++-------- > 1 files changed, 34 insertions(+), 8 deletions(-) > > diff --git a/hw/pc_piix.c b/hw/pc_piix.c > index 00f525e..3d78ccb 100644 > --- a/hw/pc_piix.c > +++ b/hw/pc_piix.c > @@ -79,7 +79,8 @@ static void pc_init1(MemoryRegion *system_memory, > const char *initrd_filename, > const char *cpu_model, > int pci_enabled, > - int kvmclock_enabled) > + int kvmclock_enabled, > + int may_cpu_best) > { > int i; > ram_addr_t below_4g_mem_size, above_4g_mem_size; > @@ -102,6 +103,9 @@ static void pc_init1(MemoryRegion *system_memory, > MemoryRegion *rom_memory; > DeviceState *dev; > > + if (!cpu_model && kvm_enabled() && may_cpu_best) { > + cpu_model = "best"; > + } > pc_cpus_init(cpu_model); > > if (kvmclock_enabled) { > @@ -263,7 +267,21 @@ static void pc_init_pci(ram_addr_t ram_size, > get_system_io(), > ram_size, boot_device, > kernel_filename, kernel_cmdline, > - initrd_filename, cpu_model, 1, 1); > + initrd_filename, cpu_model, 1, 1, 1); > +} > + > +static void pc_init_pci_oldcpu(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_init1(get_system_memory(), > + get_system_io(), > + ram_size, boot_device, > + kernel_filename, kernel_cmdline, > + initrd_filename, cpu_model, 1, 1, 0); > } > > static void pc_init_pci_no_kvmclock(ram_addr_t ram_size, > @@ -277,7 +295,7 @@ static void pc_init_pci_no_kvmclock(ram_addr_t ram_size, > get_system_io(), > ram_size, boot_device, > kernel_filename, kernel_cmdline, > - initrd_filename, cpu_model, 1, 0); > + initrd_filename, cpu_model, 1, 0, 0); > } > > static void pc_init_isa(ram_addr_t ram_size, > @@ -293,7 +311,7 @@ static void pc_init_isa(ram_addr_t ram_size, > get_system_io(), > ram_size, boot_device, > kernel_filename, kernel_cmdline, > - initrd_filename, cpu_model, 0, 1); > + initrd_filename, cpu_model, 0, 1, 0); > } > > #ifdef CONFIG_XEN > @@ -314,8 +332,8 @@ static void pc_xen_hvm_init(ram_addr_t ram_size, > } > #endif > > -static QEMUMachine pc_machine_v1_0 = { > - .name = "pc-1.0", > +static QEMUMachine pc_machine_v1_1 = { > + .name = "pc-1.1", > .alias = "pc", > .desc = "Standard PC", > .init = pc_init_pci, > @@ -323,17 +341,24 @@ static QEMUMachine pc_machine_v1_0 = { > .is_default = 1, > }; > > +static QEMUMachine pc_machine_v1_0 = { > + .name = "pc-1.0", > + .desc = "Standard PC", > + .init = pc_init_pci_oldcpu, > + .max_cpus = 255, > +}; > + > static QEMUMachine pc_machine_v0_15 = { > .name = "pc-0.15", > .desc = "Standard PC", > - .init = pc_init_pci, > + .init = pc_init_pci_oldcpu, > .max_cpus = 255, > }; > > static QEMUMachine pc_machine_v0_14 = { > .name = "pc-0.14", > .desc = "Standard PC", > - .init = pc_init_pci, > + .init = pc_init_pci_oldcpu, > .max_cpus = 255, > .compat_props = (GlobalProperty[]) { > { > @@ -612,6 +637,7 @@ static QEMUMachine xenfv_machine = { > > static void pc_machine_init(void) > { > + qemu_register_machine(&pc_machine_v1_1); > qemu_register_machine(&pc_machine_v1_0); > qemu_register_machine(&pc_machine_v0_15); > qemu_register_machine(&pc_machine_v0_14); > -- > 1.6.0.2 > -- Ryan Harper Software Engineer; Linux Technology Center IBM Corp., Austin, Tx ryanh@xxxxxxxxxx -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html