diff options
author | Paul Mackerras <paulus@samba.org> | 2012-11-19 17:55:44 -0500 |
---|---|---|
committer | Alexander Graf <agraf@suse.de> | 2012-12-05 19:33:55 -0500 |
commit | 6b445ad4f839b06e68dd8e178e1168482ca20310 (patch) | |
tree | 5d7706fad9b7a22ccdf5fc1774d6acf530ea056e /arch/powerpc/kvm/book3s_hv_rm_mmu.c | |
parent | 44e5f6be62741bd44968f40f3afa1cff1df983f2 (diff) |
KVM: PPC: Book3S HV: Make a HPTE removal function available
This makes a HPTE removal function, kvmppc_do_h_remove(), available
outside book3s_hv_rm_mmu.c. This will be used by the HPT writing
code.
Signed-off-by: Paul Mackerras <paulus@samba.org>
Signed-off-by: Alexander Graf <agraf@suse.de>
Diffstat (limited to 'arch/powerpc/kvm/book3s_hv_rm_mmu.c')
-rw-r--r-- | arch/powerpc/kvm/book3s_hv_rm_mmu.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/arch/powerpc/kvm/book3s_hv_rm_mmu.c b/arch/powerpc/kvm/book3s_hv_rm_mmu.c index ed563a5f25c..fc3da3208fd 100644 --- a/arch/powerpc/kvm/book3s_hv_rm_mmu.c +++ b/arch/powerpc/kvm/book3s_hv_rm_mmu.c | |||
@@ -365,11 +365,10 @@ static inline int try_lock_tlbie(unsigned int *lock) | |||
365 | return old == 0; | 365 | return old == 0; |
366 | } | 366 | } |
367 | 367 | ||
368 | long kvmppc_h_remove(struct kvm_vcpu *vcpu, unsigned long flags, | 368 | long kvmppc_do_h_remove(struct kvm *kvm, unsigned long flags, |
369 | unsigned long pte_index, unsigned long avpn, | 369 | unsigned long pte_index, unsigned long avpn, |
370 | unsigned long va) | 370 | unsigned long *hpret) |
371 | { | 371 | { |
372 | struct kvm *kvm = vcpu->kvm; | ||
373 | unsigned long *hpte; | 372 | unsigned long *hpte; |
374 | unsigned long v, r, rb; | 373 | unsigned long v, r, rb; |
375 | struct revmap_entry *rev; | 374 | struct revmap_entry *rev; |
@@ -411,10 +410,18 @@ long kvmppc_h_remove(struct kvm_vcpu *vcpu, unsigned long flags, | |||
411 | note_hpte_modification(kvm, rev); | 410 | note_hpte_modification(kvm, rev); |
412 | unlock_hpte(hpte, 0); | 411 | unlock_hpte(hpte, 0); |
413 | 412 | ||
414 | vcpu->arch.gpr[4] = v; | 413 | hpret[0] = v; |
415 | vcpu->arch.gpr[5] = r; | 414 | hpret[1] = r; |
416 | return H_SUCCESS; | 415 | return H_SUCCESS; |
417 | } | 416 | } |
417 | EXPORT_SYMBOL_GPL(kvmppc_do_h_remove); | ||
418 | |||
419 | long kvmppc_h_remove(struct kvm_vcpu *vcpu, unsigned long flags, | ||
420 | unsigned long pte_index, unsigned long avpn) | ||
421 | { | ||
422 | return kvmppc_do_h_remove(vcpu->kvm, flags, pte_index, avpn, | ||
423 | &vcpu->arch.gpr[4]); | ||
424 | } | ||
418 | 425 | ||
419 | long kvmppc_h_bulk_remove(struct kvm_vcpu *vcpu) | 426 | long kvmppc_h_bulk_remove(struct kvm_vcpu *vcpu) |
420 | { | 427 | { |