[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] Allow a guest to send NMIs to its VCPUs.



# HG changeset patch
# User Keir Fraser <keir@xxxxxxxxxxxxx>
# Date 1193047864 -3600
# Node ID 183a2d6eaadf5a24e231de4b473d0ff683ebd2c2
# Parent  c44d82f36665f0ac74e5591ffcdc548494c0ecb2
Allow a guest to send NMIs to its VCPUs.
Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>
---
 xen/common/compat/domain.c |    1 +
 xen/common/domain.c        |   16 +++++++++++-----
 xen/include/public/vcpu.h  |    3 +++
 3 files changed, 15 insertions(+), 5 deletions(-)

diff -r c44d82f36665 -r 183a2d6eaadf xen/common/compat/domain.c
--- a/xen/common/compat/domain.c        Mon Oct 22 09:42:49 2007 +0100
+++ b/xen/common/compat/domain.c        Mon Oct 22 11:11:04 2007 +0100
@@ -59,6 +59,7 @@ int compat_vcpu_op(int cmd, int vcpuid, 
     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;
 
diff -r c44d82f36665 -r 183a2d6eaadf xen/common/domain.c
--- a/xen/common/domain.c       Mon Oct 22 09:42:49 2007 +0100
+++ b/xen/common/domain.c       Mon Oct 22 11:11:04 2007 +0100
@@ -708,11 +708,9 @@ long do_vcpu_op(int cmd, int vcpuid, XEN
     }
 
     case VCPUOP_stop_periodic_timer:
-    {
         v->periodic_period = 0;
         vcpu_force_reschedule(v);
         break;
-    }
 
     case VCPUOP_set_singleshot_timer:
     {
@@ -740,13 +738,21 @@ long do_vcpu_op(int cmd, int vcpuid, XEN
     }
 
     case VCPUOP_stop_singleshot_timer:
-    {
         if ( v != current )
             return -EINVAL;
 
         stop_timer(&v->singleshot_timer);
-        break;
-    }
+
+        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);
diff -r c44d82f36665 -r 183a2d6eaadf xen/include/public/vcpu.h
--- a/xen/include/public/vcpu.h Mon Oct 22 09:42:49 2007 +0100
+++ b/xen/include/public/vcpu.h Mon Oct 22 11:11:04 2007 +0100
@@ -179,6 +179,9 @@ typedef struct vcpu_register_vcpu_info v
 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__ */
 
 /*

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.