diff options
author | Marcelo Tosatti <mtosatti@redhat.com> | 2012-08-16 16:00:19 -0400 |
---|---|---|
committer | Marcelo Tosatti <mtosatti@redhat.com> | 2012-08-23 03:57:54 -0400 |
commit | 90993cdd1800dc6ef9587431a0c625b978584e81 (patch) | |
tree | 246850e7f537b23a860523590f0a93a257fa0880 /arch/x86 | |
parent | 4d8b81abc47b83a1939e59df2fdb0e98dfe0eedd (diff) |
x86: KVM guest: merge CONFIG_KVM_CLOCK into CONFIG_KVM_GUEST
The distinction between CONFIG_KVM_CLOCK and CONFIG_KVM_GUEST is
not so clear anymore, as demonstrated by recent bugs caused by poor
handling of on/off combinations of these options.
Merge CONFIG_KVM_CLOCK into CONFIG_KVM_GUEST.
Reported-By: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Diffstat (limited to 'arch/x86')
-rw-r--r-- | arch/x86/Kconfig | 21 | ||||
-rw-r--r-- | arch/x86/include/asm/kvm_para.h | 4 | ||||
-rw-r--r-- | arch/x86/kernel/Makefile | 3 | ||||
-rw-r--r-- | arch/x86/kernel/kvm.c | 2 | ||||
-rw-r--r-- | arch/x86/kernel/setup.c | 2 |
5 files changed, 12 insertions, 20 deletions
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 8ec3a1aa4abd..a42e2e99caae 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig | |||
@@ -573,23 +573,18 @@ config PARAVIRT_TIME_ACCOUNTING | |||
573 | 573 | ||
574 | source "arch/x86/xen/Kconfig" | 574 | source "arch/x86/xen/Kconfig" |
575 | 575 | ||
576 | config KVM_CLOCK | ||
577 | bool "KVM paravirtualized clock" | ||
578 | select PARAVIRT | ||
579 | select PARAVIRT_CLOCK | ||
580 | ---help--- | ||
581 | Turning on this option will allow you to run a paravirtualized clock | ||
582 | when running over the KVM hypervisor. Instead of relying on a PIT | ||
583 | (or probably other) emulation by the underlying device model, the host | ||
584 | provides the guest with timing infrastructure such as time of day, and | ||
585 | system time | ||
586 | |||
587 | config KVM_GUEST | 576 | config KVM_GUEST |
588 | bool "KVM Guest support" | 577 | bool "KVM Guest support (including kvmclock)" |
578 | select PARAVIRT | ||
589 | select PARAVIRT | 579 | select PARAVIRT |
580 | select PARAVIRT_CLOCK | ||
581 | default y if PARAVIRT_GUEST | ||
590 | ---help--- | 582 | ---help--- |
591 | This option enables various optimizations for running under the KVM | 583 | This option enables various optimizations for running under the KVM |
592 | hypervisor. | 584 | hypervisor. It includes a paravirtualized clock, so that instead |
585 | of relying on a PIT (or probably other) emulation by the | ||
586 | underlying device model, the host provides the guest with | ||
587 | timing infrastructure such as time of day, and system time | ||
593 | 588 | ||
594 | source "arch/x86/lguest/Kconfig" | 589 | source "arch/x86/lguest/Kconfig" |
595 | 590 | ||
diff --git a/arch/x86/include/asm/kvm_para.h b/arch/x86/include/asm/kvm_para.h index 20f5697888bd..eb3e9d85e1f1 100644 --- a/arch/x86/include/asm/kvm_para.h +++ b/arch/x86/include/asm/kvm_para.h | |||
@@ -102,14 +102,14 @@ struct kvm_vcpu_pv_apf_data { | |||
102 | extern void kvmclock_init(void); | 102 | extern void kvmclock_init(void); |
103 | extern int kvm_register_clock(char *txt); | 103 | extern int kvm_register_clock(char *txt); |
104 | 104 | ||
105 | #ifdef CONFIG_KVM_CLOCK | 105 | #ifdef CONFIG_KVM_GUEST |
106 | bool kvm_check_and_clear_guest_paused(void); | 106 | bool kvm_check_and_clear_guest_paused(void); |
107 | #else | 107 | #else |
108 | static inline bool kvm_check_and_clear_guest_paused(void) | 108 | static inline bool kvm_check_and_clear_guest_paused(void) |
109 | { | 109 | { |
110 | return false; | 110 | return false; |
111 | } | 111 | } |
112 | #endif /* CONFIG_KVMCLOCK */ | 112 | #endif /* CONFIG_KVM_GUEST */ |
113 | 113 | ||
114 | /* This instruction is vmcall. On non-VT architectures, it will generate a | 114 | /* This instruction is vmcall. On non-VT architectures, it will generate a |
115 | * trap that we will then rewrite to the appropriate instruction. | 115 | * trap that we will then rewrite to the appropriate instruction. |
diff --git a/arch/x86/kernel/Makefile b/arch/x86/kernel/Makefile index 8215e5652d97..7203298e0b83 100644 --- a/arch/x86/kernel/Makefile +++ b/arch/x86/kernel/Makefile | |||
@@ -81,8 +81,7 @@ obj-$(CONFIG_DEBUG_RODATA_TEST) += test_rodata.o | |||
81 | obj-$(CONFIG_DEBUG_NX_TEST) += test_nx.o | 81 | obj-$(CONFIG_DEBUG_NX_TEST) += test_nx.o |
82 | obj-$(CONFIG_DEBUG_NMI_SELFTEST) += nmi_selftest.o | 82 | obj-$(CONFIG_DEBUG_NMI_SELFTEST) += nmi_selftest.o |
83 | 83 | ||
84 | obj-$(CONFIG_KVM_GUEST) += kvm.o | 84 | obj-$(CONFIG_KVM_GUEST) += kvm.o kvmclock.o |
85 | obj-$(CONFIG_KVM_CLOCK) += kvmclock.o | ||
86 | obj-$(CONFIG_PARAVIRT) += paravirt.o paravirt_patch_$(BITS).o | 85 | obj-$(CONFIG_PARAVIRT) += paravirt.o paravirt_patch_$(BITS).o |
87 | obj-$(CONFIG_PARAVIRT_SPINLOCKS)+= paravirt-spinlocks.o | 86 | obj-$(CONFIG_PARAVIRT_SPINLOCKS)+= paravirt-spinlocks.o |
88 | obj-$(CONFIG_PARAVIRT_CLOCK) += pvclock.o | 87 | obj-$(CONFIG_PARAVIRT_CLOCK) += pvclock.o |
diff --git a/arch/x86/kernel/kvm.c b/arch/x86/kernel/kvm.c index 1596cc8fd793..b3e5e51bc907 100644 --- a/arch/x86/kernel/kvm.c +++ b/arch/x86/kernel/kvm.c | |||
@@ -397,9 +397,7 @@ void kvm_disable_steal_time(void) | |||
397 | #ifdef CONFIG_SMP | 397 | #ifdef CONFIG_SMP |
398 | static void __init kvm_smp_prepare_boot_cpu(void) | 398 | static void __init kvm_smp_prepare_boot_cpu(void) |
399 | { | 399 | { |
400 | #ifdef CONFIG_KVM_CLOCK | ||
401 | WARN_ON(kvm_register_clock("primary cpu clock")); | 400 | WARN_ON(kvm_register_clock("primary cpu clock")); |
402 | #endif | ||
403 | kvm_guest_cpu_init(); | 401 | kvm_guest_cpu_init(); |
404 | native_smp_prepare_boot_cpu(); | 402 | native_smp_prepare_boot_cpu(); |
405 | } | 403 | } |
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c index f4b9b80e1b95..b3386ae3438b 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c | |||
@@ -957,7 +957,7 @@ void __init setup_arch(char **cmdline_p) | |||
957 | initmem_init(); | 957 | initmem_init(); |
958 | memblock_find_dma_reserve(); | 958 | memblock_find_dma_reserve(); |
959 | 959 | ||
960 | #ifdef CONFIG_KVM_CLOCK | 960 | #ifdef CONFIG_KVM_GUEST |
961 | kvmclock_init(); | 961 | kvmclock_init(); |
962 | #endif | 962 | #endif |
963 | 963 | ||