Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Paul Mackerras and committed by
Alexander Graf
6b445ad4 44e5f6be

+16 -6
+3
arch/powerpc/include/asm/kvm_book3s.h
··· 160 160 extern long kvmppc_do_h_enter(struct kvm *kvm, unsigned long flags, 161 161 long pte_index, unsigned long pteh, unsigned long ptel, 162 162 pgd_t *pgdir, bool realmode, unsigned long *idx_ret); 163 + extern long kvmppc_do_h_remove(struct kvm *kvm, unsigned long flags, 164 + unsigned long pte_index, unsigned long avpn, 165 + unsigned long *hpret); 163 166 extern long kvmppc_hv_get_dirty_log(struct kvm *kvm, 164 167 struct kvm_memory_slot *memslot, unsigned long *map); 165 168
+13 -6
arch/powerpc/kvm/book3s_hv_rm_mmu.c
··· 365 365 return old == 0; 366 366 } 367 367 368 - long kvmppc_h_remove(struct kvm_vcpu *vcpu, unsigned long flags, 369 - unsigned long pte_index, unsigned long avpn, 370 - unsigned long va) 368 + long kvmppc_do_h_remove(struct kvm *kvm, unsigned long flags, 369 + unsigned long pte_index, unsigned long avpn, 370 + unsigned long *hpret) 371 371 { 372 - struct kvm *kvm = vcpu->kvm; 373 372 unsigned long *hpte; 374 373 unsigned long v, r, rb; 375 374 struct revmap_entry *rev; ··· 410 411 note_hpte_modification(kvm, rev); 411 412 unlock_hpte(hpte, 0); 412 413 413 - vcpu->arch.gpr[4] = v; 414 - vcpu->arch.gpr[5] = r; 414 + hpret[0] = v; 415 + hpret[1] = r; 415 416 return H_SUCCESS; 417 + } 418 + EXPORT_SYMBOL_GPL(kvmppc_do_h_remove); 419 + 420 + long kvmppc_h_remove(struct kvm_vcpu *vcpu, unsigned long flags, 421 + unsigned long pte_index, unsigned long avpn) 422 + { 423 + return kvmppc_do_h_remove(vcpu->kvm, flags, pte_index, avpn, 424 + &vcpu->arch.gpr[4]); 416 425 } 417 426 418 427 long kvmppc_h_bulk_remove(struct kvm_vcpu *vcpu)