lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <A2CA0424C0A6F04399FB9E1CD98E030484505A12@US01WEMBX2.internal.synopsys.com>
Date:	Tue, 6 Jan 2015 03:02:51 +0000
From:	Paul Zimmerman <Paul.Zimmerman@...opsys.com>
To:	Kever Yang <kever.yang@...k-chips.com>,
	Doug Anderson <dianders@...omium.org>
CC:	Felipe Balbi <balbi@...com>,
	Dinh Nguyen <dinguyen@...nsource.altera.com>,
	"romain.perier@...il.com" <romain.perier@...il.com>,
	Heiko Stuebner <heiko@...ech.de>,
	Sonny Rao <sonnyrao@...omium.org>,
	Addy Ke <addy.ke@...k-chips.com>,
	Eddie Cai <cf@...k-chips.com>, lyz <lyz@...k-chips.com>,
	wulf <wulf@...k-chips.com>, Tao Huang <huangtao@...k-chips.com>,
	"open list:ARM/Rockchip SoC..." <linux-rockchip@...ts.infradead.org>,
	Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
	"linux-usb@...r.kernel.org" <linux-usb@...r.kernel.org>,
	"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
	"jwerner@...omium.org" <jwerner@...omium.org>
Subject: RE: [PATCH v3] usb: dwc2: add bus suspend/resume for dwc2

> From: Kever Yang [mailto:kever.yang@...k-chips.com]
> Sent: Monday, January 05, 2015 5:42 PM
> 
> Hi Paul,
> 
> I think you need this patch to fix the problem:
> 
> usb: dwc2: resume root hub when device detect with suspend state
> https://patchwork.kernel.org/patch/5325111/
> 
> Thanks,
> 
> - Kever
> On 01/06/2015 09:23 AM, Paul Zimmerman wrote:
> >> From: Kever Yang [mailto:kever.yang@...k-chips.com]
> >> Sent: Wednesday, November 12, 2014 4:42 PM
> >>
> >> On 11/13/2014 07:22 AM, Doug Anderson wrote:
> >>> Kever,
> >>>
> >>> On Mon, Nov 10, 2014 at 5:09 AM, Kever Yang <kever.yang@...k-chips.com> wrote:
> >>>> Hcd controller needs bus_suspend/resume, dwc2 controller make
> >>>> root hub generate suspend/resume signal with hprt0 register
> >>>> when work in host mode.
> >>>> After the root hub enter suspend, we can make controller enter
> >>>> low power state with PCGCTL register.
> >>>>
> >>>> We also update the lx_state for hsotg state.
> >>>>
> >>>> This patch has tested on rk3288 with suspend/resume.
> >>>>
> >>>> Signed-off-by: Kever Yang <kever.yang@...k-chips.com>
> >>>> Acked-by: Paul Zimmerman <paulz@...opsys.com>
> >>>> ---
> >>>>
> >>>> Changes in v3:
> >>>> - remove CONFIG_PM macro for bus_suspend/resume
> >>>> - add PCGCTL operation for no device connect case
> >>>>
> >>>> Changes in v2:
> >>>> - update commit message
> >>>> - make dwc2 suspend/resume sourcecode work
> >>>>
> >>>>    drivers/usb/dwc2/hcd.c | 88 +++++++++++++++++++++++++++++++++++++++++++-------
> >>>>    1 file changed, 77 insertions(+), 11 deletions(-)
> >>> I would certainly appreciate confirmation, but my inclination is to
> >>> NAK this change due to the fact that it regresses functionality.  I
> >>> haven't done any serious review of it, but I've been testing it and it
> >>> appears to break hotplug.
> >>>
> >>> Said another way, I did this:
> >>>
> >>> 1. Without this patch, I booted with a USB stick in.  It was detected.
> >>> I unplugged it, waited 5 seconds, and then plugged it back in.  The
> >>> USB stick was redetcted.
> >>>
> >>> 2. With this patch, I did the same thing.  The USB not redected after
> >>> plugging it back in.
> >> With this patch, the dwc2 hcd/root hub will be auto suspend after device
> >> on port is disconnected, and it can't detect the device connect any more,
> >> I think that's the problem.
> >>
> >> I will figure out how to make dwc2 detect the device connect after auto
> >> suspend,
> >> or disable the auto suspend feature for the dwc2 hcd.
> > Kever,
> >
> > This patch has made it into Linus' kernel as commit 0cf884e819e0, and
> > it breaks disconnect/connect on at least the Altera SOCFPGA platform.
> > I haven't been able to test it on any other platforms.
> >
> > You need to submit a patch to either fix this, or to only enable this
> > feature for the Rock-chip platform. Otherwise the patch has to be
> > reverted.

