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 944E5A0C4E; Tue, 2 Nov 2021 08:14:47 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0C3094069F; Tue, 2 Nov 2021 08:14:47 +0100 (CET) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mails.dpdk.org (Postfix) with ESMTP id 1287B4068F for ; Tue, 2 Nov 2021 08:14:44 +0100 (CET) X-IronPort-AV: E=McAfee;i="6200,9189,10155"; a="228652291" X-IronPort-AV: E=Sophos;i="5.87,202,1631602800"; d="scan'208";a="228652291" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Nov 2021 00:10:27 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.87,202,1631602800"; d="scan'208";a="488985878" Received: from orsmsx604.amr.corp.intel.com ([10.22.229.17]) by orsmga007.jf.intel.com with ESMTP; 02 Nov 2021 00:10:27 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX604.amr.corp.intel.com (10.22.229.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Tue, 2 Nov 2021 00:10:26 -0700 Received: from orsmsx604.amr.corp.intel.com (10.22.229.17) by ORSMSX611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Tue, 2 Nov 2021 00:10:26 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx604.amr.corp.intel.com (10.22.229.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12 via Frontend Transport; Tue, 2 Nov 2021 00:10:26 -0700 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.175) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.12; Tue, 2 Nov 2021 00:10:26 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dMgUY3iOoqBqE9dMuIhvMobdT5r/Xtp16DO3JifWVJb0pNyBCLeWkvh04ivO+mHXlWNdPxhBnXsienHD3cU4dsD4K+avB6kU2TIKb4S7FlJz6dqA40DyR+ICm6JEnEsVlTGBhS3XGtrp2vgem5LdsTq5TofD8rIqq1BoVgzPN5eo12Mnc30jSbz4sa66vGTigOadoI3RLwLIprfTM+/h3VXnIxiQnBEcgHHaRjGtVQ35eLXbkQ6ok5hm1tF/05Ed/pjiAGRSNvrx0703h9KR4wHb9kAdg94EHBoC/qAfuSufdk1MFba+I2MME4xGxFzktWgKXqwap+T5hhDN19o1kw== 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=JpJZDKOEobfgJ+H2m+4LRJUpa4ciSY/T+Rr0RnbVmlU=; b=KkMMF54/gIw3Nf6JyD88U8Dg3PHuxk+/pzUUE90owlyzi6PrmAgaNIVt0OnmBZZVwqfeis42lNQwiW/gbzoHNxtS7V0B/emlZzBRRIMp9CmUtzGcKb5C6Fol4PB4taehkNv+i02MvfZ731ZlsdEpk9Le2a0nTBTfRuvQgzI2m4AwBG8KffFSSw6l1ECEfGo2GYLAHkvEDxoBURiYjmH4q+eqCDiEE5VUq6dMkv6Ga6Ell8PJPDpL8RemIPHw82r/cmX6ag2r7GROjVIDlyfZQi+OMKYU39/xe4wkIchsCHDSRnmDatulXYjWDd8sC3pBkW2fXppN0ZFZG807b3K2NQ== 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=JpJZDKOEobfgJ+H2m+4LRJUpa4ciSY/T+Rr0RnbVmlU=; b=OjNEHE5INmIN3W+ko7kA4pQ/592fXwfLOhcVPRVZ30r92H6cfvoVr9I6idqmWlZvWIoXBBNC9aXwS5Dtbh6SDsFMn789htN86nUX6d11VYPEVXr/oo2vMqTkAcbOZasHTR4olQM6Bh+7Lh2mTq+ybYAFbK1Gbw8yENjxy/KQagQ= Received: from SN6PR11MB3504.namprd11.prod.outlook.com (2603:10b6:805:d0::17) by SA2PR11MB4987.namprd11.prod.outlook.com (2603:10b6:806:113::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4649.15; Tue, 2 Nov 2021 07:10:24 +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.020; Tue, 2 Nov 2021 07:10:24 +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 06/10] vdpa/sfc: add support for dev conf and dev close ops Thread-Index: AQHXzNQXcB4OhQoCjEmsxsZC1O/FEKvvwTfQ Date: Tue, 2 Nov 2021 07:10:24 +0000 Message-ID: References: <20210706164418.32615-1-vsrivast@xilinx.com> <20211029144645.30295-1-vsrivast@xilinx.com> <20211029144645.30295-7-vsrivast@xilinx.com> In-Reply-To: <20211029144645.30295-7-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: 5233aa0d-117d-4a84-8bbd-08d99dcfd75e x-ms-traffictypediagnostic: SA2PR11MB4987: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:338; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: xSBJRupYwtzHRJEhdjJIp9wRSUJ9r65dU2xJkljR4FIkW3lELpBtP/TcAwhlRJ3fsmFLxRLwG2VdyFqErx+e7gEEmF0tjBHJ2jRcN1V9VCPMAEjF9I9RTp5DC/LO9LtGo2NH5JzZGf0hB0qW7HBEweeMhNlZh7A02Qi6UAMJzoymdK61ZYdCJvKszzuzJ9MZeyCySAQYlky79tijT2sqWe+mYs6Wbr1z7fYa5OHMGc7hIH5H7wS3+wvsNX0QRZIAM7AZxeyAcniDIaq0MYKwjRXrLDdkFD1DNj7OkEBpgmPcon7o3m5c++qodSU1kNpDn9Q6WgkayfLDFrebMysWwNz08u1BYU3OV/2vOUDwTRIU5AvqKBHqHMrTVLc5nDE0YlomW+JqhzyXBm8munCbCrVtRgSOYvyhpXgpe8MRR6Be5FnzRNc8KJ3DKGfW7+MDAGl977/Hjv01B6sM5/9DkpUDOEYVgFm1cled3JIAdWRi5Kf92v7Bttc8wLSUcFohnKPh4J6w9EK7NjWlat1NTQG8YRj0Ph0vnnRRS9VcUpi1UMiktTiKFBNFTb1fFyyzeNxGMtIBgkcYeoHdogzFDpd2Avc/tKdmaWNc3T5IewbZ9K9Mlphom4j/eb8JWqAZ523eYM97Azxd47L10UftRSCtZ3KPpENpec/S9zzp6y7D8nuF7YJA3tCW4Zn4n86bKS/qWLe2d2ngjJ5iDYfMgQ== 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)(30864003)(38070700005)(33656002)(66446008)(8676002)(71200400001)(5660300002)(64756008)(186003)(26005)(122000001)(38100700002)(8936002)(7696005)(76116006)(66476007)(66556008)(53546011)(6506007)(66946007)(82960400001)(86362001)(52536014)(110136005)(55016002)(9686003)(508600001)(4326008)(54906003)(83380400001)(316002)(2906002)(559001)(579004); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?cXRVNVV2VEY4T2NtaW55YUxqQkhkUWFHemRON0JlbTB5ZTdCbmFXYjhyWmdQ?= =?utf-8?B?eUdnUllFNWJQREZCeDYwcUM5UHZOYzdSNVlnbzMxVDFxbldYM0NuT01lNWJw?= =?utf-8?B?NDY1Z21GSTd2N0dTMWNSUWFQRkVrd2NSWUZ5bkxSS29TcmZibFFVZWltTnRP?= =?utf-8?B?QmNGdWV5UFJoclBpL1gyV3k1R3drR2h0bW5mbUprQkM5cGx1OTROUEFxZUhN?= =?utf-8?B?c2t6cjlXUGpoa2x4L3U4L1dKdUVJTmxjaUpoaitHRXR5R3daeHFPbllVYVBT?= =?utf-8?B?M2JNUWdreHhhRmZHUHNIY3MvYVo1ZFFnY3dNVmptTVgvZzFhL29YSzg1NjNy?= =?utf-8?B?K01YODBTUnJIVFVZMUVNcnhrbnpHcE1zMjM4VWFFenptbW42NjZZYmoreC95?= =?utf-8?B?S3liSHpPcnFkSGd0Tm1JN25KaFNzUlZyTEI4Y2w3V3J4b1VxM3Q5SU5USDhH?= =?utf-8?B?RitQQnREaXJVcVlpcVFrZldOWnArVVNPblZ6QWgwS2F0NjZRTnZ5V2VSYUht?= =?utf-8?B?Q1EyMW9GSm80T1pnbUduUGVCYzRBQUpsZmJlWmpaeVcvVEhkOWFNQWZYeTZO?= =?utf-8?B?dWc4UTFLYUdHaTVxUlp0SzRzNUlGdlVGUC83V3EwUE5tcmNEaGZYMy9PVEFX?= =?utf-8?B?cVRZcWg2NHRtVG03ek9HeUlxZG1nKzAzUVFNMjB6QmdadFRVeHFYdlVHck5p?= =?utf-8?B?eG9zcUdsaEVxTWVONytldDRDVXpiV2Q4Y3RiZDg3RERFZDRLSXpYaFF1Qmx2?= =?utf-8?B?UmhCZmZlZFZLMXZ0WUIyZEtMcFVvcW5nRFc5MklEVTlzSEZRSnZuV2hJd2xV?= =?utf-8?B?VUIrNFQ3TzAyMkovanJ0WDh1NmFrNktjQ3lwd0FtQzZHOFNRL0t5L1Baenov?= =?utf-8?B?SXVLWFh0K0g1VHJBSTZyMDkvSzU5VzcvOWxINWJZZlZiQit1TEhITEIwNjBu?= =?utf-8?B?anhTeHVoZ3U2RW5jS2lYM2VwMmNXMzJFWDVaSWtVaEkzRDRDSVZlRXNxZCs0?= =?utf-8?B?aHFjZzVNWUdSVHl1RUVUZHUrOVVudnJKUURVZXQ1V3ArSXVOMlNHSVZFajBr?= =?utf-8?B?aDQ5MERCS1Rac0ZUZmI2Y2ZZVDR4eE1NWTRpRGlUMVBwTENJdE9VV2NuNmgz?= =?utf-8?B?dGxPaGhwM3UySUhVM01sVHNPWm1waUZKMGQzYXlwc0lsNTM1anArUVJtQmND?= =?utf-8?B?TEpOV2J2SjA3aHBFNlRxOHhnQnJ5L1RnQ2ZWWUliTHVtSFZUNDI0bzNRZnBp?= =?utf-8?B?cVlVaGRIU25seVhVSEJjSklmZFYzbUg4aEdJNzBQckFUMmEweEkyYlFtMEg1?= =?utf-8?B?RTFhTGQyUStSU0REZDhtL3lsL1RDMFEzZWtkMGIzZnc5OXJ5ZW1LQkxUQ0xY?= =?utf-8?B?b0pmTHVKNm1PSm5RbmVkSTJGWXpHcFZQaTFWaWs4M3dXT2lGQlAvR1BpQkVP?= =?utf-8?B?WEx4OHppMWZSSEU1Qy9obTI0aWpMZVVqZkdCQUczSEhRc012Q3I1TzFzS2VE?= =?utf-8?B?a0d5UElzRzRpbDEzNytrb2dGYS9Sc2ZUR1NEYklrTFJwbW53TFNxTjJCYiti?= =?utf-8?B?S0Jrb2NCRVc5LytDK0RPS0hTR3VqcHZrQkZnNjBDY0VRWUtlREQ4WGROWUpq?= =?utf-8?B?SjNkQ21BbG1JVXFhQVFvdHpPZE5XU2FPQWMzeS9zclUzVURaaC9RUjNhVmk5?= =?utf-8?B?bzJWUitObFlsMUJycEEwMFpVWDN0MTNPYlkzT3E5MUJFZ3NxTS9UeXdhZTlq?= =?utf-8?B?U1d1MUgxNUltWEJ3MER5a3JxbGdPemZnVTMraitNWjNQVkNZOTIrU09WeTYv?= =?utf-8?B?RXd2SlRaTGo2YWV5VVBBcTJFajZNaDF0TjF0QTBtQ0F2R2RpSnVKMVF4ZDZi?= =?utf-8?B?RE0waUJwY1pGL2JVbkFWbkRkTzVwcXlPRzRLTkJvckJUcGE4NklxUzQwRVlS?= =?utf-8?B?MDZ6THF2RDhFd0VUU2hxZ3cxNHVXcXIrTXVBOXhRWEptTnlVOUMwa3QzVnZu?= =?utf-8?B?UURnZ2FtRVUvSnhZTkNyTDdOOTBhVmlySG5KSFpRbnBLcTdIWEY3Uk9Jclh3?= =?utf-8?B?WWhuQ0FsTVB3b2xnQ3cxNC91K2g0Q1BQN3UwcXlNRHkxUnZwSXhuQms4UFYz?= =?utf-8?B?WE9Ua244Tzk2bERVNFdMVXhYaVhHdERCcWtoNjFQRWQrV2RZRXU1QTRBR2Jq?= =?utf-8?B?UVE9PQ==?= 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: 5233aa0d-117d-4a84-8bbd-08d99dcfd75e X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Nov 2021 07:10:24.5964 (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: w4Kss/LTQYH5X0TpWEddvi/vOr4H7ck9nFkNqSoy1y3Ry0oJsntBz+1KnfXdTFKfrNXd3NwvQSe+RjJ0IGTlOw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA2PR11MB4987 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH v3 06/10] vdpa/sfc: add support for dev conf and dev close ops 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 YXZhIDx2c3JpdmFzdEB4aWxpbnguY29tPg0KPiBTdWJqZWN0OiBbUEFUQ0ggdjMgMDYvMTBdIHZk cGEvc2ZjOiBhZGQgc3VwcG9ydCBmb3IgZGV2IGNvbmYgYW5kIGRldiBjbG9zZSBvcHMNCj4gDQo+ IEZyb206IFZpamF5IEt1bWFyIFNyaXZhc3RhdmEgPHZzcml2YXN0QHhpbGlueC5jb20+DQo+IA0K PiBJbXBsZW1lbnQgdkRQQSBvcHMgZGV2X2NvbmYgYW5kIGRldl9jbG9zZSBmb3IgRE1BIG1hcHBp bmcsDQo+IGludGVycnVwdCBhbmQgdmlydHF1ZXVlIGNvbmZpZ3VyYXRpb25zLg0KPiANCj4gU2ln bmVkLW9mZi1ieTogVmlqYXkgS3VtYXIgU3JpdmFzdGF2YSA8dnNyaXZhc3RAeGlsaW54LmNvbT4N Cj4gQWNrZWQtYnk6IEFuZHJldyBSeWJjaGVua28gPGFuZHJldy5yeWJjaGVua29Ab2t0ZXRsYWJz LnJ1Pg0KPiAtLS0NCj4gdjI6DQo+ICogUmVtb3ZlZCByZWR1bmRhbnQgbnVsbCBjaGVjayB3aGls ZSBjYWxsaW5nIGZyZWUoKS4NCj4gKiBBZGRlZCBlcnJvciBoYW5kbGluZyBmb3IgcnRlX3Zob3N0 X2dldF92aG9zdF92cmluZygpLg0KPiANCj4gIGRyaXZlcnMvdmRwYS9zZmMvc2ZjX3ZkcGEuYyAg ICAgfCAgIDYgKw0KPiAgZHJpdmVycy92ZHBhL3NmYy9zZmNfdmRwYS5oICAgICB8ICA0MyArKysr DQo+ICBkcml2ZXJzL3ZkcGEvc2ZjL3NmY192ZHBhX2h3LmMgIHwgIDY5ICsrKysrKw0KPiAgZHJp dmVycy92ZHBhL3NmYy9zZmNfdmRwYV9vcHMuYyB8IDUzMCArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0NCj4gLQ0KPiAgZHJpdmVycy92ZHBhL3NmYy9zZmNfdmRwYV9vcHMu aCB8ICAyOCArKysNCj4gIDUgZmlsZXMgY2hhbmdlZCwgNjU2IGluc2VydGlvbnMoKyksIDIwIGRl bGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmRwYS9zZmMvc2ZjX3ZkcGEu YyBiL2RyaXZlcnMvdmRwYS9zZmMvc2ZjX3ZkcGEuYw0KPiBpbmRleCBjY2JkMjQzLi5iM2M4MmU1 IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL3ZkcGEvc2ZjL3NmY192ZHBhLmMNCj4gKysrIGIvZHJp dmVycy92ZHBhL3NmYy9zZmNfdmRwYS5jDQo+IEBAIC0yNDYsNiArMjQ2LDggQEAgc3RydWN0IHNm Y192ZHBhX29wc19kYXRhICoNCj4gDQo+ICAJc2ZjX3ZkcGFfbG9nX2luaXQoc3ZhLCAiZW50cnki KTsNCj4gDQo+ICsJc2ZjX3ZkcGFfYWRhcHRlcl9sb2NrX2luaXQoc3ZhKTsNCj4gKw0KPiAgCXNm Y192ZHBhX2xvZ19pbml0KHN2YSwgInZmaW8gaW5pdCIpOw0KPiAgCWlmIChzZmNfdmRwYV92Zmlv X3NldHVwKHN2YSkgPCAwKSB7DQo+ICAJCXNmY192ZHBhX2VycihzdmEsICJmYWlsZWQgdG8gc2V0 dXAgZGV2aWNlICVzIiwgcGNpX2Rldi0+bmFtZSk7DQo+IEBAIC0yODAsNiArMjgyLDggQEAgc3Ry dWN0IHNmY192ZHBhX29wc19kYXRhICoNCj4gIAlzZmNfdmRwYV92ZmlvX3RlYXJkb3duKHN2YSk7 DQo+IA0KPiAgZmFpbF92ZmlvX3NldHVwOg0KPiArCXNmY192ZHBhX2FkYXB0ZXJfbG9ja19maW5p KHN2YSk7DQo+ICsNCj4gIGZhaWxfc2V0X2xvZ19wcmVmaXg6DQo+ICAJcnRlX2ZyZWUoc3ZhKTsN Cj4gDQo+IEBAIC0zMTEsNiArMzE1LDggQEAgc3RydWN0IHNmY192ZHBhX29wc19kYXRhICoNCj4g DQo+ICAJc2ZjX3ZkcGFfdmZpb190ZWFyZG93bihzdmEpOw0KPiANCj4gKwlzZmNfdmRwYV9hZGFw dGVyX2xvY2tfZmluaShzdmEpOw0KPiArDQo+ICAJcnRlX2ZyZWUoc3ZhKTsNCj4gDQo+ICAJcmV0 dXJuIDA7DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZkcGEvc2ZjL3NmY192ZHBhLmggYi9kcml2 ZXJzL3ZkcGEvc2ZjL3NmY192ZHBhLmgNCj4gaW5kZXggYzEwYzNkMy4uMWJmOTZlNyAxMDA2NDQN Cj4gLS0tIGEvZHJpdmVycy92ZHBhL3NmYy9zZmNfdmRwYS5oDQo+ICsrKyBiL2RyaXZlcnMvdmRw YS9zZmMvc2ZjX3ZkcGEuaA0KPiBAQCAtODAsMTAgKzgwLDUzIEBAIHN0cnVjdCBzZmNfdmRwYV9v cHNfZGF0YSAqDQo+ICB2b2lkDQo+ICBzZmNfdmRwYV9kbWFfZnJlZShzdHJ1Y3Qgc2ZjX3ZkcGFf YWRhcHRlciAqc3ZhLCBlZnN5c19tZW1fdCAqZXNtcCk7DQo+IA0KPiAraW50DQo+ICtzZmNfdmRw YV9kbWFfbWFwKHN0cnVjdCBzZmNfdmRwYV9vcHNfZGF0YSAqdmRwYV9kYXRhLCBib29sIGRvX21h cCk7DQo+ICsNCj4gIHN0YXRpYyBpbmxpbmUgc3RydWN0IHNmY192ZHBhX2FkYXB0ZXIgKg0KPiAg c2ZjX3ZkcGFfYWRhcHRlcl9ieV9kZXZfaGFuZGxlKHZvaWQgKmRldl9oYW5kbGUpDQo+ICB7DQo+ ICAJcmV0dXJuIChzdHJ1Y3Qgc2ZjX3ZkcGFfYWRhcHRlciAqKWRldl9oYW5kbGU7DQo+ICB9DQo+ IA0KPiArLyoNCj4gKyAqIEFkZCB3cmFwcGVyIGZ1bmN0aW9ucyB0byBhY3F1aXJlL3JlbGVhc2Ug bG9jayB0byBiZSBhYmxlIHRvIHJlbW92ZSBvcg0KPiArICogY2hhbmdlIHRoZSBsb2NrIGluIG9u ZSBwbGFjZS4NCj4gKyAqLw0KPiArc3RhdGljIGlubGluZSB2b2lkDQo+ICtzZmNfdmRwYV9hZGFw dGVyX2xvY2tfaW5pdChzdHJ1Y3Qgc2ZjX3ZkcGFfYWRhcHRlciAqc3ZhKQ0KPiArew0KPiArCXJ0 ZV9zcGlubG9ja19pbml0KCZzdmEtPmxvY2spOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW5saW5l IGludA0KPiArc2ZjX3ZkcGFfYWRhcHRlcl9pc19sb2NrZWQoc3RydWN0IHNmY192ZHBhX2FkYXB0 ZXIgKnN2YSkNCj4gK3sNCj4gKwlyZXR1cm4gcnRlX3NwaW5sb2NrX2lzX2xvY2tlZCgmc3ZhLT5s b2NrKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGlubGluZSB2b2lkDQo+ICtzZmNfdmRwYV9hZGFw dGVyX2xvY2soc3RydWN0IHNmY192ZHBhX2FkYXB0ZXIgKnN2YSkNCj4gK3sNCj4gKwlydGVfc3Bp bmxvY2tfbG9jaygmc3ZhLT5sb2NrKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGlubGluZSBpbnQN Cj4gK3NmY192ZHBhX2FkYXB0ZXJfdHJ5bG9jayhzdHJ1Y3Qgc2ZjX3ZkcGFfYWRhcHRlciAqc3Zh KQ0KPiArew0KPiArCXJldHVybiBydGVfc3BpbmxvY2tfdHJ5bG9jaygmc3ZhLT5sb2NrKTsNCj4g K30NCj4gKw0KPiArc3RhdGljIGlubGluZSB2b2lkDQo+ICtzZmNfdmRwYV9hZGFwdGVyX3VubG9j ayhzdHJ1Y3Qgc2ZjX3ZkcGFfYWRhcHRlciAqc3ZhKQ0KPiArew0KPiArCXJ0ZV9zcGlubG9ja191 bmxvY2soJnN2YS0+bG9jayk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbmxpbmUgdm9pZA0KPiAr c2ZjX3ZkcGFfYWRhcHRlcl9sb2NrX2ZpbmkoX19ydGVfdW51c2VkIHN0cnVjdCBzZmNfdmRwYV9h ZGFwdGVyICpzdmEpDQo+ICt7DQo+ICsJLyogSnVzdCBmb3Igc3ltbWV0cnkgb2YgdGhlIEFQSSAq Lw0KPiArfQ0KPiArDQo+ICAjZW5kaWYgIC8qIF9TRkNfVkRQQV9IICovDQo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL3ZkcGEvc2ZjL3NmY192ZHBhX2h3LmMgYi9kcml2ZXJzL3ZkcGEvc2ZjL3NmY192 ZHBhX2h3LmMNCj4gaW5kZXggN2E2N2JkOC4uYjQ3MzcwOCAxMDA2NDQNCj4gLS0tIGEvZHJpdmVy cy92ZHBhL3NmYy9zZmNfdmRwYV9ody5jDQo+ICsrKyBiL2RyaXZlcnMvdmRwYS9zZmMvc2ZjX3Zk cGFfaHcuYw0KPiBAQCAtOCw2ICs4LDcgQEANCj4gICNpbmNsdWRlIDxydGVfY29tbW9uLmg+DQo+ ICAjaW5jbHVkZSA8cnRlX2Vycm5vLmg+DQo+ICAjaW5jbHVkZSA8cnRlX3ZmaW8uaD4NCj4gKyNp bmNsdWRlIDxydGVfdmhvc3QuaD4NCj4gDQo+ICAjaW5jbHVkZSAiZWZ4LmgiDQo+ICAjaW5jbHVk ZSAic2ZjX3ZkcGEuaCINCj4gQEAgLTEwOSw2ICsxMTAsNzQgQEANCj4gIAltZW1zZXQoZXNtcCwg MCwgc2l6ZW9mKCplc21wKSk7DQo+ICB9DQo+IA0KPiAraW50DQo+ICtzZmNfdmRwYV9kbWFfbWFw KHN0cnVjdCBzZmNfdmRwYV9vcHNfZGF0YSAqb3BzX2RhdGEsIGJvb2wgZG9fbWFwKQ0KPiArew0K PiArCXVpbnQzMl90IGksIGo7DQo+ICsJaW50IHJjOw0KPiArCXN0cnVjdCBydGVfdmhvc3RfbWVt b3J5ICp2aG9zdF9tZW0gPSBOVUxMOw0KPiArCXN0cnVjdCBydGVfdmhvc3RfbWVtX3JlZ2lvbiAq bWVtX3JlZyA9IE5VTEw7DQo+ICsJaW50IHZmaW9fY29udGFpbmVyX2ZkOw0KPiArCXZvaWQgKmRl djsNCj4gKw0KPiArCWRldiA9IG9wc19kYXRhLT5kZXZfaGFuZGxlOw0KPiArCXZmaW9fY29udGFp bmVyX2ZkID0NCj4gKwkJc2ZjX3ZkcGFfYWRhcHRlcl9ieV9kZXZfaGFuZGxlKGRldiktPnZmaW9f Y29udGFpbmVyX2ZkOw0KPiArDQo+ICsJcmMgPSBydGVfdmhvc3RfZ2V0X21lbV90YWJsZShvcHNf ZGF0YS0+dmlkLCAmdmhvc3RfbWVtKTsNCj4gKwlpZiAocmMgPCAwKSB7DQo+ICsJCXNmY192ZHBh X2VycihkZXYsDQo+ICsJCQkgICAgICJmYWlsZWQgdG8gZ2V0IFZNIG1lbW9yeSBsYXlvdXQiKTsN Cj4gKwkJZ290byBlcnJvcjsNCj4gKwl9DQo+ICsNCj4gKwlmb3IgKGkgPSAwOyBpIDwgdmhvc3Rf bWVtLT5ucmVnaW9uczsgaSsrKSB7DQo+ICsJCW1lbV9yZWcgPSAmdmhvc3RfbWVtLT5yZWdpb25z W2ldOw0KPiArDQo+ICsJCWlmIChkb19tYXApIHsNCj4gKwkJCXJjID0gcnRlX3ZmaW9fY29udGFp bmVyX2RtYV9tYXAodmZpb19jb250YWluZXJfZmQsDQo+ICsJCQkJCQltZW1fcmVnLT5ob3N0X3Vz ZXJfYWRkciwNCj4gKwkJCQkJCW1lbV9yZWctPmd1ZXN0X3BoeXNfYWRkciwNCj4gKwkJCQkJCW1l bV9yZWctPnNpemUpOw0KPiArCQkJaWYgKHJjIDwgMCkgew0KPiArCQkJCXNmY192ZHBhX2Vycihk ZXYsDQo+ICsJCQkJCSAgICAgIkRNQSBtYXAgZmFpbGVkIDogJXMiLA0KPiArCQkJCQkgICAgIHJ0 ZV9zdHJlcnJvcihydGVfZXJybm8pKTsNCj4gKwkJCQlnb3RvIGZhaWxlZF92ZmlvX2RtYV9tYXA7 DQo+ICsJCQl9DQo+ICsJCX0gZWxzZSB7DQo+ICsJCQlyYyA9IHJ0ZV92ZmlvX2NvbnRhaW5lcl9k bWFfdW5tYXAodmZpb19jb250YWluZXJfZmQsDQo+ICsJCQkJCQltZW1fcmVnLT5ob3N0X3VzZXJf YWRkciwNCj4gKwkJCQkJCW1lbV9yZWctPmd1ZXN0X3BoeXNfYWRkciwNCj4gKwkJCQkJCW1lbV9y ZWctPnNpemUpOw0KPiArCQkJaWYgKHJjIDwgMCkgew0KPiArCQkJCXNmY192ZHBhX2VycihkZXYs DQo+ICsJCQkJCSAgICAgIkRNQSB1bm1hcCBmYWlsZWQgOiAlcyIsDQo+ICsJCQkJCSAgICAgcnRl X3N0cmVycm9yKHJ0ZV9lcnJubykpOw0KPiArCQkJCWdvdG8gZXJyb3I7DQo+ICsJCQl9DQo+ICsJ CX0NCj4gKwl9DQo+ICsNCj4gKwlmcmVlKHZob3N0X21lbSk7DQo+ICsNCj4gKwlyZXR1cm4gMDsN Cj4gKw0KPiArZmFpbGVkX3ZmaW9fZG1hX21hcDoNCj4gKwlmb3IgKGogPSAwOyBqIDwgaTsgaisr KSB7DQo+ICsJCW1lbV9yZWcgPSAmdmhvc3RfbWVtLT5yZWdpb25zW2pdOw0KPiArCQlyYyA9IHJ0 ZV92ZmlvX2NvbnRhaW5lcl9kbWFfdW5tYXAodmZpb19jb250YWluZXJfZmQsDQo+ICsJCQkJCQkg IG1lbV9yZWctPmhvc3RfdXNlcl9hZGRyLA0KPiArCQkJCQkJICBtZW1fcmVnLT5ndWVzdF9waHlz X2FkZHIsDQo+ICsJCQkJCQkgIG1lbV9yZWctPnNpemUpOw0KDQoncmMgPScgbm90IG5lZWRlZCBh bmQgd2lsbCBtYWtlIHRoZSBsb2dpYyBpbmNvcnJlY3QuIFRoaW5rIG9mIGRtYSBtYXAgZmFpbGVk DQpidXQgdW5tYXAgaGVyZSBhbGwgc3VjY2VlZGVkLiBUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJu IDAsIGFuZCB0aGUgZnVuY3Rpb24NCnRoYXQgY2FsbHMgaXQgd2lsbCB0aGluayBkbWEgbWFwIHN1 Y2NlZWQuDQoNCj4gKwl9DQo+ICsNCj4gK2Vycm9yOg0KPiArCWZyZWUodmhvc3RfbWVtKTsNCj4g Kw0KPiArCXJldHVybiByYzsNCj4gK30NCj4gKw0KPiAgc3RhdGljIGludA0KPiAgc2ZjX3ZkcGFf bWVtX2Jhcl9pbml0KHN0cnVjdCBzZmNfdmRwYV9hZGFwdGVyICpzdmEsDQo+ICAJCSAgICAgIGNv bnN0IGVmeF9iYXJfcmVnaW9uX3QgKm1lbV9lYnJwKQ0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92 ZHBhL3NmYy9zZmNfdmRwYV9vcHMuYyBiL2RyaXZlcnMvdmRwYS9zZmMvc2ZjX3ZkcGFfb3BzLmMN Cj4gaW5kZXggNTI1M2FkYi4uZGUxYzgxYSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy92ZHBhL3Nm Yy9zZmNfdmRwYV9vcHMuYw0KPiArKysgYi9kcml2ZXJzL3ZkcGEvc2ZjL3NmY192ZHBhX29wcy5j DQo+IEBAIC0zLDEwICszLDEzIEBADQo+ICAgKiBDb3B5cmlnaHQoYykgMjAyMC0yMDIxIFhpbGlu eCwgSW5jLg0KPiAgICovDQo+IA0KPiArI2luY2x1ZGUgPHN5cy9pb2N0bC5oPg0KPiArDQo+ICAj aW5jbHVkZSA8cnRlX2Vycm5vLmg+DQo+ICAjaW5jbHVkZSA8cnRlX21hbGxvYy5oPg0KPiAgI2lu Y2x1ZGUgPHJ0ZV92ZHBhLmg+DQo+ICAjaW5jbHVkZSA8cnRlX3ZkcGFfZGV2Lmg+DQo+ICsjaW5j bHVkZSA8cnRlX3ZmaW8uaD4NCj4gICNpbmNsdWRlIDxydGVfdmhvc3QuaD4NCj4gDQo+ICAjaW5j bHVkZSAiZWZ4LmgiDQo+IEBAIC0yOCwyNCArMzEsMTIgQEANCj4gICNkZWZpbmUgU0ZDX1ZEUEFf REVGQVVMVF9GRUFUVVJFUyBcDQo+ICAJCSgxVUxMIDw8IFZIT1NUX1VTRVJfRl9QUk9UT0NPTF9G RUFUVVJFUykNCj4gDQo+IC1zdGF0aWMgaW50DQo+IC1zZmNfdmRwYV9nZXRfcXVldWVfbnVtKHN0 cnVjdCBydGVfdmRwYV9kZXZpY2UgKnZkcGFfZGV2LCB1aW50MzJfdCAqcXVldWVfbnVtKQ0KPiAt ew0KPiAtCXN0cnVjdCBzZmNfdmRwYV9vcHNfZGF0YSAqb3BzX2RhdGE7DQo+IC0Jdm9pZCAqZGV2 Ow0KPiAtDQo+IC0Jb3BzX2RhdGEgPSBzZmNfdmRwYV9nZXRfZGF0YV9ieV9kZXYodmRwYV9kZXYp Ow0KPiAtCWlmIChvcHNfZGF0YSA9PSBOVUxMKQ0KPiAtCQlyZXR1cm4gLTE7DQo+IC0NCj4gLQlk ZXYgPSBvcHNfZGF0YS0+ZGV2X2hhbmRsZTsNCj4gLQkqcXVldWVfbnVtID0gc2ZjX3ZkcGFfYWRh cHRlcl9ieV9kZXZfaGFuZGxlKGRldiktPm1heF9xdWV1ZV9jb3VudDsNCj4gKyNkZWZpbmUgU0ZD X1ZEUEFfTVNJWF9JUlFfU0VUX0JVRl9MRU4gXA0KPiArCQkoc2l6ZW9mKHN0cnVjdCB2ZmlvX2ly cV9zZXQpICsgXA0KPiArCQlzaXplb2YoaW50KSAqIChTRkNfVkRQQV9NQVhfUVVFVUVfUEFJUlMg KiAyICsgMSkpDQo+IA0KPiAtCXNmY192ZHBhX2luZm8oZGV2LCAidkRQQSBvcHMgZ2V0X3F1ZXVl X251bSA6OiBzdXBwb3J0ZWQgcXVldWUgbnVtIDogJWQiLA0KPiAtCQkgICAgICAqcXVldWVfbnVt KTsNCj4gLQ0KPiAtCXJldHVybiAwOw0KPiAtfQ0KPiArLyogSXQgd2lsbCBiZSB1c2VkIGZvciB0 YXJnZXQgVkYgd2hlbiBjYWxsaW5nIGZ1bmN0aW9uIGlzIG5vdCBQRiAqLw0KPiArI2RlZmluZSBT RkNfVkRQQV9WRl9OVUxMCQkweEZGRkYNCj4gDQo+ICBzdGF0aWMgaW50DQo+ICBzZmNfdmRwYV9n ZXRfZGV2aWNlX2ZlYXR1cmVzKHN0cnVjdCBzZmNfdmRwYV9vcHNfZGF0YSAqb3BzX2RhdGEpDQo+ IEBAIC03NCw2ICs2NSw0NDEgQEANCj4gIAlyZXR1cm4gMDsNCj4gIH0NCj4gDQo+ICtzdGF0aWMg dWludDY0X3QNCj4gK2h2YV90b19ncGEoaW50IHZpZCwgdWludDY0X3QgaHZhKQ0KPiArew0KPiAr CXN0cnVjdCBydGVfdmhvc3RfbWVtb3J5ICp2aG9zdF9tZW0gPSBOVUxMOw0KPiArCXN0cnVjdCBy dGVfdmhvc3RfbWVtX3JlZ2lvbiAqbWVtX3JlZyA9IE5VTEw7DQo+ICsJdWludDMyX3QgaTsNCj4g Kwl1aW50NjRfdCBncGEgPSAwOw0KPiArDQo+ICsJaWYgKHJ0ZV92aG9zdF9nZXRfbWVtX3RhYmxl KHZpZCwgJnZob3N0X21lbSkgPCAwKQ0KPiArCQlnb3RvIGVycm9yOw0KPiArDQo+ICsJZm9yIChp ID0gMDsgaSA8IHZob3N0X21lbS0+bnJlZ2lvbnM7IGkrKykgew0KPiArCQltZW1fcmVnID0gJnZo b3N0X21lbS0+cmVnaW9uc1tpXTsNCj4gKw0KPiArCQlpZiAoaHZhID49IG1lbV9yZWctPmhvc3Rf dXNlcl9hZGRyICYmDQo+ICsJCQkJaHZhIDwgbWVtX3JlZy0+aG9zdF91c2VyX2FkZHIgKyBtZW1f cmVnLT5zaXplKSB7DQo+ICsJCQlncGEgPSAoaHZhIC0gbWVtX3JlZy0+aG9zdF91c2VyX2FkZHIp ICsNCj4gKwkJCQltZW1fcmVnLT5ndWVzdF9waHlzX2FkZHI7DQo+ICsJCQlicmVhazsNCj4gKwkJ fQ0KPiArCX0NCj4gKw0KPiArZXJyb3I6DQo+ICsJZnJlZSh2aG9zdF9tZW0pOw0KPiArCXJldHVy biBncGE7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQNCj4gK3NmY192ZHBhX2VuYWJsZV92Zmlv X2ludHIoc3RydWN0IHNmY192ZHBhX29wc19kYXRhICpvcHNfZGF0YSkNCj4gK3sNCj4gKwlpbnQg cmM7DQo+ICsJaW50ICppcnFfZmRfcHRyOw0KPiArCWludCB2ZmlvX2Rldl9mZDsNCj4gKwl1aW50 MzJfdCBpLCBudW1fdnJpbmc7DQo+ICsJc3RydWN0IHJ0ZV92aG9zdF92cmluZyB2cmluZzsNCj4g KwlzdHJ1Y3QgdmZpb19pcnFfc2V0ICppcnFfc2V0Ow0KPiArCXN0cnVjdCBydGVfcGNpX2Rldmlj ZSAqcGNpX2RldjsNCj4gKwljaGFyIGlycV9zZXRfYnVmW1NGQ19WRFBBX01TSVhfSVJRX1NFVF9C VUZfTEVOXTsNCj4gKwl2b2lkICpkZXY7DQo+ICsNCj4gKwludW1fdnJpbmcgPSBydGVfdmhvc3Rf Z2V0X3ZyaW5nX251bShvcHNfZGF0YS0+dmlkKTsNCj4gKwlkZXYgPSBvcHNfZGF0YS0+ZGV2X2hh bmRsZTsNCj4gKwl2ZmlvX2Rldl9mZCA9IHNmY192ZHBhX2FkYXB0ZXJfYnlfZGV2X2hhbmRsZShk ZXYpLT52ZmlvX2Rldl9mZDsNCj4gKwlwY2lfZGV2ID0gc2ZjX3ZkcGFfYWRhcHRlcl9ieV9kZXZf aGFuZGxlKGRldiktPnBkZXY7DQo+ICsNCj4gKwlpcnFfc2V0ID0gKHN0cnVjdCB2ZmlvX2lycV9z ZXQgKilpcnFfc2V0X2J1ZjsNCj4gKwlpcnFfc2V0LT5hcmdzeiA9IHNpemVvZihpcnFfc2V0X2J1 Zik7DQo+ICsJaXJxX3NldC0+Y291bnQgPSBudW1fdnJpbmcgKyAxOw0KPiArCWlycV9zZXQtPmZs YWdzID0gVkZJT19JUlFfU0VUX0RBVEFfRVZFTlRGRCB8DQo+ICsJCQkgVkZJT19JUlFfU0VUX0FD VElPTl9UUklHR0VSOw0KPiArCWlycV9zZXQtPmluZGV4ID0gVkZJT19QQ0lfTVNJWF9JUlFfSU5E RVg7DQo+ICsJaXJxX3NldC0+c3RhcnQgPSAwOw0KPiArCWlycV9mZF9wdHIgPSAoaW50ICopJmly cV9zZXQtPmRhdGE7DQo+ICsJaXJxX2ZkX3B0cltSVEVfSU5UUl9WRUNfWkVST19PRkZTRVRdID0N Cj4gKwkJcnRlX2ludHJfZmRfZ2V0KHBjaV9kZXYtPmludHJfaGFuZGxlKTsNCj4gKw0KPiArCWZv ciAoaSA9IDA7IGkgPCBudW1fdnJpbmc7IGkrKykgew0KPiArCQlyYyA9IHJ0ZV92aG9zdF9nZXRf dmhvc3RfdnJpbmcob3BzX2RhdGEtPnZpZCwgaSwgJnZyaW5nKTsNCj4gKwkJaWYgKHJjKQ0KPiAr CQkJcmV0dXJuIC0xOw0KPiArDQo+ICsJCWlycV9mZF9wdHJbUlRFX0lOVFJfVkVDX1JYVFhfT0ZG U0VUICsgaV0gPSB2cmluZy5jYWxsZmQ7DQo+ICsJfQ0KPiArDQo+ICsJcmMgPSBpb2N0bCh2Zmlv X2Rldl9mZCwgVkZJT19ERVZJQ0VfU0VUX0lSUVMsIGlycV9zZXQpOw0KPiArCWlmIChyYykgew0K PiArCQlzZmNfdmRwYV9lcnIob3BzX2RhdGEtPmRldl9oYW5kbGUsDQo+ICsJCQkgICAgICJlcnJv ciBlbmFibGluZyBNU0ktWCBpbnRlcnJ1cHRzOiAlcyIsDQo+ICsJCQkgICAgIHN0cmVycm9yKGVy cm5vKSk7DQo+ICsJCXJldHVybiAtMTsNCj4gKwl9DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gK30N Cj4gKw0KPiArc3RhdGljIGludA0KPiArc2ZjX3ZkcGFfZGlzYWJsZV92ZmlvX2ludHIoc3RydWN0 IHNmY192ZHBhX29wc19kYXRhICpvcHNfZGF0YSkNCj4gK3sNCj4gKwlpbnQgcmM7DQo+ICsJaW50 IHZmaW9fZGV2X2ZkOw0KPiArCXN0cnVjdCB2ZmlvX2lycV9zZXQgKmlycV9zZXQ7DQo+ICsJY2hh ciBpcnFfc2V0X2J1ZltTRkNfVkRQQV9NU0lYX0lSUV9TRVRfQlVGX0xFTl07DQo+ICsJdm9pZCAq ZGV2Ow0KPiArDQo+ICsJZGV2ID0gb3BzX2RhdGEtPmRldl9oYW5kbGU7DQo+ICsJdmZpb19kZXZf ZmQgPSBzZmNfdmRwYV9hZGFwdGVyX2J5X2Rldl9oYW5kbGUoZGV2KS0+dmZpb19kZXZfZmQ7DQo+ ICsNCj4gKwlpcnFfc2V0ID0gKHN0cnVjdCB2ZmlvX2lycV9zZXQgKilpcnFfc2V0X2J1ZjsNCj4g KwlpcnFfc2V0LT5hcmdzeiA9IHNpemVvZihpcnFfc2V0X2J1Zik7DQo+ICsJaXJxX3NldC0+Y291 bnQgPSAwOw0KPiArCWlycV9zZXQtPmZsYWdzID0gVkZJT19JUlFfU0VUX0RBVEFfTk9ORSB8IFZG SU9fSVJRX1NFVF9BQ1RJT05fVFJJR0dFUjsNCj4gKwlpcnFfc2V0LT5pbmRleCA9IFZGSU9fUENJ X01TSVhfSVJRX0lOREVYOw0KPiArCWlycV9zZXQtPnN0YXJ0ID0gMDsNCg0KSSB0aGluayBkaXNh Ymxpbmcgb25seSBuZWVkcyBhIHN0cnVjdCB2ZmlvX2lycV9zZXQgaW5zdGVhZCBvZiBpcnFfc2V0 X2J1ZiwNCmJlY2F1c2UgeW91IGRvbid0IGhhdmUgZGF0YSB3aGVuIGRpc2FibGluZy4gYW5kIGFy Z3N6IHNob3VsZCBiZSBzaXplb2Yoc3RydWN0IHZmaW9faXJxX3NldCkNCg0KPiArDQo+ICsJcmMg PSBpb2N0bCh2ZmlvX2Rldl9mZCwgVkZJT19ERVZJQ0VfU0VUX0lSUVMsIGlycV9zZXQpOw0KPiAr CWlmIChyYykgew0KPiArCQlzZmNfdmRwYV9lcnIob3BzX2RhdGEtPmRldl9oYW5kbGUsDQo+ICsJ CQkgICAgICJlcnJvciBkaXNhYmxpbmcgTVNJLVggaW50ZXJydXB0czogJXMiLA0KPiArCQkJICAg ICBzdHJlcnJvcihlcnJubykpOw0KPiArCQlyZXR1cm4gLTE7DQo+ICsJfQ0KPiArDQo+ICsJcmV0 dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQNCj4gK3NmY192ZHBhX2dldF92cmluZ19p bmZvKHN0cnVjdCBzZmNfdmRwYV9vcHNfZGF0YSAqb3BzX2RhdGEsDQo+ICsJCQlpbnQgdnFfbnVt LCBzdHJ1Y3Qgc2ZjX3ZkcGFfdnJpbmdfaW5mbyAqdnJpbmcpDQo+ICt7DQo+ICsJaW50IHJjOw0K PiArCXVpbnQ2NF90IGdwYTsNCj4gKwlzdHJ1Y3QgcnRlX3Zob3N0X3ZyaW5nIHZxOw0KPiArDQo+ ICsJcmMgPSBydGVfdmhvc3RfZ2V0X3Zob3N0X3ZyaW5nKG9wc19kYXRhLT52aWQsIHZxX251bSwg JnZxKTsNCj4gKwlpZiAocmMgPCAwKSB7DQo+ICsJCXNmY192ZHBhX2VycihvcHNfZGF0YS0+ZGV2 X2hhbmRsZSwNCj4gKwkJCSAgICAgImdldCB2aG9zdCB2cmluZyBmYWlsZWQ6ICVzIiwgcnRlX3N0 cmVycm9yKHJjKSk7DQo+ICsJCXJldHVybiByYzsNCj4gKwl9DQo+ICsNCj4gKwlncGEgPSBodmFf dG9fZ3BhKG9wc19kYXRhLT52aWQsICh1aW50NjRfdCkodWludHB0cl90KXZxLmRlc2MpOw0KPiAr CWlmIChncGEgPT0gMCkgew0KPiArCQlzZmNfdmRwYV9lcnIob3BzX2RhdGEtPmRldl9oYW5kbGUs DQo+ICsJCQkgICAgICJmYWlsIHRvIGdldCBHUEEgZm9yIGRlc2NyaXB0b3IgcmluZy4iKTsNCj4g KwkJZ290byBmYWlsX3ZyaW5nX21hcDsNCj4gKwl9DQo+ICsJdnJpbmctPmRlc2MgPSBncGE7DQo+ ICsNCj4gKwlncGEgPSBodmFfdG9fZ3BhKG9wc19kYXRhLT52aWQsICh1aW50NjRfdCkodWludHB0 cl90KXZxLmF2YWlsKTsNCj4gKwlpZiAoZ3BhID09IDApIHsNCj4gKwkJc2ZjX3ZkcGFfZXJyKG9w c19kYXRhLT5kZXZfaGFuZGxlLA0KPiArCQkJICAgICAiZmFpbCB0byBnZXQgR1BBIGZvciBhdmFp bGFibGUgcmluZy4iKTsNCj4gKwkJZ290byBmYWlsX3ZyaW5nX21hcDsNCj4gKwl9DQo+ICsJdnJp bmctPmF2YWlsID0gZ3BhOw0KPiArDQo+ICsJZ3BhID0gaHZhX3RvX2dwYShvcHNfZGF0YS0+dmlk LCAodWludDY0X3QpKHVpbnRwdHJfdCl2cS51c2VkKTsNCj4gKwlpZiAoZ3BhID09IDApIHsNCj4g KwkJc2ZjX3ZkcGFfZXJyKG9wc19kYXRhLT5kZXZfaGFuZGxlLA0KPiArCQkJICAgICAiZmFpbCB0 byBnZXQgR1BBIGZvciB1c2VkIHJpbmcuIik7DQo+ICsJCWdvdG8gZmFpbF92cmluZ19tYXA7DQo+ ICsJfQ0KPiArCXZyaW5nLT51c2VkID0gZ3BhOw0KPiArDQo+ICsJdnJpbmctPnNpemUgPSB2cS5z aXplOw0KPiArDQo+ICsJcmMgPSBydGVfdmhvc3RfZ2V0X3ZyaW5nX2Jhc2Uob3BzX2RhdGEtPnZp ZCwgdnFfbnVtLA0KPiArCQkJCSAgICAgICZ2cmluZy0+bGFzdF9hdmFpbF9pZHgsDQo+ICsJCQkJ ICAgICAgJnZyaW5nLT5sYXN0X3VzZWRfaWR4KTsNCj4gKw0KPiArCXJldHVybiByYzsNCj4gKw0K PiArZmFpbF92cmluZ19tYXA6DQo+ICsJcmV0dXJuIC0xOw0KPiArfQ0KDQpJIGRvbid0IHRoaW5r IHlvdSBuZWVkICdmYWlsX3ZyaW5nX21hcCcuIEp1c3QgdXNlICdyZXR1cm4gLTEnIHRvIHJlcGxh Y2UNCmdvdG8gZmFpbF92cmluZ19tYXANCg0KVGhhbmtzLA0KQ2hlbmJvIA0KDQo+ICsNCj4gK3N0 YXRpYyBpbnQNCj4gK3NmY192ZHBhX3ZpcnRxX3N0YXJ0KHN0cnVjdCBzZmNfdmRwYV9vcHNfZGF0 YSAqb3BzX2RhdGEsIGludCB2cV9udW0pDQo+ICt7DQo+ICsJaW50IHJjOw0KPiArCWVmeF92aXJ0 aW9fdnFfdCAqdnE7DQo+ICsJc3RydWN0IHNmY192ZHBhX3ZyaW5nX2luZm8gdnJpbmc7DQo+ICsJ ZWZ4X3ZpcnRpb192cV9jZmdfdCB2cV9jZmc7DQo+ICsJZWZ4X3ZpcnRpb192cV9keW5jZmdfdCB2 cV9keW5jZmc7DQo+ICsNCj4gKwl2cSA9IG9wc19kYXRhLT52cV9jeHRbdnFfbnVtXS52cTsNCj4g KwlpZiAodnEgPT0gTlVMTCkNCj4gKwkJcmV0dXJuIC0xOw0KPiArDQo+ICsJcmMgPSBzZmNfdmRw YV9nZXRfdnJpbmdfaW5mbyhvcHNfZGF0YSwgdnFfbnVtLCAmdnJpbmcpOw0KPiArCWlmIChyYyA8 IDApIHsNCj4gKwkJc2ZjX3ZkcGFfZXJyKG9wc19kYXRhLT5kZXZfaGFuZGxlLA0KPiArCQkJICAg ICAiZ2V0IHZyaW5nIGluZm8gZmFpbGVkOiAlcyIsIHJ0ZV9zdHJlcnJvcihyYykpOw0KPiArCQln b3RvIGZhaWxfdnJpbmdfaW5mbzsNCj4gKwl9DQo+ICsNCj4gKwl2cV9jZmcuZXZ2Y190YXJnZXRf dmYgPSBTRkNfVkRQQV9WRl9OVUxMOw0KPiArDQo+ICsJLyogZXZlbiB2aXJ0cXVldWUgZm9yIFJY IGFuZCBvZGQgZm9yIFRYICovDQo+ICsJaWYgKHZxX251bSAlIDIpIHsNCj4gKwkJdnFfY2ZnLmV2 dmNfdHlwZSA9IEVGWF9WSVJUSU9fVlFfVFlQRV9ORVRfVFhROw0KPiArCQlzZmNfdmRwYV9pbmZv KG9wc19kYXRhLT5kZXZfaGFuZGxlLA0KPiArCQkJICAgICAgImNvbmZpZ3VyZSB2aXJ0cXVldWUg IyAlZCAoVFhRKSIsIHZxX251bSk7DQo+ICsJfSBlbHNlIHsNCj4gKwkJdnFfY2ZnLmV2dmNfdHlw ZSA9IEVGWF9WSVJUSU9fVlFfVFlQRV9ORVRfUlhROw0KPiArCQlzZmNfdmRwYV9pbmZvKG9wc19k YXRhLT5kZXZfaGFuZGxlLA0KPiArCQkJICAgICAgImNvbmZpZ3VyZSB2aXJ0cXVldWUgIyAlZCAo UlhRKSIsIHZxX251bSk7DQo+ICsJfQ0KPiArDQo+ICsJdnFfY2ZnLmV2dmNfdnFfbnVtID0gdnFf bnVtOw0KPiArCXZxX2NmZy5ldnZjX2Rlc2NfdGJsX2FkZHIgICA9IHZyaW5nLmRlc2M7DQo+ICsJ dnFfY2ZnLmV2dmNfYXZhaWxfcmluZ19hZGRyID0gdnJpbmcuYXZhaWw7DQo+ICsJdnFfY2ZnLmV2 dmNfdXNlZF9yaW5nX2FkZHIgID0gdnJpbmcudXNlZDsNCj4gKwl2cV9jZmcuZXZ2Y192cV9zaXpl ID0gdnJpbmcuc2l6ZTsNCj4gKw0KPiArCXZxX2R5bmNmZy5ldnZkX3ZxX3BpZHggPSB2cmluZy5s YXN0X3VzZWRfaWR4Ow0KPiArCXZxX2R5bmNmZy5ldnZkX3ZxX2NpZHggPSB2cmluZy5sYXN0X2F2 YWlsX2lkeDsNCj4gKw0KPiArCS8qIE1TSS1YIHZlY3RvciBpcyBmdW5jdGlvbi1yZWxhdGl2ZSAq Lw0KPiArCXZxX2NmZy5ldnZjX21zaXhfdmVjdG9yID0gUlRFX0lOVFJfVkVDX1JYVFhfT0ZGU0VU ICsgdnFfbnVtOw0KPiArCWlmIChvcHNfZGF0YS0+dmRwYV9jb250ZXh0ID09IFNGQ19WRFBBX0FT X1ZGKQ0KPiArCQl2cV9jZmcuZXZ2Y19wYXNfaWQgPSAwOw0KPiArCXZxX2NmZy5ldmNjX2ZlYXR1 cmVzID0gb3BzX2RhdGEtPmRldl9mZWF0dXJlcyAmDQo+ICsJCQkgICAgICAgb3BzX2RhdGEtPnJl cV9mZWF0dXJlczsNCj4gKw0KPiArCS8qIFN0YXJ0IHZpcnRxdWV1ZSAqLw0KPiArCXJjID0gZWZ4 X3ZpcnRpb19xc3RhcnQodnEsICZ2cV9jZmcsICZ2cV9keW5jZmcpOw0KPiArCWlmIChyYyAhPSAw KSB7DQo+ICsJCS8qIGRlc3Ryb3kgdmlydHF1ZXVlICovDQo+ICsJCXNmY192ZHBhX2VycihvcHNf ZGF0YS0+ZGV2X2hhbmRsZSwNCj4gKwkJCSAgICAgInZpcnRxdWV1ZSBzdGFydCBmYWlsZWQ6ICVz IiwNCj4gKwkJCSAgICAgcnRlX3N0cmVycm9yKHJjKSk7DQo+ICsJCWVmeF92aXJ0aW9fcWRlc3Ry b3kodnEpOw0KPiArCQlnb3RvIGZhaWxfdmlydGlvX3FzdGFydDsNCj4gKwl9DQo+ICsNCj4gKwlz ZmNfdmRwYV9pbmZvKG9wc19kYXRhLT5kZXZfaGFuZGxlLA0KPiArCQkgICAgICAidmlydHF1ZXVl IHN0YXJ0ZWQgc3VjY2Vzc2Z1bGx5IGZvciB2cV9udW0gJWQiLCB2cV9udW0pOw0KPiArDQo+ICsJ b3BzX2RhdGEtPnZxX2N4dFt2cV9udW1dLmVuYWJsZSA9IEJfVFJVRTsNCj4gKw0KPiArCXJldHVy biByYzsNCj4gKw0KPiArZmFpbF92aXJ0aW9fcXN0YXJ0Og0KPiArZmFpbF92cmluZ19pbmZvOg0K PiArCXJldHVybiByYzsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludA0KPiArc2ZjX3ZkcGFfdmly dHFfc3RvcChzdHJ1Y3Qgc2ZjX3ZkcGFfb3BzX2RhdGEgKm9wc19kYXRhLCBpbnQgdnFfbnVtKQ0K PiArew0KPiArCWludCByYzsNCj4gKwllZnhfdmlydGlvX3ZxX2R5bmNmZ190IHZxX2lkeDsNCj4g KwllZnhfdmlydGlvX3ZxX3QgKnZxOw0KPiArDQo+ICsJaWYgKG9wc19kYXRhLT52cV9jeHRbdnFf bnVtXS5lbmFibGUgIT0gQl9UUlVFKQ0KPiArCQlyZXR1cm4gLTE7DQo+ICsNCj4gKwl2cSA9IG9w c19kYXRhLT52cV9jeHRbdnFfbnVtXS52cTsNCj4gKwlpZiAodnEgPT0gTlVMTCkNCj4gKwkJcmV0 dXJuIC0xOw0KPiArDQo+ICsJLyogc3RvcCB0aGUgdnEgKi8NCj4gKwlyYyA9IGVmeF92aXJ0aW9f cXN0b3AodnEsICZ2cV9pZHgpOw0KPiArCWlmIChyYyA9PSAwKSB7DQo+ICsJCW9wc19kYXRhLT52 cV9jeHRbdnFfbnVtXS5jaWR4ID0gdnFfaWR4LmV2dmRfdnFfY2lkeDsNCj4gKwkJb3BzX2RhdGEt PnZxX2N4dFt2cV9udW1dLnBpZHggPSB2cV9pZHguZXZ2ZF92cV9waWR4Ow0KPiArCX0NCj4gKwlv cHNfZGF0YS0+dnFfY3h0W3ZxX251bV0uZW5hYmxlID0gQl9GQUxTRTsNCj4gKw0KPiArCXJldHVy biByYzsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludA0KPiArc2ZjX3ZkcGFfY29uZmlndXJlKHN0 cnVjdCBzZmNfdmRwYV9vcHNfZGF0YSAqb3BzX2RhdGEpDQo+ICt7DQo+ICsJaW50IHJjLCBpOw0K PiArCWludCBucl92cmluZzsNCj4gKwlpbnQgbWF4X3ZyaW5nX2NudDsNCj4gKwllZnhfdmlydGlv X3ZxX3QgKnZxOw0KPiArCWVmeF9uaWNfdCAqbmljOw0KPiArCXZvaWQgKmRldjsNCj4gKw0KPiAr CWRldiA9IG9wc19kYXRhLT5kZXZfaGFuZGxlOw0KPiArCW5pYyA9IHNmY192ZHBhX2FkYXB0ZXJf YnlfZGV2X2hhbmRsZShkZXYpLT5uaWM7DQo+ICsNCj4gKwlTRkNfRUZYX0FTU0VSVChvcHNfZGF0 YS0+c3RhdGUgPT0gU0ZDX1ZEUEFfU1RBVEVfSU5JVElBTElaRUQpOw0KPiArDQo+ICsJb3BzX2Rh dGEtPnN0YXRlID0gU0ZDX1ZEUEFfU1RBVEVfQ09ORklHVVJJTkc7DQo+ICsNCj4gKwlucl92cmlu ZyA9IHJ0ZV92aG9zdF9nZXRfdnJpbmdfbnVtKG9wc19kYXRhLT52aWQpOw0KPiArCW1heF92cmlu Z19jbnQgPQ0KPiArCQkoc2ZjX3ZkcGFfYWRhcHRlcl9ieV9kZXZfaGFuZGxlKGRldiktPm1heF9x dWV1ZV9jb3VudCAqIDIpOw0KPiArDQo+ICsJLyogbnVtYmVyIG9mIHZyaW5nIHNob3VsZCBub3Qg YmUgbW9yZSB0aGFuIHN1cHBvcnRlZCBtYXggdnEgY291bnQgKi8NCj4gKwlpZiAobnJfdnJpbmcg PiBtYXhfdnJpbmdfY250KSB7DQo+ICsJCXNmY192ZHBhX2VycihkZXYsDQo+ICsJCQkgICAgICJu cl92cmluZyAoJWQpIGlzID4gbWF4IHZyaW5nIGNvdW50ICglZCkiLA0KPiArCQkJICAgICBucl92 cmluZywgbWF4X3ZyaW5nX2NudCk7DQo+ICsJCWdvdG8gZmFpbF92cmluZ19udW07DQo+ICsJfQ0K PiArDQo+ICsJcmMgPSBzZmNfdmRwYV9kbWFfbWFwKG9wc19kYXRhLCB0cnVlKTsNCj4gKwlpZiAo cmMpIHsNCj4gKwkJc2ZjX3ZkcGFfZXJyKGRldiwNCj4gKwkJCSAgICAgIkRNQSBtYXAgZmFpbGVk OiAlcyIsIHJ0ZV9zdHJlcnJvcihyYykpOw0KPiArCQlnb3RvIGZhaWxfZG1hX21hcDsNCj4gKwl9 DQo+ICsNCj4gKwlmb3IgKGkgPSAwOyBpIDwgbnJfdnJpbmc7IGkrKykgew0KPiArCQlyYyA9IGVm eF92aXJ0aW9fcWNyZWF0ZShuaWMsICZ2cSk7DQo+ICsJCWlmICgocmMgIT0gMCkgfHwgKHZxID09 IE5VTEwpKSB7DQo+ICsJCQlzZmNfdmRwYV9lcnIoZGV2LA0KPiArCQkJCSAgICAgInZpcnRxdWV1 ZSBjcmVhdGUgZmFpbGVkOiAlcyIsDQo+ICsJCQkJICAgICBydGVfc3RyZXJyb3IocmMpKTsNCj4g KwkJCWdvdG8gZmFpbF92cV9jcmVhdGU7DQo+ICsJCX0NCj4gKw0KPiArCQkvKiBzdG9yZSBjcmVh dGVkIHZpcnRxdWV1ZSBjb250ZXh0ICovDQo+ICsJCW9wc19kYXRhLT52cV9jeHRbaV0udnEgPSB2 cTsNCj4gKwl9DQo+ICsNCj4gKwlvcHNfZGF0YS0+dnFfY291bnQgPSBpOw0KPiArDQo+ICsJb3Bz X2RhdGEtPnN0YXRlID0gU0ZDX1ZEUEFfU1RBVEVfQ09ORklHVVJFRDsNCj4gKw0KPiArCXJldHVy biAwOw0KPiArDQo+ICtmYWlsX3ZxX2NyZWF0ZToNCj4gKwlzZmNfdmRwYV9kbWFfbWFwKG9wc19k YXRhLCBmYWxzZSk7DQo+ICsNCj4gK2ZhaWxfZG1hX21hcDoNCj4gK2ZhaWxfdnJpbmdfbnVtOg0K PiArCW9wc19kYXRhLT5zdGF0ZSA9IFNGQ19WRFBBX1NUQVRFX0lOSVRJQUxJWkVEOw0KPiArDQo+ ICsJcmV0dXJuIC0xOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZA0KPiArc2ZjX3ZkcGFfY2xv c2Uoc3RydWN0IHNmY192ZHBhX29wc19kYXRhICpvcHNfZGF0YSkNCj4gK3sNCj4gKwlpbnQgaTsN Cj4gKw0KPiArCWlmIChvcHNfZGF0YS0+c3RhdGUgIT0gU0ZDX1ZEUEFfU1RBVEVfQ09ORklHVVJF RCkNCj4gKwkJcmV0dXJuOw0KPiArDQo+ICsJb3BzX2RhdGEtPnN0YXRlID0gU0ZDX1ZEUEFfU1RB VEVfQ0xPU0lORzsNCj4gKw0KPiArCWZvciAoaSA9IDA7IGkgPCBvcHNfZGF0YS0+dnFfY291bnQ7 IGkrKykgew0KPiArCQlpZiAob3BzX2RhdGEtPnZxX2N4dFtpXS52cSA9PSBOVUxMKQ0KPiArCQkJ Y29udGludWU7DQo+ICsNCj4gKwkJZWZ4X3ZpcnRpb19xZGVzdHJveShvcHNfZGF0YS0+dnFfY3h0 W2ldLnZxKTsNCj4gKwl9DQo+ICsNCj4gKwlzZmNfdmRwYV9kbWFfbWFwKG9wc19kYXRhLCBmYWxz ZSk7DQo+ICsNCj4gKwlvcHNfZGF0YS0+c3RhdGUgPSBTRkNfVkRQQV9TVEFURV9JTklUSUFMSVpF RDsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQNCj4gK3NmY192ZHBhX3N0b3Aoc3RydWN0IHNm Y192ZHBhX29wc19kYXRhICpvcHNfZGF0YSkNCj4gK3sNCj4gKwlpbnQgaTsNCj4gKwlpbnQgcmM7 DQo+ICsNCj4gKwlpZiAob3BzX2RhdGEtPnN0YXRlICE9IFNGQ19WRFBBX1NUQVRFX1NUQVJURUQp DQo+ICsJCXJldHVybjsNCj4gKw0KPiArCW9wc19kYXRhLT5zdGF0ZSA9IFNGQ19WRFBBX1NUQVRF X1NUT1BQSU5HOw0KPiArDQo+ICsJZm9yIChpID0gMDsgaSA8IG9wc19kYXRhLT52cV9jb3VudDsg aSsrKSB7DQo+ICsJCXJjID0gc2ZjX3ZkcGFfdmlydHFfc3RvcChvcHNfZGF0YSwgaSk7DQo+ICsJ CWlmIChyYyAhPSAwKQ0KPiArCQkJY29udGludWU7DQo+ICsJfQ0KPiArDQo+ICsJc2ZjX3ZkcGFf ZGlzYWJsZV92ZmlvX2ludHIob3BzX2RhdGEpOw0KPiArDQo+ICsJb3BzX2RhdGEtPnN0YXRlID0g U0ZDX1ZEUEFfU1RBVEVfQ09ORklHVVJFRDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludA0KPiAr c2ZjX3ZkcGFfc3RhcnQoc3RydWN0IHNmY192ZHBhX29wc19kYXRhICpvcHNfZGF0YSkNCj4gK3sN Cj4gKwlpbnQgaSwgajsNCj4gKwlpbnQgcmM7DQo+ICsNCj4gKwlTRkNfRUZYX0FTU0VSVChvcHNf ZGF0YS0+c3RhdGUgPT0gU0ZDX1ZEUEFfU1RBVEVfQ09ORklHVVJFRCk7DQo+ICsNCj4gKwlzZmNf dmRwYV9sb2dfaW5pdChvcHNfZGF0YS0+ZGV2X2hhbmRsZSwgImVudHJ5Iik7DQo+ICsNCj4gKwlv cHNfZGF0YS0+c3RhdGUgPSBTRkNfVkRQQV9TVEFURV9TVEFSVElORzsNCj4gKw0KPiArCXNmY192 ZHBhX2xvZ19pbml0KG9wc19kYXRhLT5kZXZfaGFuZGxlLCAiZW5hYmxlIGludGVycnVwdHMiKTsN Cj4gKwlyYyA9IHNmY192ZHBhX2VuYWJsZV92ZmlvX2ludHIob3BzX2RhdGEpOw0KPiArCWlmIChy YyA8IDApIHsNCj4gKwkJc2ZjX3ZkcGFfZXJyKG9wc19kYXRhLT5kZXZfaGFuZGxlLA0KPiArCQkJ ICAgICAidmZpbyBpbnRyIGFsbG9jYXRpb24gZmFpbGVkOiAlcyIsDQo+ICsJCQkgICAgIHJ0ZV9z dHJlcnJvcihyYykpOw0KPiArCQlnb3RvIGZhaWxfZW5hYmxlX3ZmaW9faW50cjsNCj4gKwl9DQo+ ICsNCj4gKwlydGVfdmhvc3RfZ2V0X25lZ290aWF0ZWRfZmVhdHVyZXMob3BzX2RhdGEtPnZpZCwN Cj4gKwkJCQkJICAmb3BzX2RhdGEtPnJlcV9mZWF0dXJlcyk7DQo+ICsNCj4gKwlzZmNfdmRwYV9p bmZvKG9wc19kYXRhLT5kZXZfaGFuZGxlLA0KPiArCQkgICAgICAibmVnb3RpYXRlZCBmZWF0dXJl IDogMHglIiBQUkl4NjQsDQo+ICsJCSAgICAgIG9wc19kYXRhLT5yZXFfZmVhdHVyZXMpOw0KPiAr DQo+ICsJZm9yIChpID0gMDsgaSA8IG9wc19kYXRhLT52cV9jb3VudDsgaSsrKSB7DQo+ICsJCXNm Y192ZHBhX2xvZ19pbml0KG9wc19kYXRhLT5kZXZfaGFuZGxlLA0KPiArCQkJCSAgInN0YXJ0aW5n IHZxIyAlZCIsIGkpOw0KPiArCQlyYyA9IHNmY192ZHBhX3ZpcnRxX3N0YXJ0KG9wc19kYXRhLCBp KTsNCj4gKwkJaWYgKHJjICE9IDApDQo+ICsJCQlnb3RvIGZhaWxfdnFfc3RhcnQ7DQo+ICsJfQ0K PiArDQo+ICsJb3BzX2RhdGEtPnN0YXRlID0gU0ZDX1ZEUEFfU1RBVEVfU1RBUlRFRDsNCj4gKw0K PiArCXNmY192ZHBhX2xvZ19pbml0KG9wc19kYXRhLT5kZXZfaGFuZGxlLCAiZG9uZSIpOw0KPiAr DQo+ICsJcmV0dXJuIDA7DQo+ICsNCj4gK2ZhaWxfdnFfc3RhcnQ6DQo+ICsJLyogc3RvcCBhbHJl YWR5IHN0YXJ0ZWQgdmlydHF1ZXVlcyAqLw0KPiArCWZvciAoaiA9IDA7IGogPCBpOyBqKyspDQo+ ICsJCXNmY192ZHBhX3ZpcnRxX3N0b3Aob3BzX2RhdGEsIGopOw0KPiArCXNmY192ZHBhX2Rpc2Fi bGVfdmZpb19pbnRyKG9wc19kYXRhKTsNCj4gKw0KPiArZmFpbF9lbmFibGVfdmZpb19pbnRyOg0K PiArCW9wc19kYXRhLT5zdGF0ZSA9IFNGQ19WRFBBX1NUQVRFX0NPTkZJR1VSRUQ7DQo+ICsNCj4g KwlyZXR1cm4gcmM7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQNCj4gK3NmY192ZHBhX2dldF9x dWV1ZV9udW0oc3RydWN0IHJ0ZV92ZHBhX2RldmljZSAqdmRwYV9kZXYsIHVpbnQzMl90ICpxdWV1 ZV9udW0pDQo+ICt7DQo+ICsJc3RydWN0IHNmY192ZHBhX29wc19kYXRhICpvcHNfZGF0YTsNCj4g Kwl2b2lkICpkZXY7DQo+ICsNCj4gKwlvcHNfZGF0YSA9IHNmY192ZHBhX2dldF9kYXRhX2J5X2Rl dih2ZHBhX2Rldik7DQo+ICsJaWYgKG9wc19kYXRhID09IE5VTEwpDQo+ICsJCXJldHVybiAtMTsN Cj4gKw0KPiArCWRldiA9IG9wc19kYXRhLT5kZXZfaGFuZGxlOw0KPiArCSpxdWV1ZV9udW0gPSBz ZmNfdmRwYV9hZGFwdGVyX2J5X2Rldl9oYW5kbGUoZGV2KS0+bWF4X3F1ZXVlX2NvdW50Ow0KPiAr DQo+ICsJc2ZjX3ZkcGFfaW5mbyhkZXYsICJ2RFBBIG9wcyBnZXRfcXVldWVfbnVtIDo6IHN1cHBv cnRlZCBxdWV1ZSBudW0gOiAlZCIsDQo+ICsJCSAgICAgICpxdWV1ZV9udW0pOw0KPiArDQo+ICsJ cmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gIHN0YXRpYyBpbnQNCj4gIHNmY192ZHBhX2dldF9mZWF0 dXJlcyhzdHJ1Y3QgcnRlX3ZkcGFfZGV2aWNlICp2ZHBhX2RldiwgdWludDY0X3QgKmZlYXR1cmVz KQ0KPiAgew0KPiBAQCAtMTE0LDcgKzU0MCw1MyBAQA0KPiAgc3RhdGljIGludA0KPiAgc2ZjX3Zk cGFfZGV2X2NvbmZpZyhpbnQgdmlkKQ0KPiAgew0KPiAtCVJURV9TRVRfVVNFRCh2aWQpOw0KPiAr CXN0cnVjdCBydGVfdmRwYV9kZXZpY2UgKnZkcGFfZGV2Ow0KPiArCWludCByYzsNCj4gKwlzdHJ1 Y3Qgc2ZjX3ZkcGFfb3BzX2RhdGEgKm9wc19kYXRhOw0KPiArDQo+ICsJdmRwYV9kZXYgPSBydGVf dmhvc3RfZ2V0X3ZkcGFfZGV2aWNlKHZpZCk7DQo+ICsNCj4gKwlvcHNfZGF0YSA9IHNmY192ZHBh X2dldF9kYXRhX2J5X2Rldih2ZHBhX2Rldik7DQo+ICsJaWYgKG9wc19kYXRhID09IE5VTEwpIHsN Cj4gKwkJc2ZjX3ZkcGFfZXJyKG9wc19kYXRhLT5kZXZfaGFuZGxlLA0KPiArCQkJICAgICAiaW52 YWxpZCB2RFBBIGRldmljZSA6ICVwLCB2aWQgOiAlZCIsDQo+ICsJCQkgICAgIHZkcGFfZGV2LCB2 aWQpOw0KPiArCQlyZXR1cm4gLTE7DQo+ICsJfQ0KPiArDQo+ICsJc2ZjX3ZkcGFfbG9nX2luaXQo b3BzX2RhdGEtPmRldl9oYW5kbGUsICJlbnRyeSIpOw0KPiArDQo+ICsJb3BzX2RhdGEtPnZpZCA9 IHZpZDsNCj4gKw0KPiArCXNmY192ZHBhX2FkYXB0ZXJfbG9jayhvcHNfZGF0YS0+ZGV2X2hhbmRs ZSk7DQo+ICsNCj4gKwlzZmNfdmRwYV9sb2dfaW5pdChvcHNfZGF0YS0+ZGV2X2hhbmRsZSwgImNv bmZpZ3VyaW5nIik7DQo+ICsJcmMgPSBzZmNfdmRwYV9jb25maWd1cmUob3BzX2RhdGEpOw0KPiAr CWlmIChyYyAhPSAwKQ0KPiArCQlnb3RvIGZhaWxfdmRwYV9jb25maWc7DQo+ICsNCj4gKwlzZmNf dmRwYV9sb2dfaW5pdChvcHNfZGF0YS0+ZGV2X2hhbmRsZSwgInN0YXJ0aW5nIik7DQo+ICsJcmMg PSBzZmNfdmRwYV9zdGFydChvcHNfZGF0YSk7DQo+ICsJaWYgKHJjICE9IDApDQo+ICsJCWdvdG8g ZmFpbF92ZHBhX3N0YXJ0Ow0KPiArDQo+ICsJc2ZjX3ZkcGFfYWRhcHRlcl91bmxvY2sob3BzX2Rh dGEtPmRldl9oYW5kbGUpOw0KPiArDQo+ICsJc2ZjX3ZkcGFfbG9nX2luaXQob3BzX2RhdGEtPmRl dl9oYW5kbGUsICJ2aG9zdCBub3RpZmllciBjdHJsIik7DQo+ICsJaWYgKHJ0ZV92aG9zdF9ob3N0 X25vdGlmaWVyX2N0cmwodmlkLCBSVEVfVkhPU1RfUVVFVUVfQUxMLCB0cnVlKSAhPSAwKQ0KPiAr CQlzZmNfdmRwYV9pbmZvKG9wc19kYXRhLT5kZXZfaGFuZGxlLA0KPiArCQkJICAgICAgInZEUEEg KCVzKTogc29mdHdhcmUgcmVsYXkgZm9yIG5vdGlmeSBpcyB1c2VkLiIsDQo+ICsJCQkgICAgICB2 ZHBhX2Rldi0+ZGV2aWNlLT5uYW1lKTsNCj4gKw0KPiArCXNmY192ZHBhX2xvZ19pbml0KG9wc19k YXRhLT5kZXZfaGFuZGxlLCAiZG9uZSIpOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICsNCj4gK2Zh aWxfdmRwYV9zdGFydDoNCj4gKwlzZmNfdmRwYV9jbG9zZShvcHNfZGF0YSk7DQo+ICsNCj4gK2Zh aWxfdmRwYV9jb25maWc6DQo+ICsJc2ZjX3ZkcGFfYWRhcHRlcl91bmxvY2sob3BzX2RhdGEtPmRl dl9oYW5kbGUpOw0KPiANCj4gIAlyZXR1cm4gLTE7DQo+ICB9DQo+IEBAIC0xMjIsOSArNTk0LDI3 IEBADQo+ICBzdGF0aWMgaW50DQo+ICBzZmNfdmRwYV9kZXZfY2xvc2UoaW50IHZpZCkNCj4gIHsN Cj4gLQlSVEVfU0VUX1VTRUQodmlkKTsNCj4gKwlzdHJ1Y3QgcnRlX3ZkcGFfZGV2aWNlICp2ZHBh X2RldjsNCj4gKwlzdHJ1Y3Qgc2ZjX3ZkcGFfb3BzX2RhdGEgKm9wc19kYXRhOw0KPiANCj4gLQly ZXR1cm4gLTE7DQo+ICsJdmRwYV9kZXYgPSBydGVfdmhvc3RfZ2V0X3ZkcGFfZGV2aWNlKHZpZCk7 DQo+ICsNCj4gKwlvcHNfZGF0YSA9IHNmY192ZHBhX2dldF9kYXRhX2J5X2Rldih2ZHBhX2Rldik7 DQo+ICsJaWYgKG9wc19kYXRhID09IE5VTEwpIHsNCj4gKwkJc2ZjX3ZkcGFfZXJyKG9wc19kYXRh LT5kZXZfaGFuZGxlLA0KPiArCQkJICAgICAiaW52YWxpZCB2RFBBIGRldmljZSA6ICVwLCB2aWQg OiAlZCIsDQo+ICsJCQkgICAgIHZkcGFfZGV2LCB2aWQpOw0KPiArCQlyZXR1cm4gLTE7DQo+ICsJ fQ0KPiArDQo+ICsJc2ZjX3ZkcGFfYWRhcHRlcl9sb2NrKG9wc19kYXRhLT5kZXZfaGFuZGxlKTsN Cj4gKw0KPiArCXNmY192ZHBhX3N0b3Aob3BzX2RhdGEpOw0KPiArCXNmY192ZHBhX2Nsb3NlKG9w c19kYXRhKTsNCj4gKw0KPiArCXNmY192ZHBhX2FkYXB0ZXJfdW5sb2NrKG9wc19kYXRhLT5kZXZf aGFuZGxlKTsNCj4gKw0KPiArCXJldHVybiAwOw0KPiAgfQ0KPiANCj4gIHN0YXRpYyBpbnQNCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmRwYS9zZmMvc2ZjX3ZkcGFfb3BzLmggYi9kcml2ZXJzL3Zk cGEvc2ZjL3NmY192ZHBhX29wcy5oDQo+IGluZGV4IDIxY2JiNzMuLjhkNTUzYzUgMTAwNjQ0DQo+ IC0tLSBhL2RyaXZlcnMvdmRwYS9zZmMvc2ZjX3ZkcGFfb3BzLmgNCj4gKysrIGIvZHJpdmVycy92 ZHBhL3NmYy9zZmNfdmRwYV9vcHMuaA0KPiBAQCAtMTgsMTcgKzE4LDQ1IEBAIGVudW0gc2ZjX3Zk cGFfY29udGV4dCB7DQo+ICBlbnVtIHNmY192ZHBhX3N0YXRlIHsNCj4gIAlTRkNfVkRQQV9TVEFU RV9VTklOSVRJQUxJWkVEID0gMCwNCj4gIAlTRkNfVkRQQV9TVEFURV9JTklUSUFMSVpFRCwNCj4g KwlTRkNfVkRQQV9TVEFURV9DT05GSUdVUklORywNCj4gKwlTRkNfVkRQQV9TVEFURV9DT05GSUdV UkVELA0KPiArCVNGQ19WRFBBX1NUQVRFX0NMT1NJTkcsDQo+ICsJU0ZDX1ZEUEFfU1RBVEVfQ0xP U0VELA0KPiArCVNGQ19WRFBBX1NUQVRFX1NUQVJUSU5HLA0KPiArCVNGQ19WRFBBX1NUQVRFX1NU QVJURUQsDQo+ICsJU0ZDX1ZEUEFfU1RBVEVfU1RPUFBJTkcsDQo+ICAJU0ZDX1ZEUEFfU1RBVEVf TlNUQVRFUw0KPiAgfTsNCj4gDQo+ICtzdHJ1Y3Qgc2ZjX3ZkcGFfdnJpbmdfaW5mbyB7DQo+ICsJ dWludDY0X3QJZGVzYzsNCj4gKwl1aW50NjRfdAlhdmFpbDsNCj4gKwl1aW50NjRfdAl1c2VkOw0K PiArCXVpbnQ2NF90CXNpemU7DQo+ICsJdWludDE2X3QJbGFzdF9hdmFpbF9pZHg7DQo+ICsJdWlu dDE2X3QJbGFzdF91c2VkX2lkeDsNCj4gK307DQo+ICsNCj4gK3R5cGVkZWYgc3RydWN0IHNmY192 ZHBhX3ZxX2NvbnRleHRfcyB7DQo+ICsJdWludDhfdAkJCQllbmFibGU7DQo+ICsJdWludDMyX3QJ CQlwaWR4Ow0KPiArCXVpbnQzMl90CQkJY2lkeDsNCj4gKwllZnhfdmlydGlvX3ZxX3QJCQkqdnE7 DQo+ICt9IHNmY192ZHBhX3ZxX2NvbnRleHRfdDsNCj4gKw0KPiAgc3RydWN0IHNmY192ZHBhX29w c19kYXRhIHsNCj4gIAl2b2lkCQkJCSpkZXZfaGFuZGxlOw0KPiArCWludAkJCQl2aWQ7DQo+ICAJ c3RydWN0IHJ0ZV92ZHBhX2RldmljZQkJKnZkcGFfZGV2Ow0KPiAgCWVudW0gc2ZjX3ZkcGFfY29u dGV4dAkJdmRwYV9jb250ZXh0Ow0KPiAgCWVudW0gc2ZjX3ZkcGFfc3RhdGUJCXN0YXRlOw0KPiAN Cj4gIAl1aW50NjRfdAkJCWRldl9mZWF0dXJlczsNCj4gIAl1aW50NjRfdAkJCWRydl9mZWF0dXJl czsNCj4gKwl1aW50NjRfdAkJCXJlcV9mZWF0dXJlczsNCj4gKw0KPiArCXVpbnQxNl90CQkJdnFf Y291bnQ7DQo+ICsJc3RydWN0IHNmY192ZHBhX3ZxX2NvbnRleHRfcwl2cV9jeHRbU0ZDX1ZEUEFf TUFYX1FVRVVFX1BBSVJTICogMl07DQo+ICB9Ow0KPiANCj4gIHN0cnVjdCBzZmNfdmRwYV9vcHNf ZGF0YSAqDQo+IC0tDQo+IDEuOC4zLjENCg0K