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=-5.7 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_ADSP_ALL, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 B4D9CC3A5A1 for ; Sun, 25 Aug 2019 12:19:04 +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 858E02082F for ; Sun, 25 Aug 2019 12:19:04 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="q6BCpb2k"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=rere.qmqm.pl header.i=@rere.qmqm.pl header.b="aHZ8nXmp" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 858E02082F Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=rere.qmqm.pl 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:To:MIME-Version:Subject:From:References :In-Reply-To:Message-Id:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=3uokt3fnlDrvQ+v0YS0LpTbbLQLlF5af9t52O4nG5aY=; b=q6BCpb2kTEJVG2 BW/QYABzXXUqAcalrzincVZvPSGNAwSOCt0vHdA3+dHWFH8Q4HhjfzALSy/Xx3lL6YeWLYjwFOcvP kVVf6s8rqja50Nh0409hQjGwVq2LUjWFwQnYG4jSBixl9ft2K1yzjpZq3GLwxsNGUFYwfzqeR4IvL ew0wuVT8v3akQ4UxDVUwm0/+opLv8MKAW9N3PSujIvzGkYbCCs6ShXQGe+U2XAdQaC2CoA1/HvhOg BuruXQAlj4ilVmenSviMHX/NbPryCw/W3WkSBzP4jxF8l1oIouC6mUBwn5CARKpR835r3vcOiyPAA JyBFcmnV/NejkMpr6Rzw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92 #3 (Red Hat Linux)) id 1i1rU2-0004dv-Lu; Sun, 25 Aug 2019 12:18:59 +0000 Received: from rere.qmqm.pl ([91.227.64.183]) by bombadil.infradead.org with esmtps (Exim 4.92 #3 (Red Hat Linux)) id 1i1rSp-0003ed-3t for linux-arm-kernel@lists.infradead.org; Sun, 25 Aug 2019 12:17:47 +0000 Received: from remote.user (localhost [127.0.0.1]) by rere.qmqm.pl (Postfix) with ESMTPSA id 46GYy85L4VzLD; Sun, 25 Aug 2019 14:16:00 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=rere.qmqm.pl; s=1; t=1566735361; bh=rDZuxcNd59H8gsxv7pZ5ojvh+ApU8FWsC3eT0ah44MY=; h=Date:In-Reply-To:References:From:Subject:To:Cc:From; b=aHZ8nXmpunGy9FLEowbXz/PAW/e5iDsED9x1HEbD97b6bel7649iDfFQnJJcLb1ZU z5bHwUAAPOYMVRbvzHSYTDYWk0X429IDIqiP1eIRMuSeMUwGP9lXl8n9RPsOq4ZLOn L7Dyg6MRzAIpjMHFLPXP9fLn88ATLwYhNl5FxCSYuTlvEBUP6HjLQfdBU6EuLT0xrt JmBSOM7DBR1IFYvhoQnhWYGxaMZKDnjkEBN9YFpldGPpbk+L1U/7jhqpN6ilGZ39Te eJhjbx8UBQilNkiFzwHe+vzU15AioWg/EF+p/z/EPIUwzPMOAAUB8XzFdQl4UOuDFl +anADmLqIGEBQ== X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.101.2 at mail Date: Sun, 25 Aug 2019 14:17:35 +0200 Message-Id: <1136f2dcc822821afda9f9533f40637647929bdf.1566734630.git.mirq-linux@rere.qmqm.pl> In-Reply-To: References: From: =?UTF-8?q?Micha=C5=82=20Miros=C5=82aw?= Subject: [PATCH v2 2/4] ASoC: wm8904: use common FLL code MIME-Version: 1.0 To: alsa-devel@alsa-project.org, patches@opensource.cirrus.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190825_051743_509760_1A3562B3 X-CRM114-Status: GOOD ( 20.64 ) 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: Maxime Jourdan , Kate Stewart , Alexandre Belloni , Kuninori Morimoto , Kirill Marinushkin , Paul Cercueil , Srinivas Kandagatla , Jerome Brunet , Anders Roxell , Takashi Iwai , Ludovic Desroches , linux-arm-kernel@lists.infradead.org, Codrin Ciubotariu , Charles Keepax , Piotr Stankiewicz , Annaliese McDermond , Richard Fitzgerald , Mark Brown , Nariman Poushin , Thomas Gleixner , Jaroslav Kysela , zhong jiang , Allison Randal , Greg Kroah-Hartman , Randy Dunlap , Nikesh Oswal , Liam Girdwood , linux-kernel@vger.kernel.org, Enrico Weigelt 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 UmV3b3JrIEZMTCBoYW5kbGluZyB0byB1c2UgY29tbW9uIGNvZGUgaW50cm9kdWNlZCBlYXJsaWVy LgoKU2lnbmVkLW9mZi1ieTogTWljaGHFgiBNaXJvc8WCYXcgPG1pcnEtbGludXhAcmVyZS5xbXFt LnBsPgotLS0KIHNvdW5kL3NvYy9hdG1lbC9hdG1lbF93bTg5MDQuYyB8ICAxMSArLQogc291bmQv c29jL2NvZGVjcy9LY29uZmlnICAgICAgIHwgICAxICsKIHNvdW5kL3NvYy9jb2RlY3Mvd204OTA0 LmMgICAgICB8IDQ3NiArKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHNvdW5kL3Nv Yy9jb2RlY3Mvd204OTA0LmggICAgICB8ICAgNSAtCiA0IGZpbGVzIGNoYW5nZWQsIDE0MCBpbnNl cnRpb25zKCspLCAzNTMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc291bmQvc29jL2F0bWVs L2F0bWVsX3dtODkwNC5jIGIvc291bmQvc29jL2F0bWVsL2F0bWVsX3dtODkwNC5jCmluZGV4IDc3 NmIyN2QzNjg2ZS4uYjc3ZWEyNDk1ZWZlIDEwMDY0NAotLS0gYS9zb3VuZC9zb2MvYXRtZWwvYXRt ZWxfd204OTA0LmMKKysrIGIvc291bmQvc29jL2F0bWVsL2F0bWVsX3dtODkwNC5jCkBAIC0zMCwy MCArMzAsMTEgQEAgc3RhdGljIGludCBhdG1lbF9hc29jX3dtODkwNF9od19wYXJhbXMoc3RydWN0 IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0sCiAJc3RydWN0IHNuZF9zb2NfZGFpICpjb2Rl Y19kYWkgPSBydGQtPmNvZGVjX2RhaTsKIAlpbnQgcmV0OwogCi0JcmV0ID0gc25kX3NvY19kYWlf c2V0X3BsbChjb2RlY19kYWksIFdNODkwNF9GTExfTUNMSywgV004OTA0X0ZMTF9NQ0xLLAotCQkz Mjc2OCwgcGFyYW1zX3JhdGUocGFyYW1zKSAqIDI1Nik7Ci0JaWYgKHJldCA8IDApIHsKLQkJcHJf ZXJyKCIlcyAtIGZhaWxlZCB0byBzZXQgd204OTA0IGNvZGVjIFBMTC4iLCBfX2Z1bmNfXyk7Ci0J CXJldHVybiByZXQ7Ci0JfQotCiAJLyoKIAkgKiBBcyBoZXJlIHdtODkwNCB1c2UgRkxMIG91dHB1 dCBhcyBpdHMgc3lzdGVtIGNsb2NrCi0JICogc28gY2FsbGluZyBzZXRfc3lzY2xrIHdvbid0IGNh cmUgZnJlcSBwYXJhbWV0ZXIKLQkgKiB0aGVuIHdlIHBhc3MgMAogCSAqLwogCXJldCA9IHNuZF9z b2NfZGFpX3NldF9zeXNjbGsoY29kZWNfZGFpLCBXTTg5MDRfQ0xLX0ZMTCwKLQkJCTAsIFNORF9T T0NfQ0xPQ0tfSU4pOworCQkJcGFyYW1zX3JhdGUocGFyYW1zKSAqIDI1NiwgU05EX1NPQ19DTE9D S19JTik7CiAJaWYgKHJldCA8IDApIHsKIAkJcHJfZXJyKCIlcyAtZmFpbGVkIHRvIHNldCB3bTg5 MDQgU1lTQ0xLXG4iLCBfX2Z1bmNfXyk7CiAJCXJldHVybiByZXQ7CmRpZmYgLS1naXQgYS9zb3Vu ZC9zb2MvY29kZWNzL0tjb25maWcgYi9zb3VuZC9zb2MvY29kZWNzL0tjb25maWcKaW5kZXggMDQw ODZhY2Y2ZDkzLi4xYTY4MDAyM2FmN2QgMTAwNjQ0Ci0tLSBhL3NvdW5kL3NvYy9jb2RlY3MvS2Nv bmZpZworKysgYi9zb3VuZC9zb2MvY29kZWNzL0tjb25maWcKQEAgLTEzMzEsNiArMTMzMSw3IEBA IGNvbmZpZyBTTkRfU09DX1dNODkwMwogY29uZmlnIFNORF9TT0NfV004OTA0CiAJdHJpc3RhdGUg IldvbGZzb24gTWljcm9lbGVjdHJvbmljcyBXTTg5MDQgQ09ERUMiCiAJZGVwZW5kcyBvbiBJMkMK KwlzZWxlY3QgU05EX1NPQ19XTV9GTEwKIAogY29uZmlnIFNORF9TT0NfV004OTQwCiAgICAgICAg IHRyaXN0YXRlCmRpZmYgLS1naXQgYS9zb3VuZC9zb2MvY29kZWNzL3dtODkwNC5jIGIvc291bmQv c29jL2NvZGVjcy93bTg5MDQuYwppbmRleCBiY2IzYzlkNWFiZjAuLmM5MzE4ZmUzNGY5MSAxMDA2 NDQKLS0tIGEvc291bmQvc29jL2NvZGVjcy93bTg5MDQuYworKysgYi9zb3VuZC9zb2MvY29kZWNz L3dtODkwNC5jCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSA8c291bmQvdGx2Lmg+CiAjaW5j bHVkZSA8c291bmQvd204OTA0Lmg+CiAKKyNpbmNsdWRlICJ3bV9mbGwuaCIKICNpbmNsdWRlICJ3 bTg5MDQuaCIKIAogZW51bSB3bTg5MDRfdHlwZSB7CkBAIC02NiwxMiArNjcsOCBAQCBzdHJ1Y3Qg d204OTA0X3ByaXYgewogCWludCByZXR1bmVfbW9iaWxlX2NmZzsKIAlzdHJ1Y3Qgc29jX2VudW0g cmV0dW5lX21vYmlsZV9lbnVtOwogCi0JLyogRkxMIHNldHVwICovCi0JaW50IGZsbF9zcmM7Ci0J aW50IGZsbF9mcmVmOwotCWludCBmbGxfZm91dDsKLQogCS8qIENsb2NraW5nIGNvbmZpZ3VyYXRp b24gKi8KKwlzdHJ1Y3Qgd21fZmxsX2RhdGEgZmxsOwogCXVuc2lnbmVkIGludCBtY2xrX3JhdGU7 CiAJaW50IHN5c2Nsa19zcmM7CiAJdW5zaWduZWQgaW50IHN5c2Nsa19yYXRlOwpAQCAtMzExLDM1 ICszMDgsMTExIEBAIHN0YXRpYyBib29sIHdtODkwNF9yZWFkYWJsZV9yZWdpc3RlcihzdHJ1Y3Qg ZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCByZWcpCiAJfQogfQogCi1zdGF0aWMgaW50IHdtODkw NF9jb25maWd1cmVfY2xvY2tpbmcoc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb21wb25lbnQp CitzdGF0aWMgdm9pZCB3bTg5MDRfdW5wcmVwYXJlX3N5c2NsayhzdHJ1Y3Qgd204OTA0X3ByaXYg KnByaXYpCiB7CisJc3dpdGNoIChwcml2LT5zeXNjbGtfc3JjKSB7CisJY2FzZSBXTTg5MDRfQ0xL X01DTEs6CisJCWNsa19kaXNhYmxlX3VucHJlcGFyZShwcml2LT5tY2xrKTsKKwkJYnJlYWs7CisK KwljYXNlIFdNODkwNF9DTEtfRkxMOgorCQl3bV9mbGxfZGlzYWJsZSgmcHJpdi0+ZmxsKTsKKwkJ YnJlYWs7CisJfQorfQorCitzdGF0aWMgaW50IHdtODkwNF9wcmVwYXJlX3N5c2NsayhzdHJ1Y3Qg d204OTA0X3ByaXYgKnByaXYpCit7CisJaW50IGVycjsKKworCXN3aXRjaCAocHJpdi0+c3lzY2xr X3NyYykgeworCWNhc2UgV004OTA0X0NMS19NQ0xLOgorCQllcnIgPSBjbGtfc2V0X3JhdGUocHJp di0+bWNsaywgcHJpdi0+bWNsa19yYXRlKTsKKwkJaWYgKCFlcnIpCisJCQllcnIgPSBjbGtfcHJl cGFyZV9lbmFibGUocHJpdi0+bWNsayk7CisJCWJyZWFrOworCisJY2FzZSBXTTg5MDRfQ0xLX0ZM TDoKKwkJZXJyID0gd21fZmxsX2VuYWJsZSgmcHJpdi0+ZmxsKTsKKwkJYnJlYWs7CisKKwlkZWZh dWx0OgorCQllcnIgPSAtRUlOVkFMOworCQlicmVhazsKKwl9CisKKwlyZXR1cm4gZXJyOworfQor CitzdGF0aWMgdm9pZCB3bTg5MDRfZGlzYWJsZV9zeXNjbGsoc3RydWN0IHdtODkwNF9wcml2ICpw cml2KQoreworCXJlZ21hcF91cGRhdGVfYml0cyhwcml2LT5yZWdtYXAsIFdNODkwNF9DTE9DS19S QVRFU18yLAorCQkJICAgV004OTA0X0NMS19TWVNfRU5BLCAwKTsKKwl3bTg5MDRfdW5wcmVwYXJl X3N5c2Nsayhwcml2KTsKK30KKworc3RhdGljIGludCB3bTg5MDRfZW5hYmxlX3N5c2NsayhzdHJ1 Y3Qgd204OTA0X3ByaXYgKnByaXYpCit7CisJaW50IGVycjsKKworCWVyciA9IHdtODkwNF9wcmVw YXJlX3N5c2Nsayhwcml2KTsKKwlpZiAoZXJyIDwgMCkKKwkJcmV0dXJuIGVycjsKKworCWVyciA9 IHJlZ21hcF91cGRhdGVfYml0cyhwcml2LT5yZWdtYXAsIFdNODkwNF9DTE9DS19SQVRFU18yLAor CQkJCSBXTTg5MDRfQ0xLX1NZU19FTkFfTUFTSywgV004OTA0X0NMS19TWVNfRU5BKTsKKwlpZiAo ZXJyIDwgMCkKKwkJd204OTA0X3VucHJlcGFyZV9zeXNjbGsocHJpdik7CisKKwlyZXR1cm4gZXJy OworfQorCitzdGF0aWMgaW50IHdtODkwNF9zZXRfc3lzY2xrKHN0cnVjdCBzbmRfc29jX2RhaSAq ZGFpLCBpbnQgY2xrX2lkLAorCQkJICAgICB1bnNpZ25lZCBpbnQgcmF0ZSwgaW50IGRpcikKK3sK KwlzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNvbXBvbmVudCA9IGRhaS0+Y29tcG9uZW50Owog CXN0cnVjdCB3bTg5MDRfcHJpdiAqd204OTA0ID0gc25kX3NvY19jb21wb25lbnRfZ2V0X2RydmRh dGEoY29tcG9uZW50KTsKLQl1bnNpZ25lZCBpbnQgY2xvY2swLCBjbG9jazIsIHJhdGU7CisJdW5z aWduZWQgaW50IGNsb2NrMCwgY2xvY2syOworCWludCBlcnI7CisKKwlzd2l0Y2ggKGNsa19pZCkg eworCWNhc2UgV004OTA0X0NMS19NQ0xLOgorCWNhc2UgV004OTA0X0NMS19GTEw6CisJCWJyZWFr OworCisJZGVmYXVsdDoKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJaWYgKGNsa19pZCA9PSB3 bTg5MDQtPnN5c2Nsa19zcmMgJiYgcmF0ZSA9PSB3bTg5MDQtPm1jbGtfcmF0ZSkKKwkJcmV0dXJu IDA7CisKKwlkZXZfZGJnKGRhaS0+ZGV2LCAiQ2xvY2sgc291cmNlIGlzICVkIGF0ICV1SHpcbiIs IGNsa19pZCwgcmF0ZSk7CiAKIAkvKiBHYXRlIHRoZSBjbG9jayB3aGlsZSB3ZSdyZSB1cGRhdGlu ZyB0byBhdm9pZCBtaXNjbG9ja2luZyAqLwogCWNsb2NrMiA9IHNuZF9zb2NfY29tcG9uZW50X3Jl YWQzMihjb21wb25lbnQsIFdNODkwNF9DTE9DS19SQVRFU18yKTsKLQlzbmRfc29jX2NvbXBvbmVu dF91cGRhdGVfYml0cyhjb21wb25lbnQsIFdNODkwNF9DTE9DS19SQVRFU18yLAotCQkJICAgIFdN ODkwNF9TWVNDTEtfU1JDLCAwKTsKKwl3bTg5MDRfZGlzYWJsZV9zeXNjbGsod204OTA0KTsKKwor CXdtODkwNC0+c3lzY2xrX3NyYyA9IGNsa19pZDsKKwl3bTg5MDQtPm1jbGtfcmF0ZSA9IHJhdGU7 CiAKLQkvKiBUaGlzIHNob3VsZCBiZSBkb25lIG9uIGluaXQoKSBmb3IgYnlwYXNzIHBhdGhzICov CiAJc3dpdGNoICh3bTg5MDQtPnN5c2Nsa19zcmMpIHsKIAljYXNlIFdNODkwNF9DTEtfTUNMSzoK LQkJZGV2X2RiZyhjb21wb25lbnQtPmRldiwgIlVzaW5nICVkSHogTUNMS1xuIiwgd204OTA0LT5t Y2xrX3JhdGUpOworCQlkZXZfZGJnKGNvbXBvbmVudC0+ZGV2LCAiVXNpbmcgJWRIeiBNQ0xLXG4i LCByYXRlKTsKIAogCQljbG9jazIgJj0gfldNODkwNF9TWVNDTEtfU1JDOwotCQlyYXRlID0gd204 OTA0LT5tY2xrX3JhdGU7Ci0KLQkJLyogRW5zdXJlIHRoZSBGTEwgaXMgc3RvcHBlZCAqLwotCQlz bmRfc29jX2NvbXBvbmVudF91cGRhdGVfYml0cyhjb21wb25lbnQsIFdNODkwNF9GTExfQ09OVFJP TF8xLAotCQkJCSAgICBXTTg5MDRfRkxMX09TQ19FTkEgfCBXTTg5MDRfRkxMX0VOQSwgMCk7CiAJ CWJyZWFrOwogCiAJY2FzZSBXTTg5MDRfQ0xLX0ZMTDoKLQkJZGV2X2RiZyhjb21wb25lbnQtPmRl diwgIlVzaW5nICVkSHogRkxMIGNsb2NrXG4iLAotCQkJd204OTA0LT5mbGxfZm91dCk7CisJCWVy ciA9IHdtX2ZsbF9zZXRfcmF0ZSgmd204OTA0LT5mbGwsIHJhdGUpOworCQlpZiAoZXJyIDwgMCkg eworCQkJZGV2X2Vycihjb21wb25lbnQtPmRldiwgIkZhaWxlZCB0byBzZXQgRkxMIHJhdGU6ICVk XG4iLCBlcnIpOworCQkJcmV0dXJuIGVycjsKKwkJfQorCisJCWRldl9kYmcoY29tcG9uZW50LT5k ZXYsICJVc2luZyAlZEh6IEZMTCBjbG9ja1xuIiwgcmF0ZSk7CiAKIAkJY2xvY2syIHw9IFdNODkw NF9TWVNDTEtfU1JDOwotCQlyYXRlID0gd204OTA0LT5mbGxfZm91dDsKIAkJYnJlYWs7CiAKIAlk ZWZhdWx0OgpAQCAtMzU2LDExICs0MjksMTggQEAgc3RhdGljIGludCB3bTg5MDRfY29uZmlndXJl X2Nsb2NraW5nKHN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50KQogCQl3bTg5MDQt PnN5c2Nsa19yYXRlID0gcmF0ZTsKIAl9CiAKLQlzbmRfc29jX2NvbXBvbmVudF91cGRhdGVfYml0 cyhjb21wb25lbnQsIFdNODkwNF9DTE9DS19SQVRFU18wLCBXTTg5MDRfTUNMS19ESVYsCi0JCQkg ICAgY2xvY2swKTsKLQorCXNuZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9iaXRzKGNvbXBvbmVudCwg V004OTA0X0NMT0NLX1JBVEVTXzAsCisJCQkJICAgICAgV004OTA0X01DTEtfRElWLCBjbG9jazAp OwogCXNuZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9iaXRzKGNvbXBvbmVudCwgV004OTA0X0NMT0NL X1JBVEVTXzIsCi0JCQkgICAgV004OTA0X0NMS19TWVNfRU5BIHwgV004OTA0X1NZU0NMS19TUkMs IGNsb2NrMik7CisJCQkJICAgICAgV004OTA0X1NZU0NMS19TUkMsIGNsb2NrMik7CisKKwlpZiAo Y2xvY2syICYgV004OTA0X0NMS19TWVNfRU5BKSB7CisJCWVyciA9IHdtODkwNF9lbmFibGVfc3lz Y2xrKHdtODkwNCk7CisJCWlmIChlcnIgPCAwKSB7CisJCQlkZXZfZXJyKGNvbXBvbmVudC0+ZGV2 LCAiRmFpbGVkIHRvIHJlZW5hYmxlIENMS19TWVM6ICVkXG4iLCBlcnIpOworCQkJcmV0dXJuIGVy cjsKKwkJfQorCX0KIAogCWRldl9kYmcoY29tcG9uZW50LT5kZXYsICJDTEtfU1lTIGlzICVkSHpc biIsIHdtODkwNC0+c3lzY2xrX3JhdGUpOwogCkBAIC02NTUsMzMgKzczNSwyMSBAQCBzdGF0aWMg aW50IHN5c2Nsa19ldmVudChzdHJ1Y3Qgc25kX3NvY19kYXBtX3dpZGdldCAqdywKIHsKIAlzdHJ1 Y3Qgc25kX3NvY19jb21wb25lbnQgKmNvbXBvbmVudCA9IHNuZF9zb2NfZGFwbV90b19jb21wb25l bnQody0+ZGFwbSk7CiAJc3RydWN0IHdtODkwNF9wcml2ICp3bTg5MDQgPSBzbmRfc29jX2NvbXBv bmVudF9nZXRfZHJ2ZGF0YShjb21wb25lbnQpOworCWludCByZXQgPSAwOwogCiAJc3dpdGNoIChl dmVudCkgewogCWNhc2UgU05EX1NPQ19EQVBNX1BSRV9QTVU6Ci0JCS8qIElmIHdlJ3JlIHVzaW5n IHRoZSBGTEwgdGhlbiB3ZSBvbmx5IHN0YXJ0IGl0IHdoZW4KLQkJICogcmVxdWlyZWQ7IHdlIGFz c3VtZSB0aGF0IHRoZSBjb25maWd1cmF0aW9uIGhhcyBiZWVuCi0JCSAqIGRvbmUgcHJldmlvdXNs eSBhbmQgYWxsIHdlIG5lZWQgdG8gZG8gaXMga2ljayBpdAotCQkgKiBvZmYuCi0JCSAqLwotCQlz d2l0Y2ggKHdtODkwNC0+c3lzY2xrX3NyYykgewotCQljYXNlIFdNODkwNF9DTEtfRkxMOgotCQkJ c25kX3NvY19jb21wb25lbnRfdXBkYXRlX2JpdHMoY29tcG9uZW50LCBXTTg5MDRfRkxMX0NPTlRS T0xfMSwKLQkJCQkJICAgIFdNODkwNF9GTExfT1NDX0VOQSwKLQkJCQkJICAgIFdNODkwNF9GTExf T1NDX0VOQSk7Ci0KLQkJCXNuZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9iaXRzKGNvbXBvbmVudCwg V004OTA0X0ZMTF9DT05UUk9MXzEsCi0JCQkJCSAgICBXTTg5MDRfRkxMX0VOQSwKLQkJCQkJICAg IFdNODkwNF9GTExfRU5BKTsKLQkJCWJyZWFrOwotCi0JCWRlZmF1bHQ6Ci0JCQlicmVhazsKLQkJ fQorCQlyZXQgPSB3bTg5MDRfcHJlcGFyZV9zeXNjbGsod204OTA0KTsKKwkJaWYgKHJldCkKKwkJ CWRldl9lcnIoY29tcG9uZW50LT5kZXYsCisJCQkJIkZhaWxlZCB0byBwcmVwYXJlIFNZU0NMSzog JWRcbiIsIHJldCk7CisJCWVsc2UKKwkJCWRldl9kYmcoY29tcG9uZW50LT5kZXYsICJTWVNDTEsg b25cbiIpOwogCQlicmVhazsKIAogCWNhc2UgU05EX1NPQ19EQVBNX1BPU1RfUE1EOgotCQlzbmRf c29jX2NvbXBvbmVudF91cGRhdGVfYml0cyhjb21wb25lbnQsIFdNODkwNF9GTExfQ09OVFJPTF8x LAotCQkJCSAgICBXTTg5MDRfRkxMX09TQ19FTkEgfCBXTTg5MDRfRkxMX0VOQSwgMCk7CisJCXdt ODkwNF91bnByZXBhcmVfc3lzY2xrKHdtODkwNCk7CisJCWRldl9kYmcoY29tcG9uZW50LT5kZXYs ICJTWVNDTEsgb2ZmXG4iKTsKIAkJYnJlYWs7CiAJfQogCkBAIC0xMjg5LDcgKzEzNTcsNyBAQCBz dGF0aWMgaW50IHdtODkwNF9od19wYXJhbXMoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJz dHJlYW0sCiB7CiAJc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb21wb25lbnQgPSBkYWktPmNv bXBvbmVudDsKIAlzdHJ1Y3Qgd204OTA0X3ByaXYgKndtODkwNCA9IHNuZF9zb2NfY29tcG9uZW50 X2dldF9kcnZkYXRhKGNvbXBvbmVudCk7Ci0JaW50IHJldCwgaSwgYmVzdCwgYmVzdF92YWwsIGN1 cl92YWw7CisJaW50IGksIGJlc3QsIGJlc3RfdmFsLCBjdXJfdmFsOwogCXVuc2lnbmVkIGludCBh aWYxID0gMDsKIAl1bnNpZ25lZCBpbnQgYWlmMiA9IDA7CiAJdW5zaWduZWQgaW50IGFpZjMgPSAw OwpAQCAtMTMyNCwxMyArMTM5Miw4IEBAIHN0YXRpYyBpbnQgd204OTA0X2h3X3BhcmFtcyhzdHJ1 Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQog Ci0KIAlkZXZfZGJnKGNvbXBvbmVudC0+ZGV2LCAiVGFyZ2V0IEJDTEsgaXMgJWRIelxuIiwgd204 OTA0LT5iY2xrKTsKIAotCXJldCA9IHdtODkwNF9jb25maWd1cmVfY2xvY2tpbmcoY29tcG9uZW50 KTsKLQlpZiAocmV0ICE9IDApCi0JCXJldHVybiByZXQ7Ci0KIAkvKiBTZWxlY3QgbmVhcmVzdCBD TEtfU1lTX1JBVEUgKi8KIAliZXN0ID0gMDsKIAliZXN0X3ZhbCA9IGFicygod204OTA0LT5zeXNj bGtfcmF0ZSAvIGNsa19zeXNfcmF0ZXNbMF0ucmF0aW8pCkBAIC0xMzgyLDggKzE0NDUsOCBAQCBz dGF0aWMgaW50IHdtODkwNF9od19wYXJhbXMoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJz dHJlYW0sCiAJCX0KIAl9CiAJd204OTA0LT5iY2xrID0gKHdtODkwNC0+c3lzY2xrX3JhdGUgKiAx MCkgLyBiY2xrX2RpdnNbYmVzdF0uZGl2OwotCWRldl9kYmcoY29tcG9uZW50LT5kZXYsICJTZWxl Y3RlZCBCQ0xLX0RJViBvZiAlZCBmb3IgJWRIeiBCQ0xLXG4iLAotCQliY2xrX2RpdnNbYmVzdF0u ZGl2LCB3bTg5MDQtPmJjbGspOworCWRldl9kYmcoY29tcG9uZW50LT5kZXYsICJTZWxlY3RlZCBC Q0xLX0RJViBvZiAlZC4lZCBmb3IgJWRIeiBCQ0xLXG4iLAorCQliY2xrX2RpdnNbYmVzdF0uZGl2 IC8gMTAsIGJjbGtfZGl2c1tiZXN0XS5kaXYgJSAxMCwgIHdtODkwNC0+YmNsayk7CiAJYWlmMiB8 PSBiY2xrX2RpdnNbYmVzdF0uYmNsa19kaXY7CiAKIAkvKiBMUkNMSyBpcyBhIHNpbXBsZSBmcmFj dGlvbiBvZiBCQ0xLICovCkBAIC0xNDEwLDM0ICsxNDczLDYgQEAgc3RhdGljIGludCB3bTg5MDRf aHdfcGFyYW1zKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtLAogCXJldHVybiAw OwogfQogCi0KLXN0YXRpYyBpbnQgd204OTA0X3NldF9zeXNjbGsoc3RydWN0IHNuZF9zb2NfZGFp ICpkYWksIGludCBjbGtfaWQsCi0JCQkgICAgIHVuc2lnbmVkIGludCBmcmVxLCBpbnQgZGlyKQot ewotCXN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50ID0gZGFpLT5jb21wb25lbnQ7 Ci0Jc3RydWN0IHdtODkwNF9wcml2ICpwcml2ID0gc25kX3NvY19jb21wb25lbnRfZ2V0X2RydmRh dGEoY29tcG9uZW50KTsKLQotCXN3aXRjaCAoY2xrX2lkKSB7Ci0JY2FzZSBXTTg5MDRfQ0xLX01D TEs6Ci0JCXByaXYtPnN5c2Nsa19zcmMgPSBjbGtfaWQ7Ci0JCXByaXYtPm1jbGtfcmF0ZSA9IGZy ZXE7Ci0JCWJyZWFrOwotCi0JY2FzZSBXTTg5MDRfQ0xLX0ZMTDoKLQkJcHJpdi0+c3lzY2xrX3Ny YyA9IGNsa19pZDsKLQkJYnJlYWs7Ci0KLQlkZWZhdWx0OgotCQlyZXR1cm4gLUVJTlZBTDsKLQl9 Ci0KLQlkZXZfZGJnKGRhaS0+ZGV2LCAiQ2xvY2sgc291cmNlIGlzICVkIGF0ICV1SHpcbiIsIGNs a19pZCwgZnJlcSk7Ci0KLQl3bTg5MDRfY29uZmlndXJlX2Nsb2NraW5nKGNvbXBvbmVudCk7Ci0K LQlyZXR1cm4gMDsKLX0KLQogc3RhdGljIGludCB3bTg5MDRfc2V0X2ZtdChzdHJ1Y3Qgc25kX3Nv Y19kYWkgKmRhaSwgdW5zaWduZWQgaW50IGZtdCkKIHsKIAlzdHJ1Y3Qgc25kX3NvY19jb21wb25l bnQgKmNvbXBvbmVudCA9IGRhaS0+Y29tcG9uZW50OwpAQCAtMTU3NywyNTMgKzE2MTIsNiBAQCBz dGF0aWMgaW50IHdtODkwNF9zZXRfdGRtX3Nsb3Qoc3RydWN0IHNuZF9zb2NfZGFpICpkYWksIHVu c2lnbmVkIGludCB0eF9tYXNrLAogCXJldHVybiAwOwogfQogCi1zdHJ1Y3QgX2ZsbF9kaXYgewot CXUxNiBmbGxfZnJhdGlvOwotCXUxNiBmbGxfb3V0ZGl2OwotCXUxNiBmbGxfY2xrX3JlZl9kaXY7 Ci0JdTE2IG47Ci0JdTE2IGs7Ci19OwotCi0vKiBUaGUgc2l6ZSBpbiBiaXRzIG9mIHRoZSBGTEwg ZGl2aWRlIG11bHRpcGxpZWQgYnkgMTAKLSAqIHRvIGFsbG93IHJvdW5kaW5nIGxhdGVyICovCi0j ZGVmaW5lIEZJWEVEX0ZMTF9TSVpFICgoMSA8PCAxNikgKiAxMCkKLQotc3RhdGljIHN0cnVjdCB7 Ci0JdW5zaWduZWQgaW50IG1pbjsKLQl1bnNpZ25lZCBpbnQgbWF4OwotCXUxNiBmbGxfZnJhdGlv OwotCWludCByYXRpbzsKLX0gZmxsX2ZyYXRpb3NbXSA9IHsKLQl7ICAgICAgIDAsICAgIDY0MDAw LCA0LCAxNiB9LAotCXsgICA2NDAwMCwgICAxMjgwMDAsIDMsICA4IH0sCi0JeyAgMTI4MDAwLCAg IDI1NjAwMCwgMiwgIDQgfSwKLQl7ICAyNTYwMDAsICAxMDAwMDAwLCAxLCAgMiB9LAotCXsgMTAw MDAwMCwgMTM1MDAwMDAsIDAsICAxIH0sCi19OwotCi1zdGF0aWMgaW50IGZsbF9mYWN0b3JzKHN0 cnVjdCBfZmxsX2RpdiAqZmxsX2RpdiwgdW5zaWduZWQgaW50IEZyZWYsCi0JCSAgICAgICB1bnNp Z25lZCBpbnQgRm91dCkKLXsKLQl1NjQgS3BhcnQ7Ci0JdW5zaWduZWQgaW50IEssIE5kaXYsIE5t b2QsIHRhcmdldDsKLQl1bnNpZ25lZCBpbnQgZGl2OwotCWludCBpOwotCi0JLyogRnJlZiBtdXN0 IGJlIDw9MTMuNU1IeiAqLwotCWRpdiA9IDE7Ci0JZmxsX2Rpdi0+ZmxsX2Nsa19yZWZfZGl2ID0g MDsKLQl3aGlsZSAoKEZyZWYgLyBkaXYpID4gMTM1MDAwMDApIHsKLQkJZGl2ICo9IDI7Ci0JCWZs bF9kaXYtPmZsbF9jbGtfcmVmX2RpdisrOwotCi0JCWlmIChkaXYgPiA4KSB7Ci0JCQlwcl9lcnIo IkNhbid0IHNjYWxlICVkTUh6IGlucHV0IGRvd24gdG8gPD0xMy41TUh6XG4iLAotCQkJICAgICAg IEZyZWYpOwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQl9Ci0KLQlwcl9kZWJ1ZygiRnJlZj0l dSBGb3V0PSV1XG4iLCBGcmVmLCBGb3V0KTsKLQotCS8qIEFwcGx5IHRoZSBkaXZpc2lvbiBmb3Ig b3VyIHJlbWFpbmluZyBjYWxjdWxhdGlvbnMgKi8KLQlGcmVmIC89IGRpdjsKLQotCS8qIEZ2Y28g c2hvdWxkIGJlIDkwLTEwME1IejsgZG9uJ3QgY2hlY2sgdGhlIHVwcGVyIGJvdW5kICovCi0JZGl2 ID0gNDsKLQl3aGlsZSAoRm91dCAqIGRpdiA8IDkwMDAwMDAwKSB7Ci0JCWRpdisrOwotCQlpZiAo ZGl2ID4gNjQpIHsKLQkJCXByX2VycigiVW5hYmxlIHRvIGZpbmQgRkxMX09VVERJViBmb3IgRm91 dD0ldUh6XG4iLAotCQkJICAgICAgIEZvdXQpOwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQl9 Ci0JdGFyZ2V0ID0gRm91dCAqIGRpdjsKLQlmbGxfZGl2LT5mbGxfb3V0ZGl2ID0gZGl2IC0gMTsK LQotCXByX2RlYnVnKCJGdmNvPSVkSHpcbiIsIHRhcmdldCk7Ci0KLQkvKiBGaW5kIGFuIGFwcHJv cHJpYXRlIEZMTF9GUkFUSU8gYW5kIGZhY3RvciBpdCBvdXQgb2YgdGhlIHRhcmdldCAqLwotCWZv ciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGZsbF9mcmF0aW9zKTsgaSsrKSB7Ci0JCWlmIChmbGxf ZnJhdGlvc1tpXS5taW4gPD0gRnJlZiAmJiBGcmVmIDw9IGZsbF9mcmF0aW9zW2ldLm1heCkgewot CQkJZmxsX2Rpdi0+ZmxsX2ZyYXRpbyA9IGZsbF9mcmF0aW9zW2ldLmZsbF9mcmF0aW87Ci0JCQl0 YXJnZXQgLz0gZmxsX2ZyYXRpb3NbaV0ucmF0aW87Ci0JCQlicmVhazsKLQkJfQotCX0KLQlpZiAo aSA9PSBBUlJBWV9TSVpFKGZsbF9mcmF0aW9zKSkgewotCQlwcl9lcnIoIlVuYWJsZSB0byBmaW5k IEZMTF9GUkFUSU8gZm9yIEZyZWY9JXVIelxuIiwgRnJlZik7Ci0JCXJldHVybiAtRUlOVkFMOwot CX0KLQotCS8qIE5vdywgY2FsY3VsYXRlIE4uSyAqLwotCU5kaXYgPSB0YXJnZXQgLyBGcmVmOwot Ci0JZmxsX2Rpdi0+biA9IE5kaXY7Ci0JTm1vZCA9IHRhcmdldCAlIEZyZWY7Ci0JcHJfZGVidWco Ik5tb2Q9JWRcbiIsIE5tb2QpOwotCi0JLyogQ2FsY3VsYXRlIGZyYWN0aW9uYWwgcGFydCAtIHNj YWxlIHVwIHNvIHdlIGNhbiByb3VuZC4gKi8KLQlLcGFydCA9IEZJWEVEX0ZMTF9TSVpFICogKGxv bmcgbG9uZylObW9kOwotCi0JZG9fZGl2KEtwYXJ0LCBGcmVmKTsKLQotCUsgPSBLcGFydCAmIDB4 RkZGRkZGRkY7Ci0KLQlpZiAoKEsgJSAxMCkgPj0gNSkKLQkJSyArPSA1OwotCi0JLyogTW92ZSBk b3duIHRvIHByb3BlciByYW5nZSBub3cgcm91bmRpbmcgaXMgZG9uZSAqLwotCWZsbF9kaXYtPmsg PSBLIC8gMTA7Ci0KLQlwcl9kZWJ1ZygiTj0leCBLPSV4IEZMTF9GUkFUSU89JXggRkxMX09VVERJ Vj0leCBGTExfQ0xLX1JFRl9ESVY9JXhcbiIsCi0JCSBmbGxfZGl2LT5uLCBmbGxfZGl2LT5rLAot CQkgZmxsX2Rpdi0+ZmxsX2ZyYXRpbywgZmxsX2Rpdi0+ZmxsX291dGRpdiwKLQkJIGZsbF9kaXYt PmZsbF9jbGtfcmVmX2Rpdik7Ci0KLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIGludCB3bTg5MDRf c2V0X2ZsbChzdHJ1Y3Qgc25kX3NvY19kYWkgKmRhaSwgaW50IGZsbF9pZCwgaW50IHNvdXJjZSwK LQkJCSAgdW5zaWduZWQgaW50IEZyZWYsIHVuc2lnbmVkIGludCBGb3V0KQotewotCXN0cnVjdCBz bmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50ID0gZGFpLT5jb21wb25lbnQ7Ci0Jc3RydWN0IHdt ODkwNF9wcml2ICp3bTg5MDQgPSBzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjb21wb25l bnQpOwotCXN0cnVjdCBfZmxsX2RpdiBmbGxfZGl2OwotCWludCByZXQsIHZhbDsKLQlpbnQgY2xv Y2syLCBmbGwxOwotCi0JLyogQW55IGNoYW5nZT8gKi8KLQlpZiAoc291cmNlID09IHdtODkwNC0+ ZmxsX3NyYyAmJiBGcmVmID09IHdtODkwNC0+ZmxsX2ZyZWYgJiYKLQkgICAgRm91dCA9PSB3bTg5 MDQtPmZsbF9mb3V0KQotCQlyZXR1cm4gMDsKLQotCWNsb2NrMiA9IHNuZF9zb2NfY29tcG9uZW50 X3JlYWQzMihjb21wb25lbnQsIFdNODkwNF9DTE9DS19SQVRFU18yKTsKLQotCWlmIChGb3V0ID09 IDApIHsKLQkJZGV2X2RiZyhjb21wb25lbnQtPmRldiwgIkZMTCBkaXNhYmxlZFxuIik7Ci0KLQkJ d204OTA0LT5mbGxfZnJlZiA9IDA7Ci0JCXdtODkwNC0+ZmxsX2ZvdXQgPSAwOwotCi0JCS8qIEdh dGUgU1lTQ0xLIHRvIGF2b2lkIGdsaXRjaGVzICovCi0JCXNuZF9zb2NfY29tcG9uZW50X3VwZGF0 ZV9iaXRzKGNvbXBvbmVudCwgV004OTA0X0NMT0NLX1JBVEVTXzIsCi0JCQkJICAgIFdNODkwNF9D TEtfU1lTX0VOQSwgMCk7Ci0KLQkJc25kX3NvY19jb21wb25lbnRfdXBkYXRlX2JpdHMoY29tcG9u ZW50LCBXTTg5MDRfRkxMX0NPTlRST0xfMSwKLQkJCQkgICAgV004OTA0X0ZMTF9PU0NfRU5BIHwg V004OTA0X0ZMTF9FTkEsIDApOwotCi0JCWdvdG8gb3V0OwotCX0KLQotCS8qIFZhbGlkYXRlIHRo ZSBGTEwgSUQgKi8KLQlzd2l0Y2ggKHNvdXJjZSkgewotCWNhc2UgV004OTA0X0ZMTF9NQ0xLOgot CWNhc2UgV004OTA0X0ZMTF9MUkNMSzoKLQljYXNlIFdNODkwNF9GTExfQkNMSzoKLQkJcmV0ID0g ZmxsX2ZhY3RvcnMoJmZsbF9kaXYsIEZyZWYsIEZvdXQpOwotCQlpZiAocmV0ICE9IDApCi0JCQly ZXR1cm4gcmV0OwotCQlicmVhazsKLQotCWNhc2UgV004OTA0X0ZMTF9GUkVFX1JVTk5JTkc6Ci0J CWRldl9kYmcoY29tcG9uZW50LT5kZXYsICJVc2luZyBmcmVlIHJ1bm5pbmcgRkxMXG4iKTsKLQkJ LyogRm9yY2UgMTJNSHogYW5kIG91dHB1dC80IGZvciBub3cgKi8KLQkJRm91dCA9IDEyMDAwMDAw OwotCQlGcmVmID0gMTIwMDAwMDA7Ci0KLQkJbWVtc2V0KCZmbGxfZGl2LCAwLCBzaXplb2YoZmxs X2RpdikpOwotCQlmbGxfZGl2LmZsbF9vdXRkaXYgPSAzOwotCQlicmVhazsKLQotCWRlZmF1bHQ6 Ci0JCWRldl9lcnIoY29tcG9uZW50LT5kZXYsICJVbmtub3duIEZMTCBJRCAlZFxuIiwgZmxsX2lk KTsKLQkJcmV0dXJuIC1FSU5WQUw7Ci0JfQotCi0JLyogU2F2ZSBjdXJyZW50IHN0YXRlIHRoZW4g ZGlzYWJsZSB0aGUgRkxMIGFuZCBTWVNDTEsgdG8gYXZvaWQKLQkgKiBtaXNjbG9ja2luZyAqLwot CWZsbDEgPSBzbmRfc29jX2NvbXBvbmVudF9yZWFkMzIoY29tcG9uZW50LCBXTTg5MDRfRkxMX0NP TlRST0xfMSk7Ci0Jc25kX3NvY19jb21wb25lbnRfdXBkYXRlX2JpdHMoY29tcG9uZW50LCBXTTg5 MDRfQ0xPQ0tfUkFURVNfMiwKLQkJCSAgICBXTTg5MDRfQ0xLX1NZU19FTkEsIDApOwotCXNuZF9z b2NfY29tcG9uZW50X3VwZGF0ZV9iaXRzKGNvbXBvbmVudCwgV004OTA0X0ZMTF9DT05UUk9MXzEs Ci0JCQkgICAgV004OTA0X0ZMTF9PU0NfRU5BIHwgV004OTA0X0ZMTF9FTkEsIDApOwotCi0JLyog VW5sb2NrIGZvcmNlZCBvc2NpbGF0b3IgY29udHJvbCB0byBzd2l0Y2ggaXQgb24vb2ZmICovCi0J c25kX3NvY19jb21wb25lbnRfdXBkYXRlX2JpdHMoY29tcG9uZW50LCBXTTg5MDRfQ09OVFJPTF9J TlRFUkZBQ0VfVEVTVF8xLAotCQkJICAgIFdNODkwNF9VU0VSX0tFWSwgV004OTA0X1VTRVJfS0VZ KTsKLQotCWlmIChmbGxfaWQgPT0gV004OTA0X0ZMTF9GUkVFX1JVTk5JTkcpIHsKLQkJdmFsID0g V004OTA0X0ZMTF9GUkNfTkNPOwotCX0gZWxzZSB7Ci0JCXZhbCA9IDA7Ci0JfQotCi0Jc25kX3Nv Y19jb21wb25lbnRfdXBkYXRlX2JpdHMoY29tcG9uZW50LCBXTTg5MDRfRkxMX05DT19URVNUXzEs IFdNODkwNF9GTExfRlJDX05DTywKLQkJCSAgICB2YWwpOwotCXNuZF9zb2NfY29tcG9uZW50X3Vw ZGF0ZV9iaXRzKGNvbXBvbmVudCwgV004OTA0X0NPTlRST0xfSU5URVJGQUNFX1RFU1RfMSwKLQkJ CSAgICBXTTg5MDRfVVNFUl9LRVksIDApOwotCi0Jc3dpdGNoIChmbGxfaWQpIHsKLQljYXNlIFdN ODkwNF9GTExfTUNMSzoKLQkJc25kX3NvY19jb21wb25lbnRfdXBkYXRlX2JpdHMoY29tcG9uZW50 LCBXTTg5MDRfRkxMX0NPTlRST0xfNSwKLQkJCQkgICAgV004OTA0X0ZMTF9DTEtfUkVGX1NSQ19N QVNLLCAwKTsKLQkJYnJlYWs7Ci0KLQljYXNlIFdNODkwNF9GTExfTFJDTEs6Ci0JCXNuZF9zb2Nf Y29tcG9uZW50X3VwZGF0ZV9iaXRzKGNvbXBvbmVudCwgV004OTA0X0ZMTF9DT05UUk9MXzUsCi0J CQkJICAgIFdNODkwNF9GTExfQ0xLX1JFRl9TUkNfTUFTSywgMSk7Ci0JCWJyZWFrOwotCi0JY2Fz ZSBXTTg5MDRfRkxMX0JDTEs6Ci0JCXNuZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9iaXRzKGNvbXBv bmVudCwgV004OTA0X0ZMTF9DT05UUk9MXzUsCi0JCQkJICAgIFdNODkwNF9GTExfQ0xLX1JFRl9T UkNfTUFTSywgMik7Ci0JCWJyZWFrOwotCX0KLQotCWlmIChmbGxfZGl2LmspCi0JCXZhbCA9IFdN ODkwNF9GTExfRlJBQ05fRU5BOwotCWVsc2UKLQkJdmFsID0gMDsKLQlzbmRfc29jX2NvbXBvbmVu dF91cGRhdGVfYml0cyhjb21wb25lbnQsIFdNODkwNF9GTExfQ09OVFJPTF8xLAotCQkJICAgIFdN ODkwNF9GTExfRlJBQ05fRU5BLCB2YWwpOwotCi0Jc25kX3NvY19jb21wb25lbnRfdXBkYXRlX2Jp dHMoY29tcG9uZW50LCBXTTg5MDRfRkxMX0NPTlRST0xfMiwKLQkJCSAgICBXTTg5MDRfRkxMX09V VERJVl9NQVNLIHwgV004OTA0X0ZMTF9GUkFUSU9fTUFTSywKLQkJCSAgICAoZmxsX2Rpdi5mbGxf b3V0ZGl2IDw8IFdNODkwNF9GTExfT1VURElWX1NISUZUKSB8Ci0JCQkgICAgKGZsbF9kaXYuZmxs X2ZyYXRpbyA8PCBXTTg5MDRfRkxMX0ZSQVRJT19TSElGVCkpOwotCi0Jc25kX3NvY19jb21wb25l bnRfd3JpdGUoY29tcG9uZW50LCBXTTg5MDRfRkxMX0NPTlRST0xfMywgZmxsX2Rpdi5rKTsKLQot CXNuZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9iaXRzKGNvbXBvbmVudCwgV004OTA0X0ZMTF9DT05U Uk9MXzQsIFdNODkwNF9GTExfTl9NQVNLLAotCQkJICAgIGZsbF9kaXYubiA8PCBXTTg5MDRfRkxM X05fU0hJRlQpOwotCi0Jc25kX3NvY19jb21wb25lbnRfdXBkYXRlX2JpdHMoY29tcG9uZW50LCBX TTg5MDRfRkxMX0NPTlRST0xfNSwKLQkJCSAgICBXTTg5MDRfRkxMX0NMS19SRUZfRElWX01BU0ss Ci0JCQkgICAgZmxsX2Rpdi5mbGxfY2xrX3JlZl9kaXYgCi0JCQkgICAgPDwgV004OTA0X0ZMTF9D TEtfUkVGX0RJVl9TSElGVCk7Ci0KLQlkZXZfZGJnKGNvbXBvbmVudC0+ZGV2LCAiRkxMIGNvbmZp Z3VyZWQgZm9yICVkSHotPiVkSHpcbiIsIEZyZWYsIEZvdXQpOwotCi0Jd204OTA0LT5mbGxfZnJl ZiA9IEZyZWY7Ci0Jd204OTA0LT5mbGxfZm91dCA9IEZvdXQ7Ci0Jd204OTA0LT5mbGxfc3JjID0g c291cmNlOwotCi0JLyogRW5hYmxlIHRoZSBGTEwgaWYgaXQgd2FzIHByZXZpb3VzbHkgYWN0aXZl ICovCi0Jc25kX3NvY19jb21wb25lbnRfdXBkYXRlX2JpdHMoY29tcG9uZW50LCBXTTg5MDRfRkxM X0NPTlRST0xfMSwKLQkJCSAgICBXTTg5MDRfRkxMX09TQ19FTkEsIGZsbDEpOwotCXNuZF9zb2Nf Y29tcG9uZW50X3VwZGF0ZV9iaXRzKGNvbXBvbmVudCwgV004OTA0X0ZMTF9DT05UUk9MXzEsCi0J CQkgICAgV004OTA0X0ZMTF9FTkEsIGZsbDEpOwotCi1vdXQ6Ci0JLyogUmVlbmFibGUgU1lTQ0xL IGlmIGl0IHdhcyBwcmV2aW91c2x5IGFjdGl2ZSAqLwotCXNuZF9zb2NfY29tcG9uZW50X3VwZGF0 ZV9iaXRzKGNvbXBvbmVudCwgV004OTA0X0NMT0NLX1JBVEVTXzIsCi0JCQkgICAgV004OTA0X0NM S19TWVNfRU5BLCBjbG9jazIpOwotCi0JcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyBpbnQgd204OTA0 X2RpZ2l0YWxfbXV0ZShzdHJ1Y3Qgc25kX3NvY19kYWkgKmNvZGVjX2RhaSwgaW50IG11dGUpCiB7 CiAJc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb21wb25lbnQgPSBjb2RlY19kYWktPmNvbXBv bmVudDsKQEAgLTE4NzEsMTUgKzE2NTksNiBAQCBzdGF0aWMgaW50IHdtODkwNF9zZXRfYmlhc19s ZXZlbChzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNvbXBvbmVudCwKIAkJCQlyZXR1cm4gcmV0 OwogCQkJfQogCi0JCQlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUod204OTA0LT5tY2xrKTsKLQkJ CWlmIChyZXQpIHsKLQkJCQlkZXZfZXJyKGNvbXBvbmVudC0+ZGV2LAotCQkJCQkiRmFpbGVkIHRv IGVuYWJsZSBNQ0xLOiAlZFxuIiwgcmV0KTsKLQkJCQlyZWd1bGF0b3JfYnVsa19kaXNhYmxlKEFS UkFZX1NJWkUod204OTA0LT5zdXBwbGllcyksCi0JCQkJCQkgICAgICAgd204OTA0LT5zdXBwbGll cyk7Ci0JCQkJcmV0dXJuIHJldDsKLQkJCX0KLQogCQkJcmVnY2FjaGVfY2FjaGVfb25seSh3bTg5 MDQtPnJlZ21hcCwgZmFsc2UpOwogCQkJcmVnY2FjaGVfc3luYyh3bTg5MDQtPnJlZ21hcCk7CiAK QEAgLTE5MjIsNyArMTcwMSw2IEBAIHN0YXRpYyBpbnQgd204OTA0X3NldF9iaWFzX2xldmVsKHN0 cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50LAogCiAJCXJlZ3VsYXRvcl9idWxrX2Rp c2FibGUoQVJSQVlfU0laRSh3bTg5MDQtPnN1cHBsaWVzKSwKIAkJCQkgICAgICAgd204OTA0LT5z dXBwbGllcyk7Ci0JCWNsa19kaXNhYmxlX3VucHJlcGFyZSh3bTg5MDQtPm1jbGspOwogCQlicmVh azsKIAl9CiAJcmV0dXJuIDA7CkBAIC0xOTM3LDcgKzE3MTUsNiBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IHNuZF9zb2NfZGFpX29wcyB3bTg5MDRfZGFpX29wcyA9IHsKIAkuc2V0X3N5c2NsayA9IHdt ODkwNF9zZXRfc3lzY2xrLAogCS5zZXRfZm10ID0gd204OTA0X3NldF9mbXQsCiAJLnNldF90ZG1f c2xvdCA9IHdtODkwNF9zZXRfdGRtX3Nsb3QsCi0JLnNldF9wbGwgPSB3bTg5MDRfc2V0X2ZsbCwK IAkuaHdfcGFyYW1zID0gd204OTA0X2h3X3BhcmFtcywKIAkuZGlnaXRhbF9tdXRlID0gd204OTA0 X2RpZ2l0YWxfbXV0ZSwKIH07CkBAIC0yMTIzLDYgKzE5MDAsMTUgQEAgc3RhdGljIGNvbnN0IHN0 cnVjdCByZWdtYXBfY29uZmlnIHdtODkwNF9yZWdtYXAgPSB7CiAJLm51bV9yZWdfZGVmYXVsdHMg PSBBUlJBWV9TSVpFKHdtODkwNF9yZWdfZGVmYXVsdHMpLAogfTsKIAorc3RhdGljIGNvbnN0IHN0 cnVjdCB3bV9mbGxfZGVzYyB3bTg5MDRfZmxsX2Rlc2MgPSB7CisJLmN0bF9vZmZzZXQgPSBXTTg5 MDRfRkxMX0NPTlRST0xfMSwKKwkuaW50X29mZnNldCA9IFdNODkwNF9JTlRFUlJVUFRfU1RBVFVT LAorCS5pbnRfbWFzayA9IFdNODkwNF9GTExfTE9DS19FSU5UX01BU0ssCisJLm5jb19yZWcwID0g V004OTA0X0ZMTF9OQ09fVEVTVF8wLAorCS5uY29fcmVnMSA9IFdNODkwNF9GTExfTkNPX1RFU1Rf MSwKKwkuY2xrX3JlZl9tYXAgPSB7IEZMTF9SRUZfTUNMSywgRkxMX1JFRl9CQ0xLLCBGTExfUkVG X0ZTQ0xLLCAvKiByZXNlcnZlZCAqLyAwIH0sCit9OworCiAjaWZkZWYgQ09ORklHX09GCiBzdGF0 aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB3bTg5MDRfb2ZfbWF0Y2hbXSA9IHsKIAl7CkBA IC0yMTY1LDYgKzE5NTEsMTkgQEAgc3RhdGljIGludCB3bTg5MDRfaTJjX3Byb2JlKHN0cnVjdCBp MmNfY2xpZW50ICppMmMsCiAJCXJldHVybiByZXQ7CiAJfQogCisJd204OTA0LT5mbGwucmVnbWFw ID0gd204OTA0LT5yZWdtYXA7CisJd204OTA0LT5mbGwuZGVzYyA9ICZ3bTg5MDRfZmxsX2Rlc2M7 CisJcmV0ID0gd21fZmxsX2luaXRfd2l0aF9jbGsoJndtODkwNC0+ZmxsKTsKKwlpZiAocmV0KQor CQlyZXR1cm4gcmV0OworCisJcmV0ID0gd21fZmxsX3NldF9wYXJlbnQoJndtODkwNC0+ZmxsLCBG TExfUkVGX01DTEspOworCWlmIChyZXQgPCAwKSB7CisJCWRldl9lcnIoJmkyYy0+ZGV2LCAiRmFp bGVkIHRvIHNlbGVjdCBNQ0xLIGFzIEZMTCBpbnB1dDogJWRcbiIsCisJCQlyZXQpOworCQlyZXR1 cm4gcmV0OworCX0KKwogCWlmIChpMmMtPmRldi5vZl9ub2RlKSB7CiAJCWNvbnN0IHN0cnVjdCBv Zl9kZXZpY2VfaWQgKm1hdGNoOwogCkBAIC0yMjc2LDYgKzIwNzUsNyBAQCBzdGF0aWMgaW50IHdt ODkwNF9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmkyYywKIAkJCSAgICBXTTg5MDRfUE9C Q1RSTCwgMCk7CiAKIAkvKiBDYW4gbGVhdmUgdGhlIGRldmljZSBwb3dlcmVkIG9mZiB1bnRpbCB3 ZSBuZWVkIGl0ICovCisJd204OTA0X2Rpc2FibGVfc3lzY2xrKHdtODkwNCk7CiAJcmVnY2FjaGVf Y2FjaGVfb25seSh3bTg5MDQtPnJlZ21hcCwgdHJ1ZSk7CiAJcmVndWxhdG9yX2J1bGtfZGlzYWJs ZShBUlJBWV9TSVpFKHdtODkwNC0+c3VwcGxpZXMpLCB3bTg5MDQtPnN1cHBsaWVzKTsKIApkaWZm IC0tZ2l0IGEvc291bmQvc29jL2NvZGVjcy93bTg5MDQuaCBiL3NvdW5kL3NvYy9jb2RlY3Mvd204 OTA0LmgKaW5kZXggYzFiY2E1MmY5OTI3Li42MGFmMDllMGJiMTUgMTAwNjQ0Ci0tLSBhL3NvdW5k L3NvYy9jb2RlY3Mvd204OTA0LmgKKysrIGIvc291bmQvc29jL2NvZGVjcy93bTg5MDQuaApAQCAt MTMsMTEgKzEzLDYgQEAKICNkZWZpbmUgV004OTA0X0NMS19NQ0xLIDEKICNkZWZpbmUgV004OTA0 X0NMS19GTEwgIDIKIAotI2RlZmluZSBXTTg5MDRfRkxMX01DTEsgICAgICAgICAgMQotI2RlZmlu ZSBXTTg5MDRfRkxMX0JDTEsgICAgICAgICAgMgotI2RlZmluZSBXTTg5MDRfRkxMX0xSQ0xLICAg ICAgICAgMwotI2RlZmluZSBXTTg5MDRfRkxMX0ZSRUVfUlVOTklORyAgNAotCiAvKgogICogUmVn aXN0ZXIgdmFsdWVzLgogICovCi0tIAoyLjIwLjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51 eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5v cmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==