[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH] don't expose lm bit if kernel is not 64-bit capable
From: |
Glauber Costa |
Subject: |
[Qemu-devel] [PATCH] don't expose lm bit if kernel is not 64-bit capable. |
Date: |
Tue, 3 Feb 2009 10:04:14 -0500 |
If the kernel is not 64-bit capable (even if the host
machine is) do not expose the lm bit in guest cpuid.
Signed-off-by: Glauber Costa <address@hidden>
---
target-i386/helper.c | 6 +++++-
1 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/target-i386/helper.c b/target-i386/helper.c
index a28ab93..997e4e1 100644
--- a/target-i386/helper.c
+++ b/target-i386/helper.c
@@ -24,6 +24,7 @@
#include <inttypes.h>
#include <signal.h>
#include <assert.h>
+#include <sys/utsname.h>
#include "cpu.h"
#include "exec-all.h"
@@ -1520,13 +1521,16 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index,
if (kvm_enabled()) {
uint32_t h_eax, h_edx;
+ struct utsname utsname;
+
+ uname(&utsname);
host_cpuid(0x80000001, &h_eax, NULL, NULL, &h_edx);
/* disable CPU features that the host does not support */
/* long mode */
- if ((h_edx & 0x20000000) == 0 /* || !lm_capable_kernel */)
+ if ((h_edx & 0x20000000) == 0 || strcmp(utsname.machine,
"x86_64"))
*edx &= ~0x20000000;
/* syscall */
if ((h_edx & 0x00000800) == 0)
--
1.5.6.5
- [Qemu-devel] [PATCH] don't expose lm bit if kernel is not 64-bit capable.,
Glauber Costa <=