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 C7F7BCCFA13 for ; Mon, 10 Nov 2025 09:24: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:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Type: Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date :Subject:Cc:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=VSfkaAkbqob94VjtZuefTP3rzVGvzkZ2PyLqZ5TTMEA=; b=cGCLSeCeXGQs6eWxbfiqiG02N8 aQd1TGW7APp2Ngxtn1ei7oxs2Qu0TelJlXMwF9QAg/Szy3Z7Qq8m8fXmERbz9mH3M3n81pz3pq72G wzsRxf186d2j8utm4VRd/rlPjgOwNeTws6L0N2+PkZiYsaKgeIKRTHi09D2uV8CwiegTmsh+B4Bzu t+T43aTBQc/w0wqvv0NjHnw06Zz8zA3S5JnB8dOkDoOWkPIeT8m2rZDW7lRC+mN+IHcNxY5MP7ddC Z3cvOfR1/AECK78i1hKSa9rM227FwxnB5KYvR9JVqglNmm1i3fnD6PjcrcteCBhFfen5dI7jpetVd 3XYUNNLw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1vIO87-000000055PC-2rkV; Mon, 10 Nov 2025 09:24:07 +0000 Received: from sender4-pp-f112.zoho.com ([136.143.188.112]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1vIO84-000000055OP-0GAA; Mon, 10 Nov 2025 09:24:05 +0000 ARC-Seal: i=1; a=rsa-sha256; t=1762766633; cv=none; d=zohomail.com; s=zohoarc; b=VjrlaTXRT1DTspIRhNm8LqC+UeVeIz39ALeceKY8V7A5/ao3cVaWPJGQCtUJkoopAY3oEk19DUBQ5ibEOHjsNshLnbMXcJb7jHIVgj27JBHdSNW83mWJAtEyjqKUkU+70aUVA5OqDkOgeToKqF1ezdim2D85BEoTmgeE8g+8iMw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1762766633; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=VSfkaAkbqob94VjtZuefTP3rzVGvzkZ2PyLqZ5TTMEA=; b=XLMEUim6kByafUhy0mTCMpYnie0fvJC94Rlkmr9OvZoBM/BvE4A8qAyaZJ28JgXr5CMUUniOkUWEgT5jJKcEHivS6qOX4MtH7q2lmgiy0e6eGeOEQjX7p1tA7pKaMacSQhpY/rAvCpENb6KBfOD+Fn0GJelXd6Ekc/lXY/RIzCo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=collabora.com; spf=pass smtp.mailfrom=nicolas.frattaroli@collabora.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1762766633; s=zohomail; d=collabora.com; i=nicolas.frattaroli@collabora.com; h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-ID:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Content-Type:Message-Id:Reply-To; bh=VSfkaAkbqob94VjtZuefTP3rzVGvzkZ2PyLqZ5TTMEA=; b=M0zedMx4CrQIdjkZsoQwJ8KticXzTN1x4GvoNv08cmSC0hYxvMv9qSGvBmrKDbyw i03mA/4eYRl4HLbD6swqiUagf75i5IfHFPr9wXgIDK/4mT9WJ1C3K1oenQu1UUNzxrQ /62gPcbfd3SJ2sYn/ob1aR6YI0N5+KdulfvauR6Y= Received: by mx.zohomail.com with SMTPS id 1762766632129188.4290479822298; Mon, 10 Nov 2025 01:23:52 -0800 (PST) From: Nicolas Frattaroli To: Peter Wang =?UTF-8?B?KOeOi+S/oeWPiyk=?= , Chunfeng Yun =?UTF-8?B?KOS6keaYpeWzsCk=?= , "kishon@kernel.org" , "avri.altman@wdc.com" , "bvanassche@acm.org" , "martin.petersen@oracle.com" , "broonie@kernel.org" , "alim.akhtar@samsung.com" , "chu.stanley@gmail.com" , "conor+dt@kernel.org" , "p.zabel@pengutronix.de" , "robh@kernel.org" , "James.Bottomley@HansenPartnership.com" , "lgirdwood@gmail.com" , "vkoul@kernel.org" , "matthias.bgg@gmail.com" , "krzk+dt@kernel.org" , AngeloGioacchino Del Regno , Chaotian Jing =?UTF-8?B?KOS6leacneWkqSk=?= Cc: "linux-kernel@vger.kernel.org" , "linux-mediatek@lists.infradead.org" , "devicetree@vger.kernel.org" , "kernel@collabora.com" , Louis-Alexis Eyraud , "linux-scsi@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-phy@lists.infradead.org" Subject: Re: [PATCH v3 10/24] scsi: ufs: mediatek: Rework probe function Date: Mon, 10 Nov 2025 10:23:44 +0100 Message-ID: <5025239.GXAFRqVoOG@workhorse> In-Reply-To: <90a10fba2e41db4df4c28a72d182c5f0df8c016d.camel@mediatek.com> References: <20251023-mt8196-ufs-v3-0-0f04b4a795ff@collabora.com> <20251023-mt8196-ufs-v3-10-0f04b4a795ff@collabora.com> <90a10fba2e41db4df4c28a72d182c5f0df8c016d.camel@mediatek.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20251110_012404_850965_E0B30121 X-CRM114-Status: GOOD ( 28.56 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On Wednesday, 5 November 2025 07:28:39 Central European Standard Time Chaot= ian Jing (=E4=BA=95=E6=9C=9D=E5=A4=A9) wrote: > On Thu, 2025-10-23 at 21:49 +0200, Nicolas Frattaroli wrote: > > Remove the ti,syscon-reset cruft. > >=20 > > Make PHY mandatory. All the compatibles supported by the binding make > > it > > mandatory. > >=20 > why make the PHY mandatory ? note that not all of MediaTek SoCs have > the PHY node. Why don't they have the PHY node? Does the hardware not have a PHY? The mainline binding makes the phys property mandatory. If you have downstream device trees that don't have the PHY node properly described in the DT even though the PHY exists, then that is not a thing the mainline kernel should support. If the hardware really doesn't have a PHY, which would surprise me, then the binding should properly document this, so that the DT checks pass without warnings. > > Entertain this driver's insistence on playing with the PHY's RPM, but > > at > > least fix the part where it doesn't increase the reference count, > > which > > would lead to use-after-free. > >=20 > > Signed-off-by: Nicolas Frattaroli > > --- > > drivers/ufs/host/ufs-mediatek.c | 87 +++++++++++++++-------------- > > ------------ > > 1 file changed, 32 insertions(+), 55 deletions(-) > >=20 > > diff --git a/drivers/ufs/host/ufs-mediatek.c b/drivers/ufs/host/ufs- > > mediatek.c > > index 9c0ac72d6e43..889a1d58a041 100644 > > --- a/drivers/ufs/host/ufs-mediatek.c > > +++ b/drivers/ufs/host/ufs-mediatek.c > > @@ -2353,74 +2353,49 @@ MODULE_DEVICE_TABLE(of, ufs_mtk_of_match); > > */ > > static int ufs_mtk_probe(struct platform_device *pdev) > > { > > - int err; > > - struct device *dev =3D &pdev->dev, *phy_dev =3D NULL; > > - struct device_node *reset_node, *phy_node =3D NULL; > > - struct platform_device *reset_pdev, *phy_pdev =3D NULL; > > - struct device_link *link; > > - struct ufs_hba *hba; > > + struct platform_device *phy_pdev; > > + struct device *dev =3D &pdev->dev; > > + struct device_node *phy_node; > > struct ufs_mtk_host *host; > > + struct device *phy_dev; > > + struct ufs_hba *hba; > > + int err; > > =20 > > - reset_node =3D of_find_compatible_node(NULL, NULL, > > - "ti,syscon-reset"); > > - if (!reset_node) { > > - dev_notice(dev, "find ti,syscon-reset fail\n"); > > - goto skip_reset; > > - } > > - reset_pdev =3D of_find_device_by_node(reset_node); > > - if (!reset_pdev) { > > - dev_notice(dev, "find reset_pdev fail\n"); > > - goto skip_reset; > > - } > > - link =3D device_link_add(dev, &reset_pdev->dev, > > - DL_FLAG_AUTOPROBE_CONSUMER); > > - put_device(&reset_pdev->dev); > > - if (!link) { > > - dev_notice(dev, "add reset device_link fail\n"); > > - goto skip_reset; > > - } > > - /* supplier is not probed */ > > - if (link->status =3D=3D DL_STATE_DORMANT) { > > - err =3D -EPROBE_DEFER; > > - goto out; > > - } > > - > > -skip_reset: > > /* find phy node */ > > phy_node =3D of_parse_phandle(dev->of_node, "phys", 0); > > + if (!phy_node) > > + return dev_err_probe(dev, -ENOENT, "No PHY node > > found\n"); > > =20 > > - if (phy_node) { > > - phy_pdev =3D of_find_device_by_node(phy_node); > > - if (!phy_pdev) > > - goto skip_phy; > > - phy_dev =3D &phy_pdev->dev; > > + phy_pdev =3D of_find_device_by_node(phy_node); > > + of_node_put(phy_node); > > + if (!phy_pdev) > > + return dev_err_probe(dev, -ENODEV, "No PHY device > > found\n"); > > =20 > > - pm_runtime_set_active(phy_dev); > > - pm_runtime_enable(phy_dev); > > - pm_runtime_get_sync(phy_dev); > > + phy_dev =3D &phy_pdev->dev; > > =20 > > - put_device(phy_dev); > > - dev_info(dev, "phys node found\n"); > > - } else { > > - dev_notice(dev, "phys node not found\n"); > > + err =3D pm_runtime_set_active(phy_dev); > > + if (err) { > > + dev_err_probe(dev, err, "Failed to activate PHY > > RPM\n"); > > + goto err_put_phy; > > + } > > + pm_runtime_enable(phy_dev); > > + err =3D pm_runtime_get_sync(phy_dev); > > + if (err) { > > + dev_err_probe(dev, err, "Failed to power on PHY\n"); > > + goto err_put_phy; > > } > > =20 > > -skip_phy: > > /* perform generic probe */ > > err =3D ufshcd_pltfrm_init(pdev, &ufs_hba_mtk_vops); > > if (err) { > > - dev_err(dev, "probe failed %d\n", err); > > - goto out; > > + dev_err_probe(dev, err, "Generic platform probe > > failed\n"); > > + goto err_put_phy; > > } > > =20 > > hba =3D platform_get_drvdata(pdev); > > - if (!hba) > > - goto out; > > =20 > > - if (phy_node && phy_dev) { > > - host =3D ufshcd_get_variant(hba); > > - host->phy_dev =3D phy_dev; > > - } > > + host =3D ufshcd_get_variant(hba); > > + host->phy_dev =3D phy_dev; > > =20 > > /* > > * Because the default power setting of VSx (the upper layer of > > @@ -2429,9 +2404,11 @@ static int ufs_mtk_probe(struct > > platform_device *pdev) > > */ > > ufs_mtk_dev_vreg_set_lpm(hba, false); > > =20 > > -out: > > - of_node_put(phy_node); > > - of_node_put(reset_node); > > + return 0; > > + > > +err_put_phy: > > + put_device(phy_dev); > > + > > return err; > > } > > =20 > >=20 >=20 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 B6122CCFA1E for ; Mon, 10 Nov 2025 09:24:08 +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:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=82hityx9R7HFK950azrKNrIDrxtk9xbJDlRVuP6CMCo=; b=14jshnuHx//HKb rffApGue1368Npa7ZuJKBm+IyZLABjcDrwxcVWOvNGNIcDd8dr4fED0uF+9tj30VPiviCTlrTLHUN COE0H6Rdb9KZYXoDytgGTT0v6aLXb97hvbncE8uVO0sXzyzYUWoHAtU64/vKViRaYB5o+KCFhDihg Fi4s1o/SobPzlVoUO0sHkys5rI/rXtoRVUC8vryspwMRI0hUu9+aCcovCK68DNu+r2ffHUj7A0PRY Z4/wvTS5oEEDv9mZcfzlthlI6UC4jDSA4iRgZ4fpKMjCVUcXJ64SIxxdyzUPNERK46Upqne0IGhca 8YivYoIdfyuBOCH5tpWw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1vIO87-000000055PN-45Q5; Mon, 10 Nov 2025 09:24:08 +0000 Received: from sender4-pp-f112.zoho.com ([136.143.188.112]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1vIO84-000000055OP-0GAA; Mon, 10 Nov 2025 09:24:05 +0000 ARC-Seal: i=1; a=rsa-sha256; t=1762766633; cv=none; d=zohomail.com; s=zohoarc; b=VjrlaTXRT1DTspIRhNm8LqC+UeVeIz39ALeceKY8V7A5/ao3cVaWPJGQCtUJkoopAY3oEk19DUBQ5ibEOHjsNshLnbMXcJb7jHIVgj27JBHdSNW83mWJAtEyjqKUkU+70aUVA5OqDkOgeToKqF1ezdim2D85BEoTmgeE8g+8iMw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1762766633; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=VSfkaAkbqob94VjtZuefTP3rzVGvzkZ2PyLqZ5TTMEA=; b=XLMEUim6kByafUhy0mTCMpYnie0fvJC94Rlkmr9OvZoBM/BvE4A8qAyaZJ28JgXr5CMUUniOkUWEgT5jJKcEHivS6qOX4MtH7q2lmgiy0e6eGeOEQjX7p1tA7pKaMacSQhpY/rAvCpENb6KBfOD+Fn0GJelXd6Ekc/lXY/RIzCo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=collabora.com; spf=pass smtp.mailfrom=nicolas.frattaroli@collabora.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1762766633; s=zohomail; d=collabora.com; i=nicolas.frattaroli@collabora.com; h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-ID:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Content-Type:Message-Id:Reply-To; bh=VSfkaAkbqob94VjtZuefTP3rzVGvzkZ2PyLqZ5TTMEA=; b=M0zedMx4CrQIdjkZsoQwJ8KticXzTN1x4GvoNv08cmSC0hYxvMv9qSGvBmrKDbyw i03mA/4eYRl4HLbD6swqiUagf75i5IfHFPr9wXgIDK/4mT9WJ1C3K1oenQu1UUNzxrQ /62gPcbfd3SJ2sYn/ob1aR6YI0N5+KdulfvauR6Y= Received: by mx.zohomail.com with SMTPS id 1762766632129188.4290479822298; Mon, 10 Nov 2025 01:23:52 -0800 (PST) From: Nicolas Frattaroli To: Peter Wang =?UTF-8?B?KOeOi+S/oeWPiyk=?= , Chunfeng Yun =?UTF-8?B?KOS6keaYpeWzsCk=?= , "kishon@kernel.org" , "avri.altman@wdc.com" , "bvanassche@acm.org" , "martin.petersen@oracle.com" , "broonie@kernel.org" , "alim.akhtar@samsung.com" , "chu.stanley@gmail.com" , "conor+dt@kernel.org" , "p.zabel@pengutronix.de" , "robh@kernel.org" , "James.Bottomley@HansenPartnership.com" , "lgirdwood@gmail.com" , "vkoul@kernel.org" , "matthias.bgg@gmail.com" , "krzk+dt@kernel.org" , AngeloGioacchino Del Regno , Chaotian Jing =?UTF-8?B?KOS6leacneWkqSk=?= Cc: "linux-kernel@vger.kernel.org" , "linux-mediatek@lists.infradead.org" , "devicetree@vger.kernel.org" , "kernel@collabora.com" , Louis-Alexis Eyraud , "linux-scsi@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-phy@lists.infradead.org" Subject: Re: [PATCH v3 10/24] scsi: ufs: mediatek: Rework probe function Date: Mon, 10 Nov 2025 10:23:44 +0100 Message-ID: <5025239.GXAFRqVoOG@workhorse> In-Reply-To: <90a10fba2e41db4df4c28a72d182c5f0df8c016d.camel@mediatek.com> References: <20251023-mt8196-ufs-v3-0-0f04b4a795ff@collabora.com> <20251023-mt8196-ufs-v3-10-0f04b4a795ff@collabora.com> <90a10fba2e41db4df4c28a72d182c5f0df8c016d.camel@mediatek.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20251110_012404_850965_E0B30121 X-CRM114-Status: GOOD ( 28.56 ) 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: , 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 T24gV2VkbmVzZGF5LCA1IE5vdmVtYmVyIDIwMjUgMDc6Mjg6MzkgQ2VudHJhbCBFdXJvcGVhbiBT dGFuZGFyZCBUaW1lIENoYW90aWFuIEppbmcgKOS6leacneWkqSkgd3JvdGU6Cj4gT24gVGh1LCAy MDI1LTEwLTIzIGF0IDIxOjQ5ICswMjAwLCBOaWNvbGFzIEZyYXR0YXJvbGkgd3JvdGU6Cj4gPiBS ZW1vdmUgdGhlIHRpLHN5c2Nvbi1yZXNldCBjcnVmdC4KPiA+IAo+ID4gTWFrZSBQSFkgbWFuZGF0 b3J5LiBBbGwgdGhlIGNvbXBhdGlibGVzIHN1cHBvcnRlZCBieSB0aGUgYmluZGluZyBtYWtlCj4g PiBpdAo+ID4gbWFuZGF0b3J5Lgo+ID4gCj4gd2h5IG1ha2UgdGhlIFBIWSBtYW5kYXRvcnkgPyBu b3RlIHRoYXQgbm90IGFsbCBvZiBNZWRpYVRlayBTb0NzIGhhdmUKPiB0aGUgUEhZIG5vZGUuCgpX aHkgZG9uJ3QgdGhleSBoYXZlIHRoZSBQSFkgbm9kZT8gRG9lcyB0aGUgaGFyZHdhcmUgbm90IGhh dmUgYSBQSFk/CgpUaGUgbWFpbmxpbmUgYmluZGluZyBtYWtlcyB0aGUgcGh5cyBwcm9wZXJ0eSBt YW5kYXRvcnkuIElmIHlvdSBoYXZlCmRvd25zdHJlYW0gZGV2aWNlIHRyZWVzIHRoYXQgZG9uJ3Qg aGF2ZSB0aGUgUEhZIG5vZGUgcHJvcGVybHkKZGVzY3JpYmVkIGluIHRoZSBEVCBldmVuIHRob3Vn aCB0aGUgUEhZIGV4aXN0cywgdGhlbiB0aGF0IGlzIG5vdCBhCnRoaW5nIHRoZSBtYWlubGluZSBr ZXJuZWwgc2hvdWxkIHN1cHBvcnQuCgpJZiB0aGUgaGFyZHdhcmUgcmVhbGx5IGRvZXNuJ3QgaGF2 ZSBhIFBIWSwgd2hpY2ggd291bGQgc3VycHJpc2UgbWUsCnRoZW4gdGhlIGJpbmRpbmcgc2hvdWxk IHByb3Blcmx5IGRvY3VtZW50IHRoaXMsIHNvIHRoYXQgdGhlIERUIGNoZWNrcwpwYXNzIHdpdGhv dXQgd2FybmluZ3MuCgo+ID4gRW50ZXJ0YWluIHRoaXMgZHJpdmVyJ3MgaW5zaXN0ZW5jZSBvbiBw bGF5aW5nIHdpdGggdGhlIFBIWSdzIFJQTSwgYnV0Cj4gPiBhdAo+ID4gbGVhc3QgZml4IHRoZSBw YXJ0IHdoZXJlIGl0IGRvZXNuJ3QgaW5jcmVhc2UgdGhlIHJlZmVyZW5jZSBjb3VudCwKPiA+IHdo aWNoCj4gPiB3b3VsZCBsZWFkIHRvIHVzZS1hZnRlci1mcmVlLgo+ID4gCj4gPiBTaWduZWQtb2Zm LWJ5OiBOaWNvbGFzIEZyYXR0YXJvbGkgPG5pY29sYXMuZnJhdHRhcm9saUBjb2xsYWJvcmEuY29t Pgo+ID4gLS0tCj4gPiAgZHJpdmVycy91ZnMvaG9zdC91ZnMtbWVkaWF0ZWsuYyB8IDg3ICsrKysr KysrKysrKysrKy0tLS0tLS0tLS0tLS0tCj4gPiAtLS0tLS0tLS0tLS0KPiA+ICAxIGZpbGUgY2hh bmdlZCwgMzIgaW5zZXJ0aW9ucygrKSwgNTUgZGVsZXRpb25zKC0pCj4gPiAKPiA+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL3Vmcy9ob3N0L3Vmcy1tZWRpYXRlay5jIGIvZHJpdmVycy91ZnMvaG9zdC91 ZnMtCj4gPiBtZWRpYXRlay5jCj4gPiBpbmRleCA5YzBhYzcyZDZlNDMuLjg4OWExZDU4YTA0MSAx MDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvdWZzL2hvc3QvdWZzLW1lZGlhdGVrLmMKPiA+ICsrKyBi L2RyaXZlcnMvdWZzL2hvc3QvdWZzLW1lZGlhdGVrLmMKPiA+IEBAIC0yMzUzLDc0ICsyMzUzLDQ5 IEBAIE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHVmc19tdGtfb2ZfbWF0Y2gpOwo+ID4gICAqLwo+ ID4gIHN0YXRpYyBpbnQgdWZzX210a19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2 KQo+ID4gIHsKPiA+IC0JaW50IGVycjsKPiA+IC0Jc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYt PmRldiwgKnBoeV9kZXYgPSBOVUxMOwo+ID4gLQlzdHJ1Y3QgZGV2aWNlX25vZGUgKnJlc2V0X25v ZGUsICpwaHlfbm9kZSA9IE5VTEw7Cj4gPiAtCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnJlc2V0 X3BkZXYsICpwaHlfcGRldiA9IE5VTEw7Cj4gPiAtCXN0cnVjdCBkZXZpY2VfbGluayAqbGluazsK PiA+IC0Jc3RydWN0IHVmc19oYmEgKmhiYTsKPiA+ICsJc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGh5X3BkZXY7Cj4gPiArCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7Cj4gPiArCXN0 cnVjdCBkZXZpY2Vfbm9kZSAqcGh5X25vZGU7Cj4gPiAgCXN0cnVjdCB1ZnNfbXRrX2hvc3QgKmhv c3Q7Cj4gPiArCXN0cnVjdCBkZXZpY2UgKnBoeV9kZXY7Cj4gPiArCXN0cnVjdCB1ZnNfaGJhICpo YmE7Cj4gPiArCWludCBlcnI7Cj4gPiAgCj4gPiAtCXJlc2V0X25vZGUgPSBvZl9maW5kX2NvbXBh dGlibGVfbm9kZShOVUxMLCBOVUxMLAo+ID4gLQkJCQkJICAgICAidGksc3lzY29uLXJlc2V0Iik7 Cj4gPiAtCWlmICghcmVzZXRfbm9kZSkgewo+ID4gLQkJZGV2X25vdGljZShkZXYsICJmaW5kIHRp LHN5c2Nvbi1yZXNldCBmYWlsXG4iKTsKPiA+IC0JCWdvdG8gc2tpcF9yZXNldDsKPiA+IC0JfQo+ ID4gLQlyZXNldF9wZGV2ID0gb2ZfZmluZF9kZXZpY2VfYnlfbm9kZShyZXNldF9ub2RlKTsKPiA+ IC0JaWYgKCFyZXNldF9wZGV2KSB7Cj4gPiAtCQlkZXZfbm90aWNlKGRldiwgImZpbmQgcmVzZXRf cGRldiBmYWlsXG4iKTsKPiA+IC0JCWdvdG8gc2tpcF9yZXNldDsKPiA+IC0JfQo+ID4gLQlsaW5r ID0gZGV2aWNlX2xpbmtfYWRkKGRldiwgJnJlc2V0X3BkZXYtPmRldiwKPiA+IC0JCURMX0ZMQUdf QVVUT1BST0JFX0NPTlNVTUVSKTsKPiA+IC0JcHV0X2RldmljZSgmcmVzZXRfcGRldi0+ZGV2KTsK PiA+IC0JaWYgKCFsaW5rKSB7Cj4gPiAtCQlkZXZfbm90aWNlKGRldiwgImFkZCByZXNldCBkZXZp Y2VfbGluayBmYWlsXG4iKTsKPiA+IC0JCWdvdG8gc2tpcF9yZXNldDsKPiA+IC0JfQo+ID4gLQkv KiBzdXBwbGllciBpcyBub3QgcHJvYmVkICovCj4gPiAtCWlmIChsaW5rLT5zdGF0dXMgPT0gRExf U1RBVEVfRE9STUFOVCkgewo+ID4gLQkJZXJyID0gLUVQUk9CRV9ERUZFUjsKPiA+IC0JCWdvdG8g b3V0Owo+ID4gLQl9Cj4gPiAtCj4gPiAtc2tpcF9yZXNldDoKPiA+ICAJLyogZmluZCBwaHkgbm9k ZSAqLwo+ID4gIAlwaHlfbm9kZSA9IG9mX3BhcnNlX3BoYW5kbGUoZGV2LT5vZl9ub2RlLCAicGh5 cyIsIDApOwo+ID4gKwlpZiAoIXBoeV9ub2RlKQo+ID4gKwkJcmV0dXJuIGRldl9lcnJfcHJvYmUo ZGV2LCAtRU5PRU5ULCAiTm8gUEhZIG5vZGUKPiA+IGZvdW5kXG4iKTsKPiA+ICAKPiA+IC0JaWYg KHBoeV9ub2RlKSB7Cj4gPiAtCQlwaHlfcGRldiA9IG9mX2ZpbmRfZGV2aWNlX2J5X25vZGUocGh5 X25vZGUpOwo+ID4gLQkJaWYgKCFwaHlfcGRldikKPiA+IC0JCQlnb3RvIHNraXBfcGh5Owo+ID4g LQkJcGh5X2RldiA9ICZwaHlfcGRldi0+ZGV2Owo+ID4gKwlwaHlfcGRldiA9IG9mX2ZpbmRfZGV2 aWNlX2J5X25vZGUocGh5X25vZGUpOwo+ID4gKwlvZl9ub2RlX3B1dChwaHlfbm9kZSk7Cj4gPiAr CWlmICghcGh5X3BkZXYpCj4gPiArCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIC1FTk9ERVYs ICJObyBQSFkgZGV2aWNlCj4gPiBmb3VuZFxuIik7Cj4gPiAgCj4gPiAtCQlwbV9ydW50aW1lX3Nl dF9hY3RpdmUocGh5X2Rldik7Cj4gPiAtCQlwbV9ydW50aW1lX2VuYWJsZShwaHlfZGV2KTsKPiA+ IC0JCXBtX3J1bnRpbWVfZ2V0X3N5bmMocGh5X2Rldik7Cj4gPiArCXBoeV9kZXYgPSAmcGh5X3Bk ZXYtPmRldjsKPiA+ICAKPiA+IC0JCXB1dF9kZXZpY2UocGh5X2Rldik7Cj4gPiAtCQlkZXZfaW5m byhkZXYsICJwaHlzIG5vZGUgZm91bmRcbiIpOwo+ID4gLQl9IGVsc2Ugewo+ID4gLQkJZGV2X25v dGljZShkZXYsICJwaHlzIG5vZGUgbm90IGZvdW5kXG4iKTsKPiA+ICsJZXJyID0gcG1fcnVudGlt ZV9zZXRfYWN0aXZlKHBoeV9kZXYpOwo+ID4gKwlpZiAoZXJyKSB7Cj4gPiArCQlkZXZfZXJyX3By b2JlKGRldiwgZXJyLCAiRmFpbGVkIHRvIGFjdGl2YXRlIFBIWQo+ID4gUlBNXG4iKTsKPiA+ICsJ CWdvdG8gZXJyX3B1dF9waHk7Cj4gPiArCX0KPiA+ICsJcG1fcnVudGltZV9lbmFibGUocGh5X2Rl dik7Cj4gPiArCWVyciA9IHBtX3J1bnRpbWVfZ2V0X3N5bmMocGh5X2Rldik7Cj4gPiArCWlmIChl cnIpIHsKPiA+ICsJCWRldl9lcnJfcHJvYmUoZGV2LCBlcnIsICJGYWlsZWQgdG8gcG93ZXIgb24g UEhZXG4iKTsKPiA+ICsJCWdvdG8gZXJyX3B1dF9waHk7Cj4gPiAgCX0KPiA+ICAKPiA+IC1za2lw X3BoeToKPiA+ICAJLyogcGVyZm9ybSBnZW5lcmljIHByb2JlICovCj4gPiAgCWVyciA9IHVmc2hj ZF9wbHRmcm1faW5pdChwZGV2LCAmdWZzX2hiYV9tdGtfdm9wcyk7Cj4gPiAgCWlmIChlcnIpIHsK PiA+IC0JCWRldl9lcnIoZGV2LCAicHJvYmUgZmFpbGVkICVkXG4iLCBlcnIpOwo+ID4gLQkJZ290 byBvdXQ7Cj4gPiArCQlkZXZfZXJyX3Byb2JlKGRldiwgZXJyLCAiR2VuZXJpYyBwbGF0Zm9ybSBw cm9iZQo+ID4gZmFpbGVkXG4iKTsKPiA+ICsJCWdvdG8gZXJyX3B1dF9waHk7Cj4gPiAgCX0KPiA+ ICAKPiA+ICAJaGJhID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7Cj4gPiAtCWlmICghaGJh KQo+ID4gLQkJZ290byBvdXQ7Cj4gPiAgCj4gPiAtCWlmIChwaHlfbm9kZSAmJiBwaHlfZGV2KSB7 Cj4gPiAtCQlob3N0ID0gdWZzaGNkX2dldF92YXJpYW50KGhiYSk7Cj4gPiAtCQlob3N0LT5waHlf ZGV2ID0gcGh5X2RldjsKPiA+IC0JfQo+ID4gKwlob3N0ID0gdWZzaGNkX2dldF92YXJpYW50KGhi YSk7Cj4gPiArCWhvc3QtPnBoeV9kZXYgPSBwaHlfZGV2Owo+ID4gIAo+ID4gIAkvKgo+ID4gIAkg KiBCZWNhdXNlIHRoZSBkZWZhdWx0IHBvd2VyIHNldHRpbmcgb2YgVlN4ICh0aGUgdXBwZXIgbGF5 ZXIgb2YKPiA+IEBAIC0yNDI5LDkgKzI0MDQsMTEgQEAgc3RhdGljIGludCB1ZnNfbXRrX3Byb2Jl KHN0cnVjdAo+ID4gcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ID4gIAkgKi8KPiA+ICAJdWZzX210 a19kZXZfdnJlZ19zZXRfbHBtKGhiYSwgZmFsc2UpOwo+ID4gIAo+ID4gLW91dDoKPiA+IC0Jb2Zf bm9kZV9wdXQocGh5X25vZGUpOwo+ID4gLQlvZl9ub2RlX3B1dChyZXNldF9ub2RlKTsKPiA+ICsJ cmV0dXJuIDA7Cj4gPiArCj4gPiArZXJyX3B1dF9waHk6Cj4gPiArCXB1dF9kZXZpY2UocGh5X2Rl dik7Cj4gPiArCj4gPiAgCXJldHVybiBlcnI7Cj4gPiAgfQo+ID4gIAo+ID4gCj4gCgoKCgoKLS0g CmxpbnV4LXBoeSBtYWlsaW5nIGxpc3QKbGludXgtcGh5QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0 cHM6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcGh5Cg==