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 04C4DEB64D8 for ; Wed, 21 Jun 2023 11:24:50 +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=Gm1YdMJ6g4g0Vu+mjj98nFx0UbMsVpkZwrb+FjmC0P4=; b=Q5n02LZ+FDZhOE DQMBGLVOpciUtAcH48u00Ibw7G54WWBjtIDng9Zqvhe1JaB2mp+Ty2e8VLABmn9L52qXZQbNUlzVk F8/vbtsXON40aoLycCsxexBYdMw/tpp73OfwLv/8CeBcrONh+xmXGo9vDd+j9sQv10jdKTbNKhdMJ YVaJfiBcI4bEaY5UQmlOeaBtHqTpYX9nu2R1otSBaMDxAurmDWSTV+5ooDn9RXpL8GqrKVEFV/sx3 zsmj4uSnaLqPeuKjKBdwQfTg+xb3jjE39DALwi3psx2dAL40IhO6XuheSe83jhIw99kwXDIJlJv+C +REvcsb9VOo7be0grFaw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qBvwm-00ENlS-0G; Wed, 21 Jun 2023 11:24:24 +0000 Received: from dfw.source.kernel.org ([2604:1380:4641:c500::1]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qBvwh-00ENk8-2J; Wed, 21 Jun 2023 11:24:22 +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 D4F846150D; Wed, 21 Jun 2023 11:24:18 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 156F9C433C8; Wed, 21 Jun 2023 11:24:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1687346658; bh=NwH5V30lS5yuvPManxFLnChOCMB0DORyGUvgs2Zr6UY=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=mWSxcoEVRWxNXGI/Oek4fG9sGHqE5jWxuxZOFaQMXVXGKN1XsNZO3NlLaK9s6Herx GmfpnFQNfDkvBywz9NzTRfontZLY7od2W4ScJoS7D2To1kTEAyZcpmDJz0KevH/wJ6 K13KDRSRl2T54GYWvGB7loExRsBoqSU4JRAGldNqzOkNLruz0JNculEKqr2kmjx4MD Py7fJD11FEjjIfdYgtl01yNM3ZORsYgyByw4uIcY+F8ENOQmPmeA+p5JSy0ojKTX+Y x1s6FbK4STvasCzBUMYvoG2Fv43pFjDb7uQQKHQwNTvLaKNci46IuMCRtKjVhOMW8B uIBQnS2ZQMsPA== Date: Wed, 21 Jun 2023 16:54:13 +0530 From: Vinod Koul To: Sandor Yu Cc: andrzej.hajda@intel.com, neil.armstrong@linaro.org, robert.foss@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 Subject: Re: [PATCH v6 7/8] phy: freescale: Add DisplayPort PHY driver for i.MX8MQ Message-ID: References: <279d6d605656a7ca1bbee6270d66aa218a1b7d3d.1686729444.git.Sandor.yu@nxp.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <279d6d605656a7ca1bbee6270d66aa218a1b7d3d.1686729444.git.Sandor.yu@nxp.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230621_042419_842075_7BBE82FD X-CRM114-Status: GOOD ( 29.10 ) 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 T24gMTUtMDYtMjMsIDA5OjM4LCBTYW5kb3IgWXUgd3JvdGU6Cj4gQWRkIENhZGVuY2UgSERQLVRY IERpc3BsYXlQb3J0IFBIWSBkcml2ZXIgZm9yIGkuTVg4TVEKPiAKPiBDYWRlbmNlIEhEUC1UWCBQ SFkgY291bGQgYmUgcHV0IGluIGVpdGhlciBEUCBtb2RlIG9yCj4gSERNSSBtb2RlIGJhc2Ugb24g dGhlIGNvbmZpZ3VyYXRpb24gY2hvc2VuLgo+IERpc3BsYXlQb3J0IFBIWSBtb2RlIGlzIGNvbmZp Z3VyYXRlZCBpbiB0aGUgZHJpdmVyLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFNhbmRvciBZdSA8U2Fu ZG9yLnl1QG54cC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvcGh5L2ZyZWVzY2FsZS9LY29uZmlnICAg ICAgICAgICAgIHwgICA5ICsKPiAgZHJpdmVycy9waHkvZnJlZXNjYWxlL01ha2VmaWxlICAgICAg ICAgICAgfCAgIDEgKwo+ICBkcml2ZXJzL3BoeS9mcmVlc2NhbGUvcGh5LWZzbC1pbXg4bXEtZHAu YyB8IDY5NyArKysrKysrKysrKysrKysrKysrKysrCj4gIDMgZmlsZXMgY2hhbmdlZCwgNzA3IGlu c2VydGlvbnMoKykKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvcGh5L2ZyZWVzY2FsZS9w aHktZnNsLWlteDhtcS1kcC5jCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGh5L2ZyZWVzY2Fs ZS9LY29uZmlnIGIvZHJpdmVycy9waHkvZnJlZXNjYWxlL0tjb25maWcKPiBpbmRleCA4NTM5NThm YjJjMDYuLmE5OWVlMzcwZWRhNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3BoeS9mcmVlc2NhbGUv S2NvbmZpZwo+ICsrKyBiL2RyaXZlcnMvcGh5L2ZyZWVzY2FsZS9LY29uZmlnCj4gQEAgLTM1LDYg KzM1LDE1IEBAIGNvbmZpZyBQSFlfRlNMX0lNWDhNX1BDSUUKPiAgCSAgRW5hYmxlIHRoaXMgdG8g YWRkIHN1cHBvcnQgZm9yIHRoZSBQQ0lFIFBIWSBhcyBmb3VuZCBvbgo+ICAJICBpLk1YOE0gZmFt aWx5IG9mIFNPQ3MuCj4gIAo+ICtjb25maWcgUEhZX0NBREVOQ0VfRFBfUEhZCj4gKwl0cmlzdGF0 ZSAiQ2FkZW5jZSBIRFBUWCBEUCBQSFkgc3VwcG9ydCIKPiArCWRlcGVuZHMgb24gT0YgJiYgSEFT X0lPTUVNCj4gKwlkZXBlbmRzIG9uIENPTU1PTl9DTEsKPiArCXNlbGVjdCBHRU5FUklDX1BIWQo+ ICsJaGVscAo+ICsJICBFbmFibGUgdGhpcyB0byBzdXBwb3J0IHRoZSBDYWRlbmNlIEhEUFRYIERQ IFBIWSBkcml2ZXIKPiArCSAgb24gTlhQJ3MgaS5NWDhNUSBTT0MuCj4gKwo+ICBlbmRpZgo+ICAK PiAgY29uZmlnIFBIWV9GU0xfTFlOWF8yOEcKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvZnJl ZXNjYWxlL01ha2VmaWxlIGIvZHJpdmVycy9waHkvZnJlZXNjYWxlL01ha2VmaWxlCj4gaW5kZXgg Y2VkYjMyOGJjNGQyLi5jM2JkZjNmYTJlNzIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9waHkvZnJl ZXNjYWxlL01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9waHkvZnJlZXNjYWxlL01ha2VmaWxlCj4g QEAgLTQsMyArNCw0IEBAIG9iai0kKENPTkZJR19QSFlfTUlYRUxfTFZEU19QSFkpCSs9IHBoeS1m c2wtaW14OHFtLWx2ZHMtcGh5Lm8KPiAgb2JqLSQoQ09ORklHX1BIWV9NSVhFTF9NSVBJX0RQSFkp CSs9IHBoeS1mc2wtaW14OC1taXBpLWRwaHkubwo+ICBvYmotJChDT05GSUdfUEhZX0ZTTF9JTVg4 TV9QQ0lFKQkrPSBwaHktZnNsLWlteDhtLXBjaWUubwo+ICBvYmotJChDT05GSUdfUEhZX0ZTTF9M WU5YXzI4RykJCSs9IHBoeS1mc2wtbHlueC0yOGcubwo+ICtvYmotJChDT05GSUdfUEhZX0NBREVO Q0VfRFBfUEhZKQkrPSBwaHktZnNsLWlteDhtcS1kcC5vCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv cGh5L2ZyZWVzY2FsZS9waHktZnNsLWlteDhtcS1kcC5jIGIvZHJpdmVycy9waHkvZnJlZXNjYWxl L3BoeS1mc2wtaW14OG1xLWRwLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAw MDAwMDAwMC4uMmJkNjc3MmE1ZDNiCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvcGh5 L2ZyZWVzY2FsZS9waHktZnNsLWlteDhtcS1kcC5jCj4gQEAgLTAsMCArMSw2OTcgQEAKPiArLy8g U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQo+ICsvKgo+ICsgKiBDYWRlbmNl IEhEUC1UWCBEaXNwbGF5IFBvcnQgSW50ZXJmYWNlIChEUCkgUEhZIGRyaXZlcgo+ICsgKgo+ICsg KiBDb3B5cmlnaHQgKEMpIDIwMjIgTlhQIFNlbWljb25kdWN0b3IsIEluYy4KPiArICovCj4gKyNp bmNsdWRlIDxhc20vdW5hbGlnbmVkLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4KPiArI2lu Y2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgo+ICsjaW5jbHVkZSA8bGludXgvcGh5L3BoeS5oPgo+ICsj aW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9pby5o Pgo+ICsjaW5jbHVkZSA8bGludXgvaW9wb2xsLmg+Cj4gKwo+ICsjaW5jbHVkZSA8ZHJtL2JyaWRn ZS9jZG5zLW1oZHAtbWFpbGJveC5oPgo+ICsKPiArI2RlZmluZSBBRERSX1BIWV9BRkUJMHg4MDAw MAoKSXMgdGhpcyBhbHdheXMgZml4ZWQgZm9yIGV2ZXJ5IHBoeSBnZW5lcmF0aW9uPwo+ICsKPiAr LyogUEhZIHJlZ2lzdGVycyAqLwo+ICsjZGVmaW5lIENNTl9TU01fQklBU19UTVIgICAgICAgICAg ICAgICAgMHgwMDIyCj4gKyNkZWZpbmUgQ01OX1BMTFNNMF9QTExFTl9UTVIgICAgICAgICAgICAw eDAwMjkKPiArI2RlZmluZSBDTU5fUExMU00wX1BMTFBSRV9UTVIgICAgICAgICAgIDB4MDAyQQo+ ICsjZGVmaW5lIENNTl9QTExTTTBfUExMVlJFRl9UTVIgICAgICAgICAgMHgwMDJCCj4gKyNkZWZp bmUgQ01OX1BMTFNNMF9QTExMT0NLX1RNUiAgICAgICAgICAweDAwMkMKPiArI2RlZmluZSBDTU5f UExMU00wX1VTRVJfREVGX0NUUkwgICAgICAgIDB4MDAyRgo+ICsjZGVmaW5lIENNTl9QU01fQ0xL X0NUUkwgICAgICAgICAgICAgICAgMHgwMDYxCj4gKyNkZWZpbmUgQ01OX1BMTDBfVkNPQ0FMX1NU QVJUICAgICAgICAgICAweDAwODEKPiArI2RlZmluZSBDTU5fUExMMF9WQ09DQUxfSU5JVF9UTVIg ICAgICAgIDB4MDA4NAo+ICsjZGVmaW5lIENNTl9QTEwwX1ZDT0NBTF9JVEVSX1RNUiAgICAgICAg MHgwMDg1Cj4gKyNkZWZpbmUgQ01OX1BMTDBfSU5URElWICAgICAgICAgICAgICAgICAweDAwOTQK PiArI2RlZmluZSBDTU5fUExMMF9GUkFDRElWICAgICAgICAgICAgICAgIDB4MDA5NQo+ICsjZGVm aW5lIENNTl9QTEwwX0hJR0hfVEhSICAgICAgICAgICAgICAgMHgwMDk2Cj4gKyNkZWZpbmUgQ01O X1BMTDBfRFNNX0RJQUcgICAgICAgICAgICAgICAweDAwOTcKPiArI2RlZmluZSBDTU5fUExMMF9T U19DVFJMMiAgICAgICAgICAgICAgIDB4MDA5OQo+ICsjZGVmaW5lIENNTl9JQ0FMX0lOSVRfVE1S ICAgICAgICAgICAgICAgMHgwMEM0Cj4gKyNkZWZpbmUgQ01OX0lDQUxfSVRFUl9UTVIgICAgICAg ICAgICAgICAweDAwQzUKPiArI2RlZmluZSBDTU5fUlhDQUxfSU5JVF9UTVIgICAgICAgICAgICAg IDB4MDBENAo+ICsjZGVmaW5lIENNTl9SWENBTF9JVEVSX1RNUiAgICAgICAgICAgICAgMHgwMEQ1 Cj4gKyNkZWZpbmUgQ01OX1RYUFVDQUxfSU5JVF9UTVIgICAgICAgICAgICAweDAwRTQKPiArI2Rl ZmluZSBDTU5fVFhQVUNBTF9JVEVSX1RNUiAgICAgICAgICAgIDB4MDBFNQo+ICsjZGVmaW5lIENN Tl9UWFBEQ0FMX0lOSVRfVE1SICAgICAgICAgICAgMHgwMEY0Cj4gKyNkZWZpbmUgQ01OX1RYUERD QUxfSVRFUl9UTVIgICAgICAgICAgICAweDAwRjUKPiArI2RlZmluZSBDTU5fSUNBTF9BREpfSU5J VF9UTVIgICAgICAgICAgIDB4MDEwMgo+ICsjZGVmaW5lIENNTl9JQ0FMX0FESl9JVEVSX1RNUiAg ICAgICAgICAgMHgwMTAzCj4gKyNkZWZpbmUgQ01OX1JYX0FESl9JTklUX1RNUiAgICAgICAgICAg ICAweDAxMDYKPiArI2RlZmluZSBDTU5fUlhfQURKX0lURVJfVE1SICAgICAgICAgICAgIDB4MDEw Nwo+ICsjZGVmaW5lIENNTl9UWFBVX0FESl9JTklUX1RNUiAgICAgICAgICAgMHgwMTBBCj4gKyNk ZWZpbmUgQ01OX1RYUFVfQURKX0lURVJfVE1SICAgICAgICAgICAweDAxMEIKPiArI2RlZmluZSBD TU5fVFhQRF9BREpfSU5JVF9UTVIgICAgICAgICAgIDB4MDEwRQo+ICsjZGVmaW5lIENNTl9UWFBE X0FESl9JVEVSX1RNUiAgICAgICAgICAgMHgwMTBGCj4gKyNkZWZpbmUgQ01OX0RJQUdfUExMMF9G QkhfT1ZSRCAgICAgICAgICAweDAxQzAKPiArI2RlZmluZSBDTU5fRElBR19QTEwwX0ZCTF9PVlJE ICAgICAgICAgIDB4MDFDMQo+ICsjZGVmaW5lIENNTl9ESUFHX1BMTDBfT1ZSRCAgICAgICAgICAg ICAgMHgwMUMyCj4gKyNkZWZpbmUgQ01OX0RJQUdfUExMMF9URVNUX01PREUgICAgICAgICAweDAx QzQKPiArI2RlZmluZSBDTU5fRElBR19QTEwwX1YySV9UVU5FICAgICAgICAgIDB4MDFDNQo+ICsj ZGVmaW5lIENNTl9ESUFHX1BMTDBfQ1BfVFVORSAgICAgICAgICAgMHgwMUM2Cj4gKyNkZWZpbmUg Q01OX0RJQUdfUExMMF9MRl9QUk9HICAgICAgICAgICAweDAxQzcKPiArI2RlZmluZSBDTU5fRElB R19QTEwwX1BUQVRJU19UVU5FMSAgICAgIDB4MDFDOAo+ICsjZGVmaW5lIENNTl9ESUFHX1BMTDBf UFRBVElTX1RVTkUyICAgICAgMHgwMUM5Cj4gKyNkZWZpbmUgQ01OX0RJQUdfSFNDTEtfU0VMICAg ICAgICAgICAgICAweDAxRTAKPiArI2RlZmluZSBDTU5fRElBR19QRVJfQ0FMX0FESiAgICAgICAg ICAgIDB4MDFFQwo+ICsjZGVmaW5lIENNTl9ESUFHX0NBTF9DVFJMICAgICAgICAgICAgICAgMHgw MUVECj4gKyNkZWZpbmUgQ01OX0RJQUdfQUNZQSAgICAgICAgICAgICAgICAgICAweDAxRkYKPiAr I2RlZmluZSBYQ1ZSX1BTTV9SQ1RSTCAgICAgICAgICAgICAgICAgIDB4NDAwMQo+ICsjZGVmaW5l IFhDVlJfUFNNX0NBTF9UTVIgICAgICAgICAgICAgICAgMHg0MDAyCj4gKyNkZWZpbmUgWENWUl9Q U01fQTBJTl9UTVIgICAgICAgICAgICAgICAweDQwMDMKPiArI2RlZmluZSBUWF9UWENDX0NBTF9T Q0xSX01VTFRfMCAgICAgICAgIDB4NDA0Nwo+ICsjZGVmaW5lIFRYX1RYQ0NfQ1BPU1RfTVVMVF8w MF8wICAgICAgICAgMHg0MDRDCj4gKyNkZWZpbmUgWENWUl9ESUFHX1BMTERSQ19DVFJMICAgICAg ICAgICAweDQwRTAKPiArI2RlZmluZSBYQ1ZSX0RJQUdfUExMRFJDX0NUUkwgICAgICAgICAgIDB4 NDBFMAo+ICsjZGVmaW5lIFhDVlJfRElBR19IU0NMS19TRUwgICAgICAgICAgICAgMHg0MEUxCj4g KyNkZWZpbmUgWENWUl9ESUFHX0xBTkVfRkNNX0VOX01HTl9UTVIgICAweDQwRjIKPiArI2RlZmlu ZSBUWF9QU0NfQTAgICAgICAgICAgICAgICAgICAgICAgIDB4NDEwMAo+ICsjZGVmaW5lIFRYX1BT Q19BMSAgICAgICAgICAgICAgICAgICAgICAgMHg0MTAxCj4gKyNkZWZpbmUgVFhfUFNDX0EyICAg ICAgICAgICAgICAgICAgICAgICAweDQxMDIKPiArI2RlZmluZSBUWF9QU0NfQTMgICAgICAgICAg ICAgICAgICAgICAgIDB4NDEwMwo+ICsjZGVmaW5lIFRYX1JDVkRFVF9FTl9UTVIgICAgICAgICAg ICAgICAgMHg0MTIyCj4gKyNkZWZpbmUgVFhfUkNWREVUX1NUX1RNUiAgICAgICAgICAgICAgICAw eDQxMjMKPiArI2RlZmluZSBUWF9ESUFHX0JHUkVGX1BSRURSVl9ERUxBWSAgICAgIDB4NDFFNwo+ ICsjZGVmaW5lIFRYX0RJQUdfQkdSRUZfUFJFRFJWX0RFTEFZICAgICAgMHg0MUU3Cj4gKyNkZWZp bmUgVFhfRElBR19BQ1lBXzAgICAgICAgICAgICAgICAgICAweDQxRkYKPiArI2RlZmluZSBUWF9E SUFHX0FDWUFfMSAgICAgICAgICAgICAgICAgIDB4NDNGRgo+ICsjZGVmaW5lIFRYX0RJQUdfQUNZ QV8yICAgICAgICAgICAgICAgICAgMHg0NUZGCj4gKyNkZWZpbmUgVFhfRElBR19BQ1lBXzMgICAg ICAgICAgICAgICAgICAweDQ3RkYKPiArI2RlZmluZSBUWF9BTkFfQ1RSTF9SRUdfMSAgICAgICAg ICAgICAgIDB4NTAyMAo+ICsjZGVmaW5lIFRYX0FOQV9DVFJMX1JFR18yICAgICAgICAgICAgICAg MHg1MDIxCj4gKyNkZWZpbmUgVFhfRElHX0NUUkxfUkVHXzEgICAgICAgICAgICAgICAweDUwMjMK PiArI2RlZmluZSBUWF9ESUdfQ1RSTF9SRUdfMiAgICAgICAgICAgICAgIDB4NTAyNAo+ICsjZGVm aW5lIFRYREFfQ1lBX0FVWERBX0NZQSAgICAgICAgICAgICAgMHg1MDI1Cj4gKyNkZWZpbmUgVFhf QU5BX0NUUkxfUkVHXzMgICAgICAgICAgICAgICAweDUwMjYKPiArI2RlZmluZSBUWF9BTkFfQ1RS TF9SRUdfNCAgICAgICAgICAgICAgIDB4NTAyNwo+ICsjZGVmaW5lIFRYX0FOQV9DVFJMX1JFR181 ICAgICAgICAgICAgICAgMHg1MDI5Cj4gKyNkZWZpbmUgUlhfUFNDX0EwICAgICAgICAgICAgICAg ICAgICAgICAweDgwMDAKPiArI2RlZmluZSBSWF9QU0NfQ0FMICAgICAgICAgICAgICAgICAgICAg IDB4ODAwNgo+ICsjZGVmaW5lIFBIWV9IRFBfTU9ERV9DVFJMICAgICAgICAgICAgICAgMHhDMDA4 Cj4gKyNkZWZpbmUgUEhZX0hEUF9DTEtfQ1RMICAgICAgICAgICAgICAgICAweEMwMDkKPiArI2Rl ZmluZSBQSFlfUE1BX0NNTl9DVFJMMSAgICAgICAgICAgICAgIDB4QzgwMAoKTG93ZXIgY2FzZSBo ZXggdmFsdWVzIHBsZWFzZQoKPiArCj4gKyNkZWZpbmUgUkVGX0NMS18yN01IWgkJMjcwMDAwMDAK PiArCj4gK2VudW0gZHBfbGlua19yYXRlIHsKPiArCVJBVEVfMV82ID0gMTYyMDAwLAo+ICsJUkFU RV8yXzEgPSAyMTYwMDAsCj4gKwlSQVRFXzJfNCA9IDI0MzAwMCwKPiArCVJBVEVfMl83ID0gMjcw MDAwLAo+ICsJUkFURV8zXzIgPSAzMjQwMDAsCj4gKwlSQVRFXzRfMyA9IDQzMjAwMCwKPiArCVJB VEVfNV80ID0gNTQwMDAwLAo+ICsJUkFURV84XzEgPSA4MTAwMDAsCj4gK307Cj4gKwo+ICsjZGVm aW5lIE1BWF9MSU5LX1JBVEUgUkFURV81XzQKPiArCj4gK3N0cnVjdCBwaHlfcGxsX3JlZyB7Cj4g Kwl1MTYgdmFsWzddOwo+ICsJdTMyIGFkZHI7Cj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IHBoeV9wbGxfcmVnIHBoeV9wbGxfMjdtX2NmZ1tdID0gewo+ICsJLyogIDEuNjIgICAgMi4x NiAgICAyLjQzICAgIDIuNyAgICAgMy4yNCAgICA0LjMyICAgIDUuNCAgICAgIHJlZ2lzdGVyIGFk ZHJlc3MgKi8KPiArCXt7IDB4MDEwRSwgMHgwMTBFLCAweDAxMEUsIDB4MDEwRSwgMHgwMTBFLCAw eDAxMEUsIDB4MDEwRSB9LCBDTU5fUExMMF9WQ09DQUxfSU5JVF9UTVIgfSwKPiArCXt7IDB4MDAx QiwgMHgwMDFCLCAweDAwMUIsIDB4MDAxQiwgMHgwMDFCLCAweDAwMUIsIDB4MDAxQiB9LCBDTU5f UExMMF9WQ09DQUxfSVRFUl9UTVIgfSwKPiArCXt7IDB4MzBCOSwgMHgzMDg3LCAweDMwOTYsIDB4 MzBCNCwgMHgzMEI5LCAweDMwODcsIDB4MzBCNCB9LCBDTU5fUExMMF9WQ09DQUxfU1RBUlQgfSwK PiArCXt7IDB4MDA3NywgMHgwMDlGLCAweDAwQjMsIDB4MDBDNywgMHgwMDc3LCAweDAwOUYsIDB4 MDBDNyB9LCBDTU5fUExMMF9JTlRESVYgfSwKPiArCXt7IDB4RjlEQSwgMHhGN0NELCAweEY2Qzcs IDB4RjVDMSwgMHhGOURBLCAweEY3Q0QsIDB4RjVDMSB9LCBDTU5fUExMMF9GUkFDRElWIH0sCj4g Kwl7eyAweDAwMUUsIDB4MDAyOCwgMHgwMDJELCAweDAwMzIsIDB4MDAxRSwgMHgwMDI4LCAweDAw MzIgfSwgQ01OX1BMTDBfSElHSF9USFIgfSwKPiArCXt7IDB4MDAyMCwgMHgwMDIwLCAweDAwMjAs IDB4MDAyMCwgMHgwMDIwLCAweDAwMjAsIDB4MDAyMCB9LCBDTU5fUExMMF9EU01fRElBRyB9LAo+ ICsJe3sgMHgwMDAwLCAweDEwMDAsIDB4MTAwMCwgMHgxMDAwLCAweDAwMDAsIDB4MTAwMCwgMHgx MDAwIH0sIENNTl9QTExTTTBfVVNFUl9ERUZfQ1RSTCB9LAo+ICsJe3sgMHgwMDAwLCAweDAwMDAs IDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwIH0sIENNTl9ESUFHX1BMTDBf T1ZSRCB9LAo+ICsJe3sgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4 MDAwMCwgMHgwMDAwIH0sIENNTl9ESUFHX1BMTDBfRkJIX09WUkQgfSwKPiArCXt7IDB4MDAwMCwg MHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCB9LCBDTU5fRElB R19QTEwwX0ZCTF9PVlJEIH0sCj4gKwl7eyAweDAwMDYsIDB4MDAwNywgMHgwMDA3LCAweDAwMDcs IDB4MDAwNiwgMHgwMDA3LCAweDAwMDcgfSwgQ01OX0RJQUdfUExMMF9WMklfVFVORSB9LAo+ICsJ e3sgMHgwMDQzLCAweDAwNDMsIDB4MDA0MywgMHgwMDQyLCAweDAwNDMsIDB4MDA0MywgMHgwMDQy IH0sIENNTl9ESUFHX1BMTDBfQ1BfVFVORSB9LAo+ICsJe3sgMHgwMDA4LCAweDAwMDgsIDB4MDAw OCwgMHgwMDA4LCAweDAwMDgsIDB4MDAwOCwgMHgwMDA4IH0sIENNTl9ESUFHX1BMTDBfTEZfUFJP RyB9LAo+ICsJe3sgMHgwMTAwLCAweDAwMDEsIDB4MDAwMSwgMHgwMDAxLCAweDAxMDAsIDB4MDAw MSwgMHgwMDAxIH0sIENNTl9ESUFHX1BMTDBfUFRBVElTX1RVTkUxIH0sCj4gKwl7eyAweDAwMDcs IDB4MDAwMSwgMHgwMDAxLCAweDAwMDEsIDB4MDAwNywgMHgwMDAxLCAweDAwMDEgfSwgQ01OX0RJ QUdfUExMMF9QVEFUSVNfVFVORTIgfSwKPiArCXt7IDB4MDAyMCwgMHgwMDIwLCAweDAwMjAsIDB4 MDAyMCwgMHgwMDIwLCAweDAwMjAsIDB4MDAyMCB9LCBDTU5fRElBR19QTEwwX1RFU1RfTU9ERX0s Cj4gKwl7eyAweDAwMTYsIDB4MDAxNiwgMHgwMDE2LCAweDAwMTYsIDB4MDAxNiwgMHgwMDE2LCAw eDAwMTYgfSwgQ01OX1BTTV9DTEtfQ1RSTCB9CgphZ2FpbiwgbG93ZXIgY2FzZSBwbGVhc2UKCj4g K307Cj4gKwo+ICtzdHJ1Y3QgY2Ruc19oZHB0eF9kcF9waHkgewo+ICsJdm9pZCBfX2lvbWVtICpy ZWdzOwkvKiBEUFRYIHJlZ2lzdGVycyBiYXNlICovCj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXY7Cj4g KwlzdHJ1Y3QgcGh5ICpwaHk7Cj4gKwlzdHJ1Y3QgbXV0ZXggbWJveF9tdXRleDsgLyogbXV0ZXgg dG8gcHJvdGVjdCBtYWlsYm94ICovCj4gKwlzdHJ1Y3QgY2xrICpyZWZfY2xrLCAqYXBiX2NsazsK PiArCXUzMiByZWZfY2xrX3JhdGU7Cj4gKwl1MzIgbnVtX2xhbmVzOwo+ICsJdTMyIGxpbmtfcmF0 ZTsKPiArCWJvb2wgcG93ZXJfdXA7Cj4gK307Cj4gKwo+ICtzdGF0aWMgaW50IGNkbnNfcGh5X3Jl Z193cml0ZShzdHJ1Y3QgY2Ruc19oZHB0eF9kcF9waHkgKmNkbnNfcGh5LCB1MzIgYWRkciwgdTMy IHZhbCkKPiArewo+ICsJcmV0dXJuIGNkbnNfbWhkcF9yZWdfd3JpdGUoY2Ruc19waHksIEFERFJf UEhZX0FGRSArIChhZGRyIDw8IDIpLCB2YWwpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdTMyIGNkbnNf cGh5X3JlZ19yZWFkKHN0cnVjdCBjZG5zX2hkcHR4X2RwX3BoeSAqY2Ruc19waHksIHUzMiBhZGRy KQo+ICt7Cj4gKwl1MzIgcmVnMzI7Cj4gKwo+ICsJY2Ruc19taGRwX3JlZ19yZWFkKGNkbnNfcGh5 LCBBRERSX1BIWV9BRkUgKyAoYWRkciA8PCAyKSwgJnJlZzMyKTsKPiArCXJldHVybiByZWczMjsK PiArfQo+ICsKPiArc3RhdGljIGludCBsaW5rX3JhdGVfaW5kZXgodTMyIHJhdGUpCj4gK3sKPiAr CXN3aXRjaCAocmF0ZSkgewo+ICsJY2FzZSBSQVRFXzFfNjoKPiArCQlyZXR1cm4gMDsKPiArCWNh c2UgUkFURV8yXzE6Cj4gKwkJcmV0dXJuIDE7Cj4gKwljYXNlIFJBVEVfMl80Ogo+ICsJCXJldHVy biAyOwo+ICsJY2FzZSBSQVRFXzJfNzoKPiArCQlyZXR1cm4gMzsKPiArCWNhc2UgUkFURV8zXzI6 Cj4gKwkJcmV0dXJuIDQ7Cj4gKwljYXNlIFJBVEVfNF8zOgo+ICsJCXJldHVybiA1Owo+ICsJY2Fz ZSBSQVRFXzVfNDoKPiArCQlyZXR1cm4gNjsKPiArCWRlZmF1bHQ6Cj4gKwkJcmV0dXJuIC0xOwo+ ICsJfQo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGhkcHR4X2RwX2Nsa19lbmFibGUoc3RydWN0IGNk bnNfaGRwdHhfZHBfcGh5ICpjZG5zX3BoeSkKPiArewo+ICsJc3RydWN0IGRldmljZSAqZGV2ID0g Y2Ruc19waHktPmRldjsKPiArCXUzMiByZWZfY2xrX3JhdGU7Cj4gKwlpbnQgcmV0Owo+ICsKPiAr CWNkbnNfcGh5LT5yZWZfY2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgInJlZiIpOwo+ICsJaWYgKElT X0VSUihjZG5zX3BoeS0+cmVmX2NsaykpIHsKPiArCQlkZXZfZXJyKGRldiwgInBoeSByZWYgY2xv Y2sgbm90IGZvdW5kXG4iKTsKPiArCQlyZXR1cm4gUFRSX0VSUihjZG5zX3BoeS0+cmVmX2Nsayk7 Cj4gKwl9Cj4gKwo+ICsJY2Ruc19waHktPmFwYl9jbGsgPSBkZXZtX2Nsa19nZXQoZGV2LCAiYXBi Iik7Cj4gKwlpZiAoSVNfRVJSKGNkbnNfcGh5LT5hcGJfY2xrKSkgewo+ICsJCWRldl9lcnIoZGV2 LCAicGh5IGFwYiBjbG9jayBub3QgZm91bmRcbiIpOwo+ICsJCXJldHVybiBQVFJfRVJSKGNkbnNf cGh5LT5hcGJfY2xrKTsKPiArCX0KPiArCj4gKwlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoY2Ru c19waHktPnJlZl9jbGspOwo+ICsJaWYgKHJldCkgewo+ICsJCWRldl9lcnIoY2Ruc19waHktPmRl diwgIkZhaWxlZCB0byBwcmVwYXJlIHJlZiBjbG9ja1xuIik7Cj4gKwkJcmV0dXJuIHJldDsKPiAr CX0KPiArCj4gKwlyZWZfY2xrX3JhdGUgPSBjbGtfZ2V0X3JhdGUoY2Ruc19waHktPnJlZl9jbGsp Owo+ICsJaWYgKCFyZWZfY2xrX3JhdGUpIHsKPiArCQlkZXZfZXJyKGNkbnNfcGh5LT5kZXYsICJG YWlsZWQgdG8gZ2V0IHJlZiBjbG9jayByYXRlXG4iKTsKPiArCQlnb3RvIGVycl9yZWZfY2xrOwo+ ICsJfQo+ICsKPiArCWlmIChyZWZfY2xrX3JhdGUgPT0gUkVGX0NMS18yN01IWikKPiArCQljZG5z X3BoeS0+cmVmX2Nsa19yYXRlID0gcmVmX2Nsa19yYXRlOwo+ICsJZWxzZSB7Cj4gKwkJZGV2X2Vy cihjZG5zX3BoeS0+ZGV2LCAiTm90IHN1cHBvcnQgUmVmIENsb2NrIFJhdGUoJWRIeilcbiIsIHJl Zl9jbGtfcmF0ZSk7Cj4gKwkJZ290byBlcnJfcmVmX2NsazsKPiArCX0KPiArCj4gKwlyZXQgPSBj bGtfcHJlcGFyZV9lbmFibGUoY2Ruc19waHktPmFwYl9jbGspOwo+ICsJaWYgKHJldCkgewo+ICsJ CWRldl9lcnIoY2Ruc19waHktPmRldiwgIkZhaWxlZCB0byBwcmVwYXJlIGFwYiBjbG9ja1xuIik7 Cj4gKwkJZ290byBlcnJfcmVmX2NsazsKPiArCX0KPiArCj4gKwlyZXR1cm4gMDsKPiArCj4gK2Vy cl9yZWZfY2xrOgo+ICsJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGNkbnNfcGh5LT5yZWZfY2xrKTsK PiArCXJldHVybiAtRUlOVkFMOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBoZHB0eF9kcF9jbGtf ZGlzYWJsZShzdHJ1Y3QgY2Ruc19oZHB0eF9kcF9waHkgKmNkbnNfcGh5KQo+ICt7Cj4gKwljbGtf ZGlzYWJsZV91bnByZXBhcmUoY2Ruc19waHktPnJlZl9jbGspOwo+ICsJY2xrX2Rpc2FibGVfdW5w cmVwYXJlKGNkbnNfcGh5LT5hcGJfY2xrKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgaGRwdHhf ZHBfYXV4X2NmZyhzdHJ1Y3QgY2Ruc19oZHB0eF9kcF9waHkgKmNkbnNfcGh5KQo+ICt7Cj4gKwkv KiBQb3dlciB1cCBBdXggKi8KPiArCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhEQV9D WUFfQVVYREFfQ1lBLCAxKTsKPiArCj4gKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRY X0RJR19DVFJMX1JFR18xLCAweDMpOwo+ICsJbmRlbGF5KDE1MCk7Cj4gKwljZG5zX3BoeV9yZWdf d3JpdGUoY2Ruc19waHksIFRYX0RJR19DVFJMX1JFR18yLCAzNik7Cj4gKwluZGVsYXkoMTUwKTsK PiArCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfQU5BX0NUUkxfUkVHXzIsIDB4MDEw MCk7Cj4gKwluZGVsYXkoMTUwKTsKPiArCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhf QU5BX0NUUkxfUkVHXzIsIDB4MDMwMCk7Cj4gKwluZGVsYXkoMTUwKTsKPiArCWNkbnNfcGh5X3Jl Z193cml0ZShjZG5zX3BoeSwgVFhfQU5BX0NUUkxfUkVHXzMsIDB4MDAwMCk7Cj4gKwluZGVsYXko MTUwKTsKPiArCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfQU5BX0NUUkxfUkVHXzEs IDB4MjAwOCk7Cj4gKwluZGVsYXkoMTUwKTsKPiArCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3Bo eSwgVFhfQU5BX0NUUkxfUkVHXzEsIDB4MjAxOCk7Cj4gKwluZGVsYXkoMTUwKTsKPiArCWNkbnNf cGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfQU5BX0NUUkxfUkVHXzEsIDB4QTAxOCk7Cj4gKwlu ZGVsYXkoMTUwKTsKPiArCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfQU5BX0NUUkxf UkVHXzIsIDB4MDMwQyk7Cj4gKwluZGVsYXkoMTUwKTsKPiArCWNkbnNfcGh5X3JlZ193cml0ZShj ZG5zX3BoeSwgVFhfQU5BX0NUUkxfUkVHXzUsIDB4MDAwMCk7Cj4gKwluZGVsYXkoMTUwKTsKPiAr CWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfQU5BX0NUUkxfUkVHXzQsIDB4MTAwMSk7 Cj4gKwluZGVsYXkoMTUwKTsKPiArCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfQU5B X0NUUkxfUkVHXzEsIDB4QTA5OCk7Cj4gKwluZGVsYXkoMTUwKTsKPiArCWNkbnNfcGh5X3JlZ193 cml0ZShjZG5zX3BoeSwgVFhfQU5BX0NUUkxfUkVHXzEsIDB4QTE5OCk7Cj4gKwluZGVsYXkoMTUw KTsKPiArCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfQU5BX0NUUkxfUkVHXzIsIDB4 MDMwZCk7Cj4gKwluZGVsYXkoMTUwKTsKPiArCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwg VFhfQU5BX0NUUkxfUkVHXzIsIDB4MDMwZik7Cj4gK30KPiArCj4gKy8qIFBNQSBjb21tb24gY29u ZmlndXJhdGlvbiBmb3IgMjdNSHogKi8KPiArc3RhdGljIHZvaWQgaGRwdHhfZHBfcGh5X3BtYV9j bW5fY2ZnXzI3bWh6KHN0cnVjdCBjZG5zX2hkcHR4X2RwX3BoeSAqY2Ruc19waHkpCj4gK3sKPiAr CXUzMiBudW1fbGFuZXMgPSBjZG5zX3BoeS0+bnVtX2xhbmVzOwo+ICsJdTE2IHZhbDsKPiArCWlu dCBrOwo+ICsKPiArCXZhbCA9IGNkbnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5LCBQSFlfUE1BX0NN Tl9DVFJMMSk7Cj4gKwl2YWwgJj0gMHhGRkY3Owo+ICsJdmFsIHw9IDB4MDAwODsKPiArCWNkbnNf cGh5X3JlZ193cml0ZShjZG5zX3BoeSwgUEhZX1BNQV9DTU5fQ1RSTDEsIHZhbCk7Cj4gKwo+ICsJ LyogU3RhcnR1cCBzdGF0ZSBtYWNoaW5lIHJlZ2lzdGVycyAqLwo+ICsJY2Ruc19waHlfcmVnX3dy aXRlKGNkbnNfcGh5LCBDTU5fU1NNX0JJQVNfVE1SLCAweDAwODcpOwo+ICsJY2Ruc19waHlfcmVn X3dyaXRlKGNkbnNfcGh5LCBDTU5fUExMU00wX1BMTEVOX1RNUiwgMHgwMDFCKTsKPiArCWNkbnNf cGh5X3JlZ193cml0ZShjZG5zX3BoeSwgQ01OX1BMTFNNMF9QTExQUkVfVE1SLCAweDAwMzYpOwo+ ICsJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fUExMU00wX1BMTFZSRUZfVE1SLCAw eDAwMUIpOwo+ICsJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fUExMU00wX1BMTExP Q0tfVE1SLCAweDAwNkMpOwo+ICsKPiArCS8qIEN1cnJlbnQgY2FsaWJyYXRpb24gcmVnaXN0ZXJz ICovCj4gKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9JQ0FMX0lOSVRfVE1SLCAw eDAwNDQpOwo+ICsJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fSUNBTF9JVEVSX1RN UiwgMHgwMDA2KTsKPiArCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgQ01OX0lDQUxfQURK X0lOSVRfVE1SLCAweDAwMjIpOwo+ICsJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5f SUNBTF9BREpfSVRFUl9UTVIsIDB4MDAwNik7Cj4gKwo+ICsJLyogUmVzaXN0b3IgY2FsaWJyYXRp b24gcmVnaXN0ZXJzICovCj4gKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9UWFBV Q0FMX0lOSVRfVE1SLCAweDAwMjIpOwo+ICsJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBD TU5fVFhQVUNBTF9JVEVSX1RNUiwgMHgwMDA2KTsKPiArCWNkbnNfcGh5X3JlZ193cml0ZShjZG5z X3BoeSwgQ01OX1RYUFVfQURKX0lOSVRfVE1SLCAweDAwMjIpOwo+ICsJY2Ruc19waHlfcmVnX3dy aXRlKGNkbnNfcGh5LCBDTU5fVFhQVV9BREpfSVRFUl9UTVIsIDB4MDAwNik7Cj4gKwljZG5zX3Bo eV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9UWFBEQ0FMX0lOSVRfVE1SLCAweDAwMjIpOwo+ICsJ Y2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fVFhQRENBTF9JVEVSX1RNUiwgMHgwMDA2 KTsKPiArCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgQ01OX1RYUERfQURKX0lOSVRfVE1S LCAweDAwMjIpOwo+ICsJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fVFhQRF9BREpf SVRFUl9UTVIsIDB4MDAwNik7Cj4gKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9S WENBTF9JTklUX1RNUiwgMHgwMDIyKTsKPiArCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwg Q01OX1JYQ0FMX0lURVJfVE1SLCAweDAwMDYpOwo+ICsJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNf cGh5LCBDTU5fUlhfQURKX0lOSVRfVE1SLCAweDAwMjIpOwo+ICsJY2Ruc19waHlfcmVnX3dyaXRl KGNkbnNfcGh5LCBDTU5fUlhfQURKX0lURVJfVE1SLCAweDAwMDYpOwo+ICsKPiArCWZvciAoayA9 IDA7IGsgPCBudW1fbGFuZXM7IGsgPSBrICsgMSkgewo+ICsJCS8qIFBvd2VyIHN0YXRlIG1hY2hp bmUgcmVnaXN0ZXJzICovCj4gKwkJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBYQ1ZSX1BT TV9DQUxfVE1SICB8IChrIDw8IDkpLCAweDAxNkQpOwo+ICsJCWNkbnNfcGh5X3JlZ193cml0ZShj ZG5zX3BoeSwgWENWUl9QU01fQTBJTl9UTVIgfCAoayA8PCA5KSwgMHgwMTZEKTsKPiArCQkvKiBU cmFuc2NlaXZlciBjb250cm9sIGFuZCBkaWFnbm9zdGljIHJlZ2lzdGVycyAqLwo+ICsJCWNkbnNf cGh5X3JlZ193cml0ZShjZG5zX3BoeSwgWENWUl9ESUFHX0xBTkVfRkNNX0VOX01HTl9UTVIgfCAo ayA8PCA5KSwgMHgwMEEyKTsKPiArCQljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX0RJ QUdfQkdSRUZfUFJFRFJWX0RFTEFZICAgIHwgKGsgPDwgOSksIDB4MDA5Nyk7Cj4gKwkJLyogVHJh bnNtaXR0ZXIgcmVjZWl2ZXIgZGV0ZWN0IHJlZ2lzdGVycyAqLwo+ICsJCWNkbnNfcGh5X3JlZ193 cml0ZShjZG5zX3BoeSwgVFhfUkNWREVUX0VOX1RNUiB8IChrIDw8IDkpLCAweDBBOEMpOwo+ICsJ CWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfUkNWREVUX1NUX1RNUiB8IChrIDw8IDkp LCAweDAwMzYpOwo+ICsJfQo+ICsKPiArCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhf RElBR19BQ1lBXzAsIDEpOwo+ICsJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBUWF9ESUFH X0FDWUFfMSwgMSk7Cj4gKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX0RJQUdfQUNZ QV8yLCAxKTsKPiArCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfRElBR19BQ1lBXzMs IDEpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBoZHB0eF9kcF9waHlfcG1hX2Ntbl9wbGwwXzI3 bWh6KHN0cnVjdCBjZG5zX2hkcHR4X2RwX3BoeSAqY2Ruc19waHkpCj4gK3sKPiArCXUzMiBudW1f bGFuZXMgPSBjZG5zX3BoeS0+bnVtX2xhbmVzOwo+ICsJdTMyIGxpbmtfcmF0ZSA9IGNkbnNfcGh5 LT5saW5rX3JhdGU7Cj4gKwl1MTYgdmFsOwo+ICsJaW50IGluZGV4LCBpLCBrOwo+ICsKPiArCS8q IERQIFBMTCBkYXRhIHJhdGUgMC8xIGNsb2NrIGRpdmlkZXIgdmFsdWUgKi8KPiArCXZhbCA9IGNk bnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5LCBQSFlfSERQX0NMS19DVEwpOwo+ICsJdmFsICY9IDB4 MDBGRjsKPiArCWlmIChsaW5rX3JhdGUgPD0gUkFURV8yXzcpCj4gKwkJdmFsIHw9IDB4MjQwMDsK PiArCWVsc2UKPiArCQl2YWwgfD0gMHgxMjAwOwo+ICsJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNf cGh5LCBQSFlfSERQX0NMS19DVEwsIHZhbCk7Cj4gKwo+ICsJLyogSGlnaCBzcGVlZCBjbG9jayAw LzEgZGl2ICovCj4gKwl2YWwgPSBjZG5zX3BoeV9yZWdfcmVhZChjZG5zX3BoeSwgQ01OX0RJQUdf SFNDTEtfU0VMKTsKPiArCXZhbCAmPSAweEZGQ0M7Cj4gKwlpZiAobGlua19yYXRlIDw9IFJBVEVf Ml83KQo+ICsJCXZhbCB8PSAweDAwMTE7Cj4gKwljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHks IENNTl9ESUFHX0hTQ0xLX1NFTCwgdmFsKTsKPiArCj4gKwlmb3IgKGsgPSAwOyBrIDwgbnVtX2xh bmVzOyBrKyspIHsKPiArCQl2YWwgPSBjZG5zX3BoeV9yZWdfcmVhZChjZG5zX3BoeSwgKFhDVlJf RElBR19IU0NMS19TRUwgfCAoayA8PCA5KSkpOwo+ICsJCXZhbCA9IHZhbCAmIDB4Q0ZGRjsKPiAr CQlpZiAobGlua19yYXRlIDw9IFJBVEVfMl83KQo+ICsJCQl2YWwgfD0gMHgxMDAwOwo+ICsJCWNk bnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgKFhDVlJfRElBR19IU0NMS19TRUwgfCAoayA8PCA5 KSksIHZhbCk7Cj4gKwl9Cj4gKwo+ICsJLyogRFAgUEhZIFBMTCAyN01IeiBjb25maWd1cmF0aW9u ICovCj4gKwlpbmRleCA9IGxpbmtfcmF0ZV9pbmRleChsaW5rX3JhdGUpOwo+ICsJZm9yIChpID0g MDsgaSA8IEFSUkFZX1NJWkUocGh5X3BsbF8yN21fY2ZnKTsgaSsrKQo+ICsJCWNkbnNfcGh5X3Jl Z193cml0ZShjZG5zX3BoeSwgcGh5X3BsbF8yN21fY2ZnW2ldLmFkZHIsCj4gKwkJCQlwaHlfcGxs XzI3bV9jZmdbaV0udmFsW2luZGV4XSk7Cj4gKwo+ICsJLyogVHJhbnNjZWl2ZXIgY29udHJvbCBh bmQgZGlhZ25vc3RpYyByZWdpc3RlcnMgKi8KPiArCWZvciAoayA9IDA7IGsgPCBudW1fbGFuZXM7 IGsrKykgewo+ICsJCXZhbCA9IGNkbnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5LCAoWENWUl9ESUFH X1BMTERSQ19DVFJMIHwgKGsgPDwgOSkpKTsKPiArCQl2YWwgPSB2YWwgJiAweDhGRkY7Cj4gKwkJ aWYgKGxpbmtfcmF0ZSA8PSBSQVRFXzJfNykKPiArCQkJdmFsIHw9IDB4MjAwMDsKPiArCQllbHNl Cj4gKwkJCXZhbCB8PSAweDEwMDA7Cj4gKwkJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCAo WENWUl9ESUFHX1BMTERSQ19DVFJMIHwgKGsgPDwgOSkpLCB2YWwpOwo+ICsJfQo+ICsKPiArCWZv ciAoayA9IDA7IGsgPCBudW1fbGFuZXM7IGsgPSBrICsgMSkgewo+ICsJCS8qIFBvd2VyIHN0YXRl IG1hY2hpbmUgcmVnaXN0ZXJzICovCj4gKwkJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCAo WENWUl9QU01fUkNUUkwgfCAoayA8PCA5KSksICAweEJFRkMpOwo+ICsJCWNkbnNfcGh5X3JlZ193 cml0ZShjZG5zX3BoeSwgKFRYX1BTQ19BMCB8IChrIDw8IDkpKSwgMHg2Nzk5KTsKPiArCQljZG5z X3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIChUWF9QU0NfQTEgfCAoayA8PCA5KSksIDB4Njc5OCk7 Cj4gKwkJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCAoVFhfUFNDX0EyIHwgKGsgPDwgOSkp LCAweDAwOTgpOwo+ICsJCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgKFRYX1BTQ19BMyB8 IChrIDw8IDkpKSwgMHgwMDk4KTsKPiArCQkvKiBSZWNlaXZlciBjYWxpYnJhdGlvbiBwb3dlciBz dGF0ZSBkZWZpbml0aW9uIHJlZ2lzdGVyICovCj4gKwkJdmFsID0gY2Ruc19waHlfcmVnX3JlYWQo Y2Ruc19waHksIFJYX1BTQ19DQUwgfCAoayA8PCA5KSk7Cj4gKwkJdmFsICY9IDB4RkZCQjsKPiAr CQljZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIChSWF9QU0NfQ0FMIHwgKGsgPDwgOSkpLCB2 YWwpOwo+ICsJCXZhbCA9IGNkbnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5LCBSWF9QU0NfQTAgIHwg KGsgPDwgOSkpOwo+ICsJCXZhbCAmPSAweEZGQkI7Cj4gKwkJY2Ruc19waHlfcmVnX3dyaXRlKGNk bnNfcGh5LCAoUlhfUFNDX0EwICB8IChrIDw8IDkpKSwgdmFsKTsKPiArCX0KPiArfQo+ICsKPiAr c3RhdGljIHZvaWQgaGRwdHhfZHBfcGh5X3JlZl9jbG9ja190eXBlKHN0cnVjdCBjZG5zX2hkcHR4 X2RwX3BoeSAqY2Ruc19waHkpCj4gK3sKPiArCXUzMiB2YWw7Cj4gKwo+ICsJdmFsID0gY2Ruc19w aHlfcmVnX3JlYWQoY2Ruc19waHksIFBIWV9QTUFfQ01OX0NUUkwxKTsKPiArCXZhbCAmPSAweEZG OEY7Cj4gKwkvKgo+ICsJICogc2luZ2xlIGVuZGVkIHJlZmVyZW5jZSBjbG9jayAodmFsIHw9IDB4 MDAzMCk7Cj4gKwkgKiBkaWZmZXJlbnRpYWwgY2xvY2sgICh2YWwgfD0gMHgwMDAwKTsKPiArCSAq Cj4gKwkgKiBmb3IgZGlmZmVyZW50aWFsIGNsb2NrIG9uIHRoZSByZWZjbGtfcCBhbmQKPiArCSAq IHJlZmNsa19tIG9mZiBjaGlwIHBpbnM6IENNTl9ESUFHX0FDWUFbOF09MSdiMQo+ICsJICogY2Ru c19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fRElBR19BQ1lBLCAweDAxMDApOwo+ICsJICov Cj4gKwl2YWwgfD0gMHgwMDMwOwo+ICsJY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBQSFlf UE1BX0NNTl9DVFJMMSwgdmFsKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBoZHB0eF9kcF9waHlf cG93ZXJfdXAoc3RydWN0IGNkbnNfaGRwdHhfZHBfcGh5ICpjZG5zX3BoeSkKPiArewo+ICsJdTMy IHZhbCwgaTsKPiArCj4gKwkvKiBFbmFibGUgSERQIFBMTOKAmXMgZm9yIGhpZ2ggc3BlZWQgY2xv Y2tzICovCj4gKwl2YWwgPSBjZG5zX3BoeV9yZWdfcmVhZChjZG5zX3BoeSwgUEhZX0hEUF9DTEtf Q1RMKTsKPiArCXZhbCB8PSAoMSA8PCAwKTsKPiArCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3Bo eSwgUEhZX0hEUF9DTEtfQ1RMLCB2YWwpOwo+ICsJLyogV2FpdCBmb3IgUExMIHJlYWR5IEFDSyAq Lwo+ICsJZm9yIChpID0gMDsgaSA8IDEwOyBpKyspIHsKPiArCQl2YWwgPSBjZG5zX3BoeV9yZWdf cmVhZChjZG5zX3BoeSwgUEhZX0hEUF9DTEtfQ1RMKTsKPiArCQlpZiAodmFsICYgKDEgPDwgMSkp Cj4gKwkJCWJyZWFrOwo+ICsJCW1zbGVlcCgyMCk7Cj4gKwl9Cj4gKwlpZiAoaSA9PSAxMCkgewo+ ICsJCWRldl9lcnIoY2Ruc19waHktPmRldiwgIldhaXQgUExMIEFjayBmYWlsZWRcbiIpOwo+ICsJ CXJldHVybiAtMTsKPiArCX0KPiArCj4gKwkvKiBFbmFibGUgSERQIFBMTOKAmXMgZGF0YSByYXRl IGFuZCBmdWxsIHJhdGUgY2xvY2tzIG91dCBvZiBQTUEuICovCj4gKwl2YWwgPSBjZG5zX3BoeV9y ZWdfcmVhZChjZG5zX3BoeSwgUEhZX0hEUF9DTEtfQ1RMKTsKPiArCXZhbCB8PSAoMSA8PCAyKTsK PiArCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgUEhZX0hEUF9DTEtfQ1RMLCB2YWwpOwo+ ICsJLyogV2FpdCBmb3IgUExMIGNsb2NrIGVuYWJsZSBBQ0sgKi8KPiArCWZvciAoaSA9IDA7IGkg PCAxMDsgaSsrKSB7Cj4gKwkJdmFsID0gY2Ruc19waHlfcmVnX3JlYWQoY2Ruc19waHksIFBIWV9I RFBfQ0xLX0NUTCk7Cj4gKwkJaWYgKHZhbCAmICgxIDw8IDMpKQo+ICsJCQlicmVhazsKPiArCQlt c2xlZXAoMjApOwo+ICsJfQo+ICsJaWYgKGkgPT0gMTApIHsKPiArCQlkZXZfZXJyKGNkbnNfcGh5 LT5kZXYsICJXYWl0IFBMTCBjbG9jayBlbmFibGUgQUNrIGZhaWxlZFxuIik7Cj4gKwkJcmV0dXJu IC0xOwo+ICsJfQo+ICsKPiArCS8qIENvbmZpZ3VyZSBQSFkgaW4gQTIgTW9kZSAqLwo+ICsJY2Ru c19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBQSFlfSERQX01PREVfQ1RSTCwgMHgwMDA0KTsKPiAr CS8qIFdhaXQgZm9yIFBvd2VyIFN0YXRlIEEyIEFjayAqLwo+ICsJZm9yIChpID0gMDsgaSA8IDEw OyBpKyspIHsKPiArCQl2YWwgPSBjZG5zX3BoeV9yZWdfcmVhZChjZG5zX3BoeSwgUEhZX0hEUF9N T0RFX0NUUkwpOwo+ICsJCWlmICh2YWwgJiAoMSA8PCA2KSkKPiArCQkJYnJlYWs7Cj4gKwkJbXNs ZWVwKDIwKTsKPiArCX0KPiArCWlmIChpID09IDEwKSB7Cj4gKwkJZGV2X2VycihjZG5zX3BoeS0+ ZGV2LCAiV2FpdCBBMiBBY2sgZmFpbGVkXG4iKTsKPiArCQlyZXR1cm4gLTE7Cj4gKwl9Cj4gKwo+ ICsJLyogQ29uZmlndXJlIFBIWSBpbiBBMCBtb2RlIChQSFkgbXVzdCBiZSBpbiB0aGUgQTAgcG93 ZXIKPiArCSAqIHN0YXRlIGluIG9yZGVyIHRvIHRyYW5zbWl0IGRhdGEpCj4gKwkgKi8KPiArCWNk bnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgUEhZX0hEUF9NT0RFX0NUUkwsIDB4MDEwMSk7Cj4g Kwo+ICsJLyogV2FpdCBmb3IgUG93ZXIgU3RhdGUgQTAgQWNrICovCj4gKwlmb3IgKGkgPSAwOyBp IDwgMTA7IGkrKykgewo+ICsJCXZhbCA9IGNkbnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5LCBQSFlf SERQX01PREVfQ1RSTCk7Cj4gKwkJaWYgKHZhbCAmICgxIDw8IDQpKQo+ICsJCQlicmVhazsKPiAr CQltc2xlZXAoMjApOwo+ICsJfQo+ICsJaWYgKGkgPT0gMTApIHsKPiArCQlkZXZfZXJyKGNkbnNf cGh5LT5kZXYsICJXYWl0IEEwIEFjayBmYWlsZWRcbiIpOwo+ICsJCXJldHVybiAtMTsKPiArCX0K PiArCj4gKwljZG5zX3BoeS0+cG93ZXJfdXAgPSB0cnVlOwo+ICsKPiArCXJldHVybiAwOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgdm9pZCBoZHB0eF9kcF9waHlfcG93ZXJfZG93bihzdHJ1Y3QgY2Ruc19o ZHB0eF9kcF9waHkgKmNkbnNfcGh5KQo+ICt7Cj4gKwl1MTYgdmFsOwo+ICsJaW50IGk7Cj4gKwo+ ICsJaWYgKCFjZG5zX3BoeS0+cG93ZXJfdXApCj4gKwkJcmV0dXJuOwo+ICsKPiArCS8qIFBsYWNl IHRoZSBQSFkgbGFuZXMgaW4gdGhlIEEzIHBvd2VyIHN0YXRlLiAqLwo+ICsJY2Ruc19waHlfcmVn X3dyaXRlKGNkbnNfcGh5LCBQSFlfSERQX01PREVfQ1RSTCwgMHg4KTsKPiArCS8qIFdhaXQgZm9y IFBvd2VyIFN0YXRlIEEzIEFjayAqLwo+ICsJZm9yIChpID0gMDsgaSA8IDEwOyBpKyspIHsKPiAr CQl2YWwgPSBjZG5zX3BoeV9yZWdfcmVhZChjZG5zX3BoeSwgUEhZX0hEUF9NT0RFX0NUUkwpOwo+ ICsJCWlmICh2YWwgJiAoMSA8PCA3KSkKPiArCQkJYnJlYWs7Cj4gKwkJbXNsZWVwKDIwKTsKPiAr CX0KPiArCWlmIChpID09IDEwKSB7Cj4gKwkJZGV2X2VycihjZG5zX3BoeS0+ZGV2LCAiV2FpdCBB MyBBY2sgZmFpbGVkXG4iKTsKPiArCQlyZXR1cm47Cj4gKwl9Cj4gKwo+ICsJLyogRGlzYWJsZSBI RFAgUExM4oCZcyBkYXRhIHJhdGUgYW5kIGZ1bGwgcmF0ZSBjbG9ja3Mgb3V0IG9mIFBNQS4gKi8K PiArCXZhbCA9IGNkbnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5LCBQSFlfSERQX0NMS19DVEwpOwo+ ICsJdmFsICY9IH4oMSA8PCAyKTsKPiArCWNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgUEhZ X0hEUF9DTEtfQ1RMLCB2YWwpOwo+ICsJLyogV2FpdCBmb3IgUExMIGNsb2NrIGdhdGUgQUNLICov Cj4gKwlmb3IgKGkgPSAwOyBpIDwgMTA7IGkrKykgewo+ICsJCXZhbCA9IGNkbnNfcGh5X3JlZ19y ZWFkKGNkbnNfcGh5LCBQSFlfSERQX0NMS19DVEwpOwo+ICsJCWlmICghKHZhbCAmICgxIDw8IDMp KSkKPiArCQkJYnJlYWs7Cj4gKwkJbXNsZWVwKDIwKTsKPiArCX0KPiArCWlmIChpID09IDEwKSB7 Cj4gKwkJZGV2X2VycihjZG5zX3BoeS0+ZGV2LCAiV2FpdCBQTEwgY2xvY2sgZ2F0ZSBBY2sgZmFp bGVkXG4iKTsKPiArCQlyZXR1cm47Cj4gKwl9Cj4gKwo+ICsJLyogRGlzYWJsZSBIRFAgUExM4oCZ cyBmb3IgaGlnaCBzcGVlZCBjbG9ja3MgKi8KPiArCXZhbCA9IGNkbnNfcGh5X3JlZ19yZWFkKGNk bnNfcGh5LCBQSFlfSERQX0NMS19DVEwpOwo+ICsJdmFsICY9IH4oMSA8PCAwKTsKPiArCWNkbnNf cGh5X3JlZ193cml0ZShjZG5zX3BoeSwgUEhZX0hEUF9DTEtfQ1RMLCB2YWwpOwo+ICsJLyogV2Fp dCBmb3IgUExMIGRpc2FibGUgQUNLICovCj4gKwlmb3IgKGkgPSAwOyBpIDwgMTA7IGkrKykgewo+ ICsJCXZhbCA9IGNkbnNfcGh5X3JlZ19yZWFkKGNkbnNfcGh5LCBQSFlfSERQX0NMS19DVEwpOwo+ ICsJCWlmICghKHZhbCAmICgxIDw8IDEpKSkKPiArCQkJYnJlYWs7Cj4gKwkJbXNsZWVwKDIwKTsK PiArCX0KPiArCWlmIChpID09IDEwKSB7Cj4gKwkJZGV2X2VycihjZG5zX3BoeS0+ZGV2LCAiV2Fp dCBQTEwgZGlzYWJsZSBBY2sgZmFpbGVkXG4iKTsKPiArCQlyZXR1cm47Cj4gKwl9Cj4gK30KPiAr Cj4gK3N0YXRpYyBpbnQgY2Ruc19oZHB0eF9kcF9waHlfb24oc3RydWN0IHBoeSAqcGh5KQo+ICt7 Cj4gKwlzdHJ1Y3QgY2Ruc19oZHB0eF9kcF9waHkgKmNkbnNfcGh5ID0gcGh5X2dldF9kcnZkYXRh KHBoeSk7Cj4gKwo+ICsJcmV0dXJuIGhkcHR4X2RwX3BoeV9wb3dlcl91cChjZG5zX3BoeSk7Cj4g K30KPiArCj4gK3N0YXRpYyBpbnQgY2Ruc19oZHB0eF9kcF9waHlfb2ZmKHN0cnVjdCBwaHkgKnBo eSkKPiArewo+ICsJc3RydWN0IGNkbnNfaGRwdHhfZHBfcGh5ICpjZG5zX3BoeSA9IHBoeV9nZXRf ZHJ2ZGF0YShwaHkpOwo+ICsKPiArCWhkcHR4X2RwX3BoeV9wb3dlcl9kb3duKGNkbnNfcGh5KTsK PiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBjZG5zX2hkcHR4X2RwX3Bo eV9pbml0KHN0cnVjdCBwaHkgKnBoeSkKPiArewo+ICsJc3RydWN0IGNkbnNfaGRwdHhfZHBfcGh5 ICpjZG5zX3BoeSA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkpOwo+ICsJaW50IHJldDsKPiArCj4gKwlo ZHB0eF9kcF9waHlfcmVmX2Nsb2NrX3R5cGUoY2Ruc19waHkpOwo+ICsKPiArCS8qIFBIWSBwb3dl ciB1cCAqLwo+ICsJcmV0ID0gaGRwdHhfZHBfcGh5X3Bvd2VyX3VwKGNkbnNfcGh5KTsKPiArCWlm IChyZXQgPCAwKQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJaGRwdHhfZHBfYXV4X2NmZyhjZG5z X3BoeSk7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIGludCBjZG5zX2hk cHR4X2RwX2NvbmZpZ3VyZShzdHJ1Y3QgcGh5ICpwaHksCj4gKwkJCQkgICAgIHVuaW9uIHBoeV9j b25maWd1cmVfb3B0cyAqb3B0cykKPiArewo+ICsJc3RydWN0IGNkbnNfaGRwdHhfZHBfcGh5ICpj ZG5zX3BoeSA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkpOwo+ICsJaW50IHJldDsKPiArCj4gKwljZG5z X3BoeS0+bGlua19yYXRlID0gb3B0cy0+ZHAubGlua19yYXRlOwo+ICsJY2Ruc19waHktPm51bV9s YW5lcyA9IG9wdHMtPmRwLmxhbmVzOwo+ICsKPiArCWlmIChjZG5zX3BoeS0+bGlua19yYXRlID4g TUFYX0xJTktfUkFURSkgewo+ICsJCWRldl9lcnIoY2Ruc19waHktPmRldiwgIkxpbmsgUmF0ZSgl ZCkgTm90IHN1cHBvcnRlZFxuIiwgY2Ruc19waHktPmxpbmtfcmF0ZSk7Cj4gKwkJcmV0dXJuIGZh bHNlOwo+ICsJfQo+ICsKPiArCS8qIERpc2FibGUgcGh5IGNsb2NrIGlmIFBIWSBpbiBwb3dlciB1 cCBzdGF0ZSAqLwo+ICsJaGRwdHhfZHBfcGh5X3Bvd2VyX2Rvd24oY2Ruc19waHkpOwo+ICsKPiAr CWlmIChjZG5zX3BoeS0+cmVmX2Nsa19yYXRlID09IFJFRl9DTEtfMjdNSFopIHsKPiArCQloZHB0 eF9kcF9waHlfcG1hX2Ntbl9jZmdfMjdtaHooY2Ruc19waHkpOwo+ICsJCWhkcHR4X2RwX3BoeV9w bWFfY21uX3BsbDBfMjdtaHooY2Ruc19waHkpOwo+ICsJfSBlbHNlCj4gKwkJZGV2X2VycihjZG5z X3BoeS0+ZGV2LCAiTm90IHN1cHBvcnQgcmVmIGNsb2NrIHJhdGVcbiIpOwo+ICsKPiArCS8qIFBI WSBwb3dlciB1cCAqLwo+ICsJcmV0ID0gaGRwdHhfZHBfcGh5X3Bvd2VyX3VwKGNkbnNfcGh5KTsK PiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHBoeV9v cHMgY2Ruc19oZHB0eF9kcF9waHlfb3BzID0gewo+ICsJLmluaXQJCT0gY2Ruc19oZHB0eF9kcF9w aHlfaW5pdCwKPiArCS5jb25maWd1cmUJPSBjZG5zX2hkcHR4X2RwX2NvbmZpZ3VyZSwKPiArCS5w b3dlcl9vbgk9IGNkbnNfaGRwdHhfZHBfcGh5X29uLAo+ICsJLnBvd2VyX29mZgk9IGNkbnNfaGRw dHhfZHBfcGh5X29mZiwKPiArCS5vd25lcgkJPSBUSElTX01PRFVMRSwKPiArfTsKPiArCj4gK3N0 YXRpYyBpbnQgY2Ruc19oZHB0eF9kcF9waHlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGRldikKPiArewo+ICsJc3RydWN0IGNkbnNfaGRwdHhfZHBfcGh5ICpjZG5zX3BoeTsKPiArCXN0 cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7Cj4gKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5v ZGUgPSBkZXYtPm9mX25vZGU7Cj4gKwlzdHJ1Y3QgcGh5X3Byb3ZpZGVyICpwaHlfcHJvdmlkZXI7 Cj4gKwlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKPiArCXN0cnVjdCBwaHkgKnBoeTsKPiArCWludCBy ZXQ7Cj4gKwo+ICsJY2Ruc19waHkgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKmNkbnNfcGh5 KSwgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIWNkbnNfcGh5KQo+ICsJCXJldHVybiAtRU5PTUVNOwo+ ICsKPiArCWRldl9zZXRfZHJ2ZGF0YShkZXYsIGNkbnNfcGh5KTsKPiArCWNkbnNfcGh5LT5kZXYg PSBkZXY7Cj4gKwltdXRleF9pbml0KCZjZG5zX3BoeS0+bWJveF9tdXRleCk7Cj4gKwo+ICsJcmVz ID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTsKPiArCWlm ICghcmVzKQo+ICsJCXJldHVybiAtRU5PREVWOwo+ICsJY2Ruc19waHktPnJlZ3MgPSBkZXZtX2lv cmVtYXAoZGV2LCByZXMtPnN0YXJ0LCByZXNvdXJjZV9zaXplKHJlcykpOwo+ICsJaWYgKElTX0VS UihjZG5zX3BoeS0+cmVncykpCj4gKwkJcmV0dXJuIFBUUl9FUlIoY2Ruc19waHktPnJlZ3MpOwo+ ICsKPiArCXBoeSA9IGRldm1fcGh5X2NyZWF0ZShkZXYsIG5vZGUsICZjZG5zX2hkcHR4X2RwX3Bo eV9vcHMpOwo+ICsJaWYgKElTX0VSUihwaHkpKQo+ICsJCXJldHVybiBQVFJfRVJSKHBoeSk7Cj4g Kwo+ICsJcGh5LT5hdHRycy5tb2RlID0gUEhZX01PREVfRFA7Cj4gKwljZG5zX3BoeS0+cGh5ID0g cGh5Owo+ICsJcGh5X3NldF9kcnZkYXRhKHBoeSwgY2Ruc19waHkpOwo+ICsKPiArCXJldCA9IGhk cHR4X2RwX2Nsa19lbmFibGUoY2Ruc19waHkpOwo+ICsJaWYgKHJldCkgewo+ICsJCWRldl9lcnIo ZGV2LCAiSW5pdCBjbGsgZmFpbFxuIik7Cj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwl9Cj4gKwo+ ICsJcGh5X3Byb3ZpZGVyID0gZGV2bV9vZl9waHlfcHJvdmlkZXJfcmVnaXN0ZXIoZGV2LCBvZl9w aHlfc2ltcGxlX3hsYXRlKTsKPiArCWlmIChJU19FUlIocGh5X3Byb3ZpZGVyKSkgewo+ICsJCXJl dCA9ICBQVFJfRVJSKHBoeV9wcm92aWRlcik7Cj4gKwkJZ290byBjbGtfZGlzYWJsZTsKPiArCX0K PiArCj4gKwlyZXR1cm4gMDsKPiArCj4gK2Nsa19kaXNhYmxlOgo+ICsJaGRwdHhfZHBfY2xrX2Rp c2FibGUoY2Ruc19waHkpOwo+ICsKPiArCXJldHVybiAtRUlOVkFMOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgaW50IGNkbnNfaGRwdHhfZHBfcGh5X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpw ZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgY2Ruc19oZHB0eF9kcF9waHkgKmNkbnNfcGh5ID0gcGxhdGZv cm1fZ2V0X2RydmRhdGEocGRldik7Cj4gKwo+ICsJaGRwdHhfZHBfY2xrX2Rpc2FibGUoY2Ruc19w aHkpOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9m X2RldmljZV9pZCBjZG5zX2hkcHR4X2RwX3BoeV9vZl9tYXRjaFtdID0gewo+ICsJey5jb21wYXRp YmxlID0gImZzbCxpbXg4bXEtZHAtcGh5IiB9LAo+ICsJeyAvKiBzZW50aW5lbCAqLyB9Cj4gK307 Cj4gK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGNkbnNfaGRwdHhfZHBfcGh5X29mX21hdGNoKTsK PiArCj4gK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGNkbnNfaGRwdHhfZHBfcGh5X2Ry aXZlciA9IHsKPiArCS5wcm9iZQk9IGNkbnNfaGRwdHhfZHBfcGh5X3Byb2JlLAo+ICsJLnJlbW92 ZSA9IGNkbnNfaGRwdHhfZHBfcGh5X3JlbW92ZSwKPiArCS5kcml2ZXIgPSB7Cj4gKwkJLm5hbWUJ PSAiY2Rucy1oZHB0eC1kcC1waHkiLAo+ICsJCS5vZl9tYXRjaF90YWJsZQk9IGNkbnNfaGRwdHhf ZHBfcGh5X29mX21hdGNoLAo+ICsJfQo+ICt9Owo+ICttb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGNk bnNfaGRwdHhfZHBfcGh5X2RyaXZlcik7Cj4gKwo+ICtNT0RVTEVfQVVUSE9SKCJTYW5kb3IgWXUg PHNhbmRvci55dUBueHAuY29tPiIpOwo+ICtNT0RVTEVfREVTQ1JJUFRJT04oIkNhZGVuY2UgSERQ LVRYIERpc3BsYXlQb3J0IFBIWSBkcml2ZXIiKTsKPiArTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwo+ IC0tIAo+IDIuMzQuMQoKLS0gCn5WaW5vZAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJt LWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21h aWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=