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=-15.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7EB96C4CEC6 for ; Thu, 12 Sep 2019 17:53:51 +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 4E04C2067D for ; Thu, 12 Sep 2019 17:53:51 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="sApXjHSl" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4E04C2067D Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=siol.net Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=zq/DS9p82fTJsRxkgqVdfCkH2BhU3dtRjjC13nvgdRI=; b=sApXjHSlMgp6eF sjtHLuaH/gqL8HtbrHjzFseYfuT245cfJv+2NPKvRO9z8BacTWwv1PyJZeBxFD8p7Xtrk9Bg8p6XH aCkNg0DRbD7RSDiQ5UO/Qt8SBUyu5XKkz2qXerPRy6PEFklHpvB78dF0oYNgU9C+55KErczPCHZMT 5PpssfGJCAO4skfXGrN6NCI8f8xVXePyrWeO2dSbCzb2HgBkxhPHYN0e1smI+MQi25K9fDItxZrhq GlaYKMiryfivtkpjswACiiWJY6h/9vj7MmAT3jLuZV08N3qDqM1VPDf67ixOnnQITej50l6AMht1l elyh9+ceAtHUhfvOiTMA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.2 #3 (Red Hat Linux)) id 1i8THt-0006f6-AC; Thu, 12 Sep 2019 17:53:45 +0000 Received: from mailoutvs60.siol.net ([185.57.226.251] helo=mail.siol.net) by bombadil.infradead.org with esmtps (Exim 4.92.2 #3 (Red Hat Linux)) id 1i8TGM-00052B-Dv for linux-arm-kernel@lists.infradead.org; Thu, 12 Sep 2019 17:52:14 +0000 Received: from localhost (localhost [127.0.0.1]) by mail.siol.net (Postfix) with ESMTP id 54A665223C7; Thu, 12 Sep 2019 19:52:08 +0200 (CEST) X-Virus-Scanned: amavisd-new at psrvmta10.zcs-production.pri Received: from mail.siol.net ([127.0.0.1]) by localhost (psrvmta10.zcs-production.pri [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id tDqmCeggAFwL; Thu, 12 Sep 2019 19:52:06 +0200 (CEST) Received: from mail.siol.net (localhost [127.0.0.1]) by mail.siol.net (Postfix) with ESMTPS id 624A9522719; Thu, 12 Sep 2019 19:52:06 +0200 (CEST) Received: from localhost.localdomain (cpe-86-58-59-25.static.triera.net [86.58.59.25]) (Authenticated sender: 031275009) by mail.siol.net (Postfix) with ESMTPSA id F2E03522EE7; Thu, 12 Sep 2019 19:52:03 +0200 (CEST) From: Jernej Skrabec To: mripard@kernel.org, wens@csie.org Subject: [PATCH 5/6] media: sun4i: Add H3 deinterlace driver Date: Thu, 12 Sep 2019 19:51:31 +0200 Message-Id: <20190912175132.411-6-jernej.skrabec@siol.net> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20190912175132.411-1-jernej.skrabec@siol.net> References: <20190912175132.411-1-jernej.skrabec@siol.net> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190912_105211_090260_E34A94E8 X-CRM114-Status: GOOD ( 19.80 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mark.rutland@arm.com, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, hverkuil@xs4all.nl, linux-sunxi@googlegroups.com, robh+dt@kernel.org, mchehab@kernel.org, linux-arm-kernel@lists.infradead.org, linux-media@vger.kernel.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org QWxsd2lubmVyIEgzIFNvQyBjb250YWlucyBkZWludGVybGFjZSB1bml0LCB3aGljaCBoYXMgc2V2 ZXJhbCBtb2RlcyBvZgpvcGVyYXRpb24gLSBieXBhc3MsIHdlYXZlLCBib2IgYW5kIG1peGVkIChh ZHZhbmNlZCkgbW9kZS4gSSBkb24ndCBrbm93CmhvdyBtaXhlZCBtb2RlIHdvcmtzLCBidXQgYWNj b3JkaW5nIHRvIEFsbHdpbm5lciBpdCBnaXZlcyBiZXN0IHJlc3VsdHMsCnNvIHRoZXkgdXNlIGl0 IGV4Y2x1c2l2ZWx5LiBDdXJyZW50bHkgdGhpcyBtb2RlIGlzIGFsc28gaGFyZGNvZGVkIGhlcmUu CgpGb3IgZWFjaCBpbnRlcmxlYXZlZCBmcmFtZSBxdWV1ZWQsIHRoaXMgZHJpdmVyIHByb2R1Y2Vz IDIgZGVpbnRlcmxhY2VkCmZyYW1lcy4gRGVpbnRlcmxhY2VkIGZyYW1lcyBhcmUgYmFzZWQgb24g MiBjb25zZXF1dGl2ZSBvdXRwdXQgYnVmZmVycywKZXhjZXB0IGZvciB0aGUgZmlyc3QgMiwgd2hl cmUgc2FtZSBvdXRwdXQgYnVmZmVyIGlzIGdpdmVuIHRvIHBlcmlwaGVyYWwKYXMgY3VycmVudCBh bmQgcHJldmlvdXMuCgpUaGVyZSBpcyBubyBkb2N1bWVudGF0aW9uIGZvciB0aGlzIGNvcmUsIHNv IHJlZ2lzdGVyIGxheW91dCBhbmQgZml4ZWQKdmFsdWVzIHdlcmUgdGFrZW4gZnJvbSBCU1AgZHJp dmVyLgoKSSdtIG5vdCBzdXJlIGlmIG1heGltdW0gc2l6ZSBvZiB0aGUgaW1hZ2UgdW5pdCBpcyBj YXBhYmxlIHRvIHByb2Nlc3MgaXMKZ292ZXJuZWQgYnkgc2l6ZSBvZiAiZmxhZyIgYnVmZmVycywg ZnJlcXVlbmN5IG9yIGl0IHJlYWxseSBpcyBzb21lIEhXCmxpbWl0YXRpb24uIEN1cnJlbnRseSBk cml2ZXIgY2FuIHByb2Nlc3MgZnVsbCBIRCBpbWFnZSBpbiB+MTVtcyAoNy41bXMKZm9yIGVhY2gg Y2FwdHVyZSBidWZmZXIpLCB3aGljaCBhbGxvd3MgdG8gcHJvY2VzcyAxOTIweDEwODBANjBpIHZp ZGVvCnNtb290aGx5IGluIHJlYWwgdGltZS4KClNpZ25lZC1vZmYtYnk6IEplcm5laiBTa3JhYmVj IDxqZXJuZWouc2tyYWJlY0BzaW9sLm5ldD4KLS0tCiBNQUlOVEFJTkVSUyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgIDcgKwogZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54 aS9LY29uZmlnICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vc3VueGkv TWFrZWZpbGUgICAgICAgICB8ICAgMSArCiBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3N1bnhpL3N1 bjhpLWRpL0tjb25maWcgfCAgMTAgKwogLi4uL21lZGlhL3BsYXRmb3JtL3N1bnhpL3N1bjhpLWRp L01ha2VmaWxlICAgIHwgICAyICsKIC4uLi9tZWRpYS9wbGF0Zm9ybS9zdW54aS9zdW44aS1kaS9z dW44aS1kaS5jICB8IDk2OSArKysrKysrKysrKysrKysrKysKIC4uLi9tZWRpYS9wbGF0Zm9ybS9z dW54aS9zdW44aS1kaS9zdW44aS1kaS5oICB8IDIzOCArKysrKwogNyBmaWxlcyBjaGFuZ2VkLCAx MjI4IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21lZGlhL3BsYXRm b3JtL3N1bnhpL3N1bjhpLWRpL0tjb25maWcKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21l ZGlhL3BsYXRmb3JtL3N1bnhpL3N1bjhpLWRpL01ha2VmaWxlCiBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9zdW44aS1kaS9zdW44aS1kaS5jCiBjcmVhdGUg bW9kZSAxMDA2NDQgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9zdW44aS1kaS9zdW44aS1k aS5oCgpkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUwppbmRleCBlZTRlODcz YzBmOWEuLjNiMGMyNGMwYjVhYyAxMDA2NDQKLS0tIGEvTUFJTlRBSU5FUlMKKysrIGIvTUFJTlRB SU5FUlMKQEAgLTQ2MjEsNiArNDYyMSwxMyBAQCBNOgkiTWFjaWVqIFcuIFJvenlja2kiIDxtYWNy b0BsaW51eC1taXBzLm9yZz4KIFM6CU1haW50YWluZWQKIEY6CWRyaXZlcnMvbmV0L2ZkZGkvZGVm eHguKgogCitERUlOVEVSTEFDRSBEUklWRVJTIEZPUiBBTExXSU5ORVIgSDMKK006CUplcm5laiBT a3JhYmVjIDxqZXJuZWouc2tyYWJlY0BzaW9sLm5ldD4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2Vy bmVsLm9yZworVDoJZ2l0IGdpdDovL2xpbnV4dHYub3JnL21lZGlhX3RyZWUuZ2l0CitTOglNYWlu dGFpbmVkCitGOglkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3N1bnhpL3N1bjhpLWRpLworCiBERUxM IFNNQklPUyBEUklWRVIKIE06CVBhbGkgUm9ow6FyIDxwYWxpLnJvaGFyQGdtYWlsLmNvbT4KIE06 CU1hcmlvIExpbW9uY2llbGxvIDxtYXJpby5saW1vbmNpZWxsb0BkZWxsLmNvbT4KZGlmZiAtLWdp dCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vc3VueGkvS2NvbmZpZyBiL2RyaXZlcnMvbWVkaWEv cGxhdGZvcm0vc3VueGkvS2NvbmZpZwppbmRleCA3MTgwOGU5M2FjMmUuLmQ3YTU2MjFiZjMyNyAx MDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9LY29uZmlnCisrKyBiL2Ry aXZlcnMvbWVkaWEvcGxhdGZvcm0vc3VueGkvS2NvbmZpZwpAQCAtMSwyICsxLDMgQEAKIHNvdXJj ZSAiZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9zdW40aS1jc2kvS2NvbmZpZyIKIHNvdXJj ZSAiZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9zdW42aS1jc2kvS2NvbmZpZyIKK3NvdXJj ZSAiZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9zdW44aS1kaS9LY29uZmlnIgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9NYWtlZmlsZSBiL2RyaXZlcnMvbWVk aWEvcGxhdGZvcm0vc3VueGkvTWFrZWZpbGUKaW5kZXggYTA1MTI3NTI5MDA2Li4zODc4Y2I0ZWZk YzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vc3VueGkvTWFrZWZpbGUKKysr IGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9NYWtlZmlsZQpAQCAtMSwyICsxLDMgQEAK IG9iai15CQkrPSBzdW40aS1jc2kvCiBvYmoteQkJKz0gc3VuNmktY3NpLworb2JqLXkJCSs9IHN1 bjhpLWRpLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9zdW44aS1k aS9LY29uZmlnIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9zdW44aS1kaS9LY29uZmln Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODhlZWYxNTUxNGY5Ci0t LSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9zdW44aS1kaS9L Y29uZmlnCkBAIC0wLDAgKzEsMTAgQEAKKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0y LjAtb25seQorY29uZmlnIFZJREVPX1NVTjhJX0RFSU5URVJMQUNFCisJdHJpc3RhdGUgIkFsbHdp bm5lciBEZWludGVybGFjZSBkcml2ZXIiCisJZGVwZW5kcyBvbiBWSURFT19ERVYgJiYgVklERU9f VjRMMgorCWRlcGVuZHMgb24gSEFTX0RNQQorCWRlcGVuZHMgb24gT0YKKwlzZWxlY3QgVklERU9C VUYyX0RNQV9DT05USUcKKwlzZWxlY3QgVjRMMl9NRU0yTUVNX0RFVgorCWhlbHAKKwkgICBTdXBw b3J0IGZvciB0aGUgQWxsd2lubmVyIERlaW50ZXJsYWNlIHVuaXQgZm91bmQgb24gc29tZSBTb0Nz LgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdW54aS9zdW44aS1kaS9NYWtl ZmlsZSBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vc3VueGkvc3VuOGktZGkvTWFrZWZpbGUKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xMDlmN2U1NDQyYjcKLS0tIC9k ZXYvbnVsbAorKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3N1bnhpL3N1bjhpLWRpL01ha2Vm aWxlCkBAIC0wLDAgKzEsMiBAQAorIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAor b2JqLSQoQ09ORklHX1ZJREVPX1NVTjhJX0RFSU5URVJMQUNFKSArPSBzdW44aS1kaS5vCmRpZmYg LS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3N1bnhpL3N1bjhpLWRpL3N1bjhpLWRpLmMg Yi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3N1bnhpL3N1bjhpLWRpL3N1bjhpLWRpLmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45YmQxOTIwOTk5YjUKLS0tIC9kZXYv bnVsbAorKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3N1bnhpL3N1bjhpLWRpL3N1bjhpLWRp LmMKQEAgLTAsMCArMSw5NjkgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4w CisvKgorICogQWxsd2lubmVyIHN1bjhpIGRlaW50ZXJsYWNlIGRyaXZlcgorICoKKyAqIENvcHly aWdodCAoQykgMjAxOSBKZXJuZWogU2tyYWJlYyA8amVybmVqLnNrcmFiZWNAc2lvbC5uZXQ+Cisg KgorICogQmFzZWQgb24gdmltMm0gZHJpdmVyLgorICovCisKKyNpbmNsdWRlIDxsaW51eC9jbGsu aD4KKyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUu aD4KKyNpbmNsdWRlIDxsaW51eC9vZi5oPgorI2luY2x1ZGUgPGxpbnV4L29mX2RldmljZS5oPgor I2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPgorI2luY2x1ZGUgPGxpbnV4L3Jlc2V0Lmg+CisKKyNp bmNsdWRlIDxtZWRpYS92NGwyLWRldmljZS5oPgorI2luY2x1ZGUgPG1lZGlhL3Y0bDItaW9jdGwu aD4KKyNpbmNsdWRlIDxtZWRpYS92NGwyLW1lbTJtZW0uaD4KKworI2luY2x1ZGUgInN1bjhpLWRp LmgiCisKKyNkZWZpbmUgRkxBR19TSVpFIChERUlOVEVSTEFDRV9NQVhfV0lEVEggKiBERUlOVEVS TEFDRV9NQVhfSEVJR0hUIC8gNCkKKworc3RhdGljIHUzMiBkZWludGVybGFjZV9mb3JtYXRzW10g PSB7CisJVjRMMl9QSVhfRk1UX05WMTIsCisJVjRMMl9QSVhfRk1UX05WMjEsCit9OworCitzdGF0 aWMgdm9pZCBkZWludGVybGFjZV9kZXZpY2VfcnVuKHZvaWQgKnByaXYpCit7CisJc3RydWN0IGRl aW50ZXJsYWNlX2N0eCAqY3R4ID0gcHJpdjsKKwlzdHJ1Y3QgZGVpbnRlcmxhY2VfZGV2ICpkZXYg PSBjdHgtPmRldjsKKwl1MzIgc2l6ZSwgc3RyaWRlLCB3aWR0aCwgaGVpZ2h0LCB2YWw7CisJc3Ry dWN0IHZiMl92NGwyX2J1ZmZlciAqc3JjLCAqZHN0OworCXVuc2lnbmVkIGludCBoc3RlcCwgdnN0 ZXA7CisJZG1hX2FkZHJfdCBhZGRyOworCisJc3JjID0gdjRsMl9tMm1fbmV4dF9zcmNfYnVmKGN0 eC0+ZmgubTJtX2N0eCk7CisJZHN0ID0gdjRsMl9tMm1fbmV4dF9kc3RfYnVmKGN0eC0+ZmgubTJt X2N0eCk7CisKKwl2NGwyX20ybV9idWZfY29weV9tZXRhZGF0YShzcmMsIGRzdCwgdHJ1ZSk7CisK KwlyZWdtYXBfd3JpdGUoZGV2LT5yZWdtYXAsIERFSU5URVJMQUNFX01PRF9FTkFCTEUsCisJCSAg ICAgREVJTlRFUkxBQ0VfTU9EX0VOQUJMRV9FTik7CisKKwlpZiAoY3R4LT5maWVsZCkgeworCQly ZWdtYXBfd3JpdGUoZGV2LT5yZWdtYXAsIERFSU5URVJMQUNFX1RJTEVfRkxBRzAsCisJCQkgICAg IGN0eC0+ZmxhZzFfYnVmX2RtYSk7CisJCXJlZ21hcF93cml0ZShkZXYtPnJlZ21hcCwgREVJTlRF UkxBQ0VfVElMRV9GTEFHMSwKKwkJCSAgICAgY3R4LT5mbGFnMl9idWZfZG1hKTsKKwl9IGVsc2Ug eworCQlyZWdtYXBfd3JpdGUoZGV2LT5yZWdtYXAsIERFSU5URVJMQUNFX1RJTEVfRkxBRzAsCisJ CQkgICAgIGN0eC0+ZmxhZzJfYnVmX2RtYSk7CisJCXJlZ21hcF93cml0ZShkZXYtPnJlZ21hcCwg REVJTlRFUkxBQ0VfVElMRV9GTEFHMSwKKwkJCSAgICAgY3R4LT5mbGFnMV9idWZfZG1hKTsKKwl9 CisJcmVnbWFwX3dyaXRlKGRldi0+cmVnbWFwLCBERUlOVEVSTEFDRV9GTEFHX0xJTkVfU1RSSURF LCAweDIwMCk7CisKKwl3aWR0aCA9IGN0eC0+c3JjX2ZtdC53aWR0aDsKKwloZWlnaHQgPSBjdHgt PnNyY19mbXQuaGVpZ2h0OworCXN0cmlkZSA9IGN0eC0+c3JjX2ZtdC5ieXRlc3BlcmxpbmU7CisJ c2l6ZSA9IHN0cmlkZSAqIGhlaWdodDsKKworCWFkZHIgPSB2YjJfZG1hX2NvbnRpZ19wbGFuZV9k bWFfYWRkcigmc3JjLT52YjJfYnVmLCAwKTsKKwlyZWdtYXBfd3JpdGUoZGV2LT5yZWdtYXAsIERF SU5URVJMQUNFX0JVRl9BRERSMCwgYWRkcik7CisJcmVnbWFwX3dyaXRlKGRldi0+cmVnbWFwLCBE RUlOVEVSTEFDRV9CVUZfQUREUjEsIGFkZHIgKyBzaXplKTsKKwlyZWdtYXBfd3JpdGUoZGV2LT5y ZWdtYXAsIERFSU5URVJMQUNFX0JVRl9BRERSMiwgMCk7CisKKwlyZWdtYXBfd3JpdGUoZGV2LT5y ZWdtYXAsIERFSU5URVJMQUNFX0xJTkVfU1RSSURFMCwgc3RyaWRlKTsKKwlyZWdtYXBfd3JpdGUo ZGV2LT5yZWdtYXAsIERFSU5URVJMQUNFX0xJTkVfU1RSSURFMSwgc3RyaWRlKTsKKworCXJlZ21h cF93cml0ZShkZXYtPnJlZ21hcCwgREVJTlRFUkxBQ0VfQ0gwX0lOX1NJWkUsCisJCSAgICAgREVJ TlRFUkxBQ0VfU0laRSh3aWR0aCwgaGVpZ2h0KSk7CisJcmVnbWFwX3dyaXRlKGRldi0+cmVnbWFw LCBERUlOVEVSTEFDRV9DSDFfSU5fU0laRSwKKwkJICAgICBERUlOVEVSTEFDRV9TSVpFKHdpZHRo IC8gMiwgaGVpZ2h0IC8gMikpOworCisJdmFsID0gREVJTlRFUkxBQ0VfSU5fRk1UX0ZNVChERUlO VEVSTEFDRV9JTl9GTVRfWVVWNDIwKSB8CisJICAgICAgREVJTlRFUkxBQ0VfSU5fRk1UX01PRChE RUlOVEVSTEFDRV9NT0RFX1VWX0NPTUJJTkVEKTsKKwlzd2l0Y2ggKGN0eC0+c3JjX2ZtdC5waXhl bGZvcm1hdCkgeworCWNhc2UgVjRMMl9QSVhfRk1UX05WMTI6CisJCXZhbCB8PSBERUlOVEVSTEFD RV9JTl9GTVRfUFMoREVJTlRFUkxBQ0VfUFNfVVZVVik7CisJCWJyZWFrOworCWNhc2UgVjRMMl9Q SVhfRk1UX05WMjE6CisJCXZhbCB8PSBERUlOVEVSTEFDRV9JTl9GTVRfUFMoREVJTlRFUkxBQ0Vf UFNfVlVWVSk7CisJCWJyZWFrOworCX0KKwlyZWdtYXBfd3JpdGUoZGV2LT5yZWdtYXAsIERFSU5U RVJMQUNFX0lOX0ZNVCwgdmFsKTsKKworCWlmIChjdHgtPnByZXYpCisJCWFkZHIgPSB2YjJfZG1h X2NvbnRpZ19wbGFuZV9kbWFfYWRkcigmY3R4LT5wcmV2LT52YjJfYnVmLCAwKTsKKworCXJlZ21h cF93cml0ZShkZXYtPnJlZ21hcCwgREVJTlRFUkxBQ0VfUFJFTFVNQSwgYWRkcik7CisJcmVnbWFw X3dyaXRlKGRldi0+cmVnbWFwLCBERUlOVEVSTEFDRV9QUkVDSFJPTUEsIGFkZHIgKyBzaXplKTsK KworCXZhbCA9IERFSU5URVJMQUNFX09VVF9GTVRfRk1UKERFSU5URVJMQUNFX09VVF9GTVRfWVVW NDIwU1ApOworCXN3aXRjaCAoY3R4LT5zcmNfZm10LnBpeGVsZm9ybWF0KSB7CisJY2FzZSBWNEwy X1BJWF9GTVRfTlYxMjoKKwkJdmFsIHw9IERFSU5URVJMQUNFX09VVF9GTVRfUFMoREVJTlRFUkxB Q0VfUFNfVVZVVik7CisJCWJyZWFrOworCWNhc2UgVjRMMl9QSVhfRk1UX05WMjE6CisJCXZhbCB8 PSBERUlOVEVSTEFDRV9PVVRfRk1UX1BTKERFSU5URVJMQUNFX1BTX1ZVVlUpOworCQlicmVhazsK Kwl9CisJcmVnbWFwX3dyaXRlKGRldi0+cmVnbWFwLCBERUlOVEVSTEFDRV9PVVRfRk1ULCB2YWwp OworCisJd2lkdGggPSBjdHgtPmRzdF9mbXQud2lkdGg7CisJaGVpZ2h0ID0gY3R4LT5kc3RfZm10 LmhlaWdodDsKKwlzdHJpZGUgPSBjdHgtPmRzdF9mbXQuYnl0ZXNwZXJsaW5lOworCXNpemUgPSBz dHJpZGUgKiBoZWlnaHQ7CisKKwlyZWdtYXBfd3JpdGUoZGV2LT5yZWdtYXAsIERFSU5URVJMQUNF X0NIMF9PVVRfU0laRSwKKwkJICAgICBERUlOVEVSTEFDRV9TSVpFKHdpZHRoLCBoZWlnaHQpKTsK KwlyZWdtYXBfd3JpdGUoZGV2LT5yZWdtYXAsIERFSU5URVJMQUNFX0NIMV9PVVRfU0laRSwKKwkJ ICAgICBERUlOVEVSTEFDRV9TSVpFKHdpZHRoIC8gMiwgaGVpZ2h0IC8gMikpOworCisJcmVnbWFw X3dyaXRlKGRldi0+cmVnbWFwLCBERUlOVEVSTEFDRV9XQl9MSU5FX1NUUklERTAsIHN0cmlkZSk7 CisJcmVnbWFwX3dyaXRlKGRldi0+cmVnbWFwLCBERUlOVEVSTEFDRV9XQl9MSU5FX1NUUklERTEs IHN0cmlkZSk7CisKKwlhZGRyID0gdmIyX2RtYV9jb250aWdfcGxhbmVfZG1hX2FkZHIoJmRzdC0+ dmIyX2J1ZiwgMCk7CisJcmVnbWFwX3dyaXRlKGRldi0+cmVnbWFwLCBERUlOVEVSTEFDRV9XQl9B RERSMCwgYWRkcik7CisJcmVnbWFwX3dyaXRlKGRldi0+cmVnbWFwLCBERUlOVEVSTEFDRV9XQl9B RERSMSwgYWRkciArIHNpemUpOworCXJlZ21hcF93cml0ZShkZXYtPnJlZ21hcCwgREVJTlRFUkxB Q0VfV0JfQUREUjIsIDApOworCisJaHN0ZXAgPSAoY3R4LT5zcmNfZm10LndpZHRoIDw8IDE2KSAv IGN0eC0+ZHN0X2ZtdC53aWR0aDsKKwl2c3RlcCA9IChjdHgtPnNyY19mbXQuaGVpZ2h0IDw8IDE2 KSAvIGN0eC0+ZHN0X2ZtdC5oZWlnaHQ7CisJcmVnbWFwX3dyaXRlKGRldi0+cmVnbWFwLCBERUlO VEVSTEFDRV9DSDBfSE9SWl9GQUNULCBoc3RlcCk7CisJcmVnbWFwX3dyaXRlKGRldi0+cmVnbWFw LCBERUlOVEVSTEFDRV9DSDBfVkVSVF9GQUNULCB2c3RlcCk7CisJcmVnbWFwX3dyaXRlKGRldi0+ cmVnbWFwLCBERUlOVEVSTEFDRV9DSDFfSE9SWl9GQUNULCBoc3RlcCk7CisJcmVnbWFwX3dyaXRl KGRldi0+cmVnbWFwLCBERUlOVEVSTEFDRV9DSDFfVkVSVF9GQUNULCB2c3RlcCk7CisKKwlyZWdt YXBfdXBkYXRlX2JpdHMoZGV2LT5yZWdtYXAsIERFSU5URVJMQUNFX0ZJRUxEX0NUUkwsCisJCQkg ICBERUlOVEVSTEFDRV9GSUVMRF9DVFJMX0ZJRUxEX0NOVF9NU0ssCisJCQkgICBERUlOVEVSTEFD RV9GSUVMRF9DVFJMX0ZJRUxEX0NOVChjdHgtPmZpZWxkKSk7CisKKwlyZWdtYXBfdXBkYXRlX2Jp dHMoZGV2LT5yZWdtYXAsIERFSU5URVJMQUNFX0ZSTV9DVFJMLAorCQkJICAgREVJTlRFUkxBQ0Vf RlJNX0NUUkxfU1RBUlQsCisJCQkgICBERUlOVEVSTEFDRV9GUk1fQ1RSTF9TVEFSVCk7CisKKwly ZWdtYXBfdXBkYXRlX2JpdHMoZGV2LT5yZWdtYXAsIERFSU5URVJMQUNFX0ZSTV9DVFJMLAorCQkJ ICAgREVJTlRFUkxBQ0VfRlJNX0NUUkxfUkVHX1JFQURZLAorCQkJICAgREVJTlRFUkxBQ0VfRlJN X0NUUkxfUkVHX1JFQURZKTsKKworCXJlZ21hcF91cGRhdGVfYml0cyhkZXYtPnJlZ21hcCwgREVJ TlRFUkxBQ0VfSU5UX0VOQUJMRSwKKwkJCSAgIERFSU5URVJMQUNFX0lOVF9FTkFCTEVfV0JfRU4s CisJCQkgICBERUlOVEVSTEFDRV9JTlRfRU5BQkxFX1dCX0VOKTsKKworCXJlZ21hcF91cGRhdGVf Yml0cyhkZXYtPnJlZ21hcCwgREVJTlRFUkxBQ0VfRlJNX0NUUkwsCisJCQkgICBERUlOVEVSTEFD RV9GUk1fQ1RSTF9XQl9FTiwKKwkJCSAgIERFSU5URVJMQUNFX0ZSTV9DVFJMX1dCX0VOKTsKK30K Kworc3RhdGljIGludCBkZWludGVybGFjZV9qb2JfcmVhZHkodm9pZCAqcHJpdikKK3sKKwlzdHJ1 Y3QgZGVpbnRlcmxhY2VfY3R4ICpjdHggPSBwcml2OworCisJcmV0dXJuIHY0bDJfbTJtX251bV9z cmNfYnVmc19yZWFkeShjdHgtPmZoLm0ybV9jdHgpID49IDEgJiYKKwkgICAgICAgdjRsMl9tMm1f bnVtX2RzdF9idWZzX3JlYWR5KGN0eC0+ZmgubTJtX2N0eCkgPj0gMjsKK30KKworc3RhdGljIHZv aWQgZGVpbnRlcmxhY2Vfam9iX2Fib3J0KHZvaWQgKnByaXYpCit7CisJc3RydWN0IGRlaW50ZXJs YWNlX2N0eCAqY3R4ID0gcHJpdjsKKworCS8qIFdpbGwgY2FuY2VsIHRoZSB0cmFuc2FjdGlvbiBp biB0aGUgbmV4dCBpbnRlcnJ1cHQgaGFuZGxlciAqLworCWN0eC0+YWJvcnRpbmcgPSAxOworfQor CitzdGF0aWMgaXJxcmV0dXJuX3QgZGVpbnRlcmxhY2VfaXJxKGludCBpcnEsIHZvaWQgKmRhdGEp Cit7CisJc3RydWN0IGRlaW50ZXJsYWNlX2RldiAqZGV2ID0gZGF0YTsKKwlzdHJ1Y3QgdmIyX3Y0 bDJfYnVmZmVyICpzcmMsICpkc3Q7CisJZW51bSB2YjJfYnVmZmVyX3N0YXRlIHN0YXRlOworCXN0 cnVjdCBkZWludGVybGFjZV9jdHggKmN0eDsKKwl1bnNpZ25lZCBpbnQgdmFsOworCisJY3R4ID0g djRsMl9tMm1fZ2V0X2N1cnJfcHJpdihkZXYtPm0ybV9kZXYpOworCWlmICghY3R4KSB7CisJCXY0 bDJfZXJyKCZkZXYtPnY0bDJfZGV2LAorCQkJICJJbnN0YW5jZSByZWxlYXNlZCBiZWZvcmUgdGhl IGVuZCBvZiB0cmFuc2FjdGlvblxuIik7CisJCXJldHVybiBJUlFfTk9ORTsKKwl9CisKKwlyZWdt YXBfcmVhZChkZXYtPnJlZ21hcCwgREVJTlRFUkxBQ0VfSU5UX1NUQVRVUywgJnZhbCk7CisJaWYg KCEodmFsICYgREVJTlRFUkxBQ0VfSU5UX1NUQVRVU19XUklURUJBQ0spKQorCQlyZXR1cm4gSVJR X05PTkU7CisKKwlyZWdtYXBfd3JpdGUoZGV2LT5yZWdtYXAsIERFSU5URVJMQUNFX0lOVF9FTkFC TEUsIDApOworCXJlZ21hcF91cGRhdGVfYml0cyhkZXYtPnJlZ21hcCwgREVJTlRFUkxBQ0VfSU5U X1NUQVRVUywKKwkJCSAgIERFSU5URVJMQUNFX0lOVF9TVEFUVVNfV1JJVEVCQUNLLAorCQkJICAg REVJTlRFUkxBQ0VfSU5UX1NUQVRVU19XUklURUJBQ0spOworCXJlZ21hcF93cml0ZShkZXYtPnJl Z21hcCwgREVJTlRFUkxBQ0VfTU9EX0VOQUJMRSwgMCk7CisJcmVnbWFwX3VwZGF0ZV9iaXRzKGRl di0+cmVnbWFwLCBERUlOVEVSTEFDRV9GUk1fQ1RSTCwKKwkJCSAgIERFSU5URVJMQUNFX0ZSTV9D VFJMX1NUQVJULCAwKTsKKworCXJlZ21hcF9yZWFkKGRldi0+cmVnbWFwLCBERUlOVEVSTEFDRV9T VEFUVVMsICZ2YWwpOworCWlmICh2YWwgJiBERUlOVEVSTEFDRV9TVEFUVVNfV0JfRVJST1IpCisJ CXN0YXRlID0gVkIyX0JVRl9TVEFURV9FUlJPUjsKKwllbHNlCisJCXN0YXRlID0gVkIyX0JVRl9T VEFURV9ET05FOworCisJZHN0ID0gdjRsMl9tMm1fZHN0X2J1Zl9yZW1vdmUoY3R4LT5maC5tMm1f Y3R4KTsKKwl2NGwyX20ybV9idWZfZG9uZShkc3QsIHN0YXRlKTsKKworCWlmIChjdHgtPmZpZWxk ICE9IGN0eC0+Zmlyc3RfZmllbGQgfHwgY3R4LT5hYm9ydGluZykgeworCQljdHgtPmZpZWxkID0g Y3R4LT5maXJzdF9maWVsZDsKKworCQlzcmMgPSB2NGwyX20ybV9zcmNfYnVmX3JlbW92ZShjdHgt PmZoLm0ybV9jdHgpOworCQlpZiAoY3R4LT5wcmV2KQorCQkJdjRsMl9tMm1fYnVmX2RvbmUoY3R4 LT5wcmV2LCBzdGF0ZSk7CisJCWN0eC0+cHJldiA9IHNyYzsKKworCQl2NGwyX20ybV9qb2JfZmlu aXNoKGN0eC0+ZGV2LT5tMm1fZGV2LCBjdHgtPmZoLm0ybV9jdHgpOworCX0gZWxzZSB7CisJCWN0 eC0+ZmllbGQgPSAhY3R4LT5maXJzdF9maWVsZDsKKwkJZGVpbnRlcmxhY2VfZGV2aWNlX3J1bihj dHgpOworCX0KKworCXJldHVybiBJUlFfSEFORExFRDsKK30KKworc3RhdGljIHZvaWQgZGVpbnRl cmxhY2VfaW5pdChzdHJ1Y3QgZGVpbnRlcmxhY2VfZGV2ICpkZXYpCit7CisJdTMyIHZhbDsKKwlp bnQgaTsKKworCXJlZ21hcF93cml0ZShkZXYtPnJlZ21hcCwgREVJTlRFUkxBQ0VfQllQQVNTLAor CQkgICAgIERFSU5URVJMQUNFX0JZUEFTU19DU0MpOworCXJlZ21hcF93cml0ZShkZXYtPnJlZ21h cCwgREVJTlRFUkxBQ0VfV0JfTElORV9TVFJJREVfQ1RSTCwKKwkJICAgICBERUlOVEVSTEFDRV9X Ql9MSU5FX1NUUklERV9DVFJMX0VOKTsKKwlyZWdtYXBfdXBkYXRlX2JpdHMoZGV2LT5yZWdtYXAs CisJCQkgICBERUlOVEVSTEFDRV9GUk1fQ1RSTCwKKwkJCSAgIERFSU5URVJMQUNFX0ZSTV9DVFJM X09VVF9DVFJMLAorCQkJICAgREVJTlRFUkxBQ0VfRlJNX0NUUkxfT1VUX0NUUkwpOworCXJlZ21h cF93cml0ZShkZXYtPnJlZ21hcCwgREVJTlRFUkxBQ0VfQUdUSF9TRUwsCisJCSAgICAgREVJTlRF UkxBQ0VfQUdUSF9TRUxfTElORUJVRik7CisKKwl2YWwgPSBERUlOVEVSTEFDRV9DVFJMX0VOIHwK KwkgICAgICBERUlOVEVSTEFDRV9DVFJMX01PREVfTUlYRUQgfAorCSAgICAgIERFSU5URVJMQUNF X0NUUkxfRElBR19JTlRQX0VOIHwKKwkgICAgICBERUlOVEVSTEFDRV9DVFJMX1RFTVBfRElGRl9F TjsKKwlyZWdtYXBfd3JpdGUoZGV2LT5yZWdtYXAsIERFSU5URVJMQUNFX0NUUkwsIHZhbCk7CisK KwlyZWdtYXBfdXBkYXRlX2JpdHMoZGV2LT5yZWdtYXAsIERFSU5URVJMQUNFX0xVTUFfVEgsCisJ CQkgICBERUlOVEVSTEFDRV9MVU1BX1RIX01JTl9MVU1BX01TSywKKwkJCSAgIERFSU5URVJMQUNF X0xVTUFfVEhfTUlOX0xVTUEoNCkpOworCisJcmVnbWFwX3VwZGF0ZV9iaXRzKGRldi0+cmVnbWFw LCBERUlOVEVSTEFDRV9TUEFUX0NPTVAsCisJCQkgICBERUlOVEVSTEFDRV9TUEFUX0NPTVBfVEgy X01TSywKKwkJCSAgIERFSU5URVJMQUNFX1NQQVRfQ09NUF9USDIoNSkpOworCisJcmVnbWFwX3Vw ZGF0ZV9iaXRzKGRldi0+cmVnbWFwLCBERUlOVEVSTEFDRV9URU1QX0RJRkYsCisJCQkgICBERUlO VEVSTEFDRV9URU1QX0RJRkZfQU1CSUdVSVRZX1RIX01TSywKKwkJCSAgIERFSU5URVJMQUNFX1RF TVBfRElGRl9BTUJJR1VJVFlfVEgoNSkpOworCisJdmFsID0gREVJTlRFUkxBQ0VfRElBR19JTlRQ X1RIMCg2MCkgfAorCSAgICAgIERFSU5URVJMQUNFX0RJQUdfSU5UUF9USDEoMCkgfAorCSAgICAg IERFSU5URVJMQUNFX0RJQUdfSU5UUF9USDMoMzApOworCXJlZ21hcF93cml0ZShkZXYtPnJlZ21h cCwgREVJTlRFUkxBQ0VfRElBR19JTlRQLCB2YWwpOworCisJcmVnbWFwX3VwZGF0ZV9iaXRzKGRl di0+cmVnbWFwLCBERUlOVEVSTEFDRV9DSFJPTUFfRElGRiwKKwkJCSAgIERFSU5URVJMQUNFX0NI Uk9NQV9ESUZGX1RIX01TSywKKwkJCSAgIERFSU5URVJMQUNFX0NIUk9NQV9ESUZGX1RIKDUpKTsK KworCS8qIG5ldXRyYWwgZmlsdGVyIGNvZWZmaWNpZW50cyAqLworCXJlZ21hcF91cGRhdGVfYml0 cyhkZXYtPnJlZ21hcCwgREVJTlRFUkxBQ0VfRlJNX0NUUkwsCisJCQkgICBERUlOVEVSTEFDRV9G Uk1fQ1RSTF9DT0VGX0NUUkwsCisJCQkgICBERUlOVEVSTEFDRV9GUk1fQ1RSTF9DT0VGX0NUUkwp OworCXJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChkZXYtPnJlZ21hcCwgREVJTlRFUkxBQ0VfU1RB VFVTLCB2YWwsCisJCQkJICh2YWwgJiBERUlOVEVSTEFDRV9TVEFUVVNfQ09FRl9TVEFUVVMpLCAy LCA0MCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgMzI7IGkrKykgeworCQlyZWdtYXBfd3JpdGUoZGV2 LT5yZWdtYXAsIERFSU5URVJMQUNFX0NIMF9IT1JaX0NPRUYwICsgaSAqIDQsCisJCQkgICAgIERF SU5URVJMQUNFX0lERU5USVRZX0NPRUYpOworCQlyZWdtYXBfd3JpdGUoZGV2LT5yZWdtYXAsIERF SU5URVJMQUNFX0NIMF9WRVJUX0NPRUYgKyBpICogNCwKKwkJCSAgICAgREVJTlRFUkxBQ0VfSURF TlRJVFlfQ09FRik7CisJCXJlZ21hcF93cml0ZShkZXYtPnJlZ21hcCwgREVJTlRFUkxBQ0VfQ0gx X0hPUlpfQ09FRjAgKyBpICogNCwKKwkJCSAgICAgREVJTlRFUkxBQ0VfSURFTlRJVFlfQ09FRik7 CisJCXJlZ21hcF93cml0ZShkZXYtPnJlZ21hcCwgREVJTlRFUkxBQ0VfQ0gxX1ZFUlRfQ09FRiAr IGkgKiA0LAorCQkJICAgICBERUlOVEVSTEFDRV9JREVOVElUWV9DT0VGKTsKKwl9CisKKwlyZWdt YXBfdXBkYXRlX2JpdHMoZGV2LT5yZWdtYXAsIERFSU5URVJMQUNFX0ZSTV9DVFJMLAorCQkJICAg REVJTlRFUkxBQ0VfRlJNX0NUUkxfQ09FRl9DVFJMLCAwKTsKK30KKworc3RhdGljIGlubGluZSBz dHJ1Y3QgZGVpbnRlcmxhY2VfY3R4ICpkZWludGVybGFjZV9maWxlMmN0eChzdHJ1Y3QgZmlsZSAq ZmlsZSkKK3sKKwlyZXR1cm4gY29udGFpbmVyX29mKGZpbGUtPnByaXZhdGVfZGF0YSwgc3RydWN0 IGRlaW50ZXJsYWNlX2N0eCwgZmgpOworfQorCitzdGF0aWMgYm9vbCBkZWludGVybGFjZV9jaGVj a19mb3JtYXQodTMyIHBpeGVsZm9ybWF0KQoreworCXVuc2lnbmVkIGludCBpOworCisJZm9yIChp ID0gMDsgaSA8IEFSUkFZX1NJWkUoZGVpbnRlcmxhY2VfZm9ybWF0cyk7IGkrKykKKwkJaWYgKGRl aW50ZXJsYWNlX2Zvcm1hdHNbaV0gPT0gcGl4ZWxmb3JtYXQpCisJCQlyZXR1cm4gdHJ1ZTsKKwor CXJldHVybiBmYWxzZTsKK30KKworc3RhdGljIHZvaWQgZGVpbnRlcmxhY2VfcHJlcGFyZV9mb3Jt YXQoc3RydWN0IHY0bDJfcGl4X2Zvcm1hdCAqcGl4X2ZtdCkKK3sKKwl1bnNpZ25lZCBpbnQgaGVp Z2h0ID0gcGl4X2ZtdC0+aGVpZ2h0OworCXVuc2lnbmVkIGludCB3aWR0aCA9IHBpeF9mbXQtPndp ZHRoOworCXVuc2lnbmVkIGludCBieXRlc3BlcmxpbmU7CisJdW5zaWduZWQgaW50IHNpemVpbWFn ZTsKKworCXdpZHRoID0gY2xhbXAod2lkdGgsIERFSU5URVJMQUNFX01JTl9XSURUSCwKKwkJICAg ICAgREVJTlRFUkxBQ0VfTUFYX1dJRFRIKTsKKwloZWlnaHQgPSBjbGFtcChoZWlnaHQsIERFSU5U RVJMQUNFX01JTl9IRUlHSFQsCisJCSAgICAgICBERUlOVEVSTEFDRV9NQVhfSEVJR0hUKTsKKwor CWJ5dGVzcGVybGluZSA9IEFMSUdOKHdpZHRoLCAyKTsKKwkvKiBsdW1hICovCisJc2l6ZWltYWdl ID0gYnl0ZXNwZXJsaW5lICogaGVpZ2h0OworCS8qIGNocm9tYSAqLworCXNpemVpbWFnZSArPSBi eXRlc3BlcmxpbmUgKiBoZWlnaHQgLyAyOworCisJcGl4X2ZtdC0+d2lkdGggPSB3aWR0aDsKKwlw aXhfZm10LT5oZWlnaHQgPSBoZWlnaHQ7CisJcGl4X2ZtdC0+Ynl0ZXNwZXJsaW5lID0gYnl0ZXNw ZXJsaW5lOworCXBpeF9mbXQtPnNpemVpbWFnZSA9IHNpemVpbWFnZTsKK30KKworc3RhdGljIGlu dCBkZWludGVybGFjZV9xdWVyeWNhcChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwKKwkJ CQlzdHJ1Y3QgdjRsMl9jYXBhYmlsaXR5ICpjYXApCit7CisJc3Ryc2NweShjYXAtPmRyaXZlciwg REVJTlRFUkxBQ0VfTkFNRSwgc2l6ZW9mKGNhcC0+ZHJpdmVyKSk7CisJc3Ryc2NweShjYXAtPmNh cmQsIERFSU5URVJMQUNFX05BTUUsIHNpemVvZihjYXAtPmNhcmQpKTsKKwlzbnByaW50ZihjYXAt PmJ1c19pbmZvLCBzaXplb2YoY2FwLT5idXNfaW5mbyksCisJCSAicGxhdGZvcm06JXMiLCBERUlO VEVSTEFDRV9OQU1FKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGRlaW50ZXJsYWNl X2VudW1fZm10KHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpwcml2LAorCQkJCXN0cnVjdCB2NGwy X2ZtdGRlc2MgKmYpCit7CisJaWYgKGYtPmluZGV4IDwgQVJSQVlfU0laRShkZWludGVybGFjZV9m b3JtYXRzKSkgeworCQlmLT5waXhlbGZvcm1hdCA9IGRlaW50ZXJsYWNlX2Zvcm1hdHNbZi0+aW5k ZXhdOworCisJCXJldHVybiAwOworCX0KKworCXJldHVybiAtRUlOVkFMOworfQorCitzdGF0aWMg aW50IGRlaW50ZXJsYWNlX2VudW1fZnJhbWVzaXplcyhzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAq cHJpdiwKKwkJCQkgICAgICAgc3RydWN0IHY0bDJfZnJtc2l6ZWVudW0gKmZzaXplKQoreworCWlm IChmc2l6ZS0+aW5kZXggIT0gMCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZiAoIWRlaW50ZXJs YWNlX2NoZWNrX2Zvcm1hdChmc2l6ZS0+cGl4ZWxfZm9ybWF0KSkKKwkJcmV0dXJuIC1FSU5WQUw7 CisKKwlmc2l6ZS0+dHlwZSA9IFY0TDJfRlJNU0laRV9UWVBFX1NURVBXSVNFOworCWZzaXplLT5z dGVwd2lzZS5taW5fd2lkdGggPSBERUlOVEVSTEFDRV9NSU5fV0lEVEg7CisJZnNpemUtPnN0ZXB3 aXNlLm1pbl9oZWlnaHQgPSBERUlOVEVSTEFDRV9NSU5fSEVJR0hUOworCWZzaXplLT5zdGVwd2lz ZS5tYXhfd2lkdGggPSBERUlOVEVSTEFDRV9NQVhfV0lEVEg7CisJZnNpemUtPnN0ZXB3aXNlLm1h eF9oZWlnaHQgPSBERUlOVEVSTEFDRV9NQVhfSEVJR0hUOworCWZzaXplLT5zdGVwd2lzZS5zdGVw X3dpZHRoID0gMjsKKwlmc2l6ZS0+c3RlcHdpc2Uuc3RlcF9oZWlnaHQgPSAxOworCisJcmV0dXJu IDA7Cit9CisKK3N0YXRpYyBpbnQgZGVpbnRlcmxhY2VfZ19mbXRfdmlkX2NhcChzdHJ1Y3QgZmls ZSAqZmlsZSwgdm9pZCAqcHJpdiwKKwkJCQkgICAgIHN0cnVjdCB2NGwyX2Zvcm1hdCAqZikKK3sK KwlzdHJ1Y3QgZGVpbnRlcmxhY2VfY3R4ICpjdHggPSBkZWludGVybGFjZV9maWxlMmN0eChmaWxl KTsKKworCWYtPmZtdC5waXggPSBjdHgtPmRzdF9mbXQ7CisKKwlyZXR1cm4gMDsKK30KKworc3Rh dGljIGludCBkZWludGVybGFjZV9nX2ZtdF92aWRfb3V0KHN0cnVjdCBmaWxlICpmaWxlLCB2b2lk ICpwcml2LAorCQkJCSAgICAgc3RydWN0IHY0bDJfZm9ybWF0ICpmKQoreworCXN0cnVjdCBkZWlu dGVybGFjZV9jdHggKmN0eCA9IGRlaW50ZXJsYWNlX2ZpbGUyY3R4KGZpbGUpOworCisJZi0+Zm10 LnBpeCA9IGN0eC0+c3JjX2ZtdDsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGRlaW50 ZXJsYWNlX3RyeV9mbXRfdmlkX2NhcChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwKKwkJ CQkgICAgICAgc3RydWN0IHY0bDJfZm9ybWF0ICpmKQoreworCWlmICghZGVpbnRlcmxhY2VfY2hl Y2tfZm9ybWF0KGYtPmZtdC5waXgucGl4ZWxmb3JtYXQpKQorCQlmLT5mbXQucGl4LnBpeGVsZm9y bWF0ID0gZGVpbnRlcmxhY2VfZm9ybWF0c1swXTsKKworCWlmIChmLT5mbXQucGl4LmZpZWxkICE9 IFY0TDJfRklFTERfTk9ORSkKKwkJZi0+Zm10LnBpeC5maWVsZCA9IFY0TDJfRklFTERfTk9ORTsK KworCWRlaW50ZXJsYWNlX3ByZXBhcmVfZm9ybWF0KCZmLT5mbXQucGl4KTsKKworCXJldHVybiAw OworfQorCitzdGF0aWMgaW50IGRlaW50ZXJsYWNlX3RyeV9mbXRfdmlkX291dChzdHJ1Y3QgZmls ZSAqZmlsZSwgdm9pZCAqcHJpdiwKKwkJCQkgICAgICAgc3RydWN0IHY0bDJfZm9ybWF0ICpmKQor eworCWlmICghZGVpbnRlcmxhY2VfY2hlY2tfZm9ybWF0KGYtPmZtdC5waXgucGl4ZWxmb3JtYXQp KQorCQlmLT5mbXQucGl4LnBpeGVsZm9ybWF0ID0gZGVpbnRlcmxhY2VfZm9ybWF0c1swXTsKKwor CWlmIChmLT5mbXQucGl4LmZpZWxkICE9IFY0TDJfRklFTERfSU5URVJMQUNFRF9UQiAmJgorCSAg ICBmLT5mbXQucGl4LmZpZWxkICE9IFY0TDJfRklFTERfSU5URVJMQUNFRF9CVCAmJgorCSAgICBm LT5mbXQucGl4LmZpZWxkICE9IFY0TDJfRklFTERfSU5URVJMQUNFRCkKKwkJZi0+Zm10LnBpeC5m aWVsZCA9IFY0TDJfRklFTERfSU5URVJMQUNFRDsKKworCWRlaW50ZXJsYWNlX3ByZXBhcmVfZm9y bWF0KCZmLT5mbXQucGl4KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGRlaW50ZXJs YWNlX3NfZm10X3ZpZF9jYXAoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsCisJCQkJICAg ICBzdHJ1Y3QgdjRsMl9mb3JtYXQgKmYpCit7CisJc3RydWN0IGRlaW50ZXJsYWNlX2N0eCAqY3R4 ID0gZGVpbnRlcmxhY2VfZmlsZTJjdHgoZmlsZSk7CisJc3RydWN0IHZiMl9xdWV1ZSAqdnE7CisJ aW50IHJldDsKKworCXZxID0gdjRsMl9tMm1fZ2V0X3ZxKGN0eC0+ZmgubTJtX2N0eCwgZi0+dHlw ZSk7CisJaWYgKHZiMl9pc19idXN5KHZxKSkKKwkJcmV0dXJuIC1FQlVTWTsKKworCXJldCA9IGRl aW50ZXJsYWNlX3RyeV9mbXRfdmlkX2NhcChmaWxlLCBwcml2LCBmKTsKKwlpZiAocmV0KQorCQly ZXR1cm4gcmV0OworCisJY3R4LT5kc3RfZm10ID0gZi0+Zm10LnBpeDsKKworCXJldHVybiAwOwor fQorCitzdGF0aWMgaW50IGRlaW50ZXJsYWNlX3NfZm10X3ZpZF9vdXQoc3RydWN0IGZpbGUgKmZp bGUsIHZvaWQgKnByaXYsCisJCQkJICAgICBzdHJ1Y3QgdjRsMl9mb3JtYXQgKmYpCit7CisJc3Ry dWN0IGRlaW50ZXJsYWNlX2N0eCAqY3R4ID0gZGVpbnRlcmxhY2VfZmlsZTJjdHgoZmlsZSk7CisJ c3RydWN0IHZiMl9xdWV1ZSAqdnE7CisJaW50IHJldDsKKworCXZxID0gdjRsMl9tMm1fZ2V0X3Zx KGN0eC0+ZmgubTJtX2N0eCwgZi0+dHlwZSk7CisJaWYgKHZiMl9pc19idXN5KHZxKSkKKwkJcmV0 dXJuIC1FQlVTWTsKKworCXJldCA9IGRlaW50ZXJsYWNlX3RyeV9mbXRfdmlkX291dChmaWxlLCBw cml2LCBmKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJY3R4LT5zcmNfZm10ID0gZi0+ Zm10LnBpeDsKKworCS8qIFByb3BhZ2F0ZSBjb2xvcnNwYWNlIGluZm9ybWF0aW9uIHRvIGNhcHR1 cmUuICovCisJY3R4LT5kc3RfZm10LmNvbG9yc3BhY2UgPSBmLT5mbXQucGl4LmNvbG9yc3BhY2U7 CisJY3R4LT5kc3RfZm10LnhmZXJfZnVuYyA9IGYtPmZtdC5waXgueGZlcl9mdW5jOworCWN0eC0+ ZHN0X2ZtdC55Y2Jjcl9lbmMgPSBmLT5mbXQucGl4LnljYmNyX2VuYzsKKwljdHgtPmRzdF9mbXQu cXVhbnRpemF0aW9uID0gZi0+Zm10LnBpeC5xdWFudGl6YXRpb247CisKKwlyZXR1cm4gMDsKK30K KworY29uc3Qgc3RydWN0IHY0bDJfaW9jdGxfb3BzIGRlaW50ZXJsYWNlX2lvY3RsX29wcyA9IHsK KwkudmlkaW9jX3F1ZXJ5Y2FwCQk9IGRlaW50ZXJsYWNlX3F1ZXJ5Y2FwLAorCisJLnZpZGlvY19l bnVtX2ZyYW1lc2l6ZXMJCT0gZGVpbnRlcmxhY2VfZW51bV9mcmFtZXNpemVzLAorCisJLnZpZGlv Y19lbnVtX2ZtdF92aWRfY2FwCT0gZGVpbnRlcmxhY2VfZW51bV9mbXQsCisJLnZpZGlvY19nX2Zt dF92aWRfY2FwCQk9IGRlaW50ZXJsYWNlX2dfZm10X3ZpZF9jYXAsCisJLnZpZGlvY190cnlfZm10 X3ZpZF9jYXAJCT0gZGVpbnRlcmxhY2VfdHJ5X2ZtdF92aWRfY2FwLAorCS52aWRpb2Nfc19mbXRf dmlkX2NhcAkJPSBkZWludGVybGFjZV9zX2ZtdF92aWRfY2FwLAorCisJLnZpZGlvY19lbnVtX2Zt dF92aWRfb3V0CT0gZGVpbnRlcmxhY2VfZW51bV9mbXQsCisJLnZpZGlvY19nX2ZtdF92aWRfb3V0 CQk9IGRlaW50ZXJsYWNlX2dfZm10X3ZpZF9vdXQsCisJLnZpZGlvY190cnlfZm10X3ZpZF9vdXQJ CT0gZGVpbnRlcmxhY2VfdHJ5X2ZtdF92aWRfb3V0LAorCS52aWRpb2Nfc19mbXRfdmlkX291dAkJ PSBkZWludGVybGFjZV9zX2ZtdF92aWRfb3V0LAorCisJLnZpZGlvY19yZXFidWZzCQkJPSB2NGwy X20ybV9pb2N0bF9yZXFidWZzLAorCS52aWRpb2NfcXVlcnlidWYJCT0gdjRsMl9tMm1faW9jdGxf cXVlcnlidWYsCisJLnZpZGlvY19xYnVmCQkJPSB2NGwyX20ybV9pb2N0bF9xYnVmLAorCS52aWRp b2NfZHFidWYJCQk9IHY0bDJfbTJtX2lvY3RsX2RxYnVmLAorCS52aWRpb2NfcHJlcGFyZV9idWYJ CT0gdjRsMl9tMm1faW9jdGxfcHJlcGFyZV9idWYsCisJLnZpZGlvY19jcmVhdGVfYnVmcwkJPSB2 NGwyX20ybV9pb2N0bF9jcmVhdGVfYnVmcywKKwkudmlkaW9jX2V4cGJ1ZgkJCT0gdjRsMl9tMm1f aW9jdGxfZXhwYnVmLAorCisJLnZpZGlvY19zdHJlYW1vbgkJPSB2NGwyX20ybV9pb2N0bF9zdHJl YW1vbiwKKwkudmlkaW9jX3N0cmVhbW9mZgkJPSB2NGwyX20ybV9pb2N0bF9zdHJlYW1vZmYsCit9 OworCitzdGF0aWMgaW50IGRlaW50ZXJsYWNlX3F1ZXVlX3NldHVwKHN0cnVjdCB2YjJfcXVldWUg KnZxLCB1bnNpZ25lZCBpbnQgKm5idWZmZXJzLAorCQkJCSAgIHVuc2lnbmVkIGludCAqbnBsYW5l cywgdW5zaWduZWQgaW50IHNpemVzW10sCisJCQkJICAgc3RydWN0IGRldmljZSAqYWxsb2NfZGV2 c1tdKQoreworCXN0cnVjdCBkZWludGVybGFjZV9jdHggKmN0eCA9IHZiMl9nZXRfZHJ2X3ByaXYo dnEpOworCXN0cnVjdCB2NGwyX3BpeF9mb3JtYXQgKnBpeF9mbXQ7CisKKwlpZiAoVjRMMl9UWVBF X0lTX09VVFBVVCh2cS0+dHlwZSkpCisJCXBpeF9mbXQgPSAmY3R4LT5zcmNfZm10OworCWVsc2UK KwkJcGl4X2ZtdCA9ICZjdHgtPmRzdF9mbXQ7CisKKwlpZiAoKm5wbGFuZXMpIHsKKwkJaWYgKHNp emVzWzBdIDwgcGl4X2ZtdC0+c2l6ZWltYWdlKQorCQkJcmV0dXJuIC1FSU5WQUw7CisJfSBlbHNl IHsKKwkJc2l6ZXNbMF0gPSBwaXhfZm10LT5zaXplaW1hZ2U7CisJCSpucGxhbmVzID0gMTsKKwl9 CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBkZWludGVybGFjZV9idWZfcHJlcGFyZShz dHJ1Y3QgdmIyX2J1ZmZlciAqdmIpCit7CisJc3RydWN0IHZiMl9xdWV1ZSAqdnEgPSB2Yi0+dmIy X3F1ZXVlOworCXN0cnVjdCBkZWludGVybGFjZV9jdHggKmN0eCA9IHZiMl9nZXRfZHJ2X3ByaXYo dnEpOworCXN0cnVjdCB2NGwyX3BpeF9mb3JtYXQgKnBpeF9mbXQ7CisKKwlpZiAoVjRMMl9UWVBF X0lTX09VVFBVVCh2cS0+dHlwZSkpCisJCXBpeF9mbXQgPSAmY3R4LT5zcmNfZm10OworCWVsc2UK KwkJcGl4X2ZtdCA9ICZjdHgtPmRzdF9mbXQ7CisKKwlpZiAodmIyX3BsYW5lX3NpemUodmIsIDAp IDwgcGl4X2ZtdC0+c2l6ZWltYWdlKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCXZiMl9zZXRfcGxh bmVfcGF5bG9hZCh2YiwgMCwgcGl4X2ZtdC0+c2l6ZWltYWdlKTsKKworCXJldHVybiAwOworfQor CitzdGF0aWMgdm9pZCBkZWludGVybGFjZV9idWZfcXVldWUoc3RydWN0IHZiMl9idWZmZXIgKnZi KQoreworCXN0cnVjdCB2YjJfdjRsMl9idWZmZXIgKnZidWYgPSB0b192YjJfdjRsMl9idWZmZXIo dmIpOworCXN0cnVjdCBkZWludGVybGFjZV9jdHggKmN0eCA9IHZiMl9nZXRfZHJ2X3ByaXYodmIt PnZiMl9xdWV1ZSk7CisKKwl2NGwyX20ybV9idWZfcXVldWUoY3R4LT5maC5tMm1fY3R4LCB2YnVm KTsKK30KKworc3RhdGljIHZvaWQgZGVpbnRlcmxhY2VfcXVldWVfY2xlYW51cChzdHJ1Y3QgdmIy X3F1ZXVlICp2cSwgdTMyIHN0YXRlKQoreworCXN0cnVjdCBkZWludGVybGFjZV9jdHggKmN0eCA9 IHZiMl9nZXRfZHJ2X3ByaXYodnEpOworCXN0cnVjdCB2YjJfdjRsMl9idWZmZXIgKnZidWY7CisK KwlkbyB7CisJCWlmIChWNEwyX1RZUEVfSVNfT1VUUFVUKHZxLT50eXBlKSkKKwkJCXZidWYgPSB2 NGwyX20ybV9zcmNfYnVmX3JlbW92ZShjdHgtPmZoLm0ybV9jdHgpOworCQllbHNlCisJCQl2YnVm ID0gdjRsMl9tMm1fZHN0X2J1Zl9yZW1vdmUoY3R4LT5maC5tMm1fY3R4KTsKKworCQlpZiAodmJ1 ZikKKwkJCXY0bDJfbTJtX2J1Zl9kb25lKHZidWYsIHN0YXRlKTsKKwl9IHdoaWxlICh2YnVmKTsK KworCWlmIChWNEwyX1RZUEVfSVNfT1VUUFVUKHZxLT50eXBlKSAmJiBjdHgtPnByZXYpCisJCXY0 bDJfbTJtX2J1Zl9kb25lKGN0eC0+cHJldiwgc3RhdGUpOworfQorCitzdGF0aWMgaW50IGRlaW50 ZXJsYWNlX3N0YXJ0X3N0cmVhbWluZyhzdHJ1Y3QgdmIyX3F1ZXVlICp2cSwgdW5zaWduZWQgaW50 IGNvdW50KQoreworCXN0cnVjdCBkZWludGVybGFjZV9jdHggKmN0eCA9IHZiMl9nZXRfZHJ2X3By aXYodnEpOworCXN0cnVjdCBkZXZpY2UgKmRldiA9IGN0eC0+ZGV2LT5kZXY7CisKKwlpZiAoVjRM Ml9UWVBFX0lTX09VVFBVVCh2cS0+dHlwZSkpIHsKKwkJY3R4LT5maXJzdF9maWVsZCA9CisJCQlj dHgtPnNyY19mbXQuZmllbGQgPT0gVjRMMl9GSUVMRF9JTlRFUkxBQ0VEX0JUOworCQljdHgtPmZp ZWxkID0gY3R4LT5maXJzdF9maWVsZDsKKworCQljdHgtPnByZXYgPSBOVUxMOworCQljdHgtPmFi b3J0aW5nID0gMDsKKworCQljdHgtPmZsYWcxX2J1ZiA9IGRtYV9hbGxvY19jb2hlcmVudChkZXYs IEZMQUdfU0laRSwKKwkJCQkJCSAgICAmY3R4LT5mbGFnMV9idWZfZG1hLAorCQkJCQkJICAgIEdG UF9LRVJORUwpOworCQlpZiAoIWN0eC0+ZmxhZzFfYnVmKQorCQkJZ290byBlcnJfbm9fbWVtMTsK KworCQljdHgtPmZsYWcyX2J1ZiA9IGRtYV9hbGxvY19jb2hlcmVudChkZXYsIEZMQUdfU0laRSwK KwkJCQkJCSAgICAmY3R4LT5mbGFnMl9idWZfZG1hLAorCQkJCQkJICAgIEdGUF9LRVJORUwpOwor CQlpZiAoIWN0eC0+ZmxhZzJfYnVmKQorCQkJZ290byBlcnJfbm9fbWVtMjsKKwl9CisKKwlyZXR1 cm4gMDsKKworZXJyX25vX21lbTI6CisJZG1hX2ZyZWVfY29oZXJlbnQoZGV2LCBGTEFHX1NJWkUs IGN0eC0+ZmxhZzFfYnVmLAorCQkJICBjdHgtPmZsYWcxX2J1Zl9kbWEpOworZXJyX25vX21lbTE6 CisJZGVpbnRlcmxhY2VfcXVldWVfY2xlYW51cCh2cSwgVkIyX0JVRl9TVEFURV9RVUVVRUQpOwor CisJcmV0dXJuIC1FTk9NRU07Cit9CisKK3N0YXRpYyB2b2lkIGRlaW50ZXJsYWNlX3N0b3Bfc3Ry ZWFtaW5nKHN0cnVjdCB2YjJfcXVldWUgKnZxKQoreworCXN0cnVjdCBkZWludGVybGFjZV9jdHgg KmN0eCA9IHZiMl9nZXRfZHJ2X3ByaXYodnEpOworCisJaWYgKFY0TDJfVFlQRV9JU19PVVRQVVQo dnEtPnR5cGUpKSB7CisJCXN0cnVjdCBkZXZpY2UgKmRldiA9IGN0eC0+ZGV2LT5kZXY7CisKKwkJ ZG1hX2ZyZWVfY29oZXJlbnQoZGV2LCBGTEFHX1NJWkUsIGN0eC0+ZmxhZzFfYnVmLAorCQkJCSAg Y3R4LT5mbGFnMV9idWZfZG1hKTsKKwkJZG1hX2ZyZWVfY29oZXJlbnQoZGV2LCBGTEFHX1NJWkUs IGN0eC0+ZmxhZzJfYnVmLAorCQkJCSAgY3R4LT5mbGFnMl9idWZfZG1hKTsKKwl9CisKKwlkZWlu dGVybGFjZV9xdWV1ZV9jbGVhbnVwKHZxLCBWQjJfQlVGX1NUQVRFX0VSUk9SKTsKK30KKworc3Rh dGljIGNvbnN0IHN0cnVjdCB2YjJfb3BzIGRlaW50ZXJsYWNlX3FvcHMgPSB7CisJLnF1ZXVlX3Nl dHVwCQk9IGRlaW50ZXJsYWNlX3F1ZXVlX3NldHVwLAorCS5idWZfcHJlcGFyZQkJPSBkZWludGVy bGFjZV9idWZfcHJlcGFyZSwKKwkuYnVmX3F1ZXVlCQk9IGRlaW50ZXJsYWNlX2J1Zl9xdWV1ZSwK Kwkuc3RhcnRfc3RyZWFtaW5nCT0gZGVpbnRlcmxhY2Vfc3RhcnRfc3RyZWFtaW5nLAorCS5zdG9w X3N0cmVhbWluZwkJPSBkZWludGVybGFjZV9zdG9wX3N0cmVhbWluZywKKwkud2FpdF9wcmVwYXJl CQk9IHZiMl9vcHNfd2FpdF9wcmVwYXJlLAorCS53YWl0X2ZpbmlzaAkJPSB2YjJfb3BzX3dhaXRf ZmluaXNoLAorfTsKKworc3RhdGljIGludCBkZWludGVybGFjZV9xdWV1ZV9pbml0KHZvaWQgKnBy aXYsIHN0cnVjdCB2YjJfcXVldWUgKnNyY192cSwKKwkJCQkgIHN0cnVjdCB2YjJfcXVldWUgKmRz dF92cSkKK3sKKwlzdHJ1Y3QgZGVpbnRlcmxhY2VfY3R4ICpjdHggPSBwcml2OworCWludCByZXQ7 CisKKwlzcmNfdnEtPnR5cGUgPSBWNEwyX0JVRl9UWVBFX1ZJREVPX09VVFBVVDsKKwlzcmNfdnEt PmlvX21vZGVzID0gVkIyX01NQVAgfCBWQjJfRE1BQlVGOworCXNyY192cS0+ZHJ2X3ByaXYgPSBj dHg7CisJc3JjX3ZxLT5idWZfc3RydWN0X3NpemUgPSBzaXplb2Yoc3RydWN0IHY0bDJfbTJtX2J1 ZmZlcik7CisJc3JjX3ZxLT5taW5fYnVmZmVyc19uZWVkZWQgPSAxOworCXNyY192cS0+b3BzID0g JmRlaW50ZXJsYWNlX3FvcHM7CisJc3JjX3ZxLT5tZW1fb3BzID0gJnZiMl9kbWFfY29udGlnX21l bW9wczsKKwlzcmNfdnEtPnRpbWVzdGFtcF9mbGFncyA9IFY0TDJfQlVGX0ZMQUdfVElNRVNUQU1Q X0NPUFk7CisJc3JjX3ZxLT5sb2NrID0gJmN0eC0+ZGV2LT5kZXZfbXV0ZXg7CisJc3JjX3ZxLT5k ZXYgPSBjdHgtPmRldi0+ZGV2OworCisJcmV0ID0gdmIyX3F1ZXVlX2luaXQoc3JjX3ZxKTsKKwlp ZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJZHN0X3ZxLT50eXBlID0gVjRMMl9CVUZfVFlQRV9W SURFT19DQVBUVVJFOworCWRzdF92cS0+aW9fbW9kZXMgPSBWQjJfTU1BUCB8IFZCMl9ETUFCVUY7 CisJZHN0X3ZxLT5kcnZfcHJpdiA9IGN0eDsKKwlkc3RfdnEtPmJ1Zl9zdHJ1Y3Rfc2l6ZSA9IHNp emVvZihzdHJ1Y3QgdjRsMl9tMm1fYnVmZmVyKTsKKwlkc3RfdnEtPm1pbl9idWZmZXJzX25lZWRl ZCA9IDI7CisJZHN0X3ZxLT5vcHMgPSAmZGVpbnRlcmxhY2VfcW9wczsKKwlkc3RfdnEtPm1lbV9v cHMgPSAmdmIyX2RtYV9jb250aWdfbWVtb3BzOworCWRzdF92cS0+dGltZXN0YW1wX2ZsYWdzID0g VjRMMl9CVUZfRkxBR19USU1FU1RBTVBfQ09QWTsKKwlkc3RfdnEtPmxvY2sgPSAmY3R4LT5kZXYt PmRldl9tdXRleDsKKwlkc3RfdnEtPmRldiA9IGN0eC0+ZGV2LT5kZXY7CisKKwlyZXQgPSB2YjJf cXVldWVfaW5pdChkc3RfdnEpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlyZXR1cm4g MDsKK30KKworc3RhdGljIGludCBkZWludGVybGFjZV9vcGVuKHN0cnVjdCBmaWxlICpmaWxlKQor eworCXN0cnVjdCBkZWludGVybGFjZV9kZXYgKmRldiA9IHZpZGVvX2RydmRhdGEoZmlsZSk7CisJ c3RydWN0IGRlaW50ZXJsYWNlX2N0eCAqY3R4ID0gTlVMTDsKKwlpbnQgcmV0OworCisJaWYgKG11 dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmZGV2LT5kZXZfbXV0ZXgpKQorCQlyZXR1cm4gLUVSRVNU QVJUU1lTOworCisJY3R4ID0ga3phbGxvYyhzaXplb2YoKmN0eCksIEdGUF9LRVJORUwpOworCWlm ICghY3R4KSB7CisJCW11dGV4X3VubG9jaygmZGV2LT5kZXZfbXV0ZXgpOworCQlyZXR1cm4gLUVO T01FTTsKKwl9CisKKwkvKiBkZWZhdWx0IG91dHB1dCBmb3JtYXQgKi8KKwljdHgtPnNyY19mbXQu cGl4ZWxmb3JtYXQgPSBkZWludGVybGFjZV9mb3JtYXRzWzBdOworCWN0eC0+c3JjX2ZtdC5maWVs ZCA9IFY0TDJfRklFTERfSU5URVJMQUNFRDsKKwljdHgtPnNyY19mbXQud2lkdGggPSA2NDA7CisJ Y3R4LT5zcmNfZm10LmhlaWdodCA9IDQ4MDsKKwlkZWludGVybGFjZV9wcmVwYXJlX2Zvcm1hdCgm Y3R4LT5zcmNfZm10KTsKKworCS8qIGRlZmF1bHQgY2FwdHVyZSBmb3JtYXQgKi8KKwljdHgtPmRz dF9mbXQucGl4ZWxmb3JtYXQgPSBkZWludGVybGFjZV9mb3JtYXRzWzBdOworCWN0eC0+ZHN0X2Zt dC5maWVsZCA9IFY0TDJfRklFTERfTk9ORTsKKwljdHgtPmRzdF9mbXQud2lkdGggPSA2NDA7CisJ Y3R4LT5kc3RfZm10LmhlaWdodCA9IDQ4MDsKKwlkZWludGVybGFjZV9wcmVwYXJlX2Zvcm1hdCgm Y3R4LT5kc3RfZm10KTsKKworCXY0bDJfZmhfaW5pdCgmY3R4LT5maCwgdmlkZW9fZGV2ZGF0YShm aWxlKSk7CisJZmlsZS0+cHJpdmF0ZV9kYXRhID0gJmN0eC0+Zmg7CisJY3R4LT5kZXYgPSBkZXY7 CisKKwljdHgtPmZoLm0ybV9jdHggPSB2NGwyX20ybV9jdHhfaW5pdChkZXYtPm0ybV9kZXYsIGN0 eCwKKwkJCQkJICAgICZkZWludGVybGFjZV9xdWV1ZV9pbml0KTsKKwlpZiAoSVNfRVJSKGN0eC0+ ZmgubTJtX2N0eCkpIHsKKwkJcmV0ID0gUFRSX0VSUihjdHgtPmZoLm0ybV9jdHgpOworCQlnb3Rv IGVycl9mcmVlOworCX0KKworCXY0bDJfZmhfYWRkKCZjdHgtPmZoKTsKKworCW11dGV4X3VubG9j aygmZGV2LT5kZXZfbXV0ZXgpOworCisJcmV0dXJuIDA7CisKK2Vycl9mcmVlOgorCWtmcmVlKGN0 eCk7CisJbXV0ZXhfdW5sb2NrKCZkZXYtPmRldl9tdXRleCk7CisKKwlyZXR1cm4gcmV0OworfQor CitzdGF0aWMgaW50IGRlaW50ZXJsYWNlX3JlbGVhc2Uoc3RydWN0IGZpbGUgKmZpbGUpCit7CisJ c3RydWN0IGRlaW50ZXJsYWNlX2RldiAqZGV2ID0gdmlkZW9fZHJ2ZGF0YShmaWxlKTsKKwlzdHJ1 Y3QgZGVpbnRlcmxhY2VfY3R4ICpjdHggPSBjb250YWluZXJfb2YoZmlsZS0+cHJpdmF0ZV9kYXRh LAorCQkJCQkJICAgc3RydWN0IGRlaW50ZXJsYWNlX2N0eCwgZmgpOworCisJbXV0ZXhfbG9jaygm ZGV2LT5kZXZfbXV0ZXgpOworCisJdjRsMl9maF9kZWwoJmN0eC0+ZmgpOworCXY0bDJfZmhfZXhp dCgmY3R4LT5maCk7CisJdjRsMl9tMm1fY3R4X3JlbGVhc2UoY3R4LT5maC5tMm1fY3R4KTsKKwor CWtmcmVlKGN0eCk7CisKKwltdXRleF91bmxvY2soJmRldi0+ZGV2X211dGV4KTsKKworCXJldHVy biAwOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IHY0bDJfZmlsZV9vcGVyYXRpb25zIGRlaW50 ZXJsYWNlX2ZvcHMgPSB7CisJLm93bmVyCQk9IFRISVNfTU9EVUxFLAorCS5vcGVuCQk9IGRlaW50 ZXJsYWNlX29wZW4sCisJLnJlbGVhc2UJPSBkZWludGVybGFjZV9yZWxlYXNlLAorCS5wb2xsCQk9 IHY0bDJfbTJtX2ZvcF9wb2xsLAorCS51bmxvY2tlZF9pb2N0bAk9IHZpZGVvX2lvY3RsMiwKKwku bW1hcAkJPSB2NGwyX20ybV9mb3BfbW1hcCwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgdmlk ZW9fZGV2aWNlIGRlaW50ZXJsYWNlX3ZpZGVvX2RldmljZSA9IHsKKwkubmFtZQkJPSBERUlOVEVS TEFDRV9OQU1FLAorCS52ZmxfZGlyCT0gVkZMX0RJUl9NMk0sCisJLmZvcHMJCT0gJmRlaW50ZXJs YWNlX2ZvcHMsCisJLmlvY3RsX29wcwk9ICZkZWludGVybGFjZV9pb2N0bF9vcHMsCisJLm1pbm9y CQk9IC0xLAorCS5yZWxlYXNlCT0gdmlkZW9fZGV2aWNlX3JlbGVhc2VfZW1wdHksCisJLmRldmlj ZV9jYXBzCT0gVjRMMl9DQVBfVklERU9fTTJNIHwgVjRMMl9DQVBfU1RSRUFNSU5HLAorfTsKKwor c3RhdGljIGNvbnN0IHN0cnVjdCB2NGwyX20ybV9vcHMgZGVpbnRlcmxhY2VfbTJtX29wcyA9IHsK KwkuZGV2aWNlX3J1bgk9IGRlaW50ZXJsYWNlX2RldmljZV9ydW4sCisJLmpvYl9yZWFkeQk9IGRl aW50ZXJsYWNlX2pvYl9yZWFkeSwKKwkuam9iX2Fib3J0CT0gZGVpbnRlcmxhY2Vfam9iX2Fib3J0 LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfY29uZmlnIGRlaW50ZXJsYWNlX3Jl Z21hcF9jb25maWcgPSB7CisJLnJlZ19iaXRzCT0gMzIsCisJLnZhbF9iaXRzCT0gMzIsCisJLnJl Z19zdHJpZGUJPSA0LAorCS5tYXhfcmVnaXN0ZXIJPSAweDk3ZiwKK307CisKK3N0YXRpYyBpbnQg ZGVpbnRlcmxhY2VfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1 Y3QgZGVpbnRlcmxhY2VfZGV2ICpkZXY7CisJc3RydWN0IHZpZGVvX2RldmljZSAqdmZkOworCXN0 cnVjdCByZXNvdXJjZSAqcmVzOworCWludCBpcnEsIHJldDsKKworCWRldiA9IGRldm1fa3phbGxv YygmcGRldi0+ZGV2LCBzaXplb2YoKmRldiksIEdGUF9LRVJORUwpOworCWlmICghZGV2KQorCQly ZXR1cm4gLUVOT01FTTsKKworCWRldi0+dmZkID0gZGVpbnRlcmxhY2VfdmlkZW9fZGV2aWNlOwor CWRldi0+ZGV2ID0gJnBkZXYtPmRldjsKKworCWlycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwg MCk7CisJaWYgKGlycSA8PSAwKSB7CisJCWRldl9lcnIoZGV2LT5kZXYsICJGYWlsZWQgdG8gZ2V0 IElSUVxuIik7CisKKwkJcmV0dXJuIGlycTsKKwl9CisKKwlyZXQgPSBkZXZtX3JlcXVlc3RfaXJx KGRldi0+ZGV2LCBpcnEsIGRlaW50ZXJsYWNlX2lycSwKKwkJCSAgICAgICAwLCBkZXZfbmFtZShk ZXYtPmRldiksIGRldik7CisJaWYgKHJldCkgeworCQlkZXZfZXJyKGRldi0+ZGV2LCAiRmFpbGVk IHRvIHJlcXVlc3QgSVJRXG4iKTsKKworCQlyZXR1cm4gcmV0OworCX0KKworCXJldCA9IG9mX2Rt YV9jb25maWd1cmUoZGV2LT5kZXYsIGRldi0+ZGV2LT5vZl9ub2RlLCB0cnVlKTsKKwlpZiAocmV0 KQorCQlyZXR1cm4gcmV0OworCisJZGV2LT5idXNfY2xrID0gZGV2bV9jbGtfZ2V0KGRldi0+ZGV2 LCAiYnVzIik7CisJaWYgKElTX0VSUihkZXYtPmJ1c19jbGspKSB7CisJCWRldl9lcnIoZGV2LT5k ZXYsICJGYWlsZWQgdG8gZ2V0IGJ1cyBjbG9ja1xuIik7CisKKwkJcmV0dXJuIFBUUl9FUlIoZGV2 LT5idXNfY2xrKTsKKwl9CisKKwlkZXYtPm1vZF9jbGsgPSBkZXZtX2Nsa19nZXQoZGV2LT5kZXYs ICJtb2QiKTsKKwlpZiAoSVNfRVJSKGRldi0+bW9kX2NsaykpIHsKKwkJZGV2X2VycihkZXYtPmRl diwgIkZhaWxlZCB0byBnZXQgbW9kIGNsb2NrXG4iKTsKKworCQlyZXR1cm4gUFRSX0VSUihkZXYt Pm1vZF9jbGspOworCX0KKworCWRldi0+cmFtX2NsayA9IGRldm1fY2xrX2dldChkZXYtPmRldiwg InJhbSIpOworCWlmIChJU19FUlIoZGV2LT5yYW1fY2xrKSkgeworCQlkZXZfZXJyKGRldi0+ZGV2 LCAiRmFpbGVkIHRvIGdldCByYW0gY2xvY2tcbiIpOworCisJCXJldHVybiBQVFJfRVJSKGRldi0+ cmFtX2Nsayk7CisJfQorCisJZGV2LT5yc3RjID0gZGV2bV9yZXNldF9jb250cm9sX2dldChkZXYt PmRldiwgTlVMTCk7CisJaWYgKElTX0VSUihkZXYtPnJzdGMpKSB7CisJCWRldl9lcnIoZGV2LT5k ZXYsICJGYWlsZWQgdG8gZ2V0IHJlc2V0IGNvbnRyb2xcbiIpOworCisJCXJldHVybiBQVFJfRVJS KGRldi0+cnN0Yyk7CisJfQorCisJcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElP UkVTT1VSQ0VfTUVNLCAwKTsKKwlkZXYtPmJhc2UgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoZGV2 LT5kZXYsIHJlcyk7CisJaWYgKElTX0VSUihkZXYtPmJhc2UpKSB7CisJCWRldl9lcnIoZGV2LT5k ZXYsICJGYWlsZWQgdG8gbWFwIHJlZ2lzdGVyc1xuIik7CisKKwkJcmV0dXJuIFBUUl9FUlIoZGV2 LT5iYXNlKTsKKwl9CisKKwlkZXYtPnJlZ21hcCA9IGRldm1fcmVnbWFwX2luaXRfbW1pbyhkZXYt PmRldiwgZGV2LT5iYXNlLAorCQkJCQkgICAgJmRlaW50ZXJsYWNlX3JlZ21hcF9jb25maWcpOwor CWlmIChJU19FUlIoZGV2LT5yZWdtYXApKSB7CisJCWRldl9lcnIoZGV2LT5kZXYsICJDb3VsZG4n dCBjcmVhdGUgZGVpbnRlcmxhY2UgcmVnbWFwXG4iKTsKKworCQlyZXR1cm4gUFRSX0VSUihkZXYt PnJlZ21hcCk7CisJfQorCisJcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKGRldi0+YnVzX2Nsayk7 CisJaWYgKHJldCkgeworCQlkZXZfZXJyKGRldi0+ZGV2LCAiRmFpbGVkIHRvIGVuYWJsZSBidXMg Y2xvY2tcbiIpOworCisJCXJldHVybiByZXQ7CisJfQorCisJY2xrX3NldF9yYXRlKGRldi0+bW9k X2NsaywgMzAwMDAwMDAwKTsKKworCXJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShkZXYtPm1vZF9j bGspOworCWlmIChyZXQpIHsKKwkJZGV2X2VycihkZXYtPmRldiwgIkZhaWxlZCB0byBlbmFibGUg bW9kIGNsb2NrXG4iKTsKKworCQlnb3RvIGVycl9idXNfY2xrOworCX0KKworCXJldCA9IGNsa19w cmVwYXJlX2VuYWJsZShkZXYtPnJhbV9jbGspOworCWlmIChyZXQpIHsKKwkJZGV2X2VycihkZXYt PmRldiwgIkZhaWxlZCB0byBlbmFibGUgcmFtIGNsb2NrXG4iKTsKKworCQlnb3RvIGVycl9tb2Rf Y2xrOworCX0KKworCXJldCA9IHJlc2V0X2NvbnRyb2xfcmVzZXQoZGV2LT5yc3RjKTsKKwlpZiAo cmV0KSB7CisJCWRldl9lcnIoZGV2LT5kZXYsICJGYWlsZWQgdG8gYXBwbHkgcmVzZXRcbiIpOwor CisJCWdvdG8gZXJyX3JhbV9jbGs7CisJfQorCisJbXV0ZXhfaW5pdCgmZGV2LT5kZXZfbXV0ZXgp OworCisJcmV0ID0gdjRsMl9kZXZpY2VfcmVnaXN0ZXIoJnBkZXYtPmRldiwgJmRldi0+djRsMl9k ZXYpOworCWlmIChyZXQpIHsKKwkJZGV2X2VycihkZXYtPmRldiwgIkZhaWxlZCB0byByZWdpc3Rl ciBWNEwyIGRldmljZVxuIik7CisKKwkJZ290byBlcnJfcnN0YzsKKwl9CisKKwl2ZmQgPSAmZGV2 LT52ZmQ7CisJdmZkLT5sb2NrID0gJmRldi0+ZGV2X211dGV4OworCXZmZC0+djRsMl9kZXYgPSAm ZGV2LT52NGwyX2RldjsKKworCXNucHJpbnRmKHZmZC0+bmFtZSwgc2l6ZW9mKHZmZC0+bmFtZSks ICIlcyIsCisJCSBkZWludGVybGFjZV92aWRlb19kZXZpY2UubmFtZSk7CisJdmlkZW9fc2V0X2Ry dmRhdGEodmZkLCBkZXYpOworCisJcmV0ID0gdmlkZW9fcmVnaXN0ZXJfZGV2aWNlKHZmZCwgVkZM X1RZUEVfR1JBQkJFUiwgMCk7CisJaWYgKHJldCkgeworCQl2NGwyX2VycigmZGV2LT52NGwyX2Rl diwgIkZhaWxlZCB0byByZWdpc3RlciB2aWRlbyBkZXZpY2VcbiIpOworCisJCWdvdG8gZXJyX3Y0 bDI7CisJfQorCisJdjRsMl9pbmZvKCZkZXYtPnY0bDJfZGV2LAorCQkgICJEZXZpY2UgcmVnaXN0 ZXJlZCBhcyAvZGV2L3ZpZGVvJWRcbiIsIHZmZC0+bnVtKTsKKworCWRldi0+bTJtX2RldiA9IHY0 bDJfbTJtX2luaXQoJmRlaW50ZXJsYWNlX20ybV9vcHMpOworCWlmIChJU19FUlIoZGV2LT5tMm1f ZGV2KSkgeworCQl2NGwyX2VycigmZGV2LT52NGwyX2RldiwKKwkJCSAiRmFpbGVkIHRvIGluaXRp YWxpemUgVjRMMiBNMk0gZGV2aWNlXG4iKTsKKwkJcmV0ID0gUFRSX0VSUihkZXYtPm0ybV9kZXYp OworCisJCWdvdG8gZXJyX3ZpZGVvOworCX0KKworCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYs IGRldik7CisKKwlkZWludGVybGFjZV9pbml0KGRldik7CisKKwlyZXR1cm4gMDsKKworZXJyX3Zp ZGVvOgorCXZpZGVvX3VucmVnaXN0ZXJfZGV2aWNlKCZkZXYtPnZmZCk7CitlcnJfdjRsMjoKKwl2 NGwyX2RldmljZV91bnJlZ2lzdGVyKCZkZXYtPnY0bDJfZGV2KTsKK2Vycl9yc3RjOgorCXJlc2V0 X2NvbnRyb2xfYXNzZXJ0KGRldi0+cnN0Yyk7CitlcnJfcmFtX2NsazoKKwljbGtfZGlzYWJsZV91 bnByZXBhcmUoZGV2LT5yYW1fY2xrKTsKK2Vycl9tb2RfY2xrOgorCWNsa19kaXNhYmxlX3VucHJl cGFyZShkZXYtPm1vZF9jbGspOworZXJyX2J1c19jbGs6CisJY2xrX2Rpc2FibGVfdW5wcmVwYXJl KGRldi0+YnVzX2Nsayk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IGRlaW50ZXJs YWNlX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQoreworCXN0cnVjdCBkZWlu dGVybGFjZV9kZXYgKmRldiA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOworCisJdjRsMl9t Mm1fcmVsZWFzZShkZXYtPm0ybV9kZXYpOworCXZpZGVvX3VucmVnaXN0ZXJfZGV2aWNlKCZkZXYt PnZmZCk7CisJdjRsMl9kZXZpY2VfdW5yZWdpc3RlcigmZGV2LT52NGwyX2Rldik7CisKKwlyZXNl dF9jb250cm9sX2Fzc2VydChkZXYtPnJzdGMpOworCisJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGRl di0+cmFtX2Nsayk7CisJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGRldi0+bW9kX2Nsayk7CisJY2xr X2Rpc2FibGVfdW5wcmVwYXJlKGRldi0+YnVzX2Nsayk7CisKKwlyZXR1cm4gMDsKK30KKworc3Rh dGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZGVpbnRlcmxhY2VfZHRfbWF0Y2hbXSA9IHsK Kwl7IC5jb21wYXRpYmxlID0gImFsbHdpbm5lcixzdW44aS1oMy1kZWludGVybGFjZSIgfSwKKwl7 IC8qIHNlbnRpbmVsICovIH0KK307CitNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBkZWludGVybGFj ZV9kdF9tYXRjaCk7CisKK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGRlaW50ZXJsYWNl X2RyaXZlciA9IHsKKwkucHJvYmUJCT0gZGVpbnRlcmxhY2VfcHJvYmUsCisJLnJlbW92ZQkJPSBk ZWludGVybGFjZV9yZW1vdmUsCisJLmRyaXZlcgkJPSB7CisJCS5uYW1lCQk9IERFSU5URVJMQUNF X05BTUUsCisJCS5vZl9tYXRjaF90YWJsZQk9IG9mX21hdGNoX3B0cihkZWludGVybGFjZV9kdF9t YXRjaCksCisJfSwKK307Cittb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGRlaW50ZXJsYWNlX2RyaXZl cik7CisKK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsKK01PRFVMRV9BVVRIT1IoIkplcm5laiBT a3JhYmVjIDxqZXJuZWouc2tyYWJlY0BzaW9sLm5ldD4iKTsKK01PRFVMRV9ERVNDUklQVElPTigi QWxsd2lubmVyIERlaW50ZXJsYWNlIGRyaXZlciIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRp YS9wbGF0Zm9ybS9zdW54aS9zdW44aS1kaS9zdW44aS1kaS5oIGIvZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS9zdW54aS9zdW44aS1kaS9zdW44aS1kaS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMC4uZDRjMDJmYzFlZTE5Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9t ZWRpYS9wbGF0Zm9ybS9zdW54aS9zdW44aS1kaS9zdW44aS1kaS5oCkBAIC0wLDAgKzEsMjM4IEBA CisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLworLyoKKyAqIEFsbHdpbm5l ciBEZWludGVybGFjZSBkcml2ZXIKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgSmVybmVqIFNr cmFiZWMgPGplcm5lai5za3JhYmVjQHNpb2wubmV0PgorICovCisKKyNpZm5kZWYgX1NVTjhJX0RF SU5URVJMQUNFX0hfCisjZGVmaW5lIF9TVU44SV9ERUlOVEVSTEFDRV9IXworCisjaW5jbHVkZSA8 bWVkaWEvdjRsMi1kZXZpY2UuaD4KKyNpbmNsdWRlIDxtZWRpYS92NGwyLW1lbTJtZW0uaD4KKyNp bmNsdWRlIDxtZWRpYS92aWRlb2J1ZjItdjRsMi5oPgorI2luY2x1ZGUgPG1lZGlhL3ZpZGVvYnVm Mi1kbWEtY29udGlnLmg+CisKKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KKwor I2RlZmluZSBERUlOVEVSTEFDRV9OQU1FCQkic3VuOGktZGkiCisKKyNkZWZpbmUgREVJTlRFUkxB Q0VfTU9EX0VOQUJMRQkJCTB4MDAKKyNkZWZpbmUgREVJTlRFUkxBQ0VfTU9EX0VOQUJMRV9FTgkJ CUJJVCgwKQorCisjZGVmaW5lIERFSU5URVJMQUNFX0ZSTV9DVFJMCQkJMHgwNAorI2RlZmluZSBE RUlOVEVSTEFDRV9GUk1fQ1RSTF9SRUdfUkVBRFkJCQlCSVQoMCkKKyNkZWZpbmUgREVJTlRFUkxB Q0VfRlJNX0NUUkxfV0JfRU4JCQlCSVQoMikKKyNkZWZpbmUgREVJTlRFUkxBQ0VfRlJNX0NUUkxf T1VUX0NUUkwJCQlCSVQoMTEpCisjZGVmaW5lIERFSU5URVJMQUNFX0ZSTV9DVFJMX1NUQVJUCQkJ QklUKDE2KQorI2RlZmluZSBERUlOVEVSTEFDRV9GUk1fQ1RSTF9DT0VGX0NUUkwJCQlCSVQoMjMp CisKKyNkZWZpbmUgREVJTlRFUkxBQ0VfQllQQVNTCQkJMHgwOAorI2RlZmluZSBERUlOVEVSTEFD RV9CWVBBU1NfQ1NDCQkJCUJJVCgxKQorCisjZGVmaW5lIERFSU5URVJMQUNFX0FHVEhfU0VMCQkJ MHgwYworI2RlZmluZSBERUlOVEVSTEFDRV9BR1RIX1NFTF9MSU5FQlVGCQkJQklUKDgpCisKKyNk ZWZpbmUgREVJTlRFUkxBQ0VfTElOVF9DVFJMCQkJMHgxMAorI2RlZmluZSBERUlOVEVSTEFDRV9U UkRfUFJFTFVNQQkJCTB4MWMKKyNkZWZpbmUgREVJTlRFUkxBQ0VfQlVGX0FERFIwCQkJMHgyMAor I2RlZmluZSBERUlOVEVSTEFDRV9CVUZfQUREUjEJCQkweDI0CisjZGVmaW5lIERFSU5URVJMQUNF X0JVRl9BRERSMgkJCTB4MjgKKworI2RlZmluZSBERUlOVEVSTEFDRV9GSUVMRF9DVFJMCQkJMHgy YworI2RlZmluZSBERUlOVEVSTEFDRV9GSUVMRF9DVFJMX0ZJRUxEX0NOVCh2KQkJKCh2KSAmIDB4 ZmYpCisjZGVmaW5lIERFSU5URVJMQUNFX0ZJRUxEX0NUUkxfRklFTERfQ05UX01TSwkJKDB4ZmYp CisKKyNkZWZpbmUgREVJTlRFUkxBQ0VfVEJfT0ZGU0VUMAkJCTB4MzAKKyNkZWZpbmUgREVJTlRF UkxBQ0VfVEJfT0ZGU0VUMQkJCTB4MzQKKyNkZWZpbmUgREVJTlRFUkxBQ0VfVEJfT0ZGU0VUMgkJ CTB4MzgKKyNkZWZpbmUgREVJTlRFUkxBQ0VfVFJEX1BSRUNIUk9NQQkJMHgzYworI2RlZmluZSBE RUlOVEVSTEFDRV9MSU5FX1NUUklERTAJCTB4NDAKKyNkZWZpbmUgREVJTlRFUkxBQ0VfTElORV9T VFJJREUxCQkweDQ0CisjZGVmaW5lIERFSU5URVJMQUNFX0xJTkVfU1RSSURFMgkJMHg0OAorCisj ZGVmaW5lIERFSU5URVJMQUNFX0lOX0ZNVAkJCTB4NGMKKyNkZWZpbmUgREVJTlRFUkxBQ0VfSU5f Rk1UX1BTKHYpCQkJKCh2KSAmIDMpCisjZGVmaW5lIERFSU5URVJMQUNFX0lOX0ZNVF9GTVQodikJ CQkoKCh2KSAmIDcpIDw8IDQpCisjZGVmaW5lIERFSU5URVJMQUNFX0lOX0ZNVF9NT0QodikJCQko KCh2KSAmIDcpIDw8IDgpCisKKyNkZWZpbmUgREVJTlRFUkxBQ0VfV0JfQUREUjAJCQkweDUwCisj ZGVmaW5lIERFSU5URVJMQUNFX1dCX0FERFIxCQkJMHg1NAorI2RlZmluZSBERUlOVEVSTEFDRV9X Ql9BRERSMgkJCTB4NTgKKworI2RlZmluZSBERUlOVEVSTEFDRV9PVVRfRk1UCQkJMHg1YworI2Rl ZmluZSBERUlOVEVSTEFDRV9PVVRfRk1UX0ZNVCh2KQkJCSgodikgJiAweGYpCisjZGVmaW5lIERF SU5URVJMQUNFX09VVF9GTVRfUFModikJCQkoKCh2KSAmIDMpIDw8IDUpCisKKyNkZWZpbmUgREVJ TlRFUkxBQ0VfSU5UX0VOQUJMRQkJCTB4NjAKKyNkZWZpbmUgREVJTlRFUkxBQ0VfSU5UX0VOQUJM RV9XQl9FTgkJCUJJVCg3KQorCisjZGVmaW5lIERFSU5URVJMQUNFX0lOVF9TVEFUVVMJCQkweDY0 CisjZGVmaW5lIERFSU5URVJMQUNFX0lOVF9TVEFUVVNfV1JJVEVCQUNLCQlCSVQoNykKKworI2Rl ZmluZSBERUlOVEVSTEFDRV9TVEFUVVMJCQkweDY4CisjZGVmaW5lIERFSU5URVJMQUNFX1NUQVRV U19DT0VGX1NUQVRVUwkJCUJJVCgxMSkKKyNkZWZpbmUgREVJTlRFUkxBQ0VfU1RBVFVTX1dCX0VS Uk9SCQkJQklUKDEyKQorCisjZGVmaW5lIERFSU5URVJMQUNFX0NTQ19DT0VGCQkJMHg3MCAvKiAx MiByZWdpc3RlcnMgKi8KKworI2RlZmluZSBERUlOVEVSTEFDRV9DVFJMCQkJMHhhMAorI2RlZmlu ZSBERUlOVEVSTEFDRV9DVFJMX0VOCQkJCUJJVCgwKQorI2RlZmluZSBERUlOVEVSTEFDRV9DVFJM X0ZMQUdfT1VUX0VOCQkJQklUKDgpCisjZGVmaW5lIERFSU5URVJMQUNFX0NUUkxfTU9ERV9QQVNT VFJPVUdICQkoMCA8PCAxNikKKyNkZWZpbmUgREVJTlRFUkxBQ0VfQ1RSTF9NT0RFX1dFQVZFCQkJ KDEgPDwgMTYpCisjZGVmaW5lIERFSU5URVJMQUNFX0NUUkxfTU9ERV9CT0IJCQkoMiA8PCAxNikK KyNkZWZpbmUgREVJTlRFUkxBQ0VfQ1RSTF9NT0RFX01JWEVECQkJKDMgPDwgMTYpCisjZGVmaW5l IERFSU5URVJMQUNFX0NUUkxfRElBR19JTlRQX0VOCQkJQklUKDI0KQorI2RlZmluZSBERUlOVEVS TEFDRV9DVFJMX1RFTVBfRElGRl9FTgkJCUJJVCgyNSkKKworI2RlZmluZSBERUlOVEVSTEFDRV9E SUFHX0lOVFAJCQkweGE0CisjZGVmaW5lIERFSU5URVJMQUNFX0RJQUdfSU5UUF9USDAodikJCQko KHYpICYgMHg3ZikKKyNkZWZpbmUgREVJTlRFUkxBQ0VfRElBR19JTlRQX1RIMF9NU0sJCQkoMHg3 ZikKKyNkZWZpbmUgREVJTlRFUkxBQ0VfRElBR19JTlRQX1RIMSh2KQkJCSgoKHYpICYgMHg3Zikg PDwgOCkKKyNkZWZpbmUgREVJTlRFUkxBQ0VfRElBR19JTlRQX1RIMV9NU0sJCQkoMHg3ZiA8PCA4 KQorI2RlZmluZSBERUlOVEVSTEFDRV9ESUFHX0lOVFBfVEgzKHYpCQkJKCgodikgJiAweGZmKSA8 PCAyNCkKKyNkZWZpbmUgREVJTlRFUkxBQ0VfRElBR19JTlRQX1RIM19NU0sJCQkoMHhmZiA8PCAy NCkKKworI2RlZmluZSBERUlOVEVSTEFDRV9URU1QX0RJRkYJCQkweGE4CisjZGVmaW5lIERFSU5U RVJMQUNFX1RFTVBfRElGRl9TQURfQ0VOVFJBTF9USCh2KQkJKCh2KSAmIDB4N2YpCisjZGVmaW5l IERFSU5URVJMQUNFX1RFTVBfRElGRl9TQURfQ0VOVFJBTF9USF9NU0sJKDB4N2YpCisjZGVmaW5l IERFSU5URVJMQUNFX1RFTVBfRElGRl9BTUJJR1VJVFlfVEgodikJCSgoKHYpICYgMHg3ZikgPDwg OCkKKyNkZWZpbmUgREVJTlRFUkxBQ0VfVEVNUF9ESUZGX0FNQklHVUlUWV9USF9NU0sJCSgweDdm IDw8IDgpCisjZGVmaW5lIERFSU5URVJMQUNFX1RFTVBfRElGRl9ESVJFQ1RfRElUSEVSX1RIKHYp CSgoKHYpICYgMHg3ZmYpIDw8IDE2KQorI2RlZmluZSBERUlOVEVSTEFDRV9URU1QX0RJRkZfRElS RUNUX0RJVEhFUl9USF9NU0sJKDB4N2ZmIDw8IDE2KQorCisjZGVmaW5lIERFSU5URVJMQUNFX0xV TUFfVEgJCQkweGFjCisjZGVmaW5lIERFSU5URVJMQUNFX0xVTUFfVEhfTUlOX0xVTUEodikJCQko KHYpICYgMHhmZikKKyNkZWZpbmUgREVJTlRFUkxBQ0VfTFVNQV9USF9NSU5fTFVNQV9NU0sJCSgw eGZmKQorI2RlZmluZSBERUlOVEVSTEFDRV9MVU1BX1RIX01BWF9MVU1BKHYpCQkJKCgodikgJiAw eGZmKSA8PCA4KQorI2RlZmluZSBERUlOVEVSTEFDRV9MVU1BX1RIX01BWF9MVU1BX01TSwkJKDB4 ZmYgPDwgOCkKKyNkZWZpbmUgREVJTlRFUkxBQ0VfTFVNQV9USF9BVkdfTFVNQV9TSElGVCh2KQkJ KCgodikgJiAweGZmKSA8PCAxNikKKyNkZWZpbmUgREVJTlRFUkxBQ0VfTFVNQV9USF9BVkdfTFVN QV9TSElGVF9NU0sJCSgweGZmIDw8IDE2KQorI2RlZmluZSBERUlOVEVSTEFDRV9MVU1BX1RIX1BJ WEVMX1NUQVRJQyh2KQkJKCgodikgJiAzKSA8PCAyNCkKKyNkZWZpbmUgREVJTlRFUkxBQ0VfTFVN QV9USF9QSVhFTF9TVEFUSUNfTVNLCQkoMyA8PCAyNCkKKworI2RlZmluZSBERUlOVEVSTEFDRV9T UEFUX0NPTVAJCQkweGIwCisjZGVmaW5lIERFSU5URVJMQUNFX1NQQVRfQ09NUF9USDIodikJCQko KHYpICYgMHhmZikKKyNkZWZpbmUgREVJTlRFUkxBQ0VfU1BBVF9DT01QX1RIMl9NU0sJCQkoMHhm ZikKKyNkZWZpbmUgREVJTlRFUkxBQ0VfU1BBVF9DT01QX1RIMyh2KQkJCSgoKHYpICYgMHhmZikg PDwgMTYpCisjZGVmaW5lIERFSU5URVJMQUNFX1NQQVRfQ09NUF9USDNfTVNLCQkJKDB4ZmYgPDwg MTYpCisKKyNkZWZpbmUgREVJTlRFUkxBQ0VfQ0hST01BX0RJRkYJCQkweGI0CisjZGVmaW5lIERF SU5URVJMQUNFX0NIUk9NQV9ESUZGX1RIKHYpCQkJKCh2KSAmIDB4ZmYpCisjZGVmaW5lIERFSU5U RVJMQUNFX0NIUk9NQV9ESUZGX1RIX01TSwkJCSgweGZmKQorI2RlZmluZSBERUlOVEVSTEFDRV9D SFJPTUFfRElGRl9MVU1BKHYpCQkJKCgodikgJiAweDNmKSA8PCAxNikKKyNkZWZpbmUgREVJTlRF UkxBQ0VfQ0hST01BX0RJRkZfTFVNQV9NU0sJCSgweDNmIDw8IDE2KQorI2RlZmluZSBERUlOVEVS TEFDRV9DSFJPTUFfRElGRl9DSFJPTUEodikJCSgoKHYpICYgMHgzZikgPDwgMjQpCisjZGVmaW5l IERFSU5URVJMQUNFX0NIUk9NQV9ESUZGX0NIUk9NQV9NU0sJCSgweDNmIDw8IDI0KQorCisjZGVm aW5lIERFSU5URVJMQUNFX1BSRUxVTUEJCQkweGI4CisjZGVmaW5lIERFSU5URVJMQUNFX1BSRUNI Uk9NQQkJCTB4YmMKKyNkZWZpbmUgREVJTlRFUkxBQ0VfVElMRV9GTEFHMAkJCTB4YzAKKyNkZWZp bmUgREVJTlRFUkxBQ0VfVElMRV9GTEFHMQkJCTB4YzQKKyNkZWZpbmUgREVJTlRFUkxBQ0VfRkxB R19MSU5FX1NUUklERQkJMHhjOAorI2RlZmluZSBERUlOVEVSTEFDRV9GTEFHX1NFUQkJCTB4Y2MK KworI2RlZmluZSBERUlOVEVSTEFDRV9XQl9MSU5FX1NUUklERV9DVFJMCQkweGQwCisjZGVmaW5l IERFSU5URVJMQUNFX1dCX0xJTkVfU1RSSURFX0NUUkxfRU4JCUJJVCgwKQorCisjZGVmaW5lIERF SU5URVJMQUNFX1dCX0xJTkVfU1RSSURFMAkJMHhkNAorI2RlZmluZSBERUlOVEVSTEFDRV9XQl9M SU5FX1NUUklERTEJCTB4ZDgKKyNkZWZpbmUgREVJTlRFUkxBQ0VfV0JfTElORV9TVFJJREUyCQkw eGRjCisjZGVmaW5lIERFSU5URVJMQUNFX1RSRF9DVFJMCQkJMHhlMAorI2RlZmluZSBERUlOVEVS TEFDRV9UUkRfQlVGX0FERFIwCQkweGU0CisjZGVmaW5lIERFSU5URVJMQUNFX1RSRF9CVUZfQURE UjEJCTB4ZTgKKyNkZWZpbmUgREVJTlRFUkxBQ0VfVFJEX0JVRl9BRERSMgkJMHhlYworI2RlZmlu ZSBERUlOVEVSTEFDRV9UUkRfVEJfT0ZGMAkJCTB4ZjAKKyNkZWZpbmUgREVJTlRFUkxBQ0VfVFJE X1RCX09GRjEJCQkweGY0CisjZGVmaW5lIERFSU5URVJMQUNFX1RSRF9UQl9PRkYyCQkJMHhmOAor I2RlZmluZSBERUlOVEVSTEFDRV9UUkRfV0JfU1RSSURFCQkweGZjCisjZGVmaW5lIERFSU5URVJM QUNFX0NIMF9JTl9TSVpFCQkJMHgxMDAKKyNkZWZpbmUgREVJTlRFUkxBQ0VfQ0gwX09VVF9TSVpF CQkweDEwNAorI2RlZmluZSBERUlOVEVSTEFDRV9DSDBfSE9SWl9GQUNUCQkweDEwOAorI2RlZmlu ZSBERUlOVEVSTEFDRV9DSDBfVkVSVF9GQUNUCQkweDEwYworI2RlZmluZSBERUlOVEVSTEFDRV9D SDBfSE9SWl9QSEFTRQkJMHgxMTAKKyNkZWZpbmUgREVJTlRFUkxBQ0VfQ0gwX1ZFUlRfUEhBU0Uw CQkweDExNAorI2RlZmluZSBERUlOVEVSTEFDRV9DSDBfVkVSVF9QSEFTRTEJCTB4MTE4CisjZGVm aW5lIERFSU5URVJMQUNFX0NIMF9IT1JaX1RBUDAJCTB4MTIwCisjZGVmaW5lIERFSU5URVJMQUNF X0NIMF9IT1JaX1RBUDEJCTB4MTI0CisjZGVmaW5lIERFSU5URVJMQUNFX0NIMF9WRVJUX1RBUAkJ MHgxMjgKKyNkZWZpbmUgREVJTlRFUkxBQ0VfQ0gxX0lOX1NJWkUJCQkweDIwMAorI2RlZmluZSBE RUlOVEVSTEFDRV9DSDFfT1VUX1NJWkUJCTB4MjA0CisjZGVmaW5lIERFSU5URVJMQUNFX0NIMV9I T1JaX0ZBQ1QJCTB4MjA4CisjZGVmaW5lIERFSU5URVJMQUNFX0NIMV9WRVJUX0ZBQ1QJCTB4MjBj CisjZGVmaW5lIERFSU5URVJMQUNFX0NIMV9IT1JaX1BIQVNFCQkweDIxMAorI2RlZmluZSBERUlO VEVSTEFDRV9DSDFfVkVSVF9QSEFTRTAJCTB4MjE0CisjZGVmaW5lIERFSU5URVJMQUNFX0NIMV9W RVJUX1BIQVNFMQkJMHgyMTgKKyNkZWZpbmUgREVJTlRFUkxBQ0VfQ0gxX0hPUlpfVEFQMAkJMHgy MjAKKyNkZWZpbmUgREVJTlRFUkxBQ0VfQ0gxX0hPUlpfVEFQMQkJMHgyMjQKKyNkZWZpbmUgREVJ TlRFUkxBQ0VfQ0gxX1ZFUlRfVEFQCQkweDIyOAorI2RlZmluZSBERUlOVEVSTEFDRV9DSDBfSE9S Wl9DT0VGMAkJMHg0MDAgLyogMzIgcmVnaXN0ZXJzICovCisjZGVmaW5lIERFSU5URVJMQUNFX0NI MF9IT1JaX0NPRUYxCQkweDQ4MCAvKiAzMiByZWdpc3RlcnMgKi8KKyNkZWZpbmUgREVJTlRFUkxB Q0VfQ0gwX1ZFUlRfQ09FRgkJMHg1MDAgLyogMzIgcmVnaXN0ZXJzICovCisjZGVmaW5lIERFSU5U RVJMQUNFX0NIMV9IT1JaX0NPRUYwCQkweDYwMCAvKiAzMiByZWdpc3RlcnMgKi8KKyNkZWZpbmUg REVJTlRFUkxBQ0VfQ0gxX0hPUlpfQ09FRjEJCTB4NjgwIC8qIDMyIHJlZ2lzdGVycyAqLworI2Rl ZmluZSBERUlOVEVSTEFDRV9DSDFfVkVSVF9DT0VGCQkweDcwMCAvKiAzMiByZWdpc3RlcnMgKi8K KyNkZWZpbmUgREVJTlRFUkxBQ0VfQ0gzX0hPUlpfQ09FRjAJCTB4ODAwIC8qIDMyIHJlZ2lzdGVy cyAqLworI2RlZmluZSBERUlOVEVSTEFDRV9DSDNfSE9SWl9DT0VGMQkJMHg4ODAgLyogMzIgcmVn aXN0ZXJzICovCisjZGVmaW5lIERFSU5URVJMQUNFX0NIM19WRVJUX0NPRUYJCTB4OTAwIC8qIDMy IHJlZ2lzdGVycyAqLworCisjZGVmaW5lIERFSU5URVJMQUNFX01JTl9XSURUSAkyVQorI2RlZmlu ZSBERUlOVEVSTEFDRV9NSU5fSEVJR0hUCTJVCisjZGVmaW5lIERFSU5URVJMQUNFX01BWF9XSURU SAkyMDQ4VQorI2RlZmluZSBERUlOVEVSTEFDRV9NQVhfSEVJR0hUCTExMDBVCisKKyNkZWZpbmUg REVJTlRFUkxBQ0VfTU9ERV9VVl9DT01CSU5FRAkyCisKKyNkZWZpbmUgREVJTlRFUkxBQ0VfSU5f Rk1UX1lVVjQyMAkyCisKKyNkZWZpbmUgREVJTlRFUkxBQ0VfT1VUX0ZNVF9ZVVY0MjBTUAkxMwor CisjZGVmaW5lIERFSU5URVJMQUNFX1BTX1VWVVYJCTAKKyNkZWZpbmUgREVJTlRFUkxBQ0VfUFNf VlVWVQkJMQorCisjZGVmaW5lIERFSU5URVJMQUNFX0lERU5USVRZX0NPRUYJMHg0MDAwCisKKyNk ZWZpbmUgREVJTlRFUkxBQ0VfU0laRSh3LCBoKQkoKChoKSAtIDEpIDw8IDE2IHwgKCh3KSAtIDEp KQorCitzdHJ1Y3QgZGVpbnRlcmxhY2VfY3R4IHsKKwlzdHJ1Y3QgdjRsMl9maAkJZmg7CisJc3Ry dWN0IGRlaW50ZXJsYWNlX2RldgkqZGV2OworCisJc3RydWN0IHY0bDJfcGl4X2Zvcm1hdAlzcmNf Zm10OworCXN0cnVjdCB2NGwyX3BpeF9mb3JtYXQJZHN0X2ZtdDsKKworCXZvaWQJCQkqZmxhZzFf YnVmOworCWRtYV9hZGRyX3QJCWZsYWcxX2J1Zl9kbWE7CisKKwl2b2lkCQkJKmZsYWcyX2J1ZjsK KwlkbWFfYWRkcl90CQlmbGFnMl9idWZfZG1hOworCisJc3RydWN0IHZiMl92NGwyX2J1ZmZlcgkq cHJldjsKKworCXVuc2lnbmVkIGludAkJZmlyc3RfZmllbGQ7CisJdW5zaWduZWQgaW50CQlmaWVs ZDsKKworCWludAkJCWFib3J0aW5nOworfTsKKworc3RydWN0IGRlaW50ZXJsYWNlX2RldiB7CisJ c3RydWN0IHY0bDJfZGV2aWNlCXY0bDJfZGV2OworCXN0cnVjdCB2aWRlb19kZXZpY2UJdmZkOwor CXN0cnVjdCBkZXZpY2UJCSpkZXY7CisJc3RydWN0IHY0bDJfbTJtX2RldgkqbTJtX2RldjsKKwor CS8qIERldmljZSBmaWxlIG11dGV4ICovCisJc3RydWN0IG11dGV4CQlkZXZfbXV0ZXg7CisKKwl2 b2lkIF9faW9tZW0JCSpiYXNlOworCXN0cnVjdCByZWdtYXAJCSpyZWdtYXA7CisKKwlzdHJ1Y3Qg Y2xrCQkqYnVzX2NsazsKKwlzdHJ1Y3QgY2xrCQkqbW9kX2NsazsKKwlzdHJ1Y3QgY2xrCQkqcmFt X2NsazsKKworCXN0cnVjdCByZXNldF9jb250cm9sCSpyc3RjOworfTsKKworI2VuZGlmCi0tIAoy LjIzLjAKCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K bGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZy YWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGlu dXgtYXJtLWtlcm5lbAo=