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] Fix virq delivery in Xend.

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] Fix virq delivery in Xend.
From: BitKeeper Bot <riel@xxxxxxxxxxx>
Date: Tue, 17 May 2005 22:15:17 +0000
Delivery-date: Tue, 17 May 2005 23:04:16 +0000
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/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: Xen Development List <xen-devel@xxxxxxxxxxxxxxxxxxx>
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
ChangeSet 1.1439, 2005/05/17 23:15:17+01:00, cl349@xxxxxxxxxxxxxxxxxxxx

        Fix virq delivery in Xend.
        xcs.c:
          Fix binding to virq's -- setup evtchn binding.
        channel.py:
          Use VIRQ_DOM_EXC as exported from xc.  Also don't bind to virq's we
          don't care for or which won't get delivered to us anyway.
        xc.c:
          Export VIRQ_DOM_EXC to python.
        Signed-off-by: Christian Limpach <Christian.Limpach@xxxxxxxxxxxx>



 python/xen/lowlevel/xc/xc.c       |    1 +
 python/xen/xend/server/channel.py |   16 +++-------------
 xcs/xcs.c                         |   11 +++++++++++
 3 files changed, 15 insertions(+), 13 deletions(-)


diff -Nru a/tools/python/xen/lowlevel/xc/xc.c 
b/tools/python/xen/lowlevel/xc/xc.c
--- a/tools/python/xen/lowlevel/xc/xc.c 2005-05-17 19:04:54 -04:00
+++ b/tools/python/xen/lowlevel/xc/xc.c 2005-05-17 19:04:54 -04:00
@@ -1279,6 +1279,7 @@
     d = PyModule_GetDict(m);
     xc_error = PyErr_NewException(XENPKG ".error", NULL, NULL);
     PyDict_SetItemString(d, "error", xc_error);
+    PyDict_SetItemString(d, "VIRQ_DOM_EXC", PyInt_FromLong(VIRQ_DOM_EXC));
 
     zero = PyInt_FromLong(0);
 
diff -Nru a/tools/python/xen/xend/server/channel.py 
b/tools/python/xen/xend/server/channel.py
--- a/tools/python/xen/xend/server/channel.py   2005-05-17 19:04:54 -04:00
+++ b/tools/python/xen/xend/server/channel.py   2005-05-17 19:04:54 -04:00
@@ -10,12 +10,6 @@
 
 from messages import *
 
-VIRQ_MISDIRECT  = 0  # Catch-all interrupt for unbound VIRQs.
-VIRQ_TIMER      = 1  # Timebase update, and/or requested timeout.
-VIRQ_DEBUG      = 2  # Request guest to dump debug info.
-VIRQ_CONSOLE    = 3  # (DOM0) bytes received on emergency console.
-VIRQ_DOM_EXC    = 4  # (DOM0) Exceptional event for some domain.
-
 DEBUG = 0
 
 RESPONSE_TIMEOUT = 20.0
@@ -66,13 +60,8 @@
     def __init__(self):
         """Constructor - do not use. Use the channelFactory function."""
         self.notifier = xu.notifier()
-        # Register interest in all virqs.
-        # Unfortunately virqs do not seem to be delivered.
-        self.bind_virq(VIRQ_MISDIRECT)
-        self.bind_virq(VIRQ_TIMER)
-        self.bind_virq(VIRQ_DEBUG)
-        self.bind_virq(VIRQ_CONSOLE)
-        self.bind_virq(VIRQ_DOM_EXC)
+        # Register interest in virqs.
+        self.bind_virq(xen.lowlevel.xc.VIRQ_DOM_EXC)
         self.virqHandler = None
 
     def bind_virq(self, virq):
@@ -81,6 +70,7 @@
         log.info("Virq %s on port %s", virq, port)
 
     def virq(self):
+        log.error("virq")
         self.notifier.virq_send(self.virqPort)
 
     def start(self):
diff -Nru a/tools/xcs/xcs.c b/tools/xcs/xcs.c
--- a/tools/xcs/xcs.c   2005-05-17 19:04:54 -04:00
+++ b/tools/xcs/xcs.c   2005-05-17 19:04:54 -04:00
@@ -192,10 +192,21 @@
     cc = (control_channel_t *)malloc(sizeof(control_channel_t));
     if ( cc == NULL ) return NULL;
 
+    memset(cc, 0, sizeof(control_channel_t));
     cc->type       = CC_TYPE_VIRQ;
     cc->local_port = virq_port;
     cc->virq       = virq;
+    cc->ref_count  = 1;
     
+    if (evtchn_bind(cc->local_port) != 0)
+    {
+        DPRINTF("Got control interface, but couldn't bind evtchan!\n");
+        free(cc);
+        return NULL;
+    }
+
+    cc_list[cc->local_port] = cc;
+
     return cc;
 }
 

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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] Fix virq delivery in Xend., BitKeeper Bot <=