qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 2/2] Add phenom CPU descriptor


From: Alexander Graf
Subject: Re: [Qemu-devel] [PATCH 2/2] Add phenom CPU descriptor
Date: Tue, 27 Jan 2009 16:16:36 +0100


On 27.01.2009, at 15:37, Anthony Liguori wrote:

Alexander Graf wrote:
As part of my ongoing effort to make nested SVM useful, I started working to get
VMware ESX run inside KVM.

VMware couples itself pretty tightly to the CPUID, so it's a good idea to emulate a machine that officially supports SVM and should thus exploit the powers of
nested virtualization.

This patch adds a Phenom CPU identifier, that resembles a real- world phenom
CPU as closely as possible.


I didn't apply this last time because I dislike the idea of adding oodles of CPU definitions for x86. The proper thing to do here is to have an fdt based description of CPU model. That's not to say I won't apply this patch, but I don't like the idea of adding more and more of these things.

I don't think an fdt based machine description is the right place to model CPUs. CPU capabilities are tightly coupled to qemu capabilities. Looking at coreduo/phenom descriptors as they are now, we are lacking quite some features. These might come in later, but I would guess machine descriptions should be rather static and user creatable.

So FWIW the fdt should rather contain a pointer to "phenom" CPU instead of describing every single CPUID feature.

Though honestly - we only have a "current Intel" and "current migratable" CPU, so we're missing a "current AMD" one just to be fair ;-). It's also pretty necessary for nested SVM wizardry whenever a guest checks which CPU it runs on (opposed to only the SVM bit like KVM).

Alex



Regards,

Anthony Liguori

Signed-off-by: Alexander Graf <address@hidden>
---
target-i386/helper.c |   28 ++++++++++++++++++++++++++++
1 files changed, 28 insertions(+), 0 deletions(-)

diff --git a/target-i386/helper.c b/target-i386/helper.c
index c2da767..636a02d 100644
--- a/target-i386/helper.c
+++ b/target-i386/helper.c
@@ -137,6 +137,34 @@ static x86_def_t x86_defs[] = {
        .model_id = "QEMU Virtual CPU version " QEMU_VERSION,
    },
    {
+        .name = "phenom",
+        .level = 5,
+        .vendor1 = CPUID_VENDOR_AMD_1,
+        .vendor2 = CPUID_VENDOR_AMD_2,
+        .vendor3 = CPUID_VENDOR_AMD_3,
+        .family = 16,
+        .model = 2,
+        .stepping = 3,
+        /* Missing: CPUID_VME, CPUID_HT */
+ .features = PPRO_FEATURES | + CPUID_MTRR | CPUID_CLFLUSH | CPUID_MCA |
+            CPUID_PSE36,
+        /* Missing: CPUID_EXT_CX16, CPUID_EXT_POPCNT */
+        .ext_features = CPUID_EXT_SSE3 | CPUID_EXT_MONITOR,
+        /* Missing: CPUID_EXT2_PDPE1GB, CPUID_EXT2_RDTSCP */
+ .ext2_features = (PPRO_FEATURES & 0x0183F3FF) | + CPUID_EXT2_LM | CPUID_EXT2_SYSCALL | CPUID_EXT2_NX | + CPUID_EXT2_3DNOW | CPUID_EXT2_3DNOWEXT | CPUID_EXT2_MMXEXT |
+            CPUID_EXT2_FFXSR,
+ /* Missing: CPUID_EXT3_LAHF_LM, CPUID_EXT3_CMP_LEG, CPUID_EXT3_EXTAPIC, + CPUID_EXT3_CR8LEG, CPUID_EXT3_ABM, CPUID_EXT3_SSE4A, + CPUID_EXT3_MISALIGNSSE, CPUID_EXT3_3DNOWPREFETCH,
+                    CPUID_EXT3_OSVW, CPUID_EXT3_IBS */
+        .ext3_features = CPUID_EXT3_SVM,
+        .xlevel = 0x8000001A,
+        .model_id = "AMD Phenom(tm) 9550 Quad-Core Processor"
+    },
+    {
        .name = "core2duo",
        .level = 10,
        .family = 6,









reply via email to

[Prev in Thread] Current Thread [Next in Thread]