Merge tag 'kvm-3.6-1' of git://git.kernel.org/pub/scm/virt/kvm/kvm
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / arch / powerpc / kernel / kvm.c
index 02c167db6ba027fc0f895679b0a3320a5790b0d8..867db1de8949571a152cd9559a5b36bb7c91e090 100644 (file)
@@ -31,6 +31,7 @@
 #include <asm/cacheflush.h>
 #include <asm/disassemble.h>
 #include <asm/ppc-opcode.h>
+#include <asm/epapr_hcalls.h>
 
 #define KVM_MAGIC_PAGE         (-4096L)
 #define magic_var(x) KVM_MAGIC_PAGE + offsetof(struct kvm_vcpu_arch_shared, x)
@@ -726,7 +727,7 @@ unsigned long kvm_hypercall(unsigned long *in,
        unsigned long register r11 asm("r11") = nr;
        unsigned long register r12 asm("r12");
 
-       asm volatile("bl        kvm_hypercall_start"
+       asm volatile("bl        epapr_hypercall_start"
                     : "=r"(r0), "=r"(r3), "=r"(r4), "=r"(r5), "=r"(r6),
                       "=r"(r7), "=r"(r8), "=r"(r9), "=r"(r10), "=r"(r11),
                       "=r"(r12)
@@ -747,29 +748,6 @@ unsigned long kvm_hypercall(unsigned long *in,
 }
 EXPORT_SYMBOL_GPL(kvm_hypercall);
 
-static int kvm_para_setup(void)
-{
-       extern u32 kvm_hypercall_start;
-       struct device_node *hyper_node;
-       u32 *insts;
-       int len, i;
-
-       hyper_node = of_find_node_by_path("/hypervisor");
-       if (!hyper_node)
-               return -1;
-
-       insts = (u32*)of_get_property(hyper_node, "hcall-instructions", &len);
-       if (len % 4)
-               return -1;
-       if (len > (4 * 4))
-               return -1;
-
-       for (i = 0; i < (len / 4); i++)
-               kvm_patch_ins(&(&kvm_hypercall_start)[i], insts[i]);
-
-       return 0;
-}
-
 static __init void kvm_free_tmp(void)
 {
        unsigned long start, end;
@@ -791,7 +769,7 @@ static int __init kvm_guest_init(void)
        if (!kvm_para_available())
                goto free_tmp;
 
-       if (kvm_para_setup())
+       if (!epapr_paravirt_enabled)
                goto free_tmp;
 
        if (kvm_para_has_feature(KVM_FEATURE_MAGIC_PAGE))