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 3C752C001DF for ; Mon, 24 Jul 2023 10:51:57 +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=vjGH7lfbgk7/JUsd0e1yLn91Sfwr6zybFX/J0QikYQk=; b=z02JRk29aPNvYg +tZalikMnt837Q3vD1wLi0be1VlFE42MnGReFIZgBbQcH3k7skgbG5cAU7MU+mGccNpAXW7f8jt/g 7Nx7FphcFvKUDWp+SOuteQ30YZcJV//I3gejygpKmXaxZxV2sCT7fPd7P0wzatpFn8d+2cqB/eIib y7aOIbToAjhnT1MEMV5GWaMXRRg0jvSeY/0m/z9s4KAj9g1S8LT4DkFnn8FS3GNvoGi0Fty+rqp68 cCS0ZX9CWGxTzqq5BwnXT5eV0DjiByYHOekZCcAQV1FZrbZcCSjr+vIdbPn4GZDxcABcW3PS91kQe qJ54Yvk1DM9v83U2XxMg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qNtAS-003tgU-2j; Mon, 24 Jul 2023 10:51:56 +0000 Received: from dfw.source.kernel.org ([139.178.84.217]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qNtAN-003teg-36; Mon, 24 Jul 2023 10:51:55 +0000 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 13E276103C; Mon, 24 Jul 2023 10:51:51 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5C40AC433C7; Mon, 24 Jul 2023 10:51:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1690195910; bh=Hm4KpRgolrbkVpbCQNLJbZKNI2aGi1klArYlS2xQMGM=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=dU8zYDo5/5EjJOeprdTvhp9BX+oIjNaKE4W+cYWvjy7w2i1Ufqbg+q58mQ6Zakowq sYA0K5Jtn0l7k/RKfSt+IIhdw9weUbjGdkYa7XeHQ3ZozEaUzvJb/dmGu1EcdUD91y 92vTj/gJyZImKETv1DlDpmgsb2GvyceIpNOA2dPQxuIk83Q+o6HYcfjqLJarNxbNZD d5YeZHkTHIyfaGUP9dPvkikLFWXe2pbydbf9grdJvggd/7J6lu7nQ1Nu7HIKDs1ZNw X7ooUtyvsZbQ6s9rJROEoFPQPbPUBNXLGbfdhBc8akMNGjezhTDym2huLL7PBcCx9c z7pkm7C2RszZw== Date: Mon, 24 Jul 2023 16:21:45 +0530 From: Vinod Koul To: Sandor Yu Cc: andrzej.hajda@intel.com, neil.armstrong@linaro.org, Laurent.pinchart@ideasonboard.com, jonas@kwiboo.se, jernej.skrabec@gmail.com, airlied@gmail.com, daniel@ffwll.ch, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, shawnguo@kernel.org, s.hauer@pengutronix.de, festevam@gmail.com, 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, kernel@pengutronix.de, linux-imx@nxp.com, oliver.brown@nxp.com, alexander.stein@ew.tq-group.com, sam@ravnborg.org Subject: Re: [PATCH v7 6/7] phy: freescale: Add DisplayPort PHY driver for i.MX8MQ Message-ID: References: <50f342972001f079a0946f7718c6e3fa6aed9503.1689580812.git.Sandor.yu@nxp.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <50f342972001f079a0946f7718c6e3fa6aed9503.1689580812.git.Sandor.yu@nxp.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230724_035152_151778_D91BE551 X-CRM114-Status: GOOD ( 28.92 ) 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 T24gMTctMDctMjMsIDE2OjAzLCBTYW5kb3IgWXUgd3JvdGU6Cj4gQWRkIENhZGVuY2UgSERQLVRY IERpc3BsYXlQb3J0IFBIWSBkcml2ZXIgZm9yIGkuTVg4TVEKPiAKPiBDYWRlbmNlIEhEUC1UWCBQ SFkgY291bGQgYmUgcHV0IGluIGVpdGhlciBEUCBtb2RlIG9yCj4gSERNSSBtb2RlIGJhc2Ugb24g dGhlIGNvbmZpZ3VyYXRpb24gY2hvc2VuLgo+IERpc3BsYXlQb3J0IFBIWSBtb2RlIGlzIGNvbmZp Z3VyYXRlZCBpbiB0aGUgZHJpdmVyLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFNhbmRvciBZdSA8U2Fu ZG9yLnl1QG54cC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvcGh5L2ZyZWVzY2FsZS9LY29uZmlnICAg ICAgICAgICAgIHwgICA5ICsKPiAgZHJpdmVycy9waHkvZnJlZXNjYWxlL01ha2VmaWxlICAgICAg ICAgICAgfCAgIDEgKwo+ICBkcml2ZXJzL3BoeS9mcmVlc2NhbGUvcGh5LWZzbC1pbXg4bXEtZHAu YyB8IDY5OCArKysrKysrKysrKysrKysrKysrKysrCj4gIDMgZmlsZXMgY2hhbmdlZCwgNzA4IGlu c2VydGlvbnMoKykKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvcGh5L2ZyZWVzY2FsZS9w aHktZnNsLWlteDhtcS1kcC5jCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGh5L2ZyZWVzY2Fs ZS9LY29uZmlnIGIvZHJpdmVycy9waHkvZnJlZXNjYWxlL0tjb25maWcKPiBpbmRleCA4NTM5NThm YjJjMDYuLjI5OTliYTFlNTdkMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3BoeS9mcmVlc2NhbGUv S2NvbmZpZwo+ICsrKyBiL2RyaXZlcnMvcGh5L2ZyZWVzY2FsZS9LY29uZmlnCj4gQEAgLTM1LDYg KzM1LDE1IEBAIGNvbmZpZyBQSFlfRlNMX0lNWDhNX1BDSUUKPiAgCSAgRW5hYmxlIHRoaXMgdG8g YWRkIHN1cHBvcnQgZm9yIHRoZSBQQ0lFIFBIWSBhcyBmb3VuZCBvbgo+ICAJICBpLk1YOE0gZmFt aWx5IG9mIFNPQ3MuCj4gIAo+ICtjb25maWcgUEhZX0ZTTF9JTVg4TVFfRFBfUEhZCj4gKwl0cmlz dGF0ZSAiRnJlZXNjYWxlIGkuTVg4TVEgRFAgUEhZIHN1cHBvcnQiCj4gKwlkZXBlbmRzIG9uIE9G ICYmIEhBU19JT01FTQo+ICsJZGVwZW5kcyBvbiBDT01NT05fQ0xLCj4gKwlzZWxlY3QgR0VORVJJ Q19QSFkKPiArCWhlbHAKPiArCSAgRW5hYmxlIHRoaXMgdG8gc3VwcG9ydCB0aGUgQ2FkZW5jZSBI RFBUWCBEUCBQSFkgZHJpdmVyCj4gKwkgIG9uIGkuTVg4TVEgU09DLgo+ICsKPiAgZW5kaWYKPiAg Cj4gIGNvbmZpZyBQSFlfRlNMX0xZTlhfMjhHCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGh5L2Zy ZWVzY2FsZS9NYWtlZmlsZSBiL2RyaXZlcnMvcGh5L2ZyZWVzY2FsZS9NYWtlZmlsZQo+IGluZGV4 IGNlZGIzMjhiYzRkMi4uOTE1YTQyOWQ5ZmJjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvcGh5L2Zy ZWVzY2FsZS9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvcGh5L2ZyZWVzY2FsZS9NYWtlZmlsZQo+ IEBAIC00LDMgKzQsNCBAQCBvYmotJChDT05GSUdfUEhZX01JWEVMX0xWRFNfUEhZKQkrPSBwaHkt ZnNsLWlteDhxbS1sdmRzLXBoeS5vCj4gIG9iai0kKENPTkZJR19QSFlfTUlYRUxfTUlQSV9EUEhZ KQkrPSBwaHktZnNsLWlteDgtbWlwaS1kcGh5Lm8KPiAgb2JqLSQoQ09ORklHX1BIWV9GU0xfSU1Y OE1fUENJRSkJKz0gcGh5LWZzbC1pbXg4bS1wY2llLm8KPiAgb2JqLSQoQ09ORklHX1BIWV9GU0xf TFlOWF8yOEcpCQkrPSBwaHktZnNsLWx5bngtMjhnLm8KPiArb2JqLSQoQ09ORklHX1BIWV9GU0xf SU1YOE1RX0RQX1BIWSkJKz0gcGh5LWZzbC1pbXg4bXEtZHAubwo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL3BoeS9mcmVlc2NhbGUvcGh5LWZzbC1pbXg4bXEtZHAuYyBiL2RyaXZlcnMvcGh5L2ZyZWVz Y2FsZS9waHktZnNsLWlteDhtcS1kcC5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAw MDAwMDAwMDAwMDAuLjQxNTI3M2FjNmFhNQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJz L3BoeS9mcmVlc2NhbGUvcGh5LWZzbC1pbXg4bXEtZHAuYwo+IEBAIC0wLDAgKzEsNjk4IEBACj4g Ky8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKPiArLyoKPiArICogQ2Fk ZW5jZSBIRFAtVFggRGlzcGxheSBQb3J0IEludGVyZmFjZSAoRFApIFBIWSBkcml2ZXIKPiArICoK PiArICogQ29weXJpZ2h0IChDKSAyMDIyIE5YUCBTZW1pY29uZHVjdG9yLCBJbmMuCj4gKyAqLwo+ ICsjaW5jbHVkZSA8YXNtL3VuYWxpZ25lZC5oPgo+ICsjaW5jbHVkZSA8bGludXgvY2xrLmg+Cj4g KyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3BoeS9waHkuaD4K PiArI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgo+ICsjaW5jbHVkZSA8bGludXgv aW8uaD4KPiArI2luY2x1ZGUgPGxpbnV4L2lvcG9sbC5oPgo+ICsKPiArI2luY2x1ZGUgPGRybS9i cmlkZ2UvY2Rucy1taGRwLW1haWxib3guaD4KPiArCj4gKyNkZWZpbmUgQUREUl9QSFlfQUZFCTB4 ODAwMDAKPiArCj4gKy8qIFBIWSByZWdpc3RlcnMgKi8KPiArI2RlZmluZSBDTU5fU1NNX0JJQVNf VE1SICAgICAgICAgICAgICAgIDB4MDAyMgo+ICsjZGVmaW5lIENNTl9QTExTTTBfUExMRU5fVE1S ICAgICAgICAgICAgMHgwMDI5Cj4gKyNkZWZpbmUgQ01OX1BMTFNNMF9QTExQUkVfVE1SICAgICAg ICAgICAweDAwMmEKPiArI2RlZmluZSBDTU5fUExMU00wX1BMTFZSRUZfVE1SICAgICAgICAgIDB4 MDAyYgo+ICsjZGVmaW5lIENNTl9QTExTTTBfUExMTE9DS19UTVIgICAgICAgICAgMHgwMDJjCj4g KyNkZWZpbmUgQ01OX1BMTFNNMF9VU0VSX0RFRl9DVFJMICAgICAgICAweDAwMmYKPiArI2RlZmlu ZSBDTU5fUFNNX0NMS19DVFJMICAgICAgICAgICAgICAgIDB4MDA2MQo+ICsjZGVmaW5lIENNTl9Q TEwwX1ZDT0NBTF9TVEFSVCAgICAgICAgICAgMHgwMDgxCj4gKyNkZWZpbmUgQ01OX1BMTDBfVkNP Q0FMX0lOSVRfVE1SICAgICAgICAweDAwODQKPiArI2RlZmluZSBDTU5fUExMMF9WQ09DQUxfSVRF Ul9UTVIgICAgICAgIDB4MDA4NQo+ICsjZGVmaW5lIENNTl9QTEwwX0lOVERJViAgICAgICAgICAg ICAgICAgMHgwMDk0Cj4gKyNkZWZpbmUgQ01OX1BMTDBfRlJBQ0RJViAgICAgICAgICAgICAgICAw eDAwOTUKPiArI2RlZmluZSBDTU5fUExMMF9ISUdIX1RIUiAgICAgICAgICAgICAgIDB4MDA5Ngo+ ICsjZGVmaW5lIENNTl9QTEwwX0RTTV9ESUFHICAgICAgICAgICAgICAgMHgwMDk3Cj4gKyNkZWZp bmUgQ01OX1BMTDBfU1NfQ1RSTDIgICAgICAgICAgICAgICAweDAwOTkKPiArI2RlZmluZSBDTU5f SUNBTF9JTklUX1RNUiAgICAgICAgICAgICAgIDB4MDBjNAo+ICsjZGVmaW5lIENNTl9JQ0FMX0lU RVJfVE1SICAgICAgICAgICAgICAgMHgwMGM1Cj4gKyNkZWZpbmUgQ01OX1JYQ0FMX0lOSVRfVE1S ICAgICAgICAgICAgICAweDAwZDQKPiArI2RlZmluZSBDTU5fUlhDQUxfSVRFUl9UTVIgICAgICAg ICAgICAgIDB4MDBkNQo+ICsjZGVmaW5lIENNTl9UWFBVQ0FMX0lOSVRfVE1SICAgICAgICAgICAg MHgwMGU0Cj4gKyNkZWZpbmUgQ01OX1RYUFVDQUxfSVRFUl9UTVIgICAgICAgICAgICAweDAwZTUK PiArI2RlZmluZSBDTU5fVFhQRENBTF9JTklUX1RNUiAgICAgICAgICAgIDB4MDBmNAo+ICsjZGVm aW5lIENNTl9UWFBEQ0FMX0lURVJfVE1SICAgICAgICAgICAgMHgwMGY1Cj4gKyNkZWZpbmUgQ01O X0lDQUxfQURKX0lOSVRfVE1SICAgICAgICAgICAweDAxMDIKPiArI2RlZmluZSBDTU5fSUNBTF9B REpfSVRFUl9UTVIgICAgICAgICAgIDB4MDEwMwo+ICsjZGVmaW5lIENNTl9SWF9BREpfSU5JVF9U TVIgICAgICAgICAgICAgMHgwMTA2Cj4gKyNkZWZpbmUgQ01OX1JYX0FESl9JVEVSX1RNUiAgICAg ICAgICAgICAweDAxMDcKPiArI2RlZmluZSBDTU5fVFhQVV9BREpfSU5JVF9UTVIgICAgICAgICAg IDB4MDEwYQo+ICsjZGVmaW5lIENNTl9UWFBVX0FESl9JVEVSX1RNUiAgICAgICAgICAgMHgwMTBi Cj4gKyNkZWZpbmUgQ01OX1RYUERfQURKX0lOSVRfVE1SICAgICAgICAgICAweDAxMGUKPiArI2Rl ZmluZSBDTU5fVFhQRF9BREpfSVRFUl9UTVIgICAgICAgICAgIDB4MDEwZgo+ICsjZGVmaW5lIENN Tl9ESUFHX1BMTDBfRkJIX09WUkQgICAgICAgICAgMHgwMWMwCj4gKyNkZWZpbmUgQ01OX0RJQUdf UExMMF9GQkxfT1ZSRCAgICAgICAgICAweDAxYzEKPiArI2RlZmluZSBDTU5fRElBR19QTEwwX09W UkQgICAgICAgICAgICAgIDB4MDFjMgo+ICsjZGVmaW5lIENNTl9ESUFHX1BMTDBfVEVTVF9NT0RF ICAgICAgICAgMHgwMWM0Cj4gKyNkZWZpbmUgQ01OX0RJQUdfUExMMF9WMklfVFVORSAgICAgICAg ICAweDAxYzUKPiArI2RlZmluZSBDTU5fRElBR19QTEwwX0NQX1RVTkUgICAgICAgICAgIDB4MDFj Ngo+ICsjZGVmaW5lIENNTl9ESUFHX1BMTDBfTEZfUFJPRyAgICAgICAgICAgMHgwMWM3Cj4gKyNk ZWZpbmUgQ01OX0RJQUdfUExMMF9QVEFUSVNfVFVORTEgICAgICAweDAxYzgKPiArI2RlZmluZSBD TU5fRElBR19QTEwwX1BUQVRJU19UVU5FMiAgICAgIDB4MDFjOQo+ICsjZGVmaW5lIENNTl9ESUFH X0hTQ0xLX1NFTCAgICAgICAgICAgICAgMHgwMWUwCj4gKyNkZWZpbmUgQ01OX0RJQUdfUEVSX0NB TF9BREogICAgICAgICAgICAweDAxZWMKPiArI2RlZmluZSBDTU5fRElBR19DQUxfQ1RSTCAgICAg ICAgICAgICAgIDB4MDFlZAo+ICsjZGVmaW5lIENNTl9ESUFHX0FDWUEgICAgICAgICAgICAgICAg ICAgMHgwMWZmCj4gKyNkZWZpbmUgWENWUl9QU01fUkNUUkwgICAgICAgICAgICAgICAgICAweDQw MDEKPiArI2RlZmluZSBYQ1ZSX1BTTV9DQUxfVE1SICAgICAgICAgICAgICAgIDB4NDAwMgo+ICsj ZGVmaW5lIFhDVlJfUFNNX0EwSU5fVE1SICAgICAgICAgICAgICAgMHg0MDAzCj4gKyNkZWZpbmUg VFhfVFhDQ19DQUxfU0NMUl9NVUxUXzAgICAgICAgICAweDQwNDcKPiArI2RlZmluZSBUWF9UWEND X0NQT1NUX01VTFRfMDBfMCAgICAgICAgIDB4NDA0Ywo+ICsjZGVmaW5lIFhDVlJfRElBR19QTExE UkNfQ1RSTCAgICAgICAgICAgMHg0MGUwCj4gKyNkZWZpbmUgWENWUl9ESUFHX1BMTERSQ19DVFJM ICAgICAgICAgICAweDQwZTAKPiArI2RlZmluZSBYQ1ZSX0RJQUdfSFNDTEtfU0VMICAgICAgICAg ICAgIDB4NDBlMQo+ICsjZGVmaW5lIFhDVlJfRElBR19MQU5FX0ZDTV9FTl9NR05fVE1SICAgMHg0 MGYyCj4gKyNkZWZpbmUgVFhfUFNDX0EwICAgICAgICAgICAgICAgICAgICAgICAweDQxMDAKPiAr I2RlZmluZSBUWF9QU0NfQTEgICAgICAgICAgICAgICAgICAgICAgIDB4NDEwMQo+ICsjZGVmaW5l IFRYX1BTQ19BMiAgICAgICAgICAgICAgICAgICAgICAgMHg0MTAyCj4gKyNkZWZpbmUgVFhfUFND X0EzICAgICAgICAgICAgICAgICAgICAgICAweDQxMDMKPiArI2RlZmluZSBUWF9SQ1ZERVRfRU5f VE1SICAgICAgICAgICAgICAgIDB4NDEyMgo+ICsjZGVmaW5lIFRYX1JDVkRFVF9TVF9UTVIgICAg ICAgICAgICAgICAgMHg0MTIzCj4gKyNkZWZpbmUgVFhfRElBR19CR1JFRl9QUkVEUlZfREVMQVkg ICAgICAweDQxZTcKPiArI2RlZmluZSBUWF9ESUFHX0JHUkVGX1BSRURSVl9ERUxBWSAgICAgIDB4 NDFlNwo+ICsjZGVmaW5lIFRYX0RJQUdfQUNZQV8wICAgICAgICAgICAgICAgICAgMHg0MWZmCj4g KyNkZWZpbmUgVFhfRElBR19BQ1lBXzEgICAgICAgICAgICAgICAgICAweDQzZmYKPiArI2RlZmlu ZSBUWF9ESUFHX0FDWUFfMiAgICAgICAgICAgICAgICAgIDB4NDVmZgo+ICsjZGVmaW5lIFRYX0RJ QUdfQUNZQV8zICAgICAgICAgICAgICAgICAgMHg0N2ZmCj4gKyNkZWZpbmUgVFhfQU5BX0NUUkxf UkVHXzEgICAgICAgICAgICAgICAweDUwMjAKPiArI2RlZmluZSBUWF9BTkFfQ1RSTF9SRUdfMiAg ICAgICAgICAgICAgIDB4NTAyMQo+ICsjZGVmaW5lIFRYX0RJR19DVFJMX1JFR18xICAgICAgICAg ICAgICAgMHg1MDIzCj4gKyNkZWZpbmUgVFhfRElHX0NUUkxfUkVHXzIgICAgICAgICAgICAgICAw eDUwMjQKPiArI2RlZmluZSBUWERBX0NZQV9BVVhEQV9DWUEgICAgICAgICAgICAgIDB4NTAyNQo+ ICsjZGVmaW5lIFRYX0FOQV9DVFJMX1JFR18zICAgICAgICAgICAgICAgMHg1MDI2Cj4gKyNkZWZp bmUgVFhfQU5BX0NUUkxfUkVHXzQgICAgICAgICAgICAgICAweDUwMjcKPiArI2RlZmluZSBUWF9B TkFfQ1RSTF9SRUdfNSAgICAgICAgICAgICAgIDB4NTAyOQo+ICsjZGVmaW5lIFJYX1BTQ19BMCAg ICAgICAgICAgICAgICAgICAgICAgMHg4MDAwCj4gKyNkZWZpbmUgUlhfUFNDX0NBTCAgICAgICAg ICAgICAgICAgICAgICAweDgwMDYKPiArI2RlZmluZSBQSFlfSERQX01PREVfQ1RSTCAgICAgICAg ICAgICAgIDB4YzAwOAo+ICsjZGVmaW5lIFBIWV9IRFBfQ0xLX0NUTCAgICAgICAgICAgICAgICAg MHhjMDA5Cj4gKyNkZWZpbmUgUEhZX1BNQV9DTU5fQ1RSTDEgICAgICAgICAgICAgICAweGM4MDAK PiArCj4gKyNkZWZpbmUgUkVGX0NMS18yN01IWgkJMjcwMDAwMDAKPiArCj4gK2VudW0gZHBfbGlu a19yYXRlIHsKPiArCVJBVEVfMV82ID0gMTYyMDAwLAo+ICsJUkFURV8yXzEgPSAyMTYwMDAsCj4g KwlSQVRFXzJfNCA9IDI0MzAwMCwKPiArCVJBVEVfMl83ID0gMjcwMDAwLAo+ICsJUkFURV8zXzIg PSAzMjQwMDAsCj4gKwlSQVRFXzRfMyA9IDQzMjAwMCwKPiArCVJBVEVfNV80ID0gNTQwMDAwLAo+ ICsJUkFURV84XzEgPSA4MTAwMDAsCj4gK307Cj4gKwo+ICsjZGVmaW5lIE1BWF9MSU5LX1JBVEUg UkFURV81XzQKPiArCj4gK3N0cnVjdCBwaHlfcGxsX3JlZyB7Cj4gKwl1MTYgdmFsWzddOwo+ICsJ dTMyIGFkZHI7Cj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHBoeV9wbGxfcmVnIHBo eV9wbGxfMjdtX2NmZ1tdID0gewo+ICsJLyogIDEuNjIgICAgMi4xNiAgICAyLjQzICAgIDIuNyAg ICAgMy4yNCAgICA0LjMyICAgIDUuNCAgICAgIHJlZ2lzdGVyIGFkZHJlc3MgKi8KPiArCXt7IDB4 MDEwZSwgMHgwMTBlLCAweDAxMGUsIDB4MDEwZSwgMHgwMTBlLCAweDAxMGUsIDB4MDEwZSB9LCBD TU5fUExMMF9WQ09DQUxfSU5JVF9UTVIgfSwKPiArCXt7IDB4MDAxYiwgMHgwMDFiLCAweDAwMWIs IDB4MDAxYiwgMHgwMDFiLCAweDAwMWIsIDB4MDAxYiB9LCBDTU5fUExMMF9WQ09DQUxfSVRFUl9U TVIgfSwKPiArCXt7IDB4MzBiOSwgMHgzMDg3LCAweDMwOTYsIDB4MzBiNCwgMHgzMGI5LCAweDMw ODcsIDB4MzBiNCB9LCBDTU5fUExMMF9WQ09DQUxfU1RBUlQgfSwKPiArCXt7IDB4MDA3NywgMHgw MDlmLCAweDAwYjMsIDB4MDBjNywgMHgwMDc3LCAweDAwOWYsIDB4MDBjNyB9LCBDTU5fUExMMF9J TlRESVYgfSwKPiArCXt7IDB4ZjlkYSwgMHhmN2NkLCAweGY2YzcsIDB4ZjVjMSwgMHhmOWRhLCAw eGY3Y2QsIDB4ZjVjMSB9LCBDTU5fUExMMF9GUkFDRElWIH0sCj4gKwl7eyAweDAwMWUsIDB4MDAy OCwgMHgwMDJkLCAweDAwMzIsIDB4MDAxZSwgMHgwMDI4LCAweDAwMzIgfSwgQ01OX1BMTDBfSElH SF9USFIgfSwKPiArCXt7IDB4MDAyMCwgMHgwMDIwLCAweDAwMjAsIDB4MDAyMCwgMHgwMDIwLCAw eDAwMjAsIDB4MDAyMCB9LCBDTU5fUExMMF9EU01fRElBRyB9LAo+ICsJe3sgMHgwMDAwLCAweDEw MDAsIDB4MTAwMCwgMHgxMDAwLCAweDAwMDAsIDB4MTAwMCwgMHgxMDAwIH0sIENNTl9QTExTTTBf VVNFUl9ERUZfQ1RSTCB9LAo+ICsJe3sgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAw eDAwMDAsIDB4MDAwMCwgMHgwMDAwIH0sIENNTl9ESUFHX1BMTDBfT1ZSRCB9LAo+ICsJe3sgMHgw MDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwIH0sIENN Tl9ESUFHX1BMTDBfRkJIX09WUkQgfSwKPiArCXt7IDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4 MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCB9LCBDTU5fRElBR19QTEwwX0ZCTF9PVlJEIH0s Cj4gKwl7eyAweDAwMDYsIDB4MDAwNywgMHgwMDA3LCAweDAwMDcsIDB4MDAwNiwgMHgwMDA3LCAw eDAwMDcgfSwgQ01OX0RJQUdfUExMMF9WMklfVFVORSB9LAo+ICsJe3sgMHgwMDQzLCAweDAwNDMs IDB4MDA0MywgMHgwMDQyLCAweDAwNDMsIDB4MDA0MywgMHgwMDQyIH0sIENNTl9ESUFHX1BMTDBf Q1BfVFVORSB9LAo+ICsJe3sgMHgwMDA4LCAweDAwMDgsIDB4MDAwOCwgMHgwMDA4LCAweDAwMDgs IDB4MDAwOCwgMHgwMDA4IH0sIENNTl9ESUFHX1BMTDBfTEZfUFJPRyB9LAo+ICsJe3sgMHgwMTAw LCAweDAwMDEsIDB4MDAwMSwgMHgwMDAxLCAweDAxMDAsIDB4MDAwMSwgMHgwMDAxIH0sIENNTl9E SUFHX1BMTDBfUFRBVElTX1RVTkUxIH0sCj4gKwl7eyAweDAwMDcsIDB4MDAwMSwgMHgwMDAxLCAw eDAwMDEsIDB4MDAwNywgMHgwMDAxLCAweDAwMDEgfSwgQ01OX0RJQUdfUExMMF9QVEFUSVNfVFVO RTIgfSwKPiArCXt7IDB4MDAyMCwgMHgwMDIwLCAweDAwMjAsIDB4MDAyMCwgMHgwMDIwLCAweDAw MjAsIDB4MDAyMCB9LCBDTU5fRElBR19QTEwwX1RFU1RfTU9ERX0sCj4gKwl7eyAweDAwMTYsIDB4 MDAxNiwgMHgwMDE2LCAweDAwMTYsIDB4MDAxNiwgMHgwMDE2LCAweDAwMTYgfSwgQ01OX1BTTV9D TEtfQ1RSTCB9Cj4gK307Cj4gKwo+ICtzdHJ1Y3QgY2Ruc19oZHB0eF9kcF9waHkgewo+ICsJdm9p ZCBfX2lvbWVtICpyZWdzOwkvKiBEUFRYIHJlZ2lzdGVycyBiYXNlICovCj4gKwlzdHJ1Y3QgZGV2 aWNlICpkZXY7Cj4gKwlzdHJ1Y3QgcGh5ICpwaHk7Cj4gKwlzdHJ1Y3QgbXV0ZXggbWJveF9tdXRl eDsJLyogbXV0ZXggdG8gcHJvdGVjdCBtYWlsYm94ICovCj4gKwlzdHJ1Y3QgY2xrICpyZWZfY2xr LCAqYXBiX2NsazsKPiArCXUzMiByZWZfY2xrX3JhdGU7Cj4gKwl1MzIgbnVtX2xhbmVzOwo+ICsJ dTMyIGxpbmtfcmF0ZTsKPiArCWJvb2wgcG93ZXJfdXA7Cj4gK307Cj4gKwo+ICtzdGF0aWMgaW50 IGNkbnNfcGh5X3JlZ193cml0ZShzdHJ1Y3QgY2Ruc19oZHB0eF9kcF9waHkgKmNkbnNfcGh5LCB1 MzIgYWRkciwgdTMyIHZhbCkKPiArewo+ICsJcmV0dXJuIGNkbnNfbWhkcF9yZWdfd3JpdGUoY2Ru c19waHksIEFERFJfUEhZX0FGRSArIChhZGRyIDw8IDIpLCB2YWwpOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgdTMyIGNkbnNfcGh5X3JlZ19yZWFkKHN0cnVjdCBjZG5zX2hkcHR4X2RwX3BoeSAqY2Ruc19w aHksIHUzMiBhZGRyKQo+ICt7Cj4gKwl1MzIgcmVnMzI7Cj4gKwo+ICsJY2Ruc19taGRwX3JlZ19y ZWFkKGNkbnNfcGh5LCBBRERSX1BIWV9BRkUgKyAoYWRkciA8PCAyKSwgJnJlZzMyKTsKPiArCXJl dHVybiByZWczMjsKPiArfQo+ICsKPiArc3RhdGljIGludCBsaW5rX3JhdGVfaW5kZXgodTMyIHJh dGUpCj4gK3sKPiArCXN3aXRjaCAocmF0ZSkgewo+ICsJY2FzZSBSQVRFXzFfNjoKPiArCQlyZXR1 cm4gMDsKPiArCWNhc2UgUkFURV8yXzE6Cj4gKwkJcmV0dXJuIDE7Cj4gKwljYXNlIFJBVEVfMl80 Ogo+ICsJCXJldHVybiAyOwo+ICsJY2FzZSBSQVRFXzJfNzoKPiArCQlyZXR1cm4gMzsKPiArCWNh c2UgUkFURV8zXzI6Cj4gKwkJcmV0dXJuIDQ7Cj4gKwljYXNlIFJBVEVfNF8zOgo+ICsJCXJldHVy biA1Owo+ICsJY2FzZSBSQVRFXzVfNDoKPiArCQlyZXR1cm4gNjsKPiArCWRlZmF1bHQ6Cj4gKwkJ cmV0dXJuIC0xOwo+ICsJfQo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGhkcHR4X2RwX2Nsa19lbmFi bGUoc3RydWN0IGNkbnNfaGRwdHhfZHBfcGh5ICpjZG5zX3BoeSkKPiArewo+ICsJc3RydWN0IGRl dmljZSAqZGV2ID0gY2Ruc19waHktPmRldjsKPiArCXUzMiByZWZfY2xrX3JhdGU7Cj4gKwlpbnQg cmV0Owo+ICsKPiArCWNkbnNfcGh5LT5yZWZfY2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgInJlZiIp Owo+ICsJaWYgKElTX0VSUihjZG5zX3BoeS0+cmVmX2NsaykpIHsKPiArCQlkZXZfZXJyKGRldiwg InBoeSByZWYgY2xvY2sgbm90IGZvdW5kXG4iKTsKPiArCQlyZXR1cm4gUFRSX0VSUihjZG5zX3Bo eS0+cmVmX2Nsayk7Cj4gKwl9Cj4gKwo+ICsJY2Ruc19waHktPmFwYl9jbGsgPSBkZXZtX2Nsa19n ZXQoZGV2LCAiYXBiIik7Cj4gKwlpZiAoSVNfRVJSKGNkbnNfcGh5LT5hcGJfY2xrKSkgewo+ICsJ CWRldl9lcnIoZGV2LCAicGh5IGFwYiBjbG9jayBub3QgZm91bmRcbiIpOwo+ICsJCXJldHVybiBQ VFJfRVJSKGNkbnNfcGh5LT5hcGJfY2xrKTsKPiArCX0KPiArCj4gKwlyZXQgPSBjbGtfcHJlcGFy ZV9lbmFibGUoY2Ruc19waHktPnJlZl9jbGspOwo+ICsJaWYgKHJldCkgewo+ICsJCWRldl9lcnIo Y2Ruc19waHktPmRldiwgIkZhaWxlZCB0byBwcmVwYXJlIHJlZiBjbG9ja1xuIik7Cj4gKwkJcmV0 dXJuIHJldDsKPiArCX0KPiArCj4gKwlyZWZfY2xrX3JhdGUgPSBjbGtfZ2V0X3JhdGUoY2Ruc19w aHktPnJlZl9jbGspOwo+ICsJaWYgKCFyZWZfY2xrX3JhdGUpIHsKPiArCQlkZXZfZXJyKGNkbnNf cGh5LT5kZXYsICJGYWlsZWQgdG8gZ2V0IHJlZiBjbG9jayByYXRlXG4iKTsKPiArCQlnb3RvIGVy cl9yZWZfY2xrOwo+ICsJfQo+ICsKPiArCWlmIChyZWZfY2xrX3JhdGUgPT0gUkVGX0NMS18yN01I Wikgewo+ICsJCWNkbnNfcGh5LT5yZWZfY2xrX3JhdGUgPSByZWZfY2xrX3JhdGU7Cj4gKwl9IGVs c2Ugewo+ICsJCWRldl9lcnIoY2Ruc19waHktPmRldiwgIk5vdCBzdXBwb3J0IFJlZiBDbG9jayBS YXRlKCVkSHopXG4iLCByZWZfY2xrX3JhdGUpOwo+ICsJCWdvdG8gZXJyX3JlZl9jbGs7Cj4gKwl9 Cj4gKwo+ICsJcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKGNkbnNfcGh5LT5hcGJfY2xrKTsKPiAr CWlmIChyZXQpIHsKPiArCQlkZXZfZXJyKGNkbnNfcGh5LT5kZXYsICJGYWlsZWQgdG8gcHJlcGFy ZSBhcGIgY2xvY2tcbiIpOwo+ICsJCWdvdG8gZXJyX3JlZl9jbGs7Cj4gKwl9Cj4gKwo+ICsJcmV0 dXJuIDA7Cj4gKwo+ICtlcnJfcmVmX2NsazoKPiArCWNsa19kaXNhYmxlX3VucHJlcGFyZShjZG5z X3BoeS0+cmVmX2Nsayk7Cj4gKwlyZXR1cm4gLUVJTlZBTDsKPiArfQo+ICsKPiArc3RhdGljIHZv aWQgaGRwdHhfZHBfY2xrX2Rpc2FibGUoc3RydWN0IGNkbnNfaGRwdHhfZHBfcGh5ICpjZG5zX3Bo eSkKPiArewo+ICsJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGNkbnNfcGh5LT5yZWZfY2xrKTsKPiAr CWNsa19kaXNhYmxlX3VucHJlcGFyZShjZG5zX3BoeS0+YXBiX2Nsayk7Cj4gK30KPiArCj4gK3N0 YXRpYyB2b2lkIGhkcHR4X2RwX2F1eF9jZmcoc3RydWN0IGNkbnNfaGRwdHhfZHBfcGh5ICpjZG5z X3BoeSkKPiArewo+ICsJLyogUG93ZXIgdXAgQXV4ICovCj4gKwljZG5zX3BoeV9yZWdfd3JpdGUo Y2Ruc19waHksIFRYREFfQ1lBX0FVWERBX0NZQSwgMSk7Cj4gKwo+ICsJY2Ruc19waHlfcmVnX3dy aXRlKGNkbnNfcGh5LCBUWF9ESUdfQ1RSTF9SRUdfMSwgMHgzKTsKPiArCW5kZWxheSgxNTApOwo+ ICsJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBUWF9ESUdfQ1RSTF9SRUdfMiwgMzYpOwo+ ICsJbmRlbGF5KDE1MCk7Cj4gKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX0FOQV9D VFJMX1JFR18yLCAweDAxMDApOwo+ICsJbmRlbGF5KDE1MCk7Cj4gKwljZG5zX3BoeV9yZWdfd3Jp dGUoY2Ruc19waHksIFRYX0FOQV9DVFJMX1JFR18yLCAweDAzMDApOwo+ICsJbmRlbGF5KDE1MCk7 Cj4gKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX0FOQV9DVFJMX1JFR18zLCAweDAw MDApOwo+ICsJbmRlbGF5KDE1MCk7Cj4gKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRY X0FOQV9DVFJMX1JFR18xLCAweDIwMDgpOwo+ICsJbmRlbGF5KDE1MCk7Cj4gKwljZG5zX3BoeV9y ZWdfd3JpdGUoY2Ruc19waHksIFRYX0FOQV9DVFJMX1JFR18xLCAweDIwMTgpOwo+ICsJbmRlbGF5 KDE1MCk7Cj4gKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX0FOQV9DVFJMX1JFR18x LCAweGEwMTgpOwo+ICsJbmRlbGF5KDE1MCk7Cj4gKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19w aHksIFRYX0FOQV9DVFJMX1JFR18yLCAweDAzMGMpOwo+ICsJbmRlbGF5KDE1MCk7Cj4gKwljZG5z X3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX0FOQV9DVFJMX1JFR181LCAweDAwMDApOwo+ICsJ bmRlbGF5KDE1MCk7Cj4gKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX0FOQV9DVFJM X1JFR180LCAweDEwMDEpOwo+ICsJbmRlbGF5KDE1MCk7Cj4gKwljZG5zX3BoeV9yZWdfd3JpdGUo Y2Ruc19waHksIFRYX0FOQV9DVFJMX1JFR18xLCAweGEwOTgpOwo+ICsJbmRlbGF5KDE1MCk7Cj4g KwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX0FOQV9DVFJMX1JFR18xLCAweGExOTgp Owo+ICsJbmRlbGF5KDE1MCk7Cj4gKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX0FO QV9DVFJMX1JFR18yLCAweDAzMGQpOwo+ICsJbmRlbGF5KDE1MCk7Cj4gKwljZG5zX3BoeV9yZWdf d3JpdGUoY2Ruc19waHksIFRYX0FOQV9DVFJMX1JFR18yLCAweDAzMGYpOwo+ICt9Cj4gKwo+ICsv KiBQTUEgY29tbW9uIGNvbmZpZ3VyYXRpb24gZm9yIDI3TUh6ICovCj4gK3N0YXRpYyB2b2lkIGhk cHR4X2RwX3BoeV9wbWFfY21uX2NmZ18yN21oeihzdHJ1Y3QgY2Ruc19oZHB0eF9kcF9waHkgKmNk bnNfcGh5KQo+ICt7Cj4gKwl1MzIgbnVtX2xhbmVzID0gY2Ruc19waHktPm51bV9sYW5lczsKPiAr CXUxNiB2YWw7Cj4gKwlpbnQgazsKPiArCj4gKwl2YWwgPSBjZG5zX3BoeV9yZWdfcmVhZChjZG5z X3BoeSwgUEhZX1BNQV9DTU5fQ1RSTDEpOwo+ICsJdmFsICY9IDB4ZmZmNzsKPiArCXZhbCB8PSAw eDAwMDg7CgptYWdpYyBudW1iZXJzPyBhbHNvIHBscyB1c2UgRklFTERfUFJFKCkgdG8gc2V0IGJp dGZpZWxkcwoKPiArCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgUEhZX1BNQV9DTU5fQ1RS TDEsIHZhbCk7Cj4gKwo+ICsJLyogU3RhcnR1cCBzdGF0ZSBtYWNoaW5lIHJlZ2lzdGVycyAqLwo+ ICsJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fU1NNX0JJQVNfVE1SLCAweDAwODcp Owo+ICsJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fUExMU00wX1BMTEVOX1RNUiwg MHgwMDFiKTsKPiArCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgQ01OX1BMTFNNMF9QTExQ UkVfVE1SLCAweDAwMzYpOwo+ICsJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fUExM U00wX1BMTFZSRUZfVE1SLCAweDAwMWIpOwo+ICsJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5 LCBDTU5fUExMU00wX1BMTExPQ0tfVE1SLCAweDAwNmMpOwo+ICsKPiArCS8qIEN1cnJlbnQgY2Fs aWJyYXRpb24gcmVnaXN0ZXJzICovCj4gKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENN Tl9JQ0FMX0lOSVRfVE1SLCAweDAwNDQpOwo+ICsJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5 LCBDTU5fSUNBTF9JVEVSX1RNUiwgMHgwMDA2KTsKPiArCWNkbnNfcGh5X3JlZ193cml0ZShjZG5z X3BoeSwgQ01OX0lDQUxfQURKX0lOSVRfVE1SLCAweDAwMjIpOwo+ICsJY2Ruc19waHlfcmVnX3dy aXRlKGNkbnNfcGh5LCBDTU5fSUNBTF9BREpfSVRFUl9UTVIsIDB4MDAwNik7Cj4gKwo+ICsJLyog UmVzaXN0b3IgY2FsaWJyYXRpb24gcmVnaXN0ZXJzICovCj4gKwljZG5zX3BoeV9yZWdfd3JpdGUo Y2Ruc19waHksIENNTl9UWFBVQ0FMX0lOSVRfVE1SLCAweDAwMjIpOwo+ICsJY2Ruc19waHlfcmVn X3dyaXRlKGNkbnNfcGh5LCBDTU5fVFhQVUNBTF9JVEVSX1RNUiwgMHgwMDA2KTsKPiArCWNkbnNf cGh5X3JlZ193cml0ZShjZG5zX3BoeSwgQ01OX1RYUFVfQURKX0lOSVRfVE1SLCAweDAwMjIpOwo+ ICsJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fVFhQVV9BREpfSVRFUl9UTVIsIDB4 MDAwNik7Cj4gKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9UWFBEQ0FMX0lOSVRf VE1SLCAweDAwMjIpOwo+ICsJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fVFhQRENB TF9JVEVSX1RNUiwgMHgwMDA2KTsKPiArCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgQ01O X1RYUERfQURKX0lOSVRfVE1SLCAweDAwMjIpOwo+ICsJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNf cGh5LCBDTU5fVFhQRF9BREpfSVRFUl9UTVIsIDB4MDAwNik7Cj4gKwljZG5zX3BoeV9yZWdfd3Jp dGUoY2Ruc19waHksIENNTl9SWENBTF9JTklUX1RNUiwgMHgwMDIyKTsKPiArCWNkbnNfcGh5X3Jl Z193cml0ZShjZG5zX3BoeSwgQ01OX1JYQ0FMX0lURVJfVE1SLCAweDAwMDYpOwo+ICsJY2Ruc19w aHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fUlhfQURKX0lOSVRfVE1SLCAweDAwMjIpOwo+ICsJ Y2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fUlhfQURKX0lURVJfVE1SLCAweDAwMDYp Owo+ICsKPiArCWZvciAoayA9IDA7IGsgPCBudW1fbGFuZXM7IGsgPSBrICsgMSkgewo+ICsJCS8q IFBvd2VyIHN0YXRlIG1hY2hpbmUgcmVnaXN0ZXJzICovCj4gKwkJY2Ruc19waHlfcmVnX3dyaXRl KGNkbnNfcGh5LCBYQ1ZSX1BTTV9DQUxfVE1SICB8IChrIDw8IDkpLCAweDAxNmQpOwo+ICsJCWNk bnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgWENWUl9QU01fQTBJTl9UTVIgfCAoayA8PCA5KSwg MHgwMTZkKTsKPiArCQkvKiBUcmFuc2NlaXZlciBjb250cm9sIGFuZCBkaWFnbm9zdGljIHJlZ2lz dGVycyAqLwo+ICsJCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgWENWUl9ESUFHX0xBTkVf RkNNX0VOX01HTl9UTVIgfCAoayA8PCA5KSwgMHgwMGEyKTsKPiArCQljZG5zX3BoeV9yZWdfd3Jp dGUoY2Ruc19waHksIFRYX0RJQUdfQkdSRUZfUFJFRFJWX0RFTEFZIHwgKGsgPDwgOSksIDB4MDA5 Nyk7Cj4gKwkJLyogVHJhbnNtaXR0ZXIgcmVjZWl2ZXIgZGV0ZWN0IHJlZ2lzdGVycyAqLwo+ICsJ CWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfUkNWREVUX0VOX1RNUiB8IChrIDw8IDkp LCAweDBhOGMpOwo+ICsJCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfUkNWREVUX1NU X1RNUiB8IChrIDw8IDkpLCAweDAwMzYpOwo+ICsJfQo+ICsKPiArCWNkbnNfcGh5X3JlZ193cml0 ZShjZG5zX3BoeSwgVFhfRElBR19BQ1lBXzAsIDEpOwo+ICsJY2Ruc19waHlfcmVnX3dyaXRlKGNk bnNfcGh5LCBUWF9ESUFHX0FDWUFfMSwgMSk7Cj4gKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19w aHksIFRYX0RJQUdfQUNZQV8yLCAxKTsKPiArCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwg VFhfRElBR19BQ1lBXzMsIDEpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBoZHB0eF9kcF9waHlf cG1hX2Ntbl9wbGwwXzI3bWh6KHN0cnVjdCBjZG5zX2hkcHR4X2RwX3BoeSAqY2Ruc19waHkpCj4g K3sKPiArCXUzMiBudW1fbGFuZXMgPSBjZG5zX3BoeS0+bnVtX2xhbmVzOwo+ICsJdTMyIGxpbmtf cmF0ZSA9IGNkbnNfcGh5LT5saW5rX3JhdGU7Cj4gKwl1MTYgdmFsOwo+ICsJaW50IGluZGV4LCBp LCBrOwo+ICsKPiArCS8qIERQIFBMTCBkYXRhIHJhdGUgMC8xIGNsb2NrIGRpdmlkZXIgdmFsdWUg Ki8KPiArCXZhbCA9IGNkbnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5LCBQSFlfSERQX0NMS19DVEwp Owo+ICsJdmFsICY9IDB4MDBmZjsKPiArCWlmIChsaW5rX3JhdGUgPD0gUkFURV8yXzcpCj4gKwkJ dmFsIHw9IDB4MjQwMDsKPiArCWVsc2UKPiArCQl2YWwgfD0gMHgxMjAwOwoKbW9yZSBtYWdpYz8K Cj4gKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFBIWV9IRFBfQ0xLX0NUTCwgdmFsKTsK PiArCj4gKwkvKiBIaWdoIHNwZWVkIGNsb2NrIDAvMSBkaXYgKi8KPiArCXZhbCA9IGNkbnNfcGh5 X3JlZ19yZWFkKGNkbnNfcGh5LCBDTU5fRElBR19IU0NMS19TRUwpOwo+ICsJdmFsICY9IDB4ZmZj YzsKCmFuZCBoZXJlCgo+ICsJaWYgKGxpbmtfcmF0ZSA8PSBSQVRFXzJfNykKPiArCQl2YWwgfD0g MHgwMDExOwo+ICsJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fRElBR19IU0NMS19T RUwsIHZhbCk7Cj4gKwo+ICsJZm9yIChrID0gMDsgayA8IG51bV9sYW5lczsgaysrKSB7Cj4gKwkJ dmFsID0gY2Ruc19waHlfcmVnX3JlYWQoY2Ruc19waHksIChYQ1ZSX0RJQUdfSFNDTEtfU0VMIHwg KGsgPDwgOSkpKTsKPiArCQl2YWwgPSB2YWwgJiAweGNmZmY7Cj4gKwkJaWYgKGxpbmtfcmF0ZSA8 PSBSQVRFXzJfNykKPiArCQkJdmFsIHw9IDB4MTAwMDsKPiArCQljZG5zX3BoeV9yZWdfd3JpdGUo Y2Ruc19waHksIChYQ1ZSX0RJQUdfSFNDTEtfU0VMIHwgKGsgPDwgOSkpLCB2YWwpOwo+ICsJfQo+ ICsKPiArCS8qIERQIFBIWSBQTEwgMjdNSHogY29uZmlndXJhdGlvbiAqLwo+ICsJaW5kZXggPSBs aW5rX3JhdGVfaW5kZXgobGlua19yYXRlKTsKPiArCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpF KHBoeV9wbGxfMjdtX2NmZyk7IGkrKykKPiArCQljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHks IHBoeV9wbGxfMjdtX2NmZ1tpXS5hZGRyLAo+ICsJCQkJICAgcGh5X3BsbF8yN21fY2ZnW2ldLnZh bFtpbmRleF0pOwo+ICsKPiArCS8qIFRyYW5zY2VpdmVyIGNvbnRyb2wgYW5kIGRpYWdub3N0aWMg cmVnaXN0ZXJzICovCj4gKwlmb3IgKGsgPSAwOyBrIDwgbnVtX2xhbmVzOyBrKyspIHsKPiArCQl2 YWwgPSBjZG5zX3BoeV9yZWdfcmVhZChjZG5zX3BoeSwgKFhDVlJfRElBR19QTExEUkNfQ1RSTCB8 IChrIDw8IDkpKSk7Cj4gKwkJdmFsID0gdmFsICYgMHg4ZmZmOwo+ICsJCWlmIChsaW5rX3JhdGUg PD0gUkFURV8yXzcpCj4gKwkJCXZhbCB8PSAweDIwMDA7Cj4gKwkJZWxzZQo+ICsJCQl2YWwgfD0g MHgxMDAwOwo+ICsJCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgKFhDVlJfRElBR19QTExE UkNfQ1RSTCB8IChrIDw8IDkpKSwgdmFsKTsKPiArCX0KPiArCj4gKwlmb3IgKGsgPSAwOyBrIDwg bnVtX2xhbmVzOyBrID0gayArIDEpIHsKPiArCQkvKiBQb3dlciBzdGF0ZSBtYWNoaW5lIHJlZ2lz dGVycyAqLwo+ICsJCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgKFhDVlJfUFNNX1JDVFJM IHwgKGsgPDwgOSkpLCAweGJlZmMpOwo+ICsJCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwg KFRYX1BTQ19BMCB8IChrIDw8IDkpKSwgMHg2Nzk5KTsKPiArCQljZG5zX3BoeV9yZWdfd3JpdGUo Y2Ruc19waHksIChUWF9QU0NfQTEgfCAoayA8PCA5KSksIDB4Njc5OCk7Cj4gKwkJY2Ruc19waHlf cmVnX3dyaXRlKGNkbnNfcGh5LCAoVFhfUFNDX0EyIHwgKGsgPDwgOSkpLCAweDAwOTgpOwo+ICsJ CWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgKFRYX1BTQ19BMyB8IChrIDw8IDkpKSwgMHgw MDk4KTsKPiArCQkvKiBSZWNlaXZlciBjYWxpYnJhdGlvbiBwb3dlciBzdGF0ZSBkZWZpbml0aW9u IHJlZ2lzdGVyICovCj4gKwkJdmFsID0gY2Ruc19waHlfcmVnX3JlYWQoY2Ruc19waHksIFJYX1BT Q19DQUwgfCAoayA8PCA5KSk7Cj4gKwkJdmFsICY9IDB4ZmZiYjsKPiArCQljZG5zX3BoeV9yZWdf d3JpdGUoY2Ruc19waHksIChSWF9QU0NfQ0FMIHwgKGsgPDwgOSkpLCB2YWwpOwo+ICsJCXZhbCA9 IGNkbnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5LCBSWF9QU0NfQTAgfCAoayA8PCA5KSk7Cj4gKwkJ dmFsICY9IDB4ZmZiYjsKPiArCQljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIChSWF9QU0Nf QTAgfCAoayA8PCA5KSksIHZhbCk7Cj4gKwl9Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGhkcHR4 X2RwX3BoeV9yZWZfY2xvY2tfdHlwZShzdHJ1Y3QgY2Ruc19oZHB0eF9kcF9waHkgKmNkbnNfcGh5 KQo+ICt7Cj4gKwl1MzIgdmFsOwo+ICsKPiArCXZhbCA9IGNkbnNfcGh5X3JlZ19yZWFkKGNkbnNf cGh5LCBQSFlfUE1BX0NNTl9DVFJMMSk7Cj4gKwl2YWwgJj0gMHhmZjhmOwo+ICsJLyoKPiArCSAq IHNpbmdsZSBlbmRlZCByZWZlcmVuY2UgY2xvY2sgKHZhbCB8PSAweDAwMzApOwo+ICsJICogZGlm ZmVyZW50aWFsIGNsb2NrICAodmFsIHw9IDB4MDAwMCk7Cj4gKwkgKgo+ICsJICogZm9yIGRpZmZl cmVudGlhbCBjbG9jayBvbiB0aGUgcmVmY2xrX3AgYW5kCj4gKwkgKiByZWZjbGtfbSBvZmYgY2hp cCBwaW5zOiBDTU5fRElBR19BQ1lBWzhdPTEnYjEKPiArCSAqIGNkbnNfcGh5X3JlZ193cml0ZShj ZG5zX3BoeSwgQ01OX0RJQUdfQUNZQSwgMHgwMTAwKTsKPiArCSAqLwo+ICsJdmFsIHw9IDB4MDAz MDsKPiArCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgUEhZX1BNQV9DTU5fQ1RSTDEsIHZh bCk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgaGRwdHhfZHBfcGh5X3Bvd2VyX3VwKHN0cnVjdCBj ZG5zX2hkcHR4X2RwX3BoeSAqY2Ruc19waHkpCj4gK3sKPiArCXUzMiB2YWwsIGk7Cj4gKwo+ICsJ LyogRW5hYmxlIEhEUCBQTEzigJlzIGZvciBoaWdoIHNwZWVkIGNsb2NrcyAqLwo+ICsJdmFsID0g Y2Ruc19waHlfcmVnX3JlYWQoY2Ruc19waHksIFBIWV9IRFBfQ0xLX0NUTCk7Cj4gKwl2YWwgfD0g KDEgPDwgMCk7Cj4gKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFBIWV9IRFBfQ0xLX0NU TCwgdmFsKTsKPiArCS8qIFdhaXQgZm9yIFBMTCByZWFkeSBBQ0sgKi8KPiArCWZvciAoaSA9IDA7 IGkgPCAxMDsgaSsrKSB7Cj4gKwkJdmFsID0gY2Ruc19waHlfcmVnX3JlYWQoY2Ruc19waHksIFBI WV9IRFBfQ0xLX0NUTCk7Cj4gKwkJaWYgKHZhbCAmICgxIDw8IDEpKQo+ICsJCQlicmVhazsKPiAr CQltc2xlZXAoMjApOwo+ICsJfQo+ICsJaWYgKGkgPT0gMTApIHsKPiArCQlkZXZfZXJyKGNkbnNf cGh5LT5kZXYsICJXYWl0IFBMTCBBY2sgZmFpbGVkXG4iKTsKPiArCQlyZXR1cm4gLTE7Cj4gKwl9 Cj4gKwo+ICsJLyogRW5hYmxlIEhEUCBQTEzigJlzIGRhdGEgcmF0ZSBhbmQgZnVsbCByYXRlIGNs b2NrcyBvdXQgb2YgUE1BLiAqLwo+ICsJdmFsID0gY2Ruc19waHlfcmVnX3JlYWQoY2Ruc19waHks IFBIWV9IRFBfQ0xLX0NUTCk7Cj4gKwl2YWwgfD0gKDEgPDwgMik7Cj4gKwljZG5zX3BoeV9yZWdf d3JpdGUoY2Ruc19waHksIFBIWV9IRFBfQ0xLX0NUTCwgdmFsKTsKPiArCS8qIFdhaXQgZm9yIFBM TCBjbG9jayBlbmFibGUgQUNLICovCj4gKwlmb3IgKGkgPSAwOyBpIDwgMTA7IGkrKykgewo+ICsJ CXZhbCA9IGNkbnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5LCBQSFlfSERQX0NMS19DVEwpOwo+ICsJ CWlmICh2YWwgJiAoMSA8PCAzKSkKPiArCQkJYnJlYWs7Cj4gKwkJbXNsZWVwKDIwKTsKPiArCX0K PiArCWlmIChpID09IDEwKSB7Cj4gKwkJZGV2X2VycihjZG5zX3BoeS0+ZGV2LCAiV2FpdCBQTEwg Y2xvY2sgZW5hYmxlIEFDayBmYWlsZWRcbiIpOwo+ICsJCXJldHVybiAtMTsKPiArCX0KPiArCj4g KwkvKiBDb25maWd1cmUgUEhZIGluIEEyIE1vZGUgKi8KPiArCWNkbnNfcGh5X3JlZ193cml0ZShj ZG5zX3BoeSwgUEhZX0hEUF9NT0RFX0NUUkwsIDB4MDAwNCk7Cj4gKwkvKiBXYWl0IGZvciBQb3dl ciBTdGF0ZSBBMiBBY2sgKi8KPiArCWZvciAoaSA9IDA7IGkgPCAxMDsgaSsrKSB7Cj4gKwkJdmFs ID0gY2Ruc19waHlfcmVnX3JlYWQoY2Ruc19waHksIFBIWV9IRFBfTU9ERV9DVFJMKTsKPiArCQlp ZiAodmFsICYgKDEgPDwgNikpCj4gKwkJCWJyZWFrOwo+ICsJCW1zbGVlcCgyMCk7Cj4gKwl9Cj4g KwlpZiAoaSA9PSAxMCkgewo+ICsJCWRldl9lcnIoY2Ruc19waHktPmRldiwgIldhaXQgQTIgQWNr IGZhaWxlZFxuIik7Cj4gKwkJcmV0dXJuIC0xOwo+ICsJfQo+ICsKPiArCS8qIENvbmZpZ3VyZSBQ SFkgaW4gQTAgbW9kZSAoUEhZIG11c3QgYmUgaW4gdGhlIEEwIHBvd2VyCj4gKwkgKiBzdGF0ZSBp biBvcmRlciB0byB0cmFuc21pdCBkYXRhKQo+ICsJICovCj4gKwljZG5zX3BoeV9yZWdfd3JpdGUo Y2Ruc19waHksIFBIWV9IRFBfTU9ERV9DVFJMLCAweDAxMDEpOwo+ICsKPiArCS8qIFdhaXQgZm9y IFBvd2VyIFN0YXRlIEEwIEFjayAqLwo+ICsJZm9yIChpID0gMDsgaSA8IDEwOyBpKyspIHsKPiAr CQl2YWwgPSBjZG5zX3BoeV9yZWdfcmVhZChjZG5zX3BoeSwgUEhZX0hEUF9NT0RFX0NUUkwpOwo+ ICsJCWlmICh2YWwgJiAoMSA8PCA0KSkKPiArCQkJYnJlYWs7Cj4gKwkJbXNsZWVwKDIwKTsKPiAr CX0KPiArCWlmIChpID09IDEwKSB7Cj4gKwkJZGV2X2VycihjZG5zX3BoeS0+ZGV2LCAiV2FpdCBB MCBBY2sgZmFpbGVkXG4iKTsKPiArCQlyZXR1cm4gLTE7Cj4gKwl9Cj4gKwo+ICsJY2Ruc19waHkt PnBvd2VyX3VwID0gdHJ1ZTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIHZv aWQgaGRwdHhfZHBfcGh5X3Bvd2VyX2Rvd24oc3RydWN0IGNkbnNfaGRwdHhfZHBfcGh5ICpjZG5z X3BoeSkKPiArewo+ICsJdTE2IHZhbDsKPiArCWludCBpOwo+ICsKPiArCWlmICghY2Ruc19waHkt PnBvd2VyX3VwKQo+ICsJCXJldHVybjsKPiArCj4gKwkvKiBQbGFjZSB0aGUgUEhZIGxhbmVzIGlu IHRoZSBBMyBwb3dlciBzdGF0ZS4gKi8KPiArCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwg UEhZX0hEUF9NT0RFX0NUUkwsIDB4OCk7Cj4gKwkvKiBXYWl0IGZvciBQb3dlciBTdGF0ZSBBMyBB Y2sgKi8KPiArCWZvciAoaSA9IDA7IGkgPCAxMDsgaSsrKSB7Cj4gKwkJdmFsID0gY2Ruc19waHlf cmVnX3JlYWQoY2Ruc19waHksIFBIWV9IRFBfTU9ERV9DVFJMKTsKPiArCQlpZiAodmFsICYgKDEg PDwgNykpCj4gKwkJCWJyZWFrOwo+ICsJCW1zbGVlcCgyMCk7Cj4gKwl9Cj4gKwlpZiAoaSA9PSAx MCkgewo+ICsJCWRldl9lcnIoY2Ruc19waHktPmRldiwgIldhaXQgQTMgQWNrIGZhaWxlZFxuIik7 Cj4gKwkJcmV0dXJuOwo+ICsJfQo+ICsKPiArCS8qIERpc2FibGUgSERQIFBMTOKAmXMgZGF0YSBy YXRlIGFuZCBmdWxsIHJhdGUgY2xvY2tzIG91dCBvZiBQTUEuICovCj4gKwl2YWwgPSBjZG5zX3Bo eV9yZWdfcmVhZChjZG5zX3BoeSwgUEhZX0hEUF9DTEtfQ1RMKTsKPiArCXZhbCAmPSB+KDEgPDwg Mik7Cj4gKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFBIWV9IRFBfQ0xLX0NUTCwgdmFs KTsKPiArCS8qIFdhaXQgZm9yIFBMTCBjbG9jayBnYXRlIEFDSyAqLwo+ICsJZm9yIChpID0gMDsg aSA8IDEwOyBpKyspIHsKPiArCQl2YWwgPSBjZG5zX3BoeV9yZWdfcmVhZChjZG5zX3BoeSwgUEhZ X0hEUF9DTEtfQ1RMKTsKPiArCQlpZiAoISh2YWwgJiAoMSA8PCAzKSkpCj4gKwkJCWJyZWFrOwo+ ICsJCW1zbGVlcCgyMCk7Cj4gKwl9Cj4gKwlpZiAoaSA9PSAxMCkgewo+ICsJCWRldl9lcnIoY2Ru c19waHktPmRldiwgIldhaXQgUExMIGNsb2NrIGdhdGUgQWNrIGZhaWxlZFxuIik7Cj4gKwkJcmV0 dXJuOwo+ICsJfQo+ICsKPiArCS8qIERpc2FibGUgSERQIFBMTOKAmXMgZm9yIGhpZ2ggc3BlZWQg Y2xvY2tzICovCj4gKwl2YWwgPSBjZG5zX3BoeV9yZWdfcmVhZChjZG5zX3BoeSwgUEhZX0hEUF9D TEtfQ1RMKTsKPiArCXZhbCAmPSB+KDEgPDwgMCk7Cj4gKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ru c19waHksIFBIWV9IRFBfQ0xLX0NUTCwgdmFsKTsKPiArCS8qIFdhaXQgZm9yIFBMTCBkaXNhYmxl IEFDSyAqLwo+ICsJZm9yIChpID0gMDsgaSA8IDEwOyBpKyspIHsKPiArCQl2YWwgPSBjZG5zX3Bo eV9yZWdfcmVhZChjZG5zX3BoeSwgUEhZX0hEUF9DTEtfQ1RMKTsKPiArCQlpZiAoISh2YWwgJiAo MSA8PCAxKSkpCj4gKwkJCWJyZWFrOwo+ICsJCW1zbGVlcCgyMCk7Cj4gKwl9Cj4gKwlpZiAoaSA9 PSAxMCkgewo+ICsJCWRldl9lcnIoY2Ruc19waHktPmRldiwgIldhaXQgUExMIGRpc2FibGUgQWNr IGZhaWxlZFxuIik7Cj4gKwkJcmV0dXJuOwo+ICsJfQo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGNk bnNfaGRwdHhfZHBfcGh5X29uKHN0cnVjdCBwaHkgKnBoeSkKPiArewo+ICsJc3RydWN0IGNkbnNf aGRwdHhfZHBfcGh5ICpjZG5zX3BoeSA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkpOwo+ICsKPiArCXJl dHVybiBoZHB0eF9kcF9waHlfcG93ZXJfdXAoY2Ruc19waHkpOwo+ICt9Cj4gKwo+ICtzdGF0aWMg aW50IGNkbnNfaGRwdHhfZHBfcGh5X29mZihzdHJ1Y3QgcGh5ICpwaHkpCj4gK3sKPiArCXN0cnVj dCBjZG5zX2hkcHR4X2RwX3BoeSAqY2Ruc19waHkgPSBwaHlfZ2V0X2RydmRhdGEocGh5KTsKPiAr Cj4gKwloZHB0eF9kcF9waHlfcG93ZXJfZG93bihjZG5zX3BoeSk7Cj4gKwo+ICsJcmV0dXJuIDA7 Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgY2Ruc19oZHB0eF9kcF9waHlfaW5pdChzdHJ1Y3QgcGh5 ICpwaHkpCj4gK3sKPiArCXN0cnVjdCBjZG5zX2hkcHR4X2RwX3BoeSAqY2Ruc19waHkgPSBwaHlf Z2V0X2RydmRhdGEocGh5KTsKPiArCWludCByZXQ7Cj4gKwo+ICsJaGRwdHhfZHBfcGh5X3JlZl9j bG9ja190eXBlKGNkbnNfcGh5KTsKPiArCj4gKwkvKiBQSFkgcG93ZXIgdXAgKi8KPiArCXJldCA9 IGhkcHR4X2RwX3BoeV9wb3dlcl91cChjZG5zX3BoeSk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQly ZXR1cm4gcmV0Owo+ICsKPiArCWhkcHR4X2RwX2F1eF9jZmcoY2Ruc19waHkpOwo+ICsKPiArCXJl dHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgY2Ruc19oZHB0eF9kcF9jb25maWd1cmUo c3RydWN0IHBoeSAqcGh5LAo+ICsJCQkJICAgdW5pb24gcGh5X2NvbmZpZ3VyZV9vcHRzICpvcHRz KQo+ICt7Cj4gKwlzdHJ1Y3QgY2Ruc19oZHB0eF9kcF9waHkgKmNkbnNfcGh5ID0gcGh5X2dldF9k cnZkYXRhKHBoeSk7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWNkbnNfcGh5LT5saW5rX3JhdGUgPSBv cHRzLT5kcC5saW5rX3JhdGU7Cj4gKwljZG5zX3BoeS0+bnVtX2xhbmVzID0gb3B0cy0+ZHAubGFu ZXM7Cj4gKwo+ICsJaWYgKGNkbnNfcGh5LT5saW5rX3JhdGUgPiBNQVhfTElOS19SQVRFKSB7Cj4g KwkJZGV2X2VycihjZG5zX3BoeS0+ZGV2LCAiTGluayBSYXRlKCVkKSBOb3Qgc3VwcG9ydGVkXG4i LCBjZG5zX3BoeS0+bGlua19yYXRlKTsKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwl9Cj4gKwo+ICsJ LyogRGlzYWJsZSBwaHkgY2xvY2sgaWYgUEhZIGluIHBvd2VyIHVwIHN0YXRlICovCj4gKwloZHB0 eF9kcF9waHlfcG93ZXJfZG93bihjZG5zX3BoeSk7Cj4gKwo+ICsJaWYgKGNkbnNfcGh5LT5yZWZf Y2xrX3JhdGUgPT0gUkVGX0NMS18yN01IWikgewo+ICsJCWhkcHR4X2RwX3BoeV9wbWFfY21uX2Nm Z18yN21oeihjZG5zX3BoeSk7Cj4gKwkJaGRwdHhfZHBfcGh5X3BtYV9jbW5fcGxsMF8yN21oeihj ZG5zX3BoeSk7Cj4gKwl9IGVsc2Ugewo+ICsJCWRldl9lcnIoY2Ruc19waHktPmRldiwgIk5vdCBz dXBwb3J0IHJlZiBjbG9jayByYXRlXG4iKTsKPiArCX0KPiArCj4gKwkvKiBQSFkgcG93ZXIgdXAg Ki8KPiArCXJldCA9IGhkcHR4X2RwX3BoeV9wb3dlcl91cChjZG5zX3BoeSk7Cj4gKwo+ICsJcmV0 dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBwaHlfb3BzIGNkbnNfaGRw dHhfZHBfcGh5X29wcyA9IHsKPiArCS5pbml0ID0gY2Ruc19oZHB0eF9kcF9waHlfaW5pdCwKPiAr CS5jb25maWd1cmUgPSBjZG5zX2hkcHR4X2RwX2NvbmZpZ3VyZSwKPiArCS5wb3dlcl9vbiA9IGNk bnNfaGRwdHhfZHBfcGh5X29uLAo+ICsJLnBvd2VyX29mZiA9IGNkbnNfaGRwdHhfZHBfcGh5X29m ZiwKPiArCS5vd25lciA9IFRISVNfTU9EVUxFLAo+ICt9Owo+ICsKPiArc3RhdGljIGludCBjZG5z X2hkcHR4X2RwX3BoeV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICt7Cj4g KwlzdHJ1Y3QgY2Ruc19oZHB0eF9kcF9waHkgKmNkbnNfcGh5Owo+ICsJc3RydWN0IGRldmljZSAq ZGV2ID0gJnBkZXYtPmRldjsKPiArCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSA9IGRldi0+b2Zf bm9kZTsKPiArCXN0cnVjdCBwaHlfcHJvdmlkZXIgKnBoeV9wcm92aWRlcjsKPiArCXN0cnVjdCBy ZXNvdXJjZSAqcmVzOwo+ICsJc3RydWN0IHBoeSAqcGh5Owo+ICsJaW50IHJldDsKPiArCj4gKwlj ZG5zX3BoeSA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqY2Ruc19waHkpLCBHRlBfS0VSTkVM KTsKPiArCWlmICghY2Ruc19waHkpCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJZGV2X3Nl dF9kcnZkYXRhKGRldiwgY2Ruc19waHkpOwo+ICsJY2Ruc19waHktPmRldiA9IGRldjsKPiArCW11 dGV4X2luaXQoJmNkbnNfcGh5LT5tYm94X211dGV4KTsKPiArCj4gKwlyZXMgPSBwbGF0Zm9ybV9n ZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDApOwo+ICsJaWYgKCFyZXMpCj4gKwkJ cmV0dXJuIC1FTk9ERVY7Cj4gKwljZG5zX3BoeS0+cmVncyA9IGRldm1faW9yZW1hcChkZXYsIHJl cy0+c3RhcnQsIHJlc291cmNlX3NpemUocmVzKSk7Cj4gKwlpZiAoSVNfRVJSKGNkbnNfcGh5LT5y ZWdzKSkKPiArCQlyZXR1cm4gUFRSX0VSUihjZG5zX3BoeS0+cmVncyk7Cj4gKwo+ICsJcGh5ID0g ZGV2bV9waHlfY3JlYXRlKGRldiwgbm9kZSwgJmNkbnNfaGRwdHhfZHBfcGh5X29wcyk7Cj4gKwlp ZiAoSVNfRVJSKHBoeSkpCj4gKwkJcmV0dXJuIFBUUl9FUlIocGh5KTsKPiArCj4gKwlwaHktPmF0 dHJzLm1vZGUgPSBQSFlfTU9ERV9EUDsKPiArCWNkbnNfcGh5LT5waHkgPSBwaHk7Cj4gKwlwaHlf c2V0X2RydmRhdGEocGh5LCBjZG5zX3BoeSk7Cj4gKwo+ICsJcmV0ID0gaGRwdHhfZHBfY2xrX2Vu YWJsZShjZG5zX3BoeSk7Cj4gKwlpZiAocmV0KSB7Cj4gKwkJZGV2X2VycihkZXYsICJJbml0IGNs ayBmYWlsXG4iKTsKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCX0KPiArCj4gKwlwaHlfcHJvdmlk ZXIgPSBkZXZtX29mX3BoeV9wcm92aWRlcl9yZWdpc3RlcihkZXYsIG9mX3BoeV9zaW1wbGVfeGxh dGUpOwo+ICsJaWYgKElTX0VSUihwaHlfcHJvdmlkZXIpKSB7Cj4gKwkJcmV0ID0gUFRSX0VSUihw aHlfcHJvdmlkZXIpOwo+ICsJCWdvdG8gY2xrX2Rpc2FibGU7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJu IDA7Cj4gKwo+ICtjbGtfZGlzYWJsZToKPiArCWhkcHR4X2RwX2Nsa19kaXNhYmxlKGNkbnNfcGh5 KTsKPiArCj4gKwlyZXR1cm4gLUVJTlZBTDsKPiArfQo+ICsKPiArc3RhdGljIGludCBjZG5zX2hk cHR4X2RwX3BoeV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiArewo+ICsJ c3RydWN0IGNkbnNfaGRwdHhfZHBfcGh5ICpjZG5zX3BoeSA9IHBsYXRmb3JtX2dldF9kcnZkYXRh KHBkZXYpOwo+ICsKPiArCWhkcHR4X2RwX2Nsa19kaXNhYmxlKGNkbnNfcGh5KTsKPiArCj4gKwly ZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgY2Ru c19oZHB0eF9kcF9waHlfb2ZfbWF0Y2hbXSA9IHsKPiArCXsuY29tcGF0aWJsZSA9ICJmc2wsaW14 OG1xLWRwLXBoeSIgfSwKPiArCXsgLyogc2VudGluZWwgKi8gfQo+ICt9Owo+ICtNT0RVTEVfREVW SUNFX1RBQkxFKG9mLCBjZG5zX2hkcHR4X2RwX3BoeV9vZl9tYXRjaCk7Cj4gKwo+ICtzdGF0aWMg c3RydWN0IHBsYXRmb3JtX2RyaXZlciBjZG5zX2hkcHR4X2RwX3BoeV9kcml2ZXIgPSB7Cj4gKwku cHJvYmUgPSBjZG5zX2hkcHR4X2RwX3BoeV9wcm9iZSwKPiArCS5yZW1vdmUgPSBjZG5zX2hkcHR4 X2RwX3BoeV9yZW1vdmUsCj4gKwkuZHJpdmVyID0gewo+ICsJCS5uYW1lCT0gImNkbnMtaGRwdHgt ZHAtcGh5IiwKPiArCQkub2ZfbWF0Y2hfdGFibGUJPSBjZG5zX2hkcHR4X2RwX3BoeV9vZl9tYXRj aCwKPiArCX0KPiArfTsKPiArbW9kdWxlX3BsYXRmb3JtX2RyaXZlcihjZG5zX2hkcHR4X2RwX3Bo eV9kcml2ZXIpOwo+ICsKPiArTU9EVUxFX0FVVEhPUigiU2FuZG9yIFl1IDxzYW5kb3IueXVAbnhw LmNvbT4iKTsKPiArTU9EVUxFX0RFU0NSSVBUSU9OKCJDYWRlbmNlIEhEUC1UWCBEaXNwbGF5UG9y dCBQSFkgZHJpdmVyIik7Cj4gK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKPiAtLSAKPiAyLjM0LjEK Ci0tIAp+Vmlub2QKCi0tIApsaW51eC1waHkgbWFpbGluZyBsaXN0CmxpbnV4LXBoeUBsaXN0cy5p bmZyYWRlYWQub3JnCmh0dHBzOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2xpbnV4LXBoeQo=