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 X-Spam-Level: X-Spam-Status: No, score=-14.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E68A8FA3728 for ; Wed, 16 Oct 2019 19:30:18 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 81A822053B for ; Wed, 16 Oct 2019 19:30:18 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="ESIDtrli" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 81A822053B Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=siol.net Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=+1KBg4YRpa4W5eO9NTGCF9GvqqQ4kzzVrkLAK9LVBWU=; b=ESIDtrliB5vDad I2Yf+VLG3qnhMEYdmmFCWE9gApDXpANXexQ1B4ukt9rtueRYVHSa8yu9NIG5RblKBLUbjIMQgOpBV elTa7pSnMWlrlm3+glY5m1yXt+I65n4vSDu+Ljhp79VZOzQpPI1GDRjCUdedd7vDpS8BjHPk+h3VD G3QZlwOYBOPGq/5IBJwWGbU2FXLv1C9Kh/KxGfsL/OoRYfgnanUAh7sbapSHy3qFoDXr5tj56B9Uz cZRJb1zjUlLTTcMQEbc3ZvMkyMYASlC299NALbW/AzB6BCtP/T4mFE0H9yyvvf+j8TMInjGbETeLj FJGQUf9vjhyYkRkUvyCw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1iKozp-0007Nj-8Z; Wed, 16 Oct 2019 19:30:09 +0000 Received: from mailoutvs17.siol.net ([185.57.226.208] helo=mail.siol.net) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1iKoyH-0005zj-AX for linux-arm-kernel@lists.infradead.org; Wed, 16 Oct 2019 19:28:38 +0000 Received: from localhost (localhost [127.0.0.1]) by mail.siol.net (Postfix) with ESMTP id EDC705244B4; Wed, 16 Oct 2019 21:28:30 +0200 (CEST) X-Virus-Scanned: amavisd-new at psrvmta11.zcs-production.pri Received: from mail.siol.net ([127.0.0.1]) by localhost (psrvmta11.zcs-production.pri [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id OxsMeryAKWg3; Wed, 16 Oct 2019 21:28:29 +0200 (CEST) Received: from mail.siol.net (localhost [127.0.0.1]) by mail.siol.net (Postfix) with ESMTPS id 0B2B05241BC; Wed, 16 Oct 2019 21:28:29 +0200 (CEST) Received: from localhost.localdomain (cpe-86-58-59-25.static.triera.net [86.58.59.25]) (Authenticated sender: 031275009) by mail.siol.net (Postfix) with ESMTPSA id A009A5245C1; Wed, 16 Oct 2019 21:28:26 +0200 (CEST) From: Jernej Skrabec To: mripard@kernel.org, wens@csie.org Subject: [PATCH v3 5/6] media: sun4i: Add H3 deinterlace driver Date: Wed, 16 Oct 2019 21:28:06 +0200 Message-Id: <20191016192807.1278987-6-jernej.skrabec@siol.net> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191016192807.1278987-1-jernej.skrabec@siol.net> References: <20191016192807.1278987-1-jernej.skrabec@siol.net> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20191016_122833_968702_3CD43A31 X-CRM114-Status: GOOD ( 19.59 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mark.rutland@arm.com, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, hverkuil@xs4all.nl, linux-sunxi@googlegroups.com, robh+dt@kernel.org, mchehab@kernel.org, linux-arm-kernel@lists.infradead.org, linux-media@vger.kernel.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org QWxsd2lubmVyIEgzIFNvQyBjb250YWlucyBkZWludGVybGFjZSB1bml0LCB3aGljaCBoYXMgc2V2 ZXJhbCBtb2RlcyBvZgpvcGVyYXRpb24gLSBieXBhc3MsIHdlYXZlLCBib2IgYW5kIG1peGVkIChh ZHZhbmNlZCkgbW9kZS4gSSBkb24ndCBrbm93CmhvdyBtaXhlZCBtb2RlIHdvcmtzLCBidXQgYWNj b3JkaW5nIHRvIEFsbHdpbm5lciBpdCBnaXZlcyBiZXN0IHJlc3VsdHMsCnNvIHRoZXkgdXNlIGl0 IGV4Y2x1c2l2ZWx5LiBDdXJyZW50bHkgdGhpcyBtb2RlIGlzIGFsc28gaGFyZGNvZGVkIGhlcmUu CgpGb3IgZWFjaCBpbnRlcmxlYXZlZCBmcmFtZSBxdWV1ZWQsIHRoaXMgZHJpdmVyIHByb2R1Y2Vz IDIgZGVpbnRlcmxhY2VkCmZyYW1lcy4gRGVpbnRlcmxhY2VkIGZyYW1lcyBhcmUgYmFzZWQgb24g MiBjb25zZXF1dGl2ZSBvdXRwdXQgYnVmZmVycywKZXhjZXB0IGZvciB0aGUgZmlyc3QgMiwgd2hl cmUgc2FtZSBvdXRwdXQgYnVmZmVyIGlzIGdpdmVuIHRvIHBlcmlwaGVyYWwKYXMgY3VycmVudCBh bmQgcHJldmlvdXMuCgpUaGVyZSBpcyBubyBkb2N1bWVudGF0aW9uIGZvciB0aGlzIGNvcmUsIHNv IHJlZ2lzdGVyIGxheW91dCBhbmQgZml4ZWQKdmFsdWVzIHdlcmUgdGFrZW4gZnJvbSBCU1AgZHJp dmVyLgoKSSdtIG5vdCBzdXJlIGlmIG1heGltdW0gc2l6ZSBvZiB0aGUgaW1hZ2UgdW5pdCBpcyBj YXBhYmxlIHRvIHByb2Nlc3MgaXMKZ292ZXJuZWQgYnkgc2l6ZSBvZiAiZmxhZyIgYnVmZmVycywg ZnJlcXVlbmN5IG9yIGl0IHJlYWxseSBpcyBzb21lIEhXCmxpbWl0YXRpb24uIEN1cnJlbnRseSBk cml2ZXIgY2FuIHByb2Nlc3MgZnVsbCBIRCBpbWFnZSBpbiB+MTVtcyAoNy41bXMKZm9yIGVhY2gg Y2FwdHVyZSBidWZmZXIpLCB3aGljaCBhbGxvd3MgdG8gcHJvY2VzcyAxOTIweDEwODBANjBpIHZp ZGVvCnNtb290aGx5IGluIHJlYWwgdGltZS4KClNpZ25lZC1vZmYtYnk6IEplcm5laiBTa3JhYmVj IDxqZXJuZWouc2tyYWJlY0BzaW9sLm5ldD4KLS0tCiBNQUlOVEFJTkVSUyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgICA3ICsKIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vc3Vu eGkvS2NvbmZpZyAgICAgICAgICB8ICAgIDEgKwogZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54 aS9NYWtlZmlsZSAgICAgICAgIHwgICAgMSArCiBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3N1bnhp L3N1bjhpLWRpL0tjb25maWcgfCAgIDExICsKIC4uLi9tZWRpYS9wbGF0Zm9ybS9zdW54aS9zdW44 aS1kaS9NYWtlZmlsZSAgICB8ICAgIDIgKwogLi4uL21lZGlhL3BsYXRmb3JtL3N1bnhpL3N1bjhp LWRpL3N1bjhpLWRpLmMgIHwgMTAyMCArKysrKysrKysrKysrKysrKwogLi4uL21lZGlhL3BsYXRm b3JtL3N1bnhpL3N1bjhpLWRpL3N1bjhpLWRpLmggIHwgIDIzNyArKysrCiA3IGZpbGVzIGNoYW5n ZWQsIDEyNzkgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbWVkaWEv cGxhdGZvcm0vc3VueGkvc3VuOGktZGkvS2NvbmZpZwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMvbWVkaWEvcGxhdGZvcm0vc3VueGkvc3VuOGktZGkvTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3N1bnhpL3N1bjhpLWRpL3N1bjhpLWRpLmMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3N1bnhpL3N1bjhpLWRpL3N1 bjhpLWRpLmgKCmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTCmluZGV4IGM3 YjQ4NTI1ODIyYS4uYzM3NTQ1NTEyNWZiIDEwMDY0NAotLS0gYS9NQUlOVEFJTkVSUworKysgYi9N QUlOVEFJTkVSUwpAQCAtNDY0Niw2ICs0NjQ2LDEzIEBAIE06CSJNYWNpZWogVy4gUm96eWNraSIg PG1hY3JvQGxpbnV4LW1pcHMub3JnPgogUzoJTWFpbnRhaW5lZAogRjoJZHJpdmVycy9uZXQvZmRk aS9kZWZ4eC4qCiAKK0RFSU5URVJMQUNFIERSSVZFUlMgRk9SIEFMTFdJTk5FUiBIMworTToJSmVy bmVqIFNrcmFiZWMgPGplcm5lai5za3JhYmVjQHNpb2wubmV0PgorTDoJbGludXgtbWVkaWFAdmdl ci5rZXJuZWwub3JnCitUOglnaXQgZ2l0Oi8vbGludXh0di5vcmcvbWVkaWFfdHJlZS5naXQKK1M6 CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vc3VueGkvc3VuOGktZGkvCisK IERFTEwgU01CSU9TIERSSVZFUgogTToJUGFsaSBSb2jDoXIgPHBhbGkucm9oYXJAZ21haWwuY29t PgogTToJTWFyaW8gTGltb25jaWVsbG8gPG1hcmlvLmxpbW9uY2llbGxvQGRlbGwuY29tPgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9LY29uZmlnIGIvZHJpdmVycy9t ZWRpYS9wbGF0Zm9ybS9zdW54aS9LY29uZmlnCmluZGV4IDcxODA4ZTkzYWMyZS4uZDdhNTYyMWJm MzI3IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3N1bnhpL0tjb25maWcKKysr IGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9LY29uZmlnCkBAIC0xLDIgKzEsMyBAQAog c291cmNlICJkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3N1bnhpL3N1bjRpLWNzaS9LY29uZmlnIgog c291cmNlICJkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3N1bnhpL3N1bjZpLWNzaS9LY29uZmlnIgor c291cmNlICJkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3N1bnhpL3N1bjhpLWRpL0tjb25maWciCmRp ZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3N1bnhpL01ha2VmaWxlIGIvZHJpdmVy cy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9NYWtlZmlsZQppbmRleCBhMDUxMjc1MjkwMDYuLjM4Nzhj YjRlZmRjMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9NYWtlZmls ZQorKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3N1bnhpL01ha2VmaWxlCkBAIC0xLDIgKzEs MyBAQAogb2JqLXkJCSs9IHN1bjRpLWNzaS8KIG9iai15CQkrPSBzdW42aS1jc2kvCitvYmoteQkJ Kz0gc3VuOGktZGkvCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3N1bnhpL3N1 bjhpLWRpL0tjb25maWcgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3N1bnhpL3N1bjhpLWRpL0tj b25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kYmQ3N2E2MWUz YjMKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3N1bnhpL3N1bjhp LWRpL0tjb25maWcKQEAgLTAsMCArMSwxMSBAQAorIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog R1BMLTIuMC1vbmx5Citjb25maWcgVklERU9fU1VOOElfREVJTlRFUkxBQ0UKKwl0cmlzdGF0ZSAi QWxsd2lubmVyIERlaW50ZXJsYWNlIGRyaXZlciIKKwlkZXBlbmRzIG9uIFZJREVPX0RFViAmJiBW SURFT19WNEwyCisJZGVwZW5kcyBvbiBIQVNfRE1BCisJZGVwZW5kcyBvbiBPRgorCWRlcGVuZHMg b24gUE0KKwlzZWxlY3QgVklERU9CVUYyX0RNQV9DT05USUcKKwlzZWxlY3QgVjRMMl9NRU0yTUVN X0RFVgorCWhlbHAKKwkgICBTdXBwb3J0IGZvciB0aGUgQWxsd2lubmVyIERlaW50ZXJsYWNlIHVu aXQgZm91bmQgb24gc29tZSBTb0NzLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9y bS9zdW54aS9zdW44aS1kaS9NYWtlZmlsZSBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vc3VueGkv c3VuOGktZGkvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw Li4xMDlmN2U1NDQyYjcKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3Jt L3N1bnhpL3N1bjhpLWRpL01ha2VmaWxlCkBAIC0wLDAgKzEsMiBAQAorIyBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogR1BMLTIuMAorb2JqLSQoQ09ORklHX1ZJREVPX1NVTjhJX0RFSU5URVJMQUNF KSArPSBzdW44aS1kaS5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3N1bnhp L3N1bjhpLWRpL3N1bjhpLWRpLmMgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3N1bnhpL3N1bjhp LWRpL3N1bjhpLWRpLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41 YjJjMmM2NzdjZTAKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3N1 bnhpL3N1bjhpLWRpL3N1bjhpLWRpLmMKQEAgLTAsMCArMSwxMDIwIEBACisvLyBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogR1BMLTIuMAorLyoKKyAqIEFsbHdpbm5lciBzdW44aSBkZWludGVybGFj ZSBkcml2ZXIKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgSmVybmVqIFNrcmFiZWMgPGplcm5l ai5za3JhYmVjQHNpb2wubmV0PgorICoKKyAqIEJhc2VkIG9uIHZpbTJtIGRyaXZlci4KKyAqLwor CisjaW5jbHVkZSA8bGludXgvY2xrLmg+CisjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+Cisj aW5jbHVkZSA8bGludXgvaW8uaD4KKyNpbmNsdWRlIDxsaW51eC9pb3BvbGwuaD4KKyNpbmNsdWRl IDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9vZi5oPgorI2luY2x1ZGUgPGxpbnV4 L29mX2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L3BtX3J1bnRpbWUuaD4KKyNpbmNsdWRlIDxs aW51eC9yZXNldC5oPgorCisjaW5jbHVkZSA8bWVkaWEvdjRsMi1kZXZpY2UuaD4KKyNpbmNsdWRl IDxtZWRpYS92NGwyLWlvY3RsLmg+CisjaW5jbHVkZSA8bWVkaWEvdjRsMi1tZW0ybWVtLmg+CisK KyNpbmNsdWRlICJzdW44aS1kaS5oIgorCisjZGVmaW5lIEZMQUdfU0laRSAoREVJTlRFUkxBQ0Vf TUFYX1dJRFRIICogREVJTlRFUkxBQ0VfTUFYX0hFSUdIVCAvIDQpCisKK3N0YXRpYyB1MzIgZGVp bnRlcmxhY2VfZm9ybWF0c1tdID0geworCVY0TDJfUElYX0ZNVF9OVjEyLAorCVY0TDJfUElYX0ZN VF9OVjIxLAorfTsKKworc3RhdGljIGlubGluZSB1MzIgZGVpbnRlcmxhY2VfcmVhZChzdHJ1Y3Qg ZGVpbnRlcmxhY2VfZGV2ICpkZXYsIHUzMiByZWcpCit7CisJcmV0dXJuIHJlYWRsKGRldi0+YmFz ZSArIHJlZyk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBkZWludGVybGFjZV93cml0ZShzdHJ1 Y3QgZGVpbnRlcmxhY2VfZGV2ICpkZXYsCisJCQkJICAgICB1MzIgcmVnLCB1MzIgdmFsdWUpCit7 CisJd3JpdGVsKHZhbHVlLCBkZXYtPmJhc2UgKyByZWcpOworfQorCitzdGF0aWMgaW5saW5lIHZv aWQgZGVpbnRlcmxhY2Vfc2V0X2JpdHMoc3RydWN0IGRlaW50ZXJsYWNlX2RldiAqZGV2LAorCQkJ CQl1MzIgcmVnLCB1MzIgYml0cykKK3sKKwl3cml0ZWwocmVhZGwoZGV2LT5iYXNlICsgcmVnKSB8 IGJpdHMsIGRldi0+YmFzZSArIHJlZyk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBkZWludGVy bGFjZV9jbHJfc2V0X2JpdHMoc3RydWN0IGRlaW50ZXJsYWNlX2RldiAqZGV2LAorCQkJCQkgICAg dTMyIHJlZywgdTMyIGNsciwgdTMyIHNldCkKK3sKKwl1MzIgdmFsID0gcmVhZGwoZGV2LT5iYXNl ICsgcmVnKTsKKworCXZhbCAmPSB+Y2xyOworCXZhbCB8PSBzZXQ7CisKKwl3cml0ZWwodmFsLCBk ZXYtPmJhc2UgKyByZWcpOworfQorCitzdGF0aWMgdm9pZCBkZWludGVybGFjZV9kZXZpY2VfcnVu KHZvaWQgKnByaXYpCit7CisJc3RydWN0IGRlaW50ZXJsYWNlX2N0eCAqY3R4ID0gcHJpdjsKKwlz dHJ1Y3QgZGVpbnRlcmxhY2VfZGV2ICpkZXYgPSBjdHgtPmRldjsKKwl1MzIgc2l6ZSwgc3RyaWRl LCB3aWR0aCwgaGVpZ2h0LCB2YWw7CisJc3RydWN0IHZiMl92NGwyX2J1ZmZlciAqc3JjLCAqZHN0 OworCXVuc2lnbmVkIGludCBoc3RlcCwgdnN0ZXA7CisJZG1hX2FkZHJfdCBhZGRyOworCisJc3Jj ID0gdjRsMl9tMm1fbmV4dF9zcmNfYnVmKGN0eC0+ZmgubTJtX2N0eCk7CisJZHN0ID0gdjRsMl9t Mm1fbmV4dF9kc3RfYnVmKGN0eC0+ZmgubTJtX2N0eCk7CisKKwl2NGwyX20ybV9idWZfY29weV9t ZXRhZGF0YShzcmMsIGRzdCwgdHJ1ZSk7CisKKwlkZWludGVybGFjZV93cml0ZShkZXYsIERFSU5U RVJMQUNFX01PRF9FTkFCTEUsCisJCQkgIERFSU5URVJMQUNFX01PRF9FTkFCTEVfRU4pOworCisJ aWYgKGN0eC0+ZmllbGQpIHsKKwkJZGVpbnRlcmxhY2Vfd3JpdGUoZGV2LCBERUlOVEVSTEFDRV9U SUxFX0ZMQUcwLAorCQkJCSAgY3R4LT5mbGFnMV9idWZfZG1hKTsKKwkJZGVpbnRlcmxhY2Vfd3Jp dGUoZGV2LCBERUlOVEVSTEFDRV9USUxFX0ZMQUcxLAorCQkJCSAgY3R4LT5mbGFnMl9idWZfZG1h KTsKKwl9IGVsc2UgeworCQlkZWludGVybGFjZV93cml0ZShkZXYsIERFSU5URVJMQUNFX1RJTEVf RkxBRzAsCisJCQkJICBjdHgtPmZsYWcyX2J1Zl9kbWEpOworCQlkZWludGVybGFjZV93cml0ZShk ZXYsIERFSU5URVJMQUNFX1RJTEVfRkxBRzEsCisJCQkJICBjdHgtPmZsYWcxX2J1Zl9kbWEpOwor CX0KKwlkZWludGVybGFjZV93cml0ZShkZXYsIERFSU5URVJMQUNFX0ZMQUdfTElORV9TVFJJREUs IDB4MjAwKTsKKworCXdpZHRoID0gY3R4LT5zcmNfZm10LndpZHRoOworCWhlaWdodCA9IGN0eC0+ c3JjX2ZtdC5oZWlnaHQ7CisJc3RyaWRlID0gY3R4LT5zcmNfZm10LmJ5dGVzcGVybGluZTsKKwlz aXplID0gc3RyaWRlICogaGVpZ2h0OworCisJYWRkciA9IHZiMl9kbWFfY29udGlnX3BsYW5lX2Rt YV9hZGRyKCZzcmMtPnZiMl9idWYsIDApOworCWRlaW50ZXJsYWNlX3dyaXRlKGRldiwgREVJTlRF UkxBQ0VfQlVGX0FERFIwLCBhZGRyKTsKKwlkZWludGVybGFjZV93cml0ZShkZXYsIERFSU5URVJM QUNFX0JVRl9BRERSMSwgYWRkciArIHNpemUpOworCWRlaW50ZXJsYWNlX3dyaXRlKGRldiwgREVJ TlRFUkxBQ0VfQlVGX0FERFIyLCAwKTsKKworCWRlaW50ZXJsYWNlX3dyaXRlKGRldiwgREVJTlRF UkxBQ0VfTElORV9TVFJJREUwLCBzdHJpZGUpOworCWRlaW50ZXJsYWNlX3dyaXRlKGRldiwgREVJ TlRFUkxBQ0VfTElORV9TVFJJREUxLCBzdHJpZGUpOworCisJZGVpbnRlcmxhY2Vfd3JpdGUoZGV2 LCBERUlOVEVSTEFDRV9DSDBfSU5fU0laRSwKKwkJCSAgREVJTlRFUkxBQ0VfU0laRSh3aWR0aCwg aGVpZ2h0KSk7CisJZGVpbnRlcmxhY2Vfd3JpdGUoZGV2LCBERUlOVEVSTEFDRV9DSDFfSU5fU0la RSwKKwkJCSAgREVJTlRFUkxBQ0VfU0laRSh3aWR0aCAvIDIsIGhlaWdodCAvIDIpKTsKKworCXZh bCA9IERFSU5URVJMQUNFX0lOX0ZNVF9GTVQoREVJTlRFUkxBQ0VfSU5fRk1UX1lVVjQyMCkgfAor CSAgICAgIERFSU5URVJMQUNFX0lOX0ZNVF9NT0QoREVJTlRFUkxBQ0VfTU9ERV9VVl9DT01CSU5F RCk7CisJc3dpdGNoIChjdHgtPnNyY19mbXQucGl4ZWxmb3JtYXQpIHsKKwljYXNlIFY0TDJfUElY X0ZNVF9OVjEyOgorCQl2YWwgfD0gREVJTlRFUkxBQ0VfSU5fRk1UX1BTKERFSU5URVJMQUNFX1BT X1VWVVYpOworCQlicmVhazsKKwljYXNlIFY0TDJfUElYX0ZNVF9OVjIxOgorCQl2YWwgfD0gREVJ TlRFUkxBQ0VfSU5fRk1UX1BTKERFSU5URVJMQUNFX1BTX1ZVVlUpOworCQlicmVhazsKKwl9CisJ ZGVpbnRlcmxhY2Vfd3JpdGUoZGV2LCBERUlOVEVSTEFDRV9JTl9GTVQsIHZhbCk7CisKKwlpZiAo Y3R4LT5wcmV2KQorCQlhZGRyID0gdmIyX2RtYV9jb250aWdfcGxhbmVfZG1hX2FkZHIoJmN0eC0+ cHJldi0+dmIyX2J1ZiwgMCk7CisKKwlkZWludGVybGFjZV93cml0ZShkZXYsIERFSU5URVJMQUNF X1BSRUxVTUEsIGFkZHIpOworCWRlaW50ZXJsYWNlX3dyaXRlKGRldiwgREVJTlRFUkxBQ0VfUFJF Q0hST01BLCBhZGRyICsgc2l6ZSk7CisKKwl2YWwgPSBERUlOVEVSTEFDRV9PVVRfRk1UX0ZNVChE RUlOVEVSTEFDRV9PVVRfRk1UX1lVVjQyMFNQKTsKKwlzd2l0Y2ggKGN0eC0+c3JjX2ZtdC5waXhl bGZvcm1hdCkgeworCWNhc2UgVjRMMl9QSVhfRk1UX05WMTI6CisJCXZhbCB8PSBERUlOVEVSTEFD RV9PVVRfRk1UX1BTKERFSU5URVJMQUNFX1BTX1VWVVYpOworCQlicmVhazsKKwljYXNlIFY0TDJf UElYX0ZNVF9OVjIxOgorCQl2YWwgfD0gREVJTlRFUkxBQ0VfT1VUX0ZNVF9QUyhERUlOVEVSTEFD RV9QU19WVVZVKTsKKwkJYnJlYWs7CisJfQorCWRlaW50ZXJsYWNlX3dyaXRlKGRldiwgREVJTlRF UkxBQ0VfT1VUX0ZNVCwgdmFsKTsKKworCXdpZHRoID0gY3R4LT5kc3RfZm10LndpZHRoOworCWhl aWdodCA9IGN0eC0+ZHN0X2ZtdC5oZWlnaHQ7CisJc3RyaWRlID0gY3R4LT5kc3RfZm10LmJ5dGVz cGVybGluZTsKKwlzaXplID0gc3RyaWRlICogaGVpZ2h0OworCisJZGVpbnRlcmxhY2Vfd3JpdGUo ZGV2LCBERUlOVEVSTEFDRV9DSDBfT1VUX1NJWkUsCisJCQkgIERFSU5URVJMQUNFX1NJWkUod2lk dGgsIGhlaWdodCkpOworCWRlaW50ZXJsYWNlX3dyaXRlKGRldiwgREVJTlRFUkxBQ0VfQ0gxX09V VF9TSVpFLAorCQkJICBERUlOVEVSTEFDRV9TSVpFKHdpZHRoIC8gMiwgaGVpZ2h0IC8gMikpOwor CisJZGVpbnRlcmxhY2Vfd3JpdGUoZGV2LCBERUlOVEVSTEFDRV9XQl9MSU5FX1NUUklERTAsIHN0 cmlkZSk7CisJZGVpbnRlcmxhY2Vfd3JpdGUoZGV2LCBERUlOVEVSTEFDRV9XQl9MSU5FX1NUUklE RTEsIHN0cmlkZSk7CisKKwlhZGRyID0gdmIyX2RtYV9jb250aWdfcGxhbmVfZG1hX2FkZHIoJmRz dC0+dmIyX2J1ZiwgMCk7CisJZGVpbnRlcmxhY2Vfd3JpdGUoZGV2LCBERUlOVEVSTEFDRV9XQl9B RERSMCwgYWRkcik7CisJZGVpbnRlcmxhY2Vfd3JpdGUoZGV2LCBERUlOVEVSTEFDRV9XQl9BRERS MSwgYWRkciArIHNpemUpOworCWRlaW50ZXJsYWNlX3dyaXRlKGRldiwgREVJTlRFUkxBQ0VfV0Jf QUREUjIsIDApOworCisJaHN0ZXAgPSAoY3R4LT5zcmNfZm10LndpZHRoIDw8IDE2KSAvIGN0eC0+ ZHN0X2ZtdC53aWR0aDsKKwl2c3RlcCA9IChjdHgtPnNyY19mbXQuaGVpZ2h0IDw8IDE2KSAvIGN0 eC0+ZHN0X2ZtdC5oZWlnaHQ7CisJZGVpbnRlcmxhY2Vfd3JpdGUoZGV2LCBERUlOVEVSTEFDRV9D SDBfSE9SWl9GQUNULCBoc3RlcCk7CisJZGVpbnRlcmxhY2Vfd3JpdGUoZGV2LCBERUlOVEVSTEFD RV9DSDBfVkVSVF9GQUNULCB2c3RlcCk7CisJZGVpbnRlcmxhY2Vfd3JpdGUoZGV2LCBERUlOVEVS TEFDRV9DSDFfSE9SWl9GQUNULCBoc3RlcCk7CisJZGVpbnRlcmxhY2Vfd3JpdGUoZGV2LCBERUlO VEVSTEFDRV9DSDFfVkVSVF9GQUNULCB2c3RlcCk7CisKKwlkZWludGVybGFjZV9jbHJfc2V0X2Jp dHMoZGV2LCBERUlOVEVSTEFDRV9GSUVMRF9DVFJMLAorCQkJCSBERUlOVEVSTEFDRV9GSUVMRF9D VFJMX0ZJRUxEX0NOVF9NU0ssCisJCQkJIERFSU5URVJMQUNFX0ZJRUxEX0NUUkxfRklFTERfQ05U KGN0eC0+ZmllbGQpKTsKKworCWRlaW50ZXJsYWNlX3NldF9iaXRzKGRldiwgREVJTlRFUkxBQ0Vf RlJNX0NUUkwsCisJCQkgICAgIERFSU5URVJMQUNFX0ZSTV9DVFJMX1NUQVJUKTsKKworCWRlaW50 ZXJsYWNlX3NldF9iaXRzKGRldiwgREVJTlRFUkxBQ0VfRlJNX0NUUkwsCisJCQkgICAgIERFSU5U RVJMQUNFX0ZSTV9DVFJMX1JFR19SRUFEWSk7CisKKwlkZWludGVybGFjZV9zZXRfYml0cyhkZXYs IERFSU5URVJMQUNFX0lOVF9FTkFCTEUsCisJCQkgICAgIERFSU5URVJMQUNFX0lOVF9FTkFCTEVf V0JfRU4pOworCisJZGVpbnRlcmxhY2Vfc2V0X2JpdHMoZGV2LCBERUlOVEVSTEFDRV9GUk1fQ1RS TCwKKwkJCSAgICAgREVJTlRFUkxBQ0VfRlJNX0NUUkxfV0JfRU4pOworfQorCitzdGF0aWMgaW50 IGRlaW50ZXJsYWNlX2pvYl9yZWFkeSh2b2lkICpwcml2KQoreworCXN0cnVjdCBkZWludGVybGFj ZV9jdHggKmN0eCA9IHByaXY7CisKKwlyZXR1cm4gdjRsMl9tMm1fbnVtX3NyY19idWZzX3JlYWR5 KGN0eC0+ZmgubTJtX2N0eCkgPj0gMSAmJgorCSAgICAgICB2NGwyX20ybV9udW1fZHN0X2J1ZnNf cmVhZHkoY3R4LT5maC5tMm1fY3R4KSA+PSAyOworfQorCitzdGF0aWMgdm9pZCBkZWludGVybGFj ZV9qb2JfYWJvcnQodm9pZCAqcHJpdikKK3sKKwlzdHJ1Y3QgZGVpbnRlcmxhY2VfY3R4ICpjdHgg PSBwcml2OworCisJLyogV2lsbCBjYW5jZWwgdGhlIHRyYW5zYWN0aW9uIGluIHRoZSBuZXh0IGlu dGVycnVwdCBoYW5kbGVyICovCisJY3R4LT5hYm9ydGluZyA9IDE7Cit9CisKK3N0YXRpYyBpcnFy ZXR1cm5fdCBkZWludGVybGFjZV9pcnEoaW50IGlycSwgdm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3Qg ZGVpbnRlcmxhY2VfZGV2ICpkZXYgPSBkYXRhOworCXN0cnVjdCB2YjJfdjRsMl9idWZmZXIgKnNy YywgKmRzdDsKKwllbnVtIHZiMl9idWZmZXJfc3RhdGUgc3RhdGU7CisJc3RydWN0IGRlaW50ZXJs YWNlX2N0eCAqY3R4OworCXVuc2lnbmVkIGludCB2YWw7CisKKwljdHggPSB2NGwyX20ybV9nZXRf Y3Vycl9wcml2KGRldi0+bTJtX2Rldik7CisJaWYgKCFjdHgpIHsKKwkJdjRsMl9lcnIoJmRldi0+ djRsMl9kZXYsCisJCQkgIkluc3RhbmNlIHJlbGVhc2VkIGJlZm9yZSB0aGUgZW5kIG9mIHRyYW5z YWN0aW9uXG4iKTsKKwkJcmV0dXJuIElSUV9OT05FOworCX0KKworCXZhbCA9IGRlaW50ZXJsYWNl X3JlYWQoZGV2LCBERUlOVEVSTEFDRV9JTlRfU1RBVFVTKTsKKwlpZiAoISh2YWwgJiBERUlOVEVS TEFDRV9JTlRfU1RBVFVTX1dSSVRFQkFDSykpCisJCXJldHVybiBJUlFfTk9ORTsKKworCWRlaW50 ZXJsYWNlX3dyaXRlKGRldiwgREVJTlRFUkxBQ0VfSU5UX0VOQUJMRSwgMCk7CisJZGVpbnRlcmxh Y2Vfc2V0X2JpdHMoZGV2LCBERUlOVEVSTEFDRV9JTlRfU1RBVFVTLAorCQkJICAgICBERUlOVEVS TEFDRV9JTlRfU1RBVFVTX1dSSVRFQkFDSyk7CisJZGVpbnRlcmxhY2Vfd3JpdGUoZGV2LCBERUlO VEVSTEFDRV9NT0RfRU5BQkxFLCAwKTsKKwlkZWludGVybGFjZV9jbHJfc2V0X2JpdHMoZGV2LCBE RUlOVEVSTEFDRV9GUk1fQ1RSTCwKKwkJCQkgREVJTlRFUkxBQ0VfRlJNX0NUUkxfU1RBUlQsIDAp OworCisJdmFsID0gZGVpbnRlcmxhY2VfcmVhZChkZXYsIERFSU5URVJMQUNFX1NUQVRVUyk7CisJ aWYgKHZhbCAmIERFSU5URVJMQUNFX1NUQVRVU19XQl9FUlJPUikKKwkJc3RhdGUgPSBWQjJfQlVG X1NUQVRFX0VSUk9SOworCWVsc2UKKwkJc3RhdGUgPSBWQjJfQlVGX1NUQVRFX0RPTkU7CisKKwlk c3QgPSB2NGwyX20ybV9kc3RfYnVmX3JlbW92ZShjdHgtPmZoLm0ybV9jdHgpOworCXY0bDJfbTJt X2J1Zl9kb25lKGRzdCwgc3RhdGUpOworCisJaWYgKGN0eC0+ZmllbGQgIT0gY3R4LT5maXJzdF9m aWVsZCB8fCBjdHgtPmFib3J0aW5nKSB7CisJCWN0eC0+ZmllbGQgPSBjdHgtPmZpcnN0X2ZpZWxk OworCisJCXNyYyA9IHY0bDJfbTJtX3NyY19idWZfcmVtb3ZlKGN0eC0+ZmgubTJtX2N0eCk7CisJ CWlmIChjdHgtPnByZXYpCisJCQl2NGwyX20ybV9idWZfZG9uZShjdHgtPnByZXYsIHN0YXRlKTsK KwkJY3R4LT5wcmV2ID0gc3JjOworCisJCXY0bDJfbTJtX2pvYl9maW5pc2goY3R4LT5kZXYtPm0y bV9kZXYsIGN0eC0+ZmgubTJtX2N0eCk7CisJfSBlbHNlIHsKKwkJY3R4LT5maWVsZCA9ICFjdHgt PmZpcnN0X2ZpZWxkOworCQlkZWludGVybGFjZV9kZXZpY2VfcnVuKGN0eCk7CisJfQorCisJcmV0 dXJuIElSUV9IQU5ETEVEOworfQorCitzdGF0aWMgdm9pZCBkZWludGVybGFjZV9pbml0KHN0cnVj dCBkZWludGVybGFjZV9kZXYgKmRldikKK3sKKwl1MzIgdmFsOworCWludCBpOworCisJZGVpbnRl cmxhY2Vfd3JpdGUoZGV2LCBERUlOVEVSTEFDRV9CWVBBU1MsCisJCQkgIERFSU5URVJMQUNFX0JZ UEFTU19DU0MpOworCWRlaW50ZXJsYWNlX3dyaXRlKGRldiwgREVJTlRFUkxBQ0VfV0JfTElORV9T VFJJREVfQ1RSTCwKKwkJCSAgREVJTlRFUkxBQ0VfV0JfTElORV9TVFJJREVfQ1RSTF9FTik7CisJ ZGVpbnRlcmxhY2Vfc2V0X2JpdHMoZGV2LCBERUlOVEVSTEFDRV9GUk1fQ1RSTCwKKwkJCSAgICAg REVJTlRFUkxBQ0VfRlJNX0NUUkxfT1VUX0NUUkwpOworCWRlaW50ZXJsYWNlX3dyaXRlKGRldiwg REVJTlRFUkxBQ0VfQUdUSF9TRUwsCisJCQkgIERFSU5URVJMQUNFX0FHVEhfU0VMX0xJTkVCVUYp OworCisJdmFsID0gREVJTlRFUkxBQ0VfQ1RSTF9FTiB8CisJICAgICAgREVJTlRFUkxBQ0VfQ1RS TF9NT0RFX01JWEVEIHwKKwkgICAgICBERUlOVEVSTEFDRV9DVFJMX0RJQUdfSU5UUF9FTiB8CisJ ICAgICAgREVJTlRFUkxBQ0VfQ1RSTF9URU1QX0RJRkZfRU47CisJZGVpbnRlcmxhY2Vfd3JpdGUo ZGV2LCBERUlOVEVSTEFDRV9DVFJMLCB2YWwpOworCisJZGVpbnRlcmxhY2VfY2xyX3NldF9iaXRz KGRldiwgREVJTlRFUkxBQ0VfTFVNQV9USCwKKwkJCQkgREVJTlRFUkxBQ0VfTFVNQV9USF9NSU5f TFVNQV9NU0ssCisJCQkJIERFSU5URVJMQUNFX0xVTUFfVEhfTUlOX0xVTUEoNCkpOworCisJZGVp bnRlcmxhY2VfY2xyX3NldF9iaXRzKGRldiwgREVJTlRFUkxBQ0VfU1BBVF9DT01QLAorCQkJCSBE RUlOVEVSTEFDRV9TUEFUX0NPTVBfVEgyX01TSywKKwkJCQkgREVJTlRFUkxBQ0VfU1BBVF9DT01Q X1RIMig1KSk7CisKKwlkZWludGVybGFjZV9jbHJfc2V0X2JpdHMoZGV2LCBERUlOVEVSTEFDRV9U RU1QX0RJRkYsCisJCQkJIERFSU5URVJMQUNFX1RFTVBfRElGRl9BTUJJR1VJVFlfVEhfTVNLLAor CQkJCSBERUlOVEVSTEFDRV9URU1QX0RJRkZfQU1CSUdVSVRZX1RIKDUpKTsKKworCXZhbCA9IERF SU5URVJMQUNFX0RJQUdfSU5UUF9USDAoNjApIHwKKwkgICAgICBERUlOVEVSTEFDRV9ESUFHX0lO VFBfVEgxKDApIHwKKwkgICAgICBERUlOVEVSTEFDRV9ESUFHX0lOVFBfVEgzKDMwKTsKKwlkZWlu dGVybGFjZV93cml0ZShkZXYsIERFSU5URVJMQUNFX0RJQUdfSU5UUCwgdmFsKTsKKworCWRlaW50 ZXJsYWNlX2Nscl9zZXRfYml0cyhkZXYsIERFSU5URVJMQUNFX0NIUk9NQV9ESUZGLAorCQkJCSBE RUlOVEVSTEFDRV9DSFJPTUFfRElGRl9USF9NU0ssCisJCQkJIERFSU5URVJMQUNFX0NIUk9NQV9E SUZGX1RIKDUpKTsKKworCS8qIG5ldXRyYWwgZmlsdGVyIGNvZWZmaWNpZW50cyAqLworCWRlaW50 ZXJsYWNlX3NldF9iaXRzKGRldiwgREVJTlRFUkxBQ0VfRlJNX0NUUkwsCisJCQkgICAgIERFSU5U RVJMQUNFX0ZSTV9DVFJMX0NPRUZfQUNDRVNTKTsKKwlyZWFkbF9wb2xsX3RpbWVvdXQoZGV2LT5i YXNlICsgREVJTlRFUkxBQ0VfU1RBVFVTLCB2YWwsCisJCQkgICB2YWwgJiBERUlOVEVSTEFDRV9T VEFUVVNfQ09FRl9TVEFUVVMsIDIsIDQwKTsKKworCWZvciAoaSA9IDA7IGkgPCAzMjsgaSsrKSB7 CisJCWRlaW50ZXJsYWNlX3dyaXRlKGRldiwgREVJTlRFUkxBQ0VfQ0gwX0hPUlpfQ09FRjAgKyBp ICogNCwKKwkJCQkgIERFSU5URVJMQUNFX0lERU5USVRZX0NPRUYpOworCQlkZWludGVybGFjZV93 cml0ZShkZXYsIERFSU5URVJMQUNFX0NIMF9WRVJUX0NPRUYgKyBpICogNCwKKwkJCQkgIERFSU5U RVJMQUNFX0lERU5USVRZX0NPRUYpOworCQlkZWludGVybGFjZV93cml0ZShkZXYsIERFSU5URVJM QUNFX0NIMV9IT1JaX0NPRUYwICsgaSAqIDQsCisJCQkJICBERUlOVEVSTEFDRV9JREVOVElUWV9D T0VGKTsKKwkJZGVpbnRlcmxhY2Vfd3JpdGUoZGV2LCBERUlOVEVSTEFDRV9DSDFfVkVSVF9DT0VG ICsgaSAqIDQsCisJCQkJICBERUlOVEVSTEFDRV9JREVOVElUWV9DT0VGKTsKKwl9CisKKwlkZWlu dGVybGFjZV9jbHJfc2V0X2JpdHMoZGV2LCBERUlOVEVSTEFDRV9GUk1fQ1RSTCwKKwkJCQkgREVJ TlRFUkxBQ0VfRlJNX0NUUkxfQ09FRl9BQ0NFU1MsIDApOworfQorCitzdGF0aWMgaW5saW5lIHN0 cnVjdCBkZWludGVybGFjZV9jdHggKmRlaW50ZXJsYWNlX2ZpbGUyY3R4KHN0cnVjdCBmaWxlICpm aWxlKQoreworCXJldHVybiBjb250YWluZXJfb2YoZmlsZS0+cHJpdmF0ZV9kYXRhLCBzdHJ1Y3Qg ZGVpbnRlcmxhY2VfY3R4LCBmaCk7Cit9CisKK3N0YXRpYyBib29sIGRlaW50ZXJsYWNlX2NoZWNr X2Zvcm1hdCh1MzIgcGl4ZWxmb3JtYXQpCit7CisJdW5zaWduZWQgaW50IGk7CisKKwlmb3IgKGkg PSAwOyBpIDwgQVJSQVlfU0laRShkZWludGVybGFjZV9mb3JtYXRzKTsgaSsrKQorCQlpZiAoZGVp bnRlcmxhY2VfZm9ybWF0c1tpXSA9PSBwaXhlbGZvcm1hdCkKKwkJCXJldHVybiB0cnVlOworCisJ cmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgdm9pZCBkZWludGVybGFjZV9wcmVwYXJlX2Zvcm1h dChzdHJ1Y3QgdjRsMl9waXhfZm9ybWF0ICpwaXhfZm10KQoreworCXVuc2lnbmVkIGludCBoZWln aHQgPSBwaXhfZm10LT5oZWlnaHQ7CisJdW5zaWduZWQgaW50IHdpZHRoID0gcGl4X2ZtdC0+d2lk dGg7CisJdW5zaWduZWQgaW50IGJ5dGVzcGVybGluZTsKKwl1bnNpZ25lZCBpbnQgc2l6ZWltYWdl OworCisJd2lkdGggPSBjbGFtcCh3aWR0aCwgREVJTlRFUkxBQ0VfTUlOX1dJRFRILAorCQkgICAg ICBERUlOVEVSTEFDRV9NQVhfV0lEVEgpOworCWhlaWdodCA9IGNsYW1wKGhlaWdodCwgREVJTlRF UkxBQ0VfTUlOX0hFSUdIVCwKKwkJICAgICAgIERFSU5URVJMQUNFX01BWF9IRUlHSFQpOworCisJ Ynl0ZXNwZXJsaW5lID0gQUxJR04od2lkdGgsIDIpOworCS8qIGx1bWEgKi8KKwlzaXplaW1hZ2Ug PSBieXRlc3BlcmxpbmUgKiBoZWlnaHQ7CisJLyogY2hyb21hICovCisJc2l6ZWltYWdlICs9IGJ5 dGVzcGVybGluZSAqIGhlaWdodCAvIDI7CisKKwlwaXhfZm10LT53aWR0aCA9IHdpZHRoOworCXBp eF9mbXQtPmhlaWdodCA9IGhlaWdodDsKKwlwaXhfZm10LT5ieXRlc3BlcmxpbmUgPSBieXRlc3Bl cmxpbmU7CisJcGl4X2ZtdC0+c2l6ZWltYWdlID0gc2l6ZWltYWdlOworfQorCitzdGF0aWMgaW50 IGRlaW50ZXJsYWNlX3F1ZXJ5Y2FwKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpwcml2LAorCQkJ CXN0cnVjdCB2NGwyX2NhcGFiaWxpdHkgKmNhcCkKK3sKKwlzdHJzY3B5KGNhcC0+ZHJpdmVyLCBE RUlOVEVSTEFDRV9OQU1FLCBzaXplb2YoY2FwLT5kcml2ZXIpKTsKKwlzdHJzY3B5KGNhcC0+Y2Fy ZCwgREVJTlRFUkxBQ0VfTkFNRSwgc2l6ZW9mKGNhcC0+Y2FyZCkpOworCXNucHJpbnRmKGNhcC0+ YnVzX2luZm8sIHNpemVvZihjYXAtPmJ1c19pbmZvKSwKKwkJICJwbGF0Zm9ybTolcyIsIERFSU5U RVJMQUNFX05BTUUpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZGVpbnRlcmxhY2Vf ZW51bV9mbXQoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsCisJCQkJc3RydWN0IHY0bDJf Zm10ZGVzYyAqZikKK3sKKwlpZiAoZi0+aW5kZXggPCBBUlJBWV9TSVpFKGRlaW50ZXJsYWNlX2Zv cm1hdHMpKSB7CisJCWYtPnBpeGVsZm9ybWF0ID0gZGVpbnRlcmxhY2VfZm9ybWF0c1tmLT5pbmRl eF07CisKKwkJcmV0dXJuIDA7CisJfQorCisJcmV0dXJuIC1FSU5WQUw7Cit9CisKK3N0YXRpYyBp bnQgZGVpbnRlcmxhY2VfZW51bV9mcmFtZXNpemVzKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpw cml2LAorCQkJCSAgICAgICBzdHJ1Y3QgdjRsMl9mcm1zaXplZW51bSAqZnNpemUpCit7CisJaWYg KGZzaXplLT5pbmRleCAhPSAwKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmICghZGVpbnRlcmxh Y2VfY2hlY2tfZm9ybWF0KGZzaXplLT5waXhlbF9mb3JtYXQpKQorCQlyZXR1cm4gLUVJTlZBTDsK KworCWZzaXplLT50eXBlID0gVjRMMl9GUk1TSVpFX1RZUEVfU1RFUFdJU0U7CisJZnNpemUtPnN0 ZXB3aXNlLm1pbl93aWR0aCA9IERFSU5URVJMQUNFX01JTl9XSURUSDsKKwlmc2l6ZS0+c3RlcHdp c2UubWluX2hlaWdodCA9IERFSU5URVJMQUNFX01JTl9IRUlHSFQ7CisJZnNpemUtPnN0ZXB3aXNl Lm1heF93aWR0aCA9IERFSU5URVJMQUNFX01BWF9XSURUSDsKKwlmc2l6ZS0+c3RlcHdpc2UubWF4 X2hlaWdodCA9IERFSU5URVJMQUNFX01BWF9IRUlHSFQ7CisJZnNpemUtPnN0ZXB3aXNlLnN0ZXBf d2lkdGggPSAyOworCWZzaXplLT5zdGVwd2lzZS5zdGVwX2hlaWdodCA9IDE7CisKKwlyZXR1cm4g MDsKK30KKworc3RhdGljIGludCBkZWludGVybGFjZV9nX2ZtdF92aWRfY2FwKHN0cnVjdCBmaWxl ICpmaWxlLCB2b2lkICpwcml2LAorCQkJCSAgICAgc3RydWN0IHY0bDJfZm9ybWF0ICpmKQorewor CXN0cnVjdCBkZWludGVybGFjZV9jdHggKmN0eCA9IGRlaW50ZXJsYWNlX2ZpbGUyY3R4KGZpbGUp OworCisJZi0+Zm10LnBpeCA9IGN0eC0+ZHN0X2ZtdDsKKworCXJldHVybiAwOworfQorCitzdGF0 aWMgaW50IGRlaW50ZXJsYWNlX2dfZm10X3ZpZF9vdXQoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQg KnByaXYsCisJCQkJICAgICBzdHJ1Y3QgdjRsMl9mb3JtYXQgKmYpCit7CisJc3RydWN0IGRlaW50 ZXJsYWNlX2N0eCAqY3R4ID0gZGVpbnRlcmxhY2VfZmlsZTJjdHgoZmlsZSk7CisKKwlmLT5mbXQu cGl4ID0gY3R4LT5zcmNfZm10OworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZGVpbnRl cmxhY2VfdHJ5X2ZtdF92aWRfY2FwKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpwcml2LAorCQkJ CSAgICAgICBzdHJ1Y3QgdjRsMl9mb3JtYXQgKmYpCit7CisJaWYgKCFkZWludGVybGFjZV9jaGVj a19mb3JtYXQoZi0+Zm10LnBpeC5waXhlbGZvcm1hdCkpCisJCWYtPmZtdC5waXgucGl4ZWxmb3Jt YXQgPSBkZWludGVybGFjZV9mb3JtYXRzWzBdOworCisJaWYgKGYtPmZtdC5waXguZmllbGQgIT0g VjRMMl9GSUVMRF9OT05FKQorCQlmLT5mbXQucGl4LmZpZWxkID0gVjRMMl9GSUVMRF9OT05FOwor CisJZGVpbnRlcmxhY2VfcHJlcGFyZV9mb3JtYXQoJmYtPmZtdC5waXgpOworCisJcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyBpbnQgZGVpbnRlcmxhY2VfdHJ5X2ZtdF92aWRfb3V0KHN0cnVjdCBmaWxl ICpmaWxlLCB2b2lkICpwcml2LAorCQkJCSAgICAgICBzdHJ1Y3QgdjRsMl9mb3JtYXQgKmYpCit7 CisJaWYgKCFkZWludGVybGFjZV9jaGVja19mb3JtYXQoZi0+Zm10LnBpeC5waXhlbGZvcm1hdCkp CisJCWYtPmZtdC5waXgucGl4ZWxmb3JtYXQgPSBkZWludGVybGFjZV9mb3JtYXRzWzBdOworCisJ aWYgKGYtPmZtdC5waXguZmllbGQgIT0gVjRMMl9GSUVMRF9JTlRFUkxBQ0VEX1RCICYmCisJICAg IGYtPmZtdC5waXguZmllbGQgIT0gVjRMMl9GSUVMRF9JTlRFUkxBQ0VEX0JUICYmCisJICAgIGYt PmZtdC5waXguZmllbGQgIT0gVjRMMl9GSUVMRF9JTlRFUkxBQ0VEKQorCQlmLT5mbXQucGl4LmZp ZWxkID0gVjRMMl9GSUVMRF9JTlRFUkxBQ0VEOworCisJZGVpbnRlcmxhY2VfcHJlcGFyZV9mb3Jt YXQoJmYtPmZtdC5waXgpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZGVpbnRlcmxh Y2Vfc19mbXRfdmlkX2NhcChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwKKwkJCQkgICAg IHN0cnVjdCB2NGwyX2Zvcm1hdCAqZikKK3sKKwlzdHJ1Y3QgZGVpbnRlcmxhY2VfY3R4ICpjdHgg PSBkZWludGVybGFjZV9maWxlMmN0eChmaWxlKTsKKwlzdHJ1Y3QgdmIyX3F1ZXVlICp2cTsKKwlp bnQgcmV0OworCisJcmV0ID0gZGVpbnRlcmxhY2VfdHJ5X2ZtdF92aWRfY2FwKGZpbGUsIHByaXYs IGYpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwl2cSA9IHY0bDJfbTJtX2dldF92cShj dHgtPmZoLm0ybV9jdHgsIGYtPnR5cGUpOworCWlmICh2YjJfaXNfYnVzeSh2cSkpCisJCXJldHVy biAtRUJVU1k7CisKKwljdHgtPmRzdF9mbXQgPSBmLT5mbXQucGl4OworCisJcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyBpbnQgZGVpbnRlcmxhY2Vfc19mbXRfdmlkX291dChzdHJ1Y3QgZmlsZSAqZmls ZSwgdm9pZCAqcHJpdiwKKwkJCQkgICAgIHN0cnVjdCB2NGwyX2Zvcm1hdCAqZikKK3sKKwlzdHJ1 Y3QgZGVpbnRlcmxhY2VfY3R4ICpjdHggPSBkZWludGVybGFjZV9maWxlMmN0eChmaWxlKTsKKwlz dHJ1Y3QgdmIyX3F1ZXVlICp2cTsKKwlpbnQgcmV0OworCisJcmV0ID0gZGVpbnRlcmxhY2VfdHJ5 X2ZtdF92aWRfb3V0KGZpbGUsIHByaXYsIGYpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisK Kwl2cSA9IHY0bDJfbTJtX2dldF92cShjdHgtPmZoLm0ybV9jdHgsIGYtPnR5cGUpOworCWlmICh2 YjJfaXNfYnVzeSh2cSkpCisJCXJldHVybiAtRUJVU1k7CisKKwljdHgtPnNyY19mbXQgPSBmLT5m bXQucGl4OworCisJLyogUHJvcGFnYXRlIGNvbG9yc3BhY2UgaW5mb3JtYXRpb24gdG8gY2FwdHVy ZS4gKi8KKwljdHgtPmRzdF9mbXQuY29sb3JzcGFjZSA9IGYtPmZtdC5waXguY29sb3JzcGFjZTsK KwljdHgtPmRzdF9mbXQueGZlcl9mdW5jID0gZi0+Zm10LnBpeC54ZmVyX2Z1bmM7CisJY3R4LT5k c3RfZm10LnljYmNyX2VuYyA9IGYtPmZtdC5waXgueWNiY3JfZW5jOworCWN0eC0+ZHN0X2ZtdC5x dWFudGl6YXRpb24gPSBmLT5mbXQucGl4LnF1YW50aXphdGlvbjsKKworCXJldHVybiAwOworfQor Citjb25zdCBzdHJ1Y3QgdjRsMl9pb2N0bF9vcHMgZGVpbnRlcmxhY2VfaW9jdGxfb3BzID0gewor CS52aWRpb2NfcXVlcnljYXAJCT0gZGVpbnRlcmxhY2VfcXVlcnljYXAsCisKKwkudmlkaW9jX2Vu dW1fZnJhbWVzaXplcwkJPSBkZWludGVybGFjZV9lbnVtX2ZyYW1lc2l6ZXMsCisKKwkudmlkaW9j X2VudW1fZm10X3ZpZF9jYXAJPSBkZWludGVybGFjZV9lbnVtX2ZtdCwKKwkudmlkaW9jX2dfZm10 X3ZpZF9jYXAJCT0gZGVpbnRlcmxhY2VfZ19mbXRfdmlkX2NhcCwKKwkudmlkaW9jX3RyeV9mbXRf dmlkX2NhcAkJPSBkZWludGVybGFjZV90cnlfZm10X3ZpZF9jYXAsCisJLnZpZGlvY19zX2ZtdF92 aWRfY2FwCQk9IGRlaW50ZXJsYWNlX3NfZm10X3ZpZF9jYXAsCisKKwkudmlkaW9jX2VudW1fZm10 X3ZpZF9vdXQJPSBkZWludGVybGFjZV9lbnVtX2ZtdCwKKwkudmlkaW9jX2dfZm10X3ZpZF9vdXQJ CT0gZGVpbnRlcmxhY2VfZ19mbXRfdmlkX291dCwKKwkudmlkaW9jX3RyeV9mbXRfdmlkX291dAkJ PSBkZWludGVybGFjZV90cnlfZm10X3ZpZF9vdXQsCisJLnZpZGlvY19zX2ZtdF92aWRfb3V0CQk9 IGRlaW50ZXJsYWNlX3NfZm10X3ZpZF9vdXQsCisKKwkudmlkaW9jX3JlcWJ1ZnMJCQk9IHY0bDJf bTJtX2lvY3RsX3JlcWJ1ZnMsCisJLnZpZGlvY19xdWVyeWJ1ZgkJPSB2NGwyX20ybV9pb2N0bF9x dWVyeWJ1ZiwKKwkudmlkaW9jX3FidWYJCQk9IHY0bDJfbTJtX2lvY3RsX3FidWYsCisJLnZpZGlv Y19kcWJ1ZgkJCT0gdjRsMl9tMm1faW9jdGxfZHFidWYsCisJLnZpZGlvY19wcmVwYXJlX2J1ZgkJ PSB2NGwyX20ybV9pb2N0bF9wcmVwYXJlX2J1ZiwKKwkudmlkaW9jX2NyZWF0ZV9idWZzCQk9IHY0 bDJfbTJtX2lvY3RsX2NyZWF0ZV9idWZzLAorCS52aWRpb2NfZXhwYnVmCQkJPSB2NGwyX20ybV9p b2N0bF9leHBidWYsCisKKwkudmlkaW9jX3N0cmVhbW9uCQk9IHY0bDJfbTJtX2lvY3RsX3N0cmVh bW9uLAorCS52aWRpb2Nfc3RyZWFtb2ZmCQk9IHY0bDJfbTJtX2lvY3RsX3N0cmVhbW9mZiwKK307 CisKK3N0YXRpYyBpbnQgZGVpbnRlcmxhY2VfcXVldWVfc2V0dXAoc3RydWN0IHZiMl9xdWV1ZSAq dnEsIHVuc2lnbmVkIGludCAqbmJ1ZmZlcnMsCisJCQkJICAgdW5zaWduZWQgaW50ICpucGxhbmVz LCB1bnNpZ25lZCBpbnQgc2l6ZXNbXSwKKwkJCQkgICBzdHJ1Y3QgZGV2aWNlICphbGxvY19kZXZz W10pCit7CisJc3RydWN0IGRlaW50ZXJsYWNlX2N0eCAqY3R4ID0gdmIyX2dldF9kcnZfcHJpdih2 cSk7CisJc3RydWN0IHY0bDJfcGl4X2Zvcm1hdCAqcGl4X2ZtdDsKKworCWlmIChWNEwyX1RZUEVf SVNfT1VUUFVUKHZxLT50eXBlKSkKKwkJcGl4X2ZtdCA9ICZjdHgtPnNyY19mbXQ7CisJZWxzZQor CQlwaXhfZm10ID0gJmN0eC0+ZHN0X2ZtdDsKKworCWlmICgqbnBsYW5lcykgeworCQlpZiAoc2l6 ZXNbMF0gPCBwaXhfZm10LT5zaXplaW1hZ2UpCisJCQlyZXR1cm4gLUVJTlZBTDsKKwl9IGVsc2Ug eworCQlzaXplc1swXSA9IHBpeF9mbXQtPnNpemVpbWFnZTsKKwkJKm5wbGFuZXMgPSAxOworCX0K KworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGRlaW50ZXJsYWNlX2J1Zl9wcmVwYXJlKHN0 cnVjdCB2YjJfYnVmZmVyICp2YikKK3sKKwlzdHJ1Y3QgdmIyX3F1ZXVlICp2cSA9IHZiLT52YjJf cXVldWU7CisJc3RydWN0IGRlaW50ZXJsYWNlX2N0eCAqY3R4ID0gdmIyX2dldF9kcnZfcHJpdih2 cSk7CisJc3RydWN0IHY0bDJfcGl4X2Zvcm1hdCAqcGl4X2ZtdDsKKworCWlmIChWNEwyX1RZUEVf SVNfT1VUUFVUKHZxLT50eXBlKSkKKwkJcGl4X2ZtdCA9ICZjdHgtPnNyY19mbXQ7CisJZWxzZQor CQlwaXhfZm10ID0gJmN0eC0+ZHN0X2ZtdDsKKworCWlmICh2YjJfcGxhbmVfc2l6ZSh2YiwgMCkg PCBwaXhfZm10LT5zaXplaW1hZ2UpCisJCXJldHVybiAtRUlOVkFMOworCisJdmIyX3NldF9wbGFu ZV9wYXlsb2FkKHZiLCAwLCBwaXhfZm10LT5zaXplaW1hZ2UpOworCisJcmV0dXJuIDA7Cit9CisK K3N0YXRpYyB2b2lkIGRlaW50ZXJsYWNlX2J1Zl9xdWV1ZShzdHJ1Y3QgdmIyX2J1ZmZlciAqdmIp Cit7CisJc3RydWN0IHZiMl92NGwyX2J1ZmZlciAqdmJ1ZiA9IHRvX3ZiMl92NGwyX2J1ZmZlcih2 Yik7CisJc3RydWN0IGRlaW50ZXJsYWNlX2N0eCAqY3R4ID0gdmIyX2dldF9kcnZfcHJpdih2Yi0+ dmIyX3F1ZXVlKTsKKworCXY0bDJfbTJtX2J1Zl9xdWV1ZShjdHgtPmZoLm0ybV9jdHgsIHZidWYp OworfQorCitzdGF0aWMgdm9pZCBkZWludGVybGFjZV9xdWV1ZV9jbGVhbnVwKHN0cnVjdCB2YjJf cXVldWUgKnZxLCB1MzIgc3RhdGUpCit7CisJc3RydWN0IGRlaW50ZXJsYWNlX2N0eCAqY3R4ID0g dmIyX2dldF9kcnZfcHJpdih2cSk7CisJc3RydWN0IHZiMl92NGwyX2J1ZmZlciAqdmJ1ZjsKKwor CWRvIHsKKwkJaWYgKFY0TDJfVFlQRV9JU19PVVRQVVQodnEtPnR5cGUpKQorCQkJdmJ1ZiA9IHY0 bDJfbTJtX3NyY19idWZfcmVtb3ZlKGN0eC0+ZmgubTJtX2N0eCk7CisJCWVsc2UKKwkJCXZidWYg PSB2NGwyX20ybV9kc3RfYnVmX3JlbW92ZShjdHgtPmZoLm0ybV9jdHgpOworCisJCWlmICh2YnVm KQorCQkJdjRsMl9tMm1fYnVmX2RvbmUodmJ1Ziwgc3RhdGUpOworCX0gd2hpbGUgKHZidWYpOwor CisJaWYgKFY0TDJfVFlQRV9JU19PVVRQVVQodnEtPnR5cGUpICYmIGN0eC0+cHJldikKKwkJdjRs Ml9tMm1fYnVmX2RvbmUoY3R4LT5wcmV2LCBzdGF0ZSk7Cit9CisKK3N0YXRpYyBpbnQgZGVpbnRl cmxhY2Vfc3RhcnRfc3RyZWFtaW5nKHN0cnVjdCB2YjJfcXVldWUgKnZxLCB1bnNpZ25lZCBpbnQg Y291bnQpCit7CisJc3RydWN0IGRlaW50ZXJsYWNlX2N0eCAqY3R4ID0gdmIyX2dldF9kcnZfcHJp dih2cSk7CisJc3RydWN0IGRldmljZSAqZGV2ID0gY3R4LT5kZXYtPmRldjsKKwlpbnQgcmV0Owor CisJaWYgKFY0TDJfVFlQRV9JU19PVVRQVVQodnEtPnR5cGUpKSB7CisJCXJldCA9IHBtX3J1bnRp bWVfZ2V0X3N5bmMoZGV2KTsKKwkJaWYgKHJldCA8IDApIHsKKwkJCWRldl9lcnIoZGV2LCAiRmFp bGVkIHRvIGVuYWJsZSBtb2R1bGVcbiIpOworCisJCQlnb3RvIGVycl9ydW50aW1lX2dldDsKKwkJ fQorCisJCWN0eC0+Zmlyc3RfZmllbGQgPQorCQkJY3R4LT5zcmNfZm10LmZpZWxkID09IFY0TDJf RklFTERfSU5URVJMQUNFRF9CVDsKKwkJY3R4LT5maWVsZCA9IGN0eC0+Zmlyc3RfZmllbGQ7CisK KwkJY3R4LT5wcmV2ID0gTlVMTDsKKwkJY3R4LT5hYm9ydGluZyA9IDA7CisKKwkJY3R4LT5mbGFn MV9idWYgPSBkbWFfYWxsb2NfY29oZXJlbnQoZGV2LCBGTEFHX1NJWkUsCisJCQkJCQkgICAgJmN0 eC0+ZmxhZzFfYnVmX2RtYSwKKwkJCQkJCSAgICBHRlBfS0VSTkVMKTsKKwkJaWYgKCFjdHgtPmZs YWcxX2J1ZikgeworCQkJcmV0ID0gLUVOT01FTTsKKworCQkJZ290byBlcnJfbm9fbWVtMTsKKwkJ fQorCisJCWN0eC0+ZmxhZzJfYnVmID0gZG1hX2FsbG9jX2NvaGVyZW50KGRldiwgRkxBR19TSVpF LAorCQkJCQkJICAgICZjdHgtPmZsYWcyX2J1Zl9kbWEsCisJCQkJCQkgICAgR0ZQX0tFUk5FTCk7 CisJCWlmICghY3R4LT5mbGFnMl9idWYpIHsKKwkJCXJldCA9IC1FTk9NRU07CisKKwkJCWdvdG8g ZXJyX25vX21lbTI7CisJCX0KKwl9CisKKwlyZXR1cm4gMDsKKworZXJyX25vX21lbTI6CisJZG1h X2ZyZWVfY29oZXJlbnQoZGV2LCBGTEFHX1NJWkUsIGN0eC0+ZmxhZzFfYnVmLAorCQkJICBjdHgt PmZsYWcxX2J1Zl9kbWEpOworZXJyX25vX21lbTE6CisJcG1fcnVudGltZV9wdXQoZGV2KTsKK2Vy cl9ydW50aW1lX2dldDoKKwlkZWludGVybGFjZV9xdWV1ZV9jbGVhbnVwKHZxLCBWQjJfQlVGX1NU QVRFX1FVRVVFRCk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCBkZWludGVybGFj ZV9zdG9wX3N0cmVhbWluZyhzdHJ1Y3QgdmIyX3F1ZXVlICp2cSkKK3sKKwlzdHJ1Y3QgZGVpbnRl cmxhY2VfY3R4ICpjdHggPSB2YjJfZ2V0X2Rydl9wcml2KHZxKTsKKworCWlmIChWNEwyX1RZUEVf SVNfT1VUUFVUKHZxLT50eXBlKSkgeworCQlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBjdHgtPmRldi0+ ZGV2OworCisJCWRtYV9mcmVlX2NvaGVyZW50KGRldiwgRkxBR19TSVpFLCBjdHgtPmZsYWcxX2J1 ZiwKKwkJCQkgIGN0eC0+ZmxhZzFfYnVmX2RtYSk7CisJCWRtYV9mcmVlX2NvaGVyZW50KGRldiwg RkxBR19TSVpFLCBjdHgtPmZsYWcyX2J1ZiwKKwkJCQkgIGN0eC0+ZmxhZzJfYnVmX2RtYSk7CisK KwkJcG1fcnVudGltZV9wdXQoZGV2KTsKKwl9CisKKwlkZWludGVybGFjZV9xdWV1ZV9jbGVhbnVw KHZxLCBWQjJfQlVGX1NUQVRFX0VSUk9SKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCB2YjJf b3BzIGRlaW50ZXJsYWNlX3FvcHMgPSB7CisJLnF1ZXVlX3NldHVwCQk9IGRlaW50ZXJsYWNlX3F1 ZXVlX3NldHVwLAorCS5idWZfcHJlcGFyZQkJPSBkZWludGVybGFjZV9idWZfcHJlcGFyZSwKKwku YnVmX3F1ZXVlCQk9IGRlaW50ZXJsYWNlX2J1Zl9xdWV1ZSwKKwkuc3RhcnRfc3RyZWFtaW5nCT0g ZGVpbnRlcmxhY2Vfc3RhcnRfc3RyZWFtaW5nLAorCS5zdG9wX3N0cmVhbWluZwkJPSBkZWludGVy bGFjZV9zdG9wX3N0cmVhbWluZywKKwkud2FpdF9wcmVwYXJlCQk9IHZiMl9vcHNfd2FpdF9wcmVw YXJlLAorCS53YWl0X2ZpbmlzaAkJPSB2YjJfb3BzX3dhaXRfZmluaXNoLAorfTsKKworc3RhdGlj IGludCBkZWludGVybGFjZV9xdWV1ZV9pbml0KHZvaWQgKnByaXYsIHN0cnVjdCB2YjJfcXVldWUg KnNyY192cSwKKwkJCQkgIHN0cnVjdCB2YjJfcXVldWUgKmRzdF92cSkKK3sKKwlzdHJ1Y3QgZGVp bnRlcmxhY2VfY3R4ICpjdHggPSBwcml2OworCWludCByZXQ7CisKKwlzcmNfdnEtPnR5cGUgPSBW NEwyX0JVRl9UWVBFX1ZJREVPX09VVFBVVDsKKwlzcmNfdnEtPmlvX21vZGVzID0gVkIyX01NQVAg fCBWQjJfRE1BQlVGOworCXNyY192cS0+ZHJ2X3ByaXYgPSBjdHg7CisJc3JjX3ZxLT5idWZfc3Ry dWN0X3NpemUgPSBzaXplb2Yoc3RydWN0IHY0bDJfbTJtX2J1ZmZlcik7CisJc3JjX3ZxLT5taW5f YnVmZmVyc19uZWVkZWQgPSAxOworCXNyY192cS0+b3BzID0gJmRlaW50ZXJsYWNlX3FvcHM7CisJ c3JjX3ZxLT5tZW1fb3BzID0gJnZiMl9kbWFfY29udGlnX21lbW9wczsKKwlzcmNfdnEtPnRpbWVz dGFtcF9mbGFncyA9IFY0TDJfQlVGX0ZMQUdfVElNRVNUQU1QX0NPUFk7CisJc3JjX3ZxLT5sb2Nr ID0gJmN0eC0+ZGV2LT5kZXZfbXV0ZXg7CisJc3JjX3ZxLT5kZXYgPSBjdHgtPmRldi0+ZGV2Owor CisJcmV0ID0gdmIyX3F1ZXVlX2luaXQoc3JjX3ZxKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0 OworCisJZHN0X3ZxLT50eXBlID0gVjRMMl9CVUZfVFlQRV9WSURFT19DQVBUVVJFOworCWRzdF92 cS0+aW9fbW9kZXMgPSBWQjJfTU1BUCB8IFZCMl9ETUFCVUY7CisJZHN0X3ZxLT5kcnZfcHJpdiA9 IGN0eDsKKwlkc3RfdnEtPmJ1Zl9zdHJ1Y3Rfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgdjRsMl9tMm1f YnVmZmVyKTsKKwlkc3RfdnEtPm1pbl9idWZmZXJzX25lZWRlZCA9IDI7CisJZHN0X3ZxLT5vcHMg PSAmZGVpbnRlcmxhY2VfcW9wczsKKwlkc3RfdnEtPm1lbV9vcHMgPSAmdmIyX2RtYV9jb250aWdf bWVtb3BzOworCWRzdF92cS0+dGltZXN0YW1wX2ZsYWdzID0gVjRMMl9CVUZfRkxBR19USU1FU1RB TVBfQ09QWTsKKwlkc3RfdnEtPmxvY2sgPSAmY3R4LT5kZXYtPmRldl9tdXRleDsKKwlkc3RfdnEt PmRldiA9IGN0eC0+ZGV2LT5kZXY7CisKKwlyZXQgPSB2YjJfcXVldWVfaW5pdChkc3RfdnEpOwor CWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBk ZWludGVybGFjZV9vcGVuKHN0cnVjdCBmaWxlICpmaWxlKQoreworCXN0cnVjdCBkZWludGVybGFj ZV9kZXYgKmRldiA9IHZpZGVvX2RydmRhdGEoZmlsZSk7CisJc3RydWN0IGRlaW50ZXJsYWNlX2N0 eCAqY3R4ID0gTlVMTDsKKwlpbnQgcmV0OworCisJaWYgKG11dGV4X2xvY2tfaW50ZXJydXB0aWJs ZSgmZGV2LT5kZXZfbXV0ZXgpKQorCQlyZXR1cm4gLUVSRVNUQVJUU1lTOworCisJY3R4ID0ga3ph bGxvYyhzaXplb2YoKmN0eCksIEdGUF9LRVJORUwpOworCWlmICghY3R4KSB7CisJCW11dGV4X3Vu bG9jaygmZGV2LT5kZXZfbXV0ZXgpOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisKKwkvKiBkZWZh dWx0IG91dHB1dCBmb3JtYXQgKi8KKwljdHgtPnNyY19mbXQucGl4ZWxmb3JtYXQgPSBkZWludGVy bGFjZV9mb3JtYXRzWzBdOworCWN0eC0+c3JjX2ZtdC5maWVsZCA9IFY0TDJfRklFTERfSU5URVJM QUNFRDsKKwljdHgtPnNyY19mbXQud2lkdGggPSA2NDA7CisJY3R4LT5zcmNfZm10LmhlaWdodCA9 IDQ4MDsKKwlkZWludGVybGFjZV9wcmVwYXJlX2Zvcm1hdCgmY3R4LT5zcmNfZm10KTsKKworCS8q IGRlZmF1bHQgY2FwdHVyZSBmb3JtYXQgKi8KKwljdHgtPmRzdF9mbXQucGl4ZWxmb3JtYXQgPSBk ZWludGVybGFjZV9mb3JtYXRzWzBdOworCWN0eC0+ZHN0X2ZtdC5maWVsZCA9IFY0TDJfRklFTERf Tk9ORTsKKwljdHgtPmRzdF9mbXQud2lkdGggPSA2NDA7CisJY3R4LT5kc3RfZm10LmhlaWdodCA9 IDQ4MDsKKwlkZWludGVybGFjZV9wcmVwYXJlX2Zvcm1hdCgmY3R4LT5kc3RfZm10KTsKKworCXY0 bDJfZmhfaW5pdCgmY3R4LT5maCwgdmlkZW9fZGV2ZGF0YShmaWxlKSk7CisJZmlsZS0+cHJpdmF0 ZV9kYXRhID0gJmN0eC0+Zmg7CisJY3R4LT5kZXYgPSBkZXY7CisKKwljdHgtPmZoLm0ybV9jdHgg PSB2NGwyX20ybV9jdHhfaW5pdChkZXYtPm0ybV9kZXYsIGN0eCwKKwkJCQkJICAgICZkZWludGVy bGFjZV9xdWV1ZV9pbml0KTsKKwlpZiAoSVNfRVJSKGN0eC0+ZmgubTJtX2N0eCkpIHsKKwkJcmV0 ID0gUFRSX0VSUihjdHgtPmZoLm0ybV9jdHgpOworCQlnb3RvIGVycl9mcmVlOworCX0KKworCXY0 bDJfZmhfYWRkKCZjdHgtPmZoKTsKKworCW11dGV4X3VubG9jaygmZGV2LT5kZXZfbXV0ZXgpOwor CisJcmV0dXJuIDA7CisKK2Vycl9mcmVlOgorCWtmcmVlKGN0eCk7CisJbXV0ZXhfdW5sb2NrKCZk ZXYtPmRldl9tdXRleCk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IGRlaW50ZXJs YWNlX3JlbGVhc2Uoc3RydWN0IGZpbGUgKmZpbGUpCit7CisJc3RydWN0IGRlaW50ZXJsYWNlX2Rl diAqZGV2ID0gdmlkZW9fZHJ2ZGF0YShmaWxlKTsKKwlzdHJ1Y3QgZGVpbnRlcmxhY2VfY3R4ICpj dHggPSBjb250YWluZXJfb2YoZmlsZS0+cHJpdmF0ZV9kYXRhLAorCQkJCQkJICAgc3RydWN0IGRl aW50ZXJsYWNlX2N0eCwgZmgpOworCisJbXV0ZXhfbG9jaygmZGV2LT5kZXZfbXV0ZXgpOworCisJ djRsMl9maF9kZWwoJmN0eC0+ZmgpOworCXY0bDJfZmhfZXhpdCgmY3R4LT5maCk7CisJdjRsMl9t Mm1fY3R4X3JlbGVhc2UoY3R4LT5maC5tMm1fY3R4KTsKKworCWtmcmVlKGN0eCk7CisKKwltdXRl eF91bmxvY2soJmRldi0+ZGV2X211dGV4KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgY29u c3Qgc3RydWN0IHY0bDJfZmlsZV9vcGVyYXRpb25zIGRlaW50ZXJsYWNlX2ZvcHMgPSB7CisJLm93 bmVyCQk9IFRISVNfTU9EVUxFLAorCS5vcGVuCQk9IGRlaW50ZXJsYWNlX29wZW4sCisJLnJlbGVh c2UJPSBkZWludGVybGFjZV9yZWxlYXNlLAorCS5wb2xsCQk9IHY0bDJfbTJtX2ZvcF9wb2xsLAor CS51bmxvY2tlZF9pb2N0bAk9IHZpZGVvX2lvY3RsMiwKKwkubW1hcAkJPSB2NGwyX20ybV9mb3Bf bW1hcCwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdmlkZW9fZGV2aWNlIGRlaW50ZXJsYWNl X3ZpZGVvX2RldmljZSA9IHsKKwkubmFtZQkJPSBERUlOVEVSTEFDRV9OQU1FLAorCS52ZmxfZGly CT0gVkZMX0RJUl9NMk0sCisJLmZvcHMJCT0gJmRlaW50ZXJsYWNlX2ZvcHMsCisJLmlvY3RsX29w cwk9ICZkZWludGVybGFjZV9pb2N0bF9vcHMsCisJLm1pbm9yCQk9IC0xLAorCS5yZWxlYXNlCT0g dmlkZW9fZGV2aWNlX3JlbGVhc2VfZW1wdHksCisJLmRldmljZV9jYXBzCT0gVjRMMl9DQVBfVklE RU9fTTJNIHwgVjRMMl9DQVBfU1RSRUFNSU5HLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCB2 NGwyX20ybV9vcHMgZGVpbnRlcmxhY2VfbTJtX29wcyA9IHsKKwkuZGV2aWNlX3J1bgk9IGRlaW50 ZXJsYWNlX2RldmljZV9ydW4sCisJLmpvYl9yZWFkeQk9IGRlaW50ZXJsYWNlX2pvYl9yZWFkeSwK Kwkuam9iX2Fib3J0CT0gZGVpbnRlcmxhY2Vfam9iX2Fib3J0LAorfTsKKworc3RhdGljIGludCBk ZWludGVybGFjZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQoreworCXN0cnVj dCBkZWludGVybGFjZV9kZXYgKmRldjsKKwlzdHJ1Y3QgdmlkZW9fZGV2aWNlICp2ZmQ7CisJc3Ry dWN0IHJlc291cmNlICpyZXM7CisJaW50IGlycSwgcmV0OworCisJZGV2ID0gZGV2bV9remFsbG9j KCZwZGV2LT5kZXYsIHNpemVvZigqZGV2KSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFkZXYpCisJCXJl dHVybiAtRU5PTUVNOworCisJZGV2LT52ZmQgPSBkZWludGVybGFjZV92aWRlb19kZXZpY2U7CisJ ZGV2LT5kZXYgPSAmcGRldi0+ZGV2OworCisJaXJxID0gcGxhdGZvcm1fZ2V0X2lycShwZGV2LCAw KTsKKwlpZiAoaXJxIDw9IDApIHsKKwkJZGV2X2VycihkZXYtPmRldiwgIkZhaWxlZCB0byBnZXQg SVJRXG4iKTsKKworCQlyZXR1cm4gaXJxOworCX0KKworCXJldCA9IGRldm1fcmVxdWVzdF9pcnEo ZGV2LT5kZXYsIGlycSwgZGVpbnRlcmxhY2VfaXJxLAorCQkJICAgICAgIDAsIGRldl9uYW1lKGRl di0+ZGV2KSwgZGV2KTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIoZGV2LT5kZXYsICJGYWlsZWQg dG8gcmVxdWVzdCBJUlFcbiIpOworCisJCXJldHVybiByZXQ7CisJfQorCisJcmV0ID0gb2ZfZG1h X2NvbmZpZ3VyZShkZXYtPmRldiwgZGV2LT5kZXYtPm9mX25vZGUsIHRydWUpOworCWlmIChyZXQp CisJCXJldHVybiByZXQ7CisKKwlyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9S RVNPVVJDRV9NRU0sIDApOworCWRldi0+YmFzZSA9IGRldm1faW9yZW1hcF9yZXNvdXJjZSgmcGRl di0+ZGV2LCByZXMpOworCWlmIChJU19FUlIoZGV2LT5iYXNlKSkgeworCQlkZXZfZXJyKGRldi0+ ZGV2LCAiRmFpbGVkIHRvIG1hcCByZWdpc3RlcnNcbiIpOworCisJCXJldHVybiBQVFJfRVJSKGRl di0+YmFzZSk7CisJfQorCisJZGV2LT5idXNfY2xrID0gZGV2bV9jbGtfZ2V0KGRldi0+ZGV2LCAi YnVzIik7CisJaWYgKElTX0VSUihkZXYtPmJ1c19jbGspKSB7CisJCWRldl9lcnIoZGV2LT5kZXYs ICJGYWlsZWQgdG8gZ2V0IGJ1cyBjbG9ja1xuIik7CisKKwkJcmV0dXJuIFBUUl9FUlIoZGV2LT5i dXNfY2xrKTsKKwl9CisKKwlkZXYtPm1vZF9jbGsgPSBkZXZtX2Nsa19nZXQoZGV2LT5kZXYsICJt b2QiKTsKKwlpZiAoSVNfRVJSKGRldi0+bW9kX2NsaykpIHsKKwkJZGV2X2VycihkZXYtPmRldiwg IkZhaWxlZCB0byBnZXQgbW9kIGNsb2NrXG4iKTsKKworCQlyZXR1cm4gUFRSX0VSUihkZXYtPm1v ZF9jbGspOworCX0KKworCWRldi0+cmFtX2NsayA9IGRldm1fY2xrX2dldChkZXYtPmRldiwgInJh bSIpOworCWlmIChJU19FUlIoZGV2LT5yYW1fY2xrKSkgeworCQlkZXZfZXJyKGRldi0+ZGV2LCAi RmFpbGVkIHRvIGdldCByYW0gY2xvY2tcbiIpOworCisJCXJldHVybiBQVFJfRVJSKGRldi0+cmFt X2Nsayk7CisJfQorCisJZGV2LT5yc3RjID0gZGV2bV9yZXNldF9jb250cm9sX2dldChkZXYtPmRl diwgTlVMTCk7CisJaWYgKElTX0VSUihkZXYtPnJzdGMpKSB7CisJCWRldl9lcnIoZGV2LT5kZXYs ICJGYWlsZWQgdG8gZ2V0IHJlc2V0IGNvbnRyb2xcbiIpOworCisJCXJldHVybiBQVFJfRVJSKGRl di0+cnN0Yyk7CisJfQorCisJY2xrX3NldF9yYXRlX2V4Y2x1c2l2ZShkZXYtPm1vZF9jbGssIDMw MDAwMDAwMCk7CisKKwltdXRleF9pbml0KCZkZXYtPmRldl9tdXRleCk7CisKKwlyZXQgPSB2NGwy X2RldmljZV9yZWdpc3RlcigmcGRldi0+ZGV2LCAmZGV2LT52NGwyX2Rldik7CisJaWYgKHJldCkg eworCQlkZXZfZXJyKGRldi0+ZGV2LCAiRmFpbGVkIHRvIHJlZ2lzdGVyIFY0TDIgZGV2aWNlXG4i KTsKKworCQlyZXR1cm4gcmV0OworCX0KKworCXZmZCA9ICZkZXYtPnZmZDsKKwl2ZmQtPmxvY2sg PSAmZGV2LT5kZXZfbXV0ZXg7CisJdmZkLT52NGwyX2RldiA9ICZkZXYtPnY0bDJfZGV2OworCisJ c25wcmludGYodmZkLT5uYW1lLCBzaXplb2YodmZkLT5uYW1lKSwgIiVzIiwKKwkJIGRlaW50ZXJs YWNlX3ZpZGVvX2RldmljZS5uYW1lKTsKKwl2aWRlb19zZXRfZHJ2ZGF0YSh2ZmQsIGRldik7CisK KwlyZXQgPSB2aWRlb19yZWdpc3Rlcl9kZXZpY2UodmZkLCBWRkxfVFlQRV9HUkFCQkVSLCAwKTsK KwlpZiAocmV0KSB7CisJCXY0bDJfZXJyKCZkZXYtPnY0bDJfZGV2LCAiRmFpbGVkIHRvIHJlZ2lz dGVyIHZpZGVvIGRldmljZVxuIik7CisKKwkJZ290byBlcnJfdjRsMjsKKwl9CisKKwl2NGwyX2lu Zm8oJmRldi0+djRsMl9kZXYsCisJCSAgIkRldmljZSByZWdpc3RlcmVkIGFzIC9kZXYvdmlkZW8l ZFxuIiwgdmZkLT5udW0pOworCisJZGV2LT5tMm1fZGV2ID0gdjRsMl9tMm1faW5pdCgmZGVpbnRl cmxhY2VfbTJtX29wcyk7CisJaWYgKElTX0VSUihkZXYtPm0ybV9kZXYpKSB7CisJCXY0bDJfZXJy KCZkZXYtPnY0bDJfZGV2LAorCQkJICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBWNEwyIE0yTSBkZXZp Y2VcbiIpOworCQlyZXQgPSBQVFJfRVJSKGRldi0+bTJtX2Rldik7CisKKwkJZ290byBlcnJfdmlk ZW87CisJfQorCisJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgZGV2KTsKKworCXBtX3J1bnRp bWVfZW5hYmxlKGRldi0+ZGV2KTsKKworCXJldHVybiAwOworCitlcnJfdmlkZW86CisJdmlkZW9f dW5yZWdpc3Rlcl9kZXZpY2UoJmRldi0+dmZkKTsKK2Vycl92NGwyOgorCXY0bDJfZGV2aWNlX3Vu cmVnaXN0ZXIoJmRldi0+djRsMl9kZXYpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGlu dCBkZWludGVybGFjZV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlz dHJ1Y3QgZGVpbnRlcmxhY2VfZGV2ICpkZXYgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsK KworCXY0bDJfbTJtX3JlbGVhc2UoZGV2LT5tMm1fZGV2KTsKKwl2aWRlb191bnJlZ2lzdGVyX2Rl dmljZSgmZGV2LT52ZmQpOworCXY0bDJfZGV2aWNlX3VucmVnaXN0ZXIoJmRldi0+djRsMl9kZXYp OworCisJcG1fcnVudGltZV9mb3JjZV9zdXNwZW5kKCZwZGV2LT5kZXYpOworCisJcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyBpbnQgZGVpbnRlcmxhY2VfcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmlj ZSAqZGV2aWNlKQoreworCXN0cnVjdCBkZWludGVybGFjZV9kZXYgKmRldiA9IGRldl9nZXRfZHJ2 ZGF0YShkZXZpY2UpOworCWludCByZXQ7CisKKwlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoZGV2 LT5idXNfY2xrKTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIoZGV2LT5kZXYsICJGYWlsZWQgdG8g ZW5hYmxlIGJ1cyBjbG9ja1xuIik7CisKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlyZXQgPSBjbGtf cHJlcGFyZV9lbmFibGUoZGV2LT5tb2RfY2xrKTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIoZGV2 LT5kZXYsICJGYWlsZWQgdG8gZW5hYmxlIG1vZCBjbG9ja1xuIik7CisKKwkJZ290byBlcnJfYnVz X2NsazsKKwl9CisKKwlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoZGV2LT5yYW1fY2xrKTsKKwlp ZiAocmV0KSB7CisJCWRldl9lcnIoZGV2LT5kZXYsICJGYWlsZWQgdG8gZW5hYmxlIHJhbSBjbG9j a1xuIik7CisKKwkJZ290byBlcnJfbW9kX2NsazsKKwl9CisKKwlyZXQgPSByZXNldF9jb250cm9s X2RlYXNzZXJ0KGRldi0+cnN0Yyk7CisJaWYgKHJldCkgeworCQlkZXZfZXJyKGRldi0+ZGV2LCAi RmFpbGVkIHRvIGFwcGx5IHJlc2V0XG4iKTsKKworCQlnb3RvIGVycl9yYW1fY2xrOworCX0KKwor CWRlaW50ZXJsYWNlX2luaXQoZGV2KTsKKworCXJldHVybiAwOworCitlcnJfcmFtX2NsazoKKwlj bGtfZGlzYWJsZV91bnByZXBhcmUoZGV2LT5yYW1fY2xrKTsKK2Vycl9tb2RfY2xrOgorCWNsa19k aXNhYmxlX3VucHJlcGFyZShkZXYtPm1vZF9jbGspOworZXJyX2J1c19jbGs6CisJY2xrX2Rpc2Fi bGVfdW5wcmVwYXJlKGRldi0+YnVzX2Nsayk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMg aW50IGRlaW50ZXJsYWNlX3J1bnRpbWVfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXZpY2UpCit7 CisJc3RydWN0IGRlaW50ZXJsYWNlX2RldiAqZGV2ID0gZGV2X2dldF9kcnZkYXRhKGRldmljZSk7 CisKKwlyZXNldF9jb250cm9sX2Fzc2VydChkZXYtPnJzdGMpOworCisJY2xrX2Rpc2FibGVfdW5w cmVwYXJlKGRldi0+cmFtX2Nsayk7CisJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGRldi0+bW9kX2Ns ayk7CisJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGRldi0+YnVzX2Nsayk7CisKKwlyZXR1cm4gMDsK K30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZGVpbnRlcmxhY2VfZHRfbWF0 Y2hbXSA9IHsKKwl7IC5jb21wYXRpYmxlID0gImFsbHdpbm5lcixzdW44aS1oMy1kZWludGVybGFj ZSIgfSwKKwl7IC8qIHNlbnRpbmVsICovIH0KK307CitNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBk ZWludGVybGFjZV9kdF9tYXRjaCk7CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBk ZWludGVybGFjZV9wbV9vcHMgPSB7CisJLnJ1bnRpbWVfcmVzdW1lCQk9IGRlaW50ZXJsYWNlX3J1 bnRpbWVfcmVzdW1lLAorCS5ydW50aW1lX3N1c3BlbmQJPSBkZWludGVybGFjZV9ydW50aW1lX3N1 c3BlbmQsCit9OworCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBkZWludGVybGFjZV9k cml2ZXIgPSB7CisJLnByb2JlCQk9IGRlaW50ZXJsYWNlX3Byb2JlLAorCS5yZW1vdmUJCT0gZGVp bnRlcmxhY2VfcmVtb3ZlLAorCS5kcml2ZXIJCT0geworCQkubmFtZQkJPSBERUlOVEVSTEFDRV9O QU1FLAorCQkub2ZfbWF0Y2hfdGFibGUJPSBkZWludGVybGFjZV9kdF9tYXRjaCwKKwkJLnBtCQk9 ICZkZWludGVybGFjZV9wbV9vcHMsCisJfSwKK307Cittb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGRl aW50ZXJsYWNlX2RyaXZlcik7CisKK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsKK01PRFVMRV9B VVRIT1IoIkplcm5laiBTa3JhYmVjIDxqZXJuZWouc2tyYWJlY0BzaW9sLm5ldD4iKTsKK01PRFVM RV9ERVNDUklQVElPTigiQWxsd2lubmVyIERlaW50ZXJsYWNlIGRyaXZlciIpOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9zdW44aS1kaS9zdW44aS1kaS5oIGIvZHJp dmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9zdW44aS1kaS9zdW44aS1kaS5oCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDI1NDI1MWQ4Njg3Ci0tLSAvZGV2L251bGwK KysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9zdW44aS1kaS9zdW44aS1kaS5oCkBA IC0wLDAgKzEsMjM3IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLwor LyoKKyAqIEFsbHdpbm5lciBEZWludGVybGFjZSBkcml2ZXIKKyAqCisgKiBDb3B5cmlnaHQgKEMp IDIwMTkgSmVybmVqIFNrcmFiZWMgPGplcm5lai5za3JhYmVjQHNpb2wubmV0PgorICovCisKKyNp Zm5kZWYgX1NVTjhJX0RFSU5URVJMQUNFX0hfCisjZGVmaW5lIF9TVU44SV9ERUlOVEVSTEFDRV9I XworCisjaW5jbHVkZSA8bWVkaWEvdjRsMi1kZXZpY2UuaD4KKyNpbmNsdWRlIDxtZWRpYS92NGwy LW1lbTJtZW0uaD4KKyNpbmNsdWRlIDxtZWRpYS92aWRlb2J1ZjItdjRsMi5oPgorI2luY2x1ZGUg PG1lZGlhL3ZpZGVvYnVmMi1kbWEtY29udGlnLmg+CisKKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9y bV9kZXZpY2UuaD4KKworI2RlZmluZSBERUlOVEVSTEFDRV9OQU1FCQkic3VuOGktZGkiCisKKyNk ZWZpbmUgREVJTlRFUkxBQ0VfTU9EX0VOQUJMRQkJCTB4MDAKKyNkZWZpbmUgREVJTlRFUkxBQ0Vf TU9EX0VOQUJMRV9FTgkJCUJJVCgwKQorCisjZGVmaW5lIERFSU5URVJMQUNFX0ZSTV9DVFJMCQkJ MHgwNAorI2RlZmluZSBERUlOVEVSTEFDRV9GUk1fQ1RSTF9SRUdfUkVBRFkJCQlCSVQoMCkKKyNk ZWZpbmUgREVJTlRFUkxBQ0VfRlJNX0NUUkxfV0JfRU4JCQlCSVQoMikKKyNkZWZpbmUgREVJTlRF UkxBQ0VfRlJNX0NUUkxfT1VUX0NUUkwJCQlCSVQoMTEpCisjZGVmaW5lIERFSU5URVJMQUNFX0ZS TV9DVFJMX1NUQVJUCQkJQklUKDE2KQorI2RlZmluZSBERUlOVEVSTEFDRV9GUk1fQ1RSTF9DT0VG X0FDQ0VTUwkJQklUKDIzKQorCisjZGVmaW5lIERFSU5URVJMQUNFX0JZUEFTUwkJCTB4MDgKKyNk ZWZpbmUgREVJTlRFUkxBQ0VfQllQQVNTX0NTQwkJCQlCSVQoMSkKKworI2RlZmluZSBERUlOVEVS TEFDRV9BR1RIX1NFTAkJCTB4MGMKKyNkZWZpbmUgREVJTlRFUkxBQ0VfQUdUSF9TRUxfTElORUJV RgkJCUJJVCg4KQorCisjZGVmaW5lIERFSU5URVJMQUNFX0xJTlRfQ1RSTAkJCTB4MTAKKyNkZWZp bmUgREVJTlRFUkxBQ0VfVFJEX1BSRUxVTUEJCQkweDFjCisjZGVmaW5lIERFSU5URVJMQUNFX0JV Rl9BRERSMAkJCTB4MjAKKyNkZWZpbmUgREVJTlRFUkxBQ0VfQlVGX0FERFIxCQkJMHgyNAorI2Rl ZmluZSBERUlOVEVSTEFDRV9CVUZfQUREUjIJCQkweDI4CisKKyNkZWZpbmUgREVJTlRFUkxBQ0Vf RklFTERfQ1RSTAkJCTB4MmMKKyNkZWZpbmUgREVJTlRFUkxBQ0VfRklFTERfQ1RSTF9GSUVMRF9D TlQodikJCSgodikgJiAweGZmKQorI2RlZmluZSBERUlOVEVSTEFDRV9GSUVMRF9DVFJMX0ZJRUxE X0NOVF9NU0sJCSgweGZmKQorCisjZGVmaW5lIERFSU5URVJMQUNFX1RCX09GRlNFVDAJCQkweDMw CisjZGVmaW5lIERFSU5URVJMQUNFX1RCX09GRlNFVDEJCQkweDM0CisjZGVmaW5lIERFSU5URVJM QUNFX1RCX09GRlNFVDIJCQkweDM4CisjZGVmaW5lIERFSU5URVJMQUNFX1RSRF9QUkVDSFJPTUEJ CTB4M2MKKyNkZWZpbmUgREVJTlRFUkxBQ0VfTElORV9TVFJJREUwCQkweDQwCisjZGVmaW5lIERF SU5URVJMQUNFX0xJTkVfU1RSSURFMQkJMHg0NAorI2RlZmluZSBERUlOVEVSTEFDRV9MSU5FX1NU UklERTIJCTB4NDgKKworI2RlZmluZSBERUlOVEVSTEFDRV9JTl9GTVQJCQkweDRjCisjZGVmaW5l IERFSU5URVJMQUNFX0lOX0ZNVF9QUyh2KQkJCSgodikgJiAzKQorI2RlZmluZSBERUlOVEVSTEFD RV9JTl9GTVRfRk1UKHYpCQkJKCgodikgJiA3KSA8PCA0KQorI2RlZmluZSBERUlOVEVSTEFDRV9J Tl9GTVRfTU9EKHYpCQkJKCgodikgJiA3KSA8PCA4KQorCisjZGVmaW5lIERFSU5URVJMQUNFX1dC X0FERFIwCQkJMHg1MAorI2RlZmluZSBERUlOVEVSTEFDRV9XQl9BRERSMQkJCTB4NTQKKyNkZWZp bmUgREVJTlRFUkxBQ0VfV0JfQUREUjIJCQkweDU4CisKKyNkZWZpbmUgREVJTlRFUkxBQ0VfT1VU X0ZNVAkJCTB4NWMKKyNkZWZpbmUgREVJTlRFUkxBQ0VfT1VUX0ZNVF9GTVQodikJCQkoKHYpICYg MHhmKQorI2RlZmluZSBERUlOVEVSTEFDRV9PVVRfRk1UX1BTKHYpCQkJKCgodikgJiAzKSA8PCA1 KQorCisjZGVmaW5lIERFSU5URVJMQUNFX0lOVF9FTkFCTEUJCQkweDYwCisjZGVmaW5lIERFSU5U RVJMQUNFX0lOVF9FTkFCTEVfV0JfRU4JCQlCSVQoNykKKworI2RlZmluZSBERUlOVEVSTEFDRV9J TlRfU1RBVFVTCQkJMHg2NAorI2RlZmluZSBERUlOVEVSTEFDRV9JTlRfU1RBVFVTX1dSSVRFQkFD SwkJQklUKDcpCisKKyNkZWZpbmUgREVJTlRFUkxBQ0VfU1RBVFVTCQkJMHg2OAorI2RlZmluZSBE RUlOVEVSTEFDRV9TVEFUVVNfQ09FRl9TVEFUVVMJCQlCSVQoMTEpCisjZGVmaW5lIERFSU5URVJM QUNFX1NUQVRVU19XQl9FUlJPUgkJCUJJVCgxMikKKworI2RlZmluZSBERUlOVEVSTEFDRV9DU0Nf Q09FRgkJCTB4NzAgLyogMTIgcmVnaXN0ZXJzICovCisKKyNkZWZpbmUgREVJTlRFUkxBQ0VfQ1RS TAkJCTB4YTAKKyNkZWZpbmUgREVJTlRFUkxBQ0VfQ1RSTF9FTgkJCQlCSVQoMCkKKyNkZWZpbmUg REVJTlRFUkxBQ0VfQ1RSTF9GTEFHX09VVF9FTgkJCUJJVCg4KQorI2RlZmluZSBERUlOVEVSTEFD RV9DVFJMX01PREVfUEFTU1RST1VHSAkJKDAgPDwgMTYpCisjZGVmaW5lIERFSU5URVJMQUNFX0NU UkxfTU9ERV9XRUFWRQkJCSgxIDw8IDE2KQorI2RlZmluZSBERUlOVEVSTEFDRV9DVFJMX01PREVf Qk9CCQkJKDIgPDwgMTYpCisjZGVmaW5lIERFSU5URVJMQUNFX0NUUkxfTU9ERV9NSVhFRAkJCSgz IDw8IDE2KQorI2RlZmluZSBERUlOVEVSTEFDRV9DVFJMX0RJQUdfSU5UUF9FTgkJCUJJVCgyNCkK KyNkZWZpbmUgREVJTlRFUkxBQ0VfQ1RSTF9URU1QX0RJRkZfRU4JCQlCSVQoMjUpCisKKyNkZWZp bmUgREVJTlRFUkxBQ0VfRElBR19JTlRQCQkJMHhhNAorI2RlZmluZSBERUlOVEVSTEFDRV9ESUFH X0lOVFBfVEgwKHYpCQkJKCh2KSAmIDB4N2YpCisjZGVmaW5lIERFSU5URVJMQUNFX0RJQUdfSU5U UF9USDBfTVNLCQkJKDB4N2YpCisjZGVmaW5lIERFSU5URVJMQUNFX0RJQUdfSU5UUF9USDEodikJ CQkoKCh2KSAmIDB4N2YpIDw8IDgpCisjZGVmaW5lIERFSU5URVJMQUNFX0RJQUdfSU5UUF9USDFf TVNLCQkJKDB4N2YgPDwgOCkKKyNkZWZpbmUgREVJTlRFUkxBQ0VfRElBR19JTlRQX1RIMyh2KQkJ CSgoKHYpICYgMHhmZikgPDwgMjQpCisjZGVmaW5lIERFSU5URVJMQUNFX0RJQUdfSU5UUF9USDNf TVNLCQkJKDB4ZmYgPDwgMjQpCisKKyNkZWZpbmUgREVJTlRFUkxBQ0VfVEVNUF9ESUZGCQkJMHhh OAorI2RlZmluZSBERUlOVEVSTEFDRV9URU1QX0RJRkZfU0FEX0NFTlRSQUxfVEgodikJCSgodikg JiAweDdmKQorI2RlZmluZSBERUlOVEVSTEFDRV9URU1QX0RJRkZfU0FEX0NFTlRSQUxfVEhfTVNL CSgweDdmKQorI2RlZmluZSBERUlOVEVSTEFDRV9URU1QX0RJRkZfQU1CSUdVSVRZX1RIKHYpCQko KCh2KSAmIDB4N2YpIDw8IDgpCisjZGVmaW5lIERFSU5URVJMQUNFX1RFTVBfRElGRl9BTUJJR1VJ VFlfVEhfTVNLCQkoMHg3ZiA8PCA4KQorI2RlZmluZSBERUlOVEVSTEFDRV9URU1QX0RJRkZfRElS RUNUX0RJVEhFUl9USCh2KQkoKCh2KSAmIDB4N2ZmKSA8PCAxNikKKyNkZWZpbmUgREVJTlRFUkxB Q0VfVEVNUF9ESUZGX0RJUkVDVF9ESVRIRVJfVEhfTVNLCSgweDdmZiA8PCAxNikKKworI2RlZmlu ZSBERUlOVEVSTEFDRV9MVU1BX1RICQkJMHhhYworI2RlZmluZSBERUlOVEVSTEFDRV9MVU1BX1RI X01JTl9MVU1BKHYpCQkJKCh2KSAmIDB4ZmYpCisjZGVmaW5lIERFSU5URVJMQUNFX0xVTUFfVEhf TUlOX0xVTUFfTVNLCQkoMHhmZikKKyNkZWZpbmUgREVJTlRFUkxBQ0VfTFVNQV9USF9NQVhfTFVN QSh2KQkJCSgoKHYpICYgMHhmZikgPDwgOCkKKyNkZWZpbmUgREVJTlRFUkxBQ0VfTFVNQV9USF9N QVhfTFVNQV9NU0sJCSgweGZmIDw8IDgpCisjZGVmaW5lIERFSU5URVJMQUNFX0xVTUFfVEhfQVZH X0xVTUFfU0hJRlQodikJCSgoKHYpICYgMHhmZikgPDwgMTYpCisjZGVmaW5lIERFSU5URVJMQUNF X0xVTUFfVEhfQVZHX0xVTUFfU0hJRlRfTVNLCQkoMHhmZiA8PCAxNikKKyNkZWZpbmUgREVJTlRF UkxBQ0VfTFVNQV9USF9QSVhFTF9TVEFUSUModikJCSgoKHYpICYgMykgPDwgMjQpCisjZGVmaW5l IERFSU5URVJMQUNFX0xVTUFfVEhfUElYRUxfU1RBVElDX01TSwkJKDMgPDwgMjQpCisKKyNkZWZp bmUgREVJTlRFUkxBQ0VfU1BBVF9DT01QCQkJMHhiMAorI2RlZmluZSBERUlOVEVSTEFDRV9TUEFU X0NPTVBfVEgyKHYpCQkJKCh2KSAmIDB4ZmYpCisjZGVmaW5lIERFSU5URVJMQUNFX1NQQVRfQ09N UF9USDJfTVNLCQkJKDB4ZmYpCisjZGVmaW5lIERFSU5URVJMQUNFX1NQQVRfQ09NUF9USDModikJ CQkoKCh2KSAmIDB4ZmYpIDw8IDE2KQorI2RlZmluZSBERUlOVEVSTEFDRV9TUEFUX0NPTVBfVEgz X01TSwkJCSgweGZmIDw8IDE2KQorCisjZGVmaW5lIERFSU5URVJMQUNFX0NIUk9NQV9ESUZGCQkJ MHhiNAorI2RlZmluZSBERUlOVEVSTEFDRV9DSFJPTUFfRElGRl9USCh2KQkJCSgodikgJiAweGZm KQorI2RlZmluZSBERUlOVEVSTEFDRV9DSFJPTUFfRElGRl9USF9NU0sJCQkoMHhmZikKKyNkZWZp bmUgREVJTlRFUkxBQ0VfQ0hST01BX0RJRkZfTFVNQSh2KQkJCSgoKHYpICYgMHgzZikgPDwgMTYp CisjZGVmaW5lIERFSU5URVJMQUNFX0NIUk9NQV9ESUZGX0xVTUFfTVNLCQkoMHgzZiA8PCAxNikK KyNkZWZpbmUgREVJTlRFUkxBQ0VfQ0hST01BX0RJRkZfQ0hST01BKHYpCQkoKCh2KSAmIDB4M2Yp IDw8IDI0KQorI2RlZmluZSBERUlOVEVSTEFDRV9DSFJPTUFfRElGRl9DSFJPTUFfTVNLCQkoMHgz ZiA8PCAyNCkKKworI2RlZmluZSBERUlOVEVSTEFDRV9QUkVMVU1BCQkJMHhiOAorI2RlZmluZSBE RUlOVEVSTEFDRV9QUkVDSFJPTUEJCQkweGJjCisjZGVmaW5lIERFSU5URVJMQUNFX1RJTEVfRkxB RzAJCQkweGMwCisjZGVmaW5lIERFSU5URVJMQUNFX1RJTEVfRkxBRzEJCQkweGM0CisjZGVmaW5l IERFSU5URVJMQUNFX0ZMQUdfTElORV9TVFJJREUJCTB4YzgKKyNkZWZpbmUgREVJTlRFUkxBQ0Vf RkxBR19TRVEJCQkweGNjCisKKyNkZWZpbmUgREVJTlRFUkxBQ0VfV0JfTElORV9TVFJJREVfQ1RS TAkJMHhkMAorI2RlZmluZSBERUlOVEVSTEFDRV9XQl9MSU5FX1NUUklERV9DVFJMX0VOCQlCSVQo MCkKKworI2RlZmluZSBERUlOVEVSTEFDRV9XQl9MSU5FX1NUUklERTAJCTB4ZDQKKyNkZWZpbmUg REVJTlRFUkxBQ0VfV0JfTElORV9TVFJJREUxCQkweGQ4CisjZGVmaW5lIERFSU5URVJMQUNFX1dC X0xJTkVfU1RSSURFMgkJMHhkYworI2RlZmluZSBERUlOVEVSTEFDRV9UUkRfQ1RSTAkJCTB4ZTAK KyNkZWZpbmUgREVJTlRFUkxBQ0VfVFJEX0JVRl9BRERSMAkJMHhlNAorI2RlZmluZSBERUlOVEVS TEFDRV9UUkRfQlVGX0FERFIxCQkweGU4CisjZGVmaW5lIERFSU5URVJMQUNFX1RSRF9CVUZfQURE UjIJCTB4ZWMKKyNkZWZpbmUgREVJTlRFUkxBQ0VfVFJEX1RCX09GRjAJCQkweGYwCisjZGVmaW5l IERFSU5URVJMQUNFX1RSRF9UQl9PRkYxCQkJMHhmNAorI2RlZmluZSBERUlOVEVSTEFDRV9UUkRf VEJfT0ZGMgkJCTB4ZjgKKyNkZWZpbmUgREVJTlRFUkxBQ0VfVFJEX1dCX1NUUklERQkJMHhmYwor I2RlZmluZSBERUlOVEVSTEFDRV9DSDBfSU5fU0laRQkJCTB4MTAwCisjZGVmaW5lIERFSU5URVJM QUNFX0NIMF9PVVRfU0laRQkJMHgxMDQKKyNkZWZpbmUgREVJTlRFUkxBQ0VfQ0gwX0hPUlpfRkFD VAkJMHgxMDgKKyNkZWZpbmUgREVJTlRFUkxBQ0VfQ0gwX1ZFUlRfRkFDVAkJMHgxMGMKKyNkZWZp bmUgREVJTlRFUkxBQ0VfQ0gwX0hPUlpfUEhBU0UJCTB4MTEwCisjZGVmaW5lIERFSU5URVJMQUNF X0NIMF9WRVJUX1BIQVNFMAkJMHgxMTQKKyNkZWZpbmUgREVJTlRFUkxBQ0VfQ0gwX1ZFUlRfUEhB U0UxCQkweDExOAorI2RlZmluZSBERUlOVEVSTEFDRV9DSDBfSE9SWl9UQVAwCQkweDEyMAorI2Rl ZmluZSBERUlOVEVSTEFDRV9DSDBfSE9SWl9UQVAxCQkweDEyNAorI2RlZmluZSBERUlOVEVSTEFD RV9DSDBfVkVSVF9UQVAJCTB4MTI4CisjZGVmaW5lIERFSU5URVJMQUNFX0NIMV9JTl9TSVpFCQkJ MHgyMDAKKyNkZWZpbmUgREVJTlRFUkxBQ0VfQ0gxX09VVF9TSVpFCQkweDIwNAorI2RlZmluZSBE RUlOVEVSTEFDRV9DSDFfSE9SWl9GQUNUCQkweDIwOAorI2RlZmluZSBERUlOVEVSTEFDRV9DSDFf VkVSVF9GQUNUCQkweDIwYworI2RlZmluZSBERUlOVEVSTEFDRV9DSDFfSE9SWl9QSEFTRQkJMHgy MTAKKyNkZWZpbmUgREVJTlRFUkxBQ0VfQ0gxX1ZFUlRfUEhBU0UwCQkweDIxNAorI2RlZmluZSBE RUlOVEVSTEFDRV9DSDFfVkVSVF9QSEFTRTEJCTB4MjE4CisjZGVmaW5lIERFSU5URVJMQUNFX0NI MV9IT1JaX1RBUDAJCTB4MjIwCisjZGVmaW5lIERFSU5URVJMQUNFX0NIMV9IT1JaX1RBUDEJCTB4 MjI0CisjZGVmaW5lIERFSU5URVJMQUNFX0NIMV9WRVJUX1RBUAkJMHgyMjgKKyNkZWZpbmUgREVJ TlRFUkxBQ0VfQ0gwX0hPUlpfQ09FRjAJCTB4NDAwIC8qIDMyIHJlZ2lzdGVycyAqLworI2RlZmlu ZSBERUlOVEVSTEFDRV9DSDBfSE9SWl9DT0VGMQkJMHg0ODAgLyogMzIgcmVnaXN0ZXJzICovCisj ZGVmaW5lIERFSU5URVJMQUNFX0NIMF9WRVJUX0NPRUYJCTB4NTAwIC8qIDMyIHJlZ2lzdGVycyAq LworI2RlZmluZSBERUlOVEVSTEFDRV9DSDFfSE9SWl9DT0VGMAkJMHg2MDAgLyogMzIgcmVnaXN0 ZXJzICovCisjZGVmaW5lIERFSU5URVJMQUNFX0NIMV9IT1JaX0NPRUYxCQkweDY4MCAvKiAzMiBy ZWdpc3RlcnMgKi8KKyNkZWZpbmUgREVJTlRFUkxBQ0VfQ0gxX1ZFUlRfQ09FRgkJMHg3MDAgLyog MzIgcmVnaXN0ZXJzICovCisjZGVmaW5lIERFSU5URVJMQUNFX0NIM19IT1JaX0NPRUYwCQkweDgw MCAvKiAzMiByZWdpc3RlcnMgKi8KKyNkZWZpbmUgREVJTlRFUkxBQ0VfQ0gzX0hPUlpfQ09FRjEJ CTB4ODgwIC8qIDMyIHJlZ2lzdGVycyAqLworI2RlZmluZSBERUlOVEVSTEFDRV9DSDNfVkVSVF9D T0VGCQkweDkwMCAvKiAzMiByZWdpc3RlcnMgKi8KKworI2RlZmluZSBERUlOVEVSTEFDRV9NSU5f V0lEVEgJMlUKKyNkZWZpbmUgREVJTlRFUkxBQ0VfTUlOX0hFSUdIVAkyVQorI2RlZmluZSBERUlO VEVSTEFDRV9NQVhfV0lEVEgJMjA0OFUKKyNkZWZpbmUgREVJTlRFUkxBQ0VfTUFYX0hFSUdIVAkx MTAwVQorCisjZGVmaW5lIERFSU5URVJMQUNFX01PREVfVVZfQ09NQklORUQJMgorCisjZGVmaW5l IERFSU5URVJMQUNFX0lOX0ZNVF9ZVVY0MjAJMgorCisjZGVmaW5lIERFSU5URVJMQUNFX09VVF9G TVRfWVVWNDIwU1AJMTMKKworI2RlZmluZSBERUlOVEVSTEFDRV9QU19VVlVWCQkwCisjZGVmaW5l IERFSU5URVJMQUNFX1BTX1ZVVlUJCTEKKworI2RlZmluZSBERUlOVEVSTEFDRV9JREVOVElUWV9D T0VGCTB4NDAwMAorCisjZGVmaW5lIERFSU5URVJMQUNFX1NJWkUodywgaCkJKCgoaCkgLSAxKSA8 PCAxNiB8ICgodykgLSAxKSkKKworc3RydWN0IGRlaW50ZXJsYWNlX2N0eCB7CisJc3RydWN0IHY0 bDJfZmgJCWZoOworCXN0cnVjdCBkZWludGVybGFjZV9kZXYJKmRldjsKKworCXN0cnVjdCB2NGwy X3BpeF9mb3JtYXQJc3JjX2ZtdDsKKwlzdHJ1Y3QgdjRsMl9waXhfZm9ybWF0CWRzdF9mbXQ7CisK Kwl2b2lkCQkJKmZsYWcxX2J1ZjsKKwlkbWFfYWRkcl90CQlmbGFnMV9idWZfZG1hOworCisJdm9p ZAkJCSpmbGFnMl9idWY7CisJZG1hX2FkZHJfdAkJZmxhZzJfYnVmX2RtYTsKKworCXN0cnVjdCB2 YjJfdjRsMl9idWZmZXIJKnByZXY7CisKKwl1bnNpZ25lZCBpbnQJCWZpcnN0X2ZpZWxkOworCXVu c2lnbmVkIGludAkJZmllbGQ7CisKKwlpbnQJCQlhYm9ydGluZzsKK307CisKK3N0cnVjdCBkZWlu dGVybGFjZV9kZXYgeworCXN0cnVjdCB2NGwyX2RldmljZQl2NGwyX2RldjsKKwlzdHJ1Y3Qgdmlk ZW9fZGV2aWNlCXZmZDsKKwlzdHJ1Y3QgZGV2aWNlCQkqZGV2OworCXN0cnVjdCB2NGwyX20ybV9k ZXYJKm0ybV9kZXY7CisKKwkvKiBEZXZpY2UgZmlsZSBtdXRleCAqLworCXN0cnVjdCBtdXRleAkJ ZGV2X211dGV4OworCisJdm9pZCBfX2lvbWVtCQkqYmFzZTsKKworCXN0cnVjdCBjbGsJCSpidXNf Y2xrOworCXN0cnVjdCBjbGsJCSptb2RfY2xrOworCXN0cnVjdCBjbGsJCSpyYW1fY2xrOworCisJ c3RydWN0IHJlc2V0X2NvbnRyb2wJKnJzdGM7Cit9OworCisjZW5kaWYKLS0gCjIuMjMuMAoKCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0t a2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcK aHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2Vy bmVsCg==