Skip to content

Commit

Permalink
MLK-24475-1 usb: chipidea: udc: delete the WARN_ON for .pullup
Browse files Browse the repository at this point in the history
The UDC core calls .pullup unconditional during gadget loading
routine (see below dump), if the controller is in low power mode,
it will trigger WARN_ON. It is not easy to change common code
behavior easily, it deletes the WARN_ON now.

[   46.613319] Mass Storage Function, version: 2009/09/11
[   46.618503] LUN: removable file: (no medium)
[   46.662123] ------------[ cut here ]------------
[   46.666765] WARNING: CPU: 3 PID: 741 at drivers/usb/chipidea/udc.c:1720 ci_udc_pullup+0xd4/0xe0
[   46.675470] Modules linked in:
[   46.678534] CPU: 3 PID: 741 Comm: sh Not tainted 5.4.47-00053-gc4f85e73b4dc-dirty #277
[   46.686451] Hardware name: Freescale i.MX8QXP MEK (DT)
[   46.691597] pstate: 80000005 (Nzcv daif -PAN -UAO)
[   46.696391] pc : ci_udc_pullup+0xd4/0xe0
[   46.700320] lr : usb_gadget_disconnect+0x38/0x140
[   46.705024] sp : ffff800012763be0
[   46.708333] x29: ffff800012763be0 x28: ffff000837cd0000
[   46.713649] x27: 0000000000000000 x26: ffff000836dede00
[   46.718966] x25: ffff000837c94000 x24: ffff000837502500
[   46.724282] x23: ffff00083bf98498 x22: ffff0008368a6348
[   46.729599] x21: 0000000000000000 x20: 0000000000000000
[   46.734916] x19: ffff00083bf98498 x18: 0000000000000001
[   46.740233] x17: 0000000000000000 x16: 0000000000000000
[   46.745550] x15: ffff000837cd0470 x14: ffffffffffffffff
[   46.750866] x13: 0000000000000000 x12: ffff8000123b6000
[   46.756183] x11: ffff800012157000 x10: ffff8000123b6328
[   46.761500] x9 : ffff800012242000 x8 : ffff800012242000
[   46.766817] x7 : ffff800012242000 x6 : 0000000000010001
[   46.772133] x5 : ffff8000129b6040 x4 : 0000000000000001
[   46.777450] x3 : 0000000000000040 x2 : ffff800010cc5500
[   46.782767] x1 : ffff00083bf98080 x0 : 0000000000000001
[   46.788086] Call trace:
[   46.790531]  ci_udc_pullup+0xd4/0xe0
[   46.794109]  usb_gadget_disconnect+0x38/0x140
[   46.798470]  usb_udc_vbus_handler+0x44/0x50
[   46.802657]  ci_udc_start+0xbc/0xe0
[   46.806149]  udc_bind_to_driver+0x84/0x140
[   46.810248]  usb_gadget_probe_driver+0xa4/0x158
[   46.814785]  gadget_dev_desc_UDC_store+0xd0/0x118
[   46.819496]  configfs_write_file+0x148/0x1d8
[   46.823769]  __vfs_write+0x48/0x90
[   46.827173]  vfs_write+0xe4/0x1c8
[   46.830493]  ksys_write+0x78/0x100
[   46.833898]  __arm64_sys_write+0x24/0x30
[   46.837825]  el0_svc_common.constprop.0+0x74/0x168
[   46.842617]  el0_svc_handler+0x34/0xa0
[   46.846373]  el0_svc+0x8/0xc
[   46.849255] ---[ end trace 4f72051fa5255b2d ]---
[   46.854090] ------------[ cut here ]------------
[   46.858732] WARNING: CPU: 3 PID: 741 at drivers/usb/chipidea/udc.c:1720 ci_udc_pullup+0xd4/0xe0
[   46.867438] Modules linked in:
[   46.870502] CPU: 3 PID: 741 Comm: sh Tainted: G        W         5.4.47-00053-gc4f85e73b4dc-dirty #277
[   46.879808] Hardware name: Freescale i.MX8QXP MEK (DT)
[   46.884946] pstate: 80000005 (Nzcv daif -PAN -UAO)
[   46.889742] pc : ci_udc_pullup+0xd4/0xe0
[   46.893669] lr : usb_gadget_disconnect+0x38/0x140
[   46.898373] sp : ffff800012763c40
[   46.901682] x29: ffff800012763c40 x28: ffff000837cd0000
[   46.906998] x27: 0000000000000000 x26: ffff000836dede00
[   46.912315] x25: ffff000837c94000 x24: ffff000837502500
[   46.917632] x23: ffff000836c04280 x22: ffff80001223edf0
[   46.922948] x21: 0000000000000000 x20: 0000000000000000
[   46.928265] x19: ffff00083bf98498 x18: 0000000000000001
[   46.933582] x17: 0000000000000000 x16: 0000000000000000
[   46.938899] x15: ffff000837cd0470 x14: ffffffffffffffff
[   46.944215] x13: 0000000000000000 x12: ffff8000123b6000
[   46.949532] x11: ffff800012157000 x10: ffff8000123b6328
[   46.954849] x9 : ffff800012242000 x8 : ffff800012242000
[   46.960166] x7 : ffff800012242000 x6 : 0000000000010001
[   46.965482] x5 : ffff8000129b6040 x4 : 0000000000000001
[   46.970799] x3 : 0000000000000000 x2 : ffff800010cc5500
[   46.976116] x1 : ffff00083bf98080 x0 : 0000000000000001
[   46.981435] Call trace:
[   46.983880]  ci_udc_pullup+0xd4/0xe0
[   46.987456]  usb_gadget_disconnect+0x38/0x140
[   46.991819]  udc_bind_to_driver+0x11c/0x140
[   46.996004]  usb_gadget_probe_driver+0xa4/0x158
[   47.000541]  gadget_dev_desc_UDC_store+0xd0/0x118
[   47.005252]  configfs_write_file+0x148/0x1d8
[   47.009526]  __vfs_write+0x48/0x90
[   47.012930]  vfs_write+0xe4/0x1c8
[   47.016249]  ksys_write+0x78/0x100
[   47.019654]  __arm64_sys_write+0x24/0x30
[   47.023582]  el0_svc_common.constprop.0+0x74/0x168
[   47.028375]  el0_svc_handler+0x34/0xa0
[   47.032129]  el0_svc+0x8/0xc
[   47.035011] ---[ end trace 4f72051fa5255b2e ]---

Reviewed-by: Jun Li <jun.li@nxp.com>
Signed-off-by: Peter Chen <peter.chen@nxp.com>
  • Loading branch information
Peter Chen committed Aug 10, 2020
1 parent c4f85e7 commit 2c9b4da
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion drivers/usb/chipidea/udc.c
Original file line number Diff line number Diff line change
Expand Up @@ -1717,7 +1717,7 @@ static int ci_udc_pullup(struct usb_gadget *_gadget, int is_on)
if (ci_otg_is_fsm_mode(ci) || ci->role == CI_ROLE_HOST)
return 0;

if (WARN_ON(ci->in_lpm))
if (ci->in_lpm)
return 0;

if (is_on)
Expand Down

0 comments on commit 2c9b4da

Please sign in to comment.