[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