From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 6BD0FA00E6 for ; Fri, 12 Jul 2019 18:29:55 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id E4CD21B9FA; Fri, 12 Jul 2019 18:29:54 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by dpdk.org (Postfix) with ESMTP id 1B2651B951 for ; Fri, 12 Jul 2019 18:29:54 +0200 (CEST) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x6CGFBbF002086; Fri, 12 Jul 2019 09:29:53 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pfpt0818; bh=reii3SN7dlKIjcxQb96LhrKiE0B39Sfwv4qfsWmLJWs=; b=r6USG30jcgPv8bmL8RYMRoUfuqCT+28AqPC9b+OQo+ktoYvmCRbC2GEYPTeiQQZ6VFOw jjgwjekxPmzQvWZMnYoIt3UQowPwdS6hcbS1MOIfPf1FWY2YBJJwcvS7ntmGC/w7HQdi 9LNP98nQ/NANzgdDd9AIcINuu21/F4AekZOj9htN9riIOc9ne1eJuaX05bclXiwz1Fow vl78lrkc3owaYV6bkiZ77Q2HzFbsnP1rU0Pbma4y7Lt+oez4kUf/Xp0kxi7yvJsW0o5P 1Eruk8SCrXBEmbNJCyd6ZxdkCvBYooItBpYTJT9b8f5q4QWNBIPZz137x+hPn6hFLc/M wQ== Received: from sc-exch04.marvell.com ([199.233.58.184]) by mx0b-0016f401.pphosted.com with ESMTP id 2tpdc83kkm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Fri, 12 Jul 2019 09:29:52 -0700 Received: from SC-EXCH02.marvell.com (10.93.176.82) by SC-EXCH04.marvell.com (10.93.176.84) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Fri, 12 Jul 2019 09:29:51 -0700 Received: from NAM04-SN1-obe.outbound.protection.outlook.com (104.47.44.54) by SC-EXCH02.marvell.com (10.93.176.82) with Microsoft SMTP Server (TLS) id 15.0.1367.3 via Frontend Transport; Fri, 12 Jul 2019 09:29:50 -0700 ARC-Seal: i=1; a=rsa-sha256; s=testarcselector01; d=microsoft.com; cv=none; b=cGcDJmoXPS1O8Z0wT6Sc3SZyfs46yECEFFq2bg3pDOESpQ3JhoYy+qCaz9nSYfQ6hXDGBHZSdl0Oj48Rve5bqAI7pzPuwr0ZTU/8R0XnfaBDm/x6GiEdfspFV0h39xdaWOljJU/vaHoUTmBZ02sitPg+P3GVK/qu5SsOelDPBeQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=testarcselector01; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=reii3SN7dlKIjcxQb96LhrKiE0B39Sfwv4qfsWmLJWs=; b=qyPM3knen9kbAOcm8UOVM17k7ICBAPQdrezE9O4JJKetDimR7Jp0WF31rdE5WK15RAdW/JMucM+rYmT23Y/ey77jNpQqOemsdwNSd2Vg4R63MUCORn65GkbInHz8ZZR1opjDKZ7h6wRbeT8HvjdPB7kKWKAs/kZBNbbfzOQy3Hg= ARC-Authentication-Results: i=1; test.office365.com 1;spf=none;dmarc=none;dkim=none;arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector2-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=reii3SN7dlKIjcxQb96LhrKiE0B39Sfwv4qfsWmLJWs=; b=jGm7N6pMb7jKvn9DbzNaIGNoUKf55mMb7k7FAacD/iaB5AfRLycUIogsA58f+kLX/8geTC114ETdmcwDgFz4bOv9qKGGJBWxsuIeJPQFw80KTuXhJaGnHibF+/D/TeLh1pqm66qvJMxilFTLI3QZc/StYB/Koet3lIn0SXz8Pxg= Received: from CH2PR18MB3381.namprd18.prod.outlook.com (52.132.246.204) by CH2PR18MB3317.namprd18.prod.outlook.com (52.132.246.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2008.16; Fri, 12 Jul 2019 16:29:48 +0000 Received: from CH2PR18MB3381.namprd18.prod.outlook.com ([fe80::189c:3889:b207:8922]) by CH2PR18MB3381.namprd18.prod.outlook.com ([fe80::189c:3889:b207:8922%5]) with mapi id 15.20.2052.019; Fri, 12 Jul 2019 16:29:48 +0000 From: Vamsi Krishna Attunuru To: Ferruh Yigit , "dev@dpdk.org" CC: "olivier.matz@6wind.com" , "arybchenko@solarflare.com" , "Kiran Kumar Kokkilagadda" Thread-Topic: [EXT] Re: [PATCH v6 4/4] kernel/linux/kni: add IOVA support in kni module Thread-Index: AQHVKwoY02zw7QZOhk6Qx0GGn6LtY6bFtcEAgAEscCyAAAxvgIAAVnDQ Date: Fri, 12 Jul 2019 16:29:48 +0000 Message-ID: References: <20190422061533.17538-1-kirankumark@marvell.com> <20190625035700.2953-1-vattunuru@marvell.com> <20190625035700.2953-5-vattunuru@marvell.com> <98bf2103-f48f-4baa-0d4a-f03f9e538519@intel.com> <285145b7-a829-b614-7971-2df171800466@intel.com> In-Reply-To: <285145b7-a829-b614-7971-2df171800466@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [103.227.98.232] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: c271443a-ff5b-434a-0f04-08d706e62852 x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:CH2PR18MB3317; x-ms-traffictypediagnostic: CH2PR18MB3317: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:3513; x-forefront-prvs: 00963989E5 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(346002)(376002)(366004)(136003)(39860400002)(396003)(199004)(189003)(13464003)(256004)(86362001)(186003)(74316002)(26005)(52536014)(53936002)(71190400001)(71200400001)(25786009)(107886003)(11346002)(4326008)(446003)(6246003)(6436002)(486006)(476003)(55016002)(9686003)(229853002)(68736007)(54906003)(2501003)(110136005)(66066001)(5660300002)(3846002)(6116002)(33656002)(2906002)(76176011)(6506007)(53546011)(99286004)(102836004)(7696005)(14454004)(8936002)(81166006)(81156014)(478600001)(316002)(305945005)(7736002)(66946007)(76116006)(64756008)(66446008)(66476007)(8676002)(66556008); DIR:OUT; SFP:1101; SCL:1; SRVR:CH2PR18MB3317; H:CH2PR18MB3381.namprd18.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: marvell.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: mME5hK5AASvNfPyti6NjNO8zEg/us4a0HJI5byZqwNhNmb3yHX7SUoNkGrSP8h1Qv4Dh0wK9L3CWU8V1wfhtVAIw8mMGeuHe9YO8DsyYTL3EDSXT5uKdvDPpueU5sQZy2z6rafuvqOIYQEkQVrB38GXnF6E4I8yq6mVjOjxXnHPwi1Y3Y6SDJworddDaEUXOBcZD8pEijbkwL2O479nvHq+iY6pvmZO/rMnyWhtvoFTtJivm/ljG4AexPtsRp2wAnkY+cMxCFELvC4xrjhQ7S6uzW1QMM/Igwq0W/yKCJVQXqexevEKyZBfNB7RFuoQb+0gionxNFbZzDw4cJwmbuCnmM7/u71BhzPx7CVYBJAEGxfd6EFUVCPusF0R20unq/uJBxUoSDg9XFTwwldoQTBo7hQIgj2ZB89aaku9zdp4= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: c271443a-ff5b-434a-0f04-08d706e62852 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Jul 2019 16:29:48.3466 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 70e1fb47-1155-421d-87fc-2e58f638b6e0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: vattunuru@marvell.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR18MB3317 X-OriginatorOrg: marvell.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2019-07-12_04:, , signatures=0 Subject: Re: [dpdk-dev] [EXT] Re: [PATCH v6 4/4] kernel/linux/kni: add IOVA support in kni module X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 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" DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogRmVycnVoIFlpZ2l0IDxm ZXJydWgueWlnaXRAaW50ZWwuY29tPg0KPiBTZW50OiBGcmlkYXksIEp1bHkgMTIsIDIwMTkgNDo0 MCBQTQ0KPiBUbzogVmFtc2kgS3Jpc2huYSBBdHR1bnVydSA8dmF0dHVudXJ1QG1hcnZlbGwuY29t PjsgZGV2QGRwZGsub3JnDQo+IENjOiBvbGl2aWVyLm1hdHpANndpbmQuY29tOyBhcnliY2hlbmtv QHNvbGFyZmxhcmUuY29tOyBLaXJhbiBLdW1hcg0KPiBLb2traWxhZ2FkZGEgPGtpcmFua3VtYXJr QG1hcnZlbGwuY29tPg0KPiBTdWJqZWN0OiBSZTogW0VYVF0gUmU6IFtQQVRDSCB2NiA0LzRdIGtl cm5lbC9saW51eC9rbmk6IGFkZCBJT1ZBIHN1cHBvcnQgaW4NCj4ga25pIG1vZHVsZQ0KPiANCj4g T24gNy8xMi8yMDE5IDExOjM4IEFNLCBWYW1zaSBLcmlzaG5hIEF0dHVudXJ1IHdyb3RlOg0KPiA+ DQo+ID4NCj4gPg0KPiA+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPiAtLS0tLS0tLS0tDQo+ID4gKkZyb206 KiBGZXJydWggWWlnaXQgPGZlcnJ1aC55aWdpdEBpbnRlbC5jb20+DQo+ID4gKlNlbnQ6KiBUaHVy c2RheSwgSnVseSAxMSwgMjAxOSAxMDowMCBQTQ0KPiA+ICpUbzoqIFZhbXNpIEtyaXNobmEgQXR0 dW51cnU7IGRldkBkcGRrLm9yZw0KPiA+ICpDYzoqIG9saXZpZXIubWF0ekA2d2luZC5jb207IGFy eWJjaGVua29Ac29sYXJmbGFyZS5jb207IEtpcmFuIEt1bWFyDQo+ID4gS29ra2lsYWdhZGRhDQo+ ID4gKlN1YmplY3Q6KiBbRVhUXSBSZTogW1BBVENIIHY2IDQvNF0ga2VybmVsL2xpbnV4L2tuaTog YWRkIElPVkEgc3VwcG9ydA0KPiA+IGluIGtuaSBtb2R1bGUNCj4gPg0KPiA+IEV4dGVybmFsIEVt YWlsDQo+ID4NCj4gPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gT24gNi8yNS8yMDE5IDQ6NTcgQU0sIHZh dHR1bnVydUBtYXJ2ZWxsLmNvbSB3cm90ZToNCj4gPj4gRnJvbTogS2lyYW4gS3VtYXIgSyA8a2ly YW5rdW1hcmtAbWFydmVsbC5jb20+DQo+ID4+DQo+ID4+IFBhdGNoIGFkZHMgc3VwcG9ydCBmb3Ig a2VybmVsIG1vZHVsZSB0byB3b3JrIGluIElPVkEgPSBWQSBtb2RlLCB0aGUNCj4gPj4gaWRlYSBp cyB0byBnZXQgcGh5c2ljYWwgYWRkcmVzcyBmcm9tIGlvdmEgYWRkcmVzcyB1c2luZw0KPiA+PiBp b21tdV9pb3ZhX3RvX3BoeXMgQVBJIGFuZCBsYXRlciB1c2UgcGh5c190b192aXJ0IEFQSSB0byBj b252ZXJ0IHRoZQ0KPiA+PiBwaHlzaWNhbCBhZGRyZXNzIHRvIGtlcm5lbCB2aXJ0dWFsIGFkZHJl c3MuDQo+ID4+DQo+ID4+IFdoZW4gY29tcGFyZWQgd2l0aCBJT1ZBID0gUEEgbW9kZSwgdGhlcmUg aXMgbm8gcGVyZm9ybWFuY2UgZHJvcA0KPiB3aXRoDQo+ID4+IHRoaXMgYXBwcm9hY2guDQo+ID4+ DQo+ID4+IFRoaXMgYXBwcm9hY2ggZG9lcyBub3Qgd29yayB3aXRoIHRoZSBrZXJuZWwgdmVyc2lv bnMgbGVzcyB0aGFuIDQuNC4wDQo+ID4+IGJlY2F1c2Ugb2YgQVBJIGNvbXBhdGliaWxpdHkgaXNz dWVzLg0KPiA+Pg0KPiA+PiBTaWduZWQtb2ZmLWJ5OiBLaXJhbiBLdW1hciBLIDxraXJhbmt1bWFy a0BtYXJ2ZWxsLmNvbT4NCj4gPj4gU2lnbmVkLW9mZi1ieTogVmFtc2kgQXR0dW51cnUgPHZhdHR1 bnVydUBtYXJ2ZWxsLmNvbT4NCj4gPg0KPiA+IDwuLi4+DQo+ID4NCj4gPj4gQEAgLTM1MSwxNSAr MzU0LDU2IEBAIGtuaV9pb2N0bF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCB1aW50MzJfdA0KPiA+ PmlvY3RsX251bSwNCj4gPj7CoMKgwqDCoMKgwqDCoCBzdHJuY3B5KGtuaS0+bmFtZSwgZGV2X2lu Zm8ubmFtZSwgUlRFX0tOSV9OQU1FU0laRSk7DQo+ID4+DQo+ID4+wqDCoMKgwqDCoMKgwqAgLyog VHJhbnNsYXRlIHVzZXIgc3BhY2UgaW5mbyBpbnRvIGtlcm5lbCBzcGFjZSBpbmZvICovDQo+ID4+ IC3CoMKgwqDCoCBrbmktPnR4X3EgPSBwaHlzX3RvX3ZpcnQoZGV2X2luZm8udHhfcGh5cyk7DQo+ ID4+IC3CoMKgwqDCoCBrbmktPnJ4X3EgPSBwaHlzX3RvX3ZpcnQoZGV2X2luZm8ucnhfcGh5cyk7 DQo+ID4+IC3CoMKgwqDCoCBrbmktPmFsbG9jX3EgPSBwaHlzX3RvX3ZpcnQoZGV2X2luZm8uYWxs b2NfcGh5cyk7DQo+ID4+IC3CoMKgwqDCoCBrbmktPmZyZWVfcSA9IHBoeXNfdG9fdmlydChkZXZf aW5mby5mcmVlX3BoeXMpOw0KPiA+PiAtDQo+ID4+IC3CoMKgwqDCoCBrbmktPnJlcV9xID0gcGh5 c190b192aXJ0KGRldl9pbmZvLnJlcV9waHlzKTsNCj4gPj4gLcKgwqDCoMKgIGtuaS0+cmVzcF9x ID0gcGh5c190b192aXJ0KGRldl9pbmZvLnJlc3BfcGh5cyk7DQo+ID4+IC3CoMKgwqDCoCBrbmkt PnN5bmNfdmEgPSBkZXZfaW5mby5zeW5jX3ZhOw0KPiA+PiAtwqDCoMKgwqAga25pLT5zeW5jX2t2 YSA9IHBoeXNfdG9fdmlydChkZXZfaW5mby5zeW5jX3BoeXMpOw0KPiA+PiArwqDCoMKgwqAgaWYg KGRldl9pbmZvLmlvdmFfbW9kZSkgew0KPiA+PiArI2lmIEtFUk5FTF9WRVJTSU9OKDQsIDQsIDAp ID4gTElOVVhfVkVSU0lPTl9DT0RFDQo+ID4NCj4gPiBXZSBoYXZlICJrbmkvY29tcGF0LmgiIHRv IHB1dCB0aGUgdmVyc2lvbiBjaGVja3MsIHBsZWFzZSB1c2UNCj4gPiBhYnN0cmFjdGVkIGZlYXR1 cmUgY2hlY2tzIG9ubHkgaW4gdGhlIGNvZGUuDQo+ID4gRnJvbSBleHBlcmllbmNlIHRoaXMgZ29l cyB1Z2x5IHF1aWNrbHkgd2l0aCB0aGUgYWRkaXRpb24gdG8gZGlzdHJvDQo+ID4ga2VybmVscyBh bmQgdGhlaXIgc3BlY2lmaWMgdmVyc2lvbmluZywgc28gYmV0dGVyIHRvIGhpZGUgdGhlc2UgYWxs IGZyb20gdGhlDQo+IHNvdXJjZSBjb2RlLg0KPiA+DQo+ID4gQW5kIHRoaXMgdmVyc2lvbiByZXF1 aXJlbWVudCBuZWVkcyB0byBiZSBkb2N1bWVudGVkIGluIGtuaSBkb2MuDQo+ID4NCj4gPiBhY2sN Cj4gPg0KPiA+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICh2b2lkKXBjaTsNCj4gPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwcl9lcnIoIktlcm5lbCB2ZXJzaW9uIGlzIG5vdCBzdXBw b3J0ZWRcbiIpOw0KPiA+DQo+ID4gQ2FuIHlvdSBwbGVhc2UgaW5jbHVkZSAnaW92YV9tb2RlJyBj b25kaXRpb24gaW50byB0aGUgbWVzc2FnZSBsb2csDQo+ID4gYmVjYXVzZSB0aGlzIGtlcm5lbCB2 ZXJzaW9uIGlzIHN1cHBvcnRlZCBpZiB1c2VyIHdhbnRzIHRvIHVzZSB2aWENCj4gJ2lvdmFfbW9k ZSA9PSAwJyBjb25kaXRpb24uDQo+ID4NCj4gPiBhY2sNCj4gPg0KPiA+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHJldHVybiAtRUlOVkFMOw0KPiA+PiArI2Vsc2UNCj4gPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBwY2kgPSBwY2lfZ2V0X2RldmljZShkZXZfaW5mby52ZW5kb3JfaWQs DQo+ID4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgZGV2X2luZm8uZGV2aWNlX2lkLCBOVUxMKTsNCj4gPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB3aGlsZSAocGNpKSB7DQo+ID4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICgocGNpLT5idXMtPm51bWJlciA9PSBkZXZfaW5m by5idXMpICYmDQo+ID4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgKFBDSV9TTE9UKHBjaS0+ZGV2Zm4pID09IGRldl9pbmZvLmRldmlkKSAmJg0KPiA+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChQQ0lf RlVOQyhwY2ktPmRldmZuKSA9PQ0KPiA+PiArZGV2X2luZm8uZnVuY3Rpb24pKSB7DQo+ID4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBk b21haW4gPQ0KPiA+PiAraW9tbXVfZ2V0X2RvbWFpbl9mb3JfZGV2KCZwY2ktPmRldik7DQo+ID4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBicmVhazsNCj4gPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg fQ0KPiA+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwY2kgPSBw Y2lfZ2V0X2RldmljZShkZXZfaW5mby52ZW5kb3JfaWQsDQo+ID4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGRldl9pbmZvLmRldmljZV9pZCwgcGNpKTsNCj4gPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB9DQo+ID4NCj4gPiBXaGF0IGlmICdwY2knIGlzIE5VTEwgaGVyZT8NCj4gPiBJ biBrbmkgaXQgaXMgbm90IHJlcXVpcmVkIHRvIHByb3ZpZGUgYSBkZXZpY2UgYXQgYWxsLg0KPiA+ DQo+ID4gQWNrLCB3aWxsIGFkZCBhIE5VTEwgY2hlY2suDQo+ID4gb3RoZXIgcG9pbnQgaXMgbm90 IGNsZWFyIHRvIG1lLCBkZXZpY2UgaW5mbyBpcyBhYnNvbHV0ZWx5IHJlcXVpcmVkIGF0DQo+ID4g bGVhc3QgZm9ywqAgSU9WQT1WQSBtb2RlLCBzaW5jZSBpdCByZXF1aXJlcyB0byBwcm9jdXJlIGlv bW11IGRvbWFpbg0KPiBkZXRhaWxzLg0KPiANCj4gImRldmljZSBpbmZvIGlzIGFic29sdXRlbHkg cmVxdWlyZWQiICpvbmx5KiBmb3IgSU9WQT1WQSBtb2RlLCBzbyB1c2VyIG1heQ0KPiBza2lwIHRv IHByb3ZpZGUgaXQuDQo+IA0KPiA+IEFueSB0aG91Z2h0cyBvciB3YXlzIHRvIGFkZHJlc3MgdGhp cyB3aXRob3V0IGRldmljZS4/DQo+IA0KPiBSZXR1cm4gZXJyb3IgaWYgJ2lvdmFfbW9kZScgcmVx dWVzdGVkIGJ1dCBkZXZpY2UgaW5mbyBub3Q/DQo+IA0KPiBCdXQgeW91IGRpZG4ndCByZXBsaWVk IHRvIHBhc3NpbmcgJ2lvdmFfbW9kZScgZnJvbSBhcHBsaWNhdGlvbiwgSSB3b3VsZCBsaWtlDQo+ IGhlYXIgd2hhdCB5b3UgYXJlIHRoaW5raW5nIGFib3V0IGl0Li4NCg0KT25lIHF1ZXJ5IHJlZ2Fy ZGluZyBkZWZpbmluZyBjb25maWcgZm9yIGtuaQ0KV2hlcmUgdGhpcyBjb25maWcgY29tZXMsIGVh bCBvciBrbmkgc2FtcGxlIGFwcCBvciBLTkkgcHVibGljIEFQST8NCg0KPiANCj4gPg0KPiA+IDwu Li4+DQo+ID4NCj4gPj4gQEAgLTE4Niw3ICsyMDIsMTAgQEAga25pX2ZpZm9fdHJhbnNfcGEydmEo c3RydWN0IGtuaV9kZXYgKmtuaSwNCj4gPj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHJldHVybjsNCj4gPj4NCj4gPj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgZm9yIChpID0gMDsgaSA8IG51bV9yeDsgaSsrKSB7DQo+ID4+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGt2YSA9IHBhMmt2YShrbmktPnBhW2ldKTsN Cj4gPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGxpa2Vs eShrbmktPmlvdmFfbW9kZSA9PSAxKSkNCj4gPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGt2YSA9IGlvdmEya3ZhKGtuaSwga25pLT5w YVtpXSk7DQo+ID4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVs c2UNCj4gPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGt2YSA9IHBhMmt2YShrbmktPnBhW2ldKTsNCj4gPg0KPiA+IFRvIHJlZHVjZSB0 aGUgY2h1cm4sIHdoYXQgYWJvdXQgdXBkYXRpbmcgdGhlICdwYTJrdmEoKScgYW5kIHB1dCB0aGUN Cj4gPiAiKGtuaS0+aW92YV9tb2RlID09IDEpIiBjaGVjayB0aGVyZT8gRG9lcyBpdCBoZWxwPyAo bm90IG9ubHkNCj4gPiAncGEya3ZhKCknIGJ1dCBpdHMgZnJpZW5kcyBhbHNvLCBhbmQgaWYgaXQg bWFrZXMgbW9yZSBzZW5zZSBhZ3JlZSB0bw0KPiA+IHJlbmFtZSB0aGUgZnVuY3Rpb25zKQ0KPiA+ DQo+ID4gTm8sIGluIFZBIG1vZGUsIGtuaS0+cGFbaV0gcG9pbnRzIHRvIGlvdmEgYWRkcmVzcywg cGEya3ZhKCkgb2YgaW92YQ0KPiA+IGFkZHJlc3MgbWlnaHQgY3Jhc2gsIGhlbmNlIHRoZSBpZi4u ZWxzZSBjaGVjayBpcyBhZGRlZC4NCj4gDQo+IEkgdW5kZXJzdGFuZCB0aGF0IHBhcnQuDQo+IFdo YXQgSSBhbSBzdWdnZXN0aW9uIGlzIHNvbWV0aGluZyBsaWtlIHRoaXM6DQo+IA0KPiBrdmEgPSBj b21tb25fZnVuY3Rpb24oa25pLCBrbmktPnBhW2ldKTsNCj4gDQo+IC0tLQ0KPiANCj4gY29tbW9u X2Z1bmN0aW9uKCkgew0KPiAJaWYgKHVubGlrZWx5KGtuaS0+aW92YV9tb2RlID09IDEpKQ0KPiAJ CXJldHVybiBpb3ZhMmt2YShrbmksIGtuaS0+cGFbaV0pOw0KPiAJcmV0dXJuIHBhMmt2YShrbmkt PnBhW2ldKTsNCj4gfQ0KPiANCj4gVG8gaGlkZSB0aGUgY2hlY2sgaW4gdGhlIGZ1bmN0aW9uIGFu ZCBtYWtlIGNvZGUgbW9yZSByZWFkYWJsZQ0KPiANCj4gPg0KPiA+IEFuZCBidHcsIHdoeSAnbGlr ZWx5JyBjYXNlIGlzICJrbmktPmlvdmFfbW9kZSA9PSAxIj8NCj4gPg0KPiA+IG5vIHNwZWNpZmlj IGNhc2Ugb3RoZXIgdGhhbiBicmFuY2ggcHJlZGljdCwgd2lsbCByZW1vdmUgdGhpcyBpZiBpdCdz DQo+ID4gcmVhbGx5IGhhcm1mdWwgdG8gUEEgbW9kZS4NCg0K