include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit...
[pandora-kernel.git] / arch / powerpc / kvm / powerpc.c
index f06cf93..297fcd2 100644 (file)
@@ -25,6 +25,7 @@
 #include <linux/vmalloc.h>
 #include <linux/hrtimer.h>
 #include <linux/fs.h>
+#include <linux/slab.h>
 #include <asm/cputable.h>
 #include <asm/uaccess.h>
 #include <asm/kvm_ppc.h>
@@ -137,6 +138,7 @@ void kvm_arch_destroy_vm(struct kvm *kvm)
 {
        kvmppc_free_vcpus(kvm);
        kvm_free_physmem(kvm);
+       cleanup_srcu_struct(&kvm->srcu);
        kfree(kvm);
 }
 
@@ -165,14 +167,24 @@ long kvm_arch_dev_ioctl(struct file *filp,
        return -EINVAL;
 }
 
-int kvm_arch_set_memory_region(struct kvm *kvm,
-                               struct kvm_userspace_memory_region *mem,
-                               struct kvm_memory_slot old,
-                               int user_alloc)
+int kvm_arch_prepare_memory_region(struct kvm *kvm,
+                                   struct kvm_memory_slot *memslot,
+                                   struct kvm_memory_slot old,
+                                   struct kvm_userspace_memory_region *mem,
+                                   int user_alloc)
 {
        return 0;
 }
 
+void kvm_arch_commit_memory_region(struct kvm *kvm,
+               struct kvm_userspace_memory_region *mem,
+               struct kvm_memory_slot old,
+               int user_alloc)
+{
+       return;
+}
+
+
 void kvm_arch_flush_shadow(struct kvm *kvm)
 {
 }
@@ -260,34 +272,35 @@ int kvm_arch_vcpu_ioctl_set_guest_debug(struct kvm_vcpu *vcpu,
 static void kvmppc_complete_dcr_load(struct kvm_vcpu *vcpu,
                                      struct kvm_run *run)
 {
-       ulong *gpr = &vcpu->arch.gpr[vcpu->arch.io_gpr];
-       *gpr = run->dcr.data;
+       kvmppc_set_gpr(vcpu, vcpu->arch.io_gpr, run->dcr.data);
 }
 
 static void kvmppc_complete_mmio_load(struct kvm_vcpu *vcpu,
                                       struct kvm_run *run)
 {
-       ulong *gpr = &vcpu->arch.gpr[vcpu->arch.io_gpr];
+       ulong gpr;
 
-       if (run->mmio.len > sizeof(*gpr)) {
+       if (run->mmio.len > sizeof(gpr)) {
                printk(KERN_ERR "bad MMIO length: %d\n", run->mmio.len);
                return;
        }
 
        if (vcpu->arch.mmio_is_bigendian) {
                switch (run->mmio.len) {
-               case 4: *gpr = *(u32 *)run->mmio.data; break;
-               case 2: *gpr = *(u16 *)run->mmio.data; break;
-               case 1: *gpr = *(u8 *)run->mmio.data; break;
+               case 4: gpr = *(u32 *)run->mmio.data; break;
+               case 2: gpr = *(u16 *)run->mmio.data; break;
+               case 1: gpr = *(u8 *)run->mmio.data; break;
                }
        } else {
                /* Convert BE data from userland back to LE. */
                switch (run->mmio.len) {
-               case 4: *gpr = ld_le32((u32 *)run->mmio.data); break;
-               case 2: *gpr = ld_le16((u16 *)run->mmio.data); break;
-               case 1: *gpr = *(u8 *)run->mmio.data; break;
+               case 4: gpr = ld_le32((u32 *)run->mmio.data); break;
+               case 2: gpr = ld_le16((u16 *)run->mmio.data); break;
+               case 1: gpr = *(u8 *)run->mmio.data; break;
                }
        }
+
+       kvmppc_set_gpr(vcpu, vcpu->arch.io_gpr, gpr);
 }
 
 int kvmppc_handle_load(struct kvm_run *run, struct kvm_vcpu *vcpu,