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,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 6ACC7C433FE for ; Fri, 17 Sep 2021 15:17:25 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 54A3560FA0 for ; Fri, 17 Sep 2021 15:17:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241972AbhIQPSp (ORCPT ); Fri, 17 Sep 2021 11:18:45 -0400 Received: from mail-mw2nam12on2059.outbound.protection.outlook.com ([40.107.244.59]:52499 "EHLO NAM12-MW2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1343984AbhIQPRI (ORCPT ); Fri, 17 Sep 2021 11:17:08 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MLFbeImJpXd9tdfim7tggcFalwN6/uKfTW1SLC0s5LKgat0qKmObcsVWLrqCyQ+bs7Fa92n184CsmyA+GRl/W08FI4keTbTLqa5FglFB4ZMfgIwWzXj6kVgcyITDJel+MW81tyD4KJGUTWjolkYyP0FR80xTec/OIwN4LetVSDWLa4GobT6hWYsJFjWI45oCBfE7MovvZyWmjKUZyHLPk20bcHDgnSq2KuIdO+sCsvhu0Vk61yqBK80vVDDBpwiA/4Exc0eoFsJUkZQxva/bFTMBdNcCXUXv4oEMY5f+sbBoJKx2D2PVhRtcY5cSzisMEGaq6HKWt4JPftHEWD/MBg== 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=UZxxXXAz7ZR4XxF24j4A0pLwmhewHrLqtPgDNBHacCHmKbmaKpsuZzPSBf9CNtyH4Nag8RUAH92+KyMV8xGn0LWzl1gJ0pahcA64aBkEV27GHPPSzQ8L6P5MGBUafl4JTIEonQ02X1bXvHi4OKwP0E2oWRe1UBP0zumt/guiNrVOmOihbdgqbqGT96sz8ZsVb2KOi2nEDYUkQD4edYeOPCmoazSkAXwHlSIJkO8tRjz00GFXPdge43G4IZewIf4yjgY/WmP2dx1m+H+Xvd2mhnKS+KP4nQxiYIG88iyX7MnAG0pKk541hDkq4/YMdoG0q9jWai7j7Jo1m9fJ81kFdQ== 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=PwXeNfoPTRl7yk83VQ6cAnoH4p/9869775sIxEFHIyqyC/pShiNP7xJChWYLvOE5bUIVc4ffUynP83u53XXqT6xwZHjy9LcjXYMInJ1nqUPIQByLKYbtonk1JR1nSjdUgACA5jDTOK7QDChgF6jaKKQWdPYr2+TgZwkZfewYp/Q= 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 SA2PR11MB4876.namprd11.prod.outlook.com (2603:10b6:806:119::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.14; Fri, 17 Sep 2021 15:14:56 +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.4500.017; Fri, 17 Sep 2021 15:14:56 +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 v6 15/24] wfx: add hif_rx.c/hif_rx.h Date: Fri, 17 Sep 2021 17:13:51 +0200 Message-Id: <20210917151401.2274772-16-Jerome.Pouiller@silabs.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210917151401.2274772-1-Jerome.Pouiller@silabs.com> References: <20210917151401.2274772-1-Jerome.Pouiller@silabs.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 X-ClientProxiedBy: SA9PR03CA0029.namprd03.prod.outlook.com (2603:10b6:806:20::34) 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 SA9PR03CA0029.namprd03.prod.outlook.com (2603:10b6:806:20::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.14 via Frontend Transport; Fri, 17 Sep 2021 15:14:54 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 189cf116-82c7-44a8-c31e-08d979ede865 X-MS-TrafficTypeDiagnostic: SA2PR11MB4876: 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: Dsggkqy2qvQLEINxkaIZSZr5J3g9mOWBgL/IOpGIVRcmMCVofVZEobo+PmhdAi0tj3f60o5xr74TSwL//d291Hs6IVOJ6Cw9TGsiKT7seeEYHc80OhlreYjejrpj5XRRR9v0JNFvTqKOYCr/e9QUD1KLbkb7KJC8Gm69IOFQTKGhaApmr1EAThlE3+p1/pkNCc5NkQ7l91cYGq26+X62AA8cfAsBprCG8cl9C+JxZSuNFkukwN4914QTc+M2ZIBPvRwfsj4CA744wZ8vKsC7sIelIBGR5YbW39RkfxwN4wBmvJVJ0FLZLL+pIz1BozLGwwkqw1N/ykWvKrM+KvqfkBqtmeLv7HP2IwSx4F5q6emPxRK4degjYvAGX9bti9PB+XHd+CSDkmvFJyEkELbEBKJVdc5oYyaV1OEi3cCt2651QKZq7VcKr5GXOrbqahi6QKoMmzfjP+uzNXSLbnIzJhvCNKreaUzWzDr54Lfm95RTXu4jfcbeV+ty4Zli2zQkxuiiNvS1MHHtojdVjhIWD/qmjj7ugDP+fWt7w1CkIOgpeiZRhj7Ubqii4WFzio24tGN8GSShqkAQMvZL6DKqshk8O4Ni+rOH9WeOoqeg5KQ4qG9wVG2JeRfTrxBPoF70VvNXFo4dj/PjWmvv6pbRPQ== 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)(66556008)(66946007)(508600001)(52116002)(7696005)(6916009)(66476007)(30864003)(4326008)(316002)(6666004)(86362001)(2616005)(6486002)(1076003)(107886003)(38100700002)(83380400001)(7416002)(2906002)(54906003)(5660300002)(186003)(8676002)(8936002)(66574015)(36756003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?cmoxYWNYWTlabXVqM1ljOWFFdm9sVDRoaXFBanhVbDFROFliQVpidXplTXdy?= =?utf-8?B?SFR4YSsyTUJnWWx4TnVoeXAzUXp5bjZvWFRFVC8wK3d6bmtscHdIZEJIM213?= =?utf-8?B?UURqQjhrTXRRSjlxN2ZXNW04NEt0d0Eza2RTbVorbHo2TGxHRjBpSWpNck5a?= =?utf-8?B?NlY0M1ErM1hzdnFqS2Z0UHJ4OURSMjJkTS9HUGJ6djZPT2FUNTFncDkyOFd0?= =?utf-8?B?SVBVa2w1TVZWcjljald6d1hRTjc5ZG5VcEpkNXc4d1ZCYmJjdjZ3b1gxSFM1?= =?utf-8?B?R3ppOW5pSnhQbUQ2aUFwcDRpQlBBS3BYUDgxSkt2NjVaTjhBbkY1QndhMWxP?= =?utf-8?B?TStMUFhnWmllbUJMRzNKbWdCbHVWMk5GdjBnMVVCYVF0NERPdlpZR2h3d1Fy?= =?utf-8?B?dThTZk9LT2NySXd0RFhESWhXVkpHZnFPWkZIVmM0L1RIL3B2dHJjY0hYYmww?= =?utf-8?B?TmJxMTk3c2swbWE1MHVMbnMrTXN5eW9oYUFhV21xU1IzK25xekoxMnZDNWtr?= =?utf-8?B?djZia0gvSG91dnFRejIzK00raGlPZGFSZCsybURVSHF1ZEFNbGt0R2hnOHJi?= =?utf-8?B?cHQzcjhaWkRlU25MYkFEU3M3U0JmMGtvSkNNR0dFMExlWFBXM1ZIVWlST2F6?= =?utf-8?B?ekl2dCtQVm9Sc0ZZTzlFczFTbjVzbUFFOFRKaytzY0N2SkRSbDMzZGdZZFZY?= =?utf-8?B?OWxCMzNqT0E4TEJSaGMzNWpEM2p1OFZWaG92UDhtRkxVNFV5czFKVWJPK1pq?= =?utf-8?B?NEh2V3NzTkQrNjVwaUM2SDI4RlYza3Z2V1prL2V4RFo1NHk0akI3U21oSFFU?= =?utf-8?B?dTh0SHBsRVo2cXhnQncvSkJQRzcraUdmUkpBUkVFSVpLWmFtSFd4eDlXUG5u?= =?utf-8?B?T2NySE9QdmZOQ1BzU3VKL1Vnb2lWUE9BcXBMVjFHc2QyQ0dnRzM0U1lORmVQ?= =?utf-8?B?L1hhTXRYVno2RkR3b3RxRm5oY3YwMlJGZzlCWlRnQ0pUcUw4b21VYjlRaExC?= =?utf-8?B?Y1FhMDRxclFXdXN2ZlZoT1NkWEQ5VGNwcWFVMGJ1dFJvb3JKSzExRnVhZHBX?= =?utf-8?B?UTZZRGtkdWN5S2ZQbjFkRS9HcUg1R1BNS2UyS21zb0NRUSszZUJOaHQzM0JH?= =?utf-8?B?WXlUVDRDUXVLb2tZaVF2TE0wMmhtRmJaOWt4YnlpUU5RMTkyTENWR0RlU0JJ?= =?utf-8?B?OXlSSURyTk9tTDNISnJmTzEwNXVwZGpxN0RNVmoxaHdmWVFlRkgxN1JZTmpN?= =?utf-8?B?Y1hQYXhNVXo3UThCWWwvSXF5VG1rNWtrSExQaWlQSDJpOGJ4TDJ4VFJUKzRJ?= =?utf-8?B?bC9UYzhjVlVwVjFVTHQ1cDIvdFBZTVVubW9OeGlZRzFMME5FczVwems5WlFo?= =?utf-8?B?WjVMREIweW1QM3VGblU1ajhQMTliMzY2ZCswUWwzWm5qTHh3THprOXY0YVIw?= =?utf-8?B?aHJXT1NKT0ZzRzFOVFJoU28ybXloVENJUC9PMGdnL3pKbVhXN0M2QmRhNWpW?= =?utf-8?B?NzgrbUxVVkx5ZXZlbExJdjZWSHBENHdlMmdrcWloc3ZJOWI5RzFBTThXY1NN?= =?utf-8?B?dFIxcENWU0RVTG1IZC9RemVQaSt0L29TMkZZcUxBcUNXa2pWOWFJWnR5Y1di?= =?utf-8?B?MkY1a3BlS0EzQkxoUHhmL2dHL3YxTWF6WmNITVRpWWV3d0FKR2VCaDRSNXpT?= =?utf-8?B?VmYrUm0rRHc1Rmh0RTJ3S1pBbVVLUmIzOUd1enpxWm0weDU5SllBM0FRTjJB?= =?utf-8?B?R1RQLzY0Sk15R2JubU9hTVhSeHd2Smwvc2hDdkxSb1JoWjJsY2hmMDFCaUd6?= =?utf-8?B?YTRuMVlFYytrNS9ITzFwRWZDZ01UWWhxMCtzREIwOVFlcTMzSUxDNHZSc24r?= =?utf-8?Q?RvlaqRU+8oSBb?= X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: 189cf116-82c7-44a8-c31e-08d979ede865 X-MS-Exchange-CrossTenant-AuthSource: SN6PR11MB2718.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Sep 2021 15:14:56.4947 (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: 1Y3KRAv0q1F0OlLxCDoCIU2Pzvf2gW6V1n7vVRbEuGLG9hBBb+3UVRfaoAWscKluADtIVh6qMu9ZEOKQrW/vSQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA2PR11MB4876 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@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==