Re: [PATCH -tip] x86: move vmware to hypervisor

Ingo Molnar
2009-03-25T13:00:27Z

* Jaswinder Singh Rajput <jaswinder@kernel.org> wrote:

> On Tue, 2009-03-17 at 08:50 -0700, H. Peter Anvin wrote:
> > Jaswinder Singh Rajput wrote:
> > >> I dont really like this one. KVM is a hypervisor too, and so is
> > >> Xen and lguest. VMware is one of the many types of a
> > >> hypervisors.
> > >
> > > Can we use common hypervisor for Xen, lguest, vmware, etc.
> > > And Xen, lguest, vmware will be the sub-options.
> >
> > Obviously. We spent a lot of time breaking up the cpu stuff into common
> > and vendor-specific portions, we shouldn't go backwards w.r.t. hypervisors.
> >
>
> OK, agreed.
>
> But atleast give freedom to users to disable this who are not willing to
> use it.
>
> Currently hypervisor is used only used by VMWARE, so is I prepare this
> freedom patch:
>
> From: Jaswinder Singh Rajput <jaswinderrajput@gmail.com>
> Date: Wed, 25 Mar 2009 10:40:01 +0530
> Subject: [PATCH] x86: Introduce CONFIG_X86_VMWARE option
>
> Impact: freedom to choose
>
> Gives freedom to users to select or suppress CONFIG_X86_VMWARE option.
>
> Signed-off-by: Jaswinder Singh Rajput <jaswinderrajput@gmail.com>
> ---
> arch/x86/Kconfig | 7 +++++++
> arch/x86/include/asm/hypervisor.h | 9 +++++++++
> arch/x86/kernel/cpu/Makefile | 2 +-
> 3 files changed, 17 insertions(+), 1 deletions(-)
>
> diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
> index f5d7d29..56e1a9c 100644
> --- a/arch/x86/Kconfig
> +++ b/arch/x86/Kconfig
> @@ -554,6 +554,13 @@ config HPET_EMULATE_RTC
> def_bool y
> depends on HPET_TIMER && (RTC=y || RTC=m || RTC_DRV_CMOS=m || RTC_DRV_CMOS=y)
>
> +config X86_VMWARE
> + bool
> + default n
> + prompt "X86 VMware support"
> + ---help---
> + Enable X86 VMware Hypervisor support.
> +
> # Mark as embedded because too many people got it wrong.
> # The code disables itself when not needed.
> config DMI
> diff --git a/arch/x86/include/asm/hypervisor.h b/arch/x86/include/asm/hypervisor.h
> index 369f5c5..c08ae75 100644
> --- a/arch/x86/include/asm/hypervisor.h
> +++ b/arch/x86/include/asm/hypervisor.h
> @@ -20,7 +20,16 @@
> #ifndef ASM_X86__HYPERVISOR_H
> #define ASM_X86__HYPERVISOR_H
>
> +#ifdef CONFIG_X86_VMWARE
> extern unsigned long get_hypervisor_tsc_freq(void);
> extern void init_hypervisor(struct cpuinfo_x86 *c);
> +#else
> +static inline unsigned long get_hypervisor_tsc_freq(void)
> +{
> + return 0;
> +}
> +
> +static inline void init_hypervisor(struct cpuinfo_x86 *c) {}
> +#endif
>
> #endif
> diff --git a/arch/x86/kernel/cpu/Makefile b/arch/x86/kernel/cpu/Makefile
> index 3efcb2b..24372f7 100644
> --- a/arch/x86/kernel/cpu/Makefile
> +++ b/arch/x86/kernel/cpu/Makefile
> @@ -9,11 +9,11 @@ endif
>
> obj-y := intel_cacheinfo.o addon_cpuid_features.o
> obj-y += proc.o capflags.o powerflags.o common.o
> -obj-y += vmware.o hypervisor.o
>
> obj-$(CONFIG_X86_32) += bugs.o cmpxchg.o
> obj-$(CONFIG_X86_64) += bugs_64.o
>
> +obj-$(CONFIG_X86_VMWARE) += vmware.o hypervisor.o
> obj-$(CONFIG_X86_CPU_DEBUG) += cpu_debug.o

vmware can be considered a CPU here, so i think making the disabling
also depend on PROCESSOR_SELECT.

Ingo