From: Eduardo Habkost <ehabkost@redhat.com>
To: qemu-devel@nongnu.org, "Andreas Färber" <afaerber@suse.de>
Cc: Igor Mammedov <imammedo@redhat.com>, Gleb Natapov <gleb@redhat.com>
Subject: [Qemu-devel] [PATCH qom-cpu 2/3] target-i386: update model values on Conroe/Penryn/Nehalem CPU models
Date: Mon, 27 May 2013 17:23:54 -0300 [thread overview]
Message-ID: <1369686235-11090-3-git-send-email-ehabkost@redhat.com> (raw)
In-Reply-To: <1369686235-11090-1-git-send-email-ehabkost@redhat.com>
The CPUID model values on Conroe, Penryn, and Nehalem are too
conservative and don't reflect the values found on real Conroe, Penryn,
and Nehalem CPUs.
This causes at least one known problems: Windows XP disables sysenter
when (family == 6 && model <= 2), but Skype tries to use the sysenter
instruction anyway because it is reported as available on CPUID, making
it crash.
This patch sets appropriate model values that correspond to real Conroe,
Penryn, and Nehalem CPUs.
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
Testing: those family/model values have been in use on Red Hat
Enterprise Linux since version 6.0 (released in 2010). The fix wasn't
submitted to QEMU earlier because we didn't have a good mechanism and
clear procedure to update CPUID values of existing CPU models in QEMU.
---
hw/i386/pc_piix.c | 4 ++++
hw/i386/pc_q35.c | 4 ++++
include/hw/i386/pc.h | 16 ++++++++++++++++
target-i386/cpu.c | 6 +++---
4 files changed, 27 insertions(+), 3 deletions(-)
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index c4e0391..b3c835e 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -345,6 +345,10 @@ static QEMUMachine pc_i440fx_machine_v1_5 = {
.init = pc_init_pci,
.hot_add_cpu = pc_hot_add_cpu,
.max_cpus = 255,
+ .compat_props = (GlobalProperty[]) {
+ PC_COMPAT_1_5,
+ { /* end of list */ }
+ },
DEFAULT_MACHINE_OPTIONS,
};
diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
index db5c46e..bb0ce6a 100644
--- a/hw/i386/pc_q35.c
+++ b/hw/i386/pc_q35.c
@@ -231,6 +231,10 @@ static QEMUMachine pc_q35_machine_v1_5 = {
.init = pc_q35_init,
.hot_add_cpu = pc_hot_add_cpu,
.max_cpus = 255,
+ .compat_props = (GlobalProperty[]) {
+ PC_COMPAT_1_5,
+ { /* end of list */ }
+ },
DEFAULT_MACHINE_OPTIONS,
};
diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
index 663426c..8883b37 100644
--- a/include/hw/i386/pc.h
+++ b/include/hw/i386/pc.h
@@ -182,7 +182,23 @@ int pvpanic_init(ISABus *bus);
int e820_add_entry(uint64_t, uint64_t, uint32_t);
+#define PC_COMPAT_1_5 \
+ {\
+ .driver = "Conroe-" TYPE_X86_CPU,\
+ .property = "model",\
+ .value = stringify(2),\
+ },{\
+ .driver = "Penryn-" TYPE_X86_CPU,\
+ .property = "model",\
+ .value = stringify(2),\
+ },{\
+ .driver = "Nehalem-" TYPE_X86_CPU,\
+ .property = "model",\
+ .value = stringify(2),\
+ }
+
#define PC_COMPAT_1_4 \
+ PC_COMPAT_1_5, \
{\
.driver = "scsi-hd",\
.property = "discard_granularity",\
diff --git a/target-i386/cpu.c b/target-i386/cpu.c
index 1a501d9..6b48562 100644
--- a/target-i386/cpu.c
+++ b/target-i386/cpu.c
@@ -672,7 +672,7 @@ static x86_def_t builtin_x86_defs[] = {
.level = 2,
.vendor = CPUID_VENDOR_INTEL,
.family = 6,
- .model = 2,
+ .model = 15,
.stepping = 3,
.features[FEAT_1_EDX] =
CPUID_SSE2 | CPUID_SSE | CPUID_FXSR | CPUID_MMX |
@@ -694,7 +694,7 @@ static x86_def_t builtin_x86_defs[] = {
.level = 2,
.vendor = CPUID_VENDOR_INTEL,
.family = 6,
- .model = 2,
+ .model = 23,
.stepping = 3,
.features[FEAT_1_EDX] =
CPUID_SSE2 | CPUID_SSE | CPUID_FXSR | CPUID_MMX |
@@ -717,7 +717,7 @@ static x86_def_t builtin_x86_defs[] = {
.level = 2,
.vendor = CPUID_VENDOR_INTEL,
.family = 6,
- .model = 2,
+ .model = 26,
.stepping = 3,
.features[FEAT_1_EDX] =
CPUID_SSE2 | CPUID_SSE | CPUID_FXSR | CPUID_MMX |
--
1.8.1.4
next prev parent reply other threads:[~2013-05-27 20:24 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-05-27 20:23 [Qemu-devel] [PATCH qom-cpu 0/3] Conroe/Penryn/Nehalem CPUID family/level fixes Eduardo Habkost
2013-05-27 20:23 ` [Qemu-devel] [PATCH qom-cpu 1/3] pc: create pc-*-1.6 machine-types Eduardo Habkost
2013-05-27 20:23 ` Eduardo Habkost [this message]
2013-05-27 20:23 ` [Qemu-devel] [PATCH qom-cpu 3/3] target-i386: set level=4 on Conroe/Penryn/Nehalem Eduardo Habkost
2013-05-27 20:30 ` [Qemu-devel] [PATCH qom-cpu 0/3] Conroe/Penryn/Nehalem CPUID family/level fixes Andreas Färber
2013-05-28 9:31 ` Igor Mammedov
2013-05-30 16:17 ` Andreas Färber
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=1369686235-11090-3-git-send-email-ehabkost@redhat.com \
--to=ehabkost@redhat.com \
--cc=afaerber@suse.de \
--cc=gleb@redhat.com \
--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).