Signed-off-by: Keir Fraser <keir@xensource.com>
case VCPUOP_stop_periodic_timer:
case VCPUOP_set_singleshot_timer:
case VCPUOP_stop_singleshot_timer:
+ case VCPUOP_send_nmi:
rc = do_vcpu_op(cmd, vcpuid, arg);
break;
}
case VCPUOP_stop_periodic_timer:
- {
v->periodic_period = 0;
vcpu_force_reschedule(v);
break;
- }
case VCPUOP_set_singleshot_timer:
{
}
case VCPUOP_stop_singleshot_timer:
- {
if ( v != current )
return -EINVAL;
stop_timer(&v->singleshot_timer);
+
+ break;
+
+ case VCPUOP_send_nmi:
+ if ( !guest_handle_is_null(arg) )
+ return -EINVAL;
+
+ if ( !test_and_set_bool(v->nmi_pending) )
+ vcpu_kick(v);
+
break;
- }
default:
rc = arch_do_vcpu_op(cmd, v, arg);
typedef struct vcpu_register_vcpu_info vcpu_register_vcpu_info_t;
DEFINE_XEN_GUEST_HANDLE(vcpu_register_vcpu_info_t);
+/* Send an NMI to the specified VCPU. @extra_arg == NULL. */
+#define VCPUOP_send_nmi 11
+
#endif /* __XEN_PUBLIC_VCPU_H__ */
/*