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 D0C0FCDB465 for ; Thu, 19 Oct 2023 16:01:13 +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=dAOuJIkPy2L8eSGby11im6//7jWJVdmCLj/nM1Ejsbo=; b=ahxJccnewiCMkt eWZaA/6CBCkjL2vrtkGLRIoy6sXT9ES1CvWiSc9dnwWSTcwttCiRUP+9X01RucZw65DU5XR3oSUR1 ss/xLX00YcdD4ldCNH1U5Ts2MDGFcaCLMlZXv6HIssYtINXyKrbwpCboHlvoZhEbb13quRXX+SUUt /xmNwf1rM0mtNKVXKBXXUEdqeluA71ns6V8O97W5zvt3Cc3hGC1K1ik/ukyDzLtBbURM5cY1QVo0i iAOEKTZdaiEERxW7rHdQIXb0H8r48g22P0NUtPQa2VdSmlcj6BRwIgzLWW01CC3x1wpxcWjCVHq6W ifNkeK8s8foQi4rXrHuQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qtVRz-000H0C-16; Thu, 19 Oct 2023 16:00:43 +0000 Received: from mail-he1eur04on0627.outbound.protection.outlook.com ([2a01:111:f400:fe0d::627] helo=EUR04-HE1-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qtVRv-000GzZ-1X for linux-arm-kernel@lists.infradead.org; Thu, 19 Oct 2023 16:00:41 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KPVqqTZs3q+cOHWzVzfkurNS/WsloWyfDw26F73h33wNLn9NWw3McP/Ce5azsFq8D4Ub183emnDa5M7ZVbRa1zgZQcKfu4VS8KuYNkJSnA/fcV61ld0UO0BOgVkJi6NR+Y3M7leICkQkWc0D9FVGMDeMHOPhuXSFaC6UmFB9cWk+7mSKse/0aGo1Z/hvDzTaNeS96fEC+CrRjCVVmyuo9jWVuDx/geERU0tEcZwnXR5ewLFcdT6Bu7KCf3J1rGNtww/hIW0T4IDz5IV6illkk6ABAxKZdpDyoAKcZFhLrlchUJrMu5TSPBRDz/bDEL17imxcVf1/H+1LjEaT3GwIww== 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=kh5xBFCy9VfUJuzQwewwgPgDu25RYnjbzWzS4+ly7hk=; b=nSkNGRQljKLBSHKI1wULIoJJX+ExgxJw9NpFPlYPFCIpw74x4BcT1ho1cTu/XehB7AeTytRFimGLDwD2i9qceErCD0K/7HfWFiOS2/xW/yisJNlLvmH/EN4PuM+AbvSTnuewMMHvxQKetXYzI+TqiD/qjMk8bVv7fOWuXygFDI345RVRC1c9uQ37HALlIGx7pDDhY5Jnlu+8Rgp3kN6uKoXc+9aWavj1lYRiJQpAaBUTAWtPKcSeYPIfNuvWzbEaOPZ46EGDWbr0rc5PyU8wNiRXX7VG7jszseCaSFHwLkt+qdv3QRLowmIbyEg9Y8gd8UjyLNDMy1XIWRa6mvOymQ== 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=kh5xBFCy9VfUJuzQwewwgPgDu25RYnjbzWzS4+ly7hk=; b=JB2CuYKai3IcqW3ma3D6/9reJqTsVrSH50qFvwRrlZz89gZBhA64P9MmDxHxUcGmatZLddAVgTQ72CjHroFv7QkVNTmAomHQVwCU/Jk2xr3R7B70p3y49Tae7RPBT7llhXKx2iniEgD1fEz6szM478cFpdYBF2iUwUpYEmhPWhk= 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 DBBPR04MB7675.eurprd04.prod.outlook.com (2603:10a6:10:207::8) 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 16:00:33 +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 16:00:33 +0000 Date: Thu, 19 Oct 2023 12:00:22 -0400 From: Frank Li To: Manivannan Sadhasivam Cc: 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 controller Message-ID: References: <20230911220920.1817033-1-Frank.Li@nxp.com> <20230911220920.1817033-2-Frank.Li@nxp.com> <20231017183722.GB137137@thinkpad> <20231019150441.GA7254@thinkpad> Content-Disposition: inline In-Reply-To: <20231019150441.GA7254@thinkpad> X-ClientProxiedBy: SJ0PR05CA0165.namprd05.prod.outlook.com (2603:10b6:a03:339::20) To AM6PR04MB4838.eurprd04.prod.outlook.com (2603:10a6:20b:4::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM6PR04MB4838:EE_|DBBPR04MB7675:EE_ X-MS-Office365-Filtering-Correlation-Id: 34a5311a-37e8-470c-c66c-08dbd0bc864d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: lyPa2WV4fKz8ZK22PAd5gjNNAXboicKJ6auumLW933TAwM/voxRtpJ7BK+cz2BheowdmTBzvlSJcYV/aPrNV6t6lIMQ9H1Y9/21oP6Ocl8R+ag3nlKAgI87ji9shVWmVMv4Xr+au6yDzSdGj4cF6fPQJsUvXYbfMpDrLTcMb86oSCV6CWQplKmfblynvgYxFC+f1QjpR7Up8h/2clYKpad05yUGDhRTaP0GRntvNHx/3gxvGQc0b/ywwJxCT6V1h+tcwAn1z+jFDQsg4T9zz14bqTxVmLXqxvgxt6oWikVBAkQOzoVNjTbQbqN5R5MKvmlQtAqGOkCCJEDo3nqwuffRAWInW4v5IQmSbOCPFLelXPsrngtOapMafJAAWfLkbukRaIflww07RLMB2XnSyBHBS4UM8Dt2eEpTWZ4Yre56VYx+jTZ1m0sMLl35VlARfu8GMYK6HfEzQwLl0cpddQqegYuw8T9wwBHAsjuTFa91ZP34Tf3MWFpJrcUDsKdJ9PvoI6dB/RjtWOXq2yuIrxQgfJkFh9mebC6NWbq3aXO6/Y+pem90yHQluV77FfOZMTBRHa59mKyjOZOY8L08wjXxs22+02pfke3mCZD8SWSM= 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)(346002)(366004)(396003)(39860400002)(136003)(376002)(230922051799003)(451199024)(1800799009)(64100799003)(186009)(316002)(66946007)(66476007)(66556008)(6666004)(6916009)(8936002)(8676002)(478600001)(6486002)(966005)(41300700001)(5660300002)(86362001)(7416002)(4326008)(2906002)(30864003)(6506007)(38100700002)(6512007)(52116002)(9686003)(83380400001)(26005)(38350700005)(33716001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Y2IreU1TSDNrWklqeEVBKzFxQnFnTFBRcW4vN0lnbitVT0J4amh2cDFLK0li?= =?utf-8?B?WHBjVUlxVlhKOXpsWlZFZ1YzUEFRcDZZaW1GNFhManhESUZuSWFYeDU1dUNt?= =?utf-8?B?N0p2eTc4U3I2MW5nZ0ljK25pYWhzcFZWVkhrRzFndHhEL09TZFVhaTRtdHUr?= =?utf-8?B?Umw3UXNzODM4R1cwai93U2FMTHRzNTlGUklqRjRXbzFZUXZyTXlYeGUza0do?= =?utf-8?B?eHJieCtCTTVJNUtYdUNmL2hVR0NKM1hOaXRQcUYzd2pCZ1JmMUZITlhpelR4?= =?utf-8?B?MVBBMjFUcDlPVXlGRzZOK2dHWGpyS2tuTTMyMDJ2amVRT0NzSXVaVEZhazRJ?= =?utf-8?B?Z2RUdmY0OUUvSXRodWJLRUhRcVM4ZzROelJ6OU5ZWTVVOVA3eUpyUkpzYkZt?= =?utf-8?B?cVBhQ2ZUTS9Wd1BOQURyd1cyOXYvZnRwdzk2SlBobHNpK3ZaWnJtc2p6TkFE?= =?utf-8?B?cTU5TDVrVDBxaVYvSkY2bFk0YWRPaDBpNjFFdER6ZG9wYmhLTFY5NXI0dEJJ?= =?utf-8?B?aGpvZUdSZWVoSkR4bTc1bGpHNkdRZmxoV3dtbk5YR2x0NVVuWnB3SlNqUVRo?= =?utf-8?B?QmEvUmplcThncFBBNGZPckRKcWlNNlZFZEFBNUlaK2RCbkJ6MWJ5R3V4M0Iy?= =?utf-8?B?clFDNi9TckFVRUo3c2U3VWZFUjlQQ0JBM2JJekplcUV2dFhlbUYvYTVPaXFi?= =?utf-8?B?VWsrRTJxU0JvTWFxZnBFUUljYUdIRjllQ2tyVnRsZW1sVGx6ZzBOdkVsNG04?= =?utf-8?B?V3k4S055RUo1aUFYYWxBU1NjV2krZXdDUGZad2ZUTFVmdzh0OG02SFp1NFo0?= =?utf-8?B?UHNobDZFcGZCOWVvM2RQSnlJVXhSbzJyMytvVXppT3dRR25WbG9sUlJ3b0Zh?= =?utf-8?B?UE1ndk1wNlMrazdKNjBoMENXYWdYa0tuaGY4MnNqWkw0dG9zUXk3ZFNhSnRQ?= =?utf-8?B?RXlxOHJhVGhROTNGOEFGMXM0MEcwb3dQL09ZWDNseFRVbW01OUNQREVKSjRh?= =?utf-8?B?SkhHd09OSXdmTmNoVGU5VjBueDRUT0s1Q1RoQ2wyYVJ5ak5JdWxDcDlBVzFZ?= =?utf-8?B?YTFxMXB2ZWhHb1JIRFUvbTg1WGhZdW42SFhrR0xpeWFqdlhwVWI1Y2ZhdjV5?= =?utf-8?B?MWM5TkkyNTIveDdUQ0UzT2hOeEtueWZyRFUxeVllT3k0MUswV281OXBZMkhY?= =?utf-8?B?elQrRkxueHBtaDJYODJ4cVljQ0pqbEVrWGZkbGR2ZFdwVHZsaVREanBIQXFm?= =?utf-8?B?dERSLzNReDRLaG50Tk50d1JEWkY4aCtQMDZUQ2FkYm1YcmlqQXExcXNXZWNV?= =?utf-8?B?bkg5VngvalY2NUVYbm5FaGdZR1V2a0Zya0ZLa1N3QkxpYU0vVmtpekxDSFR6?= =?utf-8?B?ODlZaENHSEhycUlCbk1FKzlueDcvbHNYNjRzWmtlMHRzNEc0Z1ZLRitkQzhD?= =?utf-8?B?Ny8ya1dqLzlmVWJTY3hjNFF5MHd4RmdLUDBTRStEZjc5TGFJSlNtU1loVjBQ?= =?utf-8?B?S0YrU2hTcmdFekpTeDR4dlpkUzFyRVg0N1I0UXB3QmNRc2Mwb0t6VEh4b3JN?= =?utf-8?B?TEdPQXhNUzJlSkM2c2JYWkVWWVVtbzFieXp6R3VLeXhqVTc3SXRqL0dkd09Q?= =?utf-8?B?M1JyVC9jYUhwTEQwVHRqbGtHNmJjZVhzdEZ4VUhQYjNtaE54NGJNbEZpMytP?= =?utf-8?B?b0l2VDk3RkRHNEw3UDJPTFlNTmVEK0xrL0hraFJOSDJBaVY4c3VJUW9MVWMx?= =?utf-8?B?Y0FzcHZNQXd1OWRNUkdLMERscUJHZkJ5dFJBTjFMaEFqckNzc2ZrbTNnQ2hz?= =?utf-8?B?Tk5UV0ZtM08zK3ZkUVo1V3REbUZNVEdMUVg3eFc0cVI2dEFwejJSajM2a3Y0?= =?utf-8?B?MEdJUFVPajQvM2JKeE1RWExjeU1vZTBlWHZOdXNGRzFXc09PcTJRNEpGZllN?= =?utf-8?B?N2VPL3V0U0ovbHZRK2xEaVRZVzNiTjJXR0l4L2VkWDQyZThsYWM4SFFFSUhF?= =?utf-8?B?eEQ5MjNDT3ZFdG9CTVg4U3VsN0Fia0JBMHVFcURtYUdwZ2JwREQ4STlGMkZv?= =?utf-8?B?THRUeXc2WTZEU1FvV3BaTzEvZXBSWGtJcW5sKzl1N1R3V2czclBKajdiMnVW?= =?utf-8?Q?hZSJDKjFzlrXuSilh2xCaAKjq?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 34a5311a-37e8-470c-c66c-08dbd0bc864d X-MS-Exchange-CrossTenant-AuthSource: AM6PR04MB4838.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Oct 2023 16:00:33.1613 (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: zcLRPQ2dWGzw3j52AkDSAxBXvmFWRos3exjS1WQU5QXHe0vQ/yphmtLGROpZ1uOt/gDww3ftfw/qLAqVYXGB/w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR04MB7675 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231019_090039_751219_ADACD71C X-CRM114-Status: GOOD ( 48.35 ) 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 T24gVGh1LCBPY3QgMTksIDIwMjMgYXQgMDg6MzQ6NDFQTSArMDUzMCwgTWFuaXZhbm5hbiBTYWRo YXNpdmFtIHdyb3RlOgo+IE9uIFR1ZSwgT2N0IDE3LCAyMDIzIGF0IDAyOjU1OjU3UE0gLTA0MDAs IEZyYW5rIExpIHdyb3RlOgo+ID4gT24gV2VkLCBPY3QgMTgsIDIwMjMgYXQgMTI6MDc6MjJBTSAr MDUzMCwgTWFuaXZhbm5hbiBTYWRoYXNpdmFtIHdyb3RlOgo+ID4gPiBPbiBNb24sIFNlcCAxMSwg MjAyMyBhdCAwNjowOToxNlBNIC0wNDAwLCBGcmFuayBMaSB3cm90ZToKPiA+ID4gPiBUaGlzIGNv bW1pdCBpbnRyb2R1Y2VzIGEgY29tbW9uIG1ldGhvZCBmb3Igc2VuZGluZyBtZXNzYWdlcyBmcm9t IHRoZSBSb290Cj4gPiA+ID4gQ29tcGxleCAoUkMpIHRvIHRoZSBFbmRwb2ludCAoRVApIGJ5IHV0 aWxpemluZyB0aGUgcGxhdGZvcm0gTVNJIGludGVycnVwdAo+ID4gPiA+IGNvbnRyb2xsZXIsIHN1 Y2ggYXMgQVJNIEdJQywgYXMgYW4gRVAgZG9vcmJlbGwuIE1hcHMgdGhlIG1lbW9yeSBhc3NpZ25l ZAo+ID4gPiA+IGZvciB0aGUgQkFSIHJlZ2lvbiBieSB0aGUgUENJIGhvc3QgdG8gdGhlIG1lc3Nh Z2UgYWRkcmVzcyBvZiB0aGUgcGxhdGZvcm0KPiA+ID4gPiBNU0kgaW50ZXJydXB0IGNvbnRyb2xs ZXIgaW4gdGhlIFBDSSBFUC4gQXMgYSByZXN1bHQsIHdoZW4gdGhlIFBDSSBSQyB3cml0ZXMKPiA+ ID4gCj4gPiA+ICJEb29yYmVsbCBmZWF0dXJlIGlzIGltcGxlbWVudGVkIGJ5IG1hcHBpbmcgdGhl IEVQJ3MgTVNJIGludGVycnVwdCBjb250cm9sbGVyCj4gPiA+IG1lc3NhZ2UgYWRkcmVzcyB0byBh IGRlZGljYXRlZCBCQVIgaW4gdGhlIEVQQyBjb3JlLiBJdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkK PiA+ID4gb2YgdGhlIEVQRiBkcml2ZXIgdG8gcGFzcyB0aGUgYWN0dWFsIG1lc3NhZ2UgZGF0YSB0 byBiZSB3cml0dGVuIGJ5IHRoZSBob3N0IHRvCj4gPiA+IHRoZSBkb29yYmVsbCBCQVIgcmVnaW9u IHRocm91Z2ggaXRzIG93biBsb2dpYy4iCj4gPiA+IAo+ID4gPiA+IHRvIHRoZSBCQVIgcmVnaW9u LCBpdCB0cmlnZ2VycyBhbiBJUlEgYXQgdGhlIEVQLiBUaGlzIGltcGxlbWVudGF0aW9uIHNlcnZl cwo+ID4gPiA+IGFzIGEgY29tbW9uIG1ldGhvZCBmb3IgYWxsIGVuZHBvaW50IGZ1bmN0aW9uIGRy aXZlcnMuCj4gPiA+ID4gCj4gPiA+ID4gSG93ZXZlciwgaXQgY3VycmVudGx5IHN1cHBvcnRzIG9u bHkgb25lIEVQIHBoeXNpY2FsIGZ1bmN0aW9uIGR1ZSB0bwo+ID4gPiA+IGxpbWl0YXRpb25zIGlu IEFSTSBNU0kvSU1TIHJlYWRpbmVzcy4KPiA+ID4gPiAKPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBG cmFuayBMaSA8RnJhbmsuTGlAbnhwLmNvbT4KPiA+ID4gPiAtLS0KPiA+ID4gPiAgZHJpdmVycy9w Y2kvZW5kcG9pbnQvcGNpLWVwYy1jb3JlLmMgfCAxOTIgKysrKysrKysrKysrKysrKysrKysrKysr KysrKwo+ID4gPiA+ICBkcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBmLWNvcmUuYyB8ICA0NCAr KysrKysrCj4gPiA+ID4gIGluY2x1ZGUvbGludXgvcGNpLWVwYy5oICAgICAgICAgICAgIHwgICA2 ICsKPiA+ID4gPiAgaW5jbHVkZS9saW51eC9wY2ktZXBmLmggICAgICAgICAgICAgfCAgIDcgKwo+ ID4gPiA+ICA0IGZpbGVzIGNoYW5nZWQsIDI0OSBpbnNlcnRpb25zKCspCj4gPiA+ID4gCj4gPiA+ ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMtY29yZS5jIGIvZHJp dmVycy9wY2kvZW5kcG9pbnQvcGNpLWVwYy1jb3JlLmMKPiA+ID4gPiBpbmRleCA1YTRhOGIwYmU2 MjYyLi5kMzM2YTk5YzZhOTRmIDEwMDY0NAo+ID4gPiA+IC0tLSBhL2RyaXZlcnMvcGNpL2VuZHBv aW50L3BjaS1lcGMtY29yZS5jCj4gPiA+ID4gKysrIGIvZHJpdmVycy9wY2kvZW5kcG9pbnQvcGNp LWVwYy1jb3JlLmMKPiA+ID4gPiBAQCAtMTAsNiArMTAsNyBAQAo+ID4gPiA+ICAjaW5jbHVkZSA8 bGludXgvc2xhYi5oPgo+ID4gPiA+ICAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gPiA+ID4g IAo+ID4gPiA+ICsjaW5jbHVkZSA8bGludXgvbXNpLmg+Cj4gPiA+ID4gICNpbmNsdWRlIDxsaW51 eC9wY2ktZXBjLmg+Cj4gPiA+ID4gICNpbmNsdWRlIDxsaW51eC9wY2ktZXBmLmg+Cj4gPiA+ID4g ICNpbmNsdWRlIDxsaW51eC9wY2ktZXAtY2ZzLmg+Cj4gPiA+ID4gQEAgLTc4Myw2ICs3ODQsMTk3 IEBAIHZvaWQgcGNpX2VwY19ibWVfbm90aWZ5KHN0cnVjdCBwY2lfZXBjICplcGMpCj4gPiA+ID4g IH0KPiA+ID4gPiAgRVhQT1JUX1NZTUJPTF9HUEwocGNpX2VwY19ibWVfbm90aWZ5KTsKPiA+ID4g PiAgCj4gPiA+ID4gKy8qKgo+ID4gPiA+ICsgKiBwY2lfZXBjX2FsbG9jX2Rvb3JiZWxsKCkgLSBh bGxvYyBhbiBhZGRyZXNzIHNwYWNlIHRvIGxldCBSQyB0cmlnZ2VyIEVQIHNpZGUgSVJRIGJ5IHdy aXRlIGRhdGEgdG8KPiA+ID4gPiArICoJCQkgICAgICB0aGUgc3BhY2UuCj4gPiA+IAo+ID4gPiAi QWxsb2NhdGUgcGxhdGZvcm0gc3BlY2lmaWMgZG9vcmJlbGwgSVJRcyB0byBiZSB1c2VkIGJ5IHRo ZSBob3N0IHRvIHRyaWdnZXIKPiA+ID4gZG9vcmJlbGxzIG9uIEVQLiIKPiA+ID4gCj4gPiA+ID4g KyAqCj4gPiA+ID4gKyAqIEBlcGM6IHRoZSBFUEMgZGV2aWNlIHRoYXQgbmVlZCBkb29yYmVsbCBh ZGRyZXNzIGFuZCBkYXRhIGZyb20gUkMuCj4gPiA+IAo+ID4gPiBFUEMgZGV2aWNlIGZvciB3aGlj aCB0aGUgZG9vcmJlbGwgbmVlZHMgdG8gYmUgYWxsb2NhdGVkCj4gPiA+IAo+ID4gPiA+ICsgKiBA ZnVuY19ubzogdGhlIHBoeXNpY2FsIGVuZHBvaW50IGZ1bmN0aW9uIG51bWJlciBpbiB0aGUgRVBD IGRldmljZS4KPiA+ID4gPiArICogQHZmdW5jX25vOiB0aGUgdmlydHVhbCBlbmRwb2ludCBmdW5j dGlvbiBudW1iZXIgaW4gdGhlIHBoeXNpY2FsIGZ1bmN0aW9uLgo+ID4gPiA+ICsgKiBAbnVtX21z Z3M6IHRoZSB0b3RhbCBudW1iZXIgb2YgZG9vcmJlbGwgbWVzc2FnZXMKPiA+ID4gCj4gPiA+IHMv bnVtX21zZ3MvbnVtX2RiCj4gPiA+IAo+ID4gPiA+ICsgKgo+ID4gPiA+ICsgKiBSZXR1cm46IDAg c3VjY2Vzcywgb3RoZXIgaXMgZmFpbHVyZQo+ID4gPiA+ICsgKi8KPiA+ID4gPiAraW50IHBjaV9l cGNfYWxsb2NfZG9vcmJlbGwoc3RydWN0IHBjaV9lcGMgKmVwYywgdTggZnVuY19ubywgdTggdmZ1 bmNfbm8sIGludCBudW1fbXNncykKPiA+ID4gPiArewo+ID4gPiA+ICsJaW50IHJldDsKPiA+ID4g PiArCj4gPiA+ID4gKwlpZiAoSVNfRVJSX09SX05VTEwoZXBjKSB8fCBmdW5jX25vID49IGVwYy0+ bWF4X2Z1bmN0aW9ucykKPiA+ID4gPiArCQlyZXR1cm4gLUVJTlZBTDsKPiA+ID4gPiArCj4gPiA+ ID4gKwlpZiAodmZ1bmNfbm8gPiAwICYmICghZXBjLT5tYXhfdmZzIHx8IHZmdW5jX25vID4gZXBj LT5tYXhfdmZzW2Z1bmNfbm9dKSkKPiA+ID4gPiArCQlyZXR1cm4gLUVJTlZBTDsKPiA+ID4gPiAr Cj4gPiA+ID4gKwlpZiAoIWVwYy0+b3BzLT5hbGxvY19kb29yYmVsbCkKPiA+ID4gPiArCQlyZXR1 cm4gMDsKPiA+ID4gCj4gPiA+IFlvdSBtZW50aW9uZWQgMCBpcyBhIHN1Y2Nlc3MuIFNvIGlmIHRo ZXJlIGlzIG5vIGNhbGxiYWNrLCB5b3Ugd2FudCB0byByZXR1cm4KPiA+ID4gc3VjY2Vzcz8KPiA+ ID4gCj4gPiA+ID4gKwo+ID4gPiA+ICsJbXV0ZXhfbG9jaygmZXBjLT5sb2NrKTsKPiA+ID4gPiAr CXJldCA9IGVwYy0+b3BzLT5hbGxvY19kb29yYmVsbChlcGMsIGZ1bmNfbm8sIHZmdW5jX25vLCBu dW1fbXNncyk7Cj4gPiA+IAo+ID4gPiBXaHkgY2FuJ3QgeW91IGp1c3QgY2FsbCB0aGUgZ2VuZXJp YyBmdW5jdGlvbiBoZXJlIGFuZCBpbiBvdGhlciBwbGFjZXMgaW5zdGVhZCBvZgo+ID4gPiBpbXBs ZW1lbnRpbmcgY2FsbGJhY2tzPyBJIGRvIG5vdCBzZWUgYSBuZWNlc3NpdHkgZm9yIEVQQyBzcGVj aWZpYyBjYWxsYmFja3MuIElmCj4gPiA+IHRoZXJlIGlzIG9uZSwgcGxlYXNlIHNwZWNpZnkuCj4g PiAKPiA+IDEuIFJlZmVyIHYxIHlvdXIgY29tbWVudHMuCj4gPiBodHRwczovL2xvcmUua2VybmVs Lm9yZy9pbXgvMjAyMzA5MDYxNDUyMjcuR0M1OTMwQHRoaW5rcGFkLwo+IAo+IEkgZG8gbm90IGZp bmQgd2hlcmUgSSBzdWdnZXN0ZWQgdGhlIGNhbGxiYWNrIGFwcHJvYWNoLgoKCT4gPiA+IElmIHRo YXQsIEVhY2ggRVBGIGRyaXZlciBuZWVkIGRvIGR1cGxpY2F0ZSB3b3JrLiAKCT4gPiA+IAoJPiA+ IAoJPiA+IFllcywgYW5kIHRoYXQncyBob3cgaXQgc2hvdWxkIGJlLiBFUEYgY29yZSBoYXMgbm8g am9iIGluIHN1cHBseWluZyB0aGUgb2Zfbm9kZS4KCT4gPiBJdCBpcyB0aGUgcmVzcG9uc2liaWxp dHkgb2YgdGhlIEVQRiBkcml2ZXJzIGFzIHRoZXkgZGVwZW5kIG9uIE9GIGZvciBwbGF0Zm9ybQoJ PiA+IHN1cHBvcnQuCgk+IAoJPiBFUEYgZHJpdmVyIHN0aWxsIG5vdCBkZXBlbmQgb24gT0YuIHN1 Y2ggcGNpLWVwZi10ZXN0LCB3aGljaCB3YXMgcHJvYmVkIGJ5Cgk+IGNvbmZpZ2ZzLgoJPiAKCglI bW0sIHllYWguIFRoZW4gaXQgc2hvdWxkIGJlIHBhcnQgb2YgdGhlIEVQQyBkcml2ZXIuCgoJU29y cnkgZm9yIHRoZSBjb25mdXNpb24uCgpIZXJlLCBhbGwgIkVQRiIgc2hvdWxkIGJlICJFUEMiLiBU aGUga2V5IHByb2JsZW0gaXMgb2Zfbm9kZS4gRVBDIGNvcmUgaGF2ZQpub3Qgb2Zfbm9kZSwgRVBD IGNvcmUncyBwYXJlbnQgZHJpdmVyIChsaWtlIGR3Yy1lcCBkcml2ZXIpIGhhdmUgb2Zfbm9kZS4g CgpwY2lfZXBjX2dlbmVyaWNfYWxsb2NfZG9vcmJlbGwoZGV2KSwgZGV2IGlzIHByb2JlZCBieSBw bGF0Zm9ybSBkcml2ZXIsIHN1Y2gKYXMgZHdjLWVwLCB3aGljaCBoYXZlIG9mX25vZGUsICBFUEMg Y29yZSB3aWxsIGNyZWF0ZSBjaGlsZCBkZXZpY2UuCgpkd2MtZXAgZGV2aWNlCiB8LSBlcGMgY29y ZSBkZXZpY2UKCndlIGNhbiBkaXJlY3QgY2FsbCBwY2lfZXBjX2dlbmVyaWNfYWxsb2NfZG9vcmJl bGwoZXBjLT5wYXJlbnQpIGhlcmUuCgpJIG1heSBtaXNzIHVuZGVyc3RhbmQgd2hhdCB5b3VyIG1l YW5zLiBJIHRoaW5rIHlvdSB3YW50IHRvIGR3Yy1lcAood2l0aCBvZl9ub2RlKSBoYW5kbGUgdGhl c2UgYWxsb2MgZnVuY3Rpb25zLiAKCj4gCj4gPiAyLiBNYXliZSBzb21lIGVwIGNvbnRyb2xsZXIg aGF2ZSBidWlsdC1pbiBkb29yYmVsbCBzdXBwb3J0LiBXcml0ZSB0byBzb21lCj4gPiBhZGRyZXNz IHRvIHRyaWdnZXIgZG9vcmJlbGwgaXJxLgo+ID4gCj4gCj4gV2Ugd2lsbCBoYW5kbGUgaXQgd2hl bmV2ZXIgc3VjaCBFUCBjb250cm9sbGVycyBhcnJpdmUuIFVudGlsIHRoZW4sIGxldCdzIGtlZXAg aXQKPiBzaW1wbGUuCj4gCj4gLSBNYW5pCj4gCj4gPiBGcmFuawo+ID4gCj4gPiA+IAo+ID4gPiA+ ICsJbXV0ZXhfdW5sb2NrKCZlcGMtPmxvY2spOwo+ID4gPiA+ICsKPiA+ID4gPiArCXJldHVybiBy ZXQ7Cj4gPiA+ID4gK30KPiA+ID4gPiArRVhQT1JUX1NZTUJPTF9HUEwocGNpX2VwY19hbGxvY19k b29yYmVsbCk7Cj4gPiA+ID4gKwo+ID4gPiA+ICsvKioKPiA+ID4gPiArICogcGNpX2VwY19mcmVl X2Rvb3JiZWxsKCkgLSBmcmVlIHJlc291cmNlIGFsbG9jYXRlZCBieSBwY2lfZXBjX2FsbG9jX2Rv b3JiZWxsKCkKPiA+ID4gPiArICoKPiA+ID4gPiArICogQGVwYzogdGhlIEVQQyBkZXZpY2UgdGhh dCBuZWVkIGRvb3JiZWxsIGFkZHJlc3MgYW5kIGRhdGEgZnJvbSBSQy4KPiA+ID4gCj4gPiA+IFNh bWUgYXMgYWJvdmUuCj4gPiA+IAo+ID4gPiA+ICsgKiBAZnVuY19ubzogdGhlIHBoeXNpY2FsIGVu ZHBvaW50IGZ1bmN0aW9uIG51bWJlciBpbiB0aGUgRVBDIGRldmljZS4KPiA+ID4gPiArICogQHZm dW5jX25vOiB0aGUgdmlydHVhbCBlbmRwb2ludCBmdW5jdGlvbiBudW1iZXIgaW4gdGhlIHBoeXNp Y2FsIGZ1bmN0aW9uLgo+ID4gPiA+ICsgKgo+ID4gPiA+ICsgKiBSZXR1cm46IDAgc3VjY2Vzcywg b3RoZXIgaXMgZmFpbHVyZQo+ID4gPiA+ICsgKi8KPiA+ID4gPiArdm9pZCBwY2lfZXBjX2ZyZWVf ZG9vcmJlbGwoc3RydWN0IHBjaV9lcGMgKmVwYywgdTggZnVuY19ubywgdTggdmZ1bmNfbm8pCj4g PiA+ID4gK3sKPiA+ID4gPiArCWlmIChJU19FUlJfT1JfTlVMTChlcGMpIHx8IGZ1bmNfbm8gPj0g ZXBjLT5tYXhfZnVuY3Rpb25zKQo+ID4gPiA+ICsJCXJldHVybjsKPiA+ID4gPiArCj4gPiA+ID4g KwlpZiAodmZ1bmNfbm8gPiAwICYmICghZXBjLT5tYXhfdmZzIHx8IHZmdW5jX25vID4gZXBjLT5t YXhfdmZzW2Z1bmNfbm9dKSkKPiA+ID4gPiArCQlyZXR1cm47Cj4gPiA+ID4gKwo+ID4gPiA+ICsJ aWYgKCFlcGMtPm9wcy0+ZnJlZV9kb29yYmVsbCkKPiA+ID4gPiArCQlyZXR1cm47Cj4gPiA+ID4g Kwo+ID4gPiA+ICsJbXV0ZXhfbG9jaygmZXBjLT5sb2NrKTsKPiA+ID4gPiArCWVwYy0+b3BzLT5m cmVlX2Rvb3JiZWxsKGVwYywgZnVuY19ubywgdmZ1bmNfbm8pOwo+ID4gPiAKPiA+ID4gU2FtZSBh cyBzdWdnZXN0ZWQgYWJvdmUuCj4gPiA+IAo+ID4gPiA+ICsJbXV0ZXhfdW5sb2NrKCZlcGMtPmxv Y2spOwo+ID4gPiA+ICt9Cj4gPiA+ID4gK0VYUE9SVF9TWU1CT0xfR1BMKHBjaV9lcGNfZnJlZV9k b29yYmVsbCk7Cj4gPiA+ID4gKwo+ID4gPiA+ICtzdGF0aWMgaXJxcmV0dXJuX3QgcGNpX2VwZl9n ZW5lcmljX2Rvb3JiZWxsX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGF0YSkKPiA+ID4gPiArewo+ ID4gPiA+ICsJc3RydWN0IHBjaV9lcGYgKmVwZiA9IGRhdGE7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJ aWYgKGVwZi0+ZXZlbnRfb3BzICYmIGVwZi0+ZXZlbnRfb3BzLT5kb29yYmVsbCkKPiA+ID4gPiAr CQllcGYtPmV2ZW50X29wcy0+ZG9vcmJlbGwoZXBmLCBpcnEgLSBlcGYtPnZpcnFfYmFzZSk7Cj4g PiA+IAo+ID4gPiBTYW1lIGFzIHN1Z2dlc3RlZCBhYm92ZS4KPiA+ID4gCj4gPiA+ID4gKwo+ID4g PiA+ICsJcmV0dXJuIElSUV9IQU5ETEVEOwo+ID4gPiA+ICt9Cj4gPiA+ID4gKwo+ID4gPiA+ICtz dGF0aWMgdm9pZCBwY2lfZXBjX2dlbmVyaWNfd3JpdGVfbXNpX21zZyhzdHJ1Y3QgbXNpX2Rlc2Mg KmRlc2MsIHN0cnVjdCBtc2lfbXNnICptc2cpCj4gPiA+ID4gK3sKPiA+ID4gPiArCXN0cnVjdCBw Y2lfZXBjICplcGMgPSBOVUxMOwo+ID4gPiA+ICsJc3RydWN0IGNsYXNzX2Rldl9pdGVyIGl0ZXI7 Cj4gPiA+ID4gKwlzdHJ1Y3QgcGNpX2VwZiAqZXBmOwo+ID4gPiA+ICsJc3RydWN0IGRldmljZSAq ZGV2Owo+ID4gPiA+ICsKPiA+ID4gPiArCWNsYXNzX2Rldl9pdGVyX2luaXQoJml0ZXIsIHBjaV9l cGNfY2xhc3MsIE5VTEwsIE5VTEwpOwo+ID4gPiA+ICsJd2hpbGUgKChkZXYgPSBjbGFzc19kZXZf aXRlcl9uZXh0KCZpdGVyKSkpIHsKPiA+ID4gPiArCQlpZiAoZGV2LT5wYXJlbnQgIT0gZGVzYy0+ ZGV2KQo+ID4gPiA+ICsJCQljb250aW51ZTsKPiA+ID4gPiArCj4gPiA+ID4gKwkJZXBjID0gdG9f cGNpX2VwYyhkZXYpOwo+ID4gPiA+ICsKPiA+ID4gPiArCQljbGFzc19kZXZfaXRlcl9leGl0KCZp dGVyKTsKPiA+ID4gPiArCQlicmVhazsKPiA+ID4gPiArCX0KPiA+ID4gPiArCj4gPiA+ID4gKwlp ZiAoIWVwYykKPiA+ID4gPiArCQlyZXR1cm47Cj4gPiA+ID4gKwo+ID4gPiA+ICsJLyogT25seSBz dXBwb3J0IG9uZSBFUEYgZm9yIGRvb3JiZWxsICovCj4gPiA+ID4gKwllcGYgPSBsaXN0X2ZpcnN0 X2VudHJ5X29yX251bGwoJmVwYy0+cGNpX2VwZiwgc3RydWN0IHBjaV9lcGYsIGxpc3QpOwo+ID4g PiA+ICsKPiA+ID4gCj4gPiA+IE5vIG5lZWQgb2YgdGhpcyBuZXdsaW5lCj4gPiA+IAo+ID4gPiA+ ICsJaWYgKCFlcGYpCj4gPiA+ID4gKwkJcmV0dXJuOwo+ID4gPiA+ICsKPiA+ID4gPiArCWlmIChl cGYtPm1zZyAmJiBkZXNjLT5tc2lfaW5kZXggPCBlcGYtPm51bV9tc2dzKQo+ID4gPiA+ICsJCWVw Zi0+bXNnW2Rlc2MtPm1zaV9pbmRleF0gPSAqbXNnOwo+ID4gPiA+ICt9Cj4gPiA+ID4gKwo+ID4g PiA+ICsKPiA+ID4gCj4gPiA+IFJlbW92ZSBleHRyYSBuZXdsaW5lCj4gPiA+IAo+ID4gPiA+ICsv KioKPiA+ID4gPiArICogcGNpX2VwY19nZW5lcmljX2FsbG9jX2Rvb3JiZWxsKCkgLSBDb21tb24g aGVscCBmdW5jdGlvbi4gQWxsb2NhdGUgYWRkcmVzcyBzcGFjZSBmcm9tIE1TSQo+ID4gPiA+ICsg KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIKPiA+ID4gPiAr ICoKPiA+ID4gPiArICogQGVwYzogdGhlIEVQQyBkZXZpY2UgdGhhdCBuZWVkIGRvb3JiZWxsIGFk ZHJlc3MgYW5kIGRhdGEgZnJvbSBSQy4KPiA+ID4gPiArICogQGZ1bmNfbm86IHRoZSBwaHlzaWNh bCBlbmRwb2ludCBmdW5jdGlvbiBudW1iZXIgaW4gdGhlIEVQQyBkZXZpY2UuCj4gPiA+ID4gKyAq IEB2ZnVuY19ubzogdGhlIHZpcnR1YWwgZW5kcG9pbnQgZnVuY3Rpb24gbnVtYmVyIGluIHRoZSBw aHlzaWNhbCBmdW5jdGlvbi4KPiA+ID4gPiArICogQG51bV9tc2dzOiB0aGUgdG90YWwgbnVtYmVy IG9mIGRvb3JiZWxsIG1lc3NhZ2VzCj4gPiA+ID4gKyAqCj4gPiA+IAo+ID4gPiBTYW1lIGNvbW1l bnQgYXMgZm9yIHBjaV9lcGNfYWxsb2NfZG9vcmJlbGwoKQo+ID4gPiAKPiA+ID4gPiArICogUmVt YXJrOiB1c2UgdGhpcyBmdW5jdGlvbiBvbmx5IGlmIEVQQyBkcml2ZXIganVzdCByZWdpc3RlciBv bmUgRVBDIGRldmljZS4KPiA+ID4gPiArICoKPiA+ID4gPiArICogUmV0dXJuOiAwIHN1Y2Nlc3Ms IG90aGVyIGlzIGZhaWx1cmUKPiA+ID4gPiArICovCj4gPiA+ID4gK2ludCBwY2lfZXBjX2dlbmVy aWNfYWxsb2NfZG9vcmJlbGwoc3RydWN0IHBjaV9lcGMgKmVwYywgdTggZnVuY19ubywgdTggdmZ1 bmNfbm8sIGludCBudW1fbXNncykKPiA+ID4gPiArewo+ID4gPiA+ICsJc3RydWN0IHBjaV9lcGYg KmVwZjsKPiA+ID4gPiArCXN0cnVjdCBkZXZpY2UgKmRldjsKPiA+ID4gPiArCWludCB2aXJxLCBs YXN0Owo+ID4gPiA+ICsJaW50IHJldDsKPiA+ID4gPiArCWludCBpOwo+ID4gPiA+ICsKPiA+ID4g PiArCWlmIChJU19FUlJfT1JfTlVMTChlcGMpKQo+ID4gPiA+ICsJCXJldHVybiAtRUlOVkFMOwo+ ID4gPiA+ICsKPiA+ID4gPiArCS8qIEN1cnJlbnRseSBvbmx5IHN1cHBvcnQgb25lIGZ1bmMgYW5k IG9uZSB2ZnVuYyBmb3IgZG9vcmJlbGwgKi8KPiA+ID4gPiArCWlmIChmdW5jX25vIHx8IHZmdW5j X25vKQo+ID4gPiA+ICsJCXJldHVybiAtRUlOVkFMOwo+ID4gPiA+ICsKPiA+ID4gPiArCWVwZiA9 IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbCgmZXBjLT5wY2lfZXBmLCBzdHJ1Y3QgcGNpX2VwZiwg bGlzdCk7Cj4gPiA+ID4gKwlpZiAoIWVwZikKPiA+ID4gPiArCQlyZXR1cm4gLUVJTlZBTDsKPiA+ ID4gPiArCj4gPiA+ID4gKwlkZXYgPSBlcGMtPmRldi5wYXJlbnQ7Cj4gPiA+ID4gKwlyZXQgPSBw bGF0Zm9ybV9tc2lfZG9tYWluX2FsbG9jX2lycXMoZGV2LCBudW1fbXNncywgcGNpX2VwY19nZW5l cmljX3dyaXRlX21zaV9tc2cpOwo+ID4gPiA+ICsJaWYgKHJldCkgewo+ID4gPiA+ICsJCWRldl9l cnIoZGV2LCAiRmFpbGVkIHRvIGFsbG9jYXRlIE1TSVxuIik7Cj4gPiA+ID4gKwkJcmV0dXJuIC1F Tk9NRU07Cj4gPiA+ID4gKwl9Cj4gPiA+ID4gKwo+ID4gPiA+ICsJbGFzdCA9IC0xOwo+ID4gPiA+ ICsJZm9yIChpID0gMDsgaSA8IG51bV9tc2dzOyBpKyspIHsKPiA+ID4gCj4gPiA+IFlvdSBzaG91 bGQgaXRlcmF0ZSBvdmVyIG1zaV9kZXNjIGFzIGJlbG93Ogo+ID4gPiAKPiA+ID4gICAgICAgICBt c2lfbG9ja19kZXNjcyhkZXYpOwo+ID4gPiAgICAgICAgIG1zaV9mb3JfZWFjaF9kZXNjKGRlc2Ms IGRldiwgTVNJX0RFU0NfQUxMKSB7Cj4gPiA+IAkJLi4uCj4gPiA+IAl9Cj4gPiA+IAltc2lfdW5s b2NrX2Rlc2NzKGRldik7Cj4gPiA+IAo+ID4gPiA+ICsJCXZpcnEgPSBtc2lfZ2V0X3ZpcnEoZGV2 LCBpKTsKPiA+ID4gPiArCQlpZiAoaSA9PSAwKQo+ID4gPiA+ICsJCQllcGYtPnZpcnFfYmFzZSA9 IHZpcnE7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJCXJldCA9IHJlcXVlc3RfaXJxKHZpcnEsIHBjaV9l cGZfZ2VuZXJpY19kb29yYmVsbF9oYW5kbGVyLCAwLAo+ID4gPiAKPiA+ID4gCXJlcXVlc3RfaXJx KGRlc2MtPmlycSwgLi4uKQo+ID4gPiAKPiA+ID4gPiArCQkJCSAga2FzcHJpbnRmKEdGUF9LRVJO RUwsICJwY2ktZXBjLWRvb3JiZWxsJWQiLCBpKSwgZXBmKTsKPiA+ID4gPiArCj4gPiA+ID4gKwkJ aWYgKHJldCkgewo+ID4gPiA+ICsJCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byByZXF1ZXN0IGRv b3JiZWxsXG4iKTsKPiA+ID4gPiArCQkJZ290byBlcnJfZnJlZV9pcnE7Cj4gPiA+ID4gKwkJfQo+ ID4gPiA+ICsJCWxhc3QgPSBpOwo+ID4gPiA+ICsJfQo+ID4gPiA+ICsKPiA+ID4gPiArCXJldHVy biAwOwo+ID4gPiA+ICsKPiA+ID4gPiArZXJyX2ZyZWVfaXJxOgo+ID4gPiA+ICsJZm9yIChpID0g MDsgaSA8IGxhc3Q7IGkrKykKPiA+ID4gPiArCQlrZnJlZShmcmVlX2lycShlcGYtPnZpcnFfYmFz ZSArIGksIGVwZikpOwo+ID4gPiA+ICsJcGxhdGZvcm1fbXNpX2RvbWFpbl9mcmVlX2lycXMoZGV2 KTsKPiA+ID4gPiArCj4gPiA+ID4gKwlyZXR1cm4gLUVJTlZBTDsKPiA+ID4gCj4gPiA+IAlyZXR1 cm4gcmV0Owo+ID4gPiAKPiA+ID4gPiArfQo+ID4gPiA+ICtFWFBPUlRfU1lNQk9MX0dQTChwY2lf ZXBjX2dlbmVyaWNfYWxsb2NfZG9vcmJlbGwpOwo+ID4gPiA+ICsKPiA+ID4gCj4gPiA+IFsuLi5d Cj4gPiA+IAo+ID4gPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BjaS1lcGYuaCBiL2lu Y2x1ZGUvbGludXgvcGNpLWVwZi5oCj4gPiA+ID4gaW5kZXggM2Y0NGI2YWVjNDc3MC4uNDg1YzE0 NmE1ZWZlMiAxMDA2NDQKPiA+ID4gPiAtLS0gYS9pbmNsdWRlL2xpbnV4L3BjaS1lcGYuaAo+ID4g PiA+ICsrKyBiL2luY2x1ZGUvbGludXgvcGNpLWVwZi5oCj4gPiA+ID4gQEAgLTc5LDYgKzc5LDcg QEAgc3RydWN0IHBjaV9lcGNfZXZlbnRfb3BzIHsKPiA+ID4gPiAgCWludCAoKmxpbmtfdXApKHN0 cnVjdCBwY2lfZXBmICplcGYpOwo+ID4gPiA+ICAJaW50ICgqbGlua19kb3duKShzdHJ1Y3QgcGNp X2VwZiAqZXBmKTsKPiA+ID4gPiAgCWludCAoKmJtZSkoc3RydWN0IHBjaV9lcGYgKmVwZik7Cj4g PiA+ID4gKwlpbnQgKCpkb29yYmVsbCkoc3RydWN0IHBjaV9lcGYgKmVwZiwgaW50IGluZGV4KTsK PiA+ID4gCj4gPiA+IGtkb2MgbWlzc2luZy4KPiA+ID4gCj4gPiA+ID4gIH07Cj4gPiA+ID4gIAo+ ID4gPiA+ICAvKioKPiA+ID4gPiBAQCAtMTgwLDYgKzE4MSw5IEBAIHN0cnVjdCBwY2lfZXBmIHsK PiA+ID4gPiAgCXVuc2lnbmVkIGxvbmcJCXZmdW5jdGlvbl9udW1fbWFwOwo+ID4gPiA+ICAJc3Ry dWN0IGxpc3RfaGVhZAlwY2lfdmVwZjsKPiA+ID4gPiAgCWNvbnN0IHN0cnVjdCBwY2lfZXBjX2V2 ZW50X29wcyAqZXZlbnRfb3BzOwo+ID4gPiA+ICsJc3RydWN0IG1zaV9tc2cgKm1zZzsKPiA+ID4g PiArCXUxNiBudW1fbXNnczsKPiA+ID4gCj4gPiA+IG51bV9kYgo+ID4gPiAKPiA+ID4gWW91IGFs c28gbmVlZCB0byBhZGQga2RvYyBmb3IgZWFjaCBuZXcgbWVtYmVyLgo+ID4gPiAKPiA+ID4gLSBN YW5pCj4gPiA+IAo+ID4gPiAtLSAKPiA+ID4g4K6u4K6j4K6/4K614K6j4K+N4K6j4K6p4K+NIOCu muCupOCuvuCumuCuv+CuteCuruCvjQo+IAo+IC0tIAo+IOCuruCuo+Cuv+CuteCuo+CvjeCuo+Cu qeCvjSDgrprgrqTgrr7grprgrr/grrXgrq7gr40KCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4 LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK