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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id AB2DBC433FE for ; Tue, 5 Oct 2021 13:57:48 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 937FE613D5 for ; Tue, 5 Oct 2021 13:57:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235640AbhJEN7f (ORCPT ); Tue, 5 Oct 2021 09:59:35 -0400 Received: from mail-bn8nam11on2074.outbound.protection.outlook.com ([40.107.236.74]:33504 "EHLO NAM11-BN8-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S235206AbhJEN6D (ORCPT ); Tue, 5 Oct 2021 09:58:03 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eS/YArxg7trWnsa2eX6ItVJ7qQcqUblw4pZFnol5I83oOr8Ws0LcqHSDscFdypw3oIqz32pO0d57+WWuoOSKCez3NEqXe/IvQx0mBvsRZYdVCDHT9l5durOPSm0NeaAmneiSz4lvJve4LDkBQ1fsDO+WbdcokWuuGehC4lSVJ5BgMupCy6VRHv0fmuM5OxEE0J/v9P3P1V9LnWBTopiFizmy6AnfnTVOjk5zfneRx1/PMvges5KHYnJ9lnDE6Qe8xLr7RDELY2po8jurv7/0Sq1UMXhdUTpQStk78BOWTwKfxxDh7/qaIT/HM1K861ZfhtRAfDq1kZj5lTldR0PR1g== 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:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ynxNsreBxLM4dS2VSzDZK68/1/ZmGATe/2kh9kCID0Y=; b=evTgax/ySfFSv4PMKZSl2ZF5uBSksC2i4spbHM1SHSYv+WT7KjspWZW8pNz6A0TKqbQ7QgyUPKBeF0ttlP+4EuDBHcGMzlaTIk44aFVuxqyYSrs7JR4gubeZpnwSqKbq1a8fUjtusXPG8vNfvoTRblEWtQWCFG+fGipwDJRxnYfOzPpOcJT7VqGz/hg9FhmTTZjc1/UrEX6SM3uET9azdGLaF5sLVqudkOSR2NlcgU+/uhzxPOX6Qnvv2Kctfxe0EDLpX54bG3FL8g4gjljgFqIKlm6lX0VwwSI4wJhcozZTUJM5PP66MPYo2Cu5n7630Ss+msXthpARDzqf1hycIA== 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=ynxNsreBxLM4dS2VSzDZK68/1/ZmGATe/2kh9kCID0Y=; b=ObV3FuAois3jNUo4/NUJO4sPpRD6E2v2uMpbxSUEsHYqutUpFVq+blU0epO/QF/vRtHXqvNBM3M3/TxbMBiUm8DrznGNOkEbDZOvnXIBuLwavO/vx5w6OnCrddDF9QEljkFbPffOYmhUBjxm+GyMdWwX48WV+KreWJFoOpwLVTw= 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 PH0PR11MB5657.namprd11.prod.outlook.com (2603:10b6:510:ee::19) by PH0PR11MB5644.namprd11.prod.outlook.com (2603:10b6:510:ef::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4566.14; Tue, 5 Oct 2021 13:55:04 +0000 Received: from PH0PR11MB5657.namprd11.prod.outlook.com ([fe80::31cb:3b13:b0e8:d8f4]) by PH0PR11MB5657.namprd11.prod.outlook.com ([fe80::31cb:3b13:b0e8:d8f4%9]) with mapi id 15.20.4566.022; Tue, 5 Oct 2021 13:55:04 +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 v8 15/24] wfx: add hif_rx.c/hif_rx.h Date: Tue, 5 Oct 2021 15:53:51 +0200 Message-Id: <20211005135400.788058-16-Jerome.Pouiller@silabs.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20211005135400.788058-1-Jerome.Pouiller@silabs.com> References: <20211005135400.788058-1-Jerome.Pouiller@silabs.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 X-ClientProxiedBy: PR3P189CA0084.EURP189.PROD.OUTLOOK.COM (2603:10a6:102:b4::29) To PH0PR11MB5657.namprd11.prod.outlook.com (2603:10b6:510:ee::19) MIME-Version: 1.0 Received: from pc-42.silabs.com (37.71.187.125) by PR3P189CA0084.EURP189.PROD.OUTLOOK.COM (2603:10a6:102:b4::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4566.14 via Frontend Transport; Tue, 5 Oct 2021 13:55:02 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: eed64e26-deef-49a8-68e7-08d98807bba5 X-MS-TrafficTypeDiagnostic: PH0PR11MB5644: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1332; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: y24HO+zm5j5Kn+M7SMzF7A+HvlHJtERlDyZtMQs/NQMA/beUsCV561dxi7+HD+0UjmUn2upVGHJBFMlTfKFrlp9xu5xkj2yh9sX0YIEcTWrpPoT1Sf5ThPI8DhyNxHnoaXJRvilvJHZOj99JhHz0SrE5TDkOSODrsZavT6lUkAmKwHQWblPPuGQSCPdEIydclYWxkzgmMkIwadu+/7kIqA9vbcl2ux/rzPUjEvfWh3Z5kpLZoeqizEpgMm9iPsqWkJ/jyXPYUaa3qTKBmn+sOat3r9qZ7N5iNHquzYsgp1kNbGPrBlhRmSPRrqFxIsY0k0llYVQRx8uKzLzok/V8q+7YzdZbDhbkRzJsAmePt7VAbCKykAOcFiaC3xz7jCpftTsEexR0luU74wuMw72bxhoIqBnFQ3mj1BQLDsC9f2GDi+aHd1byP+APhMJRK0+aFTVXeS7X2I2bCF8FMdDbSI5LX75BlEGLWowcPylcjP+7uz0h/9OeKMsJHaGn3dayk7KYEKMv36gJBr3IMih+hXihgkHaPh1OCoWPB3H7+CSJi9QcuaULvQOEv45v8x8YPmhZscZVG5xKTCDIvDZ1FiZxeKZesgnrvLyNk/O0N0NySh+bjZDZBOxD8k5IOjjkBc+BGjRD56tNBZNS9l7TgxOQklEGLapN8TdwH9XAVm0sCuKBjEZFrMIWQlCtq6qNnNRi2MVfqHNWbF8aeh+g1A== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR11MB5657.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(66946007)(66556008)(8936002)(6916009)(83380400001)(956004)(508600001)(2616005)(66476007)(26005)(186003)(7416002)(2906002)(36756003)(4326008)(30864003)(8676002)(107886003)(66574015)(7696005)(52116002)(38100700002)(316002)(1076003)(5660300002)(86362001)(6666004)(54906003)(38350700002)(6486002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?eHFRZnAvS1R4M0dNTVZNZktVdzJwbU5aaVcvU3BMbVVFcFFBbjgydEFKVUpP?= =?utf-8?B?dS9ybEZQTDdEaTBkQzIyTDc2V2ticGdNTSsweFQvRSsxeW16YlV5UVV5VUFJ?= =?utf-8?B?UmpNTEpSNDFIZW81cHVLUy9EMkZ6TVQ3bG94dEZJa1B3dFNvOXFYZ0FRZWJw?= =?utf-8?B?R0JVTzVOSWFybXVZdFNyYmNTTThsT1NHanlPNndGbnc3bWhEREZjQ0ZGMFJ1?= =?utf-8?B?Z3YxSWlyZUs2bW1GQlVRc1BEUVV4M1ljdWtGamg1S25NUlQ2NW1IYy9GUzZK?= =?utf-8?B?Mi9iUjVadG9nYUwxNWdWRXNSRU5BK0JjM0lKaCtqWG81TkpCaGZuYllFZ3FH?= =?utf-8?B?UFFUMktVRTVUTHdENjh2RnpycUNvQlgyZ2hZSUk5OGNkd1NnamF1dE1UNXJJ?= =?utf-8?B?RHFYbytsRWRtY291b1AvNHI3MzhKTE9PaDVOa29xYlVwVnlMMGhmb1N2eWoz?= =?utf-8?B?Mjk0L291VHcxL3RuNWF6WUkyZ01pQmdLY2VUeXF3MHgwWEhPMm5tcUxhMk1h?= =?utf-8?B?L2E3MDNRcmYvWUt6Si9ZMktYbGJIZGpBRkJKc1R5dExKWkNlL1laYlo3VDJ2?= =?utf-8?B?c1Rpdm0zalV3d1BLeHZFeWhxV2NCbytFRHVScVI5WnFENFpXdks0WW1VaVM2?= =?utf-8?B?MkRQTWdmY2NkeUp1M1czMk9oTW9QbWZBeWdaUk93SkdxWXJJT3B5a0h5ZnVN?= =?utf-8?B?MHVtak44dStUdjNYVW1Wd0ZueHRYZmU4V2k1SGtTQ2N4MzVDZ2xrQnFxMUNn?= =?utf-8?B?NzhnM1pNU2tja3VtUWpQS1FMLy9YdjJ3NHpPSU53Rk1QbGVxSkRrMks1U3hX?= =?utf-8?B?ak1ZZkx3dWk1YjVpNnFUSGk4SE5MMkg1Tk1GKzE5bTduT0pDZytyOGo2azVi?= =?utf-8?B?YXQ5NUl6YVk5VWtqaGxwV3RJeHFvTFk3eGVDNWNSYTd5dkltL2ViQWRwbzVL?= =?utf-8?B?N3dSYXpoMkpyM2U0UlNtN0JjcE9Ra3FOMkFNbW8yWWIwRmxNSXdabHYyYVVF?= =?utf-8?B?K2w0M1RKRUwzUm13a3FuTUp5S3ovcXl2Y1J5WjU3VWdiWmpOZ1ovT0FuNHlu?= =?utf-8?B?MnhYcjBBbHdhcG9LbTU0bVpZemwvRDhXNHRZU2NmQjlFdzRlSCtKOHRkcm9n?= =?utf-8?B?Qklia1daUjY1U3p3andscVVBd0tsemZEZEN6QnFTcG1xQmtvdGVHWkJIQVFh?= =?utf-8?B?aTJwWkp5MVpvc1FsYWdmSVRGbnFYQUJYeVY2eFlRblZNMEFnek9XKzNuTTFX?= =?utf-8?B?cDBxY2Y1Qi9TeU5LTWd5cWdSUnpBTThucjRodjdTemJ4WkUrdUhGNEg5Z2Jy?= =?utf-8?B?emp4ai91eGJIa0R5cVZZVUxsN2wxbG1TUzUrODFCQXlFQkl5SS9aMlN0dTlH?= =?utf-8?B?TnRDZkRrRnptd2hYQWwybFh0RVBaOWUvMnJpVTQreE1QU3dZVFU2SzluYUJ4?= =?utf-8?B?SDZWZVkzSmY2aXNGVFVsR1ZtQ2pId0d6MGRVdkNQeDJsMWxHVU5WRVNHNXRa?= =?utf-8?B?VkZ0b3JyZERLL1lWVnBPK0YxRmp4K09XbVlORVFvdjBKL1RZV3UvWTI5cWhZ?= =?utf-8?B?QkcrRGNxS2RxOW1UTVlxTFRkbndFVXB3QW02Z2hlMk9UN0p5djFkczlid3V0?= =?utf-8?B?TlAvKzJpMkk5MjZBRUc1bzQvSU1XSTRTbmJmOEN2dDJRNUFsWUJUbGFNWWRa?= =?utf-8?B?aWprSVJOM0VCSTloSys3ZzAreWVpODhVekNoUUNESWZ6WThhcGZ1NVlpMXE5?= =?utf-8?Q?nDGbK0zyS2//DQNvF3Xo/ehc/80FvDqp5nBZqm6?= X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: eed64e26-deef-49a8-68e7-08d98807bba5 X-MS-Exchange-CrossTenant-AuthSource: PH0PR11MB5657.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Oct 2021 13:55:04.6662 (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: 7pH1p7ul28wYtq778fggiMNfybkZNtePHFoMpHdPGq2H2Kfl76gsFuwbkgbYVCLOEwlY2DvBQzQQo1bequTpEw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB5644 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org RnJvbTogSsOpcsO0bWUgUG91aWxsZXIgPGplcm9tZS5wb3VpbGxlckBzaWxhYnMuY29tPgoKU2ln bmVkLW9mZi1ieTogSsOpcsO0bWUgUG91aWxsZXIgPGplcm9tZS5wb3VpbGxlckBzaWxhYnMuY29t PgotLS0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvaGlmX3J4LmMgfCA0MTQgKysr KysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvaGlm X3J4LmggfCAgMTcgKwogMiBmaWxlcyBjaGFuZ2VkLCA0MzEgaW5zZXJ0aW9ucygrKQogY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvaGlmX3J4LmMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L2hpZl9yeC5o CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9oaWZfcnguYyBi L2RyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvaGlmX3J4LmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xM2FiZTNlZDQ4MWEKLS0tIC9kZXYvbnVsbAorKysg Yi9kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L2hpZl9yeC5jCkBAIC0wLDAgKzEsNDE0 IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CisvKgorICogSGFu ZGxpbmcgb2YgdGhlIGNoaXAtdG8taG9zdCBldmVudHMgKGFrYSBpbmRpY2F0aW9ucykgb2YgdGhl IGhhcmR3YXJlIEFQSS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMCwgU2lsaWNvbiBM YWJvcmF0b3JpZXMsIEluYy4KKyAqIENvcHlyaWdodCAoYykgMjAxMCwgU1QtRXJpY3Nzb24KKyAq LworI2luY2x1ZGUgPGxpbnV4L3NrYnVmZi5oPgorI2luY2x1ZGUgPGxpbnV4L2V0aGVyZGV2aWNl Lmg+CisKKyNpbmNsdWRlICJoaWZfcnguaCIKKyNpbmNsdWRlICJ3ZnguaCIKKyNpbmNsdWRlICJz Y2FuLmgiCisjaW5jbHVkZSAiYmguaCIKKyNpbmNsdWRlICJzdGEuaCIKKyNpbmNsdWRlICJkYXRh X3J4LmgiCisjaW5jbHVkZSAiaGlmX2FwaV9jbWQuaCIKKworc3RhdGljIGludCB3ZnhfaGlmX2dl bmVyaWNfY29uZmlybShzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwKKwkJCQkgICBjb25zdCBzdHJ1Y3Qg d2Z4X2hpZl9tc2cgKmhpZiwgY29uc3Qgdm9pZCAqYnVmKQoreworCS8qIEFsbCBjb25maXJtIG1l c3NhZ2VzIHN0YXJ0IHdpdGggc3RhdHVzICovCisJaW50IHN0YXR1cyA9IGxlMzJfdG9fY3B1cCgo X19sZTMyICopYnVmKTsKKwlpbnQgY21kID0gaGlmLT5pZDsKKwlpbnQgbGVuID0gbGUxNl90b19j cHUoaGlmLT5sZW4pIC0gNDsgLyogZHJvcCBoZWFkZXIgKi8KKworCVdBUk4oIW11dGV4X2lzX2xv Y2tlZCgmd2Rldi0+aGlmX2NtZC5sb2NrKSwgImRhdGEgbG9ja2luZyBlcnJvciIpOworCisJaWYg KCF3ZGV2LT5oaWZfY21kLmJ1Zl9zZW5kKSB7CisJCWRldl93YXJuKHdkZXYtPmRldiwgInVuZXhw ZWN0ZWQgY29uZmlybWF0aW9uOiAweCUuMnhcbiIsIGNtZCk7CisJCXJldHVybiAtRUlOVkFMOwor CX0KKworCWlmIChjbWQgIT0gd2Rldi0+aGlmX2NtZC5idWZfc2VuZC0+aWQpIHsKKwkJZGV2X3dh cm4od2Rldi0+ZGV2LAorCQkJICJjaGlwIHJlc3BvbnNlIG1pc21hdGNoIHJlcXVlc3Q6IDB4JS4y eCB2cyAweCUuMnhcbiIsCisJCQkgY21kLCB3ZGV2LT5oaWZfY21kLmJ1Zl9zZW5kLT5pZCk7CisJ CXJldHVybiAtRUlOVkFMOworCX0KKworCWlmICh3ZGV2LT5oaWZfY21kLmJ1Zl9yZWN2KSB7CisJ CWlmICh3ZGV2LT5oaWZfY21kLmxlbl9yZWN2ID49IGxlbiAmJiBsZW4gPiAwKQorCQkJbWVtY3B5 KHdkZXYtPmhpZl9jbWQuYnVmX3JlY3YsIGJ1ZiwgbGVuKTsKKwkJZWxzZQorCQkJc3RhdHVzID0g LUVJTzsKKwl9CisJd2Rldi0+aGlmX2NtZC5yZXQgPSBzdGF0dXM7CisKKwljb21wbGV0ZSgmd2Rl di0+aGlmX2NtZC5kb25lKTsKKwlyZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgaW50IHdmeF9o aWZfdHhfY29uZmlybShzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwKKwkJCSAgICAgIGNvbnN0IHN0cnVj dCB3ZnhfaGlmX21zZyAqaGlmLCBjb25zdCB2b2lkICpidWYpCit7CisJY29uc3Qgc3RydWN0IHdm eF9oaWZfY25mX3R4ICpib2R5ID0gYnVmOworCisJd2Z4X3R4X2NvbmZpcm1fY2Iod2RldiwgYm9k eSk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgd2Z4X2hpZl9tdWx0aV90eF9jb25maXJt KHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LAorCQkJCSAgICBjb25zdCBzdHJ1Y3Qgd2Z4X2hpZl9tc2cg KmhpZiwgY29uc3Qgdm9pZCAqYnVmKQoreworCWNvbnN0IHN0cnVjdCB3ZnhfaGlmX2NuZl9tdWx0 aV90cmFuc21pdCAqYm9keSA9IGJ1ZjsKKwlpbnQgaTsKKworCVdBUk4oYm9keS0+bnVtX3R4X2Nv bmZzIDw9IDAsICJjb3JydXB0ZWQgbWVzc2FnZSIpOworCWZvciAoaSA9IDA7IGkgPCBib2R5LT5u dW1fdHhfY29uZnM7IGkrKykKKwkJd2Z4X3R4X2NvbmZpcm1fY2Iod2RldiwgJmJvZHktPnR4X2Nv bmZfcGF5bG9hZFtpXSk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgd2Z4X2hpZl9zdGFy dHVwX2luZGljYXRpb24oc3RydWN0IHdmeF9kZXYgKndkZXYsCisJCQkJICAgICAgY29uc3Qgc3Ry dWN0IHdmeF9oaWZfbXNnICpoaWYsCisJCQkJICAgICAgY29uc3Qgdm9pZCAqYnVmKQoreworCWNv bnN0IHN0cnVjdCB3ZnhfaGlmX2luZF9zdGFydHVwICpib2R5ID0gYnVmOworCisJaWYgKGJvZHkt PnN0YXR1cyB8fCBib2R5LT5maXJtd2FyZV90eXBlID4gNCkgeworCQlkZXZfZXJyKHdkZXYtPmRl diwgInJlY2VpdmVkIGludmFsaWQgc3RhcnR1cCBpbmRpY2F0aW9uIik7CisJCXJldHVybiAtRUlO VkFMOworCX0KKwltZW1jcHkoJndkZXYtPmh3X2NhcHMsIGJvZHksIHNpemVvZihzdHJ1Y3Qgd2Z4 X2hpZl9pbmRfc3RhcnR1cCkpOworCWNvbXBsZXRlKCZ3ZGV2LT5maXJtd2FyZV9yZWFkeSk7CisJ cmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgd2Z4X2hpZl93YWtldXBfaW5kaWNhdGlvbihzdHJ1 Y3Qgd2Z4X2RldiAqd2RldiwKKwkJCQkgICAgIGNvbnN0IHN0cnVjdCB3ZnhfaGlmX21zZyAqaGlm LAorCQkJCSAgICAgY29uc3Qgdm9pZCAqYnVmKQoreworCWlmICghd2Rldi0+cGRhdGEuZ3Bpb193 YWtldXAgfHwKKwkgICAgZ3Bpb2RfZ2V0X3ZhbHVlKHdkZXYtPnBkYXRhLmdwaW9fd2FrZXVwKSA9 PSAwKSB7CisJCWRldl93YXJuKHdkZXYtPmRldiwgInVuZXhwZWN0ZWQgd2FrZS11cCBpbmRpY2F0 aW9uXG4iKTsKKwkJcmV0dXJuIC1FSU87CisJfQorCXJldHVybiAwOworfQorCitzdGF0aWMgaW50 IHdmeF9oaWZfcmVjZWl2ZV9pbmRpY2F0aW9uKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LAorCQkJCSAg ICAgIGNvbnN0IHN0cnVjdCB3ZnhfaGlmX21zZyAqaGlmLAorCQkJCSAgICAgIGNvbnN0IHZvaWQg KmJ1Ziwgc3RydWN0IHNrX2J1ZmYgKnNrYikKK3sKKwlzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiA9IHdk ZXZfdG9fd3ZpZih3ZGV2LCBoaWYtPmludGVyZmFjZSk7CisJY29uc3Qgc3RydWN0IHdmeF9oaWZf aW5kX3J4ICpib2R5ID0gYnVmOworCisJaWYgKCF3dmlmKSB7CisJCWRldl93YXJuKHdkZXYtPmRl diwgIiVzOiByZWNlaXZlZCBldmVudCBmb3Igbm9uLWV4aXN0ZW50IHZpZlxuIiwgX19mdW5jX18p OworCQlyZXR1cm4gLUVJTzsKKwl9CisJc2tiX3B1bGwoc2tiLCBzaXplb2Yoc3RydWN0IHdmeF9o aWZfbXNnKSArIHNpemVvZihzdHJ1Y3Qgd2Z4X2hpZl9pbmRfcngpKTsKKwl3ZnhfcnhfY2Iod3Zp ZiwgYm9keSwgc2tiKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHdmeF9oaWZfZXZl bnRfaW5kaWNhdGlvbihzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwKKwkJCQkgICAgY29uc3Qgc3RydWN0 IHdmeF9oaWZfbXNnICpoaWYsIGNvbnN0IHZvaWQgKmJ1ZikKK3sKKwlzdHJ1Y3Qgd2Z4X3ZpZiAq d3ZpZiA9IHdkZXZfdG9fd3ZpZih3ZGV2LCBoaWYtPmludGVyZmFjZSk7CisJY29uc3Qgc3RydWN0 IHdmeF9oaWZfaW5kX2V2ZW50ICpib2R5ID0gYnVmOworCWludCB0eXBlID0gbGUzMl90b19jcHUo Ym9keS0+ZXZlbnRfaWQpOworCisJaWYgKCF3dmlmKSB7CisJCWRldl93YXJuKHdkZXYtPmRldiwg IiVzOiByZWNlaXZlZCBldmVudCBmb3Igbm9uLWV4aXN0ZW50IHZpZlxuIiwgX19mdW5jX18pOwor CQlyZXR1cm4gLUVJTzsKKwl9CisKKwlzd2l0Y2ggKHR5cGUpIHsKKwljYXNlIEhJRl9FVkVOVF9J TkRfUkNQSV9SU1NJOgorCQl3ZnhfZXZlbnRfcmVwb3J0X3Jzc2kod3ZpZiwgYm9keS0+ZXZlbnRf ZGF0YS5yY3BpX3Jzc2kpOworCQlicmVhazsKKwljYXNlIEhJRl9FVkVOVF9JTkRfQlNTTE9TVDoK KwkJc2NoZWR1bGVfZGVsYXllZF93b3JrKCZ3dmlmLT5iZWFjb25fbG9zc193b3JrLCAwKTsKKwkJ YnJlYWs7CisJY2FzZSBISUZfRVZFTlRfSU5EX0JTU1JFR0FJTkVEOgorCQljYW5jZWxfZGVsYXll ZF93b3JrKCZ3dmlmLT5iZWFjb25fbG9zc193b3JrKTsKKwkJZGV2X2RiZyh3ZGV2LT5kZXYsICJp Z25vcmUgQlNTUkVHQUlORUQgaW5kaWNhdGlvblxuIik7CisJCWJyZWFrOworCWNhc2UgSElGX0VW RU5UX0lORF9QU19NT0RFX0VSUk9SOgorCQlkZXZfd2Fybih3ZGV2LT5kZXYsICJlcnJvciB3aGls ZSBwcm9jZXNzaW5nIHBvd2VyIHNhdmUgcmVxdWVzdDogJWRcbiIsCisJCQkgbGUzMl90b19jcHUo Ym9keS0+ZXZlbnRfZGF0YS5wc19tb2RlX2Vycm9yKSk7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJ CWRldl93YXJuKHdkZXYtPmRldiwgInVuaGFuZGxlZCBldmVudCBpbmRpY2F0aW9uOiAlLjJ4XG4i LAorCQkJIHR5cGUpOworCQlicmVhazsKKwl9CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQg d2Z4X2hpZl9wbV9tb2RlX2NvbXBsZXRlX2luZGljYXRpb24oc3RydWN0IHdmeF9kZXYgKndkZXYs CisJCQkJCSAgICAgICBjb25zdCBzdHJ1Y3Qgd2Z4X2hpZl9tc2cgKmhpZiwKKwkJCQkJICAgICAg IGNvbnN0IHZvaWQgKmJ1ZikKK3sKKwlzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiA9IHdkZXZfdG9fd3Zp Zih3ZGV2LCBoaWYtPmludGVyZmFjZSk7CisKKwlpZiAoIXd2aWYpIHsKKwkJZGV2X3dhcm4od2Rl di0+ZGV2LCAiJXM6IHJlY2VpdmVkIGV2ZW50IGZvciBub24tZXhpc3RlbnQgdmlmXG4iLCBfX2Z1 bmNfXyk7CisJCXJldHVybiAtRUlPOworCX0KKwljb21wbGV0ZSgmd3ZpZi0+c2V0X3BtX21vZGVf Y29tcGxldGUpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgd2Z4X2hpZl9zY2FuX2Nv bXBsZXRlX2luZGljYXRpb24oc3RydWN0IHdmeF9kZXYgKndkZXYsCisJCQkJCSAgICBjb25zdCBz dHJ1Y3Qgd2Z4X2hpZl9tc2cgKmhpZiwKKwkJCQkJICAgIGNvbnN0IHZvaWQgKmJ1ZikKK3sKKwlz dHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZiA9IHdkZXZfdG9fd3ZpZih3ZGV2LCBoaWYtPmludGVyZmFjZSk7 CisJY29uc3Qgc3RydWN0IHdmeF9oaWZfaW5kX3NjYW5fY21wbCAqYm9keSA9IGJ1ZjsKKworCWlm ICghd3ZpZikgeworCQlkZXZfd2Fybih3ZGV2LT5kZXYsICIlczogcmVjZWl2ZWQgZXZlbnQgZm9y IG5vbi1leGlzdGVudCB2aWZcbiIsIF9fZnVuY19fKTsKKwkJcmV0dXJuIC1FSU87CisJfQorCisJ d2Z4X3NjYW5fY29tcGxldGUod3ZpZiwgYm9keS0+bnVtX2NoYW5uZWxzX2NvbXBsZXRlZCk7CisK KwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCB3ZnhfaGlmX2pvaW5fY29tcGxldGVfaW5kaWNh dGlvbihzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwKKwkJCQkJICAgIGNvbnN0IHN0cnVjdCB3ZnhfaGlm X21zZyAqaGlmLAorCQkJCQkgICAgY29uc3Qgdm9pZCAqYnVmKQoreworCXN0cnVjdCB3Znhfdmlm ICp3dmlmID0gd2Rldl90b193dmlmKHdkZXYsIGhpZi0+aW50ZXJmYWNlKTsKKworCWlmICghd3Zp ZikgeworCQlkZXZfd2Fybih3ZGV2LT5kZXYsICIlczogcmVjZWl2ZWQgZXZlbnQgZm9yIG5vbi1l eGlzdGVudCB2aWZcbiIsIF9fZnVuY19fKTsKKwkJcmV0dXJuIC1FSU87CisJfQorCWRldl93YXJu KHdkZXYtPmRldiwgInVuYXR0ZW5kZWQgSm9pbkNvbXBsZXRlSW5kXG4iKTsKKworCXJldHVybiAw OworfQorCitzdGF0aWMgaW50IHdmeF9oaWZfc3VzcGVuZF9yZXN1bWVfaW5kaWNhdGlvbihzdHJ1 Y3Qgd2Z4X2RldiAqd2RldiwKKwkJCQkJICAgICBjb25zdCBzdHJ1Y3Qgd2Z4X2hpZl9tc2cgKmhp ZiwKKwkJCQkJICAgICBjb25zdCB2b2lkICpidWYpCit7CisJY29uc3Qgc3RydWN0IHdmeF9oaWZf aW5kX3N1c3BlbmRfcmVzdW1lX3R4ICpib2R5ID0gYnVmOworCXN0cnVjdCB3ZnhfdmlmICp3dmlm OworCisJaWYgKGJvZHktPmJjX21jX29ubHkpIHsKKwkJd3ZpZiA9IHdkZXZfdG9fd3ZpZih3ZGV2 LCBoaWYtPmludGVyZmFjZSk7CisJCWlmICghd3ZpZikgeworCQkJZGV2X3dhcm4od2Rldi0+ZGV2 LCAiJXM6IHJlY2VpdmVkIGV2ZW50IGZvciBub24tZXhpc3RlbnQgdmlmXG4iLCBfX2Z1bmNfXyk7 CisJCQlyZXR1cm4gLUVJTzsKKwkJfQorCQlpZiAoYm9keS0+cmVzdW1lKQorCQkJd2Z4X3N1c3Bl bmRfcmVzdW1lX21jKHd2aWYsIFNUQV9OT1RJRllfQVdBS0UpOworCQllbHNlCisJCQl3Znhfc3Vz cGVuZF9yZXN1bWVfbWMod3ZpZiwgU1RBX05PVElGWV9TTEVFUCk7CisJfSBlbHNlIHsKKwkJV0FS Tihib2R5LT5wZWVyX3N0YV9zZXQsICJtaXN1bmRlcnN0b29kIGluZGljYXRpb24iKTsKKwkJV0FS TihoaWYtPmludGVyZmFjZSAhPSAyLCAibWlzdW5kZXJzdG9vZCBpbmRpY2F0aW9uIik7CisJCWlm IChib2R5LT5yZXN1bWUpCisJCQl3Znhfc3VzcGVuZF9ob3RfZGV2KHdkZXYsIFNUQV9OT1RJRllf QVdBS0UpOworCQllbHNlCisJCQl3Znhfc3VzcGVuZF9ob3RfZGV2KHdkZXYsIFNUQV9OT1RJRllf U0xFRVApOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHdmeF9oaWZfZ2VuZXJp Y19pbmRpY2F0aW9uKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LAorCQkJCSAgICAgIGNvbnN0IHN0cnVj dCB3ZnhfaGlmX21zZyAqaGlmLAorCQkJCSAgICAgIGNvbnN0IHZvaWQgKmJ1ZikKK3sKKwljb25z dCBzdHJ1Y3Qgd2Z4X2hpZl9pbmRfZ2VuZXJpYyAqYm9keSA9IGJ1ZjsKKwlpbnQgdHlwZSA9IGxl MzJfdG9fY3B1KGJvZHktPnR5cGUpOworCisJc3dpdGNoICh0eXBlKSB7CisJY2FzZSBISUZfR0VO RVJJQ19JTkRJQ0FUSU9OX1RZUEVfUkFXOgorCQlyZXR1cm4gMDsKKwljYXNlIEhJRl9HRU5FUklD X0lORElDQVRJT05fVFlQRV9TVFJJTkc6CisJCWRldl9pbmZvKHdkZXYtPmRldiwgImZpcm13YXJl IHNheXM6ICVzXG4iLCAoY2hhciAqKSZib2R5LT5kYXRhKTsKKwkJcmV0dXJuIDA7CisJY2FzZSBI SUZfR0VORVJJQ19JTkRJQ0FUSU9OX1RZUEVfUlhfU1RBVFM6CisJCW11dGV4X2xvY2soJndkZXYt PnJ4X3N0YXRzX2xvY2spOworCQkvKiBPbGRlciBmaXJtd2FyZSBzZW5kIGEgZ2VuZXJpYyBpbmRp Y2F0aW9uIGJlc2lkZSBSeFN0YXRzICovCisJCWlmICghd2Z4X2FwaV9vbGRlcl90aGFuKHdkZXYs IDEsIDQpKQorCQkJZGV2X2luZm8od2Rldi0+ZGV2LCAiUnggdGVzdCBvbmdvaW5nLiBUZW1wZXJh dHVyZTogJWQgZGVncmVlcyBDXG4iLAorCQkJCSBib2R5LT5kYXRhLnJ4X3N0YXRzLmN1cnJlbnRf dGVtcCk7CisJCW1lbWNweSgmd2Rldi0+cnhfc3RhdHMsICZib2R5LT5kYXRhLnJ4X3N0YXRzLAor CQkgICAgICAgc2l6ZW9mKHdkZXYtPnJ4X3N0YXRzKSk7CisJCW11dGV4X3VubG9jaygmd2Rldi0+ cnhfc3RhdHNfbG9jayk7CisJCXJldHVybiAwOworCWNhc2UgSElGX0dFTkVSSUNfSU5ESUNBVElP Tl9UWVBFX1RYX1BPV0VSX0xPT1BfSU5GTzoKKwkJbXV0ZXhfbG9jaygmd2Rldi0+dHhfcG93ZXJf bG9vcF9pbmZvX2xvY2spOworCQltZW1jcHkoJndkZXYtPnR4X3Bvd2VyX2xvb3BfaW5mbywKKwkJ ICAgICAgICZib2R5LT5kYXRhLnR4X3Bvd2VyX2xvb3BfaW5mbywKKwkJICAgICAgIHNpemVvZih3 ZGV2LT50eF9wb3dlcl9sb29wX2luZm8pKTsKKwkJbXV0ZXhfdW5sb2NrKCZ3ZGV2LT50eF9wb3dl cl9sb29wX2luZm9fbG9jayk7CisJCXJldHVybiAwOworCWRlZmF1bHQ6CisJCWRldl9lcnIod2Rl di0+ZGV2LCAiZ2VuZXJpY19pbmRpY2F0aW9uOiB1bmtub3duIGluZGljYXRpb24gdHlwZTogJSMu OHhcbiIsCisJCQl0eXBlKTsKKwkJcmV0dXJuIC1FSU87CisJfQorfQorCitzdGF0aWMgY29uc3Qg c3RydWN0IHsKKwlpbnQgdmFsOworCWNvbnN0IGNoYXIgKnN0cjsKKwlib29sIGhhc19wYXJhbTsK K30gaGlmX2Vycm9yc1tdID0geworCXsgSElGX0VSUk9SX0ZJUk1XQVJFX1JPTExCQUNLLAorCQki cm9sbGJhY2sgc3RhdHVzIiB9LAorCXsgSElGX0VSUk9SX0ZJUk1XQVJFX0RFQlVHX0VOQUJMRUQs CisJCSJkZWJ1ZyBmZWF0dXJlIGVuYWJsZWQiIH0sCisJeyBISUZfRVJST1JfUERTX1BBWUxPQUQs CisJCSJQRFMgdmVyc2lvbiBpcyBub3Qgc3VwcG9ydGVkIiB9LAorCXsgSElGX0VSUk9SX1BEU19U RVNURkVBVFVSRSwKKwkJIlBEUyBhc2sgZm9yIGFuIHVua25vd24gdGVzdCBtb2RlIiB9LAorCXsg SElGX0VSUk9SX09PUl9WT0xUQUdFLAorCQkib3V0LW9mLXJhbmdlIHBvd2VyIHN1cHBseSB2b2x0 YWdlIiwgdHJ1ZSB9LAorCXsgSElGX0VSUk9SX09PUl9URU1QRVJBVFVSRSwKKwkJIm91dC1vZi1y YW5nZSB0ZW1wZXJhdHVyZSIsIHRydWUgfSwKKwl7IEhJRl9FUlJPUl9TTEtfUkVRX0RVUklOR19L RVlfRVhDSEFOR0UsCisJCSJzZWN1cmUgbGluayBkb2VzIG5vdCBleHBlY3QgcmVxdWVzdCBkdXJp bmcga2V5IGV4Y2hhbmdlIiB9LAorCXsgSElGX0VSUk9SX1NMS19TRVNTSU9OX0tFWSwKKwkJInNl Y3VyZSBsaW5rIHNlc3Npb24ga2V5IGlzIGludmFsaWQiIH0sCisJeyBISUZfRVJST1JfU0xLX09W RVJGTE9XLAorCQkic2VjdXJlIGxpbmsgb3ZlcmZsb3ciIH0sCisJeyBISUZfRVJST1JfU0xLX1dS T05HX0VOQ1JZUFRJT05fU1RBVEUsCisJCSJzZWN1cmUgbGluayBtZXNzYWdlcyBsaXN0IGRvZXMg bm90IG1hdGNoIG1lc3NhZ2UgZW5jcnlwdGlvbiIgfSwKKwl7IEhJRl9FUlJPUl9TTEtfVU5DT05G SUdVUkVELAorCQkic2VjdXJlIGxpbmsgbm90IHlldCBjb25maWd1cmVkIiB9LAorCXsgSElGX0VS Uk9SX0hJRl9CVVNfRlJFUVVFTkNZX1RPT19MT1csCisJCSJidXMgY2xvY2sgaXMgdG9vIHNsb3cg KDwxa0h6KSIgfSwKKwl7IEhJRl9FUlJPUl9ISUZfUlhfREFUQV9UT09fTEFSR0UsCisJCSJISUYg bWVzc2FnZSB0b28gbGFyZ2UiIH0sCisJLyogRm9sbG93aW5nIGVycm9ycyBvbmx5IGV4aXN0cyBp biBvbGQgZmlybXdhcmUgdmVyc2lvbnM6ICovCisJeyBISUZfRVJST1JfSElGX1RYX1FVRVVFX0ZV TEwsCisJCSJISUYgbWVzc2FnZXMgcXVldWUgaXMgZnVsbCIgfSwKKwl7IEhJRl9FUlJPUl9ISUZf QlVTLAorCQkiSElGIGJ1cyIgfSwKKwl7IEhJRl9FUlJPUl9TTEtfTVVMVElfVFhfVU5TVVBQT1JU RUQsCisJCSJzZWN1cmUgbGluayBkb2VzIG5vdCBzdXBwb3J0IG11bHRpLXR4IGNvbmZpcm1hdGlv bnMiIH0sCisJeyBISUZfRVJST1JfU0xLX09VVERBVEVEX1NFU1NJT05fS0VZLAorCQkic2VjdXJl IGxpbmsgc2Vzc2lvbiBrZXkgaXMgb3V0ZGF0ZWQiIH0sCisJeyBISUZfRVJST1JfU0xLX0RFQ1JZ UFRJT04sCisJCSJzZWN1cmUgbGluayBwYXJhbXMgKG5vbmNlIG9yIHRhZykgbWlzbWF0Y2giIH0s Cit9OworCitzdGF0aWMgaW50IHdmeF9oaWZfZXJyb3JfaW5kaWNhdGlvbihzdHJ1Y3Qgd2Z4X2Rl diAqd2RldiwKKwkJCQkgICAgY29uc3Qgc3RydWN0IHdmeF9oaWZfbXNnICpoaWYsIGNvbnN0IHZv aWQgKmJ1ZikKK3sKKwljb25zdCBzdHJ1Y3Qgd2Z4X2hpZl9pbmRfZXJyb3IgKmJvZHkgPSBidWY7 CisJaW50IHR5cGUgPSBsZTMyX3RvX2NwdShib2R5LT50eXBlKTsKKwlpbnQgcGFyYW0gPSAoczgp Ym9keS0+ZGF0YVswXTsKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGhp Zl9lcnJvcnMpOyBpKyspCisJCWlmICh0eXBlID09IGhpZl9lcnJvcnNbaV0udmFsKQorCQkJYnJl YWs7CisJaWYgKGkgPCBBUlJBWV9TSVpFKGhpZl9lcnJvcnMpKQorCQlpZiAoaGlmX2Vycm9yc1tp XS5oYXNfcGFyYW0pCisJCQlkZXZfZXJyKHdkZXYtPmRldiwgImFzeW5jaHJvbm91cyBlcnJvcjog JXM6ICVkXG4iLAorCQkJCWhpZl9lcnJvcnNbaV0uc3RyLCBwYXJhbSk7CisJCWVsc2UKKwkJCWRl dl9lcnIod2Rldi0+ZGV2LCAiYXN5bmNocm9ub3VzIGVycm9yOiAlc1xuIiwKKwkJCQloaWZfZXJy b3JzW2ldLnN0cik7CisJZWxzZQorCQlkZXZfZXJyKHdkZXYtPmRldiwgImFzeW5jaHJvbm91cyBl cnJvcjogdW5rbm93bjogJTA4eFxuIiwgdHlwZSk7CisJcHJpbnRfaGV4X2R1bXAoS0VSTl9JTkZP LCAiaGlmOiAiLCBEVU1QX1BSRUZJWF9PRkZTRVQsCisJCSAgICAgICAxNiwgMSwgaGlmLCBsZTE2 X3RvX2NwdShoaWYtPmxlbiksIGZhbHNlKTsKKwl3ZGV2LT5jaGlwX2Zyb3plbiA9IHRydWU7CisK KwlyZXR1cm4gMDsKK307CisKK3N0YXRpYyBpbnQgd2Z4X2hpZl9leGNlcHRpb25faW5kaWNhdGlv bihzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwKKwkJCQkJY29uc3Qgc3RydWN0IHdmeF9oaWZfbXNnICpo aWYsCisJCQkJCWNvbnN0IHZvaWQgKmJ1ZikKK3sKKwljb25zdCBzdHJ1Y3Qgd2Z4X2hpZl9pbmRf ZXhjZXB0aW9uICpib2R5ID0gYnVmOworCWludCB0eXBlID0gbGUzMl90b19jcHUoYm9keS0+dHlw ZSk7CisKKwlpZiAodHlwZSA9PSA0KQorCQlkZXZfZXJyKHdkZXYtPmRldiwgImZpcm13YXJlIGFz c2VydCAlZFxuIiwKKwkJCWxlMzJfdG9fY3B1cCgoX19sZTMyICopYm9keS0+ZGF0YSkpOworCWVs c2UKKwkJZGV2X2Vycih3ZGV2LT5kZXYsICJmaXJtd2FyZSBleGNlcHRpb25cbiIpOworCXByaW50 X2hleF9kdW1wKEtFUk5fSU5GTywgImhpZjogIiwgRFVNUF9QUkVGSVhfT0ZGU0VULAorCQkgICAg ICAgMTYsIDEsIGhpZiwgbGUxNl90b19jcHUoaGlmLT5sZW4pLCBmYWxzZSk7CisJd2Rldi0+Y2hp cF9mcm96ZW4gPSB0cnVlOworCisJcmV0dXJuIC0xOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0 IHsKKwlpbnQgbXNnX2lkOworCWludCAoKmhhbmRsZXIpKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LAor CQkgICAgICAgY29uc3Qgc3RydWN0IHdmeF9oaWZfbXNnICpoaWYsIGNvbnN0IHZvaWQgKmJ1Zik7 Cit9IGhpZl9oYW5kbGVyc1tdID0geworCS8qIENvbmZpcm1hdGlvbnMgKi8KKwl7IEhJRl9DTkZf SURfVFgsICAgICAgICAgICAgICAgIHdmeF9oaWZfdHhfY29uZmlybSB9LAorCXsgSElGX0NORl9J RF9NVUxUSV9UUkFOU01JVCwgICAgd2Z4X2hpZl9tdWx0aV90eF9jb25maXJtIH0sCisJLyogSW5k aWNhdGlvbnMgKi8KKwl7IEhJRl9JTkRfSURfU1RBUlRVUCwgICAgICAgICAgIHdmeF9oaWZfc3Rh cnR1cF9pbmRpY2F0aW9uIH0sCisJeyBISUZfSU5EX0lEX1dBS0VVUCwgICAgICAgICAgICB3Znhf aGlmX3dha2V1cF9pbmRpY2F0aW9uIH0sCisJeyBISUZfSU5EX0lEX0pPSU5fQ09NUExFVEUsICAg ICB3ZnhfaGlmX2pvaW5fY29tcGxldGVfaW5kaWNhdGlvbiB9LAorCXsgSElGX0lORF9JRF9TRVRf UE1fTU9ERV9DTVBMLCAgd2Z4X2hpZl9wbV9tb2RlX2NvbXBsZXRlX2luZGljYXRpb24gfSwKKwl7 IEhJRl9JTkRfSURfU0NBTl9DTVBMLCAgICAgICAgIHdmeF9oaWZfc2Nhbl9jb21wbGV0ZV9pbmRp Y2F0aW9uIH0sCisJeyBISUZfSU5EX0lEX1NVU1BFTkRfUkVTVU1FX1RYLCB3ZnhfaGlmX3N1c3Bl bmRfcmVzdW1lX2luZGljYXRpb24gfSwKKwl7IEhJRl9JTkRfSURfRVZFTlQsICAgICAgICAgICAg IHdmeF9oaWZfZXZlbnRfaW5kaWNhdGlvbiB9LAorCXsgSElGX0lORF9JRF9HRU5FUklDLCAgICAg ICAgICAgd2Z4X2hpZl9nZW5lcmljX2luZGljYXRpb24gfSwKKwl7IEhJRl9JTkRfSURfRVJST1Is ICAgICAgICAgICAgIHdmeF9oaWZfZXJyb3JfaW5kaWNhdGlvbiB9LAorCXsgSElGX0lORF9JRF9F WENFUFRJT04sICAgICAgICAgd2Z4X2hpZl9leGNlcHRpb25faW5kaWNhdGlvbiB9LAorCS8qIEZJ WE1FOiBhbGxvY2F0ZSBza2JfcCBmcm9tIHdmeF9oaWZfcmVjZWl2ZV9pbmRpY2F0aW9uIGFuZCBt YWtlIGl0IGdlbmVyaWMgKi8KKwkvL3sgSElGX0lORF9JRF9SWCwgICAgICAgICAgICAgIHdmeF9o aWZfcmVjZWl2ZV9pbmRpY2F0aW9uIH0sCit9OworCit2b2lkIHdmeF9oYW5kbGVfcngoc3RydWN0 IHdmeF9kZXYgKndkZXYsIHN0cnVjdCBza19idWZmICpza2IpCit7CisJaW50IGk7CisJY29uc3Qg c3RydWN0IHdmeF9oaWZfbXNnICpoaWYgPSAoY29uc3Qgc3RydWN0IHdmeF9oaWZfbXNnICopc2ti LT5kYXRhOworCWludCBoaWZfaWQgPSBoaWYtPmlkOworCisJaWYgKGhpZl9pZCA9PSBISUZfSU5E X0lEX1JYKSB7CisJCS8qIHdmeF9oaWZfcmVjZWl2ZV9pbmRpY2F0aW9uIHRha2UgY2FyZSBvZiBz a2IgbGlmZXRpbWUgKi8KKwkJd2Z4X2hpZl9yZWNlaXZlX2luZGljYXRpb24od2RldiwgaGlmLCBo aWYtPmJvZHksIHNrYik7CisJCXJldHVybjsKKwl9CisJLyogTm90ZTogbXV0ZXhfaXNfbG9jayBj YXVzZSBhbiBpbXBsaWNpdCBtZW1vcnkgYmFycmllciB0aGF0IHByb3RlY3QKKwkgKiBidWZfc2Vu ZAorCSAqLworCWlmIChtdXRleF9pc19sb2NrZWQoJndkZXYtPmhpZl9jbWQubG9jaykgJiYKKwkg ICAgd2Rldi0+aGlmX2NtZC5idWZfc2VuZCAmJgorCSAgICB3ZGV2LT5oaWZfY21kLmJ1Zl9zZW5k LT5pZCA9PSBoaWZfaWQpIHsKKwkJd2Z4X2hpZl9nZW5lcmljX2NvbmZpcm0od2RldiwgaGlmLCBo aWYtPmJvZHkpOworCQlnb3RvIGZyZWU7CisJfQorCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpF KGhpZl9oYW5kbGVycyk7IGkrKykgeworCQlpZiAoaGlmX2hhbmRsZXJzW2ldLm1zZ19pZCA9PSBo aWZfaWQpIHsKKwkJCWlmIChoaWZfaGFuZGxlcnNbaV0uaGFuZGxlcikKKwkJCQloaWZfaGFuZGxl cnNbaV0uaGFuZGxlcih3ZGV2LCBoaWYsIGhpZi0+Ym9keSk7CisJCQlnb3RvIGZyZWU7CisJCX0K Kwl9CisJaWYgKGhpZl9pZCAmIEhJRl9JRF9JU19JTkRJQ0FUSU9OKQorCQlkZXZfZXJyKHdkZXYt PmRldiwgInVuc3VwcG9ydGVkIEhJRiBpbmRpY2F0aW9uOiBJRCAlMDJ4XG4iLAorCQkJaGlmX2lk KTsKKwllbHNlCisJCWRldl9lcnIod2Rldi0+ZGV2LCAidW5leHBlY3RlZCBISUYgY29uZmlybWF0 aW9uOiBJRCAlMDJ4XG4iLAorCQkJaGlmX2lkKTsKK2ZyZWU6CisJZGV2X2tmcmVlX3NrYihza2Ip OworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9oaWZfcngu aCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvaGlmX3J4LmgKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45NjU0M2I4MWZhNzcKLS0tIC9kZXYvbnVsbAor KysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L2hpZl9yeC5oCkBAIC0wLDAgKzEs MTcgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgKi8KKy8qCisg KiBIYW5kbGluZyBvZiB0aGUgY2hpcC10by1ob3N0IGV2ZW50cyAoYWthIGluZGljYXRpb25zKSBv ZiB0aGUgaGFyZHdhcmUgQVBJLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAxNy0yMDE5LCBTaWxp Y29uIExhYm9yYXRvcmllcywgSW5jLgorICogQ29weXJpZ2h0IChjKSAyMDEwLCBTVC1Fcmljc3Nv bgorICogQ29weXJpZ2h0IChDKSAyMDEwLCBTVC1Fcmljc3NvbiBTQQorICovCisjaWZuZGVmIFdG WF9ISUZfUlhfSAorI2RlZmluZSBXRlhfSElGX1JYX0gKKworc3RydWN0IHdmeF9kZXY7CitzdHJ1 Y3Qgc2tfYnVmZjsKKwordm9pZCB3ZnhfaGFuZGxlX3J4KHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCBz dHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKKworI2VuZGlmCi0tIAoyLjMzLjAKCg==