diff options
author | Eduardo Habkost <ehabkost@redhat.com> | 2013-05-27 17:23:55 -0300 |
---|---|---|
committer | Andreas Färber <afaerber@suse.de> | 2013-06-10 23:33:18 +0200 |
commit | 6b11322e0f724eb0649fdc324a44288b783023ad (patch) | |
tree | 936ad12b15bcb07b9ba86d1324df78ada5821b15 | |
parent | ffce9ebbb69363dfe7605585cdad58ea3847edf4 (diff) | |
download | qemu-6b11322e0f724eb0649fdc324a44288b783023ad.zip qemu-6b11322e0f724eb0649fdc324a44288b783023ad.tar.gz qemu-6b11322e0f724eb0649fdc324a44288b783023ad.tar.bz2 |
target-i386: Set level=4 on Conroe/Penryn/Nehalem
The CPUID level value on Conroe, Penryn, and Nehalem are too low. This
causes at least one known problem: the -smp "threads" option doesn't
work as expect if level is < 4, because thread count information is
provided to the guest on CPUID[EAX=4,ECX=2].EAX
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
-rw-r--r-- | include/hw/i386/pc.h | 12 | ||||
-rw-r--r-- | target-i386/cpu.c | 6 |
2 files changed, 15 insertions, 3 deletions
diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h index f232d75..fab9be5 100644 --- a/include/hw/i386/pc.h +++ b/include/hw/i386/pc.h @@ -191,13 +191,25 @@ int e820_add_entry(uint64_t, uint64_t, uint32_t); .property = "model",\ .value = stringify(2),\ },{\ + .driver = "Conroe-" TYPE_X86_CPU,\ + .property = "level",\ + .value = stringify(2),\ + },{\ .driver = "Penryn-" TYPE_X86_CPU,\ .property = "model",\ .value = stringify(2),\ },{\ + .driver = "Penryn-" TYPE_X86_CPU,\ + .property = "level",\ + .value = stringify(2),\ + },{\ .driver = "Nehalem-" TYPE_X86_CPU,\ .property = "model",\ .value = stringify(2),\ + },{\ + .driver = "Nehalem-" TYPE_X86_CPU,\ + .property = "level",\ + .value = stringify(2),\ } #define PC_COMPAT_1_4 \ diff --git a/target-i386/cpu.c b/target-i386/cpu.c index 6b48562..762baad 100644 --- a/target-i386/cpu.c +++ b/target-i386/cpu.c @@ -669,7 +669,7 @@ static x86_def_t builtin_x86_defs[] = { }, { .name = "Conroe", - .level = 2, + .level = 4, .vendor = CPUID_VENDOR_INTEL, .family = 6, .model = 15, @@ -691,7 +691,7 @@ static x86_def_t builtin_x86_defs[] = { }, { .name = "Penryn", - .level = 2, + .level = 4, .vendor = CPUID_VENDOR_INTEL, .family = 6, .model = 23, @@ -714,7 +714,7 @@ static x86_def_t builtin_x86_defs[] = { }, { .name = "Nehalem", - .level = 2, + .level = 4, .vendor = CPUID_VENDOR_INTEL, .family = 6, .model = 26, |