From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Koenig, Christian" Subject: Re: [PATCH 1/2] drm/ttm: fix busy memory to fail other user v6 Date: Tue, 7 May 2019 11:42:38 +0000 Message-ID: References: <20190507093642.7859-1-david1.zhou@amd.com> <6c90881c-1cf3-3b04-c6e0-c6eea5914f9b@amd.com> <6c6e5dd5-3264-e4c1-738d-f70cb3346807@amd.com> <968487eb-f78e-9922-a073-8ed08111e307@gmail.com> <93fbb994-d305-dfc4-f8e5-502647d7386f@shipmail.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <93fbb994-d305-dfc4-f8e5-502647d7386f-4+hqylr40dJg9hUCZPvPmw@public.gmane.org> Content-Language: en-US Content-ID: <33E272E8142A2B4C99417A6907AF98B7-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: Thomas Hellstrom , "Zhou, David(ChunMing)" "Zhou, David(ChunMing)" , "Liang, Prike" , "dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" List-Id: dri-devel@lists.freedesktop.org QW0gMDcuMDUuMTkgdW0gMTM6Mzcgc2NocmllYiBUaG9tYXMgSGVsbHN0cm9tOg0KPiBbQ0FVVElP TjogRXh0ZXJuYWwgRW1haWxdDQo+DQo+IE9uIDUvNy8xOSAxOjI0IFBNLCBDaHJpc3RpYW4gS8O2 bmlnIHdyb3RlOg0KPj4gQW0gMDcuMDUuMTkgdW0gMTM6MjIgc2NocmllYiB6aG91Y20xOg0KPj4+ DQo+Pj4NCj4+PiBPbiAyMDE55bm0MDXmnIgwN+aXpSAxOToxMywgS29lbmlnLCBDaHJpc3RpYW4g d3JvdGU6DQo+Pj4+IEFtIDA3LjA1LjE5IHVtIDEzOjA4IHNjaHJpZWIgemhvdWNtMToNCj4+Pj4+ DQo+Pj4+PiBPbiAyMDE55bm0MDXmnIgwN+aXpSAxODo1MywgS29lbmlnLCBDaHJpc3RpYW4gd3Jv dGU6DQo+Pj4+Pj4gQW0gMDcuMDUuMTkgdW0gMTE6MzYgc2NocmllYiBDaHVubWluZyBaaG91Og0K Pj4+Pj4+PiBoZWF2eSBncHUgam9iIGNvdWxkIG9jY3VweSBtZW1vcnkgbG9uZyB0aW1lLCB3aGlj aCBsZWFkIG90aGVyIHVzZXINCj4+Pj4+Pj4gZmFpbCB0byBnZXQgbWVtb3J5Lg0KPj4+Pj4+Pg0K Pj4+Pj4+PiBiYXNpY2FsbHkgcGljayB1cCBDaHJpc3RpYW4gaWRlYToNCj4+Pj4+Pj4NCj4+Pj4+ Pj4gMS4gUmVzZXJ2ZSB0aGUgQk8gaW4gREMgdXNpbmcgYSB3d19tdXRleCB0aWNrZXQgKHRyaXZp YWwpLg0KPj4+Pj4+PiAyLiBJZiB3ZSB0aGVuIHJ1biBpbnRvIHRoaXMgRUJVU1kgY29uZGl0aW9u IGluIFRUTSBjaGVjayBpZiB0aGUgQk8NCj4+Pj4+Pj4gd2UgbmVlZCBtZW1vcnkgZm9yIChvciBy YXRoZXIgdGhlIHd3X211dGV4IG9mIGl0cyByZXNlcnZhdGlvbg0KPj4+Pj4+PiBvYmplY3QpIGhh cyBhIHRpY2tldCBhc3NpZ25lZC4NCj4+Pj4+Pj4gMy4gSWYgd2UgaGF2ZSBhIHRpY2tldCB3ZSBn cmFiIGEgcmVmZXJlbmNlIHRvIHRoZSBmaXJzdCBCTyBvbiB0aGUNCj4+Pj4+Pj4gTFJVLCBkcm9w IHRoZSBMUlUgbG9jayBhbmQgdHJ5IHRvIGdyYWIgdGhlIHJlc2VydmF0aW9uIGxvY2sgd2l0aCAN Cj4+Pj4+Pj4gdGhlDQo+Pj4+Pj4+IHRpY2tldC4NCj4+Pj4+Pj4gNC4gSWYgZ2V0dGluZyB0aGUg cmVzZXJ2YXRpb24gbG9jayB3aXRoIHRoZSB0aWNrZXQgc3VjY2VlZGVkIHdlDQo+Pj4+Pj4+IGNo ZWNrIGlmIHRoZSBCTyBpcyBzdGlsbCB0aGUgZmlyc3Qgb25lIG9uIHRoZSBMUlUgaW4gcXVlc3Rp b24gKHRoZQ0KPj4+Pj4+PiBCTyBjb3VsZCBoYXZlIG1vdmVkKS4NCj4+Pj4+Pj4gNS4gSWYgdGhl IEJPIGlzIHN0aWxsIHRoZSBmaXJzdCBvbmUgb24gdGhlIExSVSBpbiBxdWVzdGlvbiB3ZSANCj4+ Pj4+Pj4gdHJ5IHRvDQo+Pj4+Pj4+IGV2aWN0IGl0IGFzIHdlIHdvdWxkIGV2aWN0IGFueSBvdGhl ciBCTy4NCj4+Pj4+Pj4gNi4gSWYgYW55IG9mIHRoZSAiSWYncyIgYWJvdmUgZmFpbCB3ZSBqdXN0 IGJhY2sgb2ZmIGFuZCByZXR1cm4NCj4+Pj4+Pj4gLUVCVVNZLg0KPj4+Pj4+Pg0KPj4+Pj4+PiB2 MjogZml4IHNvbWUgbWlub3IgY2hlY2sNCj4+Pj4+Pj4gdjM6IGFkZHJlc3MgQ2hyaXN0aWFuIHYy IGNvbW1lbnRzLg0KPj4+Pj4+PiB2NDogZml4IHNvbWUgbWlzc2luZw0KPj4+Pj4+PiB2NTogaGFu ZGxlIGZpcnN0X2JvIHVubG9jayBhbmQgYm9fZ2V0L3B1dA0KPj4+Pj4+PiB2NjogYWJzdHJhY3Qg dW5pZmllZCBpdGVyYXRlIGZ1bmN0aW9uLCBhbmQgaGFuZGxlIGFsbCBwb3NzaWJsZQ0KPj4+Pj4+ PiB1c2VjYXNlIG5vdCBvbmx5IHBpbm5lZCBiby4NCj4+Pj4+Pj4NCj4+Pj4+Pj4gQ2hhbmdlLUlk OiBJMjE0MjNmYjkyMmY4ODU0NjVmMTM4MzNjNDFkZjFlMTM0MzY0YThlNw0KPj4+Pj4+PiBTaWdu ZWQtb2ZmLWJ5OiBDaHVubWluZyBaaG91IDxkYXZpZDEuemhvdUBhbWQuY29tPg0KPj4+Pj4+PiAt LS0NCj4+Pj4+Pj4gwqDCoMKgIGRyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvLmMgfCAxMTMNCj4+ Pj4+Pj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0NCj4+Pj4+Pj4gwqDCoMKg IDEgZmlsZSBjaGFuZ2VkLCA5NyBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkNCj4+Pj4+ Pj4NCj4+Pj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvLmMNCj4+ Pj4+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9iby5jDQo+Pj4+Pj4+IGluZGV4IDg1MDJi M2VkMmQ4OC4uYmJmMWQxNGQwMGE3IDEwMDY0NA0KPj4+Pj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vdHRtL3R0bV9iby5jDQo+Pj4+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2Jv LmMNCj4+Pj4+Pj4gQEAgLTc2NiwxMSArNzY2LDEzIEBAIEVYUE9SVF9TWU1CT0wodHRtX2JvX2V2 aWN0aW9uX3ZhbHVhYmxlKTsNCj4+Pj4+Pj4gwqDCoMKgwqAgKiBiLiBPdGhlcndpc2UsIHRyeWxv Y2sgaXQuDQo+Pj4+Pj4+IMKgwqDCoMKgICovDQo+Pj4+Pj4+IMKgwqDCoCBzdGF0aWMgYm9vbCB0 dG1fYm9fZXZpY3Rfc3dhcG91dF9hbGxvd2FibGUoc3RydWN0DQo+Pj4+Pj4+IHR0bV9idWZmZXJf b2JqZWN0ICpibywNCj4+Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHR0bV9v cGVyYXRpb25fY3R4ICpjdHgsIGJvb2wgKmxvY2tlZCkNCj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgc3RydWN0IHR0bV9vcGVyYXRpb25fY3R4ICpjdHgsIGJvb2wgKmxvY2tlZCwgYm9v bA0KPj4+Pj4+PiAqYnVzeSkNCj4+Pj4+Pj4gwqDCoMKgIHsNCj4+Pj4+Pj4gwqDCoMKgwqDCoMKg wqAgYm9vbCByZXQgPSBmYWxzZTsNCj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgKmxvY2tl ZCA9IGZhbHNlOw0KPj4+Pj4+PiArwqDCoMKgIGlmIChidXN5KQ0KPj4+Pj4+PiArwqDCoMKgwqDC oMKgwqAgKmJ1c3kgPSBmYWxzZTsNCj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqAgaWYgKGJvLT5yZXN2 ID09IGN0eC0+cmVzdikgew0KPj4+Pj4+PiByZXNlcnZhdGlvbl9vYmplY3RfYXNzZXJ0X2hlbGQo Ym8tPnJlc3YpOw0KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChjdHgtPmZsYWdz ICYgVFRNX09QVF9GTEFHX0FMTE9XX1JFU19FVklDVA0KPj4+Pj4+PiBAQCAtNzc5LDM1ICs3ODEs NDUgQEAgc3RhdGljIGJvb2wNCj4+Pj4+Pj4gdHRtX2JvX2V2aWN0X3N3YXBvdXRfYWxsb3dhYmxl KHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8sDQo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgIH0g ZWxzZSB7DQo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKmxvY2tlZCA9IHJlc2VydmF0 aW9uX29iamVjdF90cnlsb2NrKGJvLT5yZXN2KTsNCj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCByZXQgPSAqbG9ja2VkOw0KPj4+Pj4+PiArwqDCoMKgwqDCoMKgwqAgaWYgKCFyZXQgJiYg YnVzeSkNCj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKmJ1c3kgPSB0cnVlOw0KPj4+ Pj4+PiDCoMKgwqDCoMKgwqDCoCB9DQo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVy biByZXQ7DQo+Pj4+Pj4+IMKgwqDCoCB9DQo+Pj4+Pj4+IMKgwqDCoCAtc3RhdGljIGludCB0dG1f bWVtX2V2aWN0X2ZpcnN0KHN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2LA0KPj4+Pj4+PiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVpbnQzMl90IG1lbV90eXBlLA0KPj4+ Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IHN0cnVjdCB0 dG1fcGxhY2UgKnBsYWNlLA0KPj4+Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHN0cnVjdCB0dG1fb3BlcmF0aW9uX2N0eCAqY3R4KQ0KPj4+Pj4+PiArc3RhdGljIHN0 cnVjdCB0dG1fYnVmZmVyX29iamVjdCoNCj4+Pj4+Pj4gK3R0bV9tZW1fZmluZF9ldml0YWJsZV9i byhzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwNCj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBzdHJ1Y3QgdHRtX21lbV90eXBlX21hbmFnZXIgKm1hbiwNCj4+Pj4+Pj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBzdHJ1Y3QgdHRtX3BsYWNlICpwbGFjZSwNCj4+Pj4+ Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgdHRtX29wZXJhdGlvbl9jdHggKmN0 eCwNCj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgdHRtX2J1ZmZlcl9v YmplY3QgKipmaXJzdF9ibywNCj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBib29s ICpsb2NrZWQpDQo+Pj4+Pj4+IMKgwqDCoCB7DQo+Pj4+Pj4+IC3CoMKgwqAgc3RydWN0IHR0bV9i b19nbG9iYWwgKmdsb2IgPSBiZGV2LT5nbG9iOw0KPj4+Pj4+PiAtwqDCoMKgIHN0cnVjdCB0dG1f bWVtX3R5cGVfbWFuYWdlciAqbWFuID0gJmJkZXYtPm1hblttZW1fdHlwZV07DQo+Pj4+Pj4+IMKg wqDCoMKgwqDCoMKgIHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8gPSBOVUxMOw0KPj4+Pj4+ PiAtwqDCoMKgIGJvb2wgbG9ja2VkID0gZmFsc2U7DQo+Pj4+Pj4+IC3CoMKgwqAgdW5zaWduZWQg aTsNCj4+Pj4+Pj4gLcKgwqDCoCBpbnQgcmV0Ow0KPj4+Pj4+PiArwqDCoMKgIGludCBpOw0KPj4+ Pj4+PiDCoMKgwqAgLcKgwqDCoCBzcGluX2xvY2soJmdsb2ItPmxydV9sb2NrKTsNCj4+Pj4+Pj4g K8KgwqDCoCBpZiAoZmlyc3RfYm8pDQo+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCAqZmlyc3RfYm8g PSBOVUxMOw0KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoCBmb3IgKGkgPSAwOyBpIDwgVFRNX01BWF9C T19QUklPUklUWTsgKytpKSB7DQo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbGlzdF9m b3JfZWFjaF9lbnRyeShibywgJm1hbi0+bHJ1W2ldLCBscnUpIHsNCj4+Pj4+Pj4gLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgaWYgKCF0dG1fYm9fZXZpY3Rfc3dhcG91dF9hbGxvd2FibGUoYm8sIGN0 eCwgJmxvY2tlZCkpDQo+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJvb2wgYnVzeSA9 IGZhbHNlOw0KPj4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoIXR0bV9ib19ldmlj dF9zd2Fwb3V0X2FsbG93YWJsZShibywgY3R4LCBsb2NrZWQsDQo+Pj4+Pj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmYnVz eSkpIHsNCj4+Pj4+PiBBIG5ld2xpbmUgYmV0d2VlbiBkZWNsYXJhdGlvbiBhbmQgY29kZSBwbGVh c2UuDQo+Pj4+Pj4NCj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAo Zmlyc3RfYm8gJiYgISgqZmlyc3RfYm8pICYmIGJ1c3kpIHsNCj4+Pj4+Pj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHR0bV9ib19nZXQoYm8pOw0KPj4+Pj4+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKmZpcnN0X2JvID0gYm87DQo+Pj4+ Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQ0KPj4+Pj4+PiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb250aW51ZTsNCj4+Pj4+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfQ0KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgaWYgKHBsYWNlICYmIA0KPj4+Pj4+PiAhYmRldi0+ZHJpdmVyLT5ldmljdGlvbl92YWx1 YWJsZShibywNCj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwbGFjZSkpIHsNCj4+ Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAobG9ja2VkKQ0KPj4+Pj4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICgqbG9ja2VkKQ0KPj4+Pj4+PiBy ZXNlcnZhdGlvbl9vYmplY3RfdW5sb2NrKGJvLT5yZXN2KTsNCj4+Pj4+Pj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29udGludWU7DQo+Pj4+Pj4+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB9DQo+Pj4+Pj4+ICsNCj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGJyZWFrOw0KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0N Cj4+Pj4+Pj4gwqDCoMKgIEBAIC04MTgsOSArODMwLDY2IEBAIHN0YXRpYyBpbnQgdHRtX21lbV9l dmljdF9maXJzdChzdHJ1Y3QNCj4+Pj4+Pj4gdHRtX2JvX2RldmljZSAqYmRldiwNCj4+Pj4+Pj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBibyA9IE5VTEw7DQo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKg IH0NCj4+Pj4+Pj4gwqDCoMKgICvCoMKgwqAgcmV0dXJuIGJvOw0KPj4+Pj4+PiArfQ0KPj4+Pj4+ PiArDQo+Pj4+Pj4+ICtzdGF0aWMgaW50IHR0bV9tZW1fZXZpY3RfZmlyc3Qoc3RydWN0IHR0bV9i b19kZXZpY2UgKmJkZXYsDQo+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgdWludDMyX3QgbWVtX3R5cGUsDQo+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgY29uc3Qgc3RydWN0IHR0bV9wbGFjZSAqcGxhY2UsDQo+Pj4+Pj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHR0bV9vcGVyYXRpb25f Y3R4ICpjdHgpDQo+Pj4+Pj4+ICt7DQo+Pj4+Pj4+ICvCoMKgwqAgc3RydWN0IHR0bV9ib19nbG9i YWwgKmdsb2IgPSBiZGV2LT5nbG9iOw0KPj4+Pj4+PiArwqDCoMKgIHN0cnVjdCB0dG1fbWVtX3R5 cGVfbWFuYWdlciAqbWFuID0gJmJkZXYtPm1hblttZW1fdHlwZV07DQo+Pj4+Pj4+ICvCoMKgwqAg c3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibyA9IE5VTEwsICpmaXJzdF9ibyA9IE5VTEw7DQo+ Pj4+Pj4+ICvCoMKgwqAgYm9vbCBsb2NrZWQgPSBmYWxzZTsNCj4+Pj4+Pj4gK8KgwqDCoCBpbnQg cmV0Ow0KPj4+Pj4+PiArDQo+Pj4+Pj4+ICvCoMKgwqAgc3Bpbl9sb2NrKCZnbG9iLT5scnVfbG9j ayk7DQo+Pj4+Pj4+ICvCoMKgwqAgYm8gPSB0dG1fbWVtX2ZpbmRfZXZpdGFibGVfYm8oYmRldiwg bWFuLCBwbGFjZSwgY3R4LCANCj4+Pj4+Pj4gJmZpcnN0X2JvLA0KPj4+Pj4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZsb2NrZWQpOw0KPj4+Pj4+PiDCoMKg wqDCoMKgwqDCoCBpZiAoIWJvKSB7DQo+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgdHRt X29wZXJhdGlvbl9jdHggYnVzeV9jdHg7DQo+Pj4+Pj4+ICsNCj4+Pj4+Pj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBzcGluX3VubG9jaygmZ2xvYi0+bHJ1X2xvY2spOw0KPj4+Pj4+PiAtwqDCoMKg wqDCoMKgwqAgcmV0dXJuIC1FQlVTWTsNCj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIC8qIGNoZWNr IGlmIG90aGVyIHVzZXIgb2NjdXB5IG1lbW9yeSB0b28gbG9uZyB0aW1lICovDQo+Pj4+Pj4+ICvC oMKgwqDCoMKgwqDCoCBpZiAoIWZpcnN0X2JvIHx8ICFjdHggfHwgIWN0eC0+cmVzdiB8fA0KPj4+ Pj4+PiAhY3R4LT5yZXN2LT5sb2NrLmN0eCkgew0KPj4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBpZiAoZmlyc3RfYm8pDQo+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgdHRtX2JvX3B1dChmaXJzdF9ibyk7DQo+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHJldHVybiAtRUJVU1k7DQo+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCB9DQo+Pj4+Pj4+ICvCoMKg wqDCoMKgwqDCoCBpZiAoZmlyc3RfYm8tPnJlc3YgPT0gY3R4LT5yZXN2KSB7DQo+Pj4+Pj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHR0bV9ib19wdXQoZmlyc3RfYm8pOw0KPj4+Pj4+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVCVVNZOw0KPj4+Pj4+PiArwqDCoMKgwqDCoMKg wqAgfQ0KPj4+Pj4+PiArwqDCoMKgwqDCoMKgwqAgaWYgKGN0eC0+aW50ZXJydXB0aWJsZSkNCj4+ Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0ID0NCj4+Pj4+Pj4gd3dfbXV0ZXhfbG9j a19pbnRlcnJ1cHRpYmxlKCZmaXJzdF9iby0+cmVzdi0+bG9jaywNCj4+Pj4+Pj4gKyBjdHgtPnJl c3YtPmxvY2suY3R4KTsNCj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGVsc2UNCj4+Pj4+Pj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0ID0gd3dfbXV0ZXhfbG9jaygmZmlyc3RfYm8tPnJlc3Yt PmxvY2ssDQo+Pj4+Pj4+IGN0eC0+cmVzdi0+bG9jay5jdHgpOw0KPj4+Pj4+PiArwqDCoMKgwqDC oMKgwqAgaWYgKHJldCkgew0KPj4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0dG1fYm9f cHV0KGZpcnN0X2JvKTsNCj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJl dDsNCj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIH0NCj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHNw aW5fbG9jaygmZ2xvYi0+bHJ1X2xvY2spOw0KPj4+Pj4+PiArwqDCoMKgwqDCoMKgwqAgLyogcHJl dmlvdXMgYnVzeSByZXN2IGxvY2sgaXMgaGVsZCBieSBhYm92ZSwgaWRsZSBub3csDQo+Pj4+Pj4+ ICvCoMKgwqDCoMKgwqDCoMKgICogc28gbGV0IHRoZW0gZXZpY3RhYmxlLg0KPj4+Pj4+PiArwqDC oMKgwqDCoMKgwqDCoCAqLw0KPj4+Pj4+PiArwqDCoMKgwqDCoMKgwqAgYnVzeV9jdHguaW50ZXJy dXB0aWJsZSA9IGN0eC0+aW50ZXJydXB0aWJsZTsNCj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGJ1 c3lfY3R4Lm5vX3dhaXRfZ3B1wqDCoCA9IGN0eC0+bm9fd2FpdF9ncHU7DQo+Pj4+Pj4+ICvCoMKg wqDCoMKgwqDCoCBidXN5X2N0eC5yZXN2wqDCoMKgwqDCoMKgwqDCoMKgwqAgPSBmaXJzdF9iby0+ cmVzdjsNCj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGJ1c3lfY3R4LmZsYWdzwqDCoMKgwqDCoMKg wqDCoMKgwqAgPSBUVE1fT1BUX0ZMQUdfQUxMT1dfUkVTX0VWSUNUOw0KPj4+Pj4+PiArDQo+Pj4+ Pj4+ICvCoMKgwqDCoMKgwqDCoCBibyA9IHR0bV9tZW1fZmluZF9ldml0YWJsZV9ibyhiZGV2LCBt YW4sIHBsYWNlLCAmYnVzeV9jdHgsDQo+Pj4+Pj4+IE5VTEwsDQo+Pj4+Pj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmbG9ja2VkKTsNCj4+Pj4+ Pj4gK8KgwqDCoMKgwqDCoMKgIGlmIChibyAmJiAoYm8tPnJlc3YgPT0gZmlyc3RfYm8tPnJlc3Yp KQ0KPj4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBsb2NrZWQgPSB0cnVlOw0KPj4+Pj4+ PiArwqDCoMKgwqDCoMKgwqAgZWxzZSBpZiAoYm8pDQo+Pj4+Pj4+ICsgd3dfbXV0ZXhfdW5sb2Nr KCZmaXJzdF9iby0+cmVzdi0+bG9jayk7DQo+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoIWJv KSB7DQo+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNwaW5fdW5sb2NrKCZnbG9iLT5s cnVfbG9jayk7DQo+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHR0bV9ib19wdXQoZmly c3RfYm8pOw0KPj4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVCVVNZOw0K Pj4+Pj4+PiArwqDCoMKgwqDCoMKgwqAgfQ0KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoCB9DQo+Pj4+ Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgIGtyZWZfZ2V0KCZiby0+bGlzdF9rcmVmKTsNCj4+Pj4+ Pj4gQEAgLTgyOSwxMSArODk4LDE1IEBAIHN0YXRpYyBpbnQgdHRtX21lbV9ldmljdF9maXJzdChz dHJ1Y3QNCj4+Pj4+Pj4gdHRtX2JvX2RldmljZSAqYmRldiwNCj4+Pj4+Pj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCByZXQgPSB0dG1fYm9fY2xlYW51cF9yZWZzKGJvLCBjdHgtPmludGVycnVwdGli bGUsDQo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGN0eC0+bm9fd2FpdF9ncHUsIGxvY2tlZCk7DQo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAga3JlZl9wdXQoJmJvLT5saXN0X2tyZWYsIHR0bV9ib19yZWxlYXNlX2xpc3QpOw0K Pj4+Pj4+PiArwqDCoMKgwqDCoMKgwqAgaWYgKGZpcnN0X2JvKQ0KPj4+Pj4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB0dG1fYm9fcHV0KGZpcnN0X2JvKTsNCj4+Pj4+Pj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCByZXR1cm4gcmV0Ow0KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoCB9DQo+Pj4+Pj4+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgIHR0bV9ib19kZWxfZnJvbV9scnUoYm8pOw0KPj4+Pj4+PiDC oMKgwqDCoMKgwqDCoCBzcGluX3VubG9jaygmZ2xvYi0+bHJ1X2xvY2spOw0KPj4+Pj4+PiArwqDC oMKgIGlmIChmaXJzdF9ibykNCj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHR0bV9ib19wdXQoZmly c3RfYm8pOw0KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXQgPSB0dG1fYm9fZXZpY3Qo Ym8sIGN0eCk7DQo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgIGlmIChsb2NrZWQpIHsNCj4+Pj4+Pj4g QEAgLTg5OSw2ICs5NzIsMTMgQEAgc3RhdGljIGludCB0dG1fYm9fbWVtX2ZvcmNlX3NwYWNlKHN0 cnVjdA0KPj4+Pj4+PiB0dG1fYnVmZmVyX29iamVjdCAqYm8sDQo+Pj4+Pj4+IMKgwqDCoCB7DQo+ Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgIHN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2ID0gYm8tPmJk ZXY7DQo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgIHN0cnVjdCB0dG1fbWVtX3R5cGVfbWFuYWdlciAq bWFuID0gJmJkZXYtPm1hblttZW1fdHlwZV07DQo+Pj4+Pj4+ICvCoMKgwqAgc3RydWN0IHR0bV9v cGVyYXRpb25fY3R4IG5hdGl2ZV9jdHggPSB7DQo+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCAuaW50 ZXJydXB0aWJsZSA9IGZhbHNlLA0KPj4+Pj4+PiArwqDCoMKgwqDCoMKgwqAgLm5vX3dhaXRfZ3B1 ID0gZmFsc2UsDQo+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCAucmVzdiA9IGJvLT5yZXN2LA0KPj4+ Pj4+PiArwqDCoMKgwqDCoMKgwqAgLmZsYWdzID0gMA0KPj4+Pj4+PiArwqDCoMKgIH07DQo+Pj4+ Pj4+ICvCoMKgwqAgc3RydWN0IHR0bV9vcGVyYXRpb25fY3R4ICpldmljdF9jdHggPSBjdHggPyBj dHggOiAmbmF0aXZlX2N0eDsNCj4+Pj4+PiBJIHRob3VnaHQgd2UgbWFkZSB0aGUgY3R4IHBhcmFt ZXRlciBtYW5kYXRvcnksIGRpZG4ndCB3ZT8gQ291bGQgYmUNCj4+Pj4+PiB0aGF0DQo+Pj4+Pj4g SSByZW1lbWJlciB0aGF0IGluY29ycmVjdGx5Lg0KPj4+Pj4gUHJpa2Ugc2FpZCBoZSBzZWUgY3R4 LT5yZXN2IGlzIG51bGwsIGluIHRoYXQgY2FzZSwgY29kZSBkb2Vzbid0IHJ1bg0KPj4+Pj4gaW50 byBidXN5IHBhdGguDQo+Pj4+PiBPaCwgYXMgeW91IG1lbnRpb25lZCBoZXJlLCB3ZSBuZWVkIGFk ZCAucmVzdj1iby0+cmVzdiBmb3IgZXZlcnkNCj4+Pj4+IHR0bV9vcGVyYXRpb25fY3R4LiBUaGF0 J3MgYSBodWdlIGNoYW5nZSB3aGljaCB3aWxsIGNyb3NzIGFsbCB2ZW5kb3INCj4+Pj4+IGRyaXZl cnMuDQo+Pj4+Pg0KPj4+Pj4gQ2FuIHdlIGp1c3QgZm9yY2UgdG8gZXZhbHVhdGUgZXZpY3RfY3R4 LT5yZXN2ID0gYm8tPnJlc3Y/IFRoYXQgbWVhbnMNCj4+Pj4+IHdlIGp1c3QgYWRkIG9uZSBleHRy YSBsaW5lOiBldmljdF9jdHgtPnJlc3YgPSBiby0+cmVzdi4gSG93IGFib3V0DQo+Pj4+PiB0aGF0 Pw0KPj4+PiBXZWxsIG9ubHkgaWYgY3R4LT5yZXN2IGlzIE5VTEwsIG90aGVyd2lzZSB3ZSB3b3Vs ZCBvdmVyd3JpdGUgc29tZQ0KPj4+PiByZXNlcnZhdGlvbiBjb250ZXh0IGdpdmVuIGJ5IHRoZSBk cml2ZXIuDQo+Pj4+DQo+Pj4+IFByb2JhYmx5IGJldHRlciB0byBnaXZlIHRoZSBhY3F1aXJfY3R4 IGFzIHNlcGFyYXRlIHBhcmFtZXRlciB0bw0KPj4+PiB0dG1fbWVtX2V2aWN0X2ZpcnN0KCkuDQo+ Pj4gc3RpbGwgcHV0IGFjcXVpcmVfY3R4IGludG8gdHRtX29wZXJhdGlvbl9jdHg/IFRoZW4gdGhh dCdzIHNhbWUNCj4+PiBjdHgtPnJlc3YuDQo+Pj4gQ3VycmVudCBwcm9ibGVtIGlzIHdlIGRvbid0 IHBhc3MgcmVzdiBhbnl3aGVyZSBleGNlcHQgQUxMT1dfRVZJQ1QgY2FzZS4NCj4+PiBJZiB5b3Ug aGF2ZSBjb25jZXJuIGZvciBvdmVyd3JpdHRlbiwgd2UgaGF2ZSB0byBkbyAiLnJlc3YgPSBiby0+ cmVzdiINCj4+PiBpbiBldmVyeSB0dG1fb3BlcmF0aW9uX2N0eCBkZWZpbml0aW9ucy4NCj4+DQo+ PiBObywgd2hhdCBJIG1lYW4gaXMgdG8gYWRkIHRoZSBhY3F1aXJlX2N0eCBhcyBzZXBhcmF0ZSBw YXJhbWV0ZXIgdG8NCj4+IHR0bV9tZW1fZXZpY3RfZmlyc3QoKS4NCj4+DQo+PiBFLmcuIHdlIG9u bHkgbmVlZCBpdCBpbiB0aGlzIGZ1bmN0aW9uIGFuZCBpdCBpcyBhY3R1YWxseSBub3QgcmVsYXRl ZA0KPj4gdG8gdGhlIHR0bSBvcGVyYXRpb24gY29udGV4dCBmaWxsZWQgaW4gYnkgdGhlIGRyaXZl ci4NCj4NCj4NCj4gRldJVywgSSB0aGluayBpdCB3b3VsZCBiZSBuaWNlIGF0IHNvbWUgcG9pbnQg dG8gaGF2ZSBhIHJlc2VydmF0aW9uDQo+IGNvbnRleHQgYmVpbmcgcGFydCBvZiB0aGUgdHRtIG9w ZXJhdGlvbiBjb250ZXh0LCBzbyB0aGF0IHZhbGlkYXRlIGFuZA0KPiBldmljdCBjb3VsZCBkbyBz bGVlcGluZyByZXNlcnZhdGlvbnMsIGFuZCBoYXZlIGJvcyByZW1haW4gb24gdGhlIGxydQ0KPiBl dmVuIHdoZW4gcmVzZXJ2ZWQuLi4NCg0KWWVhaCwgd2VsbCB0aGF0J3MgZXhhY3RseSB3aGF0IHRo ZSBjdHgtPnJlc3YgcGFyYW1ldGVyIGlzIGdvb2QgZm9yIDopDQoNCkFuZCB5ZXMsIHdlIGRvIGtl ZXAgdGhlIEJPcyBvbiB0aGUgTFJVIGV2ZW4gd2hlbiB0aGV5IGFyZSByZXNlcnZlZC4NCg0KQ2hy aXN0aWFuLg0KDQo+DQo+IC9UaG9tYXMNCj4NCj4NCj4+DQo+PiBDaHJpc3RpYW4uDQo+Pg0KPj4+ DQo+Pj4gLURhdmlkDQo+Pj4+DQo+Pj4+IENocmlzdGlhbi4NCj4+Pj4NCj4+Pj4+IC1EYXZpZA0K Pj4+Pj4+IENocmlzdGlhbi4NCj4+Pj4+Pg0KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoCBpbnQgcmV0 Ow0KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkbyB7DQo+Pj4+Pj4+IEBAIC05MDcsNyAr OTg3LDcgQEAgc3RhdGljIGludCB0dG1fYm9fbWVtX2ZvcmNlX3NwYWNlKHN0cnVjdA0KPj4+Pj4+ PiB0dG1fYnVmZmVyX29iamVjdCAqYm8sDQo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCByZXR1cm4gcmV0Ow0KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICht ZW0tPm1tX25vZGUpDQo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVh azsNCj4+Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgIHJldCA9IHR0bV9tZW1fZXZpY3RfZmlyc3QoYmRl diwgbWVtX3R5cGUsIHBsYWNlLCBjdHgpOw0KPj4+Pj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0ID0g dHRtX21lbV9ldmljdF9maXJzdChiZGV2LCBtZW1fdHlwZSwgcGxhY2UsDQo+Pj4+Pj4+IGV2aWN0 X2N0eCk7DQo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHVubGlrZWx5KHJldCAh PSAwKSkNCj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7 DQo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgIH0gd2hpbGUgKDEpOw0KPj4+Pj4+PiBAQCAtMTc4NCw3 ICsxODY0LDggQEAgaW50IHR0bV9ib19zd2Fwb3V0KHN0cnVjdCB0dG1fYm9fZ2xvYmFsIA0KPj4+ Pj4+PiAqZ2xvYiwNCj4+Pj4+Pj4gc3RydWN0IHR0bV9vcGVyYXRpb25fY3R4ICpjdHgpDQo+Pj4+ Pj4+IMKgwqDCoMKgwqDCoMKgIHNwaW5fbG9jaygmZ2xvYi0+bHJ1X2xvY2spOw0KPj4+Pj4+PiDC oMKgwqDCoMKgwqDCoCBmb3IgKGkgPSAwOyBpIDwgVFRNX01BWF9CT19QUklPUklUWTsgKytpKSB7 DQo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbGlzdF9mb3JfZWFjaF9lbnRyeShibywg Jmdsb2ItPnN3YXBfbHJ1W2ldLCBzd2FwKSB7DQo+Pj4+Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGlmICh0dG1fYm9fZXZpY3Rfc3dhcG91dF9hbGxvd2FibGUoYm8sIGN0eCwgDQo+Pj4+Pj4+ ICZsb2NrZWQpKSB7DQo+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICh0dG1fYm9f ZXZpY3Rfc3dhcG91dF9hbGxvd2FibGUoYm8sIGN0eCwgJmxvY2tlZCwNCj4+Pj4+Pj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBO VUxMKSkgew0KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBy ZXQgPSAwOw0KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBi cmVhazsNCj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0NCj4+Pg0KPj4+ IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+Pj4gYW1k LWdmeCBtYWlsaW5nIGxpc3QNCj4+PiBhbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZw0KPj4+ IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeA0K Pj4NCj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+ PiBkcmktZGV2ZWwgbWFpbGluZyBsaXN0DQo+PiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Au b3JnDQo+PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Ry aS1kZXZlbA0KPg0KPg0KDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZng=