diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2008-03-18 11:29:18 +0000 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2008-03-18 11:29:18 +0000 |
commit | b9d1950675c67f10870debe164a226eef64f65d5 (patch) | |
tree | acd93ea007ed7289d7bacc728997d698e050c276 /extras/mini-os/xenbus/xenbus.c | |
parent | 62341d01ee88ecc87d6995000383446e3bf43ec7 (diff) | |
download | xen-b9d1950675c67f10870debe164a226eef64f65d5.tar.gz xen-b9d1950675c67f10870debe164a226eef64f65d5.tar.bz2 xen-b9d1950675c67f10870debe164a226eef64f65d5.zip |
minios: Fix lost events
evtchn_bind_interdomain used to clear any already pending event before
binding a handler, because else the handler may be called before it is
ready. That however leads to missed events, which I had to workaround
for the HVM case.
This changes the semantics of bind_evtchn, and thus of all the
event channel binding functions (bind_virq, evtchn_alloc_unbound,
evtchn_bind_interdomain) into not unmasking the event itself, hence
letting the caller initialize properly before unmasking the port (e.g.
record the port number in an appropriate place).
Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>
Diffstat (limited to 'extras/mini-os/xenbus/xenbus.c')
-rw-r--r-- | extras/mini-os/xenbus/xenbus.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/extras/mini-os/xenbus/xenbus.c b/extras/mini-os/xenbus/xenbus.c index 1a96ce2f24..147cef1331 100644 --- a/extras/mini-os/xenbus/xenbus.c +++ b/extras/mini-os/xenbus/xenbus.c @@ -257,6 +257,7 @@ void init_xenbus(void) err = bind_evtchn(start_info.store_evtchn, xenbus_evtchn_handler, NULL); + unmask_evtchn(start_info.store_evtchn); DEBUG("xenbus on irq %d\n", err); } |