[prev in list] [next in list] [prev in thread] [next in thread]
List: linux-usb
Subject: Re: [RFC 1/7] usb: Always return 0 or -EBUSY to the runtime PM core.
From: Sergei Shtylyov <sshtylyov () mvista ! com>
Date: 2010-12-31 16:32:46
Message-ID: 4D1E05AE.5010106 () ru ! mvista ! com
[Download RAW message or body]
Hello.
On 31-12-2010 2:21, Sarah Sharp wrote:
> The PM core reacts badly when the return code from usb_runtime_suspend()
> is not 0, -EAGAIN, or -EBUSY. The PM core regards this as a fatal error,
> and refuses to run anymore PM helper functions. In particular,
> usbfs_open() and other usbfs functions will fail because the PM core will
> return an error code when usb_autoresume_device() is called. This causes
> libusb and/or lsusb to either hang or segfault.
> If a USB device cannot suspend for some reason (e.g. a hub doesn't report
> it has remote wakeup capabilities), we still want lsusb and other
> userspace programs to work. So return -EBUSY, which will fill people's
> log files with failed tries, but will ensure userspace still works.
> Signed-off-by: Sarah Sharp<sarah.a.sharp@linux.intel.com>
[...]
> diff --git a/drivers/usb/core/driver.c b/drivers/usb/core/driver.c
> index b9278a1..a6d9297 100644
> --- a/drivers/usb/core/driver.c
> +++ b/drivers/usb/core/driver.c
> @@ -1660,6 +1660,11 @@ static int usb_runtime_suspend(struct device *dev)
> return -EAGAIN;
>
> status = usb_suspend_both(udev, PMSG_AUTO_SUSPEND);
> + /* The PM core reacts badly core unless the return code is 0,
^^^^ not needed here?
> + * -EAGAIN, or -EBUSY, so always return -EBUSY on an error.
> + */
> + if (status != 0)
> + return -EBUSY;
> return status;
> }
WBR, Sergei
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic