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 Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 07BA2C433F5 for ; Tue, 15 Mar 2022 05:29:13 +0000 (UTC) Received: from alsa1.perex.cz (alsa1.perex.cz [207.180.221.201]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by alsa0.perex.cz (Postfix) with ESMTPS id BFBB61732; Tue, 15 Mar 2022 06:28:21 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa0.perex.cz BFBB61732 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=alsa-project.org; s=default; t=1647322151; bh=SoSkHNg8Two/x2bRnJB/Pz7cGsB7IbloVY9UgcmjG74=; h=From:To:Subject:Date:Cc:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:From; b=AZUEUC0UmyP2qwNgy4tRVuPtFK8kAtV8+se4SUAcWpyHB2BUNgWznxabt/1iPugQS Ct8/lMyQfwm9FVYt4I+lNBqk0Ik6Zo6dVtN+gAtUnYRS+/XmItxBx0+K5ItM6SiArE egdeDt29RswbddFFz3M9WrWcqCGGT0aSWx4/UdtU= Received: from alsa1.perex.cz (localhost.localdomain [127.0.0.1]) by alsa1.perex.cz (Postfix) with ESMTP id 3D0C5F8012C; Tue, 15 Mar 2022 06:28:21 +0100 (CET) Received: by alsa1.perex.cz (Postfix, from userid 50401) id 2F04FF80162; Tue, 15 Mar 2022 06:28:17 +0100 (CET) Received: from fllv0016.ext.ti.com (fllv0016.ext.ti.com [198.47.19.142]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by alsa1.perex.cz (Postfix) with ESMTPS id 74822F800FF for ; Tue, 15 Mar 2022 06:28:09 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa1.perex.cz 74822F800FF Authentication-Results: alsa1.perex.cz; dkim=pass (1024-bit key) header.d=ti.com header.i=@ti.com header.b="Fo8Aaiq4" Received: from lelv0266.itg.ti.com ([10.180.67.225]) by fllv0016.ext.ti.com (8.15.2/8.15.2) with ESMTP id 22F5S5Yr052869; Tue, 15 Mar 2022 00:28:05 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1647322085; bh=poHFDFjYOEz+Nz6p3bcvUmwQvQ6SOJt//spRjjn5LVs=; h=From:To:CC:Subject:Date; b=Fo8Aaiq4d0XzPSpr5zcLLkCapav13ue5bMEJgfnDDNsZwcp4Ww/Rv9m9EMbjNVd7z pDjkmo8PUQpblNKixDs2uA8cowbY9Sskft/Q0xwK1HqbBN4+7L7L1E6FCbFBPd4IJm 9/oh3wBvUotSwiKxyL2FpVx2guSJVwnWk+74MAF8= Received: from DFLE104.ent.ti.com (dfle104.ent.ti.com [10.64.6.25]) by lelv0266.itg.ti.com (8.15.2/8.15.2) with ESMTPS id 22F5S5mi106139 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Tue, 15 Mar 2022 00:28:05 -0500 Received: from DFLE107.ent.ti.com (10.64.6.28) by DFLE104.ent.ti.com (10.64.6.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2308.14; Tue, 15 Mar 2022 00:28:05 -0500 Received: from DFLE107.ent.ti.com ([fe80::86f:14f0:164b:4dbe]) by DFLE107.ent.ti.com ([fe80::86f:14f0:164b:4dbe%17]) with mapi id 15.01.2308.014; Tue, 15 Mar 2022 00:28:05 -0500 From: "Xu, Yang" To: "broonie@kernel.org" , "tiwai@suse.com" Subject: [PATCH 1/4] Asoc: tas2764 : new tas27xx driver to support either tas2764 or tas2780 Thread-Topic: [PATCH 1/4] Asoc: tas2764 : new tas27xx driver to support either tas2764 or tas2780 Thread-Index: Adg4LW/ouUMMCrg+RqO2dND1/xbRDw== Date: Tue, 15 Mar 2022 05:28:05 +0000 Message-ID: <51482fa1bb6d4b96abbd42991f7d492b@ti.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-originating-ip: [10.250.162.214] x-exclaimer-md-config: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 Content-Type: multipart/mixed; boundary="_004_51482fa1bb6d4b96abbd42991f7d492bticom_" MIME-Version: 1.0 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Cc: "alsa-devel@alsa-project.org" , "Ding, Shenghao" X-BeenThere: alsa-devel@alsa-project.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: "Alsa-devel mailing list for ALSA developers - http://www.alsa-project.org" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: "Alsa-devel" --_004_51482fa1bb6d4b96abbd42991f7d492bticom_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi Mark and Takashi Iwai, This is Raphael Xu who is from Low Power Audio team,Texas Instrument. Could you help to review the attached patch and upstream them to the kernel= ? Thanks. Change log: Path: sound/soc/codecs 1. This patch to support either TAS2764 or TAS2780 device from TI 2. Fixed "no sound" issue on some platforms. Regards Raphael --_004_51482fa1bb6d4b96abbd42991f7d492bticom_ Content-Type: application/octet-stream; name="tas27xx.c.patch" Content-Description: tas27xx.c.patch Content-Disposition: attachment; filename="tas27xx.c.patch"; size=28010; creation-date="Tue, 15 Mar 2022 05:27:30 GMT"; modification-date="Tue, 15 Mar 2022 05:27:30 GMT" Content-Transfer-Encoding: base64 LS0tIGtlcm5lbC01LTE2LTEzL3RhczI3NjQuYwkyMDIyLTAzLTA5IDEzOjIxOjM2LjQyNTIwODcw MCArMDgwMAorKysga2VybmVsLTUtMTYtMTMtbW9kaWZpZWQvdGFzMjd4eC5jCTIwMjItMDMtMTEg MTQ6MDY6MjAuMjMzNjU2ODAwICswODAwCkBAIC0xLDcgKzEsNyBAQAogLy8gU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEdQTC0yLjAKIC8vCi0vLyBEcml2ZXIgZm9yIHRoZSBUZXhhcyBJbnN0cnVt ZW50cyBUQVMyNzY0IENPREVDCi0vLyBDb3B5cmlnaHQgKEMpIDIwMjAgVGV4YXMgSW5zdHJ1bWVu dHMgSW5jLgorLy8gRHJpdmVyIGZvciB0aGUgVGV4YXMgSW5zdHJ1bWVudHMgVEFTMjc2NC9UQVMy NzgwIE1vbm8gQXVkaW8gYW1wbGlmaWVyCisvLyBDb3B5cmlnaHQgKEMpIDIwMjIgVGV4YXMgSW5z dHJ1bWVudHMgSW5jLgogCiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CiAjaW5jbHVkZSA8bGlu dXgvbW9kdWxlcGFyYW0uaD4KQEAgLTEyLDExOCArMTIsMTQyIEBACiAjaW5jbHVkZSA8bGludXgv aTJjLmg+CiAjaW5jbHVkZSA8bGludXgvZ3Bpby5oPgogI2luY2x1ZGUgPGxpbnV4L2dwaW8vY29u c3VtZXIuaD4KLSNpbmNsdWRlIDxsaW51eC9yZWd1bGF0b3IvY29uc3VtZXIuaD4KICNpbmNsdWRl IDxsaW51eC9yZWdtYXAuaD4KICNpbmNsdWRlIDxsaW51eC9vZi5oPgogI2luY2x1ZGUgPGxpbnV4 L29mX2dwaW8uaD4KLSNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CiAjaW5jbHVkZSA8c291bmQvc29j Lmg+CiAjaW5jbHVkZSA8c291bmQvcGNtLmg+CiAjaW5jbHVkZSA8c291bmQvcGNtX3BhcmFtcy5o PgogI2luY2x1ZGUgPHNvdW5kL2luaXR2YWwuaD4KICNpbmNsdWRlIDxzb3VuZC90bHYuaD4KKyNp bmNsdWRlIDxsaW51eC92ZXJzaW9uLmg+CiAKLSNpbmNsdWRlICJ0YXMyNzY0LmgiCisjaW5jbHVk ZSAidGFzMjd4eC5oIgogCi1zdHJ1Y3QgdGFzMjc2NF9wcml2IHsKK3N0cnVjdCB0YXMyN3h4X3By aXYgewogCXN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50OwogCXN0cnVjdCBncGlv X2Rlc2MgKnJlc2V0X2dwaW87CiAJc3RydWN0IGdwaW9fZGVzYyAqc2R6X2dwaW87CiAJc3RydWN0 IHJlZ21hcCAqcmVnbWFwOwogCXN0cnVjdCBkZXZpY2UgKmRldjsKLQkKKwlzdHJ1Y3QgbXV0ZXgg Y29kZWNfbG9jazsKIAlpbnQgdl9zZW5zZV9zbG90OwogCWludCBpX3NlbnNlX3Nsb3Q7CisJaW50 IGRldmljZV9pZDsKKwlib29sIG1iUG93ZXJVcDsKIH07CiAKLXN0YXRpYyB2b2lkIHRhczI3NjRf cmVzZXQoc3RydWN0IHRhczI3NjRfcHJpdiAqdGFzMjc2NCkKK3N0YXRpYyB2b2lkIHRhczI3eHhf cmVzZXQoc3RydWN0IHRhczI3eHhfcHJpdiAqdGFzMjd4eCkKIHsKLQlpZiAodGFzMjc2NC0+cmVz ZXRfZ3BpbykgewotCQlncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAodGFzMjc2NC0+cmVzZXRfZ3Bp bywgMCk7CisJaWYgKHRhczI3eHgtPnJlc2V0X2dwaW8pIHsKKwkJZ3Bpb2Rfc2V0X3ZhbHVlX2Nh bnNsZWVwKHRhczI3eHgtPnJlc2V0X2dwaW8sIDApOwogCQltc2xlZXAoMjApOwotCQlncGlvZF9z ZXRfdmFsdWVfY2Fuc2xlZXAodGFzMjc2NC0+cmVzZXRfZ3BpbywgMSk7CisJCWdwaW9kX3NldF92 YWx1ZV9jYW5zbGVlcCh0YXMyN3h4LT5yZXNldF9ncGlvLCAxKTsKIAl9CiAKLQlzbmRfc29jX2Nv bXBvbmVudF93cml0ZSh0YXMyNzY0LT5jb21wb25lbnQsIFRBUzI3NjRfU1dfUlNULAorCXNuZF9z b2NfY29tcG9uZW50X3dyaXRlKHRhczI3eHgtPmNvbXBvbmVudCwgVEFTMjc2NF9TV19SU1QsCiAJ CQkJVEFTMjc2NF9SU1QpOwogfQogCi1zdGF0aWMgaW50IHRhczI3NjRfc2V0X2JpYXNfbGV2ZWwo c3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb21wb25lbnQsCitzdGF0aWMgaW50IHRhczI3eHhf c2V0X2JpYXNfbGV2ZWwoc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb21wb25lbnQsCiAJCQkJ IGVudW0gc25kX3NvY19iaWFzX2xldmVsIGxldmVsKQogewotCXN0cnVjdCB0YXMyNzY0X3ByaXYg KnRhczI3NjQgPSBzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjb21wb25lbnQpOwotCisJ c3RydWN0IHRhczI3eHhfcHJpdiAqdGFzMjd4eCA9IHNuZF9zb2NfY29tcG9uZW50X2dldF9kcnZk YXRhKGNvbXBvbmVudCk7CisJaW50IHJldCA9IDA7CisJbXV0ZXhfbG9jaygmdGFzMjd4eC0+Y29k ZWNfbG9jayk7CiAJc3dpdGNoIChsZXZlbCkgewotCWNhc2UgU05EX1NPQ19CSUFTX09OOgotCQlz bmRfc29jX2NvbXBvbmVudF91cGRhdGVfYml0cyhjb21wb25lbnQsIFRBUzI3NjRfUFdSX0NUUkws Ci0JCQkJCSAgICAgIFRBUzI3NjRfUFdSX0NUUkxfTUFTSywKLQkJCQkJICAgICAgVEFTMjc2NF9Q V1JfQ1RSTF9BQ1RJVkUpOwotCQlicmVhazsKLQljYXNlIFNORF9TT0NfQklBU19TVEFOREJZOgot CWNhc2UgU05EX1NPQ19CSUFTX1BSRVBBUkU6Ci0JCXNuZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9i aXRzKGNvbXBvbmVudCwgVEFTMjc2NF9QV1JfQ1RSTCwKLQkJCQkJICAgICAgVEFTMjc2NF9QV1Jf Q1RSTF9NQVNLLAotCQkJCQkgICAgICBUQVMyNzY0X1BXUl9DVFJMX01VVEUpOwotCQlicmVhazsK LQljYXNlIFNORF9TT0NfQklBU19PRkY6Ci0JCXNuZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9iaXRz KGNvbXBvbmVudCwgVEFTMjc2NF9QV1JfQ1RSTCwKLQkJCQkJICAgICAgVEFTMjc2NF9QV1JfQ1RS TF9NQVNLLAotCQkJCQkgICAgICBUQVMyNzY0X1BXUl9DVFJMX1NIVVRET1dOKTsKLQkJYnJlYWs7 Ci0KLQlkZWZhdWx0OgotCQlkZXZfZXJyKHRhczI3NjQtPmRldiwKLQkJCQkid3JvbmcgcG93ZXIg bGV2ZWwgc2V0dGluZyAlZFxuIiwgbGV2ZWwpOwotCQlyZXR1cm4gLUVJTlZBTDsKLQl9Ci0KLQly ZXR1cm4gMDsKKwkJY2FzZSBTTkRfU09DX0JJQVNfT046CisJCQlyZXQgPSBzbmRfc29jX2NvbXBv bmVudF91cGRhdGVfYml0cyhjb21wb25lbnQsIFRBUzI3NjRfUFdSX0NUUkwsCisJCQkJCQkgICAg ICBUQVMyNzY0X1BXUl9DVFJMX01BU0ssCisJCQkJCQkgICAgICBUQVMyNzY0X1BXUl9DVFJMX0FD VElWRSk7CisJCQlpZihyZXQgPj0gMCkgeworCQkJCXRhczI3eHgtPm1iUG93ZXJVcCA9IHRydWU7 CisJCQkJcmV0ID0gMDsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNlIFNORF9TT0NfQklBU19TVEFO REJZOgorCQljYXNlIFNORF9TT0NfQklBU19QUkVQQVJFOgorCQkJcmV0ID0gc25kX3NvY19jb21w b25lbnRfdXBkYXRlX2JpdHMoY29tcG9uZW50LCBUQVMyNzY0X1BXUl9DVFJMLAorCQkJCQkJICAg ICAgVEFTMjc2NF9QV1JfQ1RSTF9NQVNLLAorCQkJCQkJICAgICAgVEFTMjc2NF9QV1JfQ1RSTF9N VVRFKTsKKwkJCWlmKHJldCA+PSAwKSB7CisJCQkJdGFzMjd4eC0+bWJQb3dlclVwID0gdHJ1ZTsK KwkJCQlyZXQgPSAwOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgU05EX1NPQ19CSUFTX09GRjoK KwkJCXJldCA9IHNuZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9iaXRzKGNvbXBvbmVudCwgVEFTMjc2 NF9QV1JfQ1RSTCwKKwkJCQkJCSAgICAgIFRBUzI3NjRfUFdSX0NUUkxfTUFTSywKKwkJCQkJCSAg ICAgIFRBUzI3NjRfUFdSX0NUUkxfU0hVVERPV04pOworCQkJaWYocmV0ID49IDApIHsKKwkJCQl0 YXMyN3h4LT5tYlBvd2VyVXAgPSBmYWxzZTsKKwkJCQlyZXQgPSAwOworCQkJfQorCQkJYnJlYWs7 CisJCWRlZmF1bHQ6CisJCQlkZXZfZXJyKHRhczI3eHgtPmRldiwKKwkJCQkJIndyb25nIHBvd2Vy IGxldmVsIHNldHRpbmcgJWRcbiIsIGxldmVsKTsKKwkJCXJldCA9IC1FSU5WQUw7CisJfQorCWlm IChyZXQgPCAwKQorCQlwcl9lcnIoIiVzOiV1OmVyckNvZGU6MHglMHg6c2V0IEJJQVMgZXJyb3Jc biIsCisJCQlfX2Z1bmNfXywgX19MSU5FX18sIHJldCk7CisJbXV0ZXhfdW5sb2NrKCZ0YXMyN3h4 LT5jb2RlY19sb2NrKTsKKwlyZXR1cm4gcmV0OwogfQogCiAjaWZkZWYgQ09ORklHX1BNCi1zdGF0 aWMgaW50IHRhczI3NjRfY29kZWNfc3VzcGVuZChzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNv bXBvbmVudCkKK3N0YXRpYyBpbnQgdGFzMjd4eF9jb2RlY19zdXNwZW5kKHN0cnVjdCBzbmRfc29j X2NvbXBvbmVudCAqY29tcG9uZW50KQogewotCXN0cnVjdCB0YXMyNzY0X3ByaXYgKnRhczI3NjQg PSBzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjb21wb25lbnQpOwotCWludCByZXQ7Ci0K KwlzdHJ1Y3QgdGFzMjd4eF9wcml2ICp0YXMyN3h4ID0gc25kX3NvY19jb21wb25lbnRfZ2V0X2Ry dmRhdGEoY29tcG9uZW50KTsKKwlpbnQgcmV0ID0gMDsKKwltdXRleF9sb2NrKCZ0YXMyN3h4LT5j b2RlY19sb2NrKTsKIAlyZXQgPSBzbmRfc29jX2NvbXBvbmVudF91cGRhdGVfYml0cyhjb21wb25l bnQsIFRBUzI3NjRfUFdSX0NUUkwsCiAJCQkJCSAgICBUQVMyNzY0X1BXUl9DVFJMX01BU0ssCiAJ CQkJCSAgICBUQVMyNzY0X1BXUl9DVFJMX1NIVVRET1dOKTsKIAotCWlmIChyZXQgPCAwKQotCQly ZXR1cm4gcmV0OwotCi0JaWYgKHRhczI3NjQtPnNkel9ncGlvKQotCQlncGlvZF9zZXRfdmFsdWVf Y2Fuc2xlZXAodGFzMjc2NC0+c2R6X2dwaW8sIDApOwotCi0JcmVnY2FjaGVfY2FjaGVfb25seSh0 YXMyNzY0LT5yZWdtYXAsIHRydWUpOwotCXJlZ2NhY2hlX21hcmtfZGlydHkodGFzMjc2NC0+cmVn bWFwKTsKLQotCXJldHVybiAwOworCWlmIChyZXQgPCAwKSB7CisJCXByX2VycigiJXM6JXU6ZXJy Q29kZToweCUweDpwb3dlciBkb3duIGVycm9yXG4iLAorCQkJX19mdW5jX18sIF9fTElORV9fLCBy ZXQpOworCQlnb3RvIEVYSVQ7CisJfQorCXJldCA9IDA7CisJdGFzMjd4eC0+bWJQb3dlclVwID0g ZmFsc2U7CisJaWYgKHRhczI3eHgtPnNkel9ncGlvKQorCQlncGlvZF9zZXRfdmFsdWVfY2Fuc2xl ZXAodGFzMjd4eC0+c2R6X2dwaW8sIDApOworCisJcmVnY2FjaGVfY2FjaGVfb25seSh0YXMyN3h4 LT5yZWdtYXAsIHRydWUpOworCXJlZ2NhY2hlX21hcmtfZGlydHkodGFzMjd4eC0+cmVnbWFwKTsK K0VYSVQ6CisJbXV0ZXhfdW5sb2NrKCZ0YXMyN3h4LT5jb2RlY19sb2NrKTsKKwlyZXR1cm4gcmV0 OwogfQogCi1zdGF0aWMgaW50IHRhczI3NjRfY29kZWNfcmVzdW1lKHN0cnVjdCBzbmRfc29jX2Nv bXBvbmVudCAqY29tcG9uZW50KQorc3RhdGljIGludCB0YXMyN3h4X2NvZGVjX3Jlc3VtZShzdHJ1 Y3Qgc25kX3NvY19jb21wb25lbnQgKmNvbXBvbmVudCkKIHsKLQlzdHJ1Y3QgdGFzMjc2NF9wcml2 ICp0YXMyNzY0ID0gc25kX3NvY19jb21wb25lbnRfZ2V0X2RydmRhdGEoY29tcG9uZW50KTsKLQlp bnQgcmV0OwotCi0JaWYgKHRhczI3NjQtPnNkel9ncGlvKQotCQlncGlvZF9zZXRfdmFsdWVfY2Fu c2xlZXAodGFzMjc2NC0+c2R6X2dwaW8sIDEpOworCXN0cnVjdCB0YXMyN3h4X3ByaXYgKnRhczI3 eHggPSBzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjb21wb25lbnQpOworCWludCByZXQg PSAwOworCW11dGV4X2xvY2soJnRhczI3eHgtPmNvZGVjX2xvY2spOworCWlmICh0YXMyN3h4LT5z ZHpfZ3BpbykKKwkJZ3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKHRhczI3eHgtPnNkel9ncGlvLCAx KTsKIAogCXJldCA9IHNuZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9iaXRzKGNvbXBvbmVudCwgVEFT Mjc2NF9QV1JfQ1RSTCwKIAkJCQkJICAgIFRBUzI3NjRfUFdSX0NUUkxfTUFTSywKIAkJCQkJICAg IFRBUzI3NjRfUFdSX0NUUkxfQUNUSVZFKTsKIAotCWlmIChyZXQgPCAwKQotCQlyZXR1cm4gcmV0 OwotCi0JcmVnY2FjaGVfY2FjaGVfb25seSh0YXMyNzY0LT5yZWdtYXAsIGZhbHNlKTsKLQotCXJl dHVybiByZWdjYWNoZV9zeW5jKHRhczI3NjQtPnJlZ21hcCk7CisJaWYgKHJldCA8IDApIHsKKwkJ cHJfZXJyKCIlczoldTplcnJDb2RlOjB4JTB4OnBvd2VyIGRvd24gZXJyb3JcbiIsCisJCQlfX2Z1 bmNfXywgX19MSU5FX18sIHJldCk7CisJCWdvdG8gRVhJVDsKKwl9CisJcmV0ID0gMDsKKwl0YXMy N3h4LT5tYlBvd2VyVXAgPSBmYWxzZTsKKwlyZWdjYWNoZV9jYWNoZV9vbmx5KHRhczI3eHgtPnJl Z21hcCwgZmFsc2UpOworCXJldCA9IHJlZ2NhY2hlX3N5bmModGFzMjd4eC0+cmVnbWFwKTsKK0VY SVQ6CisJbXV0ZXhfdW5sb2NrKCZ0YXMyN3h4LT5jb2RlY19sb2NrKTsKKwlyZXR1cm4gcmV0Owog fQotI2Vsc2UKLSNkZWZpbmUgdGFzMjc2NF9jb2RlY19zdXNwZW5kIE5VTEwKLSNkZWZpbmUgdGFz Mjc2NF9jb2RlY19yZXN1bWUgTlVMTAogI2VuZGlmCiAKIHN0YXRpYyBjb25zdCBjaGFyICogY29u c3QgdGFzMjc2NF9BU0kxX3NyY1tdID0gewpAQCAtMTM2LDMzICsxNjAsMzYgQEAgc3RhdGljIFNP Q19FTlVNX1NJTkdMRV9ERUNMKAogc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3 IHRhczI3NjRfYXNpMV9tdXggPQogCVNPQ19EQVBNX0VOVU0oIkFTSTEgU291cmNlIiwgdGFzMjc2 NF9BU0kxX3NyY19lbnVtKTsKIAotc3RhdGljIGludCB0YXMyNzY0X2RhY19ldmVudChzdHJ1Y3Qg c25kX3NvY19kYXBtX3dpZGdldCAqdywKK3N0YXRpYyBpbnQgdGFzMjd4eF9kYWNfZXZlbnQoc3Ry dWN0IHNuZF9zb2NfZGFwbV93aWRnZXQgKncsCiAJCQkgICAgIHN0cnVjdCBzbmRfa2NvbnRyb2wg Kmtjb250cm9sLCBpbnQgZXZlbnQpCiB7CiAJc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb21w b25lbnQgPSBzbmRfc29jX2RhcG1fdG9fY29tcG9uZW50KHctPmRhcG0pOwotCXN0cnVjdCB0YXMy NzY0X3ByaXYgKnRhczI3NjQgPSBzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjb21wb25l bnQpOwotCWludCByZXQ7Ci0KKwlzdHJ1Y3QgdGFzMjd4eF9wcml2ICp0YXMyN3h4ID0gc25kX3Nv Y19jb21wb25lbnRfZ2V0X2RydmRhdGEoY29tcG9uZW50KTsKKwlpbnQgcmV0ID0gMDsKKwltdXRl eF9sb2NrKCZ0YXMyN3h4LT5jb2RlY19sb2NrKTsKIAlzd2l0Y2ggKGV2ZW50KSB7Ci0JY2FzZSBT TkRfU09DX0RBUE1fUE9TVF9QTVU6Ci0JCXJldCA9IHNuZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9i aXRzKGNvbXBvbmVudCwgVEFTMjc2NF9QV1JfQ1RSTCwKLQkJCQkJCSAgICBUQVMyNzY0X1BXUl9D VFJMX01BU0ssCi0JCQkJCQkgICAgVEFTMjc2NF9QV1JfQ1RSTF9NVVRFKTsKLQkJYnJlYWs7Ci0J Y2FzZSBTTkRfU09DX0RBUE1fUFJFX1BNRDoKLQkJcmV0ID0gc25kX3NvY19jb21wb25lbnRfdXBk YXRlX2JpdHMoY29tcG9uZW50LCBUQVMyNzY0X1BXUl9DVFJMLAotCQkJCQkJICAgIFRBUzI3NjRf UFdSX0NUUkxfTUFTSywKLQkJCQkJCSAgICBUQVMyNzY0X1BXUl9DVFJMX1NIVVRET1dOKTsKLQkJ YnJlYWs7Ci0JZGVmYXVsdDoKLQkJZGV2X2Vycih0YXMyNzY0LT5kZXYsICJVbnN1cHBvcnRlZCBl dmVudFxuIik7Ci0JCXJldHVybiAtRUlOVkFMOworCQljYXNlIFNORF9TT0NfREFQTV9QT1NUX1BN VToKKwkJCXJldCA9IHNuZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9iaXRzKGNvbXBvbmVudCwgVEFT Mjc2NF9QV1JfQ1RSTCwKKwkJCQkJCQkgICAgVEFTMjc2NF9QV1JfQ1RSTF9NQVNLLAorCQkJCQkJ CSAgICBUQVMyNzY0X1BXUl9DVFJMX01VVEUpOworCQkJYnJlYWs7CisJCWNhc2UgU05EX1NPQ19E QVBNX1BSRV9QTUQ6CisJCQlyZXQgPSBzbmRfc29jX2NvbXBvbmVudF91cGRhdGVfYml0cyhjb21w b25lbnQsIFRBUzI3NjRfUFdSX0NUUkwsCisJCQkJCQkJICAgIFRBUzI3NjRfUFdSX0NUUkxfTUFT SywKKwkJCQkJCQkgICAgVEFTMjc2NF9QV1JfQ1RSTF9TSFVURE9XTik7CisJCQlicmVhazsKKwkJ ZGVmYXVsdDoKKwkJCWRldl9lcnIodGFzMjd4eC0+ZGV2LCAiVW5zdXBwb3J0ZWQgZXZlbnRcbiIp OworCQkJcmV0ID0gLUVJTlZBTDsKKwl9CisJaWYgKHJldCA8IDApIHsKKwkJcHJfZXJyKCIlczol dTplcnJDb2RlOjB4JTB4OlBXUl9DVFJMIGVycm9yXG4iLAorCQkJX19mdW5jX18sIF9fTElORV9f LCByZXQpOworCX0gZWxzZSB7CisJCXJldCA9IDA7CiAJfQotCi0JaWYgKHJldCA8IDApCi0JCXJl dHVybiByZXQ7Ci0KLQlyZXR1cm4gMDsKKwltdXRleF91bmxvY2soJnRhczI3eHgtPmNvZGVjX2xv Y2spOworCXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX2tjb250cm9s X25ldyBpc2Vuc2Vfc3dpdGNoID0KQEAgLTE3Nyw3ICsyMDQsNyBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IHNuZF9zb2NfZGFwbV93aWRnZXQKIAkJCSAgICAxLCAmaXNlbnNlX3N3aXRjaCksCiAJU05E X1NPQ19EQVBNX1NXSVRDSCgiVlNFTlNFIiwgVEFTMjc2NF9QV1JfQ1RSTCwgVEFTMjc2NF9WU0VO U0VfUE9XRVJfRU4sCiAJCQkgICAgMSwgJnZzZW5zZV9zd2l0Y2gpLAotCVNORF9TT0NfREFQTV9E QUNfRSgiREFDIiwgTlVMTCwgU05EX1NPQ19OT1BNLCAwLCAwLCB0YXMyNzY0X2RhY19ldmVudCwK KwlTTkRfU09DX0RBUE1fREFDX0UoIkRBQyIsIE5VTEwsIFNORF9TT0NfTk9QTSwgMCwgMCwgdGFz Mjd4eF9kYWNfZXZlbnQsCiAJCQkgICBTTkRfU09DX0RBUE1fUE9TVF9QTVUgfCBTTkRfU09DX0RB UE1fUFJFX1BNRCksCiAJU05EX1NPQ19EQVBNX09VVFBVVCgiT1VUIiksCiAJU05EX1NPQ19EQVBN X1NJR0dFTigiVk1PTiIpLApAQCAtMTk1LDg3ICsyMjIsMTM0IEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3Qgc25kX3NvY19kYXBtX3JvdXRlIHQKIAl7IlZTRU5TRSIsICJTd2l0Y2giLCAiVk1PTiJ9LAog fTsKIAotc3RhdGljIGludCB0YXMyNzY0X211dGUoc3RydWN0IHNuZF9zb2NfZGFpICpkYWksIGlu dCBtdXRlLCBpbnQgZGlyZWN0aW9uKQorc3RhdGljIGludCB0YXMyN3h4X211dGUoc3RydWN0IHNu ZF9zb2NfZGFpICpkYWksIGludCBtdXRlLCBpbnQgZGlyZWN0aW9uKQogewogCXN0cnVjdCBzbmRf c29jX2NvbXBvbmVudCAqY29tcG9uZW50ID0gZGFpLT5jb21wb25lbnQ7Ci0JaW50IHJldDsKKwlz dHJ1Y3QgdGFzMjd4eF9wcml2ICp0YXMyN3h4ID0gc25kX3NvY19jb21wb25lbnRfZ2V0X2RydmRh dGEoY29tcG9uZW50KTsKKwlpbnQgcmV0ID0gMDsKKwltdXRleF9sb2NrKCZ0YXMyN3h4LT5jb2Rl Y19sb2NrKTsKIAorCWlmKG11dGUgPT0gMCkgeworCQlyZXQgPSBzbmRfc29jX2NvbXBvbmVudF91 cGRhdGVfYml0cyhjb21wb25lbnQsIFRBUzI3WFhfQ0xLX0NGRywKKwkJCQkJCSAgICBUQVMyN1hY X0NMS19DRkdfTUFTSywgVEFTMjdYWF9DTEtfQ0ZHX0VOQUJMRSk7CisJCWlmIChyZXQgPCAwKSB7 CisJCQlkZXZfZXJyKHRhczI3eHgtPmRldiwgIiVzOiV1OiBGYWlsZWQgdG8gQ0xLX0NGR19FTkFC TEVcbiIsCisJCQkJX19mdW5jX18sIF9fTElORV9fKTsKKwkJCWdvdG8gRVhJVDsKKwkJfQorCQl1 c2xlZXBfcmFuZ2UoMjAwMCwgMjAwMCk7CisJfQogCXJldCA9IHNuZF9zb2NfY29tcG9uZW50X3Vw ZGF0ZV9iaXRzKGNvbXBvbmVudCwgVEFTMjc2NF9QV1JfQ1RSTCwKIAkJCQkJICAgIFRBUzI3NjRf UFdSX0NUUkxfTUFTSywKIAkJCQkJICAgIG11dGUgPyBUQVMyNzY0X1BXUl9DVFJMX01VVEUgOiAw KTsKKwlpZihyZXQgPj0wKSB7CisJCXRhczI3eHgtPm1iUG93ZXJVcCA9IG11dGU/ZmFsc2U6dHJ1 ZTsKKwkJcmV0ID0gMDsKKwl9CiAKLQlpZiAocmV0IDwgMCkKLQkJcmV0dXJuIHJldDsKLQotCXJl dHVybiAwOworCWlmIChyZXQgPCAwKSB7CisJCXByX2VycigiJXM6JXU6IEZhaWxlZCB0byBzZXQg cG93ZXJjb250cm9sXG4iLCBfX2Z1bmNfXywgX19MSU5FX18pOworCX0KK0VYSVQ6CisJbXV0ZXhf dW5sb2NrKCZ0YXMyN3h4LT5jb2RlY19sb2NrKTsKKwlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMg aW50IHRhczI3NjRfc2V0X2JpdHdpZHRoKHN0cnVjdCB0YXMyNzY0X3ByaXYgKnRhczI3NjQsIGlu dCBiaXR3aWR0aCkKK3N0YXRpYyBpbnQgdGFzMjd4eF9zZXRfYml0d2lkdGgoc3RydWN0IHRhczI3 eHhfcHJpdiAqdGFzMjd4eCwgaW50IGJpdHdpZHRoKQogewotCXN0cnVjdCBzbmRfc29jX2NvbXBv bmVudCAqY29tcG9uZW50ID0gdGFzMjc2NC0+Y29tcG9uZW50OworCXN0cnVjdCBzbmRfc29jX2Nv bXBvbmVudCAqY29tcG9uZW50ID0gdGFzMjd4eC0+Y29tcG9uZW50OwogCWludCBzZW5zZV9lbjsK IAlpbnQgdmFsOwogCWludCByZXQ7Ci0KKyAgICBpbnQgc2xvdF9zaXplOworCW11dGV4X2xvY2so JnRhczI3eHgtPmNvZGVjX2xvY2spOwogCXN3aXRjaCAoYml0d2lkdGgpIHsKLQljYXNlIFNORFJW X1BDTV9GT1JNQVRfUzE2X0xFOgotCQlyZXQgPSBzbmRfc29jX2NvbXBvbmVudF91cGRhdGVfYml0 cyhjb21wb25lbnQsCi0JCQkJCQkgICAgVEFTMjc2NF9URE1fQ0ZHMiwKLQkJCQkJCSAgICBUQVMy NzY0X1RETV9DRkcyX1JYV19NQVNLLAotCQkJCQkJICAgIFRBUzI3NjRfVERNX0NGRzJfUlhXXzE2 QklUUyk7Ci0JCWJyZWFrOwotCWNhc2UgU05EUlZfUENNX0ZPUk1BVF9TMjRfTEU6Ci0JCXJldCA9 IHNuZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9iaXRzKGNvbXBvbmVudCwKLQkJCQkJCSAgICBUQVMy NzY0X1RETV9DRkcyLAotCQkJCQkJICAgIFRBUzI3NjRfVERNX0NGRzJfUlhXX01BU0ssCi0JCQkJ CQkgICAgVEFTMjc2NF9URE1fQ0ZHMl9SWFdfMjRCSVRTKTsKLQkJYnJlYWs7Ci0JY2FzZSBTTkRS Vl9QQ01fRk9STUFUX1MzMl9MRToKLQkJcmV0ID0gc25kX3NvY19jb21wb25lbnRfdXBkYXRlX2Jp dHMoY29tcG9uZW50LAotCQkJCQkJICAgIFRBUzI3NjRfVERNX0NGRzIsCi0JCQkJCQkgICAgVEFT Mjc2NF9URE1fQ0ZHMl9SWFdfTUFTSywKLQkJCQkJCSAgICBUQVMyNzY0X1RETV9DRkcyX1JYV18z MkJJVFMpOwotCQlicmVhazsKLQotCWRlZmF1bHQ6Ci0JCXJldHVybiAtRUlOVkFMOworCQljYXNl IFNORFJWX1BDTV9GT1JNQVRfUzE2X0xFOgorCQkJcmV0ID0gc25kX3NvY19jb21wb25lbnRfdXBk YXRlX2JpdHMoY29tcG9uZW50LAorCQkJCQkJCSAgICBUQVMyNzY0X1RETV9DRkcyLAorCQkJCQkJ CSAgICBUQVMyNzY0X1RETV9DRkcyX1JYV19NQVNLLAorCQkJCQkJCSAgICBUQVMyNzY0X1RETV9D RkcyX1JYV18xNkJJVFMpOworCSAgICAgICAgc2xvdF9zaXplID0gVEFTMjc2NF9URE1fQ0ZHMl9S WFNfMTZCSVRTOworCQkJYnJlYWs7CisJCWNhc2UgU05EUlZfUENNX0ZPUk1BVF9TMjRfTEU6CisJ CQlyZXQgPSBzbmRfc29jX2NvbXBvbmVudF91cGRhdGVfYml0cyhjb21wb25lbnQsCisJCQkJCQkJ ICAgIFRBUzI3NjRfVERNX0NGRzIsCisJCQkJCQkJICAgIFRBUzI3NjRfVERNX0NGRzJfUlhXX01B U0ssCisJCQkJCQkJICAgIFRBUzI3NjRfVERNX0NGRzJfUlhXXzI0QklUUyk7CisJCQlzbG90X3Np emUgPSBUQVMyNzY0X1RETV9DRkcyX1JYU18yNEJJVFM7CisJCQlicmVhazsKKwkJY2FzZSBTTkRS Vl9QQ01fRk9STUFUX1MzMl9MRToKKwkJCXJldCA9IHNuZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9i aXRzKGNvbXBvbmVudCwKKwkJCQkJCQkgICAgVEFTMjc2NF9URE1fQ0ZHMiwKKwkJCQkJCQkgICAg VEFTMjc2NF9URE1fQ0ZHMl9SWFdfTUFTSywKKwkJCQkJCQkgICAgVEFTMjc2NF9URE1fQ0ZHMl9S WFdfMzJCSVRTKTsKKwkJCXNsb3Rfc2l6ZSA9IFRBUzI3NjRfVERNX0NGRzJfUlhTXzMyQklUUzsK KwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJcmV0ID0gLUVJTlZBTDsKKwl9CisKKwlpZiAocmV0 IDwgMCkgeworCQlwcl9lcnIoIiVzOiV1OmVyckNvZGU6MHgleCBzZXQgYml0d2lkdGggZXJyb3Jc biIsCisJCQlfX2Z1bmNfXywgX19MSU5FX18sIHJldCk7CisJCWdvdG8gRVhJVDsKIAl9CiAKLQlp ZiAocmV0IDwgMCkKLQkJcmV0dXJuIHJldDsKLQotCXZhbCA9IHNuZF9zb2NfY29tcG9uZW50X3Jl YWQodGFzMjc2NC0+Y29tcG9uZW50LCBUQVMyNzY0X1BXUl9DVFJMKTsKLQlpZiAodmFsIDwgMCkK LQkJcmV0dXJuIHZhbDsKKwlyZXQgPSBzbmRfc29jX2NvbXBvbmVudF91cGRhdGVfYml0cyhjb21w b25lbnQsIFRBUzI3NjRfVERNX0NGRzIsCisJCQkJCSAgICBUQVMyNzY0X1RETV9DRkcyX1JYU19N QVNLLAorCQkJCQkgICAgc2xvdF9zaXplKTsKKwlpZiAocmV0IDwgMCkgeworCQlwcl9lcnIoIiVz OiV1OmVyckNvZGU6MHgleCBzZXQgUlggc2xvdCBzaXplIGVycm9yXG4iLAorCQkJX19mdW5jX18s IF9fTElORV9fLCByZXQpOworCQlnb3RvIEVYSVQ7CisJfQorI2lmIEtFUk5FTF9WRVJTSU9OKDQs IDE5LCA5NCkgPj0gTElOVVhfVkVSU0lPTl9DT0RFCisJc25kX3NvY19jb21wb25lbnRfcmVhZCh0 YXMyN3h4LT5jb21wb25lbnQsIFRBUzI3NjRfUFdSX0NUUkwsICZ2YWwpOworI2Vsc2UKKwl2YWwg PSBzbmRfc29jX2NvbXBvbmVudF9yZWFkKHRhczI3eHgtPmNvbXBvbmVudCwgVEFTMjc2NF9QV1Jf Q1RSTCk7CisjZW5kaWYKKwlpZiAodmFsIDwgMCkgeworCQlwcl9lcnIoIiVzOiV1OmVyckNvZGU6 MHgleCByZWFkIFBXUl9DVFJMIGVycm9yXG4iLAorCQkJX19mdW5jX18sIF9fTElORV9fLCB2YWwp OworCQlyZXQgPSB2YWw7CisJCWdvdG8gRVhJVDsKKwl9CiAKIAlpZiAodmFsICYgKDEgPDwgVEFT Mjc2NF9WU0VOU0VfUE9XRVJfRU4pKQogCQlzZW5zZV9lbiA9IDA7CiAJZWxzZQogCQlzZW5zZV9l biA9IFRBUzI3NjRfVERNX0NGRzVfVlNOU19FTkFCTEU7CiAKLQlyZXQgPSBzbmRfc29jX2NvbXBv bmVudF91cGRhdGVfYml0cyh0YXMyNzY0LT5jb21wb25lbnQsIFRBUzI3NjRfVERNX0NGRzUsCisJ cmV0ID0gc25kX3NvY19jb21wb25lbnRfdXBkYXRlX2JpdHModGFzMjd4eC0+Y29tcG9uZW50LCBU QVMyNzY0X1RETV9DRkc1LAogCQkJCQkgICAgVEFTMjc2NF9URE1fQ0ZHNV9WU05TX0VOQUJMRSwK IAkJCQkJICAgIHNlbnNlX2VuKTsKLQlpZiAocmV0IDwgMCkKLQkJcmV0dXJuIHJldDsKKwlpZiAo cmV0IDwgMCkgeworCQlwcl9lcnIoIiVzOiV1OmVyckNvZGU6MHgleCBlbmFibGUgdlNOUyBlcnJv clxuIiwKKwkJCV9fZnVuY19fLCBfX0xJTkVfXywgcmV0KTsKKwkJZ290byBFWElUOworCX0KIAog CWlmICh2YWwgJiAoMSA8PCBUQVMyNzY0X0lTRU5TRV9QT1dFUl9FTikpCiAJCXNlbnNlX2VuID0g MDsKIAllbHNlCiAJCXNlbnNlX2VuID0gVEFTMjc2NF9URE1fQ0ZHNl9JU05TX0VOQUJMRTsKIAot CXJldCA9IHNuZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9iaXRzKHRhczI3NjQtPmNvbXBvbmVudCwg VEFTMjc2NF9URE1fQ0ZHNiwKKwlyZXQgPSBzbmRfc29jX2NvbXBvbmVudF91cGRhdGVfYml0cyh0 YXMyN3h4LT5jb21wb25lbnQsIFRBUzI3NjRfVERNX0NGRzYsCiAJCQkJCSAgICBUQVMyNzY0X1RE TV9DRkc2X0lTTlNfRU5BQkxFLAogCQkJCQkgICAgc2Vuc2VfZW4pOwotCWlmIChyZXQgPCAwKQot CQlyZXR1cm4gcmV0OwotCi0JcmV0dXJuIDA7CisJaWYgKHJldCA8IDApIHsKKwkJcHJfZXJyKCIl czoldTplcnJDb2RlOjB4JXggZW5hYmxlIGlTTlMgZXJyb3JcbiIsCisJCQlfX2Z1bmNfXywgX19M SU5FX18sIHJldCk7CisJfQorCXJldCA9IDA7CitFWElUOgorCW11dGV4X3VubG9jaygmdGFzMjd4 eC0+Y29kZWNfbG9jayk7CisJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGludCB0YXMyNzY0X3Nl dF9zYW1wbGVyYXRlKHN0cnVjdCB0YXMyNzY0X3ByaXYgKnRhczI3NjQsIGludCBzYW1wbGVyYXRl KQorc3RhdGljIGludCB0YXMyN3h4X3NldF9zYW1wbGVyYXRlKHN0cnVjdCB0YXMyN3h4X3ByaXYg KnRhczI3eHgsIGludCBzYW1wbGVyYXRlKQogewotCXN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAq Y29tcG9uZW50ID0gdGFzMjc2NC0+Y29tcG9uZW50OworCXN0cnVjdCBzbmRfc29jX2NvbXBvbmVu dCAqY29tcG9uZW50ID0gdGFzMjd4eC0+Y29tcG9uZW50OwogCWludCByYW1wX3JhdGVfdmFsOwog CWludCByZXQ7CiAKQEAgLTI5OSwzOSArMzczLDQ0IEBAIHN0YXRpYyBpbnQgdGFzMjc2NF9zZXRf c2FtcGxlcmF0ZShzdHJ1Y3QKIAlkZWZhdWx0OgogCQlyZXR1cm4gLUVJTlZBTDsKIAl9Ci0KKwlt dXRleF9sb2NrKCZ0YXMyN3h4LT5jb2RlY19sb2NrKTsKIAlyZXQgPSBzbmRfc29jX2NvbXBvbmVu dF91cGRhdGVfYml0cyhjb21wb25lbnQsIFRBUzI3NjRfVERNX0NGRzAsCiAJCQkJCSAgICBUQVMy NzY0X1RETV9DRkcwX1NNUF9NQVNLIHwKIAkJCQkJICAgIFRBUzI3NjRfVERNX0NGRzBfTUFTSywK IAkJCQkJICAgIHJhbXBfcmF0ZV92YWwpOwotCWlmIChyZXQgPCAwKQotCQlyZXR1cm4gcmV0Owot Ci0JcmV0dXJuIDA7CisJaWYgKHJldCA8IDApIHsKKwkJcHJfZXJyKCIlczoldTplcnJDb2RlOjB4 JXggRmFpbGVkIHRvIHNldCByYW1wX3JhdGVfdmFsXG4iLAorCQkJX19mdW5jX18sIF9fTElORV9f LCByZXQpOworCQlnb3RvIEVYSVQ7CisJfQorCXJldCA9IDA7CitFWElUOgorCW11dGV4X3VubG9j aygmdGFzMjd4eC0+Y29kZWNfbG9jayk7CisJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGludCB0 YXMyNzY0X2h3X3BhcmFtcyhzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwKK3N0 YXRpYyBpbnQgdGFzMjd4eF9od19wYXJhbXMoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJz dHJlYW0sCiAJCQkgICAgIHN0cnVjdCBzbmRfcGNtX2h3X3BhcmFtcyAqcGFyYW1zLAogCQkJICAg ICBzdHJ1Y3Qgc25kX3NvY19kYWkgKmRhaSkKIHsKIAlzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQg KmNvbXBvbmVudCA9IGRhaS0+Y29tcG9uZW50OwotCXN0cnVjdCB0YXMyNzY0X3ByaXYgKnRhczI3 NjQgPSBzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjb21wb25lbnQpOworCXN0cnVjdCB0 YXMyN3h4X3ByaXYgKnRhczI3eHggPSBzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjb21w b25lbnQpOwogCWludCByZXQ7CiAKLQlyZXQgPSB0YXMyNzY0X3NldF9iaXR3aWR0aCh0YXMyNzY0 LCBwYXJhbXNfZm9ybWF0KHBhcmFtcykpOworCXJldCA9IHRhczI3eHhfc2V0X2JpdHdpZHRoKHRh czI3eHgsIHBhcmFtc19mb3JtYXQocGFyYW1zKSk7CiAJaWYgKHJldCA8IDApCiAJCXJldHVybiBy ZXQ7CiAKLQlyZXR1cm4gdGFzMjc2NF9zZXRfc2FtcGxlcmF0ZSh0YXMyNzY0LCBwYXJhbXNfcmF0 ZShwYXJhbXMpKTsKKwlyZXR1cm4gdGFzMjd4eF9zZXRfc2FtcGxlcmF0ZSh0YXMyN3h4LCBwYXJh bXNfcmF0ZShwYXJhbXMpKTsKIH0KIAotc3RhdGljIGludCB0YXMyNzY0X3NldF9mbXQoc3RydWN0 IHNuZF9zb2NfZGFpICpkYWksIHVuc2lnbmVkIGludCBmbXQpCitzdGF0aWMgaW50IHRhczI3eHhf c2V0X2ZtdChzdHJ1Y3Qgc25kX3NvY19kYWkgKmRhaSwgdW5zaWduZWQgaW50IGZtdCkKIHsKIAlz dHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNvbXBvbmVudCA9IGRhaS0+Y29tcG9uZW50OwotCXN0 cnVjdCB0YXMyNzY0X3ByaXYgKnRhczI3NjQgPSBzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0 YShjb21wb25lbnQpOworCXN0cnVjdCB0YXMyN3h4X3ByaXYgKnRhczI3eHggPSBzbmRfc29jX2Nv bXBvbmVudF9nZXRfZHJ2ZGF0YShjb21wb25lbnQpOwogCXU4IHRkbV9yeF9zdGFydF9zbG90ID0g MCwgYXNpX2NmZ18xID0gMDsKIAlpbnQgaWZhY2U7Ci0JaW50IHJldDsKKwlpbnQgcmV0ID0gMDsK IAogCXN3aXRjaCAoZm10ICYgU05EX1NPQ19EQUlGTVRfSU5WX01BU0spIHsKIAljYXNlIFNORF9T T0NfREFJRk1UX05CX05GOgpAQCAtMzQxLDU4ICs0MjAsNzAgQEAgc3RhdGljIGludCB0YXMyNzY0 X3NldF9mbXQoc3RydWN0IHNuZF9zbwogCQlhc2lfY2ZnXzEgPSBUQVMyNzY0X1RETV9DRkcxX1JY X0ZBTExJTkc7CiAJCWJyZWFrOwogCWRlZmF1bHQ6Ci0JCWRldl9lcnIodGFzMjc2NC0+ZGV2LCAi QVNJIGZvcm1hdCBJbnZlcnNlIGlzIG5vdCBmb3VuZFxuIik7CisJCWRldl9lcnIodGFzMjd4eC0+ ZGV2LCAiQVNJIGZvcm1hdCBJbnZlcnNlIGlzIG5vdCBmb3VuZFxuIik7CiAJCXJldHVybiAtRUlO VkFMOwogCX0KLQorCW11dGV4X2xvY2soJnRhczI3eHgtPmNvZGVjX2xvY2spOwogCXJldCA9IHNu ZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9iaXRzKGNvbXBvbmVudCwgVEFTMjc2NF9URE1fQ0ZHMSwK IAkJCQkJICAgIFRBUzI3NjRfVERNX0NGRzFfUlhfTUFTSywKIAkJCQkJICAgIGFzaV9jZmdfMSk7 Ci0JaWYgKHJldCA8IDApCi0JCXJldHVybiByZXQ7CisJaWYgKHJldCA8IDApIHsKKwkJcHJfZXJy KCIlczoldTplcnJDb2RlOjB4JXggRmFpbGVkIHRvIHNldCBhc2lfY2ZnXzFcbiIsCisJCQlfX2Z1 bmNfXywgX19MSU5FX18sIHJldCk7CisJCWdvdG8gRVhJVDsKKwl9CiAKIAlzd2l0Y2ggKGZtdCAm IFNORF9TT0NfREFJRk1UX0ZPUk1BVF9NQVNLKSB7Ci0JY2FzZSBTTkRfU09DX0RBSUZNVF9JMlM6 Ci0JY2FzZSBTTkRfU09DX0RBSUZNVF9EU1BfQToKLQkJaWZhY2UgPSBUQVMyNzY0X1RETV9DRkcy X1NDRkdfSTJTOwotCQl0ZG1fcnhfc3RhcnRfc2xvdCA9IDE7Ci0JCWJyZWFrOwotCWNhc2UgU05E X1NPQ19EQUlGTVRfRFNQX0I6Ci0JY2FzZSBTTkRfU09DX0RBSUZNVF9MRUZUX0o6Ci0JCWlmYWNl ID0gVEFTMjc2NF9URE1fQ0ZHMl9TQ0ZHX0xFRlRfSjsKLQkJdGRtX3J4X3N0YXJ0X3Nsb3QgPSAw OwotCQlicmVhazsKLQlkZWZhdWx0OgotCQlkZXZfZXJyKHRhczI3NjQtPmRldiwKLQkJCSJEQUkg Rm9ybWF0IGlzIG5vdCBmb3VuZCwgZm10PTB4JXhcbiIsIGZtdCk7Ci0JCXJldHVybiAtRUlOVkFM OworCQljYXNlIFNORF9TT0NfREFJRk1UX0kyUzoKKwkJY2FzZSBTTkRfU09DX0RBSUZNVF9EU1Bf QToKKwkJCWlmYWNlID0gVEFTMjc2NF9URE1fQ0ZHMl9TQ0ZHX0kyUzsKKwkJCXRkbV9yeF9zdGFy dF9zbG90ID0gMTsKKwkJCWJyZWFrOworCQljYXNlIFNORF9TT0NfREFJRk1UX0RTUF9COgorCQlj YXNlIFNORF9TT0NfREFJRk1UX0xFRlRfSjoKKwkJCWlmYWNlID0gVEFTMjc2NF9URE1fQ0ZHMl9T Q0ZHX0xFRlRfSjsKKwkJCXRkbV9yeF9zdGFydF9zbG90ID0gMDsKKwkJCWJyZWFrOworCQlkZWZh dWx0OgorCQkJcHJfZXJyKCIlczoldTpEQUkgRm9ybWF0IGlzIG5vdCBmb3VuZCwgZm10PTB4JXhc biIsCisJCQkJX19mdW5jX18sIF9fTElORV9fLCBmbXQpOworCQkJcmV0ID0gLUVJTlZBTDsKKwkJ CWdvdG8gRVhJVDsKIAl9CiAKIAlyZXQgPSBzbmRfc29jX2NvbXBvbmVudF91cGRhdGVfYml0cyhj b21wb25lbnQsIFRBUzI3NjRfVERNX0NGRzEsCiAJCQkJCSAgICBUQVMyNzY0X1RETV9DRkcxX01B U0ssCiAJCQkJCSAgICAodGRtX3J4X3N0YXJ0X3Nsb3QgPDwgVEFTMjc2NF9URE1fQ0ZHMV81MV9T SElGVCkpOwotCWlmIChyZXQgPCAwKQotCQlyZXR1cm4gcmV0OworCWlmIChyZXQgPCAwKSB7CisJ CXByX2VycigiJXM6JXU6ZXJyQ29kZToweCV4IEZhaWxlZCB0byBzZXQgdGRtX3J4X3N0YXJ0X3Ns b3RcbiIsCisJCQlfX2Z1bmNfXywgX19MSU5FX18sIHJldCk7CisJCWdvdG8gRVhJVDsKKwl9CiAK IAlyZXQgPSBzbmRfc29jX2NvbXBvbmVudF91cGRhdGVfYml0cyhjb21wb25lbnQsIFRBUzI3NjRf VERNX0NGRzIsCiAJCQkJCSAgICBUQVMyNzY0X1RETV9DRkcyX1NDRkdfTUFTSywgaWZhY2UpOwot CWlmIChyZXQgPCAwKQotCQlyZXR1cm4gcmV0OwotCi0JcmV0dXJuIDA7CisJaWYgKHJldCA8IDAp IHsKKwkJcHJfZXJyKCIlczoldTplcnJDb2RlOjB4JXggRmFpbGVkIHRvIHNldCBpZmFjZVxuIiwK KwkJCV9fZnVuY19fLCBfX0xJTkVfXywgcmV0KTsKKwkJZ290byBFWElUOworCX0KKwlyZXQgPSAw OworRVhJVDoKKwltdXRleF91bmxvY2soJnRhczI3eHgtPmNvZGVjX2xvY2spOworCXJldHVybiBy ZXQ7CiB9CiAKLXN0YXRpYyBpbnQgdGFzMjc2NF9zZXRfZGFpX3RkbV9zbG90KHN0cnVjdCBzbmRf c29jX2RhaSAqZGFpLAorc3RhdGljIGludCB0YXMyN3h4X3NldF9kYWlfdGRtX3Nsb3Qoc3RydWN0 IHNuZF9zb2NfZGFpICpkYWksCiAJCQkJdW5zaWduZWQgaW50IHR4X21hc2ssCiAJCQkJdW5zaWdu ZWQgaW50IHJ4X21hc2ssCiAJCQkJaW50IHNsb3RzLCBpbnQgc2xvdF93aWR0aCkKIHsKIAlzdHJ1 Y3Qgc25kX3NvY19jb21wb25lbnQgKmNvbXBvbmVudCA9IGRhaS0+Y29tcG9uZW50OwotCXN0cnVj dCB0YXMyNzY0X3ByaXYgKnRhczI3NjQgPSBzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShj b21wb25lbnQpOworCXN0cnVjdCB0YXMyN3h4X3ByaXYgKnRhczI3eHggPSBzbmRfc29jX2NvbXBv bmVudF9nZXRfZHJ2ZGF0YShjb21wb25lbnQpOwogCWludCBsZWZ0X3Nsb3QsIHJpZ2h0X3Nsb3Q7 CiAJaW50IHNsb3RzX2NmZzsKIAlpbnQgc2xvdF9zaXplOwotCWludCByZXQ7CisJaW50IHJldCA9 IDA7CiAKIAlpZiAodHhfbWFzayA9PSAwIHx8IHJ4X21hc2sgIT0gMCkKIAkJcmV0dXJuIC1FSU5W QUw7CkBAIC00MTcsMTAgKzUwOCwxMyBAQCBzdGF0aWMgaW50IHRhczI3NjRfc2V0X2RhaV90ZG1f c2xvdChzdHJ1CiAJCXJldHVybiAtRUlOVkFMOwogCiAJc2xvdHNfY2ZnID0gKHJpZ2h0X3Nsb3Qg PDwgVEFTMjc2NF9URE1fQ0ZHM19SWFNfU0hJRlQpIHwgbGVmdF9zbG90OwotCisJbXV0ZXhfbG9j aygmdGFzMjd4eC0+Y29kZWNfbG9jayk7CiAJcmV0ID0gc25kX3NvY19jb21wb25lbnRfd3JpdGUo Y29tcG9uZW50LCBUQVMyNzY0X1RETV9DRkczLCBzbG90c19jZmcpOwotCWlmIChyZXQpCi0JCXJl dHVybiByZXQ7CisJaWYgKHJldCkgeworCQlwcl9lcnIoIiVzOiV1OmVyckNvZGU6MHgleCBGYWls ZWQgdG8gc2V0IHNsb3RzX2NmZ1xuIiwKKwkJCV9fZnVuY19fLCBfX0xJTkVfXywgcmV0KTsKKwkJ Z290byBFWElUOworCX0KIAogCXN3aXRjaCAoc2xvdF93aWR0aCkgewogCWNhc2UgMTY6CkBAIC00 MzMsMzYgKzUyNyw1MCBAQCBzdGF0aWMgaW50IHRhczI3NjRfc2V0X2RhaV90ZG1fc2xvdChzdHJ1 CiAJCXNsb3Rfc2l6ZSA9IFRBUzI3NjRfVERNX0NGRzJfUlhTXzMyQklUUzsKIAkJYnJlYWs7CiAJ ZGVmYXVsdDoKLQkJcmV0dXJuIC1FSU5WQUw7CisJCXJldCA9IC1FSU5WQUw7CisJCWdvdG8gRVhJ VDsKIAl9CiAKIAlyZXQgPSBzbmRfc29jX2NvbXBvbmVudF91cGRhdGVfYml0cyhjb21wb25lbnQs IFRBUzI3NjRfVERNX0NGRzIsCiAJCQkJCSAgICBUQVMyNzY0X1RETV9DRkcyX1JYU19NQVNLLAog CQkJCQkgICAgc2xvdF9zaXplKTsKLQlpZiAocmV0IDwgMCkKLQkJcmV0dXJuIHJldDsKKwlpZiAo cmV0IDwgMCkgeworCQlwcl9lcnIoIiVzOiV1OmVyckNvZGU6MHgleCBGYWlsZWQgdG8gc2V0IHNs b3Rfc2l6ZVxuIiwKKwkJCV9fZnVuY19fLCBfX0xJTkVfXywgcmV0KTsKKwkJZ290byBFWElUOwor CX0KIAogCXJldCA9IHNuZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9iaXRzKGNvbXBvbmVudCwgVEFT Mjc2NF9URE1fQ0ZHNSwKIAkJCQkJICAgIFRBUzI3NjRfVERNX0NGRzVfNTBfTUFTSywKLQkJCQkJ ICAgIHRhczI3NjQtPnZfc2Vuc2Vfc2xvdCk7Ci0JaWYgKHJldCA8IDApCi0JCXJldHVybiByZXQ7 CisJCQkJCSAgICB0YXMyN3h4LT52X3NlbnNlX3Nsb3QpOworCWlmIChyZXQgPCAwKSB7CisJCXBy X2VycigiJXM6JXU6ZXJyQ29kZToweCV4IEZhaWxlZCB0byBzZXQgdl9zZW5zZV9zbG90XG4iLAor CQkJX19mdW5jX18sIF9fTElORV9fLCByZXQpOworCQlnb3RvIEVYSVQ7CisJfQogCiAJcmV0ID0g c25kX3NvY19jb21wb25lbnRfdXBkYXRlX2JpdHMoY29tcG9uZW50LCBUQVMyNzY0X1RETV9DRkc2 LAogCQkJCQkgICAgVEFTMjc2NF9URE1fQ0ZHNl81MF9NQVNLLAotCQkJCQkgICAgdGFzMjc2NC0+ aV9zZW5zZV9zbG90KTsKLQlpZiAocmV0IDwgMCkKLQkJcmV0dXJuIHJldDsKLQotCXJldHVybiAw OworCQkJCQkgICAgdGFzMjd4eC0+aV9zZW5zZV9zbG90KTsKKwlpZiAocmV0IDwgMCkgeworCQlw cl9lcnIoIiVzOiV1OmVyckNvZGU6MHgleCBGYWlsZWQgdG8gc2V0IGlfc2Vuc2Vfc2xvdFxuIiwK KwkJCV9fZnVuY19fLCBfX0xJTkVfXywgcmV0KTsKKwkJZ290byBFWElUOworCX0KKwlyZXQgPSAw OworRVhJVDoKKwltdXRleF91bmxvY2soJnRhczI3eHgtPmNvZGVjX2xvY2spOworCXJldHVybiBy ZXQ7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX3NvY19kYWlfb3BzIHRhczI3NjRfZGFp X29wcyA9IHsKLQkubXV0ZV9zdHJlYW0gPSB0YXMyNzY0X211dGUsCi0JLmh3X3BhcmFtcyAgPSB0 YXMyNzY0X2h3X3BhcmFtcywKLQkuc2V0X2ZtdCAgICA9IHRhczI3NjRfc2V0X2ZtdCwKLQkuc2V0 X3RkbV9zbG90ID0gdGFzMjc2NF9zZXRfZGFpX3RkbV9zbG90LAorCS5tdXRlX3N0cmVhbSA9IHRh czI3eHhfbXV0ZSwKKwkuaHdfcGFyYW1zICA9IHRhczI3eHhfaHdfcGFyYW1zLAorCS5zZXRfZm10 ICAgID0gdGFzMjd4eF9zZXRfZm10LAorCS5zZXRfdGRtX3Nsb3QgPSB0YXMyN3h4X3NldF9kYWlf dGRtX3Nsb3QsCisjaWYgS0VSTkVMX1ZFUlNJT04oNCwgMTksIDk0KSA8IExJTlVYX1ZFUlNJT05f Q09ERQogCS5ub19jYXB0dXJlX211dGUgPSAxLAorI2VuZGlmCiB9OwogCiAjZGVmaW5lIFRBUzI3 NjRfRk9STUFUUyAoU05EUlZfUENNX0ZNVEJJVF9TMTZfTEUgfCBTTkRSVl9QQ01fRk1UQklUX1My MF8zTEUgfFwKQEAgLTQ4NCw0NSArNTkyLDYzIEBAIHN0YXRpYyBzdHJ1Y3Qgc25kX3NvY19kYWlf ZHJpdmVyIHRhczI3NjQKIAkJfSwKIAkJLmNhcHR1cmUgPSB7CiAJCQkuc3RyZWFtX25hbWUgICAg PSAiQVNJMSBDYXB0dXJlIiwKLQkJCS5jaGFubmVsc19taW4gICA9IDAsCisJCQkuY2hhbm5lbHNf bWluICAgPSAxLAogCQkJLmNoYW5uZWxzX21heCAgID0gMiwKIAkJCS5yYXRlcyA9IFRBUzI3NjRf UkFURVMsCiAJCQkuZm9ybWF0cyA9IFRBUzI3NjRfRk9STUFUUywKIAkJfSwKIAkJLm9wcyA9ICZ0 YXMyNzY0X2RhaV9vcHMsCi0JCS5zeW1tZXRyaWNfcmF0ZSA9IDEsCisjaWYgS0VSTkVMX1ZFUlNJ T04oNCwgMTksIDk0KSA8IExJTlVYX1ZFUlNJT05fQ09ERQorCQkuc3ltbWV0cmljX3JhdGVzID0g MSwKKyNlbmRpZgogCX0sCiB9OwogCi1zdGF0aWMgaW50IHRhczI3NjRfY29kZWNfcHJvYmUoc3Ry dWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb21wb25lbnQpCitzdGF0aWMgaW50IHRhczI3eHhfY29k ZWNfcHJvYmUoc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb21wb25lbnQpCiB7Ci0Jc3RydWN0 IHRhczI3NjRfcHJpdiAqdGFzMjc2NCA9IHNuZF9zb2NfY29tcG9uZW50X2dldF9kcnZkYXRhKGNv bXBvbmVudCk7Ci0JaW50IHJldDsKKwlzdHJ1Y3QgdGFzMjd4eF9wcml2ICp0YXMyN3h4ID0gc25k X3NvY19jb21wb25lbnRfZ2V0X2RydmRhdGEoY29tcG9uZW50KTsKKwlpbnQgcmV0ID0gMDsKIAot CXRhczI3NjQtPmNvbXBvbmVudCA9IGNvbXBvbmVudDsKKwl0YXMyN3h4LT5jb21wb25lbnQgPSBj b21wb25lbnQ7CiAKLQlpZiAodGFzMjc2NC0+c2R6X2dwaW8pCi0JCWdwaW9kX3NldF92YWx1ZV9j YW5zbGVlcCh0YXMyNzY0LT5zZHpfZ3BpbywgMSk7CisJaWYgKHRhczI3eHgtPnNkel9ncGlvKQor CQlncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAodGFzMjd4eC0+c2R6X2dwaW8sIDEpOwogCi0JdGFz Mjc2NF9yZXNldCh0YXMyNzY0KTsKKwl0YXMyN3h4X3Jlc2V0KHRhczI3eHgpOwogCi0JcmV0ID0g c25kX3NvY19jb21wb25lbnRfdXBkYXRlX2JpdHModGFzMjc2NC0+Y29tcG9uZW50LCBUQVMyNzY0 X1RETV9DRkc1LAorCXJldCA9IHNuZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9iaXRzKGNvbXBvbmVu dCwgVEFTMjc2NF9URE1fQ0ZHNSwKIAkJCQkJICAgIFRBUzI3NjRfVERNX0NGRzVfVlNOU19FTkFC TEUsIDApOwotCWlmIChyZXQgPCAwKQotCQlyZXR1cm4gcmV0OwotCi0JcmV0ID0gc25kX3NvY19j b21wb25lbnRfdXBkYXRlX2JpdHModGFzMjc2NC0+Y29tcG9uZW50LCBUQVMyNzY0X1RETV9DRkc2 LAorCWlmIChyZXQgPCAwKSB7CisJCWRldl9lcnIodGFzMjd4eC0+ZGV2LCAiJXM6JXU6IEZhaWxl ZCB0byBlbmFibGUgdlNOU1xuIiwKKwkJCV9fZnVuY19fLCBfX0xJTkVfXyk7CisJCWdvdG8gRVhJ VDsKKwl9CisJcmV0ID0gc25kX3NvY19jb21wb25lbnRfdXBkYXRlX2JpdHMoY29tcG9uZW50LCBU QVMyNzY0X1RETV9DRkc2LAogCQkJCQkgICAgVEFTMjc2NF9URE1fQ0ZHNl9JU05TX0VOQUJMRSwg MCk7Ci0JaWYgKHJldCA8IDApCi0JCXJldHVybiByZXQ7Ci0KKwlpZiAocmV0IDwgMCkgeworCQlk ZXZfZXJyKHRhczI3eHgtPmRldiwgIiVzOiV1OiBGYWlsZWQgdG8gZW5hYmxlIGlTTlNcbiIsCisJ CQlfX2Z1bmNfXywgX19MSU5FX18pOworCQlnb3RvIEVYSVQ7CisJfQogCXJldCA9IHNuZF9zb2Nf Y29tcG9uZW50X3VwZGF0ZV9iaXRzKGNvbXBvbmVudCwgVEFTMjc2NF9QV1JfQ1RSTCwKIAkJCQkJ ICAgIFRBUzI3NjRfUFdSX0NUUkxfTUFTSywKIAkJCQkJICAgIFRBUzI3NjRfUFdSX0NUUkxfTVVU RSk7Ci0JaWYgKHJldCA8IDApCi0JCXJldHVybiByZXQ7Ci0KLQlyZXR1cm4gMDsKKwlpZiAocmV0 IDwgMCkgeworCQlkZXZfZXJyKHRhczI3eHgtPmRldiwgIiVzOiV1OiBGYWlsZWQgdG8gUFdSX0NU UkxfTVVURVxuIiwKKwkJCV9fZnVuY19fLCBfX0xJTkVfXyk7CisJCWdvdG8gRVhJVDsKKwl9CisK KwlyZXQgPSBzbmRfc29jX2NvbXBvbmVudF93cml0ZShjb21wb25lbnQsIFRBUzI3NjRfUFdSX0NU UkwsIDB4MDIpOworCisJaWYgKHJldCA8IDApIHsKKwkJZGV2X2Vycih0YXMyN3h4LT5kZXYsICIl czoldTogRmFpbGVkIHRvIGluaXRpYWwgYWN0aXZlXG4iLAorCQkJX19mdW5jX18sIF9fTElORV9f KTsKKwkJZ290byBFWElUOworCX0KKwlyZXQgPSAwOworRVhJVDoKKwlyZXR1cm4gcmV0OwogfQog CiBzdGF0aWMgREVDTEFSRV9UTFZfREJfU0NBTEUodGFzMjc2NF9kaWdpdGFsX3RsdiwgMTEwMCwg NTAsIDApOwpAQCAtNTM2LDEwICs2NjIsMTIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfa2Nv bnRyb2xfbmV3IHRhcwogfTsKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfc29jX2NvbXBvbmVu dF9kcml2ZXIgc29jX2NvbXBvbmVudF9kcml2ZXJfdGFzMjc2NCA9IHsKLQkucHJvYmUJCQk9IHRh czI3NjRfY29kZWNfcHJvYmUsCi0JLnN1c3BlbmQJCT0gdGFzMjc2NF9jb2RlY19zdXNwZW5kLAot CS5yZXN1bWUJCQk9IHRhczI3NjRfY29kZWNfcmVzdW1lLAotCS5zZXRfYmlhc19sZXZlbAkJPSB0 YXMyNzY0X3NldF9iaWFzX2xldmVsLAorCS5wcm9iZQkJCT0gdGFzMjd4eF9jb2RlY19wcm9iZSwK KyNpZmRlZiBDT05GSUdfUE0JCQorCS5zdXNwZW5kCQk9IHRhczI3eHhfY29kZWNfc3VzcGVuZCwK KwkucmVzdW1lCQkJPSB0YXMyN3h4X2NvZGVjX3Jlc3VtZSwKKyNlbmRpZgkKKwkuc2V0X2JpYXNf bGV2ZWwJCT0gdGFzMjd4eF9zZXRfYmlhc19sZXZlbCwKIAkuY29udHJvbHMJCT0gdGFzMjc2NF9z bmRfY29udHJvbHMsCiAJLm51bV9jb250cm9scwkJPSBBUlJBWV9TSVpFKHRhczI3NjRfc25kX2Nv bnRyb2xzKSwKIAkuZGFwbV93aWRnZXRzCQk9IHRhczI3NjRfZGFwbV93aWRnZXRzLApAQCAtNTc2 LDYgKzcwNCwxMSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJlZ21hcF9yYW5nZV9jZmcgdGFzCiAJ fSwKIH07CiAKK3N0YXRpYyBib29sIHRhczI3eHhfdm9sYXRpbGUoc3RydWN0IGRldmljZSAqZGV2 LCB1bnNpZ25lZCBpbnQgcmVnKQoreworCQlyZXR1cm4gdHJ1ZTsKK30KKwogc3RhdGljIGNvbnN0 IHN0cnVjdCByZWdtYXBfY29uZmlnIHRhczI3NjRfaTJjX3JlZ21hcCA9IHsKIAkucmVnX2JpdHMg PSA4LAogCS52YWxfYml0cyA9IDgsCkBAIC01ODUsODIgKzcxOCw4NyBAQCBzdGF0aWMgY29uc3Qg c3RydWN0IHJlZ21hcF9jb25maWcgdGFzMjc2CiAJLnJhbmdlcyA9IHRhczI3NjRfcmVnbWFwX3Jh bmdlcywKIAkubnVtX3JhbmdlcyA9IEFSUkFZX1NJWkUodGFzMjc2NF9yZWdtYXBfcmFuZ2VzKSwK IAkubWF4X3JlZ2lzdGVyID0gMSAqIDEyOCwKKwkudm9sYXRpbGVfcmVnID0gdGFzMjd4eF92b2xh dGlsZSwKIH07CiAKLXN0YXRpYyBpbnQgdGFzMjc2NF9wYXJzZV9kdChzdHJ1Y3QgZGV2aWNlICpk ZXYsIHN0cnVjdCB0YXMyNzY0X3ByaXYgKnRhczI3NjQpCitzdGF0aWMgaW50IHRhczI3eHhfcGFy c2VfZHQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgdGFzMjd4eF9wcml2ICp0YXMyN3h4KQog ewogCWludCByZXQgPSAwOwogCi0JdGFzMjc2NC0+cmVzZXRfZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0 X29wdGlvbmFsKHRhczI3NjQtPmRldiwgInJlc2V0IiwKKwl0YXMyN3h4LT5yZXNldF9ncGlvID0g ZGV2bV9ncGlvZF9nZXRfb3B0aW9uYWwodGFzMjd4eC0+ZGV2LCAicmVzZXQiLAogCQkJCQkJICAg ICAgR1BJT0RfT1VUX0hJR0gpOwotCWlmIChJU19FUlIodGFzMjc2NC0+cmVzZXRfZ3BpbykpIHsK LQkJaWYgKFBUUl9FUlIodGFzMjc2NC0+cmVzZXRfZ3BpbykgPT0gLUVQUk9CRV9ERUZFUikgewot CQkJdGFzMjc2NC0+cmVzZXRfZ3BpbyA9IE5VTEw7CisJaWYgKElTX0VSUih0YXMyN3h4LT5yZXNl dF9ncGlvKSkgeworCQlpZiAoUFRSX0VSUih0YXMyN3h4LT5yZXNldF9ncGlvKSA9PSAtRVBST0JF X0RFRkVSKSB7CisJCQl0YXMyN3h4LT5yZXNldF9ncGlvID0gTlVMTDsKIAkJCXJldHVybiAtRVBS T0JFX0RFRkVSOwogCQl9CiAJfQogCi0JdGFzMjc2NC0+c2R6X2dwaW8gPSBkZXZtX2dwaW9kX2dl dF9vcHRpb25hbChkZXYsICJzaHV0ZG93biIsIEdQSU9EX09VVF9ISUdIKTsKLQlpZiAoSVNfRVJS KHRhczI3NjQtPnNkel9ncGlvKSkgewotCQlpZiAoUFRSX0VSUih0YXMyNzY0LT5zZHpfZ3Bpbykg PT0gLUVQUk9CRV9ERUZFUikKKwl0YXMyN3h4LT5zZHpfZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0X29w dGlvbmFsKGRldiwgInNodXRkb3duIiwgR1BJT0RfT1VUX0hJR0gpOworCWlmIChJU19FUlIodGFz Mjd4eC0+c2R6X2dwaW8pKSB7CisJCWlmIChQVFJfRVJSKHRhczI3eHgtPnNkel9ncGlvKSA9PSAt RVBST0JFX0RFRkVSKQogCQkJcmV0dXJuIC1FUFJPQkVfREVGRVI7CiAKLQkJdGFzMjc2NC0+c2R6 X2dwaW8gPSBOVUxMOworCQl0YXMyN3h4LT5zZHpfZ3BpbyA9IE5VTEw7CiAJfQogCiAJcmV0ID0g Zndub2RlX3Byb3BlcnR5X3JlYWRfdTMyKGRldi0+Zndub2RlLCAidGksaW1vbi1zbG90LW5vIiwK LQkJCQkgICAgICAgJnRhczI3NjQtPmlfc2Vuc2Vfc2xvdCk7CisJCQkJICAgICAgICZ0YXMyN3h4 LT5pX3NlbnNlX3Nsb3QpOwogCWlmIChyZXQpCi0JCXRhczI3NjQtPmlfc2Vuc2Vfc2xvdCA9IDA7 CisJCXRhczI3eHgtPmlfc2Vuc2Vfc2xvdCA9IDA7CiAKIAlyZXQgPSBmd25vZGVfcHJvcGVydHlf cmVhZF91MzIoZGV2LT5md25vZGUsICJ0aSx2bW9uLXNsb3Qtbm8iLAotCQkJCSAgICAgICAmdGFz Mjc2NC0+dl9zZW5zZV9zbG90KTsKKwkJCQkgICAgICAgJnRhczI3eHgtPnZfc2Vuc2Vfc2xvdCk7 CiAJaWYgKHJldCkKLQkJdGFzMjc2NC0+dl9zZW5zZV9zbG90ID0gMjsKKwkJdGFzMjd4eC0+dl9z ZW5zZV9zbG90ID0gMjsKIAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IHRhczI3NjRfaTJj X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsCitzdGF0aWMgaW50IHRhczI3eHhfaTJj X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsCiAJCQljb25zdCBzdHJ1Y3QgaTJjX2Rl dmljZV9pZCAqaWQpCiB7Ci0Jc3RydWN0IHRhczI3NjRfcHJpdiAqdGFzMjc2NDsKKwlzdHJ1Y3Qg dGFzMjd4eF9wcml2ICp0YXMyN3h4OwogCWludCByZXN1bHQ7CiAKLQl0YXMyNzY0ID0gZGV2bV9r emFsbG9jKCZjbGllbnQtPmRldiwgc2l6ZW9mKHN0cnVjdCB0YXMyNzY0X3ByaXYpLAorCXRhczI3 eHggPSBkZXZtX2t6YWxsb2MoJmNsaWVudC0+ZGV2LCBzaXplb2Yoc3RydWN0IHRhczI3eHhfcHJp diksCiAJCQkgICAgICAgR0ZQX0tFUk5FTCk7Ci0JaWYgKCF0YXMyNzY0KQorCWlmICghdGFzMjd4 eCkKIAkJcmV0dXJuIC1FTk9NRU07Ci0KLQl0YXMyNzY0LT5kZXYgPSAmY2xpZW50LT5kZXY7Ci0J aTJjX3NldF9jbGllbnRkYXRhKGNsaWVudCwgdGFzMjc2NCk7Ci0JZGV2X3NldF9kcnZkYXRhKCZj bGllbnQtPmRldiwgdGFzMjc2NCk7Ci0KLQl0YXMyNzY0LT5yZWdtYXAgPSBkZXZtX3JlZ21hcF9p bml0X2kyYyhjbGllbnQsICZ0YXMyNzY0X2kyY19yZWdtYXApOwotCWlmIChJU19FUlIodGFzMjc2 NC0+cmVnbWFwKSkgewotCQlyZXN1bHQgPSBQVFJfRVJSKHRhczI3NjQtPnJlZ21hcCk7CisJbXV0 ZXhfaW5pdCgmdGFzMjd4eC0+Y29kZWNfbG9jayk7CisJdGFzMjd4eC0+ZGV2ID0gJmNsaWVudC0+ ZGV2OworCWkyY19zZXRfY2xpZW50ZGF0YShjbGllbnQsIHRhczI3eHgpOworCWRldl9zZXRfZHJ2 ZGF0YSgmY2xpZW50LT5kZXYsIHRhczI3eHgpOworCisJdGFzMjd4eC0+cmVnbWFwID0gZGV2bV9y ZWdtYXBfaW5pdF9pMmMoY2xpZW50LCAmdGFzMjc2NF9pMmNfcmVnbWFwKTsKKwlpZiAoSVNfRVJS KHRhczI3eHgtPnJlZ21hcCkpIHsKKwkJcmVzdWx0ID0gUFRSX0VSUih0YXMyN3h4LT5yZWdtYXAp OwogCQlkZXZfZXJyKCZjbGllbnQtPmRldiwgIkZhaWxlZCB0byBhbGxvY2F0ZSByZWdpc3RlciBt YXA6ICVkXG4iLAogCQkJCQlyZXN1bHQpOwogCQlyZXR1cm4gcmVzdWx0OwogCX0KIAogCWlmIChj bGllbnQtPmRldi5vZl9ub2RlKSB7Ci0JCXJlc3VsdCA9IHRhczI3NjRfcGFyc2VfZHQoJmNsaWVu dC0+ZGV2LCB0YXMyNzY0KTsKKwkJcmVzdWx0ID0gdGFzMjd4eF9wYXJzZV9kdCgmY2xpZW50LT5k ZXYsIHRhczI3eHgpOwogCQlpZiAocmVzdWx0KSB7Ci0JCQlkZXZfZXJyKHRhczI3NjQtPmRldiwg IiVzOiBGYWlsZWQgdG8gcGFyc2UgZGV2aWNldHJlZVxuIiwKKwkJCWRldl9lcnIodGFzMjd4eC0+ ZGV2LCAiJXM6IEZhaWxlZCB0byBwYXJzZSBkZXZpY2V0cmVlXG4iLAogCQkJCV9fZnVuY19fKTsK IAkJCXJldHVybiByZXN1bHQ7CiAJCX0KIAl9CiAKLQlyZXR1cm4gZGV2bV9zbmRfc29jX3JlZ2lz dGVyX2NvbXBvbmVudCh0YXMyNzY0LT5kZXYsCisJdGFzMjd4eC0+ZGV2aWNlX2lkID0gaWQtPmRy aXZlcl9kYXRhOworCWRldl9pbmZvKHRhczI3eHgtPmRldiwgImNoaXBfaWQ6ICV1XG4iLCB0YXMy N3h4LT5kZXZpY2VfaWQpOworCQorCXJldHVybiBkZXZtX3NuZF9zb2NfcmVnaXN0ZXJfY29tcG9u ZW50KHRhczI3eHgtPmRldiwKIAkJCQkJICAgICAgICZzb2NfY29tcG9uZW50X2RyaXZlcl90YXMy NzY0LAogCQkJCQkgICAgICAgdGFzMjc2NF9kYWlfZHJpdmVyLAogCQkJCQkgICAgICAgQVJSQVlf U0laRSh0YXMyNzY0X2RhaV9kcml2ZXIpKTsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNf ZGV2aWNlX2lkIHRhczI3NjRfaTJjX2lkW10gPSB7Ci0JeyAidGFzMjc2NCIsIDB9LAorCXsgInRh czI3NjQiLCBUQVMyNzY0fSwKKwl7ICJ0YXMyNzgwIiwgVEFTMjc4MH0sCiAJeyB9CiB9OwogTU9E VUxFX0RFVklDRV9UQUJMRShpMmMsIHRhczI3NjRfaTJjX2lkKTsKQEAgLTY2OCw2ICs4MDYsNyBA QCBNT0RVTEVfREVWSUNFX1RBQkxFKGkyYywgdGFzMjc2NF9pMmNfaWQpCiAjaWYgZGVmaW5lZChD T05GSUdfT0YpCiBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB0YXMyNzY0X29mX21h dGNoW10gPSB7CiAJeyAuY29tcGF0aWJsZSA9ICJ0aSx0YXMyNzY0IiB9LAorCXsgLmNvbXBhdGli bGUgPSAidGksdGFzMjc4MCIgfSwKIAl7fSwKIH07CiBNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB0 YXMyNzY0X29mX21hdGNoKTsKQEAgLTY3NSwxNCArODE0LDE0IEBAIE1PRFVMRV9ERVZJQ0VfVEFC TEUob2YsIHRhczI3NjRfb2ZfbWF0Y2gKIAogc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHRhczI3 NjRfaTJjX2RyaXZlciA9IHsKIAkuZHJpdmVyID0gewotCQkubmFtZSAgID0gInRhczI3NjQiLAor CQkubmFtZSAgID0gInRhczI3eHgiLAogCQkub2ZfbWF0Y2hfdGFibGUgPSBvZl9tYXRjaF9wdHIo dGFzMjc2NF9vZl9tYXRjaCksCiAJfSwKLQkucHJvYmUgICAgICA9IHRhczI3NjRfaTJjX3Byb2Jl LAorCS5wcm9iZSAgICAgID0gdGFzMjd4eF9pMmNfcHJvYmUsCiAJLmlkX3RhYmxlICAgPSB0YXMy NzY0X2kyY19pZCwKIH07CiBtb2R1bGVfaTJjX2RyaXZlcih0YXMyNzY0X2kyY19kcml2ZXIpOwog Ci1NT0RVTEVfQVVUSE9SKCJEYW4gTXVycGh5IDxkbXVycGh5QHRpLmNvbT4iKTsKLU1PRFVMRV9E RVNDUklQVElPTigiVEFTMjc2NCBJMkMgU21hcnQgQW1wbGlmaWVyIGRyaXZlciIpOworTU9EVUxF X0FVVEhPUigiUmFwaGFlbCBYdSA8cmFwaGFlbC14dUB0aS5jb20+Iik7CitNT0RVTEVfREVTQ1JJ UFRJT04oIlRBUzI3NjQvVEFTMjc4MCBJMkMgU21hcnQgQW1wbGlmaWVyIGRyaXZlciIpOwogTU9E VUxFX0xJQ0VOU0UoIkdQTCB2MiIpOwo= --_004_51482fa1bb6d4b96abbd42991f7d492bticom_--