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 A154AC433E7 for ; Tue, 20 Oct 2020 12:59:17 +0000 (UTC) Received: from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136]) (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 07E2A2245B for ; Tue, 20 Oct 2020 12:59:16 +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="R0JHJML+" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 07E2A2245B 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 silver.osuosl.org (Postfix) with ESMTP id 63FFA2E1C6; Tue, 20 Oct 2020 12:59:16 +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 ZADZQYb7ecin; Tue, 20 Oct 2020 12:59:12 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by silver.osuosl.org (Postfix) with ESMTP id F24D02E0F9; Tue, 20 Oct 2020 12:59:11 +0000 (UTC) Received: from hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133]) by ash.osuosl.org (Postfix) with ESMTP id AE87E1BF27A for ; Tue, 20 Oct 2020 12:59:10 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by hemlock.osuosl.org (Postfix) with ESMTP id A7F94872B9 for ; Tue, 20 Oct 2020 12:59:10 +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 fpwD8eyihE86 for ; Tue, 20 Oct 2020 12:59:09 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2048.outbound.protection.outlook.com [40.107.94.48]) by hemlock.osuosl.org (Postfix) with ESMTPS id 14F16872AA for ; Tue, 20 Oct 2020 12:59:09 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GynIvqIvMHAiW4GyryxJmlNtlwUEeGe8efKzpgghNPVCUcbjp+qBI4nbVAmWgfA2PJoQh0m6rn33qDNyY5wzPDKe+tdliIkQB1kI//HhJIliYtUr6gPvJOgFUZGQK+NcezwqppYIvuNFK8FjuJjJqp3QiBh4DXdcI9KFgbbpo5z9gRKB4d1UIW/n95DI0vdy1eJqIIfMBm2wOEpGSbdkMfzh/eTbFUmZKJvpl5Gz4tEmyXzIYEoS3DeHZEMHpy9sT/fNrkQ5YYKBJUOaNAjfN49TGKeoIgwfU5LCwncF/EJgkFMKEAQZ9Meh26YCnxHnOTAVJLcfnzHCbjulHQNMaQ== 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=LOMYGqJsd9ipwNGZZfFpBGAlsHkXK1v9m54QebKnMEI=; b=nIXd2UO9MZrgW0rxAfiAFpjxD9Nbf2YMqml7xwV0mVYSQCHAmLemD4t2++VFai4OU1TwUS98KemylU5roEjcp00hfExs71MwuNoSPAch1DPZxgdRyPd3hNP3FCexUafeescm06AZJHU6na28N53iqwyoTT91hPeXAMO10tVhgMLUT/17iCbQ7522flSiudj6/qvJmu3S29ULqCf2pJe0hbj01w0FbGKmbtBBjo9CXdxIiEaK8OfDKJRga4m8KvFPTTzouNHz7YktLX8lAmsnHovQayiPMl5o8JXpatOM6d3FL7CT1dbF4OCMcNq9S+CgQfqmv7JDGfH3ByM84oCgXw== 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=LOMYGqJsd9ipwNGZZfFpBGAlsHkXK1v9m54QebKnMEI=; b=R0JHJML+nD/Mrt3oFjIssuPiBgnUhcq0xLZ09sZw7XjJXpcFdNpeDHnZXBH04vzaCdnSV3Dtgswhf74h8uuxsyCDbLIjkXcXLdGeoG5YqmfPJbGYhm3fJysgrR6cNvubQWTynC/wl4WTGqRRu9c1FxHZeYWEXRRhMMWCkLhXay8= 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 SN6PR11MB2656.namprd11.prod.outlook.com (2603:10b6:805:58::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3477.28; Tue, 20 Oct 2020 12:59:07 +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.3477.028; Tue, 20 Oct 2020 12:59:07 +0000 From: Jerome Pouiller To: linux-wireless@vger.kernel.org, netdev@vger.kernel.org Subject: [PATCH v2 11/24] wfx: add bh.c/bh.h Date: Tue, 20 Oct 2020 14:58:04 +0200 Message-Id: <20201020125817.1632995-12-Jerome.Pouiller@silabs.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201020125817.1632995-1-Jerome.Pouiller@silabs.com> References: <20201020125817.1632995-1-Jerome.Pouiller@silabs.com> X-Originating-IP: [37.71.187.125] X-ClientProxiedBy: PR3P192CA0026.EURP192.PROD.OUTLOOK.COM (2603:10a6:102:56::31) To SN6PR11MB2718.namprd11.prod.outlook.com (2603:10b6:805:63::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from pc-42.silabs.com (37.71.187.125) by PR3P192CA0026.EURP192.PROD.OUTLOOK.COM (2603:10a6:102:56::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3477.21 via Frontend Transport; Tue, 20 Oct 2020 12:59:04 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c8382e0d-55d6-4868-9150-08d874f7ee19 X-MS-TrafficTypeDiagnostic: SN6PR11MB2656: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:4502; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 5L2pMfkxsm0OIvOWczgGI4OgW4fSqWocQBS0DATVISKJ0k+1BOlwn5yowEnJaC0OwttvgXO1cu82upyL4G6Gjd1+Dk2LpNrZkTNepToh+qnFVERqwvZaN3ClMjNT0qSwgwGsHM03A1kHe6hN40d7oubHGnCcxX3JoAi82Hf+uw7CaTeCr5PWQeTUBxAgFd9lV5FIWFcQNw/o1hpebVY/ecx0bf3slTO0TkHpCKZ/pUK8il+VQrze6q1YGVk6CJhcKZe2ywOuYicD/sOWb7GkvP7h6N5PiPvTVx/R83LQZlNXIZLDLeoHTDgMNMfz3pEZaeeNY4jLwsEfa/kf6slWhg== 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:(396003)(366004)(136003)(346002)(376002)(39840400004)(186003)(316002)(4326008)(107886003)(8676002)(86362001)(26005)(2906002)(7696005)(478600001)(16526019)(956004)(6486002)(52116002)(36756003)(8936002)(2616005)(54906003)(5660300002)(1076003)(7416002)(30864003)(66574015)(66556008)(66476007)(66946007)(83380400001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: TcsumvjDfwkhOwELCc28hsinVvvTzVF2CUepnar/U8lMHsAj/lHCNVhz4z42ngWleybXbr+K5wQj0s4Sazbz1Vx60PImuBeZtBXRVxiYGbVxYf7rdmaOssfg769iNXTVc+GiRPf3GsLlUiG3t4cMg7qUJs4+K7k5AiDPUsWJZYoyorbutcUrGhaeOnRyNIpNLzfIi8zZ7JsV9FeDV8ulGo7ng/e44jP8teMGAWYAQKaJEyX/bBPjMFoV6wQ2P6W9MqIhAOXELXh5cvG5AHLu2d9dlAGkiF13HjcYMJzlhTa8nCrDloLbtnFBwPdEn6l/l4f9I/9FF5n16S/Qd1p3XQ8aQUY89looSPhBAM3hHszxXLVDKWeBi7wMF8KSkhVMzW05L7qNp3up24riCW08sqPZ81U3x/o5xEmpgT4aaMdMbChhuMN0wExzU4p93OtCAMh/ZYOuxX1yvO8IEebuMDmSalVAF0QW5cwHvNEDhbPN5RKKzgTL5qER7oxmARn/4h8UgNEngoXrTgQu9D/zqAJBHaznpG4Qg4/3MO7TE/8MV8p2jYJjNZd6PN92ZhT1MGqYPn0B1Mq94Ws+uniemWrdIe8VhIY8L6c2Uv75c9y88SpCY1kB92F68vxipuVLS59CVnUowXv7LFuXgE9egQ== X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: c8382e0d-55d6-4868-9150-08d874f7ee19 X-MS-Exchange-CrossTenant-AuthSource: SN6PR11MB2718.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Oct 2020 12:59:07.5611 (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: qKhRgYrNodJeitK5cu4oOU1kB8D7qrcpy+jsj7QBy15UVNIHZby2YT3giCry5Pf7S3a1LNRwug+smVbRELUutg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR11MB2656 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, Ulf Hansson , Greg Kroah-Hartman , linux-mmc@vger.kernel.org, linux-kernel@vger.kernel.org, Rob Herring , =?UTF-8?q?Pali=20Roh=C3=A1r?= , "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 PgotLS0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvYmguYyB8IDMzMyArKysrKysr KysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvYmgu aCB8ICAzMyArKysKIDIgZmlsZXMgY2hhbmdlZCwgMzY2IGluc2VydGlvbnMoKykKIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L2JoLmMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L2JoLmgKCmRpZmYgLS1n aXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L2JoLmMgYi9kcml2ZXJzL25ldC93 aXJlbGVzcy9zaWxhYnMvd2Z4L2JoLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwLi5lZDUzZDBiNDU1OTIKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL25ldC93aXJl bGVzcy9zaWxhYnMvd2Z4L2JoLmMKQEAgLTAsMCArMSwzMzMgQEAKKy8vIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKKy8qCisgKiBJbnRlcnJ1cHQgYm90dG9tIGhhbGYgKEJI KS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMCwgU2lsaWNvbiBMYWJvcmF0b3JpZXMs IEluYy4KKyAqIENvcHlyaWdodCAoYykgMjAxMCwgU1QtRXJpY3Nzb24KKyAqLworI2luY2x1ZGUg PGxpbnV4L2dwaW8vY29uc3VtZXIuaD4KKyNpbmNsdWRlIDxuZXQvbWFjODAyMTEuaD4KKworI2lu Y2x1ZGUgImJoLmgiCisjaW5jbHVkZSAid2Z4LmgiCisjaW5jbHVkZSAiaHdpby5oIgorI2luY2x1 ZGUgInRyYWNlcy5oIgorI2luY2x1ZGUgImhpZl9yeC5oIgorI2luY2x1ZGUgImhpZl9hcGlfY21k LmgiCisKK3N0YXRpYyB2b2lkIGRldmljZV93YWtldXAoc3RydWN0IHdmeF9kZXYgKndkZXYpCit7 CisJaW50IG1heF9yZXRyeSA9IDM7CisKKwlpZiAoIXdkZXYtPnBkYXRhLmdwaW9fd2FrZXVwKQor CQlyZXR1cm47CisJaWYgKGdwaW9kX2dldF92YWx1ZV9jYW5zbGVlcCh3ZGV2LT5wZGF0YS5ncGlv X3dha2V1cCkgPiAwKQorCQlyZXR1cm47CisKKwlpZiAod2Z4X2FwaV9vbGRlcl90aGFuKHdkZXYs IDEsIDQpKSB7CisJCWdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcCh3ZGV2LT5wZGF0YS5ncGlvX3dh a2V1cCwgMSk7CisJCWlmICghY29tcGxldGlvbl9kb25lKCZ3ZGV2LT5oaWYuY3RybF9yZWFkeSkp CisJCQl1c2xlZXBfcmFuZ2UoMjAwMCwgMjUwMCk7CisJCXJldHVybjsKKwl9CisJZm9yICg7Oykg eworCQlncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAod2Rldi0+cGRhdGEuZ3Bpb193YWtldXAsIDEp OworCQkvLyBjb21wbGV0aW9uLmggZG9lcyBub3QgcHJvdmlkZSBhbnkgZnVuY3Rpb24gdG8gd2Fp dAorCQkvLyBjb21wbGV0aW9uIHdpdGhvdXQgY29uc3VtZSBpdCAoYSBraW5kIG9mCisJCS8vIHdh aXRfZm9yX2NvbXBsZXRpb25fZG9uZV90aW1lb3V0KCkpLiBTbyB3ZSBoYXZlIHRvIGVtdWxhdGUK KwkJLy8gaXQuCisJCWlmICh3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoJndkZXYtPmhpZi5j dHJsX3JlYWR5LAorCQkJCQkJbXNlY3NfdG9famlmZmllcygyKSkpIHsKKwkJCWNvbXBsZXRlKCZ3 ZGV2LT5oaWYuY3RybF9yZWFkeSk7CisJCQlyZXR1cm47CisJCX0gZWxzZSBpZiAobWF4X3JldHJ5 LS0gPiAwKSB7CisJCQkvLyBPbGRlciBmaXJtd2FyZXMgaGF2ZSBhIHJhY2UgaW4gc2xlZXAvd2Fr ZS11cCBwcm9jZXNzLgorCQkJLy8gUmVkbyB0aGUgcHJvY2VzcyBpcyBzdWZmaWNpZW50IHRvIHVu ZnJlZXplIHRoZQorCQkJLy8gY2hpcC4KKwkJCWRldl9lcnIod2Rldi0+ZGV2LCAidGltZW91dCB3 aGlsZSB3YWtlIHVwIGNoaXBcbiIpOworCQkJZ3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKHdkZXYt PnBkYXRhLmdwaW9fd2FrZXVwLCAwKTsKKwkJCXVzbGVlcF9yYW5nZSgyMDAwLCAyNTAwKTsKKwkJ fSBlbHNlIHsKKwkJCWRldl9lcnIod2Rldi0+ZGV2LCAibWF4IHdha2UtdXAgcmV0cmllcyByZWFj aGVkXG4iKTsKKwkJCXJldHVybjsKKwkJfQorCX0KK30KKworc3RhdGljIHZvaWQgZGV2aWNlX3Jl bGVhc2Uoc3RydWN0IHdmeF9kZXYgKndkZXYpCit7CisJaWYgKCF3ZGV2LT5wZGF0YS5ncGlvX3dh a2V1cCkKKwkJcmV0dXJuOworCisJZ3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKHdkZXYtPnBkYXRh LmdwaW9fd2FrZXVwLCAwKTsKK30KKworc3RhdGljIGludCByeF9oZWxwZXIoc3RydWN0IHdmeF9k ZXYgKndkZXYsIHNpemVfdCByZWFkX2xlbiwgaW50ICppc19jbmYpCit7CisJc3RydWN0IHNrX2J1 ZmYgKnNrYjsKKwlzdHJ1Y3QgaGlmX21zZyAqaGlmOworCXNpemVfdCBhbGxvY19sZW47CisJc2l6 ZV90IGNvbXB1dGVkX2xlbjsKKwlpbnQgcmVsZWFzZV9jb3VudDsKKwlpbnQgcGlnZ3liYWNrID0g MDsKKworCVdBUk4ocmVhZF9sZW4gPiByb3VuZF9kb3duKDB4RkZGLCAyKSAqIHNpemVvZih1MTYp LAorCSAgICAgIiVzOiByZXF1ZXN0IGV4Y2VlZCBXRnggY2FwYWJpbGl0eSIsIF9fZnVuY19fKTsK KworCS8vIEFkZCAyIHRvIHRha2UgaW50byBhY2NvdW50IHBpZ2d5YmFjayBzaXplCisJYWxsb2Nf bGVuID0gd2Rldi0+aHdidXNfb3BzLT5hbGlnbl9zaXplKHdkZXYtPmh3YnVzX3ByaXYsIHJlYWRf bGVuICsgMik7CisJc2tiID0gZGV2X2FsbG9jX3NrYihhbGxvY19sZW4pOworCWlmICghc2tiKQor CQlyZXR1cm4gLUVOT01FTTsKKworCWlmICh3ZnhfZGF0YV9yZWFkKHdkZXYsIHNrYi0+ZGF0YSwg YWxsb2NfbGVuKSkKKwkJZ290byBlcnI7CisKKwlwaWdneWJhY2sgPSBsZTE2X3RvX2NwdXAoKF9f bGUxNiAqKShza2ItPmRhdGEgKyBhbGxvY19sZW4gLSAyKSk7CisJX3RyYWNlX3BpZ2d5YmFjayhw aWdneWJhY2ssIGZhbHNlKTsKKworCWhpZiA9IChzdHJ1Y3QgaGlmX21zZyAqKXNrYi0+ZGF0YTsK KwlXQVJOKGhpZi0+ZW5jcnlwdGVkICYgMHgzLCAiZW5jcnlwdGlvbiBpcyB1bnN1cHBvcnRlZCIp OworCWlmIChXQVJOKHJlYWRfbGVuIDwgc2l6ZW9mKHN0cnVjdCBoaWZfbXNnKSwgImNvcnJ1cHRl ZCByZWFkIikpCisJCWdvdG8gZXJyOworCWNvbXB1dGVkX2xlbiA9IGxlMTZfdG9fY3B1KGhpZi0+ bGVuKTsKKwljb21wdXRlZF9sZW4gPSByb3VuZF91cChjb21wdXRlZF9sZW4sIDIpOworCWlmIChj b21wdXRlZF9sZW4gIT0gcmVhZF9sZW4pIHsKKwkJZGV2X2Vycih3ZGV2LT5kZXYsICJpbmNvbnNp c3RlbnQgbWVzc2FnZSBsZW5ndGg6ICV6dSAhPSAlenVcbiIsCisJCQljb21wdXRlZF9sZW4sIHJl YWRfbGVuKTsKKwkJcHJpbnRfaGV4X2R1bXAoS0VSTl9JTkZPLCAiaGlmOiAiLCBEVU1QX1BSRUZJ WF9PRkZTRVQsIDE2LCAxLAorCQkJICAgICAgIGhpZiwgcmVhZF9sZW4sIHRydWUpOworCQlnb3Rv IGVycjsKKwl9CisKKwlpZiAoIShoaWYtPmlkICYgSElGX0lEX0lTX0lORElDQVRJT04pKSB7CisJ CSgqaXNfY25mKSsrOworCQlpZiAoaGlmLT5pZCA9PSBISUZfQ05GX0lEX01VTFRJX1RSQU5TTUlU KQorCQkJcmVsZWFzZV9jb3VudCA9ICgoc3RydWN0IGhpZl9jbmZfbXVsdGlfdHJhbnNtaXQgKilo aWYtPmJvZHkpLT5udW1fdHhfY29uZnM7CisJCWVsc2UKKwkJCXJlbGVhc2VfY291bnQgPSAxOwor CQlXQVJOKHdkZXYtPmhpZi50eF9idWZmZXJzX3VzZWQgPCByZWxlYXNlX2NvdW50LCAiY29ycnVw dGVkIGJ1ZmZlciBjb3VudGVyIik7CisJCXdkZXYtPmhpZi50eF9idWZmZXJzX3VzZWQgLT0gcmVs ZWFzZV9jb3VudDsKKwl9CisJX3RyYWNlX2hpZl9yZWN2KGhpZiwgd2Rldi0+aGlmLnR4X2J1ZmZl cnNfdXNlZCk7CisKKwlpZiAoaGlmLT5pZCAhPSBISUZfSU5EX0lEX0VYQ0VQVElPTiAmJiBoaWYt PmlkICE9IEhJRl9JTkRfSURfRVJST1IpIHsKKwkJaWYgKGhpZi0+c2VxbnVtICE9IHdkZXYtPmhp Zi5yeF9zZXFudW0pCisJCQlkZXZfd2Fybih3ZGV2LT5kZXYsICJ3cm9uZyBtZXNzYWdlIHNlcXVl bmNlOiAlZCAhPSAlZFxuIiwKKwkJCQkgaGlmLT5zZXFudW0sIHdkZXYtPmhpZi5yeF9zZXFudW0p OworCQl3ZGV2LT5oaWYucnhfc2VxbnVtID0gKGhpZi0+c2VxbnVtICsgMSkgJSAoSElGX0NPVU5U RVJfTUFYICsgMSk7CisJfQorCisJc2tiX3B1dChza2IsIGxlMTZfdG9fY3B1KGhpZi0+bGVuKSk7 CisJLy8gd2Z4X2hhbmRsZV9yeCB0YWtlcyBjYXJlIG9uIFNLQiBsaXZldGltZQorCXdmeF9oYW5k bGVfcngod2Rldiwgc2tiKTsKKwlpZiAoIXdkZXYtPmhpZi50eF9idWZmZXJzX3VzZWQpCisJCXdh a2VfdXAoJndkZXYtPmhpZi50eF9idWZmZXJzX2VtcHR5KTsKKworCXJldHVybiBwaWdneWJhY2s7 CisKK2VycjoKKwlpZiAoc2tiKQorCQlkZXZfa2ZyZWVfc2tiKHNrYik7CisJcmV0dXJuIC1FSU87 Cit9CisKK3N0YXRpYyBpbnQgYmhfd29ya19yeChzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwgaW50IG1h eF9tc2csIGludCAqbnVtX2NuZikKK3sKKwlzaXplX3QgbGVuOworCWludCBpOworCWludCBjdHJs X3JlZywgcGlnZ3liYWNrOworCisJcGlnZ3liYWNrID0gMDsKKwlmb3IgKGkgPSAwOyBpIDwgbWF4 X21zZzsgaSsrKSB7CisJCWlmIChwaWdneWJhY2sgJiBDVFJMX05FWFRfTEVOX01BU0spCisJCQlj dHJsX3JlZyA9IHBpZ2d5YmFjazsKKwkJZWxzZSBpZiAodHJ5X3dhaXRfZm9yX2NvbXBsZXRpb24o JndkZXYtPmhpZi5jdHJsX3JlYWR5KSkKKwkJCWN0cmxfcmVnID0gYXRvbWljX3hjaGcoJndkZXYt PmhpZi5jdHJsX3JlZywgMCk7CisJCWVsc2UKKwkJCWN0cmxfcmVnID0gMDsKKwkJaWYgKCEoY3Ry bF9yZWcgJiBDVFJMX05FWFRfTEVOX01BU0spKQorCQkJcmV0dXJuIGk7CisJCS8vIGN0cmxfcmVn IHVuaXRzIGFyZSAxNmJpdHMgd29yZHMKKwkJbGVuID0gKGN0cmxfcmVnICYgQ1RSTF9ORVhUX0xF Tl9NQVNLKSAqIDI7CisJCXBpZ2d5YmFjayA9IHJ4X2hlbHBlcih3ZGV2LCBsZW4sIG51bV9jbmYp OworCQlpZiAocGlnZ3liYWNrIDwgMCkKKwkJCXJldHVybiBpOworCQlpZiAoIShwaWdneWJhY2sg JiBDVFJMX1dMQU5fUkVBRFkpKQorCQkJZGV2X2Vycih3ZGV2LT5kZXYsICJ1bmV4cGVjdGVkIHBp Z2d5YmFjayB2YWx1ZTogcmVhZHkgYml0IG5vdCBzZXQ6ICUwNHhcbiIsCisJCQkJcGlnZ3liYWNr KTsKKwl9CisJaWYgKHBpZ2d5YmFjayAmIENUUkxfTkVYVF9MRU5fTUFTSykgeworCQljdHJsX3Jl ZyA9IGF0b21pY194Y2hnKCZ3ZGV2LT5oaWYuY3RybF9yZWcsIHBpZ2d5YmFjayk7CisJCWNvbXBs ZXRlKCZ3ZGV2LT5oaWYuY3RybF9yZWFkeSk7CisJCWlmIChjdHJsX3JlZykKKwkJCWRldl9lcnIo d2Rldi0+ZGV2LCAidW5leHBlY3RlZCBJUlEgaGFwcGVuZWQ6ICUwNHgvJTA0eFxuIiwKKwkJCQlj dHJsX3JlZywgcGlnZ3liYWNrKTsKKwl9CisJcmV0dXJuIGk7Cit9CisKK3N0YXRpYyB2b2lkIHR4 X2hlbHBlcihzdHJ1Y3Qgd2Z4X2RldiAqd2Rldiwgc3RydWN0IGhpZl9tc2cgKmhpZikKK3sKKwlp bnQgcmV0OworCXZvaWQgKmRhdGE7CisJYm9vbCBpc19lbmNyeXB0ZWQgPSBmYWxzZTsKKwlzaXpl X3QgbGVuID0gbGUxNl90b19jcHUoaGlmLT5sZW4pOworCisJV0FSTihsZW4gPCBzaXplb2YoKmhp ZiksICJ0cnkgdG8gc2VuZCBjb3JydXB0ZWQgZGF0YSIpOworCisJaGlmLT5zZXFudW0gPSB3ZGV2 LT5oaWYudHhfc2VxbnVtOworCXdkZXYtPmhpZi50eF9zZXFudW0gPSAod2Rldi0+aGlmLnR4X3Nl cW51bSArIDEpICUgKEhJRl9DT1VOVEVSX01BWCArIDEpOworCisJZGF0YSA9IGhpZjsKKwlXQVJO KGxlbiA+IHdkZXYtPmh3X2NhcHMuc2l6ZV9pbnBfY2hfYnVmLAorCSAgICAgIiVzOiByZXF1ZXN0 IGV4Y2VlZCBXRnggY2FwYWJpbGl0eTogJXp1ID4gJWRcbiIsIF9fZnVuY19fLAorCSAgICAgbGVu LCB3ZGV2LT5od19jYXBzLnNpemVfaW5wX2NoX2J1Zik7CisJbGVuID0gd2Rldi0+aHdidXNfb3Bz LT5hbGlnbl9zaXplKHdkZXYtPmh3YnVzX3ByaXYsIGxlbik7CisJcmV0ID0gd2Z4X2RhdGFfd3Jp dGUod2RldiwgZGF0YSwgbGVuKTsKKwlpZiAocmV0KQorCQlnb3RvIGVuZDsKKworCXdkZXYtPmhp Zi50eF9idWZmZXJzX3VzZWQrKzsKKwlfdHJhY2VfaGlmX3NlbmQoaGlmLCB3ZGV2LT5oaWYudHhf YnVmZmVyc191c2VkKTsKK2VuZDoKKwlpZiAoaXNfZW5jcnlwdGVkKQorCQlrZnJlZShkYXRhKTsK K30KKworc3RhdGljIGludCBiaF93b3JrX3R4KHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCBpbnQgbWF4 X21zZykKK3sKKwlzdHJ1Y3QgaGlmX21zZyAqaGlmOworCWludCBpOworCisJZm9yIChpID0gMDsg aSA8IG1heF9tc2c7IGkrKykgeworCQloaWYgPSBOVUxMOworCQlpZiAod2Rldi0+aGlmLnR4X2J1 ZmZlcnNfdXNlZCA8IHdkZXYtPmh3X2NhcHMubnVtX2lucF9jaF9idWZzKSB7CisJCQlpZiAodHJ5 X3dhaXRfZm9yX2NvbXBsZXRpb24oJndkZXYtPmhpZl9jbWQucmVhZHkpKSB7CisJCQkJV0FSTigh bXV0ZXhfaXNfbG9ja2VkKCZ3ZGV2LT5oaWZfY21kLmxvY2spLCAiZGF0YSBsb2NraW5nIGVycm9y Iik7CisJCQkJaGlmID0gd2Rldi0+aGlmX2NtZC5idWZfc2VuZDsKKwkJCX0gZWxzZSB7CisJCQkJ aGlmID0gd2Z4X3R4X3F1ZXVlc19nZXQod2Rldik7CisJCQl9CisJCX0KKwkJaWYgKCFoaWYpCisJ CQlyZXR1cm4gaTsKKwkJdHhfaGVscGVyKHdkZXYsIGhpZik7CisJfQorCXJldHVybiBpOworfQor CisvKiBJbiBTRElPIG1vZGUsIGl0IGlzIG5lY2Vzc2FyeSB0byBtYWtlIGFuIGFjY2VzcyB0byBh IHJlZ2lzdGVyIHRvIGFja25vd2xlZGdlCisgKiBsYXN0IHJlY2VpdmVkIG1lc3NhZ2UuIEl0IGNv dWxkIGJlIHBvc3NpYmxlIHRvIHJlc3RyaWN0IHRoaXMgYWNrbm93bGVkZ2UgdG8KKyAqIFNESU8g bW9kZSBhbmQgb25seSBpZiBsYXN0IG9wZXJhdGlvbiB3YXMgcnguCisgKi8KK3N0YXRpYyB2b2lk IGFja19zZGlvX2RhdGEoc3RydWN0IHdmeF9kZXYgKndkZXYpCit7CisJdTMyIGNmZ19yZWc7CisK Kwljb25maWdfcmVnX3JlYWQod2RldiwgJmNmZ19yZWcpOworCWlmIChjZmdfcmVnICYgMHhGRikg eworCQlkZXZfd2Fybih3ZGV2LT5kZXYsICJjaGlwIHJlcG9ydHMgZXJyb3JzOiAlMDJ4XG4iLAor CQkJIGNmZ19yZWcgJiAweEZGKTsKKwkJY29uZmlnX3JlZ193cml0ZV9iaXRzKHdkZXYsIDB4RkYs IDB4MDApOworCX0KK30KKworc3RhdGljIHZvaWQgYmhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3Qg KndvcmspCit7CisJc3RydWN0IHdmeF9kZXYgKndkZXYgPSBjb250YWluZXJfb2Yod29yaywgc3Ry dWN0IHdmeF9kZXYsIGhpZi5iaCk7CisJaW50IHN0YXRzX3JlcSA9IDAsIHN0YXRzX2NuZiA9IDAs IHN0YXRzX2luZCA9IDA7CisJYm9vbCByZWxlYXNlX2NoaXAgPSBmYWxzZSwgbGFzdF9vcF9pc19y eCA9IGZhbHNlOworCWludCBudW1fdHgsIG51bV9yeDsKKworCWRldmljZV93YWtldXAod2Rldik7 CisJZG8geworCQludW1fdHggPSBiaF93b3JrX3R4KHdkZXYsIDMyKTsKKwkJc3RhdHNfcmVxICs9 IG51bV90eDsKKwkJaWYgKG51bV90eCkKKwkJCWxhc3Rfb3BfaXNfcnggPSBmYWxzZTsKKwkJbnVt X3J4ID0gYmhfd29ya19yeCh3ZGV2LCAzMiwgJnN0YXRzX2NuZik7CisJCXN0YXRzX2luZCArPSBu dW1fcng7CisJCWlmIChudW1fcngpCisJCQlsYXN0X29wX2lzX3J4ID0gdHJ1ZTsKKwl9IHdoaWxl IChudW1fcnggfHwgbnVtX3R4KTsKKwlzdGF0c19pbmQgLT0gc3RhdHNfY25mOworCisJaWYgKGxh c3Rfb3BfaXNfcngpCisJCWFja19zZGlvX2RhdGEod2Rldik7CisJaWYgKCF3ZGV2LT5oaWYudHhf YnVmZmVyc191c2VkICYmICF3b3JrX3BlbmRpbmcod29yaykpIHsKKwkJZGV2aWNlX3JlbGVhc2Uo d2Rldik7CisJCXJlbGVhc2VfY2hpcCA9IHRydWU7CisJfQorCV90cmFjZV9iaF9zdGF0cyhzdGF0 c19pbmQsIHN0YXRzX3JlcSwgc3RhdHNfY25mLAorCQkJd2Rldi0+aGlmLnR4X2J1ZmZlcnNfdXNl ZCwgcmVsZWFzZV9jaGlwKTsKK30KKworLyoKKyAqIEFuIElSUSBmcm9tIGNoaXAgZGlkIG9jY3Vy CisgKi8KK3ZvaWQgd2Z4X2JoX3JlcXVlc3Rfcngoc3RydWN0IHdmeF9kZXYgKndkZXYpCit7CisJ dTMyIGN1ciwgcHJldjsKKworCWNvbnRyb2xfcmVnX3JlYWQod2RldiwgJmN1cik7CisJcHJldiA9 IGF0b21pY194Y2hnKCZ3ZGV2LT5oaWYuY3RybF9yZWcsIGN1cik7CisJY29tcGxldGUoJndkZXYt PmhpZi5jdHJsX3JlYWR5KTsKKwlxdWV1ZV93b3JrKHN5c3RlbV9oaWdocHJpX3dxLCAmd2Rldi0+ aGlmLmJoKTsKKworCWlmICghKGN1ciAmIENUUkxfTkVYVF9MRU5fTUFTSykpCisJCWRldl9lcnIo d2Rldi0+ZGV2LCAidW5leHBlY3RlZCBjb250cm9sIHJlZ2lzdGVyIHZhbHVlOiBsZW5ndGggZmll bGQgaXMgMDogJTA0eFxuIiwKKwkJCWN1cik7CisJaWYgKHByZXYgIT0gMCkKKwkJZGV2X2Vycih3 ZGV2LT5kZXYsICJyZWNlaXZlZCBJUlEgYnV0IHByZXZpb3VzIGRhdGEgd2FzIG5vdCAoeWV0KSBy ZWFkOiAlMDR4LyUwNHhcbiIsCisJCQlwcmV2LCBjdXIpOworfQorCisvKgorICogRHJpdmVyIHdh bnQgdG8gc2VuZCBkYXRhCisgKi8KK3ZvaWQgd2Z4X2JoX3JlcXVlc3RfdHgoc3RydWN0IHdmeF9k ZXYgKndkZXYpCit7CisJcXVldWVfd29yayhzeXN0ZW1faGlnaHByaV93cSwgJndkZXYtPmhpZi5i aCk7Cit9CisKKy8qCisgKiBJZiBJUlEgaXMgbm90IGF2YWlsYWJsZSwgdGhpcyBmdW5jdGlvbiBh bGxvdyB0byBtYW51YWxseSBwb2xsIHRoZSBjb250cm9sCisgKiByZWdpc3RlciBhbmQgc2ltdWxh dGUgYW4gSVJRIGFoZW4gYW4gZXZlbnQgaGFwcGVuZWQuCisgKgorICogTm90ZSB0aGF0IHRoZSBk ZXZpY2UgaGFzIGEgYnVnOiBJZiBhbiBJUlEgcmFpc2Ugd2hpbGUgaG9zdCByZWFkIGNvbnRyb2wK KyAqIHJlZ2lzdGVyLCB0aGUgSVJRIGlzIGxvc3QuIFNvLCB1c2UgdGhpcyBmdW5jdGlvbiBjYXJl ZnVsbHkgKG9ubHkgZHVpbmcKKyAqIGRldmljZSBpbml0aWFsaXNhdGlvbikuCisgKi8KK3ZvaWQg d2Z4X2JoX3BvbGxfaXJxKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2KQoreworCWt0aW1lX3Qgbm93LCBz dGFydDsKKwl1MzIgcmVnOworCisJV0FSTighd2Rldi0+cG9sbF9pcnEsICJ1bmV4cGVjdGVkIElS USBwb2xsaW5nIGNhbiBtYXNrIElSUSIpOworCXN0YXJ0ID0ga3RpbWVfZ2V0KCk7CisJZm9yICg7 OykgeworCQljb250cm9sX3JlZ19yZWFkKHdkZXYsICZyZWcpOworCQlub3cgPSBrdGltZV9nZXQo KTsKKwkJaWYgKHJlZyAmIDB4RkZGKQorCQkJYnJlYWs7CisJCWlmIChrdGltZV9hZnRlcihub3cs IGt0aW1lX2FkZF9tcyhzdGFydCwgMTAwMCkpKSB7CisJCQlkZXZfZXJyKHdkZXYtPmRldiwgInRp bWUgb3V0IHdoaWxlIHBvbGxpbmcgY29udHJvbCByZWdpc3RlclxuIik7CisJCQlyZXR1cm47CisJ CX0KKwkJdWRlbGF5KDIwMCk7CisJfQorCXdmeF9iaF9yZXF1ZXN0X3J4KHdkZXYpOworfQorCit2 b2lkIHdmeF9iaF9yZWdpc3RlcihzdHJ1Y3Qgd2Z4X2RldiAqd2RldikKK3sKKwlJTklUX1dPUkso JndkZXYtPmhpZi5iaCwgYmhfd29yayk7CisJaW5pdF9jb21wbGV0aW9uKCZ3ZGV2LT5oaWYuY3Ry bF9yZWFkeSk7CisJaW5pdF93YWl0cXVldWVfaGVhZCgmd2Rldi0+aGlmLnR4X2J1ZmZlcnNfZW1w dHkpOworfQorCit2b2lkIHdmeF9iaF91bnJlZ2lzdGVyKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2KQor eworCWZsdXNoX3dvcmsoJndkZXYtPmhpZi5iaCk7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25l dC93aXJlbGVzcy9zaWxhYnMvd2Z4L2JoLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMv d2Z4L2JoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43OGM0OTMy OWUyMmEKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4 L2JoLmgKQEAgLTAsMCArMSwzMyBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0y LjAtb25seSAqLworLyoKKyAqIEludGVycnVwdCBib3R0b20gaGFsZi4KKyAqCisgKiBDb3B5cmln aHQgKGMpIDIwMTctMjAyMCwgU2lsaWNvbiBMYWJvcmF0b3JpZXMsIEluYy4KKyAqIENvcHlyaWdo dCAoYykgMjAxMCwgU1QtRXJpY3Nzb24KKyAqLworI2lmbmRlZiBXRlhfQkhfSAorI2RlZmluZSBX RlhfQkhfSAorCisjaW5jbHVkZSA8bGludXgvYXRvbWljLmg+CisjaW5jbHVkZSA8bGludXgvd2Fp dC5oPgorI2luY2x1ZGUgPGxpbnV4L3dvcmtxdWV1ZS5oPgorCitzdHJ1Y3Qgd2Z4X2RldjsKKwor c3RydWN0IHdmeF9oaWYgeworCXN0cnVjdCB3b3JrX3N0cnVjdCBiaDsKKwlzdHJ1Y3QgY29tcGxl dGlvbiBjdHJsX3JlYWR5OworCXdhaXRfcXVldWVfaGVhZF90IHR4X2J1ZmZlcnNfZW1wdHk7CisJ YXRvbWljX3QgY3RybF9yZWc7CisJaW50IHJ4X3NlcW51bTsKKwlpbnQgdHhfc2VxbnVtOworCWlu dCB0eF9idWZmZXJzX3VzZWQ7Cit9OworCit2b2lkIHdmeF9iaF9yZWdpc3RlcihzdHJ1Y3Qgd2Z4 X2RldiAqd2Rldik7Cit2b2lkIHdmeF9iaF91bnJlZ2lzdGVyKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2 KTsKK3ZvaWQgd2Z4X2JoX3JlcXVlc3Rfcngoc3RydWN0IHdmeF9kZXYgKndkZXYpOwordm9pZCB3 ZnhfYmhfcmVxdWVzdF90eChzdHJ1Y3Qgd2Z4X2RldiAqd2Rldik7Cit2b2lkIHdmeF9iaF9wb2xs X2lycShzdHJ1Y3Qgd2Z4X2RldiAqd2Rldik7CisKKyNlbmRpZiAvKiBXRlhfQkhfSCAqLwotLSAK Mi4yOC4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpk ZXZlbCBtYWlsaW5nIGxpc3QKZGV2ZWxAbGludXhkcml2ZXJwcm9qZWN0Lm9yZwpodHRwOi8vZHJp dmVyZGV2LmxpbnV4ZHJpdmVycHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcml2ZXJkZXYt ZGV2ZWwK