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 02C01C433FE for ; Thu, 10 Nov 2022 07:42:01 +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:References: 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: List-Owner; bh=GAHPeg1kA+Oitx9NAXTA0PAyf+Dllv9kezjnoaKMlPI=; b=v4fWRjE85cEsYo brszhIwX52dDbL4vvPSXFOotVcxpPfunf6A5D2Q4HmNkRy0RTwzMdNhQ0zNJloFTaqKiLpIprpPJw fqeirsui6ege7k1M5gZYrOJViCQ/aT9LgKFEI7yPxjHLcUgVNtmUDcp4REEOZnY3PvcxwJIALATuw kiAjFJmeY24eyvd4ZlrbuSvpw9W4RYGm+YZb2084WTMF1BH07LWxyxb1qwRGvCYHpgBBP0oQOXvhT FvGQBrfqt87e+YlV0IizGZ2nGY1Gwahve5Olpl7REZqUjINVJpxHKoZZXLqgpiJsiqdSdOMu2tgPc jtSv+TpXXI56tp/gKybQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1ot2BC-003w71-Sk; Thu, 10 Nov 2022 07:40:55 +0000 Received: from ams.source.kernel.org ([145.40.68.75]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1ot2B7-003w2v-CY; Thu, 10 Nov 2022 07:40:52 +0000 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 84F1CB82052; Thu, 10 Nov 2022 07:40:47 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 24433C433D6; Thu, 10 Nov 2022 07:40:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1668066046; bh=xOehpA7GaLY+h39F/Pnz3gq81tX/dJk6RV4MSFTtWHc=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=R6tzxmZ61Y6VXoaCUDUQzz75sIWsRTAASsEuOfDedj4PaJdYq0FkeW1lrPtRBvvMY UffPdvc1M8+9E7HvHHF3UTVyPCeYa+ALPrzUVl3IYKtTqTnnXvo+2Z0+xgV0tnOVkv Hm1RZm2pDmlRJKlOXdKrVuZiRz57tZTGKwooKQic8KWjvM/4sikceTSHO+Au3uwyUU e/18SXXmcR1PTniuEMzevXFN3nhOithFdYA0mW1eupzG/qnE/MKqsHPUfrXdHcmb2Q jnRVPq32nn+ihmYFbd2ylb20D+YR4dInUyWUpxMABFFN7RLvWPZl0peq3/cccNwPVF jmJ6h6Bo8ObSg== Date: Thu, 10 Nov 2022 13:10:42 +0530 From: Vinod Koul To: Sandor Yu Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, andrzej.hajda@intel.com, neil.armstrong@linaro.org, robert.foss@linaro.org, Laurent.pinchart@ideasonboard.com, jonas@kwiboo.se, jernej.skrabec@gmail.com, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, shawnguo@kernel.org, s.hauer@pengutronix.de, kernel@pengutronix.de, linux-imx@nxp.com, tzimmermann@suse.de, lyude@redhat.com, javierm@redhat.com, ville.syrjala@linux.intel.com, sam@ravnborg.org, jani.nikula@intel.com, maxime@cerno.tech, penguin-kernel@i-love.sakura.ne.jp, oliver.brown@nxp.com Subject: Re: [PATCH v3 08/10] phy: cadence: Add driver for HDP-TX DisplyPort PHY Message-ID: References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221109_234049_772981_F4C45D4D X-CRM114-Status: GOOD ( 29.27 ) 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: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gMDgtMTEtMjIsIDIxOjAwLCBTYW5kb3IgWXUgd3JvdGU6Cj4gQWRkIENhZGVuY2UgSERQLVRY IERpc3BsYXlQb3J0IFBIWSBkcml2ZXIuCj4gCj4gQ2FkZW5jZSBIRFAtVFggUEhZIGNvdWxkIGJl IHB1dCBpbiBlaXRoZXIgRFAgbW9kZSBvcgo+IEhETUkgbW9kZSBiYXNlIG9uIHRoZSBjb25maWd1 cmF0aW9uIGNob3Nlbi4KPiBEaXNwbGF5UG9ydCBQSFkgbW9kZSBpcyBjb25maWd1cmF0ZWQgaW4g dGhlIGRyaXZlci4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBTYW5kb3IgWXUgPFNhbmRvci55dUBueHAu Y29tPgo+IC0tLQo+ICBkcml2ZXJzL3BoeS9jYWRlbmNlL0tjb25maWcgICAgICAgICAgICAgICAg fCAgIDggKwo+ICBkcml2ZXJzL3BoeS9jYWRlbmNlL01ha2VmaWxlICAgICAgICAgICAgICAgfCAg IDEgKwo+ICBkcml2ZXJzL3BoeS9jYWRlbmNlL3BoeS1jYWRlbmNlLWhkcHR4LWRwLmMgfCA3NzQg KysrKysrKysrKysrKysrKysrKysrCj4gIDMgZmlsZXMgY2hhbmdlZCwgNzgzIGluc2VydGlvbnMo KykKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvcGh5L2NhZGVuY2UvcGh5LWNhZGVuY2Ut aGRwdHgtZHAuYwo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9jYWRlbmNlL0tjb25maWcg Yi9kcml2ZXJzL3BoeS9jYWRlbmNlL0tjb25maWcKPiBpbmRleCAxYWRkZTJkOTlhZTcuLjFlMTkx NGQzYWZkYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3BoeS9jYWRlbmNlL0tjb25maWcKPiArKysg Yi9kcml2ZXJzL3BoeS9jYWRlbmNlL0tjb25maWcKPiBAQCAtNDYsMyArNDYsMTEgQEAgY29uZmln IFBIWV9DQURFTkNFX1NBTFZPCj4gIAkgIEVuYWJsZSB0aGlzIHRvIHN1cHBvcnQgdGhlIENhZGVu Y2UgU0FMVk8gUEhZIGRyaXZlciwKPiAgCSAgdGhpcyBQSFkgaXMgYSBsZWdhY3kgUEhZLCBhbmQg b25seSBhcmUgdXNlZCBmb3IgVVNCMwo+ICAJICBhbmQgVVNCMi4KPiArCj4gK2NvbmZpZyBQSFlf Q0FERU5DRV9IRFBUWF9EUAoKYWxwaGFiZXRpY2FsbHkgc29ydGVkIHBsZWFzZQoKPiArCXRyaXN0 YXRlICJDYWRlbmNlIEhEUFRYIERQIFBIWSBEcml2ZXIiCj4gKwlkZXBlbmRzIG9uIE9GICYmIEhB U19JT01FTQo+ICsJZGVwZW5kcyBvbiBDT01NT05fQ0xLCj4gKwlzZWxlY3QgR0VORVJJQ19QSFkK PiArCWhlbHAKPiArCSAgRW5hYmxlIHRoaXMgdG8gc3VwcG9ydCB0aGUgQ2FkZW5jZSBIRFBUWCBE UCBQSFkgZHJpdmVyCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGh5L2NhZGVuY2UvTWFrZWZpbGUg Yi9kcml2ZXJzL3BoeS9jYWRlbmNlL01ha2VmaWxlCj4gaW5kZXggZTE3ZjAzNWRkZWNlLi5mYmRi MGJjNWZmMTEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9waHkvY2FkZW5jZS9NYWtlZmlsZQo+ICsr KyBiL2RyaXZlcnMvcGh5L2NhZGVuY2UvTWFrZWZpbGUKPiBAQCAtNCwzICs0LDQgQEAgb2JqLSQo Q09ORklHX1BIWV9DQURFTkNFX0RQSFkpCSs9IGNkbnMtZHBoeS5vCj4gIG9iai0kKENPTkZJR19Q SFlfQ0FERU5DRV9EUEhZX1JYKQkrPSBjZG5zLWRwaHktcngubwo+ICBvYmotJChDT05GSUdfUEhZ X0NBREVOQ0VfU0lFUlJBKQkrPSBwaHktY2FkZW5jZS1zaWVycmEubwo+ICBvYmotJChDT05GSUdf UEhZX0NBREVOQ0VfU0FMVk8pCSs9IHBoeS1jYWRlbmNlLXNhbHZvLm8KPiArb2JqLSQoQ09ORklH X1BIWV9DQURFTkNFX0hEUFRYX0RQKQkrPSBwaHktY2FkZW5jZS1oZHB0eC1kcC5vCgpoZXJlIHRv bwoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvY2FkZW5jZS9waHktY2FkZW5jZS1oZHB0eC1k cC5jIGIvZHJpdmVycy9waHkvY2FkZW5jZS9waHktY2FkZW5jZS1oZHB0eC1kcC5jCj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLjA3OWQ0Mzc3MmQxZAo+IC0tLSAv ZGV2L251bGwKPiArKysgYi9kcml2ZXJzL3BoeS9jYWRlbmNlL3BoeS1jYWRlbmNlLWhkcHR4LWRw LmMKPiBAQCAtMCwwICsxLDc3NCBAQAo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BM LTIuMC1vbmx5Cj4gKy8qCj4gKyAqIENhZGVuY2UgSERQLVRYIERpc3BsYXkgUG9ydCBJbnRlcmZh Y2UgKERQKSBQSFkgZHJpdmVyCj4gKyAqCj4gKyAqIENvcHlyaWdodCAoQykgMjAyMiBOWFAgU2Vt aWNvbmR1Y3RvciwgSW5jLgo+ICsgKi8KPiArI2luY2x1ZGUgPGFzbS91bmFsaWduZWQuaD4KPiAr I2luY2x1ZGUgPGxpbnV4L2Nsay5oPgo+ICsjaW5jbHVkZSA8bGludXgva2VybmVsLmg+Cj4gKyNp bmNsdWRlIDxsaW51eC9waHkvcGh5Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZp Y2UuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2lvLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9pb3BvbGwu aD4KPiArCj4gKyNpbmNsdWRlIDxkcm0vYnJpZGdlL2NkbnMtbWhkcC1tYWlsYm94Lmg+Cj4gKwo+ ICsjZGVmaW5lIEFERFJfUEhZX0FGRQkweDgwMDAwCj4gKwo+ICsvKiBQSFkgcmVnaXN0ZXJzICov Cj4gKyNkZWZpbmUgQ01OX1NTTV9CSUFTX1RNUiAgICAgICAgICAgICAgICAweDAwMjIKPiArI2Rl ZmluZSBDTU5fUExMU00wX1BMTEVOX1RNUiAgICAgICAgICAgIDB4MDAyOQo+ICsjZGVmaW5lIENN Tl9QTExTTTBfUExMUFJFX1RNUiAgICAgICAgICAgMHgwMDJBCj4gKyNkZWZpbmUgQ01OX1BMTFNN MF9QTExWUkVGX1RNUiAgICAgICAgICAweDAwMkIKPiArI2RlZmluZSBDTU5fUExMU00wX1BMTExP Q0tfVE1SICAgICAgICAgIDB4MDAyQwo+ICsjZGVmaW5lIENNTl9QTExTTTBfVVNFUl9ERUZfQ1RS TCAgICAgICAgMHgwMDJGCj4gKyNkZWZpbmUgQ01OX1BTTV9DTEtfQ1RSTCAgICAgICAgICAgICAg ICAweDAwNjEKPiArI2RlZmluZSBDTU5fQ0RJQUdfUkVGQ0xLX0NUUkwgICAgICAgICAgIDB4MDA2 Mgo+ICsjZGVmaW5lIENNTl9QTEwwX1ZDT0NBTF9TVEFSVCAgICAgICAgICAgMHgwMDgxCj4gKyNk ZWZpbmUgQ01OX1BMTDBfVkNPQ0FMX0lOSVRfVE1SICAgICAgICAweDAwODQKPiArI2RlZmluZSBD TU5fUExMMF9WQ09DQUxfSVRFUl9UTVIgICAgICAgIDB4MDA4NQo+ICsjZGVmaW5lIENNTl9QTEww X0lOVERJViAgICAgICAgICAgICAgICAgMHgwMDk0Cj4gKyNkZWZpbmUgQ01OX1BMTDBfRlJBQ0RJ ViAgICAgICAgICAgICAgICAweDAwOTUKPiArI2RlZmluZSBDTU5fUExMMF9ISUdIX1RIUiAgICAg ICAgICAgICAgIDB4MDA5Ngo+ICsjZGVmaW5lIENNTl9QTEwwX0RTTV9ESUFHICAgICAgICAgICAg ICAgMHgwMDk3Cj4gKyNkZWZpbmUgQ01OX1BMTDBfU1NfQ1RSTDEgICAgICAgICAgICAgICAweDAw OTgKPiArI2RlZmluZSBDTU5fUExMMF9TU19DVFJMMiAgICAgICAgICAgICAgIDB4MDA5OQo+ICsj ZGVmaW5lIENNTl9JQ0FMX0lOSVRfVE1SICAgICAgICAgICAgICAgMHgwMEM0Cj4gKyNkZWZpbmUg Q01OX0lDQUxfSVRFUl9UTVIgICAgICAgICAgICAgICAweDAwQzUKPiArI2RlZmluZSBDTU5fUlhD QUxfSU5JVF9UTVIgICAgICAgICAgICAgIDB4MDBENAo+ICsjZGVmaW5lIENNTl9SWENBTF9JVEVS X1RNUiAgICAgICAgICAgICAgMHgwMEQ1Cj4gKyNkZWZpbmUgQ01OX1RYUFVDQUxfQ1RSTCAgICAg ICAgICAgICAgICAweDAwRTAKPiArI2RlZmluZSBDTU5fVFhQVUNBTF9JTklUX1RNUiAgICAgICAg ICAgIDB4MDBFNAo+ICsjZGVmaW5lIENNTl9UWFBVQ0FMX0lURVJfVE1SICAgICAgICAgICAgMHgw MEU1Cj4gKyNkZWZpbmUgQ01OX1RYUERDQUxfQ1RSTCAgICAgICAgICAgICAgICAweDAwRjAKPiAr I2RlZmluZSBDTU5fVFhQRENBTF9JTklUX1RNUiAgICAgICAgICAgIDB4MDBGNAo+ICsjZGVmaW5l IENNTl9UWFBEQ0FMX0lURVJfVE1SICAgICAgICAgICAgMHgwMEY1Cj4gKyNkZWZpbmUgQ01OX0lD QUxfQURKX0lOSVRfVE1SICAgICAgICAgICAweDAxMDIKPiArI2RlZmluZSBDTU5fSUNBTF9BREpf SVRFUl9UTVIgICAgICAgICAgIDB4MDEwMwo+ICsjZGVmaW5lIENNTl9SWF9BREpfSU5JVF9UTVIg ICAgICAgICAgICAgMHgwMTA2Cj4gKyNkZWZpbmUgQ01OX1JYX0FESl9JVEVSX1RNUiAgICAgICAg ICAgICAweDAxMDcKPiArI2RlZmluZSBDTU5fVFhQVV9BREpfQ1RSTCAgICAgICAgICAgICAgIDB4 MDEwOAo+ICsjZGVmaW5lIENNTl9UWFBVX0FESl9JTklUX1RNUiAgICAgICAgICAgMHgwMTBBCj4g KyNkZWZpbmUgQ01OX1RYUFVfQURKX0lURVJfVE1SICAgICAgICAgICAweDAxMEIKPiArI2RlZmlu ZSBDTU5fVFhQRF9BREpfQ1RSTCAgICAgICAgICAgICAgIDB4MDEwYwo+ICsjZGVmaW5lIENNTl9U WFBEX0FESl9JTklUX1RNUiAgICAgICAgICAgMHgwMTBFCj4gKyNkZWZpbmUgQ01OX1RYUERfQURK X0lURVJfVE1SICAgICAgICAgICAweDAxMEYKPiArI2RlZmluZSBDTU5fRElBR19QTEwwX0ZCSF9P VlJEICAgICAgICAgIDB4MDFDMAo+ICsjZGVmaW5lIENNTl9ESUFHX1BMTDBfRkJMX09WUkQgICAg ICAgICAgMHgwMUMxCj4gKyNkZWZpbmUgQ01OX0RJQUdfUExMMF9PVlJEICAgICAgICAgICAgICAw eDAxQzIKPiArI2RlZmluZSBDTU5fRElBR19QTEwwX1RFU1RfTU9ERSAgICAgICAgIDB4MDFDNAo+ ICsjZGVmaW5lIENNTl9ESUFHX1BMTDBfVjJJX1RVTkUgICAgICAgICAgMHgwMUM1Cj4gKyNkZWZp bmUgQ01OX0RJQUdfUExMMF9DUF9UVU5FICAgICAgICAgICAweDAxQzYKPiArI2RlZmluZSBDTU5f RElBR19QTEwwX0xGX1BST0cgICAgICAgICAgIDB4MDFDNwo+ICsjZGVmaW5lIENNTl9ESUFHX1BM TDBfUFRBVElTX1RVTkUxICAgICAgMHgwMUM4Cj4gKyNkZWZpbmUgQ01OX0RJQUdfUExMMF9QVEFU SVNfVFVORTIgICAgICAweDAxQzkKPiArI2RlZmluZSBDTU5fRElBR19QTEwwX0lOQ0xLX0NUUkwg ICAgICAgIDB4MDFDQQo+ICsjZGVmaW5lIENNTl9ESUFHX1BMTDBfUFhMX0RJVkggICAgICAgICAg MHgwMUNCCj4gKyNkZWZpbmUgQ01OX0RJQUdfUExMMF9QWExfRElWTCAgICAgICAgICAweDAxQ0MK PiArI2RlZmluZSBDTU5fRElBR19IU0NMS19TRUwgICAgICAgICAgICAgIDB4MDFFMAo+ICsjZGVm aW5lIENNTl9ESUFHX1BFUl9DQUxfQURKICAgICAgICAgICAgMHgwMUVDCj4gKyNkZWZpbmUgQ01O X0RJQUdfQ0FMX0NUUkwgICAgICAgICAgICAgICAweDAxRUQKPiArI2RlZmluZSBDTU5fRElBR19B Q1lBICAgICAgICAgICAgICAgICAgIDB4MDFGRgo+ICsjZGVmaW5lIFhDVlJfUFNNX1JDVFJMICAg ICAgICAgICAgICAgICAgMHg0MDAxCj4gKyNkZWZpbmUgWENWUl9QU01fQ0FMX1RNUiAgICAgICAg ICAgICAgICAweDQwMDIKPiArI2RlZmluZSBYQ1ZSX1BTTV9BMElOX1RNUiAgICAgICAgICAgICAg IDB4NDAwMwo+ICsjZGVmaW5lIFRYX1RYQ0NfQ0FMX1NDTFJfTVVMVF8wICAgICAgICAgMHg0MDQ3 Cj4gKyNkZWZpbmUgVFhfVFhDQ19DUE9TVF9NVUxUXzAwXzAgICAgICAgICAweDQwNEMKPiArI2Rl ZmluZSBUWF9UWENDX01HTkZTX01VTFRfMDAwXzAgICAgICAgIDB4NDA1MAo+ICsjZGVmaW5lIFhD VlJfRElBR19QTExEUkNfQ1RSTCAgICAgICAgICAgMHg0MEUwCj4gKyNkZWZpbmUgWENWUl9ESUFH X1BMTERSQ19DVFJMICAgICAgICAgICAweDQwRTAKPiArI2RlZmluZSBYQ1ZSX0RJQUdfSFNDTEtf U0VMICAgICAgICAgICAgIDB4NDBFMQo+ICsjZGVmaW5lIFhDVlJfRElBR19CSURJX0NUUkwgICAg ICAgICAgICAgMHg0MEU4Cj4gKyNkZWZpbmUgWENWUl9ESUFHX0xBTkVfRkNNX0VOX01HTl9UTVIg ICAweDQwRjIKPiArI2RlZmluZSBYQ1ZSX0RJQUdfTEFORV9GQ01fRU5fTUdOICAgICAgIDB4NDBG Mgo+ICsjZGVmaW5lIFRYX1BTQ19BMCAgICAgICAgICAgICAgICAgICAgICAgMHg0MTAwCj4gKyNk ZWZpbmUgVFhfUFNDX0ExICAgICAgICAgICAgICAgICAgICAgICAweDQxMDEKPiArI2RlZmluZSBU WF9QU0NfQTIgICAgICAgICAgICAgICAgICAgICAgIDB4NDEwMgo+ICsjZGVmaW5lIFRYX1BTQ19B MyAgICAgICAgICAgICAgICAgICAgICAgMHg0MTAzCj4gKyNkZWZpbmUgVFhfUkNWREVUX0NUUkwg ICAgICAgICAgICAgICAgICAweDQxMjAKPiArI2RlZmluZSBUWF9SQ1ZERVRfRU5fVE1SICAgICAg ICAgICAgICAgIDB4NDEyMgo+ICsjZGVmaW5lIFRYX1JDVkRFVF9FTl9UTVIgICAgICAgICAgICAg ICAgMHg0MTIyCj4gKyNkZWZpbmUgVFhfUkNWREVUX1NUX1RNUiAgICAgICAgICAgICAgICAweDQx MjMKPiArI2RlZmluZSBUWF9SQ1ZERVRfU1RfVE1SICAgICAgICAgICAgICAgIDB4NDEyMwo+ICsj ZGVmaW5lIFRYX0JJU1RfQ1RSTCAgICAgICAgICAgICAgICAgICAgMHg0MTQwCj4gKyNkZWZpbmUg VFhfQklTVF9VRERXUiAgICAgICAgICAgICAgICAgICAweDQxNDEKPiArI2RlZmluZSBUWF9ESUFH X1RYX0NUUkwgICAgICAgICAgICAgICAgIDB4NDFFMAo+ICsjZGVmaW5lIFRYX0RJQUdfVFhfRFJW ICAgICAgICAgICAgICAgICAgMHg0MUUxCj4gKyNkZWZpbmUgVFhfRElBR19CR1JFRl9QUkVEUlZf REVMQVkgICAgICAweDQxRTcKPiArI2RlZmluZSBUWF9ESUFHX0JHUkVGX1BSRURSVl9ERUxBWSAg ICAgIDB4NDFFNwo+ICsjZGVmaW5lIFhDVlJfUFNNX1JDVFJMXzEgICAgICAgICAgICAgICAgMHg0 MjAxCj4gKyNkZWZpbmUgVFhfVFhDQ19DQUxfU0NMUl9NVUxUXzEgICAgICAgICAweDQyNDcKPiAr I2RlZmluZSBUWF9UWENDX0NQT1NUX01VTFRfMDBfMSAgICAgICAgIDB4NDI0Qwo+ICsjZGVmaW5l IFRYX1RYQ0NfTUdORlNfTVVMVF8wMDBfMSAgICAgICAgMHg0MjUwCj4gKyNkZWZpbmUgWENWUl9E SUFHX1BMTERSQ19DVFJMXzEgICAgICAgICAweDQyRTAKPiArI2RlZmluZSBYQ1ZSX0RJQUdfSFND TEtfU0VMXzEgICAgICAgICAgIDB4NDJFMQo+ICsjZGVmaW5lIFhDVlJfRElBR19MQU5FX0ZDTV9F Tl9NR05fVE1SXzEgMHg0MkYyCj4gKyNkZWZpbmUgVFhfUkNWREVUX0VOX1RNUl8xICAgICAgICAg ICAgICAweDQzMjIKPiArI2RlZmluZSBUWF9SQ1ZERVRfU1RfVE1SXzEgICAgICAgICAgICAgIDB4 NDMyMwo+ICsjZGVmaW5lIFRYX0RJQUdfQUNZQV8wICAgICAgICAgICAgICAgICAgMHg0MUZGCj4g KyNkZWZpbmUgVFhfRElBR19BQ1lBXzEgICAgICAgICAgICAgICAgICAweDQzRkYKPiArI2RlZmlu ZSBUWF9ESUFHX0FDWUFfMiAgICAgICAgICAgICAgICAgIDB4NDVGRgo+ICsjZGVmaW5lIFRYX0RJ QUdfQUNZQV8zICAgICAgICAgICAgICAgICAgMHg0N0ZGCj4gKyNkZWZpbmUgVFhfQU5BX0NUUkxf UkVHXzEgICAgICAgICAgICAgICAweDUwMjAKPiArI2RlZmluZSBUWF9BTkFfQ1RSTF9SRUdfMiAg ICAgICAgICAgICAgIDB4NTAyMQo+ICsjZGVmaW5lIFRYREFfQ09FRkZfQ0FMQyAgICAgICAgICAg ICAgICAgMHg1MDIyCj4gKyNkZWZpbmUgVFhfRElHX0NUUkxfUkVHXzEgICAgICAgICAgICAgICAw eDUwMjMKPiArI2RlZmluZSBUWF9ESUdfQ1RSTF9SRUdfMiAgICAgICAgICAgICAgIDB4NTAyNAo+ ICsjZGVmaW5lIFRYREFfQ1lBX0FVWERBX0NZQSAgICAgICAgICAgICAgMHg1MDI1Cj4gKyNkZWZp bmUgVFhfQU5BX0NUUkxfUkVHXzMgICAgICAgICAgICAgICAweDUwMjYKPiArI2RlZmluZSBUWF9B TkFfQ1RSTF9SRUdfNCAgICAgICAgICAgICAgIDB4NTAyNwo+ICsjZGVmaW5lIFRYX0FOQV9DVFJM X1JFR181ICAgICAgICAgICAgICAgMHg1MDI5Cj4gKyNkZWZpbmUgUlhfUFNDX0EwICAgICAgICAg ICAgICAgICAgICAgICAweDgwMDAKPiArI2RlZmluZSBSWF9QU0NfQ0FMICAgICAgICAgICAgICAg ICAgICAgIDB4ODAwNgo+ICsjZGVmaW5lIFBNQV9MQU5FX0NGRyAgICAgICAgICAgICAgICAgICAg MHhDMDAwCj4gKyNkZWZpbmUgUElQRV9DTU5fQ1RSTDEgICAgICAgICAgICAgICAgICAweEMwMDEK PiArI2RlZmluZSBQSVBFX0NNTl9DVFJMMiAgICAgICAgICAgICAgICAgIDB4QzAwMgo+ICsjZGVm aW5lIFBJUEVfQ09NX0xPQ0tfQ0ZHMSAgICAgICAgICAgICAgMHhDMDAzCj4gKyNkZWZpbmUgUElQ RV9DT01fTE9DS19DRkcyICAgICAgICAgICAgICAweEMwMDQKPiArI2RlZmluZSBQSVBFX1JDVl9E RVRfSU5IICAgICAgICAgICAgICAgIDB4QzAwNQo+ICsjZGVmaW5lIFBIWV9IRFBfTU9ERV9DVFJM ICAgICAgICAgICAgICAgMHhDMDA4Cj4gKyNkZWZpbmUgUEhZX0hEUF9DTEtfQ1RMICAgICAgICAg ICAgICAgICAweEMwMDkKPiArI2RlZmluZSBTVFMgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDB4QzAwRgo+ICsjZGVmaW5lIFBIWV9JU09fQ01OX0NUUkwgICAgICAgICAgICAgICAgMHhDMDEw Cj4gKyNkZWZpbmUgUEhZX0lTT19DTU5fQ1RSTCAgICAgICAgICAgICAgICAweEMwMTAKPiArI2Rl ZmluZSBQSFlfSERQX1RYX0NUTF9MMCAgICAgICAgICAgICAgIDB4QzQwOAo+ICsjZGVmaW5lIFBI WV9EUF9UWF9DVEwgICAgICAgICAgICAgICAgICAgMHhDNDA4Cj4gKyNkZWZpbmUgUEhZX0hEUF9U WF9DVExfTDEgICAgICAgICAgICAgICAweEM0NDgKPiArI2RlZmluZSBQSFlfSERQX1RYX0NUTF9M MiAgICAgICAgICAgICAgIDB4QzQ4OAo+ICsjZGVmaW5lIFBIWV9IRFBfVFhfQ1RMX0wzICAgICAg ICAgICAgICAgMHhDNEM4Cj4gKyNkZWZpbmUgUEhZX1BNQV9DTU5fQ1RSTDEgICAgICAgICAgICAg ICAweEM4MDAKPiArI2RlZmluZSBQTUFfQ01OX0NUUkwxICAgICAgICAgICAgICAgICAgIDB4Qzgw MAo+ICsjZGVmaW5lIFBIWV9QTUFfSVNPX0NNTl9DVFJMICAgICAgICAgICAgMHhDODEwCj4gKyNk ZWZpbmUgUEhZX1BNQV9JU09fUExMX0NUUkwxICAgICAgICAgICAweEM4MTIKPiArI2RlZmluZSBQ SFlfUE1BX0lTT0xBVElPTl9DVFJMICAgICAgICAgIDB4QzgxRgo+ICsjZGVmaW5lIFBIWV9JU09M QVRJT05fQ1RSTCAgICAgICAgICAgICAgMHhDODFGCj4gKyNkZWZpbmUgUEhZX1BNQV9JU09fWENW Ul9DVFJMICAgICAgICAgICAweENDMTEKPiArI2RlZmluZSBQSFlfUE1BX0lTT19MSU5LX01PREUg ICAgICAgICAgIDB4Q0MxMgo+ICsjZGVmaW5lIFBIWV9QTUFfSVNPX1BXUlNUX0NUUkwgICAgICAg ICAgMHhDQzEzCj4gKyNkZWZpbmUgUEhZX1BNQV9JU09fVFhfREFUQV9MTyAgICAgICAgICAweEND MTQKPiArI2RlZmluZSBQSFlfUE1BX0lTT19UWF9EQVRBX0hJICAgICAgICAgIDB4Q0MxNQo+ICsj ZGVmaW5lIFBIWV9QTUFfSVNPX1JYX0RBVEFfTE8gICAgICAgICAgMHhDQzE2Cj4gKyNkZWZpbmUg UEhZX1BNQV9JU09fUlhfREFUQV9ISSAgICAgICAgICAweENDMTcKCmRvIHlvdSB1c2UgYWxsIHRo ZXNlPwoKPiArCj4gKyNkZWZpbmUgTUFYX05VTV9MQU5FUwkJNAo+ICsjZGVmaW5lIERFRkFVTFRf TUFYX0JJVF9SQVRFCTU0MDAgLyogaW4gTWJwcyAqLwo+ICsKPiArI2RlZmluZSBSRUZfQ0xLXzI3 TUhaCQkyNzAwMDAwMAo+ICsKPiArZW51bSBkcF9saW5rX3JhdGUgewo+ICsJUkFURV8xXzYgPSAx NjIwMDAsCj4gKwlSQVRFXzJfMSA9IDIxNjAwMCwKPiArCVJBVEVfMl80ID0gMjQzMDAwLAo+ICsJ UkFURV8yXzcgPSAyNzAwMDAsCj4gKwlSQVRFXzNfMiA9IDMyNDAwMCwKPiArCVJBVEVfNF8zID0g NDMyMDAwLAo+ICsJUkFURV81XzQgPSA1NDAwMDAsCj4gKwlSQVRFXzhfMSA9IDgxMDAwMCwKPiAr fTsKPiArCj4gK3N0cnVjdCBwaHlfcGxsX3JlZyB7Cj4gKwl1MTYgdmFsWzddOwo+ICsJdTMyIGFk ZHI7Cj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHBoeV9wbGxfcmVnIHBoeV9wbGxf MjdtX2NmZ1tdID0gewo+ICsJLyogIDEuNjIgICAgMi4xNiAgICAyLjQzICAgIDIuNyAgICAgMy4y NCAgICA0LjMyICAgIDUuNCAgICAgIHJlZ2lzdGVyIGFkZHJlc3MgKi8KPiArCXt7IDB4MDEwRSwg MHgwMTBFLCAweDAxMEUsIDB4MDEwRSwgMHgwMTBFLCAweDAxMEUsIDB4MDEwRSB9LCBDTU5fUExM MF9WQ09DQUxfSU5JVF9UTVIgfSwKPiArCXt7IDB4MDAxQiwgMHgwMDFCLCAweDAwMUIsIDB4MDAx QiwgMHgwMDFCLCAweDAwMUIsIDB4MDAxQiB9LCBDTU5fUExMMF9WQ09DQUxfSVRFUl9UTVIgfSwK PiArCXt7IDB4MzBCOSwgMHgzMDg3LCAweDMwOTYsIDB4MzBCNCwgMHgzMEI5LCAweDMwODcsIDB4 MzBCNCB9LCBDTU5fUExMMF9WQ09DQUxfU1RBUlQgfSwKPiArCXt7IDB4MDA3NywgMHgwMDlGLCAw eDAwQjMsIDB4MDBDNywgMHgwMDc3LCAweDAwOUYsIDB4MDBDNyB9LCBDTU5fUExMMF9JTlRESVYg fSwKPiArCXt7IDB4RjlEQSwgMHhGN0NELCAweEY2QzcsIDB4RjVDMSwgMHhGOURBLCAweEY3Q0Qs IDB4RjVDMSB9LCBDTU5fUExMMF9GUkFDRElWIH0sCj4gKwl7eyAweDAwMUUsIDB4MDAyOCwgMHgw MDJELCAweDAwMzIsIDB4MDAxRSwgMHgwMDI4LCAweDAwMzIgfSwgQ01OX1BMTDBfSElHSF9USFIg fSwKPiArCXt7IDB4MDAyMCwgMHgwMDIwLCAweDAwMjAsIDB4MDAyMCwgMHgwMDIwLCAweDAwMjAs IDB4MDAyMCB9LCBDTU5fUExMMF9EU01fRElBRyB9LAo+ICsJe3sgMHgwMDAwLCAweDEwMDAsIDB4 MTAwMCwgMHgxMDAwLCAweDAwMDAsIDB4MTAwMCwgMHgxMDAwIH0sIENNTl9QTExTTTBfVVNFUl9E RUZfQ1RSTCB9LAo+ICsJe3sgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAs IDB4MDAwMCwgMHgwMDAwIH0sIENNTl9ESUFHX1BMTDBfT1ZSRCB9LAo+ICsJe3sgMHgwMDAwLCAw eDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwIH0sIENNTl9ESUFH X1BMTDBfRkJIX09WUkQgfSwKPiArCXt7IDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwg MHgwMDAwLCAweDAwMDAsIDB4MDAwMCB9LCBDTU5fRElBR19QTEwwX0ZCTF9PVlJEIH0sCj4gKwl7 eyAweDAwMDYsIDB4MDAwNywgMHgwMDA3LCAweDAwMDcsIDB4MDAwNiwgMHgwMDA3LCAweDAwMDcg fSwgQ01OX0RJQUdfUExMMF9WMklfVFVORSB9LAo+ICsJe3sgMHgwMDQzLCAweDAwNDMsIDB4MDA0 MywgMHgwMDQyLCAweDAwNDMsIDB4MDA0MywgMHgwMDQyIH0sIENNTl9ESUFHX1BMTDBfQ1BfVFVO RSB9LAo+ICsJe3sgMHgwMDA4LCAweDAwMDgsIDB4MDAwOCwgMHgwMDA4LCAweDAwMDgsIDB4MDAw OCwgMHgwMDA4IH0sIENNTl9ESUFHX1BMTDBfTEZfUFJPRyB9LAo+ICsJe3sgMHgwMTAwLCAweDAw MDEsIDB4MDAwMSwgMHgwMDAxLCAweDAxMDAsIDB4MDAwMSwgMHgwMDAxIH0sIENNTl9ESUFHX1BM TDBfUFRBVElTX1RVTkUxIH0sCj4gKwl7eyAweDAwMDcsIDB4MDAwMSwgMHgwMDAxLCAweDAwMDEs IDB4MDAwNywgMHgwMDAxLCAweDAwMDEgfSwgQ01OX0RJQUdfUExMMF9QVEFUSVNfVFVORTIgfSwK PiArCXt7IDB4MDAyMCwgMHgwMDIwLCAweDAwMjAsIDB4MDAyMCwgMHgwMDIwLCAweDAwMjAsIDB4 MDAyMCB9LCBDTU5fRElBR19QTEwwX1RFU1RfTU9ERX0sCj4gKwl7eyAweDAwMTYsIDB4MDAxNiwg MHgwMDE2LCAweDAwMTYsIDB4MDAxNiwgMHgwMDE2LCAweDAwMTYgfSwgQ01OX1BTTV9DTEtfQ1RS TCB9Cj4gK307Cj4gKwo+ICtzdHJ1Y3QgY2Ruc19oZHB0eF9kcF9waHkgewo+ICsJdm9pZCBfX2lv bWVtICpyZWdzOwkvKiBEUFRYIHJlZ2lzdGVycyBiYXNlICovCj4gKwlzdHJ1Y3QgZGV2aWNlICpk ZXY7Cj4gKwlzdHJ1Y3QgcGh5ICpwaHk7Cj4gKwlzdHJ1Y3QgbXV0ZXggbWJveF9tdXRleDsgLyog bXV0ZXggdG8gcHJvdGVjdCBtYWlsYm94ICovCj4gKwlzdHJ1Y3QgY2xrICpyZWZfY2xrOwo+ICsJ dTMyIHJlZl9jbGtfcmF0ZTsKPiArCXUzMiBudW1fbGFuZXM7Cj4gKwl1MzIgbWF4X2JpdF9yYXRl OyAvKiBNYXhpbXVtIGxpbmsgYml0IHJhdGUgdG8gdXNlIChpbiBNYnBzKSAqLwo+ICsJdTMyIGxp bmtfcmF0ZTsKPiArCWJvb2wgcG93ZXJfdXA7Cj4gK307Cj4gKwo+ICtzdGF0aWMgaW50IGNkbnNf cGh5X3JlZ193cml0ZShzdHJ1Y3QgY2Ruc19oZHB0eF9kcF9waHkgKmNkbnNfcGh5LCB1MzIgYWRk ciwgdTMyIHZhbCkKPiArewo+ICsJcmV0dXJuIGNkbnNfbWhkcF9yZWdfd3JpdGUoY2Ruc19waHks IEFERFJfUEhZX0FGRSArIChhZGRyIDw8IDIpLCB2YWwpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdTMy IGNkbnNfcGh5X3JlZ19yZWFkKHN0cnVjdCBjZG5zX2hkcHR4X2RwX3BoeSAqY2Ruc19waHksIHUz MiBhZGRyKQo+ICt7Cj4gKwl1MzIgcmVnMzI7Cj4gKwo+ICsJY2Ruc19taGRwX3JlZ19yZWFkKGNk bnNfcGh5LCBBRERSX1BIWV9BRkUgKyAoYWRkciA8PCAyKSwgJnJlZzMyKTsKPiArCXJldHVybiBy ZWczMjsKPiArfQo+ICsKPiArc3RhdGljIGludCBsaW5rX3JhdGVfaW5kZXgodTMyIHJhdGUpCj4g K3sKPiArCXN3aXRjaCAocmF0ZSkgewo+ICsJY2FzZSBSQVRFXzFfNjoKPiArCQlyZXR1cm4gMDsK PiArCWNhc2UgUkFURV8yXzE6Cj4gKwkJcmV0dXJuIDE7Cj4gKwljYXNlIFJBVEVfMl80Ogo+ICsJ CXJldHVybiAyOwo+ICsJY2FzZSBSQVRFXzJfNzoKPiArCQlyZXR1cm4gMzsKPiArCWNhc2UgUkFU RV8zXzI6Cj4gKwkJcmV0dXJuIDQ7Cj4gKwljYXNlIFJBVEVfNF8zOgo+ICsJCXJldHVybiA1Owo+ ICsJY2FzZSBSQVRFXzVfNDoKPiArCQlyZXR1cm4gNjsKPiArCWRlZmF1bHQ6Cj4gKwkJcmV0dXJu IC0xOwo+ICsJfQo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGhkcHR4X2RwX3JlZl9jbGsoc3RydWN0 IGNkbnNfaGRwdHhfZHBfcGh5ICpjZG5zX3BoeSkKPiArewo+ICsJc3RydWN0IGRldmljZSAqZGV2 ID0gY2Ruc19waHktPmRldjsKPiArCXUzMiByZWZfY2xrX3JhdGU7Cj4gKwlpbnQgcmV0Owo+ICsK PiArCWNkbnNfcGh5LT5yZWZfY2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgInJlZmNsayIpOwo+ICsJ aWYgKElTX0VSUihjZG5zX3BoeS0+cmVmX2NsaykpIHsKPiArCQlkZXZfZXJyKGRldiwgInBoeSBy ZWYgY2xvY2sgbm90IGZvdW5kXG4iKTsKPiArCQlyZXR1cm4gUFRSX0VSUihjZG5zX3BoeS0+cmVm X2Nsayk7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKGNkbnNfcGh5LT5y ZWZfY2xrKTsKPiArCWlmIChyZXQpIHsKPiArCQlkZXZfZXJyKGNkbnNfcGh5LT5kZXYsICJGYWls ZWQgdG8gcHJlcGFyZSByZWYgY2xvY2tcbiIpOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ ICsJcmVmX2Nsa19yYXRlID0gY2xrX2dldF9yYXRlKGNkbnNfcGh5LT5yZWZfY2xrKTsKPiArCWlm ICghcmVmX2Nsa19yYXRlKSB7Cj4gKwkJZGV2X2VycihjZG5zX3BoeS0+ZGV2LCAiRmFpbGVkIHRv IGdldCByZWYgY2xvY2sgcmF0ZVxuIik7Cj4gKwkJZ290byBlcnJfcmVmX2NsazsKPiArCX0KPiAr Cj4gKwlpZiAocmVmX2Nsa19yYXRlID09IFJFRl9DTEtfMjdNSFopCj4gKwkJY2Ruc19waHktPnJl Zl9jbGtfcmF0ZSA9IHJlZl9jbGtfcmF0ZTsKPiArCWVsc2Ugewo+ICsJCWRldl9lcnIoY2Ruc19w aHktPmRldiwgIk5vdCBzdXBwb3J0IFJlZiBDbG9jayBSYXRlKCVkSHopXG4iLCByZWZfY2xrX3Jh dGUpOwo+ICsJCWdvdG8gZXJyX3JlZl9jbGs7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gKwo+ ICtlcnJfcmVmX2NsazoKPiArCWNsa19kaXNhYmxlX3VucHJlcGFyZShjZG5zX3BoeS0+cmVmX2Ns ayk7Cj4gKwlyZXR1cm4gLUVJTlZBTDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgaGRwdHhfZHBf YXV4X2NmZyhzdHJ1Y3QgY2Ruc19oZHB0eF9kcF9waHkgKmNkbnNfcGh5KQo+ICt7Cj4gKwkvKiBQ b3dlciB1cCBBdXggKi8KPiArCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhEQV9DWUFf QVVYREFfQ1lBLCAxKTsKPiArCj4gKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX0RJ R19DVFJMX1JFR18xLCAweDMpOwo+ICsJbmRlbGF5KDE1MCk7Cj4gKwljZG5zX3BoeV9yZWdfd3Jp dGUoY2Ruc19waHksIFRYX0RJR19DVFJMX1JFR18yLCAzNik7Cj4gKwluZGVsYXkoMTUwKTsKPiAr CWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfQU5BX0NUUkxfUkVHXzIsIDB4MDEwMCk7 Cj4gKwluZGVsYXkoMTUwKTsKPiArCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfQU5B X0NUUkxfUkVHXzIsIDB4MDMwMCk7Cj4gKwluZGVsYXkoMTUwKTsKPiArCWNkbnNfcGh5X3JlZ193 cml0ZShjZG5zX3BoeSwgVFhfQU5BX0NUUkxfUkVHXzMsIDB4MDAwMCk7Cj4gKwluZGVsYXkoMTUw KTsKPiArCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfQU5BX0NUUkxfUkVHXzEsIDB4 MjAwOCk7Cj4gKwluZGVsYXkoMTUwKTsKPiArCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwg VFhfQU5BX0NUUkxfUkVHXzEsIDB4MjAxOCk7Cj4gKwluZGVsYXkoMTUwKTsKPiArCWNkbnNfcGh5 X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfQU5BX0NUUkxfUkVHXzEsIDB4QTAxOCk7Cj4gKwluZGVs YXkoMTUwKTsKPiArCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfQU5BX0NUUkxfUkVH XzIsIDB4MDMwQyk7Cj4gKwluZGVsYXkoMTUwKTsKPiArCWNkbnNfcGh5X3JlZ193cml0ZShjZG5z X3BoeSwgVFhfQU5BX0NUUkxfUkVHXzUsIDB4MDAwMCk7Cj4gKwluZGVsYXkoMTUwKTsKPiArCWNk bnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfQU5BX0NUUkxfUkVHXzQsIDB4MTAwMSk7Cj4g KwluZGVsYXkoMTUwKTsKPiArCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfQU5BX0NU UkxfUkVHXzEsIDB4QTA5OCk7Cj4gKwluZGVsYXkoMTUwKTsKPiArCWNkbnNfcGh5X3JlZ193cml0 ZShjZG5zX3BoeSwgVFhfQU5BX0NUUkxfUkVHXzEsIDB4QTE5OCk7Cj4gKwluZGVsYXkoMTUwKTsK PiArCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfQU5BX0NUUkxfUkVHXzIsIDB4MDMw ZCk7Cj4gKwluZGVsYXkoMTUwKTsKPiArCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhf QU5BX0NUUkxfUkVHXzIsIDB4MDMwZik7Cj4gK30KPiArCj4gKy8qIFBNQSBjb21tb24gY29uZmln dXJhdGlvbiBmb3IgMjdNSHogKi8KPiArc3RhdGljIHZvaWQgaGRwdHhfZHBfcGh5X3BtYV9jbW5f Y2ZnXzI3bWh6KHN0cnVjdCBjZG5zX2hkcHR4X2RwX3BoeSAqY2Ruc19waHkpCj4gK3sKPiArCXUz MiBudW1fbGFuZXMgPSBjZG5zX3BoeS0+bnVtX2xhbmVzOwo+ICsJdTE2IHZhbDsKPiArCWludCBr Owo+ICsKPiArCXZhbCA9IGNkbnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5LCBQSFlfUE1BX0NNTl9D VFJMMSk7Cj4gKwl2YWwgJj0gMHhGRkY3Owo+ICsJdmFsIHw9IDB4MDAwODsKPiArCWNkbnNfcGh5 X3JlZ193cml0ZShjZG5zX3BoeSwgUEhZX1BNQV9DTU5fQ1RSTDEsIHZhbCk7Cj4gKwo+ICsJLyog U3RhcnR1cCBzdGF0ZSBtYWNoaW5lIHJlZ2lzdGVycyAqLwo+ICsJY2Ruc19waHlfcmVnX3dyaXRl KGNkbnNfcGh5LCBDTU5fU1NNX0JJQVNfVE1SLCAweDAwODcpOwo+ICsJY2Ruc19waHlfcmVnX3dy aXRlKGNkbnNfcGh5LCBDTU5fUExMU00wX1BMTEVOX1RNUiwgMHgwMDFCKTsKPiArCWNkbnNfcGh5 X3JlZ193cml0ZShjZG5zX3BoeSwgQ01OX1BMTFNNMF9QTExQUkVfVE1SLCAweDAwMzYpOwo+ICsJ Y2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fUExMU00wX1BMTFZSRUZfVE1SLCAweDAw MUIpOwo+ICsJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fUExMU00wX1BMTExPQ0tf VE1SLCAweDAwNkMpOwo+ICsKPiArCS8qIEN1cnJlbnQgY2FsaWJyYXRpb24gcmVnaXN0ZXJzICov Cj4gKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9JQ0FMX0lOSVRfVE1SLCAweDAw NDQpOwo+ICsJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fSUNBTF9JVEVSX1RNUiwg MHgwMDA2KTsKPiArCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgQ01OX0lDQUxfQURKX0lO SVRfVE1SLCAweDAwMjIpOwo+ICsJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fSUNB TF9BREpfSVRFUl9UTVIsIDB4MDAwNik7Cj4gKwo+ICsJLyogUmVzaXN0b3IgY2FsaWJyYXRpb24g cmVnaXN0ZXJzICovCj4gKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9UWFBVQ0FM X0lOSVRfVE1SLCAweDAwMjIpOwo+ICsJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5f VFhQVUNBTF9JVEVSX1RNUiwgMHgwMDA2KTsKPiArCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3Bo eSwgQ01OX1RYUFVfQURKX0lOSVRfVE1SLCAweDAwMjIpOwo+ICsJY2Ruc19waHlfcmVnX3dyaXRl KGNkbnNfcGh5LCBDTU5fVFhQVV9BREpfSVRFUl9UTVIsIDB4MDAwNik7Cj4gKwljZG5zX3BoeV9y ZWdfd3JpdGUoY2Ruc19waHksIENNTl9UWFBEQ0FMX0lOSVRfVE1SLCAweDAwMjIpOwo+ICsJY2Ru c19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fVFhQRENBTF9JVEVSX1RNUiwgMHgwMDA2KTsK PiArCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgQ01OX1RYUERfQURKX0lOSVRfVE1SLCAw eDAwMjIpOwo+ICsJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fVFhQRF9BREpfSVRF Ul9UTVIsIDB4MDAwNik7Cj4gKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9SWENB TF9JTklUX1RNUiwgMHgwMDIyKTsKPiArCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgQ01O X1JYQ0FMX0lURVJfVE1SLCAweDAwMDYpOwo+ICsJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5 LCBDTU5fUlhfQURKX0lOSVRfVE1SLCAweDAwMjIpOwo+ICsJY2Ruc19waHlfcmVnX3dyaXRlKGNk bnNfcGh5LCBDTU5fUlhfQURKX0lURVJfVE1SLCAweDAwMDYpOwo+ICsKPiArCWZvciAoayA9IDA7 IGsgPCBudW1fbGFuZXM7IGsgPSBrICsgMSkgewo+ICsJCS8qIFBvd2VyIHN0YXRlIG1hY2hpbmUg cmVnaXN0ZXJzICovCj4gKwkJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBYQ1ZSX1BTTV9D QUxfVE1SICB8IChrIDw8IDkpLCAweDAxNkQpOwo+ICsJCWNkbnNfcGh5X3JlZ193cml0ZShjZG5z X3BoeSwgWENWUl9QU01fQTBJTl9UTVIgfCAoayA8PCA5KSwgMHgwMTZEKTsKPiArCQkvKiBUcmFu c2NlaXZlciBjb250cm9sIGFuZCBkaWFnbm9zdGljIHJlZ2lzdGVycyAqLwo+ICsJCWNkbnNfcGh5 X3JlZ193cml0ZShjZG5zX3BoeSwgWENWUl9ESUFHX0xBTkVfRkNNX0VOX01HTl9UTVIgfCAoayA8 PCA5KSwgMHgwMEEyKTsKPiArCQljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX0RJQUdf QkdSRUZfUFJFRFJWX0RFTEFZICAgIHwgKGsgPDwgOSksIDB4MDA5Nyk7Cj4gKwkJLyogVHJhbnNt aXR0ZXIgcmVjZWl2ZXIgZGV0ZWN0IHJlZ2lzdGVycyAqLwo+ICsJCWNkbnNfcGh5X3JlZ193cml0 ZShjZG5zX3BoeSwgVFhfUkNWREVUX0VOX1RNUiB8IChrIDw8IDkpLCAweDBBOEMpOwo+ICsJCWNk bnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfUkNWREVUX1NUX1RNUiB8IChrIDw8IDkpLCAw eDAwMzYpOwo+ICsJfQo+ICsKPiArCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfRElB R19BQ1lBXzAsIDEpOwo+ICsJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBUWF9ESUFHX0FD WUFfMSwgMSk7Cj4gKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX0RJQUdfQUNZQV8y LCAxKTsKPiArCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfRElBR19BQ1lBXzMsIDEp Owo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBoZHB0eF9kcF9waHlfcG1hX2Ntbl9wbGwwXzI3bWh6 KHN0cnVjdCBjZG5zX2hkcHR4X2RwX3BoeSAqY2Ruc19waHkpCj4gK3sKPiArCXUzMiBudW1fbGFu ZXMgPSBjZG5zX3BoeS0+bnVtX2xhbmVzOwo+ICsJdTMyIGxpbmtfcmF0ZSA9IGNkbnNfcGh5LT5s aW5rX3JhdGU7Cj4gKwl1MTYgdmFsOwo+ICsJaW50IGluZGV4LCBpLCBrOwo+ICsKPiArCS8qIERQ IFBMTCBkYXRhIHJhdGUgMC8xIGNsb2NrIGRpdmlkZXIgdmFsdWUgKi8KPiArCXZhbCA9IGNkbnNf cGh5X3JlZ19yZWFkKGNkbnNfcGh5LCBQSFlfSERQX0NMS19DVEwpOwo+ICsJdmFsICY9IDB4MDBG RjsKPiArCWlmIChsaW5rX3JhdGUgPD0gUkFURV8yXzcpCj4gKwkJdmFsIHw9IDB4MjQwMDsKPiAr CWVsc2UKPiArCQl2YWwgfD0gMHgxMjAwOwo+ICsJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5 LCBQSFlfSERQX0NMS19DVEwsIHZhbCk7Cj4gKwo+ICsJLyogSGlnaCBzcGVlZCBjbG9jayAwLzEg ZGl2ICovCj4gKwl2YWwgPSBjZG5zX3BoeV9yZWdfcmVhZChjZG5zX3BoeSwgQ01OX0RJQUdfSFND TEtfU0VMKTsKPiArCXZhbCAmPSAweEZGQ0M7Cj4gKwlpZiAobGlua19yYXRlIDw9IFJBVEVfMl83 KQo+ICsJCXZhbCB8PSAweDAwMTE7Cj4gKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENN Tl9ESUFHX0hTQ0xLX1NFTCwgdmFsKTsKPiArCj4gKwlmb3IgKGsgPSAwOyBrIDwgbnVtX2xhbmVz OyBrKyspIHsKPiArCQl2YWwgPSBjZG5zX3BoeV9yZWdfcmVhZChjZG5zX3BoeSwgKFhDVlJfRElB R19IU0NMS19TRUwgfCAoayA8PCA5KSkpOwo+ICsJCXZhbCA9IHZhbCAmIDB4Q0ZGRjsKPiArCQlp ZiAobGlua19yYXRlIDw9IFJBVEVfMl83KQo+ICsJCQl2YWwgfD0gMHgxMDAwOwo+ICsJCWNkbnNf cGh5X3JlZ193cml0ZShjZG5zX3BoeSwgKFhDVlJfRElBR19IU0NMS19TRUwgfCAoayA8PCA5KSks IHZhbCk7Cj4gKwl9Cj4gKwo+ICsJLyogRFAgUEhZIFBMTCAyN01IeiBjb25maWd1cmF0aW9uICov Cj4gKwlpbmRleCA9IGxpbmtfcmF0ZV9pbmRleChsaW5rX3JhdGUpOwo+ICsJZm9yIChpID0gMDsg aSA8IEFSUkFZX1NJWkUocGh5X3BsbF8yN21fY2ZnKTsgaSsrKQo+ICsJCWNkbnNfcGh5X3JlZ193 cml0ZShjZG5zX3BoeSwgcGh5X3BsbF8yN21fY2ZnW2ldLmFkZHIsCj4gKwkJCQlwaHlfcGxsXzI3 bV9jZmdbaV0udmFsW2luZGV4XSk7Cj4gKwo+ICsJLyogVHJhbnNjZWl2ZXIgY29udHJvbCBhbmQg ZGlhZ25vc3RpYyByZWdpc3RlcnMgKi8KPiArCWZvciAoayA9IDA7IGsgPCBudW1fbGFuZXM7IGsr Kykgewo+ICsJCXZhbCA9IGNkbnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5LCAoWENWUl9ESUFHX1BM TERSQ19DVFJMIHwgKGsgPDwgOSkpKTsKPiArCQl2YWwgPSB2YWwgJiAweDhGRkY7Cj4gKwkJaWYg KGxpbmtfcmF0ZSA8PSBSQVRFXzJfNykKPiArCQkJdmFsIHw9IDB4MjAwMDsKPiArCQllbHNlCj4g KwkJCXZhbCB8PSAweDEwMDA7Cj4gKwkJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCAoWENW Ul9ESUFHX1BMTERSQ19DVFJMIHwgKGsgPDwgOSkpLCB2YWwpOwo+ICsJfQo+ICsKPiArCWZvciAo ayA9IDA7IGsgPCBudW1fbGFuZXM7IGsgPSBrICsgMSkgewo+ICsJCS8qIFBvd2VyIHN0YXRlIG1h Y2hpbmUgcmVnaXN0ZXJzICovCj4gKwkJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCAoWENW Ul9QU01fUkNUUkwgfCAoayA8PCA5KSksICAweEJFRkMpOwo+ICsJCWNkbnNfcGh5X3JlZ193cml0 ZShjZG5zX3BoeSwgKFRYX1BTQ19BMCB8IChrIDw8IDkpKSwgMHg2Nzk5KTsKPiArCQljZG5zX3Bo eV9yZWdfd3JpdGUoY2Ruc19waHksIChUWF9QU0NfQTEgfCAoayA8PCA5KSksIDB4Njc5OCk7Cj4g KwkJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCAoVFhfUFNDX0EyIHwgKGsgPDwgOSkpLCAw eDAwOTgpOwo+ICsJCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgKFRYX1BTQ19BMyB8IChr IDw8IDkpKSwgMHgwMDk4KTsKPiArCQkvKiBSZWNlaXZlciBjYWxpYnJhdGlvbiBwb3dlciBzdGF0 ZSBkZWZpbml0aW9uIHJlZ2lzdGVyICovCj4gKwkJdmFsID0gY2Ruc19waHlfcmVnX3JlYWQoY2Ru c19waHksIFJYX1BTQ19DQUwgfCAoayA8PCA5KSk7Cj4gKwkJdmFsICY9IDB4RkZCQjsKPiArCQlj ZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIChSWF9QU0NfQ0FMIHwgKGsgPDwgOSkpLCB2YWwp Owo+ICsJCXZhbCA9IGNkbnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5LCBSWF9QU0NfQTAgIHwgKGsg PDwgOSkpOwo+ICsJCXZhbCAmPSAweEZGQkI7Cj4gKwkJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNf cGh5LCAoUlhfUFNDX0EwICB8IChrIDw8IDkpKSwgdmFsKTsKPiArCX0KPiArfQo+ICsKPiArc3Rh dGljIHZvaWQgaGRwdHhfZHBfcGh5X3JlZl9jbG9ja190eXBlKHN0cnVjdCBjZG5zX2hkcHR4X2Rw X3BoeSAqY2Ruc19waHkpCj4gK3sKPiArCXUzMiB2YWw7Cj4gKwo+ICsJdmFsID0gY2Ruc19waHlf cmVnX3JlYWQoY2Ruc19waHksIFBIWV9QTUFfQ01OX0NUUkwxKTsKPiArCXZhbCAmPSAweEZGOEY7 Cj4gKwkvKgo+ICsJICogc2luZ2xlIGVuZGVkIHJlZmVyZW5jZSBjbG9jayAodmFsIHw9IDB4MDAz MCk7Cj4gKwkgKiBkaWZmZXJlbnRpYWwgY2xvY2sgICh2YWwgfD0gMHgwMDAwKTsKPiArCSAqCj4g KwkgKiBmb3IgZGlmZmVyZW50aWFsIGNsb2NrIG9uIHRoZSByZWZjbGtfcCBhbmQKPiArCSAqIHJl ZmNsa19tIG9mZiBjaGlwIHBpbnM6IENNTl9ESUFHX0FDWUFbOF09MSdiMQo+ICsJICogY2Ruc19w aHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fRElBR19BQ1lBLCAweDAxMDApOwo+ICsJICovCj4g Kwl2YWwgfD0gMHgwMDMwOwo+ICsJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBQSFlfUE1B X0NNTl9DVFJMMSwgdmFsKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBoZHB0eF9kcF9waHlfcG93 ZXJfdXAoc3RydWN0IGNkbnNfaGRwdHhfZHBfcGh5ICpjZG5zX3BoeSkKPiArewo+ICsJdTMyIHZh bCwgaTsKPiArCj4gKwkvKiBFbmFibGUgSERQIFBMTOKAmXMgZm9yIGhpZ2ggc3BlZWQgY2xvY2tz ICovCj4gKwl2YWwgPSBjZG5zX3BoeV9yZWdfcmVhZChjZG5zX3BoeSwgUEhZX0hEUF9DTEtfQ1RM KTsKPiArCXZhbCB8PSAoMSA8PCAwKTsKPiArCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwg UEhZX0hEUF9DTEtfQ1RMLCB2YWwpOwo+ICsJLyogV2FpdCBmb3IgUExMIHJlYWR5IEFDSyAqLwo+ ICsJZm9yIChpID0gMDsgaSA8IDEwOyBpKyspIHsKPiArCQl2YWwgPSBjZG5zX3BoeV9yZWdfcmVh ZChjZG5zX3BoeSwgUEhZX0hEUF9DTEtfQ1RMKTsKPiArCQlpZiAodmFsICYgKDEgPDwgMSkpCj4g KwkJCWJyZWFrOwo+ICsJCW1zbGVlcCgyMCk7Cj4gKwl9Cj4gKwlpZiAoaSA9PSAxMCkgewo+ICsJ CWRldl9lcnIoY2Ruc19waHktPmRldiwgIldhaXQgUExMIEFjayBmYWlsZWRcbiIpOwo+ICsJCXJl dHVybiAtMTsKPiArCX0KPiArCj4gKwkvKiBFbmFibGUgSERQIFBMTOKAmXMgZGF0YSByYXRlIGFu ZCBmdWxsIHJhdGUgY2xvY2tzIG91dCBvZiBQTUEuICovCj4gKwl2YWwgPSBjZG5zX3BoeV9yZWdf cmVhZChjZG5zX3BoeSwgUEhZX0hEUF9DTEtfQ1RMKTsKPiArCXZhbCB8PSAoMSA8PCAyKTsKPiAr CWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgUEhZX0hEUF9DTEtfQ1RMLCB2YWwpOwo+ICsJ LyogV2FpdCBmb3IgUExMIGNsb2NrIGVuYWJsZSBBQ0sgKi8KPiArCWZvciAoaSA9IDA7IGkgPCAx MDsgaSsrKSB7Cj4gKwkJdmFsID0gY2Ruc19waHlfcmVnX3JlYWQoY2Ruc19waHksIFBIWV9IRFBf Q0xLX0NUTCk7Cj4gKwkJaWYgKHZhbCAmICgxIDw8IDMpKQo+ICsJCQlicmVhazsKPiArCQltc2xl ZXAoMjApOwo+ICsJfQo+ICsJaWYgKGkgPT0gMTApIHsKPiArCQlkZXZfZXJyKGNkbnNfcGh5LT5k ZXYsICJXYWl0IFBMTCBjbG9jayBlbmFibGUgQUNrIGZhaWxlZFxuIik7Cj4gKwkJcmV0dXJuIC0x Owo+ICsJfQo+ICsKPiArCS8qIENvbmZpZ3VyZSBQSFkgaW4gQTIgTW9kZSAqLwo+ICsJY2Ruc19w aHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBQSFlfSERQX01PREVfQ1RSTCwgMHgwMDA0KTsKPiArCS8q IFdhaXQgZm9yIFBvd2VyIFN0YXRlIEEyIEFjayAqLwo+ICsJZm9yIChpID0gMDsgaSA8IDEwOyBp KyspIHsKPiArCQl2YWwgPSBjZG5zX3BoeV9yZWdfcmVhZChjZG5zX3BoeSwgUEhZX0hEUF9NT0RF X0NUUkwpOwo+ICsJCWlmICh2YWwgJiAoMSA8PCA2KSkKPiArCQkJYnJlYWs7Cj4gKwkJbXNsZWVw KDIwKTsKPiArCX0KPiArCWlmIChpID09IDEwKSB7Cj4gKwkJZGV2X2VycihjZG5zX3BoeS0+ZGV2 LCAiV2FpdCBBMiBBY2sgZmFpbGVkXG4iKTsKPiArCQlyZXR1cm4gLTE7Cj4gKwl9Cj4gKwo+ICsJ LyogQ29uZmlndXJlIFBIWSBpbiBBMCBtb2RlIChQSFkgbXVzdCBiZSBpbiB0aGUgQTAgcG93ZXIK PiArCSAqIHN0YXRlIGluIG9yZGVyIHRvIHRyYW5zbWl0IGRhdGEpCj4gKwkgKi8KPiArCWNkbnNf cGh5X3JlZ193cml0ZShjZG5zX3BoeSwgUEhZX0hEUF9NT0RFX0NUUkwsIDB4MDEwMSk7Cj4gKwo+ ICsJLyogV2FpdCBmb3IgUG93ZXIgU3RhdGUgQTAgQWNrICovCj4gKwlmb3IgKGkgPSAwOyBpIDwg MTA7IGkrKykgewo+ICsJCXZhbCA9IGNkbnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5LCBQSFlfSERQ X01PREVfQ1RSTCk7Cj4gKwkJaWYgKHZhbCAmICgxIDw8IDQpKQo+ICsJCQlicmVhazsKPiArCQlt c2xlZXAoMjApOwo+ICsJfQo+ICsJaWYgKGkgPT0gMTApIHsKPiArCQlkZXZfZXJyKGNkbnNfcGh5 LT5kZXYsICJXYWl0IEEwIEFjayBmYWlsZWRcbiIpOwo+ICsJCXJldHVybiAtMTsKPiArCX0KPiAr Cj4gKwljZG5zX3BoeS0+cG93ZXJfdXAgPSB0cnVlOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgdm9pZCBoZHB0eF9kcF9waHlfcG93ZXJfZG93bihzdHJ1Y3QgY2Ruc19oZHB0 eF9kcF9waHkgKmNkbnNfcGh5KQo+ICt7Cj4gKwl1MTYgdmFsOwo+ICsJaW50IGk7Cj4gKwo+ICsJ aWYgKCFjZG5zX3BoeS0+cG93ZXJfdXApCj4gKwkJcmV0dXJuOwo+ICsKPiArCS8qIFBsYWNlIHRo ZSBQSFkgbGFuZXMgaW4gdGhlIEEzIHBvd2VyIHN0YXRlLiAqLwo+ICsJY2Ruc19waHlfcmVnX3dy aXRlKGNkbnNfcGh5LCBQSFlfSERQX01PREVfQ1RSTCwgMHg4KTsKPiArCS8qIFdhaXQgZm9yIFBv d2VyIFN0YXRlIEEzIEFjayAqLwo+ICsJZm9yIChpID0gMDsgaSA8IDEwOyBpKyspIHsKPiArCQl2 YWwgPSBjZG5zX3BoeV9yZWdfcmVhZChjZG5zX3BoeSwgUEhZX0hEUF9NT0RFX0NUUkwpOwo+ICsJ CWlmICh2YWwgJiAoMSA8PCA3KSkKPiArCQkJYnJlYWs7Cj4gKwkJbXNsZWVwKDIwKTsKPiArCX0K PiArCWlmIChpID09IDEwKSB7Cj4gKwkJZGV2X2VycihjZG5zX3BoeS0+ZGV2LCAiV2FpdCBBMyBB Y2sgZmFpbGVkXG4iKTsKPiArCQlyZXR1cm47Cj4gKwl9Cj4gKwo+ICsJLyogRGlzYWJsZSBIRFAg UExM4oCZcyBkYXRhIHJhdGUgYW5kIGZ1bGwgcmF0ZSBjbG9ja3Mgb3V0IG9mIFBNQS4gKi8KPiAr CXZhbCA9IGNkbnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5LCBQSFlfSERQX0NMS19DVEwpOwo+ICsJ dmFsICY9IH4oMSA8PCAyKTsKPiArCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgUEhZX0hE UF9DTEtfQ1RMLCB2YWwpOwo+ICsJLyogV2FpdCBmb3IgUExMIGNsb2NrIGdhdGUgQUNLICovCj4g Kwlmb3IgKGkgPSAwOyBpIDwgMTA7IGkrKykgewo+ICsJCXZhbCA9IGNkbnNfcGh5X3JlZ19yZWFk KGNkbnNfcGh5LCBQSFlfSERQX0NMS19DVEwpOwo+ICsJCWlmICghKHZhbCAmICgxIDw8IDMpKSkK PiArCQkJYnJlYWs7Cj4gKwkJbXNsZWVwKDIwKTsKPiArCX0KPiArCWlmIChpID09IDEwKSB7Cj4g KwkJZGV2X2VycihjZG5zX3BoeS0+ZGV2LCAiV2FpdCBQTEwgY2xvY2sgZ2F0ZSBBY2sgZmFpbGVk XG4iKTsKPiArCQlyZXR1cm47Cj4gKwl9Cj4gKwo+ICsJLyogRGlzYWJsZSBIRFAgUExM4oCZcyBm b3IgaGlnaCBzcGVlZCBjbG9ja3MgKi8KPiArCXZhbCA9IGNkbnNfcGh5X3JlZ19yZWFkKGNkbnNf cGh5LCBQSFlfSERQX0NMS19DVEwpOwo+ICsJdmFsICY9IH4oMSA8PCAwKTsKPiArCWNkbnNfcGh5 X3JlZ193cml0ZShjZG5zX3BoeSwgUEhZX0hEUF9DTEtfQ1RMLCB2YWwpOwo+ICsJLyogV2FpdCBm b3IgUExMIGRpc2FibGUgQUNLICovCj4gKwlmb3IgKGkgPSAwOyBpIDwgMTA7IGkrKykgewo+ICsJ CXZhbCA9IGNkbnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5LCBQSFlfSERQX0NMS19DVEwpOwo+ICsJ CWlmICghKHZhbCAmICgxIDw8IDEpKSkKPiArCQkJYnJlYWs7Cj4gKwkJbXNsZWVwKDIwKTsKPiAr CX0KPiArCWlmIChpID09IDEwKSB7Cj4gKwkJZGV2X2VycihjZG5zX3BoeS0+ZGV2LCAiV2FpdCBQ TEwgZGlzYWJsZSBBY2sgZmFpbGVkXG4iKTsKPiArCQlyZXR1cm47Cj4gKwl9Cj4gK30KPiArCj4g K3N0YXRpYyBpbnQgY2Ruc19oZHB0eF9kcF9waHlfb24oc3RydWN0IHBoeSAqcGh5KQo+ICt7Cj4g KwlzdHJ1Y3QgY2Ruc19oZHB0eF9kcF9waHkgKmNkbnNfcGh5ID0gcGh5X2dldF9kcnZkYXRhKHBo eSk7Cj4gKwo+ICsJcmV0dXJuIGhkcHR4X2RwX3BoeV9wb3dlcl91cChjZG5zX3BoeSk7Cj4gK30K PiArCj4gK3N0YXRpYyBpbnQgY2Ruc19oZHB0eF9kcF9waHlfb2ZmKHN0cnVjdCBwaHkgKnBoeSkK PiArewo+ICsJc3RydWN0IGNkbnNfaGRwdHhfZHBfcGh5ICpjZG5zX3BoeSA9IHBoeV9nZXRfZHJ2 ZGF0YShwaHkpOwo+ICsKPiArCWhkcHR4X2RwX3BoeV9wb3dlcl9kb3duKGNkbnNfcGh5KTsKPiAr Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBjZG5zX2hkcHR4X2RwX3BoeV9p bml0KHN0cnVjdCBwaHkgKnBoeSkKPiArewo+ICsJc3RydWN0IGNkbnNfaGRwdHhfZHBfcGh5ICpj ZG5zX3BoeSA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkpOwo+ICsJaW50IHJldDsKPiArCj4gKwloZHB0 eF9kcF9waHlfcmVmX2Nsb2NrX3R5cGUoY2Ruc19waHkpOwo+ICsKPiArCS8qIFBIWSBwb3dlciB1 cCAqLwo+ICsJcmV0ID0gaGRwdHhfZHBfcGh5X3Bvd2VyX3VwKGNkbnNfcGh5KTsKPiArCWlmIChy ZXQgPCAwKQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJaGRwdHhfZHBfYXV4X2NmZyhjZG5zX3Bo eSk7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIGludCBjZG5zX2hkcHR4 X2RwX2NvbmZpZ3VyZShzdHJ1Y3QgcGh5ICpwaHksCj4gKwkJCQkgICAgIHVuaW9uIHBoeV9jb25m aWd1cmVfb3B0cyAqb3B0cykKPiArewo+ICsJc3RydWN0IGNkbnNfaGRwdHhfZHBfcGh5ICpjZG5z X3BoeSA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkpOwo+ICsJaW50IHJldDsKPiArCj4gKwljZG5zX3Bo eS0+bGlua19yYXRlID0gb3B0cy0+ZHAubGlua19yYXRlOwo+ICsKPiArCS8qIERpc2FibGUgcGh5 IGNsb2NrIGlmIFBIWSBpbiBwb3dlciB1cCBzdGF0ZSAqLwo+ICsJaGRwdHhfZHBfcGh5X3Bvd2Vy X2Rvd24oY2Ruc19waHkpOwo+ICsKPiArCWlmIChjZG5zX3BoeS0+cmVmX2Nsa19yYXRlID09IFJF Rl9DTEtfMjdNSFopIHsKPiArCQloZHB0eF9kcF9waHlfcG1hX2Ntbl9jZmdfMjdtaHooY2Ruc19w aHkpOwo+ICsJCWhkcHR4X2RwX3BoeV9wbWFfY21uX3BsbDBfMjdtaHooY2Ruc19waHkpOwo+ICsJ fSBlbHNlCj4gKwkJZGV2X2VycihjZG5zX3BoeS0+ZGV2LCAiTm90IHN1cHBvcnQgcmVmIGNsb2Nr IHJhdGVcbiIpOwo+ICsKPiArCS8qIFBIWSBwb3dlciB1cCAqLwo+ICsJcmV0ID0gaGRwdHhfZHBf cGh5X3Bvd2VyX3VwKGNkbnNfcGh5KTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtz dGF0aWMgY29uc3Qgc3RydWN0IHBoeV9vcHMgY2Ruc19oZHB0eF9kcF9waHlfb3BzID0gewo+ICsJ LmluaXQJCT0gY2Ruc19oZHB0eF9kcF9waHlfaW5pdCwKPiArCS5jb25maWd1cmUJPSBjZG5zX2hk cHR4X2RwX2NvbmZpZ3VyZSwKPiArCS5wb3dlcl9vbgk9IGNkbnNfaGRwdHhfZHBfcGh5X29uLAo+ ICsJLnBvd2VyX29mZgk9IGNkbnNfaGRwdHhfZHBfcGh5X29mZiwKPiArCS5vd25lcgkJPSBUSElT X01PRFVMRSwKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQgY2Ruc19oZHB0eF9kcF9waHlfcHJvYmUo c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiArewo+ICsJc3RydWN0IGNkbnNfaGRwdHhf ZHBfcGh5ICpjZG5zX3BoeTsKPiArCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7Cj4g KwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUgPSBkZXYtPm9mX25vZGU7Cj4gKwlzdHJ1Y3QgcGh5 X3Byb3ZpZGVyICpwaHlfcHJvdmlkZXI7Cj4gKwlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKPiArCXN0 cnVjdCBwaHkgKnBoeTsKPiArCWludCByZXQ7Cj4gKwo+ICsJY2Ruc19waHkgPSBkZXZtX2t6YWxs b2MoZGV2LCBzaXplb2YoKmNkbnNfcGh5KSwgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIWNkbnNfcGh5 KQo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsKPiArCWRldl9zZXRfZHJ2ZGF0YShkZXYsIGNkbnNf cGh5KTsKPiArCWNkbnNfcGh5LT5kZXYgPSBkZXY7Cj4gKwltdXRleF9pbml0KCZjZG5zX3BoeS0+ bWJveF9tdXRleCk7Cj4gKwo+ICsJcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElP UkVTT1VSQ0VfTUVNLCAwKTsKPiArCWlmICghcmVzKQo+ICsJCXJldHVybiAtRU5PREVWOwo+ICsJ Y2Ruc19waHktPnJlZ3MgPSBkZXZtX2lvcmVtYXAoZGV2LCByZXMtPnN0YXJ0LCByZXNvdXJjZV9z aXplKHJlcykpOwo+ICsJaWYgKElTX0VSUihjZG5zX3BoeS0+cmVncykpCj4gKwkJcmV0dXJuIFBU Ul9FUlIoY2Ruc19waHktPnJlZ3MpOwo+ICsKPiArCWlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihu b2RlLCAiY2RucyxudW0tbGFuZXMiLAo+ICsJCQkJICZjZG5zX3BoeS0+bnVtX2xhbmVzKSkgewo+ ICsJCWRldl9lcnIoZGV2LCAiJXM6IE5vIFwiY2RucyxudW0tbGFuZXNcIi1wcm9wZXJ0eS5cbiIs Cj4gKwkJCW5vZGUtPmZ1bGxfbmFtZSk7Cj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwl9Cj4gKwo+ ICsJcGh5ID0gZGV2bV9waHlfY3JlYXRlKGRldiwgbm9kZSwgJmNkbnNfaGRwdHhfZHBfcGh5X29w cyk7Cj4gKwlpZiAoSVNfRVJSKHBoeSkpCj4gKwkJcmV0dXJuIFBUUl9FUlIocGh5KTsKPiArCj4g KwljZG5zX3BoeS0+bWF4X2JpdF9yYXRlID0gREVGQVVMVF9NQVhfQklUX1JBVEU7Cj4gKwlvZl9w cm9wZXJ0eV9yZWFkX3UzMihub2RlLCAiY2RucyxtYXgtYml0LXJhdGUiLAo+ICsJCQkgICAgICZj ZG5zX3BoeS0+bWF4X2JpdF9yYXRlKTsKPiArCj4gKwlzd2l0Y2ggKGNkbnNfcGh5LT5tYXhfYml0 X3JhdGUpIHsKPiArCS8qIHZhbGlkIGJpdCByYXRlICovCj4gKwljYXNlIDE2MjA6Cj4gKwljYXNl IDIxNjA6Cj4gKwljYXNlIDI0MzA6Cj4gKwljYXNlIDI3MDA6Cj4gKwljYXNlIDMyNDA6Cj4gKwlj YXNlIDQzMjA6Cj4gKwljYXNlIDU0MDA6Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIDgxMDA6Cj4gKwlk ZWZhdWx0Ogo+ICsJCWRldl9lcnIoZGV2LCAidW5zdXBwb3J0ZWQgbWF4IGJpdCByYXRlOiAlZE1i cHNcbiIsCj4gKwkJCQljZG5zX3BoeS0+bWF4X2JpdF9yYXRlKTsKPiArCQlyZXR1cm4gLUVJTlZB TDsKPiArCX0KPiArCj4gKwlkZXZfZGJnKGRldiwgIkRQIG1heCBiaXQgcmF0ZSAlZC4lMDNkIEdi cHNcbiIsCj4gKwkJY2Ruc19waHktPm1heF9iaXRfcmF0ZSAvIDEwMDAsCj4gKwkJY2Ruc19waHkt Pm1heF9iaXRfcmF0ZSAlIDEwMDApOwo+ICsKPiArCXBoeS0+YXR0cnMuYnVzX3dpZHRoID0gY2Ru c19waHktPm51bV9sYW5lczsKPiArCXBoeS0+YXR0cnMubWF4X2xpbmtfcmF0ZSA9IGNkbnNfcGh5 LT5tYXhfYml0X3JhdGU7Cj4gKwlwaHktPmF0dHJzLm1vZGUgPSBQSFlfTU9ERV9EUDsKPiArCj4g KwljZG5zX3BoeS0+cGh5ID0gcGh5Owo+ICsJcGh5X3NldF9kcnZkYXRhKHBoeSwgY2Ruc19waHkp Owo+ICsKPiArCWlmIChjZG5zX3BoeS0+bnVtX2xhbmVzID4gTUFYX05VTV9MQU5FUykgewo+ICsJ CWRldl9lcnIoZGV2LCAiSW52YWxpZCBsYW5lIGNvbmZpZ3VyYXRpb25cbiIpOwo+ICsJCXJldHVy biAtRUlOVkFMOwo+ICsJfQo+ICsKPiArCXJldCA9IGhkcHR4X2RwX3JlZl9jbGsoY2Ruc19waHkp Owo+ICsJaWYgKHJldCkgewo+ICsJCWRldl9lcnIoZGV2LCAiSW5pdCBjbGsgZmFpbFxuIik7Cj4g KwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwl9Cj4gKwo+ICsJcGh5X3Byb3ZpZGVyID0gZGV2bV9vZl9w aHlfcHJvdmlkZXJfcmVnaXN0ZXIoZGV2LCBvZl9waHlfc2ltcGxlX3hsYXRlKTsKPiArCWlmIChJ U19FUlIocGh5X3Byb3ZpZGVyKSkgewo+ICsJCXJldCA9ICBQVFJfRVJSKHBoeV9wcm92aWRlcik7 Cj4gKwkJZ290byBjbGtfZGlzYWJsZTsKPiArCX0KPiArCj4gKwlkZXZfZGJnKGRldiwgImxpbms6 ICglZCBsYW5lcykiLCBjZG5zX3BoeS0+bnVtX2xhbmVzKTsKPiArCj4gKwlyZXR1cm4gMDsKPiAr Cj4gK2Nsa19kaXNhYmxlOgo+ICsJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGNkbnNfcGh5LT5yZWZf Y2xrKTsKPiArCj4gKwlyZXR1cm4gLUVJTlZBTDsKPiArfQo+ICsKPiArc3RhdGljIGludCBjZG5z X2hkcHR4X2RwX3BoeV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiArewo+ ICsJc3RydWN0IGNkbnNfaGRwdHhfZHBfcGh5ICpjZG5zX3BoeSA9IHBsYXRmb3JtX2dldF9kcnZk YXRhKHBkZXYpOwo+ICsKPiArCWNsa19kaXNhYmxlX3VucHJlcGFyZShjZG5zX3BoeS0+cmVmX2Ns ayk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2Zf ZGV2aWNlX2lkIGNkbnNfaGRwdHhfZHBfcGh5X29mX21hdGNoW10gPSB7Cj4gKwl7Cj4gKwkJLmNv bXBhdGlibGUgPSAiY2RucyxoZHB0eC1kcC1waHkiLAo+ICsJfSwKPiArCXt9Cj4gK307Cj4gK01P RFVMRV9ERVZJQ0VfVEFCTEUob2YsIGNkbnNfaGRwdHhfZHBfcGh5X29mX21hdGNoKTsKPiArCj4g K3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGNkbnNfaGRwdHhfZHBfcGh5X2RyaXZlciA9 IHsKPiArCS5wcm9iZQk9IGNkbnNfaGRwdHhfZHBfcGh5X3Byb2JlLAo+ICsJLnJlbW92ZSA9IGNk bnNfaGRwdHhfZHBfcGh5X3JlbW92ZSwKPiArCS5kcml2ZXIgPSB7Cj4gKwkJLm5hbWUJPSAiY2Ru cy1oZHB0eC1kcC1waHkiLAo+ICsJCS5vZl9tYXRjaF90YWJsZQk9IGNkbnNfaGRwdHhfZHBfcGh5 X29mX21hdGNoLAo+ICsJfQo+ICt9Owo+ICttb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGNkbnNfaGRw dHhfZHBfcGh5X2RyaXZlcik7Cj4gKwo+ICtNT0RVTEVfQVVUSE9SKCJTYW5kb3IgWXUgPHNhbmRv ci55dUBueHAuY29tPiIpOwo+ICtNT0RVTEVfREVTQ1JJUFRJT04oIkNhZGVuY2UgSERQLVRYIERp c3BsYXlQb3J0IFBIWSBkcml2ZXIiKTsKPiArTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwo+IC0tIAo+ IDIuMzQuMQoKLS0gCn5WaW5vZAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5l bEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4v bGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=