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=-22.1 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,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 7FE56C07E94 for ; Fri, 4 Jun 2021 10:06:16 +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 4B50061369 for ; Fri, 4 Jun 2021 10:06:16 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4B50061369 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=samsung.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+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.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:References:MIME-Version:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=OWhDPi1anC41iwfxzfj+aXYD3V+EJwpnADFuNYSXjjU=; b=RlbwENqlGd7zdt n1eLT8eF/DJBDVHIMPLeoVL4c6mI7GR2j9uduEsIxYK1xNBCroT9LiQniuJaTo5IaTQZ0nl+ACbRT 8dMaKt+HVAuBVAA02O/i1HZP42OO7+7nvMA/DAaGkymuR6TmViVSOAq9/lE3FgQNTSLulvUBiJDNz +ZTfC2HJBRyP7EPT1r53rWUzrOw9qyb14BTX4Go/H0Iy603NacoYfAb73FxdHkwvXMe1NKDfhtS64 933oCdLNsMuhcvjjVHmMXgg7mxNufoUWw2d5LShcAqNSIza2LmBnsE+Aw7KMh1AQ7vanjZcAvGys6 5E3WFPSGk8hZAqVkbnhQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1lp6fW-00Cn1Q-Fy; Fri, 04 Jun 2021 10:03:11 +0000 Received: from mailout1.w1.samsung.com ([210.118.77.11]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1lp6eW-00CmZx-JD for linux-arm-kernel@lists.infradead.org; Fri, 04 Jun 2021 10:02:18 +0000 Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20210604100201euoutp01cf64e86f1aa8220480851d99c127b2c6~FWNcf7-JY2000120001euoutp01F for ; Fri, 4 Jun 2021 10:02:01 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20210604100201euoutp01cf64e86f1aa8220480851d99c127b2c6~FWNcf7-JY2000120001euoutp01F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1622800921; bh=QJl3/ZwjdSR+hkZPYX3x4R7FlvB12W6CHnnTvo0dXgM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=BZ3/hk7K1XFBepoBv300TBq9puPRpBDva83Zz4JXkbO6KHiljHz58P4xJzEkvxBxE ruBoMERmlr1i6S20Ouy9RqmVMcobnl6tGK8IlxWbO4Pm/cQBa2OwDEz/uqtNi1JDPX obpFUtukXKhb0/oVlCr+akAnlEszXWnUVAk7A1Cw= Received: from eusmges1new.samsung.com (unknown [203.254.199.242]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20210604100200eucas1p1f326e899d5b06abdd3798df99806c138~FWNbzsiAb0541805418eucas1p1v; Fri, 4 Jun 2021 10:02:00 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges1new.samsung.com (EUCPMTA) with SMTP id 28.7D.09452.81AF9B06; Fri, 4 Jun 2021 11:02:00 +0100 (BST) Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20210604100200eucas1p29d94f0326c6071ae815f3df9036a943f~FWNbTeAjs2222522225eucas1p28; Fri, 4 Jun 2021 10:02:00 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp2.samsung.com (KnoxPortal) with ESMTP id 20210604100200eusmtrp2b02e0c18f4c537d275e751fdbd7f6bcf~FWNbSi6td1054110541eusmtrp2I; Fri, 4 Jun 2021 10:02:00 +0000 (GMT) X-AuditID: cbfec7f2-ab7ff700000024ec-fe-60b9fa18c7bd Received: from eusmtip1.samsung.com ( [203.254.199.221]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id FB.A7.08705.81AF9B06; Fri, 4 Jun 2021 11:02:00 +0100 (BST) Received: from localhost (unknown [106.120.51.46]) by eusmtip1.samsung.com (KnoxPortal) with ESMTPA id 20210604100200eusmtip1cac3b23476ca772e3a0fccdb0bd83c4b~FWNa6es9P1588215882eusmtip13; Fri, 4 Jun 2021 10:01:59 +0000 (GMT) From: =?UTF-8?q?=C5=81ukasz=20Stelmach?= To: Andrew Lunn , jim.cromie@gmail.com, Heiner Kallweit , "David S. Miller" , Jakub Kicinski , Rob Herring , Kukjin Kim , Krzysztof Kozlowski , Russell King , netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org Cc: =?UTF-8?q?Bart=C5=82omiej=20=C5=BBolnierkiewicz?= , Marek Szyprowski , =?UTF-8?q?=C5=81ukasz=20Stelmach?= Subject: [PATCH 3/3] net: ax88796c: ASIX AX88796C SPI Ethernet Adapter Driver Date: Fri, 4 Jun 2021 12:01:48 +0200 Message-Id: <20210604100148.17177-4-l.stelmach@samsung.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20210604100148.17177-1-l.stelmach@samsung.com> MIME-Version: 1.0 Organization: Samsung R&D Institute Poland X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrEKsWRmVeSWpSXmKPExsWy7djPc7oSv3YmGEy6ZmJx/u4hZouNM9az Wsw538JiMf/IOVaLRe9nsFpce3uH1aL/8Wtmi/PnN7BbXNjWx2px89AKRotNj6+xWlzeNYfN Ysb5fUwWh6buZbRYe+Quu8WxBWIWrXuPsDsIely+dpHZY8vKm0weO2fdZffYtKqTzWPzknqP nTs+M3n0bVnF6PF5k1wARxSXTUpqTmZZapG+XQJXRkvDdKaCC9NYKh6/EmlgnL2TuYuRk0NC wERi67wzjF2MXBxCAisYJV48WMoG4XxhlLh39x4rhPOZUWLN7p+MMC17ts9ghkgsZ5RYdO8R lPOcUeLJmeNMIFVsAo4S/UtPgLWLCNxjlljf/gBsC7PAPkaJnfemgK0XFvCXmHdrJlgHi4Cq xI4VL4CKODh4BawlZiwshFgnL9G+fDsbiM0pYCMxZ/Y/VhCbV0BQ4uTMJywgNr+AlsSaputg NjNQffPW2WAXSQgc5pQ4sm4TO8QgF4mfc29B/SAs8er4Fqi4jMT/nfOZQPZKCNRLTJ5kBtHb wyixbc4PFogaa4k7536xgdQwC2hKrN+lDxF2lLg68ScLRCufxI23ghAn8ElM2jadGSLMK9HR JgRRrSKxrn8P1EApid5XKxgnMCrNQvLMLCQPzELYtYCReRWjeGppcW56arFhXmq5XnFibnFp Xrpecn7uJkZgsjv97/inHYxzX33UO8TIxMF4iFGCg1lJhHeP2o4EId6UxMqq1KL8+KLSnNTi Q4zSHCxK4ryrZq+JFxJITyxJzU5NLUgtgskycXBKNTBJLFQyDf+s21vqbV3YIih9P/+GfcHk qyZG8udLj6Yl7JOUf/R81Y/kjctezp8s6vN38ZGf71NWpIc9nhQWXmPxyfRNndV+o6I54ozh 8tb90sI2J6Vn12XGuSzxFEiYPPHvLWu1wz2M+/vue9iuLH9Re2VmR9uJfpHEIA8XnZIXt2cm rnrzvsz86h8VNv51p8uCK69tebmUX/3+n/mCTZJhVpJ6tqJFR4p2z3lkItWWJM8kFCJ1jXNm 47nJYrxiIgpbVjeU/rFzsH7WWpl7Met7tcuWqDPHcnivleasC6lhSraojV2nclzM57GtWTSf 4i/7kkfL+cJnhc79sTXkUrBcbslJ7hmmUy7+PX+3R4mlOCPRUIu5qDgRANMqEA/lAwAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrEIsWRmVeSWpSXmKPExsVy+t/xu7oSv3YmGGxYwWtx/u4hZouNM9az Wsw538JiMf/IOVaLRe9nsFpce3uH1aL/8Wtmi/PnN7BbXNjWx2px89AKRotNj6+xWlzeNYfN Ysb5fUwWh6buZbRYe+Quu8WxBWIWrXuPsDsIely+dpHZY8vKm0weO2fdZffYtKqTzWPzknqP nTs+M3n0bVnF6PF5k1wAR5SeTVF+aUmqQkZ+cYmtUrShhZGeoaWFnpGJpZ6hsXmslZGpkr6d TUpqTmZZapG+XYJeRkvDdKaCC9NYKh6/EmlgnL2TuYuRk0NCwERiz/YZQDYXh5DAUkaJt30L mboYOYASUhIr56ZD1AhL/LnWxQZR85RRYvqK6WDNbAKOEv1LT7CCJEQE3jBLNN17yw7iMAvs Y5TYf3QxO0iVsICvxPxja1lAbBYBVYkdK14wgmzgFbCWmLGwEGKDvET78u1sIDangI3EnNn/ WEFsIaCSA8t+MoLYvAKCEidnPmEBaWUWUJdYP08IJMwvoCWxpuk62HRmoDHNW2czT2AUmoWk YxZCxywkVQsYmVcxiqSWFuem5xYb6hUn5haX5qXrJefnbmIERva2Yz8372Cc9+qj3iFGJg7G Q4wSHMxKIrx71HYkCPGmJFZWpRblxxeV5qQWH2I0BXpsIrOUaHI+MLXklcQbmhmYGpqYWRqY WpoZK4nzbp27Jl5IID2xJDU7NbUgtQimj4mDU6qBKfZzyfzcoy8z386c9dLrb0EQk/iNg9Gq k/6t3/vx8As563vGArMn2LXbnY6On+B4KWu6cw9z58fPU2Z6xwo8so++M3tlwuzZBT+1PAqS XIMa93qv3D9nzsOfNofvu73adlv06xkm7aln18r8ruCa3Pafl7kwdmmMk7ug/8Uz7NeyA9de urzrw9Vf+fbu16WqNh1MM3ecvS6y+dyqfJPH1cKnv4nZHWtvWKXb7qMo7fb3yMp5Gy8s4OJb b9v/xP736//MalwaE2YElJT+PPFoOsdKyy/ZmTPNQo3nOK36nJ86dU9ofVSmLWv3I4/e3xzH zNOKd11LD93oteEIq8z7lPi2WXLWH7I7H7jK8N3Ma1ZiKc5INNRiLipOBADINwufdQMAAA== X-CMS-MailID: 20210604100200eucas1p29d94f0326c6071ae815f3df9036a943f X-Msg-Generator: CA X-RootMTR: 20210604100200eucas1p29d94f0326c6071ae815f3df9036a943f X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20210604100200eucas1p29d94f0326c6071ae815f3df9036a943f References: <20210604100148.17177-1-l.stelmach@samsung.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210604_030209_177548_CDBB2FE0 X-CRM114-Status: GOOD ( 29.60 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org QVNJWCBBWDg4Nzk2WzFdIGlzIGEgdmVyc2F0aWxlIGV0aGVybmV0IGFkYXB0ZXIgY2hpcCwgdGhh dCBjYW4gYmUKY29ubmVjdGVkIHRvIGEgQ1BVIHdpdGggYSA4LzE2LWJpdCBidXMgb3Igd2l0aCBh biBTUEkuIFRoaXMgZHJpdmVyCnN1cHBvcnRzIFNQSSBjb25uZWN0aW9uLgoKVGhlIGRyaXZlciBo YXMgYmVlbiBwb3J0ZWQgZnJvbSB0aGUgdmVuZG9yIGtlcm5lbCBmb3IgQVJUSUs1WzJdCmJvYXJk cy4gU2V2ZXJhbCBjaGFuZ2VzIHdlcmUgbWFkZSB0byBhZGFwdCBpdCB0byB0aGUgY3VycmVudCBr ZXJuZWwKd2hpY2ggaW5jbHVkZToKCisgdXBkYXRlZCBEVCBjb25maWd1cmF0aW9uLAorIGNsb2Nr IGNvbmZpZ3VyYXRpb24gbW92ZWQgdG8gRFQsCisgbmV3IHRpbWVyLCBldGh0b29sIGFuZCBncGlv IEFQSXMsCisgZGV2XyogaW5zdGVhZCBvZiBwcl8qIGFuZCBjdXN0b20gcHJpbnRrKCkgd3JhcHBl cnMsCisgcmVtb3ZlZCBhd2t3YXJkIHZlbmRvciBwb3dlciBtYW5hZ2VtdG4uCisgaW50cm9kdWNl ZCBldGh0b29sIHR1bmFibGUgdG8gY29udHJvbCBTUEkgY29tcHJlc3Npb24KClsxXSBodHRwczov L3d3dy5hc2l4LmNvbS50dy9wcm9kdWN0cy5waHA/b3A9cEl0ZW1kZXRhaWwmUEl0ZW1JRD0xMDQ7 NjU7ODYmUExpbmU9NjUKWzJdIGh0dHBzOi8vZ2l0LnRpemVuLm9yZy9jZ2l0L3Byb2ZpbGUvY29t bW9uL3BsYXRmb3JtL2tlcm5lbC9saW51eC0zLjEwLWFydGlrLwoKVGhlIG90aGVyIGF4ODg3OTYg ZHJpdmVyIGlzIGZvciBORTIwMDAgY29tcGF0aWJsZSBBWDg4Nzk2TCBjaGlwLiBUaGVzZQpjaGlw cyBhcmUgbm90IGNvbXBhdGlibGUuIEhlbmNlLCB0d28gc2VwYXJhdGUgZHJpdmVycyBhcmUgcmVx dWlyZWQuCgpTaWduZWQtb2ZmLWJ5OiDFgXVrYXN6IFN0ZWxtYWNoIDxsLnN0ZWxtYWNoQHNhbXN1 bmcuY29tPgpSZXZpZXdlZC1ieTogQW5kcmV3IEx1bm4gPGFuZHJld0BsdW5uLmNoPgotLS0KIE1B SU5UQUlORVJTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDYgKwogZHJpdmVy cy9uZXQvZXRoZXJuZXQvS2NvbmZpZyAgICAgICAgICAgICAgIHwgICAgMSArCiBkcml2ZXJzL25l dC9ldGhlcm5ldC9NYWtlZmlsZSAgICAgICAgICAgICAgfCAgICAxICsKIGRyaXZlcnMvbmV0L2V0 aGVybmV0L2FzaXgvS2NvbmZpZyAgICAgICAgICB8ICAgMzUgKwogZHJpdmVycy9uZXQvZXRoZXJu ZXQvYXNpeC9NYWtlZmlsZSAgICAgICAgIHwgICAgNiArCiBkcml2ZXJzL25ldC9ldGhlcm5ldC9h c2l4L2F4ODg3OTZjX2lvY3RsLmMgfCAgMjM5ICsrKysKIGRyaXZlcnMvbmV0L2V0aGVybmV0L2Fz aXgvYXg4ODc5NmNfaW9jdGwuaCB8ICAgMjYgKwogZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9h eDg4Nzk2Y19tYWluLmMgIHwgMTE0OSArKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9uZXQv ZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmggIHwgIDU2OCArKysrKysrKysrCiBkcml2ZXJz L25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX3NwaS5jICAgfCAgMTE1ICsrCiBkcml2ZXJzL25l dC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX3NwaS5oICAgfCAgIDY5ICsrCiAxMSBmaWxlcyBjaGFu Z2VkLCAyMjE1IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL25ldC9l dGhlcm5ldC9hc2l4L0tjb25maWcKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL25ldC9ldGhl cm5ldC9hc2l4L01ha2VmaWxlCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9uZXQvZXRoZXJu ZXQvYXNpeC9heDg4Nzk2Y19pb2N0bC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9uZXQv ZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19pb2N0bC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uaAogY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfc3BpLmMKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBkcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX3NwaS5oCgpkaWZmIC0t Z2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUwppbmRleCBkOGU4ODIyMjlhNDguLmEyYmM4 OTQwYWY1MyAxMDA2NDQKLS0tIGEvTUFJTlRBSU5FUlMKKysrIGIvTUFJTlRBSU5FUlMKQEAgLTI4 MTcsNiArMjgxNywxMiBAQCBTOglNYWludGFpbmVkCiBGOglEb2N1bWVudGF0aW9uL2h3bW9uL2Fz Yzc2MjEucnN0CiBGOglkcml2ZXJzL2h3bW9uL2FzYzc2MjEuYwogCitBU0lYIEFYODg3OTZDIFNQ SSBFVEhFUk5FVCBBREFQVEVSCitNOgnFgXVrYXN6IFN0ZWxtYWNoIDxsLnN0ZWxtYWNoQHNhbXN1 bmcuY29tPgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRp bmdzL25ldC9hc2l4LGF4ODg3OTZjLnlhbWwKK0Y6CWRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgv YXg4ODc5NmNfKgorCiBBU1BFRUQgUElOQ1RSTCBEUklWRVJTCiBNOglBbmRyZXcgSmVmZmVyeSA8 YW5kcmV3QGFqLmlkLmF1PgogTDoJbGludXgtYXNwZWVkQGxpc3RzLm96bGFicy5vcmcgKG1vZGVy YXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJu ZXQvS2NvbmZpZyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L0tjb25maWcKaW5kZXggMWNkZmYxZGNh NzkwLi5jNDQ0NzI3NGM5ZGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L0tjb25m aWcKKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvS2NvbmZpZwpAQCAtMzMsNiArMzMsNyBAQCBz b3VyY2UgImRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS9LY29uZmlnIgogc291cmNlICJkcml2ZXJz L25ldC9ldGhlcm5ldC9hcHBsZS9LY29uZmlnIgogc291cmNlICJkcml2ZXJzL25ldC9ldGhlcm5l dC9hcXVhbnRpYS9LY29uZmlnIgogc291cmNlICJkcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvS2Nv bmZpZyIKK3NvdXJjZSAiZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9LY29uZmlnIgogc291cmNl ICJkcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL0tjb25maWciCiBzb3VyY2UgImRyaXZlcnMv bmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWciCiBzb3VyY2UgImRyaXZlcnMvbmV0L2V0aGVy bmV0L2Jyb2NhZGUvS2NvbmZpZyIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L01h a2VmaWxlIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvTWFrZWZpbGUKaW5kZXggY2IzZjkwODRhMjFi Li4zZDNkMmIzNTIzMDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L01ha2VmaWxl CisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L01ha2VmaWxlCkBAIC0xOSw2ICsxOSw3IEBAIG9i ai0kKENPTkZJR19ORVRfWEdFTkUpICs9IGFwbS8KIG9iai0kKENPTkZJR19ORVRfVkVORE9SX0FQ UExFKSArPSBhcHBsZS8KIG9iai0kKENPTkZJR19ORVRfVkVORE9SX0FRVUFOVElBKSArPSBhcXVh bnRpYS8KIG9iai0kKENPTkZJR19ORVRfVkVORE9SX0FSQykgKz0gYXJjLworb2JqLSQoQ09ORklH X05FVF9WRU5ET1JfQVNJWCkgKz0gYXNpeC8KIG9iai0kKENPTkZJR19ORVRfVkVORE9SX0FUSEVS T1MpICs9IGF0aGVyb3MvCiBvYmotJChDT05GSUdfTkVUX1ZFTkRPUl9DQURFTkNFKSArPSBjYWRl bmNlLwogb2JqLSQoQ09ORklHX05FVF9WRU5ET1JfQlJPQURDT00pICs9IGJyb2FkY29tLwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9LY29uZmlnIGIvZHJpdmVycy9uZXQv ZXRoZXJuZXQvYXNpeC9LY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMC4uZWVkMDI0NTMzMTRjCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9uZXQvZXRoZXJu ZXQvYXNpeC9LY29uZmlnCkBAIC0wLDAgKzEsMzUgQEAKKyMKKyMgQXNpeCBuZXR3b3JrIGRldmlj ZSBjb25maWd1cmF0aW9uCisjCisKK2NvbmZpZyBORVRfVkVORE9SX0FTSVgKKwlib29sICJBc2l4 IGRldmljZXMiCisJZGVmYXVsdCB5CisJaGVscAorCSAgSWYgeW91IGhhdmUgYSBuZXR3b3JrIChF dGhlcm5ldCwgbm9uLVVTQiwgbm90IE5FMjAwMCBjb21wYXRpYmxlKQorCSAgaW50ZXJmYWNlIGJh c2VkIG9uIGEgY2hpcCBmcm9tIEFTSVgsIHNheSBZLgorCitpZiBORVRfVkVORE9SX0FTSVgKKwor Y29uZmlnIFNQSV9BWDg4Nzk2QworCXRyaXN0YXRlICJBc2l4IEFYODg3OTZDLVNQSSBzdXBwb3J0 IgorCXNlbGVjdCBQSFlMSUIKKwlkZXBlbmRzIG9uIFNQSQorCWRlcGVuZHMgb24gR1BJT0xJQgor CWhlbHAKKwkgIFNheSBZIGhlcmUgaWYgeW91IGludGVuZCB0byB1c2UgQVNJWCBBWDg4Nzk2QyBh dHRhY2hlZCBpbiBTUEkgbW9kZS4KKworY29uZmlnIFNQSV9BWDg4Nzk2Q19DT01QUkVTU0lPTgor CWJvb2wgIlNQSSB0cmFuc2ZlciBjb21wcmVzc2lvbiIKKwlkZWZhdWx0IG4KKwlkZXBlbmRzIG9u IFNQSV9BWDg4Nzk2QworCWhlbHAKKwkgIFNheSBZIGhlcmUgdG8gZW5hYmxlIFNQSSB0cmFuc2Zl ciBjb21wcmVzc2lvbi4gSXQgc2F2ZXMgdXAKKwkgIHRvIDI0IGR1bW15IGN5Y2xlcyBkdXJpbmcg ZWFjaCB0cmFuc2ZlciB3aGljaCBtYXkgbm90aWNlYWJseQorCSAgc3BlZWQgdXAgc2hvcnQgdHJh bnNmZXJzLiBUaGlzIHNldHMgdGhlIGRlZmF1bHQgdmFsdWUgdGhhdCBpcworCSAgaW5oZXJpdGVk IGJ5IG5ldHdvcmsgaW50ZXJmYWNlcyBkdXJpbmcgcHJvYmUuIEl0IGNhbiBiZQorCSAgY2hhbmdl ZCBhdCBydW4gdGltZSB2aWEgc3BpLWNvbXByZXNzaW9uIGV0aHRvb2wgdHVuYWJsZS4KKworCSAg SWYgdW5zdXJlIHNheSBOLgorCitlbmRpZiAjIE5FVF9WRU5ET1JfQVNJWApkaWZmIC0tZ2l0IGEv ZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9NYWtlZmlsZSBiL2RyaXZlcnMvbmV0L2V0aGVybmV0 L2FzaXgvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4w YmZiYmIwNDI2MzQKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4 L01ha2VmaWxlCkBAIC0wLDAgKzEsNiBAQAorIworIyBNYWtlZmlsZSBmb3IgdGhlIEFzaXggbmV0 d29yayBkZXZpY2UgZHJpdmVycy4KKyMKKworb2JqLSQoQ09ORklHX1NQSV9BWDg4Nzk2QykgKz0g YXg4ODc5NmMubworYXg4ODc5NmMteSA6PSBheDg4Nzk2Y19tYWluLm8gYXg4ODc5NmNfaW9jdGwu byBheDg4Nzk2Y19zcGkubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9h eDg4Nzk2Y19pb2N0bC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19pb2N0 bC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOTE2YWUzODBhMDA0 Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19p b2N0bC5jCkBAIC0wLDAgKzEsMjM5IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BM LTIuMC1vbmx5CisvKgorICogQ29weXJpZ2h0IChjKSAyMDEwIEFTSVggRWxlY3Ryb25pY3MgQ29y cG9yYXRpb24KKyAqIENvcHlyaWdodCAoYykgMjAyMCBTYW1zdW5nIEVsZWN0cm9uaWNzIENvLiwg THRkLgorICoKKyAqIEFTSVggQVg4ODc5NkMgU1BJIEZhc3QgRXRoZXJuZXQgTGludXggZHJpdmVy CisgKi8KKworI2RlZmluZSBwcl9mbXQoZm10KQkiYXg4ODc5NmM6ICIgZm10CisKKyNpbmNsdWRl IDxsaW51eC9iaXRtYXAuaD4KKyNpbmNsdWRlIDxsaW51eC9pb3BvbGwuaD4KKyNpbmNsdWRlIDxs aW51eC9waHkuaD4KKyNpbmNsdWRlIDxsaW51eC9uZXRkZXZpY2UuaD4KKworI2luY2x1ZGUgImF4 ODg3OTZjX21haW4uaCIKKyNpbmNsdWRlICJheDg4Nzk2Y19pb2N0bC5oIgorCitzdGF0aWMgY29u c3QgY2hhciBheDg4Nzk2Y19wcml2X2ZsYWdfbmFtZXNbXVtFVEhfR1NUUklOR19MRU5dID0gewor CSJTUElDb21wcmVzc2lvbiIsCit9OworCitzdGF0aWMgdm9pZAorYXg4ODc5NmNfZ2V0X2Rydmlu Zm8oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHN0cnVjdCBldGh0b29sX2RydmluZm8gKmluZm8p Cit7CisJLyogSW5oZXJpdCBzdGFuZGFyZCBkZXZpY2UgaW5mbyAqLworCXN0cm5jcHkoaW5mby0+ ZHJpdmVyLCBEUlZfTkFNRSwgc2l6ZW9mKGluZm8tPmRyaXZlcikpOworfQorCitzdGF0aWMgdTMy IGF4ODg3OTZjX2dldF9tc2dsZXZlbChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldikKK3sKKwlzdHJ1 Y3QgYXg4ODc5NmNfZGV2aWNlICpheF9sb2NhbCA9IHRvX2F4ODg3OTZjX2RldmljZShuZGV2KTsK KworCXJldHVybiBheF9sb2NhbC0+bXNnX2VuYWJsZTsKK30KKworc3RhdGljIHZvaWQgYXg4ODc5 NmNfc2V0X21zZ2xldmVsKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgbGV2ZWwpCit7CisJ c3RydWN0IGF4ODg3OTZjX2RldmljZSAqYXhfbG9jYWwgPSB0b19heDg4Nzk2Y19kZXZpY2UobmRl dik7CisKKwlheF9sb2NhbC0+bXNnX2VuYWJsZSA9IGxldmVsOworfQorCitzdGF0aWMgdm9pZAor YXg4ODc5NmNfZ2V0X3BhdXNlcGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHN0cnVjdCBl dGh0b29sX3BhdXNlcGFyYW0gKnBhdXNlKQoreworCXN0cnVjdCBheDg4Nzk2Y19kZXZpY2UgKmF4 X2xvY2FsID0gdG9fYXg4ODc5NmNfZGV2aWNlKG5kZXYpOworCisJcGF1c2UtPnR4X3BhdXNlID0g ISEoYXhfbG9jYWwtPmZsb3djdHJsICYgQVhfRkNfVFgpOworCXBhdXNlLT5yeF9wYXVzZSA9ICEh KGF4X2xvY2FsLT5mbG93Y3RybCAmIEFYX0ZDX1JYKTsKKwlwYXVzZS0+YXV0b25lZyA9IChheF9s b2NhbC0+Zmxvd2N0cmwgJiBBWF9GQ19BTkVHKSA/CisJCUFVVE9ORUdfRU5BQkxFIDoKKwkJQVVU T05FR19ESVNBQkxFOworfQorCitzdGF0aWMgaW50CitheDg4Nzk2Y19zZXRfcGF1c2VwYXJhbShz dHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgc3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbSAqcGF1c2Up Cit7CisJc3RydWN0IGF4ODg3OTZjX2RldmljZSAqYXhfbG9jYWwgPSB0b19heDg4Nzk2Y19kZXZp Y2UobmRldik7CisJaW50IGZjOworCisJLyogVGhlIGZvbGxvd2luZyBsb2dpYyBjb21lcyBmcm9t IHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbSgpICovCisJZmMgPSBwYXVzZS0+dHhfcGF1 c2UgPyBBWF9GQ19UWCA6IDA7CisJZmMgfD0gcGF1c2UtPnJ4X3BhdXNlID8gQVhfRkNfUlggOiAw OworCWZjIHw9IHBhdXNlLT5hdXRvbmVnID8gQVhfRkNfQU5FRyA6IDA7CisKKwlheF9sb2NhbC0+ Zmxvd2N0cmwgPSBmYzsKKworCWlmIChwYXVzZS0+YXV0b25lZykgeworCQlwaHlfc2V0X2FzeW1f cGF1c2UoYXhfbG9jYWwtPnBoeWRldiwgcGF1c2UtPnR4X3BhdXNlLAorCQkJCSAgIHBhdXNlLT5y eF9wYXVzZSk7CisJfSBlbHNlIHsKKwkJaW50IG1hY2NyID0gMDsKKworCQlwaHlfc2V0X2FzeW1f cGF1c2UoYXhfbG9jYWwtPnBoeWRldiwgMCwgMCk7CisJCW1hY2NyIHw9IChheF9sb2NhbC0+Zmxv d2N0cmwgJiBBWF9GQ19SWCkgPyBNQUNDUl9SWEZDX0VOQUJMRSA6IDA7CisJCW1hY2NyIHw9IChh eF9sb2NhbC0+Zmxvd2N0cmwgJiBBWF9GQ19UWCkgPyBNQUNDUl9UWEZDX0VOQUJMRSA6IDA7CisK KwkJbXV0ZXhfbG9jaygmYXhfbG9jYWwtPnNwaV9sb2NrKTsKKworCQltYWNjciB8PSBBWF9SRUFE KCZheF9sb2NhbC0+YXhfc3BpLCBQMF9NQUNDUikgJgorCQkJfihNQUNDUl9UWEZDX0VOQUJMRSB8 IE1BQ0NSX1JYRkNfRU5BQkxFKTsKKwkJQVhfV1JJVEUoJmF4X2xvY2FsLT5heF9zcGksIG1hY2Ny LCBQMF9NQUNDUik7CisKKwkJbXV0ZXhfdW5sb2NrKCZheF9sb2NhbC0+c3BpX2xvY2spOworCX0K KworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGF4ODg3OTZjX2dldF9yZWdzX2xlbihzdHJ1 Y3QgbmV0X2RldmljZSAqbmRldikKK3sKKwlyZXR1cm4gQVg4ODc5NkNfUkVHRFVNUF9MRU4gKyBB WDg4Nzk2Q19QSFlfUkVHRFVNUF9MRU47Cit9CisKK3N0YXRpYyB2b2lkCitheDg4Nzk2Y19nZXRf cmVncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgc3RydWN0IGV0aHRvb2xfcmVncyAqcmVncywg dm9pZCAqX3ApCit7CisJc3RydWN0IGF4ODg3OTZjX2RldmljZSAqYXhfbG9jYWwgPSB0b19heDg4 Nzk2Y19kZXZpY2UobmRldik7CisJaW50IG9mZnNldCwgaTsKKwl1MTYgKnAgPSBfcDsKKworCW1l bXNldChwLCAwLCBheDg4Nzk2Y19nZXRfcmVnc19sZW4obmRldikpOworCisJbXV0ZXhfbG9jaygm YXhfbG9jYWwtPnNwaV9sb2NrKTsKKworCWZvciAob2Zmc2V0ID0gMDsgb2Zmc2V0IDwgQVg4ODc5 NkNfUkVHRFVNUF9MRU47IG9mZnNldCArPSAyKSB7CisJCWlmICghdGVzdF9iaXQob2Zmc2V0IC8g MiwgYXg4ODc5NmNfbm9fcmVnc19tYXNrKSkKKwkJCSpwID0gQVhfUkVBRCgmYXhfbG9jYWwtPmF4 X3NwaSwgb2Zmc2V0KTsKKwkJcCsrOworCX0KKworCW11dGV4X3VubG9jaygmYXhfbG9jYWwtPnNw aV9sb2NrKTsKKworCWZvciAoaSA9IDA7IGkgPCBBWDg4Nzk2Q19QSFlfUkVHRFVNUF9MRU4gLyAy OyBpKyspIHsKKwkJKnAgPSBwaHlfcmVhZChheF9sb2NhbC0+cGh5ZGV2LCBpKTsKKwkJcCsrOwor CX0KK30KKworc3RhdGljIHZvaWQKK2F4ODg3OTZjX2dldF9zdHJpbmdzKHN0cnVjdCBuZXRfZGV2 aWNlICpuZGV2LCB1MzIgc3RyaW5nc2V0LCB1OCAqZGF0YSkKK3sKKwlzd2l0Y2ggKHN0cmluZ3Nl dCkgeworCWNhc2UgRVRIX1NTX1BSSVZfRkxBR1M6CisJCW1lbWNweShkYXRhLCBheDg4Nzk2Y19w cml2X2ZsYWdfbmFtZXMsCisJCSAgICAgICBzaXplb2YoYXg4ODc5NmNfcHJpdl9mbGFnX25hbWVz KSk7CisJCWJyZWFrOworCX0KK30KKworc3RhdGljIGludAorYXg4ODc5NmNfZ2V0X3NzZXRfY291 bnQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIGludCBzdHJpbmdzZXQpCit7CisJaW50IHJldCA9 IDA7CisKKwlzd2l0Y2ggKHN0cmluZ3NldCkgeworCWNhc2UgRVRIX1NTX1BSSVZfRkxBR1M6CisJ CXJldCA9IEFSUkFZX1NJWkUoYXg4ODc5NmNfcHJpdl9mbGFnX25hbWVzKTsKKwkJYnJlYWs7CisJ ZGVmYXVsdDoKKwkJcmV0ID0gLUVPUE5PVFNVUFA7CisJfQorCisJcmV0dXJuIHJldDsKK30KKwor c3RhdGljIGludCBheDg4Nzk2Y19zZXRfcHJpdl9mbGFncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRl diwgdTMyIGZsYWdzKQoreworCXN0cnVjdCBheDg4Nzk2Y19kZXZpY2UgKmF4X2xvY2FsID0gdG9f YXg4ODc5NmNfZGV2aWNlKG5kZXYpOworCisJaWYgKGZsYWdzICYgfkFYX1BSSVZfRkxBR1NfTUFT SykKKwkJcmV0dXJuIC1FT1BOT1RTVVBQOworCisJaWYgKChheF9sb2NhbC0+cHJpdl9mbGFncyBe IGZsYWdzKSAmIEFYX0NBUF9DT01QKQorCQlpZiAobmV0aWZfcnVubmluZyhuZGV2KSkKKwkJCXJl dHVybiAtRUJVU1k7CisKKwlheF9sb2NhbC0+cHJpdl9mbGFncyA9IGZsYWdzOworCisJcmV0dXJu IDA7Cit9CisKK3N0YXRpYyB1MzIgYXg4ODc5NmNfZ2V0X3ByaXZfZmxhZ3Moc3RydWN0IG5ldF9k ZXZpY2UgKm5kZXYpCit7CisJc3RydWN0IGF4ODg3OTZjX2RldmljZSAqYXhfbG9jYWwgPSB0b19h eDg4Nzk2Y19kZXZpY2UobmRldik7CisKKwlyZXR1cm4gYXhfbG9jYWwtPnByaXZfZmxhZ3M7Cit9 CisKK2ludCBheDg4Nzk2Y19tZGlvX3JlYWQoc3RydWN0IG1paV9idXMgKm1kaW9idXMsIGludCBw aHlfaWQsIGludCBsb2MpCit7CisJc3RydWN0IGF4ODg3OTZjX2RldmljZSAqYXhfbG9jYWwgPSBt ZGlvYnVzLT5wcml2OworCWludCByZXQ7CisKKwltdXRleF9sb2NrKCZheF9sb2NhbC0+c3BpX2xv Y2spOworCUFYX1dSSVRFKCZheF9sb2NhbC0+YXhfc3BpLCBNRElPQ1JfUkFERFIobG9jKQorCQkJ fCBNRElPQ1JfRkFERFIocGh5X2lkKSB8IE1ESU9DUl9SRUFELCBQMl9NRElPQ1IpOworCisJcmV0 ID0gcmVhZF9wb2xsX3RpbWVvdXQoQVhfUkVBRCwgcmV0LAorCQkJCShyZXQgIT0gMCksCisJCQkJ MCwgamlmZmllc190b191c2VjcyhIWiAvIDEwMCksIGZhbHNlLAorCQkJCSZheF9sb2NhbC0+YXhf c3BpLCBQMl9NRElPQ1IpOworCWlmICghcmV0KQorCQlyZXQgPSBBWF9SRUFEKCZheF9sb2NhbC0+ YXhfc3BpLCBQMl9NRElPRFIpOworCisJbXV0ZXhfdW5sb2NrKCZheF9sb2NhbC0+c3BpX2xvY2sp OworCisJcmV0dXJuIHJldDsKK30KKworaW50CitheDg4Nzk2Y19tZGlvX3dyaXRlKHN0cnVjdCBt aWlfYnVzICptZGlvYnVzLCBpbnQgcGh5X2lkLCBpbnQgbG9jLCB1MTYgdmFsKQoreworCXN0cnVj dCBheDg4Nzk2Y19kZXZpY2UgKmF4X2xvY2FsID0gbWRpb2J1cy0+cHJpdjsKKwlpbnQgcmV0Owor CisJbXV0ZXhfbG9jaygmYXhfbG9jYWwtPnNwaV9sb2NrKTsKKwlBWF9XUklURSgmYXhfbG9jYWwt PmF4X3NwaSwgdmFsLCBQMl9NRElPRFIpOworCisJQVhfV1JJVEUoJmF4X2xvY2FsLT5heF9zcGks CisJCSBNRElPQ1JfUkFERFIobG9jKSB8IE1ESU9DUl9GQUREUihwaHlfaWQpCisJCSB8IE1ESU9D Ul9XUklURSwgUDJfTURJT0NSKTsKKworCXJldCA9IHJlYWRfcG9sbF90aW1lb3V0KEFYX1JFQUQs IHJldCwKKwkJCQkoKHJldCAmIE1ESU9DUl9WQUxJRCkgIT0gMCksIDAsCisJCQkJamlmZmllc190 b191c2VjcyhIWiAvIDEwMCksIGZhbHNlLAorCQkJCSZheF9sb2NhbC0+YXhfc3BpLCBQMl9NRElP Q1IpOworCW11dGV4X3VubG9jaygmYXhfbG9jYWwtPnNwaV9sb2NrKTsKKworCXJldHVybiByZXQ7 Cit9CisKK2NvbnN0IHN0cnVjdCBldGh0b29sX29wcyBheDg4Nzk2Y19ldGh0b29sX29wcyA9IHsK KwkuZ2V0X2RydmluZm8JCT0gYXg4ODc5NmNfZ2V0X2RydmluZm8sCisJLmdldF9saW5rCQk9IGV0 aHRvb2xfb3BfZ2V0X2xpbmssCisJLmdldF9tc2dsZXZlbAkJPSBheDg4Nzk2Y19nZXRfbXNnbGV2 ZWwsCisJLnNldF9tc2dsZXZlbAkJPSBheDg4Nzk2Y19zZXRfbXNnbGV2ZWwsCisJLmdldF9saW5r X2tzZXR0aW5ncwk9IHBoeV9ldGh0b29sX2dldF9saW5rX2tzZXR0aW5ncywKKwkuc2V0X2xpbmtf a3NldHRpbmdzCT0gcGh5X2V0aHRvb2xfc2V0X2xpbmtfa3NldHRpbmdzLAorCS5ud2F5X3Jlc2V0 CQk9IHBoeV9ldGh0b29sX253YXlfcmVzZXQsCisJLmdldF9wYXVzZXBhcmFtCQk9IGF4ODg3OTZj X2dldF9wYXVzZXBhcmFtLAorCS5zZXRfcGF1c2VwYXJhbQkJPSBheDg4Nzk2Y19zZXRfcGF1c2Vw YXJhbSwKKwkuZ2V0X3JlZ3NfbGVuCQk9IGF4ODg3OTZjX2dldF9yZWdzX2xlbiwKKwkuZ2V0X3Jl Z3MJCT0gYXg4ODc5NmNfZ2V0X3JlZ3MsCisJLmdldF9zdHJpbmdzCQk9IGF4ODg3OTZjX2dldF9z dHJpbmdzLAorCS5nZXRfc3NldF9jb3VudAkJPSBheDg4Nzk2Y19nZXRfc3NldF9jb3VudCwKKwku Z2V0X3ByaXZfZmxhZ3MJCT0gYXg4ODc5NmNfZ2V0X3ByaXZfZmxhZ3MsCisJLnNldF9wcml2X2Zs YWdzCQk9IGF4ODg3OTZjX3NldF9wcml2X2ZsYWdzLAorfTsKKworaW50IGF4ODg3OTZjX2lvY3Rs KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3QgaWZyZXEgKmlmciwgaW50IGNtZCkKK3sK KwlpbnQgcmV0OworCisJcmV0ID0gcGh5X21paV9pb2N0bChuZGV2LT5waHlkZXYsIGlmciwgY21k KTsKKworCXJldHVybiByZXQ7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9h c2l4L2F4ODg3OTZjX2lvY3RsLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZj X2lvY3RsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zNGQyYTdk Y2M1ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3 OTZjX2lvY3RsLmgKQEAgLTAsMCArMSwyNiBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEdQTC0yLjAtb25seSAqLworLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMCBBU0lYIEVsZWN0cm9u aWNzIENvcnBvcmF0aW9uCisgKiBDb3B5cmlnaHQgKGMpIDIwMjAgU2Ftc3VuZyBFbGVjdHJvbmlj cyBDby4sIEx0ZC4KKyAqCisgKiBBU0lYIEFYODg3OTZDIFNQSSBGYXN0IEV0aGVybmV0IExpbnV4 IGRyaXZlcgorICovCisKKyNpZm5kZWYgX0FYODg3OTZDX0lPQ1RMX0gKKyNkZWZpbmUgX0FYODg3 OTZDX0lPQ1RMX0gKKworI2luY2x1ZGUgPGxpbnV4L2V0aHRvb2wuaD4KKyNpbmNsdWRlIDxsaW51 eC9uZXRkZXZpY2UuaD4KKworI2luY2x1ZGUgImF4ODg3OTZjX21haW4uaCIKKworZXh0ZXJuIGNv bnN0IHN0cnVjdCBldGh0b29sX29wcyBheDg4Nzk2Y19ldGh0b29sX29wczsKKworYm9vbCBheDg4 Nzk2Y19jaGVja19wb3dlcihjb25zdCBzdHJ1Y3QgYXg4ODc5NmNfZGV2aWNlICpheF9sb2NhbCk7 Citib29sIGF4ODg3OTZjX2NoZWNrX3Bvd2VyX2FuZF93YWtlKHN0cnVjdCBheDg4Nzk2Y19kZXZp Y2UgKmF4X2xvY2FsKTsKK3ZvaWQgYXg4ODc5NmNfc2V0X3Bvd2VyX3NhdmluZyhzdHJ1Y3QgYXg4 ODc5NmNfZGV2aWNlICpheF9sb2NhbCwgdTggcHNfbGV2ZWwpOworaW50IGF4ODg3OTZjX21kaW9f cmVhZChzdHJ1Y3QgbWlpX2J1cyAqbWRpb2J1cywgaW50IHBoeV9pZCwgaW50IGxvYyk7CitpbnQg YXg4ODc5NmNfbWRpb193cml0ZShzdHJ1Y3QgbWlpX2J1cyAqbWRpb2J1cywgaW50IHBoeV9pZCwg aW50IGxvYywgdTE2IHZhbCk7CitpbnQgYXg4ODc5NmNfaW9jdGwoc3RydWN0IG5ldF9kZXZpY2Ug KmRldiwgc3RydWN0IGlmcmVxICppZnIsIGludCBjbWQpOworCisjZW5kaWYKZGlmZiAtLWdpdCBh L2RyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5jIGIvZHJpdmVycy9uZXQv ZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwLi40NmM5NGYyOWRmOWYKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL25l dC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYwpAQCAtMCwwICsxLDExNDkgQEAKKy8vIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKKy8qCisgKiBDb3B5cmlnaHQgKGMp IDIwMTAgQVNJWCBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbgorICogQ29weXJpZ2h0IChjKSAyMDIw IFNhbXN1bmcgRWxlY3Ryb25pY3MgQ28uLCBMdGQuCisgKgorICogQVNJWCBBWDg4Nzk2QyBTUEkg RmFzdCBFdGhlcm5ldCBMaW51eCBkcml2ZXIKKyAqLworCisjZGVmaW5lIHByX2ZtdChmbXQpCSJh eDg4Nzk2YzogIiBmbXQKKworI2luY2x1ZGUgImF4ODg3OTZjX21haW4uaCIKKyNpbmNsdWRlICJh eDg4Nzk2Y19pb2N0bC5oIgorCisjaW5jbHVkZSA8bGludXgvYml0bWFwLmg+CisjaW5jbHVkZSA8 bGludXgvZXRoZXJkZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9pb3BvbGwuaD4KKyNpbmNsdWRl IDxsaW51eC9sb2NrZGVwLmg+CisjaW5jbHVkZSA8bGludXgvbWRpby5oPgorI2luY2x1ZGUgPGxp bnV4L21pbm1heC5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4 L25ldGRldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L29mLmg+CisjaW5jbHVkZSA8bGludXgvcGh5 Lmg+CisjaW5jbHVkZSA8bGludXgvc2tidWZmLmg+CisjaW5jbHVkZSA8bGludXgvc3BpL3NwaS5o PgorCitzdGF0aWMgaW50IGNvbXAgPSBJU19FTkFCTEVEKENPTkZJR19TUElfQVg4ODc5NkNfQ09N UFJFU1NJT04pOworc3RhdGljIGludCBtc2dfZW5hYmxlID0gTkVUSUZfTVNHX1BST0JFIHwKKwkJ CU5FVElGX01TR19MSU5LIHwKKwkJCU5FVElGX01TR19SWF9FUlIgfAorCQkJTkVUSUZfTVNHX1RY X0VSUjsKKworc3RhdGljIGNoYXIgKm5vX3JlZ3NfbGlzdCA9ICI4MDAxODAwMSxlMTkxODAwMSw4 MDAxYTAwMSxmYzBkMDAwMCI7Cit1bnNpZ25lZCBsb25nIGF4ODg3OTZjX25vX3JlZ3NfbWFza1tB WDg4Nzk2Q19SRUdEVU1QX0xFTiAvIChzaXplb2YodW5zaWduZWQgbG9uZykgKiA4KV07CisKK21v ZHVsZV9wYXJhbShtc2dfZW5hYmxlLCBpbnQsIDA0NDQpOworTU9EVUxFX1BBUk1fREVTQyhtc2df ZW5hYmxlLCAiTWVzc2FnZSBtYXNrIChzZWUgbGludXgvbmV0ZGV2aWNlLmggZm9yIGJpdG1hcCki KTsKKworc3RhdGljIGludCBheDg4Nzk2Y19zb2Z0X3Jlc2V0KHN0cnVjdCBheDg4Nzk2Y19kZXZp Y2UgKmF4X2xvY2FsKQoreworCXUxNiB0ZW1wOworCWludCByZXQ7CisKKwlsb2NrZGVwX2Fzc2Vy dF9oZWxkKCZheF9sb2NhbC0+c3BpX2xvY2spOworCisJQVhfV1JJVEUoJmF4X2xvY2FsLT5heF9z cGksIFBTUl9SRVNFVCwgUDBfUFNSKTsKKwlBWF9XUklURSgmYXhfbG9jYWwtPmF4X3NwaSwgUFNS X1JFU0VUX0NMUiwgUDBfUFNSKTsKKworCXJldCA9IHJlYWRfcG9sbF90aW1lb3V0KEFYX1JFQUQs IHJldCwKKwkJCQkocmV0ICYgUFNSX0RFVl9SRUFEWSksCisJCQkJMCwgamlmZmllc190b191c2Vj cygxNjAgKiBIWiAvIDEwMDApLCBmYWxzZSwKKwkJCQkmYXhfbG9jYWwtPmF4X3NwaSwgUDBfUFNS KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJdGVtcCA9IEFYX1JFQUQoJmF4X2xvY2Fs LT5heF9zcGksIFA0X1NQSUNSKTsKKwlpZiAoYXhfbG9jYWwtPnByaXZfZmxhZ3MgJiBBWF9DQVBf Q09NUCkgeworCQlBWF9XUklURSgmYXhfbG9jYWwtPmF4X3NwaSwKKwkJCSAodGVtcCB8IFNQSUNS X1JDRU4gfCBTUElDUl9RQ0VOKSwgUDRfU1BJQ1IpOworCQlheF9sb2NhbC0+YXhfc3BpLmNvbXAg PSAxOworCX0gZWxzZSB7CisJCUFYX1dSSVRFKCZheF9sb2NhbC0+YXhfc3BpLAorCQkJICh0ZW1w ICYgfihTUElDUl9SQ0VOIHwgU1BJQ1JfUUNFTikpLCBQNF9TUElDUik7CisJCWF4X2xvY2FsLT5h eF9zcGkuY29tcCA9IDA7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYXg4ODc5 NmNfcmVsb2FkX2VlcHJvbShzdHJ1Y3QgYXg4ODc5NmNfZGV2aWNlICpheF9sb2NhbCkKK3sKKwlp bnQgcmV0OworCisJbG9ja2RlcF9hc3NlcnRfaGVsZCgmYXhfbG9jYWwtPnNwaV9sb2NrKTsKKwor CUFYX1dSSVRFKCZheF9sb2NhbC0+YXhfc3BpLCBFRUNSX1JFTE9BRCwgUDNfRUVDUik7CisKKwly ZXQgPSByZWFkX3BvbGxfdGltZW91dChBWF9SRUFELCByZXQsCisJCQkJKHJldCAmIFBTUl9ERVZf UkVBRFkpLAorCQkJCTAsIGppZmZpZXNfdG9fdXNlY3MoMiAqIEhaIC8gMTAwMCksIGZhbHNlLAor CQkJCSZheF9sb2NhbC0+YXhfc3BpLCBQMF9QU1IpOworCWlmIChyZXQpIHsKKwkJZGV2X2Vycigm YXhfbG9jYWwtPnNwaS0+ZGV2LAorCQkJInRpbWVvdXQgd2FpdGluZyBmb3IgcmVsb2FkIGVlcHJv bVxuIik7CisJCXJldHVybiByZXQ7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lk IGF4ODg3OTZjX3NldF9od19tdWx0aWNhc3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpCit7CisJ c3RydWN0IGF4ODg3OTZjX2RldmljZSAqYXhfbG9jYWwgPSB0b19heDg4Nzk2Y19kZXZpY2UobmRl dik7CisJaW50IG1jX2NvdW50ID0gbmV0ZGV2X21jX2NvdW50KG5kZXYpOworCXUxNiByeF9jdGwg PSBSWENSX0FCOworCisJbG9ja2RlcF9hc3NlcnRfaGVsZCgmYXhfbG9jYWwtPnNwaV9sb2NrKTsK KworCW1lbXNldChheF9sb2NhbC0+bXVsdGlfZmlsdGVyLCAwLCBBWF9NQ0FTVF9GSUxURVJfU0la RSk7CisKKwlpZiAobmRldi0+ZmxhZ3MgJiBJRkZfUFJPTUlTQykgeworCQlyeF9jdGwgfD0gUlhD Ul9QUk87CisKKwl9IGVsc2UgaWYgKG5kZXYtPmZsYWdzICYgSUZGX0FMTE1VTFRJIHx8IG1jX2Nv dW50ID4gQVhfTUFYX01DQVNUKSB7CisJCXJ4X2N0bCB8PSBSWENSX0FNQUxMOworCisJfSBlbHNl IGlmIChtY19jb3VudCA9PSAwKSB7CisJCS8qIGp1c3QgYnJvYWRjYXN0IGFuZCBkaXJlY3RlZCAq LworCX0gZWxzZSB7CisJCXUzMiBjcmNfYml0czsKKwkJaW50IGk7CisJCXN0cnVjdCBuZXRkZXZf aHdfYWRkciAqaGE7CisKKwkJbmV0ZGV2X2Zvcl9lYWNoX21jX2FkZHIoaGEsIG5kZXYpIHsKKwkJ CWNyY19iaXRzID0gZXRoZXJfY3JjKEVUSF9BTEVOLCBoYS0+YWRkcik7CisJCQlheF9sb2NhbC0+ bXVsdGlfZmlsdGVyW2NyY19iaXRzID4+IDI5XSB8PQorCQkJCQkJKDEgPDwgKChjcmNfYml0cyA+ PiAyNikgJiA3KSk7CisJCX0KKworCQlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7CisJCQlBWF9X UklURSgmYXhfbG9jYWwtPmF4X3NwaSwKKwkJCQkgKChheF9sb2NhbC0+bXVsdGlfZmlsdGVyW2kg KiAyICsgMV0gPDwgOCkgfAorCQkJCSAgYXhfbG9jYWwtPm11bHRpX2ZpbHRlcltpICogMl0pLCBQ M19NRkFSKGkpKTsKKwkJfQorCX0KKworCUFYX1dSSVRFKCZheF9sb2NhbC0+YXhfc3BpLCByeF9j dGwsIFAyX1JYQ1IpOworfQorCitzdGF0aWMgdm9pZCBheDg4Nzk2Y19zZXRfbWFjX2FkZHIoc3Ry dWN0IG5ldF9kZXZpY2UgKm5kZXYpCit7CisJc3RydWN0IGF4ODg3OTZjX2RldmljZSAqYXhfbG9j YWwgPSB0b19heDg4Nzk2Y19kZXZpY2UobmRldik7CisKKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZh eF9sb2NhbC0+c3BpX2xvY2spOworCisJQVhfV1JJVEUoJmF4X2xvY2FsLT5heF9zcGksICgodTE2 KShuZGV2LT5kZXZfYWRkcls0XSA8PCA4KSB8CisJCQkodTE2KW5kZXYtPmRldl9hZGRyWzVdKSwg UDNfTUFDQVNSMCk7CisJQVhfV1JJVEUoJmF4X2xvY2FsLT5heF9zcGksICgodTE2KShuZGV2LT5k ZXZfYWRkclsyXSA8PCA4KSB8CisJCQkodTE2KW5kZXYtPmRldl9hZGRyWzNdKSwgUDNfTUFDQVNS MSk7CisJQVhfV1JJVEUoJmF4X2xvY2FsLT5heF9zcGksICgodTE2KShuZGV2LT5kZXZfYWRkclsw XSA8PCA4KSB8CisJCQkodTE2KW5kZXYtPmRldl9hZGRyWzFdKSwgUDNfTUFDQVNSMik7Cit9CisK K3N0YXRpYyB2b2lkIGF4ODg3OTZjX2xvYWRfbWFjX2FkZHIoc3RydWN0IG5ldF9kZXZpY2UgKm5k ZXYpCit7CisJc3RydWN0IGF4ODg3OTZjX2RldmljZSAqYXhfbG9jYWwgPSB0b19heDg4Nzk2Y19k ZXZpY2UobmRldik7CisJdTE2IHRlbXA7CisKKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZheF9sb2Nh bC0+c3BpX2xvY2spOworCisJLyogVHJ5IHRoZSBkZXZpY2UgdHJlZSBmaXJzdCAqLworCWlmICgh ZXRoX3BsYXRmb3JtX2dldF9tYWNfYWRkcmVzcygmYXhfbG9jYWwtPnNwaS0+ZGV2LCBuZGV2LT5k ZXZfYWRkcikgJiYKKwkgICAgaXNfdmFsaWRfZXRoZXJfYWRkcihuZGV2LT5kZXZfYWRkcikpIHsK KwkJaWYgKG5ldGlmX21zZ19wcm9iZShheF9sb2NhbCkpCisJCQlkZXZfaW5mbygmYXhfbG9jYWwt PnNwaS0+ZGV2LAorCQkJCSAiTUFDIGFkZHJlc3MgcmVhZCBmcm9tIGRldmljZSB0cmVlXG4iKTsK KwkJcmV0dXJuOworCX0KKworCS8qIFJlYWQgdGhlIE1BQyBhZGRyZXNzIGZyb20gQVg4ODc5NkMg Ki8KKwl0ZW1wID0gQVhfUkVBRCgmYXhfbG9jYWwtPmF4X3NwaSwgUDNfTUFDQVNSMCk7CisJbmRl di0+ZGV2X2FkZHJbNV0gPSAodTgpdGVtcDsKKwluZGV2LT5kZXZfYWRkcls0XSA9ICh1OCkodGVt cCA+PiA4KTsKKworCXRlbXAgPSBBWF9SRUFEKCZheF9sb2NhbC0+YXhfc3BpLCBQM19NQUNBU1Ix KTsKKwluZGV2LT5kZXZfYWRkclszXSA9ICh1OCl0ZW1wOworCW5kZXYtPmRldl9hZGRyWzJdID0g KHU4KSh0ZW1wID4+IDgpOworCisJdGVtcCA9IEFYX1JFQUQoJmF4X2xvY2FsLT5heF9zcGksIFAz X01BQ0FTUjIpOworCW5kZXYtPmRldl9hZGRyWzFdID0gKHU4KXRlbXA7CisJbmRldi0+ZGV2X2Fk ZHJbMF0gPSAodTgpKHRlbXAgPj4gOCk7CisKKwlpZiAoaXNfdmFsaWRfZXRoZXJfYWRkcihuZGV2 LT5kZXZfYWRkcikpIHsKKwkJaWYgKG5ldGlmX21zZ19wcm9iZShheF9sb2NhbCkpCisJCQlkZXZf aW5mbygmYXhfbG9jYWwtPnNwaS0+ZGV2LAorCQkJCSAiTUFDIGFkZHJlc3MgcmVhZCBmcm9tIEFT SVggY2hpcFxuIik7CisJCXJldHVybjsKKwl9CisKKwkvKiBVc2UgcmFuZG9tIGFkZHJlc3MgaWYg bm9uZSBmb3VuZCAqLworCWlmIChuZXRpZl9tc2dfcHJvYmUoYXhfbG9jYWwpKQorCQlkZXZfaW5m bygmYXhfbG9jYWwtPnNwaS0+ZGV2LCAiVXNlIHJhbmRvbSBNQUMgYWRkcmVzc1xuIik7CisJZXRo X2h3X2FkZHJfcmFuZG9tKG5kZXYpOworfQorCitzdGF0aWMgdm9pZCBheDg4Nzk2Y19wcm9jX3R4 X2hkcihzdHJ1Y3QgdHhfcGt0X2luZm8gKmluZm8sIHU4IGlwX3N1bW1lZCkKK3sKKwl1MTYgcGt0 X2xlbl9iYXIgPSAofmluZm8tPnBrdF9sZW4gJiBUWF9IRFJfU09QX1BLVExFTkJBUik7CisKKwkv KiBQcmVwYXJlIFNPUCBoZWFkZXIgKi8KKwlpbmZvLT5zb3AuZmxhZ3NfbGVuID0gaW5mby0+cGt0 X2xlbiB8CisJCSgoaXBfc3VtbWVkID09IENIRUNLU1VNX05PTkUpIHx8CisJCSAoaXBfc3VtbWVk ID09IENIRUNLU1VNX1VOTkVDRVNTQVJZKSA/IFRYX0hEUl9TT1BfRElDRiA6IDApOworCisJaW5m by0+c29wLnNlcV9sZW5iYXIgPSAoKGluZm8tPnNlcV9udW0gPDwgMTEpICYgVFhfSERSX1NPUF9T RVFOVU0pCisJCQkJfCBwa3RfbGVuX2JhcjsKKwljcHVfdG9fYmUxNnMoJmluZm8tPnNvcC5mbGFn c19sZW4pOworCWNwdV90b19iZTE2cygmaW5mby0+c29wLnNlcV9sZW5iYXIpOworCisJLyogUHJl cGFyZSBTZWdtZW50IGhlYWRlciAqLworCWluZm8tPnNlZy5mbGFnc19zZXFudW1fc2VnbGVuID0g VFhfSERSX1NFR19GUyB8IFRYX0hEUl9TRUdfTFMKKwkJCQkJCXwgaW5mby0+cGt0X2xlbjsKKwor CWluZm8tPnNlZy5lb19zb19zZWdsZW5iYXIgPSBwa3RfbGVuX2JhcjsKKworCWNwdV90b19iZTE2 cygmaW5mby0+c2VnLmZsYWdzX3NlcW51bV9zZWdsZW4pOworCWNwdV90b19iZTE2cygmaW5mby0+ c2VnLmVvX3NvX3NlZ2xlbmJhcik7CisKKwkvKiBQcmVwYXJlIEVPUCBoZWFkZXIgKi8KKwlpbmZv LT5lb3Auc2VxX2xlbiA9ICgoaW5mby0+c2VxX251bSA8PCAxMSkgJgorCQkJICAgICBUWF9IRFJf RU9QX1NFUU5VTSkgfCBpbmZvLT5wa3RfbGVuOworCWluZm8tPmVvcC5zZXFiYXJfbGVuYmFyID0g KCh+aW5mby0+c2VxX251bSA8PCAxMSkgJgorCQkJCSAgIFRYX0hEUl9FT1BfU0VRTlVNQkFSKSB8 IHBrdF9sZW5fYmFyOworCisJY3B1X3RvX2JlMTZzKCZpbmZvLT5lb3Auc2VxX2xlbik7CisJY3B1 X3RvX2JlMTZzKCZpbmZvLT5lb3Auc2VxYmFyX2xlbmJhcik7Cit9CisKK3N0YXRpYyBpbnQKK2F4 ODg3OTZjX2NoZWNrX2ZyZWVfcGFnZXMoc3RydWN0IGF4ODg3OTZjX2RldmljZSAqYXhfbG9jYWws IHU4IG5lZWRfcGFnZXMpCit7CisJdTggZnJlZV9wYWdlczsKKwl1MTYgdG1wOworCisJbG9ja2Rl cF9hc3NlcnRfaGVsZCgmYXhfbG9jYWwtPnNwaV9sb2NrKTsKKworCWZyZWVfcGFnZXMgPSBBWF9S RUFEKCZheF9sb2NhbC0+YXhfc3BpLCBQMF9URkJGQ1IpICYgVFhfRlJFRUJVRl9NQVNLOworCWlm IChmcmVlX3BhZ2VzIDwgbmVlZF9wYWdlcykgeworCQkvKiBzY2hlZHVsZSBmcmVlIHBhZ2UgaW50 ZXJydXB0ICovCisJCXRtcCA9IEFYX1JFQUQoJmF4X2xvY2FsLT5heF9zcGksIFAwX1RGQkZDUikK KwkJCQkmIFRGQkZDUl9TQ0hFX0ZSRUVfUEFHRTsKKwkJQVhfV1JJVEUoJmF4X2xvY2FsLT5heF9z cGksIHRtcCB8IFRGQkZDUl9UWF9QQUdFX1NFVCB8CisJCQkJVEZCRkNSX1NFVF9GUkVFX1BBR0Uo bmVlZF9wYWdlcyksCisJCQkJUDBfVEZCRkNSKTsKKwkJcmV0dXJuIC1FTk9NRU07CisJfQorCisJ cmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqCitheDg4Nzk2Y190eF9maXh1 cChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgc3RydWN0IHNrX2J1ZmZfaGVhZCAqcSkKK3sKKwlz dHJ1Y3QgYXg4ODc5NmNfZGV2aWNlICpheF9sb2NhbCA9IHRvX2F4ODg3OTZjX2RldmljZShuZGV2 KTsKKwl1OCBzcGlfbGVuID0gYXhfbG9jYWwtPmF4X3NwaS5jb21wID8gMSA6IDQ7CisJc3RydWN0 IHNrX2J1ZmYgKnNrYjsKKwlzdHJ1Y3QgdHhfcGt0X2luZm8gaW5mbzsKKwlzdHJ1Y3Qgc2tiX2Rh dGEgKmVudHJ5OworCXUxNiBwa3RfbGVuOworCXU4IHBhZGxlbiwgc2VxX251bTsKKwl1OCBuZWVk X3BhZ2VzOworCWludCBoZWFkcm9vbTsKKwlpbnQgdGFpbHJvb207CisKKwlpZiAoc2tiX3F1ZXVl X2VtcHR5KHEpKQorCQlyZXR1cm4gTlVMTDsKKworCXNrYiA9IHNrYl9wZWVrKHEpOworCXBrdF9s ZW4gPSBza2ItPmxlbjsKKwluZWVkX3BhZ2VzID0gKHBrdF9sZW4gKyBUWF9PVkVSSEVBRCArIDEy NykgPj4gNzsKKwlpZiAoYXg4ODc5NmNfY2hlY2tfZnJlZV9wYWdlcyhheF9sb2NhbCwgbmVlZF9w YWdlcykgIT0gMCkKKwkJcmV0dXJuIE5VTEw7CisKKwloZWFkcm9vbSA9IHNrYl9oZWFkcm9vbShz a2IpOworCXRhaWxyb29tID0gc2tiX3RhaWxyb29tKHNrYik7CisJcGFkbGVuID0gcm91bmRfdXAo cGt0X2xlbiwgNCkgLSBwa3RfbGVuOworCXNlcV9udW0gPSArK2F4X2xvY2FsLT5zZXFfbnVtICYg MHgxRjsKKworCWluZm8ucGt0X2xlbiA9IHBrdF9sZW47CisKKwlpZiAoc2tiX2Nsb25lZChza2Ip IHx8CisJICAgIChoZWFkcm9vbSA8IChUWF9PVkVSSEVBRCArIHNwaV9sZW4pKSB8fAorCSAgICAo dGFpbHJvb20gPCAocGFkbGVuICsgVFhfRU9QX1NJWkUpKSkgeworCQlzaXplX3QgaCA9IG1heCgo VFhfT1ZFUkhFQUQgKyBzcGlfbGVuKSAtIGhlYWRyb29tLCAwKTsKKwkJc2l6ZV90IHQgPSBtYXgo KHBhZGxlbiArIFRYX0VPUF9TSVpFKSAtIHRhaWxyb29tLCAwKTsKKworCQlpZiAocHNrYl9leHBh bmRfaGVhZChza2IsIGgsIHQsIEdGUF9LRVJORUwpKQorCQkJcmV0dXJuIE5VTEw7CisJfQorCisJ aW5mby5zZXFfbnVtID0gc2VxX251bTsKKwlheDg4Nzk2Y19wcm9jX3R4X2hkcigmaW5mbywgc2ti LT5pcF9zdW1tZWQpOworCisJLyogU09QIGFuZCBTRUcgaGVhZGVyICovCisJbWVtY3B5KHNrYl9w dXNoKHNrYiwgVFhfT1ZFUkhFQUQpLCAmaW5mby5zb3AsIFRYX09WRVJIRUFEKTsKKworCS8qIFdy aXRlIFNQSSBUWFEgaGVhZGVyICovCisJbWVtY3B5KHNrYl9wdXNoKHNrYiwgc3BpX2xlbiksIGF4 ODg3OTZjX3R4X2NtZF9idWYsIHNwaV9sZW4pOworCisJLyogTWFrZSAzMi1iaXQgYWxpZ25tZW50 ICovCisJc2tiX3B1dChza2IsIHBhZGxlbik7CisKKwkvKiBFT1AgaGVhZGVyICovCisJbWVtY3B5 KHNrYl9wdXQoc2tiLCBUWF9FT1BfU0laRSksICZpbmZvLmVvcCwgVFhfRU9QX1NJWkUpOworCisJ c2tiX3VubGluayhza2IsIHEpOworCisJZW50cnkgPSAoc3RydWN0IHNrYl9kYXRhICopc2tiLT5j YjsKKwltZW1zZXQoZW50cnksIDAsIHNpemVvZigqZW50cnkpKTsKKwllbnRyeS0+bGVuID0gcGt0 X2xlbjsKKworCWlmIChuZXRpZl9tc2dfcGt0ZGF0YShheF9sb2NhbCkpIHsKKwkJY2hhciBwZnhb SUZOQU1TSVogKyA3XTsKKworCQlzbnByaW50ZihwZngsIHNpemVvZihwZngpLCAiJXM6ICAgICAi LCBuZGV2LT5uYW1lKTsKKworCQluZXRkZXZfaW5mbyhuZGV2LCAiVFggcGFja2V0IGxlbiAlZCwg dG90YWwgbGVuICVkLCBzZXEgJWRcbiIsCisJCQkgICAgcGt0X2xlbiwgc2tiLT5sZW4sIHNlcV9u dW0pOworCisJCW5ldGRldl9pbmZvKG5kZXYsICIgIFNQSSBIZWFkZXI6XG4iKTsKKwkJcHJpbnRf aGV4X2R1bXAoS0VSTl9JTkZPLCBwZngsIERVTVBfUFJFRklYX09GRlNFVCwgMTYsIDEsCisJCQkg ICAgICAgc2tiLT5kYXRhLCA0LCAwKTsKKworCQluZXRkZXZfaW5mbyhuZGV2LCAiICBUWCBTT1A6 XG4iKTsKKwkJcHJpbnRfaGV4X2R1bXAoS0VSTl9JTkZPLCBwZngsIERVTVBfUFJFRklYX09GRlNF VCwgMTYsIDEsCisJCQkgICAgICAgc2tiLT5kYXRhICsgNCwgVFhfT1ZFUkhFQUQsIDApOworCisJ CW5ldGRldl9pbmZvKG5kZXYsICIgIFRYIHBhY2tldDpcbiIpOworCQlwcmludF9oZXhfZHVtcChL RVJOX0lORk8sIHBmeCwgRFVNUF9QUkVGSVhfT0ZGU0VULCAxNiwgMSwKKwkJCSAgICAgICBza2It PmRhdGEgKyA0ICsgVFhfT1ZFUkhFQUQsCisJCQkgICAgICAgc2tiLT5sZW4gLSBUWF9FT1BfU0la RSAtIDQgLSBUWF9PVkVSSEVBRCwgMCk7CisKKwkJbmV0ZGV2X2luZm8obmRldiwgIiAgVFggRU9Q OlxuIik7CisJCXByaW50X2hleF9kdW1wKEtFUk5fSU5GTywgcGZ4LCBEVU1QX1BSRUZJWF9PRkZT RVQsIDE2LCAxLAorCQkJICAgICAgIHNrYi0+ZGF0YSArIHNrYi0+bGVuIC0gNCwgNCwgMCk7CisJ fQorCisJcmV0dXJuIHNrYjsKK30KKworc3RhdGljIGludCBheDg4Nzk2Y19oYXJkX3htaXQoc3Ry dWN0IGF4ODg3OTZjX2RldmljZSAqYXhfbG9jYWwpCit7CisJc3RydWN0IGF4ODg3OTZjX3BjcHVf c3RhdHMgKnN0YXRzOworCXN0cnVjdCBza19idWZmICp0eF9za2I7CisJc3RydWN0IHNrYl9kYXRh ICplbnRyeTsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJbG9ja2RlcF9hc3NlcnRfaGVsZCgm YXhfbG9jYWwtPnNwaV9sb2NrKTsKKworCXN0YXRzID0gdGhpc19jcHVfcHRyKGF4X2xvY2FsLT5z dGF0cyk7CisJdHhfc2tiID0gYXg4ODc5NmNfdHhfZml4dXAoYXhfbG9jYWwtPm5kZXYsICZheF9s b2NhbC0+dHhfd2FpdF9xKTsKKworCWlmICghdHhfc2tiKSB7CisJCXRoaXNfY3B1X2luYyhheF9s b2NhbC0+c3RhdHMtPnR4X2Ryb3BwZWQpOworCQlyZXR1cm4gMDsKKwl9CisJZW50cnkgPSAoc3Ry dWN0IHNrYl9kYXRhICopdHhfc2tiLT5jYjsKKworCUFYX1dSSVRFKCZheF9sb2NhbC0+YXhfc3Bp LAorCQkgKFRTTlJfVFhCX1NUQVJUIHwgVFNOUl9QS1RfQ05UKDEpKSwgUDBfVFNOUik7CisKKwlh eHNwaV93cml0ZV90eHEoJmF4X2xvY2FsLT5heF9zcGksIHR4X3NrYi0+ZGF0YSwgdHhfc2tiLT5s ZW4pOworCisJaWYgKCgoQVhfUkVBRCgmYXhfbG9jYWwtPmF4X3NwaSwgUDBfVFNOUikgJiBUWE5S X1RYQl9JRExFKSA9PSAwKSB8fAorCSAgICAoKElTUl9UWEVSUiAmIEFYX1JFQUQoJmF4X2xvY2Fs LT5heF9zcGksIFAwX0lTUikpICE9IDApKSB7CisJCS8qIEFjayB0eCBlcnJvciBpbnQgKi8KKwkJ QVhfV1JJVEUoJmF4X2xvY2FsLT5heF9zcGksIElTUl9UWEVSUiwgUDBfSVNSKTsKKworCQl0aGlz X2NwdV9pbmMoYXhfbG9jYWwtPnN0YXRzLT50eF9kcm9wcGVkKTsKKworCQlpZiAobmV0X3JhdGVs aW1pdCgpKQorCQkJbmV0aWZfZXJyKGF4X2xvY2FsLCB0eF9lcnIsIGF4X2xvY2FsLT5uZGV2LAor CQkJCSAgIlRYIEZJRk8gZXJyb3IsIHJlLWluaXRpYWxpemUgdGhlIFRYIGJyaWRnZVxuIik7CisK KwkJLyogUmVpbml0aWFsIHR4IGJyaWRnZSAqLworCQlBWF9XUklURSgmYXhfbG9jYWwtPmF4X3Nw aSwgVFhOUl9UWEJfUkVJTklUIHwKKwkJCUFYX1JFQUQoJmF4X2xvY2FsLT5heF9zcGksIFAwX1RT TlIpLCBQMF9UU05SKTsKKwkJYXhfbG9jYWwtPnNlcV9udW0gPSAwOworCX0gZWxzZSB7CisJCWZs YWdzID0gdTY0X3N0YXRzX3VwZGF0ZV9iZWdpbl9pcnFzYXZlKCZzdGF0cy0+c3luY3ApOworCQl1 NjRfc3RhdHNfaW5jKCZzdGF0cy0+dHhfcGFja2V0cyk7CisJCXU2NF9zdGF0c19hZGQoJnN0YXRz LT50eF9ieXRlcywgZW50cnktPmxlbik7CisJCXU2NF9zdGF0c191cGRhdGVfZW5kX2lycXJlc3Rv cmUoJnN0YXRzLT5zeW5jcCwgZmxhZ3MpOworCX0KKworCWVudHJ5LT5zdGF0ZSA9IHR4X2RvbmU7 CisJZGV2X2tmcmVlX3NrYih0eF9za2IpOworCisJcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQK K2F4ODg3OTZjX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZp Y2UgKm5kZXYpCit7CisJc3RydWN0IGF4ODg3OTZjX2RldmljZSAqYXhfbG9jYWwgPSB0b19heDg4 Nzk2Y19kZXZpY2UobmRldik7CisKKwlza2JfcXVldWVfdGFpbCgmYXhfbG9jYWwtPnR4X3dhaXRf cSwgc2tiKTsKKwlpZiAoc2tiX3F1ZXVlX2xlbigmYXhfbG9jYWwtPnR4X3dhaXRfcSkgPiBUWF9R VUVVRV9ISUdIX1dBVEVSKQorCQluZXRpZl9zdG9wX3F1ZXVlKG5kZXYpOworCisJc2V0X2JpdChF VkVOVF9UWCwgJmF4X2xvY2FsLT5mbGFncyk7CisJc2NoZWR1bGVfd29yaygmYXhfbG9jYWwtPmF4 X3dvcmspOworCisJcmV0dXJuIE5FVERFVl9UWF9PSzsKK30KKworc3RhdGljIHZvaWQKK2F4ODg3 OTZjX3NrYl9yZXR1cm4oc3RydWN0IGF4ODg3OTZjX2RldmljZSAqYXhfbG9jYWwsCisJCSAgICBz dHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgcnhfaGVhZGVyICpyeGhkcikKK3sKKwlzdHJ1Y3Qg bmV0X2RldmljZSAqbmRldiA9IGF4X2xvY2FsLT5uZGV2OworCXN0cnVjdCBheDg4Nzk2Y19wY3B1 X3N0YXRzICpzdGF0czsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCWludCBzdGF0dXM7CisKKwlz dGF0cyA9IHRoaXNfY3B1X3B0cihheF9sb2NhbC0+c3RhdHMpOworCisJZG8geworCQlpZiAoIShu ZGV2LT5mZWF0dXJlcyAmIE5FVElGX0ZfUlhDU1VNKSkKKwkJCWJyZWFrOworCisJCS8qIGNoZWNr c3VtIGVycm9yIGJpdCBpcyBzZXQgKi8KKwkJaWYgKChyeGhkci0+ZmxhZ3MgJiBSWF9IRFIzX0wz X0VSUikgfHwKKwkJICAgIChyeGhkci0+ZmxhZ3MgJiBSWF9IRFIzX0w0X0VSUikpCisJCQlicmVh azsKKworCQkvKiBPdGhlciB0eXBlcyBtYXkgYmUgaW5kaWNhdGVkIGJ5IG1vcmUgdGhhbiBvbmUg Yml0LiAqLworCQlpZiAoKHJ4aGRyLT5mbGFncyAmIFJYX0hEUjNfTDRfVFlQRV9UQ1ApIHx8CisJ CSAgICAocnhoZHItPmZsYWdzICYgUlhfSERSM19MNF9UWVBFX1VEUCkpCisJCQlza2ItPmlwX3N1 bW1lZCA9IENIRUNLU1VNX1VOTkVDRVNTQVJZOworCX0gd2hpbGUgKDApOworCisJZmxhZ3MgPSB1 NjRfc3RhdHNfdXBkYXRlX2JlZ2luX2lycXNhdmUoJnN0YXRzLT5zeW5jcCk7CisJdTY0X3N0YXRz X2luYygmc3RhdHMtPnJ4X3BhY2tldHMpOworCXU2NF9zdGF0c19hZGQoJnN0YXRzLT5yeF9ieXRl cywgc2tiLT5sZW4pOworCXU2NF9zdGF0c191cGRhdGVfZW5kX2lycXJlc3RvcmUoJnN0YXRzLT5z eW5jcCwgZmxhZ3MpOworCisJc2tiLT5kZXYgPSBuZGV2OworCXNrYi0+cHJvdG9jb2wgPSBldGhf dHlwZV90cmFucyhza2IsIGF4X2xvY2FsLT5uZGV2KTsKKworCW5ldGlmX2luZm8oYXhfbG9jYWws IHJ4X3N0YXR1cywgbmRldiwgIjwgcngsIGxlbiAlenUsIHR5cGUgMHgleFxuIiwKKwkJICAgc2ti LT5sZW4gKyBzaXplb2Yoc3RydWN0IGV0aGhkciksIHNrYi0+cHJvdG9jb2wpOworCisJc3RhdHVz ID0gbmV0aWZfcnhfbmkoc2tiKTsKKwlpZiAoc3RhdHVzICE9IE5FVF9SWF9TVUNDRVNTICYmIG5l dF9yYXRlbGltaXQoKSkKKwkJbmV0aWZfaW5mbyhheF9sb2NhbCwgcnhfZXJyLCBuZGV2LAorCQkJ ICAgIm5ldGlmX3J4IHN0YXR1cyAlZFxuIiwgc3RhdHVzKTsKK30KKworc3RhdGljIHZvaWQKK2F4 ODg3OTZjX3J4X2ZpeHVwKHN0cnVjdCBheDg4Nzk2Y19kZXZpY2UgKmF4X2xvY2FsLCBzdHJ1Y3Qg c2tfYnVmZiAqcnhfc2tiKQoreworCXN0cnVjdCByeF9oZWFkZXIgKnJ4aGRyID0gKHN0cnVjdCBy eF9oZWFkZXIgKilyeF9za2ItPmRhdGE7CisJc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSBheF9s b2NhbC0+bmRldjsKKwl1MTYgbGVuOworCisJYmUxNl90b19jcHVzKCZyeGhkci0+ZmxhZ3NfbGVu KTsKKwliZTE2X3RvX2NwdXMoJnJ4aGRyLT5zZXFfbGVuYmFyKTsKKwliZTE2X3RvX2NwdXMoJnJ4 aGRyLT5mbGFncyk7CisKKwlpZiAoKHJ4aGRyLT5mbGFnc19sZW4gJiBSWF9IRFIxX1BLVF9MRU4p ICE9CisJCQkgKH5yeGhkci0+c2VxX2xlbmJhciAmIDB4N0ZGKSkgeworCQluZXRpZl9lcnIoYXhf bG9jYWwsIHJ4X2VyciwgbmRldiwgIkhlYWRlciBlcnJvclxuIik7CisKKwkJdGhpc19jcHVfaW5j KGF4X2xvY2FsLT5zdGF0cy0+cnhfZnJhbWVfZXJyb3JzKTsKKwkJa2ZyZWVfc2tiKHJ4X3NrYik7 CisJCXJldHVybjsKKwl9CisKKwlpZiAoKHJ4aGRyLT5mbGFnc19sZW4gJiBSWF9IRFIxX01JSV9F UlIpIHx8CisJICAgIChyeGhkci0+ZmxhZ3NfbGVuICYgUlhfSERSMV9DUkNfRVJSKSkgeworCQlu ZXRpZl9lcnIoYXhfbG9jYWwsIHJ4X2VyciwgbmRldiwgIkNSQyBvciBNSUkgZXJyb3JcbiIpOwor CisJCXRoaXNfY3B1X2luYyhheF9sb2NhbC0+c3RhdHMtPnJ4X2NyY19lcnJvcnMpOworCQlrZnJl ZV9za2Iocnhfc2tiKTsKKwkJcmV0dXJuOworCX0KKworCWxlbiA9IHJ4aGRyLT5mbGFnc19sZW4g JiBSWF9IRFIxX1BLVF9MRU47CisJaWYgKG5ldGlmX21zZ19wa3RkYXRhKGF4X2xvY2FsKSkgewor CQljaGFyIHBmeFtJRk5BTVNJWiArIDddOworCisJCXNucHJpbnRmKHBmeCwgc2l6ZW9mKHBmeCks ICIlczogICAgICIsIG5kZXYtPm5hbWUpOworCQluZXRkZXZfaW5mbyhuZGV2LCAiUlggZGF0YSwg dG90YWwgbGVuICVkLCBwYWNrZXQgbGVuICVkXG4iLAorCQkJICAgIHJ4X3NrYi0+bGVuLCBsZW4p OworCisJCW5ldGRldl9pbmZvKG5kZXYsICIgIER1bXAgUlggcGFja2V0IGhlYWRlcjoiKTsKKwkJ cHJpbnRfaGV4X2R1bXAoS0VSTl9JTkZPLCBwZngsIERVTVBfUFJFRklYX09GRlNFVCwgMTYsIDEs CisJCQkgICAgICAgcnhfc2tiLT5kYXRhLCBzaXplb2YoKnJ4aGRyKSwgMCk7CisKKwkJbmV0ZGV2 X2luZm8obmRldiwgIiAgRHVtcCBSWCBwYWNrZXQ6Iik7CisJCXByaW50X2hleF9kdW1wKEtFUk5f SU5GTywgcGZ4LCBEVU1QX1BSRUZJWF9PRkZTRVQsIDE2LCAxLAorCQkJICAgICAgIHJ4X3NrYi0+ ZGF0YSArIHNpemVvZigqcnhoZHIpLCBsZW4sIDApOworCX0KKworCXNrYl9wdWxsKHJ4X3NrYiwg c2l6ZW9mKCpyeGhkcikpOworCXBza2JfdHJpbShyeF9za2IsIGxlbik7CisKKwlheDg4Nzk2Y19z a2JfcmV0dXJuKGF4X2xvY2FsLCByeF9za2IsIHJ4aGRyKTsKK30KKworc3RhdGljIGludCBheDg4 Nzk2Y19yZWNlaXZlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KQoreworCXN0cnVjdCBheDg4Nzk2 Y19kZXZpY2UgKmF4X2xvY2FsID0gdG9fYXg4ODc5NmNfZGV2aWNlKG5kZXYpOworCXN0cnVjdCBz a2JfZGF0YSAqZW50cnk7CisJdTE2IHdfY291bnQsIHBrdF9sZW47CisJc3RydWN0IHNrX2J1ZmYg KnNrYjsKKwl1OCBwa3RfY250OworCisJbG9ja2RlcF9hc3NlcnRfaGVsZCgmYXhfbG9jYWwtPnNw aV9sb2NrKTsKKworCS8qIGNoZWNrIHJ4IHBhY2tldCBhbmQgdG90YWwgd29yZCBjb3VudCAqLwor CUFYX1dSSVRFKCZheF9sb2NhbC0+YXhfc3BpLCBBWF9SRUFEKCZheF9sb2NhbC0+YXhfc3BpLCBQ MF9SVFdDUikKKwkJICB8IFJUV0NSX1JYX0xBVENILCBQMF9SVFdDUik7CisKKwlwa3RfY250ID0g QVhfUkVBRCgmYXhfbG9jYWwtPmF4X3NwaSwgUDBfUlhCQ1IyKSAmIFJYQkNSMl9QS1RfTUFTSzsK KwlpZiAoIXBrdF9jbnQpCisJCXJldHVybiAwOworCisJcGt0X2xlbiA9IEFYX1JFQUQoJmF4X2xv Y2FsLT5heF9zcGksIFAwX1JDUEhSKSAmIDB4N0ZGOworCisJd19jb3VudCA9IHJvdW5kX3VwKHBr dF9sZW4gKyA2LCA0KSA+PiAxOworCisJc2tiID0gbmV0ZGV2X2FsbG9jX3NrYihuZGV2LCB3X2Nv dW50ICogMik7CisJaWYgKCFza2IpIHsKKwkJQVhfV1JJVEUoJmF4X2xvY2FsLT5heF9zcGksIFJY QkNSMV9SWEJfRElTQ0FSRCwgUDBfUlhCQ1IxKTsKKwkJdGhpc19jcHVfaW5jKGF4X2xvY2FsLT5z dGF0cy0+cnhfZHJvcHBlZCk7CisJCXJldHVybiAwOworCX0KKwllbnRyeSA9IChzdHJ1Y3Qgc2ti X2RhdGEgKilza2ItPmNiOworCisJQVhfV1JJVEUoJmF4X2xvY2FsLT5heF9zcGksIFJYQkNSMV9S WEJfU1RBUlQgfCB3X2NvdW50LCBQMF9SWEJDUjEpOworCisJYXhzcGlfcmVhZF9yeHEoJmF4X2xv Y2FsLT5heF9zcGksCisJCSAgICAgICBza2JfcHV0KHNrYiwgd19jb3VudCAqIDIpLCBza2ItPmxl bik7CisKKwkvKiBDaGVjayBpZiByeCBicmlkZ2UgaXMgaWRsZSAqLworCWlmICgoQVhfUkVBRCgm YXhfbG9jYWwtPmF4X3NwaSwgUDBfUlhCQ1IyKSAmIFJYQkNSMl9SWEJfSURMRSkgPT0gMCkgewor CQlpZiAobmV0X3JhdGVsaW1pdCgpKQorCQkJbmV0aWZfZXJyKGF4X2xvY2FsLCByeF9lcnIsIG5k ZXYsCisJCQkJICAiUnggQnJpZGdlIGlzIG5vdCBpZGxlXG4iKTsKKwkJQVhfV1JJVEUoJmF4X2xv Y2FsLT5heF9zcGksIFJYQkNSMl9SWEJfUkVJTklULCBQMF9SWEJDUjIpOworCisJCWVudHJ5LT5z dGF0ZSA9IHJ4X2VycjsKKwl9IGVsc2UgeworCQllbnRyeS0+c3RhdGUgPSByeF9kb25lOworCX0K KworCUFYX1dSSVRFKCZheF9sb2NhbC0+YXhfc3BpLCBJU1JfUlhQS1QsIFAwX0lTUik7CisKKwlh eDg4Nzk2Y19yeF9maXh1cChheF9sb2NhbCwgc2tiKTsKKworCXJldHVybiAxOworfQorCitzdGF0 aWMgaW50IGF4ODg3OTZjX3Byb2Nlc3NfaXNyKHN0cnVjdCBheDg4Nzk2Y19kZXZpY2UgKmF4X2xv Y2FsKQoreworCXN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gYXhfbG9jYWwtPm5kZXY7CisJaW50 IHRvZG8gPSAwOworCXUxNiBpc3I7CisKKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZheF9sb2NhbC0+ c3BpX2xvY2spOworCisJaXNyID0gQVhfUkVBRCgmYXhfbG9jYWwtPmF4X3NwaSwgUDBfSVNSKTsK KwlBWF9XUklURSgmYXhfbG9jYWwtPmF4X3NwaSwgaXNyLCBQMF9JU1IpOworCisJbmV0aWZfZGJn KGF4X2xvY2FsLCBpbnRyLCBuZGV2LCAiICBJU1IgMHglMDR4XG4iLCBpc3IpOworCisJaWYgKGlz ciAmIElTUl9UWEVSUikgeworCQluZXRpZl9kYmcoYXhfbG9jYWwsIGludHIsIG5kZXYsICIgIFRY RVJSIGludGVycnVwdFxuIik7CisJCUFYX1dSSVRFKCZheF9sb2NhbC0+YXhfc3BpLCBUWE5SX1RY Ql9SRUlOSVQsIFAwX1RTTlIpOworCQlheF9sb2NhbC0+c2VxX251bSA9IDB4MWY7CisJfQorCisJ aWYgKGlzciAmIElTUl9UWFBBR0VTKSB7CisJCW5ldGlmX2RiZyhheF9sb2NhbCwgaW50ciwgbmRl diwgIiAgVFhQQUdFUyBpbnRlcnJ1cHRcbiIpOworCQlzZXRfYml0KEVWRU5UX1RYLCAmYXhfbG9j YWwtPmZsYWdzKTsKKwl9CisKKwlpZiAoaXNyICYgSVNSX0xJTkspIHsKKwkJbmV0aWZfZGJnKGF4 X2xvY2FsLCBpbnRyLCBuZGV2LCAiICBMaW5rIGNoYW5nZSBpbnRlcnJ1cHRcbiIpOworCQlwaHlf bWFjX2ludGVycnVwdChheF9sb2NhbC0+bmRldi0+cGh5ZGV2KTsKKwl9CisKKwlpZiAoaXNyICYg SVNSX1JYUEtUKSB7CisJCW5ldGlmX2RiZyhheF9sb2NhbCwgaW50ciwgbmRldiwgIiAgUlggaW50 ZXJydXB0XG4iKTsKKwkJdG9kbyA9IGF4ODg3OTZjX3JlY2VpdmUoYXhfbG9jYWwtPm5kZXYpOwor CX0KKworCXJldHVybiB0b2RvOworfQorCitzdGF0aWMgaXJxcmV0dXJuX3QgYXg4ODc5NmNfaW50 ZXJydXB0KGludCBpcnEsIHZvaWQgKmRldl9pbnN0YW5jZSkKK3sKKwlzdHJ1Y3QgYXg4ODc5NmNf ZGV2aWNlICpheF9sb2NhbDsKKwlzdHJ1Y3QgbmV0X2RldmljZSAqbmRldjsKKworCW5kZXYgPSBk ZXZfaW5zdGFuY2U7CisJaWYgKCFuZGV2KSB7CisJCXByX2VycigiaXJxICVkIGZvciB1bmtub3du IGRldmljZS5cbiIsIGlycSk7CisJCXJldHVybiBJUlFfUkVUVkFMKDApOworCX0KKwlheF9sb2Nh bCA9IHRvX2F4ODg3OTZjX2RldmljZShuZGV2KTsKKworCWRpc2FibGVfaXJxX25vc3luYyhpcnEp OworCisJbmV0aWZfZGJnKGF4X2xvY2FsLCBpbnRyLCBuZGV2LCAiSW50ZXJydXB0IG9jY3VycmVk XG4iKTsKKworCXNldF9iaXQoRVZFTlRfSU5UUiwgJmF4X2xvY2FsLT5mbGFncyk7CisJc2NoZWR1 bGVfd29yaygmYXhfbG9jYWwtPmF4X3dvcmspOworCisJcmV0dXJuIElSUV9IQU5ETEVEOworfQor CitzdGF0aWMgdm9pZCBheDg4Nzk2Y193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKK3sK KwlzdHJ1Y3QgYXg4ODc5NmNfZGV2aWNlICpheF9sb2NhbCA9CisJCQljb250YWluZXJfb2Yod29y aywgc3RydWN0IGF4ODg3OTZjX2RldmljZSwgYXhfd29yayk7CisKKwltdXRleF9sb2NrKCZheF9s b2NhbC0+c3BpX2xvY2spOworCisJaWYgKHRlc3RfYml0KEVWRU5UX1NFVF9NVUxUSSwgJmF4X2xv Y2FsLT5mbGFncykpIHsKKwkJYXg4ODc5NmNfc2V0X2h3X211bHRpY2FzdChheF9sb2NhbC0+bmRl dik7CisJCWNsZWFyX2JpdChFVkVOVF9TRVRfTVVMVEksICZheF9sb2NhbC0+ZmxhZ3MpOworCX0K KworCWlmICh0ZXN0X2JpdChFVkVOVF9JTlRSLCAmYXhfbG9jYWwtPmZsYWdzKSkgeworCQlBWF9X UklURSgmYXhfbG9jYWwtPmF4X3NwaSwgSU1SX01BU0tBTEwsIFAwX0lNUik7CisKKwkJd2hpbGUg KGF4ODg3OTZjX3Byb2Nlc3NfaXNyKGF4X2xvY2FsKSkKKwkJCS8qIG5vdGhpbmcgKi87CisKKwkJ Y2xlYXJfYml0KEVWRU5UX0lOVFIsICZheF9sb2NhbC0+ZmxhZ3MpOworCisJCUFYX1dSSVRFKCZh eF9sb2NhbC0+YXhfc3BpLCBJTVJfREVGQVVMVCwgUDBfSU1SKTsKKworCQllbmFibGVfaXJxKGF4 X2xvY2FsLT5uZGV2LT5pcnEpOworCX0KKworCWlmICh0ZXN0X2JpdChFVkVOVF9UWCwgJmF4X2xv Y2FsLT5mbGFncykpIHsKKwkJd2hpbGUgKHNrYl9xdWV1ZV9sZW4oJmF4X2xvY2FsLT50eF93YWl0 X3EpKSB7CisJCQlpZiAoIWF4ODg3OTZjX2hhcmRfeG1pdChheF9sb2NhbCkpCisJCQkJYnJlYWs7 CisJCX0KKworCQljbGVhcl9iaXQoRVZFTlRfVFgsICZheF9sb2NhbC0+ZmxhZ3MpOworCisJCWlm IChuZXRpZl9xdWV1ZV9zdG9wcGVkKGF4X2xvY2FsLT5uZGV2KSAmJgorCQkgICAgKHNrYl9xdWV1 ZV9sZW4oJmF4X2xvY2FsLT50eF93YWl0X3EpIDwgVFhfUVVFVUVfTE9XX1dBVEVSKSkKKwkJCW5l dGlmX3dha2VfcXVldWUoYXhfbG9jYWwtPm5kZXYpOworCX0KKworCW11dGV4X3VubG9jaygmYXhf bG9jYWwtPnNwaV9sb2NrKTsKK30KKworc3RhdGljIHZvaWQgYXg4ODc5NmNfZ2V0X3N0YXRzNjQo c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCisJCQkJIHN0cnVjdCBydG5sX2xpbmtfc3RhdHM2NCAq c3RhdHMpCit7CisJc3RydWN0IGF4ODg3OTZjX2RldmljZSAqYXhfbG9jYWwgPSB0b19heDg4Nzk2 Y19kZXZpY2UobmRldik7CisJdTMyIHJ4X2ZyYW1lX2Vycm9ycyA9IDAsIHJ4X2NyY19lcnJvcnMg PSAwOworCXUzMiByeF9kcm9wcGVkID0gMCwgdHhfZHJvcHBlZCA9IDA7CisJdW5zaWduZWQgaW50 IHN0YXJ0OworCWludCBjcHU7CisKKwlmb3JfZWFjaF9wb3NzaWJsZV9jcHUoY3B1KSB7CisJCXN0 cnVjdCBheDg4Nzk2Y19wY3B1X3N0YXRzICpzOworCQl1NjQgcnhfcGFja2V0cywgcnhfYnl0ZXM7 CisJCXU2NCB0eF9wYWNrZXRzLCB0eF9ieXRlczsKKworCQlzID0gcGVyX2NwdV9wdHIoYXhfbG9j YWwtPnN0YXRzLCBjcHUpOworCisJCWRvIHsKKwkJCXN0YXJ0ID0gdTY0X3N0YXRzX2ZldGNoX2Jl Z2luX2lycSgmcy0+c3luY3ApOworCQkJcnhfcGFja2V0cyA9IHU2NF9zdGF0c19yZWFkKCZzLT5y eF9wYWNrZXRzKTsKKwkJCXJ4X2J5dGVzICAgPSB1NjRfc3RhdHNfcmVhZCgmcy0+cnhfYnl0ZXMp OworCQkJdHhfcGFja2V0cyA9IHU2NF9zdGF0c19yZWFkKCZzLT50eF9wYWNrZXRzKTsKKwkJCXR4 X2J5dGVzICAgPSB1NjRfc3RhdHNfcmVhZCgmcy0+dHhfYnl0ZXMpOworCQl9IHdoaWxlICh1NjRf c3RhdHNfZmV0Y2hfcmV0cnlfaXJxKCZzLT5zeW5jcCwgc3RhcnQpKTsKKworCQlzdGF0cy0+cnhf cGFja2V0cyArPSByeF9wYWNrZXRzOworCQlzdGF0cy0+cnhfYnl0ZXMgICArPSByeF9ieXRlczsK KwkJc3RhdHMtPnR4X3BhY2tldHMgKz0gdHhfcGFja2V0czsKKwkJc3RhdHMtPnR4X2J5dGVzICAg Kz0gdHhfYnl0ZXM7CisKKwkJcnhfZHJvcHBlZCAgICAgICs9IHN0YXRzLT5yeF9kcm9wcGVkOwor CQl0eF9kcm9wcGVkICAgICAgKz0gc3RhdHMtPnR4X2Ryb3BwZWQ7CisJCXJ4X2ZyYW1lX2Vycm9y cyArPSBzdGF0cy0+cnhfZnJhbWVfZXJyb3JzOworCQlyeF9jcmNfZXJyb3JzICAgKz0gc3RhdHMt PnJ4X2NyY19lcnJvcnM7CisJfQorCisJc3RhdHMtPnJ4X2Ryb3BwZWQgPSByeF9kcm9wcGVkOwor CXN0YXRzLT50eF9kcm9wcGVkID0gdHhfZHJvcHBlZDsKKwlzdGF0cy0+cnhfZnJhbWVfZXJyb3Jz ID0gcnhfZnJhbWVfZXJyb3JzOworCXN0YXRzLT5yeF9jcmNfZXJyb3JzID0gcnhfY3JjX2Vycm9y czsKK30KKworc3RhdGljIHZvaWQgYXg4ODc5NmNfc2V0X21hYyhzdHJ1Y3QgIGF4ODg3OTZjX2Rl dmljZSAqYXhfbG9jYWwpCit7CisJdTE2IG1hY2NyOworCisJbWFjY3IgPSAoYXhfbG9jYWwtPmxp bmspID8gTUFDQ1JfUlhFTiA6IDA7CisKKwlzd2l0Y2ggKGF4X2xvY2FsLT5zcGVlZCkgeworCWNh c2UgU1BFRURfMTAwOgorCQltYWNjciB8PSBNQUNDUl9TUEVFRF8xMDA7CisJY2FzZSBTUEVFRF8x MDoKKwljYXNlIFNQRUVEX1VOS05PV046CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJldHVybjsK Kwl9CisKKwlzd2l0Y2ggKGF4X2xvY2FsLT5kdXBsZXgpIHsKKwljYXNlIERVUExFWF9GVUxMOgor CQltYWNjciB8PSBNQUNDUl9TUEVFRF8xMDA7CisJY2FzZSBEVVBMRVhfSEFMRjoKKwljYXNlIERV UExFWF9VTktOT1dOOgorCQlicmVhazsKKwlkZWZhdWx0OgorCQlyZXR1cm47CisJfQorCisJaWYg KGF4X2xvY2FsLT5mbG93Y3RybCAmIEFYX0ZDX0FORUcgJiYKKwkgICAgYXhfbG9jYWwtPnBoeWRl di0+YXV0b25lZykgeworCQltYWNjciB8PSBheF9sb2NhbC0+cGF1c2UgPyBNQUNDUl9SWEZDX0VO QUJMRSA6IDA7CisJCW1hY2NyIHw9ICFheF9sb2NhbC0+cGF1c2UgIT0gIWF4X2xvY2FsLT5hc3lt X3BhdXNlID8KKwkJCU1BQ0NSX1RYRkNfRU5BQkxFIDogMDsKKwl9IGVsc2UgeworCQltYWNjciB8 PSAoYXhfbG9jYWwtPmZsb3djdHJsICYgQVhfRkNfUlgpID8gTUFDQ1JfUlhGQ19FTkFCTEUgOiAw OworCQltYWNjciB8PSAoYXhfbG9jYWwtPmZsb3djdHJsICYgQVhfRkNfVFgpID8gTUFDQ1JfVFhG Q19FTkFCTEUgOiAwOworCX0KKworCW11dGV4X2xvY2soJmF4X2xvY2FsLT5zcGlfbG9jayk7CisK KwltYWNjciB8PSBBWF9SRUFEKCZheF9sb2NhbC0+YXhfc3BpLCBQMF9NQUNDUikgJgorCQl+KE1B Q0NSX0RVUExFWF9GVUxMIHwgTUFDQ1JfU1BFRURfMTAwIHwKKwkJICBNQUNDUl9UWEZDX0VOQUJM RSB8IE1BQ0NSX1JYRkNfRU5BQkxFKTsKKwlBWF9XUklURSgmYXhfbG9jYWwtPmF4X3NwaSwgbWFj Y3IsIFAwX01BQ0NSKTsKKworCW11dGV4X3VubG9jaygmYXhfbG9jYWwtPnNwaV9sb2NrKTsKK30K Kworc3RhdGljIHZvaWQgYXg4ODc5NmNfaGFuZGxlX2xpbmtfY2hhbmdlKHN0cnVjdCBuZXRfZGV2 aWNlICpuZGV2KQoreworCXN0cnVjdCBheDg4Nzk2Y19kZXZpY2UgKmF4X2xvY2FsID0gdG9fYXg4 ODc5NmNfZGV2aWNlKG5kZXYpOworCXN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSBuZGV2LT5w aHlkZXY7CisJYm9vbCB1cGRhdGUgPSBmYWxzZTsKKworCWlmIChwaHlkZXYtPmxpbmsgJiYgKGF4 X2xvY2FsLT5zcGVlZCAhPSBwaHlkZXYtPnNwZWVkIHx8CisJCQkgICAgIGF4X2xvY2FsLT5kdXBs ZXggIT0gcGh5ZGV2LT5kdXBsZXggfHwKKwkJCSAgICAgYXhfbG9jYWwtPnBhdXNlICE9IHBoeWRl di0+cGF1c2UgfHwKKwkJCSAgICAgYXhfbG9jYWwtPmFzeW1fcGF1c2UgIT0gcGh5ZGV2LT5hc3lt X3BhdXNlKSkgeworCQlheF9sb2NhbC0+c3BlZWQgPSBwaHlkZXYtPnNwZWVkOworCQlheF9sb2Nh bC0+ZHVwbGV4ID0gcGh5ZGV2LT5kdXBsZXg7CisJCWF4X2xvY2FsLT5wYXVzZSA9IHBoeWRldi0+ cGF1c2U7CisJCWF4X2xvY2FsLT5hc3ltX3BhdXNlID0gcGh5ZGV2LT5hc3ltX3BhdXNlOworCQl1 cGRhdGUgPSB0cnVlOworCX0KKworCWlmIChwaHlkZXYtPmxpbmsgIT0gYXhfbG9jYWwtPmxpbmsp IHsKKwkJaWYgKCFwaHlkZXYtPmxpbmspIHsKKwkJCWF4X2xvY2FsLT5zcGVlZCA9IFNQRUVEX1VO S05PV047CisJCQlheF9sb2NhbC0+ZHVwbGV4ID0gRFVQTEVYX1VOS05PV047CisJCX0KKworCQlh eF9sb2NhbC0+bGluayA9IHBoeWRldi0+bGluazsKKwkJdXBkYXRlID0gdHJ1ZTsKKwl9CisKKwlp ZiAodXBkYXRlKQorCQlheDg4Nzk2Y19zZXRfbWFjKGF4X2xvY2FsKTsKKworCWlmIChuZXRfcmF0 ZWxpbWl0KCkpCisJCXBoeV9wcmludF9zdGF0dXMobmRldi0+cGh5ZGV2KTsKK30KKworc3RhdGlj IHZvaWQgYXg4ODc5NmNfc2V0X2NzdW1zKHN0cnVjdCBheDg4Nzk2Y19kZXZpY2UgKmF4X2xvY2Fs KQoreworCXN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gYXhfbG9jYWwtPm5kZXY7CisKKwlsb2Nr ZGVwX2Fzc2VydF9oZWxkKCZheF9sb2NhbC0+c3BpX2xvY2spOworCisJaWYgKG5kZXYtPmZlYXR1 cmVzICYgTkVUSUZfRl9SWENTVU0pIHsKKwkJQVhfV1JJVEUoJmF4X2xvY2FsLT5heF9zcGksIENP RVJDUjBfREVGQVVMVCwgUDRfQ09FUkNSMCk7CisJCUFYX1dSSVRFKCZheF9sb2NhbC0+YXhfc3Bp LCBDT0VSQ1IxX0RFRkFVTFQsIFA0X0NPRVJDUjEpOworCX0gZWxzZSB7CisJCUFYX1dSSVRFKCZh eF9sb2NhbC0+YXhfc3BpLCAwLCBQNF9DT0VSQ1IwKTsKKwkJQVhfV1JJVEUoJmF4X2xvY2FsLT5h eF9zcGksIDAsIFA0X0NPRVJDUjEpOworCX0KKworCWlmIChuZGV2LT5mZWF0dXJlcyAmIE5FVElG X0ZfSFdfQ1NVTSkgeworCQlBWF9XUklURSgmYXhfbG9jYWwtPmF4X3NwaSwgQ09FVENSMF9ERUZB VUxULCBQNF9DT0VUQ1IwKTsKKwkJQVhfV1JJVEUoJmF4X2xvY2FsLT5heF9zcGksIENPRVRDUjFf VFhQUFBFLCBQNF9DT0VUQ1IxKTsKKwl9IGVsc2UgeworCQlBWF9XUklURSgmYXhfbG9jYWwtPmF4 X3NwaSwgMCwgUDRfQ09FVENSMCk7CisJCUFYX1dSSVRFKCZheF9sb2NhbC0+YXhfc3BpLCAwLCBQ NF9DT0VUQ1IxKTsKKwl9Cit9CisKK3N0YXRpYyBpbnQKK2F4ODg3OTZjX29wZW4oc3RydWN0IG5l dF9kZXZpY2UgKm5kZXYpCit7CisJc3RydWN0IGF4ODg3OTZjX2RldmljZSAqYXhfbG9jYWwgPSB0 b19heDg4Nzk2Y19kZXZpY2UobmRldik7CisJdW5zaWduZWQgbG9uZyBpcnFfZmxhZyA9IDA7CisJ aW50IGZjID0gQVhfRkNfTk9ORTsKKwlpbnQgcmV0OworCXUxNiB0OworCisJcmV0ID0gcmVxdWVz dF9pcnEobmRldi0+aXJxLCBheDg4Nzk2Y19pbnRlcnJ1cHQsCisJCQkgIGlycV9mbGFnLCBuZGV2 LT5uYW1lLCBuZGV2KTsKKwlpZiAocmV0KSB7CisJCW5ldGRldl9lcnIobmRldiwgInVuYWJsZSB0 byBnZXQgSVJRICVkIChlcnJubz0lZCkuXG4iLAorCQkJICAgbmRldi0+aXJxLCByZXQpOworCQly ZXR1cm4gcmV0OworCX0KKworCW11dGV4X2xvY2soJmF4X2xvY2FsLT5zcGlfbG9jayk7CisKKwly ZXQgPSBheDg4Nzk2Y19zb2Z0X3Jlc2V0KGF4X2xvY2FsKTsKKwlpZiAocmV0IDwgMCkgeworCQlm cmVlX2lycShuZGV2LT5pcnEsIG5kZXYpOworCQltdXRleF91bmxvY2soJmF4X2xvY2FsLT5zcGlf bG9jayk7CisJCXJldHVybiByZXQ7CisJfQorCWF4X2xvY2FsLT5zZXFfbnVtID0gMHgxZjsKKwor CWF4ODg3OTZjX3NldF9tYWNfYWRkcihuZGV2KTsKKwlheDg4Nzk2Y19zZXRfY3N1bXMoYXhfbG9j YWwpOworCisJLyogRGlzYWJsZSBzdHVmZmluZyBwYWNrZXQgKi8KKwl0ID0gQVhfUkVBRCgmYXhf bG9jYWwtPmF4X3NwaSwgUDFfUlhCU1BDUik7CisJdCAmPSB+UlhCU1BDUl9TVFVGX0VOQUJMRTsK KwlBWF9XUklURSgmYXhfbG9jYWwtPmF4X3NwaSwgdCwgUDFfUlhCU1BDUik7CisKKwkvKiBFbmFi bGUgUlggcGFja2V0IHByb2Nlc3MgKi8KKwlBWF9XUklURSgmYXhfbG9jYWwtPmF4X3NwaSwgUlBQ RVJfUlhFTiwgUDFfUlBQRVIpOworCisJdCA9IEFYX1JFQUQoJmF4X2xvY2FsLT5heF9zcGksIFAw X0ZFUik7CisJdCB8PSBGRVJfUlhFTiB8IEZFUl9UWEVOIHwgRkVSX0JTV0FQIHwgRkVSX0lSUV9Q VUxMOworCUFYX1dSSVRFKCZheF9sb2NhbC0+YXhfc3BpLCB0LCBQMF9GRVIpOworCisJLyogU2V0 dXAgTEVEIG1vZGUgKi8KKwlBWF9XUklURSgmYXhfbG9jYWwtPmF4X3NwaSwKKwkJIChMQ1JfTEVE MF9FTiB8IExDUl9MRUQwX0RVUExFWCB8IExDUl9MRUQxX0VOIHwKKwkJIExDUl9MRUQxXzEwME1P REUpLCBQMl9MQ1IwKTsKKwlBWF9XUklURSgmYXhfbG9jYWwtPmF4X3NwaSwKKwkJIChBWF9SRUFE KCZheF9sb2NhbC0+YXhfc3BpLCBQMl9MQ1IxKSAmIExDUl9MRUQyX01BU0spIHwKKwkJIExDUl9M RUQyX0VOIHwgTENSX0xFRDJfTElOSywgUDJfTENSMSk7CisKKwkvKiBEaXNhYmxlIFBIWSBhdXRv LXBvbGxpbmcgKi8KKwlBWF9XUklURSgmYXhfbG9jYWwtPmF4X3NwaSwgUENSX1BIWUlEKEFYODg3 OTZDX1BIWV9JRCksIFAyX1BDUik7CisKKwkvKiBFbmFibGUgTUFDIGludGVycnVwdHMgKi8KKwlB WF9XUklURSgmYXhfbG9jYWwtPmF4X3NwaSwgSU1SX0RFRkFVTFQsIFAwX0lNUik7CisKKwltdXRl eF91bmxvY2soJmF4X2xvY2FsLT5zcGlfbG9jayk7CisKKwkvKiBTZXR1cCBmbG93LWNvbnRyb2wg Y29uZmlndXJhdGlvbiAqLworCXBoeV9zdXBwb3J0X2FzeW1fcGF1c2UoYXhfbG9jYWwtPnBoeWRl dik7CisKKwlpZiAoYXhfbG9jYWwtPnBoeWRldi0+YWR2ZXJ0aXNpbmcgJiYKKwkgICAgKGxpbmtt b2RlX3Rlc3RfYml0KEVUSFRPT0xfTElOS19NT0RFX1BhdXNlX0JJVCwKKwkJCSAgICAgICBheF9s b2NhbC0+cGh5ZGV2LT5hZHZlcnRpc2luZykgfHwKKwkgICAgIGxpbmttb2RlX3Rlc3RfYml0KEVU SFRPT0xfTElOS19NT0RFX0FzeW1fUGF1c2VfQklULAorCQkJICAgICAgIGF4X2xvY2FsLT5waHlk ZXYtPmFkdmVydGlzaW5nKSkpCisJCWZjIHw9IEFYX0ZDX0FORUc7CisKKwlmYyB8PSBsaW5rbW9k ZV90ZXN0X2JpdChFVEhUT09MX0xJTktfTU9ERV9QYXVzZV9CSVQsCisJCQkJYXhfbG9jYWwtPnBo eWRldi0+YWR2ZXJ0aXNpbmcpID8gQVhfRkNfUlggOiAwOworCWZjIHw9IChsaW5rbW9kZV90ZXN0 X2JpdChFVEhUT09MX0xJTktfTU9ERV9QYXVzZV9CSVQsCisJCQkJIGF4X2xvY2FsLT5waHlkZXYt PmFkdmVydGlzaW5nKSAhPQorCSAgICAgICBsaW5rbW9kZV90ZXN0X2JpdChFVEhUT09MX0xJTktf TU9ERV9Bc3ltX1BhdXNlX0JJVCwKKwkJCQkgYXhfbG9jYWwtPnBoeWRldi0+YWR2ZXJ0aXNpbmcp KSA/IEFYX0ZDX1RYIDogMDsKKwlheF9sb2NhbC0+Zmxvd2N0cmwgPSBmYzsKKworCXBoeV9zdGFy dChheF9sb2NhbC0+bmRldi0+cGh5ZGV2KTsKKworCW5ldGlmX3N0YXJ0X3F1ZXVlKG5kZXYpOwor CisJc3BpX21lc3NhZ2VfaW5pdCgmYXhfbG9jYWwtPmF4X3NwaS5yeF9tc2cpOworCisJcmV0dXJu IDA7Cit9CisKK3N0YXRpYyBpbnQKK2F4ODg3OTZjX2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpu ZGV2KQoreworCXN0cnVjdCBheDg4Nzk2Y19kZXZpY2UgKmF4X2xvY2FsID0gdG9fYXg4ODc5NmNf ZGV2aWNlKG5kZXYpOworCisJbmV0aWZfc3RvcF9xdWV1ZShuZGV2KTsKKwlwaHlfc3RvcChuZGV2 LT5waHlkZXYpOworCisJbXV0ZXhfbG9jaygmYXhfbG9jYWwtPnNwaV9sb2NrKTsKKworCS8qIERp c2FibGUgTUFDIGludGVycnVwdHMgKi8KKwlBWF9XUklURSgmYXhfbG9jYWwtPmF4X3NwaSwgSU1S X01BU0tBTEwsIFAwX0lNUik7CisJX19za2JfcXVldWVfcHVyZ2UoJmF4X2xvY2FsLT50eF93YWl0 X3EpOworCWF4ODg3OTZjX3NvZnRfcmVzZXQoYXhfbG9jYWwpOworCisJbXV0ZXhfdW5sb2NrKCZh eF9sb2NhbC0+c3BpX2xvY2spOworCisJZnJlZV9pcnEobmRldi0+aXJxLCBuZGV2KTsKKworCXJl dHVybiAwOworfQorCitzdGF0aWMgaW50CitheDg4Nzk2Y19zZXRfZmVhdHVyZXMoc3RydWN0IG5l dF9kZXZpY2UgKm5kZXYsIG5ldGRldl9mZWF0dXJlc190IGZlYXR1cmVzKQoreworCXN0cnVjdCBh eDg4Nzk2Y19kZXZpY2UgKmF4X2xvY2FsID0gdG9fYXg4ODc5NmNfZGV2aWNlKG5kZXYpOworCW5l dGRldl9mZWF0dXJlc190IGNoYW5nZWQgPSBmZWF0dXJlcyBeIG5kZXYtPmZlYXR1cmVzOworCisJ aWYgKCEoY2hhbmdlZCAmIChORVRJRl9GX1JYQ1NVTSB8IE5FVElGX0ZfSFdfQ1NVTSkpKQorCQly ZXR1cm4gMDsKKworCW5kZXYtPmZlYXR1cmVzID0gZmVhdHVyZXM7CisKKwlpZiAoY2hhbmdlZCAm IChORVRJRl9GX1JYQ1NVTSB8IE5FVElGX0ZfSFdfQ1NVTSkpCisJCWF4ODg3OTZjX3NldF9jc3Vt cyhheF9sb2NhbCk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRf ZGV2aWNlX29wcyBheDg4Nzk2Y19uZXRkZXZfb3BzID0geworCS5uZG9fb3BlbgkJPSBheDg4Nzk2 Y19vcGVuLAorCS5uZG9fc3RvcAkJPSBheDg4Nzk2Y19jbG9zZSwKKwkubmRvX3N0YXJ0X3htaXQJ CT0gYXg4ODc5NmNfc3RhcnRfeG1pdCwKKwkubmRvX2dldF9zdGF0czY0CT0gYXg4ODc5NmNfZ2V0 X3N0YXRzNjQsCisJLm5kb19kb19pb2N0bAkJPSBheDg4Nzk2Y19pb2N0bCwKKwkubmRvX3NldF9t YWNfYWRkcmVzcwk9IGV0aF9tYWNfYWRkciwKKwkubmRvX3NldF9mZWF0dXJlcwk9IGF4ODg3OTZj X3NldF9mZWF0dXJlcywKK307CisKK3N0YXRpYyBpbnQgYXg4ODc5NmNfaGFyZF9yZXNldChzdHJ1 Y3QgYXg4ODc5NmNfZGV2aWNlICpheF9sb2NhbCkKK3sKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAo c3RydWN0IGRldmljZSAqKSZheF9sb2NhbC0+c3BpLT5kZXY7CisJc3RydWN0IGdwaW9fZGVzYyAq cmVzZXRfZ3BpbzsKKworCS8qIHJlc2V0IGluZm8gKi8KKwlyZXNldF9ncGlvID0gZ3Bpb2RfZ2V0 KGRldiwgInJlc2V0IiwgMCk7CisJaWYgKElTX0VSUihyZXNldF9ncGlvKSkgeworCQlkZXZfZXJy KGRldiwgIkNvdWxkIG5vdCBnZXQgJ3Jlc2V0JyBHUElPOiAlbGQiLCBQVFJfRVJSKHJlc2V0X2dw aW8pKTsKKwkJcmV0dXJuIFBUUl9FUlIocmVzZXRfZ3Bpbyk7CisJfQorCisJLyogc2V0IHJlc2V0 ICovCisJZ3Bpb2RfZGlyZWN0aW9uX291dHB1dChyZXNldF9ncGlvLCAxKTsKKwltc2xlZXAoMTAw KTsKKwlncGlvZF9kaXJlY3Rpb25fb3V0cHV0KHJlc2V0X2dwaW8sIDApOworCWdwaW9kX3B1dChy ZXNldF9ncGlvKTsKKwltc2xlZXAoMjApOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQg YXg4ODc5NmNfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKK3sKKwljaGFyIHBoeV9pZFtN SUlfQlVTX0lEX1NJWkUgKyAzXTsKKwlzdHJ1Y3QgYXg4ODc5NmNfZGV2aWNlICpheF9sb2NhbDsK KwlzdHJ1Y3QgbmV0X2RldmljZSAqbmRldjsKKwl1MTYgdGVtcDsKKwlpbnQgcmV0OworCisJbmRl diA9IGRldm1fYWxsb2NfZXRoZXJkZXYoJnNwaS0+ZGV2LCBzaXplb2YoKmF4X2xvY2FsKSk7CisJ aWYgKCFuZGV2KQorCQlyZXR1cm4gLUVOT01FTTsKKworCVNFVF9ORVRERVZfREVWKG5kZXYsICZz cGktPmRldik7CisKKwlheF9sb2NhbCA9IHRvX2F4ODg3OTZjX2RldmljZShuZGV2KTsKKworCWRl dl9zZXRfZHJ2ZGF0YSgmc3BpLT5kZXYsIGF4X2xvY2FsKTsKKwlheF9sb2NhbC0+c3BpID0gc3Bp OworCWF4X2xvY2FsLT5heF9zcGkuc3BpID0gc3BpOworCisJYXhfbG9jYWwtPnN0YXRzID0KKwkJ ZGV2bV9uZXRkZXZfYWxsb2NfcGNwdV9zdGF0cygmc3BpLT5kZXYsCisJCQkJCSAgICAgc3RydWN0 IGF4ODg3OTZjX3BjcHVfc3RhdHMpOworCWlmICghYXhfbG9jYWwtPnN0YXRzKQorCQlyZXR1cm4g LUVOT01FTTsKKwl1NjRfc3RhdHNfaW5pdCgmYXhfbG9jYWwtPnN0YXRzLT5zeW5jcCk7CisKKwlh eF9sb2NhbC0+bmRldiA9IG5kZXY7CisJYXhfbG9jYWwtPnByaXZfZmxhZ3MgfD0gY29tcCA/IEFY X0NBUF9DT01QIDogMDsKKwlheF9sb2NhbC0+bXNnX2VuYWJsZSA9IG1zZ19lbmFibGU7CisJbXV0 ZXhfaW5pdCgmYXhfbG9jYWwtPnNwaV9sb2NrKTsKKworCWF4X2xvY2FsLT5tZGlvYnVzID0gZGV2 bV9tZGlvYnVzX2FsbG9jKCZzcGktPmRldik7CisJaWYgKCFheF9sb2NhbC0+bWRpb2J1cykKKwkJ cmV0dXJuIC1FTk9NRU07CisKKwlheF9sb2NhbC0+bWRpb2J1cy0+cHJpdiA9IGF4X2xvY2FsOwor CWF4X2xvY2FsLT5tZGlvYnVzLT5yZWFkID0gYXg4ODc5NmNfbWRpb19yZWFkOworCWF4X2xvY2Fs LT5tZGlvYnVzLT53cml0ZSA9IGF4ODg3OTZjX21kaW9fd3JpdGU7CisJYXhfbG9jYWwtPm1kaW9i dXMtPm5hbWUgPSAiYXg4ODk3NmMtbWRpb2J1cyI7CisJYXhfbG9jYWwtPm1kaW9idXMtPnBoeV9t YXNrID0gKHUzMil+QklUKEFYODg3OTZDX1BIWV9JRCk7CisJYXhfbG9jYWwtPm1kaW9idXMtPnBh cmVudCA9ICZzcGktPmRldjsKKworCXNucHJpbnRmKGF4X2xvY2FsLT5tZGlvYnVzLT5pZCwgTUlJ X0JVU19JRF9TSVpFLAorCQkgImF4ODg3OTZjLSVzLiV1IiwgZGV2X25hbWUoJnNwaS0+ZGV2KSwg c3BpLT5jaGlwX3NlbGVjdCk7CisKKwlyZXQgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoJnNwaS0+ ZGV2LCBheF9sb2NhbC0+bWRpb2J1cyk7CisJaWYgKHJldCA8IDApIHsKKwkJZGV2X2Vycigmc3Bp LT5kZXYsICJDb3VsZCBub3QgcmVnaXN0ZXIgTURJTyBidXNcbiIpOworCQlyZXR1cm4gcmV0Owor CX0KKworCWlmIChuZXRpZl9tc2dfcHJvYmUoYXhfbG9jYWwpKSB7CisJCWRldl9pbmZvKCZzcGkt PmRldiwgIkFYODg3OTZDLVNQSSBDb25maWd1cmF0aW9uOlxuIik7CisJCWRldl9pbmZvKCZzcGkt PmRldiwgIiAgICBDb21wcmVzc2lvbiA6ICVzXG4iLAorCQkJIGF4X2xvY2FsLT5wcml2X2ZsYWdz ICYgQVhfQ0FQX0NPTVAgPyAiT04iIDogIk9GRiIpOworCX0KKworCW5kZXYtPmlycSA9IHNwaS0+ aXJxOworCW5kZXYtPm5ldGRldl9vcHMgPSAmYXg4ODc5NmNfbmV0ZGV2X29wczsKKwluZGV2LT5l dGh0b29sX29wcyA9ICZheDg4Nzk2Y19ldGh0b29sX29wczsKKwluZGV2LT5od19mZWF0dXJlcyB8 PSBORVRJRl9GX0hXX0NTVU0gfCBORVRJRl9GX1JYQ1NVTTsKKwluZGV2LT5mZWF0dXJlcyB8PSBO RVRJRl9GX0hXX0NTVU0gfCBORVRJRl9GX1JYQ1NVTTsKKwluZGV2LT5uZWVkZWRfaGVhZHJvb20g PSBUWF9PVkVSSEVBRDsKKwluZGV2LT5uZWVkZWRfdGFpbHJvb20gPSBUWF9FT1BfU0laRTsKKwor CW11dGV4X2xvY2soJmF4X2xvY2FsLT5zcGlfbG9jayk7CisKKwkvKiBheDg4Nzk2YyBncGlvIHJl c2V0ICovCisJYXg4ODc5NmNfaGFyZF9yZXNldChheF9sb2NhbCk7CisKKwkvKiBSZXNldCBBWDg4 Nzk2QyAqLworCXJldCA9IGF4ODg3OTZjX3NvZnRfcmVzZXQoYXhfbG9jYWwpOworCWlmIChyZXQg PCAwKSB7CisJCXJldCA9IC1FTk9ERVY7CisJCW11dGV4X3VubG9jaygmYXhfbG9jYWwtPnNwaV9s b2NrKTsKKwkJZ290byBlcnI7CisJfQorCS8qIENoZWNrIGJvYXJkIHJldmlzaW9uICovCisJdGVt cCA9IEFYX1JFQUQoJmF4X2xvY2FsLT5heF9zcGksIFAyX0NSSVIpOworCWlmICgodGVtcCAmIDB4 RikgIT0gMHgwKSB7CisJCWRldl9lcnIoJnNwaS0+ZGV2LCAic3BpIHJlYWQgZmFpbGVkOiAlZFxu IiwgdGVtcCk7CisJCXJldCA9IC1FTk9ERVY7CisJCW11dGV4X3VubG9jaygmYXhfbG9jYWwtPnNw aV9sb2NrKTsKKwkJZ290byBlcnI7CisJfQorCisJLypSZWxvYWQgRUVQUk9NKi8KKwlheDg4Nzk2 Y19yZWxvYWRfZWVwcm9tKGF4X2xvY2FsKTsKKworCWF4ODg3OTZjX2xvYWRfbWFjX2FkZHIobmRl dik7CisKKwlpZiAobmV0aWZfbXNnX3Byb2JlKGF4X2xvY2FsKSkKKwkJZGV2X2luZm8oJnNwaS0+ ZGV2LAorCQkJICJpcnEgJWQsIE1BQyBhZGRyICUwMlg6JTAyWDolMDJYOiUwMlg6JTAyWDolMDJY XG4iLAorCQkJIG5kZXYtPmlycSwKKwkJCSBuZGV2LT5kZXZfYWRkclswXSwgbmRldi0+ZGV2X2Fk ZHJbMV0sCisJCQkgbmRldi0+ZGV2X2FkZHJbMl0sIG5kZXYtPmRldl9hZGRyWzNdLAorCQkJIG5k ZXYtPmRldl9hZGRyWzRdLCBuZGV2LT5kZXZfYWRkcls1XSk7CisKKwkvKiBEaXNhYmxlIHBvd2Vy IHNhdmluZyAqLworCUFYX1dSSVRFKCZheF9sb2NhbC0+YXhfc3BpLCAoQVhfUkVBRCgmYXhfbG9j YWwtPmF4X3NwaSwgUDBfUFNDUikKKwkJCQkgICAgICYgUFNDUl9QU19NQVNLKSB8IFBTQ1JfUFNf RDAsIFAwX1BTQ1IpOworCisJbXV0ZXhfdW5sb2NrKCZheF9sb2NhbC0+c3BpX2xvY2spOworCisJ SU5JVF9XT1JLKCZheF9sb2NhbC0+YXhfd29yaywgYXg4ODc5NmNfd29yayk7CisKKwlza2JfcXVl dWVfaGVhZF9pbml0KCZheF9sb2NhbC0+dHhfd2FpdF9xKTsKKworCXNucHJpbnRmKHBoeV9pZCwg TUlJX0JVU19JRF9TSVpFICsgMywgUEhZX0lEX0ZNVCwKKwkJIGF4X2xvY2FsLT5tZGlvYnVzLT5p ZCwgQVg4ODc5NkNfUEhZX0lEKTsKKwlheF9sb2NhbC0+cGh5ZGV2ID0gcGh5X2Nvbm5lY3QoYXhf bG9jYWwtPm5kZXYsIHBoeV9pZCwKKwkJCQkgICAgICAgYXg4ODc5NmNfaGFuZGxlX2xpbmtfY2hh bmdlLAorCQkJCSAgICAgICBQSFlfSU5URVJGQUNFX01PREVfTUlJKTsKKwlpZiAoSVNfRVJSKGF4 X2xvY2FsLT5waHlkZXYpKSB7CisJCXJldCA9IFBUUl9FUlIoYXhfbG9jYWwtPnBoeWRldik7CisJ CWdvdG8gZXJyOworCX0KKwlheF9sb2NhbC0+cGh5ZGV2LT5pcnEgPSBQSFlfUE9MTDsKKworCXJl dCA9IGRldm1fcmVnaXN0ZXJfbmV0ZGV2KCZzcGktPmRldiwgbmRldik7CisJaWYgKHJldCkgewor CQlkZXZfZXJyKCZzcGktPmRldiwgImZhaWxlZCB0byByZWdpc3RlciBhIG5ldHdvcmsgZGV2aWNl XG4iKTsKKwkJZ290byBlcnJfcGh5X2RpczsKKwl9CisKKwluZXRpZl9pbmZvKGF4X2xvY2FsLCBw cm9iZSwgbmRldiwgIiVzICVzIHJlZ2lzdGVyZWRcbiIsCisJCSAgIGRldl9kcml2ZXJfc3RyaW5n KCZzcGktPmRldiksCisJCSAgIGRldl9uYW1lKCZzcGktPmRldikpOworCXBoeV9hdHRhY2hlZF9p bmZvKGF4X2xvY2FsLT5waHlkZXYpOworCisJcmV0dXJuIDA7CisKK2Vycl9waHlfZGlzOgorCXBo eV9kaXNjb25uZWN0KGF4X2xvY2FsLT5waHlkZXYpOworZXJyOgorCXJldHVybiByZXQ7Cit9CisK K3N0YXRpYyBpbnQgYXg4ODc5NmNfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCit7CisJ c3RydWN0IGF4ODg3OTZjX2RldmljZSAqYXhfbG9jYWwgPSBkZXZfZ2V0X2RydmRhdGEoJnNwaS0+ ZGV2KTsKKwlzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IGF4X2xvY2FsLT5uZGV2OworCisJcGh5 X2Rpc2Nvbm5lY3QobmRldi0+cGh5ZGV2KTsKKworCWNhbmNlbF93b3JrX3N5bmMoJmF4X2xvY2Fs LT5heF93b3JrKTsKKworCW5ldGlmX2luZm8oYXhfbG9jYWwsIHByb2JlLCBuZGV2LCAicmVtb3Zp bmcgbmV0d29yayBkZXZpY2UgJXMgJXNcbiIsCisJCSAgIGRldl9kcml2ZXJfc3RyaW5nKCZzcGkt PmRldiksCisJCSAgIGRldl9uYW1lKCZzcGktPmRldikpOworCisJcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGF4ODg3OTZjX2R0X2lkc1tdID0geworCXsg LmNvbXBhdGlibGUgPSAiYXNpeCxheDg4Nzk2YyIgfSwKKwl7fSwKK307CitNT0RVTEVfREVWSUNF X1RBQkxFKG9mLCBheDg4Nzk2Y19kdF9pZHMpOworCitzdGF0aWMgY29uc3Qgc3RydWN0IHNwaV9k ZXZpY2VfaWQgYXNpeF9pZFtdID0geworCXsgImF4ODg3OTZjIiwgMCB9LAorCXsgfQorfTsKK01P RFVMRV9ERVZJQ0VfVEFCTEUoc3BpLCBhc2l4X2lkKTsKKworc3RhdGljIHN0cnVjdCBzcGlfZHJp dmVyIGF4ODg3OTZjX3NwaV9kcml2ZXIgPSB7CisJLmRyaXZlciA9IHsKKwkJLm5hbWUgPSBEUlZf TkFNRSwKKwkJLm9mX21hdGNoX3RhYmxlID0gb2ZfbWF0Y2hfcHRyKGF4ODg3OTZjX2R0X2lkcyks CisJfSwKKwkucHJvYmUgPSBheDg4Nzk2Y19wcm9iZSwKKwkucmVtb3ZlID0gYXg4ODc5NmNfcmVt b3ZlLAorCS5pZF90YWJsZSA9IGFzaXhfaWQsCit9OworCitzdGF0aWMgX19pbml0IGludCBheDg4 Nzk2Y19zcGlfaW5pdCh2b2lkKQoreworCWludCByZXQ7CisKKwliaXRtYXBfemVybyhheDg4Nzk2 Y19ub19yZWdzX21hc2ssIEFYODg3OTZDX1JFR0RVTVBfTEVOKTsKKwlyZXQgPSBiaXRtYXBfcGFy c2Uobm9fcmVnc19saXN0LCAzNSwKKwkJCSAgIGF4ODg3OTZjX25vX3JlZ3NfbWFzaywgQVg4ODc5 NkNfUkVHRFVNUF9MRU4pOworCWlmIChyZXQpIHsKKwkJYml0bWFwX2ZpbGwoYXg4ODc5NmNfbm9f cmVnc19tYXNrLCBBWDg4Nzk2Q19SRUdEVU1QX0xFTik7CisJCXByX2VycigiSW52YWxpZCBiaXRt YXAgZGVzY3JpcHRpb24sIG1hc2tpbmcgYWxsIHJlZ2lzdGVyc1xuIik7CisJfQorCisJcmV0dXJu IHNwaV9yZWdpc3Rlcl9kcml2ZXIoJmF4ODg3OTZjX3NwaV9kcml2ZXIpOworfQorCitzdGF0aWMg X19leGl0IHZvaWQgYXg4ODc5NmNfc3BpX2V4aXQodm9pZCkKK3sKKwlzcGlfdW5yZWdpc3Rlcl9k cml2ZXIoJmF4ODg3OTZjX3NwaV9kcml2ZXIpOworfQorCittb2R1bGVfaW5pdChheDg4Nzk2Y19z cGlfaW5pdCk7Cittb2R1bGVfZXhpdChheDg4Nzk2Y19zcGlfZXhpdCk7CisKK01PRFVMRV9BVVRI T1IoIkFTSVgiKTsKK01PRFVMRV9ERVNDUklQVElPTigiQVNJWCBBWDg4Nzk2QyBTUEkgRXRoZXJu ZXQgZHJpdmVyIik7CitNT0RVTEVfTElDRU5TRSgiR1BMIik7CmRpZmYgLS1naXQgYS9kcml2ZXJz L25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0 L2FzaXgvYXg4ODc5NmNfbWFpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMC4uODAyNjNjM2NlZjc1Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9uZXQvZXRoZXJu ZXQvYXNpeC9heDg4Nzk2Y19tYWluLmgKQEAgLTAsMCArMSw1NjggQEAKKy8qIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgKi8KKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAg QVNJWCBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbgorICogQ29weXJpZ2h0IChjKSAyMDIwIFNhbXN1 bmcgRWxlY3Ryb25pY3MKKyAqCisgKiBBU0lYIEFYODg3OTZDIFNQSSBGYXN0IEV0aGVybmV0IExp bnV4IGRyaXZlcgorICovCisKKyNpZm5kZWYgX0FYODg3OTZDX01BSU5fSAorI2RlZmluZSBfQVg4 ODc5NkNfTUFJTl9ICisKKyNpbmNsdWRlIDxsaW51eC9uZXRkZXZpY2UuaD4KKyNpbmNsdWRlIDxs aW51eC9taWkuaD4KKworI2luY2x1ZGUgImF4ODg3OTZjX3NwaS5oIgorCisvKiBUaGVzZSBpZGVu dGlmeSB0aGUgZHJpdmVyIGJhc2UgdmVyc2lvbiBhbmQgbWF5IG5vdCBiZSByZW1vdmVkLiAqLwor I2RlZmluZSBEUlZfTkFNRQkiYXg4ODc5NmMiCisjZGVmaW5lIEFEUF9OQU1FCSJBU0lYIEFYODg3 OTZDIFNQSSBFdGhlcm5ldCBBZGFwdGVyIgorCisjZGVmaW5lIFRYX1FVRVVFX0hJR0hfV0FURVIJ CTQ1CS8qIFR4IHF1ZXVlIGhpZ2ggd2F0ZXIgbWFyayAqLworI2RlZmluZSBUWF9RVUVVRV9MT1df V0FURVIJCTIwCS8qIFR4IHF1ZXVlIGxvdyB3YXRlciBtYXJrICovCisKKyNkZWZpbmUgQVg4ODc5 NkNfUkVHRFVNUF9MRU4JCTI1NgorI2RlZmluZSBBWDg4Nzk2Q19QSFlfUkVHRFVNUF9MRU4JMTQK KyNkZWZpbmUgQVg4ODc5NkNfUEhZX0lECQkJMHgxMAorCisjZGVmaW5lIFRYX09WRVJIRUFECQkJ OAorI2RlZmluZSBUWF9FT1BfU0laRQkJCTQKKworI2RlZmluZSBBWF9NQ0FTVF9GSUxURVJfU0la RQkJOAorI2RlZmluZSBBWF9NQVhfTUNBU1QJCQk2NAorI2RlZmluZSBBWF9NQVhfQ0xLICAgICAg ICAgICAgICAgICAgICAgIDgwMDAwMDAwCisjZGVmaW5lIFRYX0hEUl9TT1BfRElDRgkJCTB4ODAw MAorI2RlZmluZSBUWF9IRFJfU09QX0NQSEkJCQkweDQwMDAKKyNkZWZpbmUgVFhfSERSX1NPUF9J TlQJCQkweDIwMDAKKyNkZWZpbmUgVFhfSERSX1NPUF9NREVRCQkJMHgxMDAwCisjZGVmaW5lIFRY X0hEUl9TT1BfUEtUTEVOCQkweDA3RkYKKyNkZWZpbmUgVFhfSERSX1NPUF9TRVFOVU0JCTB4Rjgw MAorI2RlZmluZSBUWF9IRFJfU09QX1BLVExFTkJBUgkJMHgwN0ZGCisKKyNkZWZpbmUgVFhfSERS X1NFR19GUwkJCTB4ODAwMAorI2RlZmluZSBUWF9IRFJfU0VHX0xTCQkJMHg0MDAwCisjZGVmaW5l IFRYX0hEUl9TRUdfU0VHTlVNCQkweDM4MDAKKyNkZWZpbmUgVFhfSERSX1NFR19TRUdMRU4JCTB4 MDcwMAorI2RlZmluZSBUWF9IRFJfU0VHX0VPRlNUCQkweEMwMDAKKyNkZWZpbmUgVFhfSERSX1NF R19TT0ZTVAkJMHgzODAwCisjZGVmaW5lIFRYX0hEUl9TRUdfU0VHTEVOQkFSCQkweDA3RkYKKwor I2RlZmluZSBUWF9IRFJfRU9QX1NFUU5VTQkJMHhGODAwCisjZGVmaW5lIFRYX0hEUl9FT1BfUEtU TEVOCQkweDA3RkYKKyNkZWZpbmUgVFhfSERSX0VPUF9TRVFOVU1CQVIJCTB4RjgwMAorI2RlZmlu ZSBUWF9IRFJfRU9QX1BLVExFTkJBUgkJMHgwN0ZGCisKKy8qIFJ4IGhlYWRlciBmaWVsZHMgbWFz ayAqLworI2RlZmluZSBSWF9IRFIxX01DQkMJCQkweDgwMDAKKyNkZWZpbmUgUlhfSERSMV9TVFVG Rl9QS1QJCTB4NDAwMAorI2RlZmluZSBSWF9IRFIxX01JSV9FUlIJCQkweDIwMDAKKyNkZWZpbmUg UlhfSERSMV9DUkNfRVJSCQkJMHgxMDAwCisjZGVmaW5lIFJYX0hEUjFfUEtUX0xFTgkJCTB4MDdG RgorCisjZGVmaW5lIFJYX0hEUjJfU0VRX05VTQkJCTB4RjgwMAorI2RlZmluZSBSWF9IRFIyX1BL VF9MRU5fQkFSCQkweDdGRkYKKworI2RlZmluZSBSWF9IRFIzX1BFCQkJMHg4MDAwCisjZGVmaW5l IFJYX0hEUjNfTDNfVFlQRV9JUFY0VjYJCTB4NjAwMAorI2RlZmluZSBSWF9IRFIzX0wzX1RZUEVf SVAJCTB4NDAwMAorI2RlZmluZSBSWF9IRFIzX0wzX1RZUEVfSVBWNgkJMHgyMDAwCisjZGVmaW5l IFJYX0hEUjNfTDRfVFlQRV9JQ01QVjYJCTB4MTQwMAorI2RlZmluZSBSWF9IRFIzX0w0X1RZUEVf VENQCQkweDEwMDAKKyNkZWZpbmUgUlhfSERSM19MNF9UWVBFX0lHTVAJCTB4MGMwMAorI2RlZmlu ZSBSWF9IRFIzX0w0X1RZUEVfSUNNUAkJMHgwODAwCisjZGVmaW5lIFJYX0hEUjNfTDRfVFlQRV9V RFAJCTB4MDQwMAorI2RlZmluZSBSWF9IRFIzX0wzX0VSUgkJCTB4MDIwMAorI2RlZmluZSBSWF9I RFIzX0w0X0VSUgkJCTB4MDEwMAorI2RlZmluZSBSWF9IRFIzX1BSSU9SSVRZKHgpCQkoKHgpIDw8 IDQpCisjZGVmaW5lIFJYX0hEUjNfU1RSSVAJCQkweDAwMDgKKyNkZWZpbmUgUlhfSERSM19WTEFO X0lECQkJMHgwMDA3CisKK3N0cnVjdCBheDg4Nzk2Y19wY3B1X3N0YXRzIHsKKwl1NjRfc3RhdHNf dCByeF9wYWNrZXRzOworCXU2NF9zdGF0c190IHJ4X2J5dGVzOworCXU2NF9zdGF0c190IHR4X3Bh Y2tldHM7CisJdTY0X3N0YXRzX3QgdHhfYnl0ZXM7CisJc3RydWN0IHU2NF9zdGF0c19zeW5jIHN5 bmNwOworCXUzMiByeF9kcm9wcGVkOworCXUzMiB0eF9kcm9wcGVkOworCXUzMiByeF9mcmFtZV9l cnJvcnM7CisJdTMyIHJ4X2NyY19lcnJvcnM7Cit9OworCitzdHJ1Y3QgYXg4ODc5NmNfZGV2aWNl IHsKKwlzdHJ1Y3Qgc3BpX2RldmljZQkqc3BpOworCXN0cnVjdCBuZXRfZGV2aWNlCSpuZGV2Owor CXN0cnVjdCBheDg4Nzk2Y19wY3B1X3N0YXRzIF9fcGVyY3B1ICpzdGF0czsKKworCXN0cnVjdCB3 b3JrX3N0cnVjdAlheF93b3JrOworCisJc3RydWN0IG11dGV4CQlzcGlfbG9jazsgLyogZGV2aWNl IGFjY2VzcyAqLworCisJc3RydWN0IHNrX2J1ZmZfaGVhZAl0eF93YWl0X3E7CisKKwlzdHJ1Y3Qg YXhzcGlfZGF0YQlheF9zcGk7CisKKwlzdHJ1Y3QgbWlpX2J1cwkJKm1kaW9idXM7CisJc3RydWN0 IHBoeV9kZXZpY2UJKnBoeWRldjsKKworCWludAkJCW1zZ19lbmFibGU7CisKKwl1MTYJCQlzZXFf bnVtOworCisJdTgJCQltdWx0aV9maWx0ZXJbQVhfTUNBU1RfRklMVEVSX1NJWkVdOworCisJaW50 CQkJbGluazsKKwlpbnQJCQlzcGVlZDsKKwlpbnQJCQlkdXBsZXg7CisJaW50CQkJcGF1c2U7CisJ aW50CQkJYXN5bV9wYXVzZTsKKwlpbnQJCQlmbG93Y3RybDsKKwkJI2RlZmluZSBBWF9GQ19OT05F CQkwCisJCSNkZWZpbmUgQVhfRkNfUlgJCUJJVCgwKQorCQkjZGVmaW5lIEFYX0ZDX1RYCQlCSVQo MSkKKwkJI2RlZmluZSBBWF9GQ19BTkVHCQlCSVQoMikKKworCXUzMgkJCXByaXZfZmxhZ3M7CisJ CSNkZWZpbmUgQVhfQ0FQX0NPTVAJCUJJVCgwKQorCQkjZGVmaW5lIEFYX1BSSVZfRkxBR1NfTUFT SwkoQVhfQ0FQX0NPTVApCisKKwl1bnNpZ25lZCBsb25nCQlmbGFnczsKKwkJI2RlZmluZSBFVkVO VF9JTlRSCQlCSVQoMCkKKwkJI2RlZmluZSBFVkVOVF9UWAkJQklUKDEpCisJCSNkZWZpbmUgRVZF TlRfU0VUX01VTFRJCQlCSVQoMikKKworfTsKKworI2RlZmluZSB0b19heDg4Nzk2Y19kZXZpY2Uo bmRldikgKChzdHJ1Y3QgYXg4ODc5NmNfZGV2aWNlICopbmV0ZGV2X3ByaXYobmRldikpCisKK2Vu dW0gc2tiX3N0YXRlIHsKKwlpbGxlZ2FsID0gMCwKKwl0eF9kb25lLAorCXJ4X2RvbmUsCisJcnhf ZXJyLAorfTsKKworc3RydWN0IHNrYl9kYXRhIHsKKwllbnVtIHNrYl9zdGF0ZSBzdGF0ZTsKKwlz aXplX3QgbGVuOworfTsKKworLyogQTg4Nzk2QyByZWdpc3RlciBkZWZpbml0aW9uICovCisJLyog RGVmaW5pdGlvbiBvZiBQQUdFMCAqLworI2RlZmluZSBQMF9QU1IJCSgweDAwKQorCSNkZWZpbmUg UFNSX0RFVl9SRUFEWQkJQklUKDcpCisJI2RlZmluZSBQU1JfUkVTRVQJCSgwIDw8IDE1KQorCSNk ZWZpbmUgUFNSX1JFU0VUX0NMUgkJQklUKDE1KQorI2RlZmluZSBQMF9CT1IJCSgweDAyKQorI2Rl ZmluZSBQMF9GRVIJCSgweDA0KQorCSNkZWZpbmUgRkVSX0lQQUxNCQlCSVQoMCkKKwkjZGVmaW5l IEZFUl9EQ1JDCQlCSVQoMSkKKwkjZGVmaW5lIEZFUl9SSDNNCQlCSVQoMikKKwkjZGVmaW5lIEZF Ul9IRUFERVJTV0FQCQlCSVQoNykKKwkjZGVmaW5lIEZFUl9XU1dBUAkJQklUKDgpCisJI2RlZmlu ZSBGRVJfQlNXQVAJCUJJVCg5KQorCSNkZWZpbmUgRkVSX0lOVEhJCQlCSVQoMTApCisJI2RlZmlu ZSBGRVJfSU5UTE8JCSgwIDw8IDEwKQorCSNkZWZpbmUgRkVSX0lSUV9QVUxMCQlCSVQoMTEpCisJ I2RlZmluZSBGRVJfUlhFTgkJQklUKDE0KQorCSNkZWZpbmUgRkVSX1RYRU4JCUJJVCgxNSkKKyNk ZWZpbmUgUDBfSVNSCQkoMHgwNikKKwkjZGVmaW5lIElTUl9SWFBLVAkJQklUKDApCisJI2RlZmlu ZSBJU1JfTURRCQkJQklUKDQpCisJI2RlZmluZSBJU1JfVFhUCQkJQklUKDUpCisJI2RlZmluZSBJ U1JfVFhQQUdFUwkJQklUKDYpCisJI2RlZmluZSBJU1JfVFhFUlIJCUJJVCg4KQorCSNkZWZpbmUg SVNSX0xJTksJCUJJVCg5KQorI2RlZmluZSBQMF9JTVIJCSgweDA4KQorCSNkZWZpbmUgSU1SX1JY UEtUCQlCSVQoMCkKKwkjZGVmaW5lIElNUl9NRFEJCQlCSVQoNCkKKwkjZGVmaW5lIElNUl9UWFQJ CQlCSVQoNSkKKwkjZGVmaW5lIElNUl9UWFBBR0VTCQlCSVQoNikKKwkjZGVmaW5lIElNUl9UWEVS UgkJQklUKDgpCisJI2RlZmluZSBJTVJfTElOSwkJQklUKDkpCisJI2RlZmluZSBJTVJfTUFTS0FM TAkJKDB4RkZGRikKKwkjZGVmaW5lIElNUl9ERUZBVUxUCQkoSU1SX1RYRVJSKQorI2RlZmluZSBQ MF9XRkNSCQkoMHgwQSkKKwkjZGVmaW5lIFdGQ1JfUE1FSU5ECQlCSVQoMCkgLyogUE1FIGluZGlj YXRpb24gKi8KKwkjZGVmaW5lIFdGQ1JfUE1FVFlQRQkJQklUKDEpIC8qIFBNRSBJL08gdHlwZSAq LworCSNkZWZpbmUgV0ZDUl9QTUVQT0wJCUJJVCgyKSAvKiBQTUUgcG9sYXJpdHkgKi8KKwkjZGVm aW5lIFdGQ1JfUE1FUlNUCQlCSVQoMykgLyogUmVzZXQgUE1FICovCisJI2RlZmluZSBXRkNSX1NM RUVQCQlCSVQoNCkgLyogRW5hYmxlIHNsZWVwIG1vZGUgKi8KKwkjZGVmaW5lIFdGQ1JfV0FLRVVQ CQlCSVQoNSkgLyogRW5hYmxlIHdha2V1cCBtb2RlICovCisJI2RlZmluZSBXRkNSX1dBSVRFVkVO VAkJQklUKDYpIC8qIFJlc2VydmVkICovCisJI2RlZmluZSBXRkNSX0NMUldBS0UJCUJJVCg3KSAv KiBDbGVhciB3YWtldXAgKi8KKwkjZGVmaW5lIFdGQ1JfTElOS0NICQlCSVQoOCkgLyogRW5hYmxl IGxpbmsgY2hhbmdlICovCisJI2RlZmluZSBXRkNSX01BR0lDUAkJQklUKDkpIC8qIEVuYWJsZSBt YWdpYyBwYWNrZXQgKi8KKwkjZGVmaW5lIFdGQ1JfV0FLRUYJCUJJVCgxMCkgLyogRW5hYmxlIHdh a2V1cCBmcmFtZSAqLworCSNkZWZpbmUgV0ZDUl9QTUVFTgkJQklUKDExKSAvKiBFbmFibGUgUE1F IHBpbiAqLworCSNkZWZpbmUgV0ZDUl9MSU5LQ0hTCQlCSVQoMTIpIC8qIExpbmsgY2hhbmdlIHN0 YXR1cyAqLworCSNkZWZpbmUgV0ZDUl9NQUdJQ1BTCQlCSVQoMTMpIC8qIE1hZ2ljIHBhY2tldCBz dGF0dXMgKi8KKwkjZGVmaW5lIFdGQ1JfV0FLRUZTCQlCSVQoMTQpIC8qIFdha2V1cCBmcmFtZSBz dGF0dXMgKi8KKwkjZGVmaW5lIFdGQ1JfUE1FUwkJQklUKDE1KSAvKiBQTUUgcGluIHN0YXR1cyAq LworI2RlZmluZSBQMF9QU0NSCQkoMHgwQykKKwkjZGVmaW5lIFBTQ1JfUFNfTUFTSwkJKDB4RkZG MCkKKwkjZGVmaW5lIFBTQ1JfUFNfRDAJCSgwKQorCSNkZWZpbmUgUFNDUl9QU19EMQkJQklUKDAp CisJI2RlZmluZSBQU0NSX1BTX0QyCQlCSVQoMSkKKwkjZGVmaW5lIFBTQ1JfRlBTCQlCSVQoMykg LyogRW5hYmxlIGZpYmVyIG1vZGUgUFMgKi8KKwkjZGVmaW5lIFBTQ1JfU1dQUwkJQklUKDQpIC8q IEVuYWJsZSBzb2Z0d2FyZSAqLworCQkJCQkJIC8qIFBTIGNvbnRyb2wgKi8KKwkjZGVmaW5lIFBT Q1JfV09MUFMJCUJJVCg1KSAvKiBFbmFibGUgV09MIFBTICovCisJI2RlZmluZSBQU0NSX1NXV09M CQlCSVQoNikgLyogRW5hYmxlIHNvZnR3YXJlIHNlbGVjdCAqLworCQkJCQkJIC8qIFdPTCBQUyAq LworCSNkZWZpbmUgUFNDUl9QSFlPU0MJCUJJVCg3KSAvKiBJbnRlcm5hbCBQSFkgT1NDIGNvbnRy b2wgKi8KKwkjZGVmaW5lIFBTQ1JfRk9GRUYJCUJJVCg4KSAvKiBGb3JjZSBQSFkgZ2VuZXJhdGUg RkVGICovCisJI2RlZmluZSBQU0NSX0ZPRgkJQklUKDkpIC8qIEZvcmNlIFBIWSBpbiBmaWJlciBt b2RlICovCisJI2RlZmluZSBQU0NSX1BIWVBECQlCSVQoMTApIC8qIFBIWSBwb3dlciBkb3duLiAq LworCQkJCQkJICAvKiBBY3RpdmUgaGlnaCAqLworCSNkZWZpbmUgUFNDUl9QSFlSU1QJCUJJVCgx MSkgLyogUEhZIHJlc2V0IHNpZ25hbC4gKi8KKwkJCQkJCSAgLyogQWN0aXZlIGxvdyAqLworCSNk ZWZpbmUgUFNDUl9QSFlDU0lMCQlCSVQoMTIpIC8qIFBIWSBjYWJsZSBlbmVyZ3kgZGV0ZWN0ICov CisJI2RlZmluZSBQU0NSX1BIWUNPRkYJCUJJVCgxMykgLyogUEhZIGNhYmxlIG9mZiAqLworCSNk ZWZpbmUgUFNDUl9QSFlMSU5LCQlCSVQoMTQpIC8qIFBIWSBsaW5rIHN0YXR1cyAqLworCSNkZWZp bmUgUFNDUl9FRVBPSwkJQklUKDE1KSAvKiBFRVBST00gbG9hZCBjb21wbGV0ZSAqLworI2RlZmlu ZSBQMF9NQUNDUgkoMHgwRSkKKwkjZGVmaW5lIE1BQ0NSX1JYRU4JCUJJVCgwKSAvKiBFbmFibGUg UlggKi8KKwkjZGVmaW5lIE1BQ0NSX0RVUExFWF9GVUxMCUJJVCgxKSAvKiAxOiBGdWxsLCAwOiBI YWxmICovCisJI2RlZmluZSBNQUNDUl9TUEVFRF8xMDAJCUJJVCgyKSAvKiAxOiAxMDBNYnBzLCAw OiAxME1icHMgKi8KKwkjZGVmaW5lIE1BQ0NSX1JYRkNfRU5BQkxFCUJJVCgzKQorCSNkZWZpbmUg TUFDQ1JfUlhGQ19NQVNLCQkweEZGRjcKKwkjZGVmaW5lIE1BQ0NSX1RYRkNfRU5BQkxFCUJJVCg0 KQorCSNkZWZpbmUgTUFDQ1JfVFhGQ19NQVNLCQkweEZGRUYKKwkjZGVmaW5lIE1BQ0NSX1BTSQkJ QklUKDYpIC8qIFNvZnR3YXJlIENhYmxlLU9mZiAqLworCQkJCQkgICAgICAgLyogUG93ZXIgU2F2 aW5nIEludGVycnVwdCAqLworCSNkZWZpbmUgTUFDQ1JfUEYJCUJJVCg3KQorCSNkZWZpbmUgTUFD Q1JfUE1NX0JJVFMJCTgKKwkjZGVmaW5lIE1BQ0NSX1BNTV9NQVNLCQkoMHgxRjAwKQorCSNkZWZp bmUgTUFDQ1JfUE1NX1JFU0VUCQlCSVQoOCkKKwkjZGVmaW5lIE1BQ0NSX1BNTV9XQUlUCQkoMiA8 PCA4KQorCSNkZWZpbmUgTUFDQ1JfUE1NX1JFQURZCQkoMyA8PCA4KQorCSNkZWZpbmUgTUFDQ1Jf UE1NX0QxCQkoNCA8PCA4KQorCSNkZWZpbmUgTUFDQ1JfUE1NX0QyCQkoNSA8PCA4KQorCSNkZWZp bmUgTUFDQ1JfUE1NX1dBS0UJCSg3IDw8IDgpCisJI2RlZmluZSBNQUNDUl9QTU1fRDFfV0FLRQko OCA8PCA4KQorCSNkZWZpbmUgTUFDQ1JfUE1NX0QyX1dBS0UJKDkgPDwgOCkKKwkjZGVmaW5lIE1B Q0NSX1BNTV9TTEVFUAkJKDEwIDw8IDgpCisJI2RlZmluZSBNQUNDUl9QTU1fUEhZX1JFU0VUCSgx MSA8PCA4KQorCSNkZWZpbmUgTUFDQ1JfUE1NX1NPRlRfRDEJKDE2IDw8IDgpCisJI2RlZmluZSBN QUNDUl9QTU1fU09GVF9EMgkoMTcgPDwgOCkKKyNkZWZpbmUgUDBfVEZCRkNSCSgweDEwKQorCSNk ZWZpbmUgVEZCRkNSX1NDSEVfRlJFRV9QQUdFCTB4RTA3RgorCSNkZWZpbmUgVEZCRkNSX0ZSRUVf UEFHRV9CSVRTCTB4MDcKKwkjZGVmaW5lIFRGQkZDUl9GUkVFX1BBR0VfTEFUQ0gJQklUKDYpCisJ I2RlZmluZSBURkJGQ1JfU0VUX0ZSRUVfUEFHRSh4KQkoKCh4KSAmIDB4M0YpIDw8IFRGQkZDUl9G UkVFX1BBR0VfQklUUykKKwkjZGVmaW5lIFRGQkZDUl9UWF9QQUdFX1NFVAlCSVQoMTMpCisJI2Rl ZmluZSBURkJGQ1JfTUFOVV9FTlRYCUJJVCgxNSkKKwkjZGVmaW5lIFRYX0ZSRUVCVUZfTUFTSwkJ MHgwMDNGCisJI2RlZmluZSBUWF9EUFRTVEFSVAkJMHg0MDAwCisKKyNkZWZpbmUgUDBfVFNOUgkJ KDB4MTIpCisJI2RlZmluZSBUWE5SX1RYQl9FUlIJCUJJVCg1KQorCSNkZWZpbmUgVFhOUl9UWEJf SURMRQkJQklUKDYpCisJI2RlZmluZSBUU05SX1BLVF9DTlQoeCkJCSgoKHgpICYgMHgzRikgPDwg OCkKKwkjZGVmaW5lIFRYTlJfVFhCX1JFSU5JVAkJQklUKDE0KQorCSNkZWZpbmUgVFNOUl9UWEJf U1RBUlQJCUJJVCgxNSkKKyNkZWZpbmUgUDBfUlREUFIJKDB4MTQpCisjZGVmaW5lIFAwX1JYQkNS MQkoMHgxNikKKwkjZGVmaW5lIFJYQkNSMV9SWEJfRElTQ0FSRAlCSVQoMTQpCisJI2RlZmluZSBS WEJDUjFfUlhCX1NUQVJUCUJJVCgxNSkKKyNkZWZpbmUgUDBfUlhCQ1IyCSgweDE4KQorCSNkZWZp bmUgUlhCQ1IyX1BLVF9NQVNLCQkoMHhGRikKKwkjZGVmaW5lIFJYQkNSMl9SWFBDX01BU0sJKDB4 N0YpCisJI2RlZmluZSBSWEJDUjJfUlhCX1JFQURZCUJJVCgxMykKKwkjZGVmaW5lIFJYQkNSMl9S WEJfSURMRQkJQklUKDE0KQorCSNkZWZpbmUgUlhCQ1IyX1JYQl9SRUlOSVQJQklUKDE1KQorI2Rl ZmluZSBQMF9SVFdDUgkoMHgxQSkKKwkjZGVmaW5lIFJUV0NSX1JYV0NfTUFTSwkJKDB4M0ZGRikK KwkjZGVmaW5lIFJUV0NSX1JYX0xBVENICQlCSVQoMTUpCisjZGVmaW5lIFAwX1JDUEhSCSgweDFD KQorCisJLyogRGVmaW5pdGlvbiBvZiBQQUdFMSAqLworI2RlZmluZSBQMV9SUFBFUgkoMHgyMikK KwkjZGVmaW5lIFJQUEVSX1JYRU4JCUJJVCgwKQorI2RlZmluZSBQMV9NUkNSCQkoMHgyOCkKKyNk ZWZpbmUgUDFfTURSCQkoMHgyQSkKKyNkZWZpbmUgUDFfUk1QUgkJKDB4MkMpCisjZGVmaW5lIFAx X1RNUFIJCSgweDJFKQorI2RlZmluZSBQMV9SWEJTUENSCSgweDMwKQorCSNkZWZpbmUgUlhCU1BD Ul9TVFVGX1dPUkRfQ05UKHgpCSgoKHgpICYgMHg3MDAwKSA+PiAxMikKKwkjZGVmaW5lIFJYQlNQ Q1JfU1RVRl9FTkFCTEUJCUJJVCgxNSkKKyNkZWZpbmUgUDFfTUNSCQkoMHgzMikKKwkjZGVmaW5l IE1DUl9TQlAJCQlCSVQoOCkKKwkjZGVmaW5lIE1DUl9TTQkJCUJJVCg5KQorCSNkZWZpbmUgTUNS X0NSQ0VOTEFOCQlCSVQoMTEpCisJI2RlZmluZSBNQ1JfU1RQCQkJQklUKDEyKQorCS8qIERlZmlu aXRpb24gb2YgUEFHRTIgKi8KKyNkZWZpbmUgUDJfQ0lSCQkoMHg0MikKKyNkZWZpbmUgUDJfUENS CQkoMHg0NCkKKwkjZGVmaW5lIFBDUl9QT0xMX0VOCQlCSVQoMCkKKwkjZGVmaW5lIFBDUl9QT0xM X0ZMT1dDVFJMCUJJVCgxKQorCSNkZWZpbmUgUENSX1BPTExfQk1DUgkJQklUKDIpCisJI2RlZmlu ZSBQQ1JfUEhZSUQoeCkJCSgoeCkgPDwgOCkKKyNkZWZpbmUgUDJfUEhZU1IJKDB4NDYpCisjZGVm aW5lIFAyX01ESU9EUgkoMHg0OCkKKyNkZWZpbmUgUDJfTURJT0NSCSgweDRBKQorCSNkZWZpbmUg TURJT0NSX1JBRERSKHgpCQkoKHgpICYgMHgxRikKKwkjZGVmaW5lIE1ESU9DUl9GQUREUih4KQkJ KCgoeCkgJiAweDFGKSA8PCA4KQorCSNkZWZpbmUgTURJT0NSX1ZBTElECQlCSVQoMTMpCisJI2Rl ZmluZSBNRElPQ1JfUkVBRAkJQklUKDE0KQorCSNkZWZpbmUgTURJT0NSX1dSSVRFCQlCSVQoMTUp CisjZGVmaW5lIFAyX0xDUjAJCSgweDRDKQorCSNkZWZpbmUgTENSX0xFRDBfRU4JCUJJVCgwKQor CSNkZWZpbmUgTENSX0xFRDBfMTAwTU9ERQlCSVQoMSkKKwkjZGVmaW5lIExDUl9MRUQwX0RVUExF WAkJQklUKDIpCisJI2RlZmluZSBMQ1JfTEVEMF9MSU5LCQlCSVQoMykKKwkjZGVmaW5lIExDUl9M RUQwX0FDVAkJQklUKDQpCisJI2RlZmluZSBMQ1JfTEVEMF9DT0wJCUJJVCg1KQorCSNkZWZpbmUg TENSX0xFRDBfMTBNT0RFCQlCSVQoNikKKwkjZGVmaW5lIExDUl9MRUQwX0RVUENPTAkJQklUKDcp CisJI2RlZmluZSBMQ1JfTEVEMV9FTgkJQklUKDgpCisJI2RlZmluZSBMQ1JfTEVEMV8xMDBNT0RF CUJJVCg5KQorCSNkZWZpbmUgTENSX0xFRDFfRFVQTEVYCQlCSVQoMTApCisJI2RlZmluZSBMQ1Jf TEVEMV9MSU5LCQlCSVQoMTEpCisJI2RlZmluZSBMQ1JfTEVEMV9BQ1QJCUJJVCgxMikKKwkjZGVm aW5lIExDUl9MRUQxX0NPTAkJQklUKDEzKQorCSNkZWZpbmUgTENSX0xFRDFfMTBNT0RFCQlCSVQo MTQpCisJI2RlZmluZSBMQ1JfTEVEMV9EVVBDT0wJCUJJVCgxNSkKKyNkZWZpbmUgUDJfTENSMQkJ KDB4NEUpCisJI2RlZmluZSBMQ1JfTEVEMl9NQVNLCQkoMHhGRjAwKQorCSNkZWZpbmUgTENSX0xF RDJfRU4JCUJJVCgwKQorCSNkZWZpbmUgTENSX0xFRDJfMTAwTU9ERQlCSVQoMSkKKwkjZGVmaW5l IExDUl9MRUQyX0RVUExFWAkJQklUKDIpCisJI2RlZmluZSBMQ1JfTEVEMl9MSU5LCQlCSVQoMykK KwkjZGVmaW5lIExDUl9MRUQyX0FDVAkJQklUKDQpCisJI2RlZmluZSBMQ1JfTEVEMl9DT0wJCUJJ VCg1KQorCSNkZWZpbmUgTENSX0xFRDJfMTBNT0RFCQlCSVQoNikKKwkjZGVmaW5lIExDUl9MRUQy X0RVUENPTAkJQklUKDcpCisjZGVmaW5lIFAyX0lQR0NSCSgweDUwKQorI2RlZmluZSBQMl9DUklS CQkoMHg1MikKKyNkZWZpbmUgUDJfRkxIV0NSCSgweDU0KQorI2RlZmluZSBQMl9SWENSCQkoMHg1 NikKKwkjZGVmaW5lIFJYQ1JfUFJPCQlCSVQoMCkKKwkjZGVmaW5lIFJYQ1JfQU1BTEwJCUJJVCgx KQorCSNkZWZpbmUgUlhDUl9TRVAJCUJJVCgyKQorCSNkZWZpbmUgUlhDUl9BQgkJCUJJVCgzKQor CSNkZWZpbmUgUlhDUl9BTQkJCUJJVCg0KQorCSNkZWZpbmUgUlhDUl9BUAkJCUJJVCg1KQorCSNk ZWZpbmUgUlhDUl9BUlAJCUJJVCg2KQorI2RlZmluZSBQMl9KTENSCQkoMHg1OCkKKyNkZWZpbmUg UDJfTVBMUgkJKDB4NUMpCisKKwkvKiBEZWZpbml0aW9uIG9mIFBBR0UzICovCisjZGVmaW5lIFAz X01BQ0FTUjAJKDB4NjIpCisJI2RlZmluZSBQM19NQUNBU1IoeCkJCShQM19NQUNBU1IwICsgMiAq ICh4KSkKKwkjZGVmaW5lIE1BQ0FTUl9MT1dCWVRFX01BU0sJMHgwMEZGCisJI2RlZmluZSBNQUNB U1JfSElHSF9CSVRTCTB4MDgKKyNkZWZpbmUgUDNfTUFDQVNSMQkoMHg2NCkKKyNkZWZpbmUgUDNf TUFDQVNSMgkoMHg2NikKKyNkZWZpbmUgUDNfTUZBUjAxCSgweDY4KQorI2RlZmluZSBQM19NRkFS X0JBU0UJKDB4NjgpCisJI2RlZmluZSBQM19NRkFSKHgpCQkoUDNfTUZBUl9CQVNFICsgMiAqICh4 KSkKKworI2RlZmluZSBQM19NRkFSMjMJKDB4NkEpCisjZGVmaW5lIFAzX01GQVI0NQkoMHg2QykK KyNkZWZpbmUgUDNfTUZBUjY3CSgweDZFKQorI2RlZmluZSBQM19WSUQwRlIJKDB4NzApCisjZGVm aW5lIFAzX1ZJRDFGUgkoMHg3MikKKyNkZWZpbmUgUDNfRUVDU1IJKDB4NzQpCisjZGVmaW5lIFAz X0VFRFIJCSgweDc2KQorI2RlZmluZSBQM19FRUNSCQkoMHg3OCkKKwkjZGVmaW5lIEVFQ1JfQURE Ul9NQVNLCQkoMHgwMEZGKQorCSNkZWZpbmUgRUVDUl9SRUFEX0FDVAkJQklUKDgpCisJI2RlZmlu ZSBFRUNSX1dSSVRFX0FDVAkJQklUKDkpCisJI2RlZmluZSBFRUNSX1dSSVRFX0RJU0FCTEUJQklU KDEwKQorCSNkZWZpbmUgRUVDUl9XUklURV9FTkFCTEUJQklUKDExKQorCSNkZWZpbmUgRUVDUl9F RV9SRUFEWQkJQklUKDEzKQorCSNkZWZpbmUgRUVDUl9SRUxPQUQJCUJJVCgxNCkKKwkjZGVmaW5l IEVFQ1JfUkVTRVQJCUJJVCgxNSkKKyNkZWZpbmUgUDNfVFBDUgkJKDB4N0EpCisJI2RlZmluZSBU UENSX1BBVFRfTUFTSwkJKDB4RkYpCisJI2RlZmluZSBUUENSX1JBTkRfUEtUX0VOCUJJVCgxNCkK KwkjZGVmaW5lIFRQQ1JfRklYRURfUEtUX0VOCUJJVCgxNSkKKyNkZWZpbmUgUDNfVFBMUgkJKDB4 N0MpCisJLyogRGVmaW5pdGlvbiBvZiBQQUdFNCAqLworI2RlZmluZSBQNF9TUElDUgkoMHg4QSkK KwkjZGVmaW5lIFNQSUNSX1JDRU4JCUJJVCgwKQorCSNkZWZpbmUgU1BJQ1JfUUNFTgkJQklUKDEp CisJI2RlZmluZSBTUElDUl9SQlJFCQlCSVQoMykKKwkjZGVmaW5lIFNQSUNSX1BNTQkJQklUKDQp CisJI2RlZmluZSBTUElDUl9MT09QQkFDSwkJQklUKDgpCisJI2RlZmluZSBTUElDUl9DT1JFX1JF U19DTFIJQklUKDEwKQorCSNkZWZpbmUgU1BJQ1JfU1BJX1JFU19DTFIJQklUKDExKQorI2RlZmlu ZSBQNF9TUElJU01SCSgweDhDKQorCisjZGVmaW5lIFA0X0NPRVJDUjAJKDB4OTIpCisJI2RlZmlu ZSBDT0VSQ1IwX1JYSVBDRQkJQklUKDApCisJI2RlZmluZSBDT0VSQ1IwX1JYSVBWRQkJQklUKDEp CisJI2RlZmluZSBDT0VSQ1IwX1JYVjZQRQkJQklUKDIpCisJI2RlZmluZSBDT0VSQ1IwX1JYVENQ RQkJQklUKDMpCisJI2RlZmluZSBDT0VSQ1IwX1JYVURQRQkJQklUKDQpCisJI2RlZmluZSBDT0VS Q1IwX1JYSUNNUAkJQklUKDUpCisJI2RlZmluZSBDT0VSQ1IwX1JYSUdNUAkJQklUKDYpCisJI2Rl ZmluZSBDT0VSQ1IwX1JYSUNWNgkJQklUKDcpCisKKwkjZGVmaW5lIENPRVJDUjBfUlhUQ1BWNgkJ QklUKDgpCisJI2RlZmluZSBDT0VSQ1IwX1JYVURQVjYJCUJJVCg5KQorCSNkZWZpbmUgQ09FUkNS MF9SWElDTVY2CQlCSVQoMTApCisJI2RlZmluZSBDT0VSQ1IwX1JYSUdNVjYJCUJJVCgxMSkKKwkj ZGVmaW5lIENPRVJDUjBfUlhJQ1Y2VjYJQklUKDEyKQorCisJI2RlZmluZSBDT0VSQ1IwX0RFRkFV TFQJCShDT0VSQ1IwX1JYSVBDRSB8IENPRVJDUjBfUlhWNlBFIHwgXAorCQkJCQkgQ09FUkNSMF9S WFRDUEUgfCBDT0VSQ1IwX1JYVURQRSB8IFwKKwkJCQkJIENPRVJDUjBfUlhUQ1BWNiB8IENPRVJD UjBfUlhVRFBWNikKKyNkZWZpbmUgUDRfQ09FUkNSMQkoMHg5NCkKKwkjZGVmaW5lIENPRVJDUjFf SVBDRURQCQlCSVQoMCkKKwkjZGVmaW5lIENPRVJDUjFfSVBWRURQCQlCSVQoMSkKKwkjZGVmaW5l IENPRVJDUjFfVjZWRURQCQlCSVQoMikKKwkjZGVmaW5lIENPRVJDUjFfVENQRURQCQlCSVQoMykK KwkjZGVmaW5lIENPRVJDUjFfVURQRURQCQlCSVQoNCkKKwkjZGVmaW5lIENPRVJDUjFfSUNNUERQ CQlCSVQoNSkKKwkjZGVmaW5lIENPRVJDUjFfSUdNUERQCQlCSVQoNikKKwkjZGVmaW5lIENPRVJD UjFfSUNWNkRQCQlCSVQoNykKKwkjZGVmaW5lIENPRVJDUjFfUlg2NFRFCQlCSVQoOCkKKwkjZGVm aW5lIENPRVJDUjFfUlhQUFBFCQlCSVQoOSkKKwkjZGVmaW5lIENPRVJDUjFfVENQNkRQCQlCSVQo MTApCisJI2RlZmluZSBDT0VSQ1IxX1VEUDZEUAkJQklUKDExKQorCSNkZWZpbmUgQ09FUkNSMV9J QzZEUAkJQklUKDEyKQorCSNkZWZpbmUgQ09FUkNSMV9JRzZEUAkJQklUKDEzKQorCSNkZWZpbmUg Q09FUkNSMV9JQ1Y2NkRQCQlCSVQoMTQpCisJI2RlZmluZSBDT0VSQ1IxX1JQQ0UJCUJJVCgxNSkK KworCSNkZWZpbmUgQ09FUkNSMV9ERUZBVUxUCQkoQ09FUkNSMV9SWFBQUEUpCisKKyNkZWZpbmUg UDRfQ09FVENSMAkoMHg5NikKKwkjZGVmaW5lIENPRVRDUjBfVFhJUAkJQklUKDApCisJI2RlZmlu ZSBDT0VUQ1IwX1RYVENQCQlCSVQoMSkKKwkjZGVmaW5lIENPRVRDUjBfVFhVRFAJCUJJVCgyKQor CSNkZWZpbmUgQ09FVENSMF9UWElDTVAJCUJJVCgzKQorCSNkZWZpbmUgQ09FVENSMF9UWElHTVAJ CUJJVCg0KQorCSNkZWZpbmUgQ09FVENSMF9UWElDVjYJCUJJVCg1KQorCSNkZWZpbmUgQ09FVENS MF9UWFRDUFY2CQlCSVQoOCkKKwkjZGVmaW5lIENPRVRDUjBfVFhVRFBWNgkJQklUKDkpCisJI2Rl ZmluZSBDT0VUQ1IwX1RYSUNNVjYJCUJJVCgxMCkKKwkjZGVmaW5lIENPRVRDUjBfVFhJR01WNgkJ QklUKDExKQorCSNkZWZpbmUgQ09FVENSMF9UWElDVjZWNglCSVQoMTIpCisKKwkjZGVmaW5lIENP RVRDUjBfREVGQVVMVAkJKENPRVRDUjBfVFhJUCB8IENPRVRDUjBfVFhUQ1AgfCBcCisJCQkJCSBD T0VUQ1IwX1RYVURQIHwgQ09FVENSMF9UWFRDUFY2IHwgXAorCQkJCQkgQ09FVENSMF9UWFVEUFY2 KQorI2RlZmluZSBQNF9DT0VUQ1IxCSgweDk4KQorCSNkZWZpbmUgQ09FVENSMV9UWDY0VEUJCUJJ VCgwKQorCSNkZWZpbmUgQ09FVENSMV9UWFBQUEUJCUJJVCgxKQorCisjZGVmaW5lIFA0X0NPRUNF RFIJKDB4OUEpCisjZGVmaW5lIFA0X0wyQ0VDUgkoMHg5QykKKworCS8qIERlZmluaXRpb24gb2Yg UEFHRTUgKi8KKyNkZWZpbmUgUDVfV0ZUUgkJKDB4QTIpCisJI2RlZmluZSBXRlRSXzJNUwkJKDB4 MDEpCisJI2RlZmluZSBXRlRSXzRNUwkJKDB4MDIpCisJI2RlZmluZSBXRlRSXzhNUwkJKDB4MDMp CisJI2RlZmluZSBXRlRSXzE2TVMJCSgweDA0KQorCSNkZWZpbmUgV0ZUUl8zMk1TCQkoMHgwNSkK KwkjZGVmaW5lIFdGVFJfNjRNUwkJKDB4MDYpCisJI2RlZmluZSBXRlRSXzEyOE1TCQkoMHgwNykK KwkjZGVmaW5lIFdGVFJfMjU2TVMJCSgweDA4KQorCSNkZWZpbmUgV0ZUUl81MTJNUwkJKDB4MDkp CisJI2RlZmluZSBXRlRSXzEwMjRNUwkJKDB4MEEpCisJI2RlZmluZSBXRlRSXzIwNDhNUwkJKDB4 MEIpCisJI2RlZmluZSBXRlRSXzQwOTZNUwkJKDB4MEMpCisJI2RlZmluZSBXRlRSXzgxOTJNUwkJ KDB4MEQpCisJI2RlZmluZSBXRlRSXzE2Mzg0TVMJCSgweDBFKQorCSNkZWZpbmUgV0ZUUl8zMjc2 OE1TCQkoMHgwRikKKyNkZWZpbmUgUDVfV0ZDQ1IJKDB4QTQpCisjZGVmaW5lIFA1X1dGQ1IwMwko MHhBNikKKwkjZGVmaW5lIFdGQ1IwM19GMF9FTgkJQklUKDApCisJI2RlZmluZSBXRkNSMDNfRjFf RU4JCUJJVCg0KQorCSNkZWZpbmUgV0ZDUjAzX0YyX0VOCQlCSVQoOCkKKwkjZGVmaW5lIFdGQ1Iw M19GM19FTgkJQklUKDEyKQorI2RlZmluZSBQNV9XRkNSNDcJKDB4QTgpCisJI2RlZmluZSBXRkNS NDdfRjRfRU4JCUJJVCgwKQorCSNkZWZpbmUgV0ZDUjQ3X0Y1X0VOCQlCSVQoNCkKKwkjZGVmaW5l IFdGQ1I0N19GNl9FTgkJQklUKDgpCisJI2RlZmluZSBXRkNSNDdfRjdfRU4JCUJJVCgxMikKKyNk ZWZpbmUgUDVfV0YwQk1SMAkoMHhBQSkKKyNkZWZpbmUgUDVfV0YwQk1SMQkoMHhBQykKKyNkZWZp bmUgUDVfV0YwQ1IJKDB4QUUpCisjZGVmaW5lIFA1X1dGME9CUgkoMHhCMCkKKyNkZWZpbmUgUDVf V0YxQk1SMAkoMHhCMikKKyNkZWZpbmUgUDVfV0YxQk1SMQkoMHhCNCkKKyNkZWZpbmUgUDVfV0Yx Q1IJKDB4QjYpCisjZGVmaW5lIFA1X1dGMU9CUgkoMHhCOCkKKyNkZWZpbmUgUDVfV0YyQk1SMAko MHhCQSkKKyNkZWZpbmUgUDVfV0YyQk1SMQkoMHhCQykKKworCS8qIERlZmluaXRpb24gb2YgUEFH RTYgKi8KKyNkZWZpbmUgUDZfV0YyQ1IJKDB4QzIpCisjZGVmaW5lIFA2X1dGMk9CUgkoMHhDNCkK KyNkZWZpbmUgUDZfV0YzQk1SMAkoMHhDNikKKyNkZWZpbmUgUDZfV0YzQk1SMQkoMHhDOCkKKyNk ZWZpbmUgUDZfV0YzQ1IJKDB4Q0EpCisjZGVmaW5lIFA2X1dGM09CUgkoMHhDQykKKyNkZWZpbmUg UDZfV0Y0Qk1SMAkoMHhDRSkKKyNkZWZpbmUgUDZfV0Y0Qk1SMQkoMHhEMCkKKyNkZWZpbmUgUDZf V0Y0Q1IJKDB4RDIpCisjZGVmaW5lIFA2X1dGNE9CUgkoMHhENCkKKyNkZWZpbmUgUDZfV0Y1Qk1S MAkoMHhENikKKyNkZWZpbmUgUDZfV0Y1Qk1SMQkoMHhEOCkKKyNkZWZpbmUgUDZfV0Y1Q1IJKDB4 REEpCisjZGVmaW5lIFA2X1dGNU9CUgkoMHhEQykKKworLyogRGVmaW5pdGlvbiBvZiBQQUdFNyAq LworI2RlZmluZSBQN19XRjZCTVIwCSgweEUyKQorI2RlZmluZSBQN19XRjZCTVIxCSgweEU0KQor I2RlZmluZSBQN19XRjZDUgkoMHhFNikKKyNkZWZpbmUgUDdfV0Y2T0JSCSgweEU4KQorI2RlZmlu ZSBQN19XRjdCTVIwCSgweEVBKQorI2RlZmluZSBQN19XRjdCTVIxCSgweEVDKQorI2RlZmluZSBQ N19XRjdDUgkoMHhFRSkKKyNkZWZpbmUgUDdfV0Y3T0JSCSgweEYwKQorI2RlZmluZSBQN19XRlIw MQkoMHhGMikKKyNkZWZpbmUgUDdfV0ZSMjMJKDB4RjQpCisjZGVmaW5lIFA3X1dGUjQ1CSgweEY2 KQorI2RlZmluZSBQN19XRlI2NwkoMHhGOCkKKyNkZWZpbmUgUDdfV0ZQQzAJKDB4RkEpCisjZGVm aW5lIFA3X1dGUEMxCSgweEZDKQorCisvKiBUeCBoZWFkZXJzIHN0cnVjdHVyZSAqLworc3RydWN0 IHR4X3NvcF9oZWFkZXIgeworCS8qIGJpdCAxNS0xMTogZmxhZ3MsIGJpdCAxMC0wOiBwYWNrZXQg bGVuZ3RoICovCisJdTE2IGZsYWdzX2xlbjsKKwkvKiBiaXQgMTUtMTE6IHNlcXVlbmNlIG51bWJl ciwgYml0IDExLTA6IHBhY2tldCBsZW5ndGggYmFyICovCisJdTE2IHNlcV9sZW5iYXI7Cit9Owor CitzdHJ1Y3QgdHhfc2VnbWVudF9oZWFkZXIgeworCS8qIGJpdCAxNS0xNDogZmxhZ3MsIGJpdCAx My0xMTogc2VnbWVudCBudW1iZXIgKi8KKwkvKiBiaXQgMTAtMDogc2VnbWVudCBsZW5ndGggKi8K Kwl1MTYgZmxhZ3Nfc2VxbnVtX3NlZ2xlbjsKKwkvKiBiaXQgMTUtMTQ6IGVuZCBvZmZzZXQsIGJp dCAxMy0xMTogc3RhcnQgb2Zmc2V0ICovCisJLyogYml0IDEwLTA6IHNlZ21lbnQgbGVuZ3RoIGJh ciAqLworCXUxNiBlb19zb19zZWdsZW5iYXI7Cit9OworCitzdHJ1Y3QgdHhfZW9wX2hlYWRlciB7 CisJLyogYml0IDE1LTExOiBzZXF1ZW5jZSBudW1iZXIsIGJpdCAxMC0wOiBwYWNrZXQgbGVuZ3Ro ICovCisJdTE2IHNlcV9sZW47CisJLyogYml0IDE1LTExOiBzZXF1ZW5jZSBudW1iZXIgYmFyLCBi aXQgMTAtMDogcGFja2V0IGxlbmd0aCBiYXIgKi8KKwl1MTYgc2VxYmFyX2xlbmJhcjsKK307CisK K3N0cnVjdCB0eF9wa3RfaW5mbyB7CisJc3RydWN0IHR4X3NvcF9oZWFkZXIgc29wOworCXN0cnVj dCB0eF9zZWdtZW50X2hlYWRlciBzZWc7CisJc3RydWN0IHR4X2VvcF9oZWFkZXIgZW9wOworCXUx NiBwa3RfbGVuOworCXUxNiBzZXFfbnVtOworfTsKKworLyogUnggaGVhZGVycyBzdHJ1Y3R1cmUg Ki8KK3N0cnVjdCByeF9oZWFkZXIgeworCXUxNiBmbGFnc19sZW47CisJdTE2IHNlcV9sZW5iYXI7 CisJdTE2IGZsYWdzOworfTsKKworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgYXg4ODc5NmNfbm9fcmVn c19tYXNrW107CisKKyNlbmRpZiAvKiAjaWZuZGVmIF9BWDg4Nzk2Q19NQUlOX0ggKi8KZGlmZiAt LWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfc3BpLmMgYi9kcml2ZXJz L25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX3NwaS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwMC4uMTI1MmE5N2QxYzUyCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVy cy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19zcGkuYwpAQCAtMCwwICsxLDExNSBAQAorLy8g U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQorLyoKKyAqIENvcHlyaWdodCAo YykgMjAxMCBBU0lYIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uCisgKiBDb3B5cmlnaHQgKGMpIDIw MjAgU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sIEx0ZC4KKyAqCisgKiBBU0lYIEFYODg3OTZDIFNQ SSBGYXN0IEV0aGVybmV0IExpbnV4IGRyaXZlcgorICovCisKKyNkZWZpbmUgcHJfZm10KGZtdCkJ ImF4ODg3OTZjOiAiIGZtdAorCisjaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+CisjaW5jbHVkZSA8 bGludXgvc3BpL3NwaS5oPgorCisjaW5jbHVkZSAiYXg4ODc5NmNfc3BpLmgiCisKK2NvbnN0IHU4 IGF4ODg3OTZjX3J4X2NtZF9idWZbNV0gPSB7QVhfU1BJQ01EX1JFQURfUlhRLCAweEZGLCAweEZG LCAweEZGLCAweEZGfTsKK2NvbnN0IHU4IGF4ODg3OTZjX3R4X2NtZF9idWZbNF0gPSB7QVhfU1BJ Q01EX1dSSVRFX1RYUSwgMHhGRiwgMHhGRiwgMHhGRn07CisKKy8qIGRyaXZlciBidXMgbWFuYWdl bWVudCBmdW5jdGlvbnMgKi8KK2ludCBheHNwaV93YWtldXAoc3RydWN0IGF4c3BpX2RhdGEgKmF4 X3NwaSkKK3sKKwlpbnQgcmV0OworCisJYXhfc3BpLT5jbWRfYnVmWzBdID0gQVhfU1BJQ01EX0VY SVRfUFdEOwkvKiBPUCAqLworCXJldCA9IHNwaV93cml0ZShheF9zcGktPnNwaSwgYXhfc3BpLT5j bWRfYnVmLCAxKTsKKwlpZiAocmV0KQorCQlkZXZfZXJyKCZheF9zcGktPnNwaS0+ZGV2LCAiJXMo KSBmYWlsZWQ6IHJldCA9ICVkXG4iLCBfX2Z1bmNfXywgcmV0KTsKKwlyZXR1cm4gcmV0OworfQor CitpbnQgYXhzcGlfcmVhZF9zdGF0dXMoc3RydWN0IGF4c3BpX2RhdGEgKmF4X3NwaSwgc3RydWN0 IHNwaV9zdGF0dXMgKnN0YXR1cykKK3sKKwlpbnQgcmV0OworCisJLyogT1AgKi8KKwlheF9zcGkt PmNtZF9idWZbMF0gPSBBWF9TUElDTURfUkVBRF9TVEFUVVM7CisJcmV0ID0gc3BpX3dyaXRlX3Ro ZW5fcmVhZChheF9zcGktPnNwaSwgYXhfc3BpLT5jbWRfYnVmLCAxLCAodTggKikmc3RhdHVzLCAz KTsKKwlpZiAocmV0KQorCQlkZXZfZXJyKCZheF9zcGktPnNwaS0+ZGV2LCAiJXMoKSBmYWlsZWQ6 IHJldCA9ICVkXG4iLCBfX2Z1bmNfXywgcmV0KTsKKwllbHNlCisJCWxlMTZfdG9fY3B1cygmc3Rh dHVzLT5pc3IpOworCisJcmV0dXJuIHJldDsKK30KKworaW50IGF4c3BpX3JlYWRfcnhxKHN0cnVj dCBheHNwaV9kYXRhICpheF9zcGksIHZvaWQgKmRhdGEsIGludCBsZW4pCit7CisJc3RydWN0IHNw aV90cmFuc2ZlciAqeGZlciA9IGF4X3NwaS0+c3BpX3J4X3hmZXI7CisJaW50IHJldDsKKworCW1l bWNweShheF9zcGktPmNtZF9idWYsIGF4ODg3OTZjX3J4X2NtZF9idWYsIDUpOworCisJeGZlci0+ dHhfYnVmID0gYXhfc3BpLT5jbWRfYnVmOworCXhmZXItPnJ4X2J1ZiA9IE5VTEw7CisJeGZlci0+ bGVuID0gYXhfc3BpLT5jb21wID8gMiA6IDU7CisJeGZlci0+Yml0c19wZXJfd29yZCA9IDg7CisJ c3BpX21lc3NhZ2VfYWRkX3RhaWwoeGZlciwgJmF4X3NwaS0+cnhfbXNnKTsKKworCXhmZXIrKzsK Kwl4ZmVyLT5yeF9idWYgPSBkYXRhOworCXhmZXItPnR4X2J1ZiA9IE5VTEw7CisJeGZlci0+bGVu ID0gbGVuOworCXhmZXItPmJpdHNfcGVyX3dvcmQgPSA4OworCXNwaV9tZXNzYWdlX2FkZF90YWls KHhmZXIsICZheF9zcGktPnJ4X21zZyk7CisJcmV0ID0gc3BpX3N5bmMoYXhfc3BpLT5zcGksICZh eF9zcGktPnJ4X21zZyk7CisJaWYgKHJldCkKKwkJZGV2X2VycigmYXhfc3BpLT5zcGktPmRldiwg IiVzKCkgZmFpbGVkOiByZXQgPSAlZFxuIiwgX19mdW5jX18sIHJldCk7CisKKwlyZXR1cm4gcmV0 OworfQorCitpbnQgYXhzcGlfd3JpdGVfdHhxKGNvbnN0IHN0cnVjdCBheHNwaV9kYXRhICpheF9z cGksIHZvaWQgKmRhdGEsIGludCBsZW4pCit7CisJcmV0dXJuIHNwaV93cml0ZShheF9zcGktPnNw aSwgZGF0YSwgbGVuKTsKK30KKwordTE2IGF4c3BpX3JlYWRfcmVnKHN0cnVjdCBheHNwaV9kYXRh ICpheF9zcGksIHU4IHJlZykKK3sKKwlpbnQgcmV0OworCWludCBsZW4gPSBheF9zcGktPmNvbXAg PyAzIDogNDsKKworCWF4X3NwaS0+Y21kX2J1ZlswXSA9IDB4MDM7CS8qIE9QIGNvZGUgcmVhZCBy ZWdpc3RlciAqLworCWF4X3NwaS0+Y21kX2J1ZlsxXSA9IHJlZzsJLyogcmVnaXN0ZXIgYWRkcmVz cyAqLworCWF4X3NwaS0+Y21kX2J1ZlsyXSA9IDB4RkY7CS8qIGR1bXkgY3ljbGUgKi8KKwlheF9z cGktPmNtZF9idWZbM10gPSAweEZGOwkvKiBkdW15IGN5Y2xlICovCisJcmV0ID0gc3BpX3dyaXRl X3RoZW5fcmVhZChheF9zcGktPnNwaSwKKwkJCQkgIGF4X3NwaS0+Y21kX2J1ZiwgbGVuLAorCQkJ CSAgYXhfc3BpLT5yeF9idWYsIDIpOworCWlmIChyZXQpIHsKKwkJZGV2X2VycigmYXhfc3BpLT5z cGktPmRldiwKKwkJCSIlcygpIGZhaWxlZDogcmV0ID0gJWRcbiIsIF9fZnVuY19fLCByZXQpOwor CQlyZXR1cm4gMHhGRkZGOworCX0KKworCWxlMTZfdG9fY3B1cyhheF9zcGktPnJ4X2J1Zik7CisK KwlyZXR1cm4gKih1MTYgKilheF9zcGktPnJ4X2J1ZjsKK30KKworaW50IGF4c3BpX3dyaXRlX3Jl ZyhzdHJ1Y3QgYXhzcGlfZGF0YSAqYXhfc3BpLCB1OCByZWcsIHUxNiB2YWx1ZSkKK3sKKwlpbnQg cmV0OworCisJbWVtc2V0KGF4X3NwaS0+Y21kX2J1ZiwgMCwgc2l6ZW9mKGF4X3NwaS0+Y21kX2J1 ZikpOworCWF4X3NwaS0+Y21kX2J1ZlswXSA9IEFYX1NQSUNNRF9XUklURV9SRUc7CS8qIE9QIGNv ZGUgcmVhZCByZWdpc3RlciAqLworCWF4X3NwaS0+Y21kX2J1ZlsxXSA9IHJlZzsJCQkvKiByZWdp c3RlciBhZGRyZXNzICovCisJYXhfc3BpLT5jbWRfYnVmWzJdID0gdmFsdWU7CisJYXhfc3BpLT5j bWRfYnVmWzNdID0gdmFsdWUgPj4gODsKKworCXJldCA9IHNwaV93cml0ZShheF9zcGktPnNwaSwg YXhfc3BpLT5jbWRfYnVmLCA0KTsKKwlpZiAocmV0KQorCQlkZXZfZXJyKCZheF9zcGktPnNwaS0+ ZGV2LCAiJXMoKSBmYWlsZWQ6IHJldCA9ICVkXG4iLCBfX2Z1bmNfXywgcmV0KTsKKwlyZXR1cm4g cmV0OworfQorCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZj X3NwaS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19zcGkuaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjViY2Y5MWY2MDNmYgotLS0gL2Rldi9u dWxsCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfc3BpLmgKQEAgLTAs MCArMSw2OSBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seSAqLwor LyoKKyAqIENvcHlyaWdodCAoYykgMjAxMCBBU0lYIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uCisg KiBDb3B5cmlnaHQgKGMpIDIwMjAgU2Ftc3VuZyBFbGVjdHJvbmljcyBDby4sIEx0ZC4KKyAqCisg KiBBU0lYIEFYODg3OTZDIFNQSSBGYXN0IEV0aGVybmV0IExpbnV4IGRyaXZlcgorICovCisKKyNp Zm5kZWYgX0FYODg3OTZDX1NQSV9ICisjZGVmaW5lIF9BWDg4Nzk2Q19TUElfSAorCisjaW5jbHVk ZSA8bGludXgvc3BpL3NwaS5oPgorI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisKKy8qIERlZmlu aXRpb24gb2YgU1BJIGNvbW1hbmQgKi8KKyNkZWZpbmUgQVhfU1BJQ01EX1dSSVRFX1RYUQkJMHgw MgorI2RlZmluZSBBWF9TUElDTURfUkVBRF9SRUcJCTB4MDMKKyNkZWZpbmUgQVhfU1BJQ01EX1JF QURfU1RBVFVTCQkweDA1CisjZGVmaW5lIEFYX1NQSUNNRF9SRUFEX1JYUQkJMHgwQgorI2RlZmlu ZSBBWF9TUElDTURfQklESVJfV1JRCQkweEIyCisjZGVmaW5lIEFYX1NQSUNNRF9XUklURV9SRUcJ CTB4RDgKKyNkZWZpbmUgQVhfU1BJQ01EX0VYSVRfUFdECQkweEFCCisKK2V4dGVybiBjb25zdCB1 OCBheDg4Nzk2Y19yeF9jbWRfYnVmW107CitleHRlcm4gY29uc3QgdTggYXg4ODc5NmNfdHhfY21k X2J1ZltdOworCitzdHJ1Y3QgYXhzcGlfZGF0YSB7CisJc3RydWN0IHNwaV9kZXZpY2UJKnNwaTsK KwlzdHJ1Y3Qgc3BpX21lc3NhZ2UJcnhfbXNnOworCXN0cnVjdCBzcGlfdHJhbnNmZXIJc3BpX3J4 X3hmZXJbMl07CisJdTgJCQljbWRfYnVmWzZdOworCXU4CQkJcnhfYnVmWzZdOworCXU4CQkJY29t cDsKK307CisKK3N0cnVjdCBzcGlfc3RhdHVzIHsKKwl1MTYgaXNyOworCXU4IHN0YXR1czsKKyMJ ZGVmaW5lIEFYX1NUQVRVU19SRUFEWQkJMHg4MAorfTsKKworaW50IGF4c3BpX3JlYWRfcnhxKHN0 cnVjdCBheHNwaV9kYXRhICpheF9zcGksIHZvaWQgKmRhdGEsIGludCBsZW4pOworaW50IGF4c3Bp X3dyaXRlX3R4cShjb25zdCBzdHJ1Y3QgYXhzcGlfZGF0YSAqYXhfc3BpLCB2b2lkICpkYXRhLCBp bnQgbGVuKTsKK3UxNiBheHNwaV9yZWFkX3JlZyhzdHJ1Y3QgYXhzcGlfZGF0YSAqYXhfc3BpLCB1 OCByZWcpOworaW50IGF4c3BpX3dyaXRlX3JlZyhzdHJ1Y3QgYXhzcGlfZGF0YSAqYXhfc3BpLCB1 OCByZWcsIHUxNiB2YWx1ZSk7CitpbnQgYXhzcGlfcmVhZF9zdGF0dXMoc3RydWN0IGF4c3BpX2Rh dGEgKmF4X3NwaSwgc3RydWN0IHNwaV9zdGF0dXMgKnN0YXR1cyk7CitpbnQgYXhzcGlfd2FrZXVw KHN0cnVjdCBheHNwaV9kYXRhICpheF9zcGkpOworCitzdGF0aWMgaW5saW5lIHUxNiBBWF9SRUFE KHN0cnVjdCBheHNwaV9kYXRhICpheF9zcGksIHU4IG9mZnNldCkKK3sKKwlyZXR1cm4gYXhzcGlf cmVhZF9yZWcoYXhfc3BpLCBvZmZzZXQpOworfQorCitzdGF0aWMgaW5saW5lIGludCBBWF9XUklU RShzdHJ1Y3QgYXhzcGlfZGF0YSAqYXhfc3BpLCB1MTYgdmFsdWUsIHU4IG9mZnNldCkKK3sKKwly ZXR1cm4gYXhzcGlfd3JpdGVfcmVnKGF4X3NwaSwgb2Zmc2V0LCB2YWx1ZSk7Cit9CisKK3N0YXRp YyBpbmxpbmUgaW50IEFYX1JFQURfU1RBVFVTKHN0cnVjdCBheHNwaV9kYXRhICpheF9zcGksCisJ CQkJIHN0cnVjdCBzcGlfc3RhdHVzICpzdGF0dXMpCit7CisJcmV0dXJuIGF4c3BpX3JlYWRfc3Rh dHVzKGF4X3NwaSwgc3RhdHVzKTsKK30KKworc3RhdGljIGlubGluZSBpbnQgQVhfV0FLRVVQKHN0 cnVjdCBheHNwaV9kYXRhICpheF9zcGkpCit7CisJcmV0dXJuIGF4c3BpX3dha2V1cChheF9zcGkp OworfQorI2VuZGlmCi0tIAoyLjI2LjIKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0t a2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFp bG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==