qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH uq/master V2] kvm: Add CPUID support for VIA CPU


From: BrillyWu
Subject: Re: [Qemu-devel] [PATCH uq/master V2] kvm: Add CPUID support for VIA CPU
Date: Mon, 30 May 2011 15:40:17 +0800

From: BrillyWu <address@hidden>

Hi, Jan
         I'm very sorry for these bugs in the patch. Now I have made a
new patch based on the
newest uq/master where the patch has been applied to fix these bugs,
is it feasible? If it is
not acceptable, should I re-generate a patch based on previous
uq/master, or what else?


Signed-off-by: BrillyWu<address@hidden>
Signed-off-by: KaryJin<address@hidden>
---
 target-i386/cpu.h   |    4 ++++
 target-i386/cpuid.c |   18 +++++++++++-------
 target-i386/2 files changed, 15 insertions(+), 7 deletions(-)

--- a/target-i386/cpu.h 2011-05-30 10:14:30.184533002 +0800
+++ b/target-i386/cpu.h 2011-05-30 10:41:45.704533001 +0800
@@ -441,6 +441,10 @@
 #define CPUID_VENDOR_AMD_2   0x69746e65 /* "enti" */
 #define CPUID_VENDOR_AMD_3   0x444d4163 /* "cAMD" */

+#define CPUID_VENDOR_VIA_1   0x746e6543 /* "Cent" */
+#define CPUID_VENDOR_VIA_2   0x48727561 /* "aurH" */
+#define CPUID_VENDOR_VIA_3   0x736c7561 /* "auls" */
+
 #define CPUID_MWAIT_IBE     (1 << 1) /* Interrupts can exit capability */
 #define CPUID_MWAIT_EMX     (1 << 0) /* enumeration supported */

--- a/target-i386/cpuid.c       2011-05-30 10:14:30.194533005 +0800
+++ b/target-i386/cpuid.c       2011-05-30 15:07:18.794532910 +0800
@@ -1051,14 +1051,18 @@ void cpu_x86_cpuid(CPUX86State *env, uin
                    uint32_t *ecx, uint32_t *edx)
 {
     /* test if maximum index reached */
-    if ((index & 0xC000000f) == index) {
-        /* Handle the Centaur's CPUID instruction. */
-        if (index > env->cpuid_xlevel2) {
-            index = env->cpuid_xlevel2;
+    if (index & 0x80000000) {
+        if (index > env->cpuid_xlevel) {
+            if (env->cpuid_xlevel2 > 0) {
+                /* Handle the Centaur's CPUID instruction. */
+                if (index > env->cpuid_xlevel2) {
+                    index = env->cpuid_xlevel2;
+                } else if (index < 0xC0000000) {
+                    index = env->cpuid_xlevel;
+                }
+            } else
+                index =  env->cpuid_xlevel;
         }
-    } else if (index & 0x80000000) {
-        if (index > env->cpuid_xlevel)
-            index = env->cpuid_level;
     } else {
         if (index > env->cpuid_level)
             index = env->cpuid_level;



reply via email to

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