Linux-USB Archive on lore.kernel.org
 help / color / Atom feed
From: Minas Harutyunyan <Minas.Harutyunyan@synopsys.com>
To: Otavio Salvador <otavio.salvador@ossystems.com.br>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	"linux-usb@vger.kernel.org" <linux-usb@vger.kernel.org>,
	Felipe Balbi <balbi@kernel.org>, Heiko Stuebner <heiko@sntech.de>,
	"linux-rockchip@lists.infradead.org" 
	<linux-rockchip@lists.infradead.org>,
	Johan Hovold <johan@kernel.org>
Subject: Re: USB DWC2 stops responding when insert/remove cable multiple times
Date: Mon, 17 Feb 2020 08:58:11 +0000
Message-ID: <41a7bfe7-54b1-84eb-091f-469d971ab968@synopsys.com> (raw)
In-Reply-To: <CAP9ODKprPi8N-dU8NaKwneXH-3b0ipSEDpU5mDbGntxuyhGhJw@mail.gmail.com>

Hi Otavio,

On 2/14/2020 5:40 PM, Otavio Salvador wrote:
>   the USB port stops responding. To recover the port we need to reload
> the g_serial module.
> 
> I have reports of it happening in the field, on the device but, until
> recently, it very hard to reproduce. We found that it is very easy to
> reproduce when we use the Microsoft Surface Dock, as hub.
> 
> Description of the host:
> 
>      Operating System: Windows 10 Pro
>      Driver: libusb-1.0 1.0.22
> 
> Description of the target:
> 
>      SoC: Rockchip RV1108G
>      Gadget: g_serial
>      Linux: 5.4.19
> 
> dmesg:
>      [   59.647746] g_serial gadget: Gadget Serial v2.4
>      [   59.648178] g_serial gadget: g_serial ready
>      [   59.653920] dwc2 30180000.usb: bound driver g_serial
>      [   59.912364] dwc2 30180000.usb: new device is high-speed
>      [   59.949981] dwc2 30180000.usb: new address 12
>      [   60.034937] g_serial gadget: high-speed config #2: CDC ACM config
>      [   65.980382] phy phy-10300000.syscon:usb2-phy@100.0: charger =
> USB_CDP_CHARGER
>      [   66.313267] dwc2 30180000.usb: new device is high-speed
>      [   66.350902] dwc2 30180000.usb: new address 13
>      [   66.388065] g_serial gadget: high-speed config #2: CDC ACM config
>      [  311.604251] dwc2 30180000.usb: new device is high-speed
>      [  311.641798] dwc2 30180000.usb: new address 14
>      [  311.745597] g_serial gadget: high-speed config #2: CDC ACM config
>      [  312.905102] dwc2 30180000.usb: new device is high-speed
>      [  312.944301] dwc2 30180000.usb: new address 15
>      [  312.967867] g_serial gadget: high-speed config #2: CDC ACM config
>      [  314.828173] dwc2 30180000.usb: new device is high-speed
>      [  314.866943] dwc2 30180000.usb: new address 16
>      [  314.889550] g_serial gadget: high-speed config #2: CDC ACM config
> 

I assume here you few time disconnected and then connected cable and 
after last connection even when g_serial seen in last line it stop work. 
Correct?

> 
> The "[  314.889550] g_serial gadget: high-speed config #2: CDC ACM
> config" message is the last time it is detected. As mentioned, to
> restore the port to work, we need to reload the g_serial module.
> 
> When we reload it, following exception happens:
> 

Actually exception happen in g_serial not dwc2. Why you assume that it 
because of dwc2?

