All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alan Stern <stern@rowland.harvard.edu>
To: Bin Liu <b-liu@ti.com>
Cc: linux-usb@vger.kernel.org
Subject: usb hub driver bug in overcurrent handling?
Date: Fri, 13 Jul 2018 16:35:33 -0400 (EDT)	[thread overview]
Message-ID: <Pine.LNX.4.44L0.1807131627510.10216-100000@netrider.rowland.org> (raw)

On Fri, 13 Jul 2018, Bin Liu wrote:

> Hi,
> 
> I got a report saying that when overcurrent happens in one of the hub
> downstream ports, USB_PORT_STAT_OVERCURRENT is not set in portstatus,
> instead USB_PORT_STAT_C_OVERCURRENT is set in portchange, then the
> overcurrent condition is not handled in hub_event().
> 
> The following patch solves the issue.
> 
> t a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
> index 442be7f312f6..118557acc74b 100644
> --- a/drivers/usb/core/hub.c
> +++ b/drivers/usb/core/hub.c
> @@ -1144,7 +1144,8 @@ static void hub_activate(struct usb_hub *hub, enum hub_activation_type type)
>                          * check for a new connection
>                          */
>                         if (udev || (portstatus & USB_PORT_STAT_CONNECTION) ||
> -                           (portstatus & USB_PORT_STAT_OVERCURRENT))
> +                           (portstatus & USB_PORT_STAT_OVERCURRENT) ||
> +                           (portchange & USB_PORT_STAT_C_OVERCURRENT))
>                                 set_bit(port1, hub->change_bits);
>  
>                 } else if (portstatus & USB_PORT_STAT_ENABLE) {

Please also update the immediately preceding comment.

> The usb2.0 spec section 11.12.5 states
>     "If a hub has per-port power switching and per-port current limiting, an
>      over-current on one port may still cause the power on another port to
>      fall below specific minimums. In this case, the affected port is placed
>      in the Power-Off state and C_PORT_OVER_CURRENT is set for the port, but
>      PORT_OVER_CURRENT is not set."
> 
> So is the patch above a proper fix? or something else might be missing?

It certainly seems like a reasonable thing to do.  If you say it fixes 
the problem, we can add it in.

Alan Stern
---
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

             reply	other threads:[~2018-07-13 20:35 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-13 20:35 Alan Stern [this message]
  -- strict thread matches above, loose matches on Subject: below --
2018-07-18 14:42 usb hub driver bug in overcurrent handling? Bin Liu
2018-07-13 19:26 Bin Liu
2018-07-13 19:22 Bin Liu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Pine.LNX.4.44L0.1807131627510.10216-100000@netrider.rowland.org \
    --to=stern@rowland.harvard.edu \
    --cc=b-liu@ti.com \
    --cc=linux-usb@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.