mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-14 21:52:18 -06:00
i386/xen: implement HVMOP_set_param
This is the hook for adding the HVM_PARAM_CALLBACK_IRQ parameter in a subsequent commit. Signed-off-by: Ankur Arora <ankur.a.arora@oracle.com> Signed-off-by: Joao Martins <joao.m.martins@oracle.com> [dwmw2: Split out from another commit] Signed-off-by: David Woodhouse <dwmw@amazon.co.uk> Reviewed-by: Paul Durrant <paul@xen.org>
This commit is contained in:
parent
105b47fdf2
commit
5dbcd01a8d
1 changed files with 33 additions and 0 deletions
|
@ -489,6 +489,36 @@ static bool kvm_xen_hcall_memory_op(struct kvm_xen_exit *exit, X86CPU *cpu,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool handle_set_param(struct kvm_xen_exit *exit, X86CPU *cpu,
|
||||||
|
uint64_t arg)
|
||||||
|
{
|
||||||
|
CPUState *cs = CPU(cpu);
|
||||||
|
struct xen_hvm_param hp;
|
||||||
|
int err = 0;
|
||||||
|
|
||||||
|
/* No need for 32/64 compat handling */
|
||||||
|
qemu_build_assert(sizeof(hp) == 16);
|
||||||
|
|
||||||
|
if (kvm_copy_from_gva(cs, arg, &hp, sizeof(hp))) {
|
||||||
|
err = -EFAULT;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (hp.domid != DOMID_SELF && hp.domid != xen_domid) {
|
||||||
|
err = -ESRCH;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (hp.index) {
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
out:
|
||||||
|
exit->u.hcall.result = err;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
static int kvm_xen_hcall_evtchn_upcall_vector(struct kvm_xen_exit *exit,
|
static int kvm_xen_hcall_evtchn_upcall_vector(struct kvm_xen_exit *exit,
|
||||||
X86CPU *cpu, uint64_t arg)
|
X86CPU *cpu, uint64_t arg)
|
||||||
{
|
{
|
||||||
|
@ -530,6 +560,9 @@ static bool kvm_xen_hcall_hvm_op(struct kvm_xen_exit *exit, X86CPU *cpu,
|
||||||
ret = -ENOSYS;
|
ret = -ENOSYS;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case HVMOP_set_param:
|
||||||
|
return handle_set_param(exit, cpu, arg);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue