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 8EC74CE7AA3 for ; Mon, 25 Sep 2023 16:34:24 +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:From: References:Cc:To:Subject:Date:Message-ID:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=V2E68yi9QTzq86CCFWsAE21GR6nrYRtEyX//Nrf5lao=; b=PCTNkG0v0CuNYR5K9L5d1PE9U1 q3dsowd3AJ04CCGV9JXb73wnBHpfZ+m/mfzyMwrk5K9aqgFo6zg9okjzOxSKV20sXLyqSeqwaHHYu FegWKKmti7Rm9YPEGEKYjjDFaGuWiYAVTBZxXh48i4foHbYD5XN1FbpN2WM4XaE9nbe3Ey31ongvZ s+jdw2QpJYjJKOMSX9YceGk5f+ldBwYe4zmg5CdByudTH7HjGtrbrjU4C+/ml4ol5uEpJWa+WJ5Up KQ3HPhhw+wbmOpTrA9Bv7oXzmGS3sHAoK53tbsH/sWd30OACsjNeIUNvA6K7Z4TJ2LAddbP6MRmUj PrmM91IA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qkoWw-00EffZ-1s; Mon, 25 Sep 2023 16:33:54 +0000 Received: from mail-co1nam11on2061f.outbound.protection.outlook.com ([2a01:111:f400:7eab::61f] helo=NAM11-CO1-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qkoWr-00EfdV-14 for linux-arm-kernel@lists.infradead.org; Mon, 25 Sep 2023 16:33:53 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=I73H9Po5CppQoi1yu9oTF6llOG5znTQEsUC0vnbiID59H7OTiwUd8GelUkXuD5FGWD98qjxV01yDipOjp5X5ZCCN1ZXYQ5ITr1i9vkDEm203y9aeD9a0O2zKlg8QyYtJG7IAvEGhDmQk+RtEcaClhNWdFXuiDFUrGRd73LNbTFnbqHlklHPrMbB4WpGiy5lj5tHPjJ7HAPN3a7S4uBeovrGIct8OssXlrotwmKg0l1M3cNyXUrlRrzvaooTAyqxtokZyst612T+KYNXbBNkp8+0IeW8mWsEFMJHDDxn1caDXHhGF/aANaT9bCLl/qse2BLWHeTAqyeVhyVDjZcWrKg== 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=DBqjg3kmxqKoiz7TR5E/nF50aRFfc+Y9hBjLr0TFGWc=; b=EKY0pbBItXlTr/V2ySN3Rfiy6vcMxx1+TTwG395iaHQy/2sIZ5WiIcgczff0Sd+RBM4tm5euaKYeeicY7AaT/YTQoEE1XPepjIzyllTnUCl4gFSC6uqMTyklymSIa+NBtovsPHlnE375Ep2XIp2sU2Pa8RpLYZjHwupAlj1bi7Y9BvQCb6HIUPov8GM6T3vy3tQOqN3lKcY0iJeyj7IFemuCwdNk8+C4U03vW2P54NBvE5AOKc0AD1mOJ1zfxCUZ0Qt1u3SrDBm2qdA4Vb1HrEuXnBYYuNxcpDfYxqLp1Fc1X93GczIN4zm4tcOI4FlKKaveXhr7aKv1G0eh8I5pSA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DBqjg3kmxqKoiz7TR5E/nF50aRFfc+Y9hBjLr0TFGWc=; b=cNAzI1a2OF26LH0Dla6FQPu7guW5zX+dFmbRDxJ2pYjwuudNcYLepqbKrcNfu+W3R094A2yYc9n3R7X2XUpcr7Eveu4CVsFk3L1cz30daDDq6E03Gw1V6Bmfts2KWvXe0Hjt6e0sUhg6aCLztB7uqtI1HG5cdNpqou+8qHRPy0Q= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com; Received: from BY5PR12MB3683.namprd12.prod.outlook.com (2603:10b6:a03:1a5::16) by SA3PR12MB8046.namprd12.prod.outlook.com (2603:10b6:806:304::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.21; Mon, 25 Sep 2023 16:33:44 +0000 Received: from BY5PR12MB3683.namprd12.prod.outlook.com ([fe80::8304:46bd:5017:3dcb]) by BY5PR12MB3683.namprd12.prod.outlook.com ([fe80::8304:46bd:5017:3dcb%7]) with mapi id 15.20.6813.027; Mon, 25 Sep 2023 16:33:43 +0000 Message-ID: Date: Mon, 25 Sep 2023 11:33:40 -0500 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v4 3/3] remoteproc: zynqmp: get TCM from device-tree Content-Language: en-US To: Mathieu Poirier Cc: linux-remoteproc@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Bjorn Andersson , Rob Herring , Krzysztof Kozlowski , Michal Simek , Conor Dooley , Radhey Shyam Pandey , Ben Levinsky References: <20230829181900.2561194-1-tanmay.shah@amd.com> <20230829181900.2561194-4-tanmay.shah@amd.com> From: Tanmay Shah In-Reply-To: X-ClientProxiedBy: BYAPR04CA0027.namprd04.prod.outlook.com (2603:10b6:a03:40::40) To BY5PR12MB3683.namprd12.prod.outlook.com (2603:10b6:a03:1a5::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY5PR12MB3683:EE_|SA3PR12MB8046:EE_ X-MS-Office365-Filtering-Correlation-Id: fe7c8fd1-ce43-4aa3-7779-08dbbde52ecb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Qr8joCBZPaOCKAmiUVKrgtd2ky+HTO6Qjntxrjz1u9DtoJJTrjnDzXJWjbb7vsauvbHyBD1FNQ31n11fc61aOz2R8upMf3dUjb/PRPK9cEtna9GZDk6C5G+AbCZMnt3eCtuNIwwnBtTVP7Oup+1Bnbs2BFF42QvX6qpzZDt6KqnpttD49rJINnmbjoFZGHke3vQ+pDOGKex2qcCdRreNfj7ZJU2nTllClcywWKfKSjMEhkLJ3K3DQ3PgoSlqYC5xNLUu+gD7ZB2W0zT4DnWX9uYUF+lC/XRWZQo7r2PL6qZsX08bfh2ZzJuTTeQVBMLAzF5hre9PaU8QhvG+VZ0sRBgjqwGUlCMpnJHwEg2dlaeZ16W1F+8blCt95f52kFgjvS7zYjjI9E+203yXsMpiD9afMYjS0F8+w5E6/VmeBTnT4wpVM6b02S/5h/9jbKowATGLOUrkkGAetBd+oLEVaPhhcRHJQzpJPrgFe2ogPxFdijV1OGFahAhVDa+GPs1nmCsto62KCIrUghA1zTq5RCai2Lvq6UlOXFDdCWkrSZSRQces09cQOI3IBtsoz8SjjiBdQXJ+9kV4gnUENBbZzSmLEtT7LQkNF/CbukEYSB97v3xfJ5xGqi6GBIYneBoZ1wGRqUd8yle5DBsnOE6dng== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR12MB3683.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(39860400002)(366004)(136003)(376002)(346002)(396003)(230922051799003)(186009)(1800799009)(451199024)(86362001)(2906002)(30864003)(26005)(6512007)(53546011)(66899024)(6506007)(36756003)(6486002)(478600001)(83380400001)(2616005)(31696002)(38100700002)(41300700001)(5660300002)(44832011)(4326008)(316002)(31686004)(66476007)(66556008)(54906003)(8676002)(66946007)(8936002)(6916009)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?K0tSU3kwMlpjSXdlelRoMHUvdTJZMDBIekY2bDhDUStNbml0Nno3VmhyQUNw?= =?utf-8?B?OHBWV2lYVkc2aFlEOTVkUGowa1lkVmxqak1XRHhWdkw5c0p2d2k5MTQrdjBH?= =?utf-8?B?VWJmYk1vSW5RT05GQmFkaEx2ZkluWk9wNXlia0dDMWlOQnRNK0M4K2ErdFBP?= =?utf-8?B?dUIxOUFvUjFyeTB5MlZ5RGh3dmpKbFFDSnhUcHUrZC9mREdkMVdZWGdMR0ZE?= =?utf-8?B?RkNtaVUydnJ6YkxMS3E2ZEVJWGlRS29WY3BFcmJzazk2MHVSOTN0RzNLRFAz?= =?utf-8?B?YnVaUWFYelF3NGUrOG1xUUs0L1NzNk9LdGtTQlBjQkVZUHZweTR4SkNxb0M4?= =?utf-8?B?cHVNcElNM0thQWxONlJuV3U0SFQzTXFMZEV1N0EzMTREUzc4L0hrayswU2po?= =?utf-8?B?TlpyMFJELzJWZ2RhenQ1Sk05bUhKcHplMFQ4Z01uWi9oU3o0blM1QW9GcFAv?= =?utf-8?B?ZTlnNlA4c2ovc2RLSndXSDJRQmV4UGViNklISFJzYnRYYWMzcHFjeW8xYzQ3?= =?utf-8?B?VE1SZTVuOVFSQ2J1QkJoRlk2alhHS3AvMFJibFc5QjQ1OWpLd1RBTVhQWXhn?= =?utf-8?B?OGNwUm5hWTJBd1JjeWs0eFFiYlR0aFZLRGVvUDVERGdFalNQS1V3UzgveENo?= =?utf-8?B?TENGd2pYZkptM2NBdGJyeWdFaktXNm9OalY5WFFOZkRRMC82V3JJYjFnRWZy?= =?utf-8?B?VGVEc1J4a2ZEWkZZY3hHZjlvYmhFUWRGQ3dMR01FM2JYMC9aWktNSm91R2RP?= =?utf-8?B?bExINTJ2RS83V0wyZzZVRTRvMlF2enBFZW9GM0pPRmF2TSs5WnZGNXpzV25F?= =?utf-8?B?QWU5VEsyV2hNYUlHZ3QzV1VYZnh5ZGdHUElHQXlwNnFLRUFIcXd1OWdDNGl3?= =?utf-8?B?b1o5THpoenVUREVLelFtZWcxRm1LNVN1TUZISUZLenhLNkVYczhvNkhTQkN6?= =?utf-8?B?a092WTZlR1ZDYit1bHF0enU1Y2dmaGx0NnUwOUsyaC9VTEhsTGtrR2luL055?= =?utf-8?B?dUhsbDJxSFlDZWNkd1M0QUh1a2IwWWRzaVJDMVB1bmlRZWRIbGx3c3NRbzNk?= =?utf-8?B?cVdnaVdleWdpaWRFcHVScWo4dEJvSVlOUnRhMmI1ckM2VGZidXRqdjc5Tkxx?= =?utf-8?B?c2taSXdScnRid1NTOS9JU2tuSGxSQUY2VzlrczBxeDhsK1hKS29XbWtNTmdn?= =?utf-8?B?WUd3YXB6M05lTW1RWFl2U3RGZGswQm11VFkxbUNYU0hmZjVDcTB6L2wrMGFx?= =?utf-8?B?UW9OSXFEQVZoRjFBdDl6MWozTm04YTBpcmMvK0t0aXVtNnAzOEdZTnNIYU9P?= =?utf-8?B?MFIzL1VKT1paYU1NcitXTGRyU0MyMGlYUzFiSUlnOWJ6YjN0RHlxRHBOaE5M?= =?utf-8?B?bUdMdkozdFlrZVJZVGFBZ05uS3huandGYzlVWmdKenNnQm1qUE5zaDYrSEdK?= =?utf-8?B?am13T21sTyt1TUlibmM1RFdZMkdKYThvTXdqWjBsQkkrcEdIWU1EZHdsdlpG?= =?utf-8?B?UTU5clNDVlh2ekhiS0dnVXA3dUcyZVRWb2RORnFncTVZN3B1YU9TamVtU1Z2?= =?utf-8?B?R0x0bnUrd3F1YXJTTmgrdmdVNFpTWXlCdVllcjBXcXd1Y2NHODBRY1liQ2lh?= =?utf-8?B?OHZBYTJKYXl3NEtSQ2dieHIzSFA2RkpDSnpKMVJLelV1RHBIV2h0VnIzQlpv?= =?utf-8?B?b253cXhLK1RyUUNlZk83VGZ2N1g2bnJLbjlEQWtQZ1VnZ1gxR3gvRVVxOGVq?= =?utf-8?B?TVdpVzVxcHp5TFBPUDRBU0duUXFsd0szZDJNMkVmMVhQTzMzRnorN01hK3d3?= =?utf-8?B?MWVwQ2NRR2xBMGM4RXdQeGVsdWZpamV2RE1ZZ1BPcEppT1Fhd0thZUdyNmd1?= =?utf-8?B?a0pUaVBHc29MQkZ0aDJseWM0MkFXVkNwczZnSmRDZnhRZDFXQkVFK3dvU0lX?= =?utf-8?B?Q1hPU3hwUlYxZndacDR2WC9nYlFYMmszOE1iL1NuZmd1ZGZXZEZyaVM2ajYx?= =?utf-8?B?SGxpemhLeThlSnJoL2NlRFFmQkI1RDg0RjVORGg5YUg4bW85NXovNHIwOGhD?= =?utf-8?B?dEFsNG5qWUg4dm1RaTRPZVpVRkhHNXVOZ0Y4VUdWaVI5U3E3RTZGYnNTZzh3?= =?utf-8?Q?A7AujnpeyPupsXKxoMVlElTOw?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: fe7c8fd1-ce43-4aa3-7779-08dbbde52ecb X-MS-Exchange-CrossTenant-AuthSource: BY5PR12MB3683.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Sep 2023 16:33:43.5977 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: /oj9YBn+BrPxkx/T4waFxt7EVPMQSDQeAjcniYwUAtLGjAet+UPnCvuUquKHslbP X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR12MB8046 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230925_093349_421378_441D3F0D X-CRM114-Status: GOOD ( 49.17 ) 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 Ck9uIDkvNy8yMyAxOjA4IFBNLCBNYXRoaWV1IFBvaXJpZXIgd3JvdGU6Cj4gT24gV2VkLCBTZXAg MDYsIDIwMjMgYXQgMDU6MDI6NDBQTSAtMDUwMCwgVGFubWF5IFNoYWggd3JvdGU6Cj4gPiBISSBN YXRoaWV1LAo+ID4gCj4gPiBUaGFua3MgZm9yIHJldmlld3MuIFBsZWFzZSBmaW5kIG15IGNvbW1l bnRzIGJlbG93Lgo+ID4KPgo+IEkgdG9vayBhbm90aGVyIGxvb2sgYWZ0ZXIgcmVhZGluZyB5b3Vy IGNvbW1lbnQgYW5kIGZvdW5kIG1vcmUgcHJvYmxlbXMuLi4KPgo+ID4gCj4gPiBPbiA5LzYvMjMg Mjo0NyBQTSwgTWF0aGlldSBQb2lyaWVyIHdyb3RlOgo+ID4gPiBIaSBUYW5tYXksCj4gPiA+Cj4g PiA+IE9uIFR1ZSwgQXVnIDI5LCAyMDIzIGF0IDExOjE5OjAwQU0gLTA3MDAsIFRhbm1heSBTaGFo IHdyb3RlOgo+ID4gPiA+IFVzZSBuZXcgZHQgYmluZGluZ3MgdG8gZ2V0IFRDTSBhZGRyZXNzIGFu ZCBzaXplCj4gPiA+ID4gaW5mb3JtYXRpb24uIEFsc28gbWFrZSBzdXJlIHRoYXQgZHJpdmVyIHN0 YXlzCj4gPiA+ID4gY29tcGF0aWJsZSB3aXRoIHByZXZpb3VzIGRldmljZS10cmVlIGJpbmRpbmdz Lgo+ID4gPiA+IFNvLCBpZiBUQ00gaW5mb3JtYXRpb24gaXNuJ3QgYXZhaWxhYmxlIGluIGRldmlj ZS10cmVlCj4gPiA+ID4gZm9yIHp5bnFtcCBwbGF0Zm9ybSwgaGFyZC1jb2RlZCBhZGRyZXNzIG9m IFRDTSB3aWxsCj4gPiA+ID4gYmUgdXNlZC4KPiA+ID4gPiAKPiA+ID4gPiBOZXcgcGxhdGZvcm1z IHRoYXQgYXJlIGNvbXBhdGlibGUgd2l0aCB0aGlzCj4gPiA+ID4gZHJpdmVyIG11c3QgYWRkIFRD TSBzdXBwb3J0IGluIGRldmljZS10cmVlIGFzIHBlciBuZXcKPiA+ID4gPiBiaW5kaW5ncy4KPiA+ ID4gPiAKPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBUYW5tYXkgU2hhaCA8dGFubWF5LnNoYWhAYW1k LmNvbT4KPiA+ID4gPiAtLS0KPiA+ID4gPiAgZHJpdmVycy9yZW1vdGVwcm9jL3hsbnhfcjVfcmVt b3RlcHJvYy5jIHwgMjc5ICsrKysrKysrKysrKysrKysrKystLS0tLQo+ID4gPiA+ICAxIGZpbGUg Y2hhbmdlZCwgMjIxIGluc2VydGlvbnMoKyksIDU4IGRlbGV0aW9ucygtKQo+ID4gPiA+IAo+ID4g PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3JlbW90ZXByb2MveGxueF9yNV9yZW1vdGVwcm9jLmMg Yi9kcml2ZXJzL3JlbW90ZXByb2MveGxueF9yNV9yZW1vdGVwcm9jLmMKPiA+ID4gPiBpbmRleCBm ZWNhNmRlNjhkYTIuLjRlYjYyZWI1NDVjMiAxMDA2NDQKPiA+ID4gPiAtLS0gYS9kcml2ZXJzL3Jl bW90ZXByb2MveGxueF9yNV9yZW1vdGVwcm9jLmMKPiA+ID4gPiArKysgYi9kcml2ZXJzL3JlbW90 ZXByb2MveGxueF9yNV9yZW1vdGVwcm9jLmMKPiA+ID4gPiBAQCAtMzksMTUgKzM5LDE5IEBAIGVu dW0genlucW1wX3I1X2NsdXN0ZXJfbW9kZSB7Cj4gPiA+ID4gICAqIHN0cnVjdCBtZW1fYmFua19k YXRhIC0gTWVtb3J5IEJhbmsgZGVzY3JpcHRpb24KPiA+ID4gPiAgICoKPiA+ID4gPiAgICogQGFk ZHI6IFN0YXJ0IGFkZHJlc3Mgb2YgbWVtb3J5IGJhbmsKPiA+ID4gPiArICogQGRhOiBkZXZpY2Ug YWRkcmVzcyBmb3IgdGhpcyB0Y20gYmFuawo+ID4gPiA+ICAgKiBAc2l6ZTogU2l6ZSBvZiBNZW1v cnkgYmFuawo+ID4gPiA+ICAgKiBAcG1fZG9tYWluX2lkOiBQb3dlci1kb21haW5zIGlkIG9mIG1l bW9yeSBiYW5rIGZvciBmaXJtd2FyZSB0byB0dXJuIG9uL29mZgo+ID4gPiA+ICsgKiBAcG1fZG9t YWluX2lkMjogc2Vjb25kIGNvcmUncyBjb3JyZXNwb25kaW5nIFRDTSdzIHBtX2RvbWFpbl9pZAo+ ID4gPiA+ICAgKiBAYmFua19uYW1lOiBuYW1lIG9mIHRoZSBiYW5rIGZvciByZW1vdGVwcm9jIGZy YW1ld29yawo+ID4gPiA+ICAgKi8KPiA+ID4gPiAgc3RydWN0IG1lbV9iYW5rX2RhdGEgewo+ID4g PiA+IC0JcGh5c19hZGRyX3QgYWRkcjsKPiA+ID4gPiAtCXNpemVfdCBzaXplOwo+ID4gPiA+ICsJ dTMyIGFkZHI7Cj4gPiA+ID4gKwl1MzIgZGE7Cj4gPiA+ID4gKwl1MzIgc2l6ZTsKPiA+ID4KPiA+ ID4gV2h5IGFyZSB0aGUgdHlwZXMgb2YgQGFkZHIgYW5kIEBzaXplIGNoYW5nZWQ/Cj4gPiAKPiA+ IFNvLCBSNSBjYW4gYWNjZXNzIDMyLWJpdCBhZGRyZXNzIHJhbmdlIG9ubHkuIEJlZm9yZSBJIGhh ZCBtaXNzZWQgdGhpcy4KPiA+IAo+ID4gSW4gRGV2Y2UtdHJlZSBiaW5kaW5ncyBJIGFtIGtlZXBp bmcgYWRkcmVzcy1jZWxscyBhbmQgc2l6ZS1jZWxscyBhcyAyLgo+ID4gCj4gPiBTbywgb3V0IG9m IDY0LWJpdHMgb25seSAzMi1iaXRzIHdpbGwgYmUgdXNlZCB0byBnZXQgYWRkcmVzcyBvZiBUQ00u IFNhbWUgZm9yIHNpemUuCj4gPiAKPiA+IFRoaXMgbW90aXZhdGVkIG1lIHRvIGNoYW5nZSB0aGUg dHlwZSBvZiBAYWRkciBhbmQgQHNpemUgZmllbGRzLiBJdCBkb2Vzbid0IGhhdmUgYW55IHNpZGUg ZWZmZWN0cy4KPgo+IEl0IGRvZXNuJ3QgaGF2ZSBhbiBlZmZlY3QgYnV0IGl0IGFsc28gZG9lc24n dCBuZWVkIHRvIGJlIGluIHRoaXMgcGF0Y2gsCj4gZXNwZWNpYWxseSBzaW5jZSBpdCBpcyBub3Qg ZG9jdW1lbnRlZC4gCj4KPgo+IFRoaXMgcGF0Y2ggbmVlZHMgdG8gYmUgYnJva2VuIGluIDMgcGFy dHM6Cj4KPiAxKSBPbmUgcGF0Y2ggdGhhdCBkZWFscyB3aXRoIHRoZSBhZGRpdGlvbiBvZiB0aGUg c3RhdGljIG1lbV9iYW5rX2RhdGEgZm9yCj4gbG9ja3N0ZXAgbW9kZS4KPgo+IDIpIE9uZSBwYXRj aCB0aGF0IGRlYWxzIHdpdGggdGhlIGFkZGl0aW9uIG9mIC0+cG1fZG9tYWluX2lkMiBhbmQgdGhl IHBvdGVudGlhbAo+IGJ1ZyBJIG1heSBoYXZlIGhpZ2hsaWdodGVkIGJlbG93LgoKSGkgTWF0aGll dSwKCkp1c3QgaGVhZHMgdXAuIFRoZXJlIGlzIGNoYW5nZSBpbiB0aGlzIHBsYW4uIEkgZm91bmQg b3V0IHRoYXQgcG0gZG9tYWluIGZyYW1ld29yayBjYW4gYmUgdXNlZCB0byBwb3dlci1vbi9vZmYg ZGV2aWNlcwoKd2l0aCBwbSBkb21haW5zIGluIGRldmljZS10cmVlLiBTbywgSSBhbSBkZXZlbG9w aW5nIHBhdGNoZXMgYWNjb3JkaW5nbHkuCgpJIHdpbGwgc3RpbGwgc3BsaXQgcGF0Y2hlcyBidXQg aXQgd29uJ3QgYmUgc2FtZSBhcyB3aGF0IHdhcyBwb3N0ZWQgaGVyZS4gVGhlcmUgd2lsbCBiZSBw YXRjaCB0aGF0IGlzIHVzaW5nCgpwbSBkb21haW4gKGdlbnBkKSBmcmFtZXdvcmsgdG8gcG93ZXIt b24vb2ZmIFRDTS4KClRhbm1heQoKPiAzKSBPbmUgcGF0Y2ggdGhhdCBkZWFscyB3aXRoIGV4dHJh Y3RpbmcgdGhlIFRDTSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBEVC4KPiBFdmVyeXRoaW5nIGVsc2Ug bmVlZHMgdG8gYmUgaW4gYW5vdGhlciBwYXRjaC4KPgo+ID4gCj4gPiAKPiA+ID4KPiA+ID4gPiAg CXUzMiBwbV9kb21haW5faWQ7Cj4gPiA+ID4gLQljaGFyICpiYW5rX25hbWU7Cj4gPiA+ID4gKwl1 MzIgcG1fZG9tYWluX2lkMjsKPiA+ID4gPiArCWNoYXIgYmFua19uYW1lWzMyXTsKPiA+ID4KPiA+ ID4gU2FtZQo+ID4gCj4gPiBOb3cgd2UgaGF2ZSAicmVnLW5hbWVzIiBwcm9wZXJ0eSBpbiBkdHMg c28sIHdoZW4gdGhhdCBpcyBhdmFpbGFibGUsIEkgdHJ5IHRvIHVzZSBpdC4KPiA+IAo+ID4gU28s IGluc3RlYWQgb2Yga2VlcGluZyBzaW1wbGUgcG9pbnRlciwgSSBjb3B5IG5hbWUgZnJvbSAic3Ry dWN0IHJlc291cmNlcyIuIFNvLCBJIGNoYW5nZWQgYmFua19uYW1lCj4gPiAKPiA+IGZyb20gcG9p bnRlciB0byBhcnJheS4KPiA+Cj4KPiBJJ2xsIGxvb2sgYXQgdGhhdCBwYXJ0IGFnYWluIHdoZW4g dGhlIHJlc3Qgb2YgbWF5IGNvbW1lbnRzIGFyZSBhZGRyZXNzZWQuCj4KPiA+IAo+ID4gPgo+ID4g PiA+ICB9Owo+ID4gPiA+ICAKPiA+ID4gPiAgLyoqCj4gPiA+ID4gQEAgLTc1LDExICs3OSwxNyBA QCBzdHJ1Y3QgbWJveF9pbmZvIHsKPiA+ID4gPiAgICogSGFyZGNvZGVkIFRDTSBiYW5rIHZhbHVl cy4gVGhpcyB3aWxsIGJlIHJlbW92ZWQgb25jZSBUQ00gYmluZGluZ3MgYXJlCj4gPiA+ID4gICAq IGFjY2VwdGVkIGZvciBzeXN0ZW0tZHQgc3BlY2lmaWNhdGlvbnMgYW5kIHVwc3RyZWFtZWQgaW4g bGludXgga2VybmVsCj4gPiA+ID4gICAqLwo+ID4gPiA+IC1zdGF0aWMgY29uc3Qgc3RydWN0IG1l bV9iYW5rX2RhdGEgenlucW1wX3RjbV9iYW5rc1tdID0gewo+ID4gPiA+IC0JezB4ZmZlMDAwMDBV TCwgMHgxMDAwMFVMLCBQRF9SNV8wX0FUQ00sICJhdGNtMCJ9LCAvKiBUQ00gNjRLQiBlYWNoICov Cj4gPiA+ID4gLQl7MHhmZmUyMDAwMFVMLCAweDEwMDAwVUwsIFBEX1I1XzBfQlRDTSwgImJ0Y20w In0sCj4gPiA+ID4gLQl7MHhmZmU5MDAwMFVMLCAweDEwMDAwVUwsIFBEX1I1XzFfQVRDTSwgImF0 Y20xIn0sCj4gPiA+ID4gLQl7MHhmZmViMDAwMFVMLCAweDEwMDAwVUwsIFBEX1I1XzFfQlRDTSwg ImJ0Y20xIn0sCj4gPiA+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbWVtX2JhbmtfZGF0YSB6eW5x bXBfdGNtX2JhbmtzX3NwbGl0W10gPSB7Cj4gPiA+ID4gKwl7MHhmZmUwMDAwMCwgMHgwLCAweDEw MDAwLCBQRF9SNV8wX0FUQ00sIDAsICJhdGNtMCJ9LCAvKiBUQ00gNjRLQiBlYWNoICovCj4gPiA+ ID4gKwl7MHhmZmUyMDAwMCwgMHgyMDAwMCwgMHgxMDAwMCwgUERfUjVfMF9CVENNLCAwLCAiYnRj bTAifSwKPiA+ID4KPiA+ID4gSGVyZSB0aGUgZGV2aWNlIGFkZHJlc3MgZm9yIGJ0Y20wIGlzIDB4 MjAwMDAgd2hpbGUgaW4gdGhlIGNvdmVyIGxldHRlciBpdCBpcwo+ID4gPiAweDIwMDAuCj4gPiAK PiA+IFRoYW5rcyBmb3IgY2F0Y2hpbmcgdGhpcy4gVGhpcyBpcyBhY3R1YWxseSB0eXBvIGluIGNv dmVyLWxldHRlci4gSXQgc2hvdWxkIGJlIDB4MjAwMDAgaW4gY292ZXItbGV0dGVyLgo+ID4gCj4g PiA+Cj4gPiA+ID4gKwl7MHhmZmU5MDAwMCwgMHgwLCAweDEwMDAwLCBQRF9SNV8xX0FUQ00sIDAs ICJhdGNtMSJ9LAo+ID4gPiA+ICsJezB4ZmZlYjAwMDAsIDB4MjAwMDAsIDB4MTAwMDAsIFBEX1I1 XzFfQlRDTSwgMCwgImJ0Y20xIn0sCj4gPiA+Cj4gPiA+IFNhbWUKPiA+IAo+ID4gU2FtZSBoZXJl OiBJdCBzaG91bGQgYmUgMHgyMDAwMCBpbiBjb3Zlci1sZXR0ZXIuCj4gPiAKPiA+ID4KPiA+ID4g PiArfTsKPiA+ID4gPiArCj4gPiA+ID4gKy8qIFRDTSAxMjhLQiBlYWNoICovCj4gPiA+ID4gK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgbWVtX2JhbmtfZGF0YSB6eW5xbXBfdGNtX2JhbmtzX2xvY2tzdGVw W10gPSB7Cj4gPiA+ID4gKwl7MHhmZmUwMDAwMCwgMHgwLCAweDIwMDAwLCBQRF9SNV8wX0FUQ00s IFBEX1I1XzFfQVRDTSwgImF0Y20wIn0sCj4gPiA+ID4gKwl7MHhmZmUyMDAwMCwgMHgyMDAwMCwg MHgyMDAwMCwgUERfUjVfMF9CVENNLCBQRF9SNV8xX0JUQ00sICJidGNtMCJ9LAo+ID4gPiA+ICB9 Owo+ID4gPiA+ICAKPiA+ID4gPiAgLyoqCj4gPiA+ID4gQEAgLTQyMiw2ICs0MzIsNyBAQCBzdGF0 aWMgaW50IHp5bnFtcF9yNV9tZW1fcmVnaW9uX3VubWFwKHN0cnVjdCBycHJvYyAqcnByb2MsCj4g PiA+ID4gIAkJCQkgICAgICBzdHJ1Y3QgcnByb2NfbWVtX2VudHJ5ICptZW0pCj4gPiA+ID4gIHsK PiA+ID4gPiAgCWlvdW5tYXAoKHZvaWQgX19pb21lbSAqKW1lbS0+dmEpOwo+ID4gPiA+ICsKPiA+ ID4KPiA+ID4gU3B1cmlvdXMgY2hhbmdlCj4gPiBTdXJlLMKgIEkgd2lsbCByZW1vdmUgaXQuCj4g PiA+Cj4gPiA+ID4gIAlyZXR1cm4gMDsKPiA+ID4gPiAgfQo+ID4gPiA+ICAKPiA+ID4gPiBAQCAt NTI2LDMwICs1MzcsNiBAQCBzdGF0aWMgaW50IHRjbV9tZW1fbWFwKHN0cnVjdCBycHJvYyAqcnBy b2MsCj4gPiA+ID4gIAkvKiBjbGVhciBUQ01zICovCj4gPiA+ID4gIAltZW1zZXRfaW8odmEsIDAs IG1lbS0+bGVuKTsKPiA+ID4gPiAgCj4gPiA+ID4gLQkvKgo+ID4gPiA+IC0JICogVGhlIFI1cyBl eHBlY3QgdGhlaXIgVENNIGJhbmtzIHRvIGJlIGF0IGFkZHJlc3MgMHgwIGFuZCAweDIwMDAsCj4g PiA+ID4gLQkgKiB3aGlsZSBvbiB0aGUgTGludXggc2lkZSB0aGV5IGFyZSBhdCAweGZmZXh4eHh4 Lgo+ID4gPiA+IC0JICoKPiA+ID4gPiAtCSAqIFplcm8gb3V0IHRoZSBoaWdoIDEyIGJpdHMgb2Yg dGhlIGFkZHJlc3MuIFRoaXMgd2lsbCBnaXZlCj4gPiA+ID4gLQkgKiBleHBlY3RlZCB2YWx1ZXMg Zm9yIFRDTSBCYW5rcyAwQSBhbmQgMEIgKDB4MCBhbmQgMHgyMDAwMCkuCj4gPiA+ID4gLQkgKi8K PiA+ID4gPiAtCW1lbS0+ZGEgJj0gMHgwMDBmZmZmZjsKPiA+ID4gPiAtCj4gPiA+ID4gLQkvKgo+ ID4gPiA+IC0JICogVENNIEJhbmtzIDFBIGFuZCAxQiBzdGlsbCBoYXZlIHRvIGJlIHRyYW5zbGF0 ZWQuCj4gPiA+ID4gLQkgKgo+ID4gPiA+IC0JICogQmVsb3cgaGFuZGxlIHRoZXNlIHR3byBiYW5r cycgYWJzb2x1dGUgYWRkcmVzc2VzICgweGZmZTkwMDAwIGFuZAo+ID4gPiA+IC0JICogMHhmZmVi MDAwMCkgYW5kIGNvbnZlcnQgdG8gdGhlIGV4cGVjdGVkIHJlbGF0aXZlIGFkZHJlc3Nlcwo+ID4g PiA+IC0JICogKDB4MCBhbmQgMHgyMDAwMCkuCj4gPiA+ID4gLQkgKi8KPiA+ID4gPiAtCWlmICht ZW0tPmRhID09IDB4OTAwMDAgfHwgbWVtLT5kYSA9PSAweEIwMDAwKQo+ID4gPiA+IC0JCW1lbS0+ ZGEgLT0gMHg5MDAwMDsKPiA+ID4gPiAtCj4gPiA+ID4gLQkvKiBpZiB0cmFuc2xhdGVkIFRDTSBi YW5rIGFkZHJlc3MgaXMgbm90IHZhbGlkIHJlcG9ydCBlcnJvciAqLwo+ID4gPiA+IC0JaWYgKG1l bS0+ZGEgIT0gMHgwICYmIG1lbS0+ZGEgIT0gMHgyMDAwMCkgewo+ID4gPiA+IC0JCWRldl9lcnIo JnJwcm9jLT5kZXYsICJpbnZhbGlkIFRDTSBhZGRyZXNzOiAleFxuIiwgbWVtLT5kYSk7Cj4gPiA+ ID4gLQkJcmV0dXJuIC1FSU5WQUw7Cj4gPiA+ID4gLQl9Cj4gPiA+ID4gIAlyZXR1cm4gMDsKPiA+ ID4gPiAgfQo+ID4gPiA+ICAKPiA+ID4gPiBAQCAtNTcxLDYgKzU1OCw3IEBAIHN0YXRpYyBpbnQg YWRkX3RjbV9jYXJ2ZW91dF9zcGxpdF9tb2RlKHN0cnVjdCBycHJvYyAqcnByb2MpCj4gPiA+ID4g IAl1MzIgcG1fZG9tYWluX2lkOwo+ID4gPiA+ICAJc2l6ZV90IGJhbmtfc2l6ZTsKPiA+ID4gPiAg CWNoYXIgKmJhbmtfbmFtZTsKPiA+ID4gPiArCXUzMiBkYTsKPiA+ID4gPiAgCj4gPiA+ID4gIAly NV9jb3JlID0gcnByb2MtPnByaXY7Cj4gPiA+ID4gIAlkZXYgPSByNV9jb3JlLT5kZXY7Cj4gPiA+ ID4gQEAgLTU4Niw2ICs1NzQsNyBAQCBzdGF0aWMgaW50IGFkZF90Y21fY2FydmVvdXRfc3BsaXRf bW9kZShzdHJ1Y3QgcnByb2MgKnJwcm9jKQo+ID4gPiA+ICAJCWJhbmtfbmFtZSA9IHI1X2NvcmUt PnRjbV9iYW5rc1tpXS0+YmFua19uYW1lOwo+ID4gPiA+ICAJCWJhbmtfc2l6ZSA9IHI1X2NvcmUt PnRjbV9iYW5rc1tpXS0+c2l6ZTsKPiA+ID4gPiAgCQlwbV9kb21haW5faWQgPSByNV9jb3JlLT50 Y21fYmFua3NbaV0tPnBtX2RvbWFpbl9pZDsKPiA+ID4gPiArCQlkYSA9IHI1X2NvcmUtPnRjbV9i YW5rc1tpXS0+ZGE7Cj4gPiA+ID4gIAo+ID4gPiA+ICAJCXJldCA9IHp5bnFtcF9wbV9yZXF1ZXN0 X25vZGUocG1fZG9tYWluX2lkLAo+ID4gPiA+ICAJCQkJCSAgICAgWllOUU1QX1BNX0NBUEFCSUxJ VFlfQUNDRVNTLCAwLAo+ID4gPiA+IEBAIC01OTksNyArNTg4LDcgQEAgc3RhdGljIGludCBhZGRf dGNtX2NhcnZlb3V0X3NwbGl0X21vZGUoc3RydWN0IHJwcm9jICpycHJvYykKPiA+ID4gPiAgCQkJ YmFua19uYW1lLCBiYW5rX2FkZHIsIGJhbmtfc2l6ZSk7Cj4gPiA+ID4gIAo+ID4gPiA+ICAJCXJw cm9jX21lbSA9IHJwcm9jX21lbV9lbnRyeV9pbml0KGRldiwgTlVMTCwgYmFua19hZGRyLAo+ID4g PiA+IC0JCQkJCQkgYmFua19zaXplLCBiYW5rX2FkZHIsCj4gPiA+ID4gKwkJCQkJCSBiYW5rX3Np emUsIGRhLAo+ID4gPiA+ICAJCQkJCQkgdGNtX21lbV9tYXAsIHRjbV9tZW1fdW5tYXAsCj4gPiA+ ID4gIAkJCQkJCSBiYW5rX25hbWUpOwo+ID4gPiA+ICAJCWlmICghcnByb2NfbWVtKSB7Cj4gPiA+ ID4gQEAgLTYzMiwxNCArNjIxLDE0IEBAIHN0YXRpYyBpbnQgYWRkX3RjbV9jYXJ2ZW91dF9zcGxp dF9tb2RlKHN0cnVjdCBycHJvYyAqcnByb2MpCj4gPiA+ID4gICAqLwo+ID4gPiA+ICBzdGF0aWMg aW50IGFkZF90Y21fY2FydmVvdXRfbG9ja3N0ZXBfbW9kZShzdHJ1Y3QgcnByb2MgKnJwcm9jKQo+ ID4gPiA+ICB7Cj4gPiA+ID4gKwl1MzIgcG1fZG9tYWluX2lkLCBkYSwgcG1fZG9tYWluX2lkMjsK PiA+ID4gPiAgCXN0cnVjdCBycHJvY19tZW1fZW50cnkgKnJwcm9jX21lbTsKPiA+ID4gPiAgCXN0 cnVjdCB6eW5xbXBfcjVfY29yZSAqcjVfY29yZTsKPiA+ID4gPiAgCWludCBpLCBudW1fYmFua3Ms IHJldDsKPiA+ID4gPiAtCXBoeXNfYWRkcl90IGJhbmtfYWRkcjsKPiA+ID4gPiAtCXNpemVfdCBi YW5rX3NpemUgPSAwOwo+ID4gPiA+ICsJdTMyIGJhbmtfc2l6ZSA9IDA7Cj4KPiBXaHkgaXMgdGhp cyBjaGFuZ2VkIHRvIGEgdTMyIHdoZW4gcnByb2NfbWVtX2VudHJ5X2luaXQoKSB0YWtlcyBhIHNp emVfdCBmb3IKPiBAbGVuPyAgVGhpcyBpcyBlc3BlY2lhbGx5IGNvbmNlcm5pbmcgc2luY2UgYWRk X3RjbV9jYXJ2ZW91dF9zcGxpdF9tb2RlKCkgc3RpbGwKPiB1c2VzIGEgc2l6ZV90Lgo+Cj4gPiA+ ID4gIAlzdHJ1Y3QgZGV2aWNlICpkZXY7Cj4gPiA+ID4gLQl1MzIgcG1fZG9tYWluX2lkOwo+ID4g PiA+ICAJY2hhciAqYmFua19uYW1lOwo+ID4gPiA+ICsJdTMyIGJhbmtfYWRkcjsKPiA+ID4gPiAg Cj4gPiA+ID4gIAlyNV9jb3JlID0gcnByb2MtPnByaXY7Cj4gPiA+ID4gIAlkZXYgPSByNV9jb3Jl LT5kZXY7Cj4gPiA+ID4gQEAgLTY1MywxMiArNjQyLDE2IEBAIHN0YXRpYyBpbnQgYWRkX3RjbV9j YXJ2ZW91dF9sb2Nrc3RlcF9tb2RlKHN0cnVjdCBycHJvYyAqcnByb2MpCj4gPiA+ID4gIAkgKiBT bywgRW5hYmxlIGVhY2ggVENNIGJsb2NrIGluZGl2aWR1YWxseSwgYnV0IGFkZCB0aGVpciBzaXpl Cj4gPiA+ID4gIAkgKiB0byBjcmVhdGUgY29udGlndW91cyBtZW1vcnkgcmVnaW9uLgo+ID4gPiA+ ICAJICovCj4gPiA+ID4gLQliYW5rX2FkZHIgPSByNV9jb3JlLT50Y21fYmFua3NbMF0tPmFkZHI7 Cj4gPiA+ID4gLQliYW5rX25hbWUgPSByNV9jb3JlLT50Y21fYmFua3NbMF0tPmJhbmtfbmFtZTsK PiA+ID4gPiAtCj4gPiA+ID4gIAlmb3IgKGkgPSAwOyBpIDwgbnVtX2JhbmtzOyBpKyspIHsKPiA+ ID4gPiAtCQliYW5rX3NpemUgKz0gcjVfY29yZS0+dGNtX2JhbmtzW2ldLT5zaXplOwo+ID4gPiA+ ICsJCWJhbmtfYWRkciA9IHI1X2NvcmUtPnRjbV9iYW5rc1tpXS0+YWRkcjsKPiA+ID4gPiArCQli YW5rX25hbWUgPSByNV9jb3JlLT50Y21fYmFua3NbaV0tPmJhbmtfbmFtZTsKPiA+ID4gPiArCQli YW5rX3NpemUgPSByNV9jb3JlLT50Y21fYmFua3NbaV0tPnNpemU7Cj4gPiA+ID4gIAkJcG1fZG9t YWluX2lkID0gcjVfY29yZS0+dGNtX2JhbmtzW2ldLT5wbV9kb21haW5faWQ7Cj4gPiA+ID4gKwkJ cG1fZG9tYWluX2lkMiA9IHI1X2NvcmUtPnRjbV9iYW5rc1tpXS0+cG1fZG9tYWluX2lkMjsKPiA+ ID4gPiArCQlkYSA9IHI1X2NvcmUtPnRjbV9iYW5rc1tpXS0+ZGE7Cj4gPiA+ID4gKwo+ID4gPiA+ ICsJCWRldl9kYmcoZGV2LCAiVENNICVzIGFkZHI9MHgleCwgc2l6ZT0weCV4IiwKPiA+ID4gPiAr CQkJYmFua19uYW1lLCBiYW5rX2FkZHIsIGJhbmtfc2l6ZSk7Cj4gPiA+ID4gIAo+ID4gPiA+ICAJ CS8qIFR1cm4gb24gZWFjaCBUQ00gYmFuayBpbmRpdmlkdWFsbHkgKi8KPiA+ID4gPiAgCQlyZXQg PSB6eW5xbXBfcG1fcmVxdWVzdF9ub2RlKHBtX2RvbWFpbl9pZCwKPiA+ID4gPiBAQCAtNjY4LDIz ICs2NjEsMjggQEAgc3RhdGljIGludCBhZGRfdGNtX2NhcnZlb3V0X2xvY2tzdGVwX21vZGUoc3Ry dWN0IHJwcm9jICpycHJvYykKPiA+ID4gPiAgCQkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gdHVy biBvbiBUQ00gMHgleCIsIHBtX2RvbWFpbl9pZCk7Cj4gPiA+ID4gIAkJCWdvdG8gcmVsZWFzZV90 Y21fbG9ja3N0ZXA7Cj4gPiA+ID4gIAkJfQo+ID4gPiA+IC0JfQo+ID4gPiA+ICAKPiA+ID4gPiAt CWRldl9kYmcoZGV2LCAiVENNIGFkZCBjYXJ2ZW91dCBsb2Nrc3RlcCBtb2RlICVzIGFkZHI9MHgl bGx4LCBzaXplPTB4JWx4IiwKPiA+ID4gPiAtCQliYW5rX25hbWUsIGJhbmtfYWRkciwgYmFua19z aXplKTsKPiA+ID4gPiAtCj4gPiA+ID4gLQkvKiBSZWdpc3RlciBUQ00gYWRkcmVzcyByYW5nZSwg VENNIG1hcCBhbmQgdW5tYXAgZnVuY3Rpb25zICovCj4gPiA+ID4gLQlycHJvY19tZW0gPSBycHJv Y19tZW1fZW50cnlfaW5pdChkZXYsIE5VTEwsIGJhbmtfYWRkciwKPiA+ID4gPiAtCQkJCQkgYmFu a19zaXplLCBiYW5rX2FkZHIsCj4gPiA+ID4gLQkJCQkJIHRjbV9tZW1fbWFwLCB0Y21fbWVtX3Vu bWFwLAo+ID4gPiA+IC0JCQkJCSBiYW5rX25hbWUpOwo+ID4gPiA+IC0JaWYgKCFycHJvY19tZW0p IHsKPiA+ID4gPiAtCQlyZXQgPSAtRU5PTUVNOwo+ID4gPiA+IC0JCWdvdG8gcmVsZWFzZV90Y21f bG9ja3N0ZXA7Cj4gPiA+ID4gLQl9Cj4gPiA+ID4gKwkJLyogVHVybiBvbiBlYWNoIFRDTSBiYW5r IGluZGl2aWR1YWxseSAqLwo+ID4gPiA+ICsJCXJldCA9IHp5bnFtcF9wbV9yZXF1ZXN0X25vZGUo cG1fZG9tYWluX2lkMiwKPiA+ID4gPiArCQkJCQkgICAgIFpZTlFNUF9QTV9DQVBBQklMSVRZX0FD Q0VTUywgMCwKPiA+ID4gPiArCQkJCQkgICAgIFpZTlFNUF9QTV9SRVFVRVNUX0FDS19CTE9DS0lO Ryk7Cj4gPiA+ID4gKwkJaWYgKHJldCA8IDApIHsKPiA+ID4gPiArCQkJZGV2X2VycihkZXYsICJm YWlsZWQgdG8gdHVybiBvbiBUQ00gMHgleCIsIHBtX2RvbWFpbl9pZDIpOwo+ID4gPiA+ICsJCQln b3RvIHJlbGVhc2VfdGNtX2xvY2tzdGVwOwo+ID4gPiA+ICsJCX0KPiA+ID4gPiAgCj4gPiA+ID4g LQkvKiBJZiByZWdpc3RyYXRpb24gaXMgc3VjY2VzcywgYWRkIGNhcnZlb3V0cyAqLwo+ID4gPiA+ IC0JcnByb2NfYWRkX2NhcnZlb3V0KHJwcm9jLCBycHJvY19tZW0pOwo+ID4gPiA+ICsJCS8qIFJl Z2lzdGVyIFRDTSBhZGRyZXNzIHJhbmdlLCBUQ00gbWFwIGFuZCB1bm1hcCBmdW5jdGlvbnMgKi8K PiA+ID4gPiArCQlycHJvY19tZW0gPSBycHJvY19tZW1fZW50cnlfaW5pdChkZXYsIE5VTEwsIGJh bmtfYWRkciwKPiA+ID4gPiArCQkJCQkJIGJhbmtfc2l6ZSwgZGEsCj4gPiA+ID4gKwkJCQkJCSB0 Y21fbWVtX21hcCwgdGNtX21lbV91bm1hcCwKPiA+ID4gPiArCQkJCQkJIGJhbmtfbmFtZSk7Cj4K PiBUaGUgb3JpZ2luYWwgY29kZSBhZGRzIGEgc2luZ2xlIGNhcnZlb3V0IHdoaWxlIHRoaXMgY29k ZSBpcyBhZGRpbmcgb25lIGZvciBlYWNoCj4gbWVtb3J5IGJhbms/ICBJcyB0aGlzIGRvbmUgb24g cHVycG9zZSBvciBpcyBpdCBhIGJ1Zz8gIE5vIGNvbW1lbnQgaXMgcHJvdmlkZWQuCj4KPiA+ID4g PiArCQlpZiAoIXJwcm9jX21lbSkgewo+ID4gPiA+ICsJCQlyZXQgPSAtRU5PTUVNOwo+ID4gPiA+ ICsJCQlnb3RvIHJlbGVhc2VfdGNtX2xvY2tzdGVwOwo+ID4gPiA+ICsJCX0KPiA+ID4gPiArCj4g PiA+ID4gKwkJcnByb2NfYWRkX2NhcnZlb3V0KHJwcm9jLCBycHJvY19tZW0pOwo+ID4gPiA+ICsJ fQo+ID4gPiA+ICAKPiA+ID4gPiAgCXJldHVybiAwOwo+ID4gPiA+ICAKPiA+ID4gPiBAQCAtNjkz LDcgKzY5MSwxMiBAQCBzdGF0aWMgaW50IGFkZF90Y21fY2FydmVvdXRfbG9ja3N0ZXBfbW9kZShz dHJ1Y3QgcnByb2MgKnJwcm9jKQo+ID4gPiA+ICAJZm9yIChpLS07IGkgPj0gMDsgaS0tKSB7Cj4g PiA+ID4gIAkJcG1fZG9tYWluX2lkID0gcjVfY29yZS0+dGNtX2JhbmtzW2ldLT5wbV9kb21haW5f aWQ7Cj4gPiA+ID4gIAkJenlucW1wX3BtX3JlbGVhc2Vfbm9kZShwbV9kb21haW5faWQpOwo+ID4g PiA+ICsJCWlmIChwbV9kb21haW5faWQyKSB7Cj4gPiA+ID4gKwkJCXBtX2RvbWFpbl9pZDIgPSBy NV9jb3JlLT50Y21fYmFua3NbaV0tPnBtX2RvbWFpbl9pZDI7Cj4gPiA+ID4gKwkJCXp5bnFtcF9w bV9yZWxlYXNlX25vZGUocG1fZG9tYWluX2lkMik7Cj4gPiA+ID4gKwkJfQo+ID4gPiA+ICAJfQo+ ID4gPiA+ICsKPiA+ID4gPiAgCXJldHVybiByZXQ7Cj4gPiA+ID4gIH0KPiA+ID4gPiAgCj4gPiA+ ID4gQEAgLTgwMCwxNyArODAzLDIzIEBAIHN0YXRpYyBpbnQgenlucW1wX3I1X3Jwcm9jX3ByZXBh cmUoc3RydWN0IHJwcm9jICpycHJvYykKPiA+ID4gPiAgICovCj4gPiA+ID4gIHN0YXRpYyBpbnQg enlucW1wX3I1X3Jwcm9jX3VucHJlcGFyZShzdHJ1Y3QgcnByb2MgKnJwcm9jKQo+ID4gPiA+ICB7 Cj4gPiA+ID4gKwl1MzIgcG1fZG9tYWluX2lkLCBwbV9kb21haW5faWQyOwo+ID4gPiA+ICAJc3Ry dWN0IHp5bnFtcF9yNV9jb3JlICpyNV9jb3JlOwo+ID4gPiA+IC0JdTMyIHBtX2RvbWFpbl9pZDsK PiA+ID4gPiAgCWludCBpOwo+ID4gPiA+ICAKPiA+ID4gPiAgCXI1X2NvcmUgPSBycHJvYy0+cHJp djsKPiA+ID4gPiAgCj4gPiA+ID4gIAlmb3IgKGkgPSAwOyBpIDwgcjVfY29yZS0+dGNtX2Jhbmtf Y291bnQ7IGkrKykgewo+ID4gPiA+ICAJCXBtX2RvbWFpbl9pZCA9IHI1X2NvcmUtPnRjbV9iYW5r c1tpXS0+cG1fZG9tYWluX2lkOwo+ID4gPiA+ICsJCXBtX2RvbWFpbl9pZDIgPSByNV9jb3JlLT50 Y21fYmFua3NbaV0tPnBtX2RvbWFpbl9pZDI7Cj4gPiA+ID4gIAkJaWYgKHp5bnFtcF9wbV9yZWxl YXNlX25vZGUocG1fZG9tYWluX2lkKSkKPiA+ID4gPiAgCQkJZGV2X3dhcm4ocjVfY29yZS0+ZGV2 LAo+ID4gPiA+ICAJCQkJICJjYW4ndCB0dXJuIG9mZiBUQ00gYmFuayAweCV4IiwgcG1fZG9tYWlu X2lkKTsKPiA+ID4gPiArCQlpZiAocG1fZG9tYWluX2lkMiAmJiB6eW5xbXBfcG1fcmVsZWFzZV9u b2RlKHBtX2RvbWFpbl9pZDIpKQo+ID4gPiA+ICsJCQlkZXZfd2FybihyNV9jb3JlLT5kZXYsCj4g PiA+ID4gKwkJCQkgImNhbid0IHR1cm4gb2ZmIFRDTSBiYW5rIDB4JXgiLCBwbV9kb21haW5faWQy KTsKPiA+ID4gPiArCQlkZXZfZGJnKHI1X2NvcmUtPmRldiwgInBtX2RvbWFpbl9pZD0lZCwgcG1f ZG9tYWluX2lkMj0lZFxuIiwKPiA+ID4gPiArCQkJcG1fZG9tYWluX2lkLCBwbV9kb21haW5faWQy KTsKPiA+ID4gPiAgCX0KPiA+ID4gPiAgCj4gPiA+ID4gIAlyZXR1cm4gMDsKPiA+ID4gPiBAQCAt ODgzLDYgKzg5MiwxMzcgQEAgc3RhdGljIHN0cnVjdCB6eW5xbXBfcjVfY29yZSAqenlucW1wX3I1 X2FkZF9ycHJvY19jb3JlKHN0cnVjdCBkZXZpY2UgKmNkZXYpCj4gPiA+ID4gIAlyZXR1cm4gRVJS X1BUUihyZXQpOwo+ID4gPiA+ICB9Cj4gPiA+ID4gIAo+ID4gPiA+ICtzdGF0aWMgaW50IHp5bnFt cF9yNV9nZXRfdGNtX25vZGVfZnJvbV9kdChzdHJ1Y3QgenlucW1wX3I1X2NsdXN0ZXIgKmNsdXN0 ZXIpCj4gPiA+ID4gK3sKPiA+ID4gPiArCWludCBpLCBqLCB0Y21fYmFua19jb3VudCwgcmV0ID0g LUVJTlZBTDsKPiA+ID4gPiArCXN0cnVjdCB6eW5xbXBfcjVfY29yZSAqcjVfY29yZTsKPiA+ID4g PiArCXN0cnVjdCBvZl9waGFuZGxlX2FyZ3Mgb3V0X2FyZzsKPiA+ID4gPiArCXN0cnVjdCBwbGF0 Zm9ybV9kZXZpY2UgKmNwZGV2Owo+ID4gPiA+ICsJc3RydWN0IHJlc291cmNlICpyZXMgPSBOVUxM Owo+ID4gPiA+ICsJdTY0IGFic19hZGRyID0gMCwgc2l6ZSA9IDA7Cj4gPiA+ID4gKwlzdHJ1Y3Qg bWVtX2JhbmtfZGF0YSAqdGNtOwo+ID4gPiA+ICsJc3RydWN0IGRldmljZV9ub2RlICpucCwgKm5w MSA9IE5VTEw7Cj4gPiA+ID4gKwlzdHJ1Y3QgZGV2aWNlICpkZXY7Cj4KPiBBcyBmYXIgYXMgSSBj YW4gdGVsbCBAcmV0LCBAcmVzIGFuZCBAbnAxIGRvbid0IG5lZWQgaW5pdGlsaXNhdGlvbi4gIEl0 IG1heSBhbHNvCj4gYmUgdGhlIGNhc2UgZm9yIEBhYnNfYWRkciBhbmQgQHNpemUuICAKPgo+ID4g PiA+ICsKPiA+ID4gPiArCWZvciAoaSA9IDA7IGkgPCBjbHVzdGVyLT5jb3JlX2NvdW50OyBpKysp IHsKPiA+ID4gPiArCQlyNV9jb3JlID0gY2x1c3Rlci0+cjVfY29yZXNbaV07Cj4gPiA+ID4gKwkJ ZGV2ID0gcjVfY29yZS0+ZGV2Owo+ID4gPiA+ICsJCW5wID0gZGV2X29mX25vZGUoZGV2KTsKPiA+ ID4gPiArCj4gPiA+ID4gKwkJLyogd2UgaGF2ZSBhZGRyZXNzIGNlbGwgMiBhbmQgc2l6ZSBjZWxs IGFzIDIgKi8KPiA+ID4gPiArCQlyZXQgPSBvZl9wcm9wZXJ0eV9jb3VudF9lbGVtc19vZl9zaXpl KG5wLCAicmVnIiwKPiA+ID4gPiArCQkJCQkJICAgICAgNCAqIHNpemVvZih1MzIpKTsKPiA+ID4g PiArCQlpZiAocmV0IDw9IDApIHsKPiA+ID4gPiArCQkJcmV0ID0gLUVJTlZBTDsKPiA+ID4gPiAr CQkJZ290byBmYWlsX3RjbTsKPiA+ID4gPiArCQl9Cj4gPiA+ID4gKwo+ID4gPiA+ICsJCXRjbV9i YW5rX2NvdW50ID0gcmV0Owo+ID4gPiA+ICsKPiA+ID4gPiArCQlyNV9jb3JlLT50Y21fYmFua3Mg PSBkZXZtX2tjYWxsb2MoZGV2LCB0Y21fYmFua19jb3VudCwKPiA+ID4gPiArCQkJCQkJICBzaXpl b2Yoc3RydWN0IG1lbV9iYW5rX2RhdGEgKiksCj4gPiA+ID4gKwkJCQkJCSAgR0ZQX0tFUk5FTCk7 Cj4gPiA+ID4gKwkJaWYgKCFyNV9jb3JlLT50Y21fYmFua3MpIHsKPiA+ID4gPiArCQkJcmV0ID0g LUVOT01FTTsKPiA+ID4gPiArCQkJZ290byBmYWlsX3RjbTsKPiA+ID4gPiArCQl9Cj4gPiA+ID4g Kwo+ID4gPiA+ICsJCXI1X2NvcmUtPnRjbV9iYW5rX2NvdW50ID0gdGNtX2JhbmtfY291bnQ7Cj4g PiA+ID4gKwkJZm9yIChqID0gMDsgaiA8IHRjbV9iYW5rX2NvdW50OyBqKyspIHsKPiA+ID4gPiAr CQkJdGNtID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IG1lbV9iYW5rX2RhdGEgKiksIEdGUF9LRVJO RUwpOwo+ID4gPiA+ICsJCQlpZiAoIXRjbSkgewo+ID4gPiA+ICsJCQkJcmV0ID0gLUVOT01FTTsK PiA+ID4gPiArCQkJCWdvdG8gZmFpbF90Y207Cj4gPiA+ID4gKwkJCX0KPiA+ID4gPiArCj4gPiA+ ID4gKwkJCXI1X2NvcmUtPnRjbV9iYW5rc1tqXSA9IHRjbTsKPiA+ID4gPiArCQkJLyogZ2V0IHRj bSBhZGRyZXNzIHdpdGhvdXQgdHJhbnNsYXRpb24gKi8KPiA+ID4gPiArCQkJcmV0ID0gb2ZfcHJv cGVydHlfcmVhZF9yZWcobnAsIGosICZhYnNfYWRkciwgJnNpemUpOwo+ID4gPiA+ICsJCQlpZiAo cmV0KSB7Cj4gPiA+ID4gKwkJCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBnZXQgcmVnIHByb3Bl cnR5XG4iKTsKPiA+ID4gPiArCQkJCWdvdG8gZmFpbF90Y207Cj4gPiA+ID4gKwkJCX0KPiA+ID4g PiArCj4gPiA+ID4gKwkJCS8qCj4gPiA+ID4gKwkJCSAqIHJlbW90ZSBwcm9jZXNzb3IgY2FuIGFk ZHJlc3Mgb25seSAzMiBiaXRzCj4gPiA+ID4gKwkJCSAqIHNvIGNvbnZlcnQgNjQtYml0cyBpbnRv IDMyLWJpdHMuIFRoaXMgd2lsbCBkaXNjYXJkCj4gPiA+ID4gKwkJCSAqIGFueSB1bndhbnRlZCB1 cHBlciAzMi1iaXRzLgo+ID4gPiA+ICsJCQkgKi8KPiA+ID4gPiArCQkJdGNtLT5kYSA9ICh1MzIp YWJzX2FkZHI7Cj4gPiA+ID4gKwkJCXRjbS0+c2l6ZSA9ICh1MzIpc2l6ZTsKPiA+ID4gPiArCj4g PiA+ID4gKwkJCWNwZGV2ID0gdG9fcGxhdGZvcm1fZGV2aWNlKGRldik7Cj4gPiA+ID4gKwkJCXJl cyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShjcGRldiwgSU9SRVNPVVJDRV9NRU0sIGopOwo+ID4g PiA+ICsJCQlpZiAoIXJlcykgewo+ID4gPiA+ICsJCQkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8g Z2V0IHRjbSByZXNvdXJjZVxuIik7Cj4gPiA+ID4gKwkJCQlyZXQgPSAtRUlOVkFMOwo+ID4gPiA+ ICsJCQkJZ290byBmYWlsX3RjbTsKPiA+ID4gPiArCQkJfQo+ID4gPiA+ICsKPiA+ID4gPiArCQkJ dGNtLT5hZGRyID0gKHUzMilyZXMtPnN0YXJ0Owo+ID4gPiA+ICsJCQlyZXMgPSBkZXZtX3JlcXVl c3RfbWVtX3JlZ2lvbihkZXYsIHRjbS0+YWRkciwgdGNtLT5zaXplLCByZXMtPm5hbWUpOwo+ID4g PiA+ICsJCQlpZiAoIXJlcykgewo+ID4gPiA+ICsJCQkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8g cmVxdWVzdCB0Y20gcmVzb3VyY2VcbiIpOwo+ID4gPiA+ICsJCQkJcmV0ID0gLUVJTlZBTDsKPiA+ ID4gPiArCQkJCWdvdG8gZmFpbF90Y207Cj4gPiA+ID4gKwkJCX0KPiA+ID4gPiArCj4gPiA+ID4g KwkJCW1lbWNweSh0Y20tPmJhbmtfbmFtZSwgcmVzLT5uYW1lLCBBUlJBWV9TSVpFKHRjbS0+YmFu a19uYW1lKSk7Cj4gPiA+ID4gKwkJCW5wID0gb2Zfbm9kZV9nZXQoZGV2X29mX25vZGUoZGV2KSk7 Cj4gPiA+ID4gKwkJCS8qCj4gPiA+ID4gKwkJCSAqIEluIGR0IHBvd2VyLWRvbWFpbnMgYXJlIGRl c2NyaWJlZCBpbiB0aGlzIG9yZGVyOgo+ID4gPiA+ICsJCQkgKiA8UlBVIGNvcmU+LCA8YXRjbT4s ICA8YnRjbT4KPiA+ID4gPiArCQkJICogcGFyc2UgcG93ZXIgZG9tYWlucyBmb3IgdGNtIGFjY29y ZGluZ2x5Cj4gPiA+ID4gKwkJCSAqLwo+ID4gPiA+ICsJCQlvZl9wYXJzZV9waGFuZGxlX3dpdGhf YXJncyhucCwgInBvd2VyLWRvbWFpbnMiLAo+ID4gPiA+ICsJCQkJCQkgICAiI3Bvd2VyLWRvbWFp bi1jZWxscyIsCj4gPiA+ID4gKwkJCQkJCSAgIGogKyAxLCAmb3V0X2FyZyk7Cj4gPiA+ID4gKwkJ CXRjbS0+cG1fZG9tYWluX2lkID0gb3V0X2FyZy5hcmdzWzBdOwo+ID4gPiA+ICsJCQlvZl9ub2Rl X3B1dChvdXRfYXJnLm5wKTsKPiA+ID4gPiArCj4gPiA+ID4gKwkJCWRldl9kYmcoZGV2LCAiVENN OiAlcywgZG1hPTB4JXgsIGRhPTB4JXgsIHNpemU9MHgleFxuIiwKPiA+ID4gPiArCQkJCXRjbS0+ YmFua19uYW1lLCB0Y20tPmFkZHIsIHRjbS0+ZGEsIHRjbS0+c2l6ZSk7Cj4gPiA+ID4gKwkJCWRl dl9kYmcoZGV2LCAidGNtIHBtIGRvbWFpbiBpZCAlZFxuIiwgdGNtLT5wbV9kb21haW5faWQpOwo+ ID4gPiA+ICsKPiA+ID4gPiArCQkJaWYgKGNsdXN0ZXItPm1vZGUgPT0gU1BMSVRfTU9ERSkKPiA+ ID4gPiArCQkJCWNvbnRpbnVlOwo+ID4gPiA+ICsKPiA+ID4gPiArCQkJLyogVHVybiBvbiBjb3Jl LTEncyBUQ00gYXMgd2VsbCAqLwo+ID4gPiA+ICsJCQlucDEgPSBvZl9nZXRfbmV4dF9jaGlsZChk ZXZfb2Zfbm9kZShjbHVzdGVyLT5kZXYpLAo+ID4gPiA+ICsJCQkJCQlyNV9jb3JlLT5ucCk7Cj4g PiA+ID4gKwkJCWlmICghbnAxKSB7Cj4gPiA+ID4gKwkJCQlvZl9ub2RlX3B1dChucDEpOwo+ID4g PiA+ICsJCQkJbnAxID0gTlVMTDsKPiA+ID4gPiArCQkJCWdvdG8gZmFpbF90Y207Cj4gPiA+ID4g KwkJCX0KPiA+ID4gPiArCj4gPiA+ID4gKwkJCW9mX3BhcnNlX3BoYW5kbGVfd2l0aF9hcmdzKG5w MSwgInBvd2VyLWRvbWFpbnMiLAo+ID4gPiA+ICsJCQkJCQkgICAiI3Bvd2VyLWRvbWFpbi1jZWxs cyIsCj4gPiA+ID4gKwkJCQkJCSAgIGogKyAxLCAmb3V0X2FyZyk7Cj4gPiA+ID4gKwkJCXRjbS0+ cG1fZG9tYWluX2lkMiA9IG91dF9hcmcuYXJnc1swXTsKPiA+ID4gPiArCQkJb2Zfbm9kZV9wdXQo b3V0X2FyZy5ucCk7Cj4gPiA+ID4gKwkJCWRldl9kYmcoZGV2LCAidGNtIHBtIGRvbWFpbiBpZCAl ZFxuIiwgdGNtLT5wbV9kb21haW5faWQyKTsKPiA+ID4gPiArCQl9Cj4gPiA+ID4gKwl9Cj4gPiA+ ID4gKwo+ID4gPiA+ICsJcmV0dXJuIDA7Cj4gPiA+ID4gKwo+ID4gPiA+ICtmYWlsX3RjbToKPiA+ ID4gPiArCXdoaWxlIChpID49IDApIHsKPiA+ID4gPiArCQlyNV9jb3JlID0gY2x1c3Rlci0+cjVf Y29yZXNbaV07Cj4gPiA+ID4gKwkJZm9yIChqID0gMDsgaiA8IHI1X2NvcmUtPnRjbV9iYW5rX2Nv dW50OyBqKyspIHsKPiA+ID4gPiArCQkJaWYgKCFyNV9jb3JlLT50Y21fYmFua3MpCj4gPiA+ID4g KwkJCQljb250aW51ZTsKPiA+ID4gPiArCQkJdGNtID0gcjVfY29yZS0+dGNtX2JhbmtzW2pdOwo+ ID4gPiA+ICsJCQlrZnJlZSh0Y20pOwo+ID4gPiA+ICsJCX0KPiA+ID4gPiArCQlrZnJlZShyNV9j b3JlLT50Y21fYmFua3MpOwo+ID4gPiA+ICsJCWktLTsKPiA+ID4gPiArCX0KPiA+ID4gPiArCj4g PiA+ID4gKwlyZXR1cm4gcmV0Owo+ID4gPiA+ICt9Cj4gPiA+ID4gKwo+ID4gPiA+ICAvKioKPiA+ ID4gPiAgICogenlucW1wX3I1X2dldF90Y21fbm9kZSgpCj4gPiA+ID4gICAqIElkZWFsbHkgdGhp cyBmdW5jdGlvbiBzaG91bGQgcGFyc2UgdGNtIG5vZGUgYW5kIHN0b3JlIGluZm9ybWF0aW9uCj4g PiA+ID4gQEAgLTg5NSwxMiArMTAzNSwyMCBAQCBzdGF0aWMgc3RydWN0IHp5bnFtcF9yNV9jb3Jl ICp6eW5xbXBfcjVfYWRkX3Jwcm9jX2NvcmUoc3RydWN0IGRldmljZSAqY2RldikKPiA+ID4gPiAg ICovCj4gPiA+ID4gIHN0YXRpYyBpbnQgenlucW1wX3I1X2dldF90Y21fbm9kZShzdHJ1Y3Qgenlu cW1wX3I1X2NsdXN0ZXIgKmNsdXN0ZXIpCj4gPiA+ID4gIHsKPiA+ID4gPiArCWNvbnN0IHN0cnVj dCBtZW1fYmFua19kYXRhICp6eW5xbXBfdGNtX2JhbmtzOwo+ID4gPiA+ICAJc3RydWN0IGRldmlj ZSAqZGV2ID0gY2x1c3Rlci0+ZGV2Owo+ID4gPiA+ICAJc3RydWN0IHp5bnFtcF9yNV9jb3JlICpy NV9jb3JlOwo+ID4gPiA+ICAJaW50IHRjbV9iYW5rX2NvdW50LCB0Y21fbm9kZTsKPiA+ID4gPiAg CWludCBpLCBqOwo+ID4gPiA+ICAKPiA+ID4gPiAtCXRjbV9iYW5rX2NvdW50ID0gQVJSQVlfU0la RSh6eW5xbXBfdGNtX2JhbmtzKTsKPiA+ID4gPiArCWlmIChjbHVzdGVyLT5tb2RlID09IFNQTElU X01PREUpIHsKPiA+ID4gPiArCQl6eW5xbXBfdGNtX2JhbmtzID0genlucW1wX3RjbV9iYW5rc19z cGxpdDsKPiA+ID4gPiArCQl0Y21fYmFua19jb3VudCA9IEFSUkFZX1NJWkUoenlucW1wX3RjbV9i YW5rc19zcGxpdCk7Cj4gPiA+ID4gKwl9IGVsc2Ugewo+ID4gPiA+ICsJCXp5bnFtcF90Y21fYmFu a3MgPSB6eW5xbXBfdGNtX2JhbmtzX2xvY2tzdGVwOwo+ID4gPiA+ICsJCXRjbV9iYW5rX2NvdW50 ID0gQVJSQVlfU0laRSh6eW5xbXBfdGNtX2JhbmtzX2xvY2tzdGVwKTsKPiA+ID4gPiArCX0KPiA+ ID4KPiA+ID4gV2h5IGFyZSB0aGUgY2hhbmdlcyB0byBnZXQgVENNIGJhbmsgaW5mb3JtYXRpb24g ZnJvbSB0aGUgRFQgYW5kIGVuaGFuY2VtZW50IHRvCj4gPiA+IHN1cHBvcnQgbG9ja3N0ZXAgbW9k ZSBpbiB0aGUgc2FtZSBwYXRjaD8KPiA+IAo+ID4gQWN0dWFsbHkgVENNIGluIGxvY2tzdGVwIG1v ZGUgd2FzIHN1cHBvcnRlZCBiZWZvcmUgYXMgd2VsbC4gSXQncyBqdXN0IEkgd2FzIHVzaW5nIHNh bWUgdGFibGUgaW4gbG9ja3N0ZXAgbW9kZSBiZWZvcmUuCj4gPiAKPiA+IEhvd2V2ZXIsIG5vdyBJ IGFtIGhhdmluZyB0d28gdGFibGVzIGZvciBzcGxpdCBtb2RlIGFuZCBsb2Nrc3RlcCBtb2RlLgo+ ID4gCj4gPiBJIGhhZCB0byBkbyB0aGlzIGFzIEkgaGF2ZSBpbnRyb2R1Y2VkICJkYSIgZmllbGQg aW4gInN0cnVjdCBtZW1fYmFua19kYXRhIiBvYmplY3QuwqAgVGhpcyBtYWtlcyBpdCBlYXN5IHRv IHByb2Nlc3MKPiA+IAo+ID4gImRldmljZSBhZGRyZXNzIiBkZXJpdmVkIGZyb20gZGV2aWNlLXRy ZWUuCj4gPiAKPiA+IEFuZCBhcyBJIGhhdmUgaW50cm9kdWNlZCAidTMyIGRhIiwgSSBoYWQgdG8g bW9kaWZ5IHRhYmxlIGFzIHdlbGwgYW5kIHJlbW92ZSBoYXJkY29kaW5nIG9mICJkYSIgY2FsY3Vs YXRpb24gaW4gInRjbV9tZW1fbWFwIiBmdW5jdGlvbi4KPiA+IAo+ID4gQXMgYWxsIG9mIHRoaXMg aXMgY29ubmVjdGVkLCBJIGhhdmUgdGhlbSBpbiBzYW1lIHBhdGNoLiBObyBuZXcgZnVuY3Rpb25h bGl0eSBpcyBhZGRlZCwgYnV0IGp1c3QgY29kZSByZWZhY3RvcmluZy4KPiA+IAo+ID4gPiA+ICsK PiA+ID4gPiAgCj4gPiA+ID4gIAkvKiBjb3VudCBwZXIgY29yZSB0Y20gYmFua3MgKi8KPiA+ID4g PiAgCXRjbV9iYW5rX2NvdW50ID0gdGNtX2JhbmtfY291bnQgLyBjbHVzdGVyLT5jb3JlX2NvdW50 Owo+ID4gPiA+IEBAIC05NTEsMTAgKzEwOTksMjUgQEAgc3RhdGljIGludCB6eW5xbXBfcjVfY29y ZV9pbml0KHN0cnVjdCB6eW5xbXBfcjVfY2x1c3RlciAqY2x1c3RlciwKPiA+ID4gPiAgCQkJICAg ICAgIGVudW0gcnB1X3RjbV9jb21iIHRjbV9tb2RlKQo+ID4gPiA+ICB7Cj4gPiA+ID4gIAlzdHJ1 Y3QgZGV2aWNlICpkZXYgPSBjbHVzdGVyLT5kZXY7Cj4gPiA+ID4gKwlzdHJ1Y3QgZGV2aWNlX25v ZGUgKm5wOwo+ID4gPiA+ICAJc3RydWN0IHp5bnFtcF9yNV9jb3JlICpyNV9jb3JlOwo+ID4gPiA+ ICAJaW50IHJldCwgaTsKPiA+ID4gPiAgCj4gPiA+ID4gLQlyZXQgPSB6eW5xbXBfcjVfZ2V0X3Rj bV9ub2RlKGNsdXN0ZXIpOwo+ID4gPiA+ICsJLyoKPiA+ID4gPiArCSAqIHRyeSB0byBnZXQgdGNt IG5vZGVzIGZyb20gZHQgYnV0IGlmIGZhaWwsIHVzZSBoYXJkY29kZSBhZGRyZXNzZXMgb25seQo+ ID4gPiA+ICsJICogZm9yIHp5bnFtcCBwbGF0Zm9ybS4gTmV3IHBsYXRmb3JtcyBtdXN0IHVzZSBk dCBiaW5kaW5ncyBmb3IgVENNLgo+ID4gPiA+ICsJICovCj4gPiA+ID4gKwlyZXQgPSB6eW5xbXBf cjVfZ2V0X3RjbV9ub2RlX2Zyb21fZHQoY2x1c3Rlcik7Cj4gPiA+ID4gKwlpZiAocmV0KSB7Cj4g PiA+ID4gKwkJbnAgPSBvZl9nZXRfY29tcGF0aWJsZV9jaGlsZChkZXZfb2Zfbm9kZShkZXYpLCAi eGxueCx6eW5xbXAtcjVmIik7Cj4gPiA+ID4gKwkJaWYgKG5wKSB7Cj4gPiA+Cj4gPiA+IFdoeSB3 YXMgdGhpcyBjaGVjayBhZGRlZD8KPiA+IAo+ID4gV2Ugd2FudCB0byBtYWludGFpbiBiYWNrd2Fy ZCBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgYmluZGluZ3Mgb25seSBmb3IgenlucW1wIHBs YXRmb3JtLgo+ID4gCj4KPiBUaGF0IGNoZWNrIGhhcyBub3RoaW5nIHRvIGRvIHdpdGggYmFja3dh cmQgY29tcGF0aWJpbGl0eS4KPgo+ID4gU28sIGhhcmRjb2RlIHRhYmxlIGlzIHVzZWQgb25seSBm b3IgInp5bnFtcCIgcGxhdGZvcm0gaWYgZ2V0dGluZyAicmVnIiBpbmZvcm1hdGlvbiBmcm9tIGRl dmljZS10cmVlIGZhaWxzLgo+ID4gCj4gPiBJZiBub2RlIGlzIG5vdCBjb21wYXRpYmxlIHdpdGgg InhsbngsenlucW1wLXI1ZiIgdGhlbiBpdCBpcyBuZXcgcGxhdGZvcm0gYW5kIHdlIG11c3Qgbm90 IHVzZSBoYXJkY29kZQo+ID4gCj4gPiB0YWJsZSBpbnN0ZWFkIHdlIHNob3VsZCBmYWlsLgo+ID4g Cj4KPiBTbyB0aGlzIGlzIHRoZSByZWFsIHJlYXNvbiBmb3IgdGhlIGNoZWNrLCBidXQgenlucW1w LXI1ZiBpcyBzdGlsbCB0aGUgb25seQo+IHBsYXRmb3JtIHN1cHBvcnRlZCBieSB0aGlzIGRyaXZl ci4gIFBsZWFzZSByZW1vdmUgYW5kIHJlLWludHJvZHVjZSBpZi93aGVuIGEgbmV3Cj4gcGxhdGZv cm0gaXMgYWRkZWQuCj4KPiA+IAo+ID4gPiBTbyBmYXIgdGhlcmUgYXJlIHRvbyBtYW55IHVuYW5z d2VyZWQgcXVlc3Rpb25zIHdpdGggdGhpcyBwYXRjaHNldCBhbmQgYXMgc3VjaCBJCj4gPiA+IHdp bGwgc3RvcCBoZXJlLgo+ID4gCj4gPiBObyBwcm9ibGVtLiBQbGVhc2UgbGV0IG1lIGtub3cgaWYg eW91IGhhdmUgYW55IGZ1cnRoZXIgcXVlc3Rpb25zLgo+ID4gCj4gPiAKPiA+ID4gTWF0aGlldQo+ ID4gPgo+ID4gPiA+ICsJCQlyZXQgPSB6eW5xbXBfcjVfZ2V0X3RjbV9ub2RlKGNsdXN0ZXIpOwo+ ID4gPiA+ICsJCX0gZWxzZSB7Cj4gPiA+ID4gKwkJCWRldl9lcnIoZGV2LCAidGNtIG5vdCBmb3Vu ZFxuIik7Cj4gPiA+ID4gKwkJCXJldHVybiAtRUlOVkFMOwo+ID4gPiA+ICsJCX0KPiA+ID4gPiAr CX0KPiA+ID4gPiArCj4gPiA+ID4gIAlpZiAocmV0IDwgMCkgewo+ID4gPiA+ICAJCWRldl9lcnIo ZGV2LCAiY2FuJ3QgZ2V0IHRjbSBub2RlLCBlcnIgJWRcbiIsIHJldCk7Cj4gPiA+ID4gIAkJcmV0 dXJuIHJldDsKPiA+ID4gPiAtLSAKPiA+ID4gPiAyLjI1LjEKPiA+ID4gPiAKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFp bGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlz dHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK