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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 30F20CDB482 for ; Thu, 19 Oct 2023 18:12:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:In-Reply-To:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=12kq/HPT8K5rOKesmzdjrKCdG+4TjtEh1GFgAu/rOk0=; b=c9bZu2d+MSvEaz ualTkkqptUO2kjWP6TxKwdoR8Q63iaYzOg/hJYs/DJ/b8KR+Ml/aejMBAF/45oxU+dzUXKh8a4wgW A3dlyMDFSD549bVzuqKl0rTGr4ZbSm3z5y66vLfG9Qf1oWQng7PqRIuTQ98FnCVSk+OGGPlYwR1z2 hMrZe9lw0SKpWpBu9foiyBIXcDZ8/Jy8YOIS8hLL4iotTYDu6J9pdo22Rbe3hWqBQmmlZBCpI83Pj 2edfS/rLaaWxiZlnMFX3fxLha974tohiH7eyTXp3vBc+vGIwXslK0vS88zaTD2vwKkqcly+X2MBxL XnCfQQcri2RQLM/9Vnbg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qtXUl-000U9o-0Z; Thu, 19 Oct 2023 18:11:43 +0000 Received: from mail-he1eur04on0600.outbound.protection.outlook.com ([2a01:111:f400:fe0d::600] helo=EUR04-HE1-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qtXUg-000U8f-3B for linux-arm-kernel@lists.infradead.org; Thu, 19 Oct 2023 18:11:41 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bgf3pMmfuyF2QXFw94m2iNgUFNN2NcX3TYvEEoClbnPFmQxrz+EQNalqOaNzBbrromdSgrxzGSlb3TCuXH/vABEtPg2za49EQrZPFIESP2pebmuKOT/2/ZzBG609tbdSQeHHQy9JagiKwQBrhZib+nNuCA8uVjjPwUuGmJhuzf3YOcg5kbTQIL+opFf/9VNOtDE42xJ1H93yLd8ldYvFL4S4QVSxcazWFCLYUOCGPFqxcua55/2bXvjrqmvR2RXHOkSoTqIMwEn9OHDJdMeA5ypyG80uan+3+vj/+ojVdeseWDGzMsy3rXtb3CidF37RD1FcyMoEkvd9gG9OUWmsLA== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=KZK9ASLLVISYrU8XZA8uG3Jeyz6QNjsvUFO4J1+vNU0=; b=gYzzcQS85O73Ea6SR3cJM5zUJibxpNha097sg8kOW9gPlUrM/EOYBFEj3wvQkySVxZPW9Ex84A3KiC2tjIPolipIyfgZyx0InFtqkf/hZPp83xSYEMTrnCYKf9EaYHWJfyvbJ6wfStUchjsuzDIMztwnr2qA1bLK1X/ePp/sYEszR9Yrm2fKESPPNBF+Q50c5aYOXjxC0JwmmXVJHFkCcIj6ToTEwElMxYPXobgj+aSxcjKNEeoS+I8gZ+o5ClX5NvMIKfmJItksJ39s0wc+kPjENkmtPfRuuUuB9exhzY1iAYv+ol+DDmIhlsNW7zW3lM5lOKLYuckRpYa9gXth1g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KZK9ASLLVISYrU8XZA8uG3Jeyz6QNjsvUFO4J1+vNU0=; b=V47eavm7FOFu9OHNd8XS6cxBetYGD1ePsfOzDkipSha1COeValYiHXb06+rhk3opDlUDX5ctmptNmyT416ptvk/IhnUB7EdJAkVtGBTA5D/3FLIoD2DOrcKdRohMbLYDvH4bcLLslSkTr9BoLJmMJ/ujoOHf0hTc74Kj6dRsV/s= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM6PR04MB4838.eurprd04.prod.outlook.com (2603:10a6:20b:4::16) by PAXPR04MB9256.eurprd04.prod.outlook.com (2603:10a6:102:2ba::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6933.8; Thu, 19 Oct 2023 18:11:32 +0000 Received: from AM6PR04MB4838.eurprd04.prod.outlook.com ([fe80::1774:e25f:f99:aca2]) by AM6PR04MB4838.eurprd04.prod.outlook.com ([fe80::1774:e25f:f99:aca2%4]) with mapi id 15.20.6907.022; Thu, 19 Oct 2023 18:11:32 +0000 Date: Thu, 19 Oct 2023 14:11:22 -0400 From: Frank Li To: Manivannan Sadhasivam Cc: Manivannan Sadhasivam , aisheng.dong@nxp.com, bhelgaas@google.com, devicetree@vger.kernel.org, festevam@gmail.com, imx@lists.linux.dev, jdmason@kudzu.us, kernel@pengutronix.de, kishon@kernel.org, kw@linux.com, linux-arm-kernel@lists.infradead.org, linux-imx@nxp.com, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, lorenzo.pieralisi@arm.com, lpieralisi@kernel.org, maz@kernel.org, s.hauer@pengutronix.de, shawnguo@kernel.org, tglx@linutronix.de Subject: Re: [PATCH v2 1/5] PCI: endpoint: Add RC-to-EP doorbell support using platform MSI controllery Message-ID: References: <20230911220920.1817033-1-Frank.Li@nxp.com> <20230911220920.1817033-2-Frank.Li@nxp.com> <20231017183722.GB137137@thinkpad> <20231019150441.GA7254@thinkpad> <20231019172347.GC7254@thinkpad> Content-Disposition: inline In-Reply-To: <20231019172347.GC7254@thinkpad> X-ClientProxiedBy: BYAPR11CA0067.namprd11.prod.outlook.com (2603:10b6:a03:80::44) To AM6PR04MB4838.eurprd04.prod.outlook.com (2603:10a6:20b:4::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM6PR04MB4838:EE_|PAXPR04MB9256:EE_ X-MS-Office365-Filtering-Correlation-Id: 0c39e226-871e-48b3-a0b6-08dbd0ced2b3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Qs8EpLWyCEKu2Uz6qyE11b+9Udt+6XXha0CQ3DjwMXe0DFisJwLlATKMl5N9lUhhs0AC4N+Xa9WzdSJfF2PvACR4Ul7wDfb7GTvVYkmBDQokJGM5ibJNmZ8tVS/664VllzrfG/N0RmW52zqxDVWJtf+WqmH6/UORtc5QKk/chKTv/ZiH74P3csUpzaU54bYCSqULRiMmG2JhRHXNQEk5MOyrYtf+UhU0yJlWPk8r1wVOr3m1qqJ8sItqU1zEank+QRElqp34LsLn8c9t9EA2GjO55oUG8Cv96FB/h/HrSzSMn86dUhsIck9uQ+5ETvXv5LLGQpUrKkG9rvEPjfAXxp3Gj88gU+vq7wmSC5FpwwgeD29T8kSPrGMAz6KldNjElZPcvBthRr2e6jT3CDsvmGCz1nHorUDM0pw6tjTo7gBdL7LKeOULXs22hOGHDfy9lMYSk0gdF+B3KOcO7hb4kO0X1ln3AdLgtot4VQLtlCwHtPVxOJSTB2Eb/VcUUzEJprGyKnPqCB2kpe+lZWz+8pjhlP67IBbfXbWu9H4UDNljBojv8oia2Vm+m01tghjyNW5WzLZaMqeht1UX4RjheTHnKL2oIo0UOMoKmCsM9p4= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM6PR04MB4838.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(7916004)(396003)(366004)(346002)(376002)(136003)(39860400002)(230922051799003)(451199024)(186009)(1800799009)(64100799003)(86362001)(316002)(66556008)(66946007)(66476007)(6666004)(6916009)(8936002)(8676002)(478600001)(6486002)(966005)(5660300002)(4326008)(41300700001)(30864003)(7416002)(2906002)(38100700002)(6506007)(52116002)(9686003)(83380400001)(26005)(6512007)(38350700005)(33716001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?QkZlODhySEM2Rm5CS2hqeGZ6dGVieUEvTVF6RUJrVGZoWXRMRjVKV0d3c3lr?= =?utf-8?B?MVV3ZWpPMlc1N3RvOXBINE1EYlRYSnhqTkZiN3FJL0ZYeGdEUHlRM1F5dWMw?= =?utf-8?B?di9oZGxLaHpuME9GZmZwZEtmaVNyeXNVYUp2TFUrOVhDZWwxUFlFbnVoc3J2?= =?utf-8?B?SkloMDZyTkFTVWxKbVJCZG5Ca3FvL0xiR0VnRzBOSjk3ZHlmL1RheHE4cDlP?= =?utf-8?B?WUhwWndHWVZCaXFkQjB4NXhpajZuUmMzek9velpvSU5rc2pEWWlzekdCcUxz?= =?utf-8?B?eWUra3JRaXl3Y1VJVUQrV1VGdWRFWFpxYmZkUkdQeXkwb1VqbXdCR0JHNDBF?= =?utf-8?B?bE9EamFpa0QrcExsQzhCODJEcFYrNkRpK0cvTytDWlBjUURneGFDT1c3OElE?= =?utf-8?B?V0gxNE9jQll2WUlEcytMU1NWUTFvQ1dNMTFuSWpCTEJwNnpsaGYyTjdXVFBR?= =?utf-8?B?cDBWTjlBZmQzOVkzNjR4QjViZTM4MXVrb0R1dlh0SDVGSFJBb1hIc2ZQdUhK?= =?utf-8?B?ZC9tbStCbmFIY0pGYWxEYlBKYWJjenZiKzZncjh2c0ZYRmttSm5mV09tY3hQ?= =?utf-8?B?K2VSYVlYSHRva1dEMDZpVm8yRVRnOHUwVTJocmJwdWxFU1J1bHBPb1Q5LzVy?= =?utf-8?B?ekhDREFCNUJ1UkszdnVhMks1Z2lGUFJtRU1qUHNHSkFjb2dpUDAyUkVaNWNB?= =?utf-8?B?TEluajlxQWhsOWFqdzhjWERManp6MndqekRvY01ML0ljSmt6WnJWcktqSjYr?= =?utf-8?B?akZtcHlLUkdNdjgrMERnMnZFUXFzblR4TVlQRFBYL2FCdzkwMXZDU0FtVzg1?= =?utf-8?B?cXZseG4rNEpMVTlibXlZbUMydHJ5d3VRUzM1OThaNzVmRGdqemRzZG9Fc1pv?= =?utf-8?B?S1hxb3MwUGIzSmduU1kzeGJYcGZidDFJcVh1Z2xHSTBOelg0T2I1RGt6NzQ0?= =?utf-8?B?ZjQzMFZqUUpOcVVXRy9OK1ZaTUM2S0RJZGM5dHcxMWVUQ2hxUU5oalA3WFVP?= =?utf-8?B?c3M3NzU2R2htK1UvWHF5VXFqQlJqd0lmQ0NOVk82QWlnc1phdHJROGFMS29v?= =?utf-8?B?SEdabG1PR2M2ZFBoemUxZWJZN3RJYXYwTUUwL25Jbi9pbTdvTkxZU1ZIbW1m?= =?utf-8?B?Vy9aUk9pOG1sck9aK0lCSUw3d3JtZ0tqd3JVMllUeGhSbkhMU1FPUHRKc2da?= =?utf-8?B?cndTV1RtSW1NRmt4eVJHcFIxSkxMcloyTkk3cXRiTVZNWlBKK0hvMmVXOEVW?= =?utf-8?B?cXUyTllQcTA5ZDZ5QlZQcnVlSjdZM2NzMnBLVktheEcrd0pOOGJ0WVJnZHNC?= =?utf-8?B?QkpacWhFYmMwOStxdWZlcWlBOUxwdVV3eHg1eitEM0k3YVZjV3FwdnlWQlJH?= =?utf-8?B?cnlteVF1TVBvdUdhSlI4bG5DQXJYWE1jcGJZbXhmRHQ2dkJrdndYNldoWFAw?= =?utf-8?B?RnpNWE14NFFwSHB6QjBkSTVBSEdpKzdZN09xakJBemtxMU9kemVBRWttamoy?= =?utf-8?B?bGRFT1lDQ0pEZVEwTmZJZmpEZWJ4NGZHbGpJM0d5dmZUY3k4eU5DWlg4Zktn?= =?utf-8?B?VlMvdDd5dTJGZURsNjRyMjU1bEVmdC9wVXVzeWNlV2RUNzQ0cDc2dlhPdVIr?= =?utf-8?B?V1cxOEExZU5NTEZwYzJNU3FDRVNOMlIyNXlqbVpQNjVGWE9pTWFSTng0a0hi?= =?utf-8?B?S0R5WU90dVQ0aGtlc3RYL3hHKzZ2VHlkU0FFdUhRNlhHVnJFQVFjRkpLanlL?= =?utf-8?B?cTRPZ3Q2N21yM1ZVaHRlbHB6cHFTVHRjU2w1U2daZ2ptbTM4b3ZyQlJYOXFl?= =?utf-8?B?K1ZsMVJrclpaN0VzUklnNDVxU0JrMTVTWTNXY3hacEQ4aFQ5OERhcmgzeEdW?= =?utf-8?B?anViSTdxYW1aejljWFVBcGZZcXEwV3ZBSmZSUkVET2Z1LzVkdlIwWmxCN2lI?= =?utf-8?B?U2lkTzNROGpPcm16MjdkQTNjaGJobDVwTCtaNUdXUDV2cjlSWE9hUFRoVkdN?= =?utf-8?B?aDRPb3RXUUNGc1h3dGNJTjZ0dDYvdk5tRTBLMzBGNnppRHdHUjhGMWtTUjdR?= =?utf-8?B?M3ErUnlsaFRFK0dJajNkZDdOOFMzMW5rR3NoTXRBNUE0T0tUWDAyWWJPUEpr?= =?utf-8?Q?XCrLgnhAtMbfqTPVc//lTSqHR?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0c39e226-871e-48b3-a0b6-08dbd0ced2b3 X-MS-Exchange-CrossTenant-AuthSource: AM6PR04MB4838.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Oct 2023 18:11:32.1982 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: SZNp5jxvzEcQ7fJPyAAcnr2bJW9cu3Ua5fP9l4EJWgo40QIIxx4IVSVmKKsUCMEfWFnOwi8VgWp/kunP65y1oQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB9256 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231019_111139_244184_006029C2 X-CRM114-Status: GOOD ( 53.37 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gVGh1LCBPY3QgMTksIDIwMjMgYXQgMTA6NTM6NDdQTSArMDUzMCwgTWFuaXZhbm5hbiBTYWRo YXNpdmFtIHdyb3RlOgo+IE9uIFRodSwgT2N0IDE5LCAyMDIzIGF0IDEyOjAwOjIyUE0gLTA0MDAs IEZyYW5rIExpIHdyb3RlOgo+ID4gT24gVGh1LCBPY3QgMTksIDIwMjMgYXQgMDg6MzQ6NDFQTSAr MDUzMCwgTWFuaXZhbm5hbiBTYWRoYXNpdmFtIHdyb3RlOgo+ID4gPiBPbiBUdWUsIE9jdCAxNywg MjAyMyBhdCAwMjo1NTo1N1BNIC0wNDAwLCBGcmFuayBMaSB3cm90ZToKPiA+ID4gPiBPbiBXZWQs IE9jdCAxOCwgMjAyMyBhdCAxMjowNzoyMkFNICswNTMwLCBNYW5pdmFubmFuIFNhZGhhc2l2YW0g d3JvdGU6Cj4gPiA+ID4gPiBPbiBNb24sIFNlcCAxMSwgMjAyMyBhdCAwNjowOToxNlBNIC0wNDAw LCBGcmFuayBMaSB3cm90ZToKPiA+ID4gPiA+ID4gVGhpcyBjb21taXQgaW50cm9kdWNlcyBhIGNv bW1vbiBtZXRob2QgZm9yIHNlbmRpbmcgbWVzc2FnZXMgZnJvbSB0aGUgUm9vdAo+ID4gPiA+ID4g PiBDb21wbGV4IChSQykgdG8gdGhlIEVuZHBvaW50IChFUCkgYnkgdXRpbGl6aW5nIHRoZSBwbGF0 Zm9ybSBNU0kgaW50ZXJydXB0Cj4gPiA+ID4gPiA+IGNvbnRyb2xsZXIsIHN1Y2ggYXMgQVJNIEdJ QywgYXMgYW4gRVAgZG9vcmJlbGwuIE1hcHMgdGhlIG1lbW9yeSBhc3NpZ25lZAo+ID4gPiA+ID4g PiBmb3IgdGhlIEJBUiByZWdpb24gYnkgdGhlIFBDSSBob3N0IHRvIHRoZSBtZXNzYWdlIGFkZHJl c3Mgb2YgdGhlIHBsYXRmb3JtCj4gPiA+ID4gPiA+IE1TSSBpbnRlcnJ1cHQgY29udHJvbGxlciBp biB0aGUgUENJIEVQLiBBcyBhIHJlc3VsdCwgd2hlbiB0aGUgUENJIFJDIHdyaXRlcwo+ID4gPiA+ ID4gCj4gPiA+ID4gPiAiRG9vcmJlbGwgZmVhdHVyZSBpcyBpbXBsZW1lbnRlZCBieSBtYXBwaW5n IHRoZSBFUCdzIE1TSSBpbnRlcnJ1cHQgY29udHJvbGxlcgo+ID4gPiA+ID4gbWVzc2FnZSBhZGRy ZXNzIHRvIGEgZGVkaWNhdGVkIEJBUiBpbiB0aGUgRVBDIGNvcmUuIEl0IGlzIHRoZSByZXNwb25z aWJpbGl0eQo+ID4gPiA+ID4gb2YgdGhlIEVQRiBkcml2ZXIgdG8gcGFzcyB0aGUgYWN0dWFsIG1l c3NhZ2UgZGF0YSB0byBiZSB3cml0dGVuIGJ5IHRoZSBob3N0IHRvCj4gPiA+ID4gPiB0aGUgZG9v cmJlbGwgQkFSIHJlZ2lvbiB0aHJvdWdoIGl0cyBvd24gbG9naWMuIgo+ID4gPiA+ID4gCj4gPiA+ ID4gPiA+IHRvIHRoZSBCQVIgcmVnaW9uLCBpdCB0cmlnZ2VycyBhbiBJUlEgYXQgdGhlIEVQLiBU aGlzIGltcGxlbWVudGF0aW9uIHNlcnZlcwo+ID4gPiA+ID4gPiBhcyBhIGNvbW1vbiBtZXRob2Qg Zm9yIGFsbCBlbmRwb2ludCBmdW5jdGlvbiBkcml2ZXJzLgo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ ID4gSG93ZXZlciwgaXQgY3VycmVudGx5IHN1cHBvcnRzIG9ubHkgb25lIEVQIHBoeXNpY2FsIGZ1 bmN0aW9uIGR1ZSB0bwo+ID4gPiA+ID4gPiBsaW1pdGF0aW9ucyBpbiBBUk0gTVNJL0lNUyByZWFk aW5lc3MuCj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBGcmFuayBMaSA8 RnJhbmsuTGlAbnhwLmNvbT4KPiA+ID4gPiA+ID4gLS0tCj4gPiA+ID4gPiA+ICBkcml2ZXJzL3Bj aS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYyB8IDE5MiArKysrKysrKysrKysrKysrKysrKysrKysr KysrCj4gPiA+ID4gPiA+ICBkcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBmLWNvcmUuYyB8ICA0 NCArKysrKysrCj4gPiA+ID4gPiA+ICBpbmNsdWRlL2xpbnV4L3BjaS1lcGMuaCAgICAgICAgICAg ICB8ICAgNiArCj4gPiA+ID4gPiA+ICBpbmNsdWRlL2xpbnV4L3BjaS1lcGYuaCAgICAgICAgICAg ICB8ICAgNyArCj4gPiA+ID4gPiA+ICA0IGZpbGVzIGNoYW5nZWQsIDI0OSBpbnNlcnRpb25zKCsp Cj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvZW5kcG9p bnQvcGNpLWVwYy1jb3JlLmMgYi9kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYwo+ ID4gPiA+ID4gPiBpbmRleCA1YTRhOGIwYmU2MjYyLi5kMzM2YTk5YzZhOTRmIDEwMDY0NAo+ID4g PiA+ID4gPiAtLS0gYS9kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYwo+ID4gPiA+ ID4gPiArKysgYi9kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYwo+ID4gPiA+ID4g PiBAQCAtMTAsNiArMTAsNyBAQAo+ID4gPiA+ID4gPiAgI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4K PiA+ID4gPiA+ID4gICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPiA+ID4gPiA+ID4gIAo+ID4g PiA+ID4gPiArI2luY2x1ZGUgPGxpbnV4L21zaS5oPgo+ID4gPiA+ID4gPiAgI2luY2x1ZGUgPGxp bnV4L3BjaS1lcGMuaD4KPiA+ID4gPiA+ID4gICNpbmNsdWRlIDxsaW51eC9wY2ktZXBmLmg+Cj4g PiA+ID4gPiA+ICAjaW5jbHVkZSA8bGludXgvcGNpLWVwLWNmcy5oPgo+ID4gPiA+ID4gPiBAQCAt NzgzLDYgKzc4NCwxOTcgQEAgdm9pZCBwY2lfZXBjX2JtZV9ub3RpZnkoc3RydWN0IHBjaV9lcGMg KmVwYykKPiA+ID4gPiA+ID4gIH0KPiA+ID4gPiA+ID4gIEVYUE9SVF9TWU1CT0xfR1BMKHBjaV9l cGNfYm1lX25vdGlmeSk7Cj4gPiA+ID4gPiA+ICAKPiA+ID4gPiA+ID4gKy8qKgo+ID4gPiA+ID4g PiArICogcGNpX2VwY19hbGxvY19kb29yYmVsbCgpIC0gYWxsb2MgYW4gYWRkcmVzcyBzcGFjZSB0 byBsZXQgUkMgdHJpZ2dlciBFUCBzaWRlIElSUSBieSB3cml0ZSBkYXRhIHRvCj4gPiA+ID4gPiA+ ICsgKgkJCSAgICAgIHRoZSBzcGFjZS4KPiA+ID4gPiA+IAo+ID4gPiA+ID4gIkFsbG9jYXRlIHBs YXRmb3JtIHNwZWNpZmljIGRvb3JiZWxsIElSUXMgdG8gYmUgdXNlZCBieSB0aGUgaG9zdCB0byB0 cmlnZ2VyCj4gPiA+ID4gPiBkb29yYmVsbHMgb24gRVAuIgo+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ ICsgKgo+ID4gPiA+ID4gPiArICogQGVwYzogdGhlIEVQQyBkZXZpY2UgdGhhdCBuZWVkIGRvb3Ji ZWxsIGFkZHJlc3MgYW5kIGRhdGEgZnJvbSBSQy4KPiA+ID4gPiA+IAo+ID4gPiA+ID4gRVBDIGRl dmljZSBmb3Igd2hpY2ggdGhlIGRvb3JiZWxsIG5lZWRzIHRvIGJlIGFsbG9jYXRlZAo+ID4gPiA+ ID4gCj4gPiA+ID4gPiA+ICsgKiBAZnVuY19ubzogdGhlIHBoeXNpY2FsIGVuZHBvaW50IGZ1bmN0 aW9uIG51bWJlciBpbiB0aGUgRVBDIGRldmljZS4KPiA+ID4gPiA+ID4gKyAqIEB2ZnVuY19ubzog dGhlIHZpcnR1YWwgZW5kcG9pbnQgZnVuY3Rpb24gbnVtYmVyIGluIHRoZSBwaHlzaWNhbCBmdW5j dGlvbi4KPiA+ID4gPiA+ID4gKyAqIEBudW1fbXNnczogdGhlIHRvdGFsIG51bWJlciBvZiBkb29y YmVsbCBtZXNzYWdlcwo+ID4gPiA+ID4gCj4gPiA+ID4gPiBzL251bV9tc2dzL251bV9kYgo+ID4g PiA+ID4gCj4gPiA+ID4gPiA+ICsgKgo+ID4gPiA+ID4gPiArICogUmV0dXJuOiAwIHN1Y2Nlc3Ms IG90aGVyIGlzIGZhaWx1cmUKPiA+ID4gPiA+ID4gKyAqLwo+ID4gPiA+ID4gPiAraW50IHBjaV9l cGNfYWxsb2NfZG9vcmJlbGwoc3RydWN0IHBjaV9lcGMgKmVwYywgdTggZnVuY19ubywgdTggdmZ1 bmNfbm8sIGludCBudW1fbXNncykKPiA+ID4gPiA+ID4gK3sKPiA+ID4gPiA+ID4gKwlpbnQgcmV0 Owo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICsJaWYgKElTX0VSUl9PUl9OVUxMKGVwYykgfHwg ZnVuY19ubyA+PSBlcGMtPm1heF9mdW5jdGlvbnMpCj4gPiA+ID4gPiA+ICsJCXJldHVybiAtRUlO VkFMOwo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICsJaWYgKHZmdW5jX25vID4gMCAmJiAoIWVw Yy0+bWF4X3ZmcyB8fCB2ZnVuY19ubyA+IGVwYy0+bWF4X3Zmc1tmdW5jX25vXSkpCj4gPiA+ID4g PiA+ICsJCXJldHVybiAtRUlOVkFMOwo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICsJaWYgKCFl cGMtPm9wcy0+YWxsb2NfZG9vcmJlbGwpCj4gPiA+ID4gPiA+ICsJCXJldHVybiAwOwo+ID4gPiA+ ID4gCj4gPiA+ID4gPiBZb3UgbWVudGlvbmVkIDAgaXMgYSBzdWNjZXNzLiBTbyBpZiB0aGVyZSBp cyBubyBjYWxsYmFjaywgeW91IHdhbnQgdG8gcmV0dXJuCj4gPiA+ID4gPiBzdWNjZXNzPwo+ID4g PiA+ID4gCj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gKwltdXRleF9sb2NrKCZlcGMtPmxvY2sp Owo+ID4gPiA+ID4gPiArCXJldCA9IGVwYy0+b3BzLT5hbGxvY19kb29yYmVsbChlcGMsIGZ1bmNf bm8sIHZmdW5jX25vLCBudW1fbXNncyk7Cj4gPiA+ID4gPiAKPiA+ID4gPiA+IFdoeSBjYW4ndCB5 b3UganVzdCBjYWxsIHRoZSBnZW5lcmljIGZ1bmN0aW9uIGhlcmUgYW5kIGluIG90aGVyIHBsYWNl cyBpbnN0ZWFkIG9mCj4gPiA+ID4gPiBpbXBsZW1lbnRpbmcgY2FsbGJhY2tzPyBJIGRvIG5vdCBz ZWUgYSBuZWNlc3NpdHkgZm9yIEVQQyBzcGVjaWZpYyBjYWxsYmFja3MuIElmCj4gPiA+ID4gPiB0 aGVyZSBpcyBvbmUsIHBsZWFzZSBzcGVjaWZ5Lgo+ID4gPiA+IAo+ID4gPiA+IDEuIFJlZmVyIHYx IHlvdXIgY29tbWVudHMuCj4gPiA+ID4gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvaW14LzIwMjMw OTA2MTQ1MjI3LkdDNTkzMEB0aGlua3BhZC8KPiA+ID4gCj4gPiA+IEkgZG8gbm90IGZpbmQgd2hl cmUgSSBzdWdnZXN0ZWQgdGhlIGNhbGxiYWNrIGFwcHJvYWNoLgo+ID4gCj4gPiAJPiA+ID4gSWYg dGhhdCwgRWFjaCBFUEYgZHJpdmVyIG5lZWQgZG8gZHVwbGljYXRlIHdvcmsuIAo+ID4gCT4gPiA+ IAo+ID4gCT4gPiAKPiA+IAk+ID4gWWVzLCBhbmQgdGhhdCdzIGhvdyBpdCBzaG91bGQgYmUuIEVQ RiBjb3JlIGhhcyBubyBqb2IgaW4gc3VwcGx5aW5nIHRoZSBvZl9ub2RlLgo+ID4gCT4gPiBJdCBp cyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIEVQRiBkcml2ZXJzIGFzIHRoZXkgZGVwZW5kIG9u IE9GIGZvciBwbGF0Zm9ybQo+ID4gCT4gPiBzdXBwb3J0Lgo+ID4gCT4gCj4gPiAJPiBFUEYgZHJp dmVyIHN0aWxsIG5vdCBkZXBlbmQgb24gT0YuIHN1Y2ggcGNpLWVwZi10ZXN0LCB3aGljaCB3YXMg cHJvYmVkIGJ5Cj4gPiAJPiBjb25maWdmcy4KPiA+IAk+IAo+ID4gCj4gPiAJSG1tLCB5ZWFoLiBU aGVuIGl0IHNob3VsZCBiZSBwYXJ0IG9mIHRoZSBFUEMgZHJpdmVyLgo+ID4gCj4gPiAJU29ycnkg Zm9yIHRoZSBjb25mdXNpb24uCj4gPiAKPiA+IEhlcmUsIGFsbCAiRVBGIiBzaG91bGQgYmUgIkVQ QyIuIFRoZSBrZXkgcHJvYmxlbSBpcyBvZl9ub2RlLiBFUEMgY29yZSBoYXZlCj4gPiBub3Qgb2Zf bm9kZSwgRVBDIGNvcmUncyBwYXJlbnQgZHJpdmVyIChsaWtlIGR3Yy1lcCBkcml2ZXIpIGhhdmUg b2Zfbm9kZS4gCj4gPiAKPiA+IHBjaV9lcGNfZ2VuZXJpY19hbGxvY19kb29yYmVsbChkZXYpLCBk ZXYgaXMgcHJvYmVkIGJ5IHBsYXRmb3JtIGRyaXZlciwgc3VjaAo+ID4gYXMgZHdjLWVwLCB3aGlj aCBoYXZlIG9mX25vZGUsICBFUEMgY29yZSB3aWxsIGNyZWF0ZSBjaGlsZCBkZXZpY2UuCj4gPiAK PiA+IGR3Yy1lcCBkZXZpY2UKPiA+ICB8LSBlcGMgY29yZSBkZXZpY2UKPiA+IAo+ID4gd2UgY2Fu IGRpcmVjdCBjYWxsIHBjaV9lcGNfZ2VuZXJpY19hbGxvY19kb29yYmVsbChlcGMtPnBhcmVudCkg aGVyZS4KPiA+IAo+ID4gSSBtYXkgbWlzcyB1bmRlcnN0YW5kIHdoYXQgeW91ciBtZWFucy4gSSB0 aGluayB5b3Ugd2FudCB0byBkd2MtZXAKPiA+ICh3aXRoIG9mX25vZGUpIGhhbmRsZSB0aGVzZSBh bGxvYyBmdW5jdGlvbnMuIAo+ID4gCj4gCj4gTXkgY29tbWVudCB3YXMgdG8gaGF2ZSBqdXN0IG9u ZSBmdW5jdGlvbiBkZWZpbml0aW9uLiBCdXQgbG9va2luZyBhdCBpdCBhZ2FpbiwgSQo+IHRoaW5r IGl0IGlzIGJldHRlciB0byBtb3ZlIGFsbCB0aGUgKGFsbG9jLCBmcmVlLCB3cml0ZV9tc2cpIGRl ZmluaXRpb25zIHRvCj4gZHdjLWVwLCBzaW5jZSB0aGUgY29udGVudHMgb2YgdGhvc2UgZnVuY3Rp b25zIGFyZSBub3QgRVBDIGNvcmUgc3BlY2lmaWMuCgpUaGVyZSBhcmUgc3RpbGwgcHJvYmxlbS4g KGFsbG9jLCBmcmVlLCB3cml0ZV9tc2cpIGlzIHF1aXRlIGNvbW1vbiBmb3IgYWxsCmNvbnRyb2xs ZXIgYW5kIHRoZSBzeXN0ZW0gd2l0aCBNU0kuCgpJZiBtb3ZlIHRoZXNlIGludG8gZHdjLWVwLCAg Y2RucyBvciBvdGhlciBjb250cm9sbGVyIGhhdmUgdG8gZHVwbGljYXRlIAp0aGVzZSBjb2Rlcy4K CklmIHlvdSB0aGluayBpdCBpcyBub3QgRVBDIGNvcmUgc3BlY2lmaWMsIGhvdyBhYm91dCBjcmVh dGUgbmV3IGhlbHAgZmlsZXM/CgpGcmFuawoKPiAKPiBJbiB0aGUgRVBDIGNvcmUsIHlvdSBjYW4g c3RpbGwgaGF2ZSB0aGUgY2FsbGJhY2tzIHNwZWNpZmljIHRvIGVhY2ggRVBDLiBUaGlzCj4gYWxz byBzb2x2ZXMgeW91ciBvZl9ub2RlIHByb2JsZW0uCj4gCj4gLSBNYW5pCj4gCj4gPiA+IAo+ID4g PiA+IDIuIE1heWJlIHNvbWUgZXAgY29udHJvbGxlciBoYXZlIGJ1aWx0LWluIGRvb3JiZWxsIHN1 cHBvcnQuIFdyaXRlIHRvIHNvbWUKPiA+ID4gPiBhZGRyZXNzIHRvIHRyaWdnZXIgZG9vcmJlbGwg aXJxLgo+ID4gPiA+IAo+ID4gPiAKPiA+ID4gV2Ugd2lsbCBoYW5kbGUgaXQgd2hlbmV2ZXIgc3Vj aCBFUCBjb250cm9sbGVycyBhcnJpdmUuIFVudGlsIHRoZW4sIGxldCdzIGtlZXAgaXQKPiA+ID4g c2ltcGxlLgo+ID4gPiAKPiA+ID4gLSBNYW5pCj4gPiA+IAo+ID4gPiA+IEZyYW5rCj4gPiA+ID4g Cj4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gKwltdXRleF91bmxvY2soJmVwYy0+bG9jayk7Cj4gPiA+ ID4gPiA+ICsKPiA+ID4gPiA+ID4gKwlyZXR1cm4gcmV0Owo+ID4gPiA+ID4gPiArfQo+ID4gPiA+ ID4gPiArRVhQT1JUX1NZTUJPTF9HUEwocGNpX2VwY19hbGxvY19kb29yYmVsbCk7Cj4gPiA+ID4g PiA+ICsKPiA+ID4gPiA+ID4gKy8qKgo+ID4gPiA+ID4gPiArICogcGNpX2VwY19mcmVlX2Rvb3Ji ZWxsKCkgLSBmcmVlIHJlc291cmNlIGFsbG9jYXRlZCBieSBwY2lfZXBjX2FsbG9jX2Rvb3JiZWxs KCkKPiA+ID4gPiA+ID4gKyAqCj4gPiA+ID4gPiA+ICsgKiBAZXBjOiB0aGUgRVBDIGRldmljZSB0 aGF0IG5lZWQgZG9vcmJlbGwgYWRkcmVzcyBhbmQgZGF0YSBmcm9tIFJDLgo+ID4gPiA+ID4gCj4g PiA+ID4gPiBTYW1lIGFzIGFib3ZlLgo+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ICsgKiBAZnVuY19u bzogdGhlIHBoeXNpY2FsIGVuZHBvaW50IGZ1bmN0aW9uIG51bWJlciBpbiB0aGUgRVBDIGRldmlj ZS4KPiA+ID4gPiA+ID4gKyAqIEB2ZnVuY19ubzogdGhlIHZpcnR1YWwgZW5kcG9pbnQgZnVuY3Rp b24gbnVtYmVyIGluIHRoZSBwaHlzaWNhbCBmdW5jdGlvbi4KPiA+ID4gPiA+ID4gKyAqCj4gPiA+ ID4gPiA+ICsgKiBSZXR1cm46IDAgc3VjY2Vzcywgb3RoZXIgaXMgZmFpbHVyZQo+ID4gPiA+ID4g PiArICovCj4gPiA+ID4gPiA+ICt2b2lkIHBjaV9lcGNfZnJlZV9kb29yYmVsbChzdHJ1Y3QgcGNp X2VwYyAqZXBjLCB1OCBmdW5jX25vLCB1OCB2ZnVuY19ubykKPiA+ID4gPiA+ID4gK3sKPiA+ID4g PiA+ID4gKwlpZiAoSVNfRVJSX09SX05VTEwoZXBjKSB8fCBmdW5jX25vID49IGVwYy0+bWF4X2Z1 bmN0aW9ucykKPiA+ID4gPiA+ID4gKwkJcmV0dXJuOwo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ ICsJaWYgKHZmdW5jX25vID4gMCAmJiAoIWVwYy0+bWF4X3ZmcyB8fCB2ZnVuY19ubyA+IGVwYy0+ bWF4X3Zmc1tmdW5jX25vXSkpCj4gPiA+ID4gPiA+ICsJCXJldHVybjsKPiA+ID4gPiA+ID4gKwo+ ID4gPiA+ID4gPiArCWlmICghZXBjLT5vcHMtPmZyZWVfZG9vcmJlbGwpCj4gPiA+ID4gPiA+ICsJ CXJldHVybjsKPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiArCW11dGV4X2xvY2soJmVwYy0+bG9j ayk7Cj4gPiA+ID4gPiA+ICsJZXBjLT5vcHMtPmZyZWVfZG9vcmJlbGwoZXBjLCBmdW5jX25vLCB2 ZnVuY19ubyk7Cj4gPiA+ID4gPiAKPiA+ID4gPiA+IFNhbWUgYXMgc3VnZ2VzdGVkIGFib3ZlLgo+ ID4gPiA+ID4gCj4gPiA+ID4gPiA+ICsJbXV0ZXhfdW5sb2NrKCZlcGMtPmxvY2spOwo+ID4gPiA+ ID4gPiArfQo+ID4gPiA+ID4gPiArRVhQT1JUX1NZTUJPTF9HUEwocGNpX2VwY19mcmVlX2Rvb3Ji ZWxsKTsKPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiArc3RhdGljIGlycXJldHVybl90IHBjaV9l cGZfZ2VuZXJpY19kb29yYmVsbF9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRhdGEpCj4gPiA+ID4g PiA+ICt7Cj4gPiA+ID4gPiA+ICsJc3RydWN0IHBjaV9lcGYgKmVwZiA9IGRhdGE7Cj4gPiA+ID4g PiA+ICsKPiA+ID4gPiA+ID4gKwlpZiAoZXBmLT5ldmVudF9vcHMgJiYgZXBmLT5ldmVudF9vcHMt PmRvb3JiZWxsKQo+ID4gPiA+ID4gPiArCQllcGYtPmV2ZW50X29wcy0+ZG9vcmJlbGwoZXBmLCBp cnEgLSBlcGYtPnZpcnFfYmFzZSk7Cj4gPiA+ID4gPiAKPiA+ID4gPiA+IFNhbWUgYXMgc3VnZ2Vz dGVkIGFib3ZlLgo+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gKwlyZXR1cm4g SVJRX0hBTkRMRUQ7Cj4gPiA+ID4gPiA+ICt9Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gK3N0 YXRpYyB2b2lkIHBjaV9lcGNfZ2VuZXJpY193cml0ZV9tc2lfbXNnKHN0cnVjdCBtc2lfZGVzYyAq ZGVzYywgc3RydWN0IG1zaV9tc2cgKm1zZykKPiA+ID4gPiA+ID4gK3sKPiA+ID4gPiA+ID4gKwlz dHJ1Y3QgcGNpX2VwYyAqZXBjID0gTlVMTDsKPiA+ID4gPiA+ID4gKwlzdHJ1Y3QgY2xhc3NfZGV2 X2l0ZXIgaXRlcjsKPiA+ID4gPiA+ID4gKwlzdHJ1Y3QgcGNpX2VwZiAqZXBmOwo+ID4gPiA+ID4g PiArCXN0cnVjdCBkZXZpY2UgKmRldjsKPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiArCWNsYXNz X2Rldl9pdGVyX2luaXQoJml0ZXIsIHBjaV9lcGNfY2xhc3MsIE5VTEwsIE5VTEwpOwo+ID4gPiA+ ID4gPiArCXdoaWxlICgoZGV2ID0gY2xhc3NfZGV2X2l0ZXJfbmV4dCgmaXRlcikpKSB7Cj4gPiA+ ID4gPiA+ICsJCWlmIChkZXYtPnBhcmVudCAhPSBkZXNjLT5kZXYpCj4gPiA+ID4gPiA+ICsJCQlj b250aW51ZTsKPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiArCQllcGMgPSB0b19wY2lfZXBjKGRl dik7Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gKwkJY2xhc3NfZGV2X2l0ZXJfZXhpdCgmaXRl cik7Cj4gPiA+ID4gPiA+ICsJCWJyZWFrOwo+ID4gPiA+ID4gPiArCX0KPiA+ID4gPiA+ID4gKwo+ ID4gPiA+ID4gPiArCWlmICghZXBjKQo+ID4gPiA+ID4gPiArCQlyZXR1cm47Cj4gPiA+ID4gPiA+ ICsKPiA+ID4gPiA+ID4gKwkvKiBPbmx5IHN1cHBvcnQgb25lIEVQRiBmb3IgZG9vcmJlbGwgKi8K PiA+ID4gPiA+ID4gKwllcGYgPSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwoJmVwYy0+cGNpX2Vw Ziwgc3RydWN0IHBjaV9lcGYsIGxpc3QpOwo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiAKPiA+ID4g PiA+IE5vIG5lZWQgb2YgdGhpcyBuZXdsaW5lCj4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gKwlpZiAo IWVwZikKPiA+ID4gPiA+ID4gKwkJcmV0dXJuOwo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICsJ aWYgKGVwZi0+bXNnICYmIGRlc2MtPm1zaV9pbmRleCA8IGVwZi0+bnVtX21zZ3MpCj4gPiA+ID4g PiA+ICsJCWVwZi0+bXNnW2Rlc2MtPm1zaV9pbmRleF0gPSAqbXNnOwo+ID4gPiA+ID4gPiArfQo+ ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+IAo+ID4gPiA+ID4gUmVtb3ZlIGV4 dHJhIG5ld2xpbmUKPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiArLyoqCj4gPiA+ID4gPiA+ICsgKiBw Y2lfZXBjX2dlbmVyaWNfYWxsb2NfZG9vcmJlbGwoKSAtIENvbW1vbiBoZWxwIGZ1bmN0aW9uLiBB bGxvY2F0ZSBhZGRyZXNzIHNwYWNlIGZyb20gTVNJCj4gPiA+ID4gPiA+ICsgKiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIKPiA+ID4gPiA+ID4gKyAqCj4gPiA+ ID4gPiA+ICsgKiBAZXBjOiB0aGUgRVBDIGRldmljZSB0aGF0IG5lZWQgZG9vcmJlbGwgYWRkcmVz cyBhbmQgZGF0YSBmcm9tIFJDLgo+ID4gPiA+ID4gPiArICogQGZ1bmNfbm86IHRoZSBwaHlzaWNh bCBlbmRwb2ludCBmdW5jdGlvbiBudW1iZXIgaW4gdGhlIEVQQyBkZXZpY2UuCj4gPiA+ID4gPiA+ ICsgKiBAdmZ1bmNfbm86IHRoZSB2aXJ0dWFsIGVuZHBvaW50IGZ1bmN0aW9uIG51bWJlciBpbiB0 aGUgcGh5c2ljYWwgZnVuY3Rpb24uCj4gPiA+ID4gPiA+ICsgKiBAbnVtX21zZ3M6IHRoZSB0b3Rh bCBudW1iZXIgb2YgZG9vcmJlbGwgbWVzc2FnZXMKPiA+ID4gPiA+ID4gKyAqCj4gPiA+ID4gPiAK PiA+ID4gPiA+IFNhbWUgY29tbWVudCBhcyBmb3IgcGNpX2VwY19hbGxvY19kb29yYmVsbCgpCj4g PiA+ID4gPiAKPiA+ID4gPiA+ID4gKyAqIFJlbWFyazogdXNlIHRoaXMgZnVuY3Rpb24gb25seSBp ZiBFUEMgZHJpdmVyIGp1c3QgcmVnaXN0ZXIgb25lIEVQQyBkZXZpY2UuCj4gPiA+ID4gPiA+ICsg Kgo+ID4gPiA+ID4gPiArICogUmV0dXJuOiAwIHN1Y2Nlc3MsIG90aGVyIGlzIGZhaWx1cmUKPiA+ ID4gPiA+ID4gKyAqLwo+ID4gPiA+ID4gPiAraW50IHBjaV9lcGNfZ2VuZXJpY19hbGxvY19kb29y YmVsbChzdHJ1Y3QgcGNpX2VwYyAqZXBjLCB1OCBmdW5jX25vLCB1OCB2ZnVuY19ubywgaW50IG51 bV9tc2dzKQo+ID4gPiA+ID4gPiArewo+ID4gPiA+ID4gPiArCXN0cnVjdCBwY2lfZXBmICplcGY7 Cj4gPiA+ID4gPiA+ICsJc3RydWN0IGRldmljZSAqZGV2Owo+ID4gPiA+ID4gPiArCWludCB2aXJx LCBsYXN0Owo+ID4gPiA+ID4gPiArCWludCByZXQ7Cj4gPiA+ID4gPiA+ICsJaW50IGk7Cj4gPiA+ ID4gPiA+ICsKPiA+ID4gPiA+ID4gKwlpZiAoSVNfRVJSX09SX05VTEwoZXBjKSkKPiA+ID4gPiA+ ID4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gKwkvKiBDdXJy ZW50bHkgb25seSBzdXBwb3J0IG9uZSBmdW5jIGFuZCBvbmUgdmZ1bmMgZm9yIGRvb3JiZWxsICov Cj4gPiA+ID4gPiA+ICsJaWYgKGZ1bmNfbm8gfHwgdmZ1bmNfbm8pCj4gPiA+ID4gPiA+ICsJCXJl dHVybiAtRUlOVkFMOwo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICsJZXBmID0gbGlzdF9maXJz dF9lbnRyeV9vcl9udWxsKCZlcGMtPnBjaV9lcGYsIHN0cnVjdCBwY2lfZXBmLCBsaXN0KTsKPiA+ ID4gPiA+ID4gKwlpZiAoIWVwZikKPiA+ID4gPiA+ID4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gPiA+ ID4gPiA+ICsKPiA+ID4gPiA+ID4gKwlkZXYgPSBlcGMtPmRldi5wYXJlbnQ7Cj4gPiA+ID4gPiA+ ICsJcmV0ID0gcGxhdGZvcm1fbXNpX2RvbWFpbl9hbGxvY19pcnFzKGRldiwgbnVtX21zZ3MsIHBj aV9lcGNfZ2VuZXJpY193cml0ZV9tc2lfbXNnKTsKPiA+ID4gPiA+ID4gKwlpZiAocmV0KSB7Cj4g PiA+ID4gPiA+ICsJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGFsbG9jYXRlIE1TSVxuIik7Cj4g PiA+ID4gPiA+ICsJCXJldHVybiAtRU5PTUVNOwo+ID4gPiA+ID4gPiArCX0KPiA+ID4gPiA+ID4g Kwo+ID4gPiA+ID4gPiArCWxhc3QgPSAtMTsKPiA+ID4gPiA+ID4gKwlmb3IgKGkgPSAwOyBpIDwg bnVtX21zZ3M7IGkrKykgewo+ID4gPiA+ID4gCj4gPiA+ID4gPiBZb3Ugc2hvdWxkIGl0ZXJhdGUg b3ZlciBtc2lfZGVzYyBhcyBiZWxvdzoKPiA+ID4gPiA+IAo+ID4gPiA+ID4gICAgICAgICBtc2lf bG9ja19kZXNjcyhkZXYpOwo+ID4gPiA+ID4gICAgICAgICBtc2lfZm9yX2VhY2hfZGVzYyhkZXNj LCBkZXYsIE1TSV9ERVNDX0FMTCkgewo+ID4gPiA+ID4gCQkuLi4KPiA+ID4gPiA+IAl9Cj4gPiA+ ID4gPiAJbXNpX3VubG9ja19kZXNjcyhkZXYpOwo+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ICsJCXZp cnEgPSBtc2lfZ2V0X3ZpcnEoZGV2LCBpKTsKPiA+ID4gPiA+ID4gKwkJaWYgKGkgPT0gMCkKPiA+ ID4gPiA+ID4gKwkJCWVwZi0+dmlycV9iYXNlID0gdmlycTsKPiA+ID4gPiA+ID4gKwo+ID4gPiA+ ID4gPiArCQlyZXQgPSByZXF1ZXN0X2lycSh2aXJxLCBwY2lfZXBmX2dlbmVyaWNfZG9vcmJlbGxf aGFuZGxlciwgMCwKPiA+ID4gPiA+IAo+ID4gPiA+ID4gCXJlcXVlc3RfaXJxKGRlc2MtPmlycSwg Li4uKQo+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ICsJCQkJICBrYXNwcmludGYoR0ZQX0tFUk5FTCwg InBjaS1lcGMtZG9vcmJlbGwlZCIsIGkpLCBlcGYpOwo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ ICsJCWlmIChyZXQpIHsKPiA+ID4gPiA+ID4gKwkJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIHJl cXVlc3QgZG9vcmJlbGxcbiIpOwo+ID4gPiA+ID4gPiArCQkJZ290byBlcnJfZnJlZV9pcnE7Cj4g PiA+ID4gPiA+ICsJCX0KPiA+ID4gPiA+ID4gKwkJbGFzdCA9IGk7Cj4gPiA+ID4gPiA+ICsJfQo+ ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICsJcmV0dXJuIDA7Cj4gPiA+ID4gPiA+ICsKPiA+ID4g PiA+ID4gK2Vycl9mcmVlX2lycToKPiA+ID4gPiA+ID4gKwlmb3IgKGkgPSAwOyBpIDwgbGFzdDsg aSsrKQo+ID4gPiA+ID4gPiArCQlrZnJlZShmcmVlX2lycShlcGYtPnZpcnFfYmFzZSArIGksIGVw ZikpOwo+ID4gPiA+ID4gPiArCXBsYXRmb3JtX21zaV9kb21haW5fZnJlZV9pcnFzKGRldik7Cj4g PiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gKwlyZXR1cm4gLUVJTlZBTDsKPiA+ID4gPiA+IAo+ID4g PiA+ID4gCXJldHVybiByZXQ7Cj4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gK30KPiA+ID4gPiA+ID4g K0VYUE9SVF9TWU1CT0xfR1BMKHBjaV9lcGNfZ2VuZXJpY19hbGxvY19kb29yYmVsbCk7Cj4gPiA+ ID4gPiA+ICsKPiA+ID4gPiA+IAo+ID4gPiA+ID4gWy4uLl0KPiA+ID4gPiA+IAo+ID4gPiA+ID4g PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wY2ktZXBmLmggYi9pbmNsdWRlL2xpbnV4L3Bj aS1lcGYuaAo+ID4gPiA+ID4gPiBpbmRleCAzZjQ0YjZhZWM0NzcwLi40ODVjMTQ2YTVlZmUyIDEw MDY0NAo+ID4gPiA+ID4gPiAtLS0gYS9pbmNsdWRlL2xpbnV4L3BjaS1lcGYuaAo+ID4gPiA+ID4g PiArKysgYi9pbmNsdWRlL2xpbnV4L3BjaS1lcGYuaAo+ID4gPiA+ID4gPiBAQCAtNzksNiArNzks NyBAQCBzdHJ1Y3QgcGNpX2VwY19ldmVudF9vcHMgewo+ID4gPiA+ID4gPiAgCWludCAoKmxpbmtf dXApKHN0cnVjdCBwY2lfZXBmICplcGYpOwo+ID4gPiA+ID4gPiAgCWludCAoKmxpbmtfZG93biko c3RydWN0IHBjaV9lcGYgKmVwZik7Cj4gPiA+ID4gPiA+ICAJaW50ICgqYm1lKShzdHJ1Y3QgcGNp X2VwZiAqZXBmKTsKPiA+ID4gPiA+ID4gKwlpbnQgKCpkb29yYmVsbCkoc3RydWN0IHBjaV9lcGYg KmVwZiwgaW50IGluZGV4KTsKPiA+ID4gPiA+IAo+ID4gPiA+ID4ga2RvYyBtaXNzaW5nLgo+ID4g PiA+ID4gCj4gPiA+ID4gPiA+ICB9Owo+ID4gPiA+ID4gPiAgCj4gPiA+ID4gPiA+ICAvKioKPiA+ ID4gPiA+ID4gQEAgLTE4MCw2ICsxODEsOSBAQCBzdHJ1Y3QgcGNpX2VwZiB7Cj4gPiA+ID4gPiA+ ICAJdW5zaWduZWQgbG9uZwkJdmZ1bmN0aW9uX251bV9tYXA7Cj4gPiA+ID4gPiA+ICAJc3RydWN0 IGxpc3RfaGVhZAlwY2lfdmVwZjsKPiA+ID4gPiA+ID4gIAljb25zdCBzdHJ1Y3QgcGNpX2VwY19l dmVudF9vcHMgKmV2ZW50X29wczsKPiA+ID4gPiA+ID4gKwlzdHJ1Y3QgbXNpX21zZyAqbXNnOwo+ ID4gPiA+ID4gPiArCXUxNiBudW1fbXNnczsKPiA+ID4gPiA+IAo+ID4gPiA+ID4gbnVtX2RiCj4g PiA+ID4gPiAKPiA+ID4gPiA+IFlvdSBhbHNvIG5lZWQgdG8gYWRkIGtkb2MgZm9yIGVhY2ggbmV3 IG1lbWJlci4KPiA+ID4gPiA+IAo+ID4gPiA+ID4gLSBNYW5pCj4gPiA+ID4gPiAKPiA+ID4gPiA+ IC0tIAo+ID4gPiA+ID4g4K6u4K6j4K6/4K614K6j4K+N4K6j4K6p4K+NIOCumuCupOCuvuCumuCu v+CuteCuruCvjQo+ID4gPiAKPiA+ID4gLS0gCj4gPiA+IOCuruCuo+Cuv+CuteCuo+CvjeCuo+Cu qeCvjSDgrprgrqTgrr7grprgrr/grrXgrq7gr40KPiAKPiAtLSAKPiDgrq7grqPgrr/grrXgrqPg r43grqPgrqngr40g4K6a4K6k4K6+4K6a4K6/4K614K6u4K+NCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlz dApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJh ZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==