WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] Cleanups to suspend-event-channel patches

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] Cleanups to suspend-event-channel patches.
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Fri, 04 Jul 2008 12:10:13 -0700
Delivery-date: Fri, 04 Jul 2008 12:10:19 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1215171558 -3600
# Node ID 6c2fe520e32d3076d0dab4f243fcb6d0832953cb
# Parent  9353f9931d9671d683b94ecdfd124c3a6d9cef68
Cleanups to suspend-event-channel patches.
Signed-off-by: Keir Fraser <keir.fraser@xxxxxxxxxx>
---
 tools/libxc/xc_domain.c    |    3 ++-
 tools/libxc/xenctrl.h      |    3 ++-
 tools/xcutils/xc_save.c    |   21 +++------------------
 xen/common/domain.c        |    2 +-
 xen/common/event_channel.c |   12 ++++++------
 xen/include/xen/event.h    |    7 ++-----
 6 files changed, 16 insertions(+), 32 deletions(-)

diff -r 9353f9931d96 -r 6c2fe520e32d tools/libxc/xc_domain.c
--- a/tools/libxc/xc_domain.c   Fri Jul 04 12:20:19 2008 +0100
+++ b/tools/libxc/xc_domain.c   Fri Jul 04 12:39:18 2008 +0100
@@ -981,7 +981,8 @@ int xc_domain_set_target(
     return do_domctl(xc_handle, &domctl);
 }
 
-int xc_dom_subscribe(int xc_handle, domid_t dom, evtchn_port_t port)
+int xc_domain_subscribe_for_suspend(
+    int xc_handle, domid_t dom, evtchn_port_t port)
 {
     DECLARE_DOMCTL;
 
diff -r 9353f9931d96 -r 6c2fe520e32d tools/libxc/xenctrl.h
--- a/tools/libxc/xenctrl.h     Fri Jul 04 12:20:19 2008 +0100
+++ b/tools/libxc/xenctrl.h     Fri Jul 04 12:39:18 2008 +0100
@@ -814,7 +814,8 @@ int xc_flask_op(int xc_handle, flask_op_
  * Subscribe to state changes in a domain via evtchn.
  * Returns -1 on failure, in which case errno will be set appropriately.
  */
-int xc_dom_subscribe(int xc_handle, domid_t domid, evtchn_port_t port);
+int xc_domain_subscribe_for_suspend(
+    int xc_handle, domid_t domid, evtchn_port_t port);
 
 /**************************
  * GRANT TABLE OPERATIONS *
diff -r 9353f9931d96 -r 6c2fe520e32d tools/xcutils/xc_save.c
--- a/tools/xcutils/xc_save.c   Fri Jul 04 12:20:19 2008 +0100
+++ b/tools/xcutils/xc_save.c   Fri Jul 04 12:39:18 2008 +0100
@@ -25,9 +25,7 @@
 
 static struct suspendinfo {
     int xce; /* event channel handle */
-
     int suspend_evtchn;
-    int suspended_evtchn;
 } si;
 
 /**
@@ -47,11 +45,6 @@ static int compat_suspend(int domid)
 
 static int suspend_evtchn_release(int xc, int domid)
 {
-    if (si.suspended_evtchn >= 0) {
-       xc_dom_subscribe(xc, domid, 0);
-       xc_evtchn_unbind(si.xce, si.suspended_evtchn);
-       si.suspended_evtchn = -1;
-    }
     if (si.suspend_evtchn >= 0) {
        xc_evtchn_unbind(si.xce, si.suspend_evtchn);
        si.suspend_evtchn = -1;
@@ -75,7 +68,6 @@ static int suspend_evtchn_init(int xc, i
 
     si.xce = -1;
     si.suspend_evtchn = -1;
-    si.suspended_evtchn = -1;
 
     xs = xs_daemon_open();
     if (!xs) {
@@ -107,14 +99,7 @@ static int suspend_evtchn_init(int xc, i
        goto cleanup;
     }
 
-    si.suspended_evtchn = xc_evtchn_bind_unbound_port(si.xce, domid);
-    if (si.suspended_evtchn < 0) {
-       errx(1, "failed to allocate suspend notification port: %d",
-            si.suspended_evtchn);
-       goto cleanup;
-    }
-
-    rc = xc_dom_subscribe(xc, domid, si.suspended_evtchn);
+    rc = xc_domain_subscribe_for_suspend(xc, domid, port);
     if (rc < 0) {
        errx(1, "failed to subscribe to domain: %d", rc);
        goto cleanup;
@@ -149,10 +134,10 @@ static int evtchn_suspend(int domid)
        errx(1, "error polling suspend notification channel: %d", rc);
        return 0;
       }
-    } while (rc != si.suspended_evtchn);
+    } while (rc != si.suspend_evtchn);
 
     /* harmless for one-off suspend */
-    if (xc_evtchn_unmask(si.xce, si.suspended_evtchn) < 0)
+    if (xc_evtchn_unmask(si.xce, si.suspend_evtchn) < 0)
        errx(1, "failed to unmask suspend notification channel: %d", rc);
 
     /* notify xend that it can do device migration */
diff -r 9353f9931d96 -r 6c2fe520e32d xen/common/domain.c
--- a/xen/common/domain.c       Fri Jul 04 12:20:19 2008 +0100
+++ b/xen/common/domain.c       Fri Jul 04 12:39:18 2008 +0100
@@ -98,7 +98,7 @@ static void __domain_finalise_shutdown(s
 
     d->is_shut_down = 1;
     if ( (d->shutdown_code == SHUTDOWN_suspend) && d->suspend_evtchn )
-        evtchn_set_pending(dom0->vcpu[0], d->suspend_evtchn);
+        evtchn_send(d, d->suspend_evtchn);
     else
         send_guest_global_virq(dom0, VIRQ_DOM_EXC);
 }
diff -r 9353f9931d96 -r 6c2fe520e32d xen/common/event_channel.c
--- a/xen/common/event_channel.c        Fri Jul 04 12:20:19 2008 +0100
+++ b/xen/common/event_channel.c        Fri Jul 04 12:39:18 2008 +0100
@@ -55,6 +55,8 @@
         rc = (_errno);                                              \
         goto out;                                                   \
     } while ( 0 )
+
+static int evtchn_set_pending(struct vcpu *v, int port);
 
 static int virq_is_global(int virq)
 {
@@ -470,11 +472,10 @@ static long evtchn_close(evtchn_close_t 
     return __evtchn_close(current->domain, close->port);
 }
 
-
-long evtchn_send(unsigned int lport)
+int evtchn_send(struct domain *d, unsigned int lport)
 {
     struct evtchn *lchn, *rchn;
-    struct domain *ld = current->domain, *rd;
+    struct domain *ld = d, *rd;
     struct vcpu   *rvcpu;
     int            rport, ret = 0;
 
@@ -534,8 +535,7 @@ out:
     return ret;
 }
 
-
-int evtchn_set_pending(struct vcpu *v, int port)
+static int evtchn_set_pending(struct vcpu *v, int port)
 {
     struct domain *d = v->domain;
 
@@ -891,7 +891,7 @@ long do_event_channel_op(int cmd, XEN_GU
         struct evtchn_send send;
         if ( copy_from_guest(&send, arg, 1) != 0 )
             return -EFAULT;
-        rc = evtchn_send(send.port);
+        rc = evtchn_send(current->domain, send.port);
         break;
     }
 
diff -r 9353f9931d96 -r 6c2fe520e32d xen/include/xen/event.h
--- a/xen/include/xen/event.h   Fri Jul 04 12:20:19 2008 +0100
+++ b/xen/include/xen/event.h   Fri Jul 04 12:39:18 2008 +0100
@@ -15,9 +15,6 @@
 #include <xen/softirq.h>
 #include <asm/bitops.h>
 #include <asm/event.h>
-
-/* Returns TRUE if the delivery port was already pending. */
-int evtchn_set_pending(struct vcpu *v, int port);
 
 /*
  * send_guest_vcpu_virq: Notify guest via a per-VCPU VIRQ.
@@ -41,8 +38,8 @@ void send_guest_global_virq(struct domai
  */
 int send_guest_pirq(struct domain *d, int pirq);
 
-/* Send a notification from a local event-channel port. */
-long evtchn_send(unsigned int lport);
+/* Send a notification from a given domain's event-channel port. */
+int evtchn_send(struct domain *d, unsigned int lport);
 
 /* Bind a local event-channel port to the specified VCPU. */
 long evtchn_bind_vcpu(unsigned int port, unsigned int vcpu_id);

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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] Cleanups to suspend-event-channel patches., Xen patchbot-unstable <=