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=-16.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,MSGID_FROM_MTA_HEADER,SPF_HELO_NONE,SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id DE9DAC433EF for ; Mon, 20 Sep 2021 16:12:53 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id C54086115B for ; Mon, 20 Sep 2021 16:12:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242454AbhITQOQ (ORCPT ); Mon, 20 Sep 2021 12:14:16 -0400 Received: from mail-bn7nam10on2076.outbound.protection.outlook.com ([40.107.92.76]:28992 "EHLO NAM10-BN7-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S242836AbhITQOB (ORCPT ); Mon, 20 Sep 2021 12:14:01 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iPw4TZPcady7aZlzsdYINq2u/YlhowjD/BPphYwqTF4lPOJAIEoQNDK144Ee9x7YjdTdiTKU05IVVDU4V0NTVkrWG9Dus51CqT/gIh5crUvFoYtk4UF7As2ATgKOzw6Sx/SY9lUMyca5izaLvNnbyI8nSj9hZyQTsrROCkBmVeNM1fpLYtBl8VcRBUoIjXCRXYkzfW8q/ltbYgTz0tcQj0IfxX6TtjdDHkYCfojRubAWILtv/ihmI838yHhzmbHYQbYUUqALgasdSVxBc0uw51s/Nsc5dY57RVlBWN9mN2mdM3ZB+BdBy2m7E+wgMdr8HByJsFFLOvhoBi6VtOxxTQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=ezy3MjvI3yi92gAj4tRKzzMs/rhPl2s12vEVz0oXbBM=; b=aoGwzT+XF35TCRK8e7V2bMsO/3SQL3pPoeTb+u7uW7/4roq/IyvMSDsTM6yTdzN2mn4PHjKXNfddoI4c9Fjf+RnbHy/ku+6+sDS2ZpeC8srOzPMeNxqRi4dbRAHBxCR8D3So+9JrHAWTxPnayvEKLCuWmiXd9Js0SVdjx0SSXENNpIoQBorjQOL3Msr2IJS2I/G9oB7WDsAnceqWZrzZ8t8DUr04a1gPr5MEHXweF+JlTHm/RUiag9bBc9I3as5s2fBV1UlapAmPZLBw76gIbcJVrP4pLjk26RbROKZn/D93ThOaJT+IjF5Yqt6GCoHy3PcT3HVRZYYyTirIYNCuaw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=silabs.com; dmarc=pass action=none header.from=silabs.com; dkim=pass header.d=silabs.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.onmicrosoft.com; s=selector2-silabs-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ezy3MjvI3yi92gAj4tRKzzMs/rhPl2s12vEVz0oXbBM=; b=E3qNygiVM1x04J0IbrokVyJzm/c6KKZ8KtPvzFDXeWp3mKsRCYKG1GYtX2QHuZb9ppr2RM41NLVDfAp8oMs5pj1kPNS2VGE5DaZNsL1BkJMoyt5+Zpp1G7DEzS1S24eAKPT7Z2KzIeu6LBFGvE92K66Jq2SeTuC6hrzvt96jDwI= Authentication-Results: vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=silabs.com; Received: from SN6PR11MB2718.namprd11.prod.outlook.com (2603:10b6:805:63::18) by SN6PR11MB2654.namprd11.prod.outlook.com (2603:10b6:805:54::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.14; Mon, 20 Sep 2021 16:12:31 +0000 Received: from SN6PR11MB2718.namprd11.prod.outlook.com ([fe80::7050:a0a:415:2ccd]) by SN6PR11MB2718.namprd11.prod.outlook.com ([fe80::7050:a0a:415:2ccd%7]) with mapi id 15.20.4523.018; Mon, 20 Sep 2021 16:12:31 +0000 From: Jerome Pouiller To: linux-wireless@vger.kernel.org, netdev@vger.kernel.org, Kalle Valo Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, Greg Kroah-Hartman , "David S . Miller" , devicetree@vger.kernel.org, Rob Herring , linux-mmc@vger.kernel.org, =?UTF-8?q?Pali=20Roh=C3=A1r?= , Ulf Hansson , =?UTF-8?q?J=C3=A9r=C3=B4me=20Pouiller?= Subject: [PATCH v7 15/24] wfx: add hif_rx.c/hif_rx.h Date: Mon, 20 Sep 2021 18:11:27 +0200 Message-Id: <20210920161136.2398632-16-Jerome.Pouiller@silabs.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210920161136.2398632-1-Jerome.Pouiller@silabs.com> References: <20210920161136.2398632-1-Jerome.Pouiller@silabs.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 X-ClientProxiedBy: SA0PR11CA0064.namprd11.prod.outlook.com (2603:10b6:806:d2::9) To SN6PR11MB2718.namprd11.prod.outlook.com (2603:10b6:805:63::18) MIME-Version: 1.0 Received: from pc-42.silabs.com (2a01:e34:ecb5:66a0:9876:e1d7:65be:d294) by SA0PR11CA0064.namprd11.prod.outlook.com (2603:10b6:806:d2::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.14 via Frontend Transport; Mon, 20 Sep 2021 16:12:29 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1e4a0e69-779f-48a2-2e32-08d97c5172cc X-MS-TrafficTypeDiagnostic: SN6PR11MB2654: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2657; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: to9dRVcVkbR6YnkmDpQm6Co5ZyYJmvGwyfnMmQPu2x5j9GgAlzxD446LIiXTGcyQyB8dmq9+BWgdBLJSLrCJIqegSQH++vcDnxrIDanuAEajfuf1R5NdMJPdCjeDZdx99Y7QiECrGeMvs/trfZngFlsraIUr7w3EMRCyABgtmW+adeXD9btJCLE4TlVd4GMEJSBW+Nf9bjw7CVWp4soS03bB0MZO6Mku0oPud4+wh2M9ugkfxo+eTd4+5ddVI6INEtGaIEpFZEeUxgh2r3XD7rpc6kKNEuLG876NRP+m40Aki8Ns8vQ0Jt9NVyz3JMepuIgzotiwYmnV5okvTfcafNb/t/lt521RortOm+0BQU9i4Ex/0OcLpkq01raJqnP9tMxZFpmHGfup9VDTI0eNVoHaKKBVRyd2rqTG89gw3Z+ZyhQMTDrIA8jI8iiteAwycPlJ/dn/u6pt3HP1Q6tPbAHaKjf8n+h1x2LAJjNucrOMqc8/gJ24OWlI8hLy7+2h3UzGni6Xu7COSNdqZ4d+CtxuaboeaFfsQEN03hmzIrMEPJ9I8+6fdol+pVfSG/RjJhx4uosdOJr0wvbJxstiCaMYJGsNpJX80bXv6oTT/SrMBjlfFJAby/B7/PsnjUGtp06KnTcgkPRLazHgG3Zh8A== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN6PR11MB2718.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(52116002)(36756003)(7696005)(30864003)(5660300002)(4326008)(316002)(107886003)(8676002)(2616005)(2906002)(66476007)(66946007)(66556008)(66574015)(7416002)(508600001)(86362001)(38100700002)(83380400001)(8936002)(1076003)(6486002)(186003)(6916009)(54906003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: YdvF1pZyl9C8wFf+F6dGDMTSRtvr49Qin1VxnoZTqXAX8WkVFeLPmGhxc3hTfv0pjtKkP620otEZC94oWafVcg1QADidMZvQL/cVA+0UoBIBtv2BzE4il+vB3GNpZdb2qkBe/uXQWB265UtCRLAmvQhWvc8a2oSyfYyq/EEyRwEUPB0+30Ak8kbj63NvBOdsv7pPNPufdqm4sFABZqCnV1l/jBKbRnI9mwAQbePmTqtVyjJkgXehKTPSiNv7tcwGrct8CMDoNQ8MwvnDH9AZ8l7Vf/BgSRNV5ZUJrLpdyhVsxuxZ86tmudykH5u+X7V5e9KKYnJKMD3McT0yhYPuEpTK/O6O8Ix7ZER8T2x9EysXRFxRB/X1/XZpAnXSdHatkhpRi6Bw+axC/NxbLxnbzh8UQ88LOy0l5flGhssG5p4cG9urzSDD07qYTTx3lPquotf5Qb4nqkDRgeXfP6TcrRXdTYgYaZ26ggA3ctYBo+0s5h5ByFsmnmp9J2NZAcCmRY1kPHQW1I0B+VpmEGOUGnX0ai8qJBRTesmNJSU21+DmJi/bQB5+IosmLU9BfuA0TiI7/LDhyBqSXWoRJJWC+1vu15lZP7muFBxee/b8Mzh8lox4EmQ6CLl3kTYih8IvoLtPqJ/pgi8nkJjC1r8XgiqFdX0LxVaCxDJ17I9Q0IiwmofA5TYnUX2eAtofiORtfnejDPAcJdMC+Hd5/oIAGqmooTotNr7mh8K/A1hj5Apgl6WzJ38kdWpcTd9JduvUgoMUrv7wawH4mR4RKRDIUPmCH9lL1o4CU9XIkunm3HZ/mtEsgdE7K4SzgEGk/mMF X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1e4a0e69-779f-48a2-2e32-08d97c5172cc X-MS-Exchange-CrossTenant-AuthSource: SN6PR11MB2718.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Sep 2021 16:12:31.2573 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 54dbd822-5231-4b20-944d-6f4abcd541fb X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: gALEHAEhJaPj0RnRoXDs61ClB9X6DzRubYNSvYaXB/PLVI7stcjlsAmExLZslRs+D/RkHp6sFSrr5BDIfhOQNg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR11MB2654 Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org RnJvbTogSsOpcsO0bWUgUG91aWxsZXIgPGplcm9tZS5wb3VpbGxlckBzaWxhYnMuY29tPgoKU2ln bmVkLW9mZi1ieTogSsOpcsO0bWUgUG91aWxsZXIgPGplcm9tZS5wb3VpbGxlckBzaWxhYnMuY29t PgotLS0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvaGlmX3J4LmMgfCA0MTUgKysr KysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvaGlm X3J4LmggfCAgMTcgKwogMiBmaWxlcyBjaGFuZ2VkLCA0MzIgaW5zZXJ0aW9ucygrKQogY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvaGlmX3J4LmMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L2hpZl9yeC5o CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9oaWZfcnguYyBi L2RyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvaGlmX3J4LmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4yZTZkYjViOTk3MDgKLS0tIC9kZXYvbnVsbAorKysg Yi9kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L2hpZl9yeC5jCkBAIC0wLDAgKzEsNDE1 IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CisvKgorICogSGFu ZGxpbmcgb2YgdGhlIGNoaXAtdG8taG9zdCBldmVudHMgKGFrYSBpbmRpY2F0aW9ucykgb2YgdGhl IGhhcmR3YXJlIEFQSS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMCwgU2lsaWNvbiBM YWJvcmF0b3JpZXMsIEluYy4KKyAqIENvcHlyaWdodCAoYykgMjAxMCwgU1QtRXJpY3Nzb24KKyAq LworI2luY2x1ZGUgPGxpbnV4L3NrYnVmZi5oPgorI2luY2x1ZGUgPGxpbnV4L2V0aGVyZGV2aWNl Lmg+CisKKyNpbmNsdWRlICJoaWZfcnguaCIKKyNpbmNsdWRlICJ3ZnguaCIKKyNpbmNsdWRlICJz Y2FuLmgiCisjaW5jbHVkZSAiYmguaCIKKyNpbmNsdWRlICJzdGEuaCIKKyNpbmNsdWRlICJkYXRh X3J4LmgiCisjaW5jbHVkZSAiaGlmX2FwaV9jbWQuaCIKKworc3RhdGljIGludCBoaWZfZ2VuZXJp Y19jb25maXJtKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LAorCQkJICAgICAgIGNvbnN0IHN0cnVjdCBo aWZfbXNnICpoaWYsIGNvbnN0IHZvaWQgKmJ1ZikKK3sKKwkvKiBBbGwgY29uZmlybSBtZXNzYWdl cyBzdGFydCB3aXRoIHN0YXR1cyAqLworCWludCBzdGF0dXMgPSBsZTMyX3RvX2NwdXAoKF9fbGUz MiAqKWJ1Zik7CisJaW50IGNtZCA9IGhpZi0+aWQ7CisJaW50IGxlbiA9IGxlMTZfdG9fY3B1KGhp Zi0+bGVuKSAtIDQ7IC8qIGRyb3AgaGVhZGVyICovCisKKwlXQVJOKCFtdXRleF9pc19sb2NrZWQo JndkZXYtPmhpZl9jbWQubG9jayksICJkYXRhIGxvY2tpbmcgZXJyb3IiKTsKKworCWlmICghd2Rl di0+aGlmX2NtZC5idWZfc2VuZCkgeworCQlkZXZfd2Fybih3ZGV2LT5kZXYsICJ1bmV4cGVjdGVk IGNvbmZpcm1hdGlvbjogMHglLjJ4XG4iLCBjbWQpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisK KwlpZiAoY21kICE9IHdkZXYtPmhpZl9jbWQuYnVmX3NlbmQtPmlkKSB7CisJCWRldl93YXJuKHdk ZXYtPmRldiwKKwkJCSAiY2hpcCByZXNwb25zZSBtaXNtYXRjaCByZXF1ZXN0OiAweCUuMnggdnMg MHglLjJ4XG4iLAorCQkJIGNtZCwgd2Rldi0+aGlmX2NtZC5idWZfc2VuZC0+aWQpOworCQlyZXR1 cm4gLUVJTlZBTDsKKwl9CisKKwlpZiAod2Rldi0+aGlmX2NtZC5idWZfcmVjdikgeworCQlpZiAo d2Rldi0+aGlmX2NtZC5sZW5fcmVjdiA+PSBsZW4gJiYgbGVuID4gMCkKKwkJCW1lbWNweSh3ZGV2 LT5oaWZfY21kLmJ1Zl9yZWN2LCBidWYsIGxlbik7CisJCWVsc2UKKwkJCXN0YXR1cyA9IC1FSU87 CisJfQorCXdkZXYtPmhpZl9jbWQucmV0ID0gc3RhdHVzOworCisJY29tcGxldGUoJndkZXYtPmhp Zl9jbWQuZG9uZSk7CisJcmV0dXJuIHN0YXR1czsKK30KKworc3RhdGljIGludCBoaWZfdHhfY29u ZmlybShzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwKKwkJCSAgY29uc3Qgc3RydWN0IGhpZl9tc2cgKmhp ZiwgY29uc3Qgdm9pZCAqYnVmKQoreworCWNvbnN0IHN0cnVjdCBoaWZfY25mX3R4ICpib2R5ID0g YnVmOworCisJd2Z4X3R4X2NvbmZpcm1fY2Iod2RldiwgYm9keSk7CisJcmV0dXJuIDA7Cit9CisK K3N0YXRpYyBpbnQgaGlmX211bHRpX3R4X2NvbmZpcm0oc3RydWN0IHdmeF9kZXYgKndkZXYsCisJ CQkJY29uc3Qgc3RydWN0IGhpZl9tc2cgKmhpZiwgY29uc3Qgdm9pZCAqYnVmKQoreworCWNvbnN0 IHN0cnVjdCBoaWZfY25mX211bHRpX3RyYW5zbWl0ICpib2R5ID0gYnVmOworCWludCBpOworCisJ V0FSTihib2R5LT5udW1fdHhfY29uZnMgPD0gMCwgImNvcnJ1cHRlZCBtZXNzYWdlIik7CisJZm9y IChpID0gMDsgaSA8IGJvZHktPm51bV90eF9jb25mczsgaSsrKQorCQl3ZnhfdHhfY29uZmlybV9j Yih3ZGV2LCAmYm9keS0+dHhfY29uZl9wYXlsb2FkW2ldKTsKKwlyZXR1cm4gMDsKK30KKworc3Rh dGljIGludCBoaWZfc3RhcnR1cF9pbmRpY2F0aW9uKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LAorCQkJ CSAgY29uc3Qgc3RydWN0IGhpZl9tc2cgKmhpZiwgY29uc3Qgdm9pZCAqYnVmKQoreworCWNvbnN0 IHN0cnVjdCBoaWZfaW5kX3N0YXJ0dXAgKmJvZHkgPSBidWY7CisKKwlpZiAoYm9keS0+c3RhdHVz IHx8IGJvZHktPmZpcm13YXJlX3R5cGUgPiA0KSB7CisJCWRldl9lcnIod2Rldi0+ZGV2LCAicmVj ZWl2ZWQgaW52YWxpZCBzdGFydHVwIGluZGljYXRpb24iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJ fQorCW1lbWNweSgmd2Rldi0+aHdfY2FwcywgYm9keSwgc2l6ZW9mKHN0cnVjdCBoaWZfaW5kX3N0 YXJ0dXApKTsKKwlsZTE2X3RvX2NwdXMoKF9fbGUxNiAqKSZ3ZGV2LT5od19jYXBzLmhhcmR3YXJl X2lkKTsKKwlsZTE2X3RvX2NwdXMoKF9fbGUxNiAqKSZ3ZGV2LT5od19jYXBzLm51bV9pbnBfY2hf YnVmcyk7CisJbGUxNl90b19jcHVzKChfX2xlMTYgKikmd2Rldi0+aHdfY2Fwcy5zaXplX2lucF9j aF9idWYpOworCWxlMzJfdG9fY3B1cygoX19sZTMyICopJndkZXYtPmh3X2NhcHMuc3VwcG9ydGVk X3JhdGVfbWFzayk7CisKKwljb21wbGV0ZSgmd2Rldi0+ZmlybXdhcmVfcmVhZHkpOworCXJldHVy biAwOworfQorCitzdGF0aWMgaW50IGhpZl93YWtldXBfaW5kaWNhdGlvbihzdHJ1Y3Qgd2Z4X2Rl diAqd2RldiwKKwkJCQkgY29uc3Qgc3RydWN0IGhpZl9tc2cgKmhpZiwgY29uc3Qgdm9pZCAqYnVm KQoreworCWlmICghd2Rldi0+cGRhdGEuZ3Bpb193YWtldXAgfHwKKwkgICAgZ3Bpb2RfZ2V0X3Zh bHVlKHdkZXYtPnBkYXRhLmdwaW9fd2FrZXVwKSA9PSAwKSB7CisJCWRldl93YXJuKHdkZXYtPmRl diwgInVuZXhwZWN0ZWQgd2FrZS11cCBpbmRpY2F0aW9uXG4iKTsKKwkJcmV0dXJuIC1FSU87CisJ fQorCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGhpZl9yZWNlaXZlX2luZGljYXRpb24oc3Ry dWN0IHdmeF9kZXYgKndkZXYsCisJCQkJICBjb25zdCBzdHJ1Y3QgaGlmX21zZyAqaGlmLAorCQkJ CSAgY29uc3Qgdm9pZCAqYnVmLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQoreworCXN0cnVjdCB3Znhf dmlmICp3dmlmID0gd2Rldl90b193dmlmKHdkZXYsIGhpZi0+aW50ZXJmYWNlKTsKKwljb25zdCBz dHJ1Y3QgaGlmX2luZF9yeCAqYm9keSA9IGJ1ZjsKKworCWlmICghd3ZpZikgeworCQlkZXZfd2Fy bih3ZGV2LT5kZXYsICIlczogcmVjZWl2ZWQgZXZlbnQgZm9yIG5vbi1leGlzdGVudCB2aWZcbiIs IF9fZnVuY19fKTsKKwkJcmV0dXJuIC1FSU87CisJfQorCXNrYl9wdWxsKHNrYiwgc2l6ZW9mKHN0 cnVjdCBoaWZfbXNnKSArIHNpemVvZihzdHJ1Y3QgaGlmX2luZF9yeCkpOworCXdmeF9yeF9jYih3 dmlmLCBib2R5LCBza2IpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgaGlmX2V2ZW50 X2luZGljYXRpb24oc3RydWN0IHdmeF9kZXYgKndkZXYsCisJCQkJY29uc3Qgc3RydWN0IGhpZl9t c2cgKmhpZiwgY29uc3Qgdm9pZCAqYnVmKQoreworCXN0cnVjdCB3ZnhfdmlmICp3dmlmID0gd2Rl dl90b193dmlmKHdkZXYsIGhpZi0+aW50ZXJmYWNlKTsKKwljb25zdCBzdHJ1Y3QgaGlmX2luZF9l dmVudCAqYm9keSA9IGJ1ZjsKKwlpbnQgdHlwZSA9IGxlMzJfdG9fY3B1KGJvZHktPmV2ZW50X2lk KTsKKworCWlmICghd3ZpZikgeworCQlkZXZfd2Fybih3ZGV2LT5kZXYsICIlczogcmVjZWl2ZWQg ZXZlbnQgZm9yIG5vbi1leGlzdGVudCB2aWZcbiIsIF9fZnVuY19fKTsKKwkJcmV0dXJuIC1FSU87 CisJfQorCisJc3dpdGNoICh0eXBlKSB7CisJY2FzZSBISUZfRVZFTlRfSU5EX1JDUElfUlNTSToK KwkJd2Z4X2V2ZW50X3JlcG9ydF9yc3NpKHd2aWYsIGJvZHktPmV2ZW50X2RhdGEucmNwaV9yc3Np KTsKKwkJYnJlYWs7CisJY2FzZSBISUZfRVZFTlRfSU5EX0JTU0xPU1Q6CisJCXNjaGVkdWxlX2Rl bGF5ZWRfd29yaygmd3ZpZi0+YmVhY29uX2xvc3Nfd29yaywgMCk7CisJCWJyZWFrOworCWNhc2Ug SElGX0VWRU5UX0lORF9CU1NSRUdBSU5FRDoKKwkJY2FuY2VsX2RlbGF5ZWRfd29yaygmd3ZpZi0+ YmVhY29uX2xvc3Nfd29yayk7CisJCWRldl9kYmcod2Rldi0+ZGV2LCAiaWdub3JlIEJTU1JFR0FJ TkVEIGluZGljYXRpb25cbiIpOworCQlicmVhazsKKwljYXNlIEhJRl9FVkVOVF9JTkRfUFNfTU9E RV9FUlJPUjoKKwkJZGV2X3dhcm4od2Rldi0+ZGV2LCAiZXJyb3Igd2hpbGUgcHJvY2Vzc2luZyBw b3dlciBzYXZlIHJlcXVlc3Q6ICVkXG4iLAorCQkJIGxlMzJfdG9fY3B1KGJvZHktPmV2ZW50X2Rh dGEucHNfbW9kZV9lcnJvcikpOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlkZXZfd2Fybih3ZGV2 LT5kZXYsICJ1bmhhbmRsZWQgZXZlbnQgaW5kaWNhdGlvbjogJS4yeFxuIiwKKwkJCSB0eXBlKTsK KwkJYnJlYWs7CisJfQorCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGhpZl9wbV9tb2RlX2Nv bXBsZXRlX2luZGljYXRpb24oc3RydWN0IHdmeF9kZXYgKndkZXYsCisJCQkJCSAgIGNvbnN0IHN0 cnVjdCBoaWZfbXNnICpoaWYsCisJCQkJCSAgIGNvbnN0IHZvaWQgKmJ1ZikKK3sKKwlzdHJ1Y3Qg d2Z4X3ZpZiAqd3ZpZiA9IHdkZXZfdG9fd3ZpZih3ZGV2LCBoaWYtPmludGVyZmFjZSk7CisKKwlp ZiAoIXd2aWYpIHsKKwkJZGV2X3dhcm4od2Rldi0+ZGV2LCAiJXM6IHJlY2VpdmVkIGV2ZW50IGZv ciBub24tZXhpc3RlbnQgdmlmXG4iLCBfX2Z1bmNfXyk7CisJCXJldHVybiAtRUlPOworCX0KKwlj b21wbGV0ZSgmd3ZpZi0+c2V0X3BtX21vZGVfY29tcGxldGUpOworCisJcmV0dXJuIDA7Cit9CisK K3N0YXRpYyBpbnQgaGlmX3NjYW5fY29tcGxldGVfaW5kaWNhdGlvbihzdHJ1Y3Qgd2Z4X2RldiAq d2RldiwKKwkJCQkJY29uc3Qgc3RydWN0IGhpZl9tc2cgKmhpZiwKKwkJCQkJY29uc3Qgdm9pZCAq YnVmKQoreworCXN0cnVjdCB3ZnhfdmlmICp3dmlmID0gd2Rldl90b193dmlmKHdkZXYsIGhpZi0+ aW50ZXJmYWNlKTsKKwljb25zdCBzdHJ1Y3QgaGlmX2luZF9zY2FuX2NtcGwgKmJvZHkgPSBidWY7 CisKKwlpZiAoIXd2aWYpIHsKKwkJZGV2X3dhcm4od2Rldi0+ZGV2LCAiJXM6IHJlY2VpdmVkIGV2 ZW50IGZvciBub24tZXhpc3RlbnQgdmlmXG4iLCBfX2Z1bmNfXyk7CisJCXJldHVybiAtRUlPOwor CX0KKworCXdmeF9zY2FuX2NvbXBsZXRlKHd2aWYsIGJvZHktPm51bV9jaGFubmVsc19jb21wbGV0 ZWQpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgaGlmX2pvaW5fY29tcGxldGVfaW5k aWNhdGlvbihzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwKKwkJCQkJY29uc3Qgc3RydWN0IGhpZl9tc2cg KmhpZiwKKwkJCQkJY29uc3Qgdm9pZCAqYnVmKQoreworCXN0cnVjdCB3ZnhfdmlmICp3dmlmID0g d2Rldl90b193dmlmKHdkZXYsIGhpZi0+aW50ZXJmYWNlKTsKKworCWlmICghd3ZpZikgeworCQlk ZXZfd2Fybih3ZGV2LT5kZXYsICIlczogcmVjZWl2ZWQgZXZlbnQgZm9yIG5vbi1leGlzdGVudCB2 aWZcbiIsIF9fZnVuY19fKTsKKwkJcmV0dXJuIC1FSU87CisJfQorCWRldl93YXJuKHdkZXYtPmRl diwgInVuYXR0ZW5kZWQgSm9pbkNvbXBsZXRlSW5kXG4iKTsKKworCXJldHVybiAwOworfQorCitz dGF0aWMgaW50IGhpZl9zdXNwZW5kX3Jlc3VtZV9pbmRpY2F0aW9uKHN0cnVjdCB3ZnhfZGV2ICp3 ZGV2LAorCQkJCQkgY29uc3Qgc3RydWN0IGhpZl9tc2cgKmhpZiwKKwkJCQkJIGNvbnN0IHZvaWQg KmJ1ZikKK3sKKwljb25zdCBzdHJ1Y3QgaGlmX2luZF9zdXNwZW5kX3Jlc3VtZV90eCAqYm9keSA9 IGJ1ZjsKKwlzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZjsKKworCWlmIChib2R5LT5iY19tY19vbmx5KSB7 CisJCXd2aWYgPSB3ZGV2X3RvX3d2aWYod2RldiwgaGlmLT5pbnRlcmZhY2UpOworCQlpZiAoIXd2 aWYpIHsKKwkJCWRldl93YXJuKHdkZXYtPmRldiwgIiVzOiByZWNlaXZlZCBldmVudCBmb3Igbm9u LWV4aXN0ZW50IHZpZlxuIiwgX19mdW5jX18pOworCQkJcmV0dXJuIC1FSU87CisJCX0KKwkJaWYg KGJvZHktPnJlc3VtZSkKKwkJCXdmeF9zdXNwZW5kX3Jlc3VtZV9tYyh3dmlmLCBTVEFfTk9USUZZ X0FXQUtFKTsKKwkJZWxzZQorCQkJd2Z4X3N1c3BlbmRfcmVzdW1lX21jKHd2aWYsIFNUQV9OT1RJ RllfU0xFRVApOworCX0gZWxzZSB7CisJCVdBUk4oYm9keS0+cGVlcl9zdGFfc2V0LCAibWlzdW5k ZXJzdG9vZCBpbmRpY2F0aW9uIik7CisJCVdBUk4oaGlmLT5pbnRlcmZhY2UgIT0gMiwgIm1pc3Vu ZGVyc3Rvb2QgaW5kaWNhdGlvbiIpOworCQlpZiAoYm9keS0+cmVzdW1lKQorCQkJd2Z4X3N1c3Bl bmRfaG90X2Rldih3ZGV2LCBTVEFfTk9USUZZX0FXQUtFKTsKKwkJZWxzZQorCQkJd2Z4X3N1c3Bl bmRfaG90X2Rldih3ZGV2LCBTVEFfTk9USUZZX1NMRUVQKTsKKwl9CisKKwlyZXR1cm4gMDsKK30K Kworc3RhdGljIGludCBoaWZfZ2VuZXJpY19pbmRpY2F0aW9uKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2 LAorCQkJCSAgY29uc3Qgc3RydWN0IGhpZl9tc2cgKmhpZiwgY29uc3Qgdm9pZCAqYnVmKQorewor CWNvbnN0IHN0cnVjdCBoaWZfaW5kX2dlbmVyaWMgKmJvZHkgPSBidWY7CisJaW50IHR5cGUgPSBs ZTMyX3RvX2NwdShib2R5LT50eXBlKTsKKworCXN3aXRjaCAodHlwZSkgeworCWNhc2UgSElGX0dF TkVSSUNfSU5ESUNBVElPTl9UWVBFX1JBVzoKKwkJcmV0dXJuIDA7CisJY2FzZSBISUZfR0VORVJJ Q19JTkRJQ0FUSU9OX1RZUEVfU1RSSU5HOgorCQlkZXZfaW5mbyh3ZGV2LT5kZXYsICJmaXJtd2Fy ZSBzYXlzOiAlc1xuIiwgKGNoYXIgKikmYm9keS0+ZGF0YSk7CisJCXJldHVybiAwOworCWNhc2Ug SElGX0dFTkVSSUNfSU5ESUNBVElPTl9UWVBFX1JYX1NUQVRTOgorCQltdXRleF9sb2NrKCZ3ZGV2 LT5yeF9zdGF0c19sb2NrKTsKKwkJLyogT2xkZXIgZmlybXdhcmUgc2VuZCBhIGdlbmVyaWMgaW5k aWNhdGlvbiBiZXNpZGUgUnhTdGF0cyAqLworCQlpZiAoIXdmeF9hcGlfb2xkZXJfdGhhbih3ZGV2 LCAxLCA0KSkKKwkJCWRldl9pbmZvKHdkZXYtPmRldiwgIlJ4IHRlc3Qgb25nb2luZy4gVGVtcGVy YXR1cmU6ICVkIGRlZ3JlZXMgQ1xuIiwKKwkJCQkgYm9keS0+ZGF0YS5yeF9zdGF0cy5jdXJyZW50 X3RlbXApOworCQltZW1jcHkoJndkZXYtPnJ4X3N0YXRzLCAmYm9keS0+ZGF0YS5yeF9zdGF0cywK KwkJICAgICAgIHNpemVvZih3ZGV2LT5yeF9zdGF0cykpOworCQltdXRleF91bmxvY2soJndkZXYt PnJ4X3N0YXRzX2xvY2spOworCQlyZXR1cm4gMDsKKwljYXNlIEhJRl9HRU5FUklDX0lORElDQVRJ T05fVFlQRV9UWF9QT1dFUl9MT09QX0lORk86CisJCW11dGV4X2xvY2soJndkZXYtPnR4X3Bvd2Vy X2xvb3BfaW5mb19sb2NrKTsKKwkJbWVtY3B5KCZ3ZGV2LT50eF9wb3dlcl9sb29wX2luZm8sCisJ CSAgICAgICAmYm9keS0+ZGF0YS50eF9wb3dlcl9sb29wX2luZm8sCisJCSAgICAgICBzaXplb2Yo d2Rldi0+dHhfcG93ZXJfbG9vcF9pbmZvKSk7CisJCW11dGV4X3VubG9jaygmd2Rldi0+dHhfcG93 ZXJfbG9vcF9pbmZvX2xvY2spOworCQlyZXR1cm4gMDsKKwlkZWZhdWx0OgorCQlkZXZfZXJyKHdk ZXYtPmRldiwgImdlbmVyaWNfaW5kaWNhdGlvbjogdW5rbm93biBpbmRpY2F0aW9uIHR5cGU6ICUj Ljh4XG4iLAorCQkJdHlwZSk7CisJCXJldHVybiAtRUlPOworCX0KK30KKworc3RhdGljIGNvbnN0 IHN0cnVjdCB7CisJaW50IHZhbDsKKwljb25zdCBjaGFyICpzdHI7CisJYm9vbCBoYXNfcGFyYW07 Cit9IGhpZl9lcnJvcnNbXSA9IHsKKwl7IEhJRl9FUlJPUl9GSVJNV0FSRV9ST0xMQkFDSywKKwkJ InJvbGxiYWNrIHN0YXR1cyIgfSwKKwl7IEhJRl9FUlJPUl9GSVJNV0FSRV9ERUJVR19FTkFCTEVE LAorCQkiZGVidWcgZmVhdHVyZSBlbmFibGVkIiB9LAorCXsgSElGX0VSUk9SX1BEU19QQVlMT0FE LAorCQkiUERTIHZlcnNpb24gaXMgbm90IHN1cHBvcnRlZCIgfSwKKwl7IEhJRl9FUlJPUl9QRFNf VEVTVEZFQVRVUkUsCisJCSJQRFMgYXNrIGZvciBhbiB1bmtub3duIHRlc3QgbW9kZSIgfSwKKwl7 IEhJRl9FUlJPUl9PT1JfVk9MVEFHRSwKKwkJIm91dC1vZi1yYW5nZSBwb3dlciBzdXBwbHkgdm9s dGFnZSIsIHRydWUgfSwKKwl7IEhJRl9FUlJPUl9PT1JfVEVNUEVSQVRVUkUsCisJCSJvdXQtb2Yt cmFuZ2UgdGVtcGVyYXR1cmUiLCB0cnVlIH0sCisJeyBISUZfRVJST1JfU0xLX1JFUV9EVVJJTkdf S0VZX0VYQ0hBTkdFLAorCQkic2VjdXJlIGxpbmsgZG9lcyBub3QgZXhwZWN0IHJlcXVlc3QgZHVy aW5nIGtleSBleGNoYW5nZSIgfSwKKwl7IEhJRl9FUlJPUl9TTEtfU0VTU0lPTl9LRVksCisJCSJz ZWN1cmUgbGluayBzZXNzaW9uIGtleSBpcyBpbnZhbGlkIiB9LAorCXsgSElGX0VSUk9SX1NMS19P VkVSRkxPVywKKwkJInNlY3VyZSBsaW5rIG92ZXJmbG93IiB9LAorCXsgSElGX0VSUk9SX1NMS19X Uk9OR19FTkNSWVBUSU9OX1NUQVRFLAorCQkic2VjdXJlIGxpbmsgbWVzc2FnZXMgbGlzdCBkb2Vz IG5vdCBtYXRjaCBtZXNzYWdlIGVuY3J5cHRpb24iIH0sCisJeyBISUZfRVJST1JfU0xLX1VOQ09O RklHVVJFRCwKKwkJInNlY3VyZSBsaW5rIG5vdCB5ZXQgY29uZmlndXJlZCIgfSwKKwl7IEhJRl9F UlJPUl9ISUZfQlVTX0ZSRVFVRU5DWV9UT09fTE9XLAorCQkiYnVzIGNsb2NrIGlzIHRvbyBzbG93 ICg8MWtIeikiIH0sCisJeyBISUZfRVJST1JfSElGX1JYX0RBVEFfVE9PX0xBUkdFLAorCQkiSElG IG1lc3NhZ2UgdG9vIGxhcmdlIiB9LAorCS8qIEZvbGxvd2luZyBlcnJvcnMgb25seSBleGlzdHMg aW4gb2xkIGZpcm13YXJlIHZlcnNpb25zOiAqLworCXsgSElGX0VSUk9SX0hJRl9UWF9RVUVVRV9G VUxMLAorCQkiSElGIG1lc3NhZ2VzIHF1ZXVlIGlzIGZ1bGwiIH0sCisJeyBISUZfRVJST1JfSElG X0JVUywKKwkJIkhJRiBidXMiIH0sCisJeyBISUZfRVJST1JfU0xLX01VTFRJX1RYX1VOU1VQUE9S VEVELAorCQkic2VjdXJlIGxpbmsgZG9lcyBub3Qgc3VwcG9ydCBtdWx0aS10eCBjb25maXJtYXRp b25zIiB9LAorCXsgSElGX0VSUk9SX1NMS19PVVREQVRFRF9TRVNTSU9OX0tFWSwKKwkJInNlY3Vy ZSBsaW5rIHNlc3Npb24ga2V5IGlzIG91dGRhdGVkIiB9LAorCXsgSElGX0VSUk9SX1NMS19ERUNS WVBUSU9OLAorCQkic2VjdXJlIGxpbmsgcGFyYW1zIChub25jZSBvciB0YWcpIG1pc21hdGNoIiB9 LAorfTsKKworc3RhdGljIGludCBoaWZfZXJyb3JfaW5kaWNhdGlvbihzdHJ1Y3Qgd2Z4X2RldiAq d2RldiwKKwkJCQljb25zdCBzdHJ1Y3QgaGlmX21zZyAqaGlmLCBjb25zdCB2b2lkICpidWYpCit7 CisJY29uc3Qgc3RydWN0IGhpZl9pbmRfZXJyb3IgKmJvZHkgPSBidWY7CisJaW50IHR5cGUgPSBs ZTMyX3RvX2NwdShib2R5LT50eXBlKTsKKwlpbnQgcGFyYW0gPSAoczgpYm9keS0+ZGF0YVswXTsK KwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGhpZl9lcnJvcnMpOyBpKysp CisJCWlmICh0eXBlID09IGhpZl9lcnJvcnNbaV0udmFsKQorCQkJYnJlYWs7CisJaWYgKGkgPCBB UlJBWV9TSVpFKGhpZl9lcnJvcnMpKQorCQlpZiAoaGlmX2Vycm9yc1tpXS5oYXNfcGFyYW0pCisJ CQlkZXZfZXJyKHdkZXYtPmRldiwgImFzeW5jaHJvbm91cyBlcnJvcjogJXM6ICVkXG4iLAorCQkJ CWhpZl9lcnJvcnNbaV0uc3RyLCBwYXJhbSk7CisJCWVsc2UKKwkJCWRldl9lcnIod2Rldi0+ZGV2 LCAiYXN5bmNocm9ub3VzIGVycm9yOiAlc1xuIiwKKwkJCQloaWZfZXJyb3JzW2ldLnN0cik7CisJ ZWxzZQorCQlkZXZfZXJyKHdkZXYtPmRldiwgImFzeW5jaHJvbm91cyBlcnJvcjogdW5rbm93bjog JTA4eFxuIiwgdHlwZSk7CisJcHJpbnRfaGV4X2R1bXAoS0VSTl9JTkZPLCAiaGlmOiAiLCBEVU1Q X1BSRUZJWF9PRkZTRVQsCisJCSAgICAgICAxNiwgMSwgaGlmLCBsZTE2X3RvX2NwdShoaWYtPmxl biksIGZhbHNlKTsKKwl3ZGV2LT5jaGlwX2Zyb3plbiA9IHRydWU7CisKKwlyZXR1cm4gMDsKK307 CisKK3N0YXRpYyBpbnQgaGlmX2V4Y2VwdGlvbl9pbmRpY2F0aW9uKHN0cnVjdCB3ZnhfZGV2ICp3 ZGV2LAorCQkJCSAgICBjb25zdCBzdHJ1Y3QgaGlmX21zZyAqaGlmLCBjb25zdCB2b2lkICpidWYp Cit7CisJY29uc3Qgc3RydWN0IGhpZl9pbmRfZXhjZXB0aW9uICpib2R5ID0gYnVmOworCWludCB0 eXBlID0gbGUzMl90b19jcHUoYm9keS0+dHlwZSk7CisKKwlpZiAodHlwZSA9PSA0KQorCQlkZXZf ZXJyKHdkZXYtPmRldiwgImZpcm13YXJlIGFzc2VydCAlZFxuIiwKKwkJCWxlMzJfdG9fY3B1cCgo X19sZTMyICopYm9keS0+ZGF0YSkpOworCWVsc2UKKwkJZGV2X2Vycih3ZGV2LT5kZXYsICJmaXJt d2FyZSBleGNlcHRpb25cbiIpOworCXByaW50X2hleF9kdW1wKEtFUk5fSU5GTywgImhpZjogIiwg RFVNUF9QUkVGSVhfT0ZGU0VULAorCQkgICAgICAgMTYsIDEsIGhpZiwgbGUxNl90b19jcHUoaGlm LT5sZW4pLCBmYWxzZSk7CisJd2Rldi0+Y2hpcF9mcm96ZW4gPSB0cnVlOworCisJcmV0dXJuIC0x OworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IHsKKwlpbnQgbXNnX2lkOworCWludCAoKmhhbmRs ZXIpKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LAorCQkgICAgICAgY29uc3Qgc3RydWN0IGhpZl9tc2cg KmhpZiwgY29uc3Qgdm9pZCAqYnVmKTsKK30gaGlmX2hhbmRsZXJzW10gPSB7CisJLyogQ29uZmly bWF0aW9ucyAqLworCXsgSElGX0NORl9JRF9UWCwgICAgICAgICAgICAgICAgICAgaGlmX3R4X2Nv bmZpcm0gfSwKKwl7IEhJRl9DTkZfSURfTVVMVElfVFJBTlNNSVQsICAgICAgIGhpZl9tdWx0aV90 eF9jb25maXJtIH0sCisJLyogSW5kaWNhdGlvbnMgKi8KKwl7IEhJRl9JTkRfSURfU1RBUlRVUCwg ICAgICAgICAgICAgIGhpZl9zdGFydHVwX2luZGljYXRpb24gfSwKKwl7IEhJRl9JTkRfSURfV0FL RVVQLCAgICAgICAgICAgICAgIGhpZl93YWtldXBfaW5kaWNhdGlvbiB9LAorCXsgSElGX0lORF9J RF9KT0lOX0NPTVBMRVRFLCAgICAgICAgaGlmX2pvaW5fY29tcGxldGVfaW5kaWNhdGlvbiB9LAor CXsgSElGX0lORF9JRF9TRVRfUE1fTU9ERV9DTVBMLCAgICAgaGlmX3BtX21vZGVfY29tcGxldGVf aW5kaWNhdGlvbiB9LAorCXsgSElGX0lORF9JRF9TQ0FOX0NNUEwsICAgICAgICAgICAgaGlmX3Nj YW5fY29tcGxldGVfaW5kaWNhdGlvbiB9LAorCXsgSElGX0lORF9JRF9TVVNQRU5EX1JFU1VNRV9U WCwgICAgaGlmX3N1c3BlbmRfcmVzdW1lX2luZGljYXRpb24gfSwKKwl7IEhJRl9JTkRfSURfRVZF TlQsICAgICAgICAgICAgICAgIGhpZl9ldmVudF9pbmRpY2F0aW9uIH0sCisJeyBISUZfSU5EX0lE X0dFTkVSSUMsICAgICAgICAgICAgICBoaWZfZ2VuZXJpY19pbmRpY2F0aW9uIH0sCisJeyBISUZf SU5EX0lEX0VSUk9SLCAgICAgICAgICAgICAgICBoaWZfZXJyb3JfaW5kaWNhdGlvbiB9LAorCXsg SElGX0lORF9JRF9FWENFUFRJT04sICAgICAgICAgICAgaGlmX2V4Y2VwdGlvbl9pbmRpY2F0aW9u IH0sCisJLyogRklYTUU6IGFsbG9jYXRlIHNrYl9wIGZyb20gaGlmX3JlY2VpdmVfaW5kaWNhdGlv biBhbmQgbWFrZSBpdCBnZW5lcmljICovCisJLy97IEhJRl9JTkRfSURfUlgsICAgICAgICAgICAg ICAgICBoaWZfcmVjZWl2ZV9pbmRpY2F0aW9uIH0sCit9OworCit2b2lkIHdmeF9oYW5kbGVfcngo c3RydWN0IHdmeF9kZXYgKndkZXYsIHN0cnVjdCBza19idWZmICpza2IpCit7CisJaW50IGk7CisJ Y29uc3Qgc3RydWN0IGhpZl9tc2cgKmhpZiA9IChjb25zdCBzdHJ1Y3QgaGlmX21zZyAqKXNrYi0+ ZGF0YTsKKwlpbnQgaGlmX2lkID0gaGlmLT5pZDsKKworCWlmIChoaWZfaWQgPT0gSElGX0lORF9J RF9SWCkgeworCQkvKiBoaWZfcmVjZWl2ZV9pbmRpY2F0aW9uIHRha2UgY2FyZSBvZiBza2IgbGlm ZXRpbWUgKi8KKwkJaGlmX3JlY2VpdmVfaW5kaWNhdGlvbih3ZGV2LCBoaWYsIGhpZi0+Ym9keSwg c2tiKTsKKwkJcmV0dXJuOworCX0KKwkvKiBOb3RlOiBtdXRleF9pc19sb2NrIGNhdXNlIGFuIGlt cGxpY2l0IG1lbW9yeSBiYXJyaWVyIHRoYXQgcHJvdGVjdAorCSAqIGJ1Zl9zZW5kCisJICovCisJ aWYgKG11dGV4X2lzX2xvY2tlZCgmd2Rldi0+aGlmX2NtZC5sb2NrKSAmJgorCSAgICB3ZGV2LT5o aWZfY21kLmJ1Zl9zZW5kICYmCisJICAgIHdkZXYtPmhpZl9jbWQuYnVmX3NlbmQtPmlkID09IGhp Zl9pZCkgeworCQloaWZfZ2VuZXJpY19jb25maXJtKHdkZXYsIGhpZiwgaGlmLT5ib2R5KTsKKwkJ Z290byBmcmVlOworCX0KKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShoaWZfaGFuZGxlcnMp OyBpKyspIHsKKwkJaWYgKGhpZl9oYW5kbGVyc1tpXS5tc2dfaWQgPT0gaGlmX2lkKSB7CisJCQlp ZiAoaGlmX2hhbmRsZXJzW2ldLmhhbmRsZXIpCisJCQkJaGlmX2hhbmRsZXJzW2ldLmhhbmRsZXIo d2RldiwgaGlmLCBoaWYtPmJvZHkpOworCQkJZ290byBmcmVlOworCQl9CisJfQorCWlmIChoaWZf aWQgJiAweDgwKQorCQlkZXZfZXJyKHdkZXYtPmRldiwgInVuc3VwcG9ydGVkIEhJRiBpbmRpY2F0 aW9uOiBJRCAlMDJ4XG4iLAorCQkJaGlmX2lkKTsKKwllbHNlCisJCWRldl9lcnIod2Rldi0+ZGV2 LCAidW5leHBlY3RlZCBISUYgY29uZmlybWF0aW9uOiBJRCAlMDJ4XG4iLAorCQkJaGlmX2lkKTsK K2ZyZWU6CisJZGV2X2tmcmVlX3NrYihza2IpOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQv d2lyZWxlc3Mvc2lsYWJzL3dmeC9oaWZfcnguaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFi cy93ZngvaGlmX3J4LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45 NjU0M2I4MWZhNzcKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxh YnMvd2Z4L2hpZl9yeC5oCkBAIC0wLDAgKzEsMTcgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBHUEwtMi4wLW9ubHkgKi8KKy8qCisgKiBIYW5kbGluZyBvZiB0aGUgY2hpcC10by1ob3N0 IGV2ZW50cyAoYWthIGluZGljYXRpb25zKSBvZiB0aGUgaGFyZHdhcmUgQVBJLgorICoKKyAqIENv cHlyaWdodCAoYykgMjAxNy0yMDE5LCBTaWxpY29uIExhYm9yYXRvcmllcywgSW5jLgorICogQ29w eXJpZ2h0IChjKSAyMDEwLCBTVC1Fcmljc3NvbgorICogQ29weXJpZ2h0IChDKSAyMDEwLCBTVC1F cmljc3NvbiBTQQorICovCisjaWZuZGVmIFdGWF9ISUZfUlhfSAorI2RlZmluZSBXRlhfSElGX1JY X0gKKworc3RydWN0IHdmeF9kZXY7CitzdHJ1Y3Qgc2tfYnVmZjsKKwordm9pZCB3ZnhfaGFuZGxl X3J4KHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKKworI2VuZGlm Ci0tIAoyLjMzLjAKCg==