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>
This commit is contained in:
committed by
Alexander Graf
parent
44e5f6be62
commit
6b445ad4f8
@@ -160,6 +160,9 @@ extern long kvmppc_virtmode_h_enter(struct kvm_vcpu *vcpu, unsigned long flags,
|
|||||||
extern long kvmppc_do_h_enter(struct kvm *kvm, unsigned long flags,
|
extern long kvmppc_do_h_enter(struct kvm *kvm, unsigned long flags,
|
||||||
long pte_index, unsigned long pteh, unsigned long ptel,
|
long pte_index, unsigned long pteh, unsigned long ptel,
|
||||||
pgd_t *pgdir, bool realmode, unsigned long *idx_ret);
|
pgd_t *pgdir, bool realmode, unsigned long *idx_ret);
|
||||||
|
extern long kvmppc_do_h_remove(struct kvm *kvm, unsigned long flags,
|
||||||
|
unsigned long pte_index, unsigned long avpn,
|
||||||
|
unsigned long *hpret);
|
||||||
extern long kvmppc_hv_get_dirty_log(struct kvm *kvm,
|
extern long kvmppc_hv_get_dirty_log(struct kvm *kvm,
|
||||||
struct kvm_memory_slot *memslot, unsigned long *map);
|
struct kvm_memory_slot *memslot, unsigned long *map);
|
||||||
|
|
||||||
|
|||||||
@@ -365,11 +365,10 @@ static inline int try_lock_tlbie(unsigned int *lock)
|
|||||||
return old == 0;
|
return old == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
long kvmppc_h_remove(struct kvm_vcpu *vcpu, unsigned long flags,
|
long kvmppc_do_h_remove(struct kvm *kvm, unsigned long flags,
|
||||||
unsigned long pte_index, unsigned long avpn,
|
unsigned long pte_index, unsigned long avpn,
|
||||||
unsigned long va)
|
unsigned long *hpret)
|
||||||
{
|
{
|
||||||
struct kvm *kvm = vcpu->kvm;
|
|
||||||
unsigned long *hpte;
|
unsigned long *hpte;
|
||||||
unsigned long v, r, rb;
|
unsigned long v, r, rb;
|
||||||
struct revmap_entry *rev;
|
struct revmap_entry *rev;
|
||||||
@@ -411,10 +410,18 @@ long kvmppc_h_remove(struct kvm_vcpu *vcpu, unsigned long flags,
|
|||||||
note_hpte_modification(kvm, rev);
|
note_hpte_modification(kvm, rev);
|
||||||
unlock_hpte(hpte, 0);
|
unlock_hpte(hpte, 0);
|
||||||
|
|
||||||
vcpu->arch.gpr[4] = v;
|
hpret[0] = v;
|
||||||
vcpu->arch.gpr[5] = r;
|
hpret[1] = r;
|
||||||
return H_SUCCESS;
|
return H_SUCCESS;
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(kvmppc_do_h_remove);
|
||||||
|
|
||||||
|
long kvmppc_h_remove(struct kvm_vcpu *vcpu, unsigned long flags,
|
||||||
|
unsigned long pte_index, unsigned long avpn)
|
||||||
|
{
|
||||||
|
return kvmppc_do_h_remove(vcpu->kvm, flags, pte_index, avpn,
|
||||||
|
&vcpu->arch.gpr[4]);
|
||||||
|
}
|
||||||
|
|
||||||
long kvmppc_h_bulk_remove(struct kvm_vcpu *vcpu)
|
long kvmppc_h_bulk_remove(struct kvm_vcpu *vcpu)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user