lkml.org 
[lkml]   [2006]   [Jan]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRe: [PATCH] hci_usb: implement suspend/resume
    Date
    Am Mittwoch, 18. Januar 2006 00:21 schrieb Johannes Berg:
    > The attached patch implements suspend/resume for the hci_usb bluetooth
    > driver by simply killing all outstanding urbs on suspend, and re-issuing
    > them on resume.
    >
    > This allows me to actually use the internal bluetooth "dongle" in my
    > powerbook after suspend-to-ram without taking down all userland programs
    > (sdpd, ...) and the hci device and reloading the module.
    >
    > Signed-Off-By: Johannes Berg <johannes@sipsolutions.net>
    >
    > --- linux-2.6.15.1.orig/drivers/bluetooth/hci_usb.c 2006-01-18 00:08:54.840000000 +0100
    > +++ linux-2.6.15.1/drivers/bluetooth/hci_usb.c 2006-01-18 00:06:35.080000000 +0100
    > @@ -1043,11 +1043,55 @@
    > hci_free_dev(hdev);
    > }
    >
    > +static int hci_usb_suspend(struct usb_interface *intf, pm_message_t message)
    > +{
    > + struct hci_usb *husb = usb_get_intfdata(intf);
    > + int i;
    > + unsigned long flags;
    > + if (!husb || intf == husb->isoc_iface)
    > + return 0;
    > +
    > + for (i = 0; i < 4; i++) {
    > + struct _urb_queue *q = &husb->pending_q[i];
    > + struct _urb *_urb;
    > + spin_lock_irqsave(&q->lock, flags);
    > + list_for_each_entry(_urb, &q->head, list)
    > + usb_kill_urb(&_urb->urb);
    > + spin_unlock_irqrestore(&q->lock, flags);
    > + }
    > + return 0;

    This patch is wrong. usb_kill_urb() will sleep. You must not use it under
    a spinlock.

    Regards
    Oliver
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2006-01-18 14:27    [W:0.022 / U:0.172 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site