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 A514AC433E7 for ; Mon, 12 Oct 2020 10:47:50 +0000 (UTC) Received: from hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133]) (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 301E8208FE for ; Mon, 12 Oct 2020 10:47:50 +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="kGCYC2N/" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 301E8208FE 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 hemlock.osuosl.org (Postfix) with ESMTP id 0A91787317; Mon, 12 Oct 2020 10:47:50 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from hemlock.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id zrkQlktvzMXC; Mon, 12 Oct 2020 10:47:48 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by hemlock.osuosl.org (Postfix) with ESMTP id 71A3F87285; Mon, 12 Oct 2020 10:47:48 +0000 (UTC) Received: from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136]) by ash.osuosl.org (Postfix) with ESMTP id 3EC7C1BF5B5 for ; Mon, 12 Oct 2020 10:47:47 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id DE778214E6 for ; Mon, 12 Oct 2020 10:47:46 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id nT2JPPINShHb for ; Mon, 12 Oct 2020 10:47:25 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2077.outbound.protection.outlook.com [40.107.223.77]) by silver.osuosl.org (Postfix) with ESMTPS id 1D5B62079A for ; Mon, 12 Oct 2020 10:47:24 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kIszpvDWOinFTifsnYUpZkd6G9RMFfu6NhDFnLrZkgHTYPE26gX3rnoO3v/ZNdqyZRYZsqHx7WdhvKBRcblucgZjhVu2MoePLtv2sIceZtDo4VLWODdmFHWxjGoRw5CrrbUxVYl3ZyIgc7kjwm8VMDOGCvVvWopm9IKm1pW1xRt/ZPAZiAZt2r3/aXvVDMP81j8152JXNoCsdqz1KbsF+9UvfWd9P0eZzc3RscW4McJLci+PmBIudAHq1880FR0LMxMEKfqT7TsTX2zdjdFVdM1y+tJJFLkf1SaMOAZ4yxHtaMUVMNjauI8SmDcWcanKLY/rcVsmQuIabpS/Vjz5jw== 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=954mDpsREIeGgSndu+y9KZXGKu1KjFDO86+q5phMe2Q=; b=Xvz3VztCM1UDFwiFrsHu/vIwtcSuOPFtVP+47Bl1nCVuQQsapKqiLHBlbDOSbBLSj5+F+tiZk6G7olZX+EvR1TGvQxnPauOgJNL2DWnJwB09O+oPd0h39jKp7mvKDLtK3qVlGo92vC3cBIH5i1mTsswC8cWJpe+1Vr1g6Y7ggdK4VIoUN9YyEZFG18PAZ8r2Urfw7lkmkzIXMeDcsSNNGa/5kbM6HjGuDd4+etF3IfcEbsGRdarAUtQxdWRwTOGJB5QMBPKg1V+2Q3svJAoPEP21TAZuT67muwJjP94F3BI24KlVbjrhco0Qky1+HlawuOPoboqYc8xFYnvN2JVRVg== 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=954mDpsREIeGgSndu+y9KZXGKu1KjFDO86+q5phMe2Q=; b=kGCYC2N/NO95+CuBfWEFJ4YiaIK2l/1dg+vpA4LPTzdcCGfLpisz+vtpdSZ0vcLIqpQwCGv4RrelbmYJMbYutU34WmJD2vxdZ82Mz+D2E5P/RLa41DvDcv2MAARrqClU+FTFNY+1FZyjrsnTbtYxCVB+KJXlrbkvIBMSlWv4QLQ= 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:22 +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:22 +0000 From: Jerome Pouiller To: linux-wireless@vger.kernel.org, netdev@vger.kernel.org Subject: [PATCH 09/23] wfx: add fwio.c/fwio.h Date: Mon, 12 Oct 2020 12:46:34 +0200 Message-Id: <20201012104648.985256-10-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:21 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c687a787-568b-40ee-c28d-08d86e9c3317 X-MS-TrafficTypeDiagnostic: SA0PR11MB4734: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1122; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: bht/NUZFTLJebC/SZUVvcsrgCeLddj+mvmLKNQNDaf4Ec1R1xmNiOiK9RoCDfFcaA8leFxNpiuttdcumeJGdzqJYMod+bAxNEglAAonBtimKfNT1SfTgXbWNdP/tfuvSLSoyTj5TT8Nhf7RuV1ZxBit8i4/B3eMJDv8XD4K6us1bezUIYka4GKxZPZ87zTpe78fa7TSYi8GkAArdSpvPLdMNmQ57cUwg1CS0f/sgd8K1TWUBAKCe2o68nnEelUlPL68sktnW4Nz7tsOS6JQ/7JAllJ1Lqr7EfSYB8EftLR5MaWno9fy/bq31NqFoftsQ27eROUCBe5Ko2eVe5yN6jQ== 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: 5FDgWWNQO53+JbJ4wFo8NN0629+nbUtJcePGiaXmoPpMbVIYgLKN3RbFgj2MoJmZGeiINqthmuLL5cYXMQKF8NrOp91EQ2MGCWQpduXBeDANFwOcAEXklD/vxtloYhVSgl2d9oeKpXAgCdcImXPIf9p3mf2njScxPnbslU/vb3lR9pf3okebM6AWSZkNus9DBOQ+Zh8LNrukoACLvsZ000I7li0FBjpngHT7dysjjaa2MAkZG4p3JVH4BLL5+9kKDZaT7P+d9V1hqGSFyuUpBr8ZY1olIAwDBxcyvcLaib7o306stJgHqxGw0F8ok1ah+hmcFQ1si9r+Bi8EUmcFNs9XqXnwtzZpYyghqlAtxVKhKSmF4fvjIkrD9YZf+0tAF65E4vQe9TL99A3LRAaFGXsmnvOawp38Lz6aOmJi6Z8EB2SckapuJPfpkj6hT2jG2dLZuh33n9uv53Hj3FezTTVLjnpYKvjNnEronNLlet19Wy7Xt5pPZsbD2CwzsMRHXy6zOu8H3Mk6QEPXGHYBRi+A3jxC80SFw9h4nzbCKzNMbhy8XwdnK8iWHel+VVRP6/f8jO/3g9gy7mhHkQHkKUGZhyfkcAP08ayW0YWDYLkVS9+WJiPhsbuyz/TAJoo9wm3jGQbFYuVkxwWriRxKEg== X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: c687a787-568b-40ee-c28d-08d86e9c3317 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:22.6932 (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: 9Btt+no+sbVD7caa4I8PAgZYkxmdmTlEURs8nTsExz0UtAa9RSUqD5bLLhgVWc7US50Z0sb0cnXvPlsk6I+eMA== 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 PgotLS0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvZndpby5jIHwgNDA1ICsrKysr KysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvZndp by5oIHwgIDE1ICsKIDIgZmlsZXMgY2hhbmdlZCwgNDIwIGluc2VydGlvbnMoKykKIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L2Z3aW8uYwogY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvZndpby5oCgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9md2lvLmMgYi9kcml2ZXJz L25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L2Z3aW8uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMDAuLjFiOGFlYzAyZDE2OQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMv bmV0L3dpcmVsZXNzL3NpbGFicy93ZngvZndpby5jCkBAIC0wLDAgKzEsNDA1IEBACisvLyBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CisvKgorICogRmlybXdhcmUgbG9hZGlu Zy4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMCwgU2lsaWNvbiBMYWJvcmF0b3JpZXMs IEluYy4KKyAqIENvcHlyaWdodCAoYykgMjAxMCwgU1QtRXJpY3Nzb24KKyAqLworI2luY2x1ZGUg PGxpbnV4L2Zpcm13YXJlLmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5oPgorI2luY2x1ZGUgPGxp bnV4L21tLmg+CisjaW5jbHVkZSA8bGludXgvYml0ZmllbGQuaD4KKworI2luY2x1ZGUgImZ3aW8u aCIKKyNpbmNsdWRlICJ3ZnguaCIKKyNpbmNsdWRlICJod2lvLmgiCisKKy8vIEFkZHJlc3NlcyBi ZWxvdyBhcmUgaW4gU1JBTSBhcmVhCisjZGVmaW5lIFdGWF9ETkxEX0ZJRk8gICAgICAgICAgICAg MHgwOTAwNDAwMAorI2RlZmluZSAgICAgRE5MRF9CTE9DS19TSVpFICAgICAgICAgICAweDA0MDAK KyNkZWZpbmUgICAgIEROTERfRklGT19TSVpFICAgICAgICAgICAgMHg4MDAwIC8vICgzMiAqIERO TERfQkxPQ0tfU0laRSkKKy8vIERvd25sb2FkIENvbnRyb2wgQXJlYSAoRENBKQorI2RlZmluZSBX RlhfRENBX0lNQUdFX1NJWkUgICAgICAgIDB4MDkwMEMwMDAKKyNkZWZpbmUgV0ZYX0RDQV9QVVQg ICAgICAgICAgICAgICAweDA5MDBDMDA0CisjZGVmaW5lIFdGWF9EQ0FfR0VUICAgICAgICAgICAg ICAgMHgwOTAwQzAwOAorI2RlZmluZSBXRlhfRENBX0hPU1RfU1RBVFVTICAgICAgIDB4MDkwMEMw MEMKKyNkZWZpbmUgICAgIEhPU1RfUkVBRFkgICAgICAgICAgICAgICAgMHg4NzY1NDMyMQorI2Rl ZmluZSAgICAgSE9TVF9JTkZPX1JFQUQgICAgICAgICAgICAweEE3NTNCRDk5CisjZGVmaW5lICAg ICBIT1NUX1VQTE9BRF9QRU5ESU5HICAgICAgIDB4QUJDRERDQkEKKyNkZWZpbmUgICAgIEhPU1Rf VVBMT0FEX0NPTVBMRVRFICAgICAgMHhENEM2NEE5OQorI2RlZmluZSAgICAgSE9TVF9PS19UT19K VU1QICAgICAgICAgICAweDE3NEZDODgyCisjZGVmaW5lIFdGWF9EQ0FfTkNQX1NUQVRVUyAgICAg ICAgMHgwOTAwQzAxMAorI2RlZmluZSAgICAgTkNQX05PVF9SRUFEWSAgICAgICAgICAgICAweDEy MzQ1Njc4CisjZGVmaW5lICAgICBOQ1BfUkVBRFkgICAgICAgICAgICAgICAgIDB4ODc2NTQzMjEK KyNkZWZpbmUgICAgIE5DUF9JTkZPX1JFQURZICAgICAgICAgICAgMHhCRDUzRUY5OQorI2RlZmlu ZSAgICAgTkNQX0RPV05MT0FEX1BFTkRJTkcgICAgICAweEFCQ0REQ0JBCisjZGVmaW5lICAgICBO Q1BfRE9XTkxPQURfQ09NUExFVEUgICAgIDB4Q0FGRUZFQ0EKKyNkZWZpbmUgICAgIE5DUF9BVVRI X09LICAgICAgICAgICAgICAgMHhENEM2NEE5OQorI2RlZmluZSAgICAgTkNQX0FVVEhfRkFJTCAg ICAgICAgICAgICAweDE3NEZDODgyCisjZGVmaW5lICAgICBOQ1BfUFVCX0tFWV9SRFkgICAgICAg ICAgIDB4N0FCNDFEMTkKKyNkZWZpbmUgV0ZYX0RDQV9GV19TSUdOQVRVUkUgICAgICAweDA5MDBD MDE0CisjZGVmaW5lICAgICBGV19TSUdOQVRVUkVfU0laRSAgICAgICAgIDB4NDAKKyNkZWZpbmUg V0ZYX0RDQV9GV19IQVNIICAgICAgICAgICAweDA5MDBDMDU0CisjZGVmaW5lICAgICBGV19IQVNI X1NJWkUgICAgICAgICAgICAgIDB4MDgKKyNkZWZpbmUgV0ZYX0RDQV9GV19WRVJTSU9OICAgICAg ICAweDA5MDBDMDVDCisjZGVmaW5lICAgICBGV19WRVJTSU9OX1NJWkUgICAgICAgICAgIDB4MDQK KyNkZWZpbmUgV0ZYX0RDQV9SRVNFUlZFRCAgICAgICAgICAweDA5MDBDMDYwCisjZGVmaW5lICAg ICBEQ0FfUkVTRVJWRURfU0laRSAgICAgICAgIDB4MjAKKyNkZWZpbmUgV0ZYX1NUQVRVU19JTkZP ICAgICAgICAgICAweDA5MDBDMDgwCisjZGVmaW5lIFdGWF9CT09UTE9BREVSX0xBQkVMICAgICAg MHgwOTAwQzA4NAorI2RlZmluZSAgICAgQk9PVExPQURFUl9MQUJFTF9TSVpFICAgICAweDNDCisj ZGVmaW5lIFdGWF9QVEVfSU5GTyAgICAgICAgICAgICAgMHgwOTAwQzBDMAorI2RlZmluZSAgICAg UFRFX0lORk9fS0VZU0VUX0lEWCAgICAgICAweDBECisjZGVmaW5lICAgICBQVEVfSU5GT19TSVpF ICAgICAgICAgICAgIDB4MTAKKyNkZWZpbmUgV0ZYX0VSUl9JTkZPICAgICAgICAgICAgICAweDA5 MDBDMEQwCisjZGVmaW5lICAgICBFUlJfSU5WQUxJRF9TRUNfVFlQRSAgICAgIDB4MDUKKyNkZWZp bmUgICAgIEVSUl9TSUdfVkVSSUZfRkFJTEVEICAgICAgMHgwRgorI2RlZmluZSAgICAgRVJSX0FF U19DVFJMX0tFWSAgICAgICAgICAweDEwCisjZGVmaW5lICAgICBFUlJfRUNDX1BVQl9LRVkgICAg ICAgICAgIDB4MTEKKyNkZWZpbmUgICAgIEVSUl9NQUNfS0VZICAgICAgICAgICAgICAgMHgxOAor CisjZGVmaW5lIERDQV9USU1FT1VUICA1MCAvLyBtaWxsaXNlY29uZHMKKyNkZWZpbmUgV0FLRVVQ X1RJTUVPVVQgMjAwIC8vIG1pbGxpc2Vjb25kcworCitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0 IGZ3aW9fZXJyb3JzW10gPSB7CisJW0VSUl9JTlZBTElEX1NFQ19UWVBFXSA9ICJJbnZhbGlkIHNl Y3Rpb24gdHlwZSBvciB3cm9uZyBlbmNyeXB0aW9uIiwKKwlbRVJSX1NJR19WRVJJRl9GQUlMRURd ID0gIlNpZ25hdHVyZSB2ZXJpZmljYXRpb24gZmFpbGVkIiwKKwlbRVJSX0FFU19DVFJMX0tFWV0g PSAiQUVTIGNvbnRyb2wga2V5IG5vdCBpbml0aWFsaXplZCIsCisJW0VSUl9FQ0NfUFVCX0tFWV0g PSAiRUNDIHB1YmxpYyBrZXkgbm90IGluaXRpYWxpemVkIiwKKwlbRVJSX01BQ19LRVldID0gIk1B QyBrZXkgbm90IGluaXRpYWxpemVkIiwKK307CisKKy8qCisgKiByZXF1ZXN0X2Zpcm13YXJlKCkg YWxsb2NhdGUgZGF0YSB1c2luZyB2bWFsbG9jKCkuIEl0IGlzIG5vdCBjb21wYXRpYmxlIHdpdGgK KyAqIHVuZGVybHlpbmcgaGFyZHdhcmUgdGhhdCB1c2UgRE1BLiBGdW5jdGlvbiBiZWxvdyBkZXRl Y3QgdGhpcyBjYXNlIGFuZAorICogYWxsb2NhdGUgYSBib3VuY2UgYnVmZmVyIGlmIG5lY2Vzc2Fy eS4KKyAqCisgKiBOb3RpY2UgdGhhdCwgaW4gZG91YnQsIHlvdSBjYW4gZW5hYmxlIENPTkZJR19E RUJVR19TRyB0byBhc2sga2VybmVsIHRvCisgKiBkZXRlY3QgdGhpcyBwcm9ibGVtIGF0IHJ1bnRp bWUgIChlbHNlLCBrZXJuZWwgc2lsZW50bHkgZmFpbCkuCisgKgorICogTk9URTogaXQgbWF5IGFs c28gYmUgcG9zc2libGUgdG8gdXNlICdwYWdlcycgZnJvbSBzdHJ1Y3QgZmlybXdhcmUgYW5kIGF2 b2lkCisgKiBib3VuY2UgYnVmZmVyCisgKi8KK3N0YXRpYyBpbnQgc3JhbV93cml0ZV9kbWFfc2Fm ZShzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwgdTMyIGFkZHIsIGNvbnN0IHU4ICpidWYsCisJCQkgICAg ICAgc2l6ZV90IGxlbikKK3sKKwlpbnQgcmV0OworCWNvbnN0IHU4ICp0bXA7CisKKwlpZiAoIXZp cnRfYWRkcl92YWxpZChidWYpKSB7CisJCXRtcCA9IGttZW1kdXAoYnVmLCBsZW4sIEdGUF9LRVJO RUwpOworCQlpZiAoIXRtcCkKKwkJCXJldHVybiAtRU5PTUVNOworCX0gZWxzZSB7CisJCXRtcCA9 IGJ1ZjsKKwl9CisJcmV0ID0gc3JhbV9idWZfd3JpdGUod2RldiwgYWRkciwgdG1wLCBsZW4pOwor CWlmICh0bXAgIT0gYnVmKQorCQlrZnJlZSh0bXApOworCXJldHVybiByZXQ7Cit9CisKK3N0YXRp YyBpbnQgZ2V0X2Zpcm13YXJlKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCB1MzIga2V5c2V0X2NoaXAs CisJCQljb25zdCBzdHJ1Y3QgZmlybXdhcmUgKipmdywgaW50ICpmaWxlX29mZnNldCkKK3sKKwlp bnQga2V5c2V0X2ZpbGU7CisJY2hhciBmaWxlbmFtZVsyNTZdOworCWNvbnN0IGNoYXIgKmRhdGE7 CisJaW50IHJldDsKKworCXNucHJpbnRmKGZpbGVuYW1lLCBzaXplb2YoZmlsZW5hbWUpLCAiJXNf JTAyWC5zZWMiLAorCQkgd2Rldi0+cGRhdGEuZmlsZV9mdywga2V5c2V0X2NoaXApOworCXJldCA9 IGZpcm13YXJlX3JlcXVlc3Rfbm93YXJuKGZ3LCBmaWxlbmFtZSwgd2Rldi0+ZGV2KTsKKwlpZiAo cmV0KSB7CisJCWRldl9pbmZvKHdkZXYtPmRldiwgImNhbid0IGxvYWQgJXMsIGZhbGxpbmcgYmFj ayB0byAlcy5zZWNcbiIsCisJCQkgZmlsZW5hbWUsIHdkZXYtPnBkYXRhLmZpbGVfZncpOworCQlz bnByaW50ZihmaWxlbmFtZSwgc2l6ZW9mKGZpbGVuYW1lKSwgIiVzLnNlYyIsCisJCQkgd2Rldi0+ cGRhdGEuZmlsZV9mdyk7CisJCXJldCA9IHJlcXVlc3RfZmlybXdhcmUoZncsIGZpbGVuYW1lLCB3 ZGV2LT5kZXYpOworCQlpZiAocmV0KSB7CisJCQlkZXZfZXJyKHdkZXYtPmRldiwgImNhbid0IGxv YWQgJXNcbiIsIGZpbGVuYW1lKTsKKwkJCSpmdyA9IE5VTEw7CisJCQlyZXR1cm4gcmV0OworCQl9 CisJfQorCisJZGF0YSA9ICgqZncpLT5kYXRhOworCWlmIChtZW1jbXAoZGF0YSwgIktFWVNFVCIs IDYpICE9IDApIHsKKwkJLy8gTGVnYWN5IGZpcm13YXJlIGZvcm1hdAorCQkqZmlsZV9vZmZzZXQg PSAwOworCQlrZXlzZXRfZmlsZSA9IDB4OTA7CisJfSBlbHNlIHsKKwkJKmZpbGVfb2Zmc2V0ID0g ODsKKwkJa2V5c2V0X2ZpbGUgPSAoaGV4X3RvX2JpbihkYXRhWzZdKSAqIDE2KSB8IGhleF90b19i aW4oZGF0YVs3XSk7CisJCWlmIChrZXlzZXRfZmlsZSA8IDApIHsKKwkJCWRldl9lcnIod2Rldi0+ ZGV2LCAiJXMgY29ycnVwdGVkXG4iLCBmaWxlbmFtZSk7CisJCQlyZWxlYXNlX2Zpcm13YXJlKCpm dyk7CisJCQkqZncgPSBOVUxMOworCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKwl9CisJaWYgKGtl eXNldF9maWxlICE9IGtleXNldF9jaGlwKSB7CisJCWRldl9lcnIod2Rldi0+ZGV2LCAiZmlybXdh cmUga2V5c2V0IGlzIGluY29tcGF0aWJsZSB3aXRoIGNoaXAgKGZpbGU6IDB4JTAyWCwgY2hpcDog MHglMDJYKVxuIiwKKwkJCWtleXNldF9maWxlLCBrZXlzZXRfY2hpcCk7CisJCXJlbGVhc2VfZmly bXdhcmUoKmZ3KTsKKwkJKmZ3ID0gTlVMTDsKKwkJcmV0dXJuIC1FTk9ERVY7CisJfQorCXdkZXYt PmtleXNldCA9IGtleXNldF9maWxlOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHdhaXRf bmNwX3N0YXR1cyhzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwgdTMyIHN0YXR1cykKK3sKKwlrdGltZV90 IG5vdywgc3RhcnQ7CisJdTMyIHJlZzsKKwlpbnQgcmV0OworCisJc3RhcnQgPSBrdGltZV9nZXQo KTsKKwlmb3IgKDs7KSB7CisJCXJldCA9IHNyYW1fcmVnX3JlYWQod2RldiwgV0ZYX0RDQV9OQ1Bf U1RBVFVTLCAmcmVnKTsKKwkJaWYgKHJldCA8IDApCisJCQlyZXR1cm4gLUVJTzsKKwkJbm93ID0g a3RpbWVfZ2V0KCk7CisJCWlmIChyZWcgPT0gc3RhdHVzKQorCQkJYnJlYWs7CisJCWlmIChrdGlt ZV9hZnRlcihub3csIGt0aW1lX2FkZF9tcyhzdGFydCwgRENBX1RJTUVPVVQpKSkKKwkJCXJldHVy biAtRVRJTUVET1VUOworCX0KKwlpZiAoa3RpbWVfY29tcGFyZShub3csIHN0YXJ0KSkKKwkJZGV2 X2RiZyh3ZGV2LT5kZXYsICJjaGlwIGFuc3dlciBhZnRlciAlbGxkdXNcbiIsCisJCQlrdGltZV91 c19kZWx0YShub3csIHN0YXJ0KSk7CisJZWxzZQorCQlkZXZfZGJnKHdkZXYtPmRldiwgImNoaXAg YW5zd2VyIGltbWVkaWF0ZWx5XG4iKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCB1cGxv YWRfZmlybXdhcmUoc3RydWN0IHdmeF9kZXYgKndkZXYsIGNvbnN0IHU4ICpkYXRhLCBzaXplX3Qg bGVuKQoreworCWludCByZXQ7CisJdTMyIG9mZnMsIGJ5dGVzX2RvbmUgPSAwOworCWt0aW1lX3Qg bm93LCBzdGFydDsKKworCWlmIChsZW4gJSBETkxEX0JMT0NLX1NJWkUpIHsKKwkJZGV2X2Vycih3 ZGV2LT5kZXYsICJmaXJtd2FyZSBzaXplIGlzIG5vdCBhbGlnbmVkLiBCdWZmZXIgb3ZlcnJ1biB3 aWxsIG9jY3VyXG4iKTsKKwkJcmV0dXJuIC1FSU87CisJfQorCW9mZnMgPSAwOworCXdoaWxlIChv ZmZzIDwgbGVuKSB7CisJCXN0YXJ0ID0ga3RpbWVfZ2V0KCk7CisJCWZvciAoOzspIHsKKwkJCW5v dyA9IGt0aW1lX2dldCgpOworCQkJaWYgKG9mZnMgKyBETkxEX0JMT0NLX1NJWkUgLSBieXRlc19k b25lIDwgRE5MRF9GSUZPX1NJWkUpCisJCQkJYnJlYWs7CisJCQlpZiAoa3RpbWVfYWZ0ZXIobm93 LCBrdGltZV9hZGRfbXMoc3RhcnQsIERDQV9USU1FT1VUKSkpCisJCQkJcmV0dXJuIC1FVElNRURP VVQ7CisJCQlyZXQgPSBzcmFtX3JlZ19yZWFkKHdkZXYsIFdGWF9EQ0FfR0VULCAmYnl0ZXNfZG9u ZSk7CisJCQlpZiAocmV0IDwgMCkKKwkJCQlyZXR1cm4gcmV0OworCQl9CisJCWlmIChrdGltZV9j b21wYXJlKG5vdywgc3RhcnQpKQorCQkJZGV2X2RiZyh3ZGV2LT5kZXYsICJhbnN3ZXIgYWZ0ZXIg JWxsZHVzXG4iLAorCQkJCWt0aW1lX3VzX2RlbHRhKG5vdywgc3RhcnQpKTsKKworCQlyZXQgPSBz cmFtX3dyaXRlX2RtYV9zYWZlKHdkZXYsIFdGWF9ETkxEX0ZJRk8gKworCQkJCQkgIChvZmZzICUg RE5MRF9GSUZPX1NJWkUpLAorCQkJCQkgIGRhdGEgKyBvZmZzLCBETkxEX0JMT0NLX1NJWkUpOwor CQlpZiAocmV0IDwgMCkKKwkJCXJldHVybiByZXQ7CisKKwkJLy8gV0Z4IHNlZW1zIHRvIG5vdCBz dXBwb3J0IHdyaXRpbmcgMCBpbiB0aGlzIHJlZ2lzdGVyIGR1cmluZworCQkvLyBmaXJzdCBsb29w CisJCW9mZnMgKz0gRE5MRF9CTE9DS19TSVpFOworCQlyZXQgPSBzcmFtX3JlZ193cml0ZSh3ZGV2 LCBXRlhfRENBX1BVVCwgb2Zmcyk7CisJCWlmIChyZXQgPCAwKQorCQkJcmV0dXJuIHJldDsKKwl9 CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHByaW50X2Jvb3Rfc3RhdHVzKHN0cnVjdCB3 ZnhfZGV2ICp3ZGV2KQoreworCXUzMiByZWc7CisKKwlzcmFtX3JlZ19yZWFkKHdkZXYsIFdGWF9T VEFUVVNfSU5GTywgJnJlZyk7CisJaWYgKHJlZyA9PSAweDEyMzQ1Njc4KQorCQlyZXR1cm47CisJ c3JhbV9yZWdfcmVhZCh3ZGV2LCBXRlhfRVJSX0lORk8sICZyZWcpOworCWlmIChyZWcgPCBBUlJB WV9TSVpFKGZ3aW9fZXJyb3JzKSAmJiBmd2lvX2Vycm9yc1tyZWddKQorCQlkZXZfaW5mbyh3ZGV2 LT5kZXYsICJzZWN1cmUgYm9vdDogJXNcbiIsIGZ3aW9fZXJyb3JzW3JlZ10pOworCWVsc2UKKwkJ ZGV2X2luZm8od2Rldi0+ZGV2LCAic2VjdXJlIGJvb3Q6IEVycm9yICUjMDJ4XG4iLCByZWcpOwor fQorCitzdGF0aWMgaW50IGxvYWRfZmlybXdhcmVfc2VjdXJlKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2 KQoreworCWNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncgPSBOVUxMOworCWludCBoZWFkZXJfc2l6 ZTsKKwlpbnQgZndfb2Zmc2V0OworCWt0aW1lX3Qgc3RhcnQ7CisJdTggKmJ1ZjsKKwlpbnQgcmV0 OworCisJQlVJTERfQlVHX09OKFBURV9JTkZPX1NJWkUgPiBCT09UTE9BREVSX0xBQkVMX1NJWkUp OworCWJ1ZiA9IGttYWxsb2MoQk9PVExPQURFUl9MQUJFTF9TSVpFICsgMSwgR0ZQX0tFUk5FTCk7 CisJaWYgKCFidWYpCisJCXJldHVybiAtRU5PTUVNOworCisJc3JhbV9yZWdfd3JpdGUod2Rldiwg V0ZYX0RDQV9IT1NUX1NUQVRVUywgSE9TVF9SRUFEWSk7CisJcmV0ID0gd2FpdF9uY3Bfc3RhdHVz KHdkZXYsIE5DUF9JTkZPX1JFQURZKTsKKwlpZiAocmV0KQorCQlnb3RvIGVycm9yOworCisJc3Jh bV9idWZfcmVhZCh3ZGV2LCBXRlhfQk9PVExPQURFUl9MQUJFTCwgYnVmLCBCT09UTE9BREVSX0xB QkVMX1NJWkUpOworCWJ1ZltCT09UTE9BREVSX0xBQkVMX1NJWkVdID0gMDsKKwlkZXZfZGJnKHdk ZXYtPmRldiwgImJvb3Rsb2FkZXI6IFwiJXNcIlxuIiwgYnVmKTsKKworCXNyYW1fYnVmX3JlYWQo d2RldiwgV0ZYX1BURV9JTkZPLCBidWYsIFBURV9JTkZPX1NJWkUpOworCXJldCA9IGdldF9maXJt d2FyZSh3ZGV2LCBidWZbUFRFX0lORk9fS0VZU0VUX0lEWF0sICZmdywgJmZ3X29mZnNldCk7CisJ aWYgKHJldCkKKwkJZ290byBlcnJvcjsKKwloZWFkZXJfc2l6ZSA9IGZ3X29mZnNldCArIEZXX1NJ R05BVFVSRV9TSVpFICsgRldfSEFTSF9TSVpFOworCisJc3JhbV9yZWdfd3JpdGUod2RldiwgV0ZY X0RDQV9IT1NUX1NUQVRVUywgSE9TVF9JTkZPX1JFQUQpOworCXJldCA9IHdhaXRfbmNwX3N0YXR1 cyh3ZGV2LCBOQ1BfUkVBRFkpOworCWlmIChyZXQpCisJCWdvdG8gZXJyb3I7CisKKwlzcmFtX3Jl Z193cml0ZSh3ZGV2LCBXRlhfRE5MRF9GSUZPLCAweEZGRkZGRkZGKTsgLy8gRmlmbyBpbml0CisJ c3JhbV93cml0ZV9kbWFfc2FmZSh3ZGV2LCBXRlhfRENBX0ZXX1ZFUlNJT04sICJceDAxXHgwMFx4 MDBceDAwIiwKKwkJCSAgICBGV19WRVJTSU9OX1NJWkUpOworCXNyYW1fd3JpdGVfZG1hX3NhZmUo d2RldiwgV0ZYX0RDQV9GV19TSUdOQVRVUkUsIGZ3LT5kYXRhICsgZndfb2Zmc2V0LAorCQkJICAg IEZXX1NJR05BVFVSRV9TSVpFKTsKKwlzcmFtX3dyaXRlX2RtYV9zYWZlKHdkZXYsIFdGWF9EQ0Ff RldfSEFTSCwKKwkJCSAgICBmdy0+ZGF0YSArIGZ3X29mZnNldCArIEZXX1NJR05BVFVSRV9TSVpF LAorCQkJICAgIEZXX0hBU0hfU0laRSk7CisJc3JhbV9yZWdfd3JpdGUod2RldiwgV0ZYX0RDQV9J TUFHRV9TSVpFLCBmdy0+c2l6ZSAtIGhlYWRlcl9zaXplKTsKKwlzcmFtX3JlZ193cml0ZSh3ZGV2 LCBXRlhfRENBX0hPU1RfU1RBVFVTLCBIT1NUX1VQTE9BRF9QRU5ESU5HKTsKKwlyZXQgPSB3YWl0 X25jcF9zdGF0dXMod2RldiwgTkNQX0RPV05MT0FEX1BFTkRJTkcpOworCWlmIChyZXQpCisJCWdv dG8gZXJyb3I7CisKKwlzdGFydCA9IGt0aW1lX2dldCgpOworCXJldCA9IHVwbG9hZF9maXJtd2Fy ZSh3ZGV2LCBmdy0+ZGF0YSArIGhlYWRlcl9zaXplLAorCQkJICAgICAgZnctPnNpemUgLSBoZWFk ZXJfc2l6ZSk7CisJaWYgKHJldCkKKwkJZ290byBlcnJvcjsKKwlkZXZfZGJnKHdkZXYtPmRldiwg ImZpcm13YXJlIGxvYWQgYWZ0ZXIgJWxsZHVzXG4iLAorCQlrdGltZV91c19kZWx0YShrdGltZV9n ZXQoKSwgc3RhcnQpKTsKKworCXNyYW1fcmVnX3dyaXRlKHdkZXYsIFdGWF9EQ0FfSE9TVF9TVEFU VVMsIEhPU1RfVVBMT0FEX0NPTVBMRVRFKTsKKwlyZXQgPSB3YWl0X25jcF9zdGF0dXMod2Rldiwg TkNQX0FVVEhfT0spOworCS8vIExlZ2FjeSBST00gc3VwcG9ydAorCWlmIChyZXQgPCAwKQorCQly ZXQgPSB3YWl0X25jcF9zdGF0dXMod2RldiwgTkNQX1BVQl9LRVlfUkRZKTsKKwlpZiAocmV0IDwg MCkKKwkJZ290byBlcnJvcjsKKwlzcmFtX3JlZ193cml0ZSh3ZGV2LCBXRlhfRENBX0hPU1RfU1RB VFVTLCBIT1NUX09LX1RPX0pVTVApOworCitlcnJvcjoKKwlrZnJlZShidWYpOworCWlmIChmdykK KwkJcmVsZWFzZV9maXJtd2FyZShmdyk7CisJaWYgKHJldCkKKwkJcHJpbnRfYm9vdF9zdGF0dXMo d2Rldik7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBpbml0X2dwcihzdHJ1Y3Qgd2Z4 X2RldiAqd2RldikKK3sKKwlpbnQgcmV0LCBpOworCXN0YXRpYyBjb25zdCBzdHJ1Y3QgeworCQlp bnQgaW5kZXg7CisJCXUzMiB2YWx1ZTsKKwl9IGdwcl9pbml0W10gPSB7CisJCXsgMHgwNywgMHgy MDg3NzUgfSwKKwkJeyAweDA4LCAweDJFQzAyMCB9LAorCQl7IDB4MDksIDB4M0MzQzNDIH0sCisJ CXsgMHgwQiwgMHgzMjJDNDQgfSwKKwkJeyAweDBDLCAweEEwNjQ5NyB9LAorCX07CisKKwlmb3Ig KGkgPSAwOyBpIDwgQVJSQVlfU0laRShncHJfaW5pdCk7IGkrKykgeworCQlyZXQgPSBpZ3ByX3Jl Z193cml0ZSh3ZGV2LCBncHJfaW5pdFtpXS5pbmRleCwKKwkJCQkgICAgIGdwcl9pbml0W2ldLnZh bHVlKTsKKwkJaWYgKHJldCA8IDApCisJCQlyZXR1cm4gcmV0OworCQlkZXZfZGJnKHdkZXYtPmRl diwgIiAgaW5kZXggJTAyeDogJTA4eFxuIiwKKwkJCWdwcl9pbml0W2ldLmluZGV4LCBncHJfaW5p dFtpXS52YWx1ZSk7CisJfQorCXJldHVybiAwOworfQorCitpbnQgd2Z4X2luaXRfZGV2aWNlKHN0 cnVjdCB3ZnhfZGV2ICp3ZGV2KQoreworCWludCByZXQ7CisJaW50IGh3X3JldmlzaW9uLCBod190 eXBlOworCWludCB3YWtldXBfdGltZW91dCA9IDUwOyAvLyBtcworCWt0aW1lX3Qgbm93LCBzdGFy dDsKKwl1MzIgcmVnOworCisJcmVnID0gQ0ZHX0RJUkVDVF9BQ0NFU1NfTU9ERSB8IENGR19DUFVf UkVTRVQgfCBDRkdfQllURV9PUkRFUl9BQkNEOworCWlmICh3ZGV2LT5wZGF0YS51c2VfcmlzaW5n X2NsaykKKwkJcmVnIHw9IENGR19DTEtfUklTRV9FREdFOworCXJldCA9IGNvbmZpZ19yZWdfd3Jp dGUod2RldiwgcmVnKTsKKwlpZiAocmV0IDwgMCkgeworCQlkZXZfZXJyKHdkZXYtPmRldiwgImJ1 cyByZXR1cm5lZCBhbiBlcnJvciBkdXJpbmcgZmlyc3Qgd3JpdGUgYWNjZXNzLiBIb3N0IGNvbmZp Z3VyYXRpb24gZXJyb3I/XG4iKTsKKwkJcmV0dXJuIC1FSU87CisJfQorCisJcmV0ID0gY29uZmln X3JlZ19yZWFkKHdkZXYsICZyZWcpOworCWlmIChyZXQgPCAwKSB7CisJCWRldl9lcnIod2Rldi0+ ZGV2LCAiYnVzIHJldHVybmVkIGFuIGVycm9yIGR1cmluZyBmaXJzdCByZWFkIGFjY2Vzcy4gQnVz IGNvbmZpZ3VyYXRpb24gZXJyb3I/XG4iKTsKKwkJcmV0dXJuIC1FSU87CisJfQorCWlmIChyZWcg PT0gMCB8fCByZWcgPT0gfjApIHsKKwkJZGV2X2Vycih3ZGV2LT5kZXYsICJjaGlwIG11dGUuIEJ1 cyBjb25maWd1cmF0aW9uIGVycm9yIG9yIGNoaXAgd2Fzbid0IHJlc2V0P1xuIik7CisJCXJldHVy biAtRUlPOworCX0KKwlkZXZfZGJnKHdkZXYtPmRldiwgImluaXRpYWwgY29uZmlnIHJlZ2lzdGVy IHZhbHVlOiAlMDh4XG4iLCByZWcpOworCisJaHdfcmV2aXNpb24gPSBGSUVMRF9HRVQoQ0ZHX0RF VklDRV9JRF9NQUpPUiwgcmVnKTsKKwlpZiAoaHdfcmV2aXNpb24gPT0gMCkgeworCQlkZXZfZXJy KHdkZXYtPmRldiwgImJhZCBoYXJkd2FyZSByZXZpc2lvbiBudW1iZXI6ICVkXG4iLAorCQkJaHdf cmV2aXNpb24pOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisJaHdfdHlwZSA9IEZJRUxEX0dFVChD RkdfREVWSUNFX0lEX1RZUEUsIHJlZyk7CisJaWYgKGh3X3R5cGUgPT0gMSkgeworCQlkZXZfbm90 aWNlKHdkZXYtPmRldiwgImRldmVsb3BtZW50IGhhcmR3YXJlIGRldGVjdGVkXG4iKTsKKwkJd2Fr ZXVwX3RpbWVvdXQgPSAyMDAwOworCX0KKworCXJldCA9IGluaXRfZ3ByKHdkZXYpOworCWlmIChy ZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCisJcmV0ID0gY29udHJvbF9yZWdfd3JpdGUod2Rldiwg Q1RSTF9XTEFOX1dBS0VVUCk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiAtRUlPOworCXN0YXJ0 ID0ga3RpbWVfZ2V0KCk7CisJZm9yICg7OykgeworCQlyZXQgPSBjb250cm9sX3JlZ19yZWFkKHdk ZXYsICZyZWcpOworCQlub3cgPSBrdGltZV9nZXQoKTsKKwkJaWYgKHJlZyAmIENUUkxfV0xBTl9S RUFEWSkKKwkJCWJyZWFrOworCQlpZiAoa3RpbWVfYWZ0ZXIobm93LCBrdGltZV9hZGRfbXMoc3Rh cnQsIHdha2V1cF90aW1lb3V0KSkpIHsKKwkJCWRldl9lcnIod2Rldi0+ZGV2LCAiY2hpcCBkaWRu J3Qgd2FrZSB1cC4gQ2hpcCB3YXNuJ3QgcmVzZXQ/XG4iKTsKKwkJCXJldHVybiAtRVRJTUVET1VU OworCQl9CisJfQorCWRldl9kYmcod2Rldi0+ZGV2LCAiY2hpcCB3YWtlIHVwIGFmdGVyICVsbGR1 c1xuIiwKKwkJa3RpbWVfdXNfZGVsdGEobm93LCBzdGFydCkpOworCisJcmV0ID0gY29uZmlnX3Jl Z193cml0ZV9iaXRzKHdkZXYsIENGR19DUFVfUkVTRVQsIDApOworCWlmIChyZXQgPCAwKQorCQly ZXR1cm4gcmV0OworCXJldCA9IGxvYWRfZmlybXdhcmVfc2VjdXJlKHdkZXYpOworCWlmIChyZXQg PCAwKQorCQlyZXR1cm4gcmV0OworCXJldHVybiBjb25maWdfcmVnX3dyaXRlX2JpdHMod2RldiwK KwkJCQkgICAgIENGR19ESVJFQ1RfQUNDRVNTX01PREUgfAorCQkJCSAgICAgQ0ZHX0lSUV9FTkFC TEVfREFUQSB8CisJCQkJICAgICBDRkdfSVJRX0VOQUJMRV9XUkRZLAorCQkJCSAgICAgQ0ZHX0lS UV9FTkFCTEVfREFUQSk7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxh YnMvd2Z4L2Z3aW8uaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvZndpby5oCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNjAyOGY5MjUwM2ZlCi0tLSAv ZGV2L251bGwKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9md2lvLmgKQEAg LTAsMCArMSwxNSBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seSAq LworLyoKKyAqIEZpcm13YXJlIGxvYWRpbmcuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDE3LTIw MTksIFNpbGljb24gTGFib3JhdG9yaWVzLCBJbmMuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAsIFNU LUVyaWNzc29uCisgKi8KKyNpZm5kZWYgV0ZYX0ZXSU9fSAorI2RlZmluZSBXRlhfRldJT19ICisK K3N0cnVjdCB3ZnhfZGV2OworCitpbnQgd2Z4X2luaXRfZGV2aWNlKHN0cnVjdCB3ZnhfZGV2ICp3 ZGV2KTsKKworI2VuZGlmIC8qIFdGWF9GV0lPX0ggKi8KLS0gCjIuMjguMAoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZGV2ZWwgbWFpbGluZyBsaXN0CmRl dmVsQGxpbnV4ZHJpdmVycHJvamVjdC5vcmcKaHR0cDovL2RyaXZlcmRldi5saW51eGRyaXZlcnBy b2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8vZHJpdmVyZGV2LWRldmVsCg==