From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=100.103.45.18 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1793735937; b=GSuuesg+iSXJC77Q/8ITTqgb2b+hxYYWdm834G4Avn5XZ/oJ+6Z4sSkSHf+d5sCeQI2F fDfAFZAxQVjDhU8hN1gCP0h1WFN7RlnB6TDuSksUDSC7v4YXrruobYZaEhWBYfmsF4B2b u2uW/1na7foXixOv3THeiHpZUCqwEr37PsscL9ZoxrG7T8qv3jmKbfvKHMTSV6vZ/VC/z eDnOO2taUVG+99oKF4CJJSGXiW66DZBxQcfN3a3vk8VdhtAcvS26LNwYGX9PDk0JkVl1O gE5OEH26xduQbNrjkrF5IJtFBCo8/5afqIJvshZVlNgl6K5qCR/QzbgVr42v3I46NvQ== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1793735937; h=Received:DKIM-Signature:Message-ID:From:Subject:Reply-To:To:Cc: In-Reply-To:References:Content-Type:Content-Transfer-Encoding:Date; bh=8LO6gMYxE+TOLJg9c8n9D6wo/KLzB4ZidZCUlxWly20=; b=u9+7q3fQ23XhXtORlydrK+pywT08WBfkidy4s6Py42bOHsU5ddmx12TyM8QO8e8FHFSq GdYhM6Ax8/nDdcjTA/UksXMzZJksXrVP3YRG0cGN7okIwDb0MsfhwedwGANMKOSuu6m2y yhprCNkicNa6os/Ut7+QZ4+GFq/6JQk7ud2Js//dBsqiIzn/v2LM8St8Ov/s1XV79dbTD PhuUWbbGljpBofJAPijFCxxPCepbcYdj/ct/FxWZ5KRLoEScRIuG3mJyUy7zCNN87ek4l quHjNz2GCeI3T8xUcxBie3wIMpfakIRu1LDdMZySUmQt2QkaElALMBNvHrDCLwxGaXw== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=URbSJpQn; arc=none smtp.remote-ip=100.103.45.18 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 93F53606A32C for ; Tue, 3 Nov 2026 19:58:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key, unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=URbSJpQn Received: by smtp.kernel.org (Postfix) with ESMTPSA id C7B771F00919; Tue, 3 Nov 2026 19:58:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1793735937; bh=8LO6gMYxE+TOLJg9c8n9D6wo/KLzB4ZidZCUlxWly20=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=URbSJpQnjmawPb7533+jRJ5zxJR1/ZWU9LZYeAWrOAFFe5zTcVWONMOgxm842cztY 5Y6wul2QT1PkZypQKOhBgTq0VqBLyK0nqpDhAbBfNMRWvJj9JVFtP/HI3dLZZyb614 iPaj5G9xqDr2M02tk0IXuqm+gfde2X1jt0t/3oKPkGwygzBd5G+rbzMsSLGu7RHdam R7GpP2C3NaKyEh26TKTfj6FB0ODysegHzwm1TFzc0Hh77ggvEVtVngYleX1Gst3nTn W7esIBzrNUkmDYZu8XCwYh17RBRJ3PqXP5u2Nkj0iVnJ5LFSCff07TTB7k7ZyYK/BB unUTbAXe5mT0g== Message-ID: From: sashiko-bot@kernel.org Subject: Re: [PATCH v5 1/2] dt-bindings: phy: airoha: Document support for AN7583 Gen3 PCIe PHY Reply-To: sashiko-reviews@lists.linux.dev To: "Christian Marangi" , linux-phy@lists.infradead.org, devicetree@vger.kernel.org Cc: robh@kernel.org, conor+dt@kernel.org, vkoul@kernel.org, neil.armstrong@linaro.org, olteanv@gmail.com In-Reply-To: <20261103195007.9721-2-ansuelsmth@gmail.com> References: <20261103195007.9721-1-ansuelsmth@gmail.com> <20261103195007.9721-2-ansuelsmth@gmail.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Date: Tue, 03 Nov 2026 19:58:56 +0000 X-Mailing-List: devicetree@vger.kernel.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list Thank you for your contribution! Sashiko AI review found 2 potential issue(= s) to consider: - [Medium] dt-bindings: phy: airoha: Gen2 QPHY modeled as sub-PHY of Gen3 P= HY - [Medium] dt-bindings: phy: airoha: single 4-byte registers modeled as reg= blocks -- commit e8f61fa61bb7ae6492d5b28847c5a694f3cca2ec Author: Christian Marangi dt-bindings: phy: airoha: Document support for AN7583 Gen3 PCIe PHY This commit adds the Device Tree binding schema for the Airoha AN7583 Gen3 PCIe PHY, defining its register regions and QPHY phandle link. > diff --git a/Documentation/devicetree/bindings/phy/airoha,an7583-pcie-gen= 3-phy.yaml b/Documentation/devicetree/bindings/phy/airoha,an7583-pcie-gen3-= phy.yaml > new file mode 100644 > index 0000000000000..a8ec5ac781ccc > --- /dev/null > +++ b/Documentation/devicetree/bindings/phy/airoha,an7583-pcie-gen3-phy.y= aml > @@ -0,0 +1,65 @@ [ ... ] > + reg: > + items: > + - description: PCIE G3 analog base address > + - description: PCIE G3 PMA base address > + - description: PCIE detection time base address > + - description: PCIE Rx AEQ base address > + > + reg-names: > + items: > + - const: g3-ana > + - const: g3-pma > + - const: xr-dtime > + - const: rx-aeq > + > + phys: > + items: > + - description: phandle to QPHY phy for Gen2 support > + > + "#phy-cells": > + const: 0 > + > +required: > + - compatible > + - reg > + - reg-names > + - phys > + - "#phy-cells" > + > +additionalProperties: false > + > +examples: > + - | > + #include > + > + phy@1fc7f000 { > + compatible =3D "airoha,an7583-pcie-gen3-phy"; > + reg =3D <0x1fc7f000 0x1000>, > + <0x1fc7e000 0x1000>, > + <0x1fc30044 0x4>, > + <0x1fc35030 0x4>; > + reg-names =3D "g3-ana", "g3-pma", > + "xr-dtime", "rx-aeq"; [Severity: Medium] As reported by Krzysztof Kozlowski on v2 [1], should the reg and reg-names properties describe the enclosing hardware register blocks rather than mapping two individual 4-byte registers for xr-dtime (0x1fc30044, size 0x4) and rx-aeq (0x1fc35030, size 0x4)? In the companion driver header drivers/phy/airoha/phy-an7583-pcie-regs.h, these regions are accessed at offset 0x0 via REG_PCIE_PEXTP_DIG_GLB44 and REG_PCIE_PEXTP_DIG_LN_RX30: /* Stone Portrait XR DTIME */ #define REG_PCIE_PEXTP_DIG_GLB44 0x0 /* Stone Portrait RX AEQ */ #define REG_PCIE_PEXTP_DIG_LN_RX30 0x0 Consistent with the MediaTek and Airoha PEXTP register layout in drivers/phy/mediatek/phy-mtk-pcie-sphy.c and drivers/phy/phy-airoha-pcie-regs.h, 0x1fc30044 is offset 0x44 within the PEXTP_DIG_GLB block at 0x1fc30000, and 0x1fc35030 is offset 0x30 within the PEXTP_DIG_LN_RX block at 0x1fc35000 (offset 0x5030 from 0x1fc30000). Mapping only 4 bytes per register in the binding prevents accessing any other registers in those PEXTP blocks without changing the binding ABI. > + > + phys =3D <&pcie1_phy PHY_TYPE_PCIE>; [Severity: Medium] As reported by Rob Herring on v3 [2], why is the Gen2 QPHY linked as a required phys property on the Gen3 PHY node instead of referencing both the Gen2 and Gen3 PHYs from the PCIe host controller? The commit message states that QPHY setup must be done in the PCIe PHY setup and calibration phase or calibration might fail. However, looking at an7583_pcie_phy_init() and an7583_pcie_phy_exit() in the companion driver (drivers/phy/airoha/phy-an7583-pcie.c), there is no interleaved register access or cross-calibration between the two PHYs: static int an7583_pcie_phy_init(struct phy *phy) { ... an7583_pcie_phy_init_default(pcie_phy); ... setbits(pcie_phy->g3_pma + REG_SS_DA_XPON_PWDB_0, G3_PMA_DA_XPON_CDR_PR_PWDB); ret =3D phy_init(pcie_phy->qp_phy); if (ret) return ret; msleep(PHY_HW_INIT_TIME_MS); return 0; } static int an7583_pcie_phy_exit(struct phy *phy) { ... ret =3D phy_exit(pcie_phy->qp_phy); if (ret) return ret; an7583_pcie_phy_deinit(pcie_phy); return 0; } In addition, an7583_pcie_phy_probe() retrieves qp_phy using devm_phy_optional_get() even though phys is marked required in this binding schema. Could both PHYs be linked directly to the PCIe host controller instead of nesting phys inside the Gen3 PHY binding? [1] https://lore.kernel.org/r/20260831-elastic-turquoise-puma-f032fc@quoll [2] https://lore.kernel.org/r/20260917215107.GA3884839-robh@kernel.org --=20 Sashiko AI review =C2=B7 https://sashiko.dev/#/patchset/20261103195007.9721= -1-ansuelsmth@gmail.com?part=3D1 From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1F3E8606A324 for ; Tue, 3 Nov 2026 19:58:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key, unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=Ie4T1MWM; dkim=fail reason="signature verification failed" (2048-bit key, unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=URbSJpQn DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Reply-To:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:Date:References: In-Reply-To:Cc:To:Subject:From:Message-ID:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Unsubscribe-Post:List-Owner; bh=DEog0o+c/bSINSKhkTwPzwD1BYbpTA87urnzOhu6+/I=; b=Ie4T1MWM/qvIFPXKG79J2i16JH TprPHtRcOc7cRS4x3oq9GocMVNKUmyVsMujKy7Jn72FPBTPZc2W/JRdDRfBaD49c/rWM47iMNOAYr vIVCcbNlQpRS2ayitCP78os8tTQe0G4jNRk0a27RnstbFo+gSI9Fg76elggNr0FbCvHciuJmsbA5V WRKTJoytPw1fEGDaFsK5OYnHS35QsNJD6kVhnrjsANl8kay2/q64lS37deUSlQc3i3stzZGT7pCfG c0xE4SBC+fRUsK1KQ4hDiuKTZePbQALLsIZe3qSwZ11fvW2td/gZpzvK+xqYTXsTOWa72oCRKz+8O jro1fySA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.100.1 #2 (Red Hat Linux)) id 1xOKeo-00000003aMF-2wW5; Tue, 03 Nov 2026 19:58:58 +0000 Received: from sea.source.kernel.org ([172.234.252.31]) by bombadil.infradead.org with esmtps (Exim 4.100.1 #2 (Red Hat Linux)) id 1xOKen-00000003aM7-3HlP for linux-phy@lists.infradead.org; Tue, 03 Nov 2026 19:58:57 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id 556F540B74; Tue, 3 Nov 2026 19:58:57 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id C7B771F00919; Tue, 3 Nov 2026 19:58:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1793735937; bh=8LO6gMYxE+TOLJg9c8n9D6wo/KLzB4ZidZCUlxWly20=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=URbSJpQnjmawPb7533+jRJ5zxJR1/ZWU9LZYeAWrOAFFe5zTcVWONMOgxm842cztY 5Y6wul2QT1PkZypQKOhBgTq0VqBLyK0nqpDhAbBfNMRWvJj9JVFtP/HI3dLZZyb614 iPaj5G9xqDr2M02tk0IXuqm+gfde2X1jt0t/3oKPkGwygzBd5G+rbzMsSLGu7RHdam R7GpP2C3NaKyEh26TKTfj6FB0ODysegHzwm1TFzc0Hh77ggvEVtVngYleX1Gst3nTn W7esIBzrNUkmDYZu8XCwYh17RBRJ3PqXP5u2Nkj0iVnJ5LFSCff07TTB7k7ZyYK/BB unUTbAXe5mT0g== Message-ID: From: sashiko-bot@kernel.org Subject: Re: [PATCH v5 1/2] dt-bindings: phy: airoha: Document support for AN7583 Gen3 PCIe PHY To: "Christian Marangi" , linux-phy@lists.infradead.org, devicetree@vger.kernel.org Cc: robh@kernel.org, conor+dt@kernel.org, vkoul@kernel.org, neil.armstrong@linaro.org, olteanv@gmail.com In-Reply-To: <20261103195007.9721-2-ansuelsmth@gmail.com> References: <20261103195007.9721-1-ansuelsmth@gmail.com> <20261103195007.9721-2-ansuelsmth@gmail.com> Date: Tue, 03 Nov 2026 19:58:56 +0000 X-BeenThere: linux-phy@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux Phy Mailing list List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: sashiko-reviews@lists.linux.dev X-Archived-By: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-phy" X-Spam-Status: No, score=-8.9 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=4.0.1 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on aws-us-west-2-korg-listserv-alma10-1 VGhhbmsgeW91IGZvciB5b3VyIGNvbnRyaWJ1dGlvbiEgU2FzaGlrbyBBSSByZXZpZXcgZm91bmQg MiBwb3RlbnRpYWwgaXNzdWUocykgdG8gY29uc2lkZXI6Ci0gW01lZGl1bV0gZHQtYmluZGluZ3M6 IHBoeTogYWlyb2hhOiBHZW4yIFFQSFkgbW9kZWxlZCBhcyBzdWItUEhZIG9mIEdlbjMgUEhZCi0g W01lZGl1bV0gZHQtYmluZGluZ3M6IHBoeTogYWlyb2hhOiBzaW5nbGUgNC1ieXRlIHJlZ2lzdGVy cyBtb2RlbGVkIGFzIHJlZyBibG9ja3MKLS0KCmNvbW1pdCBlOGY2MWZhNjFiYjdhZTY0OTJkNWIy ODg0N2M1YTY5NGYzY2NhMmVjCkF1dGhvcjogQ2hyaXN0aWFuIE1hcmFuZ2kgPGFuc3VlbHNtdGhA Z21haWwuY29tPgoKZHQtYmluZGluZ3M6IHBoeTogYWlyb2hhOiBEb2N1bWVudCBzdXBwb3J0IGZv ciBBTjc1ODMgR2VuMyBQQ0llIFBIWQoKVGhpcyBjb21taXQgYWRkcyB0aGUgRGV2aWNlIFRyZWUg YmluZGluZyBzY2hlbWEgZm9yIHRoZSBBaXJvaGEgQU43NTgzIEdlbjMKUENJZSBQSFksIGRlZmlu aW5nIGl0cyByZWdpc3RlciByZWdpb25zIGFuZCBRUEhZIHBoYW5kbGUgbGluay4KCj4gZGlmZiAt LWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvYWlyb2hhLGFuNzU4 My1wY2llLWdlbjMtcGh5LnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mv cGh5L2Fpcm9oYSxhbjc1ODMtcGNpZS1nZW4zLXBoeS55YW1sCj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAwLi5hOGVjNWFjNzgxY2NjCj4gLS0tIC9kZXYvbnVsbAo+ ICsrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvYWlyb2hhLGFuNzU4 My1wY2llLWdlbjMtcGh5LnlhbWwKPiBAQCAtMCwwICsxLDY1IEBACgpbIC4uLiBdCgo+ICsgIHJl ZzoKPiArICAgIGl0ZW1zOgo+ICsgICAgICAtIGRlc2NyaXB0aW9uOiBQQ0lFIEczIGFuYWxvZyBi YXNlIGFkZHJlc3MKPiArICAgICAgLSBkZXNjcmlwdGlvbjogUENJRSBHMyBQTUEgYmFzZSBhZGRy ZXNzCj4gKyAgICAgIC0gZGVzY3JpcHRpb246IFBDSUUgZGV0ZWN0aW9uIHRpbWUgYmFzZSBhZGRy ZXNzCj4gKyAgICAgIC0gZGVzY3JpcHRpb246IFBDSUUgUnggQUVRIGJhc2UgYWRkcmVzcwo+ICsK PiArICByZWctbmFtZXM6Cj4gKyAgICBpdGVtczoKPiArICAgICAgLSBjb25zdDogZzMtYW5hCj4g KyAgICAgIC0gY29uc3Q6IGczLXBtYQo+ICsgICAgICAtIGNvbnN0OiB4ci1kdGltZQo+ICsgICAg ICAtIGNvbnN0OiByeC1hZXEKPiArCj4gKyAgcGh5czoKPiArICAgIGl0ZW1zOgo+ICsgICAgICAt IGRlc2NyaXB0aW9uOiBwaGFuZGxlIHRvIFFQSFkgcGh5IGZvciBHZW4yIHN1cHBvcnQKPiArCj4g KyAgIiNwaHktY2VsbHMiOgo+ICsgICAgY29uc3Q6IDAKPiArCj4gK3JlcXVpcmVkOgo+ICsgIC0g Y29tcGF0aWJsZQo+ICsgIC0gcmVnCj4gKyAgLSByZWctbmFtZXMKPiArICAtIHBoeXMKPiArICAt ICIjcGh5LWNlbGxzIgo+ICsKPiArYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlCj4gKwo+ICtl eGFtcGxlczoKPiArICAtIHwKPiArICAgICNpbmNsdWRlIDxkdC1iaW5kaW5ncy9waHkvcGh5Lmg+ Cj4gKwo+ICsgICAgcGh5QDFmYzdmMDAwIHsKPiArICAgICAgICBjb21wYXRpYmxlID0gImFpcm9o YSxhbjc1ODMtcGNpZS1nZW4zLXBoeSI7Cj4gKyAgICAgICAgcmVnID0gPDB4MWZjN2YwMDAgMHgx MDAwPiwKPiArICAgICAgICAgICAgICA8MHgxZmM3ZTAwMCAweDEwMDA+LAo+ICsgICAgICAgICAg ICAgIDwweDFmYzMwMDQ0IDB4ND4sCj4gKyAgICAgICAgICAgICAgPDB4MWZjMzUwMzAgMHg0PjsK PiArICAgICAgICByZWctbmFtZXMgPSAiZzMtYW5hIiwgImczLXBtYSIsCj4gKyAgICAgICAgICAg ICAgICAgICAgInhyLWR0aW1lIiwgInJ4LWFlcSI7CgpbU2V2ZXJpdHk6IE1lZGl1bV0KQXMgcmVw b3J0ZWQgYnkgS3J6eXN6dG9mIEtvemxvd3NraSBvbiB2MiBbMV0sIHNob3VsZCB0aGUgcmVnIGFu ZCByZWctbmFtZXMKcHJvcGVydGllcyBkZXNjcmliZSB0aGUgZW5jbG9zaW5nIGhhcmR3YXJlIHJl Z2lzdGVyIGJsb2NrcyByYXRoZXIgdGhhbgptYXBwaW5nIHR3byBpbmRpdmlkdWFsIDQtYnl0ZSBy ZWdpc3RlcnMgZm9yIHhyLWR0aW1lICgweDFmYzMwMDQ0LCBzaXplIDB4NCkKYW5kIHJ4LWFlcSAo MHgxZmMzNTAzMCwgc2l6ZSAweDQpPwoKSW4gdGhlIGNvbXBhbmlvbiBkcml2ZXIgaGVhZGVyIGRy aXZlcnMvcGh5L2Fpcm9oYS9waHktYW43NTgzLXBjaWUtcmVncy5oLAp0aGVzZSByZWdpb25zIGFy ZSBhY2Nlc3NlZCBhdCBvZmZzZXQgMHgwIHZpYSBSRUdfUENJRV9QRVhUUF9ESUdfR0xCNDQgYW5k ClJFR19QQ0lFX1BFWFRQX0RJR19MTl9SWDMwOgoKICAgIC8qIFN0b25lIFBvcnRyYWl0IFhSIERU SU1FICovCiAgICAjZGVmaW5lIFJFR19QQ0lFX1BFWFRQX0RJR19HTEI0NAkJMHgwCgogICAgLyog U3RvbmUgUG9ydHJhaXQgUlggQUVRICovCiAgICAjZGVmaW5lIFJFR19QQ0lFX1BFWFRQX0RJR19M Tl9SWDMwCQkweDAKCkNvbnNpc3RlbnQgd2l0aCB0aGUgTWVkaWFUZWsgYW5kIEFpcm9oYSBQRVhU UCByZWdpc3RlciBsYXlvdXQgaW4KZHJpdmVycy9waHkvbWVkaWF0ZWsvcGh5LW10ay1wY2llLXNw aHkuYyBhbmQKZHJpdmVycy9waHkvcGh5LWFpcm9oYS1wY2llLXJlZ3MuaCwgMHgxZmMzMDA0NCBp cyBvZmZzZXQgMHg0NCB3aXRoaW4gdGhlClBFWFRQX0RJR19HTEIgYmxvY2sgYXQgMHgxZmMzMDAw MCwgYW5kIDB4MWZjMzUwMzAgaXMgb2Zmc2V0IDB4MzAgd2l0aGluIHRoZQpQRVhUUF9ESUdfTE5f UlggYmxvY2sgYXQgMHgxZmMzNTAwMCAob2Zmc2V0IDB4NTAzMCBmcm9tIDB4MWZjMzAwMDApLgoK TWFwcGluZyBvbmx5IDQgYnl0ZXMgcGVyIHJlZ2lzdGVyIGluIHRoZSBiaW5kaW5nIHByZXZlbnRz IGFjY2Vzc2luZyBhbnkKb3RoZXIgcmVnaXN0ZXJzIGluIHRob3NlIFBFWFRQIGJsb2NrcyB3aXRo b3V0IGNoYW5naW5nIHRoZSBiaW5kaW5nIEFCSS4KCj4gKwo+ICsgICAgICAgIHBoeXMgPSA8JnBj aWUxX3BoeSBQSFlfVFlQRV9QQ0lFPjsKCltTZXZlcml0eTogTWVkaXVtXQpBcyByZXBvcnRlZCBi eSBSb2IgSGVycmluZyBvbiB2MyBbMl0sIHdoeSBpcyB0aGUgR2VuMiBRUEhZIGxpbmtlZCBhcyBh CnJlcXVpcmVkIHBoeXMgcHJvcGVydHkgb24gdGhlIEdlbjMgUEhZIG5vZGUgaW5zdGVhZCBvZiBy ZWZlcmVuY2luZyBib3RoIHRoZQpHZW4yIGFuZCBHZW4zIFBIWXMgZnJvbSB0aGUgUENJZSBob3N0 IGNvbnRyb2xsZXI/CgpUaGUgY29tbWl0IG1lc3NhZ2Ugc3RhdGVzIHRoYXQgUVBIWSBzZXR1cCBt dXN0IGJlIGRvbmUgaW4gdGhlIFBDSWUgUEhZCnNldHVwIGFuZCBjYWxpYnJhdGlvbiBwaGFzZSBv ciBjYWxpYnJhdGlvbiBtaWdodCBmYWlsLiBIb3dldmVyLCBsb29raW5nIGF0CmFuNzU4M19wY2ll X3BoeV9pbml0KCkgYW5kIGFuNzU4M19wY2llX3BoeV9leGl0KCkgaW4gdGhlIGNvbXBhbmlvbiBk cml2ZXIKKGRyaXZlcnMvcGh5L2Fpcm9oYS9waHktYW43NTgzLXBjaWUuYyksIHRoZXJlIGlzIG5v IGludGVybGVhdmVkIHJlZ2lzdGVyCmFjY2VzcyBvciBjcm9zcy1jYWxpYnJhdGlvbiBiZXR3ZWVu IHRoZSB0d28gUEhZczoKCiAgICBzdGF0aWMgaW50IGFuNzU4M19wY2llX3BoeV9pbml0KHN0cnVj dCBwaHkgKnBoeSkKICAgIHsKICAgICAgICAuLi4KICAgICAgICBhbjc1ODNfcGNpZV9waHlfaW5p dF9kZWZhdWx0KHBjaWVfcGh5KTsKICAgICAgICAuLi4KICAgICAgICBzZXRiaXRzKHBjaWVfcGh5 LT5nM19wbWEgKyBSRUdfU1NfREFfWFBPTl9QV0RCXzAsCiAgICAgICAgICAgICAgICBHM19QTUFf REFfWFBPTl9DRFJfUFJfUFdEQik7CgogICAgICAgIHJldCA9IHBoeV9pbml0KHBjaWVfcGh5LT5x cF9waHkpOwogICAgICAgIGlmIChyZXQpCiAgICAgICAgICAgICAgICByZXR1cm4gcmV0OwoKICAg ICAgICBtc2xlZXAoUEhZX0hXX0lOSVRfVElNRV9NUyk7CgogICAgICAgIHJldHVybiAwOwogICAg fQoKICAgIHN0YXRpYyBpbnQgYW43NTgzX3BjaWVfcGh5X2V4aXQoc3RydWN0IHBoeSAqcGh5KQog ICAgewogICAgICAgIC4uLgogICAgICAgIHJldCA9IHBoeV9leGl0KHBjaWVfcGh5LT5xcF9waHkp OwogICAgICAgIGlmIChyZXQpCiAgICAgICAgICAgICAgICByZXR1cm4gcmV0OwoKICAgICAgICBh bjc1ODNfcGNpZV9waHlfZGVpbml0KHBjaWVfcGh5KTsKCiAgICAgICAgcmV0dXJuIDA7CiAgICB9 CgpJbiBhZGRpdGlvbiwgYW43NTgzX3BjaWVfcGh5X3Byb2JlKCkgcmV0cmlldmVzIHFwX3BoeSB1 c2luZwpkZXZtX3BoeV9vcHRpb25hbF9nZXQoKSBldmVuIHRob3VnaCBwaHlzIGlzIG1hcmtlZCBy ZXF1aXJlZCBpbiB0aGlzIGJpbmRpbmcKc2NoZW1hLiBDb3VsZCBib3RoIFBIWXMgYmUgbGlua2Vk IGRpcmVjdGx5IHRvIHRoZSBQQ0llIGhvc3QgY29udHJvbGxlcgppbnN0ZWFkIG9mIG5lc3Rpbmcg cGh5cyBpbnNpZGUgdGhlIEdlbjMgUEhZIGJpbmRpbmc/CgpbMV0gaHR0cHM6Ly9sb3JlLmtlcm5l bC5vcmcvci8yMDI2MDgzMS1lbGFzdGljLXR1cnF1b2lzZS1wdW1hLWYwMzJmY0BxdW9sbApbMl0g aHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvci8yMDI2MDkxNzIxNTEwNy5HQTM4ODQ4Mzktcm9iaEBr ZXJuZWwub3JnCgotLSAKU2FzaGlrbyBBSSByZXZpZXcgwrcgaHR0cHM6Ly9zYXNoaWtvLmRldi8j L3BhdGNoc2V0LzIwMjYxMTAzMTk1MDA3Ljk3MjEtMS1hbnN1ZWxzbXRoQGdtYWlsLmNvbT9wYXJ0 PTEKCi0tIApsaW51eC1waHkgbWFpbGluZyBsaXN0CmxpbnV4LXBoeUBsaXN0cy5pbmZyYWRlYWQu b3JnCmh0dHBzOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXBo eQo=