Login | Register For Free | Help
Search for: (Advanced)

Mailing List Archive: Xen: Changelog

Fix virq delivery in Xend.

 

 

Xen changelog RSS feed   Index | Next | Previous | View Threaded


riel at surriel

May 17, 2005, 3:15 PM

Post #1 of 1 (10 views)
Permalink
Fix virq delivery in Xend.

ChangeSet 1.1439, 2005/05/17 23:15:17+01:00, cl349 [at] firebug

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 [at] cl>



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 [at] lists
http://lists.xensource.com/xen-changelog

Xen changelog RSS feed   Index | Next | Previous | View Threaded
 
 


Interested in having your list archived? Contact Gossamer Threads
 
  Web Applications & Managed Hosting Powered by Gossamer Threads Inc.