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=-11.0 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MIME_BASE64_TEXT,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY, URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable 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 DE2ACC2D0A3 for ; Sat, 24 Oct 2020 08:02:08 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id E78B022281 for ; Sat, 24 Oct 2020 08:02:07 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=alsa-project.org header.i=@alsa-project.org header.b="QagHICvH"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="qTOLVNpr" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E78B022281 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=mediatek.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=alsa-devel-bounces@alsa-project.org 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 4D6BB1844; Sat, 24 Oct 2020 10:01:16 +0200 (CEST) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa0.perex.cz 4D6BB1844 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=alsa-project.org; s=default; t=1603526526; bh=YDB89qjHR1/sSZZyNO1Zm//JwIEQtvg4kQzmp+z87us=; h=From:To:Subject:Date:In-Reply-To:References:Cc:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=QagHICvHiMnw79tynrlhgrlXsq/cbgfj7M289bA3dfwS+xmL9mB1n/m3P1fp29ifX 2lG3bryg0CbR9NKv7Nsc0ya4cge3qqSZ1SU/nH9qrpx8y8kCF5+g4G1LIT8Xs+g2W4 EJ/jGLzA+3d2w4xlzV3d+2eQjzh2hm6ezS4p+jhQ= Received: from alsa1.perex.cz (localhost.localdomain [127.0.0.1]) by alsa1.perex.cz (Postfix) with ESMTP id EE447F804E1; Sat, 24 Oct 2020 09:59:31 +0200 (CEST) Received: by alsa1.perex.cz (Postfix, from userid 50401) id CA773F804C3; Sat, 24 Oct 2020 09:59:27 +0200 (CEST) Received: from mailgw02.mediatek.com (unknown [210.61.82.184]) by alsa1.perex.cz (Postfix) with ESMTP id D1883F804AB for ; Sat, 24 Oct 2020 09:59:14 +0200 (CEST) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa1.perex.cz D1883F804AB Authentication-Results: alsa1.perex.cz; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="qTOLVNpr" X-UUID: 93c212e9c00d46a5bfa6e53e4ec52ffd-20201024 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:CC:To:From; bh=YDB89qjHR1/sSZZyNO1Zm//JwIEQtvg4kQzmp+z87us=; b=qTOLVNpr72YTbyrks2hcn3x4yhZIr7VnS5SVniLdENBBJNt67Yr50pqbDRMoQWq45L3+jTu1iTpyVdkeNscI14vYax3Sr4nG2tWTbvYbZJvbdoUj+MiEbFGZCpypikwc+k8WFQPHCVYYCLww9yC1Z0N9amhzA2xUOp4q9ZFRkGE=; X-UUID: 93c212e9c00d46a5bfa6e53e4ec52ffd-20201024 Received: from mtkcas06.mediatek.inc [(172.21.101.30)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.14 Build 0819 with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 442717362; Sat, 24 Oct 2020 15:59:08 +0800 Received: from mtkcas07.mediatek.inc (172.21.101.84) by mtkmbs07n1.mediatek.inc (172.21.101.16) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Sat, 24 Oct 2020 15:59:05 +0800 Received: from localhost.localdomain (10.17.3.153) by mtkcas07.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Sat, 24 Oct 2020 15:59:04 +0800 From: Jiaxin Yu To: , , , , , , , , , Subject: [PATCH v3 6/9] ASoC: mediatek: mt8192: support tdm in platform driver Date: Sat, 24 Oct 2020 15:58:56 +0800 Message-ID: <1603526339-15005-7-git-send-email-jiaxin.yu@mediatek.com> X-Mailer: git-send-email 1.8.1.1.dirty In-Reply-To: <1603526339-15005-1-git-send-email-jiaxin.yu@mediatek.com> References: <1603526339-15005-1-git-send-email-jiaxin.yu@mediatek.com> MIME-Version: 1.0 Content-Type: text/plain X-MTK: N Content-Transfer-Encoding: base64 Cc: shane.chien@mediatek.com, Bicycle.Tsai@mediatek.com, Jiaxin Yu , Trevor.Wu@mediatek.com, kuninori.morimoto.gx@renesas.com 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" VGhpcyBwYXRjaCBhZGRzIG10ODE5MiB0ZG0gZGFpIGRyaXZlci4NCg0KU2lnbmVkLW9mZi1ieTog SmlheGluIFl1IDxqaWF4aW4ueXVAbWVkaWF0ZWsuY29tPg0KLS0tDQogc291bmQvc29jL21lZGlh dGVrL210ODE5Mi9tdDgxOTItZGFpLXRkbS5jIHwgNzc4ICsrKysrKysrKysrKysrKysrKysrKw0K IDEgZmlsZSBjaGFuZ2VkLCA3NzggaW5zZXJ0aW9ucygrKQ0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBz b3VuZC9zb2MvbWVkaWF0ZWsvbXQ4MTkyL210ODE5Mi1kYWktdGRtLmMNCg0KZGlmZiAtLWdpdCBh L3NvdW5kL3NvYy9tZWRpYXRlay9tdDgxOTIvbXQ4MTkyLWRhaS10ZG0uYyBiL3NvdW5kL3NvYy9t ZWRpYXRlay9tdDgxOTIvbXQ4MTkyLWRhaS10ZG0uYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmlu ZGV4IDAwMDAwMDAwMDAwMDAuLjgzODM1MzZiN2FlMDANCi0tLSAvZGV2L251bGwNCisrKyBiL3Nv dW5kL3NvYy9tZWRpYXRlay9tdDgxOTIvbXQ4MTkyLWRhaS10ZG0uYw0KQEAgLTAsMCArMSw3Nzgg QEANCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KKy8vDQorLy8gTWVkaWFU ZWsgQUxTQSBTb0MgQXVkaW8gREFJIFRETSBDb250cm9sDQorLy8NCisvLyBDb3B5cmlnaHQgKGMp IDIwMjAgTWVkaWFUZWsgSW5jLg0KKy8vIEF1dGhvcjogU2hhbmUgQ2hpZW4gPHNoYW5lLmNoaWVu QG1lZGlhdGVrLmNvbT4NCisNCisjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+DQorI2luY2x1ZGUg PHNvdW5kL3BjbV9wYXJhbXMuaD4NCisNCisjaW5jbHVkZSAibXQ4MTkyLWFmZS1jbGsuaCINCisj aW5jbHVkZSAibXQ4MTkyLWFmZS1jb21tb24uaCINCisjaW5jbHVkZSAibXQ4MTkyLWFmZS1ncGlv LmgiDQorI2luY2x1ZGUgIm10ODE5Mi1pbnRlcmNvbm5lY3Rpb24uaCINCisNCitzdHJ1Y3QgbXRr X2FmZV90ZG1fcHJpdiB7DQorCWludCBpZDsNCisJaW50IGJja19pZDsNCisJaW50IGJja19yYXRl Ow0KKwlpbnQgdGRtX291dF9tb2RlOw0KKwlpbnQgYmNrX2ludmVydDsNCisJaW50IGxja19pbnZl cnQ7DQorCWludCBtY2xrX2lkOw0KKwlpbnQgbWNsa19tdWx0aXBsZTsgLyogYWNjb3JkaW5nIHRv IHNhbXBsZSByYXRlICovDQorCWludCBtY2xrX3JhdGU7DQorCWludCBtY2xrX2FwbGw7DQorfTsN CisNCitlbnVtIHsNCisJVERNX09VVF9JMlMgPSAwLA0KKwlURE1fT1VUX0RTUF9BID0gMSwNCisJ VERNX09VVF9EU1BfQiA9IDIsDQorfTsNCisNCitlbnVtIHsNCisJVERNX0JDS19OT05fSU5WID0g MCwNCisJVERNX0JDS19JTlYgPSAxLA0KK307DQorDQorZW51bSB7DQorCVRETV9MQ0tfTk9OX0lO ViA9IDAsDQorCVRETV9MQ0tfSU5WID0gMSwNCit9Ow0KKw0KK2VudW0gew0KKwlURE1fV0xFTl8x Nl9CSVQgPSAxLA0KKwlURE1fV0xFTl8zMl9CSVQgPSAyLA0KK307DQorDQorZW51bSB7DQorCVRE TV9DSEFOTkVMX0JDS18xNiA9IDAsDQorCVRETV9DSEFOTkVMX0JDS18yNCA9IDEsDQorCVRETV9D SEFOTkVMX0JDS18zMiA9IDIsDQorfTsNCisNCitlbnVtIHsNCisJVERNX0NIQU5ORUxfTlVNXzIg PSAwLA0KKwlURE1fQ0hBTk5FTF9OVU1fNCA9IDEsDQorCVRETV9DSEFOTkVMX05VTV84ID0gMiwN Cit9Ow0KKw0KK2VudW0gIHsNCisJVERNX0NIX1NUQVJUX08zMF9PMzEgPSAwLA0KKwlURE1fQ0hf U1RBUlRfTzMyX08zMywNCisJVERNX0NIX1NUQVJUX08zNF9PMzUsDQorCVRETV9DSF9TVEFSVF9P MzZfTzM3LA0KKwlURE1fQ0hfWkVSTywNCit9Ow0KKw0KK3N0YXRpYyB1bnNpZ25lZCBpbnQgZ2V0 X3RkbV93bGVuKHNuZF9wY21fZm9ybWF0X3QgZm9ybWF0KQ0KK3sNCisJcmV0dXJuIHNuZF9wY21f Zm9ybWF0X3BoeXNpY2FsX3dpZHRoKGZvcm1hdCkgPD0gMTYgPw0KKwkgICAgICAgVERNX1dMRU5f MTZfQklUIDogVERNX1dMRU5fMzJfQklUOw0KK30NCisNCitzdGF0aWMgdW5zaWduZWQgaW50IGdl dF90ZG1fY2hhbm5lbF9iY2soc25kX3BjbV9mb3JtYXRfdCBmb3JtYXQpDQorew0KKwlyZXR1cm4g c25kX3BjbV9mb3JtYXRfcGh5c2ljYWxfd2lkdGgoZm9ybWF0KSA8PSAxNiA/DQorCSAgICAgICBU RE1fQ0hBTk5FTF9CQ0tfMTYgOiBURE1fQ0hBTk5FTF9CQ0tfMzI7DQorfQ0KKw0KK3N0YXRpYyB1 bnNpZ25lZCBpbnQgZ2V0X3RkbV9scmNrX3dpZHRoKHNuZF9wY21fZm9ybWF0X3QgZm9ybWF0KQ0K K3sNCisJcmV0dXJuIHNuZF9wY21fZm9ybWF0X3BoeXNpY2FsX3dpZHRoKGZvcm1hdCkgLSAxOw0K K30NCisNCitzdGF0aWMgdW5zaWduZWQgaW50IGdldF90ZG1fY2godW5zaWduZWQgaW50IGNoKQ0K K3sNCisJc3dpdGNoIChjaCkgew0KKwljYXNlIDE6DQorCWNhc2UgMjoNCisJCXJldHVybiBURE1f Q0hBTk5FTF9OVU1fMjsNCisJY2FzZSAzOg0KKwljYXNlIDQ6DQorCQlyZXR1cm4gVERNX0NIQU5O RUxfTlVNXzQ7DQorCWNhc2UgNToNCisJY2FzZSA2Og0KKwljYXNlIDc6DQorCWNhc2UgODoNCisJ ZGVmYXVsdDoNCisJCXJldHVybiBURE1fQ0hBTk5FTF9OVU1fODsNCisJfQ0KK30NCisNCitzdGF0 aWMgdW5zaWduZWQgaW50IGdldF90ZG1fY2hfZml4dXAodW5zaWduZWQgaW50IGNoYW5uZWxzKQ0K K3sNCisJaWYgKGNoYW5uZWxzID4gNCkNCisJCXJldHVybiA4Ow0KKwllbHNlIGlmIChjaGFubmVs cyA+IDIpDQorCQlyZXR1cm4gNDsNCisJZWxzZQ0KKwkJcmV0dXJuIDI7DQorfQ0KKw0KK3N0YXRp YyB1bnNpZ25lZCBpbnQgZ2V0X3RkbV9jaF9wZXJfc2RhdGEodW5zaWduZWQgaW50IG1vZGUsDQor CQkJCQkgdW5zaWduZWQgaW50IGNoYW5uZWxzKQ0KK3sNCisJaWYgKG1vZGUgPT0gVERNX09VVF9E U1BfQSB8fCBtb2RlID09IFRETV9PVVRfRFNQX0IpDQorCQlyZXR1cm4gZ2V0X3RkbV9jaF9maXh1 cChjaGFubmVscyk7DQorCWVsc2UNCisJCXJldHVybiAyOw0KK30NCisNCisvKiBpbnRlcmNvbm5l Y3Rpb24gKi8NCitlbnVtIHsNCisJSERNSV9DT05OX0NIMCA9IDAsDQorCUhETUlfQ09OTl9DSDEs DQorCUhETUlfQ09OTl9DSDIsDQorCUhETUlfQ09OTl9DSDMsDQorCUhETUlfQ09OTl9DSDQsDQor CUhETUlfQ09OTl9DSDUsDQorCUhETUlfQ09OTl9DSDYsDQorCUhETUlfQ09OTl9DSDcsDQorfTsN CisNCitzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgaGRtaV9jb25uX211eF9tYXBbXSA9IHsNCisJ IkNIMCIsICJDSDEiLCAiQ0gyIiwgIkNIMyIsDQorCSJDSDQiLCAiQ0g1IiwgIkNINiIsICJDSDci LA0KK307DQorDQorc3RhdGljIGludCBoZG1pX2Nvbm5fbXV4X21hcF92YWx1ZVtdID0gew0KKwlI RE1JX0NPTk5fQ0gwLA0KKwlIRE1JX0NPTk5fQ0gxLA0KKwlIRE1JX0NPTk5fQ0gyLA0KKwlIRE1J X0NPTk5fQ0gzLA0KKwlIRE1JX0NPTk5fQ0g0LA0KKwlIRE1JX0NPTk5fQ0g1LA0KKwlIRE1JX0NP Tk5fQ0g2LA0KKwlIRE1JX0NPTk5fQ0g3LA0KK307DQorDQorc3RhdGljIFNPQ19WQUxVRV9FTlVN X1NJTkdMRV9ERUNMKGhkbWlfY2gwX211eF9tYXBfZW51bSwNCisJCQkJICBBRkVfSERNSV9DT05O MCwNCisJCQkJICBIRE1JX09fMF9TRlQsDQorCQkJCSAgSERNSV9PXzBfTUFTSywNCisJCQkJICBo ZG1pX2Nvbm5fbXV4X21hcCwNCisJCQkJICBoZG1pX2Nvbm5fbXV4X21hcF92YWx1ZSk7DQorDQor c3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IGhkbWlfY2gwX211eF9jb250cm9s ID0NCisJU09DX0RBUE1fRU5VTSgiSERNSV9DSDBfTVVYIiwgaGRtaV9jaDBfbXV4X21hcF9lbnVt KTsNCisNCitzdGF0aWMgU09DX1ZBTFVFX0VOVU1fU0lOR0xFX0RFQ0woaGRtaV9jaDFfbXV4X21h cF9lbnVtLA0KKwkJCQkgIEFGRV9IRE1JX0NPTk4wLA0KKwkJCQkgIEhETUlfT18xX1NGVCwNCisJ CQkJICBIRE1JX09fMV9NQVNLLA0KKwkJCQkgIGhkbWlfY29ubl9tdXhfbWFwLA0KKwkJCQkgIGhk bWlfY29ubl9tdXhfbWFwX3ZhbHVlKTsNCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9rY29u dHJvbF9uZXcgaGRtaV9jaDFfbXV4X2NvbnRyb2wgPQ0KKwlTT0NfREFQTV9FTlVNKCJIRE1JX0NI MV9NVVgiLCBoZG1pX2NoMV9tdXhfbWFwX2VudW0pOw0KKw0KK3N0YXRpYyBTT0NfVkFMVUVfRU5V TV9TSU5HTEVfREVDTChoZG1pX2NoMl9tdXhfbWFwX2VudW0sDQorCQkJCSAgQUZFX0hETUlfQ09O TjAsDQorCQkJCSAgSERNSV9PXzJfU0ZULA0KKwkJCQkgIEhETUlfT18yX01BU0ssDQorCQkJCSAg aGRtaV9jb25uX211eF9tYXAsDQorCQkJCSAgaGRtaV9jb25uX211eF9tYXBfdmFsdWUpOw0KKw0K K3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX2tjb250cm9sX25ldyBoZG1pX2NoMl9tdXhfY29udHJv bCA9DQorCVNPQ19EQVBNX0VOVU0oIkhETUlfQ0gyX01VWCIsIGhkbWlfY2gyX211eF9tYXBfZW51 bSk7DQorDQorc3RhdGljIFNPQ19WQUxVRV9FTlVNX1NJTkdMRV9ERUNMKGhkbWlfY2gzX211eF9t YXBfZW51bSwNCisJCQkJICBBRkVfSERNSV9DT05OMCwNCisJCQkJICBIRE1JX09fM19TRlQsDQor CQkJCSAgSERNSV9PXzNfTUFTSywNCisJCQkJICBoZG1pX2Nvbm5fbXV4X21hcCwNCisJCQkJICBo ZG1pX2Nvbm5fbXV4X21hcF92YWx1ZSk7DQorDQorc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfa2Nv bnRyb2xfbmV3IGhkbWlfY2gzX211eF9jb250cm9sID0NCisJU09DX0RBUE1fRU5VTSgiSERNSV9D SDNfTVVYIiwgaGRtaV9jaDNfbXV4X21hcF9lbnVtKTsNCisNCitzdGF0aWMgU09DX1ZBTFVFX0VO VU1fU0lOR0xFX0RFQ0woaGRtaV9jaDRfbXV4X21hcF9lbnVtLA0KKwkJCQkgIEFGRV9IRE1JX0NP Tk4wLA0KKwkJCQkgIEhETUlfT180X1NGVCwNCisJCQkJICBIRE1JX09fNF9NQVNLLA0KKwkJCQkg IGhkbWlfY29ubl9tdXhfbWFwLA0KKwkJCQkgIGhkbWlfY29ubl9tdXhfbWFwX3ZhbHVlKTsNCisN CitzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9rY29udHJvbF9uZXcgaGRtaV9jaDRfbXV4X2NvbnRy b2wgPQ0KKwlTT0NfREFQTV9FTlVNKCJIRE1JX0NINF9NVVgiLCBoZG1pX2NoNF9tdXhfbWFwX2Vu dW0pOw0KKw0KK3N0YXRpYyBTT0NfVkFMVUVfRU5VTV9TSU5HTEVfREVDTChoZG1pX2NoNV9tdXhf bWFwX2VudW0sDQorCQkJCSAgQUZFX0hETUlfQ09OTjAsDQorCQkJCSAgSERNSV9PXzVfU0ZULA0K KwkJCQkgIEhETUlfT181X01BU0ssDQorCQkJCSAgaGRtaV9jb25uX211eF9tYXAsDQorCQkJCSAg aGRtaV9jb25uX211eF9tYXBfdmFsdWUpOw0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX2tj b250cm9sX25ldyBoZG1pX2NoNV9tdXhfY29udHJvbCA9DQorCVNPQ19EQVBNX0VOVU0oIkhETUlf Q0g1X01VWCIsIGhkbWlfY2g1X211eF9tYXBfZW51bSk7DQorDQorc3RhdGljIFNPQ19WQUxVRV9F TlVNX1NJTkdMRV9ERUNMKGhkbWlfY2g2X211eF9tYXBfZW51bSwNCisJCQkJICBBRkVfSERNSV9D T05OMCwNCisJCQkJICBIRE1JX09fNl9TRlQsDQorCQkJCSAgSERNSV9PXzZfTUFTSywNCisJCQkJ ICBoZG1pX2Nvbm5fbXV4X21hcCwNCisJCQkJICBoZG1pX2Nvbm5fbXV4X21hcF92YWx1ZSk7DQor DQorc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IGhkbWlfY2g2X211eF9jb250 cm9sID0NCisJU09DX0RBUE1fRU5VTSgiSERNSV9DSDZfTVVYIiwgaGRtaV9jaDZfbXV4X21hcF9l bnVtKTsNCisNCitzdGF0aWMgU09DX1ZBTFVFX0VOVU1fU0lOR0xFX0RFQ0woaGRtaV9jaDdfbXV4 X21hcF9lbnVtLA0KKwkJCQkgIEFGRV9IRE1JX0NPTk4wLA0KKwkJCQkgIEhETUlfT183X1NGVCwN CisJCQkJICBIRE1JX09fN19NQVNLLA0KKwkJCQkgIGhkbWlfY29ubl9tdXhfbWFwLA0KKwkJCQkg IGhkbWlfY29ubl9tdXhfbWFwX3ZhbHVlKTsNCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9r Y29udHJvbF9uZXcgaGRtaV9jaDdfbXV4X2NvbnRyb2wgPQ0KKwlTT0NfREFQTV9FTlVNKCJIRE1J X0NIN19NVVgiLCBoZG1pX2NoN19tdXhfbWFwX2VudW0pOw0KKw0KK2VudW0gew0KKwlTVVBQTFlf U0VRX0FQTEwsDQorCVNVUFBMWV9TRVFfVERNX01DS19FTiwNCisJU1VQUExZX1NFUV9URE1fQkNL X0VOLA0KKwlTVVBQTFlfU0VRX1RETV9FTiwNCit9Ow0KKw0KK3N0YXRpYyBpbnQgZ2V0X3RkbV9p ZF9ieV9uYW1lKGNvbnN0IGNoYXIgKm5hbWUpDQorew0KKwlyZXR1cm4gTVQ4MTkyX0RBSV9URE07 DQorfQ0KKw0KK3N0YXRpYyBpbnQgbXRrX3RkbV9lbl9ldmVudChzdHJ1Y3Qgc25kX3NvY19kYXBt X3dpZGdldCAqdywNCisJCQkgICAgc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsDQorCQkJ ICAgIGludCBldmVudCkNCit7DQorCXN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY21wbnQgPSBz bmRfc29jX2RhcG1fdG9fY29tcG9uZW50KHctPmRhcG0pOw0KKwlzdHJ1Y3QgbXRrX2Jhc2VfYWZl ICphZmUgPSBzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjbXBudCk7DQorCXN0cnVjdCBt dDgxOTJfYWZlX3ByaXZhdGUgKmFmZV9wcml2ID0gYWZlLT5wbGF0Zm9ybV9wcml2Ow0KKwlpbnQg ZGFpX2lkID0gZ2V0X3RkbV9pZF9ieV9uYW1lKHctPm5hbWUpOw0KKwlzdHJ1Y3QgbXRrX2FmZV90 ZG1fcHJpdiAqdGRtX3ByaXYgPSBhZmVfcHJpdi0+ZGFpX3ByaXZbZGFpX2lkXTsNCisNCisJaWYg KCF0ZG1fcHJpdikgew0KKwkJZGV2X3dhcm4oYWZlLT5kZXYsICIlcygpLCB0ZG1fcHJpdiA9PSBO VUxMIiwgX19mdW5jX18pOw0KKwkJcmV0dXJuIC1FSU5WQUw7DQorCX0NCisNCisJZGV2X2luZm8o Y21wbnQtPmRldiwgIiVzKCksIG5hbWUgJXMsIGV2ZW50IDB4JXhcbiIsDQorCQkgX19mdW5jX18s IHctPm5hbWUsIGV2ZW50KTsNCisNCisJc3dpdGNoIChldmVudCkgew0KKwljYXNlIFNORF9TT0Nf REFQTV9QUkVfUE1VOg0KKwkJbXQ4MTkyX2FmZV9ncGlvX3JlcXVlc3QoYWZlLT5kZXYsIHRydWUs IHRkbV9wcml2LT5pZCwgMCk7DQorCQlicmVhazsNCisJY2FzZSBTTkRfU09DX0RBUE1fUE9TVF9Q TUQ6DQorCQltdDgxOTJfYWZlX2dwaW9fcmVxdWVzdChhZmUtPmRldiwgZmFsc2UsIHRkbV9wcml2 LT5pZCwgMCk7DQorCQlicmVhazsNCisJZGVmYXVsdDoNCisJCWJyZWFrOw0KKwl9DQorDQorCXJl dHVybiAwOw0KK30NCisNCitzdGF0aWMgaW50IG10a190ZG1fYmNrX2VuX2V2ZW50KHN0cnVjdCBz bmRfc29jX2RhcG1fd2lkZ2V0ICp3LA0KKwkJCQlzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJv bCwNCisJCQkJaW50IGV2ZW50KQ0KK3sNCisJc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjbXBu dCA9IHNuZF9zb2NfZGFwbV90b19jb21wb25lbnQody0+ZGFwbSk7DQorCXN0cnVjdCBtdGtfYmFz ZV9hZmUgKmFmZSA9IHNuZF9zb2NfY29tcG9uZW50X2dldF9kcnZkYXRhKGNtcG50KTsNCisJc3Ry dWN0IG10ODE5Ml9hZmVfcHJpdmF0ZSAqYWZlX3ByaXYgPSBhZmUtPnBsYXRmb3JtX3ByaXY7DQor CWludCBkYWlfaWQgPSBnZXRfdGRtX2lkX2J5X25hbWUody0+bmFtZSk7DQorCXN0cnVjdCBtdGtf YWZlX3RkbV9wcml2ICp0ZG1fcHJpdiA9IGFmZV9wcml2LT5kYWlfcHJpdltkYWlfaWRdOw0KKw0K KwlpZiAoIXRkbV9wcml2KSB7DQorCQlkZXZfd2FybihhZmUtPmRldiwgIiVzKCksIHRkbV9wcml2 ID09IE5VTEwiLCBfX2Z1bmNfXyk7DQorCQlyZXR1cm4gLUVJTlZBTDsNCisJfQ0KKw0KKwlkZXZf aW5mbyhjbXBudC0+ZGV2LCAiJXMoKSwgbmFtZSAlcywgZXZlbnQgMHgleCwgZGFpX2lkICVkXG4i LA0KKwkJIF9fZnVuY19fLCB3LT5uYW1lLCBldmVudCwgZGFpX2lkKTsNCisNCisJc3dpdGNoIChl dmVudCkgew0KKwljYXNlIFNORF9TT0NfREFQTV9QUkVfUE1VOg0KKwkJbXQ4MTkyX21ja19lbmFi bGUoYWZlLCB0ZG1fcHJpdi0+YmNrX2lkLCB0ZG1fcHJpdi0+YmNrX3JhdGUpOw0KKwkJYnJlYWs7 DQorCWNhc2UgU05EX1NPQ19EQVBNX1BPU1RfUE1EOg0KKwkJbXQ4MTkyX21ja19kaXNhYmxlKGFm ZSwgdGRtX3ByaXYtPmJja19pZCk7DQorCQlicmVhazsNCisJZGVmYXVsdDoNCisJCWJyZWFrOw0K Kwl9DQorDQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgaW50IG10a190ZG1fbWNrX2VuX2V2 ZW50KHN0cnVjdCBzbmRfc29jX2RhcG1fd2lkZ2V0ICp3LA0KKwkJCQlzdHJ1Y3Qgc25kX2tjb250 cm9sICprY29udHJvbCwNCisJCQkJaW50IGV2ZW50KQ0KK3sNCisJc3RydWN0IHNuZF9zb2NfY29t cG9uZW50ICpjbXBudCA9IHNuZF9zb2NfZGFwbV90b19jb21wb25lbnQody0+ZGFwbSk7DQorCXN0 cnVjdCBtdGtfYmFzZV9hZmUgKmFmZSA9IHNuZF9zb2NfY29tcG9uZW50X2dldF9kcnZkYXRhKGNt cG50KTsNCisJc3RydWN0IG10ODE5Ml9hZmVfcHJpdmF0ZSAqYWZlX3ByaXYgPSBhZmUtPnBsYXRm b3JtX3ByaXY7DQorCWludCBkYWlfaWQgPSBnZXRfdGRtX2lkX2J5X25hbWUody0+bmFtZSk7DQor CXN0cnVjdCBtdGtfYWZlX3RkbV9wcml2ICp0ZG1fcHJpdiA9IGFmZV9wcml2LT5kYWlfcHJpdltk YWlfaWRdOw0KKw0KKwlpZiAoIXRkbV9wcml2KSB7DQorCQlkZXZfd2FybihhZmUtPmRldiwgIiVz KCksIHRkbV9wcml2ID09IE5VTEwiLCBfX2Z1bmNfXyk7DQorCQlyZXR1cm4gLUVJTlZBTDsNCisJ fQ0KKw0KKwlkZXZfaW5mbyhjbXBudC0+ZGV2LCAiJXMoKSwgbmFtZSAlcywgZXZlbnQgMHgleCwg ZGFpX2lkICVkXG4iLA0KKwkJIF9fZnVuY19fLCB3LT5uYW1lLCBldmVudCwgZGFpX2lkKTsNCisN CisJc3dpdGNoIChldmVudCkgew0KKwljYXNlIFNORF9TT0NfREFQTV9QUkVfUE1VOg0KKwkJbXQ4 MTkyX21ja19lbmFibGUoYWZlLCB0ZG1fcHJpdi0+bWNsa19pZCwgdGRtX3ByaXYtPm1jbGtfcmF0 ZSk7DQorCQlicmVhazsNCisJY2FzZSBTTkRfU09DX0RBUE1fUE9TVF9QTUQ6DQorCQl0ZG1fcHJp di0+bWNsa19yYXRlID0gMDsNCisJCW10ODE5Ml9tY2tfZGlzYWJsZShhZmUsIHRkbV9wcml2LT5t Y2xrX2lkKTsNCisJCWJyZWFrOw0KKwlkZWZhdWx0Og0KKwkJYnJlYWs7DQorCX0NCisNCisJcmV0 dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX3NvY19kYXBtX3dpZGdldCBt dGtfZGFpX3RkbV93aWRnZXRzW10gPSB7DQorCVNORF9TT0NfREFQTV9NVVgoIkhETUlfQ0gwX01V WCIsIFNORF9TT0NfTk9QTSwgMCwgMCwNCisJCQkgJmhkbWlfY2gwX211eF9jb250cm9sKSwNCisJ U05EX1NPQ19EQVBNX01VWCgiSERNSV9DSDFfTVVYIiwgU05EX1NPQ19OT1BNLCAwLCAwLA0KKwkJ CSAmaGRtaV9jaDFfbXV4X2NvbnRyb2wpLA0KKwlTTkRfU09DX0RBUE1fTVVYKCJIRE1JX0NIMl9N VVgiLCBTTkRfU09DX05PUE0sIDAsIDAsDQorCQkJICZoZG1pX2NoMl9tdXhfY29udHJvbCksDQor CVNORF9TT0NfREFQTV9NVVgoIkhETUlfQ0gzX01VWCIsIFNORF9TT0NfTk9QTSwgMCwgMCwNCisJ CQkgJmhkbWlfY2gzX211eF9jb250cm9sKSwNCisJU05EX1NPQ19EQVBNX01VWCgiSERNSV9DSDRf TVVYIiwgU05EX1NPQ19OT1BNLCAwLCAwLA0KKwkJCSAmaGRtaV9jaDRfbXV4X2NvbnRyb2wpLA0K KwlTTkRfU09DX0RBUE1fTVVYKCJIRE1JX0NINV9NVVgiLCBTTkRfU09DX05PUE0sIDAsIDAsDQor CQkJICZoZG1pX2NoNV9tdXhfY29udHJvbCksDQorCVNORF9TT0NfREFQTV9NVVgoIkhETUlfQ0g2 X01VWCIsIFNORF9TT0NfTk9QTSwgMCwgMCwNCisJCQkgJmhkbWlfY2g2X211eF9jb250cm9sKSwN CisJU05EX1NPQ19EQVBNX01VWCgiSERNSV9DSDdfTVVYIiwgU05EX1NPQ19OT1BNLCAwLCAwLA0K KwkJCSAmaGRtaV9jaDdfbXV4X2NvbnRyb2wpLA0KKw0KKwlTTkRfU09DX0RBUE1fQ0xPQ0tfU1VQ UExZKCJhdWRfdGRtX2NsayIpLA0KKw0KKwlTTkRfU09DX0RBUE1fU1VQUExZX1MoIlRETV9FTiIs IFNVUFBMWV9TRVFfVERNX0VOLA0KKwkJCSAgICAgIEFGRV9URE1fQ09OMSwgVERNX0VOX1NGVCwg MCwNCisJCQkgICAgICBtdGtfdGRtX2VuX2V2ZW50LA0KKwkJCSAgICAgIFNORF9TT0NfREFQTV9Q UkVfUE1VIHwgU05EX1NPQ19EQVBNX1BPU1RfUE1EKSwNCisNCisJU05EX1NPQ19EQVBNX1NVUFBM WV9TKCJURE1fQkNLIiwgU1VQUExZX1NFUV9URE1fQkNLX0VOLA0KKwkJCSAgICAgIFNORF9TT0Nf Tk9QTSwgMCwgMCwNCisJCQkgICAgICBtdGtfdGRtX2Jja19lbl9ldmVudCwNCisJCQkgICAgICBT TkRfU09DX0RBUE1fUFJFX1BNVSB8IFNORF9TT0NfREFQTV9QT1NUX1BNRCksDQorDQorCVNORF9T T0NfREFQTV9TVVBQTFlfUygiVERNX01DSyIsIFNVUFBMWV9TRVFfVERNX01DS19FTiwNCisJCQkg ICAgICBTTkRfU09DX05PUE0sIDAsIDAsDQorCQkJICAgICAgbXRrX3RkbV9tY2tfZW5fZXZlbnQs DQorCQkJICAgICAgU05EX1NPQ19EQVBNX1BSRV9QTVUgfCBTTkRfU09DX0RBUE1fUE9TVF9QTUQp LA0KK307DQorDQorc3RhdGljIGludCBtdGtfYWZlX3RkbV9hcGxsX2Nvbm5lY3Qoc3RydWN0IHNu ZF9zb2NfZGFwbV93aWRnZXQgKnNvdXJjZSwNCisJCQkJICAgIHN0cnVjdCBzbmRfc29jX2RhcG1f d2lkZ2V0ICpzaW5rKQ0KK3sNCisJc3RydWN0IHNuZF9zb2NfZGFwbV93aWRnZXQgKncgPSBzaW5r Ow0KKwlzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNtcG50ID0gc25kX3NvY19kYXBtX3RvX2Nv bXBvbmVudCh3LT5kYXBtKTsNCisJc3RydWN0IG10a19iYXNlX2FmZSAqYWZlID0gc25kX3NvY19j b21wb25lbnRfZ2V0X2RydmRhdGEoY21wbnQpOw0KKwlzdHJ1Y3QgbXQ4MTkyX2FmZV9wcml2YXRl ICphZmVfcHJpdiA9IGFmZS0+cGxhdGZvcm1fcHJpdjsNCisJaW50IGRhaV9pZCA9IGdldF90ZG1f aWRfYnlfbmFtZSh3LT5uYW1lKTsNCisJc3RydWN0IG10a19hZmVfdGRtX3ByaXYgKnRkbV9wcml2 ID0gYWZlX3ByaXYtPmRhaV9wcml2W2RhaV9pZF07DQorCWludCBjdXJfYXBsbDsNCisNCisJLyog d2hpY2ggYXBsbCAqLw0KKwljdXJfYXBsbCA9IG10ODE5Ml9nZXRfYXBsbF9ieV9uYW1lKGFmZSwg c291cmNlLT5uYW1lKTsNCisNCisJcmV0dXJuICh0ZG1fcHJpdi0+bWNsa19hcGxsID09IGN1cl9h cGxsKSA/IDEgOiAwOw0KK30NCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9zb2NfZGFwbV9y b3V0ZSBtdGtfZGFpX3RkbV9yb3V0ZXNbXSA9IHsNCisJeyJIRE1JX0NIMF9NVVgiLCAiQ0gwIiwg IkhETUkifSwNCisJeyJIRE1JX0NIMF9NVVgiLCAiQ0gxIiwgIkhETUkifSwNCisJeyJIRE1JX0NI MF9NVVgiLCAiQ0gyIiwgIkhETUkifSwNCisJeyJIRE1JX0NIMF9NVVgiLCAiQ0gzIiwgIkhETUki fSwNCisJeyJIRE1JX0NIMF9NVVgiLCAiQ0g0IiwgIkhETUkifSwNCisJeyJIRE1JX0NIMF9NVVgi LCAiQ0g1IiwgIkhETUkifSwNCisJeyJIRE1JX0NIMF9NVVgiLCAiQ0g2IiwgIkhETUkifSwNCisJ eyJIRE1JX0NIMF9NVVgiLCAiQ0g3IiwgIkhETUkifSwNCisNCisJeyJIRE1JX0NIMV9NVVgiLCAi Q0gwIiwgIkhETUkifSwNCisJeyJIRE1JX0NIMV9NVVgiLCAiQ0gxIiwgIkhETUkifSwNCisJeyJI RE1JX0NIMV9NVVgiLCAiQ0gyIiwgIkhETUkifSwNCisJeyJIRE1JX0NIMV9NVVgiLCAiQ0gzIiwg IkhETUkifSwNCisJeyJIRE1JX0NIMV9NVVgiLCAiQ0g0IiwgIkhETUkifSwNCisJeyJIRE1JX0NI MV9NVVgiLCAiQ0g1IiwgIkhETUkifSwNCisJeyJIRE1JX0NIMV9NVVgiLCAiQ0g2IiwgIkhETUki fSwNCisJeyJIRE1JX0NIMV9NVVgiLCAiQ0g3IiwgIkhETUkifSwNCisNCisJeyJIRE1JX0NIMl9N VVgiLCAiQ0gwIiwgIkhETUkifSwNCisJeyJIRE1JX0NIMl9NVVgiLCAiQ0gxIiwgIkhETUkifSwN CisJeyJIRE1JX0NIMl9NVVgiLCAiQ0gyIiwgIkhETUkifSwNCisJeyJIRE1JX0NIMl9NVVgiLCAi Q0gzIiwgIkhETUkifSwNCisJeyJIRE1JX0NIMl9NVVgiLCAiQ0g0IiwgIkhETUkifSwNCisJeyJI RE1JX0NIMl9NVVgiLCAiQ0g1IiwgIkhETUkifSwNCisJeyJIRE1JX0NIMl9NVVgiLCAiQ0g2Iiwg IkhETUkifSwNCisJeyJIRE1JX0NIMl9NVVgiLCAiQ0g3IiwgIkhETUkifSwNCisNCisJeyJIRE1J X0NIM19NVVgiLCAiQ0gwIiwgIkhETUkifSwNCisJeyJIRE1JX0NIM19NVVgiLCAiQ0gxIiwgIkhE TUkifSwNCisJeyJIRE1JX0NIM19NVVgiLCAiQ0gyIiwgIkhETUkifSwNCisJeyJIRE1JX0NIM19N VVgiLCAiQ0gzIiwgIkhETUkifSwNCisJeyJIRE1JX0NIM19NVVgiLCAiQ0g0IiwgIkhETUkifSwN CisJeyJIRE1JX0NIM19NVVgiLCAiQ0g1IiwgIkhETUkifSwNCisJeyJIRE1JX0NIM19NVVgiLCAi Q0g2IiwgIkhETUkifSwNCisJeyJIRE1JX0NIM19NVVgiLCAiQ0g3IiwgIkhETUkifSwNCisNCisJ eyJIRE1JX0NINF9NVVgiLCAiQ0gwIiwgIkhETUkifSwNCisJeyJIRE1JX0NINF9NVVgiLCAiQ0gx IiwgIkhETUkifSwNCisJeyJIRE1JX0NINF9NVVgiLCAiQ0gyIiwgIkhETUkifSwNCisJeyJIRE1J X0NINF9NVVgiLCAiQ0gzIiwgIkhETUkifSwNCisJeyJIRE1JX0NINF9NVVgiLCAiQ0g0IiwgIkhE TUkifSwNCisJeyJIRE1JX0NINF9NVVgiLCAiQ0g1IiwgIkhETUkifSwNCisJeyJIRE1JX0NINF9N VVgiLCAiQ0g2IiwgIkhETUkifSwNCisJeyJIRE1JX0NINF9NVVgiLCAiQ0g3IiwgIkhETUkifSwN CisNCisJeyJIRE1JX0NINV9NVVgiLCAiQ0gwIiwgIkhETUkifSwNCisJeyJIRE1JX0NINV9NVVgi LCAiQ0gxIiwgIkhETUkifSwNCisJeyJIRE1JX0NINV9NVVgiLCAiQ0gyIiwgIkhETUkifSwNCisJ eyJIRE1JX0NINV9NVVgiLCAiQ0gzIiwgIkhETUkifSwNCisJeyJIRE1JX0NINV9NVVgiLCAiQ0g0 IiwgIkhETUkifSwNCisJeyJIRE1JX0NINV9NVVgiLCAiQ0g1IiwgIkhETUkifSwNCisJeyJIRE1J X0NINV9NVVgiLCAiQ0g2IiwgIkhETUkifSwNCisJeyJIRE1JX0NINV9NVVgiLCAiQ0g3IiwgIkhE TUkifSwNCisNCisJeyJIRE1JX0NINl9NVVgiLCAiQ0gwIiwgIkhETUkifSwNCisJeyJIRE1JX0NI Nl9NVVgiLCAiQ0gxIiwgIkhETUkifSwNCisJeyJIRE1JX0NINl9NVVgiLCAiQ0gyIiwgIkhETUki fSwNCisJeyJIRE1JX0NINl9NVVgiLCAiQ0gzIiwgIkhETUkifSwNCisJeyJIRE1JX0NINl9NVVgi LCAiQ0g0IiwgIkhETUkifSwNCisJeyJIRE1JX0NINl9NVVgiLCAiQ0g1IiwgIkhETUkifSwNCisJ eyJIRE1JX0NINl9NVVgiLCAiQ0g2IiwgIkhETUkifSwNCisJeyJIRE1JX0NINl9NVVgiLCAiQ0g3 IiwgIkhETUkifSwNCisNCisJeyJIRE1JX0NIN19NVVgiLCAiQ0gwIiwgIkhETUkifSwNCisJeyJI RE1JX0NIN19NVVgiLCAiQ0gxIiwgIkhETUkifSwNCisJeyJIRE1JX0NIN19NVVgiLCAiQ0gyIiwg IkhETUkifSwNCisJeyJIRE1JX0NIN19NVVgiLCAiQ0gzIiwgIkhETUkifSwNCisJeyJIRE1JX0NI N19NVVgiLCAiQ0g0IiwgIkhETUkifSwNCisJeyJIRE1JX0NIN19NVVgiLCAiQ0g1IiwgIkhETUki fSwNCisJeyJIRE1JX0NIN19NVVgiLCAiQ0g2IiwgIkhETUkifSwNCisJeyJIRE1JX0NIN19NVVgi LCAiQ0g3IiwgIkhETUkifSwNCisNCisJeyJURE0iLCBOVUxMLCAiSERNSV9DSDBfTVVYIn0sDQor CXsiVERNIiwgTlVMTCwgIkhETUlfQ0gxX01VWCJ9LA0KKwl7IlRETSIsIE5VTEwsICJIRE1JX0NI Ml9NVVgifSwNCisJeyJURE0iLCBOVUxMLCAiSERNSV9DSDNfTVVYIn0sDQorCXsiVERNIiwgTlVM TCwgIkhETUlfQ0g0X01VWCJ9LA0KKwl7IlRETSIsIE5VTEwsICJIRE1JX0NINV9NVVgifSwNCisJ eyJURE0iLCBOVUxMLCAiSERNSV9DSDZfTVVYIn0sDQorCXsiVERNIiwgTlVMTCwgIkhETUlfQ0g3 X01VWCJ9LA0KKw0KKwl7IlRETSIsIE5VTEwsICJhdWRfdGRtX2NsayJ9LA0KKwl7IlRETSIsIE5V TEwsICJURE1fQkNLIn0sDQorCXsiVERNIiwgTlVMTCwgIlRETV9FTiJ9LA0KKwl7IlRETV9CQ0si LCBOVUxMLCAiVERNX01DSyJ9LA0KKwl7IlRETV9NQ0siLCBOVUxMLCBBUExMMV9XX05BTUUsIG10 a19hZmVfdGRtX2FwbGxfY29ubmVjdH0sDQorCXsiVERNX01DSyIsIE5VTEwsIEFQTEwyX1dfTkFN RSwgbXRrX2FmZV90ZG1fYXBsbF9jb25uZWN0fSwNCit9Ow0KKw0KKy8qIGRhaSBvcHMgKi8NCitz dGF0aWMgaW50IG10a19kYWlfdGRtX2NhbF9tY2xrKHN0cnVjdCBtdGtfYmFzZV9hZmUgKmFmZSwN CisJCQkJc3RydWN0IG10a19hZmVfdGRtX3ByaXYgKnRkbV9wcml2LA0KKwkJCQlpbnQgZnJlcSkN Cit7DQorCWludCBhcGxsOw0KKwlpbnQgYXBsbF9yYXRlOw0KKw0KKwlhcGxsID0gbXQ4MTkyX2dl dF9hcGxsX2J5X3JhdGUoYWZlLCBmcmVxKTsNCisJYXBsbF9yYXRlID0gbXQ4MTkyX2dldF9hcGxs X3JhdGUoYWZlLCBhcGxsKTsNCisNCisJaWYgKCFmcmVxIHx8IGZyZXEgPiBhcGxsX3JhdGUpIHsN CisJCWRldl93YXJuKGFmZS0+ZGV2LA0KKwkJCSAiJXMoKSwgZnJlcSglZCBIeikgaW52YWxpZFxu IiwgX19mdW5jX18sIGZyZXEpOw0KKwkJcmV0dXJuIC1FSU5WQUw7DQorCX0NCisNCisJaWYgKGFw bGxfcmF0ZSAlIGZyZXEgIT0gMCkgew0KKwkJZGV2X3dhcm4oYWZlLT5kZXYsDQorCQkJICIlcygp LCBBUExMIGNhbm5vdCBnZW5lcmF0ZSAlZCBIeiIsIF9fZnVuY19fLCBmcmVxKTsNCisJCXJldHVy biAtRUlOVkFMOw0KKwl9DQorDQorCXRkbV9wcml2LT5tY2xrX3JhdGUgPSBmcmVxOw0KKwl0ZG1f cHJpdi0+bWNsa19hcGxsID0gYXBsbDsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBp bnQgbXRrX2RhaV90ZG1faHdfcGFyYW1zKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3Ry ZWFtLA0KKwkJCQkgc3RydWN0IHNuZF9wY21faHdfcGFyYW1zICpwYXJhbXMsDQorCQkJCSBzdHJ1 Y3Qgc25kX3NvY19kYWkgKmRhaSkNCit7DQorCXN0cnVjdCBtdGtfYmFzZV9hZmUgKmFmZSA9IHNu ZF9zb2NfZGFpX2dldF9kcnZkYXRhKGRhaSk7DQorCXN0cnVjdCBtdDgxOTJfYWZlX3ByaXZhdGUg KmFmZV9wcml2ID0gYWZlLT5wbGF0Zm9ybV9wcml2Ow0KKwlpbnQgdGRtX2lkID0gZGFpLT5pZDsN CisJc3RydWN0IG10a19hZmVfdGRtX3ByaXYgKnRkbV9wcml2ID0gYWZlX3ByaXYtPmRhaV9wcml2 W3RkbV9pZF07DQorCXVuc2lnbmVkIGludCB0ZG1fb3V0X21vZGUgPSB0ZG1fcHJpdi0+dGRtX291 dF9tb2RlOw0KKwl1bnNpZ25lZCBpbnQgcmF0ZSA9IHBhcmFtc19yYXRlKHBhcmFtcyk7DQorCXVu c2lnbmVkIGludCBjaGFubmVscyA9IHBhcmFtc19jaGFubmVscyhwYXJhbXMpOw0KKwl1bnNpZ25l ZCBpbnQgb3V0X2NoYW5uZWxzX3Blcl9zZGF0YSA9DQorCQlnZXRfdGRtX2NoX3Blcl9zZGF0YSh0 ZG1fb3V0X21vZGUsIGNoYW5uZWxzKTsNCisJc25kX3BjbV9mb3JtYXRfdCBmb3JtYXQgPSBwYXJh bXNfZm9ybWF0KHBhcmFtcyk7DQorCXVuc2lnbmVkIGludCB0ZG1fY29uID0gMDsNCisNCisJLyog Y2FsY3VsYXRlIG1jbGtfcmF0ZSwgaWYgbm90IHNldCBleHBsaWNpdGx5ICovDQorCWlmICghdGRt X3ByaXYtPm1jbGtfcmF0ZSkgew0KKwkJdGRtX3ByaXYtPm1jbGtfcmF0ZSA9IHJhdGUgKiB0ZG1f cHJpdi0+bWNsa19tdWx0aXBsZTsNCisJCW10a19kYWlfdGRtX2NhbF9tY2xrKGFmZSwNCisJCQkJ ICAgICB0ZG1fcHJpdiwNCisJCQkJICAgICB0ZG1fcHJpdi0+bWNsa19yYXRlKTsNCisJfQ0KKw0K KwkvKiBjYWxjdWxhdGUgYmNrICovDQorCXRkbV9wcml2LT5iY2tfcmF0ZSA9IHJhdGUgKg0KKwkJ CSAgICAgb3V0X2NoYW5uZWxzX3Blcl9zZGF0YSAqDQorCQkJICAgICBzbmRfcGNtX2Zvcm1hdF9w aHlzaWNhbF93aWR0aChmb3JtYXQpOw0KKw0KKwlpZiAodGRtX3ByaXYtPmJja19yYXRlID4gdGRt X3ByaXYtPm1jbGtfcmF0ZSkNCisJCWRldl93YXJuKGFmZS0+ZGV2LCAiJXMoKSwgYmNrX3JhdGUg PiBtY2xrX3JhdGUgcmF0ZSIsIF9fZnVuY19fKTsNCisNCisJaWYgKHRkbV9wcml2LT5tY2xrX3Jh dGUgJSB0ZG1fcHJpdi0+YmNrX3JhdGUgIT0gMCkNCisJCWRldl93YXJuKGFmZS0+ZGV2LCAiJXMo KSwgYmNrIGNhbm5vdCBnZW5lcmF0ZSIsIF9fZnVuY19fKTsNCisNCisJZGV2X2luZm8oYWZlLT5k ZXYsICIlcygpLCBpZCAlZCwgcmF0ZSAlZCwgY2hhbm5lbHMgJWQsIGZvcm1hdCAlZCwgbWNsa19y YXRlICVkLCBiY2tfcmF0ZSAlZFxuIiwNCisJCSBfX2Z1bmNfXywNCisJCSB0ZG1faWQsIHJhdGUs IGNoYW5uZWxzLCBmb3JtYXQsDQorCQkgdGRtX3ByaXYtPm1jbGtfcmF0ZSwgdGRtX3ByaXYtPmJj a19yYXRlKTsNCisNCisJZGV2X2luZm8oYWZlLT5kZXYsICIlcygpLCBvdXRfY2hhbm5lbHNfcGVy X3NkYXRhID0gJWRcbiIsDQorCQkgX19mdW5jX18sIG91dF9jaGFubmVsc19wZXJfc2RhdGEpOw0K Kw0KKwkvKiBzZXQgdGRtICovDQorCWlmICh0ZG1fcHJpdi0+YmNrX2ludmVydCkNCisJCXRkbV9j b24gfD0gMSA8PCBCQ0tfSU5WRVJTRV9TRlQ7DQorDQorCWlmICh0ZG1fcHJpdi0+bGNrX2ludmVy dCkNCisJCXRkbV9jb24gfD0gMSA8PCBMUkNLX0lOVkVSU0VfU0ZUOw0KKw0KKwlpZiAodGRtX3By aXYtPnRkbV9vdXRfbW9kZSA9PSBURE1fT1VUX0kyUykgew0KKwkJdGRtX2NvbiB8PSAxIDw8IERF TEFZX0RBVEFfU0ZUOw0KKwkJdGRtX2NvbiB8PSBnZXRfdGRtX2xyY2tfd2lkdGgoZm9ybWF0KSA8 PCBMUkNLX1RETV9XSURUSF9TRlQ7DQorCX0gZWxzZSBpZiAodGRtX3ByaXYtPnRkbV9vdXRfbW9k ZSA9PSBURE1fT1VUX0RTUF9BKSB7DQorCQl0ZG1fY29uIHw9IDAgPDwgREVMQVlfREFUQV9TRlQ7 DQorCQl0ZG1fY29uIHw9IDAgPDwgTFJDS19URE1fV0lEVEhfU0ZUOw0KKwl9IGVsc2UgaWYgKHRk bV9wcml2LT50ZG1fb3V0X21vZGUgPT0gVERNX09VVF9EU1BfQikgew0KKwkJdGRtX2NvbiB8PSAx IDw8IERFTEFZX0RBVEFfU0ZUOw0KKwkJdGRtX2NvbiB8PSAwIDw8IExSQ0tfVERNX1dJRFRIX1NG VDsNCisJfQ0KKw0KKwl0ZG1fY29uIHw9IDEgPDwgTEVGVF9BTElHTl9TRlQ7DQorCXRkbV9jb24g fD0gZ2V0X3RkbV93bGVuKGZvcm1hdCkgPDwgV0xFTl9TRlQ7DQorCXRkbV9jb24gfD0gZ2V0X3Rk bV9jaChvdXRfY2hhbm5lbHNfcGVyX3NkYXRhKSA8PCBDSEFOTkVMX05VTV9TRlQ7DQorCXRkbV9j b24gfD0gZ2V0X3RkbV9jaGFubmVsX2Jjayhmb3JtYXQpIDw8IENIQU5ORUxfQkNLX0NZQ0xFU19T RlQ7DQorCXJlZ21hcF93cml0ZShhZmUtPnJlZ21hcCwgQUZFX1RETV9DT04xLCB0ZG1fY29uKTsN CisNCisJaWYgKG91dF9jaGFubmVsc19wZXJfc2RhdGEgPT0gMikgew0KKwkJc3dpdGNoIChjaGFu bmVscykgew0KKwkJY2FzZSAxOg0KKwkJY2FzZSAyOg0KKwkJCXRkbV9jb24gPSBURE1fQ0hfU1RB UlRfTzMwX08zMSA8PCBTVF9DSF9QQUlSX1NPVVQwX1NGVDsNCisJCQl0ZG1fY29uIHw9IFRETV9D SF9aRVJPIDw8IFNUX0NIX1BBSVJfU09VVDFfU0ZUOw0KKwkJCXRkbV9jb24gfD0gVERNX0NIX1pF Uk8gPDwgU1RfQ0hfUEFJUl9TT1VUMl9TRlQ7DQorCQkJdGRtX2NvbiB8PSBURE1fQ0hfWkVSTyA8 PCBTVF9DSF9QQUlSX1NPVVQzX1NGVDsNCisJCQlicmVhazsNCisJCWNhc2UgMzoNCisJCWNhc2Ug NDoNCisJCQl0ZG1fY29uID0gVERNX0NIX1NUQVJUX08zMF9PMzEgPDwgU1RfQ0hfUEFJUl9TT1VU MF9TRlQ7DQorCQkJdGRtX2NvbiB8PSBURE1fQ0hfU1RBUlRfTzMyX08zMyA8PCBTVF9DSF9QQUlS X1NPVVQxX1NGVDsNCisJCQl0ZG1fY29uIHw9IFRETV9DSF9aRVJPIDw8IFNUX0NIX1BBSVJfU09V VDJfU0ZUOw0KKwkJCXRkbV9jb24gfD0gVERNX0NIX1pFUk8gPDwgU1RfQ0hfUEFJUl9TT1VUM19T RlQ7DQorCQkJYnJlYWs7DQorCQljYXNlIDU6DQorCQljYXNlIDY6DQorCQkJdGRtX2NvbiA9IFRE TV9DSF9TVEFSVF9PMzBfTzMxIDw8IFNUX0NIX1BBSVJfU09VVDBfU0ZUOw0KKwkJCXRkbV9jb24g fD0gVERNX0NIX1NUQVJUX08zMl9PMzMgPDwgU1RfQ0hfUEFJUl9TT1VUMV9TRlQ7DQorCQkJdGRt X2NvbiB8PSBURE1fQ0hfU1RBUlRfTzM0X08zNSA8PCBTVF9DSF9QQUlSX1NPVVQyX1NGVDsNCisJ CQl0ZG1fY29uIHw9IFRETV9DSF9aRVJPIDw8IFNUX0NIX1BBSVJfU09VVDNfU0ZUOw0KKwkJCWJy ZWFrOw0KKwkJY2FzZSA3Og0KKwkJY2FzZSA4Og0KKwkJCXRkbV9jb24gPSBURE1fQ0hfU1RBUlRf TzMwX08zMSA8PCBTVF9DSF9QQUlSX1NPVVQwX1NGVDsNCisJCQl0ZG1fY29uIHw9IFRETV9DSF9T VEFSVF9PMzJfTzMzIDw8IFNUX0NIX1BBSVJfU09VVDFfU0ZUOw0KKwkJCXRkbV9jb24gfD0gVERN X0NIX1NUQVJUX08zNF9PMzUgPDwgU1RfQ0hfUEFJUl9TT1VUMl9TRlQ7DQorCQkJdGRtX2NvbiB8 PSBURE1fQ0hfU1RBUlRfTzM2X08zNyA8PCBTVF9DSF9QQUlSX1NPVVQzX1NGVDsNCisJCQlicmVh azsNCisJCWRlZmF1bHQ6DQorCQkJdGRtX2NvbiA9IDA7DQorCQl9DQorCX0gZWxzZSB7DQorCQl0 ZG1fY29uID0gVERNX0NIX1NUQVJUX08zMF9PMzEgPDwgU1RfQ0hfUEFJUl9TT1VUMF9TRlQ7DQor CQl0ZG1fY29uIHw9IFRETV9DSF9aRVJPIDw8IFNUX0NIX1BBSVJfU09VVDFfU0ZUOw0KKwkJdGRt X2NvbiB8PSBURE1fQ0hfWkVSTyA8PCBTVF9DSF9QQUlSX1NPVVQyX1NGVDsNCisJCXRkbV9jb24g fD0gVERNX0NIX1pFUk8gPDwgU1RfQ0hfUEFJUl9TT1VUM19TRlQ7DQorCX0NCisNCisJcmVnbWFw X3dyaXRlKGFmZS0+cmVnbWFwLCBBRkVfVERNX0NPTjIsIHRkbV9jb24pOw0KKw0KKwlyZWdtYXBf dXBkYXRlX2JpdHMoYWZlLT5yZWdtYXAsIEFGRV9IRE1JX09VVF9DT04wLA0KKwkJCSAgIEhETUlf Q0hfTlVNX01BU0tfU0ZULA0KKwkJCSAgIGNoYW5uZWxzIDw8IEhETUlfQ0hfTlVNX1NGVCk7DQor CXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgaW50IG10a19kYWlfdGRtX3NldF9zeXNjbGsoc3Ry dWN0IHNuZF9zb2NfZGFpICpkYWksDQorCQkJCSAgaW50IGNsa19pZCwgdW5zaWduZWQgaW50IGZy ZXEsIGludCBkaXIpDQorew0KKwlzdHJ1Y3QgbXRrX2Jhc2VfYWZlICphZmUgPSBkZXZfZ2V0X2Ry dmRhdGEoZGFpLT5kZXYpOw0KKwlzdHJ1Y3QgbXQ4MTkyX2FmZV9wcml2YXRlICphZmVfcHJpdiA9 IGFmZS0+cGxhdGZvcm1fcHJpdjsNCisJc3RydWN0IG10a19hZmVfdGRtX3ByaXYgKnRkbV9wcml2 ID0gYWZlX3ByaXYtPmRhaV9wcml2W2RhaS0+aWRdOw0KKw0KKwlpZiAoIXRkbV9wcml2KSB7DQor CQlkZXZfd2FybihhZmUtPmRldiwgIiVzKCksIHRkbV9wcml2ID09IE5VTEwiLCBfX2Z1bmNfXyk7 DQorCQlyZXR1cm4gLUVJTlZBTDsNCisJfQ0KKw0KKwlpZiAoZGlyICE9IFNORF9TT0NfQ0xPQ0tf T1VUKSB7DQorCQlkZXZfd2FybihhZmUtPmRldiwgIiVzKCksIGRpciAhPSBTTkRfU09DX0NMT0NL X09VVCIsIF9fZnVuY19fKTsNCisJCXJldHVybiAtRUlOVkFMOw0KKwl9DQorDQorCWRldl9pbmZv KGFmZS0+ZGV2LCAiJXMoKSwgZnJlcSAlZFxuIiwgX19mdW5jX18sIGZyZXEpOw0KKw0KKwlyZXR1 cm4gbXRrX2RhaV90ZG1fY2FsX21jbGsoYWZlLCB0ZG1fcHJpdiwgZnJlcSk7DQorfQ0KKw0KK3N0 YXRpYyBpbnQgbXRrX2RhaV90ZG1fc2V0X2ZtdChzdHJ1Y3Qgc25kX3NvY19kYWkgKmRhaSwgdW5z aWduZWQgaW50IGZtdCkNCit7DQorCXN0cnVjdCBtdGtfYmFzZV9hZmUgKmFmZSA9IGRldl9nZXRf ZHJ2ZGF0YShkYWktPmRldik7DQorCXN0cnVjdCBtdDgxOTJfYWZlX3ByaXZhdGUgKmFmZV9wcml2 ID0gYWZlLT5wbGF0Zm9ybV9wcml2Ow0KKwlzdHJ1Y3QgbXRrX2FmZV90ZG1fcHJpdiAqdGRtX3By aXYgPSBhZmVfcHJpdi0+ZGFpX3ByaXZbZGFpLT5pZF07DQorDQorCWlmICghdGRtX3ByaXYpIHsN CisJCWRldl93YXJuKGFmZS0+ZGV2LCAiJXMoKSwgdGRtX3ByaXYgPT0gTlVMTCIsIF9fZnVuY19f KTsNCisJCXJldHVybiAtRUlOVkFMOw0KKwl9DQorDQorCS8qIERBSSBtb2RlKi8NCisJc3dpdGNo IChmbXQgJiBTTkRfU09DX0RBSUZNVF9GT1JNQVRfTUFTSykgew0KKwljYXNlIFNORF9TT0NfREFJ Rk1UX0kyUzoNCisJCXRkbV9wcml2LT50ZG1fb3V0X21vZGUgPSBURE1fT1VUX0kyUzsNCisJCWJy ZWFrOw0KKwljYXNlIFNORF9TT0NfREFJRk1UX0RTUF9BOg0KKwkJdGRtX3ByaXYtPnRkbV9vdXRf bW9kZSA9IFRETV9PVVRfRFNQX0E7DQorCQlicmVhazsNCisJY2FzZSBTTkRfU09DX0RBSUZNVF9E U1BfQjoNCisJCXRkbV9wcml2LT50ZG1fb3V0X21vZGUgPSBURE1fT1VUX0RTUF9COw0KKwkJYnJl YWs7DQorCWRlZmF1bHQ6DQorCQl0ZG1fcHJpdi0+dGRtX291dF9tb2RlID0gVERNX09VVF9JMlM7 DQorCX0NCisNCisJLyogREFJIGNsb2NrIGludmVyc2lvbiovDQorCXN3aXRjaCAoZm10ICYgU05E X1NPQ19EQUlGTVRfSU5WX01BU0spIHsNCisJY2FzZSBTTkRfU09DX0RBSUZNVF9OQl9ORjoNCisJ CXRkbV9wcml2LT5iY2tfaW52ZXJ0ID0gVERNX0JDS19OT05fSU5WOw0KKwkJdGRtX3ByaXYtPmxj a19pbnZlcnQgPSBURE1fTENLX05PTl9JTlY7DQorCQlicmVhazsNCisJY2FzZSBTTkRfU09DX0RB SUZNVF9OQl9JRjoNCisJCXRkbV9wcml2LT5iY2tfaW52ZXJ0ID0gVERNX0JDS19OT05fSU5WOw0K KwkJdGRtX3ByaXYtPmxja19pbnZlcnQgPSBURE1fTENLX0lOVjsNCisJCWJyZWFrOw0KKwljYXNl IFNORF9TT0NfREFJRk1UX0lCX05GOg0KKwkJdGRtX3ByaXYtPmJja19pbnZlcnQgPSBURE1fQkNL X0lOVjsNCisJCXRkbV9wcml2LT5sY2tfaW52ZXJ0ID0gVERNX0xDS19OT05fSU5WOw0KKwkJYnJl YWs7DQorCWNhc2UgU05EX1NPQ19EQUlGTVRfSUJfSUY6DQorCWRlZmF1bHQ6DQorCQl0ZG1fcHJp di0+YmNrX2ludmVydCA9IFRETV9CQ0tfSU5WOw0KKwkJdGRtX3ByaXYtPmxja19pbnZlcnQgPSBU RE1fTENLX0lOVjsNCisJCWJyZWFrOw0KKwl9DQorDQorCXJldHVybiAwOw0KK30NCisNCitzdGF0 aWMgY29uc3Qgc3RydWN0IHNuZF9zb2NfZGFpX29wcyBtdGtfZGFpX3RkbV9vcHMgPSB7DQorCS5o d19wYXJhbXMgPSBtdGtfZGFpX3RkbV9od19wYXJhbXMsDQorCS5zZXRfc3lzY2xrID0gbXRrX2Rh aV90ZG1fc2V0X3N5c2NsaywNCisJLnNldF9mbXQgPSBtdGtfZGFpX3RkbV9zZXRfZm10LA0KK307 DQorDQorLyogZGFpIGRyaXZlciAqLw0KKyNkZWZpbmUgTVRLX1RETV9SQVRFUyAoU05EUlZfUENN X1JBVEVfODAwMF80ODAwMCB8XA0KKwkJICAgICAgIFNORFJWX1BDTV9SQVRFXzg4MjAwIHxcDQor CQkgICAgICAgU05EUlZfUENNX1JBVEVfOTYwMDAgfFwNCisJCSAgICAgICBTTkRSVl9QQ01fUkFU RV8xNzY0MDAgfFwNCisJCSAgICAgICBTTkRSVl9QQ01fUkFURV8xOTIwMDApDQorDQorI2RlZmlu ZSBNVEtfVERNX0ZPUk1BVFMgKFNORFJWX1BDTV9GTVRCSVRfUzE2X0xFIHxcDQorCQkJIFNORFJW X1BDTV9GTVRCSVRfUzI0X0xFIHxcDQorCQkJIFNORFJWX1BDTV9GTVRCSVRfUzMyX0xFKQ0KKw0K K3N0YXRpYyBzdHJ1Y3Qgc25kX3NvY19kYWlfZHJpdmVyIG10a19kYWlfdGRtX2RyaXZlcltdID0g ew0KKwl7DQorCQkubmFtZSA9ICJURE0iLA0KKwkJLmlkID0gTVQ4MTkyX0RBSV9URE0sDQorCQku cGxheWJhY2sgPSB7DQorCQkJLnN0cmVhbV9uYW1lID0gIlRETSIsDQorCQkJLmNoYW5uZWxzX21p biA9IDIsDQorCQkJLmNoYW5uZWxzX21heCA9IDgsDQorCQkJLnJhdGVzID0gTVRLX1RETV9SQVRF UywNCisJCQkuZm9ybWF0cyA9IE1US19URE1fRk9STUFUUywNCisJCX0sDQorCQkub3BzID0gJm10 a19kYWlfdGRtX29wcywNCisJfSwNCit9Ow0KKw0KK3N0YXRpYyBzdHJ1Y3QgbXRrX2FmZV90ZG1f cHJpdiAqaW5pdF90ZG1fcHJpdl9kYXRhKHN0cnVjdCBtdGtfYmFzZV9hZmUgKmFmZSkNCit7DQor CXN0cnVjdCBtdGtfYWZlX3RkbV9wcml2ICp0ZG1fcHJpdjsNCisNCisJdGRtX3ByaXYgPSBkZXZt X2t6YWxsb2MoYWZlLT5kZXYsIHNpemVvZihzdHJ1Y3QgbXRrX2FmZV90ZG1fcHJpdiksDQorCQkJ CUdGUF9LRVJORUwpOw0KKwlpZiAoIXRkbV9wcml2KQ0KKwkJcmV0dXJuIE5VTEw7DQorDQorCXRk bV9wcml2LT5tY2xrX211bHRpcGxlID0gMTI4Ow0KKwl0ZG1fcHJpdi0+YmNrX2lkID0gTVQ4MTky X0kyUzRfQkNLOw0KKwl0ZG1fcHJpdi0+bWNsa19pZCA9IE1UODE5Ml9JMlM0X01DSzsNCisJdGRt X3ByaXYtPmlkID0gTVQ4MTkyX0RBSV9URE07DQorDQorCXJldHVybiB0ZG1fcHJpdjsNCit9DQor DQoraW50IG10ODE5Ml9kYWlfdGRtX3JlZ2lzdGVyKHN0cnVjdCBtdGtfYmFzZV9hZmUgKmFmZSkN Cit7DQorCXN0cnVjdCBtdDgxOTJfYWZlX3ByaXZhdGUgKmFmZV9wcml2ID0gYWZlLT5wbGF0Zm9y bV9wcml2Ow0KKwlzdHJ1Y3QgbXRrX2FmZV90ZG1fcHJpdiAqdGRtX3ByaXY7DQorCXN0cnVjdCBt dGtfYmFzZV9hZmVfZGFpICpkYWk7DQorDQorCWRldl9pbmZvKGFmZS0+ZGV2LCAiJXMoKVxuIiwg X19mdW5jX18pOw0KKw0KKwlkYWkgPSBkZXZtX2t6YWxsb2MoYWZlLT5kZXYsIHNpemVvZigqZGFp KSwgR0ZQX0tFUk5FTCk7DQorCWlmICghZGFpKQ0KKwkJcmV0dXJuIC1FTk9NRU07DQorDQorCWxp c3RfYWRkKCZkYWktPmxpc3QsICZhZmUtPnN1Yl9kYWlzKTsNCisNCisJZGFpLT5kYWlfZHJpdmVy cyA9IG10a19kYWlfdGRtX2RyaXZlcjsNCisJZGFpLT5udW1fZGFpX2RyaXZlcnMgPSBBUlJBWV9T SVpFKG10a19kYWlfdGRtX2RyaXZlcik7DQorDQorCWRhaS0+ZGFwbV93aWRnZXRzID0gbXRrX2Rh aV90ZG1fd2lkZ2V0czsNCisJZGFpLT5udW1fZGFwbV93aWRnZXRzID0gQVJSQVlfU0laRShtdGtf ZGFpX3RkbV93aWRnZXRzKTsNCisJZGFpLT5kYXBtX3JvdXRlcyA9IG10a19kYWlfdGRtX3JvdXRl czsNCisJZGFpLT5udW1fZGFwbV9yb3V0ZXMgPSBBUlJBWV9TSVpFKG10a19kYWlfdGRtX3JvdXRl cyk7DQorDQorCXRkbV9wcml2ID0gaW5pdF90ZG1fcHJpdl9kYXRhKGFmZSk7DQorCWlmICghdGRt X3ByaXYpDQorCQlyZXR1cm4gLUVOT01FTTsNCisNCisJYWZlX3ByaXYtPmRhaV9wcml2W01UODE5 Ml9EQUlfVERNXSA9IHRkbV9wcml2Ow0KKw0KKwlyZXR1cm4gMDsNCit9DQotLSANCjIuMTguMA0K