From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Grodzovsky, Andrey" Subject: Re: [PATCH v3 2/2] drm/sched: Rework HW fence processing. Date: Wed, 12 Dec 2018 13:08:30 +0000 Message-ID: <28bb2244-c2bf-3a3f-18e4-df9aef45cd58@amd.com> References: <1544478238-13310-1-git-send-email-andrey.grodzovsky@amd.com> <1544478238-13310-2-git-send-email-andrey.grodzovsky@amd.com> <28c3bebc-9661-198c-7ea9-e59260d658c9@amd.com> <9a645f9c-93d1-12cc-044b-4bc1ea84d7d9@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <9a645f9c-93d1-12cc-044b-4bc1ea84d7d9-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> Content-Language: en-US Content-ID: <6AD88373325AD74D86181E0892022120-asWib9pRmPqcE4WynfumptQqCkab/8FMAL8bYrjMMd8@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: "Koenig, Christian" , "Zhou, David(ChunMing)" , "dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , "eric-WhKQ6XTQaPysTnJN9+BGXg@public.gmane.org" , "etnaviv-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" Cc: "Liu, Monk" QlRXLCB0aGUgcHJvYmxlbSBJIHBvaW50ZWQgb3V0IHdpdGggZHJtX3NjaGVkX2VudGl0eV9raWxs X2pvYnNfY2IgaXMgbm90IA0KYW4gaXNzdWUgd2l0aCB0aGlzIHBhdGNoIHNldCBzaW5jZSBpdCBy ZW1vdmVzIHRoZSBjYiBmcm9tIA0Kc19mZW5jZS0+ZmluaXNoZWQgaW4gZ2VuZXJhbCBzbyB3ZSBv bmx5IGZyZWUgdGhlIGpvYiBvbmNlIC0gZGlyZWN0bHkgDQpmcm9tIGRybV9zY2hlZF9lbnRpdHlf a2lsbF9qb2JzX2NiLg0KDQpBbmRyZXkNCg0KDQpPbiAxMi8xMS8yMDE4IDExOjIwIEFNLCBDaHJp c3RpYW4gS8O2bmlnIHdyb3RlOg0KPiBZZWFoLCBjb21wbGV0ZWx5IGNvcnJlY3QgZXhwbGFpbmVk Lg0KPg0KPiBJIHdhcyB1bmZvcnR1bmF0ZWx5IHJlYWxseSBidXN5IHRvZGF5LCBidXQgZ29pbmcg dG8gZ2l2ZSB0aGF0IGEgbG9vayANCj4gYXMgc29vbiBhcyBJIGhhdmUgdGltZS4NCj4NCj4gQ2hy aXN0aWFuLg0KPg0KPiBBbSAxMS4xMi4xOCB1bSAxNzowMSBzY2hyaWViIEdyb2R6b3Zza3ksIEFu ZHJleToNCj4+IEEgSSB1bmRlcnN0YW5kIHlvdSBzYXkgdGhhdCBieSB0aGUgdGltZSB0aGUgZmVu Y2UgY2FsbGJhY2sgcnVucyB0aGUgam9iDQo+PiBtaWdodCBoYXZlIGFscmVhZHkgYmVlbiByZWxl YXNlZCwNCj4+DQo+PiBidXQgaG93IHNvIGlmIHRoZSBqb2IgZ2V0cyByZWxlYXNlZCBmcm9tIGRy bV9zY2hlZF9qb2JfZmluaXNoIHdvcmsNCj4+IGhhbmRsZXIgaW4gdGhlIG5vcm1hbCBmbG93IC0g c28sIGFmdGVyIHRoZSBIVw0KPj4NCj4+IGZlbmNlIChzX2ZlbmNlLT5wYXJlbnQpIGNiIGlzIGV4 ZWN1dGVkLiBPdGhlciAyIGZsb3dzIGFyZSBlcnJvciB1c2UNCj4+IGNhc2VzIHdoZXJlIGFtZGdw dV9qb2JfZnJlZSBpcyBjYWxsZWQgZGlyZWN0bHkgaW4gd2hpY2gNCj4+DQo+PiBjYXNlcyBJIGFz c3VtZSB0aGUgam9iIHdhc24ndCBzdWJtaXR0ZWQgdG8gSFcuIExhc3QgZmxvdyBJIHNlZSBpcw0K Pj4gZHJtX3NjaGVkX2VudGl0eV9raWxsX2pvYnNfY2IgYW5kIGhlcmUgSSBhY3R1YWxseSBzZWUg YSBwcm9ibGVtDQo+Pg0KPj4gd2l0aCB0aGUgY29kZSBhcyBpdCdzIHRvZGF5IC0gZHJtX3NjaGVk X2ZlbmNlX2ZpbmlzaGVkIGlzIGNhbGxlZCB3aGljaA0KPj4gd2lsbCB0cmlnZ2VyIHNfZmVuY2Ut PmZpbmlzaGVkIGNhbGxiYWNrIHRvIHJ1biB3aGljaCB0b2RheQ0KPj4NCj4+IHNjaGVkdWxlcyBk cm1fc2NoZWRfam9iX2ZpbmlzaCB3aGljaCByZWxlYXNlcyB0aGUgam9iLCBidXQgd2UgZG9uJ3Qg ZXZlbg0KPj4gd2FpdCBmb3IgdGhhdCBhbmQgY2FsbCBmcmVlX2pvYiBjYiBkaXJlY3RseSBmcm9t DQo+Pg0KPj4gYWZ0ZXIgdGhhdCB3aGljaCBzZWVtcyB3cm9uZyB0byBtZS4NCj4+DQo+PiBBbmRy ZXkNCj4+DQo+Pg0KPj4gT24gMTIvMTAvMjAxOCAwOTo0NSBQTSwgWmhvdSwgRGF2aWQoQ2h1bk1p bmcpIHdyb3RlOg0KPj4+IEkgZG9uJ3QgdGhpbmsgYWRkaW5nIGNiIHRvIHNjaGVkIGpvYiB3b3Vs ZCB3b3JrIGFzIHNvb24gYXMgdGhlaXIgDQo+Pj4gbGlmZXRpbWUgaXMgZGlmZmVyZW50IHdpdGgg ZmVuY2UuDQo+Pj4gVW5sZXNzIHlvdSBtYWtlIHRoZSBzY2hlZCBqb2IgcmVmZXJlbmNlLCBvdGhl cndpc2Ugd2Ugd2lsbCBnZXQgDQo+Pj4gdHJvdWJsZSBzb29uZXIgb3IgbGF0ZXIuDQo+Pj4NCj4+ PiAtRGF2aWQNCj4+Pg0KPj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPj4+PiBGcm9t OiBhbWQtZ2Z4IDxhbWQtZ2Z4LWJvdW5jZXNAbGlzdHMuZnJlZWRlc2t0b3Aub3JnPiBPbiBCZWhh bGYgT2YNCj4+Pj4gQW5kcmV5IEdyb2R6b3Zza3kNCj4+Pj4gU2VudDogVHVlc2RheSwgRGVjZW1i ZXIgMTEsIDIwMTggNTo0NCBBTQ0KPj4+PiBUbzogZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9w Lm9yZzsgYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmc7DQo+Pj4+IGNrb2VuaWcubGVpY2h0 enVtZXJrZW5AZ21haWwuY29tOyBlcmljQGFuaG9sdC5uZXQ7DQo+Pj4+IGV0bmF2aXZAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnDQo+Pj4+IENjOiBaaG91LCBEYXZpZChDaHVuTWluZykgPERhdmlkMS5a aG91QGFtZC5jb20+OyBMaXUsIE1vbmsNCj4+Pj4gPE1vbmsuTGl1QGFtZC5jb20+OyBHcm9kem92 c2t5LCBBbmRyZXkNCj4+Pj4gPEFuZHJleS5Hcm9kem92c2t5QGFtZC5jb20+DQo+Pj4+IFN1Ympl Y3Q6IFtQQVRDSCB2MyAyLzJdIGRybS9zY2hlZDogUmV3b3JrIEhXIGZlbmNlIHByb2Nlc3Npbmcu DQo+Pj4+DQo+Pj4+IEV4cGVkaXRlIGpvYiBkZWxldGlvbiBmcm9tIHJpbmcgbWlycm9yIGxpc3Qg dG8gdGhlIEhXIGZlbmNlIHNpZ25hbCANCj4+Pj4gY2FsbGJhY2sNCj4+Pj4gaW5zdGVhZCBmcm9t IGZpbmlzaF93b3JrLCB0b2dldGhlciB3aXRoIHdhaXRpbmcgZm9yIGFsbCBzdWNoIGZlbmNlcyAN Cj4+Pj4gdG8gc2lnbmFsIGluDQo+Pj4+IGRybV9zY2hlZF9zdG9wIHdlIGdhcmFudGVlIHRoYXQg YWxyZWFkeSBzaWduYWxlZCBqb2Igd2lsbCBub3QgYmUgDQo+Pj4+IHByb2Nlc3NlZA0KPj4+PiB0 d2ljZS4NCj4+Pj4gUmVtb3ZlIHRoZSBzY2hlZCBmaW5pc2ggZmVuY2UgY2FsbGJhY2sgYW5kIGp1 c3Qgc3VibWl0IGZpbmlzaF93b3JrIA0KPj4+PiBkaXJlY3RseQ0KPj4+PiBmcm9tIHRoZSBIVyBm ZW5jZSBjYWxsYmFjay4NCj4+Pj4NCj4+Pj4gdjI6IEZpeCBjb21tZW50cy4NCj4+Pj4NCj4+Pj4g djM6IEF0dGFjaMKgIGh3IGZlbmNlIGNiIHRvIHNjaGVkX2pvYg0KPj4+Pg0KPj4+PiBTdWdnZXN0 ZWQtYnk6IENocmlzdGlhbiBLb2VuaWcgPENocmlzdGlhbi5Lb2VuaWdAYW1kLmNvbT4NCj4+Pj4g U2lnbmVkLW9mZi1ieTogQW5kcmV5IEdyb2R6b3Zza3kgPGFuZHJleS5ncm9kem92c2t5QGFtZC5j b20+DQo+Pj4+IC0tLQ0KPj4+PiDCoMKgIGRyaXZlcnMvZ3B1L2RybS9zY2hlZHVsZXIvc2NoZWRf bWFpbi5jIHwgNTggDQo+Pj4+ICsrKysrKysrKysrKysrKystLS0tLS0tLS0tDQo+Pj4+IC0tLS0t LS0tDQo+Pj4+IMKgwqAgaW5jbHVkZS9kcm0vZ3B1X3NjaGVkdWxlci5owqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB8wqAgNiArKy0tDQo+Pj4+IMKgwqAgMiBmaWxlcyBjaGFuZ2VkLCAzMCBpbnNlcnRp b25zKCspLCAzNCBkZWxldGlvbnMoLSkNCj4+Pj4NCj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9zY2hlZHVsZXIvc2NoZWRfbWFpbi5jDQo+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL3Nj aGVkdWxlci9zY2hlZF9tYWluLmMNCj4+Pj4gaW5kZXggY2RmOTVlMi4uZjBjMWYzMiAxMDA2NDQN Cj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3NjaGVkdWxlci9zY2hlZF9tYWluLmMNCj4+Pj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL3NjaGVkdWxlci9zY2hlZF9tYWluLmMNCj4+Pj4gQEAgLTI4 NCw4ICsyODQsNiBAQCBzdGF0aWMgdm9pZCBkcm1fc2NoZWRfam9iX2ZpbmlzaChzdHJ1Y3QgDQo+ Pj4+IHdvcmtfc3RydWN0DQo+Pj4+ICp3b3JrKQ0KPj4+PiDCoMKgwqDCoMKgwqAgY2FuY2VsX2Rl bGF5ZWRfd29ya19zeW5jKCZzY2hlZC0+d29ya190ZHIpOw0KPj4+Pg0KPj4+PiDCoMKgwqDCoMKg wqAgc3Bpbl9sb2NrX2lycXNhdmUoJnNjaGVkLT5qb2JfbGlzdF9sb2NrLCBmbGFncyk7DQo+Pj4+ IC3CoMKgwqAgLyogcmVtb3ZlIGpvYiBmcm9tIHJpbmdfbWlycm9yX2xpc3QgKi8NCj4+Pj4gLcKg wqDCoCBsaXN0X2RlbF9pbml0KCZzX2pvYi0+bm9kZSk7DQo+Pj4+IMKgwqDCoMKgwqDCoCAvKiBx dWV1ZSBURFIgZm9yIG5leHQgam9iICovDQo+Pj4+IMKgwqDCoMKgwqDCoCBkcm1fc2NoZWRfc3Rh cnRfdGltZW91dChzY2hlZCk7DQo+Pj4+IMKgwqDCoMKgwqDCoCBzcGluX3VubG9ja19pcnFyZXN0 b3JlKCZzY2hlZC0+am9iX2xpc3RfbG9jaywgZmxhZ3MpOyBAQCANCj4+Pj4gLTI5MywyMg0KPj4+ PiArMjkxLDExIEBAIHN0YXRpYyB2b2lkIGRybV9zY2hlZF9qb2JfZmluaXNoKHN0cnVjdCB3b3Jr X3N0cnVjdCAqd29yaykNCj4+Pj4gwqDCoMKgwqDCoMKgIHNjaGVkLT5vcHMtPmZyZWVfam9iKHNf am9iKTsNCj4+Pj4gwqDCoCB9DQo+Pj4+DQo+Pj4+IC1zdGF0aWMgdm9pZCBkcm1fc2NoZWRfam9i X2ZpbmlzaF9jYihzdHJ1Y3QgZG1hX2ZlbmNlICpmLA0KPj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRtYV9mZW5jZV9jYiAqY2IpDQo+Pj4+IC17DQo+ Pj4+IC3CoMKgwqAgc3RydWN0IGRybV9zY2hlZF9qb2IgKmpvYiA9IGNvbnRhaW5lcl9vZihjYiwg c3RydWN0IA0KPj4+PiBkcm1fc2NoZWRfam9iLA0KPj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZpbmlzaF9jYik7DQo+Pj4+IC3CoMKgwqAgc2No ZWR1bGVfd29yaygmam9iLT5maW5pc2hfd29yayk7DQo+Pj4+IC19DQo+Pj4+IC0NCj4+Pj4gwqDC oCBzdGF0aWMgdm9pZCBkcm1fc2NoZWRfam9iX2JlZ2luKHN0cnVjdCBkcm1fc2NoZWRfam9iICpz X2pvYinCoCB7DQo+Pj4+IMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIgKnNj aGVkID0gc19qb2ItPnNjaGVkOw0KPj4+PiDCoMKgwqDCoMKgwqAgdW5zaWduZWQgbG9uZyBmbGFn czsNCj4+Pj4NCj4+Pj4gLSBkbWFfZmVuY2VfYWRkX2NhbGxiYWNrKCZzX2pvYi0+c19mZW5jZS0+ ZmluaXNoZWQsICZzX2pvYi0NCj4+Pj4+IGZpbmlzaF9jYiwNCj4+Pj4gLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkcm1fc2NoZWRfam9iX2ZpbmlzaF9jYik7DQo+Pj4+IC0N Cj4+Pj4gwqDCoMKgwqDCoMKgIHNwaW5fbG9ja19pcnFzYXZlKCZzY2hlZC0+am9iX2xpc3RfbG9j aywgZmxhZ3MpOw0KPj4+PiDCoMKgwqDCoMKgwqAgbGlzdF9hZGRfdGFpbCgmc19qb2ItPm5vZGUs ICZzY2hlZC0+cmluZ19taXJyb3JfbGlzdCk7DQo+Pj4+IMKgwqDCoMKgwqDCoCBkcm1fc2NoZWRf c3RhcnRfdGltZW91dChzY2hlZCk7DQo+Pj4+IEBAIC0zNTksMTIgKzM0NiwxMSBAQCB2b2lkIGRy bV9zY2hlZF9zdG9wKHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlcg0KPj4+PiAqc2NoZWQsIHN0cnVj dCBkcm1fc2NoZWRfam9iICpiYWQsDQo+Pj4+IMKgwqDCoMKgwqDCoCBsaXN0X2Zvcl9lYWNoX2Vu dHJ5X3JldmVyc2Uoc19qb2IsICZzY2hlZC0+cmluZ19taXJyb3JfbGlzdCwgDQo+Pj4+IG5vZGUp DQo+Pj4+IHsNCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHNfam9iLT5zX2ZlbmNlLT5w YXJlbnQgJiYNCj4+Pj4gZG1hX2ZlbmNlX3JlbW92ZV9jYWxsYmFjayhzX2pvYi0+c19mZW5jZS0+ cGFyZW50LA0KPj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgJnNfam9iLT5zX2ZlbmNlLT5jYikpIHsNCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZzX2pvYi0+Y2IpKSB7DQo+Pj4+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZG1hX2ZlbmNlX3B1dChzX2pvYi0+c19mZW5jZS0+ cGFyZW50KTsNCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzX2pvYi0+c19mZW5j ZS0+cGFyZW50ID0gTlVMTDsNCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhdG9t aWNfZGVjKCZzY2hlZC0+aHdfcnFfY291bnQpOw0KPj4+PiAtwqDCoMKgwqDCoMKgwqAgfQ0KPj4+ PiAtwqDCoMKgwqDCoMKgwqAgZWxzZSB7DQo+Pj4+ICvCoMKgwqDCoMKgwqDCoCB9IGVsc2Ugew0K Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIFRPRE8gSXMgaXQgZ2V0L3B1dCBu ZWNjZXNzZXkgaGVyZSA/ICovDQo+Pj4+IGRtYV9mZW5jZV9nZXQoJnNfam9iLT5zX2ZlbmNlLT5m aW5pc2hlZCk7DQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbGlzdF9hZGQoJnNf am9iLT5maW5pc2hfbm9kZSwgJndhaXRfbGlzdCk7IEBAIC0NCj4+Pj4gNDE3LDMxICs0MDMsMzQg QEAgRVhQT1JUX1NZTUJPTChkcm1fc2NoZWRfc3RvcCk7wqAgdm9pZA0KPj4+PiBkcm1fc2NoZWRf c3RhcnQoc3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpzY2hlZCwgYm9vbCB1bnBhcmtfb25seSnC oCB7DQo+Pj4+IMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX3NjaGVkX2pvYiAqc19qb2IsICp0bXA7 DQo+Pj4+IC3CoMKgwqAgdW5zaWduZWQgbG9uZyBmbGFnczsNCj4+Pj4gwqDCoMKgwqDCoMKgIGlu dCByOw0KPj4+Pg0KPj4+PiDCoMKgwqDCoMKgwqAgaWYgKHVucGFya19vbmx5KQ0KPj4+PiDCoMKg wqDCoMKgwqDCoMKgwqDCoCBnb3RvIHVucGFyazsNCj4+Pj4NCj4+Pj4gLcKgwqDCoCBzcGluX2xv Y2tfaXJxc2F2ZSgmc2NoZWQtPmpvYl9saXN0X2xvY2ssIGZsYWdzKTsNCj4+Pj4gK8KgwqDCoCAv Kg0KPj4+PiArwqDCoMKgwqAgKiBMb2NraW5nIHRoZSBsaXN0IGlzIG5vdCByZXF1aXJlZCBoZXJl IGFzIHRoZSBzY2hlZCB0aHJlYWQgDQo+Pj4+IGlzIHBhcmtlZA0KPj4+PiArwqDCoMKgwqAgKiBz byBubyBuZXcgam9icyBhcmUgYmVpbmcgcHVzaGVkIGluIHRvIEhXIGFuZCBpbiBkcm1fc2NoZWRf c3RvcA0KPj4+PiB3ZQ0KPj4+PiArwqDCoMKgwqAgKiBmbHVzaGVkIGFsbCB0aGUgam9icyB3aG8g d2VyZSBzdGlsbCBpbiBtaXJyb3IgbGlzdCBidXQgd2hvIA0KPj4+PiBhbHJlYWR5DQo+Pj4+ICvC oMKgwqDCoCAqIHNpZ25hbGVkIGFuZCByZW1vdmVkIHRoZW0gc2VsZiBmcm9tIHRoZSBsaXN0LiBB bHNvIGNvbmN1cnJlbnQNCj4+Pj4gK8KgwqDCoMKgICogR1BVIHJlY292ZXJzIGNhbid0IHJ1biBp biBwYXJhbGxlbC4NCj4+Pj4gK8KgwqDCoMKgICovDQo+Pj4+IMKgwqDCoMKgwqDCoCBsaXN0X2Zv cl9lYWNoX2VudHJ5X3NhZmUoc19qb2IsIHRtcCwgJnNjaGVkLT5yaW5nX21pcnJvcl9saXN0LA0K Pj4+PiBub2RlKSB7DQo+Pj4+IC3CoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX3NjaGVkX2ZlbmNl ICpzX2ZlbmNlID0gc19qb2ItPnNfZmVuY2U7DQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0 cnVjdCBkbWFfZmVuY2UgKmZlbmNlID0gc19qb2ItPnNfZmVuY2UtPnBhcmVudDsNCj4+Pj4NCj4+ Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGZlbmNlKSB7DQo+Pj4+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHIgPSBkbWFfZmVuY2VfYWRkX2NhbGxiYWNrKGZlbmNlLCAmc19mZW5jZS0+Y2Is DQo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHIgPSBkbWFfZmVuY2VfYWRkX2NhbGxiYWNr KGZlbmNlLCAmc19qb2ItPmNiLA0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRybV9zY2hlZF9wcm9jZXNzX2pvYik7DQo+Pj4+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHIgPT0gLUVOT0VOVCkNCj4+Pj4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkcm1fc2NoZWRfcHJvY2Vzc19qb2IoZmVuY2Us ICZzX2ZlbmNlLQ0KPj4+Pj4gY2IpOw0KPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGRybV9zY2hlZF9wcm9jZXNzX2pvYihmZW5jZSwgJnNfam9iLT5jYik7DQo+Pj4+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZWxzZSBpZiAocikNCj4+Pj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIERSTV9FUlJPUigiZmVuY2UgYWRkIGNhbGxiYWNrIGZhaWxl ZA0KPj4+PiAoJWQpXG4iLA0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgcik7DQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0gZWxzZQ0KPj4+ PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkcm1fc2NoZWRfcHJvY2Vzc19qb2IoTlVMTCwgJnNf ZmVuY2UtPmNiKTsNCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZHJtX3NjaGVkX3Byb2Nl c3Nfam9iKE5VTEwsICZzX2pvYi0+Y2IpOw0KPj4+PiDCoMKgwqDCoMKgwqAgfQ0KPj4+Pg0KPj4+ PiDCoMKgwqDCoMKgwqAgZHJtX3NjaGVkX3N0YXJ0X3RpbWVvdXQoc2NoZWQpOw0KPj4+PiAtwqDC oMKgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnNjaGVkLT5qb2JfbGlzdF9sb2NrLCBmbGFncyk7 DQo+Pj4+DQo+Pj4+IMKgwqAgdW5wYXJrOg0KPj4+PiDCoMKgwqDCoMKgwqAga3RocmVhZF91bnBh cmsoc2NoZWQtPnRocmVhZCk7DQo+Pj4+IEBAIC01OTAsMTggKzU3OSwyNyBAQCBkcm1fc2NoZWRf c2VsZWN0X2VudGl0eShzdHJ1Y3QNCj4+Pj4gZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVkKQ0KPj4+ PiDCoMKgwqAgKi8NCj4+Pj4gwqDCoCBzdGF0aWMgdm9pZCBkcm1fc2NoZWRfcHJvY2Vzc19qb2Io c3RydWN0IGRtYV9mZW5jZSAqZiwgc3RydWN0DQo+Pj4+IGRtYV9mZW5jZV9jYiAqY2IpwqAgew0K Pj4+PiAtwqDCoMKgIHN0cnVjdCBkcm1fc2NoZWRfZmVuY2UgKnNfZmVuY2UgPQ0KPj4+PiAtwqDC oMKgwqDCoMKgwqAgY29udGFpbmVyX29mKGNiLCBzdHJ1Y3QgZHJtX3NjaGVkX2ZlbmNlLCBjYik7 DQo+Pj4+ICvCoMKgwqAgc3RydWN0IGRybV9zY2hlZF9qb2IgKnNfam9iID0gY29udGFpbmVyX29m KGNiLCBzdHJ1Y3QNCj4+Pj4gZHJtX3NjaGVkX2pvYiwgY2IpOw0KPj4+PiArwqDCoMKgIHN0cnVj dCBkcm1fc2NoZWRfZmVuY2UgKnNfZmVuY2UgPSBzX2pvYi0+c19mZW5jZTsNCj4+Pj4gwqDCoMKg wqDCoMKgIHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQgPSBzX2ZlbmNlLT5zY2hlZDsN Cj4+Pj4gK8KgwqDCoCB1bnNpZ25lZCBsb25nIGZsYWdzOw0KPj4+PiArDQo+Pj4+ICvCoMKgwqAg Y2FuY2VsX2RlbGF5ZWRfd29yaygmc2NoZWQtPndvcmtfdGRyKTsNCj4+Pj4NCj4+Pj4gLcKgwqDC oCBkbWFfZmVuY2VfZ2V0KCZzX2ZlbmNlLT5maW5pc2hlZCk7DQo+Pj4+IMKgwqDCoMKgwqDCoCBh dG9taWNfZGVjKCZzY2hlZC0+aHdfcnFfY291bnQpOw0KPj4+PiDCoMKgwqDCoMKgwqAgYXRvbWlj X2RlYygmc2NoZWQtPm51bV9qb2JzKTsNCj4+Pj4gKw0KPj4+PiArwqDCoMKgIHNwaW5fbG9ja19p cnFzYXZlKCZzY2hlZC0+am9iX2xpc3RfbG9jaywgZmxhZ3MpOw0KPj4+PiArwqDCoMKgIC8qIHJl bW92ZSBqb2IgZnJvbSByaW5nX21pcnJvcl9saXN0ICovDQo+Pj4+ICvCoMKgwqAgbGlzdF9kZWxf aW5pdCgmc19qb2ItPm5vZGUpOw0KPj4+PiArwqDCoMKgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUo JnNjaGVkLT5qb2JfbGlzdF9sb2NrLCBmbGFncyk7DQo+Pj4+ICsNCj4+Pj4gwqDCoMKgwqDCoMKg IGRybV9zY2hlZF9mZW5jZV9maW5pc2hlZChzX2ZlbmNlKTsNCj4+Pj4NCj4+Pj4gwqDCoMKgwqDC oMKgIHRyYWNlX2RybV9zY2hlZF9wcm9jZXNzX2pvYihzX2ZlbmNlKTsNCj4+Pj4gLcKgwqDCoCBk bWFfZmVuY2VfcHV0KCZzX2ZlbmNlLT5maW5pc2hlZCk7DQo+Pj4+IMKgwqDCoMKgwqDCoCB3YWtl X3VwX2ludGVycnVwdGlibGUoJnNjaGVkLT53YWtlX3VwX3dvcmtlcik7DQo+Pj4+ICsNCj4+Pj4g K8KgwqDCoCBzY2hlZHVsZV93b3JrKCZzX2pvYi0+ZmluaXNoX3dvcmspOw0KPj4+PiDCoMKgIH0N Cj4+Pj4NCj4+Pj4gwqDCoCAvKioNCj4+Pj4gQEAgLTY2NCwxNiArNjYyLDE2IEBAIHN0YXRpYyBp bnQgZHJtX3NjaGVkX21haW4odm9pZCAqcGFyYW0pDQo+Pj4+DQo+Pj4+IMKgwqDCoMKgwqDCoMKg wqDCoMKgIGlmIChmZW5jZSkgew0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNf ZmVuY2UtPnBhcmVudCA9IGRtYV9mZW5jZV9nZXQoZmVuY2UpOw0KPj4+PiAtwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCByID0gZG1hX2ZlbmNlX2FkZF9jYWxsYmFjayhmZW5jZSwgJnNfZmVuY2UtPmNi LA0KPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByID0gZG1hX2ZlbmNlX2FkZF9jYWxsYmFj ayhmZW5jZSwgJnNjaGVkX2pvYi0+Y2IsDQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZHJtX3NjaGVkX3Byb2Nlc3Nfam9iKTsN Cj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAociA9PSAtRU5PRU5UKQ0KPj4+ PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRybV9zY2hlZF9wcm9jZXNzX2pvYihm ZW5jZSwgJnNfZmVuY2UtDQo+Pj4+PiBjYik7DQo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgZHJtX3NjaGVkX3Byb2Nlc3Nfam9iKGZlbmNlLCAmc2NoZWRfam9iLQ0KPj4+Pj4g Y2IpOw0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVsc2UgaWYgKHIpDQo+Pj4+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBEUk1fRVJST1IoImZlbmNlIGFk ZCBjYWxsYmFjayBmYWlsZWQNCj4+Pj4gKCVkKVxuIiwNCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHIpOw0KPj4+PiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGRtYV9mZW5jZV9wdXQoZmVuY2UpOw0KPj4+PiDCoMKgwqDCoMKgwqDCoMKg wqDCoCB9IGVsc2UNCj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZHJtX3NjaGVkX3Byb2Nl c3Nfam9iKE5VTEwsICZzX2ZlbmNlLT5jYik7DQo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGRybV9zY2hlZF9wcm9jZXNzX2pvYihOVUxMLCAmc2NoZWRfam9iLT5jYik7DQo+Pj4+DQo+Pj4+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgIHdha2VfdXAoJnNjaGVkLT5qb2Jfc2NoZWR1bGVkKTsNCj4+ Pj4gwqDCoMKgwqDCoMKgIH0NCj4+Pj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2dwdV9zY2hl ZHVsZXIuaCBiL2luY2x1ZGUvZHJtL2dwdV9zY2hlZHVsZXIuaA0KPj4+PiBpbmRleCBjOTRiNTky Li5mMjlhYTFjIDEwMDY0NA0KPj4+PiAtLS0gYS9pbmNsdWRlL2RybS9ncHVfc2NoZWR1bGVyLmgN Cj4+Pj4gKysrIGIvaW5jbHVkZS9kcm0vZ3B1X3NjaGVkdWxlci5oDQo+Pj4+IEBAIC0xMzgsMTAg KzEzOCw2IEBAIHN0cnVjdCBkcm1fc2NoZWRfZmVuY2Ugew0KPj4+PiDCoMKgwqDCoMKgwqAgc3Ry dWN0IGRtYV9mZW5jZcKgwqDCoMKgwqDCoMKgIGZpbmlzaGVkOw0KPj4+Pg0KPj4+PiDCoMKgwqDC oMKgwqDCoMKgwqDCoCAvKioNCj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqAgKiBAY2I6IHRoZSBjYWxs YmFjayBmb3IgdGhlIHBhcmVudCBmZW5jZSBiZWxvdy4NCj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqAg Ki8NCj4+Pj4gLcKgwqDCoCBzdHJ1Y3QgZG1hX2ZlbmNlX2NiwqDCoMKgwqDCoMKgwqAgY2I7DQo+ Pj4+IC3CoMKgwqDCoMKgwqDCoCAvKioNCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIEBw YXJlbnQ6IHRoZSBmZW5jZSByZXR1cm5lZCBieSANCj4+Pj4gJmRybV9zY2hlZF9iYWNrZW5kX29w cy5ydW5fam9iDQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiB3aGVuIHNjaGVkdWxpbmcg dGhlIGpvYiBvbiBoYXJkd2FyZS4gV2Ugc2lnbmFsIHRoZQ0KPj4+PiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgICogJmRybV9zY2hlZF9mZW5jZS5maW5pc2hlZCBmZW5jZSBvbmNlIHBhcmVudCBpcyAN Cj4+Pj4gc2lnbmFsbGVkLg0KPj4+PiBAQCAtMTgyLDYgKzE3OCw3IEBAIHN0cnVjdCBkcm1fc2No ZWRfZmVuY2UNCj4+Pj4gKnRvX2RybV9zY2hlZF9mZW5jZShzdHJ1Y3QgZG1hX2ZlbmNlICpmKTsN Cj4+Pj4gwqDCoMKgICrCoMKgwqDCoMKgwqDCoMKgIGJlIHNjaGVkdWxlZCBmdXJ0aGVyLg0KPj4+ PiDCoMKgwqAgKiBAc19wcmlvcml0eTogdGhlIHByaW9yaXR5IG9mIHRoZSBqb2IuDQo+Pj4+IMKg wqDCoCAqIEBlbnRpdHk6IHRoZSBlbnRpdHkgdG8gd2hpY2ggdGhpcyBqb2IgYmVsb25ncy4NCj4+ Pj4gKyAqIEBjYjogdGhlIGNhbGxiYWNrIGZvciB0aGUgcGFyZW50IGZlbmNlIGluIHNfZmVuY2Uu DQo+Pj4+IMKgwqDCoCAqDQo+Pj4+IMKgwqDCoCAqIEEgam9iIGlzIGNyZWF0ZWQgYnkgdGhlIGRy aXZlciB1c2luZyBkcm1fc2NoZWRfam9iX2luaXQoKSwgYW5kDQo+Pj4+IMKgwqDCoCAqIHNob3Vs ZCBjYWxsIGRybV9zY2hlZF9lbnRpdHlfcHVzaF9qb2IoKSBvbmNlIGl0IHdhbnRzIHRoZSANCj4+ Pj4gc2NoZWR1bGVyDQo+Pj4+IEBAIC0xOTksNiArMTk2LDcgQEAgc3RydWN0IGRybV9zY2hlZF9q b2Igew0KPj4+PiDCoMKgwqDCoMKgwqAgYXRvbWljX3TCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGth cm1hOw0KPj4+PiDCoMKgwqDCoMKgwqAgZW51bSBkcm1fc2NoZWRfcHJpb3JpdHnCoMKgwqDCoMKg wqDCoCBzX3ByaW9yaXR5Ow0KPj4+PiDCoMKgwqDCoMKgwqAgc3RydWN0IGRybV9zY2hlZF9lbnRp dHnCoCAqZW50aXR5Ow0KPj4+PiArwqDCoMKgIHN0cnVjdCBkbWFfZmVuY2VfY2LCoMKgwqDCoMKg wqDCoCBjYjsNCj4+Pj4gwqDCoCB9Ow0KPj4+Pg0KPj4+PiDCoMKgIHN0YXRpYyBpbmxpbmUgYm9v bCBkcm1fc2NoZWRfaW52YWxpZGF0ZV9qb2Ioc3RydWN0IGRybV9zY2hlZF9qb2IgDQo+Pj4+ICpz X2pvYiwNCj4+Pj4gLS0gDQo+Pj4+IDIuNy40DQo+Pj4+DQo+Pj4+IF9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+Pj4+IGFtZC1nZnggbWFpbGluZyBsaXN0 DQo+Pj4+IGFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnDQo+Pj4+IGh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeA0KPg0KDQpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlz dAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngK