lkml.org 
[lkml]   [2008]   [May]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH 09 of 12] xenbus: rebind irq on restore
    Date
    From
    When restoring, rebind the existing xenbus irq to the new xenbus event
    channel. (It turns out in practice that this is always the same, and
    is never updated on restore. That's a bug, but Xeno-linux has been
    like this for a long time, so it can't really be fixed.)

    Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
    ---
    drivers/xen/xenbus/xenbus_comms.c | 23 ++++++++++++-----------
    1 file changed, 12 insertions(+), 11 deletions(-)

    diff --git a/drivers/xen/xenbus/xenbus_comms.c b/drivers/xen/xenbus/xenbus_comms.c
    --- a/drivers/xen/xenbus/xenbus_comms.c
    +++ b/drivers/xen/xenbus/xenbus_comms.c
    @@ -203,7 +203,6 @@
    int xb_init_comms(void)
    {
    struct xenstore_domain_interface *intf = xen_store_interface;
    - int err;

    if (intf->req_prod != intf->req_cons)
    printk(KERN_ERR "XENBUS request ring is not quiescent "
    @@ -216,18 +215,20 @@
    intf->rsp_cons = intf->rsp_prod;
    }

    - if (xenbus_irq)
    - unbind_from_irqhandler(xenbus_irq, &xb_waitq);
    + if (xenbus_irq) {
    + /* Already have an irq; assume we're resuming */
    + rebind_evtchn_irq(xen_store_evtchn, xenbus_irq);
    + } else {
    + int err;
    + err = bind_evtchn_to_irqhandler(xen_store_evtchn, wake_waiting,
    + 0, "xenbus", &xb_waitq);
    + if (err <= 0) {
    + printk(KERN_ERR "XENBUS request irq failed %i\n", err);
    + return err;
    + }

    - err = bind_evtchn_to_irqhandler(
    - xen_store_evtchn, wake_waiting,
    - 0, "xenbus", &xb_waitq);
    - if (err <= 0) {
    - printk(KERN_ERR "XENBUS request irq failed %i\n", err);
    - return err;
    + xenbus_irq = err;
    }
    -
    - xenbus_irq = err;

    return 0;
    }



    \
     
     \ /
      Last update: 2008-05-23 15:49    [W:0.020 / U:29.504 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site