Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp5880185pxu; Wed, 23 Dec 2020 07:42:21 -0800 (PST) X-Google-Smtp-Source: ABdhPJxO+TbANcHFFnyoqyPcK06qj+4SUdGEaUkbo1TQ4HUvl8GhU8wb6hDYCFDUM0upMFVx3Vb/ X-Received: by 2002:a17:906:c097:: with SMTP id f23mr25041885ejz.136.1608738141568; Wed, 23 Dec 2020 07:42:21 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1608738141; cv=pass; d=google.com; s=arc-20160816; b=YlO3hBQXZzeaVkFagGUoA+tInxKeryAkmq1FJs5p8pbhzFPB5lPxntF+4meDgOT1qe uGrHcZ9qEAZESc/nrciAcABQ/DfIOhQ/TI2Kunap22sqxqxtjDCiS8gjRY/QWefhmMYd Yr+YTioBBcnGFJo+gURWY7Zn8sbMDtMv5viFjm1A6vZ4i8R78g6KueyDW3NTJMLvZPEA +ByNuuWQXReqEhhLpYe52gaYtVmty7dNK54x0a5s467zOt73GfR5GRNMABYXSYtb40xL UONPuxkEwrXFWcS5g7RGpcoudiFx+Ywj4itfPLsVez358y4llbfLsTPduF5Zj0TSSWhX q9yQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=SCxum04PI5XD5JltUKxOSa5l57iqjypcftkYylj6+3g=; b=kUEaMQ78N96qln6HGysFP93e3agC0u2lFH2ZTNRifSTKajIBNHJdjfJfcMeCZTQXy/ CdYKMSxTgHsY3NSxA4tuhNcpl0NnrNSXMD5+Zc2X4ca4AQ4SpLYSUN7p4zo7tuoivNFe FxrTYceEO0xuf7U9H8yA+CpbSI1P5BYgD+TPy6GGr8iNZwyC8YFPEEXz8lgPSwEnghQq OryMKm542XwTuImPZatiIzfUbQnA9QSIShmdRyEhbhf4JxZaVm24pjepkUSthALQQwXr uLB/4smSKrGJnA9S3tvncM5w9j9ubRj4tI4zAzVcs7iaADZmQrOGbgY4qwVum8S9HNyk uokQ== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@silabs.onmicrosoft.com header.s=selector2-silabs-onmicrosoft-com header.b=czJfNjai; arc=pass (i=1 spf=pass spfdomain=silabs.com dkim=pass dkdomain=silabs.com dmarc=pass fromdomain=silabs.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id a5si11607379ejj.142.2020.12.23.07.41.58; Wed, 23 Dec 2020 07:42:21 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@silabs.onmicrosoft.com header.s=selector2-silabs-onmicrosoft-com header.b=czJfNjai; arc=pass (i=1 spf=pass spfdomain=silabs.com dkim=pass dkdomain=silabs.com dmarc=pass fromdomain=silabs.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729143AbgLWPl2 (ORCPT + 99 others); Wed, 23 Dec 2020 10:41:28 -0500 Received: from mail-mw2nam12on2063.outbound.protection.outlook.com ([40.107.244.63]:15105 "EHLO NAM12-MW2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729025AbgLWPlX (ORCPT ); Wed, 23 Dec 2020 10:41:23 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=oLPvukOKBeZ3VHjF9EZ75dF/ozD8xj1HAp5g2xbqyXuI9/4UFTZLMt3idP8m64dBesAH82gog5tzWeZgOqFSCqOYkdzRGEVG0zgYLyajK4gPe0aNPtd1edu8nW6gDWBj88BNptr7l3KZzDpLMSRYC2aj2gYdS63FDx82uMU9f2uy3bhSUgFs0BKo27G7AQ++j5ELv8rwfKDwfe2822PnIxSA2smG4dd3WTeGfD002PK0YQpI9lmULb/Ii/0F6MQ62WQhx9zb10XQQptkQulZPxmzh5pPXsKCbrAiSbJu2P9dRmI5OxErjjiThPf+eKrEf9sjaUzi44Bsed3UF+cpPg== 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=SCxum04PI5XD5JltUKxOSa5l57iqjypcftkYylj6+3g=; b=LDm8ff3O10qR5DNxZGhqXZsffiaUhjuJwA2wLGr2YoF13fQ2Iajn7JjuP2aT7v7BDBOkVVpigIXnayqKOmr8Dp1HhcUg9CY5kvQ00TcITk6haLjnuYvoHCMprxLdfzZNGN2gKxd9NUhyUUB6oT94p+w63eAjWZypqTQcK3FhtD3DdOR7mt92E0IXH8RSF4S/9/OY/pdeydBRK17J2LvQcDOj3QY6WiggvB2VrLYGw7QZ28BfrmvY6pK7XfFe1bdluGZCp4hDqHUa8HnkFFOVW22Xfh8pmrc04Eut7U4cvRJHfICayK9Tggdg1rVrtj3xZVRpNO0OfYwI3iMmiAgh6Q== 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=SCxum04PI5XD5JltUKxOSa5l57iqjypcftkYylj6+3g=; b=czJfNjail1+iuPKhFCo9MMgFaHlGrr000/Ysr+1TQ3DWV9yywzEha6TRAFbyDY1kRZyPPHfSZfk1VXNm2DrIESoU2VxBQAnVpQ9eFpEDc3uG+E4EtWN8YkFy8KyAz/HZ2xrMVmjD3QN7xxz4Vgfp1Rr7SoJE/U7hjAz9Va/foyY= 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 SN6PR11MB2815.namprd11.prod.outlook.com (2603:10b6:805:62::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3676.25; Wed, 23 Dec 2020 15:40:07 +0000 Received: from SN6PR11MB2718.namprd11.prod.outlook.com ([fe80::a989:f850:6736:97ca]) by SN6PR11MB2718.namprd11.prod.outlook.com ([fe80::a989:f850:6736:97ca%5]) with mapi id 15.20.3700.026; Wed, 23 Dec 2020 15:40:07 +0000 From: Jerome Pouiller To: linux-wireless@vger.kernel.org, netdev@vger.kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, Greg Kroah-Hartman , Kalle Valo , "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 v4 11/24] wfx: add bh.c/bh.h Date: Wed, 23 Dec 2020 16:39:12 +0100 Message-Id: <20201223153925.73742-12-Jerome.Pouiller@silabs.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20201223153925.73742-1-Jerome.Pouiller@silabs.com> References: <20201223153925.73742-1-Jerome.Pouiller@silabs.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 X-Originating-IP: [82.67.86.106] X-ClientProxiedBy: SA0PR12CA0024.namprd12.prod.outlook.com (2603:10b6:806:6f::29) 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 (82.67.86.106) by SA0PR12CA0024.namprd12.prod.outlook.com (2603:10b6:806:6f::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3700.27 via Frontend Transport; Wed, 23 Dec 2020 15:40:05 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 38690496-98aa-493d-8fd6-08d8a7590694 X-MS-TrafficTypeDiagnostic: SN6PR11MB2815: 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: HR68aaL4+ybKaz1hqFQZ+eE9MPnGuZ6IIBHqFUHjpZbR3ehd7k+e5ns1yseLdcItgM4BzweoxPLXxsvckLmh8wi7azIrpKZnA59ivkeX0LSFAbaJvbP8euZYxmwtQzDk+d6sp/FZJi0aA1ZLUnxdwdo9CgVXghJ5n8J6Ip683VadqTRIxSapnSgaJ75dP31l6l7jpR0fLY1vwdquiRJ+JhtaQDpAB1r8vSIo9ZynyRFNn0QJzeQUQaz1EHMDUNeZ7qKkhnBWxjAVR4lERXla5qEPtQl1+hBf/XB6dEg7nynY4Wvq91AJONDNplRzi1PTYv1qmXIzdJB7n9syaYgsZRiAOhkCJPrC4U9HfRjvZcewunnXULJU6QQdGVIZw4SiWJlVEghapvmeC/8O2dMjWg== 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)(136003)(366004)(376002)(39850400004)(346002)(66574015)(478600001)(83380400001)(8676002)(186003)(2906002)(8936002)(26005)(52116002)(107886003)(16526019)(7696005)(66946007)(7416002)(6486002)(956004)(2616005)(54906003)(66476007)(316002)(4326008)(6666004)(36756003)(5660300002)(1076003)(86362001)(66556008)(30864003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?UG05WkU0Y2hpNTZIUnZ3T0FESjNtT29IeThDUGpzMUhuNUFZR3Y2dzFIcVZ6?= =?utf-8?B?bU9MYW9vTFBDZ1duaCtEVFRDSzgxVE95dXRNR0hta0tFeUgyWmRZRW9QcE5X?= =?utf-8?B?LzZKa0krbUlCc3B3ODJzNDQxdGZ5eHRIUUFaTUZEUlRTRHhrODQvWExBZENi?= =?utf-8?B?Zm1jNlh5N3FOcVJTL1pmNTBLU2NSbzBGYk5tR0ZiTDJBUXFVTFc2TlFtaW0y?= =?utf-8?B?YUVQcHFIRGxhUWFYdmlEZ21ldWpVL09Mc2tJMVBqeUw1VUVpSndTWWt3ZVQ0?= =?utf-8?B?QzJNck5SMkp0dmR4NWFsNTNxK0Y5YzFEMnBYWWIxRlpLSHF5Qk81RzREdi9y?= =?utf-8?B?YUo3a1RRYmlMYkduWU9ITWdvWG9OSHJKNDVqK3RCcmVRRldSMkRNQ0J1d2tK?= =?utf-8?B?ZjFSYndhcUNuNmpxUzRqdnhEVThPS0FZbU9xRlRtWU9QalhlNUdWVVlaVVU3?= =?utf-8?B?eGNCNWtSaExmT1BEMXlVcWxZNllvQXloSnJlbzlRYkE1WUVwczBLSyt1NW5C?= =?utf-8?B?N0JXa3hMMG91NW1KeC9VWmhyYWcxZXIxQytGVnE1QTBXK2pmdmxOOWQvelNz?= =?utf-8?B?NDRpSW9ULy8yNXVRMVgyT1dJc0phNmtNZXcwanlrbGdyZGtTbTh6Unl2Ky9K?= =?utf-8?B?NGprRU5YNThnbm1GeVAvZS9MUWxDK1o0TG9DVG9RQzF1QTErdUJIL3BRUzJk?= =?utf-8?B?NDVIK1dKOFg5cUZnTEVSQit1UTRrSTdKOUtFbzRrbXpaZzZoeGNiYXAwSmZR?= =?utf-8?B?NWloSktTT0hkcU5pTUF5dC9JYjUzTGdWbC9iZHI2MVUyR1NlMVhrY0s5bTlx?= =?utf-8?B?c0RBNUpVTFUrU3FhcGV1eGthWjRUNCtyT2IxU2kwdWoxeXN2dHUzMnlWeXBm?= =?utf-8?B?SDA2NmJ4SUx1WndZT0o4S0JNRWdFSzB5TUEyOUxtWGlQK0M1UHFFWXNjd2Vy?= =?utf-8?B?WW10cWJ5MkRTbE1BYmM1ZGhBdFZpNzVjeDM5aWJpN0praW1KdjllbHJXN2dP?= =?utf-8?B?VE5XS1U5dzdiWlQzQXJDcFlpWnFVanBjY2lxSldycUl0V3luVUdkRzNhbjNI?= =?utf-8?B?MGJtL3lCbEdLaFoxQS91OGxpcUE0Y3NsUlhMWTJoMFI5aGd1bHhuSWx4cEhw?= =?utf-8?B?SGlyOHRwaS92SUZHZ0xMdGxRNktHZklENng0SjdhRjIxbS8vWFhNTnZzWng1?= =?utf-8?B?ZkJLMWFIM044bFFQUzJSSUo4OUtZbnhCckg0V1A3Smt1L0Z1WHRjNVpORUtq?= =?utf-8?B?ZGpxdk1zQy8xWjJ3UU9SS2JqMEU0RHJRTngrSnBNWGZkNVRWOTlQOXB3MU0y?= =?utf-8?Q?CsGWqhoK6CYoU1RsaP4SMDRSitXXA6X6N3?= X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-AuthSource: SN6PR11MB2718.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Dec 2020 15:40:07.6413 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 54dbd822-5231-4b20-944d-6f4abcd541fb X-MS-Exchange-CrossTenant-Network-Message-Id: 38690496-98aa-493d-8fd6-08d8a7590694 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: ycmAFx79Y3RY+3NATccX/e/y/pjJR3FWXWxMwwOhzXQRtpqzUbiPKaJbzIZByJXAR0I43wcZytwAODQNyIUujA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR11MB2815 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org RnJvbTogSsOpcsO0bWUgUG91aWxsZXIgPGplcm9tZS5wb3VpbGxlckBzaWxhYnMuY29tPgoKU2ln bmVkLW9mZi1ieTogSsOpcsO0bWUgUG91aWxsZXIgPGplcm9tZS5wb3VpbGxlckBzaWxhYnMuY29t PgotLS0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvYmguYyB8IDMzMiArKysrKysr KysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvYmgu aCB8ICAzMyArKysKIDIgZmlsZXMgY2hhbmdlZCwgMzY1IGluc2VydGlvbnMoKykKIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L2JoLmMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L2JoLmgKCmRpZmYgLS1n aXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L2JoLmMgYi9kcml2ZXJzL25ldC93 aXJlbGVzcy9zaWxhYnMvd2Z4L2JoLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwLi44MGRlNTI4Y2U5NzQKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL25ldC93aXJl bGVzcy9zaWxhYnMvd2Z4L2JoLmMKQEAgLTAsMCArMSwzMzIgQEAKKy8vIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKKy8qCisgKiBJbnRlcnJ1cHQgYm90dG9tIGhhbGYgKEJI KS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMCwgU2lsaWNvbiBMYWJvcmF0b3JpZXMs IEluYy4KKyAqIENvcHlyaWdodCAoYykgMjAxMCwgU1QtRXJpY3Nzb24KKyAqLworI2luY2x1ZGUg PGxpbnV4L2dwaW8vY29uc3VtZXIuaD4KKyNpbmNsdWRlIDxuZXQvbWFjODAyMTEuaD4KKworI2lu Y2x1ZGUgImJoLmgiCisjaW5jbHVkZSAid2Z4LmgiCisjaW5jbHVkZSAiaHdpby5oIgorI2luY2x1 ZGUgInRyYWNlcy5oIgorI2luY2x1ZGUgImhpZl9yeC5oIgorI2luY2x1ZGUgImhpZl9hcGlfY21k LmgiCisKK3N0YXRpYyB2b2lkIGRldmljZV93YWtldXAoc3RydWN0IHdmeF9kZXYgKndkZXYpCit7 CisJaW50IG1heF9yZXRyeSA9IDM7CisKKwlpZiAoIXdkZXYtPnBkYXRhLmdwaW9fd2FrZXVwKQor CQlyZXR1cm47CisJaWYgKGdwaW9kX2dldF92YWx1ZV9jYW5zbGVlcCh3ZGV2LT5wZGF0YS5ncGlv X3dha2V1cCkgPiAwKQorCQlyZXR1cm47CisKKwlpZiAod2Z4X2FwaV9vbGRlcl90aGFuKHdkZXYs IDEsIDQpKSB7CisJCWdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcCh3ZGV2LT5wZGF0YS5ncGlvX3dh a2V1cCwgMSk7CisJCWlmICghY29tcGxldGlvbl9kb25lKCZ3ZGV2LT5oaWYuY3RybF9yZWFkeSkp CisJCQl1c2xlZXBfcmFuZ2UoMjAwMCwgMjUwMCk7CisJCXJldHVybjsKKwl9CisJZm9yICg7Oykg eworCQlncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAod2Rldi0+cGRhdGEuZ3Bpb193YWtldXAsIDEp OworCQkvKiBjb21wbGV0aW9uLmggZG9lcyBub3QgcHJvdmlkZSBhbnkgZnVuY3Rpb24gdG8gd2Fp dAorCQkgKiBjb21wbGV0aW9uIHdpdGhvdXQgY29uc3VtZSBpdCAoYSBraW5kIG9mCisJCSAqIHdh aXRfZm9yX2NvbXBsZXRpb25fZG9uZV90aW1lb3V0KCkpLiBTbyB3ZSBoYXZlIHRvIGVtdWxhdGUK KwkJICogaXQuCisJCSAqLworCQlpZiAod2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KCZ3ZGV2 LT5oaWYuY3RybF9yZWFkeSwKKwkJCQkJCW1zZWNzX3RvX2ppZmZpZXMoMikpKSB7CisJCQljb21w bGV0ZSgmd2Rldi0+aGlmLmN0cmxfcmVhZHkpOworCQkJcmV0dXJuOworCQl9IGVsc2UgaWYgKG1h eF9yZXRyeS0tID4gMCkgeworCQkJLyogT2xkZXIgZmlybXdhcmVzIGhhdmUgYSByYWNlIGluIHNs ZWVwL3dha2UtdXAgcHJvY2Vzcy4KKwkJCSAqIFJlZG8gdGhlIHByb2Nlc3MgaXMgc3VmZmljaWVu dCB0byB1bmZyZWV6ZSB0aGUKKwkJCSAqIGNoaXAuCisJCQkgKi8KKwkJCWRldl9lcnIod2Rldi0+ ZGV2LCAidGltZW91dCB3aGlsZSB3YWtlIHVwIGNoaXBcbiIpOworCQkJZ3Bpb2Rfc2V0X3ZhbHVl X2NhbnNsZWVwKHdkZXYtPnBkYXRhLmdwaW9fd2FrZXVwLCAwKTsKKwkJCXVzbGVlcF9yYW5nZSgy MDAwLCAyNTAwKTsKKwkJfSBlbHNlIHsKKwkJCWRldl9lcnIod2Rldi0+ZGV2LCAibWF4IHdha2Ut dXAgcmV0cmllcyByZWFjaGVkXG4iKTsKKwkJCXJldHVybjsKKwkJfQorCX0KK30KKworc3RhdGlj IHZvaWQgZGV2aWNlX3JlbGVhc2Uoc3RydWN0IHdmeF9kZXYgKndkZXYpCit7CisJaWYgKCF3ZGV2 LT5wZGF0YS5ncGlvX3dha2V1cCkKKwkJcmV0dXJuOworCisJZ3Bpb2Rfc2V0X3ZhbHVlX2NhbnNs ZWVwKHdkZXYtPnBkYXRhLmdwaW9fd2FrZXVwLCAwKTsKK30KKworc3RhdGljIGludCByeF9oZWxw ZXIoc3RydWN0IHdmeF9kZXYgKndkZXYsIHNpemVfdCByZWFkX2xlbiwgaW50ICppc19jbmYpCit7 CisJc3RydWN0IHNrX2J1ZmYgKnNrYjsKKwlzdHJ1Y3QgaGlmX21zZyAqaGlmOworCXNpemVfdCBh bGxvY19sZW47CisJc2l6ZV90IGNvbXB1dGVkX2xlbjsKKwlpbnQgcmVsZWFzZV9jb3VudDsKKwlp bnQgcGlnZ3liYWNrID0gMDsKKworCVdBUk4ocmVhZF9sZW4gPiByb3VuZF9kb3duKDB4RkZGLCAy KSAqIHNpemVvZih1MTYpLAorCSAgICAgIiVzOiByZXF1ZXN0IGV4Y2VlZCBXRnggY2FwYWJpbGl0 eSIsIF9fZnVuY19fKTsKKworCS8qIEFkZCAyIHRvIHRha2UgaW50byBhY2NvdW50IHBpZ2d5YmFj ayBzaXplICovCisJYWxsb2NfbGVuID0gd2Rldi0+aHdidXNfb3BzLT5hbGlnbl9zaXplKHdkZXYt Pmh3YnVzX3ByaXYsIHJlYWRfbGVuICsgMik7CisJc2tiID0gZGV2X2FsbG9jX3NrYihhbGxvY19s ZW4pOworCWlmICghc2tiKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWlmICh3ZnhfZGF0YV9yZWFk KHdkZXYsIHNrYi0+ZGF0YSwgYWxsb2NfbGVuKSkKKwkJZ290byBlcnI7CisKKwlwaWdneWJhY2sg PSBsZTE2X3RvX2NwdXAoKF9fbGUxNiAqKShza2ItPmRhdGEgKyBhbGxvY19sZW4gLSAyKSk7CisJ X3RyYWNlX3BpZ2d5YmFjayhwaWdneWJhY2ssIGZhbHNlKTsKKworCWhpZiA9IChzdHJ1Y3QgaGlm X21zZyAqKXNrYi0+ZGF0YTsKKwlXQVJOKGhpZi0+ZW5jcnlwdGVkICYgMHgzLCAiZW5jcnlwdGlv biBpcyB1bnN1cHBvcnRlZCIpOworCWlmIChXQVJOKHJlYWRfbGVuIDwgc2l6ZW9mKHN0cnVjdCBo aWZfbXNnKSwgImNvcnJ1cHRlZCByZWFkIikpCisJCWdvdG8gZXJyOworCWNvbXB1dGVkX2xlbiA9 IGxlMTZfdG9fY3B1KGhpZi0+bGVuKTsKKwljb21wdXRlZF9sZW4gPSByb3VuZF91cChjb21wdXRl ZF9sZW4sIDIpOworCWlmIChjb21wdXRlZF9sZW4gIT0gcmVhZF9sZW4pIHsKKwkJZGV2X2Vycih3 ZGV2LT5kZXYsICJpbmNvbnNpc3RlbnQgbWVzc2FnZSBsZW5ndGg6ICV6dSAhPSAlenVcbiIsCisJ CQljb21wdXRlZF9sZW4sIHJlYWRfbGVuKTsKKwkJcHJpbnRfaGV4X2R1bXAoS0VSTl9JTkZPLCAi aGlmOiAiLCBEVU1QX1BSRUZJWF9PRkZTRVQsIDE2LCAxLAorCQkJICAgICAgIGhpZiwgcmVhZF9s ZW4sIHRydWUpOworCQlnb3RvIGVycjsKKwl9CisKKwlpZiAoIShoaWYtPmlkICYgSElGX0lEX0lT X0lORElDQVRJT04pKSB7CisJCSgqaXNfY25mKSsrOworCQlpZiAoaGlmLT5pZCA9PSBISUZfQ05G X0lEX01VTFRJX1RSQU5TTUlUKQorCQkJcmVsZWFzZV9jb3VudCA9ICgoc3RydWN0IGhpZl9jbmZf bXVsdGlfdHJhbnNtaXQgKiloaWYtPmJvZHkpLT5udW1fdHhfY29uZnM7CisJCWVsc2UKKwkJCXJl bGVhc2VfY291bnQgPSAxOworCQlXQVJOKHdkZXYtPmhpZi50eF9idWZmZXJzX3VzZWQgPCByZWxl YXNlX2NvdW50LCAiY29ycnVwdGVkIGJ1ZmZlciBjb3VudGVyIik7CisJCXdkZXYtPmhpZi50eF9i dWZmZXJzX3VzZWQgLT0gcmVsZWFzZV9jb3VudDsKKwl9CisJX3RyYWNlX2hpZl9yZWN2KGhpZiwg d2Rldi0+aGlmLnR4X2J1ZmZlcnNfdXNlZCk7CisKKwlpZiAoaGlmLT5pZCAhPSBISUZfSU5EX0lE X0VYQ0VQVElPTiAmJiBoaWYtPmlkICE9IEhJRl9JTkRfSURfRVJST1IpIHsKKwkJaWYgKGhpZi0+ c2VxbnVtICE9IHdkZXYtPmhpZi5yeF9zZXFudW0pCisJCQlkZXZfd2Fybih3ZGV2LT5kZXYsICJ3 cm9uZyBtZXNzYWdlIHNlcXVlbmNlOiAlZCAhPSAlZFxuIiwKKwkJCQkgaGlmLT5zZXFudW0sIHdk ZXYtPmhpZi5yeF9zZXFudW0pOworCQl3ZGV2LT5oaWYucnhfc2VxbnVtID0gKGhpZi0+c2VxbnVt ICsgMSkgJSAoSElGX0NPVU5URVJfTUFYICsgMSk7CisJfQorCisJc2tiX3B1dChza2IsIGxlMTZf dG9fY3B1KGhpZi0+bGVuKSk7CisJLyogd2Z4X2hhbmRsZV9yeCB0YWtlcyBjYXJlIG9uIFNLQiBs aXZldGltZSAqLworCXdmeF9oYW5kbGVfcngod2Rldiwgc2tiKTsKKwlpZiAoIXdkZXYtPmhpZi50 eF9idWZmZXJzX3VzZWQpCisJCXdha2VfdXAoJndkZXYtPmhpZi50eF9idWZmZXJzX2VtcHR5KTsK KworCXJldHVybiBwaWdneWJhY2s7CisKK2VycjoKKwlpZiAoc2tiKQorCQlkZXZfa2ZyZWVfc2ti KHNrYik7CisJcmV0dXJuIC1FSU87Cit9CisKK3N0YXRpYyBpbnQgYmhfd29ya19yeChzdHJ1Y3Qg d2Z4X2RldiAqd2RldiwgaW50IG1heF9tc2csIGludCAqbnVtX2NuZikKK3sKKwlzaXplX3QgbGVu OworCWludCBpOworCWludCBjdHJsX3JlZywgcGlnZ3liYWNrOworCisJcGlnZ3liYWNrID0gMDsK Kwlmb3IgKGkgPSAwOyBpIDwgbWF4X21zZzsgaSsrKSB7CisJCWlmIChwaWdneWJhY2sgJiBDVFJM X05FWFRfTEVOX01BU0spCisJCQljdHJsX3JlZyA9IHBpZ2d5YmFjazsKKwkJZWxzZSBpZiAodHJ5 X3dhaXRfZm9yX2NvbXBsZXRpb24oJndkZXYtPmhpZi5jdHJsX3JlYWR5KSkKKwkJCWN0cmxfcmVn ID0gYXRvbWljX3hjaGcoJndkZXYtPmhpZi5jdHJsX3JlZywgMCk7CisJCWVsc2UKKwkJCWN0cmxf cmVnID0gMDsKKwkJaWYgKCEoY3RybF9yZWcgJiBDVFJMX05FWFRfTEVOX01BU0spKQorCQkJcmV0 dXJuIGk7CisJCS8qIGN0cmxfcmVnIHVuaXRzIGFyZSAxNmJpdHMgd29yZHMgKi8KKwkJbGVuID0g KGN0cmxfcmVnICYgQ1RSTF9ORVhUX0xFTl9NQVNLKSAqIDI7CisJCXBpZ2d5YmFjayA9IHJ4X2hl bHBlcih3ZGV2LCBsZW4sIG51bV9jbmYpOworCQlpZiAocGlnZ3liYWNrIDwgMCkKKwkJCXJldHVy biBpOworCQlpZiAoIShwaWdneWJhY2sgJiBDVFJMX1dMQU5fUkVBRFkpKQorCQkJZGV2X2Vycih3 ZGV2LT5kZXYsICJ1bmV4cGVjdGVkIHBpZ2d5YmFjayB2YWx1ZTogcmVhZHkgYml0IG5vdCBzZXQ6 ICUwNHhcbiIsCisJCQkJcGlnZ3liYWNrKTsKKwl9CisJaWYgKHBpZ2d5YmFjayAmIENUUkxfTkVY VF9MRU5fTUFTSykgeworCQljdHJsX3JlZyA9IGF0b21pY194Y2hnKCZ3ZGV2LT5oaWYuY3RybF9y ZWcsIHBpZ2d5YmFjayk7CisJCWNvbXBsZXRlKCZ3ZGV2LT5oaWYuY3RybF9yZWFkeSk7CisJCWlm IChjdHJsX3JlZykKKwkJCWRldl9lcnIod2Rldi0+ZGV2LCAidW5leHBlY3RlZCBJUlEgaGFwcGVu ZWQ6ICUwNHgvJTA0eFxuIiwKKwkJCQljdHJsX3JlZywgcGlnZ3liYWNrKTsKKwl9CisJcmV0dXJu IGk7Cit9CisKK3N0YXRpYyB2b2lkIHR4X2hlbHBlcihzdHJ1Y3Qgd2Z4X2RldiAqd2Rldiwgc3Ry dWN0IGhpZl9tc2cgKmhpZikKK3sKKwlpbnQgcmV0OworCXZvaWQgKmRhdGE7CisJYm9vbCBpc19l bmNyeXB0ZWQgPSBmYWxzZTsKKwlzaXplX3QgbGVuID0gbGUxNl90b19jcHUoaGlmLT5sZW4pOwor CisJV0FSTihsZW4gPCBzaXplb2YoKmhpZiksICJ0cnkgdG8gc2VuZCBjb3JydXB0ZWQgZGF0YSIp OworCisJaGlmLT5zZXFudW0gPSB3ZGV2LT5oaWYudHhfc2VxbnVtOworCXdkZXYtPmhpZi50eF9z ZXFudW0gPSAod2Rldi0+aGlmLnR4X3NlcW51bSArIDEpICUgKEhJRl9DT1VOVEVSX01BWCArIDEp OworCisJZGF0YSA9IGhpZjsKKwlXQVJOKGxlbiA+IHdkZXYtPmh3X2NhcHMuc2l6ZV9pbnBfY2hf YnVmLAorCSAgICAgIiVzOiByZXF1ZXN0IGV4Y2VlZCBXRnggY2FwYWJpbGl0eTogJXp1ID4gJWRc biIsIF9fZnVuY19fLAorCSAgICAgbGVuLCB3ZGV2LT5od19jYXBzLnNpemVfaW5wX2NoX2J1Zik7 CisJbGVuID0gd2Rldi0+aHdidXNfb3BzLT5hbGlnbl9zaXplKHdkZXYtPmh3YnVzX3ByaXYsIGxl bik7CisJcmV0ID0gd2Z4X2RhdGFfd3JpdGUod2RldiwgZGF0YSwgbGVuKTsKKwlpZiAocmV0KQor CQlnb3RvIGVuZDsKKworCXdkZXYtPmhpZi50eF9idWZmZXJzX3VzZWQrKzsKKwlfdHJhY2VfaGlm X3NlbmQoaGlmLCB3ZGV2LT5oaWYudHhfYnVmZmVyc191c2VkKTsKK2VuZDoKKwlpZiAoaXNfZW5j cnlwdGVkKQorCQlrZnJlZShkYXRhKTsKK30KKworc3RhdGljIGludCBiaF93b3JrX3R4KHN0cnVj dCB3ZnhfZGV2ICp3ZGV2LCBpbnQgbWF4X21zZykKK3sKKwlzdHJ1Y3QgaGlmX21zZyAqaGlmOwor CWludCBpOworCisJZm9yIChpID0gMDsgaSA8IG1heF9tc2c7IGkrKykgeworCQloaWYgPSBOVUxM OworCQlpZiAod2Rldi0+aGlmLnR4X2J1ZmZlcnNfdXNlZCA8IHdkZXYtPmh3X2NhcHMubnVtX2lu cF9jaF9idWZzKSB7CisJCQlpZiAodHJ5X3dhaXRfZm9yX2NvbXBsZXRpb24oJndkZXYtPmhpZl9j bWQucmVhZHkpKSB7CisJCQkJV0FSTighbXV0ZXhfaXNfbG9ja2VkKCZ3ZGV2LT5oaWZfY21kLmxv Y2spLCAiZGF0YSBsb2NraW5nIGVycm9yIik7CisJCQkJaGlmID0gd2Rldi0+aGlmX2NtZC5idWZf c2VuZDsKKwkJCX0gZWxzZSB7CisJCQkJaGlmID0gd2Z4X3R4X3F1ZXVlc19nZXQod2Rldik7CisJ CQl9CisJCX0KKwkJaWYgKCFoaWYpCisJCQlyZXR1cm4gaTsKKwkJdHhfaGVscGVyKHdkZXYsIGhp Zik7CisJfQorCXJldHVybiBpOworfQorCisvKiBJbiBTRElPIG1vZGUsIGl0IGlzIG5lY2Vzc2Fy eSB0byBtYWtlIGFuIGFjY2VzcyB0byBhIHJlZ2lzdGVyIHRvIGFja25vd2xlZGdlCisgKiBsYXN0 IHJlY2VpdmVkIG1lc3NhZ2UuIEl0IGNvdWxkIGJlIHBvc3NpYmxlIHRvIHJlc3RyaWN0IHRoaXMg YWNrbm93bGVkZ2UgdG8KKyAqIFNESU8gbW9kZSBhbmQgb25seSBpZiBsYXN0IG9wZXJhdGlvbiB3 YXMgcnguCisgKi8KK3N0YXRpYyB2b2lkIGFja19zZGlvX2RhdGEoc3RydWN0IHdmeF9kZXYgKndk ZXYpCit7CisJdTMyIGNmZ19yZWc7CisKKwljb25maWdfcmVnX3JlYWQod2RldiwgJmNmZ19yZWcp OworCWlmIChjZmdfcmVnICYgMHhGRikgeworCQlkZXZfd2Fybih3ZGV2LT5kZXYsICJjaGlwIHJl cG9ydHMgZXJyb3JzOiAlMDJ4XG4iLAorCQkJIGNmZ19yZWcgJiAweEZGKTsKKwkJY29uZmlnX3Jl Z193cml0ZV9iaXRzKHdkZXYsIDB4RkYsIDB4MDApOworCX0KK30KKworc3RhdGljIHZvaWQgYmhf d29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCit7CisJc3RydWN0IHdmeF9kZXYgKndkZXYg PSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHdmeF9kZXYsIGhpZi5iaCk7CisJaW50IHN0YXRz X3JlcSA9IDAsIHN0YXRzX2NuZiA9IDAsIHN0YXRzX2luZCA9IDA7CisJYm9vbCByZWxlYXNlX2No aXAgPSBmYWxzZSwgbGFzdF9vcF9pc19yeCA9IGZhbHNlOworCWludCBudW1fdHgsIG51bV9yeDsK KworCWRldmljZV93YWtldXAod2Rldik7CisJZG8geworCQludW1fdHggPSBiaF93b3JrX3R4KHdk ZXYsIDMyKTsKKwkJc3RhdHNfcmVxICs9IG51bV90eDsKKwkJaWYgKG51bV90eCkKKwkJCWxhc3Rf b3BfaXNfcnggPSBmYWxzZTsKKwkJbnVtX3J4ID0gYmhfd29ya19yeCh3ZGV2LCAzMiwgJnN0YXRz X2NuZik7CisJCXN0YXRzX2luZCArPSBudW1fcng7CisJCWlmIChudW1fcngpCisJCQlsYXN0X29w X2lzX3J4ID0gdHJ1ZTsKKwl9IHdoaWxlIChudW1fcnggfHwgbnVtX3R4KTsKKwlzdGF0c19pbmQg LT0gc3RhdHNfY25mOworCisJaWYgKGxhc3Rfb3BfaXNfcngpCisJCWFja19zZGlvX2RhdGEod2Rl dik7CisJaWYgKCF3ZGV2LT5oaWYudHhfYnVmZmVyc191c2VkICYmICF3b3JrX3BlbmRpbmcod29y aykpIHsKKwkJZGV2aWNlX3JlbGVhc2Uod2Rldik7CisJCXJlbGVhc2VfY2hpcCA9IHRydWU7CisJ fQorCV90cmFjZV9iaF9zdGF0cyhzdGF0c19pbmQsIHN0YXRzX3JlcSwgc3RhdHNfY25mLAorCQkJ d2Rldi0+aGlmLnR4X2J1ZmZlcnNfdXNlZCwgcmVsZWFzZV9jaGlwKTsKK30KKworLyogQW4gSVJR IGZyb20gY2hpcCBkaWQgb2NjdXIKKyAqLwordm9pZCB3ZnhfYmhfcmVxdWVzdF9yeChzdHJ1Y3Qg d2Z4X2RldiAqd2RldikKK3sKKwl1MzIgY3VyLCBwcmV2OworCisJY29udHJvbF9yZWdfcmVhZCh3 ZGV2LCAmY3VyKTsKKwlwcmV2ID0gYXRvbWljX3hjaGcoJndkZXYtPmhpZi5jdHJsX3JlZywgY3Vy KTsKKwljb21wbGV0ZSgmd2Rldi0+aGlmLmN0cmxfcmVhZHkpOworCXF1ZXVlX3dvcmsoc3lzdGVt X2hpZ2hwcmlfd3EsICZ3ZGV2LT5oaWYuYmgpOworCisJaWYgKCEoY3VyICYgQ1RSTF9ORVhUX0xF Tl9NQVNLKSkKKwkJZGV2X2Vycih3ZGV2LT5kZXYsICJ1bmV4cGVjdGVkIGNvbnRyb2wgcmVnaXN0 ZXIgdmFsdWU6IGxlbmd0aCBmaWVsZCBpcyAwOiAlMDR4XG4iLAorCQkJY3VyKTsKKwlpZiAocHJl diAhPSAwKQorCQlkZXZfZXJyKHdkZXYtPmRldiwgInJlY2VpdmVkIElSUSBidXQgcHJldmlvdXMg ZGF0YSB3YXMgbm90ICh5ZXQpIHJlYWQ6ICUwNHgvJTA0eFxuIiwKKwkJCXByZXYsIGN1cik7Cit9 CisKKy8qIERyaXZlciB3YW50IHRvIHNlbmQgZGF0YQorICovCit2b2lkIHdmeF9iaF9yZXF1ZXN0 X3R4KHN0cnVjdCB3ZnhfZGV2ICp3ZGV2KQoreworCXF1ZXVlX3dvcmsoc3lzdGVtX2hpZ2hwcmlf d3EsICZ3ZGV2LT5oaWYuYmgpOworfQorCisvKiBJZiBJUlEgaXMgbm90IGF2YWlsYWJsZSwgdGhp cyBmdW5jdGlvbiBhbGxvdyB0byBtYW51YWxseSBwb2xsIHRoZSBjb250cm9sCisgKiByZWdpc3Rl ciBhbmQgc2ltdWxhdGUgYW4gSVJRIGFoZW4gYW4gZXZlbnQgaGFwcGVuZWQuCisgKgorICogTm90 ZSB0aGF0IHRoZSBkZXZpY2UgaGFzIGEgYnVnOiBJZiBhbiBJUlEgcmFpc2Ugd2hpbGUgaG9zdCBy ZWFkIGNvbnRyb2wKKyAqIHJlZ2lzdGVyLCB0aGUgSVJRIGlzIGxvc3QuIFNvLCB1c2UgdGhpcyBm dW5jdGlvbiBjYXJlZnVsbHkgKG9ubHkgZHVpbmcKKyAqIGRldmljZSBpbml0aWFsaXNhdGlvbiku CisgKi8KK3ZvaWQgd2Z4X2JoX3BvbGxfaXJxKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2KQoreworCWt0 aW1lX3Qgbm93LCBzdGFydDsKKwl1MzIgcmVnOworCisJV0FSTighd2Rldi0+cG9sbF9pcnEsICJ1 bmV4cGVjdGVkIElSUSBwb2xsaW5nIGNhbiBtYXNrIElSUSIpOworCXN0YXJ0ID0ga3RpbWVfZ2V0 KCk7CisJZm9yICg7OykgeworCQljb250cm9sX3JlZ19yZWFkKHdkZXYsICZyZWcpOworCQlub3cg PSBrdGltZV9nZXQoKTsKKwkJaWYgKHJlZyAmIDB4RkZGKQorCQkJYnJlYWs7CisJCWlmIChrdGlt ZV9hZnRlcihub3csIGt0aW1lX2FkZF9tcyhzdGFydCwgMTAwMCkpKSB7CisJCQlkZXZfZXJyKHdk ZXYtPmRldiwgInRpbWUgb3V0IHdoaWxlIHBvbGxpbmcgY29udHJvbCByZWdpc3RlclxuIik7CisJ CQlyZXR1cm47CisJCX0KKwkJdWRlbGF5KDIwMCk7CisJfQorCXdmeF9iaF9yZXF1ZXN0X3J4KHdk ZXYpOworfQorCit2b2lkIHdmeF9iaF9yZWdpc3RlcihzdHJ1Y3Qgd2Z4X2RldiAqd2RldikKK3sK KwlJTklUX1dPUksoJndkZXYtPmhpZi5iaCwgYmhfd29yayk7CisJaW5pdF9jb21wbGV0aW9uKCZ3 ZGV2LT5oaWYuY3RybF9yZWFkeSk7CisJaW5pdF93YWl0cXVldWVfaGVhZCgmd2Rldi0+aGlmLnR4 X2J1ZmZlcnNfZW1wdHkpOworfQorCit2b2lkIHdmeF9iaF91bnJlZ2lzdGVyKHN0cnVjdCB3Znhf ZGV2ICp3ZGV2KQoreworCWZsdXNoX3dvcmsoJndkZXYtPmhpZi5iaCk7Cit9CmRpZmYgLS1naXQg YS9kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L2JoLmggYi9kcml2ZXJzL25ldC93aXJl bGVzcy9zaWxhYnMvd2Z4L2JoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwLi40YmNiZmE5ZmZjMmIKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL25ldC93aXJlbGVz cy9zaWxhYnMvd2Z4L2JoLmgKQEAgLTAsMCArMSwzMyBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEdQTC0yLjAtb25seSAqLworLyoKKyAqIEludGVycnVwdCBib3R0b20gaGFsZi4KKyAq CisgKiBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMCwgU2lsaWNvbiBMYWJvcmF0b3JpZXMsIEluYy4K KyAqIENvcHlyaWdodCAoYykgMjAxMCwgU1QtRXJpY3Nzb24KKyAqLworI2lmbmRlZiBXRlhfQkhf SAorI2RlZmluZSBXRlhfQkhfSAorCisjaW5jbHVkZSA8bGludXgvYXRvbWljLmg+CisjaW5jbHVk ZSA8bGludXgvd2FpdC5oPgorI2luY2x1ZGUgPGxpbnV4L3dvcmtxdWV1ZS5oPgorCitzdHJ1Y3Qg d2Z4X2RldjsKKworc3RydWN0IHdmeF9oaWYgeworCXN0cnVjdCB3b3JrX3N0cnVjdCBiaDsKKwlz dHJ1Y3QgY29tcGxldGlvbiBjdHJsX3JlYWR5OworCXdhaXRfcXVldWVfaGVhZF90IHR4X2J1ZmZl cnNfZW1wdHk7CisJYXRvbWljX3QgY3RybF9yZWc7CisJaW50IHJ4X3NlcW51bTsKKwlpbnQgdHhf c2VxbnVtOworCWludCB0eF9idWZmZXJzX3VzZWQ7Cit9OworCit2b2lkIHdmeF9iaF9yZWdpc3Rl cihzdHJ1Y3Qgd2Z4X2RldiAqd2Rldik7Cit2b2lkIHdmeF9iaF91bnJlZ2lzdGVyKHN0cnVjdCB3 ZnhfZGV2ICp3ZGV2KTsKK3ZvaWQgd2Z4X2JoX3JlcXVlc3Rfcngoc3RydWN0IHdmeF9kZXYgKndk ZXYpOwordm9pZCB3ZnhfYmhfcmVxdWVzdF90eChzdHJ1Y3Qgd2Z4X2RldiAqd2Rldik7Cit2b2lk IHdmeF9iaF9wb2xsX2lycShzdHJ1Y3Qgd2Z4X2RldiAqd2Rldik7CisKKyNlbmRpZgotLSAKMi4y OS4yCgo=