From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Kuehling, Felix" Subject: Re: [PATCH 06/10] drm/ttm: fix busy memory to fail other user v10 Date: Wed, 26 Jun 2019 06:36:27 +0000 Message-ID: References: <20190522125947.4592-1-christian.koenig@amd.com> <20190522125947.4592-6-christian.koenig@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190522125947.4592-6-christian.koenig-5C7GfCeVMHo@public.gmane.org> Content-Language: en-US Content-ID: <3B9E24BB2EE5DA40BF7BFC4008DA83FA-asWib9pRmPqcE4WynfumptQqCkab/8FMAL8bYrjMMd8@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: =?utf-8?B?Q2hyaXN0aWFuIEvDtm5pZw==?= , "Olsak, Marek" , "Zhou, David(ChunMing)" , "Liang, Prike" , "dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" List-Id: dri-devel@lists.freedesktop.org SSBiZWxpZXZlIEkgZm91bmQgYSBsaXZlLWxvY2sgZHVlIHRvIHRoaXMgcGF0Y2ggd2hlbiBydW5u aW5nIG91ciBLRkQgDQpldmljdGlvbiB0ZXN0IGluIGEgbG9vcC4gSSBwcmV0dHkgcmVsaWFibHkg aGFuZ3Mgb24gdGhlIHNlY29uZCBsb29wIA0KaXRlcmF0aW9uLiBJZiBJIHJldmVydCB0aGlzIHBh dGNoLCB0aGUgcHJvYmxlbSBkaXNhcHBlYXJzLg0KDQpXaXRoIHNvbWUgYWRkZWQgaW5zdHJ1bWVu dGF0aW9uLCBJIHNlZSB0aGF0IGFtZGdwdV9jc19saXN0X3ZhbGlkYXRlIGluIA0KYW1kZ3B1X2Nz X3BhcnNlcl9ib3MgcmV0dXJucyAtRUFHQUlOIHJlcGVhdGVkbHkuIFVzZXIgbW9kZSBkdXRpZnVs bHkgDQpyZXRyaWVzIHRoZSBjb21tYW5kIHN1Ym1pc3Npb24sIGJ1dCBpdCBuZXZlciBzdWNjZWVk cy4NCg0KSSB0aGluayB0aGUgcHJvYmxlbSBpcyB0aGUgZmFjdCB0aGF0IHR0bV9tZW1fZXZpY3Rf d2FpdF9idXN5IHJldHVybnMgDQotRUFHQUlOIHdoZW4gaXQgZmFpbHMgdG8gbG9jayB0aGUgYnVz eSBCTy4gVGhhdCB3aWxsIGNhdXNlIA0KdHRtX2JvX21lbV9zcGFjZSB0byBnaXZlIHVwIGluc3Rl YWQgb2YgdHJ5aW5nIGFuIGFsdGVybmF0ZSBwbGFjZW1lbnQuIEEgDQpzdHJhaWdodC1mb3J3YXJk IGZpeCBpcyB0byBtb2RpZnkgdHRtX21lbV9ldmljdF93YWl0X2J1c3kgdG8gcmV0dXJuIA0KLUVC VVNZLCB3aGljaCB3aWxsIG1haW50YWluIHRoZSBvbGQgYmVoYXZpb3VyIG9mIHRyeWluZyBhbHRl cm5hdGUgDQpwbGFjZW1lbnRzIHdoZW4gZXZpY3Rpb24gaXMgbm90IHBvc3NpYmxlLiBJJ2xsIHNl bmQgb3V0IGEgcGF0Y2ggZm9yIHRoYXQuDQoNClNlZSBhbHNvIGlubGluZS4NCg0KT24gMjAxOS0w NS0yMiA4OjU5IGEubS4sIENocmlzdGlhbiBLw7ZuaWcgd3JvdGU6DQo+IFtDQVVUSU9OOiBFeHRl cm5hbCBFbWFpbF0NCj4NCj4gQk9zIG9uIHRoZSBMUlUgbWlnaHQgYmUgYmxvY2tlZCBkdXJpbmcg Y29tbWFuZCBzdWJtaXNzaW9uDQo+IGFuZCBjYXVzZSBPT00gc2l0dWF0aW9ucy4NCj4NCj4gQXZv aWQgdGhpcyBieSBibG9ja2luZyBmb3IgdGhlIGZpcnN0IGJ1c3kgQk8gbm90IGxvY2tlZCBieQ0K PiB0aGUgc2FtZSB0aWNrZXQgYXMgdGhlIEJPIHdlIGFyZSBzZWFyY2hpbmcgc3BhY2UgZm9yLg0K Pg0KPiB2MTA6IGNvbXBsZXRlbHkgc3RhcnQgb3ZlciB3aXRoIHRoZSBwYXRjaCBzaW5jZSB3ZSBk aWRuJ3QNCj4gICAgICAgaGFuZGxlZCBhIHdob2xlIGJ1bmNoIG9mIGNvcm5lciBjYXNlcy4NCj4N Cj4gU2lnbmVkLW9mZi1ieTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQu Y29tPg0KPiAtLS0NCj4gICBkcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9iby5jIHwgNzcgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tDQo+ICAgMSBmaWxlIGNoYW5nZWQsIDY2IGlu c2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQ0KPg0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL3R0bS90dG1fYm8uYyBiL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvLmMNCj4gaW5k ZXggNGM2Mzg5ZDg0OWVkLi44NjFmYWNhYzMzZDQgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS90dG0vdHRtX2JvLmMNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYm8uYw0K PiBAQCAtNzcxLDMyICs3NzEsNzIgQEAgRVhQT1JUX1NZTUJPTCh0dG1fYm9fZXZpY3Rpb25fdmFs dWFibGUpOw0KPiAgICAqIGIuIE90aGVyd2lzZSwgdHJ5bG9jayBpdC4NCj4gICAgKi8NCj4gICBz dGF0aWMgYm9vbCB0dG1fYm9fZXZpY3Rfc3dhcG91dF9hbGxvd2FibGUoc3RydWN0IHR0bV9idWZm ZXJfb2JqZWN0ICpibywNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHR0bV9vcGVy YXRpb25fY3R4ICpjdHgsIGJvb2wgKmxvY2tlZCkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IHR0bV9vcGVyYXRpb25fY3R4ICpjdHgsIGJvb2wgKmxvY2tlZCwgYm9vbCAqYnVzeSkN Cj4gICB7DQo+ICAgICAgICAgIGJvb2wgcmV0ID0gZmFsc2U7DQo+DQo+IC0gICAgICAgKmxvY2tl ZCA9IGZhbHNlOw0KPiAgICAgICAgICBpZiAoYm8tPnJlc3YgPT0gY3R4LT5yZXN2KSB7DQo+ICAg ICAgICAgICAgICAgICAgcmVzZXJ2YXRpb25fb2JqZWN0X2Fzc2VydF9oZWxkKGJvLT5yZXN2KTsN Cj4gICAgICAgICAgICAgICAgICBpZiAoY3R4LT5mbGFncyAmIFRUTV9PUFRfRkxBR19BTExPV19S RVNfRVZJQ1QNCj4gICAgICAgICAgICAgICAgICAgICAgfHwgIWxpc3RfZW1wdHkoJmJvLT5kZGVz dHJveSkpDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICByZXQgPSB0cnVlOw0KPiArICAgICAg ICAgICAgICAgKmxvY2tlZCA9IGZhbHNlOw0KPiArICAgICAgICAgICAgICAgaWYgKGJ1c3kpDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICpidXN5ID0gZmFsc2U7DQo+ICAgICAgICAgIH0gZWxz ZSB7DQo+IC0gICAgICAgICAgICAgICAqbG9ja2VkID0gcmVzZXJ2YXRpb25fb2JqZWN0X3RyeWxv Y2soYm8tPnJlc3YpOw0KPiAtICAgICAgICAgICAgICAgcmV0ID0gKmxvY2tlZDsNCj4gKyAgICAg ICAgICAgICAgIHJldCA9IHJlc2VydmF0aW9uX29iamVjdF90cnlsb2NrKGJvLT5yZXN2KTsNCj4g KyAgICAgICAgICAgICAgICpsb2NrZWQgPSByZXQ7DQo+ICsgICAgICAgICAgICAgICBpZiAoYnVz eSkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgKmJ1c3kgPSAhcmV0Ow0KPiAgICAgICAgICB9 DQo+DQo+ICAgICAgICAgIHJldHVybiByZXQ7DQo+ICAgfQ0KPg0KPiArLyoqDQo+ICsgKiB0dG1f bWVtX2V2aWN0X3dhaXRfYnVzeSAtIHdhaXQgZm9yIGEgYnVzeSBCTyB0byBiZWNvbWUgYXZhaWxh YmxlDQo+ICsgKg0KPiArICogQGJ1c3lfYm86IEJPIHdoaWNoIGNvdWxkbid0IGJlIGxvY2tlZCB3 aXRoIHRyeWxvY2sNCj4gKyAqIEBjdHg6IG9wZXJhdGlvbiBjb250ZXh0DQo+ICsgKiBAdGlja2V0 OiBhY3F1aXJlIHRpY2tldA0KPiArICoNCj4gKyAqIFRyeSB0byBsb2NrIGEgYnVzeSBidWZmZXIg b2JqZWN0IHRvIGF2b2lkIGZhaWxpbmcgZXZpY3Rpb24uDQo+ICsgKi8NCj4gK3N0YXRpYyBpbnQg dHRtX21lbV9ldmljdF93YWl0X2J1c3koc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpidXN5X2Jv LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0dG1fb3BlcmF0 aW9uX2N0eCAqY3R4LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj dCB3d19hY3F1aXJlX2N0eCAqdGlja2V0KQ0KPiArew0KPiArICAgICAgIGludCByOw0KPiArDQo+ ICsgICAgICAgaWYgKCFidXN5X2JvIHx8ICF0aWNrZXQpDQo+ICsgICAgICAgICAgICAgICByZXR1 cm4gLUVCVVNZOw0KPiArDQo+ICsgICAgICAgaWYgKGN0eC0+aW50ZXJydXB0aWJsZSkNCj4gKyAg ICAgICAgICAgICAgIHIgPSByZXNlcnZhdGlvbl9vYmplY3RfbG9ja19pbnRlcnJ1cHRpYmxlKGJ1 c3lfYm8tPnJlc3YsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0aWNrZXQpOw0KPiArICAgICAgIGVsc2UNCj4gKyAgICAgICAgICAg ICAgIHIgPSByZXNlcnZhdGlvbl9vYmplY3RfbG9jayhidXN5X2JvLT5yZXN2LCB0aWNrZXQpOw0K PiArDQo+ICsgICAgICAgLyoNCj4gKyAgICAgICAgKiBUT0RPOiBJdCB3b3VsZCBiZSBiZXR0ZXIg dG8ga2VlcCB0aGUgQk8gbG9ja2VkIHVudGlsIGFsbG9jYXRpb24gaXMgYXQNCj4gKyAgICAgICAg KiBsZWFzdCB0cmllZCBvbmUgbW9yZSB0aW1lLCBidXQgdGhhdCB3b3VsZCBtZWFuIGEgbXVjaCBs YXJnZXIgcmV3b3JrDQo+ICsgICAgICAgICogb2YgVFRNLg0KPiArICAgICAgICAqLw0KPiArICAg ICAgIGlmICghcikNCj4gKyAgICAgICAgICAgICAgIHJlc2VydmF0aW9uX29iamVjdF91bmxvY2so YnVzeV9iby0+cmVzdik7DQo+ICsNCj4gKyAgICAgICByZXR1cm4gciA9PSAtRURFQURMSyA/IC1F QUdBSU4gOiByOw0KDQpJZiBsb2NraW5nIGZhaWxzLCB0aGlzIHJldHVybnMgLUVBR0FJTi4NCg0K DQo+ICt9DQo+ICsNCj4gICBzdGF0aWMgaW50IHR0bV9tZW1fZXZpY3RfZmlyc3Qoc3RydWN0IHR0 bV9ib19kZXZpY2UgKmJkZXYsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu dDMyX3QgbWVtX3R5cGUsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg c3RydWN0IHR0bV9wbGFjZSAqcGxhY2UsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgdHRtX29wZXJhdGlvbl9jdHggKmN0eCkNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCB0dG1fb3BlcmF0aW9uX2N0eCAqY3R4LA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IHd3X2FjcXVpcmVfY3R4ICp0aWNrZXQpDQo+ICAgew0K PiArICAgICAgIHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8gPSBOVUxMLCAqYnVzeV9ibyA9 IE5VTEw7DQo+ICAgICAgICAgIHN0cnVjdCB0dG1fYm9fZ2xvYmFsICpnbG9iID0gYmRldi0+Z2xv YjsNCj4gICAgICAgICAgc3RydWN0IHR0bV9tZW1fdHlwZV9tYW5hZ2VyICptYW4gPSAmYmRldi0+ bWFuW21lbV90eXBlXTsNCj4gLSAgICAgICBzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvID0g TlVMTDsNCj4gICAgICAgICAgYm9vbCBsb2NrZWQgPSBmYWxzZTsNCj4gICAgICAgICAgdW5zaWdu ZWQgaTsNCj4gICAgICAgICAgaW50IHJldDsNCj4gQEAgLTgwNCw4ICs4NDQsMTUgQEAgc3RhdGlj IGludCB0dG1fbWVtX2V2aWN0X2ZpcnN0KHN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2LA0KPiAg ICAgICAgICBzcGluX2xvY2soJmdsb2ItPmxydV9sb2NrKTsNCj4gICAgICAgICAgZm9yIChpID0g MDsgaSA8IFRUTV9NQVhfQk9fUFJJT1JJVFk7ICsraSkgew0KPiAgICAgICAgICAgICAgICAgIGxp c3RfZm9yX2VhY2hfZW50cnkoYm8sICZtYW4tPmxydVtpXSwgbHJ1KSB7DQo+IC0gICAgICAgICAg ICAgICAgICAgICAgIGlmICghdHRtX2JvX2V2aWN0X3N3YXBvdXRfYWxsb3dhYmxlKGJvLCBjdHgs ICZsb2NrZWQpKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICBib29sIGJ1c3k7DQo+ICsNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0dG1fYm9fZXZpY3Rfc3dhcG91dF9hbGxvd2Fi bGUoYm8sIGN0eCwgJmxvY2tlZCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJ1c3kpKSB7DQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaWYgKGJ1c3kgJiYgIWJ1c3lfYm8gJiYNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYm8tPnJlc3YtPmxvY2suY3R4ICE9IHRpY2tldCkNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1c3lfYm8gPSBibzsNCj4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQo+ICsgICAgICAgICAgICAg ICAgICAgICAgIH0NCj4NCj4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwbGFjZSAmJiAh YmRldi0+ZHJpdmVyLT5ldmljdGlvbl92YWx1YWJsZShibywNCj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFj ZSkpIHsNCj4gQEAgLTgyNCw4ICs4NzEsMTMgQEAgc3RhdGljIGludCB0dG1fbWVtX2V2aWN0X2Zp cnN0KHN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2LA0KPiAgICAgICAgICB9DQo+DQo+ICAgICAg ICAgIGlmICghYm8pIHsNCj4gKyAgICAgICAgICAgICAgIGlmIChidXN5X2JvKQ0KPiArICAgICAg ICAgICAgICAgICAgICAgICB0dG1fYm9fZ2V0KGJ1c3lfYm8pOw0KPiAgICAgICAgICAgICAgICAg IHNwaW5fdW5sb2NrKCZnbG9iLT5scnVfbG9jayk7DQo+IC0gICAgICAgICAgICAgICByZXR1cm4g LUVCVVNZOw0KDQpUaGUgb2xkIGJlaGF2aW91ciB3YXMgdG8gYWx3YXlzIHJldHVybiAtRUJVU1kg aWYgZXZpY3Rpb24gd2FzIG5vdCBwb3NzaWJsZS4NCg0KDQo+ICsgICAgICAgICAgICAgICByZXQg PSB0dG1fbWVtX2V2aWN0X3dhaXRfYnVzeShidXN5X2JvLCBjdHgsIHRpY2tldCk7DQo+ICsgICAg ICAgICAgICAgICBpZiAoYnVzeV9ibykNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgdHRtX2Jv X3B1dChidXN5X2JvKTsNCj4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQoNCk5vdyB0aGlz IGNhbiByZXR1cm4gLUVBR0FJTi4gVGhpcyBwcmV2ZW50cyB0dG1fYm9fbWVtX3NwYWNlIGZyb20g dHJ5aW5nIA0KYWx0ZXJuYXRlIHBsYWNlbWVudHMuDQoNClJlZ2FyZHMsDQogwqAgRmVsaXgNCg0K DQo+ICAgICAgICAgIH0NCj4NCj4gICAgICAgICAga3JlZl9nZXQoJmJvLT5saXN0X2tyZWYpOw0K PiBAQCAtOTExLDcgKzk2Myw4IEBAIHN0YXRpYyBpbnQgdHRtX2JvX21lbV9mb3JjZV9zcGFjZShz dHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAg cmV0dXJuIHJldDsNCj4gICAgICAgICAgICAgICAgICBpZiAobWVtLT5tbV9ub2RlKQ0KPiAgICAg ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+IC0gICAgICAgICAgICAgICByZXQgPSB0dG1f bWVtX2V2aWN0X2ZpcnN0KGJkZXYsIG1lbS0+bWVtX3R5cGUsIHBsYWNlLCBjdHgpOw0KPiArICAg ICAgICAgICAgICAgcmV0ID0gdHRtX21lbV9ldmljdF9maXJzdChiZGV2LCBtZW0tPm1lbV90eXBl LCBwbGFjZSwgY3R4LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBiby0+cmVzdi0+bG9jay5jdHgpOw0KPiAgICAgICAgICAgICAgICAgIGlmICh1bmxpa2VseShy ZXQgIT0gMCkpDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiAgICAg ICAgICB9IHdoaWxlICgxKTsNCj4gQEAgLTE0MjYsNyArMTQ3OSw4IEBAIHN0YXRpYyBpbnQgdHRt X2JvX2ZvcmNlX2xpc3RfY2xlYW4oc3RydWN0IHR0bV9ib19kZXZpY2UgKmJkZXYsDQo+ICAgICAg ICAgIGZvciAoaSA9IDA7IGkgPCBUVE1fTUFYX0JPX1BSSU9SSVRZOyArK2kpIHsNCj4gICAgICAg ICAgICAgICAgICB3aGlsZSAoIWxpc3RfZW1wdHkoJm1hbi0+bHJ1W2ldKSkgew0KPiAgICAgICAg ICAgICAgICAgICAgICAgICAgc3Bpbl91bmxvY2soJmdsb2ItPmxydV9sb2NrKTsNCj4gLSAgICAg ICAgICAgICAgICAgICAgICAgcmV0ID0gdHRtX21lbV9ldmljdF9maXJzdChiZGV2LCBtZW1fdHlw ZSwgTlVMTCwgJmN0eCk7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IHR0bV9tZW1f ZXZpY3RfZmlyc3QoYmRldiwgbWVtX3R5cGUsIE5VTEwsICZjdHgsDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7DQo+ICAgICAgICAgICAg ICAgICAgICAgICAgICBpZiAocmV0KQ0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICByZXR1cm4gcmV0Ow0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgc3Bpbl9sb2NrKCZnbG9i LT5scnVfbG9jayk7DQo+IEBAIC0xNzk3LDcgKzE4NTEsOCBAQCBpbnQgdHRtX2JvX3N3YXBvdXQo c3RydWN0IHR0bV9ib19nbG9iYWwgKmdsb2IsIHN0cnVjdCB0dG1fb3BlcmF0aW9uX2N0eCAqY3R4 KQ0KPiAgICAgICAgICBzcGluX2xvY2soJmdsb2ItPmxydV9sb2NrKTsNCj4gICAgICAgICAgZm9y IChpID0gMDsgaSA8IFRUTV9NQVhfQk9fUFJJT1JJVFk7ICsraSkgew0KPiAgICAgICAgICAgICAg ICAgIGxpc3RfZm9yX2VhY2hfZW50cnkoYm8sICZnbG9iLT5zd2FwX2xydVtpXSwgc3dhcCkgew0K PiAtICAgICAgICAgICAgICAgICAgICAgICBpZiAodHRtX2JvX2V2aWN0X3N3YXBvdXRfYWxsb3dh YmxlKGJvLCBjdHgsICZsb2NrZWQpKSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmICh0 dG1fYm9fZXZpY3Rfc3dhcG91dF9hbGxvd2FibGUoYm8sIGN0eCwgJmxvY2tlZCwNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxM KSkgew0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQgPSAwOw0KPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gICAgICAgICAgICAgICAgICAg ICAgICAgIH0NCj4gLS0NCj4gMi4xNy4xDQo+DQo+IF9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fDQo+IGFtZC1nZnggbWFpbGluZyBsaXN0DQo+IGFtZC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnDQo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vYW1kLWdmeA0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9h bWQtZ2Z4