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

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

 



From: BrillyWu <brillywu@xxxxxxxxxxxxxx>

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<brillywu@xxxxxxxxxxxxxx>
Signed-off-by: KaryJin<karyjin@xxxxxxxxxxxxxx>
---
 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;
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux