From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 018CAA0C57; Mon, 1 Nov 2021 12:48:51 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id DA47440E28; Mon, 1 Nov 2021 12:48:51 +0100 (CET) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by mails.dpdk.org (Postfix) with ESMTP id 2C0EE40DF6 for ; Mon, 1 Nov 2021 12:48:50 +0100 (CET) X-IronPort-AV: E=McAfee;i="6200,9189,10154"; a="230853180" X-IronPort-AV: E=Sophos;i="5.87,199,1631602800"; d="scan'208";a="230853180" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Nov 2021 04:48:49 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.87,199,1631602800"; d="scan'208";a="488604466" Received: from orsmsx605.amr.corp.intel.com ([10.22.229.18]) by orsmga007.jf.intel.com with ESMTP; 01 Nov 2021 04:48:49 -0700 Received: from orsmsx607.amr.corp.intel.com (10.22.229.20) by ORSMSX605.amr.corp.intel.com (10.22.229.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Mon, 1 Nov 2021 04:48:48 -0700 Received: from orsmsx608.amr.corp.intel.com (10.22.229.21) by ORSMSX607.amr.corp.intel.com (10.22.229.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Mon, 1 Nov 2021 04:48:48 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx608.amr.corp.intel.com (10.22.229.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12 via Frontend Transport; Mon, 1 Nov 2021 04:48:48 -0700 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.100) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.12; Mon, 1 Nov 2021 04:48:48 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KGyDdp0EbKX3qJcZY1X/C/Juw9JVK3DfOSTioGoQyLtsUrpe85JkM4JbS9v5o6YK5xhF0VY8ihRsVd5d2bpdGWkg/bS6r4MQscq+ockXPCSXFgf/ilYociLh6Uctn6rHQ5vIDFB2BCYUby1qPL9P7V+IUbPBYQq609k+spvMYregNG196YrrHKtLxW4qZE7zLoCgvMODplXF/KlI1VadNnARfN3ntzf5Kd6r//JXdFK3MHv6CEAPcCU2lJercJK8RFJwNxByS7LlloqQnDtSPJn3Gok/2Xl7Yt4Br9RYKxpu+vCc9QyzyNueBMbrN3zE+FnAR8lCqsmgx2vF1yM/Ag== 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=8BPfAVetrGYgAp4rH26sysglBM7Q+ImtbSk+TxUyREk=; b=KLDxetvMmmHAfmlqUGlTyWWlwrcZ8L4Z0Y5FOiRiNgJZc3efNDZprAy2/uP3tb4DKXF1ApgZrVv7LiNtfVrZtlOUU3nYpfOjG/4VewwT5oFrVO5L6rAnK0NQny7+9X6OqmszNts/PWcYEQjZQN/oh7mzGHW2v2ss5NjiHAwbNDAh3ACewvoQfq/jd84iRTj62lRzj8yvQbAflrOorD8Bm06MjX237uIcaNDh41AArsLAfGh1zG5QDkSjN8uaNBE2BqIR18wbaY9pEQMPiK7Ia429SSNbOelGZ03ncBPQHjScCi749QWm+lVNTbUIRkfLOcVZMZBg1svdKHTzJB6DqQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8BPfAVetrGYgAp4rH26sysglBM7Q+ImtbSk+TxUyREk=; b=PkZjQ59El4UZY0AemcUV1MfPz5/LnnpngjLWxpW6ZneyHSaZdY49G1Rv3BrihgxKXZkUBAfyoJvKLWxyCl+NUlnuADbQ4P2oFZmnl+OopSlOdOQ+273uAUnYRqwRlUzip/RZkcmDX1mG68FQCz+AMkTh3Oz/bA7ImYUeFmh0NRs= Received: from SN6PR11MB3504.namprd11.prod.outlook.com (2603:10b6:805:d0::17) by SA2PR11MB5081.namprd11.prod.outlook.com (2603:10b6:806:118::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4649.15; Mon, 1 Nov 2021 11:48:46 +0000 Received: from SN6PR11MB3504.namprd11.prod.outlook.com ([fe80::94ce:97cd:1b5f:b511]) by SN6PR11MB3504.namprd11.prod.outlook.com ([fe80::94ce:97cd:1b5f:b511%7]) with mapi id 15.20.4649.019; Mon, 1 Nov 2021 11:48:46 +0000 From: "Xia, Chenbo" To: Vijay Srivastava , "dev@dpdk.org" CC: "maxime.coquelin@redhat.com" , "andrew.rybchenko@oktetlabs.ru" , "Vijay Kumar Srivastava" Thread-Topic: [PATCH v3 02/10] vdpa/sfc: add support for device initialization Thread-Index: AQHXzNQTF9om6BX320a+OK8fUxBDCKvuhieA Date: Mon, 1 Nov 2021 11:48:46 +0000 Message-ID: References: <20210706164418.32615-1-vsrivast@xilinx.com> <20211029144645.30295-1-vsrivast@xilinx.com> <20211029144645.30295-3-vsrivast@xilinx.com> In-Reply-To: <20211029144645.30295-3-vsrivast@xilinx.com> Accept-Language: en-US, zh-CN Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: xilinx.com; dkim=none (message not signed) header.d=none;xilinx.com; dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: ac1deae1-cd1c-49c4-154a-08d99d2d9002 x-ms-traffictypediagnostic: SA2PR11MB5081: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:6790; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: /pZkFZTdd6dXc2LF3vwClI+LoghFiH1X4H1/mK76lCXfImyagSkF6ro1/fsc8fIL8+dkU0duoJ1HuHNkmLgpc3rdOs7WduKEDR9kmN13RhDsEVjchAj8jiCQ+mXv+b0uZAby/aHLuW+4COUxS/0ivr/DJ/V8OWJLidE4KbwEZpWI42+DvhQAiPdFx0PuJiXRjEmbI05oNO3KUswkPImcf8NxWAWBxUdp9b6slhjkpsOJZxLqSh5+uegkWsPIugu0zVwjlAEPub8BHh9rmpG1iG/7iS4WYAbCK4jKRm4bfQbvYyGuML7tyuwyH2WILtR9SwPqN8aYPeVPmevhOCS3utm1BuqJeyKPJezUTk3DTYAqFJcHfllLUUjXiGkyfL0dp5kol83lsAqUdWPqxCIpWLbNEtM8olnRzbtO7h+A2D410qAybPetv1PJMLRCUFWZh0xlN0gsv6YpZyuLnxnW+jNdsTQiVHO/sZmaOP7IQ0GfmokoK0w+A+gB6q1z6hvg6xKECjVyTkz5Dh+3nByr21KbrqaEwEbvVt8iKjQafM/AppAJhMNRenTVLZNeDDcAFCIDqBXAGhzNAnXW3IiSvSIDiJpxELcZWcFPGOWDkkgw/Wmcq4PXHJtLtmkaT1gFl8OEJEAtqRvvhhV+ViUZS4wWVRa7Ki5FwhExBHBs2FXXJ0aVewF5KHDrpV8mjg/EWJWzRi5/jZxR8vsv+gFbSA== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SN6PR11MB3504.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(366004)(186003)(26005)(52536014)(64756008)(86362001)(508600001)(66946007)(5660300002)(2906002)(30864003)(8676002)(33656002)(6506007)(53546011)(4326008)(66476007)(8936002)(55016002)(110136005)(71200400001)(38100700002)(122000001)(76116006)(7696005)(83380400001)(54906003)(38070700005)(316002)(82960400001)(66556008)(9686003)(66446008)(579004)(559001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?WDl3SGZSZTdRSkNQbUpVMjk2VEtmUVMyV1ROWDBtNWlQMmFrbndKTEdqbEt5?= =?utf-8?B?Y2k1U2l0Zy9KZUw4VHlNb1VCcDdiRGVaZjBpekRwMkxYWG9RN0hLbGNjZE9G?= =?utf-8?B?NllLcFIrc1NnQSt3ZnRPeGRKWUwrRTRtcVZZMGpHUUp6bmZ2akVUdmF0UkND?= =?utf-8?B?bWw4RDFlUFVzYU13czJ3WHFMRk1UWHFJbDN5RGJsYWxtV2VZRS9Iald6ZFhT?= =?utf-8?B?a3dnK3JGMlNjeXFxaXp3TnlxVnBaSkcvQzV6QVY4T2w1aTdyQjBYK05kTWNF?= =?utf-8?B?K0JmMVFqUGtqejNXQjBPNVFWck5UaFU4aittdDlkenM3bDJZK1dZd2tKMG9K?= =?utf-8?B?aHpCdE1lLytSR0VtcUZsV2JqdUhIU3RkOUFLRjVpVEx3c0FnQWtNa3dFWEdq?= =?utf-8?B?MmJrMllzNUd1OVhnQjFSN04rMUJGRlE4aGhTSlpRYW9MMStBalNBWVpsRXk3?= =?utf-8?B?SkJtOXV0d3k3c0JqV2dzZVJxVWdFUWdkblBDRDFvdEpaZWlaUEl4K2lBL1pH?= =?utf-8?B?R3ovNjBBaUV4M0J1dFZoYzdBc202SzkyT2RvT1ZoUXYwQ05OUWIxWmdtdkx3?= =?utf-8?B?VVFpTlpMT2JCRHpQVitsbVIrMWxvd2Y2MkZ1RVYyNXZRa3ZTMnhyZFE4eDg2?= =?utf-8?B?bnUvYi9NMTNuUXZGdmRWbTRvWUw5L3hyQnAvZDRQY3RBZGVWMUkvNDV3RTlh?= =?utf-8?B?ZGZtZDFTZEdiS20vMTR4NXJVanMxVUxFcUJIaE9qOHROQk04M3NTdlFacDJx?= =?utf-8?B?SURmaXMybTVUUVFncGJ3Q0RMMzM2dE4yUjV5Q2lNRmwwWXRDVC9OdC94OUxw?= =?utf-8?B?c21WUjI4QXRMNWxFTkdYeUNMWHBrNzNrNWZ4RjNCRDhOT3E3NmJJZC9nSDVW?= =?utf-8?B?Um04UDBWWGUxRkZmZ3Mvc3VUK0NzNEhwREROVThoekUyQTJwOGp2R3ZNK05J?= =?utf-8?B?T2NtdjF1VjhSaVRMNHpySUd4ZFROU0RodFhKQ1dXcWhnUk9xVjNKTzRNUnU4?= =?utf-8?B?ZEhMK0gwU0p6UGtxNlJ6dlpGZGZBakhnQVpYZDZPSkx2eGZpOEFKKzBEOG5H?= =?utf-8?B?QSt1Y1ZNazZ4cHpuTW9GaVN6VytLa2FWL1dmMUd4V2hjWmFWdjY5emtLcWlQ?= =?utf-8?B?Z0pvSHZ1VWJyNlJKV0hhazlYdXd5MnVtbTBrM1pSMTNIcWZscURKL0pQQ0dr?= =?utf-8?B?cEl3bFBNL1lpQkhCVXVPM1pZMzMzVVM5dDVIQzljZmVxNE9GQllaSkFlemFB?= =?utf-8?B?cVoxeTJPc2hhUHhUQ3pCclZGR3ltaGJ3c2RhdnZ3Zi92VEJhUVg3NFRPTzZs?= =?utf-8?B?WnpleDk0cXhwU0dHbEtPSUhuTGJyRUVKL3BWWnVjVWxwNGZYa3hTSXlCUkNw?= =?utf-8?B?TUJDSytGdFc3OFZPU0pjR2Y0cFhYc0N0c2NGdUYyd2t4U0JacUo5REZtdzd4?= =?utf-8?B?WnNtU2dCV3RRc08vZHNIaDlhWFBoanNaaWZLQjhYVFl2L0JTMTE4RTFWQnRJ?= =?utf-8?B?ZVZlazM0MGx4THNDcjBIYUFRTTN3a2pkVmRJd2RBQnQ5U1p5ME83Y1VGZHVo?= =?utf-8?B?d1dHNTQvQXUwNHQ3dFRNTkF3TUN2WlJnNFVSUmd2YVJSazd3bnBEYSt6OXgw?= =?utf-8?B?endQYVVVVGRBTnBBajhJK0JWOHdZR1hXMmRKazl6MmVCUU9pTnY5eG5XczVw?= =?utf-8?B?czlONytpaFdseHlZSU9PQVpoSWxtU2cwOGVBMlZuS1V1eG1wOVVGTVFlMFpo?= =?utf-8?B?S0FUZUpqYUo1TDlpenBlYVpLS0dDSnVCaDNsVWExYXVML3hjRko4TEl5TlVO?= =?utf-8?B?Y3dpUFYvRVVkZnZMcnlBMC9mU3VZL3UrS01uSnJnbTRiOFJWU1M5cytYdVha?= =?utf-8?B?OXRzK3gwU0VNNWFvem9LM3c2b2pJMmxDRE5RYS8wUEhYb25MQkxibXk5cU16?= =?utf-8?B?VUs3ZXArdU5TUVJDZnVsVGFKRHl0SWhJbHFsSWZyN0k3SjFvaGt2N3p3RHBV?= =?utf-8?B?bjhrSjlOVkRzNmIxV1R2UU5kRjFsRjdPMnNZcFZtRkc1SGVkckdEbGRZL1VI?= =?utf-8?B?K0poVmZSL2JlN1RzVUN6ZDZkcTdiTFU2Y1o0OHlGZGFCdVU1S0tKK09FZkVF?= =?utf-8?B?NWRyQjBZbkVITjhxZnVjT3VHRUdUdDI0S004KzFKRnFjYjlGeWJhdDdDL2RY?= =?utf-8?B?L3c9PQ==?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SN6PR11MB3504.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ac1deae1-cd1c-49c4-154a-08d99d2d9002 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Nov 2021 11:48:46.1662 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 7mqm1paTaVofFtPug7J8iFJohV1dZaXg7tfZUsqMdH7ybTBx0LEZpItVbdBixEOrVmesPrctfHGvy9nQpEjpTg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA2PR11MB5081 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH v3 02/10] vdpa/sfc: add support for device initialization X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" SGkgVmlqYXksDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogVmlqYXkg U3JpdmFzdGF2YSA8dmlqYXkuc3JpdmFzdGF2YUB4aWxpbnguY29tPg0KPiBTZW50OiBGcmlkYXks IE9jdG9iZXIgMjksIDIwMjEgMTA6NDcgUE0NCj4gVG86IGRldkBkcGRrLm9yZw0KPiBDYzogbWF4 aW1lLmNvcXVlbGluQHJlZGhhdC5jb207IFhpYSwgQ2hlbmJvIDxjaGVuYm8ueGlhQGludGVsLmNv bT47DQo+IGFuZHJldy5yeWJjaGVua29Ab2t0ZXRsYWJzLnJ1OyBWaWpheSBLdW1hciBTcml2YXN0 YXZhIDx2c3JpdmFzdEB4aWxpbnguY29tPg0KPiBTdWJqZWN0OiBbUEFUQ0ggdjMgMDIvMTBdIHZk cGEvc2ZjOiBhZGQgc3VwcG9ydCBmb3IgZGV2aWNlIGluaXRpYWxpemF0aW9uDQo+IA0KPiBGcm9t OiBWaWpheSBLdW1hciBTcml2YXN0YXZhIDx2c3JpdmFzdEB4aWxpbnguY29tPg0KPiANCj4gQWRk IEhXIGluaXRpYWxpemF0aW9uIGFuZCB2RFBBIGRldmljZSByZWdpc3RyYXRpb24gc3VwcG9ydC4N Cj4gDQo+IFNpZ25lZC1vZmYtYnk6IFZpamF5IEt1bWFyIFNyaXZhc3RhdmEgPHZzcml2YXN0QHhp bGlueC5jb20+DQo+IEFja2VkLWJ5OiBBbmRyZXcgUnliY2hlbmtvIDxhbmRyZXcucnliY2hlbmtv QG9rdGV0bGFicy5ydT4NCj4gLS0tDQo+IHYyOg0KPiAqIFVzZWQgcnRlX21lbXpvbmVfcmVzZXJ2 ZV9hbGlnbmVkIGZvciBtY2RpIGJ1ZmZlciBhbGxvY2F0aW9uLg0KPiAqIEZyZWVpbmcgbWNkaSBi dWZmIHdoZW4gRE1BIG1hcCBmYWlscy4NCj4gKiBGaXhlZCBvbmUgdHlwby4NCj4gDQo+ICBkb2Mv Z3VpZGVzL3ZkcGFkZXZzL3NmYy5yc3QgICAgICAgfCAgIDYgKw0KPiAgZHJpdmVycy92ZHBhL3Nm Yy9tZXNvbi5idWlsZCAgICAgIHwgICAzICsNCj4gIGRyaXZlcnMvdmRwYS9zZmMvc2ZjX3ZkcGEu YyAgICAgICB8ICAyMyArKysNCj4gIGRyaXZlcnMvdmRwYS9zZmMvc2ZjX3ZkcGEuaCAgICAgICB8 ICA0OSArKysrKy0NCj4gIGRyaXZlcnMvdmRwYS9zZmMvc2ZjX3ZkcGFfZGVidWcuaCB8ICAyMSAr KysNCj4gIGRyaXZlcnMvdmRwYS9zZmMvc2ZjX3ZkcGFfaHcuYyAgICB8IDMyNw0KPiArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiAgZHJpdmVycy92ZHBhL3NmYy9zZmNf dmRwYV9sb2cuaCAgIHwgICAzICsNCj4gIGRyaXZlcnMvdmRwYS9zZmMvc2ZjX3ZkcGFfbWNkaS5j ICB8ICA3NCArKysrKysrKysNCj4gIGRyaXZlcnMvdmRwYS9zZmMvc2ZjX3ZkcGFfb3BzLmMgICB8 IDEyOSArKysrKysrKysrKysrKysNCj4gIGRyaXZlcnMvdmRwYS9zZmMvc2ZjX3ZkcGFfb3BzLmgg ICB8ICAzNiArKysrKw0KPiAgMTAgZmlsZXMgY2hhbmdlZCwgNjcwIGluc2VydGlvbnMoKyksIDEg ZGVsZXRpb24oLSkNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3ZkcGEvc2ZjL3NmY192 ZHBhX2RlYnVnLmgNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3ZkcGEvc2ZjL3NmY192 ZHBhX2h3LmMNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3ZkcGEvc2ZjL3NmY192ZHBh X21jZGkuYw0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvdmRwYS9zZmMvc2ZjX3ZkcGFf b3BzLmMNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3ZkcGEvc2ZjL3NmY192ZHBhX29w cy5oDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZG9jL2d1aWRlcy92ZHBhZGV2cy9zZmMucnN0IGIvZG9j L2d1aWRlcy92ZHBhZGV2cy9zZmMucnN0DQo+IGluZGV4IDQ0ZTY5NGYuLmQwNmM0MjcgMTAwNjQ0 DQo+IC0tLSBhL2RvYy9ndWlkZXMvdmRwYWRldnMvc2ZjLnJzdA0KPiArKysgYi9kb2MvZ3VpZGVz L3ZkcGFkZXZzL3NmYy5yc3QNCj4gQEAgLTk1LDMgKzk1LDkgQEAgU0ZDIHZEUEEgUE1EIHByb3Zp ZGVzIHRoZSBmb2xsb3dpbmcgbG9nIHR5cGVzIGF2YWlsYWJsZSBmb3INCj4gY29udHJvbDoNCj4g ICAgTWF0Y2hlcyBhIHN1YnNldCBvZiBwZXItcG9ydCBsb2cgdHlwZXMgcmVnaXN0ZXJlZCBkdXJp bmcgcnVudGltZS4NCj4gICAgQSBmdWxsIG5hbWUgZm9yIGEgcGFydGljdWxhciB0eXBlIG1heSBi ZSBvYnRhaW5lZCBieSBhcHBlbmRpbmcgYQ0KPiAgICBkb3QgYW5kIGEgUENJIGRldmljZSBpZGVu dGlmaWVyIChgYFhYWFg6WFg6WFguWGBgKSB0byB0aGUgcHJlZml4Lg0KPiArDQo+ICstIGBgcG1k LnZkcGEuc2ZjLm1jZGlgYCAoZGVmYXVsdCBsZXZlbCBpcyAqKm5vdGljZSoqKQ0KPiArDQo+ICsg IEV4dHJhIGxvZ2dpbmcgb2YgdGhlIGNvbW11bmljYXRpb24gd2l0aCB0aGUgTklDJ3MgbWFuYWdl bWVudCBDUFUuDQo+ICsgIFRoZSBmb3JtYXQgb2YgdGhlIGxvZyBpcyBjb25zdW1lZCBieSB0aGUg bmV0bG9nZGVjb2RlIGNyb3NzLXBsYXRmb3JtDQo+ICsgIHRvb2wuIE1heSBiZSBtYW5hZ2VkIHBl ci1wb3J0LCBhcyBleHBsYWluZWQgYWJvdmUuDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZkcGEv c2ZjL21lc29uLmJ1aWxkIGIvZHJpdmVycy92ZHBhL3NmYy9tZXNvbi5idWlsZA0KPiBpbmRleCA0 MjU1ZDY1Li5kYzMzM2RlIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL3ZkcGEvc2ZjL21lc29uLmJ1 aWxkDQo+ICsrKyBiL2RyaXZlcnMvdmRwYS9zZmMvbWVzb24uYnVpbGQNCj4gQEAgLTE5LDQgKzE5 LDcgQEAgZW5kZm9yZWFjaA0KPiAgZGVwcyArPSBbJ2NvbW1vbl9zZmNfZWZ4JywgJ2J1c19wY2kn XQ0KPiAgc291cmNlcyA9IGZpbGVzKA0KPiAgCSdzZmNfdmRwYS5jJywNCj4gKwknc2ZjX3ZkcGFf aHcuYycsDQo+ICsJJ3NmY192ZHBhX21jZGkuYycsDQo+ICsJJ3NmY192ZHBhX29wcy5jJywNCj4g ICkNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmRwYS9zZmMvc2ZjX3ZkcGEuYyBiL2RyaXZlcnMv dmRwYS9zZmMvc2ZjX3ZkcGEuYw0KPiBpbmRleCBkODVjNTJiLi5iN2VjYTU2IDEwMDY0NA0KPiAt LS0gYS9kcml2ZXJzL3ZkcGEvc2ZjL3NmY192ZHBhLmMNCj4gKysrIGIvZHJpdmVycy92ZHBhL3Nm Yy9zZmNfdmRwYS5jDQo+IEBAIC0yMzIsNiArMjMyLDE5IEBAIHN0cnVjdCBzZmNfdmRwYV9hZGFw dGVyICoNCj4gIAkJZ290byBmYWlsX3ZmaW9fc2V0dXA7DQo+ICAJfQ0KPiANCj4gKwlzZmNfdmRw YV9sb2dfaW5pdChzdmEsICJodyBpbml0Iik7DQo+ICsJaWYgKHNmY192ZHBhX2h3X2luaXQoc3Zh KSAhPSAwKSB7DQo+ICsJCXNmY192ZHBhX2VycihzdmEsICJmYWlsZWQgdG8gaW5pdCBIVyAlcyIs IHBjaV9kZXYtPm5hbWUpOw0KPiArCQlnb3RvIGZhaWxfaHdfaW5pdDsNCj4gKwl9DQo+ICsNCj4g KwlzZmNfdmRwYV9sb2dfaW5pdChzdmEsICJkZXYgaW5pdCIpOw0KPiArCXN2YS0+b3BzX2RhdGEg PSBzZmNfdmRwYV9kZXZpY2VfaW5pdChzdmEsIFNGQ19WRFBBX0FTX1ZGKTsNCj4gKwlpZiAoc3Zh LT5vcHNfZGF0YSA9PSBOVUxMKSB7DQo+ICsJCXNmY192ZHBhX2VycihzdmEsICJmYWlsZWQgdkRQ QSBkZXYgaW5pdCAlcyIsIHBjaV9kZXYtPm5hbWUpOw0KPiArCQlnb3RvIGZhaWxfZGV2X2luaXQ7 DQo+ICsJfQ0KPiArDQo+ICAJcHRocmVhZF9tdXRleF9sb2NrKCZzZmNfdmRwYV9hZGFwdGVyX2xp c3RfbG9jayk7DQo+ICAJVEFJTFFfSU5TRVJUX1RBSUwoJnNmY192ZHBhX2FkYXB0ZXJfbGlzdCwg c3ZhLCBuZXh0KTsNCj4gIAlwdGhyZWFkX211dGV4X3VubG9jaygmc2ZjX3ZkcGFfYWRhcHRlcl9s aXN0X2xvY2spOw0KPiBAQCAtMjQwLDYgKzI1MywxMiBAQCBzdHJ1Y3Qgc2ZjX3ZkcGFfYWRhcHRl ciAqDQo+IA0KPiAgCXJldHVybiAwOw0KPiANCj4gK2ZhaWxfZGV2X2luaXQ6DQo+ICsJc2ZjX3Zk cGFfaHdfZmluaShzdmEpOw0KPiArDQo+ICtmYWlsX2h3X2luaXQ6DQo+ICsJc2ZjX3ZkcGFfdmZp b190ZWFyZG93bihzdmEpOw0KPiArDQo+ICBmYWlsX3ZmaW9fc2V0dXA6DQo+ICBmYWlsX3NldF9s b2dfcHJlZml4Og0KPiAgCXJ0ZV9mcmVlKHN2YSk7DQo+IEBAIC0yNjYsNiArMjg1LDEwIEBAIHN0 cnVjdCBzZmNfdmRwYV9hZGFwdGVyICoNCj4gIAlUQUlMUV9SRU1PVkUoJnNmY192ZHBhX2FkYXB0 ZXJfbGlzdCwgc3ZhLCBuZXh0KTsNCj4gIAlwdGhyZWFkX211dGV4X3VubG9jaygmc2ZjX3ZkcGFf YWRhcHRlcl9saXN0X2xvY2spOw0KPiANCj4gKwlzZmNfdmRwYV9kZXZpY2VfZmluaShzdmEtPm9w c19kYXRhKTsNCj4gKw0KPiArCXNmY192ZHBhX2h3X2Zpbmkoc3ZhKTsNCj4gKw0KPiAgCXNmY192 ZHBhX3ZmaW9fdGVhcmRvd24oc3ZhKTsNCj4gDQo+ICAJcnRlX2ZyZWUoc3ZhKTsNCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvdmRwYS9zZmMvc2ZjX3ZkcGEuaCBiL2RyaXZlcnMvdmRwYS9zZmMvc2Zj X3ZkcGEuaA0KPiBpbmRleCAzYjc3OTAwLi4wNDZmMjVkIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJz L3ZkcGEvc2ZjL3NmY192ZHBhLmgNCj4gKysrIGIvZHJpdmVycy92ZHBhL3NmYy9zZmNfdmRwYS5o DQo+IEBAIC0xMSwxNCArMTEsMzggQEANCj4gDQo+ICAjaW5jbHVkZSA8cnRlX2J1c19wY2kuaD4N Cj4gDQo+ICsjaW5jbHVkZSAic2ZjX2VmeC5oIg0KPiArI2luY2x1ZGUgInNmY19lZnhfbWNkaS5o Ig0KPiArI2luY2x1ZGUgInNmY192ZHBhX2RlYnVnLmgiDQo+ICAjaW5jbHVkZSAic2ZjX3ZkcGFf bG9nLmgiDQo+ICsjaW5jbHVkZSAic2ZjX3ZkcGFfb3BzLmgiDQo+ICsNCj4gKyNkZWZpbmUgU0ZD X1ZEUEFfREVGQVVMVF9NQ0RJX0lPVkEJCTB4MjAwMDAwMDAwMDAwDQo+IA0KPiAgLyogQWRhcHRl ciBwcml2YXRlIGRhdGEgKi8NCj4gIHN0cnVjdCBzZmNfdmRwYV9hZGFwdGVyIHsNCj4gIAlUQUlM UV9FTlRSWShzZmNfdmRwYV9hZGFwdGVyKQluZXh0Ow0KPiArCS8qDQo+ICsJICogUE1EIHNldHVw IGFuZCBjb25maWd1cmF0aW9uIGlzIG5vdCB0aHJlYWQgc2FmZS4gU2luY2UgaXQgaXMgbm90DQo+ ICsJICogcGVyZm9ybWFuY2Ugc2Vuc2l0aXZlLCBpdCBpcyBiZXR0ZXIgdG8gZ3VhcmFudGVlIHRo cmVhZC1zYWZldHkNCj4gKwkgKiBhbmQgYWRkIGRldmljZSBsZXZlbCBsb2NrLiB2RFBBIGNvbnRy b2wgb3BlcmF0aW9ucyB3aGljaA0KPiArCSAqIGNoYW5nZSBpdHMgc3RhdGUgc2hvdWxkIGFjcXVp cmUgdGhlIGxvY2suDQo+ICsJICovDQo+ICsJcnRlX3NwaW5sb2NrX3QJCQlsb2NrOw0KPiAgCXN0 cnVjdCBydGVfcGNpX2RldmljZQkJKnBkZXY7DQo+ICAJc3RydWN0IHJ0ZV9wY2lfYWRkcgkJcGNp X2FkZHI7DQo+IA0KPiArCWVmeF9mYW1pbHlfdAkJCWZhbWlseTsNCj4gKwllZnhfbmljX3QJCQkq bmljOw0KPiArCXJ0ZV9zcGlubG9ja190CQkJbmljX2xvY2s7DQo+ICsNCj4gKwllZnN5c19iYXJf dAkJCW1lbV9iYXI7DQo+ICsNCj4gKwlzdHJ1Y3Qgc2ZjX2VmeF9tY2RpCQltY2RpOw0KPiArCXNp emVfdAkJCQltY2RpX2J1ZmZfc2l6ZTsNCj4gKw0KPiArCXVpbnQzMl90CQkJbWF4X3F1ZXVlX2Nv dW50Ow0KPiArDQo+ICAJY2hhcgkJCQlsb2dfcHJlZml4W1NGQ19WRFBBX0xPR19QUkVGSVhfTUFY XTsNCj4gIAl1aW50MzJfdAkJCWxvZ3R5cGVfbWFpbjsNCj4gDQo+IEBAIC0yNiw2ICs1MCw3IEBA IHN0cnVjdCBzZmNfdmRwYV9hZGFwdGVyIHsNCj4gIAlpbnQJCQkJdmZpb19kZXZfZmQ7DQo+ICAJ aW50CQkJCXZmaW9fY29udGFpbmVyX2ZkOw0KPiAgCWludAkJCQlpb21tdV9ncm91cF9udW07DQo+ ICsJc3RydWN0IHNmY192ZHBhX29wc19kYXRhCSpvcHNfZGF0YTsNCj4gIH07DQo+IA0KPiAgdWlu dDMyX3QNCj4gQEAgLTM2LDUgKzYxLDI3IEBAIHN0cnVjdCBzZmNfdmRwYV9hZGFwdGVyIHsNCj4g IHN0cnVjdCBzZmNfdmRwYV9hZGFwdGVyICoNCj4gIHNmY192ZHBhX2dldF9hZGFwdGVyX2J5X2Rl dihzdHJ1Y3QgcnRlX3BjaV9kZXZpY2UgKnBkZXYpOw0KPiANCj4gLSNlbmRpZiAgLyogX1NGQ19W RFBBX0ggKi8NCj4gK2ludA0KPiArc2ZjX3ZkcGFfaHdfaW5pdChzdHJ1Y3Qgc2ZjX3ZkcGFfYWRh cHRlciAqc3ZhKTsNCj4gK3ZvaWQNCj4gK3NmY192ZHBhX2h3X2Zpbmkoc3RydWN0IHNmY192ZHBh X2FkYXB0ZXIgKnN2YSk7DQo+IA0KPiAraW50DQo+ICtzZmNfdmRwYV9tY2RpX2luaXQoc3RydWN0 IHNmY192ZHBhX2FkYXB0ZXIgKnN2YSk7DQo+ICt2b2lkDQo+ICtzZmNfdmRwYV9tY2RpX2Zpbmko c3RydWN0IHNmY192ZHBhX2FkYXB0ZXIgKnN2YSk7DQo+ICsNCj4gK2ludA0KPiArc2ZjX3ZkcGFf ZG1hX2FsbG9jKHN0cnVjdCBzZmNfdmRwYV9hZGFwdGVyICpzdmEsIGNvbnN0IGNoYXIgKm5hbWUs DQo+ICsJCSAgIHNpemVfdCBsZW4sIGVmc3lzX21lbV90ICplc21wKTsNCj4gKw0KPiArdm9pZA0K PiArc2ZjX3ZkcGFfZG1hX2ZyZWUoc3RydWN0IHNmY192ZHBhX2FkYXB0ZXIgKnN2YSwgZWZzeXNf bWVtX3QgKmVzbXApOw0KPiArDQo+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBzZmNfdmRwYV9hZGFw dGVyICoNCj4gK3NmY192ZHBhX2FkYXB0ZXJfYnlfZGV2X2hhbmRsZSh2b2lkICpkZXZfaGFuZGxl KQ0KPiArew0KPiArCXJldHVybiAoc3RydWN0IHNmY192ZHBhX2FkYXB0ZXIgKilkZXZfaGFuZGxl Ow0KPiArfQ0KPiArDQo+ICsjZW5kaWYgIC8qIF9TRkNfVkRQQV9IICovDQo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL3ZkcGEvc2ZjL3NmY192ZHBhX2RlYnVnLmgNCj4gYi9kcml2ZXJzL3ZkcGEvc2Zj L3NmY192ZHBhX2RlYnVnLmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAw MC4uY2ZhOGNjNQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2RyaXZlcnMvdmRwYS9zZmMvc2Zj X3ZkcGFfZGVidWcuaA0KPiBAQCAtMCwwICsxLDIxIEBADQo+ICsvKiBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogQlNELTMtQ2xhdXNlDQo+ICsgKg0KPiArICogQ29weXJpZ2h0KGMpIDIwMjAtMjAy MSBYaWxpbngsIEluYy4NCj4gKyAqLw0KPiArDQo+ICsjaWZuZGVmIF9TRkNfVkRQQV9ERUJVR19I Xw0KPiArI2RlZmluZSBfU0ZDX1ZEUEFfREVCVUdfSF8NCj4gKw0KPiArI2luY2x1ZGUgPHJ0ZV9k ZWJ1Zy5oPg0KPiArDQo+ICsjaWZkZWYgUlRFX0xJQlJURV9TRkNfVkRQQV9ERUJVRw0KPiArLyog QXZvaWQgZGVwZW5kZW5jeSBmcm9tIFJURV9MT0dfRFBfTEVWRUwgdG8gYmUgYWJsZSB0byBlbmFi bGUgZGVidWcgY2hlY2sNCj4gKyAqIGluIHRoZSBkcml2ZXIgb25seS4NCj4gKyAqLw0KPiArI2Rl ZmluZSBTRkNfVkRQQV9BU1NFUlQoZXhwKQkJCVJURV9WRVJJRlkoZXhwKQ0KPiArI2Vsc2UNCj4g Ky8qIElmIHRoZSBkcml2ZXIgZGVidWcgaXMgbm90IGVuYWJsZWQsIGZvbGxvdyBEUERLIGRlYnVn L25vbi1kZWJ1ZyAqLw0KPiArI2RlZmluZSBTRkNfVkRQQV9BU1NFUlQoZXhwKQkJCVJURV9BU1NF UlQoZXhwKQ0KPiArI2VuZGlmDQo+ICsNCj4gKyNlbmRpZiAvKiBfU0ZDX1ZEUEFfREVCVUdfSF8g Ki8NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmRwYS9zZmMvc2ZjX3ZkcGFfaHcuYyBiL2RyaXZl cnMvdmRwYS9zZmMvc2ZjX3ZkcGFfaHcuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRl eCAwMDAwMDAwLi43YzI1NmZmDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZHJpdmVycy92ZHBh L3NmYy9zZmNfdmRwYV9ody5jDQo+IEBAIC0wLDAgKzEsMzI3IEBADQo+ICsvKiBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlDQo+ICsgKg0KPiArICogQ29weXJpZ2h0KGMpIDIw MjAtMjAyMSBYaWxpbngsIEluYy4NCj4gKyAqLw0KPiArDQo+ICsjaW5jbHVkZSA8dW5pc3RkLmg+ DQo+ICsNCj4gKyNpbmNsdWRlIDxydGVfY29tbW9uLmg+DQo+ICsjaW5jbHVkZSA8cnRlX2Vycm5v Lmg+DQo+ICsjaW5jbHVkZSA8cnRlX3ZmaW8uaD4NCj4gKw0KPiArI2luY2x1ZGUgImVmeC5oIg0K PiArI2luY2x1ZGUgInNmY192ZHBhLmgiDQo+ICsjaW5jbHVkZSAic2ZjX3ZkcGFfb3BzLmgiDQo+ ICsNCj4gK2V4dGVybiB1aW50MzJfdCBzZmNfbG9ndHlwZV9kcml2ZXI7DQo+ICsNCj4gKyNpZm5k ZWYgUEFHRV9TSVpFDQo+ICsjZGVmaW5lIFBBR0VfU0laRSAgIChzeXNjb25mKF9TQ19QQUdFU0la RSkpDQo+ICsjZW5kaWYNCj4gKw0KPiAraW50DQo+ICtzZmNfdmRwYV9kbWFfYWxsb2Moc3RydWN0 IHNmY192ZHBhX2FkYXB0ZXIgKnN2YSwgY29uc3QgY2hhciAqbmFtZSwNCj4gKwkJICAgc2l6ZV90 IGxlbiwgZWZzeXNfbWVtX3QgKmVzbXApDQo+ICt7DQo+ICsJdWludDY0X3QgbWNkaV9pb3ZhOw0K PiArCXNpemVfdCBtY2RpX2J1ZmZfc2l6ZTsNCj4gKwljb25zdCBzdHJ1Y3QgcnRlX21lbXpvbmUg Km16ID0gTlVMTDsNCj4gKwlpbnQgbnVtYV9ub2RlID0gc3ZhLT5wZGV2LT5kZXZpY2UubnVtYV9u b2RlOw0KPiArCWludCByZXQ7DQo+ICsNCj4gKwltY2RpX2J1ZmZfc2l6ZSA9IFJURV9BTElHTl9D RUlMKGxlbiwgUEFHRV9TSVpFKTsNCj4gKw0KPiArCXNmY192ZHBhX2xvZ19pbml0KHN2YSwgIm5h bWU9JXMsIGxlbj0lenUiLCBuYW1lLCBsZW4pOw0KPiArDQo+ICsJbXogPSBydGVfbWVtem9uZV9y ZXNlcnZlX2FsaWduZWQobmFtZSwgbWNkaV9idWZmX3NpemUsDQo+ICsJCQkJCSBudW1hX25vZGUs DQo+ICsJCQkJCSBSVEVfTUVNWk9ORV9JT1ZBX0NPTlRJRywNCj4gKwkJCQkJIFBBR0VfU0laRSk7 DQo+ICsJaWYgKG16ID09IE5VTEwpIHsNCj4gKwkJc2ZjX3ZkcGFfZXJyKHN2YSwgImNhbm5vdCBy ZXNlcnZlIG1lbW9yeSBmb3IgJXM6IGxlbj0lI3g6ICVzIiwNCj4gKwkJCSAgICAgbmFtZSwgKHVu c2lnbmVkIGludClsZW4sIHJ0ZV9zdHJlcnJvcihydGVfZXJybm8pKTsNCj4gKwkJcmV0dXJuIC1F Tk9NRU07DQo+ICsJfQ0KPiArDQo+ICsJLyogSU9WQSBhZGRyZXNzIGZvciBNQ0RJIHdvdWxkIGJl IHJlLWNhbGN1bGF0ZWQgaWYgbWFwcGluZw0KPiArCSAqIHVzaW5nIGRlZmF1bHQgSU9WQSB3b3Vs ZCBmYWlsLg0KPiArCSAqIFRPRE86IEVhcmxpZXIgdGhlcmUgd2FzIG5vIHdheSB0byBnZXQgdmFs aWQgSU9WQSByYW5nZS4NCj4gKwkgKiBSZWNlbnRseSBhIHBhdGNoIGhhcyBiZWVuIHN1Ym1pdHRl ZCB0byBnZXQgdGhlIElPVkEgcmFuZ2UNCj4gKwkgKiB1c2luZyBpb2N0bC4gVkZJT19JT01NVV9H RVRfSU5GTy4gVGhpcyBwYXRjaCBpcyBhdmFpbGFibGUNCj4gKwkgKiBpbiB0aGUga2VybmVsIHZl cnNpb24gPj0gNS40LiBTdXBwb3J0IHRvIGdldCB0aGUgZGVmYXVsdA0KPiArCSAqIElPVkEgYWRk cmVzcyBmb3IgTUNESSBidWZmZXIgdXNpbmcgYXZhaWxhYmxlIElPVkEgcmFuZ2UNCj4gKwkgKiB3 b3VsZCBiZSBhZGRlZCBsYXRlci4gTWVhbndoaWxlIGRlZmF1bHQgSU9WQSBmb3IgTUNESSBidWZm ZXINCj4gKwkgKiBpcyBrZXB0IGF0IGhpZ2ggbWVtIGF0IDJUQi4gSW4gY2FzZSBvZiBvdmVybGFw IG5ldyBhdmFpbGFibGUNCj4gKwkgKiBhZGRyZXNzZXMgd291bGQgYmUgc2VhcmNoZWQgYW5kIHNh bWUgd291bGQgYmUgdXNlZC4NCj4gKwkgKi8NCj4gKwltY2RpX2lvdmEgPSBTRkNfVkRQQV9ERUZB VUxUX01DRElfSU9WQTsNCj4gKw0KPiArCWRvIHsNCj4gKwkJcmV0ID0gcnRlX3ZmaW9fY29udGFp bmVyX2RtYV9tYXAoc3ZhLT52ZmlvX2NvbnRhaW5lcl9mZCwNCj4gKwkJCQkJCSAodWludDY0X3Qp bXotPmFkZHIsIG1jZGlfaW92YSwNCj4gKwkJCQkJCSBtY2RpX2J1ZmZfc2l6ZSk7DQo+ICsJCWlm IChyZXQgPT0gMCkNCj4gKwkJCWJyZWFrOw0KPiArDQo+ICsJCW1jZGlfaW92YSA9IG1jZGlfaW92 YSA+PiAxOw0KPiArCQlpZiAobWNkaV9pb3ZhIDwgbWNkaV9idWZmX3NpemUpCXsNCj4gKwkJCXNm Y192ZHBhX2VycihzdmEsDQo+ICsJCQkJICAgICAiRE1BIG1hcHBpbmcgZmFpbGVkIGZvciBNQ0RJ IDogJXMiLA0KPiArCQkJCSAgICAgcnRlX3N0cmVycm9yKHJ0ZV9lcnJubykpOw0KPiArCQkJcnRl X21lbXpvbmVfZnJlZShteik7DQo+ICsJCQlyZXR1cm4gcmV0Ow0KPiArCQl9DQo+ICsNCj4gKwl9 IHdoaWxlIChyZXQgPCAwKTsNCg0KU28gd2hlbiBRRU1VIGlvdmEgYW5kIG1jZGlfaW92YSBjb25m bGljdHMsIHlvdSBqdXN0IGxldCB2ZHBhIGRldiBmYWlsZWQgdG8NCmNvbmZpZ3VyZSwgcmlnaHQ/ DQoNCldoeSBub3QgdXNlIHJlLW1hcHBpbmcgbWNkaSBkbWEgcmVnaW9uIGFzIHRoZSBzb2x1dGlv bj8gQW55IHNpZGUtZWZmZWN0Pw0KT3IgeW91IGp1c3QgYXNzdW1lIGNvbmZsaWN0IGNhbiBoYXJk bHkgaGFwcGVuPw0KDQo+ICsNCj4gKwllc21wLT5lc21fYWRkciA9IG1jZGlfaW92YTsNCj4gKwll c21wLT5lc21fYmFzZSA9IG16LT5hZGRyOw0KPiArCXN2YS0+bWNkaV9idWZmX3NpemUgPSBtY2Rp X2J1ZmZfc2l6ZTsNCj4gKw0KPiArCXNmY192ZHBhX2luZm8oc3ZhLA0KPiArCQkgICAgICAiRE1B IG5hbWU9JXMgbGVuPSV6dSA9PiB2aXJ0PSVwIGlvdmE9JSIgUFJJeDY0LA0KDQpJIGJlbGlldmUg MHglIiBQUkl4NjQgb3IgJSMiIFBSSXg2NCB3aWxsIGJlIG1vcmUgZnJpZW5kbHkNCg0KPiArCQkg ICAgICBuYW1lLCBsZW4sIGVzbXAtPmVzbV9iYXNlLCBlc21wLT5lc21fYWRkcik7DQo+ICsNCj4g KwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArdm9pZA0KPiArc2ZjX3ZkcGFfZG1hX2ZyZWUoc3Ry dWN0IHNmY192ZHBhX2FkYXB0ZXIgKnN2YSwgZWZzeXNfbWVtX3QgKmVzbXApDQo+ICt7DQo+ICsJ aW50IHJldDsNCj4gKw0KPiArCXNmY192ZHBhX2xvZ19pbml0KHN2YSwgIm5hbWU9JXMiLCBlc21w LT5lc21fbXotPm5hbWUpOw0KPiArDQo+ICsJcmV0ID0gcnRlX3ZmaW9fY29udGFpbmVyX2RtYV91 bm1hcChzdmEtPnZmaW9fY29udGFpbmVyX2ZkLA0KPiArCQkJCQkgICAodWludDY0X3QpZXNtcC0+ ZXNtX2Jhc2UsDQo+ICsJCQkJCSAgIGVzbXAtPmVzbV9hZGRyLCBzdmEtPm1jZGlfYnVmZl9zaXpl KTsNCj4gKwlpZiAocmV0IDwgMCkNCj4gKwkJc2ZjX3ZkcGFfZXJyKHN2YSwgIkRNQSB1bm1hcCBm YWlsZWQgZm9yIE1DREkgOiAlcyIsDQo+ICsJCQkgICAgIHJ0ZV9zdHJlcnJvcihydGVfZXJybm8p KTsNCj4gKw0KPiArCXNmY192ZHBhX2luZm8oc3ZhLA0KPiArCQkgICAgICAiRE1BIGZyZWUgbmFt ZT0lcyA9PiB2aXJ0PSVwIGlvdmE9JSIgUFJJeDY0LA0KPiArCQkgICAgICBlc21wLT5lc21fbXot Pm5hbWUsIGVzbXAtPmVzbV9iYXNlLCBlc21wLT5lc21fYWRkcik7DQoNCkRpdHRvLg0KDQo+ICsN Cj4gKwlydGVfZnJlZSgodm9pZCAqKShlc21wLT5lc21fYmFzZSkpOw0KPiArDQo+ICsJc3ZhLT5t Y2RpX2J1ZmZfc2l6ZSA9IDA7DQo+ICsJbWVtc2V0KGVzbXAsIDAsIHNpemVvZigqZXNtcCkpOw0K PiArfQ0KPiArDQo+ICtzdGF0aWMgaW50DQo+ICtzZmNfdmRwYV9tZW1fYmFyX2luaXQoc3RydWN0 IHNmY192ZHBhX2FkYXB0ZXIgKnN2YSwNCj4gKwkJICAgICAgY29uc3QgZWZ4X2Jhcl9yZWdpb25f dCAqbWVtX2VicnApDQo+ICt7DQo+ICsJc3RydWN0IHJ0ZV9wY2lfZGV2aWNlICpwY2lfZGV2ID0g c3ZhLT5wZGV2Ow0KPiArCWVmc3lzX2Jhcl90ICplYnAgPSAmc3ZhLT5tZW1fYmFyOw0KPiArCXN0 cnVjdCBydGVfbWVtX3Jlc291cmNlICpyZXMgPQ0KPiArCQkmcGNpX2Rldi0+bWVtX3Jlc291cmNl W21lbV9lYnJwLT5lYnJfaW5kZXhdOw0KPiArDQo+ICsJU0ZDX0JBUl9MT0NLX0lOSVQoZWJwLCBw Y2lfZGV2LT5uYW1lKTsNCj4gKwllYnAtPmVzYl9yaWQgPSBtZW1fZWJycC0+ZWJyX2luZGV4Ow0K PiArCWVicC0+ZXNiX2RldiA9IHBjaV9kZXY7DQo+ICsJZWJwLT5lc2JfYmFzZSA9IHJlcy0+YWRk cjsNCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZA0KPiArc2Zj X3ZkcGFfbWVtX2Jhcl9maW5pKHN0cnVjdCBzZmNfdmRwYV9hZGFwdGVyICpzdmEpDQo+ICt7DQo+ ICsJZWZzeXNfYmFyX3QgKmVicCA9ICZzdmEtPm1lbV9iYXI7DQo+ICsNCj4gKwlTRkNfQkFSX0xP Q0tfREVTVFJPWShlYnApOw0KPiArCW1lbXNldChlYnAsIDAsIHNpemVvZigqZWJwKSk7DQo+ICt9 DQo+ICsNCj4gK3N0YXRpYyBpbnQNCj4gK3NmY192ZHBhX25pY19wcm9iZShzdHJ1Y3Qgc2ZjX3Zk cGFfYWRhcHRlciAqc3ZhKQ0KPiArew0KPiArCWVmeF9uaWNfdCAqZW5wID0gc3ZhLT5uaWM7DQo+ ICsJaW50IHJjOw0KPiArDQo+ICsJcmMgPSBlZnhfbmljX3Byb2JlKGVucCwgRUZYX0ZXX1ZBUklB TlRfRE9OVF9DQVJFKTsNCj4gKwlpZiAocmMgIT0gMCkNCj4gKwkJc2ZjX3ZkcGFfZXJyKHN2YSwg Im5pYyBwcm9iZSBmYWlsZWQ6ICVzIiwgcnRlX3N0cmVycm9yKHJjKSk7DQo+ICsNCj4gKwlyZXR1 cm4gcmM7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQNCj4gK3NmY192ZHBhX2VzdGltYXRlX3Jl c291cmNlX2xpbWl0cyhzdHJ1Y3Qgc2ZjX3ZkcGFfYWRhcHRlciAqc3ZhKQ0KPiArew0KPiArCWVm eF9kcnZfbGltaXRzX3QgbGltaXRzOw0KPiArCWludCByYzsNCj4gKwl1aW50MzJfdCBldnFfYWxs b2NhdGVkOw0KPiArCXVpbnQzMl90IHJ4cV9hbGxvY2F0ZWQ7DQo+ICsJdWludDMyX3QgdHhxX2Fs bG9jYXRlZDsNCj4gKwl1aW50MzJfdCBtYXhfcXVldWVfY250Ow0KPiArDQo+ICsJbWVtc2V0KCZs aW1pdHMsIDAsIHNpemVvZihsaW1pdHMpKTsNCj4gKw0KPiArCS8qIFJlcXVlc3QgYXQgbGVhc3Qg b25lIFJ4IGFuZCBUeCBxdWV1ZSAqLw0KPiArCWxpbWl0cy5lZGxfbWluX3J4cV9jb3VudCA9IDE7 DQo+ICsJbGltaXRzLmVkbF9taW5fdHhxX2NvdW50ID0gMTsNCj4gKwkvKiBNYW5hZ2VtZW50IGV2 ZW50IHF1ZXVlIHBsdXMgZXZlbnQgcXVldWUgZm9yIFR4L1J4IHF1ZXVlICovDQo+ICsJbGltaXRz LmVkbF9taW5fZXZxX2NvdW50ID0NCj4gKwkJMSArIFJURV9NQVgobGltaXRzLmVkbF9taW5fcnhx X2NvdW50LCBsaW1pdHMuZWRsX21pbl90eHFfY291bnQpOw0KPiArDQo+ICsJbGltaXRzLmVkbF9t YXhfcnhxX2NvdW50ID0gU0ZDX1ZEUEFfTUFYX1FVRVVFX1BBSVJTOw0KPiArCWxpbWl0cy5lZGxf bWF4X3R4cV9jb3VudCA9IFNGQ19WRFBBX01BWF9RVUVVRV9QQUlSUzsNCj4gKwlsaW1pdHMuZWRs X21heF9ldnFfY291bnQgPSAxICsgU0ZDX1ZEUEFfTUFYX1FVRVVFX1BBSVJTOw0KPiArDQo+ICsJ U0ZDX1ZEUEFfQVNTRVJUKGxpbWl0cy5lZGxfbWF4X2V2cV9jb3VudCA+PSBsaW1pdHMuZWRsX21p bl9yeHFfY291bnQpOw0KPiArCVNGQ19WRFBBX0FTU0VSVChsaW1pdHMuZWRsX21heF9yeHFfY291 bnQgPj0gbGltaXRzLmVkbF9taW5fcnhxX2NvdW50KTsNCj4gKwlTRkNfVkRQQV9BU1NFUlQobGlt aXRzLmVkbF9tYXhfdHhxX2NvdW50ID49IGxpbWl0cy5lZGxfbWluX3J4cV9jb3VudCk7DQo+ICsN Cj4gKwkvKiBDb25maWd1cmUgdGhlIG1pbmltdW0gcmVxdWlyZWQgcmVzb3VyY2VzIG5lZWRlZCBm b3IgdGhlDQo+ICsJICogZHJpdmVyIHRvIG9wZXJhdGUsIGFuZCB0aGUgbWF4aW11bSBkZXNpcmVk IHJlc291cmNlcyB0aGF0IHRoZQ0KPiArCSAqIGRyaXZlciBpcyBjYXBhYmxlIG9mIHVzaW5nLg0K PiArCSAqLw0KPiArCXNmY192ZHBhX2xvZ19pbml0KHN2YSwgInNldCBkcnYgbGltaXQiKTsNCj4g KwllZnhfbmljX3NldF9kcnZfbGltaXRzKHN2YS0+bmljLCAmbGltaXRzKTsNCj4gKw0KPiArCXNm Y192ZHBhX2xvZ19pbml0KHN2YSwgImluaXQgbmljIik7DQo+ICsJcmMgPSBlZnhfbmljX2luaXQo c3ZhLT5uaWMpOw0KPiArCWlmIChyYyAhPSAwKSB7DQo+ICsJCXNmY192ZHBhX2VycihzdmEsICJu aWMgaW5pdCBmYWlsZWQ6ICVzIiwgcnRlX3N0cmVycm9yKHJjKSk7DQo+ICsJCWdvdG8gZmFpbF9u aWNfaW5pdDsNCj4gKwl9DQo+ICsNCj4gKwkvKiBGaW5kIHJlc291cmNlIGRpbWVuc2lvbnMgYXNz aWduZWQgYnkgZmlybXdhcmUgdG8gdGhpcyBmdW5jdGlvbiAqLw0KPiArCXJjID0gZWZ4X25pY19n ZXRfdmlfcG9vbChzdmEtPm5pYywgJmV2cV9hbGxvY2F0ZWQsICZyeHFfYWxsb2NhdGVkLA0KPiAr CQkJCSAmdHhxX2FsbG9jYXRlZCk7DQo+ICsJaWYgKHJjICE9IDApIHsNCj4gKwkJc2ZjX3ZkcGFf ZXJyKHN2YSwgInZpIHBvb2wgZ2V0IGZhaWxlZDogJXMiLCBydGVfc3RyZXJyb3IocmMpKTsNCj4g KwkJZ290byBmYWlsX2dldF92aV9wb29sOw0KPiArCX0NCj4gKw0KPiArCS8qIEl0IHN0aWxsIG1h eSBhbGxvY2F0ZSBtb3JlIHRoYW4gbWF4aW11bSwgZW5zdXJlIGxpbWl0ICovDQo+ICsJZXZxX2Fs bG9jYXRlZCA9IFJURV9NSU4oZXZxX2FsbG9jYXRlZCwgbGltaXRzLmVkbF9tYXhfZXZxX2NvdW50 KTsNCj4gKwlyeHFfYWxsb2NhdGVkID0gUlRFX01JTihyeHFfYWxsb2NhdGVkLCBsaW1pdHMuZWRs X21heF9yeHFfY291bnQpOw0KPiArCXR4cV9hbGxvY2F0ZWQgPSBSVEVfTUlOKHR4cV9hbGxvY2F0 ZWQsIGxpbWl0cy5lZGxfbWF4X3R4cV9jb3VudCk7DQo+ICsNCj4gKw0KPiArCW1heF9xdWV1ZV9j bnQgPSBSVEVfTUlOKHJ4cV9hbGxvY2F0ZWQsIHR4cV9hbGxvY2F0ZWQpOw0KPiArCS8qIFN1YnRy YWN0IG1hbmFnZW1lbnQgRVZRIG5vdCB1c2VkIGZvciB0cmFmZmljICovDQo+ICsJbWF4X3F1ZXVl X2NudCA9IFJURV9NSU4oZXZxX2FsbG9jYXRlZCAtIDEsIG1heF9xdWV1ZV9jbnQpOw0KPiArDQo+ ICsJU0ZDX1ZEUEFfQVNTRVJUKG1heF9xdWV1ZV9jbnQgPiAwKTsNCj4gKw0KPiArCXN2YS0+bWF4 X3F1ZXVlX2NvdW50ID0gbWF4X3F1ZXVlX2NudDsNCj4gKw0KPiArCXJldHVybiAwOw0KPiArDQo+ ICtmYWlsX2dldF92aV9wb29sOg0KPiArCWVmeF9uaWNfZmluaShzdmEtPm5pYyk7DQo+ICtmYWls X25pY19pbml0Og0KPiArCXNmY192ZHBhX2xvZ19pbml0KHN2YSwgImZhaWxlZDogJXMiLCBydGVf c3RyZXJyb3IocmMpKTsNCj4gKwlyZXR1cm4gcmM7DQo+ICt9DQo+ICsNCj4gK2ludA0KPiArc2Zj X3ZkcGFfaHdfaW5pdChzdHJ1Y3Qgc2ZjX3ZkcGFfYWRhcHRlciAqc3ZhKQ0KPiArew0KPiArCWVm eF9iYXJfcmVnaW9uX3QgbWVtX2VicjsNCj4gKwllZnhfbmljX3QgKmVucDsNCj4gKwlpbnQgcmM7 DQo+ICsNCj4gKwlzZmNfdmRwYV9sb2dfaW5pdChzdmEsICJlbnRyeSIpOw0KPiArDQo+ICsJc2Zj X3ZkcGFfbG9nX2luaXQoc3ZhLCAiZ2V0IGZhbWlseSIpOw0KPiArCXJjID0gc2ZjX2VmeF9mYW1p bHkoc3ZhLT5wZGV2LCAmbWVtX2ViciwgJnN2YS0+ZmFtaWx5KTsNCj4gKwlpZiAocmMgIT0gMCkN Cj4gKwkJZ290byBmYWlsX2ZhbWlseTsNCj4gKwlzZmNfdmRwYV9sb2dfaW5pdChzdmEsDQo+ICsJ CQkgICJmYW1pbHkgaXMgJXUsIG1lbWJhciBpcyAldSwiDQo+ICsJCQkgICJmdW5jdGlvbiBjb250 cm9sIHdpbmRvdyBvZmZzZXQgaXMgJSMiIFBSSXg2NCwNCj4gKwkJCSAgc3ZhLT5mYW1pbHksIG1l bV9lYnIuZWJyX2luZGV4LCBtZW1fZWJyLmVicl9vZmZzZXQpOw0KDQpJZiBlYnJfaWR4IGlzIGlu dCwgdGhlbiAldSAtPiAlZC4gQnV0IGlmIGl0J3MgYSBiYXIgaW5kZXgsIGl0cyB0eXBlIHNob3Vs ZA0KYmUgdW5zaWduZWQgaW50IGFuZCB5b3Ugc2hvdWxkIGNoYW5nZSB0aGUgZGVmaW5pdGlvbiBp biBzZmMgY29tbW9uIGNvZGUuDQoNCj4gKw0KPiArCXNmY192ZHBhX2xvZ19pbml0KHN2YSwgImlu aXQgbWVtIGJhciIpOw0KPiArCXJjID0gc2ZjX3ZkcGFfbWVtX2Jhcl9pbml0KHN2YSwgJm1lbV9l YnIpOw0KPiArCWlmIChyYyAhPSAwKQ0KPiArCQlnb3RvIGZhaWxfbWVtX2Jhcl9pbml0Ow0KPiAr DQo+ICsJc2ZjX3ZkcGFfbG9nX2luaXQoc3ZhLCAiY3JlYXRlIG5pYyIpOw0KPiArCXJ0ZV9zcGlu bG9ja19pbml0KCZzdmEtPm5pY19sb2NrKTsNCj4gKwlyYyA9IGVmeF9uaWNfY3JlYXRlKHN2YS0+ ZmFtaWx5LCAoZWZzeXNfaWRlbnRpZmllcl90ICopc3ZhLA0KPiArCQkJICAgICZzdmEtPm1lbV9i YXIsIG1lbV9lYnIuZWJyX29mZnNldCwNCj4gKwkJCSAgICAmc3ZhLT5uaWNfbG9jaywgJmVucCk7 DQo+ICsJaWYgKHJjICE9IDApIHsNCj4gKwkJc2ZjX3ZkcGFfZXJyKHN2YSwgIm5pYyBjcmVhdGUg ZmFpbGVkOiAlcyIsIHJ0ZV9zdHJlcnJvcihyYykpOw0KPiArCQlnb3RvIGZhaWxfbmljX2NyZWF0 ZTsNCj4gKwl9DQo+ICsJc3ZhLT5uaWMgPSBlbnA7DQo+ICsNCj4gKwlzZmNfdmRwYV9sb2dfaW5p dChzdmEsICJpbml0IG1jZGkiKTsNCj4gKwlyYyA9IHNmY192ZHBhX21jZGlfaW5pdChzdmEpOw0K PiArCWlmIChyYyAhPSAwKSB7DQo+ICsJCXNmY192ZHBhX2VycihzdmEsICJtY2RpIGluaXQgZmFp bGVkOiAlcyIsIHJ0ZV9zdHJlcnJvcihyYykpOw0KPiArCQlnb3RvIGZhaWxfbWNkaV9pbml0Ow0K PiArCX0NCj4gKw0KPiArCXNmY192ZHBhX2xvZ19pbml0KHN2YSwgInByb2JlIG5pYyIpOw0KPiAr CXJjID0gc2ZjX3ZkcGFfbmljX3Byb2JlKHN2YSk7DQo+ICsJaWYgKHJjICE9IDApDQo+ICsJCWdv dG8gZmFpbF9uaWNfcHJvYmU7DQo+ICsNCj4gKwlzZmNfdmRwYV9sb2dfaW5pdChzdmEsICJyZXNl dCBuaWMiKTsNCj4gKwlyYyA9IGVmeF9uaWNfcmVzZXQoZW5wKTsNCj4gKwlpZiAocmMgIT0gMCkg ew0KPiArCQlzZmNfdmRwYV9lcnIoc3ZhLCAibmljIHJlc2V0IGZhaWxlZDogJXMiLCBydGVfc3Ry ZXJyb3IocmMpKTsNCj4gKwkJZ290byBmYWlsX25pY19yZXNldDsNCj4gKwl9DQo+ICsNCj4gKwlz ZmNfdmRwYV9sb2dfaW5pdChzdmEsICJlc3RpbWF0ZSByZXNvdXJjZSBsaW1pdHMiKTsNCj4gKwly YyA9IHNmY192ZHBhX2VzdGltYXRlX3Jlc291cmNlX2xpbWl0cyhzdmEpOw0KPiArCWlmIChyYyAh PSAwKQ0KPiArCQlnb3RvIGZhaWxfZXN0aW1hdGVfcnNyY19saW1pdHM7DQo+ICsNCj4gKwlzZmNf dmRwYV9sb2dfaW5pdChzdmEsICJkb25lIik7DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gKw0KPiAr ZmFpbF9lc3RpbWF0ZV9yc3JjX2xpbWl0czoNCj4gK2ZhaWxfbmljX3Jlc2V0Og0KPiArCWVmeF9u aWNfdW5wcm9iZShlbnApOw0KPiArDQo+ICtmYWlsX25pY19wcm9iZToNCj4gKwlzZmNfdmRwYV9t Y2RpX2Zpbmkoc3ZhKTsNCj4gKw0KPiArZmFpbF9tY2RpX2luaXQ6DQo+ICsJc2ZjX3ZkcGFfbG9n X2luaXQoc3ZhLCAiZGVzdHJveSBuaWMiKTsNCj4gKwlzdmEtPm5pYyA9IE5VTEw7DQo+ICsJZWZ4 X25pY19kZXN0cm95KGVucCk7DQo+ICsNCj4gK2ZhaWxfbmljX2NyZWF0ZToNCj4gKwlzZmNfdmRw YV9tZW1fYmFyX2Zpbmkoc3ZhKTsNCj4gKw0KPiArZmFpbF9tZW1fYmFyX2luaXQ6DQo+ICtmYWls X2ZhbWlseToNCj4gKwlzZmNfdmRwYV9sb2dfaW5pdChzdmEsICJmYWlsZWQ6ICVzIiwgcnRlX3N0 cmVycm9yKHJjKSk7DQo+ICsJcmV0dXJuIHJjOw0KPiArfQ0KPiArDQo+ICt2b2lkDQo+ICtzZmNf dmRwYV9od19maW5pKHN0cnVjdCBzZmNfdmRwYV9hZGFwdGVyICpzdmEpDQo+ICt7DQo+ICsJZWZ4 X25pY190ICplbnAgPSBzdmEtPm5pYzsNCj4gKw0KPiArCXNmY192ZHBhX2xvZ19pbml0KHN2YSwg ImVudHJ5Iik7DQo+ICsNCj4gKwlzZmNfdmRwYV9sb2dfaW5pdChzdmEsICJ1bnByb2JlIG5pYyIp Ow0KPiArCWVmeF9uaWNfdW5wcm9iZShlbnApOw0KPiArDQo+ICsJc2ZjX3ZkcGFfbG9nX2luaXQo c3ZhLCAibWNkaSBmaW5pIik7DQo+ICsJc2ZjX3ZkcGFfbWNkaV9maW5pKHN2YSk7DQo+ICsNCj4g KwlzZmNfdmRwYV9sb2dfaW5pdChzdmEsICJuaWMgZmluaSIpOw0KPiArCWVmeF9uaWNfZmluaShl bnApOw0KPiArDQo+ICsJc2ZjX3ZkcGFfbG9nX2luaXQoc3ZhLCAiZGVzdHJveSBuaWMiKTsNCj4g KwlzdmEtPm5pYyA9IE5VTEw7DQo+ICsJZWZ4X25pY19kZXN0cm95KGVucCk7DQo+ICsNCj4gKwlz ZmNfdmRwYV9tZW1fYmFyX2Zpbmkoc3ZhKTsNCj4gK30NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv dmRwYS9zZmMvc2ZjX3ZkcGFfbG9nLmggYi9kcml2ZXJzL3ZkcGEvc2ZjL3NmY192ZHBhX2xvZy5o DQo+IGluZGV4IDg1OGU1ZWUuLjRlN2E4NGYgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvdmRwYS9z ZmMvc2ZjX3ZkcGFfbG9nLmgNCj4gKysrIGIvZHJpdmVycy92ZHBhL3NmYy9zZmNfdmRwYV9sb2cu aA0KPiBAQCAtMjEsNiArMjEsOSBAQA0KPiAgLyoqIE5hbWUgcHJlZml4IGZvciB0aGUgcGVyLWRl dmljZSBsb2cgdHlwZSB1c2VkIHRvIHJlcG9ydCBiYXNpYyBpbmZvcm1hdGlvbg0KPiAqLw0KPiAg I2RlZmluZSBTRkNfVkRQQV9MT0dUWVBFX01BSU5fU1RSCVNGQ19WRFBBX0xPR1RZUEVfUFJFRklY ICJtYWluIg0KPiANCj4gKy8qKiBEZXZpY2UgTUNESSBsb2cgdHlwZSBuYW1lIHByZWZpeCAqLw0K PiArI2RlZmluZSBTRkNfVkRQQV9MT0dUWVBFX01DRElfU1RSCVNGQ19WRFBBX0xPR1RZUEVfUFJF RklYICJtY2RpIg0KPiArDQo+ICAjZGVmaW5lIFNGQ19WRFBBX0xPR19QUkVGSVhfTUFYCTMyDQo+ IA0KPiAgLyogTG9nIFBNRCBtZXNzYWdlLCBhdXRvbWF0aWNhbGx5IGFkZCBwcmVmaXggYW5kIFxu ICovDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZkcGEvc2ZjL3NmY192ZHBhX21jZGkuYw0KPiBi L2RyaXZlcnMvdmRwYS9zZmMvc2ZjX3ZkcGFfbWNkaS5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 DQo+IGluZGV4IDAwMDAwMDAuLjk2MWQyZDMNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9kcml2 ZXJzL3ZkcGEvc2ZjL3NmY192ZHBhX21jZGkuYw0KPiBAQCAtMCwwICsxLDc0IEBADQo+ICsvKiBT UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlDQo+ICsgKg0KPiArICogQ29weXJp Z2h0KGMpIDIwMjAtMjAyMSBYaWxpbngsIEluYy4NCj4gKyAqLw0KPiArDQo+ICsjaW5jbHVkZSAi c2ZjX2VmeF9tY2RpLmgiDQo+ICsNCj4gKyNpbmNsdWRlICJzZmNfdmRwYS5oIg0KPiArI2luY2x1 ZGUgInNmY192ZHBhX2RlYnVnLmgiDQo+ICsjaW5jbHVkZSAic2ZjX3ZkcGFfbG9nLmgiDQo+ICsN Cj4gK3N0YXRpYyBzZmNfZWZ4X21jZGlfZG1hX2FsbG9jX2NiIHNmY192ZHBhX21jZGlfZG1hX2Fs bG9jOw0KPiArc3RhdGljIGludA0KPiArc2ZjX3ZkcGFfbWNkaV9kbWFfYWxsb2Modm9pZCAqY29v a2llLCBjb25zdCBjaGFyICpuYW1lLCBzaXplX3QgbGVuLA0KPiArCQkJZWZzeXNfbWVtX3QgKmVz bXApDQo+ICt7DQo+ICsJc3RydWN0IHNmY192ZHBhX2FkYXB0ZXIgKnN2YSA9IGNvb2tpZTsNCj4g Kw0KPiArCXJldHVybiBzZmNfdmRwYV9kbWFfYWxsb2Moc3ZhLCBuYW1lLCBsZW4sIGVzbXApOw0K PiArfQ0KPiArDQo+ICtzdGF0aWMgc2ZjX2VmeF9tY2RpX2RtYV9mcmVlX2NiIHNmY192ZHBhX21j ZGlfZG1hX2ZyZWU7DQo+ICtzdGF0aWMgdm9pZA0KPiArc2ZjX3ZkcGFfbWNkaV9kbWFfZnJlZSh2 b2lkICpjb29raWUsIGVmc3lzX21lbV90ICplc21wKQ0KPiArew0KPiArCXN0cnVjdCBzZmNfdmRw YV9hZGFwdGVyICpzdmEgPSBjb29raWU7DQo+ICsNCj4gKwlzZmNfdmRwYV9kbWFfZnJlZShzdmEs IGVzbXApOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgc2ZjX2VmeF9tY2RpX3NjaGVkX3Jlc3RhcnRf Y2Igc2ZjX3ZkcGFfbWNkaV9zY2hlZF9yZXN0YXJ0Ow0KPiArc3RhdGljIHZvaWQNCj4gK3NmY192 ZHBhX21jZGlfc2NoZWRfcmVzdGFydCh2b2lkICpjb29raWUpDQo+ICt7DQo+ICsJUlRFX1NFVF9V U0VEKGNvb2tpZSk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBzZmNfZWZ4X21jZGlfbWdtdF9ldnFf cG9sbF9jYiBzZmNfdmRwYV9tY2RpX21nbXRfZXZxX3BvbGw7DQo+ICtzdGF0aWMgdm9pZA0KPiAr c2ZjX3ZkcGFfbWNkaV9tZ210X2V2cV9wb2xsKHZvaWQgKmNvb2tpZSkNCj4gK3sNCj4gKwlSVEVf U0VUX1VTRUQoY29va2llKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBzZmNf ZWZ4X21jZGlfb3BzIHNmY192ZHBhX21jZGlfb3BzID0gew0KPiArCS5kbWFfYWxsb2MJPSBzZmNf dmRwYV9tY2RpX2RtYV9hbGxvYywNCj4gKwkuZG1hX2ZyZWUJPSBzZmNfdmRwYV9tY2RpX2RtYV9m cmVlLA0KPiArCS5zY2hlZF9yZXN0YXJ0ICA9IHNmY192ZHBhX21jZGlfc2NoZWRfcmVzdGFydCwN Cj4gKwkubWdtdF9ldnFfcG9sbCAgPSBzZmNfdmRwYV9tY2RpX21nbXRfZXZxX3BvbGwsDQo+ICsN Cj4gK307DQo+ICsNCj4gK2ludA0KPiArc2ZjX3ZkcGFfbWNkaV9pbml0KHN0cnVjdCBzZmNfdmRw YV9hZGFwdGVyICpzdmEpDQo+ICt7DQo+ICsJdWludDMyX3QgbG9ndHlwZTsNCj4gKw0KPiArCXNm Y192ZHBhX2xvZ19pbml0KHN2YSwgImVudHJ5Iik7DQo+ICsNCj4gKwlsb2d0eXBlID0gc2ZjX3Zk cGFfcmVnaXN0ZXJfbG9ndHlwZSgmKHN2YS0+cGRldi0+YWRkciksDQo+ICsJCQkJCSAgICBTRkNf VkRQQV9MT0dUWVBFX01DRElfU1RSLA0KPiArCQkJCQkgICAgUlRFX0xPR19OT1RJQ0UpOw0KPiAr DQo+ICsJcmV0dXJuIHNmY19lZnhfbWNkaV9pbml0KCZzdmEtPm1jZGksIGxvZ3R5cGUsDQo+ICsJ CQkJIHN2YS0+bG9nX3ByZWZpeCwgc3ZhLT5uaWMsDQo+ICsJCQkJICZzZmNfdmRwYV9tY2RpX29w cywgc3ZhKTsNCj4gK30NCj4gKw0KPiArdm9pZA0KPiArc2ZjX3ZkcGFfbWNkaV9maW5pKHN0cnVj dCBzZmNfdmRwYV9hZGFwdGVyICpzdmEpDQo+ICt7DQo+ICsJc2ZjX3ZkcGFfbG9nX2luaXQoc3Zh LCAiZW50cnkiKTsNCj4gKwlzZmNfZWZ4X21jZGlfZmluaSgmc3ZhLT5tY2RpKTsNCj4gK30NCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmRwYS9zZmMvc2ZjX3ZkcGFfb3BzLmMgYi9kcml2ZXJzL3Zk cGEvc2ZjL3NmY192ZHBhX29wcy5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAw MDAwMDAuLjcxNjk2YmUNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9kcml2ZXJzL3ZkcGEvc2Zj L3NmY192ZHBhX29wcy5jDQo+IEBAIC0wLDAgKzEsMTI5IEBADQo+ICsvKiBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogQlNELTMtQ2xhdXNlDQo+ICsgKg0KPiArICogQ29weXJpZ2h0KGMpIDIwMjAt MjAyMSBYaWxpbngsIEluYy4NCj4gKyAqLw0KPiArDQo+ICsjaW5jbHVkZSA8cnRlX21hbGxvYy5o Pg0KPiArI2luY2x1ZGUgPHJ0ZV92ZHBhLmg+DQo+ICsjaW5jbHVkZSA8cnRlX3ZkcGFfZGV2Lmg+ DQo+ICsjaW5jbHVkZSA8cnRlX3Zob3N0Lmg+DQo+ICsNCj4gKyNpbmNsdWRlICJzZmNfdmRwYV9v cHMuaCINCj4gKyNpbmNsdWRlICJzZmNfdmRwYS5oIg0KPiArDQo+ICsvKiBEdW1teSBmdW5jdGlv bnMgZm9yIG1hbmRhdG9yeSB2RFBBIG9wcyB0byBwYXNzIHZEUEEgZGV2aWNlIHJlZ2lzdHJhdGlv bi4NCj4gKyAqIEluIHN1YnNlcXVlbnQgcGF0Y2hlcyB0aGVzZSBvcHMgd291bGQgYmUgaW1wbGVt ZW50ZWQuDQo+ICsgKi8NCj4gK3N0YXRpYyBpbnQNCj4gK3NmY192ZHBhX2dldF9xdWV1ZV9udW0o c3RydWN0IHJ0ZV92ZHBhX2RldmljZSAqdmRwYV9kZXYsIHVpbnQzMl90ICpxdWV1ZV9udW0pDQo+ ICt7DQo+ICsJUlRFX1NFVF9VU0VEKHZkcGFfZGV2KTsNCj4gKwlSVEVfU0VUX1VTRUQocXVldWVf bnVtKTsNCj4gKw0KPiArCXJldHVybiAtMTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludA0KPiAr c2ZjX3ZkcGFfZ2V0X2ZlYXR1cmVzKHN0cnVjdCBydGVfdmRwYV9kZXZpY2UgKnZkcGFfZGV2LCB1 aW50NjRfdCAqZmVhdHVyZXMpDQo+ICt7DQo+ICsJUlRFX1NFVF9VU0VEKHZkcGFfZGV2KTsNCj4g KwlSVEVfU0VUX1VTRUQoZmVhdHVyZXMpOw0KPiArDQo+ICsJcmV0dXJuIC0xOw0KPiArfQ0KPiAr DQo+ICtzdGF0aWMgaW50DQo+ICtzZmNfdmRwYV9nZXRfcHJvdG9jb2xfZmVhdHVyZXMoc3RydWN0 IHJ0ZV92ZHBhX2RldmljZSAqdmRwYV9kZXYsDQo+ICsJCQkgICAgICAgdWludDY0X3QgKmZlYXR1 cmVzKQ0KPiArew0KPiArCVJURV9TRVRfVVNFRCh2ZHBhX2Rldik7DQo+ICsJUlRFX1NFVF9VU0VE KGZlYXR1cmVzKTsNCj4gKw0KPiArCXJldHVybiAtMTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGlu dA0KPiArc2ZjX3ZkcGFfZGV2X2NvbmZpZyhpbnQgdmlkKQ0KPiArew0KPiArCVJURV9TRVRfVVNF RCh2aWQpOw0KPiArDQo+ICsJcmV0dXJuIC0xOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50DQo+ ICtzZmNfdmRwYV9kZXZfY2xvc2UoaW50IHZpZCkNCj4gK3sNCj4gKwlSVEVfU0VUX1VTRUQodmlk KTsNCj4gKw0KPiArCXJldHVybiAtMTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludA0KPiArc2Zj X3ZkcGFfc2V0X3ZyaW5nX3N0YXRlKGludCB2aWQsIGludCB2cmluZywgaW50IHN0YXRlKQ0KPiAr ew0KPiArCVJURV9TRVRfVVNFRCh2aWQpOw0KPiArCVJURV9TRVRfVVNFRCh2cmluZyk7DQo+ICsJ UlRFX1NFVF9VU0VEKHN0YXRlKTsNCj4gKw0KPiArCXJldHVybiAtMTsNCj4gK30NCj4gKw0KPiAr c3RhdGljIGludA0KPiArc2ZjX3ZkcGFfc2V0X2ZlYXR1cmVzKGludCB2aWQpDQo+ICt7DQo+ICsJ UlRFX1NFVF9VU0VEKHZpZCk7DQo+ICsNCj4gKwlyZXR1cm4gLTE7DQo+ICt9DQo+ICsNCj4gK3N0 YXRpYyBzdHJ1Y3QgcnRlX3ZkcGFfZGV2X29wcyBzZmNfdmRwYV9vcHMgPSB7DQo+ICsJLmdldF9x dWV1ZV9udW0gPSBzZmNfdmRwYV9nZXRfcXVldWVfbnVtLA0KPiArCS5nZXRfZmVhdHVyZXMgPSBz ZmNfdmRwYV9nZXRfZmVhdHVyZXMsDQo+ICsJLmdldF9wcm90b2NvbF9mZWF0dXJlcyA9IHNmY192 ZHBhX2dldF9wcm90b2NvbF9mZWF0dXJlcywNCj4gKwkuZGV2X2NvbmYgPSBzZmNfdmRwYV9kZXZf Y29uZmlnLA0KPiArCS5kZXZfY2xvc2UgPSBzZmNfdmRwYV9kZXZfY2xvc2UsDQo+ICsJLnNldF92 cmluZ19zdGF0ZSA9IHNmY192ZHBhX3NldF92cmluZ19zdGF0ZSwNCj4gKwkuc2V0X2ZlYXR1cmVz ID0gc2ZjX3ZkcGFfc2V0X2ZlYXR1cmVzLA0KPiArfTsNCj4gKw0KPiArc3RydWN0IHNmY192ZHBh X29wc19kYXRhICoNCj4gK3NmY192ZHBhX2RldmljZV9pbml0KHZvaWQgKmRldl9oYW5kbGUsIGVu dW0gc2ZjX3ZkcGFfY29udGV4dCBjb250ZXh0KQ0KPiArew0KPiArCXN0cnVjdCBzZmNfdmRwYV9v cHNfZGF0YSAqb3BzX2RhdGE7DQo+ICsJc3RydWN0IHJ0ZV9wY2lfZGV2aWNlICpwY2lfZGV2Ow0K PiArDQo+ICsJLyogQ3JlYXRlIHZEUEEgb3BzIGNvbnRleHQgKi8NCj4gKwlvcHNfZGF0YSA9IHJ0 ZV96bWFsbG9jKCJ2ZHBhIiwgc2l6ZW9mKHN0cnVjdCBzZmNfdmRwYV9vcHNfZGF0YSksIDApOw0K PiArCWlmIChvcHNfZGF0YSA9PSBOVUxMKQ0KPiArCQlyZXR1cm4gTlVMTDsNCj4gKw0KPiArCW9w c19kYXRhLT52ZHBhX2NvbnRleHQgPSBjb250ZXh0Ow0KPiArCW9wc19kYXRhLT5kZXZfaGFuZGxl ID0gZGV2X2hhbmRsZTsNCj4gKw0KPiArCXBjaV9kZXYgPSBzZmNfdmRwYV9hZGFwdGVyX2J5X2Rl dl9oYW5kbGUoZGV2X2hhbmRsZSktPnBkZXY7DQo+ICsNCj4gKwkvKiBSZWdpc3RlciB2RFBBIERl dmljZSAqLw0KPiArCXNmY192ZHBhX2xvZ19pbml0KGRldl9oYW5kbGUsICJyZWdpc3RlciB2RFBB IGRldmljZSIpOw0KPiArCW9wc19kYXRhLT52ZHBhX2RldiA9DQo+ICsJCXJ0ZV92ZHBhX3JlZ2lz dGVyX2RldmljZSgmcGNpX2Rldi0+ZGV2aWNlLCAmc2ZjX3ZkcGFfb3BzKTsNCj4gKwlpZiAob3Bz X2RhdGEtPnZkcGFfZGV2ID09IE5VTEwpIHsNCj4gKwkJc2ZjX3ZkcGFfZXJyKGRldl9oYW5kbGUs ICJ2RFBBIGRldmljZSByZWdpc3RyYXRpb24gZmFpbGVkIik7DQo+ICsJCWdvdG8gZmFpbF9yZWdp c3Rlcl9kZXZpY2U7DQo+ICsJfQ0KPiArDQo+ICsJb3BzX2RhdGEtPnN0YXRlID0gU0ZDX1ZEUEFf U1RBVEVfSU5JVElBTElaRUQ7DQo+ICsNCj4gKwlyZXR1cm4gb3BzX2RhdGE7DQo+ICsNCj4gK2Zh aWxfcmVnaXN0ZXJfZGV2aWNlOg0KPiArCXJ0ZV9mcmVlKG9wc19kYXRhKTsNCj4gKwlyZXR1cm4g TlVMTDsNCj4gK30NCj4gKw0KPiArdm9pZA0KPiArc2ZjX3ZkcGFfZGV2aWNlX2Zpbmkoc3RydWN0 IHNmY192ZHBhX29wc19kYXRhICpvcHNfZGF0YSkNCj4gK3sNCj4gKwlydGVfdmRwYV91bnJlZ2lz dGVyX2RldmljZShvcHNfZGF0YS0+dmRwYV9kZXYpOw0KPiArDQo+ICsJcnRlX2ZyZWUob3BzX2Rh dGEpOw0KPiArfQ0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92ZHBhL3NmYy9zZmNfdmRwYV9vcHMu aCBiL2RyaXZlcnMvdmRwYS9zZmMvc2ZjX3ZkcGFfb3BzLmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCj4gaW5kZXggMDAwMDAwMC4uODE3YjMwMg0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2Ry aXZlcnMvdmRwYS9zZmMvc2ZjX3ZkcGFfb3BzLmgNCj4gQEAgLTAsMCArMSwzNiBAQA0KPiArLyog U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQ0KPiArICoNCj4gKyAqIENvcHly aWdodChjKSAyMDIwLTIwMjEgWGlsaW54LCBJbmMuDQo+ICsgKi8NCj4gKw0KPiArI2lmbmRlZiBf U0ZDX1ZEUEFfT1BTX0gNCj4gKyNkZWZpbmUgX1NGQ19WRFBBX09QU19IDQo+ICsNCj4gKyNpbmNs dWRlIDxydGVfdmRwYS5oPg0KPiArDQo+ICsjZGVmaW5lIFNGQ19WRFBBX01BWF9RVUVVRV9QQUlS UwkJMQ0KPiArDQo+ICtlbnVtIHNmY192ZHBhX2NvbnRleHQgew0KPiArCVNGQ19WRFBBX0FTX1BG ID0gMCwNCg0KSWYgeW91IGRvbid0IHVzZSBTRkNfVkRQQV9BU19QRiBmb3IgdGhpcyB2ZXJzaW9u IG9mIGRyaXZlciwgd2h5DQpub3QgaW50cm9kdWNlIGl0IHdoZW4geW91IG5lZWQgaXQ/DQoNCj4g KwlTRkNfVkRQQV9BU19WRg0KPiArfTsNCj4gKw0KPiArZW51bSBzZmNfdmRwYV9zdGF0ZSB7DQo+ ICsJU0ZDX1ZEUEFfU1RBVEVfVU5JTklUSUFMSVpFRCA9IDAsDQo+ICsJU0ZDX1ZEUEFfU1RBVEVf SU5JVElBTElaRUQsDQo+ICsJU0ZDX1ZEUEFfU1RBVEVfTlNUQVRFUw0KDQpTaW1pbGFyIGNvbW1l bnQ6IGlmIHlvdSBkb24ndCBuZWVkIGluZm8gbGlrZSB0aGlzICdudW1iZXIgb2Ygc3RhdGVzJywN CnlvdSBjYW4ganVzdCByZW1vdmUgaXQuDQoNClRoYW5rcywNCkNoZW5ibw0KDQo+ICt9Ow0KPiAr DQo+ICtzdHJ1Y3Qgc2ZjX3ZkcGFfb3BzX2RhdGEgew0KPiArCXZvaWQJCQkJKmRldl9oYW5kbGU7 DQo+ICsJc3RydWN0IHJ0ZV92ZHBhX2RldmljZQkJKnZkcGFfZGV2Ow0KPiArCWVudW0gc2ZjX3Zk cGFfY29udGV4dAkJdmRwYV9jb250ZXh0Ow0KPiArCWVudW0gc2ZjX3ZkcGFfc3RhdGUJCXN0YXRl Ow0KPiArfTsNCj4gKw0KPiArc3RydWN0IHNmY192ZHBhX29wc19kYXRhICoNCj4gK3NmY192ZHBh X2RldmljZV9pbml0KHZvaWQgKmFkYXB0ZXIsIGVudW0gc2ZjX3ZkcGFfY29udGV4dCBjb250ZXh0 KTsNCj4gK3ZvaWQNCj4gK3NmY192ZHBhX2RldmljZV9maW5pKHN0cnVjdCBzZmNfdmRwYV9vcHNf ZGF0YSAqb3BzX2RhdGEpOw0KPiArDQo+ICsjZW5kaWYgLyogX1NGQ19WRFBBX09QU19IICovDQo+ IC0tDQo+IDEuOC4zLjENCg0K