linux-amlogic.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* Re: meson-g12b xHCI - disable park mode
       [not found] <CA+3zgmvjhisn97Y1TCn7Ztj2m3hB9+sdoOnFdvJJbKUFpt=QrQ@mail.gmail.com>
@ 2019-09-26 12:53 ` Neil Armstrong
       [not found]   ` <2019092715010469964015@amlogic.com>
  0 siblings, 1 reply; 4+ messages in thread
From: Neil Armstrong @ 2019-09-26 12:53 UTC (permalink / raw)
  To: Tim, open list:ARM/Amlogic Meson..., tobetter, Jianxin Pan

Hi Tim,

Thanks for sending the email, this has already been spotted by Christian Hewitt from LibreELEC.

Indeed this need some dt-bindings work and some more information for these :
- DWC3_GUCTL_NAKPERENHHS
- DWC3_GUCTL_PARKMODEDISABLESS
bit from Amlogic since I don't access to the DWC3 DataBook.

Jianxin, could you give use a brief description of these bits and why they are needed to solve the issue ?

Thanks,
Neil

On 21/09/2019 15:47, Tim wrote:
> Hi Neil,
> 
> Thank you for your work on the Linux kernel.
> Hardkernel and others using the mainline on the N2 are including a patch[1] that prevents bugs[2] on the Odroid-N2. 
> Dongjin Kim <tobetter@gmail.com <mailto:tobetter@gmail.com>> obtained the patch from AmLogic[3],
> but is not comfortable contributing to upstream[4].
> Please fix this bug upstream, or let us know the best way forward.
> (maybe you can send something appropriate for Felipe to review)
> Thanks again.
> 
> Reference links;
> 
>     1 https://forum.odroid.com/download/file.php?id=9674
>     2 https://forum.odroid.com/viewtopic.php?f=181&t=35031&start=250#p267479
>     3 https://forum.odroid.com/viewtopic.php?f=181&t=35031&start=250#p267481
>     4 https://forum.odroid.com/viewtopic.php?f=176&t=33993&start=350#p268598
> 
> 
> The patch inline;
> 
>     diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
>     index c9bb93a2c..8252923d8 100644
>     --- a/drivers/usb/dwc3/core.c
>     +++ b/drivers/usb/dwc3/core.c
>     @@ -983,6 +983,8 @@ static int dwc3_core_init(struct dwc3 *dwc)
>       if (dwc->dis_tx_ipgap_linecheck_quirk)
>       reg |= DWC3_GUCTL1_TX_IPGAP_LINECHECK_DIS;
>      
>     + reg |= (DWC3_GUCTL_NAKPERENHHS | DWC3_GUCTL_PARKMODEDISABLESS);
>     +
>       dwc3_writel(dwc->regs, DWC3_GUCTL1, reg);
>       }
>      
>     diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h
>     index 3dd783b88..ff09d19ee 100644
>     --- a/drivers/usb/dwc3/core.h
>     +++ b/drivers/usb/dwc3/core.h
>     @@ -247,6 +247,8 @@
>      
>      /* Global User Control Register */
>      #define DWC3_GUCTL_HSTINAUTORETRY BIT(14)
>     +#define DWC3_GUCTL_PARKMODEDISABLESS   BIT(17)
>     +#define DWC3_GUCTL_NAKPERENHHS         BIT(18)
>      
>      /* Global User Control 1 Register */
>      #define DWC3_GUCTL1_TX_IPGAP_LINECHECK_DIS BIT(28)
> 
> <https://forum.odroid.com/viewtopic.php?f=176&t=33993&start=350#p268598>


_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: meson-g12b xHCI - disable park mode
       [not found]   ` <2019092715010469964015@amlogic.com>
@ 2019-09-27 11:34     ` Neil Armstrong
  2019-09-27 13:25       ` [PATCH] dwc3: add parkmode_disable_ss_quirk for G12A Neil Armstrong
  0 siblings, 1 reply; 4+ messages in thread
From: Neil Armstrong @ 2019-09-27 11:34 UTC (permalink / raw)
  To: jianxin.pan, Tim, open list:ARM/Amlogic Meson..., tobetter, qi.duan

Hi Tim, Dongjin,

Is the DWC3_GUCTL_NAKPERENHHS bit really needed to fix ?

Could you try without ?

With Jianxin's description, seems only DWC3_GUCTL_PARKMODEDISABLESS is needed here.

DWC3_GUCTL_NAKPERENHHS could help, but it would another patchset to enhance performances.

Neil

On 27/09/2019 09:01, jianxin.pan@amlogic.com wrote:
> 
> Hi Neil,
> 
> For Odroid-N2,we add  #define DWC3_GUCTL_PARKMODEDISABLESS   BIT(17)
> this bit descriptor is
> 
>  
> 
> We did not set BIT(18) in aml-4.9 kernel. This bit is :
> 
> ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> jianxin.pan@amlogic.com
> 
>      
>     *From:* Neil Armstrong <mailto:narmstrong@baylibre.com>
>     *Date:* 2019-09-26 20:53
>     *To:* Tim <mailto:elatllat@gmail.com>; open list:ARM/Amlogic Meson... <mailto:linux-amlogic@lists.infradead.org>; tobetter <mailto:tobetter@gmail.com>; Jianxin Pan <mailto:jianxin.pan@amlogic.com>
>     *Subject:* Re: meson-g12b xHCI - disable park mode
>     Hi Tim,
>      
>     Thanks for sending the email, this has already been spotted by Christian Hewitt from LibreELEC.
>      
>     Indeed this need some dt-bindings work and some more information for these :
>     - DWC3_GUCTL_NAKPERENHHS
>     - DWC3_GUCTL_PARKMODEDISABLESS
>     bit from Amlogic since I don't access to the DWC3 DataBook.
>      
>     Jianxin, could you give use a brief description of these bits and why they are needed to solve the issue ?
>      
>     Thanks,
>     Neil
>      
>     On 21/09/2019 15:47, Tim wrote:
>     > Hi Neil,
>     >
>     > Thank you for your work on the Linux kernel.
>     > Hardkernel and others using the mainline on the N2 are including a patch[1] that prevents bugs[2] on the Odroid-N2. 
>     > Dongjin Kim <tobetter@gmail.com <mailto:tobetter@gmail.com>> obtained the patch from AmLogic[3],
>     > but is not comfortable contributing to upstream[4].
>     > Please fix this bug upstream, or let us know the best way forward.
>     > (maybe you can send something appropriate for Felipe to review)
>     > Thanks again.
>     >
>     > Reference links;
>     >
>     >     1 https://forum.odroid.com/download/file.php?id=9674
>     >     2 https://forum.odroid.com/viewtopic.php?f=181&t=35031&start=250#p267479
>     >     3 https://forum.odroid.com/viewtopic.php?f=181&t=35031&start=250#p267481
>     >     4 https://forum.odroid.com/viewtopic.php?f=176&t=33993&start=350#p268598
>     >
>     >
>     > The patch inline;
>     >
>     >     diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
>     >     index c9bb93a2c..8252923d8 100644
>     >     --- a/drivers/usb/dwc3/core.c
>     >     +++ b/drivers/usb/dwc3/core.c
>     >     @@ -983,6 +983,8 @@ static int dwc3_core_init(struct dwc3 *dwc)
>     >       if (dwc->dis_tx_ipgap_linecheck_quirk)
>     >       reg |= DWC3_GUCTL1_TX_IPGAP_LINECHECK_DIS;
>     >      
>     >     + reg |= (DWC3_GUCTL_NAKPERENHHS | DWC3_GUCTL_PARKMODEDISABLESS);
>     >     +
>     >       dwc3_writel(dwc->regs, DWC3_GUCTL1, reg);
>     >       }
>     >      
>     >     diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h
>     >     index 3dd783b88..ff09d19ee 100644
>     >     --- a/drivers/usb/dwc3/core.h
>     >     +++ b/drivers/usb/dwc3/core.h
>     >     @@ -247,6 +247,8 @@
>     >      
>     >      /* Global User Control Register */
>     >      #define DWC3_GUCTL_HSTINAUTORETRY BIT(14)
>     >     +#define DWC3_GUCTL_PARKMODEDISABLESS   BIT(17)
>     >     +#define DWC3_GUCTL_NAKPERENHHS         BIT(18)
>     >      
>     >      /* Global User Control 1 Register */
>     >      #define DWC3_GUCTL1_TX_IPGAP_LINECHECK_DIS BIT(28)
>     >
>     > <https://forum.odroid.com/viewtopic.php?f=176&t=33993&start=350#p268598>
>      
> 

_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH] dwc3: add parkmode_disable_ss_quirk for G12A
  2019-09-27 11:34     ` Neil Armstrong
