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 CBA823C9EF0 for ; Thu, 10 Sep 2026 09:41:08 +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=1789033270; cv=none; b=C1kA2EObhFlOS9foK5TfH2JoN3sWnWrtoArWGu1rY/6DMLSVyBSPM2PaO4exqlZSrhM+0P4evrV1Blqx/Zj1DIUJ4bZ/TJGkyW6FFpgO+k8JWrF/PjRZd60xAYVrzAHl0atzUn5qrhEXJT/Y0exA1Cb4a+2Vq+nJkSIiechLhIA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789033270; c=relaxed/simple; bh=tcFKYaDMfsHuMRnSlWdlRVHdpLeIKTEi0NeWb3ndDeM=; h=From:Subject:To:Cc:In-Reply-To:References:Content-Type:Date: Message-Id; b=puc46QJmIuZADljf8n+SmXqfcwomYkYRLPX37uVTCKmor2JEMbNHpA3v2hRu3F64VB5M27eTKGKOdU2RCAkgxQFFbt7PzWGrO0C0QRQAKkZtCzEsiVKcGn6mSgYX82fabTEIJxqsHkdQghp8a7CadCUE/WhHQeGq4sCXQj/Av4w= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=hU7nLQeA; 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="hU7nLQeA" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3A1451F000FF; Thu, 10 Sep 2026 09:41:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1789033268; bh=f/tNEh3u69QI6vn+/x9mNUryEaGDOqotLzS3rONNass=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=hU7nLQeAwq4pWrwhlO2ILp1OORFmx+9Dk7G2numdWdrIsUtEA+jvkHTz4vklyUsP7 lFaWuRTwIPboVlHq/uhPaMOGAOq4UrFPts/df82w2IGvC0uv03EQfFuRhLl/y5L9SE T/ODl9DvaQqVKIQ84OZMFcDT1FrYkndJoDliRbx7tbh7Mekdrp99nddoWre4Xxj+0y xiy4T+oiV5wWD5HTZ95MwXjki1WfKPTFxQdy9F6ekl+++2XwqjOkuOrcnrWciAivmF LbrEwXlnKxgygQTZ37U55h3spx8PKJOISj4+7FR+91AMfXnl2A3GWbvkyeWwlvXtEw Ld0g6264OrDgA== From: sashiko-bot@kernel.org Subject: Re: [PATCH v4 03/12] phy: phy-mtk-dp: Allow probing with devicetree match Reply-To: sashiko-reviews@lists.linux.dev To: "AngeloGioacchino Del Regno" Cc: conor+dt@kernel.org, vkoul@kernel.org, dri-devel@lists.freedesktop.org, robh@kernel.org, olteanv@gmail.com, linux-phy@lists.infradead.org, neil.armstrong@linaro.org, devicetree@vger.kernel.org In-Reply-To: <20260910092038.48291-4-angelogioacchino.delregno@collabora.com> References: <20260910092038.48291-1-angelogioacchino.delregno@collabora.com> <20260910092038.48291-4-angelogioacchino.delregno@collabora.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Date: Thu, 10 Sep 2026 09:41:07 +0000 Message-Id: <20260910094108.3A1451F000FF@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 2 potential issue(= s) to consider: New issues: - [High] Hardcoded register offsets cause incorrect MMIO access or resource= conflicts in the new OF probe path. Pre-existing issues: - [High] NULL pointer dereference when accessing platform_data before valid= ation. -- commit e5a7ed1fddd4b70c5e3f6f679c0fa4e43da6f22b Author: AngeloGioacchino Del Regno phy: phy-mtk-dp: Allow probing with devicetree match This commit decouples the DisplayPort PHY driver from the DisplayPort IP driver by allowing it to probe via a devicetree match. When probed via devicetree, it registers an OF PHY provider and maps its own MMIO regmap, while retaining the legacy behavior in mtk_dp_phy_legacy_probe(). > diff --git a/drivers/phy/mediatek/phy-mtk-dp.c b/drivers/phy/mediatek/phy= -mtk-dp.c > index bf7b3a95e72d2..d241004e28286 100644 > --- a/drivers/phy/mediatek/phy-mtk-dp.c > +++ b/drivers/phy/mediatek/phy-mtk-dp.c [ ... ] > @@ -160,43 +162,109 @@ static const struct phy_ops mtk_dp_phy_dev_ops =3D= { > .owner =3D THIS_MODULE, > }; > =20 > +static void mtk_dp_phy_legacy_remove_lookup(void *data) > +{ > + struct phy *phy =3D data; > + struct mtk_dp_phy *dp_phy =3D phy_get_drvdata(phy); > + > + phy_remove_lookup(phy, "dp", dev_name(dp_phy->dev)); > +} > + > +static int mtk_dp_phy_legacy_probe(struct platform_device *pdev, struct = mtk_dp_phy *dp_phy) > +{ > + struct device *dev =3D &pdev->dev; > + struct phy *phy; > + int ret; > + > + dp_phy->regmap =3D *(struct regmap **)dev->platform_data; > + if (!dp_phy->regmap) > + return dev_err_probe(dev, -EINVAL, "No platform data available\n"); [Severity: High] This is a pre-existing issue, but is it possible for dev->platform_data to = be NULL here? If the platform device is instantiated without platform_data (for example, via a sysfs manual bind or driver core testing), dereferencing it unconditionally before the validation check will cause a crash. The code currently does: dp_phy->regmap =3D *(struct regmap **)dev->platform_data; The subsequent check if (!dp_phy->regmap) cannot prevent the crash if dev->platform_data itself is NULL. Could we validate dev->platform_data before attempting to dereference it? > + > + phy =3D devm_phy_create(dev, NULL, &mtk_dp_phy_dev_ops); > + if (IS_ERR(phy)) > + return dev_err_probe(dev, PTR_ERR(phy), > + "Failed to create DP PHY\n"); [ ... ] > +static int mtk_dp_phy_probe(struct platform_device *pdev) > { > struct device *dev =3D &pdev->dev; > + struct phy_provider *provider; > struct mtk_dp_phy *dp_phy; > + void __iomem *base; > struct phy *phy; > - struct regmap *regs; > - > - regs =3D *(struct regmap **)dev->platform_data; > - if (!regs) > - return dev_err_probe(dev, -EINVAL, > - "No data passed, requires struct regmap**\n"); > + int ret; > =20 > dp_phy =3D devm_kzalloc(dev, sizeof(*dp_phy), GFP_KERNEL); > if (!dp_phy) > return -ENOMEM; > =20 > - dp_phy->regmap =3D regs; > + dp_phy->dev =3D dev; > + > + /* If there's no devicetree, go for legacy pdev probe */ > + if (!dev->of_node) > + return mtk_dp_phy_legacy_probe(pdev, dp_phy); > + > + base =3D devm_platform_ioremap_resource(pdev, 0); > + if (IS_ERR(base)) > + return PTR_ERR(base); > + > + dp_phy->regmap =3D devm_regmap_init_mmio(dev, base, &mtk_dp_phy_regmap_= cfg); [Severity: High] When mapping the dedicated MMIO region for the PHY in the new devicetree match path, will the existing hardcoded register offsets cause out-of-bounds accesses? Looking at the existing phy data structures in this driver, offsets such as .off_dig_glb =3D 0x1000 are used. These offsets appear to be relative to the DP IP base address from the legacy shared regmap. If the devicetree 'reg' property points to the PHY's actual physical base address, using these hardcoded offsets on top of the new dedicated MMIO mapping will overshoot the PHY registers by an additional 0x1000. Alternatively, if the devicetree tries to compensate by pointing to the DP IP base, wouldn't this cause a resource conflict (-EBUSY) with the DP driver's own devm_platform_ioremap_resource() call? > + if (IS_ERR(dp_phy->regmap)) > + return PTR_ERR(dp_phy->regmap); > + > + ret =3D devm_pm_runtime_enable(dev); > + if (ret) > + return ret; > + > phy =3D devm_phy_create(dev, NULL, &mtk_dp_phy_dev_ops); [ ... ] --=20 Sashiko AI review =C2=B7 https://sashiko.dev/#/patchset/20260910092038.4829= 1-1-angelogioacchino.delregno@collabora.com?part=3D3 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 51B76C79F9F for ; Thu, 10 Sep 2026 09:41:12 +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=xUY8xhZNqhSnQrds1zsvhvwTKzKpFcWXzOGHsQjBvDw=; b=Cu6zrjA6gtOPS2 UjCTqpJIdeL3KRF7CPDkNb9qzdMOsSmUclhG5OXYEowzxqYCo6r6Qzr6hXN10mzn0q8dojdMZuDEq Dz/7v5ixnkvFQksX6GywLuV1yPd602mM6rh+PX1Obkg+25rrG5KV2g9qiShDq2UEzdOGzzqPvAGVy tJcAhZYL89R2s3D63fCJ+u0pmigZhYRCzDQ9TJdsZ0fZl1xTyXPLRrKU6DG+mxLltVorvk8TdXOgR gaBDd70t//A7eFuKt2p1Uzd0JA+yuT+oEig7MvlpDsiB+PAkeyiJGhy5o5sD6SZkqPPB1obGxMpki ShCiTSuPcPiEkLJ56klA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1x4bHL-0000000Dv1D-3vq0; Thu, 10 Sep 2026 09:41:11 +0000 Received: from sea.source.kernel.org ([2600:3c0a:e001:78e:0:1991:8:25]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1x4bHK-0000000Dv0y-32ON for linux-phy@lists.infradead.org; Thu, 10 Sep 2026 09:41:10 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id CE0B343C2F; Thu, 10 Sep 2026 09:41:08 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3A1451F000FF; Thu, 10 Sep 2026 09:41:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1789033268; bh=f/tNEh3u69QI6vn+/x9mNUryEaGDOqotLzS3rONNass=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=hU7nLQeAwq4pWrwhlO2ILp1OORFmx+9Dk7G2numdWdrIsUtEA+jvkHTz4vklyUsP7 lFaWuRTwIPboVlHq/uhPaMOGAOq4UrFPts/df82w2IGvC0uv03EQfFuRhLl/y5L9SE T/ODl9DvaQqVKIQ84OZMFcDT1FrYkndJoDliRbx7tbh7Mekdrp99nddoWre4Xxj+0y xiy4T+oiV5wWD5HTZ95MwXjki1WfKPTFxQdy9F6ekl+++2XwqjOkuOrcnrWciAivmF LbrEwXlnKxgygQTZ37U55h3spx8PKJOISj4+7FR+91AMfXnl2A3GWbvkyeWwlvXtEw Ld0g6264OrDgA== From: sashiko-bot@kernel.org Subject: Re: [PATCH v4 03/12] phy: phy-mtk-dp: Allow probing with devicetree match To: "AngeloGioacchino Del Regno" Cc: conor+dt@kernel.org, vkoul@kernel.org, dri-devel@lists.freedesktop.org, robh@kernel.org, olteanv@gmail.com, linux-phy@lists.infradead.org, neil.armstrong@linaro.org, devicetree@vger.kernel.org In-Reply-To: <20260910092038.48291-4-angelogioacchino.delregno@collabora.com> References: <20260910092038.48291-1-angelogioacchino.delregno@collabora.com> <20260910092038.48291-4-angelogioacchino.delregno@collabora.com> Date: Thu, 10 Sep 2026 09:41:07 +0000 Message-Id: <20260910094108.3A1451F000FF@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 MiBwb3RlbnRpYWwgaXNzdWUocykgdG8gY29uc2lkZXI6CgpOZXcgaXNzdWVzOgotIFtIaWdoXSBI YXJkY29kZWQgcmVnaXN0ZXIgb2Zmc2V0cyBjYXVzZSBpbmNvcnJlY3QgTU1JTyBhY2Nlc3Mgb3Ig cmVzb3VyY2UgY29uZmxpY3RzIGluIHRoZSBuZXcgT0YgcHJvYmUgcGF0aC4KClByZS1leGlzdGlu ZyBpc3N1ZXM6Ci0gW0hpZ2hdIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSB3aGVuIGFjY2Vzc2lu ZyBwbGF0Zm9ybV9kYXRhIGJlZm9yZSB2YWxpZGF0aW9uLgotLQoKY29tbWl0IGU1YTdlZDFmZGRk NGI3MGM1ZTNmNmY2NzljMGZhNGU0M2RhNmYyMmIKQXV0aG9yOiBBbmdlbG9HaW9hY2NoaW5vIERl bCBSZWdubyA8YW5nZWxvZ2lvYWNjaGluby5kZWxyZWdub0Bjb2xsYWJvcmEuY29tPgoKcGh5OiBw aHktbXRrLWRwOiBBbGxvdyBwcm9iaW5nIHdpdGggZGV2aWNldHJlZSBtYXRjaAoKVGhpcyBjb21t aXQgZGVjb3VwbGVzIHRoZSBEaXNwbGF5UG9ydCBQSFkgZHJpdmVyIGZyb20gdGhlIERpc3BsYXlQ b3J0IElQCmRyaXZlciBieSBhbGxvd2luZyBpdCB0byBwcm9iZSB2aWEgYSBkZXZpY2V0cmVlIG1h dGNoLiBXaGVuIHByb2JlZCB2aWEKZGV2aWNldHJlZSwgaXQgcmVnaXN0ZXJzIGFuIE9GIFBIWSBw cm92aWRlciBhbmQgbWFwcyBpdHMgb3duIE1NSU8gcmVnbWFwLAp3aGlsZSByZXRhaW5pbmcgdGhl IGxlZ2FjeSBiZWhhdmlvciBpbiBtdGtfZHBfcGh5X2xlZ2FjeV9wcm9iZSgpLgoKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9waHkvbWVkaWF0ZWsvcGh5LW10ay1kcC5jIGIvZHJpdmVycy9waHkvbWVk aWF0ZWsvcGh5LW10ay1kcC5jCj4gaW5kZXggYmY3YjNhOTVlNzJkMi4uZDI0MTAwNGUyODI4NiAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL3BoeS9tZWRpYXRlay9waHktbXRrLWRwLmMKPiArKysgYi9k cml2ZXJzL3BoeS9tZWRpYXRlay9waHktbXRrLWRwLmMKClsgLi4uIF0KCj4gQEAgLTE2MCw0MyAr MTYyLDEwOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHBoeV9vcHMgbXRrX2RwX3BoeV9kZXZfb3Bz ID0gewo+ICAJLm93bmVyID0gVEhJU19NT0RVTEUsCj4gIH07Cj4gIAo+ICtzdGF0aWMgdm9pZCBt dGtfZHBfcGh5X2xlZ2FjeV9yZW1vdmVfbG9va3VwKHZvaWQgKmRhdGEpCj4gK3sKPiArCXN0cnVj dCBwaHkgKnBoeSA9IGRhdGE7Cj4gKwlzdHJ1Y3QgbXRrX2RwX3BoeSAqZHBfcGh5ID0gcGh5X2dl dF9kcnZkYXRhKHBoeSk7Cj4gKwo+ICsJcGh5X3JlbW92ZV9sb29rdXAocGh5LCAiZHAiLCBkZXZf bmFtZShkcF9waHktPmRldikpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IG10a19kcF9waHlfbGVn YWN5X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHN0cnVjdCBtdGtfZHBfcGh5 ICpkcF9waHkpCj4gK3sKPiArCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7Cj4gKwlz dHJ1Y3QgcGh5ICpwaHk7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWRwX3BoeS0+cmVnbWFwID0gKihz dHJ1Y3QgcmVnbWFwICoqKWRldi0+cGxhdGZvcm1fZGF0YTsKPiArCWlmICghZHBfcGh5LT5yZWdt YXApCj4gKwkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCAtRUlOVkFMLCAiTm8gcGxhdGZvcm0g ZGF0YSBhdmFpbGFibGVcbiIpOwoKW1NldmVyaXR5OiBIaWdoXQpUaGlzIGlzIGEgcHJlLWV4aXN0 aW5nIGlzc3VlLCBidXQgaXMgaXQgcG9zc2libGUgZm9yIGRldi0+cGxhdGZvcm1fZGF0YSB0byBi ZQpOVUxMIGhlcmU/IElmIHRoZSBwbGF0Zm9ybSBkZXZpY2UgaXMgaW5zdGFudGlhdGVkIHdpdGhv dXQgcGxhdGZvcm1fZGF0YQooZm9yIGV4YW1wbGUsIHZpYSBhIHN5c2ZzIG1hbnVhbCBiaW5kIG9y IGRyaXZlciBjb3JlIHRlc3RpbmcpLCBkZXJlZmVyZW5jaW5nCml0IHVuY29uZGl0aW9uYWxseSBi ZWZvcmUgdGhlIHZhbGlkYXRpb24gY2hlY2sgd2lsbCBjYXVzZSBhIGNyYXNoLgoKVGhlIGNvZGUg Y3VycmVudGx5IGRvZXM6CgpkcF9waHktPnJlZ21hcCA9ICooc3RydWN0IHJlZ21hcCAqKilkZXYt PnBsYXRmb3JtX2RhdGE7CgpUaGUgc3Vic2VxdWVudCBjaGVjayBpZiAoIWRwX3BoeS0+cmVnbWFw KSBjYW5ub3QgcHJldmVudCB0aGUgY3Jhc2ggaWYKZGV2LT5wbGF0Zm9ybV9kYXRhIGl0c2VsZiBp cyBOVUxMLiBDb3VsZCB3ZSB2YWxpZGF0ZSBkZXYtPnBsYXRmb3JtX2RhdGEKYmVmb3JlIGF0dGVt cHRpbmcgdG8gZGVyZWZlcmVuY2UgaXQ/Cgo+ICsKPiArCXBoeSA9IGRldm1fcGh5X2NyZWF0ZShk ZXYsIE5VTEwsICZtdGtfZHBfcGh5X2Rldl9vcHMpOwo+ICsJaWYgKElTX0VSUihwaHkpKQo+ICsJ CXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihwaHkpLAo+ICsJCQkJICAgICAiRmFp bGVkIHRvIGNyZWF0ZSBEUCBQSFlcbiIpOwoKWyAuLi4gXQoKPiArc3RhdGljIGludCBtdGtfZHBf cGh5X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gIHsKPiAgCXN0cnVjdCBk ZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7Cj4gKwlzdHJ1Y3QgcGh5X3Byb3ZpZGVyICpwcm92aWRl cjsKPiAgCXN0cnVjdCBtdGtfZHBfcGh5ICpkcF9waHk7Cj4gKwl2b2lkIF9faW9tZW0gKmJhc2U7 Cj4gIAlzdHJ1Y3QgcGh5ICpwaHk7Cj4gLQlzdHJ1Y3QgcmVnbWFwICpyZWdzOwo+IC0KPiAtCXJl Z3MgPSAqKHN0cnVjdCByZWdtYXAgKiopZGV2LT5wbGF0Zm9ybV9kYXRhOwo+IC0JaWYgKCFyZWdz KQo+IC0JCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgLUVJTlZBTCwKPiAtCQkJCSAgICAgIk5v IGRhdGEgcGFzc2VkLCByZXF1aXJlcyBzdHJ1Y3QgcmVnbWFwKipcbiIpOwo+ICsJaW50IHJldDsK PiAgCj4gIAlkcF9waHkgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKmRwX3BoeSksIEdGUF9L RVJORUwpOwo+ICAJaWYgKCFkcF9waHkpCj4gIAkJcmV0dXJuIC1FTk9NRU07Cj4gIAo+IC0JZHBf cGh5LT5yZWdtYXAgPSByZWdzOwo+ICsJZHBfcGh5LT5kZXYgPSBkZXY7Cj4gKwo+ICsJLyogSWYg dGhlcmUncyBubyBkZXZpY2V0cmVlLCBnbyBmb3IgbGVnYWN5IHBkZXYgcHJvYmUgKi8KPiArCWlm ICghZGV2LT5vZl9ub2RlKQo+ICsJCXJldHVybiBtdGtfZHBfcGh5X2xlZ2FjeV9wcm9iZShwZGV2 LCBkcF9waHkpOwo+ICsKPiArCWJhc2UgPSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2Uo cGRldiwgMCk7Cj4gKwlpZiAoSVNfRVJSKGJhc2UpKQo+ICsJCXJldHVybiBQVFJfRVJSKGJhc2Up Owo+ICsKPiArCWRwX3BoeS0+cmVnbWFwID0gZGV2bV9yZWdtYXBfaW5pdF9tbWlvKGRldiwgYmFz ZSwgJm10a19kcF9waHlfcmVnbWFwX2NmZyk7CgpbU2V2ZXJpdHk6IEhpZ2hdCldoZW4gbWFwcGlu ZyB0aGUgZGVkaWNhdGVkIE1NSU8gcmVnaW9uIGZvciB0aGUgUEhZIGluIHRoZSBuZXcgZGV2aWNl dHJlZQptYXRjaCBwYXRoLCB3aWxsIHRoZSBleGlzdGluZyBoYXJkY29kZWQgcmVnaXN0ZXIgb2Zm c2V0cyBjYXVzZSBvdXQtb2YtYm91bmRzCmFjY2Vzc2VzPwoKTG9va2luZyBhdCB0aGUgZXhpc3Rp bmcgcGh5IGRhdGEgc3RydWN0dXJlcyBpbiB0aGlzIGRyaXZlciwgb2Zmc2V0cyBzdWNoIGFzCi5v ZmZfZGlnX2dsYiA9IDB4MTAwMCBhcmUgdXNlZC4gVGhlc2Ugb2Zmc2V0cyBhcHBlYXIgdG8gYmUg cmVsYXRpdmUgdG8gdGhlCkRQIElQIGJhc2UgYWRkcmVzcyBmcm9tIHRoZSBsZWdhY3kgc2hhcmVk IHJlZ21hcC4KCklmIHRoZSBkZXZpY2V0cmVlICdyZWcnIHByb3BlcnR5IHBvaW50cyB0byB0aGUg UEhZJ3MgYWN0dWFsIHBoeXNpY2FsCmJhc2UgYWRkcmVzcywgdXNpbmcgdGhlc2UgaGFyZGNvZGVk IG9mZnNldHMgb24gdG9wIG9mIHRoZSBuZXcgZGVkaWNhdGVkCk1NSU8gbWFwcGluZyB3aWxsIG92 ZXJzaG9vdCB0aGUgUEhZIHJlZ2lzdGVycyBieSBhbiBhZGRpdGlvbmFsIDB4MTAwMC4KCkFsdGVy bmF0aXZlbHksIGlmIHRoZSBkZXZpY2V0cmVlIHRyaWVzIHRvIGNvbXBlbnNhdGUgYnkgcG9pbnRp bmcgdG8gdGhlCkRQIElQIGJhc2UsIHdvdWxkbid0IHRoaXMgY2F1c2UgYSByZXNvdXJjZSBjb25m bGljdCAoLUVCVVNZKSB3aXRoIHRoZQpEUCBkcml2ZXIncyBvd24gZGV2bV9wbGF0Zm9ybV9pb3Jl bWFwX3Jlc291cmNlKCkgY2FsbD8KCj4gKwlpZiAoSVNfRVJSKGRwX3BoeS0+cmVnbWFwKSkKPiAr CQlyZXR1cm4gUFRSX0VSUihkcF9waHktPnJlZ21hcCk7Cj4gKwo+ICsJcmV0ID0gZGV2bV9wbV9y dW50aW1lX2VuYWJsZShkZXYpOwo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiAg CXBoeSA9IGRldm1fcGh5X2NyZWF0ZShkZXYsIE5VTEwsICZtdGtfZHBfcGh5X2Rldl9vcHMpOwoK WyAuLi4gXQoKLS0gClNhc2hpa28gQUkgcmV2aWV3IMK3IGh0dHBzOi8vc2FzaGlrby5kZXYvIy9w YXRjaHNldC8yMDI2MDkxMDA5MjAzOC40ODI5MS0xLWFuZ2Vsb2dpb2FjY2hpbm8uZGVscmVnbm9A Y29sbGFib3JhLmNvbT9wYXJ0PTMKCi0tIApsaW51eC1waHkgbWFpbGluZyBsaXN0CmxpbnV4LXBo eUBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHBzOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2xpbnV4LXBoeQo=