From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 9486BC5CFC1 for ; Fri, 14 Aug 2026 05:59:29 +0000 (UTC) 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:Message-Id:Date: References:In-Reply-To:Cc:To:Subject:From:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=E7w7lHBWnmp5pAsppXVJeakYyVG1bP22HmKgGRtgVIE=; b=ieAYs/aQOtyuvL 5qF3sgerttCQOrLRqrOAaKChT0DfIyvx4Li0/4Bm9jTOgkTF6hvq7qjzadM7oq6QIHsM8Y2Z4QGn9 mqNaFA+ijMSu+EWkOHCPb+F1OcaI6NuWZpsCSHHpqqC1sYCmVsWH9UTR44C6LIwcVu6mrHnaTGhUR 7JwINB8XXq6N2evPVGClXaaeV4v0jZA4qbLnxWqTYrwbQZxY/x5wkKTua4YPJG5Q5rO1Dfy5Fnjci kBkIbEn3ud0JyeHmlyJyftl+aBwb+ujilo8wysMLuzs0xPQh3LHcNIuWKeBtT3UqQvosOmFeVDpT8 vc9ZbdDYLTaFG+RjiVag==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wukwz-00000002016-0Trq; Fri, 14 Aug 2026 05:59:29 +0000 Received: from tor.source.kernel.org ([2600:3c04:e001:324:0:1991:8:25]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wukwy-00000002010-1W4g for linux-phy@lists.infradead.org; Fri, 14 Aug 2026 05:59:28 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id 6D45A600AD; Fri, 14 Aug 2026 05:59:27 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id C847E1F000E9; Fri, 14 Aug 2026 05:59:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1786687167; bh=dwYkajfXVsc/lluqOH69OJDf3Dzy05FDpzrJUVIwxlg=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=AU5vPqVB1o8G4Ar/rE9VMSoJZXr5CKk/CTForunfOi9ErpVzyLkcghmJoEr4y4iTR 0BZWfEe7YhBrh/2xI2ZWNyHN2skJHE5GQqFhsAALcgB2IH/aQT8cY2jl6PmW4l8kjt B4nszCBMbEGtsbrK8Y8gbIcBMHgDZhR1h6gmjyl/eUHDXKbW+GAYTJKMHrRhxLrXOJ dfM1HtDsAOCmYmxYcU6t0pOEWNjkAixuriyheCELzhNtis3eG69OTEUNc5R5yq3Cg8 Os5cQjbhMelS2d4brBmagfgCxdmieFmBNg7YJ+6IiKHju4o+AxQqVwwABtD2llp6O+ Sja0suslWp7gA== From: sashiko-bot@kernel.org Subject: Re: [PATCH v14 32/38] usb: dwc3: rockchip: fix USB-C reconnect in gadget mode To: "Sebastian Reichel" Cc: neil.armstrong@linaro.org, linux-phy@lists.infradead.org, vkoul@kernel.org, olteanv@gmail.com, conor+dt@kernel.org, robh@kernel.org, devicetree@vger.kernel.org In-Reply-To: <20260813-rockchip-usbdp-cleanup-v14-32-b5ad9c68fa11@collabora.com> References: <20260813-rockchip-usbdp-cleanup-v14-0-b5ad9c68fa11@collabora.com> <20260813-rockchip-usbdp-cleanup-v14-32-b5ad9c68fa11@collabora.com> Date: Fri, 14 Aug 2026 05:59:26 +0000 Message-Id: <20260814055926.C847E1F000E9@smtp.kernel.org> X-BeenThere: linux-phy@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux Phy Mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: sashiko-reviews@lists.linux.dev MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-phy" Errors-To: linux-phy-bounces+linux-phy=archiver.kernel.org@lists.infradead.org VGhhbmsgeW91IGZvciB5b3VyIGNvbnRyaWJ1dGlvbiEgU2FzaGlrbyBBSSByZXZpZXcgZm91bmQg NCBwb3RlbnRpYWwgaXNzdWUocykgdG8gY29uc2lkZXI6CgpOZXcgaXNzdWVzOgotIFtIaWdoXSBD aGVja2luZyAhZHdjLT5nYWRnZXRfZHJpdmVyIGluIGR3YzNfcm9ja2NoaXBfdmJ1c19oYW5kbGVy IGJyZWFrcyB0aGUgVURDIGNvcmUncyBWQlVTIHN0YXRlIHRyYWNraW5nLCBkZWZlYXRpbmcgdGhl IHBhdGNoJ3MgaW50ZW5kZWQgUE0gcmVzdW1lIGxvZ2ljLgotIFtIaWdoXSBUT0NUT1UgcmFjZSBp biBkd2MzX3JvY2tjaGlwX3ZidXNfaGFuZGxlciBsZWFkaW5nIHRvIFVzZS1BZnRlci1GcmVlIG9m IGdhZGdldCBhbmQgVURDIHN0cnVjdHVyZXMuCgpQcmUtZXhpc3RpbmcgaXNzdWVzOgotIFtIaWdo XSBVc2luZyBhc3luY2hyb25vdXMgcG1fcnVudGltZV9wdXRfYXV0b3N1c3BlbmQoKSBpbiB0aGUg ZGV2aWNlIHJlbW92YWwgcGF0aCBpbnRyb2R1Y2VzIHJhY2UgY29uZGl0aW9ucy4KLSBbSGlnaF0g TWlzaGFuZGxpbmcgb2YgLUVJTlZBTCBmcm9tIHBtX3J1bnRpbWVfZ2V0X2lmX2FjdGl2ZSgpIGNh dXNlcyBQTSB1c2FnZSBjb3VudCB1bmRlcmZsb3cgYW5kIHVuc2FmZSBNTUlPIGFjY2VzcyB3aXRo b3V0IGNsb2Nrcy4KLS0KCi0tLSBQYXRjaCBbMzJdOiBbUEFUQ0ggdjE0IDMyLzM4XSB1c2I6IGR3 YzM6IHJvY2tjaGlwOiBmaXggVVNCLUMgcmVjb25uZWN0IGluIGdhZGdldCBtb2RlIC0tLQpjb21t aXQgOWRiZmQ2OWI5ODVlMjQwYjA3ODc2NzBhMDM0ZjZiOWMzN2ExODBkMApBdXRob3I6IFNlYmFz dGlhbiBSZWljaGVsIDxzZWJhc3RpYW4ucmVpY2hlbEBjb2xsYWJvcmEuY29tPgoKdXNiOiBkd2Mz OiByb2NrY2hpcDogZml4IFVTQi1DIHJlY29ubmVjdCBpbiBnYWRnZXQgbW9kZQoKV2hlbiBVU0It QyBpcyBjb25maWd1cmVkIGluIGdhZGdldCBtb2RlIGFuZCB0aGUgY2FibGUgaXMgdW5wbHVnZ2Vk IHRoZQpVU0IgY29udHJvbGxlciBpcyBzdXNwZW5kZWQuIFRoaXMgcGF0Y2ggdHJpZ2dlcnMgYSBy dW50aW1lIFBNIHJlc3VtZQp3aGVuIHRoZSByb2xlIGlzIGNoYW5nZWQgdG8gZml4IGFuIGlzc3Vl IHdoZXJlIHRoZSBjb250cm9sbGVyIHN0YXlzCnN1c3BlbmRlZCBhbmQgdGhlIHBvcnQgc3RhdHVz IHJlbWFpbnMgbm90LWF0dGFjaGVkIGFmdGVyIHJlY29ubmVjdGluZy4KCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvdXNiL2R3YzMvZHdjMy1yb2NrY2hpcC5jIGIvZHJpdmVycy91c2IvZHdjMy9kd2Mz LXJvY2tjaGlwLmMKPiBpbmRleCA5ZTkxZTVmN2U1M2Q2Li4yNDZkN2RjYWZjNjhmIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvdXNiL2R3YzMvZHdjMy1yb2NrY2hpcC5jCj4gKysrIGIvZHJpdmVycy91 c2IvZHdjMy9kd2MzLXJvY2tjaGlwLmMKPiBAQCAtMjUsOCArMjUsMTcgQEAgc3RydWN0IGR3YzNf cm9ja2NoaXAgewo+ICAJc3RydWN0IGR3YzMJCWR3YzsKPiAgCXN0cnVjdCBkd2MzX3JrX3BoeV9u Ygl1c2IzX3BoeV9uYltEV0MzX1VTQjNfTUFYX1BPUlRTXTsKPiAgCXU4CQkJcGh5X3Jlc2V0X2Fj dGl2ZTsKPiArCWVudW0gdXNiX3JvbGUJCXJvbGU7Cj4gIH07Cj4gIAo+ICtzdGF0aWMgdm9pZCBk d2MzX3JvY2tjaGlwX3ZidXNfaGFuZGxlcihzdHJ1Y3QgZHdjMyAqZHdjLCBib29sIHByZXNlbnQp Cj4gK3sKPiArCWlmICghZHdjLT5nYWRnZXQgfHwgIWR3Yy0+Z2FkZ2V0X2RyaXZlcikKPiArCQly ZXR1cm47CgpbU2V2ZXJpdHk6IEhpZ2hdCkRvZXMgdGhpcyBlYXJseSByZXR1cm4gYnJlYWsgdGhl IFVEQyBjb3JlJ3MgVkJVUyBzdGF0ZSB0cmFja2luZyB3aGVuIGEgZ2FkZ2V0CmRyaXZlciBpcyBu b3QgeWV0IGJvdW5kPwoKSWYgdGhlIHN5c3RlbSBib290cyB3aXRoIHRoZSBjYWJsZSB1bnBsdWdn ZWQgYW5kIG5vIGdhZGdldCBkcml2ZXIgaXMgbG9hZGVkLAp0aGlzIHJldHVybnMgZWFybHkgYW5k IGRyb3BzIHRoZSB1bnBsdWcgZXZlbnQuIFRoZSBVREMgY29yZSdzIHVkYy0+dmJ1cyB3b3VsZApy ZW1haW4gdHJ1ZS4KCldoZW4gdGhlIGdhZGdldCBkcml2ZXIgaXMgbGF0ZXIgbG9hZGVkLCB0aGlz IHRydWUgc3RhdGUgd291bGQgY2F1c2UgYQpwcmVtYXR1cmUgcHVsbHVwIHRoYXQgd2FrZXMgdGhl IGRldmljZSBidXQgdGhlbiBsZXRzIGl0IGF1dG9zdXNwZW5kLiBXaGVuIHRoZQpjYWJsZSBpcyBh Y3R1YWxseSBwbHVnZ2VkIGluIGxhdGVyLCB0aGUgVURDIGNvcmUgbWlnaHQgc2VlIHRoZSBzdGF0 ZSBoYXNuJ3QKY2hhbmdlZCBhbmQgc2tpcCB0aGUgcHVsbHVwLCBtZWFuaW5nIHRoZSBkZXZpY2Ug bmV2ZXIgcmVjZWl2ZXMgdGhlIFBNIHJlc3VtZQpuZWVkZWQgdG8gZGV0ZWN0IHRoZSBjb25uZWN0 aW9uLgoKW1NldmVyaXR5OiBIaWdoXQpDYW4gdGhpcyBsZWFkIHRvIGEgdXNlLWFmdGVyLWZyZWUg b2YgdGhlIGdhZGdldCBhbmQgVURDIHN0cnVjdHVyZXM/CgpUaGlzIGZ1bmN0aW9uIGlzIGNhbGxl ZCBsb2NrbGVzc2x5IGZyb20gdGhlIGFzeW5jaHJvbm91cyBQSFkgbm90aWZpZXIKZHdjM191c2Iz X3BoeV9ub3RpZnkoKS4gSWYgYSBjb25jdXJyZW50IHJvbGUgc3dpdGNoIG9jY3VycyAobGlrZSBE RVZJQ0UgdG8KSE9TVCksIGR3YzNfZ2FkZ2V0X2V4aXQoKSBjb3VsZCBiZSBmcmVlaW5nIHRoZSBn YWRnZXQgc3RydWN0dXJlIHVuZGVyCmR3Yy0+bXV0ZXg6Cgpkd2MzX3JvY2tjaGlwX3ZidXNfaGFu ZGxlcigpCiAgICBpZiAoIWR3Yy0+Z2FkZ2V0IHx8ICFkd2MtPmdhZGdldF9kcml2ZXIpCgpDb25j dXJyZW50IGR3YzNfZ2FkZ2V0X2V4aXQoKQogICAgdXNiX3B1dF9nYWRnZXQoKSAtPiBrZnJlZShn YWRnZXQpCgpXb3VsZCB0aGlzIHJlc3VsdCBpbiB0aGUgbm90aWZpZXIgZGVyZWZlcmVuY2luZyBh IGZyZWVkIGdhZGdldCBwb2ludGVyIHdoZW4KaXQgY2FsbHMgdXNiX3VkY192YnVzX2hhbmRsZXIo KSBiZWxvdz8KCj4gKwo+ICsJdXNiX3VkY192YnVzX2hhbmRsZXIoZHdjLT5nYWRnZXQsIHByZXNl bnQpOwo+ICt9Cj4gKwoKWyAuLi4gXQoKPiBAQCAtNTcsNiArNjYsOCBAQCBzdGF0aWMgaW50IGR3 YzNfdXNiM19waHlfbm90aWZ5KHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsCj4gIAkJaWYgKCFy ZXQpCj4gIAkJCXJldHVybiBOT1RJRllfT0s7CgpbU2V2ZXJpdHk6IEhpZ2hdClRoaXMgaXMgYSBw cmUtZXhpc3RpbmcgaXNzdWUsIGJ1dCBkb2VzIHRoaXMgY2hlY2sgcHJvcGVybHkgaGFuZGxlIHRo ZQotRUlOVkFMIHJldHVybiBmcm9tIHBtX3J1bnRpbWVfZ2V0X2lmX2FjdGl2ZSgpPwoKcG1fcnVu dGltZV9nZXRfaWZfYWN0aXZlKCkgcmV0dXJucyAtRUlOVkFMIHdoZW4gcnVudGltZSBQTSBpcyBk aXNhYmxlZC4KQnkgY2hlY2tpbmcgaWYgKCFyZXQpLCB0aGUgLUVJTlZBTCBjYXNlIGZhbGxzIHRo cm91Z2ggYW5kIGFsbG93cyB0aGUgY29kZQp0byBwcm9jZWVkLiBUaGlzIGNhbiBjYXVzZSB1bnNh ZmUgTU1JTyBhY2Nlc3Mgd2l0aG91dCBjbG9ja3MuCgpBZGRpdGlvbmFsbHksIGluIHRoZSBQSFlf Tk9USUZZX1BPU1RfUkVTRVQgY2FzZSwgcG1fcnVudGltZV9wdXRfYXV0b3N1c3BlbmQoKQppcyBj YWxsZWQgdW5jb25kaXRpb25hbGx5OgoKZHdjM191c2IzX3BoeV9ub3RpZnkoKSB7CiAgICAuLi4K ICAgIGNhc2UgUEhZX05PVElGWV9QT1NUX1JFU0VUOgogICAgICAgIC4uLgogICAgICAgIHBtX3J1 bnRpbWVfcHV0X2F1dG9zdXNwZW5kKGR3Yy0+ZGV2KTsKICAgICAgICBicmVhazsKfQoKU2luY2Ug cG1fcnVudGltZV9wdXRfYXV0b3N1c3BlbmQoKSBjYWxscyBycG1fZHJvcF91c2FnZV9jb3VudCgp LCB0aGlzIHdvdWxkCmRlY3JlbWVudCB0aGUgdXNhZ2UgY291bnQgYW5kIGNhdXNlIGFuIHVuZGVy ZmxvdyBpZiB0aGUgY29ycmVzcG9uZGluZyBnZXQKZmFpbGVkIHdpdGggLUVJTlZBTC4KCj4gKwkJ ZHdjM19yb2NrY2hpcF92YnVzX2hhbmRsZXIoZHdjLCBmYWxzZSk7Cj4gKwo+ICAJCS8qCj4gIAkJ ICogQXNzZXJ0IFVTQjMgUEhZIHNvZnQgcmVzZXQgd2l0aGluIERXQzMgYmVmb3JlIHRoZSBleHRl cm5hbAoKWyAuLi4gXQoKPiBAQCAtMTMwLDcgKzE0NCwxNiBAQCBzdGF0aWMgaW50IGR3YzNfcmtf cGh5X3JlZ2lzdGVyX25vdGlmaWVycyhzdHJ1Y3QgZHdjMyAqZHdjKQo+ICAJcmV0dXJuIGRldm1f YWRkX2FjdGlvbl9vcl9yZXNldChkd2MtPmRldiwgZHdjM19ya19waHlfdW5yZWdpc3Rlcl9ub3Rp ZmllcnMsIGR3Y19yayk7Cj4gIH0KCltTZXZlcml0eTogSGlnaF0KVGhpcyBpc24ndCBhIGJ1ZyBp bnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2gsIGJ1dCBkb2VzIHRoZSBjbGVhbnVwIGZ1bmN0aW9uCmR3 YzNfcmtfcGh5X3VucmVnaXN0ZXJfbm90aWZpZXJzKCkgc2FmZWx5IGhhbmRsZSBkZXZpY2UgcmVt b3ZhbD8KClRoZSBjbGVhbnVwIGZ1bmN0aW9uIGV4ZWN1dGVzIGR1cmluZyBkZXZyZXMgdGVhcmRv d246Cgpkd2MzX3JrX3BoeV91bnJlZ2lzdGVyX25vdGlmaWVycygpIHsKICAgIC4uLgogICAgZm9y IChpID0gMDsgaSA8IGR3Yy0+bnVtX3VzYjNfcG9ydHM7IGkrKykgewogICAgICAgIGlmIChkd2Nf cmstPnBoeV9yZXNldF9hY3RpdmUgJiBCSVQoaSkpCiAgICAgICAgICAgIHBtX3J1bnRpbWVfcHV0 X2F1dG9zdXNwZW5kKGR3Yy0+ZGV2KTsKICAgIH0KfQoKU2luY2UgdGhpcyBydW5zIGR1cmluZyBk ZXZpY2UgcmVtb3ZhbCwgdGhlIGFzeW5jaHJvbm91cyBzdXNwZW5kIGNvdWxkIGZpcmUKYWZ0ZXIg ZGV2aWNlIG1lbW9yeSBpcyBmcmVlZCBvciBkdXJpbmcgYnVzIHRlYXJkb3duLiBTaG91bGQgdGhp cyB1c2UKcG1fcnVudGltZV9wdXRfc3luYygpIGluc3RlYWQgdG8gZW5zdXJlIGhhcmR3YXJlIGlz IGluIHRoZSBjb3JyZWN0IHN0YXRlCmJlZm9yZSByZW1vdmFsIGNvbXBsZXRlcz8KCi0tIApTYXNo aWtvIEFJIHJldmlldyDCtyBodHRwczovL3Nhc2hpa28uZGV2LyMvcGF0Y2hzZXQvMjAyNjA4MTMt cm9ja2NoaXAtdXNiZHAtY2xlYW51cC12MTQtMC1iNWFkOWM2OGZhMTFAY29sbGFib3JhLmNvbT9w YXJ0PTMyCgotLSAKbGludXgtcGh5IG1haWxpbmcgbGlzdApsaW51eC1waHlAbGlzdHMuaW5mcmFk ZWFkLm9yZwpodHRwczovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51 eC1waHkK From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7AD6D25B098 for ; Fri, 14 Aug 2026 05:59:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786687168; cv=none; b=iW7wkcVflQ5UUgtWMq49zMa/RyzF9E6szsQnE2HqjgB9uFFw7slW3z7xf+yBN0FVKCs079BnFfjWntTMGOWRSCTcQz5/QpI8NwO0Q1d95MrPQkeCb1p048BWlz/V0pPq7q8tLwkW2Z4ektrbMxClTtJauVmc5YVI+fIK18ORAb0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786687168; c=relaxed/simple; bh=hQwiKBNLanvcgm8kUX9QuAe1qNuEcQTlUI8O1dOVl2Y=; h=From:Subject:To:Cc:In-Reply-To:References:Content-Type:Date: Message-Id; b=HZsGkARS9r3xGG6FjCdKV7pjBXrE4BHR8LEuc40BXVd5R2r7xityVR4Raq/IP8Nrwf/5LY+L/Pjk2t37wyLD/omRKy73zzXmOuO8iHkTo6itdtN5dmJ4DiEx/3d18+bDc0tc74XDrVBqiL99uGCO1xJY6VrMoEh0yOlwU9f2cHs= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=AU5vPqVB; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="AU5vPqVB" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C847E1F000E9; Fri, 14 Aug 2026 05:59:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1786687167; bh=dwYkajfXVsc/lluqOH69OJDf3Dzy05FDpzrJUVIwxlg=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=AU5vPqVB1o8G4Ar/rE9VMSoJZXr5CKk/CTForunfOi9ErpVzyLkcghmJoEr4y4iTR 0BZWfEe7YhBrh/2xI2ZWNyHN2skJHE5GQqFhsAALcgB2IH/aQT8cY2jl6PmW4l8kjt B4nszCBMbEGtsbrK8Y8gbIcBMHgDZhR1h6gmjyl/eUHDXKbW+GAYTJKMHrRhxLrXOJ dfM1HtDsAOCmYmxYcU6t0pOEWNjkAixuriyheCELzhNtis3eG69OTEUNc5R5yq3Cg8 Os5cQjbhMelS2d4brBmagfgCxdmieFmBNg7YJ+6IiKHju4o+AxQqVwwABtD2llp6O+ Sja0suslWp7gA== From: sashiko-bot@kernel.org Subject: Re: [PATCH v14 32/38] usb: dwc3: rockchip: fix USB-C reconnect in gadget mode Reply-To: sashiko-reviews@lists.linux.dev To: "Sebastian Reichel" Cc: neil.armstrong@linaro.org, linux-phy@lists.infradead.org, vkoul@kernel.org, olteanv@gmail.com, conor+dt@kernel.org, robh@kernel.org, devicetree@vger.kernel.org In-Reply-To: <20260813-rockchip-usbdp-cleanup-v14-32-b5ad9c68fa11@collabora.com> References: <20260813-rockchip-usbdp-cleanup-v14-0-b5ad9c68fa11@collabora.com> <20260813-rockchip-usbdp-cleanup-v14-32-b5ad9c68fa11@collabora.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Date: Fri, 14 Aug 2026 05:59:26 +0000 Message-Id: <20260814055926.C847E1F000E9@smtp.kernel.org> Precedence: bulk X-Mailing-List: devicetree@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Thank you for your contribution! Sashiko AI review found 4 potential issue(= s) to consider: New issues: - [High] Checking !dwc->gadget_driver in dwc3_rockchip_vbus_handler breaks = the UDC core's VBUS state tracking, defeating the patch's intended PM resum= e logic. - [High] TOCTOU race in dwc3_rockchip_vbus_handler leading to Use-After-Fre= e of gadget and UDC structures. Pre-existing issues: - [High] Using asynchronous pm_runtime_put_autosuspend() in the device remo= val path introduces race conditions. - [High] Mishandling of -EINVAL from pm_runtime_get_if_active() causes PM u= sage count underflow and unsafe MMIO access without clocks. -- --- Patch [32]: [PATCH v14 32/38] usb: dwc3: rockchip: fix USB-C reconnect = in gadget mode --- commit 9dbfd69b985e240b0787670a034f6b9c37a180d0 Author: Sebastian Reichel usb: dwc3: rockchip: fix USB-C reconnect in gadget mode When USB-C is configured in gadget mode and the cable is unplugged the USB controller is suspended. This patch triggers a runtime PM resume when the role is changed to fix an issue where the controller stays suspended and the port status remains not-attached after reconnecting. > diff --git a/drivers/usb/dwc3/dwc3-rockchip.c b/drivers/usb/dwc3/dwc3-roc= kchip.c > index 9e91e5f7e53d6..246d7dcafc68f 100644 > --- a/drivers/usb/dwc3/dwc3-rockchip.c > +++ b/drivers/usb/dwc3/dwc3-rockchip.c > @@ -25,8 +25,17 @@ struct dwc3_rockchip { > struct dwc3 dwc; > struct dwc3_rk_phy_nb usb3_phy_nb[DWC3_USB3_MAX_PORTS]; > u8 phy_reset_active; > + enum usb_role role; > }; > =20 > +static void dwc3_rockchip_vbus_handler(struct dwc3 *dwc, bool present) > +{ > + if (!dwc->gadget || !dwc->gadget_driver) > + return; [Severity: High] Does this early return break the UDC core's VBUS state tracking when a gadg= et driver is not yet bound? If the system boots with the cable unplugged and no gadget driver is loaded, this returns early and drops the unplug event. The UDC core's udc->vbus wou= ld remain true. When the gadget driver is later loaded, this true state would cause a premature pullup that wakes the device but then lets it autosuspend. When t= he cable is actually plugged in later, the UDC core might see the state hasn't changed and skip the pullup, meaning the device never receives the PM resume needed to detect the connection. [Severity: High] Can this lead to a use-after-free of the gadget and UDC structures? This function is called locklessly from the asynchronous PHY notifier dwc3_usb3_phy_notify(). If a concurrent role switch occurs (like DEVICE to HOST), dwc3_gadget_exit() could be freeing the gadget structure under dwc->mutex: dwc3_rockchip_vbus_handler() if (!dwc->gadget || !dwc->gadget_driver) Concurrent dwc3_gadget_exit() usb_put_gadget() -> kfree(gadget) Would this result in the notifier dereferencing a freed gadget pointer when it calls usb_udc_vbus_handler() below? > + > + usb_udc_vbus_handler(dwc->gadget, present); > +} > + [ ... ] > @@ -57,6 +66,8 @@ static int dwc3_usb3_phy_notify(struct notifier_block *= nb, > if (!ret) > return NOTIFY_OK; [Severity: High] This is a pre-existing issue, but does this check properly handle the -EINVAL return from pm_runtime_get_if_active()? pm_runtime_get_if_active() returns -EINVAL when runtime PM is disabled. By checking if (!ret), the -EINVAL case falls through and allows the code to proceed. This can cause unsafe MMIO access without clocks. Additionally, in the PHY_NOTIFY_POST_RESET case, pm_runtime_put_autosuspend= () is called unconditionally: dwc3_usb3_phy_notify() { ... case PHY_NOTIFY_POST_RESET: ... pm_runtime_put_autosuspend(dwc->dev); break; } Since pm_runtime_put_autosuspend() calls rpm_drop_usage_count(), this would decrement the usage count and cause an underflow if the corresponding get failed with -EINVAL. > + dwc3_rockchip_vbus_handler(dwc, false); > + > /* > * Assert USB3 PHY soft reset within DWC3 before the external [ ... ] > @@ -130,7 +144,16 @@ static int dwc3_rk_phy_register_notifiers(struct dwc= 3 *dwc) > return devm_add_action_or_reset(dwc->dev, dwc3_rk_phy_unregister_notifi= ers, dwc_rk); > } [Severity: High] This isn't a bug introduced by this patch, but does the cleanup function dwc3_rk_phy_unregister_notifiers() safely handle device removal? The cleanup function executes during devres teardown: dwc3_rk_phy_unregister_notifiers() { ... for (i =3D 0; i < dwc->num_usb3_ports; i++) { if (dwc_rk->phy_reset_active & BIT(i)) pm_runtime_put_autosuspend(dwc->dev); } } Since this runs during device removal, the asynchronous suspend could fire after device memory is freed or during bus teardown. Should this use pm_runtime_put_sync() instead to ensure hardware is in the correct state before removal completes? --=20 Sashiko AI review =C2=B7 https://sashiko.dev/#/patchset/20260813-rockchip-u= sbdp-cleanup-v14-0-b5ad9c68fa11@collabora.com?part=3D32