Patchwork [13/13] x86/cpuid: Update qemu64/32 CPU models

login
register
mail settings
Submitter Andre Przywara
Date March 11, 2010, 1:39 p.m.
Message ID <1268314747-11111-14-git-send-email-andre.przywara@amd.com>
Download mbox | patch
Permalink /patch/47326/
State New
Headers show

Comments

Andre Przywara - March 11, 2010, 1:39 p.m.
Since we now have a real TCG feature set, use it to describe the
artificial qemu CPUs (both 64 and 32-bit). If new features are added
to TCG, the capability of qemu64/32 will automatically be adjusted.

Signed-off-by: Andre Przywara <andre.przywara@amd.com>
---
 target-i386/cpuid.c |   25 +++++++++++++------------
 1 files changed, 13 insertions(+), 12 deletions(-)
Jamie Lokier - March 13, 2010, 12:06 a.m.
Andre Przywara wrote:
> Since we now have a real TCG feature set, use it to describe the
> artificial qemu CPUs (both 64 and 32-bit). If new features are added
> to TCG, the capability of qemu64/32 will automatically be adjusted.
> 
> Signed-off-by: Andre Przywara <andre.przywara@amd.com>

> -        .features = PPRO_FEATURES | 
> -        /* these features are needed for Win64 and aren't fully implemented */
> -            CPUID_MTRR | CPUID_CLFLUSH | CPUID_MCA |
> -        /* this feature is needed for Solaris and isn't fully implemented */
> -            CPUID_PSE36,
> -        .ext_features = CPUID_EXT_SSE3 | CPUID_EXT_CX16 | CPUID_EXT_POPCNT,
> -        .ext2_features = (PPRO_FEATURES & EXT2_FEATURE_MASK) | 
> -            CPUID_EXT2_LM | CPUID_EXT2_SYSCALL | CPUID_EXT2_NX,
> -        .ext3_features = CPUID_EXT3_LAHF_LM | CPUID_EXT3_SVM |
> -            CPUID_EXT3_ABM | CPUID_EXT3_SSE4A,

Those comments seem to have disappeared.  Are they useful - or even correct any more?

> +        .features = TCG_FEATURES,
> +        .ext_features = TCG_EXT_FEATURES,
> +        /* 3DNow! is deprecated, so leave it out of the default feature set */
> +        .ext2_features = (TCG_EXT2_FEATURES | EXT2_FEATURES_64) &
> +                        ~(CPUID_EXT2_3DNOW | CPUID_EXT2_3DNOWEXT),
> +        .ext3_features = TCG_EXT3_FEATURES,

3DNow! is an old capability, but why is that a reason to single it out
for omission?

Is there any harm in it being enabled?

-- Jamie

Patch

diff --git a/target-i386/cpuid.c b/target-i386/cpuid.c
index 076f6cc..ec43596 100644
--- a/target-i386/cpuid.c
+++ b/target-i386/cpuid.c
@@ -227,6 +227,7 @@  typedef struct x86_def_t {
           CPUID_MSR | CPUID_MCE | CPUID_CX8 | CPUID_PGE | CPUID_CMOV | \
           CPUID_PAT | CPUID_FXSR | CPUID_MMX | CPUID_SSE | CPUID_SSE2 | \
           CPUID_PAE | CPUID_SEP | CPUID_APIC)
+#define EXT2_FEATURES_64 (CPUID_EXT2_LM | CPUID_EXT2_SYSCALL | CPUID_EXT2_NX)
 #define EXT2_FEATURE_MASK 0x0183F3FF
 
 #define TCG_FEATURES (CPUID_FP87 | CPUID_PSE | CPUID_TSC | CPUID_MSR | \
@@ -259,16 +260,12 @@  static x86_def_t builtin_x86_defs[] = {
         .family = 6,
         .model = 2,
         .stepping = 3,
-        .features = PPRO_FEATURES | 
-        /* these features are needed for Win64 and aren't fully implemented */
-            CPUID_MTRR | CPUID_CLFLUSH | CPUID_MCA |
-        /* this feature is needed for Solaris and isn't fully implemented */
-            CPUID_PSE36,
-        .ext_features = CPUID_EXT_SSE3 | CPUID_EXT_CX16 | CPUID_EXT_POPCNT,
-        .ext2_features = (PPRO_FEATURES & EXT2_FEATURE_MASK) | 
-            CPUID_EXT2_LM | CPUID_EXT2_SYSCALL | CPUID_EXT2_NX,
-        .ext3_features = CPUID_EXT3_LAHF_LM | CPUID_EXT3_SVM |
-            CPUID_EXT3_ABM | CPUID_EXT3_SSE4A,
+        .features = TCG_FEATURES,
+        .ext_features = TCG_EXT_FEATURES,
+        /* 3DNow! is deprecated, so leave it out of the default feature set */
+        .ext2_features = (TCG_EXT2_FEATURES | EXT2_FEATURES_64) &
+                        ~(CPUID_EXT2_3DNOW | CPUID_EXT2_3DNOWEXT),
+        .ext3_features = TCG_EXT3_FEATURES,
         .xlevel = 0x8000000A,
         .model_id = "QEMU Virtual CPU version " QEMU_VERSION,
     },
@@ -354,8 +351,12 @@  static x86_def_t builtin_x86_defs[] = {
         .family = 6,
         .model = 3,
         .stepping = 3,
-        .features = PPRO_FEATURES,
-        .ext_features = CPUID_EXT_SSE3 | CPUID_EXT_POPCNT,
+        .features = TCG_FEATURES,
+        .ext_features = TCG_EXT_FEATURES,
+        /* 3DNow! is deprecated, so leave it out of the default feature set */
+        .ext2_features = TCG_EXT2_FEATURES &
+                       ~(CPUID_EXT2_3DNOW | CPUID_EXT2_3DNOWEXT),
+        .ext3_features = TCG_EXT3_FEATURES,
         .xlevel = 0x80000004,
         .model_id = "QEMU Virtual CPU version " QEMU_VERSION,
     },