From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A0721606A319 for ; Wed, 21 Oct 2026 18:35:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key, unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=nZCYsj0u; dkim=fail reason="signature verification failed" (2048-bit key, unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=Few5V957 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Reply-To:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:Date:References: In-Reply-To:Cc:To:Subject:From:Message-ID:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=EVKL2FnP4ocJ4R7FVjeYSL4wKMZVSgDKmLveAP2Vrpo=; b=nZCYsj0usq9XqT +fwzweA8wVeBxAFGv7hlePtNVW3n16h1vaf5qOJQwg5Xvot2PUvfzI6iN7PxdTUZftiFB40i68WDp XsU5Kr1vqBgn0rWxOheML8KrPRKBFD3H0TTlhM9Qx/hqoFPvslHSGzuKN6HXqMG3csaAGtrNjCQVJ PIwmHUgBsy8rOnCceUyXV+PjtpFO/N+qxKuLXtvg38O+s9pyQmhGhAMgg/94DziwKqSv//ANjzKja YhnlNEKWEFYzjeo6AWnwIcvq7tqH7ZB4ImMSuzYUIvW9lemmdYwGukRyhpRsGjRFMTMriVY8eQUNM 0UxZ66fl1CclJrKMuQIA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1xJb9V-0000000Cf3g-1d52; Wed, 21 Oct 2026 18:35:05 +0000 Received: from sea.source.kernel.org ([172.234.252.31]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1xJb9T-0000000Cf34-1FIN for linux-phy@lists.infradead.org; Wed, 21 Oct 2026 18:35:03 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id 9EBFE40603; Wed, 21 Oct 2026 18:35:02 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 28E141F000C1; Wed, 21 Oct 2026 18:35:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1792607702; bh=5bSXgYHag6XhfKBLXHCQ97tdahL4BUPMsc+StpA2gEw=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=Few5V957kHeZ8D/fUuKAIVEsl0/M9Rq0QGGQU9M5rNsWkDV9m4Q7JOcvpILFsclU+ 1ksgkLM6+BWOFg2uZpMmXRzvOQihjKiOWY5o6DMXBbb+U/hhLJhsD81gySfNwf1UNy 4QwRsUrSSyZ4sptlF/eThDBDnTsSgkpT9fQ72lQvn7U2boZZwqjrlPFazDFGRrJR9i oC+WMa5MkdLHrE5RFrfbs69rOSOBwRhMsHYroq1daGKzmG00dDhHshmLAOS4vdUdP1 wh3ffoLUXgey5ANjxHek+pFAcGZXXwfFLgUKsxZJu5tB8WPsxPvjJwETo2OoA86Nza 88FCLhruUGLxA== Message-ID: From: sashiko-bot@kernel.org Subject: Re: [PATCH v18 5/7] usb: dwc3: rockchip: add USBDP PHY reset quirk To: "Sebastian Reichel" Cc: linux-usb@vger.kernel.org, linux-phy@lists.infradead.org, vkoul@kernel.org, neil.armstrong@linaro.org, olteanv@gmail.com In-Reply-To: <20261021-b4-rockchip-dwc3-rockchip-glue-v18-5-60000d03fca2@collabora.com> References: <20261021-b4-rockchip-dwc3-rockchip-glue-v18-0-60000d03fca2@collabora.com> <20261021-b4-rockchip-dwc3-rockchip-glue-v18-5-60000d03fca2@collabora.com> Date: Wed, 21 Oct 2026 18:35:01 +0000 X-BeenThere: linux-phy@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux Phy Mailing list List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: sashiko-reviews@lists.linux.dev X-Archived-By: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-phy" X-Spam-Status: No, score=-9.2 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=4.0.1 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on aws-us-west-2-korg-listserv-alma10-1 VGhhbmsgeW91IGZvciB5b3VyIGNvbnRyaWJ1dGlvbiEgU2FzaGlrbyBBSSByZXZpZXcgZm91bmQg MyBwb3RlbnRpYWwgaXNzdWUocykgdG8gY29uc2lkZXI6Ci0gW0hpZ2hdIHVzYjogZHdjMzogcm9j a2NoaXA6IGR3YzNfcm9ja2NoaXBfcGh5X3ByZV9yZXNldCgpIHNraXBzIFJQTV9SRVNVTUlORyBz dGF0ZQotIFtIaWdoXSB1c2I6IGR3YzM6IHJvY2tjaGlwOiB1bnN5bmNocm9uaXplZCBydW50aW1l IFBNIGluIGR3YzNfcm9ja2NoaXBfcGh5X3Jlc2V0KCkKLSBbTWVkaXVtXSB1c2I6IGR3YzM6IHJv Y2tjaGlwOiByYWNlIGJldHdlZW4gUEhZIHJlc2V0IHF1aXJrIGFuZCBfX2R3YzNfc2V0X21vZGUo KQotLQoKY29tbWl0IDE3NTEyOGRkMGJlMjFjNzEyYTk1MTM3N2E0ZmVlMGZlNDk2YzRjZjcKQXV0 aG9yOiBTZWJhc3RpYW4gUmVpY2hlbCA8c2ViYXN0aWFuLnJlaWNoZWxAY29sbGFib3JhLmNvbT4K CnVzYjogZHdjMzogcm9ja2NoaXA6IGFkZCBVU0JEUCBQSFkgcmVzZXQgcXVpcmsKClRoaXMgY29t bWl0IGFkZHMgYSByZXNldCBoYW5kbGVyIGZvciB0aGUgUm9ja2NoaXAgVVNCRFAgUEhZIGluIHRo ZSBSb2NrY2hpcApEV0MzIGdsdWUgZHJpdmVyIHRvIGFzc2VydCBhbmQgZGVhc3NlcnQgRFdDM19H VVNCM1BJUEVDVExfUEhZU09GVFJTVCBhcm91bmQKZXh0ZXJuYWwgUEhZIHJlc2V0cywgcHJldmVu dGluZyBEV0MzIFBJUEUgdHJhZmZpYyBmcm9tIGludGVyZmVyaW5nIHdpdGggUEhZClBMTCBsb2Nr aW5nLiBJdCBhbHNvIGV4cG9ydHMgdGhlIGR3YzNfcmVhZGwgYW5kIGR3YzNfd3JpdGVsIHRyYWNl cG9pbnQKc3ltYm9scyBmb3IgdXNlIGJ5IHRoZSBnbHVlIGRyaXZlci4KCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvdXNiL2R3YzMvZHdjMy1yb2NrY2hpcC5jIGIvZHJpdmVycy91c2IvZHdjMy9kd2Mz LXJvY2tjaGlwLmMKPiBpbmRleCA0MTI5YWVmZDZhOGIwLi43NWU2NDdlMDRjYzUyIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvdXNiL2R3YzMvZHdjMy1yb2NrY2hpcC5jCj4gKysrIGIvZHJpdmVycy91 c2IvZHdjMy9kd2MzLXJvY2tjaGlwLmMKPiBAQCAtMiwxMSArMiwxMDUgQEAKPiAgLyogQ29weXJp Z2h0IChjKSAyMDI2LCBDb2xsYWJvcmEgTHRkLiAqLwo+ICAjaW5jbHVkZSA8bGludXgvbW9kdWxl Lmg+Cj4gICNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KPiArI2luY2x1ZGUgPGxp bnV4L3BoeS9yb2NrY2hpcC11c2JkcC5oPgo+ICAjaW5jbHVkZSA8bGludXgvcG1fcnVudGltZS5o Pgo+ICAjaW5jbHVkZSAiZ2x1ZS5oIgo+ICsjaW5jbHVkZSAiaW8uaCIKPiAgCj4gIHN0cnVjdCBk d2MzX3JvY2tjaGlwIHsKPiAgCXN0cnVjdCBkd2MzCQlkd2M7Cj4gKwl1OAkJCXBoeV9yZXNldF9h Y3RpdmU7Cj4gK307Cj4gKwo+ICtzdGF0aWMgdm9pZCBkd2MzX3JvY2tjaGlwX3BoeV9wcmVfcmVz ZXQoc3RydWN0IGR3YzNfcm9ja2NoaXAgKmR3Y19yaywgaW50IHBvcnQpCj4gK3sKPiArCXN0cnVj dCBkd2MzICpkd2MgPSAmZHdjX3JrLT5kd2M7Cj4gKwl1MzIgcmVnOwo+ICsKPiArCS8qCj4gKwkg KiBJZiB0aGUgZGV2aWNlIGlzIHJ1bnRpbWUgc3VzcGVuZGVkLCB0aGVyZSBpcyBub3RoaW5nIHRv IGRvIGFuZCBSUE0KPiArCSAqIHJlc3VtZSB3aWxsIGRvIHRoZSBuZWNlc3NhcnkgdGhpbmdzLiBU aGVyZSBpcyBubyBuZWVkIGZvciBhIFJQTQo+ICsJICogcmVmZXJlbmNlIGVpdGhlciwgc2luY2Ug RFdDMyBydW50aW1lIHN1c3BlbmQvcmVzdW1lIHdpbGwgY2FsbCBwaHkKPiArCSAqIGluaXQvZXhp dCBhbmQgdGhhdCBpcyBzeW5jaHJvbml6ZWQgYWdhaW5zdCBvbmdvaW5nIHJlc2V0cy4KPiArCSAq Lwo+ICsJaWYgKCFwbV9ydW50aW1lX2FjdGl2ZShkd2MtPmRldikpCj4gKwkJcmV0dXJuOwoKW1Nl dmVyaXR5OiBIaWdoXQpEb2VzIGNoZWNraW5nIHBtX3J1bnRpbWVfYWN0aXZlKGR3Yy0+ZGV2KSBo ZXJlIG1pc3MgdGhlIGNhc2Ugd2hlcmUgRFdDMyBpcyBpbgp0aGUgbWlkZGxlIG9mIHJ1bnRpbWUg cmVzdW1lIG9yIHJ1bnRpbWUgc3VzcGVuZD8KCkluIGRyaXZlcnMvYmFzZS9wb3dlci9ydW50aW1l LmM6cnBtX3Jlc3VtZSgpLCB0aGUgUE0gY29yZSBzZXRzCmRldi0+cG93ZXIucnVudGltZV9zdGF0 dXMgdG8gUlBNX1JFU1VNSU5HIGJlZm9yZSBpbnZva2luZyB0aGUgZHJpdmVyJ3MKcnVudGltZV9y ZXN1bWUgY2FsbGJhY2ssIGFuZCBvbmx5IHVwZGF0ZXMgaXQgdG8gUlBNX0FDVElWRSBhZnRlciB0 aGUgY2FsbGJhY2sKcmV0dXJuczoKCmRyaXZlcnMvYmFzZS9wb3dlci9ydW50aW1lLmM6cnBtX3Jl c3VtZSgpIHsKCS4uLgoJX191cGRhdGVfcnVudGltZV9zdGF0dXMoZGV2LCBSUE1fUkVTVU1JTkcp OwoKCWNhbGxiYWNrID0gUlBNX0dFVF9DQUxMQkFDSyhkZXYsIHJ1bnRpbWVfcmVzdW1lKTsKCglk ZXZfcG1fZGlzYWJsZV93YWtlX2lycV9jaGVjayhkZXYsIGZhbHNlKTsKCXJldHZhbCA9IHJwbV9j YWxsYmFjayhjYWxsYmFjaywgZGV2KTsKCS4uLgp9CgpNZWFud2hpbGUsIGluY2x1ZGUvbGludXgv cG1fcnVudGltZS5oOnBtX3J1bnRpbWVfYWN0aXZlKCkgb25seSByZXR1cm5zIHRydWUKd2hlbiBy dW50aW1lX3N0YXR1cyBpcyBSUE1fQUNUSVZFIChvciBydW50aW1lIFBNIGlzIGRpc2FibGVkKToK CnN0YXRpYyBpbmxpbmUgYm9vbCBwbV9ydW50aW1lX2FjdGl2ZShzdHJ1Y3QgZGV2aWNlICpkZXYp CnsKCXJldHVybiBkZXYtPnBvd2VyLnJ1bnRpbWVfc3RhdHVzID09IFJQTV9BQ1RJVkUKCQl8fCBk ZXYtPnBvd2VyLmRpc2FibGVfZGVwdGg7Cn0KCkR1cmluZyBydW50aW1lIHJlc3VtZSBpbiBEV0Mz X0dDVExfUFJUQ0FQX0RFVklDRSBtb2RlLCB0aGUgY2FsbCBjaGFpbiBpczoKCmR3YzNfcm9ja2No aXBfcnVudGltZV9yZXN1bWUoKQogIC0+IGR3YzNfcnVudGltZV9yZXN1bWUoKQogICAgLT4gZHdj M19yZXN1bWVfY29tbW9uKCkKICAgICAgLT4gZHdjM19jb3JlX2luaXRfZm9yX3Jlc3VtZSgpCiAg ICAgICAgLT4gcmVzZXRfY29udHJvbF9kZWFzc2VydChkd2MtPnJlc2V0KQogICAgICAgIC0+IGR3 YzNfY2xrX2VuYWJsZShkd2MpCiAgICAgICAgLT4gZHdjM19jb3JlX2luaXQoZHdjKQogICAgICAg ICAgLT4gZHdjM19waHlfc2V0dXAoZHdjKQogICAgICAgICAgLT4gZHdjM19waHlfaW5pdChkd2Mp CiAgICAgICAgICAgIC0+IHBoeV9pbml0KCkKICAgICAgICAgICAgICAtPiBya191ZHBoeV91c2Iz X3BoeV9pbml0KCkKICAgICAgICAgICAgICAgIC0+IHJrX3VkcGh5X3Bvd2VyX29uKCkKICAgICAg ICAgICAgICAgICAgLT4gcmtfdWRwaHlfcnVuX3Jlc2V0X2hhbmRsZXIodWRwaHksIHRydWUpCiAg ICAgICAgICAgICAgICAgICAgLT4gZHdjM19yb2NrY2hpcF9waHlfcHJlX3Jlc2V0KCkKCkF0IHRo YXQgcG9pbnQsIERXQzMgcmVzZXQgaGFzIGJlZW4gZGVhc3NlcnRlZCwgY2xvY2tzIGFyZSBlbmFi bGVkLCBhbmQKZHdjM19waHlfc2V0dXAoKSBoYXMgY29uZmlndXJlZCBEV0MzX0dVU0IzUElQRUNU TCgwKSwgYnV0CmRldi0+cG93ZXIucnVudGltZV9zdGF0dXMgaXMgc3RpbGwgUlBNX1JFU1VNSU5H LiBXaGVuIHJrX3VkcGh5X3Bvd2VyX29uKCkKcnVucyB0aGUgcmVzZXQgaGFuZGxlciAoYmVjYXVz ZSB1ZHBoeS0+c3RhdHVzID09IFVEUEhZX01PREVfTk9ORSBvcgp1ZHBoeS0+cGh5X25lZWRzX3Jl aW5pdCBpcyB0cnVlIGFmdGVyIGEgVVNCLUMgcmVjb25uZWN0IG9yIG9yaWVudGF0aW9uCmNoYW5n ZSksIHdvbid0IGR3YzNfcm9ja2NoaXBfcGh5X3ByZV9yZXNldCgpIHNlZSAhcG1fcnVudGltZV9h Y3RpdmUoZHdjLT5kZXYpCmFuZCByZXR1cm4gZWFybHkgd2l0aG91dCBhc3NlcnRpbmcgRFdDM19H VVNCM1BJUEVDVExfUEhZU09GVFJTVCwgY2F1c2luZwpya191ZHBoeV9zdGF0dXNfY2hlY2soKSB0 byBmYWlsIExDUExMIGxvY2sgYW5kIGZhaWxpbmcgZHdjM19ydW50aW1lX3Jlc3VtZSgpCihhcyB3 ZWxsIGFzIHNraXBwaW5nIHRoZSBWQlVTIG5vdGlmaWNhdGlvbiBpbiB0aGUgZm9sbG93LXVwIGNv bW1pdCAidXNiOgpkd2MzOiByb2NrY2hpcDogZml4IFVTQi1DIHJlY29ubmVjdCBpbiBnYWRnZXQg bW9kZSIpPwoKU2ltaWxhcmx5LCBkdXJpbmcgcnVudGltZSBzdXNwZW5kLCBycG1fc3VzcGVuZCgp IHNldHMgcnVudGltZV9zdGF0dXMgdG8KUlBNX1NVU1BFTkRJTkcgYmVmb3JlIGludm9raW5nIHRo ZSBkcml2ZXIgY2FsbGJhY2suIFdoaWxlCmR3YzNfc3VzcGVuZF9jb21tb24oKSBpcyBleGVjdXRp bmcgZHdjM19nYWRnZXRfc3VzcGVuZCgpLCBzeW5jaHJvbml6ZV9pcnEoKSwKb3Igd2FpdGluZyBv biB1ZHBoeS0+bXV0ZXggaW4gZHdjM19waHlfZXhpdCgpIGJlZm9yZSBjbG9ja3MgYXJlIGRpc2Fi bGVkIGFuZApyZXNldCBpcyBhc3NlcnRlZCwgd291bGRuJ3QgYSBjb25jdXJyZW50IFBIWSByZXNl dCB2aWEKcmtfdWRwaHlfZHBfcGh5X3Bvd2VyX29uKCkgYWxzbyBzZWUgIXBtX3J1bnRpbWVfYWN0 aXZlKGR3Yy0+ZGV2KSBhbmQgc2tpcAphc3NlcnRpbmcgRFdDM19HVVNCM1BJUEVDVExfUEhZU09G VFJTVCB3aGlsZSBEV0MzIGlzIHN0aWxsIHJ1bm5pbmc/Cgo+ICsKPiArCS8qCj4gKwkgKiBBc3Nl cnQgVVNCMyBQSFkgc29mdCByZXNldCB3aXRoaW4gRFdDMyBiZWZvcmUgdGhlIGV4dGVybmFsCj4g KwkgKiBQSFkgcmVzZXRzLiBUaGlzIGRpc2Nvbm5lY3RzIHRoZSBQSVBFIGludGVyZmFjZSwgcHJl dmVudGluZwo+ICsJICogdGhlIERXQzMgZnJvbSBpbnRlcmZlcmluZyB3aXRoIFBIWSByZWluaXRp YWxpemF0aW9uIGFuZAo+ICsJICogYXZvaWRpbmcgTENQTEwgbG9jayBmYWlsdXJlcy4KPiArCSAq Lwo+ICsJc2NvcGVkX2d1YXJkKHNwaW5sb2NrX2lycXNhdmUsICZkd2MtPmxvY2spIHsKPiArCQlk d2NfcmstPnBoeV9yZXNldF9hY3RpdmUgfD0gQklUKHBvcnQpOwo+ICsJCXJlZyA9IGR3YzNfcmVh ZGwoZHdjLCBEV0MzX0dVU0IzUElQRUNUTChwb3J0KSk7Cj4gKwkJcmVnIHw9IERXQzNfR1VTQjNQ SVBFQ1RMX1BIWVNPRlRSU1Q7Cj4gKwkJZHdjM193cml0ZWwoZHdjLCBEV0MzX0dVU0IzUElQRUNU TChwb3J0KSwgcmVnKTsKPiArCX0KPiArfQoKW1NldmVyaXR5OiBNZWRpdW1dCkNhbiB0aGUgUEhZ IHJlc2V0IGNhbGxiYWNrcyByYWNlIHdpdGggRFdDMyByb2xlIHN3aXRjaGluZyBpbgpfX2R3YzNf c2V0X21vZGUoKT8KCldoZW4gYSBVU0ItQyBkZXZpY2Ugd2l0aCBEaXNwbGF5UG9ydCBBbHRNb2Rl IGlzIHBsdWdnZWQgaW4sIHVucGx1Z2dlZCwgb3IKdW5kZXJnb2VzIGEgcm9sZSBzd2FwLCB0Y3Bt X211eF9zZXQoKSB1cGRhdGVzIHRoZSBtdXgvb3JpZW50YXRpb24gc3RhdGUKKHNldHRpbmcgdWRw aHktPnBoeV9uZWVkc19yZWluaXQgPSB0cnVlIGluIHJrX3VkcGh5X29yaWVuX3N3X3NldCgpIG9y CnJrX3VkcGh5X3R5cGVjX211eF9zZXQoKSkgYW5kIGNhbGxzIHVzYl9yb2xlX3N3aXRjaF9zZXRf cm9sZSgpIC0+CmR3YzNfdXNiX3JvbGVfc3dpdGNoX3NldCgpIC0+IGR3YzNfc2V0X21vZGUoKSwg cXVldWluZyBfX2R3YzNfc2V0X21vZGUoKSBvbgpzeXN0ZW1fZnJlZXphYmxlX3dxLiBDb25jdXJy ZW50bHksIERQIEhQRC9saW5rIGVuYWJsZW1lbnQgaW52b2tlcwpwaHlfcG93ZXJfb24oZHAtPnBo eSkgLT4gcmtfdWRwaHlfZHBfcGh5X3Bvd2VyX29uKCkgLT4gcmtfdWRwaHlfcG93ZXJfb24oKQp1 bmRlciB1ZHBoeS0+bXV0ZXguCgpGaXJzdCwgX19kd2MzX3NldF9tb2RlKCkgY2FsbHMgZHdjM19o b3N0X2V4aXQoKSwgZHdjM19nYWRnZXRfZXhpdCgpLCBhbmQKZHdjM19ob3N0X2luaXQoKSAtPiBk d2MzX3hoY2lfcGxhdF9zdGFydCgpLCBhbGwgb2Ygd2hpY2ggY2FsbApkd2MzX2VuYWJsZV9zdXNw aHkoKSB3aXRob3V0IGhvbGRpbmcgZHdjLT5sb2NrOgoKZHJpdmVycy91c2IvZHdjMy9jb3JlLmM6 ZHdjM19lbmFibGVfc3VzcGh5KCkgewoJLi4uCglmb3IgKGkgPSAwOyBpIDwgZHdjLT5udW1fdXNi M19wb3J0czsgaSsrKSB7CgkJcmVnID0gZHdjM19yZWFkbChkd2MsIERXQzNfR1VTQjNQSVBFQ1RM KGkpKTsKCQlpZiAoZW5hYmxlICYmICFkd2MtPmRpc191M19zdXNwaHlfcXVpcmspCgkJCXJlZyB8 PSBEV0MzX0dVU0IzUElQRUNUTF9TVVNQSFk7CgkJZWxzZQoJCQlyZWcgJj0gfkRXQzNfR1VTQjNQ SVBFQ1RMX1NVU1BIWTsKCgkJZHdjM193cml0ZWwoZHdjLCBEV0MzX0dVU0IzUElQRUNUTChpKSwg cmVnKTsKCX0KfQoKQ291bGQgYW4gdW5sb2NrZWQgcmVhZC1tb2RpZnktd3JpdGUgaW4gZHdjM19l bmFibGVfc3VzcGh5KCkgaW50ZXJsZWF2ZSB3aXRoCmR3YzNfcm9ja2NoaXBfcGh5X3ByZV9yZXNl dCgpIG9yIGR3YzNfcm9ja2NoaXBfcGh5X3Bvc3RfcmVzZXQoKSBhbmQgY2xlYXIKRFdDM19HVVNC M1BJUEVDVExfUEhZU09GVFJTVCBkdXJpbmcgdGhlIFBIWSByZXNldCBvciByZS1hc3NlcnQgaXQg YWZ0ZXIKZHdjM19yb2NrY2hpcF9waHlfcG9zdF9yZXNldCgpIGNsZWFycyBpdD8KClNlY29uZCwg YmV0d2VlbiBkd2MzX3JvY2tjaGlwX3BoeV9wcmVfcmVzZXQoKSBhbmQKZHdjM19yb2NrY2hpcF9w aHlfcG9zdF9yZXNldCgpLCBya191ZHBoeV9pbml0KCkgc2xlZXBzIGluIHVzbGVlcF9yYW5nZSgp IGFuZApwb2xscyBQTEwgc3RhdHVzIGluIHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dCgpIHdoaWxl IGhvbGRpbmcgb25seQp1ZHBoeS0+bXV0ZXguIFNpbmNlIF9fZHdjM19zZXRfbW9kZSgpIGhvbGRz IG9ubHkgZHdjLT5tdXRleCwgY2FuCl9fZHdjM19zZXRfbW9kZSgpIGFzc2VydCBhbmQgZGVhc3Nl cnQgRFdDM19HQ1RMX0NPUkVTT0ZUUkVTRVQgZHVyaW5nIHRoZSBQSFkKcmVzZXQgd2luZG93OgoK ZHJpdmVycy91c2IvZHdjMy9jb3JlLmM6X19kd2MzX3NldF9tb2RlKCkgewoJLi4uCgkJcmVnID0g ZHdjM19yZWFkbChkd2MsIERXQzNfR0NUTCk7CgkJcmVnIHw9IERXQzNfR0NUTF9DT1JFU09GVFJF U0VUOwoJCWR3YzNfd3JpdGVsKGR3YywgRFdDM19HQ1RMLCByZWcpOwoKCQltc2xlZXAoMTAwKTsK CgkJcmVnID0gZHdjM19yZWFkbChkd2MsIERXQzNfR0NUTCk7CgkJcmVnICY9IH5EV0MzX0dDVExf Q09SRVNPRlRSRVNFVDsKCQlkd2MzX3dyaXRlbChkd2MsIERXQzNfR0NUTCwgcmVnKTsKCS4uLgp9 CgpyZXNldHRpbmcgRFdDMyBnbG9iYWwgcmVnaXN0ZXJzIGFuZCBjbGVhcmluZyBEV0MzX0dVU0Iz UElQRUNUTF9QSFlTT0ZUUlNUCndoaWxlIHRoZSBVU0JEUCBQSFkgcmVzZXQgaXMgc3RpbGwgaW4g cHJvZ3Jlc3M/Cgo+ICsKPiArc3RhdGljIHZvaWQgZHdjM19yb2NrY2hpcF9waHlfcG9zdF9yZXNl dChzdHJ1Y3QgZHdjM19yb2NrY2hpcCAqZHdjX3JrLCBpbnQgcG9ydCkKPiArewo+ICsJc3RydWN0 IGR3YzMgKmR3YyA9ICZkd2NfcmstPmR3YzsKPiArCXUzMiByZWc7Cj4gKwo+ICsJc2NvcGVkX2d1 YXJkKHNwaW5sb2NrX2lycXNhdmUsICZkd2MtPmxvY2spIHsKPiArCQlpZiAoIShkd2NfcmstPnBo eV9yZXNldF9hY3RpdmUgJiBCSVQocG9ydCkpKQo+ICsJCQlyZXR1cm47Cj4gKwo+ICsJCWR3Y19y ay0+cGh5X3Jlc2V0X2FjdGl2ZSAmPSB+QklUKHBvcnQpOwo+ICsKPiArCQkvKiBSZXN0b3JlIG5v cm1hbCBvcGVyYXRpb24gKi8KPiArCQlyZWcgPSBkd2MzX3JlYWRsKGR3YywgRFdDM19HVVNCM1BJ UEVDVEwocG9ydCkpOwo+ICsJCXJlZyAmPSB+RFdDM19HVVNCM1BJUEVDVExfUEhZU09GVFJTVDsK PiArCQlkd2MzX3dyaXRlbChkd2MsIERXQzNfR1VTQjNQSVBFQ1RMKHBvcnQpLCByZWcpOwo+ICsJ fQo+ICt9CgpbU2V2ZXJpdHk6IEhpZ2hdCklzIGl0IHNhZmUgdG8gcmVseSBvbiBEV0MzIHJ1bnRp bWUgc3VzcGVuZC9yZXN1bWUgY2FsbGluZyBwaHlfaW5pdCgpIGFuZApwaHlfZXhpdCgpIGluc3Rl YWQgb2YgaG9sZGluZyBhIHJ1bnRpbWUgUE0gcmVmZXJlbmNlIGFjcm9zcyB0aGUgUEhZIHJlc2V0 PwoKSW4gZHJpdmVycy91c2IvZHdjMy9jb3JlLmMsIGR3YzNfc3VzcGVuZF9jb21tb24oKSBhbmQg ZHdjM19yZXN1bWVfY29tbW9uKCkKb25seSBjYWxsIGR3YzNfY29yZV9leGl0KCkgKHdoaWNoIGNh bGxzIGR3YzNfcGh5X2V4aXQoKSAtPiBwaHlfZXhpdCgpKSBhbmQKZHdjM19jb3JlX2luaXRfZm9y X3Jlc3VtZSgpICh3aGljaCBjYWxscyBkd2MzX2NvcmVfaW5pdCgpIC0+IGR3YzNfcGh5X2luaXQo KQotPiBwaHlfaW5pdCgpKSBkdXJpbmcgcnVudGltZSBQTSB3aGVuIGluIERXQzNfR0NUTF9QUlRD QVBfREVWSUNFIG1vZGUuIEluCkRXQzNfR0NUTF9QUlRDQVBfSE9TVCBhbmQgRFdDM19HQ1RMX1BS VENBUF9PVEcgbW9kZXMsIHJ1bnRpbWUgc3VzcGVuZCBhbmQKcmVzdW1lIHNraXAgZHdjM19jb3Jl X2V4aXQoKSBhbmQgZHdjM19jb3JlX2luaXRfZm9yX3Jlc3VtZSgpOgoKZHJpdmVycy91c2IvZHdj My9jb3JlLmM6ZHdjM19zdXNwZW5kX2NvbW1vbigpIHsKCS4uLgoJY2FzZSBEV0MzX0dDVExfUFJU Q0FQX0hPU1Q6CgkJaWYgKCFQTVNHX0lTX0FVVE8obXNnKSAmJgoJCSAgICAoIWRldmljZV9tYXlf d2FrZXVwKGR3Yy0+ZGV2KSB8fCBkd2MtPm5lZWRzX2Z1bGxfcmVpbml0KSkgewoJCQlkd2MzX2Nv cmVfZXhpdChkd2MpOwoJCQlicmVhazsKCQl9CgkuLi4KCWNhc2UgRFdDM19HQ1RMX1BSVENBUF9P VEc6CgkJLyogZG8gbm90aGluZyBkdXJpbmcgcnVudGltZV9zdXNwZW5kICovCgkJaWYgKFBNU0df SVNfQVVUTyhtc2cpKQoJCQlicmVhazsKCS4uLgp9CgpCZWNhdXNlIHBoeV9leGl0KCkgaXMgbm90 IGNhbGxlZCBvbiBydW50aW1lIHN1c3BlbmQgaW4gaG9zdCBvciBPVEcgbW9kZXMsCnJrX3VkcGh5 X3VzYjNfcGh5X2V4aXQoKSBkb2VzIG5vdCBydW4sIHVkcGh5LT5tdXRleCBpcyBub3QgYWNxdWly ZWQgYnkKcnVudGltZSBzdXNwZW5kL3Jlc3VtZSwgYW5kIHVkcGh5LT5zd19tb2RlIHJldGFpbnMg VURQSFlfTU9ERV9VU0Igd2hpbGUKZHdjLT5kZXYgaXMgcnVudGltZS1zdXNwZW5kZWQuCgpJZiBk d2MtPmRldiBpcyBSUE1fQUNUSVZFIGluIERXQzNfR0NUTF9QUlRDQVBfSE9TVCBvciBEV0MzX0dD VExfUFJUQ0FQX09URwptb2RlIHdoZW4gZHdjM19yb2NrY2hpcF9waHlfcHJlX3Jlc2V0KCkgcnVu cyAoZm9yIGV4YW1wbGUsIHZpYQpya191ZHBoeV9kcF9waHlfcG93ZXJfb24oKSAtPiBya191ZHBo eV9wb3dlcl9vbigpKSwgaXQgc2V0cwpkd2NfcmstPnBoeV9yZXNldF9hY3RpdmUgfD0gQklUKHBv cnQpIHdpdGhvdXQgaG9sZGluZyBhIHJ1bnRpbWUgUE0gcmVmZXJlbmNlLgpXaGlsZSBya191ZHBo eV9wb3dlcl9vbigpIHNsZWVwcyBpbiBya191ZHBoeV9pbml0KCksIGR3Yy0+ZGV2IGNhbgpydW50 aW1lLXN1c3BlbmQgY29uY3VycmVudGx5IHdpdGhvdXQgYmxvY2tpbmcgb24gdWRwaHktPm11dGV4 LCBhbGxvd2luZyB0aGUKVVNCIHBvd2VyIGRvbWFpbiAoUkszNTg4X1BEX1VTQiAvIFJLMzU3Nl9Q RF9VU0IpIHRvIHBvd2VyIGRvd24uIFdoZW4KZHdjM19yb2NrY2hpcF9waHlfcG9zdF9yZXNldCgp IHRoZW4gZXhlY3V0ZXMsIHdvbid0IGl0IHNlZQpkd2NfcmstPnBoeV9yZXNldF9hY3RpdmUgJiBC SVQocG9ydCkgc2V0IGFuZCBjYWxsIGR3YzNfcmVhZGwoKSBhbmQKZHdjM193cml0ZWwoKSBvbiBE V0MzX0dVU0IzUElQRUNUTChwb3J0KSB3aGlsZSBkd2MtPmRldiBpcyBydW50aW1lLXN1c3BlbmRl ZCwKdHJpZ2dlcmluZyBhbiBhcm02NCBTRXJyb3I/CgpDb252ZXJzZWx5LCBpZiBkd2MtPmRldiBp cyBhbHJlYWR5IHJ1bnRpbWUtc3VzcGVuZGVkIGluIERXQzNfR0NUTF9QUlRDQVBfSE9TVApvciBE V0MzX0dDVExfUFJUQ0FQX09URyBtb2RlIHdoaWxlIERXQzMgY2xvY2tzIGFuZCByZXNldCByZW1h aW4gYWN0aXZlIChhbmQKdGhlIHNoYXJlZCBVU0IgcG93ZXIgZG9tYWluIGlzIGtlcHQgb24gYnkg c2libGluZyBjb250cm9sbGVycyksIHdvbid0CmR3YzNfcm9ja2NoaXBfcGh5X3ByZV9yZXNldCgp IHNlZSAhcG1fcnVudGltZV9hY3RpdmUoZHdjLT5kZXYpIGFuZCByZXR1cm4KZWFybHkgd2l0aG91 dCBhc3NlcnRpbmcgRFdDM19HVVNCM1BJUEVDVExfUEhZU09GVFJTVCwgY2F1c2luZyB0aGUgVVNC RFAgUEhZCnJlc2V0IHRvIGZhaWwgTENQTEwgbG9jayB3aGlsZSBzdWJzZXF1ZW50IHJ1bnRpbWUg cmVzdW1lIGluIGhvc3Qgb3IgT1RHIG1vZGUKZG9lcyBub3QgcmVpbml0aWFsaXplIHRoZSBEV0Mz IGNvcmUgb3IgUEhZPwoKWyAuLi4gXQoKPgoKLS0gClNhc2hpa28gQUkgcmV2aWV3IMK3IGh0dHBz Oi8vc2FzaGlrby5kZXYvIy9wYXRjaHNldC8yMDI2MTAyMS1iNC1yb2NrY2hpcC1kd2MzLXJvY2tj aGlwLWdsdWUtdjE4LTAtNjAwMDBkMDNmY2EyQGNvbGxhYm9yYS5jb20/cGFydD01CgotLSAKbGlu dXgtcGh5IG1haWxpbmcgbGlzdApsaW51eC1waHlAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwczov L2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1waHkK From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=100.103.45.18 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1792607703; b=VOfMW5ylixS7y9Ujkr9TdFockZDmo8zVAzc2/zej1ZeoCfBv7utpTd0u6uWeskdkHih1 NE/aF2t6HwJKXbaI9LX/0M5JkfHxpME3NlIeABCN4wftZv6QgRt6cHf0mFjLBj/jO+FQ8 5fkPn+kBwY+xl4IDHttQyu4dXItFpvfTpTqTfLmzCovcoCnxNPd/kFcp7RLcBxPUKllG2 SIzWz9uUV1RpEDixO/NNZueNdZyUKWsZxMlpWe7GTCrf3vLJb+ywZk+d/h1Hqd1ndAhFz jUiBwvs46d8X6/KN9sGEMjUTa5s2kgKb2XcgA8N9V/NWqvfAY/Q2auKEvqxOiNRcfgQ== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1792607703; h=Received:DKIM-Signature:Message-ID:From:Subject:Reply-To:To:Cc: In-Reply-To:References:Content-Type:Content-Transfer-Encoding:Date; bh=5bSXgYHag6XhfKBLXHCQ97tdahL4BUPMsc+StpA2gEw=; b=tLPeJWeVGAUnI06jK03+JJekIM3aWGPEXfUJ7EHuW/zn/6HdTpeoC3KHEdLYGNN3YOfu imG3zCXK1NhbAhbjPrVvPCyB3f4rxyMcq3JmXPTQLyxi6va1Ovir4h2diZFRPvqgJ2u4l IPTGY7kZ2rMFZhdDNan6fHvQa56+0+IQi3sEpcV8Y6Cv9WIuXuSyJxAlHkkZelE+IJ9Te 3GTmoe4551DefPU09MPmf95kvBJ481jkd32Byv/ZFbCUBZkJrV6w9Hp6PMo7N3+UJrYG0 1yCdiKm6MYfL+kWYD19FBq9C8sXuecJs3Lqk+YrMrFvIHZ3oaW+A0fS9NkhA5dN9DJQ== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=Few5V957; arc=none smtp.remote-ip=100.103.45.18 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B26D3606A319 for ; Wed, 21 Oct 2026 18:35:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key, unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=Few5V957 Received: by smtp.kernel.org (Postfix) with ESMTPSA id 28E141F000C1; Wed, 21 Oct 2026 18:35:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1792607702; bh=5bSXgYHag6XhfKBLXHCQ97tdahL4BUPMsc+StpA2gEw=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=Few5V957kHeZ8D/fUuKAIVEsl0/M9Rq0QGGQU9M5rNsWkDV9m4Q7JOcvpILFsclU+ 1ksgkLM6+BWOFg2uZpMmXRzvOQihjKiOWY5o6DMXBbb+U/hhLJhsD81gySfNwf1UNy 4QwRsUrSSyZ4sptlF/eThDBDnTsSgkpT9fQ72lQvn7U2boZZwqjrlPFazDFGRrJR9i oC+WMa5MkdLHrE5RFrfbs69rOSOBwRhMsHYroq1daGKzmG00dDhHshmLAOS4vdUdP1 wh3ffoLUXgey5ANjxHek+pFAcGZXXwfFLgUKsxZJu5tB8WPsxPvjJwETo2OoA86Nza 88FCLhruUGLxA== Message-ID: From: sashiko-bot@kernel.org Subject: Re: [PATCH v18 5/7] usb: dwc3: rockchip: add USBDP PHY reset quirk Reply-To: sashiko-reviews@lists.linux.dev To: "Sebastian Reichel" Cc: linux-usb@vger.kernel.org, linux-phy@lists.infradead.org, vkoul@kernel.org, neil.armstrong@linaro.org, olteanv@gmail.com In-Reply-To: <20261021-b4-rockchip-dwc3-rockchip-glue-v18-5-60000d03fca2@collabora.com> References: <20261021-b4-rockchip-dwc3-rockchip-glue-v18-0-60000d03fca2@collabora.com> <20261021-b4-rockchip-dwc3-rockchip-glue-v18-5-60000d03fca2@collabora.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Date: Wed, 21 Oct 2026 18:35:01 +0000 X-Mailing-List: linux-usb@vger.kernel.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list Thank you for your contribution! Sashiko AI review found 3 potential issue(= s) to consider: - [High] usb: dwc3: rockchip: dwc3_rockchip_phy_pre_reset() skips RPM_RESUM= ING state - [High] usb: dwc3: rockchip: unsynchronized runtime PM in dwc3_rockchip_ph= y_reset() - [Medium] usb: dwc3: rockchip: race between PHY reset quirk and __dwc3_set= _mode() -- commit 175128dd0be21c712a951377a4fee0fe496c4cf7 Author: Sebastian Reichel usb: dwc3: rockchip: add USBDP PHY reset quirk This commit adds a reset handler for the Rockchip USBDP PHY in the Rockchip DWC3 glue driver to assert and deassert DWC3_GUSB3PIPECTL_PHYSOFTRST around external PHY resets, preventing DWC3 PIPE traffic from interfering with PHY PLL locking. It also exports the dwc3_readl and dwc3_writel tracepoint symbols for use by the glue driver. > diff --git a/drivers/usb/dwc3/dwc3-rockchip.c b/drivers/usb/dwc3/dwc3-roc= kchip.c > index 4129aefd6a8b0..75e647e04cc52 100644 > --- a/drivers/usb/dwc3/dwc3-rockchip.c > +++ b/drivers/usb/dwc3/dwc3-rockchip.c > @@ -2,11 +2,105 @@ > /* Copyright (c) 2026, Collabora Ltd. */ > #include > #include > +#include > #include > #include "glue.h" > +#include "io.h" > =20 > struct dwc3_rockchip { > struct dwc3 dwc; > + u8 phy_reset_active; > +}; > + > +static void dwc3_rockchip_phy_pre_reset(struct dwc3_rockchip *dwc_rk, in= t port) > +{ > + struct dwc3 *dwc =3D &dwc_rk->dwc; > + u32 reg; > + > + /* > + * If the device is runtime suspended, there is nothing to do and RPM > + * resume will do the necessary things. There is no need for a RPM > + * reference either, since DWC3 runtime suspend/resume will call phy > + * init/exit and that is synchronized against ongoing resets. > + */ > + if (!pm_runtime_active(dwc->dev)) > + return; [Severity: High] Does checking pm_runtime_active(dwc->dev) here miss the case where DWC3 is = in the middle of runtime resume or runtime suspend? In drivers/base/power/runtime.c:rpm_resume(), the PM core sets dev->power.runtime_status to RPM_RESUMING before invoking the driver's runtime_resume callback, and only updates it to RPM_ACTIVE after the callba= ck returns: drivers/base/power/runtime.c:rpm_resume() { ... __update_runtime_status(dev, RPM_RESUMING); callback =3D RPM_GET_CALLBACK(dev, runtime_resume); dev_pm_disable_wake_irq_check(dev, false); retval =3D rpm_callback(callback, dev); ... } Meanwhile, include/linux/pm_runtime.h:pm_runtime_active() only returns true when runtime_status is RPM_ACTIVE (or runtime PM is disabled): static inline bool pm_runtime_active(struct device *dev) { return dev->power.runtime_status =3D=3D RPM_ACTIVE || dev->power.disable_depth; } During runtime resume in DWC3_GCTL_PRTCAP_DEVICE mode, the call chain is: dwc3_rockchip_runtime_resume() -> dwc3_runtime_resume() -> dwc3_resume_common() -> dwc3_core_init_for_resume() -> reset_control_deassert(dwc->reset) -> dwc3_clk_enable(dwc) -> dwc3_core_init(dwc) -> dwc3_phy_setup(dwc) -> dwc3_phy_init(dwc) -> phy_init() -> rk_udphy_usb3_phy_init() -> rk_udphy_power_on() -> rk_udphy_run_reset_handler(udphy, true) -> dwc3_rockchip_phy_pre_reset() At that point, DWC3 reset has been deasserted, clocks are enabled, and dwc3_phy_setup() has configured DWC3_GUSB3PIPECTL(0), but dev->power.runtime_status is still RPM_RESUMING. When rk_udphy_power_on() runs the reset handler (because udphy->status =3D=3D UDPHY_MODE_NONE or udphy->phy_needs_reinit is true after a USB-C reconnect or orientation change), won't dwc3_rockchip_phy_pre_reset() see !pm_runtime_active(dwc->de= v) and return early without asserting DWC3_GUSB3PIPECTL_PHYSOFTRST, causing rk_udphy_status_check() to fail LCPLL lock and failing dwc3_runtime_resume() (as well as skipping the VBUS notification in the follow-up commit "usb: dwc3: rockchip: fix USB-C reconnect in gadget mode")? Similarly, during runtime suspend, rpm_suspend() sets runtime_status to RPM_SUSPENDING before invoking the driver callback. While dwc3_suspend_common() is executing dwc3_gadget_suspend(), synchronize_irq(), or waiting on udphy->mutex in dwc3_phy_exit() before clocks are disabled and reset is asserted, wouldn't a concurrent PHY reset via rk_udphy_dp_phy_power_on() also see !pm_runtime_active(dwc->dev) and skip asserting DWC3_GUSB3PIPECTL_PHYSOFTRST while DWC3 is still running? > + > + /* > + * Assert USB3 PHY soft reset within DWC3 before the external > + * PHY resets. This disconnects the PIPE interface, preventing > + * the DWC3 from interfering with PHY reinitialization and > + * avoiding LCPLL lock failures. > + */ > + scoped_guard(spinlock_irqsave, &dwc->lock) { > + dwc_rk->phy_reset_active |=3D BIT(port); > + reg =3D dwc3_readl(dwc, DWC3_GUSB3PIPECTL(port)); > + reg |=3D DWC3_GUSB3PIPECTL_PHYSOFTRST; > + dwc3_writel(dwc, DWC3_GUSB3PIPECTL(port), reg); > + } > +} [Severity: Medium] Can the PHY reset callbacks race with DWC3 role switching in __dwc3_set_mode()? When a USB-C device with DisplayPort AltMode is plugged in, unplugged, or undergoes a role swap, tcpm_mux_set() updates the mux/orientation state (setting udphy->phy_needs_reinit =3D true in rk_udphy_orien_sw_set() or rk_udphy_typec_mux_set()) and calls usb_role_switch_set_role() -> dwc3_usb_role_switch_set() -> dwc3_set_mode(), queuing __dwc3_set_mode() on system_freezable_wq. Concurrently, DP HPD/link enablement invokes phy_power_on(dp->phy) -> rk_udphy_dp_phy_power_on() -> rk_udphy_power_on() under udphy->mutex. First, __dwc3_set_mode() calls dwc3_host_exit(), dwc3_gadget_exit(), and dwc3_host_init() -> dwc3_xhci_plat_start(), all of which call dwc3_enable_susphy() without holding dwc->lock: drivers/usb/dwc3/core.c:dwc3_enable_susphy() { ... for (i =3D 0; i < dwc->num_usb3_ports; i++) { reg =3D dwc3_readl(dwc, DWC3_GUSB3PIPECTL(i)); if (enable && !dwc->dis_u3_susphy_quirk) reg |=3D DWC3_GUSB3PIPECTL_SUSPHY; else reg &=3D ~DWC3_GUSB3PIPECTL_SUSPHY; dwc3_writel(dwc, DWC3_GUSB3PIPECTL(i), reg); } } Could an unlocked read-modify-write in dwc3_enable_susphy() interleave with dwc3_rockchip_phy_pre_reset() or dwc3_rockchip_phy_post_reset() and clear DWC3_GUSB3PIPECTL_PHYSOFTRST during the PHY reset or re-assert it after dwc3_rockchip_phy_post_reset() clears it? Second, between dwc3_rockchip_phy_pre_reset() and dwc3_rockchip_phy_post_reset(), rk_udphy_init() sleeps in usleep_range() and polls PLL status in regmap_read_poll_timeout() while holding only udphy->mutex. Since __dwc3_set_mode() holds only dwc->mutex, can __dwc3_set_mode() assert and deassert DWC3_GCTL_CORESOFTRESET during the PHY reset window: drivers/usb/dwc3/core.c:__dwc3_set_mode() { ... reg =3D dwc3_readl(dwc, DWC3_GCTL); reg |=3D DWC3_GCTL_CORESOFTRESET; dwc3_writel(dwc, DWC3_GCTL, reg); msleep(100); reg =3D dwc3_readl(dwc, DWC3_GCTL); reg &=3D ~DWC3_GCTL_CORESOFTRESET; dwc3_writel(dwc, DWC3_GCTL, reg); ... } resetting DWC3 global registers and clearing DWC3_GUSB3PIPECTL_PHYSOFTRST while the USBDP PHY reset is still in progress? > + > +static void dwc3_rockchip_phy_post_reset(struct dwc3_rockchip *dwc_rk, i= nt port) > +{ > + struct dwc3 *dwc =3D &dwc_rk->dwc; > + u32 reg; > + > + scoped_guard(spinlock_irqsave, &dwc->lock) { > + if (!(dwc_rk->phy_reset_active & BIT(port))) > + return; > + > + dwc_rk->phy_reset_active &=3D ~BIT(port); > + > + /* Restore normal operation */ > + reg =3D dwc3_readl(dwc, DWC3_GUSB3PIPECTL(port)); > + reg &=3D ~DWC3_GUSB3PIPECTL_PHYSOFTRST; > + dwc3_writel(dwc, DWC3_GUSB3PIPECTL(port), reg); > + } > +} [Severity: High] Is it safe to rely on DWC3 runtime suspend/resume calling phy_init() and phy_exit() instead of holding a runtime PM reference across the PHY reset? In drivers/usb/dwc3/core.c, dwc3_suspend_common() and dwc3_resume_common() only call dwc3_core_exit() (which calls dwc3_phy_exit() -> phy_exit()) and dwc3_core_init_for_resume() (which calls dwc3_core_init() -> dwc3_phy_init() -> phy_init()) during runtime PM when in DWC3_GCTL_PRTCAP_DEVICE mode. In DWC3_GCTL_PRTCAP_HOST and DWC3_GCTL_PRTCAP_OTG modes, runtime suspend and resume skip dwc3_core_exit() and dwc3_core_init_for_resume(): drivers/usb/dwc3/core.c:dwc3_suspend_common() { ... case DWC3_GCTL_PRTCAP_HOST: if (!PMSG_IS_AUTO(msg) && (!device_may_wakeup(dwc->dev) || dwc->needs_full_reinit)) { dwc3_core_exit(dwc); break; } ... case DWC3_GCTL_PRTCAP_OTG: /* do nothing during runtime_suspend */ if (PMSG_IS_AUTO(msg)) break; ... } Because phy_exit() is not called on runtime suspend in host or OTG modes, rk_udphy_usb3_phy_exit() does not run, udphy->mutex is not acquired by runtime suspend/resume, and udphy->sw_mode retains UDPHY_MODE_USB while dwc->dev is runtime-suspended. If dwc->dev is RPM_ACTIVE in DWC3_GCTL_PRTCAP_HOST or DWC3_GCTL_PRTCAP_OTG mode when dwc3_rockchip_phy_pre_reset() runs (for example, via rk_udphy_dp_phy_power_on() -> rk_udphy_power_on()), it sets dwc_rk->phy_reset_active |=3D BIT(port) without holding a runtime PM refere= nce. While rk_udphy_power_on() sleeps in rk_udphy_init(), dwc->dev can runtime-suspend concurrently without blocking on udphy->mutex, allowing the USB power domain (RK3588_PD_USB / RK3576_PD_USB) to power down. When dwc3_rockchip_phy_post_reset() then executes, won't it see dwc_rk->phy_reset_active & BIT(port) set and call dwc3_readl() and dwc3_writel() on DWC3_GUSB3PIPECTL(port) while dwc->dev is runtime-suspende= d, triggering an arm64 SError? Conversely, if dwc->dev is already runtime-suspended in DWC3_GCTL_PRTCAP_HO= ST or DWC3_GCTL_PRTCAP_OTG mode while DWC3 clocks and reset remain active (and the shared USB power domain is kept on by sibling controllers), won't dwc3_rockchip_phy_pre_reset() see !pm_runtime_active(dwc->dev) and return early without asserting DWC3_GUSB3PIPECTL_PHYSOFTRST, causing the USBDP PHY reset to fail LCPLL lock while subsequent runtime resume in host or OTG mode does not reinitialize the DWC3 core or PHY? [ ... ] > --=20 Sashiko AI review =C2=B7 https://sashiko.dev/#/patchset/20261021-b4-rockchi= p-dwc3-rockchip-glue-v18-0-60000d03fca2@collabora.com?part=3D5