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=-12.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MSGID_FROM_MTA_HEADER,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, 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 ED253C433E7 for ; Mon, 12 Oct 2020 10:47:19 +0000 (UTC) Received: from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137]) (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 781C92078E for ; Mon, 12 Oct 2020 10:47:19 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=silabs.onmicrosoft.com header.i=@silabs.onmicrosoft.com header.b="diNW765R" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 781C92078E Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=silabs.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=driverdev-devel-bounces@linuxdriverproject.org Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id 14B1D860AE; Mon, 12 Oct 2020 10:47:19 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id S-NC2Exhd1VR; Mon, 12 Oct 2020 10:47:17 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by fraxinus.osuosl.org (Postfix) with ESMTP id 97F2186084; Mon, 12 Oct 2020 10:47:17 +0000 (UTC) Received: from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137]) by ash.osuosl.org (Postfix) with ESMTP id 39C451BF5B5 for ; Mon, 12 Oct 2020 10:47:16 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id 361648607A for ; Mon, 12 Oct 2020 10:47:16 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 3yW9xk3Ljmlv for ; Mon, 12 Oct 2020 10:47:15 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2055.outbound.protection.outlook.com [40.107.223.55]) by fraxinus.osuosl.org (Postfix) with ESMTPS id D1FA586084 for ; Mon, 12 Oct 2020 10:47:14 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=l3gUp+JoPcgfWeDyeaq56qKJ0VAU0xPG9/hQjYTzWLEPWmEnPYX9EGyDUZD+RLwpq8QJ0CR55buY7OhKnojVHbzrJyjwNq80gQ/wd7J/DlP6hRcOBlM6uJq98BXEeZLUOus91aNPkl3IWRTytNfAhToJfWxGLyz5DK4DxCaPemLvOHzwvnvJ/6+6GLzwKsi7L6zykZA7Z3urVdO6Bnz7mxp0gCRNcrxi3EkZaAms1G5f/AM/eEyL98EXufBe1VJgbCXtFsAt3lwNUfqz6a6E1VSg00tZ7wSZUzzwZ65GwsBKyVNgXuITA7TC75/8IRPvFVPZcpXf+h+vSmUiIlXlEg== 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-SenderADCheck; bh=kFKv+ID/Y/BZ4roSMTlx+Id/3YjMPr1UOhPYtTW0bns=; b=Drrlf/bGJcT1TSzh3zOa1OvHhWNdKhKWp9BQ/btQrFDhdMlmFsp16XUvrR4BfcP65uey3nDWQ73BV8rhz5VCAq6SkKMnVMtZhxaYI7VvgehFxDRwMKwTbqwNRAfabjSLWoe1yjCyfTLyNMLKOMQPLvEbGSMmJ8mDC4JawNhDYUjDOUZ6A7jvqQ+WMEV/o68l28AmulhMUi6HCQl0n/2othmaScBP5/QnTkEr8iLMRzaynAjOaA9R6wqHrxszovf4GurACS1R66yHX1FrSSaDloX2zyFp7JniZGhmecygvCL/9MJdoX0iw5G2oX6DH4PtnZlDDxD3Kg4tszGHkY9jSw== 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=kFKv+ID/Y/BZ4roSMTlx+Id/3YjMPr1UOhPYtTW0bns=; b=diNW765R3DZ1l85gZQR/2Teyim3JONu6NTDkvVTs2ULrb3VeJVCip7wQva+u9SvhrJsDhV4a5OSUAaHCdEKSvXwnLxwHc46et+HpRhdmPj6lj9quBEvKUXpYMKzyvgxTUSaSlXAXG/cydU6atcJIYYogmMPHDEwOC38dS9LRy3A= 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 SA0PR11MB4734.namprd11.prod.outlook.com (2603:10b6:806:99::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3455.23; Mon, 12 Oct 2020 10:47:13 +0000 Received: from SN6PR11MB2718.namprd11.prod.outlook.com ([fe80::4f5:fbe5:44a7:cb8a]) by SN6PR11MB2718.namprd11.prod.outlook.com ([fe80::4f5:fbe5:44a7:cb8a%5]) with mapi id 15.20.3455.029; Mon, 12 Oct 2020 10:47:13 +0000 From: Jerome Pouiller To: linux-wireless@vger.kernel.org, netdev@vger.kernel.org Subject: [PATCH 04/23] wfx: add main.c/main.h Date: Mon, 12 Oct 2020 12:46:29 +0200 Message-Id: <20201012104648.985256-5-Jerome.Pouiller@silabs.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201012104648.985256-1-Jerome.Pouiller@silabs.com> References: <20201012104648.985256-1-Jerome.Pouiller@silabs.com> X-Originating-IP: [82.67.86.106] X-ClientProxiedBy: PR3P189CA0005.EURP189.PROD.OUTLOOK.COM (2603:10a6:102:52::10) To SN6PR11MB2718.namprd11.prod.outlook.com (2603:10b6:805:63::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from pc-42.home (82.67.86.106) by PR3P189CA0005.EURP189.PROD.OUTLOOK.COM (2603:10a6:102:52::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3455.21 via Frontend Transport; Mon, 12 Oct 2020 10:47:11 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f119283c-7a78-4afe-84f5-08d86e9c2daf X-MS-TrafficTypeDiagnostic: SA0PR11MB4734: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:147; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: V3o/xiJa4LyGKMTl8my2Z2mDj2Fcohoq2RT7wdulTG6d3QUfAsxIlaR1jKQPmtI1rh2TgGvfcq9PPHukF3UXNl5HP8j5/vn/yT7bo4ofznoxamWWUSi3N4LTq5l5P0zDOVyrdYOjtU/zTKJlJL77rBoI1Y5H8St1027CQy/VXTWe52Xo9XvdU+hZnqwncWM/0jU5U5UM3Se6z0r4YNkctk1NP9c+CuHCIP26Yz1e4uqFzIwc1qoQ3MlcMZ1MFsAfMFnsyCothdOY7t3nmvJXZarnY/0IfUXZLt1zdZZeBjwuKvUPUzf2IbD2S16PBLaxEUXCujpp9QVlZtEqyswupg== 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:(39850400004)(396003)(366004)(136003)(346002)(376002)(66556008)(66476007)(6512007)(26005)(36756003)(66946007)(16526019)(186003)(316002)(4326008)(2616005)(956004)(1076003)(30864003)(5660300002)(107886003)(6486002)(54906003)(86362001)(8676002)(83380400001)(8936002)(66574015)(52116002)(2906002)(6506007)(8886007)(6666004)(478600001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: FkDVrcDcBdwWHOOA0On2vlXQuWjKi9+q8F7E33hg8GBsoOpaY4bcIGqKx3zYv54SsfB5hYKmCuf7oLGDMIEr/PCvh57gi1ig9wLxnaffVLF53z3bEF1Pdouu4/2JACZ8QNXVM+Z50bVnmpPAzaMSZxF1r301PURgkrP7FFb3JK/aaWBo/9WCjXcq2jasIgoQwgLU0RNVyZd5cbuRX3Z6VBWaLuSG47LAbsJmOVRh0DjQudRRGrvFv4GZ6Hpg3JtiMNl3vtiaUCRcTR6L20fxvI4MttqL/BViwyr/pH976WYMWo2EtYMVvMw3mTj/n34I2S32pwP43PiDfZpVU0LysiTZfYksQUDV16qdQtWLoLe+WwPkKWtreLp1FWd+6hmH+SLc+lRC125X847M9chFjlKNvJvNzJA6H6Ca67N0MgIA2wkqBlZsuUgvzS2YI/pbma+m8/GLy7hfutM83dtc8gQdBo54a8n4mDnMTNX/bQAUAaNv1n9teEiLL1IgmCcjp1K6qMTXLkIPUCsyedHMB8L75rfl5fn+vJjOYfI1XUg9dSRMGm4xe+zwL65CtiAkBwoDtpxOVJD03E22hL7jDF0eYqZF4RolOF+M6ylELLqPcE8RWgX4iHe8i0aV3AvNq7Xc/miPvV1Of3ar9Fl7RQ== X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: f119283c-7a78-4afe-84f5-08d86e9c2daf X-MS-Exchange-CrossTenant-AuthSource: SN6PR11MB2718.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Oct 2020 10:47:13.5185 (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: 5/zWehhVp3QTFIRHrfkYoi0YoXg7eHCOZiON0WdE440f/289AUUZ1R47zh3ZVMYyxBj132gY0edfsmNzwa3iHw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR11MB4734 X-BeenThere: driverdev-devel@linuxdriverproject.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Driver Project Developer List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devel@driverdev.osuosl.org, devicetree@vger.kernel.org, Greg Kroah-Hartman , linux-kernel@vger.kernel.org, Rob Herring , "David S . Miller" , Kalle Valo Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: driverdev-devel-bounces@linuxdriverproject.org Sender: "devel" RnJvbTogSsOpcsO0bWUgUG91aWxsZXIgPGplcm9tZS5wb3VpbGxlckBzaWxhYnMuY29tPgoKU2ln bmVkLW9mZi1ieTogSsOpcsO0bWUgUG91aWxsZXIgPGplcm9tZS5wb3VpbGxlckBzaWxhYnMuY29t PgotLS0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvbWFpbi5jIHwgNDg5ICsrKysr KysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvbWFp bi5oIHwgIDQ0ICsrKwogMiBmaWxlcyBjaGFuZ2VkLCA1MzMgaW5zZXJ0aW9ucygrKQogY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvbWFpbi5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9tYWluLmgKCmRp ZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L21haW4uYyBiL2RyaXZl cnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvbWFpbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwMC4uYmZmZjRjOGY1Njc3Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVy cy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9tYWluLmMKQEAgLTAsMCArMSw0ODkgQEAKKy8vIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKKy8qCisgKiBEZXZpY2UgcHJvYmUg YW5kIHJlZ2lzdGVyLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAxNy0yMDIwLCBTaWxpY29uIExh Ym9yYXRvcmllcywgSW5jLgorICogQ29weXJpZ2h0IChjKSAyMDEwLCBTVC1Fcmljc3NvbgorICog Q29weXJpZ2h0IChjKSAyMDA4LCBKb2hhbm5lcyBCZXJnIDxqb2hhbm5lc0BzaXBzb2x1dGlvbnMu bmV0PgorICogQ29weXJpZ2h0IChjKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMg c3Vic2lkaWFyeSgtaWVzKS4KKyAqIENvcHlyaWdodCAoYykgMjAwNy0yMDA5LCBDaHJpc3RpYW4g TGFtcGFydGVyIDxjaHVua2VleUB3ZWIuZGU+CisgKiBDb3B5cmlnaHQgKGMpIDIwMDYsIE1pY2hh ZWwgV3UgPGZsYW1pbmdpY2VAc291cm1pbGsubmV0PgorICogQ29weXJpZ2h0IChjKSAyMDA0LTIw MDYgSmVhbi1CYXB0aXN0ZSBOb3RlIDxqYm5vdGVAZ21haWwuY29tPiwgZXQgYWwuCisgKi8KKyNp bmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9vZi5oPgorI2luY2x1ZGUg PGxpbnV4L29mX25ldC5oPgorI2luY2x1ZGUgPGxpbnV4L2dwaW8vY29uc3VtZXIuaD4KKyNpbmNs dWRlIDxsaW51eC9tbWMvc2Rpb19mdW5jLmg+CisjaW5jbHVkZSA8bGludXgvc3BpL3NwaS5oPgor I2luY2x1ZGUgPGxpbnV4L2V0aGVyZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvZmlybXdhcmUu aD4KKworI2luY2x1ZGUgIm1haW4uaCIKKyNpbmNsdWRlICJ3ZnguaCIKKyNpbmNsdWRlICJmd2lv LmgiCisjaW5jbHVkZSAiaHdpby5oIgorI2luY2x1ZGUgImJ1cy5oIgorI2luY2x1ZGUgImJoLmgi CisjaW5jbHVkZSAic3RhLmgiCisjaW5jbHVkZSAia2V5LmgiCisjaW5jbHVkZSAic2Nhbi5oIgor I2luY2x1ZGUgImRlYnVnLmgiCisjaW5jbHVkZSAiZGF0YV90eC5oIgorI2luY2x1ZGUgImhpZl90 eF9taWIuaCIKKyNpbmNsdWRlICJoaWZfYXBpX2NtZC5oIgorCisjZGVmaW5lIFdGWF9QRFNfTUFY X1NJWkUgMTUwMAorCitNT0RVTEVfREVTQ1JJUFRJT04oIlNpbGljb24gTGFicyA4MDIuMTEgV2ly ZWxlc3MgTEFOIGRyaXZlciBmb3IgV0Z4Iik7CitNT0RVTEVfQVVUSE9SKCJKw6lyw7RtZSBQb3Vp bGxlciA8amVyb21lLnBvdWlsbGVyQHNpbGFicy5jb20+Iik7CitNT0RVTEVfTElDRU5TRSgiR1BM Iik7CisKKyNkZWZpbmUgUkFURVRBQl9FTlQoX3JhdGUsIF9yYXRlaWQsIF9mbGFncykgeyBcCisJ LmJpdHJhdGUgID0gKF9yYXRlKSwgICBcCisJLmh3X3ZhbHVlID0gKF9yYXRlaWQpLCBcCisJLmZs YWdzICAgID0gKF9mbGFncyksICBcCit9CisKK3N0YXRpYyBzdHJ1Y3QgaWVlZTgwMjExX3JhdGUg d2Z4X3JhdGVzW10gPSB7CisJUkFURVRBQl9FTlQoMTAsICAwLCAgMCksCisJUkFURVRBQl9FTlQo MjAsICAxLCAgSUVFRTgwMjExX1JBVEVfU0hPUlRfUFJFQU1CTEUpLAorCVJBVEVUQUJfRU5UKDU1 LCAgMiwgIElFRUU4MDIxMV9SQVRFX1NIT1JUX1BSRUFNQkxFKSwKKwlSQVRFVEFCX0VOVCgxMTAs IDMsICBJRUVFODAyMTFfUkFURV9TSE9SVF9QUkVBTUJMRSksCisJUkFURVRBQl9FTlQoNjAsICA2 LCAgMCksCisJUkFURVRBQl9FTlQoOTAsICA3LCAgMCksCisJUkFURVRBQl9FTlQoMTIwLCA4LCAg MCksCisJUkFURVRBQl9FTlQoMTgwLCA5LCAgMCksCisJUkFURVRBQl9FTlQoMjQwLCAxMCwgMCks CisJUkFURVRBQl9FTlQoMzYwLCAxMSwgMCksCisJUkFURVRBQl9FTlQoNDgwLCAxMiwgMCksCisJ UkFURVRBQl9FTlQoNTQwLCAxMywgMCksCit9OworCisjZGVmaW5lIENIQU4yRyhfY2hhbm5lbCwg X2ZyZXEsIF9mbGFncykgeyBcCisJLmJhbmQgPSBOTDgwMjExX0JBTkRfMkdIWiwgXAorCS5jZW50 ZXJfZnJlcSA9IChfZnJlcSksICAgIFwKKwkuaHdfdmFsdWUgPSAoX2NoYW5uZWwpLCAgICBcCisJ LmZsYWdzID0gKF9mbGFncyksICAgICAgICAgXAorCS5tYXhfYW50ZW5uYV9nYWluID0gMCwgICAg IFwKKwkubWF4X3Bvd2VyID0gMzAsICAgICAgICAgICBcCit9CisKK3N0YXRpYyBzdHJ1Y3QgaWVl ZTgwMjExX2NoYW5uZWwgd2Z4XzJnaHpfY2hhbnRhYmxlW10gPSB7CisJQ0hBTjJHKDEsICAyNDEy LCAwKSwKKwlDSEFOMkcoMiwgIDI0MTcsIDApLAorCUNIQU4yRygzLCAgMjQyMiwgMCksCisJQ0hB TjJHKDQsICAyNDI3LCAwKSwKKwlDSEFOMkcoNSwgIDI0MzIsIDApLAorCUNIQU4yRyg2LCAgMjQz NywgMCksCisJQ0hBTjJHKDcsICAyNDQyLCAwKSwKKwlDSEFOMkcoOCwgIDI0NDcsIDApLAorCUNI QU4yRyg5LCAgMjQ1MiwgMCksCisJQ0hBTjJHKDEwLCAyNDU3LCAwKSwKKwlDSEFOMkcoMTEsIDI0 NjIsIDApLAorCUNIQU4yRygxMiwgMjQ2NywgMCksCisJQ0hBTjJHKDEzLCAyNDcyLCAwKSwKKwlD SEFOMkcoMTQsIDI0ODQsIDApLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFf c3VwcG9ydGVkX2JhbmQgd2Z4X2JhbmRfMmdoeiA9IHsKKwkuY2hhbm5lbHMgPSB3ZnhfMmdoel9j aGFudGFibGUsCisJLm5fY2hhbm5lbHMgPSBBUlJBWV9TSVpFKHdmeF8yZ2h6X2NoYW50YWJsZSks CisJLmJpdHJhdGVzID0gd2Z4X3JhdGVzLAorCS5uX2JpdHJhdGVzID0gQVJSQVlfU0laRSh3Znhf cmF0ZXMpLAorCS5odF9jYXAgPSB7CisJCS8vIFJlY2VpdmUgY2FwcworCQkuY2FwID0gSUVFRTgw MjExX0hUX0NBUF9HUk5fRkxEIHwgSUVFRTgwMjExX0hUX0NBUF9TR0lfMjAgfAorCQkgICAgICAg SUVFRTgwMjExX0hUX0NBUF9NQVhfQU1TRFUgfAorCQkgICAgICAgKDEgPDwgSUVFRTgwMjExX0hU X0NBUF9SWF9TVEJDX1NISUZUKSwKKwkJLmh0X3N1cHBvcnRlZCA9IDEsCisJCS5hbXBkdV9mYWN0 b3IgPSBJRUVFODAyMTFfSFRfTUFYX0FNUERVXzE2SywKKwkJLmFtcGR1X2RlbnNpdHkgPSBJRUVF ODAyMTFfSFRfTVBEVV9ERU5TSVRZX05PTkUsCisJCS5tY3MgPSB7CisJCQkucnhfbWFzayA9IHsg MHhGRiB9LCAvLyBNQ1MwIHRvIE1DUzcKKwkJCS5yeF9oaWdoZXN0ID0gY3B1X3RvX2xlMTYoNzIp LAorCQkJLnR4X3BhcmFtcyA9IElFRUU4MDIxMV9IVF9NQ1NfVFhfREVGSU5FRCwKKwkJfSwKKwl9 LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfaWZhY2VfbGltaXQgd2Rldl9p ZmFjZV9saW1pdHNbXSA9IHsKKwl7IC5tYXggPSAxLCAudHlwZXMgPSBCSVQoTkw4MDIxMV9JRlRZ UEVfU1RBVElPTikgfSwKKwl7IC5tYXggPSAxLCAudHlwZXMgPSBCSVQoTkw4MDIxMV9JRlRZUEVf QVApIH0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9pZmFjZV9jb21iaW5h dGlvbiB3ZnhfaWZhY2VfY29tYmluYXRpb25zW10gPSB7CisJeworCQkubnVtX2RpZmZlcmVudF9j aGFubmVscyA9IDIsCisJCS5tYXhfaW50ZXJmYWNlcyA9IDIsCisJCS5saW1pdHMgPSB3ZGV2X2lm YWNlX2xpbWl0cywKKwkJLm5fbGltaXRzID0gQVJSQVlfU0laRSh3ZGV2X2lmYWNlX2xpbWl0cyks CisJfQorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIHdmeF9vcHMgPSB7 CisJLnN0YXJ0CQkJPSB3Znhfc3RhcnQsCisJLnN0b3AJCQk9IHdmeF9zdG9wLAorCS5hZGRfaW50 ZXJmYWNlCQk9IHdmeF9hZGRfaW50ZXJmYWNlLAorCS5yZW1vdmVfaW50ZXJmYWNlCT0gd2Z4X3Jl bW92ZV9pbnRlcmZhY2UsCisJLmNvbmZpZyAgICAgICAgICAgICAgICAgPSB3ZnhfY29uZmlnLAor CS50eAkJCT0gd2Z4X3R4LAorCS5qb2luX2lic3MJCT0gd2Z4X2pvaW5faWJzcywKKwkubGVhdmVf aWJzcwkJPSB3ZnhfbGVhdmVfaWJzcywKKwkuY29uZl90eAkJPSB3ZnhfY29uZl90eCwKKwkuaHdf c2NhbgkJPSB3ZnhfaHdfc2NhbiwKKwkuY2FuY2VsX2h3X3NjYW4JCT0gd2Z4X2NhbmNlbF9od19z Y2FuLAorCS5zdGFydF9hcAkJPSB3Znhfc3RhcnRfYXAsCisJLnN0b3BfYXAJCT0gd2Z4X3N0b3Bf YXAsCisJLnN0YV9hZGQJCT0gd2Z4X3N0YV9hZGQsCisJLnN0YV9yZW1vdmUJCT0gd2Z4X3N0YV9y ZW1vdmUsCisJLnNldF90aW0JCT0gd2Z4X3NldF90aW0sCisJLnNldF9rZXkJCT0gd2Z4X3NldF9r ZXksCisJLnNldF9ydHNfdGhyZXNob2xkCT0gd2Z4X3NldF9ydHNfdGhyZXNob2xkLAorCS5zZXRf ZGVmYXVsdF91bmljYXN0X2tleSA9IHdmeF9zZXRfZGVmYXVsdF91bmljYXN0X2tleSwKKwkuYnNz X2luZm9fY2hhbmdlZAk9IHdmeF9ic3NfaW5mb19jaGFuZ2VkLAorCS5jb25maWd1cmVfZmlsdGVy CT0gd2Z4X2NvbmZpZ3VyZV9maWx0ZXIsCisJLmFtcGR1X2FjdGlvbgkJPSB3ZnhfYW1wZHVfYWN0 aW9uLAorCS5mbHVzaAkJCT0gd2Z4X2ZsdXNoLAorCS5hZGRfY2hhbmN0eAkJPSB3ZnhfYWRkX2No YW5jdHgsCisJLnJlbW92ZV9jaGFuY3R4CQk9IHdmeF9yZW1vdmVfY2hhbmN0eCwKKwkuY2hhbmdl X2NoYW5jdHgJCT0gd2Z4X2NoYW5nZV9jaGFuY3R4LAorCS5hc3NpZ25fdmlmX2NoYW5jdHgJPSB3 ZnhfYXNzaWduX3ZpZl9jaGFuY3R4LAorCS51bmFzc2lnbl92aWZfY2hhbmN0eAk9IHdmeF91bmFz c2lnbl92aWZfY2hhbmN0eCwKK307CisKK2Jvb2wgd2Z4X2FwaV9vbGRlcl90aGFuKHN0cnVjdCB3 ZnhfZGV2ICp3ZGV2LCBpbnQgbWFqb3IsIGludCBtaW5vcikKK3sKKwlpZiAod2Rldi0+aHdfY2Fw cy5hcGlfdmVyc2lvbl9tYWpvciA8IG1ham9yKQorCQlyZXR1cm4gdHJ1ZTsKKwlpZiAod2Rldi0+ aHdfY2Fwcy5hcGlfdmVyc2lvbl9tYWpvciA+IG1ham9yKQorCQlyZXR1cm4gZmFsc2U7CisJaWYg KHdkZXYtPmh3X2NhcHMuYXBpX3ZlcnNpb25fbWlub3IgPCBtaW5vcikKKwkJcmV0dXJuIHRydWU7 CisJcmV0dXJuIGZhbHNlOworfQorCisvKiBOT1RFOiB3Znhfc2VuZF9wZHMoKSBkZXN0cm95IGJ1 ZiAqLworaW50IHdmeF9zZW5kX3BkcyhzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwgdTggKmJ1Ziwgc2l6 ZV90IGxlbikKK3sKKwlpbnQgcmV0OworCWludCBzdGFydCwgYnJhY2VfbGV2ZWwsIGk7CisKKwlz dGFydCA9IDA7CisJYnJhY2VfbGV2ZWwgPSAwOworCWlmIChidWZbMF0gIT0gJ3snKSB7CisJCWRl dl9lcnIod2Rldi0+ZGV2LCAidmFsaWQgUERTIHN0YXJ0IHdpdGggJ3snLiBEaWQgeW91IGZvcmdl dCB0byBjb21wcmVzcyBpdD9cbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisJZm9yIChpID0g MTsgaSA8IGxlbiAtIDE7IGkrKykgeworCQlpZiAoYnVmW2ldID09ICd7JykKKwkJCWJyYWNlX2xl dmVsKys7CisJCWlmIChidWZbaV0gPT0gJ30nKQorCQkJYnJhY2VfbGV2ZWwtLTsKKwkJaWYgKGJ1 ZltpXSA9PSAnfScgJiYgIWJyYWNlX2xldmVsKSB7CisJCQlpKys7CisJCQlpZiAoaSAtIHN0YXJ0 ICsgMSA+IFdGWF9QRFNfTUFYX1NJWkUpCisJCQkJcmV0dXJuIC1FRkJJRzsKKwkJCWJ1ZltzdGFy dF0gPSAneyc7CisJCQlidWZbaV0gPSAwOworCQkJZGV2X2RiZyh3ZGV2LT5kZXYsICJzZW5kIFBE UyAnJXN9J1xuIiwgYnVmICsgc3RhcnQpOworCQkJYnVmW2ldID0gJ30nOworCQkJcmV0ID0gaGlm X2NvbmZpZ3VyYXRpb24od2RldiwgYnVmICsgc3RhcnQsCisJCQkJCQlpIC0gc3RhcnQgKyAxKTsK KwkJCWlmIChyZXQgPiAwKSB7CisJCQkJZGV2X2Vycih3ZGV2LT5kZXYsICJQRFMgYnl0ZXMgJWQg dG8gJWQ6IGludmFsaWQgZGF0YSAodW5zdXBwb3J0ZWQgb3B0aW9ucz8pXG4iLAorCQkJCQlzdGFy dCwgaSk7CisJCQkJcmV0dXJuIC1FSU5WQUw7CisJCQl9CisJCQlpZiAocmV0ID09IC1FVElNRURP VVQpIHsKKwkJCQlkZXZfZXJyKHdkZXYtPmRldiwgIlBEUyBieXRlcyAlZCB0byAlZDogY2hpcCBk aWRuJ3QgcmVwbHkgKGNvcnJ1cHRlZCBmaWxlPylcbiIsCisJCQkJCXN0YXJ0LCBpKTsKKwkJCQly ZXR1cm4gcmV0OworCQkJfQorCQkJaWYgKHJldCkgeworCQkJCWRldl9lcnIod2Rldi0+ZGV2LCAi UERTIGJ5dGVzICVkIHRvICVkOiBjaGlwIHJldHVybmVkIGFuIHVua25vd24gZXJyb3JcbiIsCisJ CQkJCXN0YXJ0LCBpKTsKKwkJCQlyZXR1cm4gLUVJTzsKKwkJCX0KKwkJCWJ1ZltpXSA9ICcsJzsK KwkJCXN0YXJ0ID0gaTsKKwkJfQorCX0KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCB3Znhf c2VuZF9wZGF0YV9wZHMoc3RydWN0IHdmeF9kZXYgKndkZXYpCit7CisJaW50IHJldCA9IDA7CisJ Y29uc3Qgc3RydWN0IGZpcm13YXJlICpwZHM7CisJdTggKnRtcF9idWY7CisKKwlyZXQgPSByZXF1 ZXN0X2Zpcm13YXJlKCZwZHMsIHdkZXYtPnBkYXRhLmZpbGVfcGRzLCB3ZGV2LT5kZXYpOworCWlm IChyZXQpIHsKKwkJZGV2X2Vycih3ZGV2LT5kZXYsICJjYW4ndCBsb2FkIFBEUyBmaWxlICVzXG4i LAorCQkJd2Rldi0+cGRhdGEuZmlsZV9wZHMpOworCQlyZXR1cm4gcmV0OworCX0KKwl0bXBfYnVm ID0ga21lbWR1cChwZHMtPmRhdGEsIHBkcy0+c2l6ZSwgR0ZQX0tFUk5FTCk7CisJaWYgKCF0bXBf YnVmKSB7CisJCXJldCA9IC1FTk9NRU07CisJCWdvdG8gcmVsZWFzZV9mdzsKKwl9CisJcmV0ID0g d2Z4X3NlbmRfcGRzKHdkZXYsIHRtcF9idWYsIHBkcy0+c2l6ZSk7CisJa2ZyZWUodG1wX2J1Zik7 CityZWxlYXNlX2Z3OgorCXJlbGVhc2VfZmlybXdhcmUocGRzKTsKKwlyZXR1cm4gcmV0OworfQor CitzdGF0aWMgdm9pZCB3ZnhfZnJlZV9jb21tb24odm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3Qgd2Z4 X2RldiAqd2RldiA9IGRhdGE7CisKKwltdXRleF9kZXN0cm95KCZ3ZGV2LT50eF9wb3dlcl9sb29w X2luZm9fbG9jayk7CisJbXV0ZXhfZGVzdHJveSgmd2Rldi0+cnhfc3RhdHNfbG9jayk7CisJbXV0 ZXhfZGVzdHJveSgmd2Rldi0+Y29uZl9tdXRleCk7CisJaWVlZTgwMjExX2ZyZWVfaHcod2Rldi0+ aHcpOworfQorCitzdHJ1Y3Qgd2Z4X2RldiAqd2Z4X2luaXRfY29tbW9uKHN0cnVjdCBkZXZpY2Ug KmRldiwKKwkJCQljb25zdCBzdHJ1Y3Qgd2Z4X3BsYXRmb3JtX2RhdGEgKnBkYXRhLAorCQkJCWNv bnN0IHN0cnVjdCBod2J1c19vcHMgKmh3YnVzX29wcywKKwkJCQl2b2lkICpod2J1c19wcml2KQor eworCXN0cnVjdCBpZWVlODAyMTFfaHcgKmh3OworCXN0cnVjdCB3ZnhfZGV2ICp3ZGV2OworCisJ aHcgPSBpZWVlODAyMTFfYWxsb2NfaHcoc2l6ZW9mKHN0cnVjdCB3ZnhfZGV2KSwgJndmeF9vcHMp OworCWlmICghaHcpCisJCXJldHVybiBOVUxMOworCisJU0VUX0lFRUU4MDIxMV9ERVYoaHcsIGRl dik7CisKKwlpZWVlODAyMTFfaHdfc2V0KGh3LCBUWF9BTVBEVV9TRVRVUF9JTl9IVyk7CisJaWVl ZTgwMjExX2h3X3NldChodywgQU1QRFVfQUdHUkVHQVRJT04pOworCWllZWU4MDIxMV9od19zZXQo aHcsIENPTk5FQ1RJT05fTU9OSVRPUik7CisJaWVlZTgwMjExX2h3X3NldChodywgUkVQT1JUU19U WF9BQ0tfU1RBVFVTKTsKKwlpZWVlODAyMTFfaHdfc2V0KGh3LCBTVVBQT1JUU19EWU5BTUlDX1BT KTsKKwlpZWVlODAyMTFfaHdfc2V0KGh3LCBTSUdOQUxfREJNKTsKKwlpZWVlODAyMTFfaHdfc2V0 KGh3LCBTVVBQT1JUU19QUyk7CisJaWVlZTgwMjExX2h3X3NldChodywgTUZQX0NBUEFCTEUpOwor CisJaHctPnZpZl9kYXRhX3NpemUgPSBzaXplb2Yoc3RydWN0IHdmeF92aWYpOworCWh3LT5zdGFf ZGF0YV9zaXplID0gc2l6ZW9mKHN0cnVjdCB3Znhfc3RhX3ByaXYpOworCWh3LT5xdWV1ZXMgPSA0 OworCWh3LT5tYXhfcmF0ZXMgPSA4OworCWh3LT5tYXhfcmF0ZV90cmllcyA9IDg7CisJaHctPmV4 dHJhX3R4X2hlYWRyb29tID0gc2l6ZW9mKHN0cnVjdCBoaWZfbXNnKQorCQkJCSsgc2l6ZW9mKHN0 cnVjdCBoaWZfcmVxX3R4KQorCQkJCSsgNCAvKiBhbGlnbm1lbnQgKi8gKyA4IC8qIFRLSVAgSVYg Ki87CisJaHctPndpcGh5LT5pbnRlcmZhY2VfbW9kZXMgPSBCSVQoTkw4MDIxMV9JRlRZUEVfU1RB VElPTikgfAorCQkJCSAgICAgQklUKE5MODAyMTFfSUZUWVBFX0FESE9DKSB8CisJCQkJICAgICBC SVQoTkw4MDIxMV9JRlRZUEVfQVApOworCWh3LT53aXBoeS0+cHJvYmVfcmVzcF9vZmZsb2FkID0g Tkw4MDIxMV9QUk9CRV9SRVNQX09GRkxPQURfU1VQUE9SVF9XUFMgfAorCQkJCQlOTDgwMjExX1BS T0JFX1JFU1BfT0ZGTE9BRF9TVVBQT1JUX1dQUzIgfAorCQkJCQlOTDgwMjExX1BST0JFX1JFU1Bf T0ZGTE9BRF9TVVBQT1JUX1AyUCB8CisJCQkJCU5MODAyMTFfUFJPQkVfUkVTUF9PRkZMT0FEX1NV UFBPUlRfODAyMTFVOworCWh3LT53aXBoeS0+ZmVhdHVyZXMgfD0gTkw4MDIxMV9GRUFUVVJFX0FQ X1NDQU47CisJaHctPndpcGh5LT5mbGFncyB8PSBXSVBIWV9GTEFHX0FQX1BST0JFX1JFU1BfT0ZG TE9BRDsKKwlody0+d2lwaHktPmZsYWdzIHw9IFdJUEhZX0ZMQUdfQVBfVUFQU0Q7CisJaHctPndp cGh5LT5tYXhfYXBfYXNzb2Nfc3RhID0gSElGX0xJTktfSURfTUFYOworCWh3LT53aXBoeS0+bWF4 X3NjYW5fc3NpZHMgPSAyOworCWh3LT53aXBoeS0+bWF4X3NjYW5faWVfbGVuID0gSUVFRTgwMjEx X01BWF9EQVRBX0xFTjsKKwlody0+d2lwaHktPm5faWZhY2VfY29tYmluYXRpb25zID0gQVJSQVlf U0laRSh3ZnhfaWZhY2VfY29tYmluYXRpb25zKTsKKwlody0+d2lwaHktPmlmYWNlX2NvbWJpbmF0 aW9ucyA9IHdmeF9pZmFjZV9jb21iaW5hdGlvbnM7CisJaHctPndpcGh5LT5iYW5kc1tOTDgwMjEx X0JBTkRfMkdIWl0gPSBkZXZtX2ttYWxsb2MoZGV2LCBzaXplb2Yod2Z4X2JhbmRfMmdoeiksIEdG UF9LRVJORUwpOworCS8vIEZJWE1FOiBhbHNvIGNvcHkgd2Z4X3JhdGVzIGFuZCB3ZnhfMmdoel9j aGFudGFibGUKKwltZW1jcHkoaHctPndpcGh5LT5iYW5kc1tOTDgwMjExX0JBTkRfMkdIWl0sICZ3 ZnhfYmFuZF8yZ2h6LAorCSAgICAgICBzaXplb2Yod2Z4X2JhbmRfMmdoeikpOworCisJd2RldiA9 IGh3LT5wcml2OworCXdkZXYtPmh3ID0gaHc7CisJd2Rldi0+ZGV2ID0gZGV2OworCXdkZXYtPmh3 YnVzX29wcyA9IGh3YnVzX29wczsKKwl3ZGV2LT5od2J1c19wcml2ID0gaHdidXNfcHJpdjsKKwlt ZW1jcHkoJndkZXYtPnBkYXRhLCBwZGF0YSwgc2l6ZW9mKCpwZGF0YSkpOworCW9mX3Byb3BlcnR5 X3JlYWRfc3RyaW5nKGRldi0+b2Zfbm9kZSwgImNvbmZpZy1maWxlIiwKKwkJCQkmd2Rldi0+cGRh dGEuZmlsZV9wZHMpOworCXdkZXYtPnBkYXRhLmdwaW9fd2FrZXVwID0gZGV2bV9ncGlvZF9nZXRf b3B0aW9uYWwoZGV2LCAid2FrZXVwIiwKKwkJCQkJCQkgIEdQSU9EX09VVF9MT1cpOworCWlmIChJ U19FUlIod2Rldi0+cGRhdGEuZ3Bpb193YWtldXApKQorCQlyZXR1cm4gTlVMTDsKKwlpZiAod2Rl di0+cGRhdGEuZ3Bpb193YWtldXApCisJCWdwaW9kX3NldF9jb25zdW1lcl9uYW1lKHdkZXYtPnBk YXRhLmdwaW9fd2FrZXVwLCAid2Z4IHdha2V1cCIpOworCisJbXV0ZXhfaW5pdCgmd2Rldi0+Y29u Zl9tdXRleCk7CisJbXV0ZXhfaW5pdCgmd2Rldi0+cnhfc3RhdHNfbG9jayk7CisJbXV0ZXhfaW5p dCgmd2Rldi0+dHhfcG93ZXJfbG9vcF9pbmZvX2xvY2spOworCWluaXRfY29tcGxldGlvbigmd2Rl di0+ZmlybXdhcmVfcmVhZHkpOworCUlOSVRfREVMQVlFRF9XT1JLKCZ3ZGV2LT5jb29saW5nX3Rp bWVvdXRfd29yaywKKwkJCSAgd2Z4X2Nvb2xpbmdfdGltZW91dF93b3JrKTsKKwlza2JfcXVldWVf aGVhZF9pbml0KCZ3ZGV2LT50eF9wZW5kaW5nKTsKKwlpbml0X3dhaXRxdWV1ZV9oZWFkKCZ3ZGV2 LT50eF9kZXF1ZXVlKTsKKwl3ZnhfaW5pdF9oaWZfY21kKCZ3ZGV2LT5oaWZfY21kKTsKKwl3ZGV2 LT5mb3JjZV9wc190aW1lb3V0ID0gLTE7CisKKwlpZiAoZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0 KGRldiwgd2Z4X2ZyZWVfY29tbW9uLCB3ZGV2KSkKKwkJcmV0dXJuIE5VTEw7CisKKwlyZXR1cm4g d2RldjsKK30KKworaW50IHdmeF9wcm9iZShzdHJ1Y3Qgd2Z4X2RldiAqd2RldikKK3sKKwlpbnQg aTsKKwlpbnQgZXJyOworCWNvbnN0IHZvaWQgKm1hY2FkZHI7CisJc3RydWN0IGdwaW9fZGVzYyAq Z3Bpb19zYXZlZDsKKworCS8vIER1cmluZyBmaXJzdCBwYXJ0IG9mIGJvb3QsIGdwaW9fd2FrZXVw IGNhbm5vdCB5ZXQgYmVlbiB1c2VkLiBTbworCS8vIHByZXZlbnQgYmgoKSB0byB0b3VjaCBpdC4K KwlncGlvX3NhdmVkID0gd2Rldi0+cGRhdGEuZ3Bpb193YWtldXA7CisJd2Rldi0+cGRhdGEuZ3Bp b193YWtldXAgPSBOVUxMOworCXdkZXYtPnBvbGxfaXJxID0gdHJ1ZTsKKworCXdmeF9iaF9yZWdp c3Rlcih3ZGV2KTsKKworCWVyciA9IHdmeF9pbml0X2RldmljZSh3ZGV2KTsKKwlpZiAoZXJyKQor CQlnb3RvIGVycjA7CisKKwl3ZnhfYmhfcG9sbF9pcnEod2Rldik7CisJZXJyID0gd2FpdF9mb3Jf Y29tcGxldGlvbl90aW1lb3V0KCZ3ZGV2LT5maXJtd2FyZV9yZWFkeSwgMSAqIEhaKTsKKwlpZiAo ZXJyIDw9IDApIHsKKwkJaWYgKGVyciA9PSAwKSB7CisJCQlkZXZfZXJyKHdkZXYtPmRldiwgInRp bWVvdXQgd2hpbGUgd2FpdGluZyBmb3Igc3RhcnR1cCBpbmRpY2F0aW9uXG4iKTsKKwkJCWVyciA9 IC1FVElNRURPVVQ7CisJCX0gZWxzZSBpZiAoZXJyID09IC1FUkVTVEFSVFNZUykgeworCQkJZGV2 X2luZm8od2Rldi0+ZGV2LCAicHJvYmUgaW50ZXJydXB0ZWQgYnkgdXNlclxuIik7CisJCX0KKwkJ Z290byBlcnIwOworCX0KKworCS8vIEZJWE1FOiBmaWxsIHdpcGh5Ojpod192ZXJzaW9uCisJZGV2 X2luZm8od2Rldi0+ZGV2LCAic3RhcnRlZCBmaXJtd2FyZSAlZC4lZC4lZCBcIiVzXCIgKEFQSTog JWQuJWQsIGtleXNldDogJTAyWCwgY2FwczogMHglLjhYKVxuIiwKKwkJIHdkZXYtPmh3X2NhcHMu ZmlybXdhcmVfbWFqb3IsIHdkZXYtPmh3X2NhcHMuZmlybXdhcmVfbWlub3IsCisJCSB3ZGV2LT5o d19jYXBzLmZpcm13YXJlX2J1aWxkLCB3ZGV2LT5od19jYXBzLmZpcm13YXJlX2xhYmVsLAorCQkg d2Rldi0+aHdfY2Fwcy5hcGlfdmVyc2lvbl9tYWpvciwgd2Rldi0+aHdfY2Fwcy5hcGlfdmVyc2lv bl9taW5vciwKKwkJIHdkZXYtPmtleXNldCwgd2Rldi0+aHdfY2Fwcy5saW5rX21vZGUpOworCXNu cHJpbnRmKHdkZXYtPmh3LT53aXBoeS0+ZndfdmVyc2lvbiwKKwkJIHNpemVvZih3ZGV2LT5ody0+ d2lwaHktPmZ3X3ZlcnNpb24pLAorCQkgIiVkLiVkLiVkIiwKKwkJIHdkZXYtPmh3X2NhcHMuZmly bXdhcmVfbWFqb3IsCisJCSB3ZGV2LT5od19jYXBzLmZpcm13YXJlX21pbm9yLAorCQkgd2Rldi0+ aHdfY2Fwcy5maXJtd2FyZV9idWlsZCk7CisKKwlpZiAod2Z4X2FwaV9vbGRlcl90aGFuKHdkZXYs IDEsIDApKSB7CisJCWRldl9lcnIod2Rldi0+ZGV2LAorCQkJInVuc3VwcG9ydGVkIGZpcm13YXJl IEFQSSB2ZXJzaW9uIChleHBlY3QgMSB3aGlsZSBmaXJtd2FyZSByZXR1cm5zICVkKVxuIiwKKwkJ CXdkZXYtPmh3X2NhcHMuYXBpX3ZlcnNpb25fbWFqb3IpOworCQllcnIgPSAtRU5PVFNVUFA7CisJ CWdvdG8gZXJyMDsKKwl9CisKKwlpZiAod2Rldi0+aHdfY2Fwcy5saW5rX21vZGUgPT0gU0VDX0xJ TktfRU5GT1JDRUQpIHsKKwkJZGV2X2Vycih3ZGV2LT5kZXYsCisJCQkiY2hpcCByZXF1aXJlIHNl Y3VyZV9saW5rLCBidXQgY2FuJ3QgbmVnb3RpYXRlIGl0XG4iKTsKKwkJZ290byBlcnIwOworCX0K KworCWlmICh3ZGV2LT5od19jYXBzLnJlZ2lvbl9zZWxfbW9kZSkgeworCQl3ZGV2LT5ody0+d2lw aHktPmJhbmRzW05MODAyMTFfQkFORF8yR0haXS0+Y2hhbm5lbHNbMTFdLmZsYWdzIHw9IElFRUU4 MDIxMV9DSEFOX05PX0lSOworCQl3ZGV2LT5ody0+d2lwaHktPmJhbmRzW05MODAyMTFfQkFORF8y R0haXS0+Y2hhbm5lbHNbMTJdLmZsYWdzIHw9IElFRUU4MDIxMV9DSEFOX05PX0lSOworCQl3ZGV2 LT5ody0+d2lwaHktPmJhbmRzW05MODAyMTFfQkFORF8yR0haXS0+Y2hhbm5lbHNbMTNdLmZsYWdz IHw9IElFRUU4MDIxMV9DSEFOX0RJU0FCTEVEOworCX0KKworCWRldl9kYmcod2Rldi0+ZGV2LCAi c2VuZGluZyBjb25maWd1cmF0aW9uIGZpbGUgJXNcbiIsCisJCXdkZXYtPnBkYXRhLmZpbGVfcGRz KTsKKwllcnIgPSB3Znhfc2VuZF9wZGF0YV9wZHMod2Rldik7CisJaWYgKGVyciA8IDApCisJCWdv dG8gZXJyMDsKKworCXdkZXYtPnBvbGxfaXJxID0gZmFsc2U7CisJZXJyID0gd2Rldi0+aHdidXNf b3BzLT5pcnFfc3Vic2NyaWJlKHdkZXYtPmh3YnVzX3ByaXYpOworCWlmIChlcnIpCisJCWdvdG8g ZXJyMDsKKworCWVyciA9IGhpZl91c2VfbXVsdGlfdHhfY29uZih3ZGV2LCB0cnVlKTsKKwlpZiAo ZXJyKQorCQlkZXZfZXJyKHdkZXYtPmRldiwgIm1pc2NvbmZpZ3VyZWQgSVJRP1xuIik7CisKKwl3 ZGV2LT5wZGF0YS5ncGlvX3dha2V1cCA9IGdwaW9fc2F2ZWQ7CisJaWYgKHdkZXYtPnBkYXRhLmdw aW9fd2FrZXVwKSB7CisJCWRldl9kYmcod2Rldi0+ZGV2LAorCQkJImVuYWJsZSAncXVpZXNjZW50 JyBwb3dlciBtb2RlIHdpdGggd2FrZXVwIEdQSU8gYW5kIFBEUyBmaWxlICVzXG4iLAorCQkJd2Rl di0+cGRhdGEuZmlsZV9wZHMpOworCQlncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAod2Rldi0+cGRh dGEuZ3Bpb193YWtldXAsIDEpOworCQljb250cm9sX3JlZ193cml0ZSh3ZGV2LCAwKTsKKwkJaGlm X3NldF9vcGVyYXRpb25hbF9tb2RlKHdkZXYsIEhJRl9PUF9QT1dFUl9NT0RFX1FVSUVTQ0VOVCk7 CisJfSBlbHNlIHsKKwkJaGlmX3NldF9vcGVyYXRpb25hbF9tb2RlKHdkZXYsIEhJRl9PUF9QT1dF Ul9NT0RFX0RPWkUpOworCX0KKworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHdkZXYtPmFk ZHJlc3Nlcyk7IGkrKykgeworCQlldGhfemVyb19hZGRyKHdkZXYtPmFkZHJlc3Nlc1tpXS5hZGRy KTsKKwkJbWFjYWRkciA9IG9mX2dldF9tYWNfYWRkcmVzcyh3ZGV2LT5kZXYtPm9mX25vZGUpOwor CQlpZiAoIUlTX0VSUl9PUl9OVUxMKG1hY2FkZHIpKSB7CisJCQlldGhlcl9hZGRyX2NvcHkod2Rl di0+YWRkcmVzc2VzW2ldLmFkZHIsIG1hY2FkZHIpOworCQkJd2Rldi0+YWRkcmVzc2VzW2ldLmFk ZHJbRVRIX0FMRU4gLSAxXSArPSBpOworCQl9IGVsc2UgeworCQkJZXRoZXJfYWRkcl9jb3B5KHdk ZXYtPmFkZHJlc3Nlc1tpXS5hZGRyLAorCQkJCQl3ZGV2LT5od19jYXBzLm1hY19hZGRyW2ldKTsK KwkJfQorCQlpZiAoIWlzX3ZhbGlkX2V0aGVyX2FkZHIod2Rldi0+YWRkcmVzc2VzW2ldLmFkZHIp KSB7CisJCQlkZXZfd2Fybih3ZGV2LT5kZXYsICJ1c2luZyByYW5kb20gTUFDIGFkZHJlc3NcbiIp OworCQkJZXRoX3JhbmRvbV9hZGRyKHdkZXYtPmFkZHJlc3Nlc1tpXS5hZGRyKTsKKwkJfQorCQlk ZXZfaW5mbyh3ZGV2LT5kZXYsICJNQUMgYWRkcmVzcyAlZDogJXBNXG4iLCBpLAorCQkJIHdkZXYt PmFkZHJlc3Nlc1tpXS5hZGRyKTsKKwl9CisJd2Rldi0+aHctPndpcGh5LT5uX2FkZHJlc3NlcyA9 IEFSUkFZX1NJWkUod2Rldi0+YWRkcmVzc2VzKTsKKwl3ZGV2LT5ody0+d2lwaHktPmFkZHJlc3Nl cyA9IHdkZXYtPmFkZHJlc3NlczsKKworCWVyciA9IGllZWU4MDIxMV9yZWdpc3Rlcl9odyh3ZGV2 LT5odyk7CisJaWYgKGVycikKKwkJZ290byBlcnIxOworCisJZXJyID0gd2Z4X2RlYnVnX2luaXQo d2Rldik7CisJaWYgKGVycikKKwkJZ290byBlcnIyOworCisJcmV0dXJuIDA7CisKK2VycjI6CisJ aWVlZTgwMjExX3VucmVnaXN0ZXJfaHcod2Rldi0+aHcpOworZXJyMToKKwl3ZGV2LT5od2J1c19v cHMtPmlycV91bnN1YnNjcmliZSh3ZGV2LT5od2J1c19wcml2KTsKK2VycjA6CisJd2Z4X2JoX3Vu cmVnaXN0ZXIod2Rldik7CisJcmV0dXJuIGVycjsKK30KKwordm9pZCB3ZnhfcmVsZWFzZShzdHJ1 Y3Qgd2Z4X2RldiAqd2RldikKK3sKKwlpZWVlODAyMTFfdW5yZWdpc3Rlcl9odyh3ZGV2LT5odyk7 CisJaGlmX3NodXRkb3duKHdkZXYpOworCXdkZXYtPmh3YnVzX29wcy0+aXJxX3Vuc3Vic2NyaWJl KHdkZXYtPmh3YnVzX3ByaXYpOworCXdmeF9iaF91bnJlZ2lzdGVyKHdkZXYpOworfQorCitzdGF0 aWMgaW50IF9faW5pdCB3ZnhfY29yZV9pbml0KHZvaWQpCit7CisJaW50IHJldCA9IDA7CisKKwlp ZiAoSVNfRU5BQkxFRChDT05GSUdfU1BJKSkKKwkJcmV0ID0gc3BpX3JlZ2lzdGVyX2RyaXZlcigm d2Z4X3NwaV9kcml2ZXIpOworCWlmIChJU19FTkFCTEVEKENPTkZJR19NTUMpICYmICFyZXQpCisJ CXJldCA9IHNkaW9fcmVnaXN0ZXJfZHJpdmVyKCZ3Znhfc2Rpb19kcml2ZXIpOworCXJldHVybiBy ZXQ7Cit9Cittb2R1bGVfaW5pdCh3ZnhfY29yZV9pbml0KTsKKworc3RhdGljIHZvaWQgX19leGl0 IHdmeF9jb3JlX2V4aXQodm9pZCkKK3sKKwlpZiAoSVNfRU5BQkxFRChDT05GSUdfTU1DKSkKKwkJ c2Rpb191bnJlZ2lzdGVyX2RyaXZlcigmd2Z4X3NkaW9fZHJpdmVyKTsKKwlpZiAoSVNfRU5BQkxF RChDT05GSUdfU1BJKSkKKwkJc3BpX3VucmVnaXN0ZXJfZHJpdmVyKCZ3Znhfc3BpX2RyaXZlcik7 Cit9Cittb2R1bGVfZXhpdCh3ZnhfY29yZV9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0 L3dpcmVsZXNzL3NpbGFicy93ZngvbWFpbi5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJz L3dmeC9tYWluLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hMGRi MzIyMzgzYTMKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMv d2Z4L21haW4uaApAQCAtMCwwICsxLDQ0IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog R1BMLTIuMC1vbmx5ICovCisvKgorICogRGV2aWNlIHByb2JlIGFuZCByZWdpc3Rlci4KKyAqCisg KiBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMCwgU2lsaWNvbiBMYWJvcmF0b3JpZXMsIEluYy4KKyAq IENvcHlyaWdodCAoYykgMjAxMCwgU1QtRXJpY3Nzb24KKyAqIENvcHlyaWdodCAoYykgMjAwNiwg TWljaGFlbCBXdSA8ZmxhbWluZ2ljZUBzb3VybWlsay5uZXQ+CisgKiBDb3B5cmlnaHQgMjAwNC0y MDA2IEplYW4tQmFwdGlzdGUgTm90ZSA8amJub3RlQGdtYWlsLmNvbT4sIGV0IGFsLgorICovCisj aWZuZGVmIFdGWF9NQUlOX0gKKyNkZWZpbmUgV0ZYX01BSU5fSAorCisjaW5jbHVkZSA8bGludXgv ZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvZ3Bpby9jb25zdW1lci5oPgorCisjaW5jbHVkZSAi aGlmX2FwaV9nZW5lcmFsLmgiCisKK3N0cnVjdCB3ZnhfZGV2Oworc3RydWN0IGh3YnVzX29wczsK Kworc3RydWN0IHdmeF9wbGF0Zm9ybV9kYXRhIHsKKwkvKiBLZXlzZXQgYW5kICIuc2VjIiBleHRl bnNpb24gd2lsbCBiZSBhcHBlbmRlZCB0byB0aGlzIHN0cmluZyAqLworCWNvbnN0IGNoYXIgKmZp bGVfZnc7CisJY29uc3QgY2hhciAqZmlsZV9wZHM7CisJc3RydWN0IGdwaW9fZGVzYyAqZ3Bpb193 YWtldXA7CisJLyoKKwkgKiBpZiB0cnVlIEhJRiBEX291dCBpcyBzYW1wbGVkIG9uIHRoZSByaXNp bmcgZWRnZSBvZiB0aGUgY2xvY2sKKwkgKiAoaW50ZW5kZWQgdG8gYmUgdXNlZCBpbiA1ME1oeiBT RElPKQorCSAqLworCWJvb2wgdXNlX3Jpc2luZ19jbGs7Cit9OworCitzdHJ1Y3Qgd2Z4X2RldiAq d2Z4X2luaXRfY29tbW9uKHN0cnVjdCBkZXZpY2UgKmRldiwKKwkJCQljb25zdCBzdHJ1Y3Qgd2Z4 X3BsYXRmb3JtX2RhdGEgKnBkYXRhLAorCQkJCWNvbnN0IHN0cnVjdCBod2J1c19vcHMgKmh3YnVz X29wcywKKwkJCQl2b2lkICpod2J1c19wcml2KTsKKworaW50IHdmeF9wcm9iZShzdHJ1Y3Qgd2Z4 X2RldiAqd2Rldik7Cit2b2lkIHdmeF9yZWxlYXNlKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2KTsKKwor Ym9vbCB3ZnhfYXBpX29sZGVyX3RoYW4oc3RydWN0IHdmeF9kZXYgKndkZXYsIGludCBtYWpvciwg aW50IG1pbm9yKTsKK2ludCB3Znhfc2VuZF9wZHMoc3RydWN0IHdmeF9kZXYgKndkZXYsIHU4ICpi dWYsIHNpemVfdCBsZW4pOworCisjZW5kaWYKLS0gCjIuMjguMAoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZGV2ZWwgbWFpbGluZyBsaXN0CmRldmVsQGxp bnV4ZHJpdmVycHJvamVjdC5vcmcKaHR0cDovL2RyaXZlcmRldi5saW51eGRyaXZlcnByb2plY3Qu b3JnL21haWxtYW4vbGlzdGluZm8vZHJpdmVyZGV2LWRldmVsCg==