diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-11-05 20:49:22 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-11-05 20:49:22 -0400 |
| commit | d4285bd6be60268ee9925b41287fb8c2a3132bde (patch) | |
| tree | db61c17e7fbd10f8b31695988f9882769c193fdd /arch/powerpc | |
| parent | c093ee4f07f46d3a835841cafa07514fa94878d2 (diff) | |
| parent | df8940eadf011db2d4bedecf6eb659d44494edb3 (diff) | |
Merge branch 'kvm-updates/2.6.37' of git://git.kernel.org/pub/scm/virt/kvm/kvm
* 'kvm-updates/2.6.37' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
KVM: PPC: BookE: Load the lower half of MSR
KVM: PPC: BookE: fix sleep with interrupts disabled
KVM: PPC: e500: Call kvm_vcpu_uninit() before kvmppc_e500_tlb_uninit().
PPC: KVM: Book E doesn't have __end_interrupts.
KVM: x86: Issue smp_call_function_many with preemption disabled
KVM: x86: fix information leak to userland
KVM: PPC: fix information leak to userland
KVM: MMU: fix rmap_remove on non present sptes
KVM: Write protect memory after slot swap
Diffstat (limited to 'arch/powerpc')
| -rw-r--r-- | arch/powerpc/kernel/kvm.c | 2 | ||||
| -rw-r--r-- | arch/powerpc/kvm/booke_interrupts.S | 2 | ||||
| -rw-r--r-- | arch/powerpc/kvm/e500.c | 2 | ||||
| -rw-r--r-- | arch/powerpc/kvm/powerpc.c | 1 | ||||
| -rw-r--r-- | arch/powerpc/kvm/timing.c | 2 |
5 files changed, 4 insertions, 5 deletions
diff --git a/arch/powerpc/kernel/kvm.c b/arch/powerpc/kernel/kvm.c index 428d0e538aec..b06bdae04064 100644 --- a/arch/powerpc/kernel/kvm.c +++ b/arch/powerpc/kernel/kvm.c | |||
| @@ -127,7 +127,7 @@ static void kvm_patch_ins_nop(u32 *inst) | |||
| 127 | 127 | ||
| 128 | static void kvm_patch_ins_b(u32 *inst, int addr) | 128 | static void kvm_patch_ins_b(u32 *inst, int addr) |
| 129 | { | 129 | { |
| 130 | #ifdef CONFIG_RELOCATABLE | 130 | #if defined(CONFIG_RELOCATABLE) && defined(CONFIG_PPC_BOOK3S) |
| 131 | /* On relocatable kernels interrupts handlers and our code | 131 | /* On relocatable kernels interrupts handlers and our code |
| 132 | can be in different regions, so we don't patch them */ | 132 | can be in different regions, so we don't patch them */ |
| 133 | 133 | ||
diff --git a/arch/powerpc/kvm/booke_interrupts.S b/arch/powerpc/kvm/booke_interrupts.S index 049846911ce4..1cc471faac2d 100644 --- a/arch/powerpc/kvm/booke_interrupts.S +++ b/arch/powerpc/kvm/booke_interrupts.S | |||
| @@ -416,7 +416,7 @@ lightweight_exit: | |||
| 416 | lwz r3, VCPU_PC(r4) | 416 | lwz r3, VCPU_PC(r4) |
| 417 | mtsrr0 r3 | 417 | mtsrr0 r3 |
| 418 | lwz r3, VCPU_SHARED(r4) | 418 | lwz r3, VCPU_SHARED(r4) |
| 419 | lwz r3, VCPU_SHARED_MSR(r3) | 419 | lwz r3, (VCPU_SHARED_MSR + 4)(r3) |
| 420 | oris r3, r3, KVMPPC_MSR_MASK@h | 420 | oris r3, r3, KVMPPC_MSR_MASK@h |
| 421 | ori r3, r3, KVMPPC_MSR_MASK@l | 421 | ori r3, r3, KVMPPC_MSR_MASK@l |
| 422 | mtsrr1 r3 | 422 | mtsrr1 r3 |
diff --git a/arch/powerpc/kvm/e500.c b/arch/powerpc/kvm/e500.c index 71750f2dd5d3..e3768ee9b595 100644 --- a/arch/powerpc/kvm/e500.c +++ b/arch/powerpc/kvm/e500.c | |||
| @@ -138,8 +138,8 @@ void kvmppc_core_vcpu_free(struct kvm_vcpu *vcpu) | |||
| 138 | struct kvmppc_vcpu_e500 *vcpu_e500 = to_e500(vcpu); | 138 | struct kvmppc_vcpu_e500 *vcpu_e500 = to_e500(vcpu); |
| 139 | 139 | ||
| 140 | free_page((unsigned long)vcpu->arch.shared); | 140 | free_page((unsigned long)vcpu->arch.shared); |
| 141 | kvmppc_e500_tlb_uninit(vcpu_e500); | ||
| 142 | kvm_vcpu_uninit(vcpu); | 141 | kvm_vcpu_uninit(vcpu); |
| 142 | kvmppc_e500_tlb_uninit(vcpu_e500); | ||
| 143 | kmem_cache_free(kvm_vcpu_cache, vcpu_e500); | 143 | kmem_cache_free(kvm_vcpu_cache, vcpu_e500); |
| 144 | } | 144 | } |
| 145 | 145 | ||
diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c index 2f87a1627f6c..38f756f25053 100644 --- a/arch/powerpc/kvm/powerpc.c +++ b/arch/powerpc/kvm/powerpc.c | |||
| @@ -617,6 +617,7 @@ long kvm_arch_vm_ioctl(struct file *filp, | |||
| 617 | switch (ioctl) { | 617 | switch (ioctl) { |
| 618 | case KVM_PPC_GET_PVINFO: { | 618 | case KVM_PPC_GET_PVINFO: { |
| 619 | struct kvm_ppc_pvinfo pvinfo; | 619 | struct kvm_ppc_pvinfo pvinfo; |
| 620 | memset(&pvinfo, 0, sizeof(pvinfo)); | ||
| 620 | r = kvm_vm_ioctl_get_pvinfo(&pvinfo); | 621 | r = kvm_vm_ioctl_get_pvinfo(&pvinfo); |
| 621 | if (copy_to_user(argp, &pvinfo, sizeof(pvinfo))) { | 622 | if (copy_to_user(argp, &pvinfo, sizeof(pvinfo))) { |
| 622 | r = -EFAULT; | 623 | r = -EFAULT; |
diff --git a/arch/powerpc/kvm/timing.c b/arch/powerpc/kvm/timing.c index 46fa04f12a9b..a021f5827a33 100644 --- a/arch/powerpc/kvm/timing.c +++ b/arch/powerpc/kvm/timing.c | |||
| @@ -35,7 +35,6 @@ void kvmppc_init_timing_stats(struct kvm_vcpu *vcpu) | |||
| 35 | int i; | 35 | int i; |
| 36 | 36 | ||
| 37 | /* pause guest execution to avoid concurrent updates */ | 37 | /* pause guest execution to avoid concurrent updates */ |
| 38 | local_irq_disable(); | ||
| 39 | mutex_lock(&vcpu->mutex); | 38 | mutex_lock(&vcpu->mutex); |
| 40 | 39 | ||
| 41 | vcpu->arch.last_exit_type = 0xDEAD; | 40 | vcpu->arch.last_exit_type = 0xDEAD; |
| @@ -51,7 +50,6 @@ void kvmppc_init_timing_stats(struct kvm_vcpu *vcpu) | |||
| 51 | vcpu->arch.timing_last_enter.tv64 = 0; | 50 | vcpu->arch.timing_last_enter.tv64 = 0; |
| 52 | 51 | ||
| 53 | mutex_unlock(&vcpu->mutex); | 52 | mutex_unlock(&vcpu->mutex); |
| 54 | local_irq_enable(); | ||
| 55 | } | 53 | } |
| 56 | 54 | ||
| 57 | static void add_exit_timing(struct kvm_vcpu *vcpu, u64 duration, int type) | 55 | static void add_exit_timing(struct kvm_vcpu *vcpu, u64 duration, int type) |