>      [  923.962547] 9fe0: 00000002 b6346688 b65478d0 b6f4867c 600f0010
> ffffff9c 00000000 00000000
>      [  923.963304] [<c0850638>] (_raw_spin_lock_irq) from [<bf045d44>]
> (gs_close+0x2c/0x1f0 [u_serial])
>      [  923.964117] [<bf045d44>] (gs_close [u_serial]) from
> [<c04f96e8>] (tty_release+0xf0/0x49c)
>      [  923.964863] [<c04f96e8>] (tty_release) from [<c04fb5a4>]
> (tty_open+0x118/0x450)
>      [  923.965526] [<c04fb5a4>] (tty_open) from [<c02b509c>]
> (chrdev_open+0xe0/0x1b4)
>      [  923.966188] [<c02b509c>] (chrdev_open) from [<c02ac538>]
> (do_dentry_open+0x114/0x3f4)
>      [  923.966897] [<c02ac538>] (do_dentry_open) from [<c02bf778>]
> (path_openat+0x2f8/0x1128)
>      [  923.967613] [<c02bf778>] (path_openat) from [<c02c1930>]
> (do_filp_open+0x74/0xe4)
>      [  923.968290] [<c02c1930>] (do_filp_open) from [<c02adb5c>]
> (do_sys_open+0x174/0x208)
>      [  923.968985] [<c02adb5c>] (do_sys_open) from [<c0101000>]
> (ret_fast_syscall+0x0/0x54)
>      [  923.969675] Exception stack(0xc6739fa8 to 0xc6739ff0)
>      [  923.970136] 9fa0:                   003e4ff0 00674450 ffffff9c
> 003e4ff0 00000902 00000000
>      [  923.970868] 9fc0: 003e4ff0 00674450 0000000d 00000142 b57ff011
> 00040000 00040000 b6346874
>      [  923.971597] 9fe0: 00000002 b6346688 b65478d0 b6f4867c
>      [  923.972065] Code: f57ff05b e12fff1e f10c0080 f590f000 (e1903f9f)
>      [  923.972618] ---[ end trace 02edbbb9948c159c ]---
>      [  938.908716] g_serial gadget: Gadget Serial v2.4
>      [  938.909152] g_serial gadget: g_serial ready
>      [  938.917148] dwc2 30180000.usb: bound driver g_serial
>      [  939.176179] dwc2 30180000.usb: new device is high-speed
>      [  939.215459] dwc2 30180000.usb: new address 17
>      [  939.422037] g_serial gadget: high-speed config #2: CDC ACM config
> 
> So, I am a bit lost how to debug this so I'd like to know what kind of
> information might be useful to find the root cause of it?

And despite of above exception, g_serial enumerated it works fine?


Please provide me dump of follow dwc2 debugfs's: regdump, hw_params, params.

Thanks,
Minas


  reply index

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-14 13:40 Otavio Salvador
2020-02-17  8:58 ` Minas Harutyunyan [this message]
2020-02-17 12:30   ` Otavio Salvador
2020-02-17 13:26     ` Minas Harutyunyan
2020-02-17 19:53       ` Otavio Salvador
2020-02-19 12:26         ` Minas Harutyunyan
2020-02-19 15:10           ` Otavio Salvador
2020-02-20  6:59             ` Minas Harutyunyan
2020-02-20 13:16               ` Otavio Salvador
2020-02-21  6:52                 ` Minas Harutyunyan
2020-02-21 14:06                   ` Otavio Salvador
     [not found]                     ` <CAP9ODKoRuB-nyjr1ksGU61PVMjFTMMWKwgpHQ=e7bChAu5Okhg@mail.gmail.com>
2020-02-28  9:01                       ` Minas Harutyunyan
2020-02-28 17:35                         ` Otavio Salvador
2020-03-05  6:45                           ` Minas Harutyunyan

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=41a7bfe7-54b1-84eb-091f-469d971ab968@synopsys.com \
    --to=minas.harutyunyan@synopsys.com \
    --cc=balbi@kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=heiko@sntech.de \
    --cc=johan@kernel.org \
    --cc=linux-rockchip@lists.infradead.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=otavio.salvador@ossystems.com.br \
    /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

Linux-USB Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-usb/0 linux-usb/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-usb linux-usb/ https://lore.kernel.org/linux-usb \
		linux-usb@vger.kernel.org
	public-inbox-index linux-usb

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-usb


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git