@ 2019-09-27 13:25       ` Neil Armstrong
       [not found]         ` <CA+3zgmvmXwrXjM_xPZuumUhOEjqFqv7WofXGLDvY0S5JedN4Wg@mail.gmail.com>
  0 siblings, 1 reply; 4+ messages in thread
From: Neil Armstrong @ 2019-09-27 13:25 UTC (permalink / raw)
  To: elatllat, tobetter; +Cc: linux-amlogic, Jianxin Pan, Neil Armstrong

Could you validate this fixes the following issue ?
[  221.141621] xhci-hcd xhci-hcd.0.auto: xHCI host not responding to stop endpoint command.
[  221.157631] xhci-hcd xhci-hcd.0.auto: Host halt failed, -110
[  221.157635] xhci-hcd xhci-hcd.0.auto: xHCI host controller not responding, assume dead
[  221.159901] xhci-hcd xhci-hcd.0.auto: xHCI host not responding to stop endpoint command.
[  221.159961] hub 2-1.1:1.0: hub_ext_port_status failed (err = -22)
[  221.160076] xhci-hcd xhci-hcd.0.auto: HC died; cleaning up
[  221.165946] usb 2-1.1-port1: cannot reset (err = -22)

Cc: Tim <elatllat@gmail.com>
CC: Dongjin Kim <tobetter@gmail.com>
Cc: Jianxin Pan <jianxin.pan@amlogic.com>
CC: linux-amlogic@lists.infradead.org
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
---
 Documentation/devicetree/bindings/usb/dwc3.txt    | 2 ++
 arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi | 1 +
 drivers/usb/dwc3/core.c                           | 5 +++++
 drivers/usb/dwc3/core.h                           | 4 ++++
 4 files changed, 12 insertions(+)

diff --git a/Documentation/devicetree/bindings/usb/dwc3.txt b/Documentation/devicetree/bindings/usb/dwc3.txt
index 66780a47ad85..c977a3ba2f35 100644
--- a/Documentation/devicetree/bindings/usb/dwc3.txt
+++ b/Documentation/devicetree/bindings/usb/dwc3.txt
@@ -75,6 +75,8 @@ Optional properties:
 			from P0 to P1/P2/P3 without delay.
  - snps,dis-tx-ipgap-linecheck-quirk: when set, disable u2mac linestate check
 			during HS transmit.
+ - snps,parkmode-disable-ss-quirk: when set, all SuperSpeed bus instances in
+			park mode are disabled.
  - snps,dis_metastability_quirk: when set, disable metastability workaround.
 			CAUTION: use only if you are absolutely sure of it.
  - snps,is-utmi-l1-suspend: true when DWC3 asserts output signal
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi
index 852cf9cf121b..139f24975c0e 100644
--- a/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi
+++ b/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi
@@ -2401,6 +2401,7 @@
 				dr_mode = "host";
 				snps,dis_u2_susphy_quirk;
 				snps,quirk-frame-length-adjustment;
+				snps,parkmode-disable-ss-quirk;
 			};
 		};
 
diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index c9bb93a2c81e..f64dba17a50d 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
@@ -983,6 +983,9 @@ static int dwc3_core_init(struct dwc3 *dwc)
 		if (dwc->dis_tx_ipgap_linecheck_quirk)
 			reg |= DWC3_GUCTL1_TX_IPGAP_LINECHECK_DIS;
 
+		if (dwc->parkmode_disable_ss_quirk)
+			reg |= DWC3_GUCTL1_PARKMODE_DISABLE_SS;
+
 		dwc3_writel(dwc->regs, DWC3_GUCTL1, reg);
 	}
 
@@ -1294,6 +1297,8 @@ static void dwc3_get_properties(struct dwc3 *dwc)
 				"snps,dis-del-phy-power-chg-quirk");
 	dwc->dis_tx_ipgap_linecheck_quirk = device_property_read_bool(dev,
 				"snps,dis-tx-ipgap-linecheck-quirk");
+	dwc->parkmode_disable_ss_quirk = device_property_read_bool(dev,
+				"snps,parkmode-disable-ss-quirk");
 
 	dwc->tx_de_emphasis_quirk = device_property_read_bool(dev,
 				"snps,tx_de_emphasis_quirk");
diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h
index 3dd783b889cb..ab071163b3b8 100644
--- a/drivers/usb/dwc3/core.h
+++ b/drivers/usb/dwc3/core.h
@@ -249,6 +249,7 @@
 #define DWC3_GUCTL_HSTINAUTORETRY	BIT(14)
 
 /* Global User Control 1 Register */
+#define DWC3_GUCTL1_PARKMODE_DISABLE_SS	BIT(17)
 #define DWC3_GUCTL1_TX_IPGAP_LINECHECK_DIS	BIT(28)
 #define DWC3_GUCTL1_DEV_L1_EXIT_BY_HW	BIT(24)
 
@@ -1022,6 +1023,8 @@ struct dwc3_scratchpad_array {
  *			change quirk.
  * @dis_tx_ipgap_linecheck_quirk: set if we disable u2mac linestate
  *			check during HS transmit.
+ * @parkmode_disable_ss_quirk: set if we need to disable all SuperSpeed
+ *			instances in park mode.
  * @tx_de_emphasis_quirk: set if we enable Tx de-emphasis quirk
  * @tx_de_emphasis: Tx de-emphasis value
  * 	0	- -6dB de-emphasis
@@ -1211,6 +1214,7 @@ struct dwc3 {
 	unsigned		dis_u2_freeclk_exists_quirk:1;
 	unsigned		dis_del_phy_power_chg_quirk:1;
 	unsigned		dis_tx_ipgap_linecheck_quirk:1;
+	unsigned		parkmode_disable_ss_quirk:1;
 
 	unsigned		tx_de_emphasis_quirk:1;
 	unsigned		tx_de_emphasis:2;
-- 
2.22.0


_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Fwd: [PATCH] dwc3: add parkmode_disable_ss_quirk for G12A
       [not found]         ` <CA+3zgmvmXwrXjM_xPZuumUhOEjqFqv7WofXGLDvY0S5JedN4Wg@mail.gmail.com>
@ 2019-09-29  1:36           ` Tim
  0 siblings, 0 replies; 4+ messages in thread
From: Tim @ 2019-09-29  1:36 UTC (permalink / raw)
  To: linux-amlogic

[-- Attachment #1: Type: text/plain, Size: 912 bytes --]

Text only version for the list;

---------- Forwarded message ---------
From: Tim <elatllat@gmail.com>
Date: Sat, Sep 28, 2019 at 9:25 PM
Subject: Re: [PATCH] dwc3: add parkmode_disable_ss_quirk for G12A
To: Neil Armstrong <narmstrong@baylibre.com>
Cc: tobetter <tobetter@gmail.com>, Neil Armstrong
<narmstrong@baylibre.com>, Jianxin Pan <jianxin.pan@amlogic.com>


Thanks, yes that works.

Details;
I applied the patch to the v5.3.1 tag (diff attached), and built 3
kernels for testing.

v5.3.1 errors in seconds
v5.3.1_tobetter no errors
v5.3.1_neil no errors

The test is a rsync of a small database (24GB 2000 files) from a
remote server to a local spinning disk/lvm_devices=3/cryptsetup/ext4.
I also tested a simpler case and got no errors on any of the 3 builds
with local only rsync on spinning disk/mdadm_level=0_devices=2/ext4,
so either the network or storage stack are required to reproduce this
bug.

[-- Attachment #2: park.patch --]
[-- Type: application/x-patch, Size: 3155 bytes --]

[-- Attachment #3: Type: text/plain, Size: 167 bytes --]

_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2019-09-29  1:37 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <CA+3zgmvjhisn97Y1TCn7Ztj2m3hB9+sdoOnFdvJJbKUFpt=QrQ@mail.gmail.com>
2019-09-26 12:53 ` meson-g12b xHCI - disable park mode Neil Armstrong
     [not found]   ` <2019092715010469964015@amlogic.com>
2019-09-27 11:34     ` Neil Armstrong
2019-09-27 13:25       ` [PATCH] dwc3: add parkmode_disable_ss_quirk for G12A Neil Armstrong
     [not found]         ` <CA+3zgmvmXwrXjM_xPZuumUhOEjqFqv7WofXGLDvY0S5JedN4Wg@mail.gmail.com>
2019-09-29  1:36           ` Fwd: " Tim

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).