diff --git a/drivers/kvm/Kconfig b/drivers/kvm/Kconfig index 445c6e4..63ce7b0 100644 --- a/drivers/kvm/Kconfig +++ b/drivers/kvm/Kconfig @@ -3,14 +3,14 @@ # menuconfig VIRTUALIZATION bool "Virtualization" - depends on X86 + depends on X86 || POWERPC default y if VIRTUALIZATION config KVM tristate "Kernel-based Virtual Machine (KVM) support" - depends on X86 && EXPERIMENTAL + depends on EXPERIMENTAL select PREEMPT_NOTIFIERS select ANON_INODES ---help--- @@ -27,18 +27,40 @@ config KVM If unsure, say N. +config KVM_X86 + bool + config KVM_INTEL tristate "KVM for Intel processors support" - depends on KVM + depends on KVM && X86 + select KVM_X86 ---help--- Provides support for KVM on Intel processors equipped with the VT extensions. config KVM_AMD tristate "KVM for AMD processors support" - depends on KVM + depends on KVM && X86 + select KVM_X86 ---help--- Provides support for KVM on AMD processors equipped with the AMD-V (SVM) extensions. +config KVM_EMBEDDED_POWERPC + bool + +config KVM_POWERPC_440 + tristate "KVM for embedded PowerPC 440 cores" + depends on KVM && POWERPC + select KVM_EMBEDDED_POWERPC + ---help--- + Provides support for KVM on embedded PowerPC 440 cores + +config KVM_POWERPC_E500 + tristate "KVM for embedded PowerPC e500 cores" + depends on KVM && POWERPC + select KVM_EMBEDDED_POWERPC + ---help--- + Provides support for KVM on embedded PowerPC e500 cores + endif # VIRTUALIZATION diff --git a/drivers/kvm/Makefile b/drivers/kvm/Makefile index c0a789f..843fe08 100644 --- a/drivers/kvm/Makefile +++ b/drivers/kvm/Makefile @@ -2,9 +2,19 @@ # Makefile for Kernel-based Virtual Machine module # -kvm-objs := kvm_main.o mmu.o x86_emulate.o -obj-$(CONFIG_KVM) += kvm.o +kvm-objs := kvm_main.o + +ifeq ($(CONFIG_KVM_X86),y) +kvm-objs += kvm_x86.o mmu.o x86_emulate.o + kvm-intel-objs = vmx.o obj-$(CONFIG_KVM_INTEL) += kvm-intel.o kvm-amd-objs = svm.o obj-$(CONFIG_KVM_AMD) += kvm-amd.o +endif + +ifeq ($(CONFIG_KVM_EMBEDDED_POWERPC),y) +kvm-objs += kvm-powerpc.o +endif + +obj-$(CONFIG_KVM) += kvm.o diff --git a/drivers/kvm/kvm_arch.h b/drivers/kvm/kvm_arch.h new file mode 100644 index 0000000..6658948 --- /dev/null +++ b/drivers/kvm/kvm_arch.h @@ -0,0 +1,14 @@ +#ifndef __KVM_ARCH_H +#define __KVM_ARCH_H + +/* + * This work is licensed under the terms of the GNU GPL, version 2. See + * the COPYING file in the top-level directory. + * + * This is the interface an arch module has to implement because this is what + * kvm_main gets linked against depending on arch selection. + */ + +#include + +#endif diff --git a/drivers/kvm/kvm_x86.c b/drivers/kvm/kvm_x86.c new file mode 100644 index 0000000..585f277 --- /dev/null +++ b/drivers/kvm/kvm_x86.c @@ -0,0 +1,51 @@ +/* + * Kernel-based Virtual Machine driver for Linux + * + * This module enables machines with Intel VT-x extensions to run virtual + * machines without emulation or binary translation. + * + * Copyright (C) 2006 Qumranet, Inc. + * + * Authors: + * Avi Kivity + * Yaniv Kamay + * + * This work is licensed under the terms of the GNU GPL, version 2. See + * the COPYING file in the top-level directory. + * + */ + +#include "kvm.h" +#include "kvm_arch.h" +#include "kvm_x86.h" +#include "x86_emulate.h" +#include "segment_descriptor.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +MODULE_AUTHOR("Qumranet"); +MODULE_LICENSE("GPL"); + diff --git a/drivers/kvm/kvm_x86.h b/drivers/kvm/kvm_x86.h new file mode 100644 index 0000000..021385e --- /dev/null +++ b/drivers/kvm/kvm_x86.h @@ -0,0 +1,9 @@ +#ifndef __KVM_X86_H +#define __KVM_X86_H + +/* + * This work is licensed under the terms of the GNU GPL, version 2. See + * the COPYING file in the top-level directory. + */ + +#endif