Implement domctl_sendtrigger_nmi for x86 hvm
PATCH 1/1 Implement domctl_sendtrigger_nmi for x86 hvm
Hi there,
This patch implements DOMCTL_SENDTRIGGER_NMI hypercall for x86 hvm domains.
we can manually inject NMI into a domain by using 'xm trigger [domain] nmi [vcpu]'.
Regards,
-------------------
Yosuke Iwamatsu
NEC Corporation
# HG changeset patch
# User Yosuke Iwamatsu <[email protected]> # Date 1184291863 -32400
# Node ID aa538b0b8a496fee48a1c75ae0bec78ea7f31dfc # Parent 1f348e70a5affdea9b44c1e39cd5ef094ad4a0bf Implement DOMCTL_SENDTRIGGER_NMI for x86 hvm
Signed-off-by Yosuke Iwamatsu <[email protected]>
xen/arch/x86/domctl.c +40 -0
@@ -427,6 +427,46 @@ long arch_do_domctl( }break ; +case XEN_DOMCTL_sendtrigger: + { +struct domain *d; +struct vcpu *v; + + ret = -ESRCH ; +if ( (d =rcu_lock_domain_by_id (domctl->domain)) ==NULL ) +break ; + + ret = -EINVAL ; +if ( domctl->u.sendtrigger.vcpu >=MAX_VIRT_CPUS ) + goto sendtrigger_out; + + ret = -ESRCH ; +if ( (v = d->vcpu[domctl->u.sendtrigger.vcpu]) ==NULL ) + goto sendtrigger_out; + +switch (domctl->u.sendtrigger.trigger) + { +case XEN_DOMCTL_SENDTRIGGER_NMI : + { + ret = -ENOSYS ; +if ( !is_hvm_domain (d) ) +break ; + + ret =0 ; +if ( !test_and_set_bool (v->arch.hvm_vcpu.nmi_pending) ) +vcpu_kick (v); + } +break ; + +default : + ret = -ENOSYS ; + } + + sendtrigger_out: +rcu_unlock_domain (d); + } +break ; +default : ret = -ENOSYS ;break ;
_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-devel