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
next 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.