提交 c45c5514 编写于 作者: A Alexander Graf

KVM: PPC: Use kvm_read_guest in kvmppc_ld

We have a nice and handy helper to read from guest physical address space,
so we should make use of it in kvmppc_ld as we already do for its counterpart
in kvmppc_st.
Signed-off-by: NAlexander Graf <agraf@suse.de>
上级 9897e88a
...@@ -309,19 +309,6 @@ int kvmppc_emulate_mmio(struct kvm_run *run, struct kvm_vcpu *vcpu) ...@@ -309,19 +309,6 @@ int kvmppc_emulate_mmio(struct kvm_run *run, struct kvm_vcpu *vcpu)
} }
EXPORT_SYMBOL_GPL(kvmppc_emulate_mmio); EXPORT_SYMBOL_GPL(kvmppc_emulate_mmio);
static hva_t kvmppc_pte_to_hva(struct kvm_vcpu *vcpu, struct kvmppc_pte *pte)
{
hva_t hpage;
hpage = gfn_to_hva(vcpu->kvm, pte->raddr >> PAGE_SHIFT);
if (kvm_is_error_hva(hpage))
goto err;
return hpage | (pte->raddr & ~PAGE_MASK);
err:
return KVM_HVA_ERR_BAD;
}
int kvmppc_st(struct kvm_vcpu *vcpu, ulong *eaddr, int size, void *ptr, int kvmppc_st(struct kvm_vcpu *vcpu, ulong *eaddr, int size, void *ptr,
bool data) bool data)
{ {
...@@ -351,7 +338,6 @@ int kvmppc_ld(struct kvm_vcpu *vcpu, ulong *eaddr, int size, void *ptr, ...@@ -351,7 +338,6 @@ int kvmppc_ld(struct kvm_vcpu *vcpu, ulong *eaddr, int size, void *ptr,
bool data) bool data)
{ {
struct kvmppc_pte pte; struct kvmppc_pte pte;
hva_t hva = *eaddr;
int rc; int rc;
vcpu->stat.ld++; vcpu->stat.ld++;
...@@ -369,19 +355,10 @@ int kvmppc_ld(struct kvm_vcpu *vcpu, ulong *eaddr, int size, void *ptr, ...@@ -369,19 +355,10 @@ int kvmppc_ld(struct kvm_vcpu *vcpu, ulong *eaddr, int size, void *ptr,
if (!data && !pte.may_execute) if (!data && !pte.may_execute)
return -ENOEXEC; return -ENOEXEC;
hva = kvmppc_pte_to_hva(vcpu, &pte); if (kvm_read_guest(vcpu->kvm, pte.raddr, ptr, size))
if (kvm_is_error_hva(hva)) return EMULATE_DO_MMIO;
goto mmio;
if (copy_from_user(ptr, (void __user *)hva, size)) {
printk(KERN_INFO "kvmppc_ld at 0x%lx failed\n", hva);
goto mmio;
}
return EMULATE_DONE; return EMULATE_DONE;
mmio:
return EMULATE_DO_MMIO;
} }
EXPORT_SYMBOL_GPL(kvmppc_ld); EXPORT_SYMBOL_GPL(kvmppc_ld);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册