diff options
author | Russell King <rmk@dyn-67.arm.linux.org.uk> | 2009-03-28 16:29:51 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2009-03-28 16:29:51 -0400 |
commit | ed40d0c472b136682b2fcba05f89762859c7374f (patch) | |
tree | 076b83a26bcd63d6158463735dd34c10bbc591dc /arch/powerpc/kvm/powerpc.c | |
parent | 9e495834e59ca9b29f1a1f63b9f5533bb022ac49 (diff) | |
parent | 5d80f8e5a9dc9c9a94d4aeaa567e219a808b8a4a (diff) |
Merge branch 'origin' into devel
Conflicts:
sound/soc/pxa/pxa2xx-i2s.c
Diffstat (limited to 'arch/powerpc/kvm/powerpc.c')
-rw-r--r-- | arch/powerpc/kvm/powerpc.c | 31 |
1 files changed, 4 insertions, 27 deletions
diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c index 5f81256287f5..9057335fdc61 100644 --- a/arch/powerpc/kvm/powerpc.c +++ b/arch/powerpc/kvm/powerpc.c | |||
@@ -216,46 +216,23 @@ int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu) | |||
216 | 216 | ||
217 | void kvm_arch_vcpu_uninit(struct kvm_vcpu *vcpu) | 217 | void kvm_arch_vcpu_uninit(struct kvm_vcpu *vcpu) |
218 | { | 218 | { |
219 | kvmppc_core_destroy_mmu(vcpu); | 219 | kvmppc_mmu_destroy(vcpu); |
220 | } | 220 | } |
221 | 221 | ||
222 | void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu) | 222 | void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu) |
223 | { | 223 | { |
224 | if (vcpu->guest_debug.enabled) | ||
225 | kvmppc_core_load_guest_debugstate(vcpu); | ||
226 | |||
227 | kvmppc_core_vcpu_load(vcpu, cpu); | 224 | kvmppc_core_vcpu_load(vcpu, cpu); |
228 | } | 225 | } |
229 | 226 | ||
230 | void kvm_arch_vcpu_put(struct kvm_vcpu *vcpu) | 227 | void kvm_arch_vcpu_put(struct kvm_vcpu *vcpu) |
231 | { | 228 | { |
232 | if (vcpu->guest_debug.enabled) | ||
233 | kvmppc_core_load_host_debugstate(vcpu); | ||
234 | |||
235 | /* Don't leave guest TLB entries resident when being de-scheduled. */ | ||
236 | /* XXX It would be nice to differentiate between heavyweight exit and | ||
237 | * sched_out here, since we could avoid the TLB flush for heavyweight | ||
238 | * exits. */ | ||
239 | _tlbil_all(); | ||
240 | kvmppc_core_vcpu_put(vcpu); | 229 | kvmppc_core_vcpu_put(vcpu); |
241 | } | 230 | } |
242 | 231 | ||
243 | int kvm_arch_vcpu_ioctl_debug_guest(struct kvm_vcpu *vcpu, | 232 | int kvm_arch_vcpu_ioctl_set_guest_debug(struct kvm_vcpu *vcpu, |
244 | struct kvm_debug_guest *dbg) | 233 | struct kvm_guest_debug *dbg) |
245 | { | 234 | { |
246 | int i; | 235 | return -EINVAL; |
247 | |||
248 | vcpu->guest_debug.enabled = dbg->enabled; | ||
249 | if (vcpu->guest_debug.enabled) { | ||
250 | for (i=0; i < ARRAY_SIZE(vcpu->guest_debug.bp); i++) { | ||
251 | if (dbg->breakpoints[i].enabled) | ||
252 | vcpu->guest_debug.bp[i] = dbg->breakpoints[i].address; | ||
253 | else | ||
254 | vcpu->guest_debug.bp[i] = 0; | ||
255 | } | ||
256 | } | ||
257 | |||
258 | return 0; | ||
259 | } | 236 | } |
260 | 237 | ||
261 | static void kvmppc_complete_dcr_load(struct kvm_vcpu *vcpu, | 238 | static void kvmppc_complete_dcr_load(struct kvm_vcpu *vcpu, |