Patchwork [v3,2/7] USB: serial: comments on suspend failure

login
register
mail settings
Submitter Ming Lei
Date March 15, 2013, 4:08 a.m.
Message ID <1363320539-23012-3-git-send-email-ming.lei@canonical.com>
Download mbox | patch
Permalink /patch/227846/
State Not Applicable
Delegated to: David Miller
Headers show

Comments

Ming Lei - March 15, 2013, 4:08 a.m.
If suspend callback fails in system sleep context, usb core will
ignore the failure and let system sleep go ahead further, so
this patch comments on the case and requires that serial->type->suspend()
MUST return 0 in system sleep context.

Cc: Johan Hovold <jhovold@gmail.com>
Signed-off-by: Ming Lei <ming.lei@canonical.com>
---
 drivers/usb/serial/usb-serial.c |    5 +++++
 1 file changed, 5 insertions(+)
Johan Hovold - March 15, 2013, 9:02 a.m.
On Fri, Mar 15, 2013 at 12:08:54PM +0800, Ming Lei wrote:
> If suspend callback fails in system sleep context, usb core will
> ignore the failure and let system sleep go ahead further, so
> this patch comments on the case and requires that serial->type->suspend()
> MUST return 0 in system sleep context.
> 
> Cc: Johan Hovold <jhovold@gmail.com>
> Signed-off-by: Ming Lei <ming.lei@canonical.com>
> ---
>  drivers/usb/serial/usb-serial.c |    5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/drivers/usb/serial/usb-serial.c b/drivers/usb/serial/usb-serial.c
> index a19ed74..16eb02b 100644
> --- a/drivers/usb/serial/usb-serial.c
> +++ b/drivers/usb/serial/usb-serial.c
> @@ -1140,6 +1140,11 @@ int usb_serial_suspend(struct usb_interface *intf, pm_message_t message)
>  
>  	serial->suspending = 1;
>  
> +	/*
> +	 * serial->type->suspend() MUST return 0 in system sleep context,
> +	 * otherwise, the resume callback has to recover device from
> +	 * previous suspend failure.
> +	 */
>  	if (serial->type->suspend) {
>  		r = serial->type->suspend(serial, message);
>  		if (r < 0) {

Acked-by: Johan Hovold <jhovold@gmail.com>

Thanks,
Johan
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/drivers/usb/serial/usb-serial.c b/drivers/usb/serial/usb-serial.c
index a19ed74..16eb02b 100644
--- a/drivers/usb/serial/usb-serial.c
+++ b/drivers/usb/serial/usb-serial.c
@@ -1140,6 +1140,11 @@  int usb_serial_suspend(struct usb_interface *intf, pm_message_t message)
 
 	serial->suspending = 1;
 
+	/*
+	 * serial->type->suspend() MUST return 0 in system sleep context,
+	 * otherwise, the resume callback has to recover device from
+	 * previous suspend failure.
+	 */
 	if (serial->type->suspend) {
 		r = serial->type->suspend(serial, message);
 		if (r < 0) {