* [Qemu-devel] [PATCH 0/3] Add new CPU models
@ 2012-02-27 19:33 Eduardo Habkost
2012-02-27 19:33 ` [Qemu-devel] [PATCH 1/3] add "tsc-deadline" flag name to feature_ecx table Eduardo Habkost
` (3 more replies)
0 siblings, 4 replies; 6+ messages in thread
From: Eduardo Habkost @ 2012-02-27 19:33 UTC (permalink / raw)
To: qemu-devel
This series add two new CPU models to Qemu: Intel SandyBridge and AMD
Opteron_G4 (Bulldozer).
Eduardo Habkost (3):
add "tsc-deadline" flag name to feature_ecx table
add Opteron_G4 CPU model
add SandyBridge CPU model
sysconfigs/target/target-x86_64.conf | 28 ++++++++++++++++++++++++++++
target-i386/cpuid.c | 2 +-
2 files changed, 29 insertions(+), 1 deletions(-)
--
1.7.3.2
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH 1/3] add "tsc-deadline" flag name to feature_ecx table
2012-02-27 19:33 [Qemu-devel] [PATCH 0/3] Add new CPU models Eduardo Habkost
@ 2012-02-27 19:33 ` Eduardo Habkost
2012-02-27 19:33 ` [Qemu-devel] [PATCH 2/3] add Opteron_G4 CPU model Eduardo Habkost
` (2 subsequent siblings)
3 siblings, 0 replies; 6+ messages in thread
From: Eduardo Habkost @ 2012-02-27 19:33 UTC (permalink / raw)
To: qemu-devel
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
target-i386/cpuid.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/target-i386/cpuid.c b/target-i386/cpuid.c
index c2edb64..465ea15 100644
--- a/target-i386/cpuid.c
+++ b/target-i386/cpuid.c
@@ -50,7 +50,7 @@ static const char *ext_feature_name[] = {
"fma", "cx16", "xtpr", "pdcm",
NULL, NULL, "dca", "sse4.1|sse4_1",
"sse4.2|sse4_2", "x2apic", "movbe", "popcnt",
- NULL, "aes", "xsave", "osxsave",
+ "tsc-deadline", "aes", "xsave", "osxsave",
"avx", NULL, NULL, "hypervisor",
};
static const char *ext2_feature_name[] = {
--
1.7.3.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH 2/3] add Opteron_G4 CPU model
2012-02-27 19:33 [Qemu-devel] [PATCH 0/3] Add new CPU models Eduardo Habkost
2012-02-27 19:33 ` [Qemu-devel] [PATCH 1/3] add "tsc-deadline" flag name to feature_ecx table Eduardo Habkost
@ 2012-02-27 19:33 ` Eduardo Habkost
2012-03-06 17:17 ` Eduardo Habkost
2012-02-27 19:33 ` [Qemu-devel] [PATCH 3/3] add SandyBridge " Eduardo Habkost
2012-03-06 14:20 ` [Qemu-devel] [PATCH 0/3] Add new CPU models Eduardo Habkost
3 siblings, 1 reply; 6+ messages in thread
From: Eduardo Habkost @ 2012-02-27 19:33 UTC (permalink / raw)
To: qemu-devel; +Cc: Andre Przywara
This patch addes a Bulldozer-based Opteron_G4 CPU model.
I am trying to be conservative with the new model, so I am enabling only
features known to be useful to guests, and not enabling anything that
was not tested or found to be useful to a guest.
List of missing flags in comparison to real hardware:
- vme: host-specific feature.
- osxsave: it is not set here because it is set by the guest OS, not by KVM
- monitor: this is filtered out by the KVM module, so no point in
enabling it.
- mmxext: untested, so not enabled.
- Perf*, Topology*, lwp, ibs: not emulated by KVM.
- wdt, skinit, osvw, altmovcr8, extapicspace, cmplegacy: untested,
so not enabled.
List of new flags, in comparison to the Opteron_G3 model:
- xsave: xsave feature, already implemented by Qemu
- avx, aes, sse4.x, ssse3, pclmulqdq: all new state the new instructions
could use is handled by the xsave state loading/saving code on Qemu.
- pdpe1gb: 1GB pages, supported by the KVM kernel module.
- ffxsr: untested, so not enabled
- fma4, xop: all new state the new instructions could use is handled by
the xsave loading/saving code on Qemu.
- 3dnowprefetch: safe to pass through, though the flag is not used by
Linux guests, at least.
Below is the comparison between the current Opteron_G3 model
and the new model being added.
- The "full" line contains the flags found on actual hardware.
- The "missing" line shows the flags that are present on actual
hardware, but not on the added Opteron_G4 model.
- The "new" line shows the flags that were not on the Opteron_G3 model
but are on Opteron_G4.
feature_edx:
Opteron_G3: sse2 sse fxsr mmx clflush pse36 pat cmov mca pge mtrr sep apic cx8 mce pae msr tsc pse de fpu
full: sse2 sse fxsr mmx clflush pse36 pat cmov mca pge mtrr sep apic cx8 mce pae msr tsc pse de vme fpu
Opteron_G4: sse2 sse fxsr mmx clflush pse36 pat cmov mca pge mtrr sep apic cx8 mce pae msr tsc pse de fpu
missing: vme
feature_ecx:
Opteron_G3: popcnt cx16 monitor sse3
full: avx osxsave xsave aes popcnt sse4.2 sse4.1 cx16 ssse3 monitor pclmulqdq sse3
Opteron_G4: avx xsave aes popcnt sse4.2 sse4.1 cx16 ssse3 pclmulqdq sse3
missing: osxsave monitor
new: avx xsave aes sse4.2 sse4.1 ssse3 pclmulqdq
extfeature_edx:
Opteron_G3: lm rdtscp fxsr mmx nx pse36 pat cmov mca pge mtrr syscall apic cx8 mce pae msr tsc pse de fpu
full: lm rdtscp pdpe1gb ffxsr fxsr mmx mmxext nx pse36 pat cmov mca pge mtrr syscall apic cx8 mce pae msr tsc pse de vme fpu
Opteron_G4: lm rdtscp pdpe1gb ffxsr fxsr mmx nx pse36 pat cmov mca pge mtrr syscall apic cx8 mce pae msr tsc pse de fpu
missing: mmxext vme
new: pdpe1gb ffxsr
extfeature_ecx:
Opteron_G3: misalignsse sse4a abm svm lahf_lm
full: Perf* Topology* fma4 lwp wdt skinit xop ibs osvw 3dnowprefetch misalignsse sse4a abm altmovcr8 extapicspace svm cmplegacy lahf_lm
Opteron_G4: fma4 xop 3dnowprefetch misalignsse sse4a abm svm lahf_lm
new: fma4 xop 3dnowprefetch
missing: Perf* Topology* lwp wdt skinit ibs osvw altmovcr8 extapicspace cmplegacy
Cc: Andre Przywara <andre.przywara@amd.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
sysconfigs/target/target-x86_64.conf | 14 ++++++++++++++
1 files changed, 14 insertions(+), 0 deletions(-)
diff --git a/sysconfigs/target/target-x86_64.conf b/sysconfigs/target/target-x86_64.conf
index d050380..38db195 100644
--- a/sysconfigs/target/target-x86_64.conf
+++ b/sysconfigs/target/target-x86_64.conf
@@ -98,3 +98,17 @@
xlevel = "0x80000008"
model_id = "AMD Opteron 23xx (Gen 3 Class Opteron)"
+[cpudef]
+ name = "Opteron_G4"
+ level = "0xd"
+ vendor = "AuthenticAMD"
+ family = "21"
+ model = "1"
+ stepping = "2"
+ feature_edx = "sse2 sse fxsr mmx clflush pse36 pat cmov mca pge mtrr sep apic cx8 mce pae msr tsc pse de fpu"
+ feature_ecx = "avx xsave aes popcnt sse4.2 sse4.1 cx16 ssse3 pclmulqdq sse3"
+ extfeature_edx = "lm rdtscp pdpe1gb ffxsr fxsr mmx nx pse36 pat cmov mca pge mtrr syscall apic cx8 mce pae msr tsc pse de fpu"
+ extfeature_ecx = " fma4 xop 3dnowprefetch misalignsse sse4a abm svm lahf_lm"
+ xlevel = "0x8000001A"
+ model_id = "AMD Opteron 62xx class CPU"
+
--
1.7.3.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH 3/3] add SandyBridge CPU model
2012-02-27 19:33 [Qemu-devel] [PATCH 0/3] Add new CPU models Eduardo Habkost
2012-02-27 19:33 ` [Qemu-devel] [PATCH 1/3] add "tsc-deadline" flag name to feature_ecx table Eduardo Habkost
2012-02-27 19:33 ` [Qemu-devel] [PATCH 2/3] add Opteron_G4 CPU model Eduardo Habkost
@ 2012-02-27 19:33 ` Eduardo Habkost
2012-03-06 14:20 ` [Qemu-devel] [PATCH 0/3] Add new CPU models Eduardo Habkost
3 siblings, 0 replies; 6+ messages in thread
From: Eduardo Habkost @ 2012-02-27 19:33 UTC (permalink / raw)
To: qemu-devel; +Cc: Dugger, Donald D
This patches add the definition of a SandyBridge CPU model.
Summary of differences:
Flags present on actual hardware, but not on the added model definition:
- pbe, tm, ht, ss, acpi, vme, xTPR, tm2, eist, smx: host-specific
features, not exposed to guest.
- ds, ds-cpl, dtes64, pdcm: emulation not supported by KVM (although it
may be added in the future if implementing PMU virtualization)
- pcid, vmx, monitor: not emulated by Qemu/KVM right now.
- osxsave: set by the guest OS, not by Qemu.
Flags added, that were not present on Westmere model:
- xsave: already supported by Qemu
- avx, pclmulqdq: all new state the new instructions could use is
handled by xsave state loading/saving code.
- tsc-deadline, x2apic, rdtscp: already supported by Qemu/KVM.
Below there's a comparison of the features on the current Westmere CPU
model, and the SandyBridge CPU model.
- The "full" line contains the flags found on actual hardware.
- The "missing" line shows the flags that are present on actual
hardware, but not on the added SandyBridge model.
- The "new" line shows the flags that were not on the Westmere model,
but are on SandyBridge.
feature_edx:
Westmere: sse2 sse fxsr mmx clflush pse36 pat cmov mca pge mtrr sep apic cx8 mce pae msr tsc pse de fpu
full: pbe tm ht ss sse2 sse fxsr mmx ds acpi clflush pse36 pat cmov mca pge mtrr sep apic cx8 mce pge msr tsc pse de vme fpu
SandyBridge: sse2 sse fxsr mmx clflush pse36 pat cmov mca pge mtrr sep apic cx8 mce pae msr tsc pse de fpu
missing: pbe tm ht ss ds acpi vme
feature_ecx:
Westmere: aes popcnt sse4.2 sse4.1 cx16 ssse3 sse3
full: avx osxsave xsave aes tsc-deadline popcnt x2apic sse4.2 sse4.1 pcid pdcm xTPR cx16 ssse3 tm2 eist smx vmx ds-cpl monitor dtes64 pclmulqdq sse3
SandyBridge: avx xsave aes tsc-deadline popcnt x2apic sse4.2 sse4.1 cx16 ssse3 pclmulqdq sse3
missing: osxsave pcid pdcm xTPR tm2 eist smx vmx ds-cpl monitor dtes64
new: avx xsave tsc-deadline x2apic pclmulqdq
extfeature_edx:
Westmere: i64 nx syscall
full: i64 rdtscp nx syscall
SandyBridge: i64 rdtscp nx syscall
new: rdtscp
extfeature_ecx:
Westmere: lahf_lm
full: lahf_lm
SandyBridge: lahf_lm
Cc: "Dugger, Donald D" <donald.d.dugger@intel.com>
Cc: "Zhang, Xiantao" <xiantao.zhang@intel.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
sysconfigs/target/target-x86_64.conf | 14 ++++++++++++++
1 files changed, 14 insertions(+), 0 deletions(-)
diff --git a/sysconfigs/target/target-x86_64.conf b/sysconfigs/target/target-x86_64.conf
index 38db195..8c72b29 100644
--- a/sysconfigs/target/target-x86_64.conf
+++ b/sysconfigs/target/target-x86_64.conf
@@ -57,6 +57,20 @@
model_id = "Westmere E56xx/L56xx/X56xx (Nehalem-C)"
[cpudef]
+ name = "SandyBridge"
+ level = "0xd"
+ vendor = "GenuineIntel"
+ family = "6"
+ model = "42"
+ stepping = "1"
+ feature_edx = " sse2 sse fxsr mmx clflush pse36 pat cmov mca pge mtrr sep apic cx8 mce pae msr tsc pse de fpu"
+ feature_ecx = "avx xsave aes tsc-deadline popcnt x2apic sse4.2 sse4.1 cx16 ssse3 pclmulqdq sse3"
+ extfeature_edx = "i64 rdtscp nx syscall "
+ extfeature_ecx = "lahf_lm"
+ xlevel = "0x8000000A"
+ model_id = "Intel Xeon E312xx (Sandy Bridge)"
+
+[cpudef]
name = "Opteron_G1"
level = "5"
vendor = "AuthenticAMD"
--
1.7.3.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PATCH 0/3] Add new CPU models
2012-02-27 19:33 [Qemu-devel] [PATCH 0/3] Add new CPU models Eduardo Habkost
` (2 preceding siblings ...)
2012-02-27 19:33 ` [Qemu-devel] [PATCH 3/3] add SandyBridge " Eduardo Habkost
@ 2012-03-06 14:20 ` Eduardo Habkost
3 siblings, 0 replies; 6+ messages in thread
From: Eduardo Habkost @ 2012-03-06 14:20 UTC (permalink / raw)
To: Anthony Liguori; +Cc: Andre Przywara, qemu-devel, Dugger, Donald D
Anthony: do you plan to apply this soon?
Andre: can you help to review the Opteron_G4 model?
Donald, Xiantao: can you help to review the SandyBridge model?
On Mon, Feb 27, 2012 at 04:33:11PM -0300, Eduardo Habkost wrote:
> This series add two new CPU models to Qemu: Intel SandyBridge and AMD
> Opteron_G4 (Bulldozer).
>
> Eduardo Habkost (3):
> add "tsc-deadline" flag name to feature_ecx table
> add Opteron_G4 CPU model
> add SandyBridge CPU model
>
> sysconfigs/target/target-x86_64.conf | 28 ++++++++++++++++++++++++++++
> target-i386/cpuid.c | 2 +-
> 2 files changed, 29 insertions(+), 1 deletions(-)
>
> --
> 1.7.3.2
>
--
Eduardo
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PATCH 2/3] add Opteron_G4 CPU model
2012-02-27 19:33 ` [Qemu-devel] [PATCH 2/3] add Opteron_G4 CPU model Eduardo Habkost
@ 2012-03-06 17:17 ` Eduardo Habkost
0 siblings, 0 replies; 6+ messages in thread
From: Eduardo Habkost @ 2012-03-06 17:17 UTC (permalink / raw)
To: qemu-devel; +Cc: Andre Przywara
On Mon, Feb 27, 2012 at 04:33:13PM -0300, Eduardo Habkost wrote:
> - ffxsr: untested, so not enabled
[...]
> extfeature_edx:
> Opteron_G3: lm rdtscp fxsr mmx nx pse36 pat cmov mca pge mtrr syscall apic cx8 mce pae msr tsc pse de fpu
> full: lm rdtscp pdpe1gb ffxsr fxsr mmx mmxext nx pse36 pat cmov mca pge mtrr syscall apic cx8 mce pae msr tsc pse de vme fpu
> Opteron_G4: lm rdtscp pdpe1gb ffxsr fxsr mmx nx pse36 pat cmov mca pge mtrr syscall apic cx8 mce pae msr tsc pse de fpu
> missing: mmxext vme
> new: pdpe1gb ffxsr
Self-NACK. Obvious mistake above. I had decided to disable ffxsr due to
the lack of testing, updated the comment, but forgot to update the
actual model definition.
--
Eduardo
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2012-03-06 17:17 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-02-27 19:33 [Qemu-devel] [PATCH 0/3] Add new CPU models Eduardo Habkost
2012-02-27 19:33 ` [Qemu-devel] [PATCH 1/3] add "tsc-deadline" flag name to feature_ecx table Eduardo Habkost
2012-02-27 19:33 ` [Qemu-devel] [PATCH 2/3] add Opteron_G4 CPU model Eduardo Habkost
2012-03-06 17:17 ` Eduardo Habkost
2012-02-27 19:33 ` [Qemu-devel] [PATCH 3/3] add SandyBridge " Eduardo Habkost
2012-03-06 14:20 ` [Qemu-devel] [PATCH 0/3] Add new CPU models Eduardo Habkost
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.