qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] Re: [PATCH] qemu-kvm: Enable xsave related CPUID


From: Avi Kivity
Subject: [Qemu-devel] Re: [PATCH] qemu-kvm: Enable xsave related CPUID
Date: Wed, 19 May 2010 19:58:02 +0300
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.9) Gecko/20100330 Fedora/3.0.4-1.fc12 Thunderbird/3.0.4

On 05/19/2010 11:34 AM, Sheng Yang wrote:
Signed-off-by: Sheng Yang<address@hidden>
---
  target-i386/cpuid.c |   32 ++++++++++++++++++++++++++++++++

Can send to Anthony directly, while tcg doesn't support xsave/ymm, all the code here is generic.

  1 files changed, 32 insertions(+), 0 deletions(-)

diff --git a/target-i386/cpuid.c b/target-i386/cpuid.c
index eebf038..21e94f3 100644
--- a/target-i386/cpuid.c
+++ b/target-i386/cpuid.c
@@ -1067,6 +1067,38 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, 
uint32_t count,
          *ecx = 0;
          *edx = 0;
          break;
+    case 0xD:
+        /* Processor Extended State */
+        if (!(env->cpuid_ext_features&  CPUID_EXT_XSAVE)) {
+            *eax = 0;
+            *ebx = 0;
+            *ecx = 0;
+            *edx = 0;
+            break;
+        }
+        if (count == 0) {
+            *eax = 0x7;
+            *ebx = 0x340;
+            *ecx = 0x340;
+            *edx = 0;
+        } else if (count == 1) {
+            /* eax = 1, so we can continue with others */
+            *eax = 1;
+            *ebx = 0;
+            *ecx = 0;
+            *edx = 0;
+        } else if (count == 2) {
+            *eax = 0x100;
+            *ebx = 0x240;
+            *ecx = 0;
+            *edx = 0;
+        } else {
+            *eax = 0;
+            *ebx = 0;
+            *ecx = 0;
+            *edx = 0;
+        }
+        break;

Lots of magic numbers.  Symbolic constants or explanatory comments.

--
Do not meddle in the internals of kernels, for they are subtle and quick to 
panic.




reply via email to

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