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 28B4FECE58D for ; Thu, 17 Oct 2019 18:39:34 +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 D7F472089C for ; Thu, 17 Oct 2019 18:39:33 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="GTSsHGpf" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D7F472089C 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=djNTXQt2xoz2zYWwvRnoqhiTH7yZNgKOxGmD65kwkXE=; b=GTSsHGpfLLWBMY Y5VyKvR4voDWHc5VFPLXpUQdAFO4xNNe3bqOUguEd9BDatvEnmzciSeGZVt/TAglksCpmYDTqmqLm fSoOMIi6ga6vgPh9JxPijK27llacCIC8ne6ZLMNOqk8HvIMj3XCzH+8Fy8V1L3qd6lhOCp9HB9Eom qVfPLCGSy7B1EKjspstSC5Jm9ffqEX3Rb35cuyUoRKTSOV1c8GJbEUbQ+3VG+23Rx3XFSdqdveFc8 63lkpk2MpSvp+gl5YZFQufX5EWzt0Eo06pJpmXFsVOJTIfsbs4HEgttm7dAvUvUfumKNxzNebbE9w 8dsebEVOuUIW8FzNAkEg==; 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 1iLAgI-0006zl-LP; Thu, 17 Oct 2019 18:39:26 +0000 Received: from mailoutvs52.siol.net ([185.57.226.243] helo=mail.siol.net) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1iLAeu-0005Tv-RC for linux-arm-kernel@lists.infradead.org; Thu, 17 Oct 2019 18:38:05 +0000 Received: from localhost (localhost [127.0.0.1]) by mail.siol.net (Postfix) with ESMTP id B73A2525367; Thu, 17 Oct 2019 20:37:58 +0200 (CEST) X-Virus-Scanned: amavisd-new at psrvmta10.zcs-production.pri Received: from mail.siol.net ([127.0.0.1]) by localhost (psrvmta10.zcs-production.pri [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id qYxSVxAieRWD; Thu, 17 Oct 2019 20:37:56 +0200 (CEST) Received: from mail.siol.net (localhost [127.0.0.1]) by mail.siol.net (Postfix) with ESMTPS id 6CB5852524F; Thu, 17 Oct 2019 20:37:56 +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 0F7FD525463; Thu, 17 Oct 2019 20:37:54 +0200 (CEST) From: Jernej Skrabec To: mripard@kernel.org, wens@csie.org Subject: [PATCH v4 5/6] media: sun4i: Add H3 deinterlace driver Date: Thu, 17 Oct 2019 20:37:37 +0200 Message-Id: <20191017183738.68069-6-jernej.skrabec@siol.net> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191017183738.68069-1-jernej.skrabec@siol.net> References: <20191017183738.68069-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-20191017_113801_438292_17D76057 X-CRM114-Status: GOOD ( 19.66 ) 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 ZGVvCnNtb290aGx5IGluIHJlYWwgdGltZS4KCkFja2VkLWJ5OiBNYXhpbWUgUmlwYXJkIDxtcmlw YXJkQGtlcm5lbC5vcmc+ClNpZ25lZC1vZmYtYnk6IEplcm5laiBTa3JhYmVjIDxqZXJuZWouc2ty YWJlY0BzaW9sLm5ldD4KLS0tCiBNQUlOVEFJTkVSUyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgICA3ICsKIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vS2NvbmZpZyAgICAgICAg ICAgICAgICB8ICAgMTIgKwogZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9NYWtlZmlsZSAg ICAgICAgIHwgICAgMSArCiAuLi4vbWVkaWEvcGxhdGZvcm0vc3VueGkvc3VuOGktZGkvTWFrZWZp bGUgICAgfCAgICAyICsKIC4uLi9tZWRpYS9wbGF0Zm9ybS9zdW54aS9zdW44aS1kaS9zdW44aS1k aS5jICB8IDEwMjggKysrKysrKysrKysrKysrKysKIC4uLi9tZWRpYS9wbGF0Zm9ybS9zdW54aS9z dW44aS1kaS9zdW44aS1kaS5oICB8ICAyMzcgKysrKwogNiBmaWxlcyBjaGFuZ2VkLCAxMjg3IGlu c2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3N1 bnhpL3N1bjhpLWRpL01ha2VmaWxlCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9tZWRpYS9w bGF0Zm9ybS9zdW54aS9zdW44aS1kaS9zdW44aS1kaS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJp dmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9zdW44aS1kaS9zdW44aS1kaS5oCgpkaWZmIC0tZ2l0 IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUwppbmRleCBjN2I0ODUyNTgyMmEuLmMzNzU0NTUx MjVmYiAxMDA2NDQKLS0tIGEvTUFJTlRBSU5FUlMKKysrIGIvTUFJTlRBSU5FUlMKQEAgLTQ2NDYs NiArNDY0NiwxMyBAQCBNOgkiTWFjaWVqIFcuIFJvenlja2kiIDxtYWNyb0BsaW51eC1taXBzLm9y Zz4KIFM6CU1haW50YWluZWQKIEY6CWRyaXZlcnMvbmV0L2ZkZGkvZGVmeHguKgogCitERUlOVEVS TEFDRSBEUklWRVJTIEZPUiBBTExXSU5ORVIgSDMKK006CUplcm5laiBTa3JhYmVjIDxqZXJuZWou c2tyYWJlY0BzaW9sLm5ldD4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworVDoJZ2l0 IGdpdDovL2xpbnV4dHYub3JnL21lZGlhX3RyZWUuZ2l0CitTOglNYWludGFpbmVkCitGOglkcml2 ZXJzL21lZGlhL3BsYXRmb3JtL3N1bnhpL3N1bjhpLWRpLworCiBERUxMIFNNQklPUyBEUklWRVIK IE06CVBhbGkgUm9ow6FyIDxwYWxpLnJvaGFyQGdtYWlsLmNvbT4KIE06CU1hcmlvIExpbW9uY2ll bGxvIDxtYXJpby5saW1vbmNpZWxsb0BkZWxsLmNvbT4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVk aWEvcGxhdGZvcm0vS2NvbmZpZyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vS2NvbmZpZwppbmRl eCA5OTdkZTFhODNmZjkuLjI3ZmZiNGE5ZDM2YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9w bGF0Zm9ybS9LY29uZmlnCisrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vS2NvbmZpZwpAQCAt NDk0LDYgKzQ5NCwxOCBAQCBjb25maWcgVklERU9fUUNPTV9WRU5VUwogCSAgb24gdmFyaW91cyBR dWFsY29tbSBTb0NzLgogCSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSBjaG9v c2UgbSBoZXJlLgogCitjb25maWcgVklERU9fU1VOOElfREVJTlRFUkxBQ0UKKwl0cmlzdGF0ZSAi QWxsd2lubmVyIERlaW50ZXJsYWNlIGRyaXZlciIKKwlkZXBlbmRzIG9uIFZJREVPX0RFViAmJiBW SURFT19WNEwyCisJZGVwZW5kcyBvbiBBUkNIX1NVTlhJIHx8IENPTVBJTEVfVEVTVAorCWRlcGVu ZHMgb24gQ09NTU9OX0NMSyAmJiBPRgorCWRlcGVuZHMgb24gUE0KKwlzZWxlY3QgVklERU9CVUYy X0RNQV9DT05USUcKKwlzZWxlY3QgVjRMMl9NRU0yTUVNX0RFVgorCWhlbHAKKwkgICBTdXBwb3J0 IGZvciB0aGUgQWxsd2lubmVyIERlaW50ZXJsYWNlIHVuaXQgZm91bmQgb24gc29tZSBTb0NzLgor CSAgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUgY2hvb3NlIG0gaGVyZS4KKwog ZW5kaWYgIyBWNExfTUVNMk1FTV9EUklWRVJTCiAKICMgVEkgVklERU8gUE9SVCBIZWxwZXIgTW9k dWxlcwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9NYWtlZmlsZSBi L2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vc3VueGkvTWFrZWZpbGUKaW5kZXggYTA1MTI3NTI5MDA2 Li4zODc4Y2I0ZWZkYzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vc3VueGkv TWFrZWZpbGUKKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9NYWtlZmlsZQpAQCAt MSwyICsxLDMgQEAKIG9iai15CQkrPSBzdW40aS1jc2kvCiBvYmoteQkJKz0gc3VuNmktY3NpLwor b2JqLXkJCSs9IHN1bjhpLWRpLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9z dW54aS9zdW44aS1kaS9NYWtlZmlsZSBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vc3VueGkvc3Vu OGktZGkvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4x MDlmN2U1NDQyYjcKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3N1 bnhpL3N1bjhpLWRpL01ha2VmaWxlCkBAIC0wLDAgKzEsMiBAQAorIyBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogR1BMLTIuMAorb2JqLSQoQ09ORklHX1ZJREVPX1NVTjhJX0RFSU5URVJMQUNFKSAr PSBzdW44aS1kaS5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3N1bnhpL3N1 bjhpLWRpL3N1bjhpLWRpLmMgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3N1bnhpL3N1bjhpLWRp L3N1bjhpLWRpLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kNTM0 NjFkNjk1YmIKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3N1bnhp L3N1bjhpLWRpL3N1bjhpLWRpLmMKQEAgLTAsMCArMSwxMDI4IEBACisvLyBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogR1BMLTIuMAorLyoKKyAqIEFsbHdpbm5lciBzdW44aSBkZWludGVybGFjZSBk cml2ZXIKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgSmVybmVqIFNrcmFiZWMgPGplcm5lai5z a3JhYmVjQHNpb2wubmV0PgorICoKKyAqIEJhc2VkIG9uIHZpbTJtIGRyaXZlci4KKyAqLworCisj aW5jbHVkZSA8bGludXgvY2xrLmg+CisjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+CisjaW5j bHVkZSA8bGludXgvaW8uaD4KKyNpbmNsdWRlIDxsaW51eC9pb3BvbGwuaD4KKyNpbmNsdWRlIDxs aW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9vZi5oPgorI2luY2x1ZGUgPGxpbnV4L29m X2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L3BtX3J1bnRpbWUuaD4KKyNpbmNsdWRlIDxsaW51 eC9yZXNldC5oPgorCisjaW5jbHVkZSA8bWVkaWEvdjRsMi1kZXZpY2UuaD4KKyNpbmNsdWRlIDxt ZWRpYS92NGwyLWlvY3RsLmg+CisjaW5jbHVkZSA8bWVkaWEvdjRsMi1tZW0ybWVtLmg+CisKKyNp bmNsdWRlICJzdW44aS1kaS5oIgorCisjZGVmaW5lIEZMQUdfU0laRSAoREVJTlRFUkxBQ0VfTUFY X1dJRFRIICogREVJTlRFUkxBQ0VfTUFYX0hFSUdIVCAvIDQpCisKK3N0YXRpYyB1MzIgZGVpbnRl cmxhY2VfZm9ybWF0c1tdID0geworCVY0TDJfUElYX0ZNVF9OVjEyLAorCVY0TDJfUElYX0ZNVF9O VjIxLAorfTsKKworc3RhdGljIGlubGluZSB1MzIgZGVpbnRlcmxhY2VfcmVhZChzdHJ1Y3QgZGVp bnRlcmxhY2VfZGV2ICpkZXYsIHUzMiByZWcpCit7CisJcmV0dXJuIHJlYWRsKGRldi0+YmFzZSAr IHJlZyk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBkZWludGVybGFjZV93cml0ZShzdHJ1Y3Qg ZGVpbnRlcmxhY2VfZGV2ICpkZXYsCisJCQkJICAgICB1MzIgcmVnLCB1MzIgdmFsdWUpCit7CisJ d3JpdGVsKHZhbHVlLCBkZXYtPmJhc2UgKyByZWcpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQg ZGVpbnRlcmxhY2Vfc2V0X2JpdHMoc3RydWN0IGRlaW50ZXJsYWNlX2RldiAqZGV2LAorCQkJCQl1 MzIgcmVnLCB1MzIgYml0cykKK3sKKwl3cml0ZWwocmVhZGwoZGV2LT5iYXNlICsgcmVnKSB8IGJp dHMsIGRldi0+YmFzZSArIHJlZyk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBkZWludGVybGFj ZV9jbHJfc2V0X2JpdHMoc3RydWN0IGRlaW50ZXJsYWNlX2RldiAqZGV2LAorCQkJCQkgICAgdTMy IHJlZywgdTMyIGNsciwgdTMyIHNldCkKK3sKKwl1MzIgdmFsID0gcmVhZGwoZGV2LT5iYXNlICsg cmVnKTsKKworCXZhbCAmPSB+Y2xyOworCXZhbCB8PSBzZXQ7CisKKwl3cml0ZWwodmFsLCBkZXYt PmJhc2UgKyByZWcpOworfQorCitzdGF0aWMgdm9pZCBkZWludGVybGFjZV9kZXZpY2VfcnVuKHZv aWQgKnByaXYpCit7CisJc3RydWN0IGRlaW50ZXJsYWNlX2N0eCAqY3R4ID0gcHJpdjsKKwlzdHJ1 Y3QgZGVpbnRlcmxhY2VfZGV2ICpkZXYgPSBjdHgtPmRldjsKKwl1MzIgc2l6ZSwgc3RyaWRlLCB3 aWR0aCwgaGVpZ2h0LCB2YWw7CisJc3RydWN0IHZiMl92NGwyX2J1ZmZlciAqc3JjLCAqZHN0Owor CXVuc2lnbmVkIGludCBoc3RlcCwgdnN0ZXA7CisJZG1hX2FkZHJfdCBhZGRyOworCisJc3JjID0g djRsMl9tMm1fbmV4dF9zcmNfYnVmKGN0eC0+ZmgubTJtX2N0eCk7CisJZHN0ID0gdjRsMl9tMm1f bmV4dF9kc3RfYnVmKGN0eC0+ZmgubTJtX2N0eCk7CisKKwl2NGwyX20ybV9idWZfY29weV9tZXRh ZGF0YShzcmMsIGRzdCwgdHJ1ZSk7CisKKwlkZWludGVybGFjZV93cml0ZShkZXYsIERFSU5URVJM QUNFX01PRF9FTkFCTEUsCisJCQkgIERFSU5URVJMQUNFX01PRF9FTkFCTEVfRU4pOworCisJaWYg KGN0eC0+ZmllbGQpIHsKKwkJZGVpbnRlcmxhY2Vfd3JpdGUoZGV2LCBERUlOVEVSTEFDRV9USUxF X0ZMQUcwLAorCQkJCSAgY3R4LT5mbGFnMV9idWZfZG1hKTsKKwkJZGVpbnRlcmxhY2Vfd3JpdGUo ZGV2LCBERUlOVEVSTEFDRV9USUxFX0ZMQUcxLAorCQkJCSAgY3R4LT5mbGFnMl9idWZfZG1hKTsK Kwl9IGVsc2UgeworCQlkZWludGVybGFjZV93cml0ZShkZXYsIERFSU5URVJMQUNFX1RJTEVfRkxB RzAsCisJCQkJICBjdHgtPmZsYWcyX2J1Zl9kbWEpOworCQlkZWludGVybGFjZV93cml0ZShkZXYs IERFSU5URVJMQUNFX1RJTEVfRkxBRzEsCisJCQkJICBjdHgtPmZsYWcxX2J1Zl9kbWEpOworCX0K KwlkZWludGVybGFjZV93cml0ZShkZXYsIERFSU5URVJMQUNFX0ZMQUdfTElORV9TVFJJREUsIDB4 MjAwKTsKKworCXdpZHRoID0gY3R4LT5zcmNfZm10LndpZHRoOworCWhlaWdodCA9IGN0eC0+c3Jj X2ZtdC5oZWlnaHQ7CisJc3RyaWRlID0gY3R4LT5zcmNfZm10LmJ5dGVzcGVybGluZTsKKwlzaXpl ID0gc3RyaWRlICogaGVpZ2h0OworCisJYWRkciA9IHZiMl9kbWFfY29udGlnX3BsYW5lX2RtYV9h ZGRyKCZzcmMtPnZiMl9idWYsIDApOworCWRlaW50ZXJsYWNlX3dyaXRlKGRldiwgREVJTlRFUkxB Q0VfQlVGX0FERFIwLCBhZGRyKTsKKwlkZWludGVybGFjZV93cml0ZShkZXYsIERFSU5URVJMQUNF X0JVRl9BRERSMSwgYWRkciArIHNpemUpOworCWRlaW50ZXJsYWNlX3dyaXRlKGRldiwgREVJTlRF UkxBQ0VfQlVGX0FERFIyLCAwKTsKKworCWRlaW50ZXJsYWNlX3dyaXRlKGRldiwgREVJTlRFUkxB Q0VfTElORV9TVFJJREUwLCBzdHJpZGUpOworCWRlaW50ZXJsYWNlX3dyaXRlKGRldiwgREVJTlRF UkxBQ0VfTElORV9TVFJJREUxLCBzdHJpZGUpOworCisJZGVpbnRlcmxhY2Vfd3JpdGUoZGV2LCBE RUlOVEVSTEFDRV9DSDBfSU5fU0laRSwKKwkJCSAgREVJTlRFUkxBQ0VfU0laRSh3aWR0aCwgaGVp Z2h0KSk7CisJZGVpbnRlcmxhY2Vfd3JpdGUoZGV2LCBERUlOVEVSTEFDRV9DSDFfSU5fU0laRSwK KwkJCSAgREVJTlRFUkxBQ0VfU0laRSh3aWR0aCAvIDIsIGhlaWdodCAvIDIpKTsKKworCXZhbCA9 IERFSU5URVJMQUNFX0lOX0ZNVF9GTVQoREVJTlRFUkxBQ0VfSU5fRk1UX1lVVjQyMCkgfAorCSAg ICAgIERFSU5URVJMQUNFX0lOX0ZNVF9NT0QoREVJTlRFUkxBQ0VfTU9ERV9VVl9DT01CSU5FRCk7 CisJc3dpdGNoIChjdHgtPnNyY19mbXQucGl4ZWxmb3JtYXQpIHsKKwljYXNlIFY0TDJfUElYX0ZN VF9OVjEyOgorCQl2YWwgfD0gREVJTlRFUkxBQ0VfSU5fRk1UX1BTKERFSU5URVJMQUNFX1BTX1VW VVYpOworCQlicmVhazsKKwljYXNlIFY0TDJfUElYX0ZNVF9OVjIxOgorCQl2YWwgfD0gREVJTlRF UkxBQ0VfSU5fRk1UX1BTKERFSU5URVJMQUNFX1BTX1ZVVlUpOworCQlicmVhazsKKwl9CisJZGVp bnRlcmxhY2Vfd3JpdGUoZGV2LCBERUlOVEVSTEFDRV9JTl9GTVQsIHZhbCk7CisKKwlpZiAoY3R4 LT5wcmV2KQorCQlhZGRyID0gdmIyX2RtYV9jb250aWdfcGxhbmVfZG1hX2FkZHIoJmN0eC0+cHJl di0+dmIyX2J1ZiwgMCk7CisKKwlkZWludGVybGFjZV93cml0ZShkZXYsIERFSU5URVJMQUNFX1BS RUxVTUEsIGFkZHIpOworCWRlaW50ZXJsYWNlX3dyaXRlKGRldiwgREVJTlRFUkxBQ0VfUFJFQ0hS T01BLCBhZGRyICsgc2l6ZSk7CisKKwl2YWwgPSBERUlOVEVSTEFDRV9PVVRfRk1UX0ZNVChERUlO VEVSTEFDRV9PVVRfRk1UX1lVVjQyMFNQKTsKKwlzd2l0Y2ggKGN0eC0+c3JjX2ZtdC5waXhlbGZv cm1hdCkgeworCWNhc2UgVjRMMl9QSVhfRk1UX05WMTI6CisJCXZhbCB8PSBERUlOVEVSTEFDRV9P VVRfRk1UX1BTKERFSU5URVJMQUNFX1BTX1VWVVYpOworCQlicmVhazsKKwljYXNlIFY0TDJfUElY X0ZNVF9OVjIxOgorCQl2YWwgfD0gREVJTlRFUkxBQ0VfT1VUX0ZNVF9QUyhERUlOVEVSTEFDRV9Q U19WVVZVKTsKKwkJYnJlYWs7CisJfQorCWRlaW50ZXJsYWNlX3dyaXRlKGRldiwgREVJTlRFUkxB Q0VfT1VUX0ZNVCwgdmFsKTsKKworCXdpZHRoID0gY3R4LT5kc3RfZm10LndpZHRoOworCWhlaWdo dCA9IGN0eC0+ZHN0X2ZtdC5oZWlnaHQ7CisJc3RyaWRlID0gY3R4LT5kc3RfZm10LmJ5dGVzcGVy bGluZTsKKwlzaXplID0gc3RyaWRlICogaGVpZ2h0OworCisJZGVpbnRlcmxhY2Vfd3JpdGUoZGV2 LCBERUlOVEVSTEFDRV9DSDBfT1VUX1NJWkUsCisJCQkgIERFSU5URVJMQUNFX1NJWkUod2lkdGgs IGhlaWdodCkpOworCWRlaW50ZXJsYWNlX3dyaXRlKGRldiwgREVJTlRFUkxBQ0VfQ0gxX09VVF9T SVpFLAorCQkJICBERUlOVEVSTEFDRV9TSVpFKHdpZHRoIC8gMiwgaGVpZ2h0IC8gMikpOworCisJ ZGVpbnRlcmxhY2Vfd3JpdGUoZGV2LCBERUlOVEVSTEFDRV9XQl9MSU5FX1NUUklERTAsIHN0cmlk ZSk7CisJZGVpbnRlcmxhY2Vfd3JpdGUoZGV2LCBERUlOVEVSTEFDRV9XQl9MSU5FX1NUUklERTEs IHN0cmlkZSk7CisKKwlhZGRyID0gdmIyX2RtYV9jb250aWdfcGxhbmVfZG1hX2FkZHIoJmRzdC0+ dmIyX2J1ZiwgMCk7CisJZGVpbnRlcmxhY2Vfd3JpdGUoZGV2LCBERUlOVEVSTEFDRV9XQl9BRERS MCwgYWRkcik7CisJZGVpbnRlcmxhY2Vfd3JpdGUoZGV2LCBERUlOVEVSTEFDRV9XQl9BRERSMSwg YWRkciArIHNpemUpOworCWRlaW50ZXJsYWNlX3dyaXRlKGRldiwgREVJTlRFUkxBQ0VfV0JfQURE UjIsIDApOworCisJaHN0ZXAgPSAoY3R4LT5zcmNfZm10LndpZHRoIDw8IDE2KSAvIGN0eC0+ZHN0 X2ZtdC53aWR0aDsKKwl2c3RlcCA9IChjdHgtPnNyY19mbXQuaGVpZ2h0IDw8IDE2KSAvIGN0eC0+ ZHN0X2ZtdC5oZWlnaHQ7CisJZGVpbnRlcmxhY2Vfd3JpdGUoZGV2LCBERUlOVEVSTEFDRV9DSDBf SE9SWl9GQUNULCBoc3RlcCk7CisJZGVpbnRlcmxhY2Vfd3JpdGUoZGV2LCBERUlOVEVSTEFDRV9D SDBfVkVSVF9GQUNULCB2c3RlcCk7CisJZGVpbnRlcmxhY2Vfd3JpdGUoZGV2LCBERUlOVEVSTEFD RV9DSDFfSE9SWl9GQUNULCBoc3RlcCk7CisJZGVpbnRlcmxhY2Vfd3JpdGUoZGV2LCBERUlOVEVS TEFDRV9DSDFfVkVSVF9GQUNULCB2c3RlcCk7CisKKwlkZWludGVybGFjZV9jbHJfc2V0X2JpdHMo ZGV2LCBERUlOVEVSTEFDRV9GSUVMRF9DVFJMLAorCQkJCSBERUlOVEVSTEFDRV9GSUVMRF9DVFJM X0ZJRUxEX0NOVF9NU0ssCisJCQkJIERFSU5URVJMQUNFX0ZJRUxEX0NUUkxfRklFTERfQ05UKGN0 eC0+ZmllbGQpKTsKKworCWRlaW50ZXJsYWNlX3NldF9iaXRzKGRldiwgREVJTlRFUkxBQ0VfRlJN X0NUUkwsCisJCQkgICAgIERFSU5URVJMQUNFX0ZSTV9DVFJMX1NUQVJUKTsKKworCWRlaW50ZXJs YWNlX3NldF9iaXRzKGRldiwgREVJTlRFUkxBQ0VfRlJNX0NUUkwsCisJCQkgICAgIERFSU5URVJM QUNFX0ZSTV9DVFJMX1JFR19SRUFEWSk7CisKKwlkZWludGVybGFjZV9zZXRfYml0cyhkZXYsIERF SU5URVJMQUNFX0lOVF9FTkFCTEUsCisJCQkgICAgIERFSU5URVJMQUNFX0lOVF9FTkFCTEVfV0Jf RU4pOworCisJZGVpbnRlcmxhY2Vfc2V0X2JpdHMoZGV2LCBERUlOVEVSTEFDRV9GUk1fQ1RSTCwK KwkJCSAgICAgREVJTlRFUkxBQ0VfRlJNX0NUUkxfV0JfRU4pOworfQorCitzdGF0aWMgaW50IGRl aW50ZXJsYWNlX2pvYl9yZWFkeSh2b2lkICpwcml2KQoreworCXN0cnVjdCBkZWludGVybGFjZV9j dHggKmN0eCA9IHByaXY7CisKKwlyZXR1cm4gdjRsMl9tMm1fbnVtX3NyY19idWZzX3JlYWR5KGN0 eC0+ZmgubTJtX2N0eCkgPj0gMSAmJgorCSAgICAgICB2NGwyX20ybV9udW1fZHN0X2J1ZnNfcmVh ZHkoY3R4LT5maC5tMm1fY3R4KSA+PSAyOworfQorCitzdGF0aWMgdm9pZCBkZWludGVybGFjZV9q b2JfYWJvcnQodm9pZCAqcHJpdikKK3sKKwlzdHJ1Y3QgZGVpbnRlcmxhY2VfY3R4ICpjdHggPSBw cml2OworCisJLyogV2lsbCBjYW5jZWwgdGhlIHRyYW5zYWN0aW9uIGluIHRoZSBuZXh0IGludGVy cnVwdCBoYW5kbGVyICovCisJY3R4LT5hYm9ydGluZyA9IDE7Cit9CisKK3N0YXRpYyBpcnFyZXR1 cm5fdCBkZWludGVybGFjZV9pcnEoaW50IGlycSwgdm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgZGVp bnRlcmxhY2VfZGV2ICpkZXYgPSBkYXRhOworCXN0cnVjdCB2YjJfdjRsMl9idWZmZXIgKnNyYywg KmRzdDsKKwllbnVtIHZiMl9idWZmZXJfc3RhdGUgc3RhdGU7CisJc3RydWN0IGRlaW50ZXJsYWNl X2N0eCAqY3R4OworCXVuc2lnbmVkIGludCB2YWw7CisKKwljdHggPSB2NGwyX20ybV9nZXRfY3Vy cl9wcml2KGRldi0+bTJtX2Rldik7CisJaWYgKCFjdHgpIHsKKwkJdjRsMl9lcnIoJmRldi0+djRs Ml9kZXYsCisJCQkgIkluc3RhbmNlIHJlbGVhc2VkIGJlZm9yZSB0aGUgZW5kIG9mIHRyYW5zYWN0 aW9uXG4iKTsKKwkJcmV0dXJuIElSUV9OT05FOworCX0KKworCXZhbCA9IGRlaW50ZXJsYWNlX3Jl YWQoZGV2LCBERUlOVEVSTEFDRV9JTlRfU1RBVFVTKTsKKwlpZiAoISh2YWwgJiBERUlOVEVSTEFD RV9JTlRfU1RBVFVTX1dSSVRFQkFDSykpCisJCXJldHVybiBJUlFfTk9ORTsKKworCWRlaW50ZXJs YWNlX3dyaXRlKGRldiwgREVJTlRFUkxBQ0VfSU5UX0VOQUJMRSwgMCk7CisJZGVpbnRlcmxhY2Vf c2V0X2JpdHMoZGV2LCBERUlOVEVSTEFDRV9JTlRfU1RBVFVTLAorCQkJICAgICBERUlOVEVSTEFD RV9JTlRfU1RBVFVTX1dSSVRFQkFDSyk7CisJZGVpbnRlcmxhY2Vfd3JpdGUoZGV2LCBERUlOVEVS TEFDRV9NT0RfRU5BQkxFLCAwKTsKKwlkZWludGVybGFjZV9jbHJfc2V0X2JpdHMoZGV2LCBERUlO VEVSTEFDRV9GUk1fQ1RSTCwKKwkJCQkgREVJTlRFUkxBQ0VfRlJNX0NUUkxfU1RBUlQsIDApOwor CisJdmFsID0gZGVpbnRlcmxhY2VfcmVhZChkZXYsIERFSU5URVJMQUNFX1NUQVRVUyk7CisJaWYg KHZhbCAmIERFSU5URVJMQUNFX1NUQVRVU19XQl9FUlJPUikKKwkJc3RhdGUgPSBWQjJfQlVGX1NU QVRFX0VSUk9SOworCWVsc2UKKwkJc3RhdGUgPSBWQjJfQlVGX1NUQVRFX0RPTkU7CisKKwlkc3Qg PSB2NGwyX20ybV9kc3RfYnVmX3JlbW92ZShjdHgtPmZoLm0ybV9jdHgpOworCXY0bDJfbTJtX2J1 Zl9kb25lKGRzdCwgc3RhdGUpOworCisJaWYgKGN0eC0+ZmllbGQgIT0gY3R4LT5maXJzdF9maWVs ZCB8fCBjdHgtPmFib3J0aW5nKSB7CisJCWN0eC0+ZmllbGQgPSBjdHgtPmZpcnN0X2ZpZWxkOwor CisJCXNyYyA9IHY0bDJfbTJtX3NyY19idWZfcmVtb3ZlKGN0eC0+ZmgubTJtX2N0eCk7CisJCWlm IChjdHgtPnByZXYpCisJCQl2NGwyX20ybV9idWZfZG9uZShjdHgtPnByZXYsIHN0YXRlKTsKKwkJ Y3R4LT5wcmV2ID0gc3JjOworCisJCXY0bDJfbTJtX2pvYl9maW5pc2goY3R4LT5kZXYtPm0ybV9k ZXYsIGN0eC0+ZmgubTJtX2N0eCk7CisJfSBlbHNlIHsKKwkJY3R4LT5maWVsZCA9ICFjdHgtPmZp cnN0X2ZpZWxkOworCQlkZWludGVybGFjZV9kZXZpY2VfcnVuKGN0eCk7CisJfQorCisJcmV0dXJu IElSUV9IQU5ETEVEOworfQorCitzdGF0aWMgdm9pZCBkZWludGVybGFjZV9pbml0KHN0cnVjdCBk ZWludGVybGFjZV9kZXYgKmRldikKK3sKKwl1MzIgdmFsOworCWludCBpOworCisJZGVpbnRlcmxh Y2Vfd3JpdGUoZGV2LCBERUlOVEVSTEFDRV9CWVBBU1MsCisJCQkgIERFSU5URVJMQUNFX0JZUEFT U19DU0MpOworCWRlaW50ZXJsYWNlX3dyaXRlKGRldiwgREVJTlRFUkxBQ0VfV0JfTElORV9TVFJJ REVfQ1RSTCwKKwkJCSAgREVJTlRFUkxBQ0VfV0JfTElORV9TVFJJREVfQ1RSTF9FTik7CisJZGVp bnRlcmxhY2Vfc2V0X2JpdHMoZGV2LCBERUlOVEVSTEFDRV9GUk1fQ1RSTCwKKwkJCSAgICAgREVJ TlRFUkxBQ0VfRlJNX0NUUkxfT1VUX0NUUkwpOworCWRlaW50ZXJsYWNlX3dyaXRlKGRldiwgREVJ TlRFUkxBQ0VfQUdUSF9TRUwsCisJCQkgIERFSU5URVJMQUNFX0FHVEhfU0VMX0xJTkVCVUYpOwor CisJdmFsID0gREVJTlRFUkxBQ0VfQ1RSTF9FTiB8CisJICAgICAgREVJTlRFUkxBQ0VfQ1RSTF9N T0RFX01JWEVEIHwKKwkgICAgICBERUlOVEVSTEFDRV9DVFJMX0RJQUdfSU5UUF9FTiB8CisJICAg ICAgREVJTlRFUkxBQ0VfQ1RSTF9URU1QX0RJRkZfRU47CisJZGVpbnRlcmxhY2Vfd3JpdGUoZGV2 LCBERUlOVEVSTEFDRV9DVFJMLCB2YWwpOworCisJZGVpbnRlcmxhY2VfY2xyX3NldF9iaXRzKGRl diwgREVJTlRFUkxBQ0VfTFVNQV9USCwKKwkJCQkgREVJTlRFUkxBQ0VfTFVNQV9USF9NSU5fTFVN QV9NU0ssCisJCQkJIERFSU5URVJMQUNFX0xVTUFfVEhfTUlOX0xVTUEoNCkpOworCisJZGVpbnRl cmxhY2VfY2xyX3NldF9iaXRzKGRldiwgREVJTlRFUkxBQ0VfU1BBVF9DT01QLAorCQkJCSBERUlO VEVSTEFDRV9TUEFUX0NPTVBfVEgyX01TSywKKwkJCQkgREVJTlRFUkxBQ0VfU1BBVF9DT01QX1RI Mig1KSk7CisKKwlkZWludGVybGFjZV9jbHJfc2V0X2JpdHMoZGV2LCBERUlOVEVSTEFDRV9URU1Q X0RJRkYsCisJCQkJIERFSU5URVJMQUNFX1RFTVBfRElGRl9BTUJJR1VJVFlfVEhfTVNLLAorCQkJ CSBERUlOVEVSTEFDRV9URU1QX0RJRkZfQU1CSUdVSVRZX1RIKDUpKTsKKworCXZhbCA9IERFSU5U RVJMQUNFX0RJQUdfSU5UUF9USDAoNjApIHwKKwkgICAgICBERUlOVEVSTEFDRV9ESUFHX0lOVFBf VEgxKDApIHwKKwkgICAgICBERUlOVEVSTEFDRV9ESUFHX0lOVFBfVEgzKDMwKTsKKwlkZWludGVy bGFjZV93cml0ZShkZXYsIERFSU5URVJMQUNFX0RJQUdfSU5UUCwgdmFsKTsKKworCWRlaW50ZXJs YWNlX2Nscl9zZXRfYml0cyhkZXYsIERFSU5URVJMQUNFX0NIUk9NQV9ESUZGLAorCQkJCSBERUlO VEVSTEFDRV9DSFJPTUFfRElGRl9USF9NU0ssCisJCQkJIERFSU5URVJMQUNFX0NIUk9NQV9ESUZG X1RIKDUpKTsKKworCS8qIG5ldXRyYWwgZmlsdGVyIGNvZWZmaWNpZW50cyAqLworCWRlaW50ZXJs YWNlX3NldF9iaXRzKGRldiwgREVJTlRFUkxBQ0VfRlJNX0NUUkwsCisJCQkgICAgIERFSU5URVJM QUNFX0ZSTV9DVFJMX0NPRUZfQUNDRVNTKTsKKwlyZWFkbF9wb2xsX3RpbWVvdXQoZGV2LT5iYXNl ICsgREVJTlRFUkxBQ0VfU1RBVFVTLCB2YWwsCisJCQkgICB2YWwgJiBERUlOVEVSTEFDRV9TVEFU VVNfQ09FRl9TVEFUVVMsIDIsIDQwKTsKKworCWZvciAoaSA9IDA7IGkgPCAzMjsgaSsrKSB7CisJ CWRlaW50ZXJsYWNlX3dyaXRlKGRldiwgREVJTlRFUkxBQ0VfQ0gwX0hPUlpfQ09FRjAgKyBpICog NCwKKwkJCQkgIERFSU5URVJMQUNFX0lERU5USVRZX0NPRUYpOworCQlkZWludGVybGFjZV93cml0 ZShkZXYsIERFSU5URVJMQUNFX0NIMF9WRVJUX0NPRUYgKyBpICogNCwKKwkJCQkgIERFSU5URVJM QUNFX0lERU5USVRZX0NPRUYpOworCQlkZWludGVybGFjZV93cml0ZShkZXYsIERFSU5URVJMQUNF X0NIMV9IT1JaX0NPRUYwICsgaSAqIDQsCisJCQkJICBERUlOVEVSTEFDRV9JREVOVElUWV9DT0VG KTsKKwkJZGVpbnRlcmxhY2Vfd3JpdGUoZGV2LCBERUlOVEVSTEFDRV9DSDFfVkVSVF9DT0VGICsg aSAqIDQsCisJCQkJICBERUlOVEVSTEFDRV9JREVOVElUWV9DT0VGKTsKKwl9CisKKwlkZWludGVy bGFjZV9jbHJfc2V0X2JpdHMoZGV2LCBERUlOVEVSTEFDRV9GUk1fQ1RSTCwKKwkJCQkgREVJTlRF UkxBQ0VfRlJNX0NUUkxfQ09FRl9BQ0NFU1MsIDApOworfQorCitzdGF0aWMgaW5saW5lIHN0cnVj dCBkZWludGVybGFjZV9jdHggKmRlaW50ZXJsYWNlX2ZpbGUyY3R4KHN0cnVjdCBmaWxlICpmaWxl KQoreworCXJldHVybiBjb250YWluZXJfb2YoZmlsZS0+cHJpdmF0ZV9kYXRhLCBzdHJ1Y3QgZGVp bnRlcmxhY2VfY3R4LCBmaCk7Cit9CisKK3N0YXRpYyBib29sIGRlaW50ZXJsYWNlX2NoZWNrX2Zv cm1hdCh1MzIgcGl4ZWxmb3JtYXQpCit7CisJdW5zaWduZWQgaW50IGk7CisKKwlmb3IgKGkgPSAw OyBpIDwgQVJSQVlfU0laRShkZWludGVybGFjZV9mb3JtYXRzKTsgaSsrKQorCQlpZiAoZGVpbnRl cmxhY2VfZm9ybWF0c1tpXSA9PSBwaXhlbGZvcm1hdCkKKwkJCXJldHVybiB0cnVlOworCisJcmV0 dXJuIGZhbHNlOworfQorCitzdGF0aWMgdm9pZCBkZWludGVybGFjZV9wcmVwYXJlX2Zvcm1hdChz dHJ1Y3QgdjRsMl9waXhfZm9ybWF0ICpwaXhfZm10KQoreworCXVuc2lnbmVkIGludCBoZWlnaHQg PSBwaXhfZm10LT5oZWlnaHQ7CisJdW5zaWduZWQgaW50IHdpZHRoID0gcGl4X2ZtdC0+d2lkdGg7 CisJdW5zaWduZWQgaW50IGJ5dGVzcGVybGluZTsKKwl1bnNpZ25lZCBpbnQgc2l6ZWltYWdlOwor CisJd2lkdGggPSBjbGFtcCh3aWR0aCwgREVJTlRFUkxBQ0VfTUlOX1dJRFRILAorCQkgICAgICBE RUlOVEVSTEFDRV9NQVhfV0lEVEgpOworCWhlaWdodCA9IGNsYW1wKGhlaWdodCwgREVJTlRFUkxB Q0VfTUlOX0hFSUdIVCwKKwkJICAgICAgIERFSU5URVJMQUNFX01BWF9IRUlHSFQpOworCisJYnl0 ZXNwZXJsaW5lID0gQUxJR04od2lkdGgsIDIpOworCS8qIGx1bWEgKi8KKwlzaXplaW1hZ2UgPSBi eXRlc3BlcmxpbmUgKiBoZWlnaHQ7CisJLyogY2hyb21hICovCisJc2l6ZWltYWdlICs9IGJ5dGVz cGVybGluZSAqIGhlaWdodCAvIDI7CisKKwlwaXhfZm10LT53aWR0aCA9IHdpZHRoOworCXBpeF9m bXQtPmhlaWdodCA9IGhlaWdodDsKKwlwaXhfZm10LT5ieXRlc3BlcmxpbmUgPSBieXRlc3Blcmxp bmU7CisJcGl4X2ZtdC0+c2l6ZWltYWdlID0gc2l6ZWltYWdlOworfQorCitzdGF0aWMgaW50IGRl aW50ZXJsYWNlX3F1ZXJ5Y2FwKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpwcml2LAorCQkJCXN0 cnVjdCB2NGwyX2NhcGFiaWxpdHkgKmNhcCkKK3sKKwlzdHJzY3B5KGNhcC0+ZHJpdmVyLCBERUlO VEVSTEFDRV9OQU1FLCBzaXplb2YoY2FwLT5kcml2ZXIpKTsKKwlzdHJzY3B5KGNhcC0+Y2FyZCwg REVJTlRFUkxBQ0VfTkFNRSwgc2l6ZW9mKGNhcC0+Y2FyZCkpOworCXNucHJpbnRmKGNhcC0+YnVz X2luZm8sIHNpemVvZihjYXAtPmJ1c19pbmZvKSwKKwkJICJwbGF0Zm9ybTolcyIsIERFSU5URVJM QUNFX05BTUUpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZGVpbnRlcmxhY2VfZW51 bV9mbXQoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsCisJCQkJc3RydWN0IHY0bDJfZm10 ZGVzYyAqZikKK3sKKwlpZiAoZi0+aW5kZXggPCBBUlJBWV9TSVpFKGRlaW50ZXJsYWNlX2Zvcm1h dHMpKSB7CisJCWYtPnBpeGVsZm9ybWF0ID0gZGVpbnRlcmxhY2VfZm9ybWF0c1tmLT5pbmRleF07 CisKKwkJcmV0dXJuIDA7CisJfQorCisJcmV0dXJuIC1FSU5WQUw7Cit9CisKK3N0YXRpYyBpbnQg ZGVpbnRlcmxhY2VfZW51bV9mcmFtZXNpemVzKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpwcml2 LAorCQkJCSAgICAgICBzdHJ1Y3QgdjRsMl9mcm1zaXplZW51bSAqZnNpemUpCit7CisJaWYgKGZz aXplLT5pbmRleCAhPSAwKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmICghZGVpbnRlcmxhY2Vf Y2hlY2tfZm9ybWF0KGZzaXplLT5waXhlbF9mb3JtYXQpKQorCQlyZXR1cm4gLUVJTlZBTDsKKwor CWZzaXplLT50eXBlID0gVjRMMl9GUk1TSVpFX1RZUEVfU1RFUFdJU0U7CisJZnNpemUtPnN0ZXB3 aXNlLm1pbl93aWR0aCA9IERFSU5URVJMQUNFX01JTl9XSURUSDsKKwlmc2l6ZS0+c3RlcHdpc2Uu bWluX2hlaWdodCA9IERFSU5URVJMQUNFX01JTl9IRUlHSFQ7CisJZnNpemUtPnN0ZXB3aXNlLm1h eF93aWR0aCA9IERFSU5URVJMQUNFX01BWF9XSURUSDsKKwlmc2l6ZS0+c3RlcHdpc2UubWF4X2hl aWdodCA9IERFSU5URVJMQUNFX01BWF9IRUlHSFQ7CisJZnNpemUtPnN0ZXB3aXNlLnN0ZXBfd2lk dGggPSAyOworCWZzaXplLT5zdGVwd2lzZS5zdGVwX2hlaWdodCA9IDE7CisKKwlyZXR1cm4gMDsK K30KKworc3RhdGljIGludCBkZWludGVybGFjZV9nX2ZtdF92aWRfY2FwKHN0cnVjdCBmaWxlICpm aWxlLCB2b2lkICpwcml2LAorCQkJCSAgICAgc3RydWN0IHY0bDJfZm9ybWF0ICpmKQoreworCXN0 cnVjdCBkZWludGVybGFjZV9jdHggKmN0eCA9IGRlaW50ZXJsYWNlX2ZpbGUyY3R4KGZpbGUpOwor CisJZi0+Zm10LnBpeCA9IGN0eC0+ZHN0X2ZtdDsKKworCXJldHVybiAwOworfQorCitzdGF0aWMg aW50IGRlaW50ZXJsYWNlX2dfZm10X3ZpZF9vdXQoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnBy aXYsCisJCQkJICAgICBzdHJ1Y3QgdjRsMl9mb3JtYXQgKmYpCit7CisJc3RydWN0IGRlaW50ZXJs YWNlX2N0eCAqY3R4ID0gZGVpbnRlcmxhY2VfZmlsZTJjdHgoZmlsZSk7CisKKwlmLT5mbXQucGl4 ID0gY3R4LT5zcmNfZm10OworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZGVpbnRlcmxh Y2VfdHJ5X2ZtdF92aWRfY2FwKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpwcml2LAorCQkJCSAg ICAgICBzdHJ1Y3QgdjRsMl9mb3JtYXQgKmYpCit7CisJaWYgKCFkZWludGVybGFjZV9jaGVja19m b3JtYXQoZi0+Zm10LnBpeC5waXhlbGZvcm1hdCkpCisJCWYtPmZtdC5waXgucGl4ZWxmb3JtYXQg PSBkZWludGVybGFjZV9mb3JtYXRzWzBdOworCisJaWYgKGYtPmZtdC5waXguZmllbGQgIT0gVjRM Ml9GSUVMRF9OT05FKQorCQlmLT5mbXQucGl4LmZpZWxkID0gVjRMMl9GSUVMRF9OT05FOworCisJ ZGVpbnRlcmxhY2VfcHJlcGFyZV9mb3JtYXQoJmYtPmZtdC5waXgpOworCisJcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyBpbnQgZGVpbnRlcmxhY2VfdHJ5X2ZtdF92aWRfb3V0KHN0cnVjdCBmaWxlICpm aWxlLCB2b2lkICpwcml2LAorCQkJCSAgICAgICBzdHJ1Y3QgdjRsMl9mb3JtYXQgKmYpCit7CisJ aWYgKCFkZWludGVybGFjZV9jaGVja19mb3JtYXQoZi0+Zm10LnBpeC5waXhlbGZvcm1hdCkpCisJ CWYtPmZtdC5waXgucGl4ZWxmb3JtYXQgPSBkZWludGVybGFjZV9mb3JtYXRzWzBdOworCisJaWYg KGYtPmZtdC5waXguZmllbGQgIT0gVjRMMl9GSUVMRF9JTlRFUkxBQ0VEX1RCICYmCisJICAgIGYt PmZtdC5waXguZmllbGQgIT0gVjRMMl9GSUVMRF9JTlRFUkxBQ0VEX0JUICYmCisJICAgIGYtPmZt dC5waXguZmllbGQgIT0gVjRMMl9GSUVMRF9JTlRFUkxBQ0VEKQorCQlmLT5mbXQucGl4LmZpZWxk ID0gVjRMMl9GSUVMRF9JTlRFUkxBQ0VEOworCisJZGVpbnRlcmxhY2VfcHJlcGFyZV9mb3JtYXQo JmYtPmZtdC5waXgpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZGVpbnRlcmxhY2Vf c19mbXRfdmlkX2NhcChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwKKwkJCQkgICAgIHN0 cnVjdCB2NGwyX2Zvcm1hdCAqZikKK3sKKwlzdHJ1Y3QgZGVpbnRlcmxhY2VfY3R4ICpjdHggPSBk ZWludGVybGFjZV9maWxlMmN0eChmaWxlKTsKKwlzdHJ1Y3QgdmIyX3F1ZXVlICp2cTsKKwlpbnQg cmV0OworCisJcmV0ID0gZGVpbnRlcmxhY2VfdHJ5X2ZtdF92aWRfY2FwKGZpbGUsIHByaXYsIGYp OworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwl2cSA9IHY0bDJfbTJtX2dldF92cShjdHgt PmZoLm0ybV9jdHgsIGYtPnR5cGUpOworCWlmICh2YjJfaXNfYnVzeSh2cSkpCisJCXJldHVybiAt RUJVU1k7CisKKwljdHgtPmRzdF9mbXQgPSBmLT5mbXQucGl4OworCisJcmV0dXJuIDA7Cit9CisK K3N0YXRpYyBpbnQgZGVpbnRlcmxhY2Vfc19mbXRfdmlkX291dChzdHJ1Y3QgZmlsZSAqZmlsZSwg dm9pZCAqcHJpdiwKKwkJCQkgICAgIHN0cnVjdCB2NGwyX2Zvcm1hdCAqZikKK3sKKwlzdHJ1Y3Qg ZGVpbnRlcmxhY2VfY3R4ICpjdHggPSBkZWludGVybGFjZV9maWxlMmN0eChmaWxlKTsKKwlzdHJ1 Y3QgdmIyX3F1ZXVlICp2cTsKKwlpbnQgcmV0OworCisJcmV0ID0gZGVpbnRlcmxhY2VfdHJ5X2Zt dF92aWRfb3V0KGZpbGUsIHByaXYsIGYpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwl2 cSA9IHY0bDJfbTJtX2dldF92cShjdHgtPmZoLm0ybV9jdHgsIGYtPnR5cGUpOworCWlmICh2YjJf aXNfYnVzeSh2cSkpCisJCXJldHVybiAtRUJVU1k7CisKKwljdHgtPnNyY19mbXQgPSBmLT5mbXQu cGl4OworCisJLyogUHJvcGFnYXRlIGNvbG9yc3BhY2UgaW5mb3JtYXRpb24gdG8gY2FwdHVyZS4g Ki8KKwljdHgtPmRzdF9mbXQuY29sb3JzcGFjZSA9IGYtPmZtdC5waXguY29sb3JzcGFjZTsKKwlj dHgtPmRzdF9mbXQueGZlcl9mdW5jID0gZi0+Zm10LnBpeC54ZmVyX2Z1bmM7CisJY3R4LT5kc3Rf Zm10LnljYmNyX2VuYyA9IGYtPmZtdC5waXgueWNiY3JfZW5jOworCWN0eC0+ZHN0X2ZtdC5xdWFu dGl6YXRpb24gPSBmLT5mbXQucGl4LnF1YW50aXphdGlvbjsKKworCXJldHVybiAwOworfQorCitj b25zdCBzdHJ1Y3QgdjRsMl9pb2N0bF9vcHMgZGVpbnRlcmxhY2VfaW9jdGxfb3BzID0geworCS52 aWRpb2NfcXVlcnljYXAJCT0gZGVpbnRlcmxhY2VfcXVlcnljYXAsCisKKwkudmlkaW9jX2VudW1f ZnJhbWVzaXplcwkJPSBkZWludGVybGFjZV9lbnVtX2ZyYW1lc2l6ZXMsCisKKwkudmlkaW9jX2Vu dW1fZm10X3ZpZF9jYXAJPSBkZWludGVybGFjZV9lbnVtX2ZtdCwKKwkudmlkaW9jX2dfZm10X3Zp ZF9jYXAJCT0gZGVpbnRlcmxhY2VfZ19mbXRfdmlkX2NhcCwKKwkudmlkaW9jX3RyeV9mbXRfdmlk X2NhcAkJPSBkZWludGVybGFjZV90cnlfZm10X3ZpZF9jYXAsCisJLnZpZGlvY19zX2ZtdF92aWRf Y2FwCQk9IGRlaW50ZXJsYWNlX3NfZm10X3ZpZF9jYXAsCisKKwkudmlkaW9jX2VudW1fZm10X3Zp ZF9vdXQJPSBkZWludGVybGFjZV9lbnVtX2ZtdCwKKwkudmlkaW9jX2dfZm10X3ZpZF9vdXQJCT0g ZGVpbnRlcmxhY2VfZ19mbXRfdmlkX291dCwKKwkudmlkaW9jX3RyeV9mbXRfdmlkX291dAkJPSBk ZWludGVybGFjZV90cnlfZm10X3ZpZF9vdXQsCisJLnZpZGlvY19zX2ZtdF92aWRfb3V0CQk9IGRl aW50ZXJsYWNlX3NfZm10X3ZpZF9vdXQsCisKKwkudmlkaW9jX3JlcWJ1ZnMJCQk9IHY0bDJfbTJt X2lvY3RsX3JlcWJ1ZnMsCisJLnZpZGlvY19xdWVyeWJ1ZgkJPSB2NGwyX20ybV9pb2N0bF9xdWVy eWJ1ZiwKKwkudmlkaW9jX3FidWYJCQk9IHY0bDJfbTJtX2lvY3RsX3FidWYsCisJLnZpZGlvY19k cWJ1ZgkJCT0gdjRsMl9tMm1faW9jdGxfZHFidWYsCisJLnZpZGlvY19wcmVwYXJlX2J1ZgkJPSB2 NGwyX20ybV9pb2N0bF9wcmVwYXJlX2J1ZiwKKwkudmlkaW9jX2NyZWF0ZV9idWZzCQk9IHY0bDJf bTJtX2lvY3RsX2NyZWF0ZV9idWZzLAorCS52aWRpb2NfZXhwYnVmCQkJPSB2NGwyX20ybV9pb2N0 bF9leHBidWYsCisKKwkudmlkaW9jX3N0cmVhbW9uCQk9IHY0bDJfbTJtX2lvY3RsX3N0cmVhbW9u LAorCS52aWRpb2Nfc3RyZWFtb2ZmCQk9IHY0bDJfbTJtX2lvY3RsX3N0cmVhbW9mZiwKK307CisK K3N0YXRpYyBpbnQgZGVpbnRlcmxhY2VfcXVldWVfc2V0dXAoc3RydWN0IHZiMl9xdWV1ZSAqdnEs IHVuc2lnbmVkIGludCAqbmJ1ZmZlcnMsCisJCQkJICAgdW5zaWduZWQgaW50ICpucGxhbmVzLCB1 bnNpZ25lZCBpbnQgc2l6ZXNbXSwKKwkJCQkgICBzdHJ1Y3QgZGV2aWNlICphbGxvY19kZXZzW10p Cit7CisJc3RydWN0IGRlaW50ZXJsYWNlX2N0eCAqY3R4ID0gdmIyX2dldF9kcnZfcHJpdih2cSk7 CisJc3RydWN0IHY0bDJfcGl4X2Zvcm1hdCAqcGl4X2ZtdDsKKworCWlmIChWNEwyX1RZUEVfSVNf T1VUUFVUKHZxLT50eXBlKSkKKwkJcGl4X2ZtdCA9ICZjdHgtPnNyY19mbXQ7CisJZWxzZQorCQlw aXhfZm10ID0gJmN0eC0+ZHN0X2ZtdDsKKworCWlmICgqbnBsYW5lcykgeworCQlpZiAoc2l6ZXNb MF0gPCBwaXhfZm10LT5zaXplaW1hZ2UpCisJCQlyZXR1cm4gLUVJTlZBTDsKKwl9IGVsc2Ugewor CQlzaXplc1swXSA9IHBpeF9mbXQtPnNpemVpbWFnZTsKKwkJKm5wbGFuZXMgPSAxOworCX0KKwor CXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGRlaW50ZXJsYWNlX2J1Zl9wcmVwYXJlKHN0cnVj dCB2YjJfYnVmZmVyICp2YikKK3sKKwlzdHJ1Y3QgdmIyX3F1ZXVlICp2cSA9IHZiLT52YjJfcXVl dWU7CisJc3RydWN0IGRlaW50ZXJsYWNlX2N0eCAqY3R4ID0gdmIyX2dldF9kcnZfcHJpdih2cSk7 CisJc3RydWN0IHY0bDJfcGl4X2Zvcm1hdCAqcGl4X2ZtdDsKKworCWlmIChWNEwyX1RZUEVfSVNf T1VUUFVUKHZxLT50eXBlKSkKKwkJcGl4X2ZtdCA9ICZjdHgtPnNyY19mbXQ7CisJZWxzZQorCQlw aXhfZm10ID0gJmN0eC0+ZHN0X2ZtdDsKKworCWlmICh2YjJfcGxhbmVfc2l6ZSh2YiwgMCkgPCBw aXhfZm10LT5zaXplaW1hZ2UpCisJCXJldHVybiAtRUlOVkFMOworCisJdmIyX3NldF9wbGFuZV9w YXlsb2FkKHZiLCAwLCBwaXhfZm10LT5zaXplaW1hZ2UpOworCisJcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyB2b2lkIGRlaW50ZXJsYWNlX2J1Zl9xdWV1ZShzdHJ1Y3QgdmIyX2J1ZmZlciAqdmIpCit7 CisJc3RydWN0IHZiMl92NGwyX2J1ZmZlciAqdmJ1ZiA9IHRvX3ZiMl92NGwyX2J1ZmZlcih2Yik7 CisJc3RydWN0IGRlaW50ZXJsYWNlX2N0eCAqY3R4ID0gdmIyX2dldF9kcnZfcHJpdih2Yi0+dmIy X3F1ZXVlKTsKKworCXY0bDJfbTJtX2J1Zl9xdWV1ZShjdHgtPmZoLm0ybV9jdHgsIHZidWYpOwor fQorCitzdGF0aWMgdm9pZCBkZWludGVybGFjZV9xdWV1ZV9jbGVhbnVwKHN0cnVjdCB2YjJfcXVl dWUgKnZxLCB1MzIgc3RhdGUpCit7CisJc3RydWN0IGRlaW50ZXJsYWNlX2N0eCAqY3R4ID0gdmIy X2dldF9kcnZfcHJpdih2cSk7CisJc3RydWN0IHZiMl92NGwyX2J1ZmZlciAqdmJ1ZjsKKworCWRv IHsKKwkJaWYgKFY0TDJfVFlQRV9JU19PVVRQVVQodnEtPnR5cGUpKQorCQkJdmJ1ZiA9IHY0bDJf bTJtX3NyY19idWZfcmVtb3ZlKGN0eC0+ZmgubTJtX2N0eCk7CisJCWVsc2UKKwkJCXZidWYgPSB2 NGwyX20ybV9kc3RfYnVmX3JlbW92ZShjdHgtPmZoLm0ybV9jdHgpOworCisJCWlmICh2YnVmKQor CQkJdjRsMl9tMm1fYnVmX2RvbmUodmJ1Ziwgc3RhdGUpOworCX0gd2hpbGUgKHZidWYpOworCisJ aWYgKFY0TDJfVFlQRV9JU19PVVRQVVQodnEtPnR5cGUpICYmIGN0eC0+cHJldikKKwkJdjRsMl9t Mm1fYnVmX2RvbmUoY3R4LT5wcmV2LCBzdGF0ZSk7Cit9CisKK3N0YXRpYyBpbnQgZGVpbnRlcmxh Y2Vfc3RhcnRfc3RyZWFtaW5nKHN0cnVjdCB2YjJfcXVldWUgKnZxLCB1bnNpZ25lZCBpbnQgY291 bnQpCit7CisJc3RydWN0IGRlaW50ZXJsYWNlX2N0eCAqY3R4ID0gdmIyX2dldF9kcnZfcHJpdih2 cSk7CisJc3RydWN0IGRldmljZSAqZGV2ID0gY3R4LT5kZXYtPmRldjsKKwlpbnQgcmV0OworCisJ aWYgKFY0TDJfVFlQRV9JU19PVVRQVVQodnEtPnR5cGUpKSB7CisJCXJldCA9IHBtX3J1bnRpbWVf Z2V0X3N5bmMoZGV2KTsKKwkJaWYgKHJldCA8IDApIHsKKwkJCWRldl9lcnIoZGV2LCAiRmFpbGVk IHRvIGVuYWJsZSBtb2R1bGVcbiIpOworCisJCQlnb3RvIGVycl9ydW50aW1lX2dldDsKKwkJfQor CisJCWN0eC0+Zmlyc3RfZmllbGQgPQorCQkJY3R4LT5zcmNfZm10LmZpZWxkID09IFY0TDJfRklF TERfSU5URVJMQUNFRF9CVDsKKwkJY3R4LT5maWVsZCA9IGN0eC0+Zmlyc3RfZmllbGQ7CisKKwkJ Y3R4LT5wcmV2ID0gTlVMTDsKKwkJY3R4LT5hYm9ydGluZyA9IDA7CisKKwkJY3R4LT5mbGFnMV9i dWYgPSBkbWFfYWxsb2NfY29oZXJlbnQoZGV2LCBGTEFHX1NJWkUsCisJCQkJCQkgICAgJmN0eC0+ ZmxhZzFfYnVmX2RtYSwKKwkJCQkJCSAgICBHRlBfS0VSTkVMKTsKKwkJaWYgKCFjdHgtPmZsYWcx X2J1ZikgeworCQkJcmV0ID0gLUVOT01FTTsKKworCQkJZ290byBlcnJfbm9fbWVtMTsKKwkJfQor CisJCWN0eC0+ZmxhZzJfYnVmID0gZG1hX2FsbG9jX2NvaGVyZW50KGRldiwgRkxBR19TSVpFLAor CQkJCQkJICAgICZjdHgtPmZsYWcyX2J1Zl9kbWEsCisJCQkJCQkgICAgR0ZQX0tFUk5FTCk7CisJ CWlmICghY3R4LT5mbGFnMl9idWYpIHsKKwkJCXJldCA9IC1FTk9NRU07CisKKwkJCWdvdG8gZXJy X25vX21lbTI7CisJCX0KKwl9CisKKwlyZXR1cm4gMDsKKworZXJyX25vX21lbTI6CisJZG1hX2Zy ZWVfY29oZXJlbnQoZGV2LCBGTEFHX1NJWkUsIGN0eC0+ZmxhZzFfYnVmLAorCQkJICBjdHgtPmZs YWcxX2J1Zl9kbWEpOworZXJyX25vX21lbTE6CisJcG1fcnVudGltZV9wdXQoZGV2KTsKK2Vycl9y dW50aW1lX2dldDoKKwlkZWludGVybGFjZV9xdWV1ZV9jbGVhbnVwKHZxLCBWQjJfQlVGX1NUQVRF X1FVRVVFRCk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCBkZWludGVybGFjZV9z dG9wX3N0cmVhbWluZyhzdHJ1Y3QgdmIyX3F1ZXVlICp2cSkKK3sKKwlzdHJ1Y3QgZGVpbnRlcmxh Y2VfY3R4ICpjdHggPSB2YjJfZ2V0X2Rydl9wcml2KHZxKTsKKworCWlmIChWNEwyX1RZUEVfSVNf T1VUUFVUKHZxLT50eXBlKSkgeworCQlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBjdHgtPmRldi0+ZGV2 OworCisJCWRtYV9mcmVlX2NvaGVyZW50KGRldiwgRkxBR19TSVpFLCBjdHgtPmZsYWcxX2J1ZiwK KwkJCQkgIGN0eC0+ZmxhZzFfYnVmX2RtYSk7CisJCWRtYV9mcmVlX2NvaGVyZW50KGRldiwgRkxB R19TSVpFLCBjdHgtPmZsYWcyX2J1ZiwKKwkJCQkgIGN0eC0+ZmxhZzJfYnVmX2RtYSk7CisKKwkJ cG1fcnVudGltZV9wdXQoZGV2KTsKKwl9CisKKwlkZWludGVybGFjZV9xdWV1ZV9jbGVhbnVwKHZx LCBWQjJfQlVGX1NUQVRFX0VSUk9SKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCB2YjJfb3Bz IGRlaW50ZXJsYWNlX3FvcHMgPSB7CisJLnF1ZXVlX3NldHVwCQk9IGRlaW50ZXJsYWNlX3F1ZXVl X3NldHVwLAorCS5idWZfcHJlcGFyZQkJPSBkZWludGVybGFjZV9idWZfcHJlcGFyZSwKKwkuYnVm X3F1ZXVlCQk9IGRlaW50ZXJsYWNlX2J1Zl9xdWV1ZSwKKwkuc3RhcnRfc3RyZWFtaW5nCT0gZGVp bnRlcmxhY2Vfc3RhcnRfc3RyZWFtaW5nLAorCS5zdG9wX3N0cmVhbWluZwkJPSBkZWludGVybGFj ZV9zdG9wX3N0cmVhbWluZywKKwkud2FpdF9wcmVwYXJlCQk9IHZiMl9vcHNfd2FpdF9wcmVwYXJl LAorCS53YWl0X2ZpbmlzaAkJPSB2YjJfb3BzX3dhaXRfZmluaXNoLAorfTsKKworc3RhdGljIGlu dCBkZWludGVybGFjZV9xdWV1ZV9pbml0KHZvaWQgKnByaXYsIHN0cnVjdCB2YjJfcXVldWUgKnNy Y192cSwKKwkJCQkgIHN0cnVjdCB2YjJfcXVldWUgKmRzdF92cSkKK3sKKwlzdHJ1Y3QgZGVpbnRl cmxhY2VfY3R4ICpjdHggPSBwcml2OworCWludCByZXQ7CisKKwlzcmNfdnEtPnR5cGUgPSBWNEwy X0JVRl9UWVBFX1ZJREVPX09VVFBVVDsKKwlzcmNfdnEtPmlvX21vZGVzID0gVkIyX01NQVAgfCBW QjJfRE1BQlVGOworCXNyY192cS0+ZHJ2X3ByaXYgPSBjdHg7CisJc3JjX3ZxLT5idWZfc3RydWN0 X3NpemUgPSBzaXplb2Yoc3RydWN0IHY0bDJfbTJtX2J1ZmZlcik7CisJc3JjX3ZxLT5taW5fYnVm ZmVyc19uZWVkZWQgPSAxOworCXNyY192cS0+b3BzID0gJmRlaW50ZXJsYWNlX3FvcHM7CisJc3Jj X3ZxLT5tZW1fb3BzID0gJnZiMl9kbWFfY29udGlnX21lbW9wczsKKwlzcmNfdnEtPnRpbWVzdGFt cF9mbGFncyA9IFY0TDJfQlVGX0ZMQUdfVElNRVNUQU1QX0NPUFk7CisJc3JjX3ZxLT5sb2NrID0g JmN0eC0+ZGV2LT5kZXZfbXV0ZXg7CisJc3JjX3ZxLT5kZXYgPSBjdHgtPmRldi0+ZGV2OworCisJ cmV0ID0gdmIyX3F1ZXVlX2luaXQoc3JjX3ZxKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0Owor CisJZHN0X3ZxLT50eXBlID0gVjRMMl9CVUZfVFlQRV9WSURFT19DQVBUVVJFOworCWRzdF92cS0+ aW9fbW9kZXMgPSBWQjJfTU1BUCB8IFZCMl9ETUFCVUY7CisJZHN0X3ZxLT5kcnZfcHJpdiA9IGN0 eDsKKwlkc3RfdnEtPmJ1Zl9zdHJ1Y3Rfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgdjRsMl9tMm1fYnVm ZmVyKTsKKwlkc3RfdnEtPm1pbl9idWZmZXJzX25lZWRlZCA9IDI7CisJZHN0X3ZxLT5vcHMgPSAm ZGVpbnRlcmxhY2VfcW9wczsKKwlkc3RfdnEtPm1lbV9vcHMgPSAmdmIyX2RtYV9jb250aWdfbWVt b3BzOworCWRzdF92cS0+dGltZXN0YW1wX2ZsYWdzID0gVjRMMl9CVUZfRkxBR19USU1FU1RBTVBf Q09QWTsKKwlkc3RfdnEtPmxvY2sgPSAmY3R4LT5kZXYtPmRldl9tdXRleDsKKwlkc3RfdnEtPmRl diA9IGN0eC0+ZGV2LT5kZXY7CisKKwlyZXQgPSB2YjJfcXVldWVfaW5pdChkc3RfdnEpOworCWlm IChyZXQpCisJCXJldHVybiByZXQ7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBkZWlu dGVybGFjZV9vcGVuKHN0cnVjdCBmaWxlICpmaWxlKQoreworCXN0cnVjdCBkZWludGVybGFjZV9k ZXYgKmRldiA9IHZpZGVvX2RydmRhdGEoZmlsZSk7CisJc3RydWN0IGRlaW50ZXJsYWNlX2N0eCAq Y3R4ID0gTlVMTDsKKwlpbnQgcmV0OworCisJaWYgKG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgm ZGV2LT5kZXZfbXV0ZXgpKQorCQlyZXR1cm4gLUVSRVNUQVJUU1lTOworCisJY3R4ID0ga3phbGxv YyhzaXplb2YoKmN0eCksIEdGUF9LRVJORUwpOworCWlmICghY3R4KSB7CisJCW11dGV4X3VubG9j aygmZGV2LT5kZXZfbXV0ZXgpOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisKKwkvKiBkZWZhdWx0 IG91dHB1dCBmb3JtYXQgKi8KKwljdHgtPnNyY19mbXQucGl4ZWxmb3JtYXQgPSBkZWludGVybGFj ZV9mb3JtYXRzWzBdOworCWN0eC0+c3JjX2ZtdC5maWVsZCA9IFY0TDJfRklFTERfSU5URVJMQUNF RDsKKwljdHgtPnNyY19mbXQud2lkdGggPSA2NDA7CisJY3R4LT5zcmNfZm10LmhlaWdodCA9IDQ4 MDsKKwlkZWludGVybGFjZV9wcmVwYXJlX2Zvcm1hdCgmY3R4LT5zcmNfZm10KTsKKworCS8qIGRl ZmF1bHQgY2FwdHVyZSBmb3JtYXQgKi8KKwljdHgtPmRzdF9mbXQucGl4ZWxmb3JtYXQgPSBkZWlu dGVybGFjZV9mb3JtYXRzWzBdOworCWN0eC0+ZHN0X2ZtdC5maWVsZCA9IFY0TDJfRklFTERfTk9O RTsKKwljdHgtPmRzdF9mbXQud2lkdGggPSA2NDA7CisJY3R4LT5kc3RfZm10LmhlaWdodCA9IDQ4 MDsKKwlkZWludGVybGFjZV9wcmVwYXJlX2Zvcm1hdCgmY3R4LT5kc3RfZm10KTsKKworCXY0bDJf ZmhfaW5pdCgmY3R4LT5maCwgdmlkZW9fZGV2ZGF0YShmaWxlKSk7CisJZmlsZS0+cHJpdmF0ZV9k YXRhID0gJmN0eC0+Zmg7CisJY3R4LT5kZXYgPSBkZXY7CisKKwljdHgtPmZoLm0ybV9jdHggPSB2 NGwyX20ybV9jdHhfaW5pdChkZXYtPm0ybV9kZXYsIGN0eCwKKwkJCQkJICAgICZkZWludGVybGFj ZV9xdWV1ZV9pbml0KTsKKwlpZiAoSVNfRVJSKGN0eC0+ZmgubTJtX2N0eCkpIHsKKwkJcmV0ID0g UFRSX0VSUihjdHgtPmZoLm0ybV9jdHgpOworCQlnb3RvIGVycl9mcmVlOworCX0KKworCXY0bDJf ZmhfYWRkKCZjdHgtPmZoKTsKKworCW11dGV4X3VubG9jaygmZGV2LT5kZXZfbXV0ZXgpOworCisJ cmV0dXJuIDA7CisKK2Vycl9mcmVlOgorCWtmcmVlKGN0eCk7CisJbXV0ZXhfdW5sb2NrKCZkZXYt PmRldl9tdXRleCk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IGRlaW50ZXJsYWNl X3JlbGVhc2Uoc3RydWN0IGZpbGUgKmZpbGUpCit7CisJc3RydWN0IGRlaW50ZXJsYWNlX2RldiAq ZGV2ID0gdmlkZW9fZHJ2ZGF0YShmaWxlKTsKKwlzdHJ1Y3QgZGVpbnRlcmxhY2VfY3R4ICpjdHgg PSBjb250YWluZXJfb2YoZmlsZS0+cHJpdmF0ZV9kYXRhLAorCQkJCQkJICAgc3RydWN0IGRlaW50 ZXJsYWNlX2N0eCwgZmgpOworCisJbXV0ZXhfbG9jaygmZGV2LT5kZXZfbXV0ZXgpOworCisJdjRs Ml9maF9kZWwoJmN0eC0+ZmgpOworCXY0bDJfZmhfZXhpdCgmY3R4LT5maCk7CisJdjRsMl9tMm1f Y3R4X3JlbGVhc2UoY3R4LT5maC5tMm1fY3R4KTsKKworCWtmcmVlKGN0eCk7CisKKwltdXRleF91 bmxvY2soJmRldi0+ZGV2X211dGV4KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgY29uc3Qg c3RydWN0IHY0bDJfZmlsZV9vcGVyYXRpb25zIGRlaW50ZXJsYWNlX2ZvcHMgPSB7CisJLm93bmVy CQk9IFRISVNfTU9EVUxFLAorCS5vcGVuCQk9IGRlaW50ZXJsYWNlX29wZW4sCisJLnJlbGVhc2UJ PSBkZWludGVybGFjZV9yZWxlYXNlLAorCS5wb2xsCQk9IHY0bDJfbTJtX2ZvcF9wb2xsLAorCS51 bmxvY2tlZF9pb2N0bAk9IHZpZGVvX2lvY3RsMiwKKwkubW1hcAkJPSB2NGwyX20ybV9mb3BfbW1h cCwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdmlkZW9fZGV2aWNlIGRlaW50ZXJsYWNlX3Zp ZGVvX2RldmljZSA9IHsKKwkubmFtZQkJPSBERUlOVEVSTEFDRV9OQU1FLAorCS52ZmxfZGlyCT0g VkZMX0RJUl9NMk0sCisJLmZvcHMJCT0gJmRlaW50ZXJsYWNlX2ZvcHMsCisJLmlvY3RsX29wcwk9 ICZkZWludGVybGFjZV9pb2N0bF9vcHMsCisJLm1pbm9yCQk9IC0xLAorCS5yZWxlYXNlCT0gdmlk ZW9fZGV2aWNlX3JlbGVhc2VfZW1wdHksCisJLmRldmljZV9jYXBzCT0gVjRMMl9DQVBfVklERU9f TTJNIHwgVjRMMl9DQVBfU1RSRUFNSU5HLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCB2NGwy X20ybV9vcHMgZGVpbnRlcmxhY2VfbTJtX29wcyA9IHsKKwkuZGV2aWNlX3J1bgk9IGRlaW50ZXJs YWNlX2RldmljZV9ydW4sCisJLmpvYl9yZWFkeQk9IGRlaW50ZXJsYWNlX2pvYl9yZWFkeSwKKwku am9iX2Fib3J0CT0gZGVpbnRlcmxhY2Vfam9iX2Fib3J0LAorfTsKKworc3RhdGljIGludCBkZWlu dGVybGFjZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQoreworCXN0cnVjdCBk ZWludGVybGFjZV9kZXYgKmRldjsKKwlzdHJ1Y3QgdmlkZW9fZGV2aWNlICp2ZmQ7CisJc3RydWN0 IHJlc291cmNlICpyZXM7CisJaW50IGlycSwgcmV0OworCisJZGV2ID0gZGV2bV9remFsbG9jKCZw ZGV2LT5kZXYsIHNpemVvZigqZGV2KSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFkZXYpCisJCXJldHVy biAtRU5PTUVNOworCisJZGV2LT52ZmQgPSBkZWludGVybGFjZV92aWRlb19kZXZpY2U7CisJZGV2 LT5kZXYgPSAmcGRldi0+ZGV2OworCisJaXJxID0gcGxhdGZvcm1fZ2V0X2lycShwZGV2LCAwKTsK KwlpZiAoaXJxIDw9IDApIHsKKwkJZGV2X2VycihkZXYtPmRldiwgIkZhaWxlZCB0byBnZXQgSVJR XG4iKTsKKworCQlyZXR1cm4gaXJxOworCX0KKworCXJldCA9IGRldm1fcmVxdWVzdF9pcnEoZGV2 LT5kZXYsIGlycSwgZGVpbnRlcmxhY2VfaXJxLAorCQkJICAgICAgIDAsIGRldl9uYW1lKGRldi0+ ZGV2KSwgZGV2KTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIoZGV2LT5kZXYsICJGYWlsZWQgdG8g cmVxdWVzdCBJUlFcbiIpOworCisJCXJldHVybiByZXQ7CisJfQorCisJcmV0ID0gb2ZfZG1hX2Nv bmZpZ3VyZShkZXYtPmRldiwgZGV2LT5kZXYtPm9mX25vZGUsIHRydWUpOworCWlmIChyZXQpCisJ CXJldHVybiByZXQ7CisKKwlyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNP VVJDRV9NRU0sIDApOworCWRldi0+YmFzZSA9IGRldm1faW9yZW1hcF9yZXNvdXJjZSgmcGRldi0+ ZGV2LCByZXMpOworCWlmIChJU19FUlIoZGV2LT5iYXNlKSkgeworCQlkZXZfZXJyKGRldi0+ZGV2 LCAiRmFpbGVkIHRvIG1hcCByZWdpc3RlcnNcbiIpOworCisJCXJldHVybiBQVFJfRVJSKGRldi0+ YmFzZSk7CisJfQorCisJZGV2LT5idXNfY2xrID0gZGV2bV9jbGtfZ2V0KGRldi0+ZGV2LCAiYnVz Iik7CisJaWYgKElTX0VSUihkZXYtPmJ1c19jbGspKSB7CisJCWRldl9lcnIoZGV2LT5kZXYsICJG YWlsZWQgdG8gZ2V0IGJ1cyBjbG9ja1xuIik7CisKKwkJcmV0dXJuIFBUUl9FUlIoZGV2LT5idXNf Y2xrKTsKKwl9CisKKwlkZXYtPm1vZF9jbGsgPSBkZXZtX2Nsa19nZXQoZGV2LT5kZXYsICJtb2Qi KTsKKwlpZiAoSVNfRVJSKGRldi0+bW9kX2NsaykpIHsKKwkJZGV2X2VycihkZXYtPmRldiwgIkZh aWxlZCB0byBnZXQgbW9kIGNsb2NrXG4iKTsKKworCQlyZXR1cm4gUFRSX0VSUihkZXYtPm1vZF9j bGspOworCX0KKworCWRldi0+cmFtX2NsayA9IGRldm1fY2xrX2dldChkZXYtPmRldiwgInJhbSIp OworCWlmIChJU19FUlIoZGV2LT5yYW1fY2xrKSkgeworCQlkZXZfZXJyKGRldi0+ZGV2LCAiRmFp bGVkIHRvIGdldCByYW0gY2xvY2tcbiIpOworCisJCXJldHVybiBQVFJfRVJSKGRldi0+cmFtX2Ns ayk7CisJfQorCisJZGV2LT5yc3RjID0gZGV2bV9yZXNldF9jb250cm9sX2dldChkZXYtPmRldiwg TlVMTCk7CisJaWYgKElTX0VSUihkZXYtPnJzdGMpKSB7CisJCWRldl9lcnIoZGV2LT5kZXYsICJG YWlsZWQgdG8gZ2V0IHJlc2V0IGNvbnRyb2xcbiIpOworCisJCXJldHVybiBQVFJfRVJSKGRldi0+ cnN0Yyk7CisJfQorCisJbXV0ZXhfaW5pdCgmZGV2LT5kZXZfbXV0ZXgpOworCisJcmV0ID0gdjRs Ml9kZXZpY2VfcmVnaXN0ZXIoJnBkZXYtPmRldiwgJmRldi0+djRsMl9kZXYpOworCWlmIChyZXQp IHsKKwkJZGV2X2VycihkZXYtPmRldiwgIkZhaWxlZCB0byByZWdpc3RlciBWNEwyIGRldmljZVxu Iik7CisKKwkJcmV0dXJuIHJldDsKKwl9CisKKwl2ZmQgPSAmZGV2LT52ZmQ7CisJdmZkLT5sb2Nr ID0gJmRldi0+ZGV2X211dGV4OworCXZmZC0+djRsMl9kZXYgPSAmZGV2LT52NGwyX2RldjsKKwor CXNucHJpbnRmKHZmZC0+bmFtZSwgc2l6ZW9mKHZmZC0+bmFtZSksICIlcyIsCisJCSBkZWludGVy bGFjZV92aWRlb19kZXZpY2UubmFtZSk7CisJdmlkZW9fc2V0X2RydmRhdGEodmZkLCBkZXYpOwor CisJcmV0ID0gdmlkZW9fcmVnaXN0ZXJfZGV2aWNlKHZmZCwgVkZMX1RZUEVfR1JBQkJFUiwgMCk7 CisJaWYgKHJldCkgeworCQl2NGwyX2VycigmZGV2LT52NGwyX2RldiwgIkZhaWxlZCB0byByZWdp c3RlciB2aWRlbyBkZXZpY2VcbiIpOworCisJCWdvdG8gZXJyX3Y0bDI7CisJfQorCisJdjRsMl9p bmZvKCZkZXYtPnY0bDJfZGV2LAorCQkgICJEZXZpY2UgcmVnaXN0ZXJlZCBhcyAvZGV2L3ZpZGVv JWRcbiIsIHZmZC0+bnVtKTsKKworCWRldi0+bTJtX2RldiA9IHY0bDJfbTJtX2luaXQoJmRlaW50 ZXJsYWNlX20ybV9vcHMpOworCWlmIChJU19FUlIoZGV2LT5tMm1fZGV2KSkgeworCQl2NGwyX2Vy cigmZGV2LT52NGwyX2RldiwKKwkJCSAiRmFpbGVkIHRvIGluaXRpYWxpemUgVjRMMiBNMk0gZGV2 aWNlXG4iKTsKKwkJcmV0ID0gUFRSX0VSUihkZXYtPm0ybV9kZXYpOworCisJCWdvdG8gZXJyX3Zp ZGVvOworCX0KKworCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIGRldik7CisKKwlwbV9ydW50 aW1lX2VuYWJsZShkZXYtPmRldik7CisKKwlyZXR1cm4gMDsKKworZXJyX3ZpZGVvOgorCXZpZGVv X3VucmVnaXN0ZXJfZGV2aWNlKCZkZXYtPnZmZCk7CitlcnJfdjRsMjoKKwl2NGwyX2RldmljZV91 bnJlZ2lzdGVyKCZkZXYtPnY0bDJfZGV2KTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBp bnQgZGVpbnRlcmxhY2VfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJ c3RydWN0IGRlaW50ZXJsYWNlX2RldiAqZGV2ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7 CisKKwl2NGwyX20ybV9yZWxlYXNlKGRldi0+bTJtX2Rldik7CisJdmlkZW9fdW5yZWdpc3Rlcl9k ZXZpY2UoJmRldi0+dmZkKTsKKwl2NGwyX2RldmljZV91bnJlZ2lzdGVyKCZkZXYtPnY0bDJfZGV2 KTsKKworCXBtX3J1bnRpbWVfZm9yY2Vfc3VzcGVuZCgmcGRldi0+ZGV2KTsKKworCXJldHVybiAw OworfQorCitzdGF0aWMgaW50IGRlaW50ZXJsYWNlX3J1bnRpbWVfcmVzdW1lKHN0cnVjdCBkZXZp Y2UgKmRldmljZSkKK3sKKwlzdHJ1Y3QgZGVpbnRlcmxhY2VfZGV2ICpkZXYgPSBkZXZfZ2V0X2Ry dmRhdGEoZGV2aWNlKTsKKwlpbnQgcmV0OworCisJcmV0ID0gY2xrX3NldF9yYXRlX2V4Y2x1c2l2 ZShkZXYtPm1vZF9jbGssIDMwMDAwMDAwMCk7CisJaWYgKHJldCkgeworCQlkZXZfZXJyKGRldi0+ ZGV2LCAiRmFpbGVkIHRvIHNldCBleGNsdXNpdmUgbW9kIGNsb2NrIHJhdGVcbiIpOworCisJCXJl dHVybiByZXQ7CisJfQorCisJcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKGRldi0+YnVzX2Nsayk7 CisJaWYgKHJldCkgeworCQlkZXZfZXJyKGRldi0+ZGV2LCAiRmFpbGVkIHRvIGVuYWJsZSBidXMg Y2xvY2tcbiIpOworCisJCWdvdG8gZXJyX2V4bHVzaXZlX3JhdGU7CisJfQorCisJcmV0ID0gY2xr X3ByZXBhcmVfZW5hYmxlKGRldi0+bW9kX2Nsayk7CisJaWYgKHJldCkgeworCQlkZXZfZXJyKGRl di0+ZGV2LCAiRmFpbGVkIHRvIGVuYWJsZSBtb2QgY2xvY2tcbiIpOworCisJCWdvdG8gZXJyX2J1 c19jbGs7CisJfQorCisJcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKGRldi0+cmFtX2Nsayk7CisJ aWYgKHJldCkgeworCQlkZXZfZXJyKGRldi0+ZGV2LCAiRmFpbGVkIHRvIGVuYWJsZSByYW0gY2xv Y2tcbiIpOworCisJCWdvdG8gZXJyX21vZF9jbGs7CisJfQorCisJcmV0ID0gcmVzZXRfY29udHJv bF9kZWFzc2VydChkZXYtPnJzdGMpOworCWlmIChyZXQpIHsKKwkJZGV2X2VycihkZXYtPmRldiwg IkZhaWxlZCB0byBhcHBseSByZXNldFxuIik7CisKKwkJZ290byBlcnJfcmFtX2NsazsKKwl9CisK KwlkZWludGVybGFjZV9pbml0KGRldik7CisKKwlyZXR1cm4gMDsKKworZXJyX2V4bHVzaXZlX3Jh dGU6CisJY2xrX3JhdGVfZXhjbHVzaXZlX3B1dChkZXYtPm1vZF9jbGspOworZXJyX3JhbV9jbGs6 CisJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGRldi0+cmFtX2Nsayk7CitlcnJfbW9kX2NsazoKKwlj bGtfZGlzYWJsZV91bnByZXBhcmUoZGV2LT5tb2RfY2xrKTsKK2Vycl9idXNfY2xrOgorCWNsa19k aXNhYmxlX3VucHJlcGFyZShkZXYtPmJ1c19jbGspOworCisJcmV0dXJuIHJldDsKK30KKworc3Rh dGljIGludCBkZWludGVybGFjZV9ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2aWNl KQoreworCXN0cnVjdCBkZWludGVybGFjZV9kZXYgKmRldiA9IGRldl9nZXRfZHJ2ZGF0YShkZXZp Y2UpOworCisJcmVzZXRfY29udHJvbF9hc3NlcnQoZGV2LT5yc3RjKTsKKworCWNsa19kaXNhYmxl X3VucHJlcGFyZShkZXYtPnJhbV9jbGspOworCWNsa19kaXNhYmxlX3VucHJlcGFyZShkZXYtPm1v ZF9jbGspOworCWNsa19kaXNhYmxlX3VucHJlcGFyZShkZXYtPmJ1c19jbGspOworCWNsa19yYXRl X2V4Y2x1c2l2ZV9wdXQoZGV2LT5tb2RfY2xrKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMg Y29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBkZWludGVybGFjZV9kdF9tYXRjaFtdID0geworCXsg LmNvbXBhdGlibGUgPSAiYWxsd2lubmVyLHN1bjhpLWgzLWRlaW50ZXJsYWNlIiB9LAorCXsgLyog c2VudGluZWwgKi8gfQorfTsKK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGRlaW50ZXJsYWNlX2R0 X21hdGNoKTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIGRlaW50ZXJsYWNlX3Bt X29wcyA9IHsKKwkucnVudGltZV9yZXN1bWUJCT0gZGVpbnRlcmxhY2VfcnVudGltZV9yZXN1bWUs CisJLnJ1bnRpbWVfc3VzcGVuZAk9IGRlaW50ZXJsYWNlX3J1bnRpbWVfc3VzcGVuZCwKK307CisK K3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGRlaW50ZXJsYWNlX2RyaXZlciA9IHsKKwku cHJvYmUJCT0gZGVpbnRlcmxhY2VfcHJvYmUsCisJLnJlbW92ZQkJPSBkZWludGVybGFjZV9yZW1v dmUsCisJLmRyaXZlcgkJPSB7CisJCS5uYW1lCQk9IERFSU5URVJMQUNFX05BTUUsCisJCS5vZl9t YXRjaF90YWJsZQk9IGRlaW50ZXJsYWNlX2R0X21hdGNoLAorCQkucG0JCT0gJmRlaW50ZXJsYWNl X3BtX29wcywKKwl9LAorfTsKK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoZGVpbnRlcmxhY2VfZHJp dmVyKTsKKworTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIpOworTU9EVUxFX0FVVEhPUigiSmVybmVq IFNrcmFiZWMgPGplcm5lai5za3JhYmVjQHNpb2wubmV0PiIpOworTU9EVUxFX0RFU0NSSVBUSU9O KCJBbGx3aW5uZXIgRGVpbnRlcmxhY2UgZHJpdmVyIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21l ZGlhL3BsYXRmb3JtL3N1bnhpL3N1bjhpLWRpL3N1bjhpLWRpLmggYi9kcml2ZXJzL21lZGlhL3Bs YXRmb3JtL3N1bnhpL3N1bjhpLWRpL3N1bjhpLWRpLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAwLi4wMjU0MjUxZDg2ODcKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJz L21lZGlhL3BsYXRmb3JtL3N1bnhpL3N1bjhpLWRpL3N1bjhpLWRpLmgKQEAgLTAsMCArMSwyMzcg QEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovCisvKgorICogQWxsd2lu bmVyIERlaW50ZXJsYWNlIGRyaXZlcgorICoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBKZXJuZWog U2tyYWJlYyA8amVybmVqLnNrcmFiZWNAc2lvbC5uZXQ+CisgKi8KKworI2lmbmRlZiBfU1VOOElf REVJTlRFUkxBQ0VfSF8KKyNkZWZpbmUgX1NVTjhJX0RFSU5URVJMQUNFX0hfCisKKyNpbmNsdWRl IDxtZWRpYS92NGwyLWRldmljZS5oPgorI2luY2x1ZGUgPG1lZGlhL3Y0bDItbWVtMm1lbS5oPgor I2luY2x1ZGUgPG1lZGlhL3ZpZGVvYnVmMi12NGwyLmg+CisjaW5jbHVkZSA8bWVkaWEvdmlkZW9i dWYyLWRtYS1jb250aWcuaD4KKworI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgor CisjZGVmaW5lIERFSU5URVJMQUNFX05BTUUJCSJzdW44aS1kaSIKKworI2RlZmluZSBERUlOVEVS TEFDRV9NT0RfRU5BQkxFCQkJMHgwMAorI2RlZmluZSBERUlOVEVSTEFDRV9NT0RfRU5BQkxFX0VO CQkJQklUKDApCisKKyNkZWZpbmUgREVJTlRFUkxBQ0VfRlJNX0NUUkwJCQkweDA0CisjZGVmaW5l IERFSU5URVJMQUNFX0ZSTV9DVFJMX1JFR19SRUFEWQkJCUJJVCgwKQorI2RlZmluZSBERUlOVEVS TEFDRV9GUk1fQ1RSTF9XQl9FTgkJCUJJVCgyKQorI2RlZmluZSBERUlOVEVSTEFDRV9GUk1fQ1RS TF9PVVRfQ1RSTAkJCUJJVCgxMSkKKyNkZWZpbmUgREVJTlRFUkxBQ0VfRlJNX0NUUkxfU1RBUlQJ CQlCSVQoMTYpCisjZGVmaW5lIERFSU5URVJMQUNFX0ZSTV9DVFJMX0NPRUZfQUNDRVNTCQlCSVQo MjMpCisKKyNkZWZpbmUgREVJTlRFUkxBQ0VfQllQQVNTCQkJMHgwOAorI2RlZmluZSBERUlOVEVS TEFDRV9CWVBBU1NfQ1NDCQkJCUJJVCgxKQorCisjZGVmaW5lIERFSU5URVJMQUNFX0FHVEhfU0VM CQkJMHgwYworI2RlZmluZSBERUlOVEVSTEFDRV9BR1RIX1NFTF9MSU5FQlVGCQkJQklUKDgpCisK KyNkZWZpbmUgREVJTlRFUkxBQ0VfTElOVF9DVFJMCQkJMHgxMAorI2RlZmluZSBERUlOVEVSTEFD RV9UUkRfUFJFTFVNQQkJCTB4MWMKKyNkZWZpbmUgREVJTlRFUkxBQ0VfQlVGX0FERFIwCQkJMHgy MAorI2RlZmluZSBERUlOVEVSTEFDRV9CVUZfQUREUjEJCQkweDI0CisjZGVmaW5lIERFSU5URVJM QUNFX0JVRl9BRERSMgkJCTB4MjgKKworI2RlZmluZSBERUlOVEVSTEFDRV9GSUVMRF9DVFJMCQkJ MHgyYworI2RlZmluZSBERUlOVEVSTEFDRV9GSUVMRF9DVFJMX0ZJRUxEX0NOVCh2KQkJKCh2KSAm IDB4ZmYpCisjZGVmaW5lIERFSU5URVJMQUNFX0ZJRUxEX0NUUkxfRklFTERfQ05UX01TSwkJKDB4 ZmYpCisKKyNkZWZpbmUgREVJTlRFUkxBQ0VfVEJfT0ZGU0VUMAkJCTB4MzAKKyNkZWZpbmUgREVJ TlRFUkxBQ0VfVEJfT0ZGU0VUMQkJCTB4MzQKKyNkZWZpbmUgREVJTlRFUkxBQ0VfVEJfT0ZGU0VU MgkJCTB4MzgKKyNkZWZpbmUgREVJTlRFUkxBQ0VfVFJEX1BSRUNIUk9NQQkJMHgzYworI2RlZmlu ZSBERUlOVEVSTEFDRV9MSU5FX1NUUklERTAJCTB4NDAKKyNkZWZpbmUgREVJTlRFUkxBQ0VfTElO RV9TVFJJREUxCQkweDQ0CisjZGVmaW5lIERFSU5URVJMQUNFX0xJTkVfU1RSSURFMgkJMHg0OAor CisjZGVmaW5lIERFSU5URVJMQUNFX0lOX0ZNVAkJCTB4NGMKKyNkZWZpbmUgREVJTlRFUkxBQ0Vf SU5fRk1UX1BTKHYpCQkJKCh2KSAmIDMpCisjZGVmaW5lIERFSU5URVJMQUNFX0lOX0ZNVF9GTVQo dikJCQkoKCh2KSAmIDcpIDw8IDQpCisjZGVmaW5lIERFSU5URVJMQUNFX0lOX0ZNVF9NT0QodikJ CQkoKCh2KSAmIDcpIDw8IDgpCisKKyNkZWZpbmUgREVJTlRFUkxBQ0VfV0JfQUREUjAJCQkweDUw CisjZGVmaW5lIERFSU5URVJMQUNFX1dCX0FERFIxCQkJMHg1NAorI2RlZmluZSBERUlOVEVSTEFD RV9XQl9BRERSMgkJCTB4NTgKKworI2RlZmluZSBERUlOVEVSTEFDRV9PVVRfRk1UCQkJMHg1Ywor I2RlZmluZSBERUlOVEVSTEFDRV9PVVRfRk1UX0ZNVCh2KQkJCSgodikgJiAweGYpCisjZGVmaW5l IERFSU5URVJMQUNFX09VVF9GTVRfUFModikJCQkoKCh2KSAmIDMpIDw8IDUpCisKKyNkZWZpbmUg REVJTlRFUkxBQ0VfSU5UX0VOQUJMRQkJCTB4NjAKKyNkZWZpbmUgREVJTlRFUkxBQ0VfSU5UX0VO QUJMRV9XQl9FTgkJCUJJVCg3KQorCisjZGVmaW5lIERFSU5URVJMQUNFX0lOVF9TVEFUVVMJCQkw eDY0CisjZGVmaW5lIERFSU5URVJMQUNFX0lOVF9TVEFUVVNfV1JJVEVCQUNLCQlCSVQoNykKKwor I2RlZmluZSBERUlOVEVSTEFDRV9TVEFUVVMJCQkweDY4CisjZGVmaW5lIERFSU5URVJMQUNFX1NU QVRVU19DT0VGX1NUQVRVUwkJCUJJVCgxMSkKKyNkZWZpbmUgREVJTlRFUkxBQ0VfU1RBVFVTX1dC X0VSUk9SCQkJQklUKDEyKQorCisjZGVmaW5lIERFSU5URVJMQUNFX0NTQ19DT0VGCQkJMHg3MCAv KiAxMiByZWdpc3RlcnMgKi8KKworI2RlZmluZSBERUlOVEVSTEFDRV9DVFJMCQkJMHhhMAorI2Rl ZmluZSBERUlOVEVSTEFDRV9DVFJMX0VOCQkJCUJJVCgwKQorI2RlZmluZSBERUlOVEVSTEFDRV9D VFJMX0ZMQUdfT1VUX0VOCQkJQklUKDgpCisjZGVmaW5lIERFSU5URVJMQUNFX0NUUkxfTU9ERV9Q QVNTVFJPVUdICQkoMCA8PCAxNikKKyNkZWZpbmUgREVJTlRFUkxBQ0VfQ1RSTF9NT0RFX1dFQVZF CQkJKDEgPDwgMTYpCisjZGVmaW5lIERFSU5URVJMQUNFX0NUUkxfTU9ERV9CT0IJCQkoMiA8PCAx NikKKyNkZWZpbmUgREVJTlRFUkxBQ0VfQ1RSTF9NT0RFX01JWEVECQkJKDMgPDwgMTYpCisjZGVm aW5lIERFSU5URVJMQUNFX0NUUkxfRElBR19JTlRQX0VOCQkJQklUKDI0KQorI2RlZmluZSBERUlO VEVSTEFDRV9DVFJMX1RFTVBfRElGRl9FTgkJCUJJVCgyNSkKKworI2RlZmluZSBERUlOVEVSTEFD RV9ESUFHX0lOVFAJCQkweGE0CisjZGVmaW5lIERFSU5URVJMQUNFX0RJQUdfSU5UUF9USDAodikJ CQkoKHYpICYgMHg3ZikKKyNkZWZpbmUgREVJTlRFUkxBQ0VfRElBR19JTlRQX1RIMF9NU0sJCQko MHg3ZikKKyNkZWZpbmUgREVJTlRFUkxBQ0VfRElBR19JTlRQX1RIMSh2KQkJCSgoKHYpICYgMHg3 ZikgPDwgOCkKKyNkZWZpbmUgREVJTlRFUkxBQ0VfRElBR19JTlRQX1RIMV9NU0sJCQkoMHg3ZiA8 PCA4KQorI2RlZmluZSBERUlOVEVSTEFDRV9ESUFHX0lOVFBfVEgzKHYpCQkJKCgodikgJiAweGZm KSA8PCAyNCkKKyNkZWZpbmUgREVJTlRFUkxBQ0VfRElBR19JTlRQX1RIM19NU0sJCQkoMHhmZiA8 PCAyNCkKKworI2RlZmluZSBERUlOVEVSTEFDRV9URU1QX0RJRkYJCQkweGE4CisjZGVmaW5lIERF SU5URVJMQUNFX1RFTVBfRElGRl9TQURfQ0VOVFJBTF9USCh2KQkJKCh2KSAmIDB4N2YpCisjZGVm aW5lIERFSU5URVJMQUNFX1RFTVBfRElGRl9TQURfQ0VOVFJBTF9USF9NU0sJKDB4N2YpCisjZGVm aW5lIERFSU5URVJMQUNFX1RFTVBfRElGRl9BTUJJR1VJVFlfVEgodikJCSgoKHYpICYgMHg3Zikg PDwgOCkKKyNkZWZpbmUgREVJTlRFUkxBQ0VfVEVNUF9ESUZGX0FNQklHVUlUWV9USF9NU0sJCSgw eDdmIDw8IDgpCisjZGVmaW5lIERFSU5URVJMQUNFX1RFTVBfRElGRl9ESVJFQ1RfRElUSEVSX1RI KHYpCSgoKHYpICYgMHg3ZmYpIDw8IDE2KQorI2RlZmluZSBERUlOVEVSTEFDRV9URU1QX0RJRkZf RElSRUNUX0RJVEhFUl9USF9NU0sJKDB4N2ZmIDw8IDE2KQorCisjZGVmaW5lIERFSU5URVJMQUNF X0xVTUFfVEgJCQkweGFjCisjZGVmaW5lIERFSU5URVJMQUNFX0xVTUFfVEhfTUlOX0xVTUEodikJ CQkoKHYpICYgMHhmZikKKyNkZWZpbmUgREVJTlRFUkxBQ0VfTFVNQV9USF9NSU5fTFVNQV9NU0sJ CSgweGZmKQorI2RlZmluZSBERUlOVEVSTEFDRV9MVU1BX1RIX01BWF9MVU1BKHYpCQkJKCgodikg JiAweGZmKSA8PCA4KQorI2RlZmluZSBERUlOVEVSTEFDRV9MVU1BX1RIX01BWF9MVU1BX01TSwkJ KDB4ZmYgPDwgOCkKKyNkZWZpbmUgREVJTlRFUkxBQ0VfTFVNQV9USF9BVkdfTFVNQV9TSElGVCh2 KQkJKCgodikgJiAweGZmKSA8PCAxNikKKyNkZWZpbmUgREVJTlRFUkxBQ0VfTFVNQV9USF9BVkdf TFVNQV9TSElGVF9NU0sJCSgweGZmIDw8IDE2KQorI2RlZmluZSBERUlOVEVSTEFDRV9MVU1BX1RI X1BJWEVMX1NUQVRJQyh2KQkJKCgodikgJiAzKSA8PCAyNCkKKyNkZWZpbmUgREVJTlRFUkxBQ0Vf TFVNQV9USF9QSVhFTF9TVEFUSUNfTVNLCQkoMyA8PCAyNCkKKworI2RlZmluZSBERUlOVEVSTEFD RV9TUEFUX0NPTVAJCQkweGIwCisjZGVmaW5lIERFSU5URVJMQUNFX1NQQVRfQ09NUF9USDIodikJ CQkoKHYpICYgMHhmZikKKyNkZWZpbmUgREVJTlRFUkxBQ0VfU1BBVF9DT01QX1RIMl9NU0sJCQko MHhmZikKKyNkZWZpbmUgREVJTlRFUkxBQ0VfU1BBVF9DT01QX1RIMyh2KQkJCSgoKHYpICYgMHhm ZikgPDwgMTYpCisjZGVmaW5lIERFSU5URVJMQUNFX1NQQVRfQ09NUF9USDNfTVNLCQkJKDB4ZmYg PDwgMTYpCisKKyNkZWZpbmUgREVJTlRFUkxBQ0VfQ0hST01BX0RJRkYJCQkweGI0CisjZGVmaW5l IERFSU5URVJMQUNFX0NIUk9NQV9ESUZGX1RIKHYpCQkJKCh2KSAmIDB4ZmYpCisjZGVmaW5lIERF SU5URVJMQUNFX0NIUk9NQV9ESUZGX1RIX01TSwkJCSgweGZmKQorI2RlZmluZSBERUlOVEVSTEFD RV9DSFJPTUFfRElGRl9MVU1BKHYpCQkJKCgodikgJiAweDNmKSA8PCAxNikKKyNkZWZpbmUgREVJ TlRFUkxBQ0VfQ0hST01BX0RJRkZfTFVNQV9NU0sJCSgweDNmIDw8IDE2KQorI2RlZmluZSBERUlO VEVSTEFDRV9DSFJPTUFfRElGRl9DSFJPTUEodikJCSgoKHYpICYgMHgzZikgPDwgMjQpCisjZGVm aW5lIERFSU5URVJMQUNFX0NIUk9NQV9ESUZGX0NIUk9NQV9NU0sJCSgweDNmIDw8IDI0KQorCisj ZGVmaW5lIERFSU5URVJMQUNFX1BSRUxVTUEJCQkweGI4CisjZGVmaW5lIERFSU5URVJMQUNFX1BS RUNIUk9NQQkJCTB4YmMKKyNkZWZpbmUgREVJTlRFUkxBQ0VfVElMRV9GTEFHMAkJCTB4YzAKKyNk ZWZpbmUgREVJTlRFUkxBQ0VfVElMRV9GTEFHMQkJCTB4YzQKKyNkZWZpbmUgREVJTlRFUkxBQ0Vf RkxBR19MSU5FX1NUUklERQkJMHhjOAorI2RlZmluZSBERUlOVEVSTEFDRV9GTEFHX1NFUQkJCTB4 Y2MKKworI2RlZmluZSBERUlOVEVSTEFDRV9XQl9MSU5FX1NUUklERV9DVFJMCQkweGQwCisjZGVm aW5lIERFSU5URVJMQUNFX1dCX0xJTkVfU1RSSURFX0NUUkxfRU4JCUJJVCgwKQorCisjZGVmaW5l IERFSU5URVJMQUNFX1dCX0xJTkVfU1RSSURFMAkJMHhkNAorI2RlZmluZSBERUlOVEVSTEFDRV9X Ql9MSU5FX1NUUklERTEJCTB4ZDgKKyNkZWZpbmUgREVJTlRFUkxBQ0VfV0JfTElORV9TVFJJREUy CQkweGRjCisjZGVmaW5lIERFSU5URVJMQUNFX1RSRF9DVFJMCQkJMHhlMAorI2RlZmluZSBERUlO VEVSTEFDRV9UUkRfQlVGX0FERFIwCQkweGU0CisjZGVmaW5lIERFSU5URVJMQUNFX1RSRF9CVUZf QUREUjEJCTB4ZTgKKyNkZWZpbmUgREVJTlRFUkxBQ0VfVFJEX0JVRl9BRERSMgkJMHhlYworI2Rl ZmluZSBERUlOVEVSTEFDRV9UUkRfVEJfT0ZGMAkJCTB4ZjAKKyNkZWZpbmUgREVJTlRFUkxBQ0Vf VFJEX1RCX09GRjEJCQkweGY0CisjZGVmaW5lIERFSU5URVJMQUNFX1RSRF9UQl9PRkYyCQkJMHhm OAorI2RlZmluZSBERUlOVEVSTEFDRV9UUkRfV0JfU1RSSURFCQkweGZjCisjZGVmaW5lIERFSU5U RVJMQUNFX0NIMF9JTl9TSVpFCQkJMHgxMDAKKyNkZWZpbmUgREVJTlRFUkxBQ0VfQ0gwX09VVF9T SVpFCQkweDEwNAorI2RlZmluZSBERUlOVEVSTEFDRV9DSDBfSE9SWl9GQUNUCQkweDEwOAorI2Rl ZmluZSBERUlOVEVSTEFDRV9DSDBfVkVSVF9GQUNUCQkweDEwYworI2RlZmluZSBERUlOVEVSTEFD RV9DSDBfSE9SWl9QSEFTRQkJMHgxMTAKKyNkZWZpbmUgREVJTlRFUkxBQ0VfQ0gwX1ZFUlRfUEhB U0UwCQkweDExNAorI2RlZmluZSBERUlOVEVSTEFDRV9DSDBfVkVSVF9QSEFTRTEJCTB4MTE4Cisj ZGVmaW5lIERFSU5URVJMQUNFX0NIMF9IT1JaX1RBUDAJCTB4MTIwCisjZGVmaW5lIERFSU5URVJM QUNFX0NIMF9IT1JaX1RBUDEJCTB4MTI0CisjZGVmaW5lIERFSU5URVJMQUNFX0NIMF9WRVJUX1RB UAkJMHgxMjgKKyNkZWZpbmUgREVJTlRFUkxBQ0VfQ0gxX0lOX1NJWkUJCQkweDIwMAorI2RlZmlu ZSBERUlOVEVSTEFDRV9DSDFfT1VUX1NJWkUJCTB4MjA0CisjZGVmaW5lIERFSU5URVJMQUNFX0NI MV9IT1JaX0ZBQ1QJCTB4MjA4CisjZGVmaW5lIERFSU5URVJMQUNFX0NIMV9WRVJUX0ZBQ1QJCTB4 MjBjCisjZGVmaW5lIERFSU5URVJMQUNFX0NIMV9IT1JaX1BIQVNFCQkweDIxMAorI2RlZmluZSBE RUlOVEVSTEFDRV9DSDFfVkVSVF9QSEFTRTAJCTB4MjE0CisjZGVmaW5lIERFSU5URVJMQUNFX0NI MV9WRVJUX1BIQVNFMQkJMHgyMTgKKyNkZWZpbmUgREVJTlRFUkxBQ0VfQ0gxX0hPUlpfVEFQMAkJ MHgyMjAKKyNkZWZpbmUgREVJTlRFUkxBQ0VfQ0gxX0hPUlpfVEFQMQkJMHgyMjQKKyNkZWZpbmUg REVJTlRFUkxBQ0VfQ0gxX1ZFUlRfVEFQCQkweDIyOAorI2RlZmluZSBERUlOVEVSTEFDRV9DSDBf SE9SWl9DT0VGMAkJMHg0MDAgLyogMzIgcmVnaXN0ZXJzICovCisjZGVmaW5lIERFSU5URVJMQUNF X0NIMF9IT1JaX0NPRUYxCQkweDQ4MCAvKiAzMiByZWdpc3RlcnMgKi8KKyNkZWZpbmUgREVJTlRF UkxBQ0VfQ0gwX1ZFUlRfQ09FRgkJMHg1MDAgLyogMzIgcmVnaXN0ZXJzICovCisjZGVmaW5lIERF SU5URVJMQUNFX0NIMV9IT1JaX0NPRUYwCQkweDYwMCAvKiAzMiByZWdpc3RlcnMgKi8KKyNkZWZp bmUgREVJTlRFUkxBQ0VfQ0gxX0hPUlpfQ09FRjEJCTB4NjgwIC8qIDMyIHJlZ2lzdGVycyAqLwor I2RlZmluZSBERUlOVEVSTEFDRV9DSDFfVkVSVF9DT0VGCQkweDcwMCAvKiAzMiByZWdpc3RlcnMg Ki8KKyNkZWZpbmUgREVJTlRFUkxBQ0VfQ0gzX0hPUlpfQ09FRjAJCTB4ODAwIC8qIDMyIHJlZ2lz dGVycyAqLworI2RlZmluZSBERUlOVEVSTEFDRV9DSDNfSE9SWl9DT0VGMQkJMHg4ODAgLyogMzIg cmVnaXN0ZXJzICovCisjZGVmaW5lIERFSU5URVJMQUNFX0NIM19WRVJUX0NPRUYJCTB4OTAwIC8q IDMyIHJlZ2lzdGVycyAqLworCisjZGVmaW5lIERFSU5URVJMQUNFX01JTl9XSURUSAkyVQorI2Rl ZmluZSBERUlOVEVSTEFDRV9NSU5fSEVJR0hUCTJVCisjZGVmaW5lIERFSU5URVJMQUNFX01BWF9X SURUSAkyMDQ4VQorI2RlZmluZSBERUlOVEVSTEFDRV9NQVhfSEVJR0hUCTExMDBVCisKKyNkZWZp bmUgREVJTlRFUkxBQ0VfTU9ERV9VVl9DT01CSU5FRAkyCisKKyNkZWZpbmUgREVJTlRFUkxBQ0Vf SU5fRk1UX1lVVjQyMAkyCisKKyNkZWZpbmUgREVJTlRFUkxBQ0VfT1VUX0ZNVF9ZVVY0MjBTUAkx MworCisjZGVmaW5lIERFSU5URVJMQUNFX1BTX1VWVVYJCTAKKyNkZWZpbmUgREVJTlRFUkxBQ0Vf UFNfVlVWVQkJMQorCisjZGVmaW5lIERFSU5URVJMQUNFX0lERU5USVRZX0NPRUYJMHg0MDAwCisK KyNkZWZpbmUgREVJTlRFUkxBQ0VfU0laRSh3LCBoKQkoKChoKSAtIDEpIDw8IDE2IHwgKCh3KSAt IDEpKQorCitzdHJ1Y3QgZGVpbnRlcmxhY2VfY3R4IHsKKwlzdHJ1Y3QgdjRsMl9maAkJZmg7CisJ c3RydWN0IGRlaW50ZXJsYWNlX2RldgkqZGV2OworCisJc3RydWN0IHY0bDJfcGl4X2Zvcm1hdAlz cmNfZm10OworCXN0cnVjdCB2NGwyX3BpeF9mb3JtYXQJZHN0X2ZtdDsKKworCXZvaWQJCQkqZmxh ZzFfYnVmOworCWRtYV9hZGRyX3QJCWZsYWcxX2J1Zl9kbWE7CisKKwl2b2lkCQkJKmZsYWcyX2J1 ZjsKKwlkbWFfYWRkcl90CQlmbGFnMl9idWZfZG1hOworCisJc3RydWN0IHZiMl92NGwyX2J1ZmZl cgkqcHJldjsKKworCXVuc2lnbmVkIGludAkJZmlyc3RfZmllbGQ7CisJdW5zaWduZWQgaW50CQlm aWVsZDsKKworCWludAkJCWFib3J0aW5nOworfTsKKworc3RydWN0IGRlaW50ZXJsYWNlX2RldiB7 CisJc3RydWN0IHY0bDJfZGV2aWNlCXY0bDJfZGV2OworCXN0cnVjdCB2aWRlb19kZXZpY2UJdmZk OworCXN0cnVjdCBkZXZpY2UJCSpkZXY7CisJc3RydWN0IHY0bDJfbTJtX2RldgkqbTJtX2RldjsK KworCS8qIERldmljZSBmaWxlIG11dGV4ICovCisJc3RydWN0IG11dGV4CQlkZXZfbXV0ZXg7CisK Kwl2b2lkIF9faW9tZW0JCSpiYXNlOworCisJc3RydWN0IGNsawkJKmJ1c19jbGs7CisJc3RydWN0 IGNsawkJKm1vZF9jbGs7CisJc3RydWN0IGNsawkJKnJhbV9jbGs7CisKKwlzdHJ1Y3QgcmVzZXRf Y29udHJvbAkqcnN0YzsKK307CisKKyNlbmRpZgotLSAKMi4yMy4wCgoKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGlu ZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMu aW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK