diff options
Diffstat (limited to 'arch/arm/kvm/arm.c')
-rw-r--r-- | arch/arm/kvm/arm.c | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/arch/arm/kvm/arm.c b/arch/arm/kvm/arm.c index 9c697db2787e..2a700e00528d 100644 --- a/arch/arm/kvm/arm.c +++ b/arch/arm/kvm/arm.c | |||
@@ -65,7 +65,7 @@ static bool vgic_present; | |||
65 | static void kvm_arm_set_running_vcpu(struct kvm_vcpu *vcpu) | 65 | static void kvm_arm_set_running_vcpu(struct kvm_vcpu *vcpu) |
66 | { | 66 | { |
67 | BUG_ON(preemptible()); | 67 | BUG_ON(preemptible()); |
68 | __get_cpu_var(kvm_arm_running_vcpu) = vcpu; | 68 | __this_cpu_write(kvm_arm_running_vcpu, vcpu); |
69 | } | 69 | } |
70 | 70 | ||
71 | /** | 71 | /** |
@@ -75,7 +75,7 @@ static void kvm_arm_set_running_vcpu(struct kvm_vcpu *vcpu) | |||
75 | struct kvm_vcpu *kvm_arm_get_running_vcpu(void) | 75 | struct kvm_vcpu *kvm_arm_get_running_vcpu(void) |
76 | { | 76 | { |
77 | BUG_ON(preemptible()); | 77 | BUG_ON(preemptible()); |
78 | return __get_cpu_var(kvm_arm_running_vcpu); | 78 | return __this_cpu_read(kvm_arm_running_vcpu); |
79 | } | 79 | } |
80 | 80 | ||
81 | /** | 81 | /** |
@@ -152,12 +152,13 @@ int kvm_arch_vcpu_fault(struct kvm_vcpu *vcpu, struct vm_fault *vmf) | |||
152 | return VM_FAULT_SIGBUS; | 152 | return VM_FAULT_SIGBUS; |
153 | } | 153 | } |
154 | 154 | ||
155 | void kvm_arch_free_memslot(struct kvm_memory_slot *free, | 155 | void kvm_arch_free_memslot(struct kvm *kvm, struct kvm_memory_slot *free, |
156 | struct kvm_memory_slot *dont) | 156 | struct kvm_memory_slot *dont) |
157 | { | 157 | { |
158 | } | 158 | } |
159 | 159 | ||
160 | int kvm_arch_create_memslot(struct kvm_memory_slot *slot, unsigned long npages) | 160 | int kvm_arch_create_memslot(struct kvm *kvm, struct kvm_memory_slot *slot, |
161 | unsigned long npages) | ||
161 | { | 162 | { |
162 | return 0; | 163 | return 0; |
163 | } | 164 | } |
@@ -797,6 +798,19 @@ long kvm_arch_vm_ioctl(struct file *filp, | |||
797 | return -EFAULT; | 798 | return -EFAULT; |
798 | return kvm_vm_ioctl_set_device_addr(kvm, &dev_addr); | 799 | return kvm_vm_ioctl_set_device_addr(kvm, &dev_addr); |
799 | } | 800 | } |
801 | case KVM_ARM_PREFERRED_TARGET: { | ||
802 | int err; | ||
803 | struct kvm_vcpu_init init; | ||
804 | |||
805 | err = kvm_vcpu_preferred_target(&init); | ||
806 | if (err) | ||
807 | return err; | ||
808 | |||
809 | if (copy_to_user(argp, &init, sizeof(init))) | ||
810 | return -EFAULT; | ||
811 | |||
812 | return 0; | ||
813 | } | ||
800 | default: | 814 | default: |
801 | return -EINVAL; | 815 | return -EINVAL; |
802 | } | 816 | } |
@@ -815,7 +829,7 @@ static void cpu_init_hyp_mode(void *dummy) | |||
815 | 829 | ||
816 | boot_pgd_ptr = kvm_mmu_get_boot_httbr(); | 830 | boot_pgd_ptr = kvm_mmu_get_boot_httbr(); |
817 | pgd_ptr = kvm_mmu_get_httbr(); | 831 | pgd_ptr = kvm_mmu_get_httbr(); |
818 | stack_page = __get_cpu_var(kvm_arm_hyp_stack_page); | 832 | stack_page = __this_cpu_read(kvm_arm_hyp_stack_page); |
819 | hyp_stack_ptr = stack_page + PAGE_SIZE; | 833 | hyp_stack_ptr = stack_page + PAGE_SIZE; |
820 | vector_ptr = (unsigned long)__kvm_hyp_vector; | 834 | vector_ptr = (unsigned long)__kvm_hyp_vector; |
821 | 835 | ||