From: Jos Wang joswang@lenovo.com
This is a workaround for STAR 4846132, which only affects DWC_usb31 version2.00a operating in host mode.
There is a problem in DWC_usb31 version 2.00a operating in host mode that would cause a CSR read timeout When CSR read coincides with RAM Clock Gating Entry. By disable Clock Gating, sacrificing power consumption for normal operation.
Cc: stable@vger.kernel.org Signed-off-by: Jos Wang joswang@lenovo.com --- v6 -> v7: code no change. Just add the v4->v5 and v5->v6 version difference description v5 -> v6: code no change. however, there were two v5 patches, which confused the reviewers, so a v6 version was submitted. v4 -> v5: code no change. Patches "1/3" and "2/3" of the patch series are under review, this patch is submitted independently. v3 -> v4: modify commit message, add Cc: stable@vger.kernel.org v2 -> v3: - code refactor - modify comment, add STAR number, workaround applied in host mode - modify commit message, add STAR number, workaround applied in host mode - modify Author Jos Wang v1 -> v2: code no change. Add other case patches to the patch series
drivers/usb/dwc3/core.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-)
diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c index 7ee61a89520b..2a3adc80fe0f 100644 --- a/drivers/usb/dwc3/core.c +++ b/drivers/usb/dwc3/core.c @@ -957,12 +957,16 @@ static bool dwc3_core_is_valid(struct dwc3 *dwc)
static void dwc3_core_setup_global_control(struct dwc3 *dwc) { + unsigned int power_opt; + unsigned int hw_mode; u32 reg;
reg = dwc3_readl(dwc->regs, DWC3_GCTL); reg &= ~DWC3_GCTL_SCALEDOWN_MASK; + hw_mode = DWC3_GHWPARAMS0_MODE(dwc->hwparams.hwparams0); + power_opt = DWC3_GHWPARAMS1_EN_PWROPT(dwc->hwparams.hwparams1);
- switch (DWC3_GHWPARAMS1_EN_PWROPT(dwc->hwparams.hwparams1)) { + switch (power_opt) { case DWC3_GHWPARAMS1_EN_PWROPT_CLK: /** * WORKAROUND: DWC3 revisions between 2.10a and 2.50a have an @@ -995,6 +999,20 @@ static void dwc3_core_setup_global_control(struct dwc3 *dwc) break; }
+ /* + * This is a workaround for STAR#4846132, which only affects + * DWC_usb31 version2.00a operating in host mode. + * + * There is a problem in DWC_usb31 version 2.00a operating + * in host mode that would cause a CSR read timeout When CSR + * read coincides with RAM Clock Gating Entry. By disable + * Clock Gating, sacrificing power consumption for normal + * operation. + */ + if (power_opt != DWC3_GHWPARAMS1_EN_PWROPT_NO && + hw_mode != DWC3_GHWPARAMS0_MODE_GADGET && DWC3_VER_IS(DWC31, 200A)) + reg |= DWC3_GCTL_DSBLCLKGTNG; + /* check if current dwc3 is on simulation board */ if (dwc->hwparams.hwparams6 & DWC3_GHWPARAMS6_EN_FPGA) { dev_info(dwc->dev, "Running with FPGA optimizations\n");
On Wed, Jun 19, 2024 at 07:45:29PM +0800, joswang wrote:
From: Jos Wang joswang@lenovo.com
This is a workaround for STAR 4846132, which only affects DWC_usb31 version2.00a operating in host mode.
There is a problem in DWC_usb31 version 2.00a operating in host mode that would cause a CSR read timeout When CSR read coincides with RAM Clock Gating Entry. By disable Clock Gating, sacrificing power consumption for normal operation.
Cc: stable@vger.kernel.org Signed-off-by: Jos Wang joswang@lenovo.com
What commit id does this fix? How far back should it be backported in the stable releases?
thanks,
greg k-h
On Fri, Jun 21, 2024 at 1:16 AM Greg KH gregkh@linuxfoundation.org wrote:
On Wed, Jun 19, 2024 at 07:45:29PM +0800, joswang wrote:
From: Jos Wang joswang@lenovo.com
This is a workaround for STAR 4846132, which only affects DWC_usb31 version2.00a operating in host mode.
There is a problem in DWC_usb31 version 2.00a operating in host mode that would cause a CSR read timeout When CSR read coincides with RAM Clock Gating Entry. By disable Clock Gating, sacrificing power consumption for normal operation.
Cc: stable@vger.kernel.org Signed-off-by: Jos Wang joswang@lenovo.com
What commit id does this fix? How far back should it be backported in the stable releases?
thanks,
greg k-h
Hello Greg Thinh
It seems first begin from the commit 1e43c86d84fb ("usb: dwc3: core: Add DWC31 version 2.00a controller") in 6.8.0-rc6 branch ?
Thanks
Jos Wang
On Fri, Jun 21, 2024 at 09:40:10AM +0800, joswang wrote:
On Fri, Jun 21, 2024 at 1:16 AM Greg KH gregkh@linuxfoundation.org wrote:
On Wed, Jun 19, 2024 at 07:45:29PM +0800, joswang wrote:
From: Jos Wang joswang@lenovo.com
This is a workaround for STAR 4846132, which only affects DWC_usb31 version2.00a operating in host mode.
There is a problem in DWC_usb31 version 2.00a operating in host mode that would cause a CSR read timeout When CSR read coincides with RAM Clock Gating Entry. By disable Clock Gating, sacrificing power consumption for normal operation.
Cc: stable@vger.kernel.org Signed-off-by: Jos Wang joswang@lenovo.com
What commit id does this fix? How far back should it be backported in the stable releases?
thanks,
greg k-h
Hello Greg Thinh
It seems first begin from the commit 1e43c86d84fb ("usb: dwc3: core: Add DWC31 version 2.00a controller") in 6.8.0-rc6 branch ?
That commit showed up in 6.9, not 6.8. And if so, please resend with a proper "Fixes:" tag.
thanks,
greg k-h
On Fri, Jun 21, 2024, Greg KH wrote:
On Fri, Jun 21, 2024 at 09:40:10AM +0800, joswang wrote:
On Fri, Jun 21, 2024 at 1:16 AM Greg KH gregkh@linuxfoundation.org wrote:
On Wed, Jun 19, 2024 at 07:45:29PM +0800, joswang wrote:
From: Jos Wang joswang@lenovo.com
This is a workaround for STAR 4846132, which only affects DWC_usb31 version2.00a operating in host mode.
There is a problem in DWC_usb31 version 2.00a operating in host mode that would cause a CSR read timeout When CSR read coincides with RAM Clock Gating Entry. By disable Clock Gating, sacrificing power consumption for normal operation.
Cc: stable@vger.kernel.org Signed-off-by: Jos Wang joswang@lenovo.com
What commit id does this fix? How far back should it be backported in the stable releases?
thanks,
greg k-h
Hello Greg Thinh
It seems first begin from the commit 1e43c86d84fb ("usb: dwc3: core: Add DWC31 version 2.00a controller") in 6.8.0-rc6 branch ?
That commit showed up in 6.9, not 6.8. And if so, please resend with a proper "Fixes:" tag.
This patch workarounds the controller's issue. It doesn't resolve any particular commit that requires a "Fixes" tag. So, this should go on "next". It can be backported as needed. If it's to be backported, it can probably go back to as far as v4.3, to commit 690fb3718a70 ("usb: dwc3: Support Synopsys USB 3.1 IP"). But you'd need to collect all the dependencies including the commit mention above.
BR, Thinh
On Fri, Jun 21, 2024 at 05:42:42AM +0000, Thinh Nguyen wrote:
On Fri, Jun 21, 2024, Greg KH wrote:
On Fri, Jun 21, 2024 at 09:40:10AM +0800, joswang wrote:
On Fri, Jun 21, 2024 at 1:16 AM Greg KH gregkh@linuxfoundation.org wrote:
On Wed, Jun 19, 2024 at 07:45:29PM +0800, joswang wrote:
From: Jos Wang joswang@lenovo.com
This is a workaround for STAR 4846132, which only affects DWC_usb31 version2.00a operating in host mode.
There is a problem in DWC_usb31 version 2.00a operating in host mode that would cause a CSR read timeout When CSR read coincides with RAM Clock Gating Entry. By disable Clock Gating, sacrificing power consumption for normal operation.
Cc: stable@vger.kernel.org Signed-off-by: Jos Wang joswang@lenovo.com
What commit id does this fix? How far back should it be backported in the stable releases?
thanks,
greg k-h
Hello Greg Thinh
It seems first begin from the commit 1e43c86d84fb ("usb: dwc3: core: Add DWC31 version 2.00a controller") in 6.8.0-rc6 branch ?
That commit showed up in 6.9, not 6.8. And if so, please resend with a proper "Fixes:" tag.
This patch workarounds the controller's issue.
So it fixes a bug? Or does not fix a bug? I'm confused.
It doesn't resolve any particular commit that requires a "Fixes" tag. So, this should go on "next". It can be backported as needed.
Who would do the backporting and when?
If it's to be backported, it can probably go back to as far as v4.3, to commit 690fb3718a70 ("usb: dwc3: Support Synopsys USB 3.1 IP"). But you'd need to collect all the dependencies including the commit mention above.
I don't understand, sorry. Is this just a normal "evolve the driver to work better" change, or is it a "fix broken code" change, or is it something else?
In other words, what do you want to see happen to this? What tree(s) would you want it applied to?
thanks,
greg k-h
On Fri, Jun 21, 2024, Greg KH wrote:
On Fri, Jun 21, 2024 at 05:42:42AM +0000, Thinh Nguyen wrote:
On Fri, Jun 21, 2024, Greg KH wrote:
On Fri, Jun 21, 2024 at 09:40:10AM +0800, joswang wrote:
On Fri, Jun 21, 2024 at 1:16 AM Greg KH gregkh@linuxfoundation.org wrote:
On Wed, Jun 19, 2024 at 07:45:29PM +0800, joswang wrote:
From: Jos Wang joswang@lenovo.com
This is a workaround for STAR 4846132, which only affects DWC_usb31 version2.00a operating in host mode.
There is a problem in DWC_usb31 version 2.00a operating in host mode that would cause a CSR read timeout When CSR read coincides with RAM Clock Gating Entry. By disable Clock Gating, sacrificing power consumption for normal operation.
Cc: stable@vger.kernel.org Signed-off-by: Jos Wang joswang@lenovo.com
What commit id does this fix? How far back should it be backported in the stable releases?
thanks,
greg k-h
Hello Greg Thinh
It seems first begin from the commit 1e43c86d84fb ("usb: dwc3: core: Add DWC31 version 2.00a controller") in 6.8.0-rc6 branch ?
That commit showed up in 6.9, not 6.8. And if so, please resend with a proper "Fixes:" tag.
This patch workarounds the controller's issue.
So it fixes a bug? Or does not fix a bug? I'm confused.
The bug is not a driver's bug. The fix applies to a hardware bug and not any particular commit that can be referenced with a "Fixes" tag.
It doesn't resolve any particular commit that requires a "Fixes" tag. So, this should go on "next". It can be backported as needed.
Who would do the backporting and when?
For anyone who doesn't use mainline kernel that needs this patch backported to their kernel version.
If it's to be backported, it can probably go back to as far as v4.3, to commit 690fb3718a70 ("usb: dwc3: Support Synopsys USB 3.1 IP"). But you'd need to collect all the dependencies including the commit mention above.
I don't understand, sorry. Is this just a normal "evolve the driver to work better" change, or is it a "fix broken code" change, or is it something else?
In other words, what do you want to see happen to this? What tree(s) would you want it applied to?
It's up to you, but it seems to fit "usb-testing" branch more since it doesn't have a "Fixes" tag. The severity of this fix is debatable since it doesn't apply to every DWC_usb31 configuration or every scenario.
Thanks, Thinh
On Fri, Jun 21, 2024 at 06:20:38AM +0000, Thinh Nguyen wrote:
On Fri, Jun 21, 2024, Greg KH wrote:
On Fri, Jun 21, 2024 at 05:42:42AM +0000, Thinh Nguyen wrote:
On Fri, Jun 21, 2024, Greg KH wrote:
On Fri, Jun 21, 2024 at 09:40:10AM +0800, joswang wrote:
On Fri, Jun 21, 2024 at 1:16 AM Greg KH gregkh@linuxfoundation.org wrote:
On Wed, Jun 19, 2024 at 07:45:29PM +0800, joswang wrote: > From: Jos Wang joswang@lenovo.com > > This is a workaround for STAR 4846132, which only affects > DWC_usb31 version2.00a operating in host mode. > > There is a problem in DWC_usb31 version 2.00a operating > in host mode that would cause a CSR read timeout When CSR > read coincides with RAM Clock Gating Entry. By disable > Clock Gating, sacrificing power consumption for normal > operation. > > Cc: stable@vger.kernel.org > Signed-off-by: Jos Wang joswang@lenovo.com
What commit id does this fix? How far back should it be backported in the stable releases?
thanks,
greg k-h
Hello Greg Thinh
It seems first begin from the commit 1e43c86d84fb ("usb: dwc3: core: Add DWC31 version 2.00a controller") in 6.8.0-rc6 branch ?
That commit showed up in 6.9, not 6.8. And if so, please resend with a proper "Fixes:" tag.
This patch workarounds the controller's issue.
So it fixes a bug? Or does not fix a bug? I'm confused.
The bug is not a driver's bug. The fix applies to a hardware bug and not any particular commit that can be referenced with a "Fixes" tag.
So it's a bug that the kernel needs to work around, that's fine. But that implies it should go to "all" stable kernels that it can, right?
It doesn't resolve any particular commit that requires a "Fixes" tag. So, this should go on "next". It can be backported as needed.
Who would do the backporting and when?
For anyone who doesn't use mainline kernel that needs this patch backported to their kernel version.
I can not poarse this, sorry. We can't do anything about people who don't use our kernel trees, so what does this mean?
If it's to be backported, it can probably go back to as far as v4.3, to commit 690fb3718a70 ("usb: dwc3: Support Synopsys USB 3.1 IP"). But you'd need to collect all the dependencies including the commit mention above.
I don't understand, sorry. Is this just a normal "evolve the driver to work better" change, or is it a "fix broken code" change, or is it something else?
In other words, what do you want to see happen to this? What tree(s) would you want it applied to?
It's up to you, but it seems to fit "usb-testing" branch more since it doesn't have a "Fixes" tag. The severity of this fix is debatable since it doesn't apply to every DWC_usb31 configuration or every scenario.
As it is "cc: stable" that implies that it should get to Linus for 6.10-final, not wait for 6.11-rc1 as the 6.11 release is months away, and anyone who has this issue would want it fixed sooner.
still confused,
greg k-h
On Fri, Jun 21, 2024, Greg KH wrote:
On Fri, Jun 21, 2024 at 06:20:38AM +0000, Thinh Nguyen wrote:
On Fri, Jun 21, 2024, Greg KH wrote:
On Fri, Jun 21, 2024 at 05:42:42AM +0000, Thinh Nguyen wrote:
On Fri, Jun 21, 2024, Greg KH wrote:
On Fri, Jun 21, 2024 at 09:40:10AM +0800, joswang wrote:
On Fri, Jun 21, 2024 at 1:16 AM Greg KH gregkh@linuxfoundation.org wrote: > > On Wed, Jun 19, 2024 at 07:45:29PM +0800, joswang wrote: > > From: Jos Wang joswang@lenovo.com > > > > This is a workaround for STAR 4846132, which only affects > > DWC_usb31 version2.00a operating in host mode. > > > > There is a problem in DWC_usb31 version 2.00a operating > > in host mode that would cause a CSR read timeout When CSR > > read coincides with RAM Clock Gating Entry. By disable > > Clock Gating, sacrificing power consumption for normal > > operation. > > > > Cc: stable@vger.kernel.org > > Signed-off-by: Jos Wang joswang@lenovo.com > > What commit id does this fix? How far back should it be backported in > the stable releases? > > thanks, > > greg k-h
Hello Greg Thinh
It seems first begin from the commit 1e43c86d84fb ("usb: dwc3: core: Add DWC31 version 2.00a controller") in 6.8.0-rc6 branch ?
That commit showed up in 6.9, not 6.8. And if so, please resend with a proper "Fixes:" tag.
This patch workarounds the controller's issue.
So it fixes a bug? Or does not fix a bug? I'm confused.
The bug is not a driver's bug. The fix applies to a hardware bug and not any particular commit that can be referenced with a "Fixes" tag.
So it's a bug that the kernel needs to work around, that's fine. But that implies it should go to "all" stable kernels that it can, right?
Yes. That's right.
It doesn't resolve any particular commit that requires a "Fixes" tag. So, this should go on "next". It can be backported as needed.
Who would do the backporting and when?
For anyone who doesn't use mainline kernel that needs this patch backported to their kernel version.
I can not poarse this, sorry. We can't do anything about people who don't use our kernel trees, so what does this mean?
Sorry, I wasn't being clear. What I meant is that it needs some work to backport to stable version prior to v6.9. Anyone who needs to backport this prior to this will need to resolve these dependencies.
If it's to be backported, it can probably go back to as far as v4.3, to commit 690fb3718a70 ("usb: dwc3: Support Synopsys USB 3.1 IP"). But you'd need to collect all the dependencies including the commit mention above.
I don't understand, sorry. Is this just a normal "evolve the driver to work better" change, or is it a "fix broken code" change, or is it something else?
In other words, what do you want to see happen to this? What tree(s) would you want it applied to?
It's up to you, but it seems to fit "usb-testing" branch more since it doesn't have a "Fixes" tag. The severity of this fix is debatable since it doesn't apply to every DWC_usb31 configuration or every scenario.
As it is "cc: stable" that implies that it should get to Linus for 6.10-final, not wait for 6.11-rc1 as the 6.11 release is months away, and anyone who has this issue would want it fixed sooner.
still confused,
Ok. I may have misunderstood what can go into rc2 and beyond then. If we don't have to wait for the next rc1 for it to be picked up for stable, then can we add it to "usb-linus" branch?
There won't be a Fixes tag, but we can backport it up to 5.10.x:
Cc: stable@vger.kernel.org # 5.10.x: 1e43c86d: usb: dwc3: core: Add DWC31 version 2.00a controller Cc: stable@vger.kernel.org # 5.10.x
This can go after the versioning scheme in dwc3 in the 5.10.x lts. I did not check what other dependencies are needed in addition to the change above.
Thanks, Thinh
On Sat, Jun 22, 2024 at 7:09 AM Thinh Nguyen Thinh.Nguyen@synopsys.com wrote:
On Fri, Jun 21, 2024, Greg KH wrote:
On Fri, Jun 21, 2024 at 06:20:38AM +0000, Thinh Nguyen wrote:
On Fri, Jun 21, 2024, Greg KH wrote:
On Fri, Jun 21, 2024 at 05:42:42AM +0000, Thinh Nguyen wrote:
On Fri, Jun 21, 2024, Greg KH wrote:
On Fri, Jun 21, 2024 at 09:40:10AM +0800, joswang wrote: > On Fri, Jun 21, 2024 at 1:16 AM Greg KH gregkh@linuxfoundation.org wrote: > > > > On Wed, Jun 19, 2024 at 07:45:29PM +0800, joswang wrote: > > > From: Jos Wang joswang@lenovo.com > > > > > > This is a workaround for STAR 4846132, which only affects > > > DWC_usb31 version2.00a operating in host mode. > > > > > > There is a problem in DWC_usb31 version 2.00a operating > > > in host mode that would cause a CSR read timeout When CSR > > > read coincides with RAM Clock Gating Entry. By disable > > > Clock Gating, sacrificing power consumption for normal > > > operation. > > > > > > Cc: stable@vger.kernel.org > > > Signed-off-by: Jos Wang joswang@lenovo.com > > > > What commit id does this fix? How far back should it be backported in > > the stable releases? > > > > thanks, > > > > greg k-h > > Hello Greg Thinh > > It seems first begin from the commit 1e43c86d84fb ("usb: dwc3: core: > Add DWC31 version 2.00a controller") > in 6.8.0-rc6 branch ?
That commit showed up in 6.9, not 6.8. And if so, please resend with a proper "Fixes:" tag.
This patch workarounds the controller's issue.
So it fixes a bug? Or does not fix a bug? I'm confused.
The bug is not a driver's bug. The fix applies to a hardware bug and not any particular commit that can be referenced with a "Fixes" tag.
So it's a bug that the kernel needs to work around, that's fine. But that implies it should go to "all" stable kernels that it can, right?
Yes. That's right.
It doesn't resolve any particular commit that requires a "Fixes" tag. So, this should go on "next". It can be backported as needed.
Who would do the backporting and when?
For anyone who doesn't use mainline kernel that needs this patch backported to their kernel version.
I can not poarse this, sorry. We can't do anything about people who don't use our kernel trees, so what does this mean?
Sorry, I wasn't being clear. What I meant is that it needs some work to backport to stable version prior to v6.9. Anyone who needs to backport this prior to this will need to resolve these dependencies.
If it's to be backported, it can probably go back to as far as v4.3, to commit 690fb3718a70 ("usb: dwc3: Support Synopsys USB 3.1 IP"). But you'd need to collect all the dependencies including the commit mention above.
I don't understand, sorry. Is this just a normal "evolve the driver to work better" change, or is it a "fix broken code" change, or is it something else?
In other words, what do you want to see happen to this? What tree(s) would you want it applied to?
It's up to you, but it seems to fit "usb-testing" branch more since it doesn't have a "Fixes" tag. The severity of this fix is debatable since it doesn't apply to every DWC_usb31 configuration or every scenario.
As it is "cc: stable" that implies that it should get to Linus for 6.10-final, not wait for 6.11-rc1 as the 6.11 release is months away, and anyone who has this issue would want it fixed sooner.
still confused,
Ok. I may have misunderstood what can go into rc2 and beyond then. If we don't have to wait for the next rc1 for it to be picked up for stable, then can we add it to "usb-linus" branch?
There won't be a Fixes tag, but we can backport it up to 5.10.x:
Cc: stable@vger.kernel.org # 5.10.x: 1e43c86d: usb: dwc3: core: Add DWC31 version 2.00a controller Cc: stable@vger.kernel.org # 5.10.x
This can go after the versioning scheme in dwc3 in the 5.10.x lts. I did not check what other dependencies are needed in addition to the change above.
Thanks, Thinh
Is there anything else I need to modify for this patch?
Thanks, Jos Wang
On Tue, Jun 25, 2024, joswang wrote:
On Sat, Jun 22, 2024 at 7:09 AM Thinh Nguyen Thinh.Nguyen@synopsys.com wrote:
Ok. I may have misunderstood what can go into rc2 and beyond then. If we don't have to wait for the next rc1 for it to be picked up for stable, then can we add it to "usb-linus" branch?
There won't be a Fixes tag, but we can backport it up to 5.10.x:
Cc: stable@vger.kernel.org # 5.10.x: 1e43c86d: usb: dwc3: core: Add DWC31 version 2.00a controller Cc: stable@vger.kernel.org # 5.10.x
This can go after the versioning scheme in dwc3 in the 5.10.x lts. I did not check what other dependencies are needed in addition to the change above.
Thanks, Thinh
Is there anything else I need to modify for this patch?
Hi Greg,
Will a simple tag "Cc: stable@vger.kernel.org" sufficient? Or would you prefer using the tags above?
For either case:
Acked-by: Thinh Nguyen Thinh.Nguyen@synopsys.com
Thanks, Thinh
On Wed, Jun 26, 2024 at 01:37:14AM +0000, Thinh Nguyen wrote:
On Tue, Jun 25, 2024, joswang wrote:
On Sat, Jun 22, 2024 at 7:09 AM Thinh Nguyen Thinh.Nguyen@synopsys.com wrote:
Ok. I may have misunderstood what can go into rc2 and beyond then. If we don't have to wait for the next rc1 for it to be picked up for stable, then can we add it to "usb-linus" branch?
There won't be a Fixes tag, but we can backport it up to 5.10.x:
Cc: stable@vger.kernel.org # 5.10.x: 1e43c86d: usb: dwc3: core: Add DWC31 version 2.00a controller Cc: stable@vger.kernel.org # 5.10.x
This can go after the versioning scheme in dwc3 in the 5.10.x lts. I did not check what other dependencies are needed in addition to the change above.
Thanks, Thinh
Is there anything else I need to modify for this patch?
Hi Greg,
Will a simple tag "Cc: stable@vger.kernel.org" sufficient? Or would you prefer using the tags above?
For either case:
Acked-by: Thinh Nguyen Thinh.Nguyen@synopsys.com
I fixed this up by hand, thanks for the ack!
greg k-h
linux-stable-mirror@lists.linaro.org