Skip to content

Skip usb core phy changes in xhci-plat - #1861

Merged
Pratham Pratap (ppratap-liveroot) merged 2 commits into
qualcomm-linux:tech/bus/usb/dwcfrom
Kriskura176767:skip-phy-changes
Sep 21, 2026
Merged

Pratham Pratap (ppratap-liveroot) merged 2 commits into
qualcomm-linux:tech/bus/usb/dwcfrom
Kriskura176767:skip-phy-changes

Conversation

@Kriskura176767

@Kriskura176767 Kriskura176767 commented Sep 21, 2026

Copy link
Copy Markdown
Contributor

This reverts commit be7b1c6.
Commit be7b1c6 ("usb: dwc3: qcom: Add support to skip phy management by USB core") is causing a regression on qualcomm platforms.

While at it, add a new implementation for the same:
https://lore.kernel.org/all/20260914-xhci-skip-phy-init-v1-1-9c46b31a5a39@oss.qualcomm.com/#t

CRs-Fixed: 4680193

… by USB core"

This reverts commit be7b1c6.

Commit be7b1c6 ("usb: dwc3: qcom: Add support to skip phy management by USB core")
is causing a regression on qualcomm platforms.

During role switch it tends to cause the following crash:

[    5.620951] refcount_t: underflow; use-after-free.
[    5.621114] Call trace:
[    5.621115]  refcount_warn_saturate+0xd8/0x140 (P)
[    5.621117]  kobject_put+0x11c/0x230
[    5.621121]  software_node_notify_remove+0xdc/0xf8
[    5.621124]  device_del+0x1dc/0x328
[    5.621126]  usb_disconnect+0x1d8/0x348
[    5.621129]  usb_remove_hcd+0x100/0x2a8
[    5.621131]  xhci_plat_remove+0x8c/0x170
[    5.621134]  platform_remove+0x28/0x40
[    5.621135]  device_release_driver_internal+0x174/0x290
[    5.621138]  device_release_driver+0x20/0x38
[    5.621140]  bus_remove_device+0x19c/0x1f8
[    5.621142]  device_del+0x1c4/0x328
[    5.621143]  platform_device_unregister+0x34/0xc0
[    5.621145]  dwc3_host_exit+0x50/0x70
[    5.621146]  __dwc3_set_mode+0xa4/0x378

[    5.644535] Unable to handle kernel paging request at virtual address
[    5.644657] Workqueue: events_freezable __dwc3_set_mode
[    5.644664] pc : __pi_strcmp+0x9c/0x140
[    5.644668] lr : software_node_property_present+0x60/0x98
[    5.644697] Call trace:
[    5.644698]  __pi_strcmp+0x9c/0x140 (P)
[    5.644700]  device_property_present+0x9c/0xc0
[    5.644703]  dwc3_gadget_init+0x230/0x7b0
[    5.644704]  __dwc3_set_mode+0x314/0x378
[    5.644707]  process_scheduled_works+0x1b8/0x538
[    5.644710]  worker_thread+0x1fc/0x2f8
[    5.644711]  kthread+0x114/0x148
[    5.644713]  ret_from_fork+0x10/0x20

Revert skipping of usb core phy management for Qualcomm platforms to avoid
the above issues.

Reported-by: Val Packett <val@packett.cool>
Closes: https://lore.kernel.org/all/f9926203-ee69-4e18-b6c7-95261ba10807@packett.cool/
Signed-off-by: Krishna Kurapati <krishna.kurapati@oss.qualcomm.com>
Acked-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
Tested-by: Shawn Guo <shengchao.guo@oss.qualcomm.com>
Link: https://patch.msgid.link/20260909-xhci-fixes-revert-v1-1-7cc97fa0f307@oss.qualcomm.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
…core

DWC3 driver does manage phys itself sufficiently for Qualcomm platforms.
If xhci-skip-phy-init is not set, the HCD core does a phy_init and phy_
exit is done only when roothub is being destroyed. Due to this, during
system suspend in host mode, although phy_exit is done by DWC3 core, the
init_count on phy is never down to zero since HCD core also did an init.
consequently causing phy's exit routine to not be called. Hence, add
support to skip phy management by USB core.

Some Exynos platforms still do rely on USB core for phy_calibrate calls,
hence disable USB core management for Qualcomm platforms only.

Link: https://lore.kernel.org/all/20260914-xhci-skip-phy-init-v1-1-9c46b31a5a39@oss.qualcomm.com/#t
Signed-off-by: Krishna Kurapati <krishna.kurapati@oss.qualcomm.com>
@qcomlnxci
qcomlnxci requested review from a team, Pratham Pratap (ppratap-liveroot) and wcheng-eng and removed request for a team September 21, 2026 05:08

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@ppratap-liveroot
Pratham Pratap (ppratap-liveroot) merged commit 590cde5 into qualcomm-linux:tech/bus/usb/dwc Sep 21, 2026
8 of 9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants