* [PATCH] Revert "usb: dwc3: gadget: Prevent EP queuing while stopping transfers"
[not found] <20210322121932.478878424@linuxfoundation.org>
@ 2021-04-01 11:55 ` Martin Kepplinger
2021-04-01 13:04 ` Greg KH
2021-04-01 18:09 ` [PATCH] " Wesley Cheng
0 siblings, 2 replies; 6+ messages in thread
From: Martin Kepplinger @ 2021-04-01 11:55 UTC (permalink / raw)
To: gregkh, balbi; +Cc: linux-kernel, stable, linux-usb, wcheng, Martin Kepplinger
This reverts commit 9de499997c3737e0c0207beb03615b320cabe495.
Signed-off-by: Martin Kepplinger <martin.kepplinger@puri.sm>
---
I more or less blindly report:
commit 9de499997c ("usb: dwc3: gadget: Prevent EP queuing while stopping
transfers") results in the below error every time I connect the type-c
connector to the dwc3, configured with serial and ethernet gadgets.
fyi, I apply the following to dwc3 on this port:
dr_mode = "otg";
snps,dis_u3_susphy_quirk;
hnp-disable;
srp-disable;
adp-disable;
usb-role-switch;
v5.12-rc5 does not have this error so I'm not sure whether it's
more appropriate to add something to dwc3 than reverting. I hope usb
people to know better and maybe even see the problem.
thanks,
martin
[ 51.148220] ------------[ cut here ]------------
[ 51.148241] dwc3 38100000.usb: No resource for ep2in
[ 51.148376] WARNING: CPU: 0 PID: 299 at drivers/usb/dwc3/gadget.c:360 dwc3_send_gadget_ep_cmd+0x570/0x740 [dwc3]
[ 51.148431] Modules linked in: aes_ce_ccm rfcomm algif_hash algif_skcipher af_alg bnep qmi_wwan cdc_wdm usbnet mii option usb_wwan usbserial caam_jr caamhash_desc caamalg_desc crypto_engine mousedev redpine_sdio redpine_91x bluetooth uas usb_storage mac80211 st_lsm6dsx_spi aes_ce_blk crypto_simd crct10dif_ce cfg80211 ghash_ce sha2_ce sha1_ce bq25890_charger s5k3l6xx snd_soc_wm8962 hi846 vcnl4000 leds_lm3560 edt_ft5x06 ofpart industrialio_triggered_buffer tps6598x st_lsm6dsx_i2c st_lsm6dsx kfifo_buf gnss_mtk typec mxc_mipi_csi2_yav gnss_serial mx6s_capture gnss videobuf2_dma_contig videobuf2_memops spi_nor v4l2_fwnode videobuf2_v4l2 videobuf2_common snd_soc_gtm601 snd_soc_simple_card videodev mtd snd_soc_simple_card_utils mc snd_soc_fsl_sai imx_pcm_dma caam error snvs_pwrkey imx_sdma virt_dma snd_soc_core imx2_wdt snd_pcm_dmaengine snd_pcm watchdog snd_timer snd soundcore pwm_vibra rfkill_hks rfkill ledtrig_timer usb_f_acm u_serial usb_f_rndis g_multi usb_f_mass_storage u_ether
[ 51.148759] libcomposite ledtrig_pattern fuse ip_tables x_tables ipv6 xhci_plat_hcd xhci_hcd usbcore dwc3 cdns_mhdp_imx ulpi cdns_mhdp_drmcore udc_core imx_dcss roles usb_common phy_fsl_imx8mq_usb clk_bd718x7
[ 51.148837] CPU: 0 PID: 299 Comm: irq/64-dwc3 Not tainted 5.11.11-librem5-00334-ge4c4ff3624e9 #218
[ 51.148848] Hardware name: Purism Librem 5r4 (DT)
[ 51.148854] pstate: 60000085 (nZCv daIf -PAN -UAO -TCO BTYPE=--)
[ 51.148863] pc : dwc3_send_gadget_ep_cmd+0x570/0x740 [dwc3]
[ 51.148894] lr : dwc3_send_gadget_ep_cmd+0x570/0x740 [dwc3]
[ 51.148924] sp : ffff800011cb3ac0
[ 51.148929] x29: ffff800011cb3ac0 x28: ffff0000032a7b00
[ 51.148942] x27: ffff00000327da00 x26: 0000000000000000
[ 51.148954] x25: 00000000ffffffea x24: 0000000000000006
[ 51.148967] x23: ffff0000bee1c080 x22: ffff800011cb3b7c
[ 51.148979] x21: 0000000000000406 x20: ffff0000bf170000
[ 51.148992] x19: 0000000000000001 x18: 0000000000000000
[ 51.149004] x17: 0000000000000000 x16: 0000000000000000
[ 51.149016] x15: 0000000000000000 x14: ffff8000114512c0
[ 51.149028] x13: 0000000000001698 x12: 0000000000000040
[ 51.149040] x11: ffff80001151a6f8 x10: 00000000ffffe000
[ 51.149052] x9 : ffff8000100b2b7c x8 : ffff80001146a6f8
[ 51.149065] x7 : ffff80001151a6f8 x6 : 0000000000000000
[ 51.149077] x5 : ffff0000bf939948 x4 : 0000000000000000
[ 51.149089] x3 : 0000000000000027 x2 : 0000000000000000
[ 51.149101] x1 : 0000000000000000 x0 : ffff0000049ae040
[ 51.149114] Call trace:
[ 51.149120] dwc3_send_gadget_ep_cmd+0x570/0x740 [dwc3]
[ 51.149150] __dwc3_gadget_ep_enable+0x288/0x4fc [dwc3]
[ 51.149179] dwc3_gadget_ep_enable+0x6c/0x15c [dwc3]
[ 51.149209] usb_ep_enable+0x48/0x110 [udc_core]
[ 51.149251] rndis_set_alt+0x138/0x1c0 [usb_f_rndis]
[ 51.149276] composite_setup+0x674/0x194c [libcomposite]
[ 51.149314] dwc3_ep0_interrupt+0x9c4/0xb9c [dwc3]
[ 51.149344] dwc3_thread_interrupt+0x8bc/0xe74 [dwc3]
[ 51.149374] irq_thread_fn+0x38/0xb0
[ 51.149388] irq_thread+0x170/0x294
[ 51.149397] kthread+0x164/0x16c
[ 51.149407] ret_from_fork+0x10/0x34
[ 51.149419] ---[ end trace 62c6cc2ebfb18047 ]---
[ 51.149436] ------------[ cut here ]------------
[ 51.149440] dwc3 38100000.usb: No resource for ep1in
[ 51.149507] WARNING: CPU: 0 PID: 299 at drivers/usb/dwc3/gadget.c:360 dwc3_send_gadget_ep_cmd+0x570/0x740 [dwc3]
[ 51.149543] Modules linked in: aes_ce_ccm rfcomm algif_hash algif_skcipher af_alg bnep qmi_wwan cdc_wdm usbnet mii option usb_wwan usbserial caam_jr caamhash_desc caamalg_desc crypto_engine mousedev redpine_sdio redpine_91x bluetooth uas usb_storage mac80211 st_lsm6dsx_spi aes_ce_blk crypto_simd crct10dif_ce cfg80211 ghash_ce sha2_ce sha1_ce bq25890_charger s5k3l6xx snd_soc_wm8962 hi846 vcnl4000 leds_lm3560 edt_ft5x06 ofpart industrialio_triggered_buffer tps6598x st_lsm6dsx_i2c st_lsm6dsx kfifo_buf gnss_mtk typec mxc_mipi_csi2_yav gnss_serial mx6s_capture gnss videobuf2_dma_contig videobuf2_memops spi_nor v4l2_fwnode videobuf2_v4l2 videobuf2_common snd_soc_gtm601 snd_soc_simple_card videodev mtd snd_soc_simple_card_utils mc snd_soc_fsl_sai imx_pcm_dma caam error snvs_pwrkey imx_sdma virt_dma snd_soc_core imx2_wdt snd_pcm_dmaengine snd_pcm watchdog snd_timer snd soundcore pwm_vibra rfkill_hks rfkill ledtrig_timer usb_f_acm u_serial usb_f_rndis g_multi usb_f_mass_storage u_ether
[ 51.149852] libcomposite ledtrig_pattern fuse ip_tables x_tables ipv6 xhci_plat_hcd xhci_hcd usbcore dwc3 cdns_mhdp_imx ulpi cdns_mhdp_drmcore udc_core imx_dcss roles usb_common phy_fsl_imx8mq_usb clk_bd718x7
[ 51.149923] CPU: 0 PID: 299 Comm: irq/64-dwc3 Tainted: G W 5.11.11-librem5-00334-ge4c4ff3624e9 #218
[ 51.149933] Hardware name: Purism Librem 5r4 (DT)
[ 51.149937] pstate: 60000085 (nZCv daIf -PAN -UAO -TCO BTYPE=--)
[ 51.149946] pc : dwc3_send_gadget_ep_cmd+0x570/0x740 [dwc3]
[ 51.149977] lr : dwc3_send_gadget_ep_cmd+0x570/0x740 [dwc3]
[ 51.150007] sp : ffff800011cb3a80
[ 51.150011] x29: ffff800011cb3a80 x28: ffff0000032a7b00
[ 51.150024] x27: ffff00000327da00 x26: 0000000000000000
[ 51.150037] x25: 00000000ffffffea x24: 0000000000000006
[ 51.150049] x23: ffff0000bee1c080 x22: ffff800011cb3b3c
[ 51.150062] x21: 0000000000000406 x20: ffff0000bf033f00
[ 51.150074] x19: 0000000000000001 x18: 0000000000000000
[ 51.150086] x17: 0000000000000000 x16: 0000000000000000
[ 51.150098] x15: 0000000000000000 x14: ffff8000114512c0
[ 51.150111] x13: 0000000000001698 x12: 0000000000000040
[ 51.150123] x11: ffff80001151a6f8 x10: 00000000ffffe000
[ 51.150135] x9 : ffff8000100b2b7c x8 : ffff80001146a6f8
[ 51.150147] x7 : ffff80001151a6f8 x6 : 0000000000000000
[ 51.150159] x5 : ffff0000bf939948 x4 : 0000000000000000
[ 51.150172] x3 : 0000000000000027 x2 : 0000000000000000
[ 51.150183] x1 : 0000000000000000 x0 : ffff0000049ae040
[ 51.150196] Call trace:
[ 51.150200] dwc3_send_gadget_ep_cmd+0x570/0x740 [dwc3]
[ 51.150231] __dwc3_gadget_ep_enable+0x288/0x4fc [dwc3]
[ 51.150260] dwc3_gadget_ep_enable+0x6c/0x15c [dwc3]
[ 51.150289] usb_ep_enable+0x48/0x110 [udc_core]
[ 51.150322] gether_connect+0x3c/0x1f4 [u_ether]
[ 51.150340] rndis_set_alt+0x74/0x1c0 [usb_f_rndis]
[ 51.150361] composite_setup+0x674/0x194c [libcomposite]
[ 51.150392] dwc3_ep0_interrupt+0x9c4/0xb9c [dwc3]
[ 51.150423] dwc3_thread_interrupt+0x8bc/0xe74 [dwc3]
[ 51.150452] irq_thread_fn+0x38/0xb0
[ 51.150461] irq_thread+0x170/0x294
[ 51.150469] kthread+0x164/0x16c
[ 51.150478] ret_from_fork+0x10/0x34
[ 51.150487] ---[ end trace 62c6cc2ebfb18048 ]---
drivers/usb/dwc3/gadget.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
index 2a86ad4b12b3..ef8ecaf8655a 100644
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
@@ -783,6 +783,8 @@ static int __dwc3_gadget_ep_disable(struct dwc3_ep *dep)
trace_dwc3_gadget_ep_disable(dep);
+ dwc3_remove_requests(dwc, dep);
+
/* make sure HW endpoint isn't stalled */
if (dep->flags & DWC3_EP_STALL)
__dwc3_gadget_ep_set_halt(dep, 0, false);
@@ -801,8 +803,6 @@ static int __dwc3_gadget_ep_disable(struct dwc3_ep *dep)
dep->endpoint.desc = NULL;
}
- dwc3_remove_requests(dwc, dep);
-
return 0;
}
@@ -1617,7 +1617,7 @@ static int __dwc3_gadget_ep_queue(struct dwc3_ep *dep, struct dwc3_request *req)
{
struct dwc3 *dwc = dep->dwc;
- if (!dep->endpoint.desc || !dwc->pullups_connected || !dwc->connected) {
+ if (!dep->endpoint.desc || !dwc->pullups_connected) {
dev_err(dwc->dev, "%s: can't queue to disabled endpoint\n",
dep->name);
return -ESHUTDOWN;
@@ -2150,7 +2150,6 @@ static int dwc3_gadget_pullup(struct usb_gadget *g, int is_on)
if (!is_on) {
u32 count;
- dwc->connected = false;
/*
* In the Synopsis DesignWare Cores USB3 Databook Rev. 3.30a
* Section 4.1.8 Table 4-7, it states that for a device-initiated
@@ -2175,6 +2174,7 @@ static int dwc3_gadget_pullup(struct usb_gadget *g, int is_on)
dwc->ev_buf->lpos = (dwc->ev_buf->lpos + count) %
dwc->ev_buf->length;
}
+ dwc->connected = false;
} else {
__dwc3_gadget_start(dwc);
}
@@ -3267,6 +3267,8 @@ static void dwc3_gadget_reset_interrupt(struct dwc3 *dwc)
{
u32 reg;
+ dwc->connected = true;
+
/*
* WORKAROUND: DWC3 revisions <1.88a have an issue which
* would cause a missing Disconnect Event if there's a
@@ -3306,7 +3308,6 @@ static void dwc3_gadget_reset_interrupt(struct dwc3 *dwc)
* transfers."
*/
dwc3_stop_active_transfers(dwc);
- dwc->connected = true;
reg = dwc3_readl(dwc->regs, DWC3_DCTL);
reg &= ~DWC3_DCTL_TSTCTRL_MASK;
--
2.30.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] Revert "usb: dwc3: gadget: Prevent EP queuing while stopping transfers"
2021-04-01 11:55 ` [PATCH] Revert "usb: dwc3: gadget: Prevent EP queuing while stopping transfers" Martin Kepplinger
@ 2021-04-01 13:04 ` Greg KH
2021-04-01 13:11 ` [PATCH v2] " Martin Kepplinger
2021-04-01 18:09 ` [PATCH] " Wesley Cheng
1 sibling, 1 reply; 6+ messages in thread
From: Greg KH @ 2021-04-01 13:04 UTC (permalink / raw)
To: Martin Kepplinger; +Cc: balbi, linux-kernel, stable, linux-usb, wcheng
On Thu, Apr 01, 2021 at 01:55:58PM +0200, Martin Kepplinger wrote:
> This reverts commit 9de499997c3737e0c0207beb03615b320cabe495.
>
You do not put a reason here, so I can not take this :(
Please fix up and resend.
thanks,
greg k-h
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2] Revert "usb: dwc3: gadget: Prevent EP queuing while stopping transfers"
2021-04-01 13:04 ` Greg KH
@ 2021-04-01 13:11 ` Martin Kepplinger
2021-04-01 14:14 ` Greg KH
0 siblings, 1 reply; 6+ messages in thread
From: Martin Kepplinger @ 2021-04-01 13:11 UTC (permalink / raw)
To: gregkh, balbi; +Cc: linux-kernel, stable, linux-usb, wcheng, Martin Kepplinger
commit 9de499997c ("usb: dwc3: gadget: Prevent EP queuing while stopping
transfers") results in the below error every time I connect the type-c
connector to the dwc3, configured with serial and ethernet gadgets.
I also apply the following to dwc3 on this port:
dr_mode = "otg";
snps,dis_u3_susphy_quirk;
hnp-disable;
srp-disable;
adp-disable;
usb-role-switch;
[ 51.148220] ------------[ cut here ]------------
[ 51.148241] dwc3 38100000.usb: No resource for ep2in
[ 51.148376] WARNING: CPU: 0 PID: 299 at drivers/usb/dwc3/gadget.c:360 dwc3_send_gadget_ep_cmd+0x570/0x740 [dwc3]
[ 51.148837] CPU: 0 PID: 299 Comm: irq/64-dwc3 Not tainted 5.11.11-librem5-00334-ge4c4ff3624e9 #218
[ 51.148848] Hardware name: Purism Librem 5r4 (DT)
[ 51.148854] pstate: 60000085 (nZCv daIf -PAN -UAO -TCO BTYPE=--)
[ 51.148863] pc : dwc3_send_gadget_ep_cmd+0x570/0x740 [dwc3]
[ 51.148894] lr : dwc3_send_gadget_ep_cmd+0x570/0x740 [dwc3]
[ 51.148924] sp : ffff800011cb3ac0
[ 51.148929] x29: ffff800011cb3ac0 x28: ffff0000032a7b00
[ 51.148942] x27: ffff00000327da00 x26: 0000000000000000
[ 51.148954] x25: 00000000ffffffea x24: 0000000000000006
[ 51.148967] x23: ffff0000bee1c080 x22: ffff800011cb3b7c
[ 51.148979] x21: 0000000000000406 x20: ffff0000bf170000
[ 51.148992] x19: 0000000000000001 x18: 0000000000000000
[ 51.149004] x17: 0000000000000000 x16: 0000000000000000
[ 51.149016] x15: 0000000000000000 x14: ffff8000114512c0
[ 51.149028] x13: 0000000000001698 x12: 0000000000000040
[ 51.149040] x11: ffff80001151a6f8 x10: 00000000ffffe000
[ 51.149052] x9 : ffff8000100b2b7c x8 : ffff80001146a6f8
[ 51.149065] x7 : ffff80001151a6f8 x6 : 0000000000000000
[ 51.149077] x5 : ffff0000bf939948 x4 : 0000000000000000
[ 51.149089] x3 : 0000000000000027 x2 : 0000000000000000
[ 51.149101] x1 : 0000000000000000 x0 : ffff0000049ae040
[ 51.149114] Call trace:
[ 51.149120] dwc3_send_gadget_ep_cmd+0x570/0x740 [dwc3]
[ 51.149150] __dwc3_gadget_ep_enable+0x288/0x4fc [dwc3]
[ 51.149179] dwc3_gadget_ep_enable+0x6c/0x15c [dwc3]
[ 51.149209] usb_ep_enable+0x48/0x110 [udc_core]
[ 51.149251] rndis_set_alt+0x138/0x1c0 [usb_f_rndis]
[ 51.149276] composite_setup+0x674/0x194c [libcomposite]
[ 51.149314] dwc3_ep0_interrupt+0x9c4/0xb9c [dwc3]
[ 51.149344] dwc3_thread_interrupt+0x8bc/0xe74 [dwc3]
[ 51.149374] irq_thread_fn+0x38/0xb0
[ 51.149388] irq_thread+0x170/0x294
[ 51.149397] kthread+0x164/0x16c
[ 51.149407] ret_from_fork+0x10/0x34
[ 51.149419] ---[ end trace 62c6cc2ebfb18047 ]---
Linus' tree isn't affected. Revert the change.
Signed-off-by: Martin Kepplinger <martin.kepplinger@puri.sm>
---
drivers/usb/dwc3/gadget.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
index 2a86ad4b12b3..ef8ecaf8655a 100644
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
@@ -783,6 +783,8 @@ static int __dwc3_gadget_ep_disable(struct dwc3_ep *dep)
trace_dwc3_gadget_ep_disable(dep);
+ dwc3_remove_requests(dwc, dep);
+
/* make sure HW endpoint isn't stalled */
if (dep->flags & DWC3_EP_STALL)
__dwc3_gadget_ep_set_halt(dep, 0, false);
@@ -801,8 +803,6 @@ static int __dwc3_gadget_ep_disable(struct dwc3_ep *dep)
dep->endpoint.desc = NULL;
}
- dwc3_remove_requests(dwc, dep);
-
return 0;
}
@@ -1617,7 +1617,7 @@ static int __dwc3_gadget_ep_queue(struct dwc3_ep *dep, struct dwc3_request *req)
{
struct dwc3 *dwc = dep->dwc;
- if (!dep->endpoint.desc || !dwc->pullups_connected || !dwc->connected) {
+ if (!dep->endpoint.desc || !dwc->pullups_connected) {
dev_err(dwc->dev, "%s: can't queue to disabled endpoint\n",
dep->name);
return -ESHUTDOWN;
@@ -2150,7 +2150,6 @@ static int dwc3_gadget_pullup(struct usb_gadget *g, int is_on)
if (!is_on) {
u32 count;
- dwc->connected = false;
/*
* In the Synopsis DesignWare Cores USB3 Databook Rev. 3.30a
* Section 4.1.8 Table 4-7, it states that for a device-initiated
@@ -2175,6 +2174,7 @@ static int dwc3_gadget_pullup(struct usb_gadget *g, int is_on)
dwc->ev_buf->lpos = (dwc->ev_buf->lpos + count) %
dwc->ev_buf->length;
}
+ dwc->connected = false;
} else {
__dwc3_gadget_start(dwc);
}
@@ -3267,6 +3267,8 @@ static void dwc3_gadget_reset_interrupt(struct dwc3 *dwc)
{
u32 reg;
+ dwc->connected = true;
+
/*
* WORKAROUND: DWC3 revisions <1.88a have an issue which
* would cause a missing Disconnect Event if there's a
@@ -3306,7 +3308,6 @@ static void dwc3_gadget_reset_interrupt(struct dwc3 *dwc)
* transfers."
*/
dwc3_stop_active_transfers(dwc);
- dwc->connected = true;
reg = dwc3_readl(dwc->regs, DWC3_DCTL);
reg &= ~DWC3_DCTL_TSTCTRL_MASK;
--
2.30.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v2] Revert "usb: dwc3: gadget: Prevent EP queuing while stopping transfers"
2021-04-01 13:11 ` [PATCH v2] " Martin Kepplinger
@ 2021-04-01 14:14 ` Greg KH
0 siblings, 0 replies; 6+ messages in thread
From: Greg KH @ 2021-04-01 14:14 UTC (permalink / raw)
To: Martin Kepplinger; +Cc: balbi, linux-kernel, stable, linux-usb, wcheng
On Thu, Apr 01, 2021 at 03:11:08PM +0200, Martin Kepplinger wrote:
> commit 9de499997c ("usb: dwc3: gadget: Prevent EP queuing while stopping
> transfers") results in the below error every time I connect the type-c
> connector to the dwc3, configured with serial and ethernet gadgets.
> I also apply the following to dwc3 on this port:
>
> dr_mode = "otg";
> snps,dis_u3_susphy_quirk;
> hnp-disable;
> srp-disable;
> adp-disable;
Why all the trailing whitespace?
> usb-role-switch;
>
> [ 51.148220] ------------[ cut here ]------------
> [ 51.148241] dwc3 38100000.usb: No resource for ep2in
> [ 51.148376] WARNING: CPU: 0 PID: 299 at drivers/usb/dwc3/gadget.c:360 dwc3_send_gadget_ep_cmd+0x570/0x740 [dwc3]
> [ 51.148837] CPU: 0 PID: 299 Comm: irq/64-dwc3 Not tainted 5.11.11-librem5-00334-ge4c4ff3624e9 #218
> [ 51.148848] Hardware name: Purism Librem 5r4 (DT)
> [ 51.148854] pstate: 60000085 (nZCv daIf -PAN -UAO -TCO BTYPE=--)
> [ 51.148863] pc : dwc3_send_gadget_ep_cmd+0x570/0x740 [dwc3]
> [ 51.148894] lr : dwc3_send_gadget_ep_cmd+0x570/0x740 [dwc3]
> [ 51.148924] sp : ffff800011cb3ac0
> [ 51.148929] x29: ffff800011cb3ac0 x28: ffff0000032a7b00
> [ 51.148942] x27: ffff00000327da00 x26: 0000000000000000
> [ 51.148954] x25: 00000000ffffffea x24: 0000000000000006
> [ 51.148967] x23: ffff0000bee1c080 x22: ffff800011cb3b7c
> [ 51.148979] x21: 0000000000000406 x20: ffff0000bf170000
> [ 51.148992] x19: 0000000000000001 x18: 0000000000000000
> [ 51.149004] x17: 0000000000000000 x16: 0000000000000000
> [ 51.149016] x15: 0000000000000000 x14: ffff8000114512c0
> [ 51.149028] x13: 0000000000001698 x12: 0000000000000040
> [ 51.149040] x11: ffff80001151a6f8 x10: 00000000ffffe000
> [ 51.149052] x9 : ffff8000100b2b7c x8 : ffff80001146a6f8
> [ 51.149065] x7 : ffff80001151a6f8 x6 : 0000000000000000
> [ 51.149077] x5 : ffff0000bf939948 x4 : 0000000000000000
> [ 51.149089] x3 : 0000000000000027 x2 : 0000000000000000
> [ 51.149101] x1 : 0000000000000000 x0 : ffff0000049ae040
> [ 51.149114] Call trace:
> [ 51.149120] dwc3_send_gadget_ep_cmd+0x570/0x740 [dwc3]
> [ 51.149150] __dwc3_gadget_ep_enable+0x288/0x4fc [dwc3]
> [ 51.149179] dwc3_gadget_ep_enable+0x6c/0x15c [dwc3]
> [ 51.149209] usb_ep_enable+0x48/0x110 [udc_core]
> [ 51.149251] rndis_set_alt+0x138/0x1c0 [usb_f_rndis]
> [ 51.149276] composite_setup+0x674/0x194c [libcomposite]
> [ 51.149314] dwc3_ep0_interrupt+0x9c4/0xb9c [dwc3]
> [ 51.149344] dwc3_thread_interrupt+0x8bc/0xe74 [dwc3]
> [ 51.149374] irq_thread_fn+0x38/0xb0
> [ 51.149388] irq_thread+0x170/0x294
> [ 51.149397] kthread+0x164/0x16c
> [ 51.149407] ret_from_fork+0x10/0x34
> [ 51.149419] ---[ end trace 62c6cc2ebfb18047 ]---
>
> Linus' tree isn't affected. Revert the change.
What does this mean?
>
> Signed-off-by: Martin Kepplinger <martin.kepplinger@puri.sm>
>
> ---
What changed from v1? Always put that below the --- line.
And as this is a revert, is a "Fixes:" line also relevant?
thanks,
greg k-h
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] Revert "usb: dwc3: gadget: Prevent EP queuing while stopping transfers"
2021-04-01 11:55 ` [PATCH] Revert "usb: dwc3: gadget: Prevent EP queuing while stopping transfers" Martin Kepplinger
2021-04-01 13:04 ` Greg KH
@ 2021-04-01 18:09 ` Wesley Cheng
2021-04-02 9:27 ` Martin Kepplinger
1 sibling, 1 reply; 6+ messages in thread
From: Wesley Cheng @ 2021-04-01 18:09 UTC (permalink / raw)
To: Martin Kepplinger, gregkh, balbi; +Cc: linux-kernel, stable, linux-usb
On 4/1/2021 4:55 AM, Martin Kepplinger wrote:
> This reverts commit 9de499997c3737e0c0207beb03615b320cabe495.
>
> Signed-off-by: Martin Kepplinger <martin.kepplinger@puri.sm>
> ---
>
> I more or less blindly report:
> commit 9de499997c ("usb: dwc3: gadget: Prevent EP queuing while stopping
> transfers") results in the below error every time I connect the type-c
> connector to the dwc3, configured with serial and ethernet gadgets.
>
> fyi, I apply the following to dwc3 on this port:
> dr_mode = "otg";
> snps,dis_u3_susphy_quirk;
> hnp-disable;
> srp-disable;
> adp-disable;
> usb-role-switch;
>
> v5.12-rc5 does not have this error so I'm not sure whether it's
> more appropriate to add something to dwc3 than reverting. I hope usb
> people to know better and maybe even see the problem.
>
> thanks,
> martin
>
Hi Martin,
This has been fixed with the below:
https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git/commit/?h=usb-linus&id=5aef629704ad4d983ecf5c8a25840f16e45b6d59
Can you pull that in and give it a try?
Thanks
Wesley Cheng
>
>
>
> [ 51.148220] ------------[ cut here ]------------
> [ 51.148241] dwc3 38100000.usb: No resource for ep2in
> [ 51.148376] WARNING: CPU: 0 PID: 299 at drivers/usb/dwc3/gadget.c:360 dwc3_send_gadget_ep_cmd+0x570/0x740 [dwc3]
> [ 51.148431] Modules linked in: aes_ce_ccm rfcomm algif_hash algif_skcipher af_alg bnep qmi_wwan cdc_wdm usbnet mii option usb_wwan usbserial caam_jr caamhash_desc caamalg_desc crypto_engine mousedev redpine_sdio redpine_91x bluetooth uas usb_storage mac80211 st_lsm6dsx_spi aes_ce_blk crypto_simd crct10dif_ce cfg80211 ghash_ce sha2_ce sha1_ce bq25890_charger s5k3l6xx snd_soc_wm8962 hi846 vcnl4000 leds_lm3560 edt_ft5x06 ofpart industrialio_triggered_buffer tps6598x st_lsm6dsx_i2c st_lsm6dsx kfifo_buf gnss_mtk typec mxc_mipi_csi2_yav gnss_serial mx6s_capture gnss videobuf2_dma_contig videobuf2_memops spi_nor v4l2_fwnode videobuf2_v4l2 videobuf2_common snd_soc_gtm601 snd_soc_simple_card videodev mtd snd_soc_simple_card_utils mc snd_soc_fsl_sai imx_pcm_dma caam error snvs_pwrkey imx_sdma virt_dma snd_soc_core imx2_wdt snd_pcm_dmaengine snd_pcm watchdog snd_timer snd soundcore pwm_vibra rfkill_hks rfkill ledtrig_timer usb_f_acm u_serial usb_f_rndis g_multi usb_f_mass_storage u_ether
> [ 51.148759] libcomposite ledtrig_pattern fuse ip_tables x_tables ipv6 xhci_plat_hcd xhci_hcd usbcore dwc3 cdns_mhdp_imx ulpi cdns_mhdp_drmcore udc_core imx_dcss roles usb_common phy_fsl_imx8mq_usb clk_bd718x7
> [ 51.148837] CPU: 0 PID: 299 Comm: irq/64-dwc3 Not tainted 5.11.11-librem5-00334-ge4c4ff3624e9 #218
> [ 51.148848] Hardware name: Purism Librem 5r4 (DT)
> [ 51.148854] pstate: 60000085 (nZCv daIf -PAN -UAO -TCO BTYPE=--)
> [ 51.148863] pc : dwc3_send_gadget_ep_cmd+0x570/0x740 [dwc3]
> [ 51.148894] lr : dwc3_send_gadget_ep_cmd+0x570/0x740 [dwc3]
> [ 51.148924] sp : ffff800011cb3ac0
> [ 51.148929] x29: ffff800011cb3ac0 x28: ffff0000032a7b00
> [ 51.148942] x27: ffff00000327da00 x26: 0000000000000000
> [ 51.148954] x25: 00000000ffffffea x24: 0000000000000006
> [ 51.148967] x23: ffff0000bee1c080 x22: ffff800011cb3b7c
> [ 51.148979] x21: 0000000000000406 x20: ffff0000bf170000
> [ 51.148992] x19: 0000000000000001 x18: 0000000000000000
> [ 51.149004] x17: 0000000000000000 x16: 0000000000000000
> [ 51.149016] x15: 0000000000000000 x14: ffff8000114512c0
> [ 51.149028] x13: 0000000000001698 x12: 0000000000000040
> [ 51.149040] x11: ffff80001151a6f8 x10: 00000000ffffe000
> [ 51.149052] x9 : ffff8000100b2b7c x8 : ffff80001146a6f8
> [ 51.149065] x7 : ffff80001151a6f8 x6 : 0000000000000000
> [ 51.149077] x5 : ffff0000bf939948 x4 : 0000000000000000
> [ 51.149089] x3 : 0000000000000027 x2 : 0000000000000000
> [ 51.149101] x1 : 0000000000000000 x0 : ffff0000049ae040
> [ 51.149114] Call trace:
> [ 51.149120] dwc3_send_gadget_ep_cmd+0x570/0x740 [dwc3]
> [ 51.149150] __dwc3_gadget_ep_enable+0x288/0x4fc [dwc3]
> [ 51.149179] dwc3_gadget_ep_enable+0x6c/0x15c [dwc3]
> [ 51.149209] usb_ep_enable+0x48/0x110 [udc_core]
> [ 51.149251] rndis_set_alt+0x138/0x1c0 [usb_f_rndis]
> [ 51.149276] composite_setup+0x674/0x194c [libcomposite]
> [ 51.149314] dwc3_ep0_interrupt+0x9c4/0xb9c [dwc3]
> [ 51.149344] dwc3_thread_interrupt+0x8bc/0xe74 [dwc3]
> [ 51.149374] irq_thread_fn+0x38/0xb0
> [ 51.149388] irq_thread+0x170/0x294
> [ 51.149397] kthread+0x164/0x16c
> [ 51.149407] ret_from_fork+0x10/0x34
> [ 51.149419] ---[ end trace 62c6cc2ebfb18047 ]---
> [ 51.149436] ------------[ cut here ]------------
> [ 51.149440] dwc3 38100000.usb: No resource for ep1in
> [ 51.149507] WARNING: CPU: 0 PID: 299 at drivers/usb/dwc3/gadget.c:360 dwc3_send_gadget_ep_cmd+0x570/0x740 [dwc3]
> [ 51.149543] Modules linked in: aes_ce_ccm rfcomm algif_hash algif_skcipher af_alg bnep qmi_wwan cdc_wdm usbnet mii option usb_wwan usbserial caam_jr caamhash_desc caamalg_desc crypto_engine mousedev redpine_sdio redpine_91x bluetooth uas usb_storage mac80211 st_lsm6dsx_spi aes_ce_blk crypto_simd crct10dif_ce cfg80211 ghash_ce sha2_ce sha1_ce bq25890_charger s5k3l6xx snd_soc_wm8962 hi846 vcnl4000 leds_lm3560 edt_ft5x06 ofpart industrialio_triggered_buffer tps6598x st_lsm6dsx_i2c st_lsm6dsx kfifo_buf gnss_mtk typec mxc_mipi_csi2_yav gnss_serial mx6s_capture gnss videobuf2_dma_contig videobuf2_memops spi_nor v4l2_fwnode videobuf2_v4l2 videobuf2_common snd_soc_gtm601 snd_soc_simple_card videodev mtd snd_soc_simple_card_utils mc snd_soc_fsl_sai imx_pcm_dma caam error snvs_pwrkey imx_sdma virt_dma snd_soc_core imx2_wdt snd_pcm_dmaengine snd_pcm watchdog snd_timer snd soundcore pwm_vibra rfkill_hks rfkill ledtrig_timer usb_f_acm u_serial usb_f_rndis g_multi usb_f_mass_storage u_ether
> [ 51.149852] libcomposite ledtrig_pattern fuse ip_tables x_tables ipv6 xhci_plat_hcd xhci_hcd usbcore dwc3 cdns_mhdp_imx ulpi cdns_mhdp_drmcore udc_core imx_dcss roles usb_common phy_fsl_imx8mq_usb clk_bd718x7
> [ 51.149923] CPU: 0 PID: 299 Comm: irq/64-dwc3 Tainted: G W 5.11.11-librem5-00334-ge4c4ff3624e9 #218
> [ 51.149933] Hardware name: Purism Librem 5r4 (DT)
> [ 51.149937] pstate: 60000085 (nZCv daIf -PAN -UAO -TCO BTYPE=--)
> [ 51.149946] pc : dwc3_send_gadget_ep_cmd+0x570/0x740 [dwc3]
> [ 51.149977] lr : dwc3_send_gadget_ep_cmd+0x570/0x740 [dwc3]
> [ 51.150007] sp : ffff800011cb3a80
> [ 51.150011] x29: ffff800011cb3a80 x28: ffff0000032a7b00
> [ 51.150024] x27: ffff00000327da00 x26: 0000000000000000
> [ 51.150037] x25: 00000000ffffffea x24: 0000000000000006
> [ 51.150049] x23: ffff0000bee1c080 x22: ffff800011cb3b3c
> [ 51.150062] x21: 0000000000000406 x20: ffff0000bf033f00
> [ 51.150074] x19: 0000000000000001 x18: 0000000000000000
> [ 51.150086] x17: 0000000000000000 x16: 0000000000000000
> [ 51.150098] x15: 0000000000000000 x14: ffff8000114512c0
> [ 51.150111] x13: 0000000000001698 x12: 0000000000000040
> [ 51.150123] x11: ffff80001151a6f8 x10: 00000000ffffe000
> [ 51.150135] x9 : ffff8000100b2b7c x8 : ffff80001146a6f8
> [ 51.150147] x7 : ffff80001151a6f8 x6 : 0000000000000000
> [ 51.150159] x5 : ffff0000bf939948 x4 : 0000000000000000
> [ 51.150172] x3 : 0000000000000027 x2 : 0000000000000000
> [ 51.150183] x1 : 0000000000000000 x0 : ffff0000049ae040
> [ 51.150196] Call trace:
> [ 51.150200] dwc3_send_gadget_ep_cmd+0x570/0x740 [dwc3]
> [ 51.150231] __dwc3_gadget_ep_enable+0x288/0x4fc [dwc3]
> [ 51.150260] dwc3_gadget_ep_enable+0x6c/0x15c [dwc3]
> [ 51.150289] usb_ep_enable+0x48/0x110 [udc_core]
> [ 51.150322] gether_connect+0x3c/0x1f4 [u_ether]
> [ 51.150340] rndis_set_alt+0x74/0x1c0 [usb_f_rndis]
> [ 51.150361] composite_setup+0x674/0x194c [libcomposite]
> [ 51.150392] dwc3_ep0_interrupt+0x9c4/0xb9c [dwc3]
> [ 51.150423] dwc3_thread_interrupt+0x8bc/0xe74 [dwc3]
> [ 51.150452] irq_thread_fn+0x38/0xb0
> [ 51.150461] irq_thread+0x170/0x294
> [ 51.150469] kthread+0x164/0x16c
> [ 51.150478] ret_from_fork+0x10/0x34
> [ 51.150487] ---[ end trace 62c6cc2ebfb18048 ]---
>
>
> drivers/usb/dwc3/gadget.c | 11 ++++++-----
> 1 file changed, 6 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
> index 2a86ad4b12b3..ef8ecaf8655a 100644
> --- a/drivers/usb/dwc3/gadget.c
> +++ b/drivers/usb/dwc3/gadget.c
> @@ -783,6 +783,8 @@ static int __dwc3_gadget_ep_disable(struct dwc3_ep *dep)
>
> trace_dwc3_gadget_ep_disable(dep);
>
> + dwc3_remove_requests(dwc, dep);
> +
> /* make sure HW endpoint isn't stalled */
> if (dep->flags & DWC3_EP_STALL)
> __dwc3_gadget_ep_set_halt(dep, 0, false);
> @@ -801,8 +803,6 @@ static int __dwc3_gadget_ep_disable(struct dwc3_ep *dep)
> dep->endpoint.desc = NULL;
> }
>
> - dwc3_remove_requests(dwc, dep);
> -
> return 0;
> }
>
> @@ -1617,7 +1617,7 @@ static int __dwc3_gadget_ep_queue(struct dwc3_ep *dep, struct dwc3_request *req)
> {
> struct dwc3 *dwc = dep->dwc;
>
> - if (!dep->endpoint.desc || !dwc->pullups_connected || !dwc->connected) {
> + if (!dep->endpoint.desc || !dwc->pullups_connected) {
> dev_err(dwc->dev, "%s: can't queue to disabled endpoint\n",
> dep->name);
> return -ESHUTDOWN;
> @@ -2150,7 +2150,6 @@ static int dwc3_gadget_pullup(struct usb_gadget *g, int is_on)
> if (!is_on) {
> u32 count;
>
> - dwc->connected = false;
> /*
> * In the Synopsis DesignWare Cores USB3 Databook Rev. 3.30a
> * Section 4.1.8 Table 4-7, it states that for a device-initiated
> @@ -2175,6 +2174,7 @@ static int dwc3_gadget_pullup(struct usb_gadget *g, int is_on)
> dwc->ev_buf->lpos = (dwc->ev_buf->lpos + count) %
> dwc->ev_buf->length;
> }
> + dwc->connected = false;
> } else {
> __dwc3_gadget_start(dwc);
> }
> @@ -3267,6 +3267,8 @@ static void dwc3_gadget_reset_interrupt(struct dwc3 *dwc)
> {
> u32 reg;
>
> + dwc->connected = true;
> +
> /*
> * WORKAROUND: DWC3 revisions <1.88a have an issue which
> * would cause a missing Disconnect Event if there's a
> @@ -3306,7 +3308,6 @@ static void dwc3_gadget_reset_interrupt(struct dwc3 *dwc)
> * transfers."
> */
> dwc3_stop_active_transfers(dwc);
> - dwc->connected = true;
>
> reg = dwc3_readl(dwc->regs, DWC3_DCTL);
> reg &= ~DWC3_DCTL_TSTCTRL_MASK;
>
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] Revert "usb: dwc3: gadget: Prevent EP queuing while stopping transfers"
2021-04-01 18:09 ` [PATCH] " Wesley Cheng
@ 2021-04-02 9:27 ` Martin Kepplinger
0 siblings, 0 replies; 6+ messages in thread
From: Martin Kepplinger @ 2021-04-02 9:27 UTC (permalink / raw)
To: Wesley Cheng, gregkh, balbi; +Cc: linux-kernel, stable, linux-usb
Am Donnerstag, dem 01.04.2021 um 11:09 -0700 schrieb Wesley Cheng:
>
>
> On 4/1/2021 4:55 AM, Martin Kepplinger wrote:
> > This reverts commit 9de499997c3737e0c0207beb03615b320cabe495.
> >
> > Signed-off-by: Martin Kepplinger <martin.kepplinger@puri.sm>
> > ---
> >
> > I more or less blindly report:
> > commit 9de499997c ("usb: dwc3: gadget: Prevent EP queuing while
> > stopping
> > transfers") results in the below error every time I connect the
> > type-c
> > connector to the dwc3, configured with serial and ethernet gadgets.
> >
> > fyi, I apply the following to dwc3 on this port:
> > dr_mode =
> > "otg";
> > snps,dis_u3_susphy_quirk;
> >
> > hnp-
> > disable;
> > srp-
> > disable;
> > adp-
> > disable;
> > usb-role-switch;
> >
> > v5.12-rc5 does not have this error so I'm not sure whether it's
> > more appropriate to add something to dwc3 than reverting. I hope
> > usb
> > people to know better and maybe even see the problem.
> >
> > thanks,
> > martin
> >
> Hi Martin,
>
> This has been fixed with the below:
> https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git/commit/?h=usb-linus&id=5aef629704ad4d983ecf5c8a25840f16e45b6d59
>
> Can you pull that in and give it a try?
>
> Thanks
> Wesley Cheng
yes, that's a fix for my problem (and what I secretly had hoped to get
:). Thank you very much. In case it helps:
Tested-by: Martin Kepplinger <martin.kepplinger@puri.sm>
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2021-04-02 9:28 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20210322121932.478878424@linuxfoundation.org>
2021-04-01 11:55 ` [PATCH] Revert "usb: dwc3: gadget: Prevent EP queuing while stopping transfers" Martin Kepplinger
2021-04-01 13:04 ` Greg KH
2021-04-01 13:11 ` [PATCH v2] " Martin Kepplinger
2021-04-01 14:14 ` Greg KH
2021-04-01 18:09 ` [PATCH] " Wesley Cheng
2021-04-02 9:27 ` Martin Kepplinger
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).