Patchwork [qom-cpu,3/7] target-i386: Disable kvm_mmu by default

login
register
mail settings
Submitter Eduardo Habkost
Date Jan. 7, 2013, 6:20 p.m.
Message ID <1357582848-16575-4-git-send-email-ehabkost@redhat.com>
Download mbox | patch
Permalink /patch/210092/
State New
Headers show

Comments

Eduardo Habkost - Jan. 7, 2013, 6:20 p.m.
KVM_CAP_PV_MMU capability reporting was removed from the kernel since
v2.6.33 (see commit a68a6a7282373), and was completely removed from the
kernel since v3.3 (see commit fb92045843). It doesn't make sense to keep
it enabled by default, as it would cause unnecessary hassle when using
the "enforce" flag.

This disables kvm_mmu on all machine-types. With this fix, the possible
scenarios when migrating from QEMU <= 1.3 to QEMU 1.4 are;

------------+------------+----------------------------------------------------
 src kernel | dst kernel | Result
------------+------------+----------------------------------------------------
 >= 2.6.33  | any        | kvm_mmu was already disabled and will stay disabled
 <= 2.6.32  | >= 3.3     | correct live migration is impossible
 <= 2.6.32  | <= 3.2     | kvm_mmu will be disabled on next guest reboot *
------------+------------+----------------------------------------------------

 * If they are running kernel <= 2.6.32 and want kvm_mmu to be kept
   enabled on guest reboot, they can explicitly add +kvm_mmu to the QEMU
   command-line. Using 2.6.33 and higher, it is not possible to enable
   kvm_mmu explicitly anymore.

Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
Cc: kvm@vger.kernel.org
Cc: Michael S. Tsirkin <mst@redhat.com>
Cc: Gleb Natapov <gleb@redhat.com>
Cc: Marcelo Tosatti <mtosatti@redhat.com>
Cc: libvir-list@redhat.com
Cc: Jiri Denemark <jdenemar@redhat.com>

Changes v2:
 - Coding style fix
 - Removed redundant comments above machine init functions

Changes v3:
 - Eliminate per-machine-type compatibility code
---
 target-i386/cpu.c | 1 -
 1 file changed, 1 deletion(-)
Andreas Färber - Jan. 10, 2013, 10:40 p.m.
Am 07.01.2013 19:20, schrieb Eduardo Habkost:
> KVM_CAP_PV_MMU capability reporting was removed from the kernel since
> v2.6.33 (see commit a68a6a7282373), and was completely removed from the
> kernel since v3.3 (see commit fb92045843). It doesn't make sense to keep
> it enabled by default, as it would cause unnecessary hassle when using
> the "enforce" flag.
> 
> This disables kvm_mmu on all machine-types. With this fix, the possible
> scenarios when migrating from QEMU <= 1.3 to QEMU 1.4 are;
> 
> ------------+------------+----------------------------------------------------
>  src kernel | dst kernel | Result
> ------------+------------+----------------------------------------------------
>  >= 2.6.33  | any        | kvm_mmu was already disabled and will stay disabled
>  <= 2.6.32  | >= 3.3     | correct live migration is impossible
>  <= 2.6.32  | <= 3.2     | kvm_mmu will be disabled on next guest reboot *
> ------------+------------+----------------------------------------------------

When using ASCII art, please remember to use at most 76 characters, to
avoid linewraps in git-log. Shortening the second column fixes this.

Andreas

> 
>  * If they are running kernel <= 2.6.32 and want kvm_mmu to be kept
>    enabled on guest reboot, they can explicitly add +kvm_mmu to the QEMU
>    command-line. Using 2.6.33 and higher, it is not possible to enable
>    kvm_mmu explicitly anymore.
> 
> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>

Patch

diff --git a/target-i386/cpu.c b/target-i386/cpu.c
index 40400ac..b09b625 100644
--- a/target-i386/cpu.c
+++ b/target-i386/cpu.c
@@ -159,7 +159,6 @@  int enforce_cpuid = 0;
 #if defined(CONFIG_KVM)
 static uint32_t kvm_default_features = (1 << KVM_FEATURE_CLOCKSOURCE) |
         (1 << KVM_FEATURE_NOP_IO_DELAY) |
-        (1 << KVM_FEATURE_MMU_OP) |
         (1 << KVM_FEATURE_CLOCKSOURCE2) |
         (1 << KVM_FEATURE_ASYNC_PF) |
         (1 << KVM_FEATURE_STEAL_TIME) |