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 59598A0032; Tue, 16 Nov 2021 17:28:19 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 24C2340DF5; Tue, 16 Nov 2021 17:28:19 +0100 (CET) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2066.outbound.protection.outlook.com [40.107.220.66]) by mails.dpdk.org (Postfix) with ESMTP id C7EF740141 for ; Tue, 16 Nov 2021 17:28:17 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=luHH6JLfkX4aFdXx6JRLU/W3aZD+zEK4AkkFRCBqjhfiecgHnMK/E2l5OMvklXb7seUqs7cNJV5RnxhQXI+rTXUqnX1gVz9Mze+zRzmZryEvCUHiryDkf4pX33LBOKbrDDQiUqton02/kor1kZuP8oDYTK7VIwFfEVVmAMoLYGjAShTHdvpjU2dvC7arggUUnKWVzyuG0xCewV1nu33tHiJTSipLnXACfpORZcnFWI168I/X0FAmoUli9CCVdbW29dMsyj7OHsovESZKsLa9/qDDSJkxwIoPVSIWksiV7jZ6WpiwsmwEdWvyP8HB84pZHMY7EHJXhmpQ7FLch1m2CA== 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=s7/Gpnd/O1fFAlJJlfLD7P8RGpF5El4uwMb6JGY0efI=; b=TPpo1fcOL9B/Z1PM3PgsIClYtux3tm2Jc/NTq9GOfAKddzjONYiPHCL9aVC3cEk7G/OUPhacphHBUbwYK/0B80VCeS41jnJ4iX6Kuq6PwzPAQa/R8oafxC0YNg0BIeHniF2sIjLV46nrpERevjy4DdMTGELzQ2jZIhmgFd0kkw0+nKEOCfhtVsPcUowjDjCCMOM8WG85kCtzQI9VMlG956B2vVOEsV4vfemDCwGm0gmLlh7p3pUx9yPeM/h9YRmY6Q0UDbIG8v/IQR00K9BLXpag9X9AK6y3c8GbWHx/1imaCOPmGouub8tp3RLCTQu5VTY1YcnRvaSmrT9IIZcVeA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=s7/Gpnd/O1fFAlJJlfLD7P8RGpF5El4uwMb6JGY0efI=; b=M1Suc9VBbYl9YhJ4EXpqr+CkoUMTPsndRic/mUg+8FmPVltjU2eqQmRr6S1ggggwcjFYNNGp3d1dry6GLTxnX4sWXSmAxV+ZrSAbTZYWUkCcZPkT/q8BljKzBYShCdExc0GeKxZhO64X8vMCkWIN3FrUwja7UbFQ+8T/hKk3USPm0VuDCY0VRgujdxWv9+o4qaZnKLNbImKFXj3CHFSeYj2RdOOuSKmhLJ+OdNIl2749xwfxwi/oNCKC2DuHyVrHwiVJGXLqlv84duKtQPoSRRtBhZvDGYbvkWSxTi6rG7vIZlWAzSA7hksxHmatMwk1/FgUnIxyDOkXj/LWlpqyew== Received: from DM6PR12MB3753.namprd12.prod.outlook.com (2603:10b6:5:1c7::18) by DM5PR12MB1913.namprd12.prod.outlook.com (2603:10b6:3:10d::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.27; Tue, 16 Nov 2021 16:28:16 +0000 Received: from DM6PR12MB3753.namprd12.prod.outlook.com ([fe80::8dc4:eba4:b43b:7d59]) by DM6PR12MB3753.namprd12.prod.outlook.com ([fe80::8dc4:eba4:b43b:7d59%5]) with mapi id 15.20.4690.027; Tue, 16 Nov 2021 16:28:15 +0000 From: Slava Ovsiienko To: Elena Agostini , "dev@dpdk.org" Subject: RE: [PATCH v2 1/1] app/testpmd: add GPU memory option in iofwd engine Thread-Topic: [PATCH v2 1/1] app/testpmd: add GPU memory option in iofwd engine Thread-Index: AQHX1wBy8hPCPKoh3Ui9UsSLK9Goy6wGSXrg Date: Tue, 16 Nov 2021 16:28:15 +0000 Message-ID: References: <20211029204909.21318-1-eagostini@nvidia.com> <20211111214141.26612-1-eagostini@nvidia.com> <20211111214141.26612-2-eagostini@nvidia.com> In-Reply-To: <20211111214141.26612-2-eagostini@nvidia.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 533c8451-0679-402c-6edf-08d9a91e1794 x-ms-traffictypediagnostic: DM5PR12MB1913: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:1443; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 42jcGPYXQQwakO0oYesa646ow9RkH03NmJpIqAJ7FvjZxLef6kDZuqgwn1/FtlxoeG43qSHJyvR3S+SiLnJyyk/nOFzHMmpPTsaWTC2SzHNPvLqx2zpEWfAgBHCl4XOpSBo0oLvx6siR5VaLaU+sZWDsWCkXTkwkJ46gT/B4inYPD4dpbyUzeue7vbYrzF+/FO3jle9cHQqlwCW7RysWMlOwD13NGQ6AiVBk6k8SYlrC4o6cTmuA+lLyQpdNtfWtb0PVKIICdkiOOgs9VOn7WATOWemIE1QhfS6GUeU/8RkFH1OW1C8NrfqY7gdmt2n1NfglSnvZfMf7HybLVG+JJJ0Dc0Da/d0ghiZAPs1AiRE17NZW4TE6zzVG6EVCjwPIy+mYb0sA6dtif9Mt19ysnhDfSLgaOwyjYVWoPyX97gcNvtfIRywnB3SGQ1+qCNBwos6vKX8TT3fMCV2rMlqHsSDKwEvcOUor35Azen/cSKOWg2yWoEyt1v0VqUGvAQYELhdrSvgAoXM8KwiznZ/C/E2uc6If9ZFk+fDQPfDZHUetd4n/GA+UCLE3sCAZ4uVZ+bfd77ReZvGnQ/PDNlVXMswmnnLv8nO/hw7rMqpW/X+REmPL+QfOPoArq01TX11LTR2mdA0ePDUIt3XucOV/xtZv1OjSmKmk0C4vkF8aO80MWoYaOyZfY3f31fOdhGcUhysWomBJGPz+FZqAGnJHKQ== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM6PR12MB3753.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(508600001)(76116006)(26005)(64756008)(66556008)(66946007)(66476007)(55016002)(66446008)(52536014)(5660300002)(8936002)(38100700002)(316002)(122000001)(2906002)(186003)(7696005)(110136005)(33656002)(8676002)(83380400001)(86362001)(9686003)(71200400001)(38070700005)(53546011)(6506007); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?MjY0ZDFXT3NSOGtnTEhaZXdnTFRYMHFtdXF0bVArV21zbHUwWW1wSC9sVWpw?= =?utf-8?B?V0NaWit3YVBsZXp2UHhLVHpkL0tXRFhzVFZlQWpRVTZGSVoxb3Q3Yk5VMGNt?= =?utf-8?B?THUwdXpCTWJ1QjFZMEg3WW1nZUhHTEViSVdBaXdETVB5SzJOeXc1Nm5wWVI4?= =?utf-8?B?eHhScFNxTXMyaUEyYjFZNUFnSjh5dDBFalBCa1V1ZU9VWGZydUMvcmd6QXFu?= =?utf-8?B?K0NkUmtZUlM0dmVvOUtZamlxcGZISHR1KzQ4N05wTmZPWEVMbHErTHJVT0p4?= =?utf-8?B?TmNobXZEUkRSUktFai9SSFAvUStoNGZybzFhSXZpYTZoVnRhdlMzK2RtaEht?= =?utf-8?B?NmNNQ1N5ZHV4VGVrd0VKcWdOa0F0cTNXNjRXVi9nQmhzV3VvTGc3MGNFRUsw?= =?utf-8?B?KzRqMFdFM0dhT0R6L0pLRE5TTHdNK051Smh0MGkyUURIVFRCTXliUmxudWVT?= =?utf-8?B?NHIveCsxZzA3TVU1dFI2eExuL2VvWHYrM29RWGN3bDJtMU1EL29PbUx3N2oz?= =?utf-8?B?RTNTNDZhNEdlVHR1bGlYS0JXclppbHhiMCtKRUNiU0w0bDJ3bTM2UnhNUUVL?= =?utf-8?B?UGlkeEN2RTdJdkVySW1jUVJtTmp3YUtSblc2M091cGZtK09BWHNmTFFiajgz?= =?utf-8?B?Z25iTExRS1ZQdEMwMXMwL0Q5cXZGdUloNTJhQTdidFAxZzNDMTROaWFwNy9K?= =?utf-8?B?QU5ja21FNlE1bElRTUhNa3o0QUZlZW81WVQvUm9NNzU0eXRhbzRsdkpZWTNt?= =?utf-8?B?YXg2Qk53UU9NZ2NrTGROQ0labCt6RmhieitkYWprOXNKSzhON1cxSkxvRWlz?= =?utf-8?B?NzIrQStuZnBuQUhIZlJpdHZ5d29DOW1EZ21EemJEbkJVMlg4ZUZxanluZVlU?= =?utf-8?B?NjgwRVQ3RWc4aHd6NjVBT1JZOEd2V2FHSWQwc2NPVno5ZERLRFNXKy9LeGhH?= =?utf-8?B?cXVKOXF5ODltU2hpL3ZSYlhRNWhwOTdyNzJWdjNRVldhSmU1TzVuc1VCUXdJ?= =?utf-8?B?aGFkSDBHMXV2OEg4a25mK1hGTTZlSmlUbTErTHFXaEk2NW5GZ3BtenVQVWlx?= =?utf-8?B?UFZHVllXNWk4MnFpNXZvT2NpYzdyK0JlNnloaFZ0UXdvUUwwaDlUdEJ0Nlhz?= =?utf-8?B?MXZ5MU4yMFM4a2h0alZ3UGpxSmhXbjNmT3JJdEhEMml4NUx0Z1lFOHA0cnMw?= =?utf-8?B?S0RRd2hZTlBDeFI3d0FpcDJRRHdVQ1ZyN1REZ1pVQ0pVTHkrbFY5L1d2cVBU?= =?utf-8?B?VDF3UUE1RjE2endrOUtrNVBOdFZ3MU9tUnBlNC81SkxWNnM0Z2N5MlFldEYx?= =?utf-8?B?NjlqNEE5cXJUTnNGaXJibW94NTJ4WjdFZFprUVp2WGhjVjgxYnNrcGtsMFNM?= =?utf-8?B?REZicDRnR3J0eml1ZWRjalp3NW1QUVllUjRBSXdqR09Bakx5WlFpeVRha0Zj?= =?utf-8?B?c1BrOG56REFGZFgvalB5M1R4RlB5UFg3cVh5TlhkeHloR1hFdHpvKzh4TXVk?= =?utf-8?B?eTJEUnFqbDUyZ0dsWnVXaTg1U1lVRE9SNDMxTzAzd2pORGQzZUs2L3pVMzc4?= =?utf-8?B?VE9yejZwS21pR2hmRjNMSk9ZLzJPcjF3QzRSNXZxZldDVy9CeXVoYkNnQk1E?= =?utf-8?B?S292UGtxVEsySTRVVlZ6aER6MVlUWFZjRmpVZ2VKWWVzRE5GTkVsbElMNVd6?= =?utf-8?B?V1B6blhFbXB4OVBDdUpSUGxxeU1JazdidldWM3d0aEwxQ3MxUTFMaEVDcEdI?= =?utf-8?B?YVdqNHJYMElJU3RYTlltWHZIc1JoRU1iN3V3MHFTaGRkTW5yaXlrbTVVSFda?= =?utf-8?B?WFJxbVJxTk14TmUwYnVBUTIreXJEYjhOQ1d0dnhKN2pmKytVQldFa2tJU1c3?= =?utf-8?B?LzZybmhkcTBDeStRcHlUNEhIRW1LaDZscUVjbnNKZGQvWXN6Wlg4RkQyenVB?= =?utf-8?B?aWJ4QzBxaWlTWFExc3RQUU1hdTQ5SkY1WlNOVDVRMmJDdkJqV21WWEs1TUpR?= =?utf-8?B?SE9mbi9GZEtyUVpib1VFVmNZdVNaTUxSZ09tdm1xWWoxT2JJeHRjeDA5bmo1?= =?utf-8?B?NHpUTW0ycEwxVkVpWXNoRzg5TXQrRHRQTm0vV1dCSGNxQU15TUNiUUozRVBW?= =?utf-8?B?OW1uV1ZyMG1KcnFKMWc3VGVDclRlemVwRzVIbE5MRHBXS3FvMGFkQXhIZUtK?= =?utf-8?B?VUE9PQ==?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR12MB3753.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 533c8451-0679-402c-6edf-08d9a91e1794 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Nov 2021 16:28:15.8323 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 1c8F4AyWJ6mLPbp8m37Rm9bRv4ByrtcmNXfqrtgKPWp/FhYwa10+Oha0/1Ceg+Q99yKLdxPa8ai7s7NDoDClGw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR12MB1913 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 SGksIEVsZW5hDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogZWFnb3N0 aW5pQG52aWRpYS5jb20gPGVhZ29zdGluaUBudmlkaWEuY29tPg0KPiBTZW50OiBUaHVyc2RheSwg Tm92ZW1iZXIgMTEsIDIwMjEgMjM6NDINCj4gVG86IGRldkBkcGRrLm9yZw0KPiBDYzogRWxlbmEg QWdvc3RpbmkgPGVhZ29zdGluaUBudmlkaWEuY29tPg0KPiBTdWJqZWN0OiBbUEFUQ0ggdjIgMS8x XSBhcHAvdGVzdHBtZDogYWRkIEdQVSBtZW1vcnkgb3B0aW9uIGluIGlvZndkDQo+IGVuZ2luZQ0K PiANCj4gRnJvbTogZWFnb3N0aW5pIDxlYWdvc3RpbmlAbnZpZGlhLmNvbT4NCg0KQ291bGQgeW91 LCBwbGVhc2UsIHNldCAiQXV0aG9yIiBjb3JyZWN0bHkgLSAiRWxlbmEgQWdvc3RpbmkgPGVhZ29z dGluaUBudmlkaWEuY29tPiI/DQpPdGhlcndpc2UsIHdlIHNlZSBpbiB0aGUgZ2l0IGxvZzoNCg0K IkF1dGhvcjogZWFnb3N0aW5pIDxlYWdvc3RpbmlAbnZpZGlhLmNvbT4iDQoNCkNvbXBhcmUgd2l0 aDoNCiJBdXRob3I6IEJpbmcgWmhhbyA8YmluZ3pAbnZpZGlhLmNvbT4iDQoiQXV0aG9yOiBWaWFj aGVzbGF2IE92c2lpZW5rbyA8dmlhY2hlc2xhdm9AbnZpZGlhLmNvbT4iDQoNCkFsc28sIHBsZWFz ZSwgc2VlIHRoZSBjb2Rlc3R5bGUgaXNzdWVzLCB0b28gbWFueSBjb2RlIGxpbmVzIGZhciBiZXlv bmQgMTAwIGNoYXJzLg0KTGluZXMgbGlrZSB0aGlzOg0KKwkJaWYgKG1idWZfbWVtX3R5cGVzW2lk eF0gPT0gTUJVRl9NRU1fR1BVICYmIHN0cmNtcChjdXJfZndkX2VuZy0+ZndkX21vZGVfbmFtZSwg ImlvIikgIT0gMCkgew0KY2FuIGJlIGVhc2lseSBiZSBzcGxpdHRlZC4NCg0KPj5hcHAvdGVzdHBt ZDogYWRkIEdQVSBtZW1vcnkgb3B0aW9uIGluIGlvZndkDQpBcyBJIHNlZSBmcm9tIHRoZSBwYXRj aCAtIGl0IGFkZHMgdGhlIG5ldyBtYnVmIHBvb2wgdHlwZSAocmVzaWRpbmcgb24gR1BVIG1lbW9y eSkuDQpNYXkgYmUsIHdlIHNob3VsZCByZXdvcmQgdGhlIHRpdGxlPw0KIiBhcHAvdGVzdHBtZDog YWRkIEdQVSBtZW1vcnkgb3B0aW9uIGZvciBtYnVmIHBvb2xzIg0KDQo+IA0KPiBUaGlzIHBhdGNo IGludHJvZHVjZXMgR1BVIG1lbW9yeSBpbiB0ZXN0cG1kIHRocm91Z2ggdGhlIGdwdWRldiBsaWJy YXJ5Lg0KPiBUZXN0cG1kIGNhbiBiZSB1c2VkIGZvciBuZXR3b3JrIGJlbmNobWFya3Mgd2hlbiB1 c2luZyBHUFUgbWVtb3J5DQo+IGluc3RlYWQgb2YgcmVndWxhciBDUFUgbWVtb3J5IHRvIHNlbmQg YW5kIHJlY2VpdmUgcGFja2V0cy4NCj4gVGhpcyBvcHRpb24gaXMgY3VycmVudGx5IGxpbWl0ZWQg dG8gaW9md2QgZW5naW5lLg0KV2h5PyBCZWNhdXNlIGlvZndkIHRoZSBvbmx5IG1vZGUgbm90IHRv dWNoaW5nIHRoZSBtYnVmIGRhdGE/DQpJcyBpdCBjcml0aWNhbCBmb3IgZnVuY3Rpb25hbGl0eT8g SXMgR1BVIG1idWYgcG9vbCBtZW1vcnkgYWNjZXNzaWJsZSBmcm9tIENQVSBzaWRlPw0KSSB3b3Vs ZCBleHBsYWluIHRoZSByZWFzb25zIChmb3Igc3VwcG9ydGluZyBpb2Z3ZCBtb2RlIG9ubHkpIGlu IGNvbW1pdCBtZXNzYWdlLg0KDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBFbGVuYSBBZ29zdGluaSA8 ZWFnb3N0aW5pQG52aWRpYS5jb20+DQo+IA0KPiBEZXBlbmRzLW9uOiBzZXJpZXMtMTk0NjUgKCJH UFUgbGlicmFyeSIpDQo+IERlcGVuZHMtb246IHNlcmllcy0yMDQyMiAoImNvbW1vbi9tbHg1OiBm aXggZXh0ZXJuYWwgbWVtb3J5IHBvb2wNCj4gcmVnaXN0cmF0aW9uIikNCj4gLS0tDQo+ICBhcHAv dGVzdC1wbWQvY21kbGluZS5jICAgICAgICAgICAgICAgIHwgIDE0ICsrKw0KPiAgYXBwL3Rlc3Qt cG1kL21lc29uLmJ1aWxkICAgICAgICAgICAgICB8ICAgMiArLQ0KPiAgYXBwL3Rlc3QtcG1kL3Bh cmFtZXRlcnMuYyAgICAgICAgICAgICB8ICAxMyArKy0NCj4gIGFwcC90ZXN0LXBtZC90ZXN0cG1k LmMgICAgICAgICAgICAgICAgfCAxMzMgKysrKysrKysrKysrKysrKysrKysrKystLS0NCj4gIGFw cC90ZXN0LXBtZC90ZXN0cG1kLmggICAgICAgICAgICAgICAgfCAgMTYgKysrLQ0KPiAgZG9jL2d1 aWRlcy90ZXN0cG1kX2FwcF91Zy9ydW5fYXBwLnJzdCB8ICAgMyArDQo+ICA2IGZpbGVzIGNoYW5n ZWQsIDE2NCBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQg YS9hcHAvdGVzdC1wbWQvY21kbGluZS5jIGIvYXBwL3Rlc3QtcG1kL2NtZGxpbmUuYyBpbmRleA0K PiA0ZjUxYjI1OWZlLi4zNjE5M2JjNTY2IDEwMDY0NA0KPiAtLS0gYS9hcHAvdGVzdC1wbWQvY21k bGluZS5jDQo+ICsrKyBiL2FwcC90ZXN0LXBtZC9jbWRsaW5lLmMNCj4gQEAgLTM2MTQsNiArMzYx NCw3IEBAIHBhcnNlX2l0ZW1fbGlzdChjb25zdCBjaGFyICpzdHIsIGNvbnN0IGNoYXINCg0KVGhl ICJwYXJzZV9pdGVtX2xpc3QoKSIgaXMgdXNlZCB0byBwYXJzZSB0aGUgbGlzdCBsb29raW5nIGxp a2UgIm51bWJlcjAsIG51bWJlcjEsIC4uLi4sIG51bWJlck4iDQphbmQgaW52b2tlZCBmb3IgImNv cmUiLCJwb3J0IiwgInR4dGltZXMiLCBldGMuIE5vdCBzdXJlIGFsbCBvZiB0aGVzZSBwYXJhbXMg bmVlZCB0byBoYW5kbGUgImciDQpzdWZmaXguIFdlIHNob3VsZCBhbGxvdyAiZyIgcHJvY2Vzc2lu ZyBvbmx5IGZvciAibWJ1Zi1zaXplIi4gV2UgaGF2ZSAiaXRlbV9uYW1lIiBhcmd1bWVudA0KdG8g Y2hlY2sgd2hldGhlciB3ZSBhcmUgaW52b2tlZCBvbiAibWJ1Zi1zaXplIi4NCg0KPiAqaXRlbV9u YW1lLCB1bnNpZ25lZCBpbnQgbWF4X2l0ZW1zLA0KPiAgCXVuc2lnbmVkIGludCBqOw0KPiAgCWlu dCB2YWx1ZV9vazsNCj4gIAljaGFyIGM7DQo+ICsJaW50IGdwdV9tYnVmID0gMDsNCj4gDQo+ICAJ LyoNCj4gIAkgKiBGaXJzdCBwYXJzZSBhbGwgaXRlbXMgaW4gdGhlIGxpc3QgYW5kIHN0b3JlIHRo ZWlyIHZhbHVlLg0KPiBAQCAtMzYyOCw2ICszNjI5LDE0IEBAIHBhcnNlX2l0ZW1fbGlzdChjb25z dCBjaGFyICpzdHIsIGNvbnN0IGNoYXINCj4gKml0ZW1fbmFtZSwgdW5zaWduZWQgaW50IG1heF9p dGVtcywNCj4gIAkJCXZhbHVlX29rID0gMTsNCj4gIAkJCWNvbnRpbnVlOw0KPiAgCQl9DQo+ICsJ CWlmIChjID09ICdnJykgew0KV2Ugc2hvdWxkIGNoZWNrIHdoZXRoZXIgImciIGlzIHRoZSBzaW5n bGUgY2hhciBzdWZmaXggKGxhc3QgY2hhcikuDQpPdGhlcndpc2UsICIyMGc0OCIgYW5kICJnMjBn Z2dnNDgiIHdvdWxkIGJlIGFsc28gdmFsaWQgdmFsdWVzLg0KDQo+ICsJCQkvKg0KPiArCQkJICog V2hlbiB0aGlzIGZsYWcgaXMgc2V0LCBtYnVmcyBmb3IgdGhpcyBzZWdtZW50DQo+ICsJCQkgKiB3 aWxsIGJlIGNyZWF0ZWQgb24gR1BVIG1lbW9yeS4NCj4gKwkJCSAqLw0KPiArCQkJZ3B1X21idWYg PSAxOw0KPiArCQkJY29udGludWU7DQo+ICsJCX0NCj4gIAkJaWYgKGMgIT0gJywnKSB7DQo+ICAJ CQlmcHJpbnRmKHN0ZGVyciwgImNoYXJhY3RlciAlYyBpcyBub3QgYSBkZWNpbWFsIGRpZ2l0XG4i LA0KPiBjKTsNCj4gIAkJCXJldHVybiAwOw0KPiBAQCAtMzY0MCw2ICszNjQ5LDggQEAgcGFyc2Vf aXRlbV9saXN0KGNvbnN0IGNoYXIgKnN0ciwgY29uc3QgY2hhcg0KPiAqaXRlbV9uYW1lLCB1bnNp Z25lZCBpbnQgbWF4X2l0ZW1zLA0KPiAgCQkJcGFyc2VkX2l0ZW1zW25iX2l0ZW1dID0gdmFsdWU7 DQo+ICAJCQl2YWx1ZV9vayA9IDA7DQo+ICAJCQl2YWx1ZSA9IDA7DQo+ICsJCQltYnVmX21lbV90 eXBlc1tuYl9pdGVtXSA9IGdwdV9tYnVmID8NCj4gTUJVRl9NRU1fR1BVIDogTUJVRl9NRU1fQ1BV Ow0KPiArCQkJZ3B1X21idWYgPSAwOw0KPiAgCQl9DQo+ICAJCW5iX2l0ZW0rKzsNCj4gIAl9DQo+ IEBAIC0zNjQ4LDYgKzM2NTksOSBAQCBwYXJzZV9pdGVtX2xpc3QoY29uc3QgY2hhciAqc3RyLCBj b25zdCBjaGFyDQo+ICppdGVtX25hbWUsIHVuc2lnbmVkIGludCBtYXhfaXRlbXMsDQo+ICAJCQlp dGVtX25hbWUsIG5iX2l0ZW0gKyAxLCBtYXhfaXRlbXMpOw0KPiAgCQlyZXR1cm4gMDsNCj4gIAl9 DQo+ICsNCj4gKwltYnVmX21lbV90eXBlc1tuYl9pdGVtXSA9IGdwdV9tYnVmID8gTUJVRl9NRU1f R1BVIDoNCj4gTUJVRl9NRU1fQ1BVOw0KPiArDQo+ICAJcGFyc2VkX2l0ZW1zW25iX2l0ZW0rK10g PSB2YWx1ZTsNCj4gIAlpZiAoISBjaGVja191bmlxdWVfdmFsdWVzKQ0KPiAgCQlyZXR1cm4gbmJf aXRlbTsNCj4gZGlmZiAtLWdpdCBhL2FwcC90ZXN0LXBtZC9tZXNvbi5idWlsZCBiL2FwcC90ZXN0 LXBtZC9tZXNvbi5idWlsZCBpbmRleA0KPiBkNWRmNTJjNDcwLi41YzhjYTY4YzlkIDEwMDY0NA0K PiAtLS0gYS9hcHAvdGVzdC1wbWQvbWVzb24uYnVpbGQNCj4gKysrIGIvYXBwL3Rlc3QtcG1kL21l c29uLmJ1aWxkDQo+IEBAIC0zMiw3ICszMiw3IEBAIGlmIGRwZGtfY29uZi5oYXMoJ1JURV9IQVNf SkFOU1NPTicpDQo+ICAgICAgZXh0X2RlcHMgKz0gamFuc3Nvbl9kZXANCj4gIGVuZGlmDQo+IA0K PiAtZGVwcyArPSBbJ2V0aGRldicsICdncm8nLCAnZ3NvJywgJ2NtZGxpbmUnLCAnbWV0cmljcycs ICdidXNfcGNpJ10NCj4gK2RlcHMgKz0gWydldGhkZXYnLCAnZ3JvJywgJ2dzbycsICdjbWRsaW5l JywgJ21ldHJpY3MnLCAnYnVzX3BjaScsDQo+ICsnZ3B1ZGV2J10NCj4gIGlmIGRwZGtfY29uZi5o YXMoJ1JURV9DUllQVE9fU0NIRURVTEVSJykNCj4gICAgICBkZXBzICs9ICdjcnlwdG9fc2NoZWR1 bGVyJw0KPiAgZW5kaWYNCj4gZGlmZiAtLWdpdCBhL2FwcC90ZXN0LXBtZC9wYXJhbWV0ZXJzLmMg Yi9hcHAvdGVzdC1wbWQvcGFyYW1ldGVycy5jIGluZGV4DQo+IDA5NzRiMGEzOGYuLmQ0MWY3ZjIy MGIgMTAwNjQ0DQo+IC0tLSBhL2FwcC90ZXN0LXBtZC9wYXJhbWV0ZXJzLmMNCj4gKysrIGIvYXBw L3Rlc3QtcG1kL3BhcmFtZXRlcnMuYw0KPiBAQCAtODcsNyArODcsMTAgQEAgdXNhZ2UoY2hhciog cHJvZ25hbWUpDQo+ICAJICAgICAgICJpbiBOVU1BIG1vZGUuXG4iKTsNCj4gIAlwcmludGYoIiAg LS1tYnVmLXNpemU9TixbTjFbLC4uTm5dOiBzZXQgdGhlIGRhdGEgc2l6ZSBvZiBtYnVmIHRvICIN Cj4gIAkgICAgICAgIk4gYnl0ZXMuIElmIG11bHRpcGxlIG51bWJlcnMgYXJlIHNwZWNpZmllZCB0 aGUgZXh0cmEgcG9vbHMgIg0KPiAtCSAgICAgICAid2lsbCBiZSBjcmVhdGVkIHRvIHJlY2VpdmUg d2l0aCBwYWNrZXQgc3BsaXQgZmVhdHVyZXNcbiIpOw0KPiArCSAgICAgICAid2lsbCBiZSBjcmVh dGVkIHRvIHJlY2VpdmUgd2l0aCBwYWNrZXQgc3BsaXQgZmVhdHVyZXNcbiINCj4gKwkJICAgIlVz ZSAnZycgc3VmZml4IGZvciBHUFUgbWVtb3J5LlxuIg0KPiArCQkgICAiSWYgbm8gb3IgYW4gdW5y ZWNvZ25pemVkIHN1ZmZpeCBpcyBwcm92aWRlZCwgQ1BVIGlzDQo+IGFzc3VtZWRcbiIpOw0KVW5y ZWNvZ25pemVkIHN1ZmZpeD8gSSB3b3VsZCBlbWl0IGFuIGVycm9yIGFuZCBhYm9ydCB0aGUgbGF1 bmNoLg0KDQo+ICsNCj4gIAlwcmludGYoIiAgLS10b3RhbC1udW0tbWJ1ZnM9Tjogc2V0IHRoZSBu dW1iZXIgb2YgbWJ1ZnMgdG8gYmUNCj4gYWxsb2NhdGVkICINCj4gIAkgICAgICAgImluIG1idWYg cG9vbHMuXG4iKTsNCj4gIAlwcmludGYoIiAgLS1tYXgtcGt0LWxlbj1OOiBzZXQgdGhlIG1heGlt dW0gc2l6ZSBvZiBwYWNrZXQgdG8gTg0KPiBieXRlcy5cbiIpOyBAQCAtNTk1LDYgKzU5OCw3IEBA IGxhdW5jaF9hcmdzX3BhcnNlKGludCBhcmdjLCBjaGFyKiogYXJndikNCj4gIAlzdHJ1Y3QgcnRl X2V0aF9kZXZfaW5mbyBkZXZfaW5mbzsNCj4gIAl1aW50MTZfdCByZWNfbmJfcGt0czsNCj4gIAlp bnQgcmV0Ow0KPiArCXVpbnQzMl90IGlkeCA9IDA7DQo+IA0KPiAgCXN0YXRpYyBzdHJ1Y3Qgb3B0 aW9uIGxnb3B0c1tdID0gew0KPiAgCQl7ICJoZWxwIiwJCQkwLCAwLCAwIH0sDQo+IEBAIC0xNTM4 LDQgKzE1NDIsMTEgQEAgbGF1bmNoX2FyZ3NfcGFyc2UoaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQ0K PiAgCQkJCSAgImlnbm9yZWRcbiIpOw0KPiAgCQltZW1wb29sX2ZsYWdzID0gMDsNCj4gIAl9DQo+ ICsNCj4gKwlmb3IgKGlkeCA9IDA7IGlkeCA8IG1idWZfZGF0YV9zaXplX247IGlkeCsrKSB7DQo+ ICsJCWlmIChtYnVmX21lbV90eXBlc1tpZHhdID09IE1CVUZfTUVNX0dQVSAmJg0KPiBzdHJjbXAo Y3VyX2Z3ZF9lbmctPmZ3ZF9tb2RlX25hbWUsICJpbyIpICE9IDApIHsNCj4gKwkJCWZwcmludGYo c3RkZXJyLCAiR1BVIG1lbW9yeSBtYnVmcyBjYW4gYmUgdXNlZCB3aXRoDQo+IGlvZndkIGVuZ2lu ZSBvbmx5XG4iKTsNCj4gKwkJCXJ0ZV9leGl0KEVYSVRfRkFJTFVSRSwgIkNvbW1hbmQgbGluZSBp cw0KPiBpbmNvcnJlY3RcbiIpOw0KPiArCQl9DQo+ICsJfQ0KUGxlYXNlLCBub3RlLCB0aGUgZm9y d2FyZGluZyBtb2RlIGNhbiBiZSBjaGFuZ2VkIGZyb20gaW50ZXJhY3RpdmUgcHJvbXB0IHdpdGgg InNldCBmd2QgPG1vZGU+IiBjb21tYW5kLg0KSWYgaW9md2QgbW9kZSBpcyBjcnVjaWFsIGZvciBH UFUgZnVuY3Rpb25hbGl0eSAtIHdlIHNob3VsZCBwcmV2ZW50IHN3aXRjaGluZyB0byBvdGhlciBt b2RlcyBpZiBHUFUgcG9vbHMgYXJlIGVuZ2FnZWQuDQoNCg0KPiAgfQ0KPiBkaWZmIC0tZ2l0IGEv YXBwL3Rlc3QtcG1kL3Rlc3RwbWQuYyBiL2FwcC90ZXN0LXBtZC90ZXN0cG1kLmMgaW5kZXgNCj4g YTY2ZGZiMjk3Yy4uMWFmMjM1YzRkOCAxMDA2NDQNCj4gLS0tIGEvYXBwL3Rlc3QtcG1kL3Rlc3Rw bWQuYw0KPiArKysgYi9hcHAvdGVzdC1wbWQvdGVzdHBtZC5jDQo+IEBAIC0yMDUsNiArMjA1LDEy IEBAIHVpbnQzMl90IG1idWZfZGF0YV9zaXplX24gPSAxOyAvKiBOdW1iZXIgb2YNCj4gc3BlY2lm aWVkIG1idWYgc2l6ZXMuICovICB1aW50MTZfdCBtYnVmX2RhdGFfc2l6ZVtNQVhfU0VHU19CVUZG RVJfU1BMSVRdDQo+ID0gew0KPiAgCURFRkFVTFRfTUJVRl9EQVRBX1NJWkUNCj4gIH07IC8qKjwg TWJ1ZiBkYXRhIHNwYWNlIHNpemUuICovDQo+ICsNCj4gKy8qIE1idWYgbWVtb3J5IHR5cGVzLiAq Lw0KPiArZW51bSBtYnVmX21lbV90eXBlIG1idWZfbWVtX3R5cGVzW01BWF9TRUdTX0JVRkZFUl9T UExJVF07DQo+ICsvKiBQb2ludGVycyB0byBleHRlcm5hbCBtZW1vcnkgYWxsb2NhdGVkIGZvciBt ZW1wb29scy4gKi8gdWludHB0cl90DQo+ICttZW1wb29sc19leHRfcHRyW01BWF9TRUdTX0JVRkZF Ul9TUExJVF07DQo+ICsNCj4gIHVpbnQzMl90IHBhcmFtX3RvdGFsX251bV9tYnVmcyA9IDA7ICAv Kio8IG51bWJlciBvZiBtYnVmcyBpbiBhbGwgcG9vbHMgLSBpZg0KPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAqIHNwZWNpZmllZCBvbiBjb21tYW5kLWxpbmUuICovICB1 aW50MTZfdA0KPiBzdGF0c19wZXJpb2Q7IC8qKjwgUGVyaW9kIHRvIHNob3cgc3RhdGlzdGljcyAo ZGlzYWJsZWQgYnkgZGVmYXVsdCkgKi8gQEAgLQ0KPiA1NDMsNiArNTQ5LDEyIEBAIGludCBwcm9j X2lkOw0KPiAgICovDQo+ICB1bnNpZ25lZCBpbnQgbnVtX3Byb2NzID0gMTsNCj4gDQo+ICsvKg0K PiArICogSW4gY2FzZSBvZiBHUFUgbWVtb3J5IGV4dGVybmFsIG1idWZzIHVzZSwgZm9yIHNpbXBs aWNpdHksDQo+ICsgKiB0aGUgZmlyc3QgR1BVIGRldmljZSBpbiB0aGUgbGlzdC4NCj4gKyAqLw0K PiAraW50IGdwdV9pZCA9IDA7DQpJdCBpcyBhc3NpZ25lZCB3aXRoIHplcm8gYW5kIG5ldmVyIGNo YW5nZXMuIFN1cHBvcnQgdGhlIGZpcnN0IEdQVSBvbmx5Pw0KVGhpcyBsaW1pdGF0aW9uIHNob3Vs ZCBiZSBtZW50aW9uZWQgaW4gZG9jdW1lbnRhdGlvbi4NCg0KPiArDQo+ICBzdGF0aWMgdm9pZA0K PiAgZXRoX3J4X21ldGFkYXRhX25lZ290aWF0ZV9tcCh1aW50MTZfdCBwb3J0X2lkKSAgeyBAQCAt MTEwMyw2ICsxMTE1LDc5DQo+IEBAIHNldHVwX2V4dGJ1Zih1aW50MzJfdCBuYl9tYnVmcywgdWlu dDE2X3QgbWJ1Zl9zeiwgdW5zaWduZWQgaW50DQo+IHNvY2tldF9pZCwNCj4gIAlyZXR1cm4gZXh0 X251bTsNCj4gIH0NCj4gDQo+ICtzdGF0aWMgc3RydWN0IHJ0ZV9tZW1wb29sICoNCj4gK2dwdV9t YnVmX3Bvb2xfY3JlYXRlKHVpbnQxNl90IG1idWZfc2VnX3NpemUsIHVuc2lnbmVkIGludCBuYl9t YnVmLA0KPiArCQkJdW5zaWduZWQgaW50IHNvY2tldF9pZCwgdWludDE2X3QgcG9ydF9pZCwNCj4g KwkJCWludCBncHVfaWQsIHVpbnRwdHJfdCAqIG1wX2FkZHIpDQo+ICt7DQo+ICsJaW50IHJldCA9 IDA7DQo+ICsJY2hhciBwb29sX25hbWVbUlRFX01FTVBPT0xfTkFNRVNJWkVdOw0KPiArCXN0cnVj dCBydGVfZXRoX2Rldl9pbmZvIGRldl9pbmZvOw0KPiArCXN0cnVjdCBydGVfbWVtcG9vbCAqcnRl X21wID0gTlVMTDsNCj4gKwlzdHJ1Y3QgcnRlX3BrdG1idWZfZXh0bWVtIGdwdV9tZW07DQo+ICsJ c3RydWN0IHJ0ZV9ncHVfaW5mbyBnaW5mbzsNCj4gKwl1aW50OF90IGdwdV9wYWdlX3NoaWZ0ID0g MTY7DQo+ICsJdWludDMyX3QgZ3B1X3BhZ2Vfc2l6ZSA9ICgxVUwgPDwgZ3B1X3BhZ2Vfc2hpZnQp Ow0KPiArDQo+ICsJcmV0ID0gZXRoX2Rldl9pbmZvX2dldF9wcmludF9lcnIocG9ydF9pZCwgJmRl dl9pbmZvKTsNCj4gKwlpZiAocmV0ICE9IDApDQo+ICsJCXJ0ZV9leGl0KEVYSVRfRkFJTFVSRSwN Cj4gKwkJCSJGYWlsZWQgdG8gZ2V0IGRldmljZSBpbmZvIGZvciBwb3J0ICVkXG4iLA0KPiArCQkJ cG9ydF9pZCk7DQo+ICsNCj4gKwltYnVmX3Bvb2xuYW1lX2J1aWxkKHNvY2tldF9pZCwgcG9vbF9u YW1lLCBzaXplb2YocG9vbF9uYW1lKSwNCj4gcG9ydF9pZCwgTUJVRl9NRU1fR1BVKTsNCj4gKwlp ZiAoIWlzX3Byb2NfcHJpbWFyeSgpKSB7DQo+ICsJCXJ0ZV9tcCA9IHJ0ZV9tZW1wb29sX2xvb2t1 cChwb29sX25hbWUpOw0KPiArCQlpZiAocnRlX21wID09IE5VTEwpDQo+ICsJCQlydGVfZXhpdChF WElUX0ZBSUxVUkUsDQo+ICsJCQkJIkdldCBtYnVmIHBvb2wgZm9yIHNvY2tldCAldSBmYWlsZWQ6 ICVzXG4iLA0KPiArCQkJCXNvY2tldF9pZCwgcnRlX3N0cmVycm9yKHJ0ZV9lcnJubykpOw0KPiAr CQlyZXR1cm4gcnRlX21wOw0KPiArCX0NCj4gKw0KPiArCWlmIChydGVfZ3B1X2luZm9fZ2V0KGdw dV9pZCwgJmdpbmZvKSkNCj4gKwkJcnRlX2V4aXQoRVhJVF9GQUlMVVJFLCAiQ2FuJ3QgcmV0cmll dmUgaW5mbyBhYm91dCBHUFUgJWQgLQ0KPiBieWVcbiIsDQo+ICtncHVfaWQpOw0KPiArDQo+ICsJ VEVTVFBNRF9MT0coSU5GTywNCj4gKwkJImNyZWF0ZSBhIG5ldyBtYnVmIHBvb2wgPCVzPjogbj0l dSwgc2l6ZT0ldSwgc29ja2V0PSV1DQo+IEdQVSBkZXZpY2U9JXNcbiIsDQo+ICsJCXBvb2xfbmFt ZSwgbmJfbWJ1ZiwgbWJ1Zl9zZWdfc2l6ZSwgc29ja2V0X2lkLCBnaW5mby5uYW1lKTsNCj4gKw0K PiArCS8qIENyZWF0ZSBhbiBleHRlcm5hbCBtZW1vcnkgbWVtcG9vbCB1c2luZyBtZW1vcnkgYWxs b2NhdGVkIG9uDQo+IHRoZQ0KPiArR1BVLiAqLw0KPiArDQo+ICsJZ3B1X21lbS5lbHRfc2l6ZSA9 IFJURV9NQlVGX0RFRkFVTFRfQlVGX1NJWkU7DQo+ICsJZ3B1X21lbS5idWZfbGVuID0gUlRFX0FM SUdOX0NFSUwobmJfbWJ1ZiAqIGdwdV9tZW0uZWx0X3NpemUsDQo+IGdwdV9wYWdlX3NpemUpOw0K PiArCWdwdV9tZW0uYnVmX2lvdmEgPSBSVEVfQkFEX0lPVkE7DQo+ICsNCj4gKwlncHVfbWVtLmJ1 Zl9wdHIgPSBydGVfZ3B1X21lbV9hbGxvYyhncHVfaWQsIGdwdV9tZW0uYnVmX2xlbik7DQo+ICsJ aWYgKGdwdV9tZW0uYnVmX3B0ciA9PSBOVUxMKQ0KPiArCQlydGVfZXhpdChFWElUX0ZBSUxVUkUs ICJDb3VsZCBub3QgYWxsb2NhdGUgR1BVIGRldmljZQ0KPiBtZW1vcnlcbiIpOw0KPiArDQo+ICsJ cmV0ID0gcnRlX2V4dG1lbV9yZWdpc3RlcihncHVfbWVtLmJ1Zl9wdHIsIGdwdV9tZW0uYnVmX2xl biwNCj4gTlVMTCwgZ3B1X21lbS5idWZfaW92YSwgZ3B1X3BhZ2Vfc2l6ZSk7DQo+ICsJaWYgKHJl dCkNCj4gKwkJcnRlX2V4aXQoRVhJVF9GQUlMVVJFLCAiVW5hYmxlIHRvIHJlZ2lzdGVyIGFkZHIg MHglcCwgcmV0DQo+ICVkXG4iLA0KPiArZ3B1X21lbS5idWZfcHRyLCByZXQpOw0KPiArDQo+ICsJ dWludDE2X3QgcGlkID0gMDsNCj4gKw0KPiArCVJURV9FVEhfRk9SRUFDSF9ERVYocGlkKQ0KPiAr CXsNCj4gKwkJcmV0ID0gcnRlX2Rldl9kbWFfbWFwKGRldl9pbmZvLmRldmljZSwgZ3B1X21lbS5i dWZfcHRyLA0KPiArCQkJCQkgIGdwdV9tZW0uYnVmX2lvdmEsDQo+IGdwdV9tZW0uYnVmX2xlbik7 DQo+ICsJCWlmIChyZXQpIHsNCj4gKwkJCXJ0ZV9leGl0KEVYSVRfRkFJTFVSRSwgIlVuYWJsZSB0 byBETUEgbWFwIGFkZHINCj4gMHglcCBmb3IgZGV2aWNlICVzXG4iLA0KPiArCQkJCQkgZ3B1X21l bS5idWZfcHRyLCBkZXZfaW5mby5kZXZpY2UtDQo+ID5uYW1lKTsNCj4gKwkJfQ0KPiArCX0NCj4g Kw0KPiArCXJ0ZV9tcCA9IHJ0ZV9wa3RtYnVmX3Bvb2xfY3JlYXRlX2V4dGJ1Zihwb29sX25hbWUs IG5iX21idWYsDQo+IG1iX21lbXBvb2xfY2FjaGUsIDAsIG1idWZfc2VnX3NpemUsIHNvY2tldF9p ZCwgJmdwdV9tZW0sIDEpOw0KPiArCWlmIChydGVfbXAgPT0gTlVMTCkgew0KPiArCQlydGVfZXhp dChFWElUX0ZBSUxVUkUsICJDcmVhdGlvbiBvZiBHUFUgbWVtcG9vbCA8JXM+DQo+IGZhaWxlZFxu IiwgcG9vbF9uYW1lKTsNCj4gKwl9DQo+ICsNCj4gKwkqbXBfYWRkciA9ICh1aW50cHRyX3QpIGdw dV9tZW0uYnVmX3B0cjsNCj4gKw0KPiArCXJldHVybiBydGVfbXA7DQo+ICt9DQo+ICsNCj4gIC8q DQo+ICAgKiBDb25maWd1cmF0aW9uIGluaXRpYWxpc2F0aW9uIGRvbmUgb25jZSBhdCBpbml0IHRp bWUuDQo+ICAgKi8NCj4gQEAgLTExMTcsNyArMTIwMiw3IEBAIG1idWZfcG9vbF9jcmVhdGUodWlu dDE2X3QgbWJ1Zl9zZWdfc2l6ZSwNCj4gdW5zaWduZWQgbmJfbWJ1ZiwNCj4gDQo+ICAJbWJfc2l6 ZSA9IHNpemVvZihzdHJ1Y3QgcnRlX21idWYpICsgbWJ1Zl9zZWdfc2l6ZTsgICNlbmRpZg0KPiAt CW1idWZfcG9vbG5hbWVfYnVpbGQoc29ja2V0X2lkLCBwb29sX25hbWUsIHNpemVvZihwb29sX25h bWUpLA0KPiBzaXplX2lkeCk7DQo+ICsJbWJ1Zl9wb29sbmFtZV9idWlsZChzb2NrZXRfaWQsIHBv b2xfbmFtZSwgc2l6ZW9mKHBvb2xfbmFtZSksDQo+IHNpemVfaWR4LA0KPiArTUJVRl9NRU1fQ1BV KTsNCj4gIAlpZiAoIWlzX3Byb2NfcHJpbWFyeSgpKSB7DQo+ICAJCXJ0ZV9tcCA9IHJ0ZV9tZW1w b29sX2xvb2t1cChwb29sX25hbWUpOw0KPiAgCQlpZiAocnRlX21wID09IE5VTEwpDQo+IEBAIC0x NzAwLDE5ICsxNzg1LDQyIEBAIGluaXRfY29uZmlnKHZvaWQpDQo+IA0KPiAgCQlmb3IgKGkgPSAw OyBpIDwgbnVtX3NvY2tldHM7IGkrKykNCj4gIAkJCWZvciAoaiA9IDA7IGogPCBtYnVmX2RhdGFf c2l6ZV9uOyBqKyspDQo+IC0JCQkJbWVtcG9vbHNbaSAqIE1BWF9TRUdTX0JVRkZFUl9TUExJVCAr IGpdDQo+ID0NCj4gLQkJCQkJbWJ1Zl9wb29sX2NyZWF0ZShtYnVmX2RhdGFfc2l6ZVtqXSwNCj4g LQkJCQkJCQkgIG5iX21idWZfcGVyX3Bvb2wsDQo+IC0JCQkJCQkJICBzb2NrZXRfaWRzW2ldLCBq KTsNCj4gKwkJCXsNCj4gKwkJCQlpZiAobWJ1Zl9tZW1fdHlwZXNbal0gPT0gTUJVRl9NRU1fR1BV KQ0KPiB7DQo+ICsJCQkJCWlmIChydGVfZ3B1X2NvdW50X2F2YWlsKCkgPT0gMCkNCj4gKwkJCQkJ CXJ0ZV9leGl0KEVYSVRfRkFJTFVSRSwgIk5vDQo+IEdQVSBkZXZpY2UgYXZhaWxhYmxlLlxuIik7 DQo+ICsNCj4gKwkJCQkJbWVtcG9vbHNbaSAqDQo+IE1BWF9TRUdTX0JVRkZFUl9TUExJVCArIGpd ID0NCj4gKw0KPiAJZ3B1X21idWZfcG9vbF9jcmVhdGUobWJ1Zl9kYXRhX3NpemVbal0sDQpXaGF0 IGFib3V0IEdQVS9DUFUgYWRoZXJlbmNlID8gRG8gd2UgY3JlYXRlIG9uZSBHUFUgcG9vbCBwZXIg Q1BVIHNvY2tldD8NCkRpc3JlZ2FyZGluZyAgaGFyZHdhcmUgdG9wb2xvZ3kgYXQgYWxsPw0KV2Ug Y2FuIG1pdGlnYXRlIHRoZSBpc3N1ZSBieSAiLS1zb2NrZXQtbWVtLy0tc29ja2V0LW51bSIgcGFy YW1ldGVyIHRob3VnaC4NCg0KPiArDQo+IAkJIG5iX21idWZfcGVyX3Bvb2wsDQo+ICsNCj4gCQkg c29ja2V0X2lkc1tpXSwgaiwgZ3B1X2lkLA0KPiArDQo+IAkJICYobWVtcG9vbHNfZXh0X3B0cltq XSkpOw0KPiArCQkJCX0gZWxzZSB7DQo+ICsJCQkJCW1lbXBvb2xzW2kgKg0KPiBNQVhfU0VHU19C VUZGRVJfU1BMSVQgKyBqXSA9DQo+ICsNCj4gCW1idWZfcG9vbF9jcmVhdGUobWJ1Zl9kYXRhX3Np emVbal0sDQo+ICsNCj4gCW5iX21idWZfcGVyX3Bvb2wsDQo+ICsJCQkJCQkJCXNvY2tldF9pZHNb aV0sDQo+IGopOw0KPiArCQkJCX0NCj4gKwkJCX0NCj4gIAl9IGVsc2Ugew0KPiAgCQl1aW50OF90 IGk7DQo+IA0KPiAgCQlmb3IgKGkgPSAwOyBpIDwgbWJ1Zl9kYXRhX3NpemVfbjsgaSsrKQ0KPiAt CQkJbWVtcG9vbHNbaV0gPSBtYnVmX3Bvb2xfY3JlYXRlDQo+IC0JCQkJCShtYnVmX2RhdGFfc2l6 ZVtpXSwNCj4gLQkJCQkJIG5iX21idWZfcGVyX3Bvb2wsDQo+IC0JCQkJCSBzb2NrZXRfbnVtID09 IFVNQV9OT19DT05GSUcgPw0KPiAtCQkJCQkgMCA6IHNvY2tldF9udW0sIGkpOw0KPiArCQl7DQo+ ICsJCQlpZiAobWJ1Zl9tZW1fdHlwZXNbaV0gPT0gTUJVRl9NRU1fR1BVKSB7DQo+ICsJCQkJbWVt cG9vbHNbaV0gPQ0KPiBncHVfbWJ1Zl9wb29sX2NyZWF0ZShtYnVmX2RhdGFfc2l6ZVtpXSwNCj4g Kw0KPiAJCQkgICBuYl9tYnVmX3Blcl9wb29sLA0KPiArDQo+IAkJCSAgIHNvY2tldF9udW0gPT0g VU1BX05PX0NPTkZJRyA/IDAgOiBzb2NrZXRfbnVtLA0KPiArDQo+IAkJCSAgIGksIGdwdV9pZCwN Cj4gKw0KPiAJCQkgICAmKG1lbXBvb2xzX2V4dF9wdHJbaV0pKTsNCj4gKwkJCX0gZWxzZSB7DQo+ ICsJCQkJbWVtcG9vbHNbaV0gPQ0KPiBtYnVmX3Bvb2xfY3JlYXRlKG1idWZfZGF0YV9zaXplW2ld LA0KPiArCQkJCQkJCW5iX21idWZfcGVyX3Bvb2wsDQo+ICsJCQkJCQkJc29ja2V0X251bSA9PQ0K PiBVTUFfTk9fQ09ORklHID8NCj4gKwkJCQkJCQkwIDogc29ja2V0X251bSwgaSk7DQo+ICsJCQl9 DQo+ICsJCX0NCj4gKw0KPiAgCX0NCj4gDQo+ICAJaW5pdF9wb3J0X2NvbmZpZygpOw0KPiBAQCAt MzQxNSw4ICszNTIzLDExIEBAIHBtZF90ZXN0X2V4aXQodm9pZCkNCj4gIAkJfQ0KPiAgCX0NCj4g IAlmb3IgKGkgPSAwIDsgaSA8IFJURV9ESU0obWVtcG9vbHMpIDsgaSsrKSB7DQo+IC0JCWlmICht ZW1wb29sc1tpXSkNCj4gKwkJaWYgKG1lbXBvb2xzW2ldKSB7DQo+ICAJCQltZW1wb29sX2ZyZWVf bXAobWVtcG9vbHNbaV0pOw0KPiArCQkJaWYgKG1idWZfbWVtX3R5cGVzW2ldID09IE1CVUZfTUVN X0dQVSkNCj4gKwkJCQlydGVfZ3B1X21lbV9mcmVlKGdwdV9pZCwgKHZvaWQNCj4gKiltZW1wb29s c19leHRfcHRyW2ldKTsNCj4gKwkJfQ0KPiAgCX0NCj4gIAlmcmVlKHhzdGF0c19kaXNwbGF5KTsN Cj4gDQo+IGRpZmYgLS1naXQgYS9hcHAvdGVzdC1wbWQvdGVzdHBtZC5oIGIvYXBwL3Rlc3QtcG1k L3Rlc3RwbWQuaCBpbmRleA0KPiA2NjljZTFlODdkLi45OTE5MDQ0MzcyIDEwMDY0NA0KPiAtLS0g YS9hcHAvdGVzdC1wbWQvdGVzdHBtZC5oDQo+ICsrKyBiL2FwcC90ZXN0LXBtZC90ZXN0cG1kLmgN Cj4gQEAgLTEyLDYgKzEyLDcgQEANCj4gICNpbmNsdWRlIDxydGVfZ3JvLmg+DQo+ICAjaW5jbHVk ZSA8cnRlX2dzby5oPg0KPiAgI2luY2x1ZGUgPHJ0ZV9vc19zaGltLmg+DQo+ICsjaW5jbHVkZSA8 cnRlX2dwdWRldi5oPg0KPiAgI2luY2x1ZGUgPGNtZGxpbmUuaD4NCj4gICNpbmNsdWRlIDxzeXMv cXVldWUuaD4NCj4gICNpZmRlZiBSVEVfSEFTX0pBTlNTT04NCj4gQEAgLTQ3NCw2ICs0NzUsMTEg QEAgZXh0ZXJuIHVpbnQ4X3QgZGNiX2NvbmZpZzsgIGV4dGVybiB1aW50MzJfdA0KPiBtYnVmX2Rh dGFfc2l6ZV9uOyAgZXh0ZXJuIHVpbnQxNl90DQo+IG1idWZfZGF0YV9zaXplW01BWF9TRUdTX0JV RkZFUl9TUExJVF07DQo+ICAvKio8IE1idWYgZGF0YSBzcGFjZSBzaXplLiAqLw0KPiArZW51bSBt YnVmX21lbV90eXBlIHsNCj4gKwlNQlVGX01FTV9DUFUsDQo+ICsJTUJVRl9NRU1fR1BVDQo+ICt9 Ow0KPiArZXh0ZXJuIGVudW0gbWJ1Zl9tZW1fdHlwZQ0KPiBtYnVmX21lbV90eXBlc1tNQVhfU0VH U19CVUZGRVJfU1BMSVRdOw0KPiAgZXh0ZXJuIHVpbnQzMl90IHBhcmFtX3RvdGFsX251bV9tYnVm czsNCj4gDQo+ICBleHRlcm4gdWludDE2X3Qgc3RhdHNfcGVyaW9kOw0KPiBAQCAtNzE3LDE0ICs3 MjMsMTYgQEAgY3VycmVudF9md2RfbGNvcmUodm9pZCkNCj4gIC8qIE1idWYgUG9vbHMgKi8NCj4g IHN0YXRpYyBpbmxpbmUgdm9pZA0KPiAgbWJ1Zl9wb29sbmFtZV9idWlsZCh1bnNpZ25lZCBpbnQg c29ja19pZCwgY2hhciAqbXBfbmFtZSwNCj4gLQkJICAgIGludCBuYW1lX3NpemUsIHVpbnQxNl90 IGlkeCkNCj4gKwkJICAgIGludCBuYW1lX3NpemUsIHVpbnQxNl90IGlkeCwgZW51bSBtYnVmX21l bV90eXBlDQo+IG1lbV90eXBlKQ0KPiAgew0KPiArCWNvbnN0IGNoYXIgKnN1ZmZpeCA9IG1lbV90 eXBlID09IE1CVUZfTUVNX0dQVSA/ICJfZ3B1IiA6ICIiOw0KPiArDQo+ICAJaWYgKCFpZHgpDQo+ ICAJCXNucHJpbnRmKG1wX25hbWUsIG5hbWVfc2l6ZSwNCj4gLQkJCSBNQlVGX1BPT0xfTkFNRV9Q RlggIl8ldSIsIHNvY2tfaWQpOw0KPiArCQkJIE1CVUZfUE9PTF9OQU1FX1BGWCAiXyV1JXMiLCBz b2NrX2lkLCBzdWZmaXgpOw0KPiAgCWVsc2UNCj4gIAkJc25wcmludGYobXBfbmFtZSwgbmFtZV9z aXplLA0KPiAtCQkJIE1CVUZfUE9PTF9OQU1FX1BGWCAiXyVodV8laHUiLA0KPiAodWludDE2X3Qp c29ja19pZCwgaWR4KTsNCj4gKwkJCSBNQlVGX1BPT0xfTkFNRV9QRlggIl8laHVfJWh1JXMiLA0K PiAodWludDE2X3Qpc29ja19pZCwgaWR4LCBzdWZmaXgpOw0KPiAgfQ0KPiANCj4gIHN0YXRpYyBp bmxpbmUgc3RydWN0IHJ0ZV9tZW1wb29sICoNCj4gQEAgLTczMiw3ICs3NDAsNyBAQCBtYnVmX3Bv b2xfZmluZCh1bnNpZ25lZCBpbnQgc29ja19pZCwgdWludDE2X3QgaWR4KSAgew0KPiAgCWNoYXIg cG9vbF9uYW1lW1JURV9NRU1QT09MX05BTUVTSVpFXTsNCj4gDQo+IC0JbWJ1Zl9wb29sbmFtZV9i dWlsZChzb2NrX2lkLCBwb29sX25hbWUsIHNpemVvZihwb29sX25hbWUpLCBpZHgpOw0KPiArCW1i dWZfcG9vbG5hbWVfYnVpbGQoc29ja19pZCwgcG9vbF9uYW1lLCBzaXplb2YocG9vbF9uYW1lKSwg aWR4LA0KPiArbWJ1Zl9tZW1fdHlwZXNbaWR4XSk7DQo+ICAJcmV0dXJuIHJ0ZV9tZW1wb29sX2xv b2t1cCgoY29uc3QgY2hhciAqKXBvb2xfbmFtZSk7ICB9DQo+IA0KPiBkaWZmIC0tZ2l0IGEvZG9j L2d1aWRlcy90ZXN0cG1kX2FwcF91Zy9ydW5fYXBwLnJzdA0KPiBiL2RvYy9ndWlkZXMvdGVzdHBt ZF9hcHBfdWcvcnVuX2FwcC5yc3QNCj4gaW5kZXggMzBlZGVmMDdlYS4uZWRlN2I3OWFiYiAxMDA2 NDQNCj4gLS0tIGEvZG9jL2d1aWRlcy90ZXN0cG1kX2FwcF91Zy9ydW5fYXBwLnJzdA0KPiArKysg Yi9kb2MvZ3VpZGVzL3Rlc3RwbWRfYXBwX3VnL3J1bl9hcHAucnN0DQo+IEBAIC0xMTksNiArMTE5 LDkgQEAgVGhlIGNvbW1hbmQgbGluZSBvcHRpb25zIGFyZToNCj4gICAgICBUaGUgZGVmYXVsdCB2 YWx1ZSBpcyAyMDQ4LiBJZiBtdWx0aXBsZSBtYnVmLXNpemUgdmFsdWVzIGFyZSBzcGVjaWZpZWQg dGhlDQo+ICAgICAgZXh0cmEgbWVtb3J5IHBvb2xzIHdpbGwgYmUgY3JlYXRlZCBmb3IgYWxsb2Nh dGluZyBtYnVmcyB0byByZWNlaXZlIHBhY2tldHMNCj4gICAgICB3aXRoIGJ1ZmZlciBzcGxpdHRp bmcgZmVhdHVyZXMuDQo+ICsgICAgUHJvdmlkaW5nIG1idWYgc2l6ZSB3aXRoIGEgJ2cnIHN1ZmZp eCAoZS5nLiBgYC0tbWJ1Zi1zaXplPTIwNDhnYGApLA0KPiArICAgIHdpbGwgY2F1c2UgdGhlIG1l bXBvb2wgdG8gYmUgY3JlYXRlZCBvbiBhIEdQVSBtZW1vcnkgYXJlYSBhbGxvY2F0ZWQuDQo+ICsg ICAgVGhpcyBvcHRpb24gaXMgY3VycmVudGx5IGxpbWl0ZWQgdG8gaW9md2QgZW5naW5lIHdpdGgg dGhlIGZpcnN0IEdQVS4NCk1tbSwgaWYgd2UgaGF2ZSBtdWx0aXBsZSBHUFVzIC0gd2UgaGF2ZSBu byB3YXkgdG8gc3BlY2lmeSBvbiB3aGljaCBvbmUgd2Ugc2hvdWxkIGFsbG9jYXRlIHRoZSBwb29s Lg0KU3ludGF4IGlzIG5vdCBjb21wbGV0ZeKYuS4gUG9zc2libGUgd2Ugc2hvdWxkIHNwZWNpZnkg R1BVIHBvcnQgaWQgYWZ0ZXIgdGhlIHN1ZmZpeCA/IExpa2UgMjA0OGcyID8NCklmIHBvcnQgaW5k ZXggaXMgb21pdHRlZCB3ZSBzaG91bGQgY29uc2lkZXIgd2UgaGF2ZSB0aGUgb25seSBHUFUgYW5k IGNoZWNrIHRoaXMuDQoNCldpdGggYmVzdCByZWdhcmRzLA0KU2xhdmENCg0K