kvm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] qemu-kvm: preserve the hypervisor bit while KVM trims the CPUID bits
@ 2009-07-02 13:27 Andre Przywara
  2009-07-02 14:45 ` [PATCH v2] " Andre Przywara
  0 siblings, 1 reply; 3+ messages in thread
From: Andre Przywara @ 2009-07-02 13:27 UTC (permalink / raw)
  To: avi; +Cc: kvm, Andre Przywara

The KVM kernel will disable all bits in CPUID which are not present in
the host. As this is mostly true for the hypervisor bit (1.ecx),
preserve its value before the trim and restore it afterwards.
This is similar to commit 6c0d7ee8, but since qemu-kvm uses another code
path it has to be inserted in qemu-kvm-x86.c, too.

Signed-off-by: Andre Przywara <andre.przywara@amd.com>
---
 qemu-kvm-x86.c |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/qemu-kvm-x86.c b/qemu-kvm-x86.c
index d6735c1..b02e604 100644
--- a/qemu-kvm-x86.c
+++ b/qemu-kvm-x86.c
@@ -1211,8 +1211,13 @@ int kvm_arch_qemu_init_env(CPUState *cenv)
 
     kvm_trim_features(&cenv->cpuid_features,
                       kvm_arch_get_supported_cpuid(cenv, 1, R_EDX));
+
+    /* prevent the hypervisor bit from being cleared by the kernel */
+    i = env->cpuid_ext_features & CPUID_EXT_HYPERVISOR;
     kvm_trim_features(&cenv->cpuid_ext_features,
                       kvm_arch_get_supported_cpuid(cenv, 1, R_ECX));
+    env->cpuid_ext_features |= i;
+
     kvm_trim_features(&cenv->cpuid_ext2_features,
                       kvm_arch_get_supported_cpuid(cenv, 0x80000001, R_EDX));
     kvm_trim_features(&cenv->cpuid_ext3_features,
-- 
1.6.1.3



^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [PATCH v2] qemu-kvm: preserve the hypervisor bit while KVM trims the CPUID bits
  2009-07-02 13:27 [PATCH] qemu-kvm: preserve the hypervisor bit while KVM trims the CPUID bits Andre Przywara
@ 2009-07-02 14:45 ` Andre Przywara
  2009-07-07 11:38   ` Avi Kivity
  0 siblings, 1 reply; 3+ messages in thread
From: Andre Przywara @ 2009-07-02 14:45 UTC (permalink / raw)
  To: avi; +Cc: kvm, Andre Przywara

The KVM kernel will disable all bits in CPUID which are not present in
the host. As this is mostly true for the hypervisor bit (1.ecx),
preserve its value before the trim and restore it afterwards.
This is similar to commit 6c0d7ee8, but since qemu-kvm uses another code
path it has to be inserted in qemu-kvm-x86.c, too.

Signed-off-by: Andre Przywara <andre.przywara@amd.com>
---
 qemu-kvm-x86.c |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

The last patch had a typo (and I compile tested the wrong branch), so
here is the correct version.

Regards,
Andre.

diff --git a/qemu-kvm-x86.c b/qemu-kvm-x86.c
index d6735c1..7505380 100644
--- a/qemu-kvm-x86.c
+++ b/qemu-kvm-x86.c
@@ -1211,8 +1211,13 @@ int kvm_arch_qemu_init_env(CPUState *cenv)
 
     kvm_trim_features(&cenv->cpuid_features,
                       kvm_arch_get_supported_cpuid(cenv, 1, R_EDX));
+
+    /* prevent the hypervisor bit from being cleared by the kernel */
+    i = cenv->cpuid_ext_features & CPUID_EXT_HYPERVISOR;
     kvm_trim_features(&cenv->cpuid_ext_features,
                       kvm_arch_get_supported_cpuid(cenv, 1, R_ECX));
+    cenv->cpuid_ext_features |= i;
+
     kvm_trim_features(&cenv->cpuid_ext2_features,
                       kvm_arch_get_supported_cpuid(cenv, 0x80000001, R_EDX));
     kvm_trim_features(&cenv->cpuid_ext3_features,
-- 
1.6.1.3



^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH v2] qemu-kvm: preserve the hypervisor bit while KVM trims the CPUID bits
  2009-07-02 14:45 ` [PATCH v2] " Andre Przywara
@ 2009-07-07 11:38   ` Avi Kivity
  0 siblings, 0 replies; 3+ messages in thread
From: Avi Kivity @ 2009-07-07 11:38 UTC (permalink / raw)
  To: Andre Przywara; +Cc: kvm

On 07/02/2009 05:45 PM, Andre Przywara wrote:
> The KVM kernel will disable all bits in CPUID which are not present in
> the host. As this is mostly true for the hypervisor bit (1.ecx),
> preserve its value before the trim and restore it afterwards.
> This is similar to commit 6c0d7ee8, but since qemu-kvm uses another code
> path it has to be inserted in qemu-kvm-x86.c, too.
>    

Applied, thanks.

-- 
error compiling committee.c: too many arguments to function


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2009-07-07 11:36 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-07-02 13:27 [PATCH] qemu-kvm: preserve the hypervisor bit while KVM trims the CPUID bits Andre Przywara
2009-07-02 14:45 ` [PATCH v2] " Andre Przywara
2009-07-07 11:38   ` Avi Kivity

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).