Unfortunately, after applying that patch there is another problem. If I
connect a device that causes an overcurrent condition to the root port,
then the port is dead after that. No further devices are detected until
after I reboot.

I tried adding another call to usb_hcd_resume_root_hub() in the
"if (hprt0 & HPRT0_OVRCURRCHG)" branch, but then an overcurrent
condition causes a continuous stream of these messages:

[  133.348776] dwc2 ffb40000.usb: GetPortStatus wIndex=0x0001 flags=0x00000022
[  133.355717] dwc2 ffb40000.usb: Overcurrent change detected
[  133.361179] dwc2 ffb40000.usb:   HPRT0: 0x00020000
[  133.365960] dwc2 ffb40000.usb: port_status=00080000
[  133.373236] hub 1-0:1.0: state 7 ports 1 chg 0000 evt 0000
[  133.380038] hub 1-0:1.0: hub_suspend
[  133.384237] usb usb1: bus auto-suspend, wakeup 1
[  133.393631] dwc2 ffb40000.usb: DWC OTG HCD HUB STATUS DATA: Root port status changed
[  133.401341] dwc2 ffb40000.usb:   port_connect_status_change: 0
[  133.407157] dwc2 ffb40000.usb:   port_reset_change: 0
[  133.412186] dwc2 ffb40000.usb:   port_enable_change: 0
[  133.417310] dwc2 ffb40000.usb:   port_suspend_change: 0
[  133.422519] dwc2 ffb40000.usb:   port_over_current_change: 1
[  133.428154] usb usb1: suspend raced with wakeup event
[  133.433191] usb usb1: usb auto-resume
[  133.441522] hub 1-0:1.0: hub_resume
[  133.455505] dwc2 ffb40000.usb: GetPortStatus wIndex=0x0001 flags=0x00000022
[  133.462443] dwc2 ffb40000.usb: Overcurrent change detected
[  133.467907] dwc2 ffb40000.usb:   HPRT0: 0x00020000
[  133.472684] dwc2 ffb40000.usb: port_status=00080000
[  133.480088] hub 1-0:1.0: state 7 ports 1 chg 0000 evt 0000
[  133.485578] hub 1-0:1.0: hub_suspend
[  133.489157] usb usb1: bus auto-suspend, wakeup 1
[  133.493768] dwc2 ffb40000.usb: _dwc2_hcd_suspend()
[  133.498540] dwc2 ffb40000.usb: DWC OTG HCD HUB STATUS DATA: Root port status changed
[  133.506257] dwc2 ffb40000.usb:   port_connect_status_change: 0
[  133.512065] dwc2 ffb40000.usb:   port_reset_change: 0
[  133.517102] dwc2 ffb40000.usb:   port_enable_change: 0
[  133.522218] dwc2 ffb40000.usb:   port_suspend_change: 0
[  133.527428] dwc2 ffb40000.usb:   port_over_current_change: 1
[  133.533069] usb usb1: suspend raced with wakeup event
[  133.538098] usb usb1: usb auto-resume
[  133.546439] hub 1-0:1.0: hub_resume

Any ideas?

-- 
Paul

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