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 4C710C88E4D for ; Fri, 11 Sep 2026 22:12:19 +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:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Message-ID: Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:References: List-Owner; bh=dr4kTFi/Bl7v/uXXkSoBnkVWtkU1qSQLLKFVw8YaRSs=; b=f9fR2zwrYEyPkD YEV/BHqexVLb3GhqhK0P5PrLc7Sq6gCJk9RNJmWICey6vBi9GXFg7wJ+G9VVYy8SVUVRwWTGJqrvN NutsobVQG9uEQhUW8qK1nMaxcdX+LVv3w4TFVdOnJXrOVvkM848/IqRqhYo5syHns00UttovkuicT AXGEJ29DrEALcCGicpL8HRl1phQsAxio4ZKItDvUeFMJ2S5ueoFVwjNPAR6Dvsr8qClHr35bn5fUR n+3EpnXPXsJUKxXaDXe/D+fCi0yGAXt+R/9tdxlTZkGZ0OYm7671itcPnvVx2ekgiTl9ETyuxA50q qhDxgtlVFqHPjFGPIbWg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1x59Ti-00000000EVV-2nQd; Fri, 11 Sep 2026 22:12:14 +0000 Received: from tor.source.kernel.org ([172.105.4.254]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1x59Tg-00000000EUu-0uVh; Fri, 11 Sep 2026 22:12:12 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id 500FF60008; Fri, 11 Sep 2026 22:12:11 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id CD6811F000FF; Fri, 11 Sep 2026 22:12:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1789164731; bh=zcSpC8B/zBe1QBiSP3SsQ8IbOXdwAlEg8XGj9L10bq8=; h=Date:From:To:Cc:Subject:In-Reply-To; b=fpZSM3z6PJ9swFzsvH+djv6QNuc3r3Jbh6fc5fg1plDIs1WScdIHvAlLBKslHFOpC VUlgeo0f4KrBy7cqz2x9XD+Eh3NSgeWTi4XevOllxU7aRx6le8EGCRlOn+NRS1y7ZT GYBZJbc5xO7X6hzpn+Zvxucqhh1evUkZ/RnAsEuHLV1vwBDcR/+mcWL3e5UX0jetdV yVMQfWSmiYNtJBa+MBKplM6FwGvkAsIabg7ccf5NsRaHmsVooL7N1AKbaAWG/Rv2bV 0AwWtnXJG/bkaR0cMvSqKCps8HWA3DXqOgv3MqLk2Vx/pAe1cBKiOZbR7fWWy90N/G b2VIe389tv9qg== Date: Fri, 11 Sep 2026 17:12:09 -0500 From: Bjorn Helgaas To: Vladimir Oltean Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-arm-msm@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-tegra@vger.kernel.org, Bjorn Helgaas , Manivannan Sadhasivam , Lorenzo Pieralisi , Krzysztof =?utf-8?Q?Wilczy=C5=84ski?= , Rob Herring , Vignesh Raghavendra , Siddharth Vadapalli , Felix Gu Subject: Re: [PATCH v9 3/3] PCI: Remove device links to PHY Message-ID: <20260911221209.GA587622@bhelgaas> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20260810124315.433448-4-vladimir.oltean@nxp.com> X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org WytjYyBGZWxpeCwgYXV0aG9yIG9mIGRldmljZSBsaW5rIGxlYWsgZml4ZXNdCgpPbiBNb24sIEF1 ZyAxMCwgMjAyNiBhdCAwMzo0MzoxNVBNICswMzAwLCBWbGFkaW1pciBPbHRlYW4gd3JvdGU6Cj4g VGhpcyBpcyBwcmFjdGljYWxseSBhIGZ1bGwgcmV2ZXJ0IG9mIGNvbW1pdAo+IDdhNGRiNjU2YTYz NSAoIlBDSTogZHJhN3h4OiBDcmVhdGUgZnVuY3Rpb25hbCBkZXBlbmRlbmN5IGJldHdlZW4gUENJ ZSBhbmQgUEhZIikKPiBhbmQgYSBwYXJ0aWFsIHJldmVydCBvZiB0aGUgZGV2aWNlIGxpbmsgcGll Y2VzIGZyb20gY29tbWl0cwo+IGRmYjgwNTM0NjkyZCAoIlBDSTogY2FkZW5jZTogQWRkIGdlbmVy aWMgUEhZIHN1cHBvcnQgdG8gaG9zdCBhbmQgRVAgZHJpdmVycyIpCj4gNDkyMjkyMzhhYjQ3ICgi UENJOiBrZXlzdG9uZTogQ2xlYW51cCBQSFkgaGFuZGxpbmciKQoKQ2FuIHdlIHNwbGl0IHRoaXMg aW50byB0aHJlZSBjb21taXRzIChkcmE3eHgsIGNhZGVuY2UsIGtleXN0b25lKT8KVGhpcyBjb21i aW5lZCBjb21taXQgaXMgYXBwbGllZCBvbiB0aGUgcGNpL2NvbnRyb2xsZXIvbWlzYyBicmFuY2gs IGFuZAp0aGVuIHdlIGhhdmUgY29uZmxpY3RzIGJldHdlZW4gdGhhdCBicmFuY2ggYW5kCnBjaS9j b250cm9sbGVyL2R3Yy1kcmE3eHguCgpJIHRoaW5rIGlmIHdlIHNwbGl0IHRoaXMgaW50byB0aHJl ZSBzZXBhcmF0ZSBjb21taXRzLCB3ZSBjYW4gYXBwbHkgdGhlCmRyYTd4eCBvbmUgb24gcGNpL2Nv bnRyb2xsZXIvZHdjLWRyYTd4eCBhbmQgZHJvcCBGZWxpeCdzIGRldmljZSBsaW5rCmxlYWsgZml4 ZXMgYmVsb3cgc28gd2UgZG9uJ3QgY2x1dHRlciB0aGUgZ2l0IGhpc3Rvcnkgd2l0aCBjb25mbGlj dApyZXNvbHV0aW9ucyBvciBpcnJlbGV2YW50IGNvbW1pdHM6CgogIGh0dHBzOi8vZ2l0Lmtlcm5l bC5vcmcvY2dpdC9saW51eC9rZXJuZWwvZ2l0L3BjaS9wY2kuZ2l0L2NvbW1pdC8/aWQ9MmI5YTAz NmI1NjhjICgiUENJOiBkcmE3eHg6IEZpeCBkZXZpY2UgbGluayBsZWFrIHdoZW4gZGV2bV9waHlf Z2V0KCkgZmFpbHMiKQoKICBodHRwczovL2dpdC5rZXJuZWwub3JnL2NnaXQvbGludXgva2VybmVs L2dpdC9wY2kvcGNpLmdpdC9jb21taXQvP2lkPWJkZmRmNjU0YjRiMiAoIlBDSTogZHJhN3h4OiBG aXggZGV2aWNlIGxpbmtzIGxlYWsgd2hlbiBkcmE3eHhfcGNpZV9lbmFibGVfcGh5KCkgZmFpbHMi KQoKPiBUaGUgdHJvdWJsZSB3aXRoIHRoZXNlIGNvbW1pdHMgaXMgdGhhdCB0aGV5IGRlcmVmZXJl bmNlIGZpZWxkcyBpbnNpZGUKPiBzdHJ1Y3QgcGh5IGZyb20gYSBjb25zdW1lciBkcml2ZXIsIHdo aWNoIHdpbGwgYmVjb21lIG5vIGxvbmdlciBwb3NzaWJsZS4KPiAKPiBTaW5jZSBjb21taXQgOTg3 MzUxZTFlYTc3ICgicGh5OiBjb3JlOiBBZGQgY29uc3VtZXIgZGV2aWNlIGxpbmsKPiBzdXBwb3J0 IikgZnJvbSAyMDE5LCB0aGUgUEhZIGNvcmUgYWxzbyBhZGRzIGEgZGV2aWNlIGxpbmsgdG8gb3Jk ZXIgUEhZCj4gcHJvdmlkZXIgYW5kIGNvbnN1bWVyIHN1c3BlbmQvcmVzdW1lIG9wZXJhdGlvbnMu IEFsbCByZXZlcnRlZCBjb21taXRzCj4gYXJlIGZyb20gMjAxNy0yMDE4LCBhbmQgd2hhdCB0aGV5 IGRvIHNob3VsZCBhY3R1YWxseSBiZSByZWR1bmRhbnQgbm93Lgo+IAo+IFNpZ25lZC1vZmYtYnk6 IFZsYWRpbWlyIE9sdGVhbiA8dmxhZGltaXIub2x0ZWFuQG54cC5jb20+Cj4gQWNrZWQtYnk6IEJq b3JuIEhlbGdhYXMgPGJoZWxnYWFzQGdvb2dsZS5jb20+Cj4gUmV2aWV3ZWQtYnk6IE1hbml2YW5u YW4gU2FkaGFzaXZhbSA8bWFuaUBrZXJuZWwub3JnPgo+IC0tLQo+IENjOiBMb3JlbnpvIFBpZXJh bGlzaSA8bHBpZXJhbGlzaUBrZXJuZWwub3JnPgo+IENjOiAiS3J6eXN6dG9mIFdpbGN6ecWEc2tp IiA8a3dpbGN6eW5za2lAa2VybmVsLm9yZz4KPiBDYzogTWFuaXZhbm5hbiBTYWRoYXNpdmFtIDxt YW5pQGtlcm5lbC5vcmc+Cj4gQ2M6IFJvYiBIZXJyaW5nIDxyb2JoQGtlcm5lbC5vcmc+Cj4gQ2M6 IEJqb3JuIEhlbGdhYXMgPGJoZWxnYWFzQGdvb2dsZS5jb20+Cj4gQ2M6IFZpZ25lc2ggUmFnaGF2 ZW5kcmEgPHZpZ25lc2hyQHRpLmNvbT4KPiBDYzogU2lkZGhhcnRoIFZhZGFwYWxsaSA8cy12YWRh cGFsbGlAdGkuY29tPgo+IAo+IHY4LT52OTogbm9uZQo+IHY3LT52ODogb25seSBjb250ZXh0IGNo YW5nZSAtICJyZXR1cm4gMCIgYmVjYW1lICJyZXR1cm4gcmV0IiBmb3IKPiAgICAgICAgIGNkbnNf cGxhdF9wY2llX3Byb2JlKCkKPiB2Ni0+djc6IG5vbmUKPiB2NS0+djY6IGNvbGxlY3QgdGFnIGZy b20gTWFuaXZhbm5hbiBTYWRoYXNpdmFtCj4gdjMtPnY1OiBub25lCj4gdjItPnYzOgo+IC0gcmVt b3ZlIGRhbmdsaW5nIHNldCBidXQgdW51c2VkIHBoeV9jb3VudCBsb2NhbCB2YXJpYWJsZSBpbgo+ ICAgY2Ruc19wbGF0X3BjaWVfcHJvYmUoKQo+IHYxLT52MjoKPiAtIGZ1bGx5IHJlbW92ZSBzdHJ1 Y3QgZGV2aWNlIGxpbmsgKipsaW5rIGZyb20gc3RydWN0IGNkbnNfcGNpZSBhbmQgZnJvbQo+ICAg Y2Ruc19wbGF0X3BjaWVfcHJvYmUoKSBlcnJvciBwYXRoCj4gLSBjb2xsZWN0IHRhZyBmcm9tIEJq b3JuIEhlbGdhYXMKPiAtIGFkanVzdCBjb21taXQgdGl0bGUKPiAtLS0KPiAgLi4uL2NvbnRyb2xs ZXIvY2FkZW5jZS9wY2llLWNhZGVuY2UtcGxhdC5jICAgIHwgIDQgLS0tCj4gIGRyaXZlcnMvcGNp L2NvbnRyb2xsZXIvY2FkZW5jZS9wY2llLWNhZGVuY2UuYyB8IDE2ICstLS0tLS0tLS0KPiAgZHJp dmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL3BjaWUtY2FkZW5jZS5oIHwgIDIgLS0KPiAgZHJp dmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpLWRyYTd4eC5jICAgICAgIHwgMTYgLS0tLS0tLS0t LQo+ICBkcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2kta2V5c3RvbmUuYyAgICAgfCAzMSAr KystLS0tLS0tLS0tLS0tLS0tCj4gIDUgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA2 NCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9j YWRlbmNlL3BjaWUtY2FkZW5jZS1wbGF0LmMgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVu Y2UvcGNpZS1jYWRlbmNlLXBsYXQuYwo+IGluZGV4IDhhZWQ4YjRjM2UxMS4uMTNlZGM2YmUyMWY1 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9wY2llLWNhZGVu Y2UtcGxhdC5jCj4gKysrIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL3BjaWUtY2Fk ZW5jZS1wbGF0LmMKPiBAQCAtNDEsNyArNDEsNiBAQCBzdGF0aWMgaW50IGNkbnNfcGxhdF9wY2ll X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gIAlzdHJ1Y3QgcGNpX2hvc3Rf YnJpZGdlICpicmlkZ2U7Cj4gIAlzdHJ1Y3QgY2Ruc19wY2llX2VwICplcDsKPiAgCXN0cnVjdCBj ZG5zX3BjaWVfcmMgKnJjOwo+IC0JaW50IHBoeV9jb3VudDsKPiAgCWJvb2wgaXNfcmM7Cj4gIAlp bnQgcmV0Owo+ICAKPiBAQCAtMTIyLDkgKzEyMSw2IEBAIHN0YXRpYyBpbnQgY2Ruc19wbGF0X3Bj aWVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAgCXBtX3J1bnRpbWVfcHV0 X3N5bmMoZGV2KTsKPiAgCXBtX3J1bnRpbWVfZGlzYWJsZShkZXYpOwo+ICAJY2Ruc19wY2llX2Rp c2FibGVfcGh5KGNkbnNfcGxhdF9wY2llLT5wY2llKTsKPiAtCXBoeV9jb3VudCA9IGNkbnNfcGxh dF9wY2llLT5wY2llLT5waHlfY291bnQ7Cj4gLQl3aGlsZSAocGh5X2NvdW50LS0pCj4gLQkJZGV2 aWNlX2xpbmtfZGVsKGNkbnNfcGxhdF9wY2llLT5wY2llLT5saW5rW3BoeV9jb3VudF0pOwo+ICAK PiAgCXJldHVybiByZXQ7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvY29udHJvbGxl ci9jYWRlbmNlL3BjaWUtY2FkZW5jZS5jIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNl L3BjaWUtY2FkZW5jZS5jCj4gaW5kZXggYTFlYWRhNTZlZGJhLi4wYWM5ODAyNDk5NDEgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL3BjaWUtY2FkZW5jZS5jCj4g KysrIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL3BjaWUtY2FkZW5jZS5jCj4gQEAg LTIyMiw3ICsyMjIsNiBAQCBpbnQgY2Ruc19wY2llX2luaXRfcGh5KHN0cnVjdCBkZXZpY2UgKmRl diwgc3RydWN0IGNkbnNfcGNpZSAqcGNpZSkKPiAgCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBk ZXYtPm9mX25vZGU7Cj4gIAlpbnQgcGh5X2NvdW50Owo+ICAJc3RydWN0IHBoeSAqKnBoeTsKPiAt CXN0cnVjdCBkZXZpY2VfbGluayAqKmxpbms7Cj4gIAlpbnQgaTsKPiAgCWludCByZXQ7Cj4gIAlj b25zdCBjaGFyICpuYW1lOwo+IEBAIC0yMzgsMTAgKzIzNyw2IEBAIGludCBjZG5zX3BjaWVfaW5p dF9waHkoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgY2Ruc19wY2llICpwY2llKQo+ICAJaWYg KCFwaHkpCj4gIAkJcmV0dXJuIC1FTk9NRU07Cj4gIAo+IC0JbGluayA9IGRldm1fa2NhbGxvYyhk ZXYsIHBoeV9jb3VudCwgc2l6ZW9mKCpsaW5rKSwgR0ZQX0tFUk5FTCk7Cj4gLQlpZiAoIWxpbmsp Cj4gLQkJcmV0dXJuIC1FTk9NRU07Cj4gLQo+ICAJZm9yIChpID0gMDsgaSA8IHBoeV9jb3VudDsg aSsrKSB7Cj4gIAkJb2ZfcHJvcGVydHlfcmVhZF9zdHJpbmdfaW5kZXgobnAsICJwaHktbmFtZXMi LCBpLCAmbmFtZSk7Cj4gIAkJcGh5W2ldID0gZGV2bV9waHlfZ2V0KGRldiwgbmFtZSk7Cj4gQEAg LTI0OSwxNyArMjQ0LDEwIEBAIGludCBjZG5zX3BjaWVfaW5pdF9waHkoc3RydWN0IGRldmljZSAq ZGV2LCBzdHJ1Y3QgY2Ruc19wY2llICpwY2llKQo+ICAJCQlyZXQgPSBQVFJfRVJSKHBoeVtpXSk7 Cj4gIAkJCWdvdG8gZXJyX3BoeTsKPiAgCQl9Cj4gLQkJbGlua1tpXSA9IGRldmljZV9saW5rX2Fk ZChkZXYsICZwaHlbaV0tPmRldiwgRExfRkxBR19TVEFURUxFU1MpOwo+IC0JCWlmICghbGlua1tp XSkgewo+IC0JCQlkZXZtX3BoeV9wdXQoZGV2LCBwaHlbaV0pOwo+IC0JCQlyZXQgPSAtRUlOVkFM Owo+IC0JCQlnb3RvIGVycl9waHk7Cj4gLQkJfQo+ICAJfQo+ICAKPiAgCXBjaWUtPnBoeV9jb3Vu dCA9IHBoeV9jb3VudDsKPiAgCXBjaWUtPnBoeSA9IHBoeTsKPiAtCXBjaWUtPmxpbmsgPSBsaW5r Owo+ICAKPiAgCXJldCA9ICBjZG5zX3BjaWVfZW5hYmxlX3BoeShwY2llKTsKPiAgCWlmIChyZXQp Cj4gQEAgLTI2OCwxMCArMjU2LDggQEAgaW50IGNkbnNfcGNpZV9pbml0X3BoeShzdHJ1Y3QgZGV2 aWNlICpkZXYsIHN0cnVjdCBjZG5zX3BjaWUgKnBjaWUpCj4gIAlyZXR1cm4gMDsKPiAgCj4gIGVy cl9waHk6Cj4gLQl3aGlsZSAoLS1pID49IDApIHsKPiAtCQlkZXZpY2VfbGlua19kZWwobGlua1tp XSk7Cj4gKwl3aGlsZSAoLS1pID49IDApCj4gIAkJZGV2bV9waHlfcHV0KGRldiwgcGh5W2ldKTsK PiAtCX0KPiAgCj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNp L2NvbnRyb2xsZXIvY2FkZW5jZS9wY2llLWNhZGVuY2UuaCBiL2RyaXZlcnMvcGNpL2NvbnRyb2xs ZXIvY2FkZW5jZS9wY2llLWNhZGVuY2UuaAo+IGluZGV4IGI0ZDUxYWRlZmVhNS4uNGE5NmUxODY5 ZTUzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9wY2llLWNh ZGVuY2UuaAo+ICsrKyBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9wY2llLWNhZGVu Y2UuaAo+IEBAIC0yNjAsNyArMjYwLDYgQEAgc3RydWN0IGNkbnNfcGxhdF9wY2llX29mX2RhdGEg ewo+ICAgKiBAaXNfaHBhOiBpbmRpY2F0ZXMgaWYgdGhlIGFyY2hpdGVjdHVyZSBpcyBIUEEKPiAg ICogQHBoeV9jb3VudDogbnVtYmVyIG9mIHN1cHBvcnRlZCBQSFkgZGV2aWNlcwo+ICAgKiBAcGh5 OiBsaXN0IG9mIHBvaW50ZXJzIHRvIHNwZWNpZmljIFBIWSBjb250cm9sIGJsb2Nrcwo+IC0gKiBA bGluazogbGlzdCBvZiBwb2ludGVycyB0byBjb3JyZXNwb25kaW5nIGRldmljZSBsaW5rIHJlcHJl c2VudGF0aW9ucwo+ICAgKiBAb3BzOiBQbGF0Zm9ybS1zcGVjaWZpYyBvcHMgdG8gY29udHJvbCB2 YXJpb3VzIGlucHV0cyBmcm9tIENhZGVuY2UgUENJZQo+ICAgKiAgICAgICB3cmFwcGVyCj4gICAq IEBjZG5zX3BjaWVfcmVnX29mZnNldHM6IFJlZ2lzdGVyIGJhbmsgb2Zmc2V0cyBmb3IgZGlmZmVy ZW50IFNvQwo+IEBAIC0yNzYsNyArMjc1LDYgQEAgc3RydWN0IGNkbnNfcGNpZSB7Cj4gIAlib29s CQkJCSAgICAgaXNfaHBhOwo+ICAJaW50CQkJICAgICAgICAgICAgIHBoeV9jb3VudDsKPiAgCXN0 cnVjdCBwaHkJCSAgICAgICAgICAgICAqKnBoeTsKPiAtCXN0cnVjdCBkZXZpY2VfbGluawkgICAg ICAgICAgICAgKipsaW5rOwo+ICAJY29uc3QgIHN0cnVjdCBjZG5zX3BjaWVfb3BzICAgICAgICAg ICpvcHM7Cj4gIAljb25zdCAgc3RydWN0IGNkbnNfcGxhdF9wY2llX29mX2RhdGEgKmNkbnNfcGNp ZV9yZWdfb2Zmc2V0czsKPiAgCWludAkJCQkgICAgIG1heF9saW5rX3NwZWVkOwo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2ktZHJhN3h4LmMgYi9kcml2ZXJzL3Bj aS9jb250cm9sbGVyL2R3Yy9wY2ktZHJhN3h4LmMKPiBpbmRleCAzZmM4ODk5NDRmMDIuLmJmNmM1 Yjg2YmIyNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2ktZHJh N3h4LmMKPiArKysgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2ktZHJhN3h4LmMKPiBA QCAtOSw3ICs5LDYgQEAKPiAgCj4gICNpbmNsdWRlIDxsaW51eC9jbGsuaD4KPiAgI2luY2x1ZGUg PGxpbnV4L2RlbGF5Lmg+Cj4gLSNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4KPiAgI2luY2x1ZGUg PGxpbnV4L2Vyci5oPgo+ICAjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+Cj4gICNpbmNsdWRl IDxsaW51eC9pcnEuaD4KPiBAQCAtNjc4LDcgKzY3Nyw2IEBAIHN0YXRpYyBpbnQgZHJhN3h4X3Bj aWVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAgCWludCBpOwo+ICAJaW50 IHBoeV9jb3VudDsKPiAgCXN0cnVjdCBwaHkgKipwaHk7Cj4gLQlzdHJ1Y3QgZGV2aWNlX2xpbmsg KipsaW5rOwo+ICAJdm9pZCBfX2lvbWVtICpiYXNlOwo+ICAJc3RydWN0IGR3X3BjaWUgKnBjaTsK PiAgCXN0cnVjdCBkcmE3eHhfcGNpZSAqZHJhN3h4Owo+IEBAIC03MjYsMTAgKzcyNCw2IEBAIHN0 YXRpYyBpbnQgZHJhN3h4X3BjaWVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikK PiAgCWlmICghcGh5KQo+ICAJCXJldHVybiAtRU5PTUVNOwo+ICAKPiAtCWxpbmsgPSBkZXZtX2tj YWxsb2MoZGV2LCBwaHlfY291bnQsIHNpemVvZigqbGluayksIEdGUF9LRVJORUwpOwo+IC0JaWYg KCFsaW5rKQo+IC0JCXJldHVybiAtRU5PTUVNOwo+IC0KPiAgCWRyYTd4eC0+Y2xrID0gZGV2bV9j bGtfZ2V0X29wdGlvbmFsKGRldiwgTlVMTCk7Cj4gIAlpZiAoSVNfRVJSKGRyYTd4eC0+Y2xrKSkK PiAgCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIoZHJhN3h4LT5jbGspLAo+IEBA IC03NDQsMTIgKzczOCw2IEBAIHN0YXRpYyBpbnQgZHJhN3h4X3BjaWVfcHJvYmUoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldikKPiAgCQlwaHlbaV0gPSBkZXZtX3BoeV9nZXQoZGV2LCBuYW1l KTsKPiAgCQlpZiAoSVNfRVJSKHBoeVtpXSkpCj4gIAkJCXJldHVybiBQVFJfRVJSKHBoeVtpXSk7 Cj4gLQo+IC0JCWxpbmtbaV0gPSBkZXZpY2VfbGlua19hZGQoZGV2LCAmcGh5W2ldLT5kZXYsIERM X0ZMQUdfU1RBVEVMRVNTKTsKPiAtCQlpZiAoIWxpbmtbaV0pIHsKPiAtCQkJcmV0ID0gLUVJTlZB TDsKPiAtCQkJZ290byBlcnJfbGluazsKPiAtCQl9Cj4gIAl9Cj4gIAo+ICAJZHJhN3h4LT5iYXNl ID0gYmFzZTsKPiBAQCAtODUxLDEwICs4MzksNiBAQCBzdGF0aWMgaW50IGRyYTd4eF9wY2llX3By b2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gIAlwbV9ydW50aW1lX2Rpc2FibGUo ZGV2KTsKPiAgCWRyYTd4eF9wY2llX2Rpc2FibGVfcGh5KGRyYTd4eCk7Cj4gIAo+IC1lcnJfbGlu azoKPiAtCXdoaWxlICgtLWkgPj0gMCkKPiAtCQlkZXZpY2VfbGlua19kZWwobGlua1tpXSk7Cj4g LQo+ICAJcmV0dXJuIHJldDsKPiAgfQo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvY29u dHJvbGxlci9kd2MvcGNpLWtleXN0b25lLmMgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9w Y2kta2V5c3RvbmUuYwo+IGluZGV4IGU5YjAxMmE1ZWE5YS4uODA4NWM0ZjYxNDAzIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaS1rZXlzdG9uZS5jCj4gKysrIGIv ZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpLWtleXN0b25lLmMKPiBAQCAtMTMwLDcgKzEz MCw2IEBAIHN0cnVjdCBrZXlzdG9uZV9wY2llIHsKPiAgCWludAkJCW51bV9sYW5lczsKPiAgCXUz MgkJCW51bV92aWV3cG9ydDsKPiAgCXN0cnVjdCBwaHkJCSoqcGh5Owo+IC0Jc3RydWN0IGRldmlj ZV9saW5rCSoqbGluazsKPiAgCXN0cnVjdAkJCWRldmljZV9ub2RlICptc2lfaW50Y19ucDsKPiAg CXN0cnVjdCBpcnFfZG9tYWluCSppbnR4X2lycV9kb21haW47Cj4gIAlzdHJ1Y3QgZGV2aWNlX25v ZGUJKm5wOwo+IEBAIC0xMTMwLDcgKzExMjksNiBAQCBzdGF0aWMgaW50IGtzX3BjaWVfcHJvYmUo c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAgCWVudW0gZHdfcGNpZV9kZXZpY2VfbW9k ZSBtb2RlOwo+ICAJc3RydWN0IGR3X3BjaWUgKnBjaTsKPiAgCXN0cnVjdCBrZXlzdG9uZV9wY2ll ICprc19wY2llOwo+IC0Jc3RydWN0IGRldmljZV9saW5rICoqbGluazsKPiAgCXN0cnVjdCBncGlv X2Rlc2MgKmdwaW9kOwo+ICAJc3RydWN0IHJlc291cmNlICpyZXM7Cj4gIAl2b2lkIF9faW9tZW0g KmJhc2U7Cj4gQEAgLTEyMDEsMzEgKzExOTksMTcgQEAgc3RhdGljIGludCBrc19wY2llX3Byb2Jl KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gIAlpZiAoIXBoeSkKPiAgCQlyZXR1cm4g LUVOT01FTTsKPiAgCj4gLQlsaW5rID0gZGV2bV9rY2FsbG9jKGRldiwgbnVtX2xhbmVzLCBzaXpl b2YoKmxpbmspLCBHRlBfS0VSTkVMKTsKPiAtCWlmICghbGluaykKPiAtCQlyZXR1cm4gLUVOT01F TTsKPiAtCj4gIAlmb3IgKGkgPSAwOyBpIDwgbnVtX2xhbmVzOyBpKyspIHsKPiAgCQlzbnByaW50 ZihuYW1lLCBzaXplb2YobmFtZSksICJwY2llLXBoeSVkIiwgaSk7Cj4gIAkJcGh5W2ldID0gZGV2 bV9waHlfb3B0aW9uYWxfZ2V0KGRldiwgbmFtZSk7Cj4gIAkJaWYgKElTX0VSUihwaHlbaV0pKSB7 Cj4gIAkJCXJldCA9IFBUUl9FUlIocGh5W2ldKTsKPiAtCQkJZ290byBlcnJfbGluazsKPiAtCQl9 Cj4gLQo+IC0JCWlmICghcGh5W2ldKQo+IC0JCQljb250aW51ZTsKPiAtCj4gLQkJbGlua1tpXSA9 IGRldmljZV9saW5rX2FkZChkZXYsICZwaHlbaV0tPmRldiwgRExfRkxBR19TVEFURUxFU1MpOwo+ IC0JCWlmICghbGlua1tpXSkgewo+IC0JCQlyZXQgPSAtRUlOVkFMOwo+IC0JCQlnb3RvIGVycl9s aW5rOwo+ICsJCQlnb3RvIGVycjsKPiAgCQl9Cj4gIAl9Cj4gIAo+ICAJa3NfcGNpZS0+bnAgPSBu cDsKPiAgCWtzX3BjaWUtPnBjaSA9IHBjaTsKPiAtCWtzX3BjaWUtPmxpbmsgPSBsaW5rOwo+ICAJ a3NfcGNpZS0+bnVtX2xhbmVzID0gbnVtX2xhbmVzOwo+ICAJa3NfcGNpZS0+cGh5ID0gcGh5Owo+ ICAKPiBAQCAtMTIzNSw3ICsxMjE5LDcgQEAgc3RhdGljIGludCBrc19wY2llX3Byb2JlKHN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gIAkJcmV0ID0gUFRSX0VSUihncGlvZCk7Cj4gIAkJ aWYgKHJldCAhPSAtRVBST0JFX0RFRkVSKQo+ICAJCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBn ZXQgcmVzZXQgR1BJT1xuIik7Cj4gLQkJZ290byBlcnJfbGluazsKPiArCQlnb3RvIGVycjsKPiAg CX0KPiAgCj4gIAkvKiBPYnRhaW4gcmVmZXJlbmNlcyB0byB0aGUgUEhZcyAqLwo+IEBAIC0xMjUw LDcgKzEyMzQsNyBAQCBzdGF0aWMgaW50IGtzX3BjaWVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2Rl dmljZSAqcGRldikKPiAgCj4gIAlpZiAocmV0KSB7Cj4gIAkJZGV2X2VycihkZXYsICJmYWlsZWQg dG8gZW5hYmxlIHBoeVxuIik7Cj4gLQkJZ290byBlcnJfbGluazsKPiArCQlnb3RvIGVycjsKPiAg CX0KPiAgCj4gIAlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBrc19wY2llKTsKPiBAQCAtMTMz NywyNSArMTMyMSwxOCBAQCBzdGF0aWMgaW50IGtzX3BjaWVfcHJvYmUoc3RydWN0IHBsYXRmb3Jt X2RldmljZSAqcGRldikKPiAgCXBtX3J1bnRpbWVfZGlzYWJsZShkZXYpOwo+ICAJa3NfcGNpZV9k aXNhYmxlX3BoeShrc19wY2llKTsKPiAgCj4gLWVycl9saW5rOgo+IC0Jd2hpbGUgKC0taSA+PSAw ICYmIGxpbmtbaV0pCj4gLQkJZGV2aWNlX2xpbmtfZGVsKGxpbmtbaV0pOwo+IC0KPiArZXJyOgo+ ICAJcmV0dXJuIHJldDsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQga3NfcGNpZV9yZW1vdmUoc3Ry dWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAgewo+ICAJc3RydWN0IGtleXN0b25lX3BjaWUg KmtzX3BjaWUgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKPiAtCXN0cnVjdCBkZXZpY2Vf bGluayAqKmxpbmsgPSBrc19wY2llLT5saW5rOwo+IC0JaW50IG51bV9sYW5lcyA9IGtzX3BjaWUt Pm51bV9sYW5lczsKPiAgCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7Cj4gIAo+ICAJ cG1fcnVudGltZV9wdXQoZGV2KTsKPiAgCXBtX3J1bnRpbWVfZGlzYWJsZShkZXYpOwo+ICAJa3Nf cGNpZV9kaXNhYmxlX3BoeShrc19wY2llKTsKPiAtCXdoaWxlIChudW1fbGFuZXMtLSkKPiAtCQlk ZXZpY2VfbGlua19kZWwobGlua1tudW1fbGFuZXNdKTsKPiAgfQo+ICAKPiAgc3RhdGljIHN0cnVj dCBwbGF0Zm9ybV9kcml2ZXIga3NfcGNpZV9kcml2ZXIgPSB7Cj4gLS0gCj4gMi4zNC4xCj4gCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpMaW51eC1yb2Nr Y2hpcCBtYWlsaW5nIGxpc3QKTGludXgtcm9ja2NoaXBAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRw Oi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJvY2tjaGlwCg== 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 799BBC88E50 for ; Fri, 11 Sep 2026 22:12:28 +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:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Message-ID: Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:References: List-Owner; bh=D1BM5I7nFw3Vo4zDA55/1Yu8L0fr89R/aeXkWilWdYo=; b=TAY6JWBa5NWPZH 2IcOGnBMk1tH3ONH9/A/4xCrS2+S7S9I9/sbO6anJNZ3thXYQv+k9e363nMkJaoIXyieKsAtnd6SI LU/NfKdRXC4w9Ilo+LuNUAJrGoaV00pzif2+/rQ6VLYaGy51gmmXlLUYqblrGX0k3QainUR2u8qg0 b6qgU0NJdMpKpO5E4jzazkb1uJ4B8VtFKbju1bfbm9jTw4OXZ3lvBRwLoC6QnV8DiAw0WhkCYWyHY XeGG3PfA0I00Ywd7Ne4Lf+o/evWNnfBnsQ0YNgUpIeM66A7cUPiTTXbG7crx/qVv3YL1DWWUZrCPA R4ww8Eg++WIWT8QG8HSw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1x59Ti-00000000EVR-2MN0; Fri, 11 Sep 2026 22:12:14 +0000 Received: from tor.source.kernel.org ([172.105.4.254]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1x59Tg-00000000EUu-0uVh; Fri, 11 Sep 2026 22:12:12 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id 500FF60008; Fri, 11 Sep 2026 22:12:11 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id CD6811F000FF; Fri, 11 Sep 2026 22:12:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1789164731; bh=zcSpC8B/zBe1QBiSP3SsQ8IbOXdwAlEg8XGj9L10bq8=; h=Date:From:To:Cc:Subject:In-Reply-To; b=fpZSM3z6PJ9swFzsvH+djv6QNuc3r3Jbh6fc5fg1plDIs1WScdIHvAlLBKslHFOpC VUlgeo0f4KrBy7cqz2x9XD+Eh3NSgeWTi4XevOllxU7aRx6le8EGCRlOn+NRS1y7ZT GYBZJbc5xO7X6hzpn+Zvxucqhh1evUkZ/RnAsEuHLV1vwBDcR/+mcWL3e5UX0jetdV yVMQfWSmiYNtJBa+MBKplM6FwGvkAsIabg7ccf5NsRaHmsVooL7N1AKbaAWG/Rv2bV 0AwWtnXJG/bkaR0cMvSqKCps8HWA3DXqOgv3MqLk2Vx/pAe1cBKiOZbR7fWWy90N/G b2VIe389tv9qg== Date: Fri, 11 Sep 2026 17:12:09 -0500 From: Bjorn Helgaas To: Vladimir Oltean Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-arm-msm@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-tegra@vger.kernel.org, Bjorn Helgaas , Manivannan Sadhasivam , Lorenzo Pieralisi , Krzysztof =?utf-8?Q?Wilczy=C5=84ski?= , Rob Herring , Vignesh Raghavendra , Siddharth Vadapalli , Felix Gu Subject: Re: [PATCH v9 3/3] PCI: Remove device links to PHY Message-ID: <20260911221209.GA587622@bhelgaas> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20260810124315.433448-4-vladimir.oltean@nxp.com> X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org WytjYyBGZWxpeCwgYXV0aG9yIG9mIGRldmljZSBsaW5rIGxlYWsgZml4ZXNdCgpPbiBNb24sIEF1 ZyAxMCwgMjAyNiBhdCAwMzo0MzoxNVBNICswMzAwLCBWbGFkaW1pciBPbHRlYW4gd3JvdGU6Cj4g VGhpcyBpcyBwcmFjdGljYWxseSBhIGZ1bGwgcmV2ZXJ0IG9mIGNvbW1pdAo+IDdhNGRiNjU2YTYz NSAoIlBDSTogZHJhN3h4OiBDcmVhdGUgZnVuY3Rpb25hbCBkZXBlbmRlbmN5IGJldHdlZW4gUENJ ZSBhbmQgUEhZIikKPiBhbmQgYSBwYXJ0aWFsIHJldmVydCBvZiB0aGUgZGV2aWNlIGxpbmsgcGll Y2VzIGZyb20gY29tbWl0cwo+IGRmYjgwNTM0NjkyZCAoIlBDSTogY2FkZW5jZTogQWRkIGdlbmVy aWMgUEhZIHN1cHBvcnQgdG8gaG9zdCBhbmQgRVAgZHJpdmVycyIpCj4gNDkyMjkyMzhhYjQ3ICgi UENJOiBrZXlzdG9uZTogQ2xlYW51cCBQSFkgaGFuZGxpbmciKQoKQ2FuIHdlIHNwbGl0IHRoaXMg aW50byB0aHJlZSBjb21taXRzIChkcmE3eHgsIGNhZGVuY2UsIGtleXN0b25lKT8KVGhpcyBjb21i aW5lZCBjb21taXQgaXMgYXBwbGllZCBvbiB0aGUgcGNpL2NvbnRyb2xsZXIvbWlzYyBicmFuY2gs IGFuZAp0aGVuIHdlIGhhdmUgY29uZmxpY3RzIGJldHdlZW4gdGhhdCBicmFuY2ggYW5kCnBjaS9j b250cm9sbGVyL2R3Yy1kcmE3eHguCgpJIHRoaW5rIGlmIHdlIHNwbGl0IHRoaXMgaW50byB0aHJl ZSBzZXBhcmF0ZSBjb21taXRzLCB3ZSBjYW4gYXBwbHkgdGhlCmRyYTd4eCBvbmUgb24gcGNpL2Nv bnRyb2xsZXIvZHdjLWRyYTd4eCBhbmQgZHJvcCBGZWxpeCdzIGRldmljZSBsaW5rCmxlYWsgZml4 ZXMgYmVsb3cgc28gd2UgZG9uJ3QgY2x1dHRlciB0aGUgZ2l0IGhpc3Rvcnkgd2l0aCBjb25mbGlj dApyZXNvbHV0aW9ucyBvciBpcnJlbGV2YW50IGNvbW1pdHM6CgogIGh0dHBzOi8vZ2l0Lmtlcm5l bC5vcmcvY2dpdC9saW51eC9rZXJuZWwvZ2l0L3BjaS9wY2kuZ2l0L2NvbW1pdC8/aWQ9MmI5YTAz NmI1NjhjICgiUENJOiBkcmE3eHg6IEZpeCBkZXZpY2UgbGluayBsZWFrIHdoZW4gZGV2bV9waHlf Z2V0KCkgZmFpbHMiKQoKICBodHRwczovL2dpdC5rZXJuZWwub3JnL2NnaXQvbGludXgva2VybmVs L2dpdC9wY2kvcGNpLmdpdC9jb21taXQvP2lkPWJkZmRmNjU0YjRiMiAoIlBDSTogZHJhN3h4OiBG aXggZGV2aWNlIGxpbmtzIGxlYWsgd2hlbiBkcmE3eHhfcGNpZV9lbmFibGVfcGh5KCkgZmFpbHMi KQoKPiBUaGUgdHJvdWJsZSB3aXRoIHRoZXNlIGNvbW1pdHMgaXMgdGhhdCB0aGV5IGRlcmVmZXJl bmNlIGZpZWxkcyBpbnNpZGUKPiBzdHJ1Y3QgcGh5IGZyb20gYSBjb25zdW1lciBkcml2ZXIsIHdo aWNoIHdpbGwgYmVjb21lIG5vIGxvbmdlciBwb3NzaWJsZS4KPiAKPiBTaW5jZSBjb21taXQgOTg3 MzUxZTFlYTc3ICgicGh5OiBjb3JlOiBBZGQgY29uc3VtZXIgZGV2aWNlIGxpbmsKPiBzdXBwb3J0 IikgZnJvbSAyMDE5LCB0aGUgUEhZIGNvcmUgYWxzbyBhZGRzIGEgZGV2aWNlIGxpbmsgdG8gb3Jk ZXIgUEhZCj4gcHJvdmlkZXIgYW5kIGNvbnN1bWVyIHN1c3BlbmQvcmVzdW1lIG9wZXJhdGlvbnMu IEFsbCByZXZlcnRlZCBjb21taXRzCj4gYXJlIGZyb20gMjAxNy0yMDE4LCBhbmQgd2hhdCB0aGV5 IGRvIHNob3VsZCBhY3R1YWxseSBiZSByZWR1bmRhbnQgbm93Lgo+IAo+IFNpZ25lZC1vZmYtYnk6 IFZsYWRpbWlyIE9sdGVhbiA8dmxhZGltaXIub2x0ZWFuQG54cC5jb20+Cj4gQWNrZWQtYnk6IEJq b3JuIEhlbGdhYXMgPGJoZWxnYWFzQGdvb2dsZS5jb20+Cj4gUmV2aWV3ZWQtYnk6IE1hbml2YW5u YW4gU2FkaGFzaXZhbSA8bWFuaUBrZXJuZWwub3JnPgo+IC0tLQo+IENjOiBMb3JlbnpvIFBpZXJh bGlzaSA8bHBpZXJhbGlzaUBrZXJuZWwub3JnPgo+IENjOiAiS3J6eXN6dG9mIFdpbGN6ecWEc2tp IiA8a3dpbGN6eW5za2lAa2VybmVsLm9yZz4KPiBDYzogTWFuaXZhbm5hbiBTYWRoYXNpdmFtIDxt YW5pQGtlcm5lbC5vcmc+Cj4gQ2M6IFJvYiBIZXJyaW5nIDxyb2JoQGtlcm5lbC5vcmc+Cj4gQ2M6 IEJqb3JuIEhlbGdhYXMgPGJoZWxnYWFzQGdvb2dsZS5jb20+Cj4gQ2M6IFZpZ25lc2ggUmFnaGF2 ZW5kcmEgPHZpZ25lc2hyQHRpLmNvbT4KPiBDYzogU2lkZGhhcnRoIFZhZGFwYWxsaSA8cy12YWRh cGFsbGlAdGkuY29tPgo+IAo+IHY4LT52OTogbm9uZQo+IHY3LT52ODogb25seSBjb250ZXh0IGNo YW5nZSAtICJyZXR1cm4gMCIgYmVjYW1lICJyZXR1cm4gcmV0IiBmb3IKPiAgICAgICAgIGNkbnNf cGxhdF9wY2llX3Byb2JlKCkKPiB2Ni0+djc6IG5vbmUKPiB2NS0+djY6IGNvbGxlY3QgdGFnIGZy b20gTWFuaXZhbm5hbiBTYWRoYXNpdmFtCj4gdjMtPnY1OiBub25lCj4gdjItPnYzOgo+IC0gcmVt b3ZlIGRhbmdsaW5nIHNldCBidXQgdW51c2VkIHBoeV9jb3VudCBsb2NhbCB2YXJpYWJsZSBpbgo+ ICAgY2Ruc19wbGF0X3BjaWVfcHJvYmUoKQo+IHYxLT52MjoKPiAtIGZ1bGx5IHJlbW92ZSBzdHJ1 Y3QgZGV2aWNlIGxpbmsgKipsaW5rIGZyb20gc3RydWN0IGNkbnNfcGNpZSBhbmQgZnJvbQo+ICAg Y2Ruc19wbGF0X3BjaWVfcHJvYmUoKSBlcnJvciBwYXRoCj4gLSBjb2xsZWN0IHRhZyBmcm9tIEJq b3JuIEhlbGdhYXMKPiAtIGFkanVzdCBjb21taXQgdGl0bGUKPiAtLS0KPiAgLi4uL2NvbnRyb2xs ZXIvY2FkZW5jZS9wY2llLWNhZGVuY2UtcGxhdC5jICAgIHwgIDQgLS0tCj4gIGRyaXZlcnMvcGNp L2NvbnRyb2xsZXIvY2FkZW5jZS9wY2llLWNhZGVuY2UuYyB8IDE2ICstLS0tLS0tLS0KPiAgZHJp dmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL3BjaWUtY2FkZW5jZS5oIHwgIDIgLS0KPiAgZHJp dmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpLWRyYTd4eC5jICAgICAgIHwgMTYgLS0tLS0tLS0t LQo+ICBkcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2kta2V5c3RvbmUuYyAgICAgfCAzMSAr KystLS0tLS0tLS0tLS0tLS0tCj4gIDUgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA2 NCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9j YWRlbmNlL3BjaWUtY2FkZW5jZS1wbGF0LmMgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVu Y2UvcGNpZS1jYWRlbmNlLXBsYXQuYwo+IGluZGV4IDhhZWQ4YjRjM2UxMS4uMTNlZGM2YmUyMWY1 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9wY2llLWNhZGVu Y2UtcGxhdC5jCj4gKysrIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL3BjaWUtY2Fk ZW5jZS1wbGF0LmMKPiBAQCAtNDEsNyArNDEsNiBAQCBzdGF0aWMgaW50IGNkbnNfcGxhdF9wY2ll X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gIAlzdHJ1Y3QgcGNpX2hvc3Rf YnJpZGdlICpicmlkZ2U7Cj4gIAlzdHJ1Y3QgY2Ruc19wY2llX2VwICplcDsKPiAgCXN0cnVjdCBj ZG5zX3BjaWVfcmMgKnJjOwo+IC0JaW50IHBoeV9jb3VudDsKPiAgCWJvb2wgaXNfcmM7Cj4gIAlp bnQgcmV0Owo+ICAKPiBAQCAtMTIyLDkgKzEyMSw2IEBAIHN0YXRpYyBpbnQgY2Ruc19wbGF0X3Bj aWVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAgCXBtX3J1bnRpbWVfcHV0 X3N5bmMoZGV2KTsKPiAgCXBtX3J1bnRpbWVfZGlzYWJsZShkZXYpOwo+ICAJY2Ruc19wY2llX2Rp c2FibGVfcGh5KGNkbnNfcGxhdF9wY2llLT5wY2llKTsKPiAtCXBoeV9jb3VudCA9IGNkbnNfcGxh dF9wY2llLT5wY2llLT5waHlfY291bnQ7Cj4gLQl3aGlsZSAocGh5X2NvdW50LS0pCj4gLQkJZGV2 aWNlX2xpbmtfZGVsKGNkbnNfcGxhdF9wY2llLT5wY2llLT5saW5rW3BoeV9jb3VudF0pOwo+ICAK PiAgCXJldHVybiByZXQ7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvY29udHJvbGxl ci9jYWRlbmNlL3BjaWUtY2FkZW5jZS5jIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNl L3BjaWUtY2FkZW5jZS5jCj4gaW5kZXggYTFlYWRhNTZlZGJhLi4wYWM5ODAyNDk5NDEgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL3BjaWUtY2FkZW5jZS5jCj4g KysrIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL3BjaWUtY2FkZW5jZS5jCj4gQEAg LTIyMiw3ICsyMjIsNiBAQCBpbnQgY2Ruc19wY2llX2luaXRfcGh5KHN0cnVjdCBkZXZpY2UgKmRl diwgc3RydWN0IGNkbnNfcGNpZSAqcGNpZSkKPiAgCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBk ZXYtPm9mX25vZGU7Cj4gIAlpbnQgcGh5X2NvdW50Owo+ICAJc3RydWN0IHBoeSAqKnBoeTsKPiAt CXN0cnVjdCBkZXZpY2VfbGluayAqKmxpbms7Cj4gIAlpbnQgaTsKPiAgCWludCByZXQ7Cj4gIAlj b25zdCBjaGFyICpuYW1lOwo+IEBAIC0yMzgsMTAgKzIzNyw2IEBAIGludCBjZG5zX3BjaWVfaW5p dF9waHkoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgY2Ruc19wY2llICpwY2llKQo+ICAJaWYg KCFwaHkpCj4gIAkJcmV0dXJuIC1FTk9NRU07Cj4gIAo+IC0JbGluayA9IGRldm1fa2NhbGxvYyhk ZXYsIHBoeV9jb3VudCwgc2l6ZW9mKCpsaW5rKSwgR0ZQX0tFUk5FTCk7Cj4gLQlpZiAoIWxpbmsp Cj4gLQkJcmV0dXJuIC1FTk9NRU07Cj4gLQo+ICAJZm9yIChpID0gMDsgaSA8IHBoeV9jb3VudDsg aSsrKSB7Cj4gIAkJb2ZfcHJvcGVydHlfcmVhZF9zdHJpbmdfaW5kZXgobnAsICJwaHktbmFtZXMi LCBpLCAmbmFtZSk7Cj4gIAkJcGh5W2ldID0gZGV2bV9waHlfZ2V0KGRldiwgbmFtZSk7Cj4gQEAg LTI0OSwxNyArMjQ0LDEwIEBAIGludCBjZG5zX3BjaWVfaW5pdF9waHkoc3RydWN0IGRldmljZSAq ZGV2LCBzdHJ1Y3QgY2Ruc19wY2llICpwY2llKQo+ICAJCQlyZXQgPSBQVFJfRVJSKHBoeVtpXSk7 Cj4gIAkJCWdvdG8gZXJyX3BoeTsKPiAgCQl9Cj4gLQkJbGlua1tpXSA9IGRldmljZV9saW5rX2Fk ZChkZXYsICZwaHlbaV0tPmRldiwgRExfRkxBR19TVEFURUxFU1MpOwo+IC0JCWlmICghbGlua1tp XSkgewo+IC0JCQlkZXZtX3BoeV9wdXQoZGV2LCBwaHlbaV0pOwo+IC0JCQlyZXQgPSAtRUlOVkFM Owo+IC0JCQlnb3RvIGVycl9waHk7Cj4gLQkJfQo+ICAJfQo+ICAKPiAgCXBjaWUtPnBoeV9jb3Vu dCA9IHBoeV9jb3VudDsKPiAgCXBjaWUtPnBoeSA9IHBoeTsKPiAtCXBjaWUtPmxpbmsgPSBsaW5r Owo+ICAKPiAgCXJldCA9ICBjZG5zX3BjaWVfZW5hYmxlX3BoeShwY2llKTsKPiAgCWlmIChyZXQp Cj4gQEAgLTI2OCwxMCArMjU2LDggQEAgaW50IGNkbnNfcGNpZV9pbml0X3BoeShzdHJ1Y3QgZGV2 aWNlICpkZXYsIHN0cnVjdCBjZG5zX3BjaWUgKnBjaWUpCj4gIAlyZXR1cm4gMDsKPiAgCj4gIGVy cl9waHk6Cj4gLQl3aGlsZSAoLS1pID49IDApIHsKPiAtCQlkZXZpY2VfbGlua19kZWwobGlua1tp XSk7Cj4gKwl3aGlsZSAoLS1pID49IDApCj4gIAkJZGV2bV9waHlfcHV0KGRldiwgcGh5W2ldKTsK PiAtCX0KPiAgCj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNp L2NvbnRyb2xsZXIvY2FkZW5jZS9wY2llLWNhZGVuY2UuaCBiL2RyaXZlcnMvcGNpL2NvbnRyb2xs ZXIvY2FkZW5jZS9wY2llLWNhZGVuY2UuaAo+IGluZGV4IGI0ZDUxYWRlZmVhNS4uNGE5NmUxODY5 ZTUzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9wY2llLWNh ZGVuY2UuaAo+ICsrKyBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9wY2llLWNhZGVu Y2UuaAo+IEBAIC0yNjAsNyArMjYwLDYgQEAgc3RydWN0IGNkbnNfcGxhdF9wY2llX29mX2RhdGEg ewo+ICAgKiBAaXNfaHBhOiBpbmRpY2F0ZXMgaWYgdGhlIGFyY2hpdGVjdHVyZSBpcyBIUEEKPiAg ICogQHBoeV9jb3VudDogbnVtYmVyIG9mIHN1cHBvcnRlZCBQSFkgZGV2aWNlcwo+ICAgKiBAcGh5 OiBsaXN0IG9mIHBvaW50ZXJzIHRvIHNwZWNpZmljIFBIWSBjb250cm9sIGJsb2Nrcwo+IC0gKiBA bGluazogbGlzdCBvZiBwb2ludGVycyB0byBjb3JyZXNwb25kaW5nIGRldmljZSBsaW5rIHJlcHJl c2VudGF0aW9ucwo+ICAgKiBAb3BzOiBQbGF0Zm9ybS1zcGVjaWZpYyBvcHMgdG8gY29udHJvbCB2 YXJpb3VzIGlucHV0cyBmcm9tIENhZGVuY2UgUENJZQo+ICAgKiAgICAgICB3cmFwcGVyCj4gICAq IEBjZG5zX3BjaWVfcmVnX29mZnNldHM6IFJlZ2lzdGVyIGJhbmsgb2Zmc2V0cyBmb3IgZGlmZmVy ZW50IFNvQwo+IEBAIC0yNzYsNyArMjc1LDYgQEAgc3RydWN0IGNkbnNfcGNpZSB7Cj4gIAlib29s CQkJCSAgICAgaXNfaHBhOwo+ICAJaW50CQkJICAgICAgICAgICAgIHBoeV9jb3VudDsKPiAgCXN0 cnVjdCBwaHkJCSAgICAgICAgICAgICAqKnBoeTsKPiAtCXN0cnVjdCBkZXZpY2VfbGluawkgICAg ICAgICAgICAgKipsaW5rOwo+ICAJY29uc3QgIHN0cnVjdCBjZG5zX3BjaWVfb3BzICAgICAgICAg ICpvcHM7Cj4gIAljb25zdCAgc3RydWN0IGNkbnNfcGxhdF9wY2llX29mX2RhdGEgKmNkbnNfcGNp ZV9yZWdfb2Zmc2V0czsKPiAgCWludAkJCQkgICAgIG1heF9saW5rX3NwZWVkOwo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2ktZHJhN3h4LmMgYi9kcml2ZXJzL3Bj aS9jb250cm9sbGVyL2R3Yy9wY2ktZHJhN3h4LmMKPiBpbmRleCAzZmM4ODk5NDRmMDIuLmJmNmM1 Yjg2YmIyNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2ktZHJh N3h4LmMKPiArKysgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2ktZHJhN3h4LmMKPiBA QCAtOSw3ICs5LDYgQEAKPiAgCj4gICNpbmNsdWRlIDxsaW51eC9jbGsuaD4KPiAgI2luY2x1ZGUg PGxpbnV4L2RlbGF5Lmg+Cj4gLSNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4KPiAgI2luY2x1ZGUg PGxpbnV4L2Vyci5oPgo+ICAjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+Cj4gICNpbmNsdWRl IDxsaW51eC9pcnEuaD4KPiBAQCAtNjc4LDcgKzY3Nyw2IEBAIHN0YXRpYyBpbnQgZHJhN3h4X3Bj aWVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAgCWludCBpOwo+ICAJaW50 IHBoeV9jb3VudDsKPiAgCXN0cnVjdCBwaHkgKipwaHk7Cj4gLQlzdHJ1Y3QgZGV2aWNlX2xpbmsg KipsaW5rOwo+ICAJdm9pZCBfX2lvbWVtICpiYXNlOwo+ICAJc3RydWN0IGR3X3BjaWUgKnBjaTsK PiAgCXN0cnVjdCBkcmE3eHhfcGNpZSAqZHJhN3h4Owo+IEBAIC03MjYsMTAgKzcyNCw2IEBAIHN0 YXRpYyBpbnQgZHJhN3h4X3BjaWVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikK PiAgCWlmICghcGh5KQo+ICAJCXJldHVybiAtRU5PTUVNOwo+ICAKPiAtCWxpbmsgPSBkZXZtX2tj YWxsb2MoZGV2LCBwaHlfY291bnQsIHNpemVvZigqbGluayksIEdGUF9LRVJORUwpOwo+IC0JaWYg KCFsaW5rKQo+IC0JCXJldHVybiAtRU5PTUVNOwo+IC0KPiAgCWRyYTd4eC0+Y2xrID0gZGV2bV9j bGtfZ2V0X29wdGlvbmFsKGRldiwgTlVMTCk7Cj4gIAlpZiAoSVNfRVJSKGRyYTd4eC0+Y2xrKSkK PiAgCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIoZHJhN3h4LT5jbGspLAo+IEBA IC03NDQsMTIgKzczOCw2IEBAIHN0YXRpYyBpbnQgZHJhN3h4X3BjaWVfcHJvYmUoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldikKPiAgCQlwaHlbaV0gPSBkZXZtX3BoeV9nZXQoZGV2LCBuYW1l KTsKPiAgCQlpZiAoSVNfRVJSKHBoeVtpXSkpCj4gIAkJCXJldHVybiBQVFJfRVJSKHBoeVtpXSk7 Cj4gLQo+IC0JCWxpbmtbaV0gPSBkZXZpY2VfbGlua19hZGQoZGV2LCAmcGh5W2ldLT5kZXYsIERM X0ZMQUdfU1RBVEVMRVNTKTsKPiAtCQlpZiAoIWxpbmtbaV0pIHsKPiAtCQkJcmV0ID0gLUVJTlZB TDsKPiAtCQkJZ290byBlcnJfbGluazsKPiAtCQl9Cj4gIAl9Cj4gIAo+ICAJZHJhN3h4LT5iYXNl ID0gYmFzZTsKPiBAQCAtODUxLDEwICs4MzksNiBAQCBzdGF0aWMgaW50IGRyYTd4eF9wY2llX3By b2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gIAlwbV9ydW50aW1lX2Rpc2FibGUo ZGV2KTsKPiAgCWRyYTd4eF9wY2llX2Rpc2FibGVfcGh5KGRyYTd4eCk7Cj4gIAo+IC1lcnJfbGlu azoKPiAtCXdoaWxlICgtLWkgPj0gMCkKPiAtCQlkZXZpY2VfbGlua19kZWwobGlua1tpXSk7Cj4g LQo+ICAJcmV0dXJuIHJldDsKPiAgfQo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvY29u dHJvbGxlci9kd2MvcGNpLWtleXN0b25lLmMgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9w Y2kta2V5c3RvbmUuYwo+IGluZGV4IGU5YjAxMmE1ZWE5YS4uODA4NWM0ZjYxNDAzIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaS1rZXlzdG9uZS5jCj4gKysrIGIv ZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpLWtleXN0b25lLmMKPiBAQCAtMTMwLDcgKzEz MCw2IEBAIHN0cnVjdCBrZXlzdG9uZV9wY2llIHsKPiAgCWludAkJCW51bV9sYW5lczsKPiAgCXUz MgkJCW51bV92aWV3cG9ydDsKPiAgCXN0cnVjdCBwaHkJCSoqcGh5Owo+IC0Jc3RydWN0IGRldmlj ZV9saW5rCSoqbGluazsKPiAgCXN0cnVjdAkJCWRldmljZV9ub2RlICptc2lfaW50Y19ucDsKPiAg CXN0cnVjdCBpcnFfZG9tYWluCSppbnR4X2lycV9kb21haW47Cj4gIAlzdHJ1Y3QgZGV2aWNlX25v ZGUJKm5wOwo+IEBAIC0xMTMwLDcgKzExMjksNiBAQCBzdGF0aWMgaW50IGtzX3BjaWVfcHJvYmUo c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAgCWVudW0gZHdfcGNpZV9kZXZpY2VfbW9k ZSBtb2RlOwo+ICAJc3RydWN0IGR3X3BjaWUgKnBjaTsKPiAgCXN0cnVjdCBrZXlzdG9uZV9wY2ll ICprc19wY2llOwo+IC0Jc3RydWN0IGRldmljZV9saW5rICoqbGluazsKPiAgCXN0cnVjdCBncGlv X2Rlc2MgKmdwaW9kOwo+ICAJc3RydWN0IHJlc291cmNlICpyZXM7Cj4gIAl2b2lkIF9faW9tZW0g KmJhc2U7Cj4gQEAgLTEyMDEsMzEgKzExOTksMTcgQEAgc3RhdGljIGludCBrc19wY2llX3Byb2Jl KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gIAlpZiAoIXBoeSkKPiAgCQlyZXR1cm4g LUVOT01FTTsKPiAgCj4gLQlsaW5rID0gZGV2bV9rY2FsbG9jKGRldiwgbnVtX2xhbmVzLCBzaXpl b2YoKmxpbmspLCBHRlBfS0VSTkVMKTsKPiAtCWlmICghbGluaykKPiAtCQlyZXR1cm4gLUVOT01F TTsKPiAtCj4gIAlmb3IgKGkgPSAwOyBpIDwgbnVtX2xhbmVzOyBpKyspIHsKPiAgCQlzbnByaW50 ZihuYW1lLCBzaXplb2YobmFtZSksICJwY2llLXBoeSVkIiwgaSk7Cj4gIAkJcGh5W2ldID0gZGV2 bV9waHlfb3B0aW9uYWxfZ2V0KGRldiwgbmFtZSk7Cj4gIAkJaWYgKElTX0VSUihwaHlbaV0pKSB7 Cj4gIAkJCXJldCA9IFBUUl9FUlIocGh5W2ldKTsKPiAtCQkJZ290byBlcnJfbGluazsKPiAtCQl9 Cj4gLQo+IC0JCWlmICghcGh5W2ldKQo+IC0JCQljb250aW51ZTsKPiAtCj4gLQkJbGlua1tpXSA9 IGRldmljZV9saW5rX2FkZChkZXYsICZwaHlbaV0tPmRldiwgRExfRkxBR19TVEFURUxFU1MpOwo+ IC0JCWlmICghbGlua1tpXSkgewo+IC0JCQlyZXQgPSAtRUlOVkFMOwo+IC0JCQlnb3RvIGVycl9s aW5rOwo+ICsJCQlnb3RvIGVycjsKPiAgCQl9Cj4gIAl9Cj4gIAo+ICAJa3NfcGNpZS0+bnAgPSBu cDsKPiAgCWtzX3BjaWUtPnBjaSA9IHBjaTsKPiAtCWtzX3BjaWUtPmxpbmsgPSBsaW5rOwo+ICAJ a3NfcGNpZS0+bnVtX2xhbmVzID0gbnVtX2xhbmVzOwo+ICAJa3NfcGNpZS0+cGh5ID0gcGh5Owo+ ICAKPiBAQCAtMTIzNSw3ICsxMjE5LDcgQEAgc3RhdGljIGludCBrc19wY2llX3Byb2JlKHN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gIAkJcmV0ID0gUFRSX0VSUihncGlvZCk7Cj4gIAkJ aWYgKHJldCAhPSAtRVBST0JFX0RFRkVSKQo+ICAJCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBn ZXQgcmVzZXQgR1BJT1xuIik7Cj4gLQkJZ290byBlcnJfbGluazsKPiArCQlnb3RvIGVycjsKPiAg CX0KPiAgCj4gIAkvKiBPYnRhaW4gcmVmZXJlbmNlcyB0byB0aGUgUEhZcyAqLwo+IEBAIC0xMjUw LDcgKzEyMzQsNyBAQCBzdGF0aWMgaW50IGtzX3BjaWVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2Rl dmljZSAqcGRldikKPiAgCj4gIAlpZiAocmV0KSB7Cj4gIAkJZGV2X2VycihkZXYsICJmYWlsZWQg dG8gZW5hYmxlIHBoeVxuIik7Cj4gLQkJZ290byBlcnJfbGluazsKPiArCQlnb3RvIGVycjsKPiAg CX0KPiAgCj4gIAlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBrc19wY2llKTsKPiBAQCAtMTMz NywyNSArMTMyMSwxOCBAQCBzdGF0aWMgaW50IGtzX3BjaWVfcHJvYmUoc3RydWN0IHBsYXRmb3Jt X2RldmljZSAqcGRldikKPiAgCXBtX3J1bnRpbWVfZGlzYWJsZShkZXYpOwo+ICAJa3NfcGNpZV9k aXNhYmxlX3BoeShrc19wY2llKTsKPiAgCj4gLWVycl9saW5rOgo+IC0Jd2hpbGUgKC0taSA+PSAw ICYmIGxpbmtbaV0pCj4gLQkJZGV2aWNlX2xpbmtfZGVsKGxpbmtbaV0pOwo+IC0KPiArZXJyOgo+ ICAJcmV0dXJuIHJldDsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQga3NfcGNpZV9yZW1vdmUoc3Ry dWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAgewo+ICAJc3RydWN0IGtleXN0b25lX3BjaWUg KmtzX3BjaWUgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKPiAtCXN0cnVjdCBkZXZpY2Vf bGluayAqKmxpbmsgPSBrc19wY2llLT5saW5rOwo+IC0JaW50IG51bV9sYW5lcyA9IGtzX3BjaWUt Pm51bV9sYW5lczsKPiAgCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7Cj4gIAo+ICAJ cG1fcnVudGltZV9wdXQoZGV2KTsKPiAgCXBtX3J1bnRpbWVfZGlzYWJsZShkZXYpOwo+ICAJa3Nf cGNpZV9kaXNhYmxlX3BoeShrc19wY2llKTsKPiAtCXdoaWxlIChudW1fbGFuZXMtLSkKPiAtCQlk ZXZpY2VfbGlua19kZWwobGlua1tudW1fbGFuZXNdKTsKPiAgfQo+ICAKPiAgc3RhdGljIHN0cnVj dCBwbGF0Zm9ybV9kcml2ZXIga3NfcGNpZV9kcml2ZXIgPSB7Cj4gLS0gCj4gMi4zNC4xCj4gCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1yaXNj diBtYWlsaW5nIGxpc3QKbGludXgtcmlzY3ZAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlz dHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJpc2N2Cg== 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 6C8CF43713C; Fri, 11 Sep 2026 22:12:11 +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=1789164733; cv=none; b=ew4ce9SXPPjJQS+0XRxs4Hvn9w8zJ3GiUPkoADgHh9lOGDG9dvDh9AI4I8mW8HtZF2JbD3CBU6mrXALUsqPbILOkCRjt8h6QAoIYNhayBRkd7a7Pi+nnIDQD23pCUUvSKpJ9e5bA747pPzs2hDFVm5xj8z29XigVbU9WyY/Yldc= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789164733; c=relaxed/simple; bh=7SacOg1IENiLKpqU81RPB0pY6bRjEI9ald8g9YA+/JA=; h=Date:From:To:Cc:Subject:Message-ID:MIME-Version:Content-Type: Content-Disposition:In-Reply-To; b=ZzbqqbE74canXHyXIHMJKKET/hV7ctskd86qoUbjs5IntBYVeFCAr3q7psIQJrYs0CM3p9QpPlcgfdvS09Yt9YLfpLcWNA/Y113kt+nRMr2DAo9W1oNHMlYiIPHVsjaZ04TGboO3kua6GqwJAMTopDVuMCgUhxId1c9BGCeMG+4= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=fpZSM3z6; 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="fpZSM3z6" Received: by smtp.kernel.org (Postfix) with ESMTPSA id CD6811F000FF; Fri, 11 Sep 2026 22:12:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1789164731; bh=zcSpC8B/zBe1QBiSP3SsQ8IbOXdwAlEg8XGj9L10bq8=; h=Date:From:To:Cc:Subject:In-Reply-To; b=fpZSM3z6PJ9swFzsvH+djv6QNuc3r3Jbh6fc5fg1plDIs1WScdIHvAlLBKslHFOpC VUlgeo0f4KrBy7cqz2x9XD+Eh3NSgeWTi4XevOllxU7aRx6le8EGCRlOn+NRS1y7ZT GYBZJbc5xO7X6hzpn+Zvxucqhh1evUkZ/RnAsEuHLV1vwBDcR/+mcWL3e5UX0jetdV yVMQfWSmiYNtJBa+MBKplM6FwGvkAsIabg7ccf5NsRaHmsVooL7N1AKbaAWG/Rv2bV 0AwWtnXJG/bkaR0cMvSqKCps8HWA3DXqOgv3MqLk2Vx/pAe1cBKiOZbR7fWWy90N/G b2VIe389tv9qg== Date: Fri, 11 Sep 2026 17:12:09 -0500 From: Bjorn Helgaas To: Vladimir Oltean Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-arm-msm@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-tegra@vger.kernel.org, Bjorn Helgaas , Manivannan Sadhasivam , Lorenzo Pieralisi , Krzysztof =?utf-8?Q?Wilczy=C5=84ski?= , Rob Herring , Vignesh Raghavendra , Siddharth Vadapalli , Felix Gu Subject: Re: [PATCH v9 3/3] PCI: Remove device links to PHY Message-ID: <20260911221209.GA587622@bhelgaas> Precedence: bulk X-Mailing-List: linux-pci@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20260810124315.433448-4-vladimir.oltean@nxp.com> [+cc Felix, author of device link leak fixes] On Mon, Aug 10, 2026 at 03:43:15PM +0300, Vladimir Oltean wrote: > This is practically a full revert of commit > 7a4db656a635 ("PCI: dra7xx: Create functional dependency between PCIe and PHY") > and a partial revert of the device link pieces from commits > dfb80534692d ("PCI: cadence: Add generic PHY support to host and EP drivers") > 49229238ab47 ("PCI: keystone: Cleanup PHY handling") Can we split this into three commits (dra7xx, cadence, keystone)? This combined commit is applied on the pci/controller/misc branch, and then we have conflicts between that branch and pci/controller/dwc-dra7xx. I think if we split this into three separate commits, we can apply the dra7xx one on pci/controller/dwc-dra7xx and drop Felix's device link leak fixes below so we don't clutter the git history with conflict resolutions or irrelevant commits: https://git.kernel.org/cgit/linux/kernel/git/pci/pci.git/commit/?id=2b9a036b568c ("PCI: dra7xx: Fix device link leak when devm_phy_get() fails") https://git.kernel.org/cgit/linux/kernel/git/pci/pci.git/commit/?id=bdfdf654b4b2 ("PCI: dra7xx: Fix device links leak when dra7xx_pcie_enable_phy() fails") > The trouble with these commits is that they dereference fields inside > struct phy from a consumer driver, which will become no longer possible. > > Since commit 987351e1ea77 ("phy: core: Add consumer device link > support") from 2019, the PHY core also adds a device link to order PHY > provider and consumer suspend/resume operations. All reverted commits > are from 2017-2018, and what they do should actually be redundant now. > > Signed-off-by: Vladimir Oltean > Acked-by: Bjorn Helgaas > Reviewed-by: Manivannan Sadhasivam > --- > Cc: Lorenzo Pieralisi > Cc: "Krzysztof WilczyƄski" > Cc: Manivannan Sadhasivam > Cc: Rob Herring > Cc: Bjorn Helgaas > Cc: Vignesh Raghavendra > Cc: Siddharth Vadapalli > > v8->v9: none > v7->v8: only context change - "return 0" became "return ret" for > cdns_plat_pcie_probe() > v6->v7: none > v5->v6: collect tag from Manivannan Sadhasivam > v3->v5: none > v2->v3: > - remove dangling set but unused phy_count local variable in > cdns_plat_pcie_probe() > v1->v2: > - fully remove struct device link **link from struct cdns_pcie and from > cdns_plat_pcie_probe() error path > - collect tag from Bjorn Helgaas > - adjust commit title > --- > .../controller/cadence/pcie-cadence-plat.c | 4 --- > drivers/pci/controller/cadence/pcie-cadence.c | 16 +--------- > drivers/pci/controller/cadence/pcie-cadence.h | 2 -- > drivers/pci/controller/dwc/pci-dra7xx.c | 16 ---------- > drivers/pci/controller/dwc/pci-keystone.c | 31 +++---------------- > 5 files changed, 5 insertions(+), 64 deletions(-) > > diff --git a/drivers/pci/controller/cadence/pcie-cadence-plat.c b/drivers/pci/controller/cadence/pcie-cadence-plat.c > index 8aed8b4c3e11..13edc6be21f5 100644 > --- a/drivers/pci/controller/cadence/pcie-cadence-plat.c > +++ b/drivers/pci/controller/cadence/pcie-cadence-plat.c > @@ -41,7 +41,6 @@ static int cdns_plat_pcie_probe(struct platform_device *pdev) > struct pci_host_bridge *bridge; > struct cdns_pcie_ep *ep; > struct cdns_pcie_rc *rc; > - int phy_count; > bool is_rc; > int ret; > > @@ -122,9 +121,6 @@ static int cdns_plat_pcie_probe(struct platform_device *pdev) > pm_runtime_put_sync(dev); > pm_runtime_disable(dev); > cdns_pcie_disable_phy(cdns_plat_pcie->pcie); > - phy_count = cdns_plat_pcie->pcie->phy_count; > - while (phy_count--) > - device_link_del(cdns_plat_pcie->pcie->link[phy_count]); > > return ret; > } > diff --git a/drivers/pci/controller/cadence/pcie-cadence.c b/drivers/pci/controller/cadence/pcie-cadence.c > index a1eada56edba..0ac980249941 100644 > --- a/drivers/pci/controller/cadence/pcie-cadence.c > +++ b/drivers/pci/controller/cadence/pcie-cadence.c > @@ -222,7 +222,6 @@ int cdns_pcie_init_phy(struct device *dev, struct cdns_pcie *pcie) > struct device_node *np = dev->of_node; > int phy_count; > struct phy **phy; > - struct device_link **link; > int i; > int ret; > const char *name; > @@ -238,10 +237,6 @@ int cdns_pcie_init_phy(struct device *dev, struct cdns_pcie *pcie) > if (!phy) > return -ENOMEM; > > - link = devm_kcalloc(dev, phy_count, sizeof(*link), GFP_KERNEL); > - if (!link) > - return -ENOMEM; > - > for (i = 0; i < phy_count; i++) { > of_property_read_string_index(np, "phy-names", i, &name); > phy[i] = devm_phy_get(dev, name); > @@ -249,17 +244,10 @@ int cdns_pcie_init_phy(struct device *dev, struct cdns_pcie *pcie) > ret = PTR_ERR(phy[i]); > goto err_phy; > } > - link[i] = device_link_add(dev, &phy[i]->dev, DL_FLAG_STATELESS); > - if (!link[i]) { > - devm_phy_put(dev, phy[i]); > - ret = -EINVAL; > - goto err_phy; > - } > } > > pcie->phy_count = phy_count; > pcie->phy = phy; > - pcie->link = link; > > ret = cdns_pcie_enable_phy(pcie); > if (ret) > @@ -268,10 +256,8 @@ int cdns_pcie_init_phy(struct device *dev, struct cdns_pcie *pcie) > return 0; > > err_phy: > - while (--i >= 0) { > - device_link_del(link[i]); > + while (--i >= 0) > devm_phy_put(dev, phy[i]); > - } > > return ret; > } > diff --git a/drivers/pci/controller/cadence/pcie-cadence.h b/drivers/pci/controller/cadence/pcie-cadence.h > index b4d51adefea5..4a96e1869e53 100644 > --- a/drivers/pci/controller/cadence/pcie-cadence.h > +++ b/drivers/pci/controller/cadence/pcie-cadence.h > @@ -260,7 +260,6 @@ struct cdns_plat_pcie_of_data { > * @is_hpa: indicates if the architecture is HPA > * @phy_count: number of supported PHY devices > * @phy: list of pointers to specific PHY control blocks > - * @link: list of pointers to corresponding device link representations > * @ops: Platform-specific ops to control various inputs from Cadence PCIe > * wrapper > * @cdns_pcie_reg_offsets: Register bank offsets for different SoC > @@ -276,7 +275,6 @@ struct cdns_pcie { > bool is_hpa; > int phy_count; > struct phy **phy; > - struct device_link **link; > const struct cdns_pcie_ops *ops; > const struct cdns_plat_pcie_of_data *cdns_pcie_reg_offsets; > int max_link_speed; > diff --git a/drivers/pci/controller/dwc/pci-dra7xx.c b/drivers/pci/controller/dwc/pci-dra7xx.c > index 3fc889944f02..bf6c5b86bb27 100644 > --- a/drivers/pci/controller/dwc/pci-dra7xx.c > +++ b/drivers/pci/controller/dwc/pci-dra7xx.c > @@ -9,7 +9,6 @@ > > #include > #include > -#include > #include > #include > #include > @@ -678,7 +677,6 @@ static int dra7xx_pcie_probe(struct platform_device *pdev) > int i; > int phy_count; > struct phy **phy; > - struct device_link **link; > void __iomem *base; > struct dw_pcie *pci; > struct dra7xx_pcie *dra7xx; > @@ -726,10 +724,6 @@ static int dra7xx_pcie_probe(struct platform_device *pdev) > if (!phy) > return -ENOMEM; > > - link = devm_kcalloc(dev, phy_count, sizeof(*link), GFP_KERNEL); > - if (!link) > - return -ENOMEM; > - > dra7xx->clk = devm_clk_get_optional(dev, NULL); > if (IS_ERR(dra7xx->clk)) > return dev_err_probe(dev, PTR_ERR(dra7xx->clk), > @@ -744,12 +738,6 @@ static int dra7xx_pcie_probe(struct platform_device *pdev) > phy[i] = devm_phy_get(dev, name); > if (IS_ERR(phy[i])) > return PTR_ERR(phy[i]); > - > - link[i] = device_link_add(dev, &phy[i]->dev, DL_FLAG_STATELESS); > - if (!link[i]) { > - ret = -EINVAL; > - goto err_link; > - } > } > > dra7xx->base = base; > @@ -851,10 +839,6 @@ static int dra7xx_pcie_probe(struct platform_device *pdev) > pm_runtime_disable(dev); > dra7xx_pcie_disable_phy(dra7xx); > > -err_link: > - while (--i >= 0) > - device_link_del(link[i]); > - > return ret; > } > > diff --git a/drivers/pci/controller/dwc/pci-keystone.c b/drivers/pci/controller/dwc/pci-keystone.c > index e9b012a5ea9a..8085c4f61403 100644 > --- a/drivers/pci/controller/dwc/pci-keystone.c > +++ b/drivers/pci/controller/dwc/pci-keystone.c > @@ -130,7 +130,6 @@ struct keystone_pcie { > int num_lanes; > u32 num_viewport; > struct phy **phy; > - struct device_link **link; > struct device_node *msi_intc_np; > struct irq_domain *intx_irq_domain; > struct device_node *np; > @@ -1130,7 +1129,6 @@ static int ks_pcie_probe(struct platform_device *pdev) > enum dw_pcie_device_mode mode; > struct dw_pcie *pci; > struct keystone_pcie *ks_pcie; > - struct device_link **link; > struct gpio_desc *gpiod; > struct resource *res; > void __iomem *base; > @@ -1201,31 +1199,17 @@ static int ks_pcie_probe(struct platform_device *pdev) > if (!phy) > return -ENOMEM; > > - link = devm_kcalloc(dev, num_lanes, sizeof(*link), GFP_KERNEL); > - if (!link) > - return -ENOMEM; > - > for (i = 0; i < num_lanes; i++) { > snprintf(name, sizeof(name), "pcie-phy%d", i); > phy[i] = devm_phy_optional_get(dev, name); > if (IS_ERR(phy[i])) { > ret = PTR_ERR(phy[i]); > - goto err_link; > - } > - > - if (!phy[i]) > - continue; > - > - link[i] = device_link_add(dev, &phy[i]->dev, DL_FLAG_STATELESS); > - if (!link[i]) { > - ret = -EINVAL; > - goto err_link; > + goto err; > } > } > > ks_pcie->np = np; > ks_pcie->pci = pci; > - ks_pcie->link = link; > ks_pcie->num_lanes = num_lanes; > ks_pcie->phy = phy; > > @@ -1235,7 +1219,7 @@ static int ks_pcie_probe(struct platform_device *pdev) > ret = PTR_ERR(gpiod); > if (ret != -EPROBE_DEFER) > dev_err(dev, "Failed to get reset GPIO\n"); > - goto err_link; > + goto err; > } > > /* Obtain references to the PHYs */ > @@ -1250,7 +1234,7 @@ static int ks_pcie_probe(struct platform_device *pdev) > > if (ret) { > dev_err(dev, "failed to enable phy\n"); > - goto err_link; > + goto err; > } > > platform_set_drvdata(pdev, ks_pcie); > @@ -1337,25 +1321,18 @@ static int ks_pcie_probe(struct platform_device *pdev) > pm_runtime_disable(dev); > ks_pcie_disable_phy(ks_pcie); > > -err_link: > - while (--i >= 0 && link[i]) > - device_link_del(link[i]); > - > +err: > return ret; > } > > static void ks_pcie_remove(struct platform_device *pdev) > { > struct keystone_pcie *ks_pcie = platform_get_drvdata(pdev); > - struct device_link **link = ks_pcie->link; > - int num_lanes = ks_pcie->num_lanes; > struct device *dev = &pdev->dev; > > pm_runtime_put(dev); > pm_runtime_disable(dev); > ks_pcie_disable_phy(ks_pcie); > - while (num_lanes--) > - device_link_del(link[num_lanes]); > } > > static struct platform_driver ks_pcie_driver = { > -- > 2.34.1 >