From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Christian_K=c3=b6nig?= Subject: Re: [PATCH 1/4] [RFC]drm: add syncobj timeline support v6 Date: Wed, 19 Sep 2018 10:07:45 +0200 Message-ID: <3ed55b7b-5a61-5001-e767-96039dc07bbe@amd.com> References: <20180919042659.3769-1-david1.zhou@amd.com> <04e91247-387c-ed5d-0793-9eb1d37d12bd@amd.com> <392512eb-271d-3d16-263b-f2429dedfffc@amd.com> <9bdce2dd-2129-3ed9-56f0-db4b14005194@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: Content-Language: en-US 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: "Zhou, David(ChunMing)" , "dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" Cc: Dave Airlie , "Rakos, Daniel" , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , Daniel Vetter QW0gMTkuMDkuMjAxOCB1bSAxMDowMyBzY2hyaWViIFpob3UsIERhdmlkKENodW5NaW5nKToKPgo+ PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+PiBGcm9tOiBhbWQtZ2Z4IDxhbWQtZ2Z4LWJv dW5jZXNAbGlzdHMuZnJlZWRlc2t0b3Aub3JnPiBPbiBCZWhhbGYgT2YKPj4gQ2hyaXN0aWFuIEs/ bmlnCj4+IFNlbnQ6IFdlZG5lc2RheSwgU2VwdGVtYmVyIDE5LCAyMDE4IDM6NDUgUE0KPj4gVG86 IFpob3UsIERhdmlkKENodW5NaW5nKSA8RGF2aWQxLlpob3VAYW1kLmNvbT47IFpob3UsCj4+IERh dmlkKENodW5NaW5nKSA8RGF2aWQxLlpob3VAYW1kLmNvbT47IGRyaS0KPj4gZGV2ZWxAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCj4+IENjOiBEYXZlIEFpcmxpZSA8YWlybGllZEByZWRoYXQuY29tPjsg UmFrb3MsIERhbmllbAo+PiA8RGFuaWVsLlJha29zQGFtZC5jb20+OyBEYW5pZWwgVmV0dGVyIDxk YW5pZWxAZmZ3bGwuY2g+OyBhbWQtCj4+IGdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPj4gU3Vi amVjdDogUmU6IFtQQVRDSCAxLzRdIFtSRkNdZHJtOiBhZGQgc3luY29iaiB0aW1lbGluZSBzdXBw b3J0IHY2Cj4+Cj4+IEFtIDE5LjA5LjIwMTggdW0gMDk6MzIgc2NocmllYiB6aG91Y20xOgo+Pj4K Pj4+IE9uIDIwMTjlubQwOeaciDE55pelIDE1OjE4LCBDaHJpc3RpYW4gS8O2bmlnIHdyb3RlOgo+ Pj4+IEFtIDE5LjA5LjIwMTggdW0gMDY6MjYgc2NocmllYiBDaHVubWluZyBaaG91Ogo+Pj4gW3Nu aXBdCj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqAgKmZlbmNlID0gTlVMTDsKPj4+Pj4gIMKgwqDC oMKgwqDCoMKgwqDCoCBkcm1fc3luY29ial9hZGRfY2FsbGJhY2tfbG9ja2VkKHN5bmNvYmosIGNi LCBmdW5jKTsgQEAKPj4+Pj4gLTE2NCw2ICsxNzcsMTUzIEBAIHZvaWQgZHJtX3N5bmNvYmpfcmVt b3ZlX2NhbGxiYWNrKHN0cnVjdAo+Pj4+PiBkcm1fc3luY29iaiAqc3luY29iaiwKPj4+Pj4gIMKg wqDCoMKgwqAgc3Bpbl91bmxvY2soJnN5bmNvYmotPmxvY2spOwo+Pj4+PiAgwqAgfQo+Pj4+PiAg wqAgK3N0YXRpYyB2b2lkIGRybV9zeW5jb2JqX3RpbWVsaW5lX2luaXQoc3RydWN0IGRybV9zeW5j b2JqCj4+Pj4+ICpzeW5jb2JqKQo+Pj4+IFdlIHN0aWxsIGhhdmUgX3RpbWVsaW5lXyBpbiB0aGUg bmFtZSBoZXJlLgo+Pj4gdGhlIGZ1bmMgaXMgcmVsZXZhbnQgdG8gdGltZWxpbmUgbWVtYmVycywg b3Igd2hpY2ggbmFtZSBpcyBwcm9wZXI/Cj4+IFllYWgsIGJ1dCB3ZSBub3cgdXNlIHRoZSB0aW1l bGluZSBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIGluZGl2aWR1YWwgc3luY29iago+PiBhcyB3ZWxs Lgo+Pgo+PiBOb3QgYSBiaWcgaXNzdWUsIGJ1dCBJIHdvdWxkIGp1c3QgbmFtZSBpdAo+PiBkcm1f c3luY29ial9pbml0KCkvZHJtX3N5bmNvYmpfZmluaS4KPiBUaGVyZSBpcyBhbHJlYWR5IGRybV9z eW5jb2JqX2luaXQvZmluaSBpbiBkcm1fc3luY2Jvai5jICwgYW55IG90aGVyIG5hbWUgY2FuIGJl IHN1Z2dlc3RlZD8KCkh1aSB3aGF0PyBJIGFjdHVhbGx5IGNoZWNrZWQgdGhhdCB0aGVyZSBpcyBu byAKZHJtX3N5bmNvYmpfaW5pdCgpL2RybV9zeW5jb2JqX2ZpbmkoKSBpbiBkcm1fc3luY29iai5j IGJlZm9yZSBzdWdnZXN0aW5nIAppdC4gQW0gSSBtaXNzaW5nIHNvbWV0aGluZz8KCj4+Pj4+ICt7 Cj4+Pj4+ICvCoMKgwqAgc3Bpbl9sb2NrKCZzeW5jb2JqLT5sb2NrKTsKPj4+Pj4gK8KgwqDCoCBz eW5jb2JqLT50aW1lbGluZV9jb250ZXh0ID0gZG1hX2ZlbmNlX2NvbnRleHRfYWxsb2MoMSk7Cj4+ PiBbc25pcF0KPj4+Pj4gK30KPj4+Pj4gKwo+Pj4+PiAraW50IGRybV9zeW5jb2JqX2xvb2t1cF9m ZW5jZShzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosIHU2NAo+Pj4+PiArcG9pbnQsCj4+Pj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkbWFfZmVuY2UgKipmZW5jZSkg ewo+Pj4+PiArCj4+Pj4+ICvCoMKgwqAgcmV0dXJuIGRybV9zeW5jb2JqX3NlYXJjaF9mZW5jZShz eW5jb2JqLCBwb2ludCwKPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIERSTV9TWU5DT0JKX1dBSVRfRkxBR1NfV0FJVF9GT1JfU1VCTUlULAo+Pj4+IEkgc3RpbGwg aGF2ZSBhIGJhZCBmZWVsaW5nIHNldHRpbmcgdGhhdCBmbGFnIGFzIGRlZmF1bHQgY2F1c2UgaXQK Pj4+PiBtaWdodCBjaGFuZ2UgdGhlIGJlaGF2aW9yIGZvciB0aGUgVUFQSS4KPj4+Pgo+Pj4+IE1h eWJlIGV4cG9ydCBkcm1fc3luY29ial9zZWFyY2hfZmVuY2UgZGlyZWN0bHk/IEUuZy4gd2l0aCB0 aGUgZmxhZ3MKPj4+PiBwYXJhbWV0ZXIuCj4+PiBwcmV2aW91cyB2NSBpbmRlZWQgZG8gdGhpcywg eW91IGxldCBtZSB3cmFwIGl0LCBuZWVkIGNoYW5nZSBiYWNrPwo+PiBObywgdGhlIHByb2JsZW0g aXMgdGhhdCBkcm1fc3luY29ial9maW5kX2ZlbmNlKCkgaXMgc3RpbGwgdXNpbmcKPj4gZHJtX3N5 bmNvYmpfbG9va3VwX2ZlbmNlKCkgd2hpY2ggc2V0cyB0aGUgZmxhZyBpbnN0ZWFkIG9mCj4+IGRy bV9zeW5jb2JqX3NlYXJjaF9mZW5jZSgpIHdpdGhvdXQgdGhlIGZsYWcuCj4+Cj4+IFRoYXQgY2hh bmdlcyB0aGUgVUFQSSBiZWhhdmlvciBiZWNhdXNlIHByZXZpb3VzbHkgd2Ugd291bGQgaGF2ZSBy ZXR1cm5lZAo+PiBhbiBlcnJvciBjb2RlIGFuZCBub3cgd2UgYmxvY2sgZm9yIGEgZmVuY2UgdG8g YXBwZWFyLgo+Pgo+PiBTbyBJIHRoaW5rIHRoZSByaWdodCBzb2x1dGlvbiB3b3VsZCBiZSB0byBh ZGQgdGhlIGZsYWdzIHBhcmFtZXRlciB0bwo+PiBkcm1fc3luY29ial9maW5kX2ZlbmNlKCkgYW5k IGxldCB0aGUgZHJpdmVyIGRlY2lkZSBpZiB3ZSBuZWVkIHRvIGJsb2NrIG9yCj4+IGdldCAtRU5P RU5ULgo+IEdvdCB5b3VyIG1lYW5zLAo+IEV4cG9ydGluZyBmbGFnIGluIGZ1bmMgaXMgZWFzeSwK PiAgIGJ1dCBkcml2ZXIgZG9lc24ndCBwYXNzIGZsYWcsIHdoaWNoIGZsYWcgaXMgcHJvcGVyIGJ5 IGRlZmF1bHQ/IFdlIHN0aWxsIG5lZWQgdG8gZ2l2ZSBhIGRlZmF1bHQgZmxhZyBpbiBwYXRjaCwg ZG9uJ3Qgd2U/CgpXZWxsIHByb3BlciBzb2x1dGlvbiBpcyB0byBrZWVwIHRoZSBvbGQgYmVoYXZp b3IgYXMgaXQgaXMgZm9yIG5vdy4KClNvIHBhc3NpbmcgMCBhcyBmbGFnIGJ5IGRlZmF1bHQgYW5k IG1ha2luZyBzdXJlIHdlIGdldCBhIC1FTk9FTlQgaW4gdGhhdCAKY2FzZSBzb3VuZHMgbGlrZSB0 aGUgcmlnaHQgYXBwcm9hY2ggdG8gbWUuCgpBZGRpbmcgdGhlIERSTV9TWU5DT0JKX1dBSVRfRkxB R1NfV0FJVF9GT1JfU1VCTUlUIGZsYWcgY2FuIGhhcHBlbiB3aGVuIAp0aGUgZHJpdmVyIHN0YXJ0 cyB0byBwcm92aWRlIGEgcHJvcGVyIHBvaW50IGFzIHdlbGwuCgpDaHJpc3RpYW4uCgo+Cj4gVGhh bmtzLAo+IERhdmlkIFpob3UKPgo+PiBSZWdhcmRzLAo+PiBDaHJpc3RpYW4uCj4+Cj4+PiBSZWdh cmRzLAo+Pj4gRGF2aWQgWmhvdQo+Pj4+IFJlZ2FyZHMsCj4+Pj4gQ2hyaXN0aWFuLgo+Pj4+Cj4+ Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmZW5jZSk7Cj4+Pj4+ ICt9Cj4+Pj4+ICtFWFBPUlRfU1lNQk9MKGRybV9zeW5jb2JqX2xvb2t1cF9mZW5jZSk7Cj4+Pj4+ ICsKPj4+Pj4gIMKgIC8qKgo+Pj4+PiAgwqDCoCAqIGRybV9zeW5jb2JqX2ZpbmRfZmVuY2UgLSBs b29rdXAgYW5kIHJlZmVyZW5jZSB0aGUgZmVuY2UgaW4gYQo+Pj4+PiBzeW5jIG9iamVjdAo+Pj4+ PiAgwqDCoCAqIEBmaWxlX3ByaXZhdGU6IGRybSBmaWxlIHByaXZhdGUgcG9pbnRlciBAQCAtMjI4 LDcgKzQ0Myw3IEBACj4+Pj4+IHN0YXRpYyBpbnQgZHJtX3N5bmNvYmpfYXNzaWduX251bGxfaGFu ZGxlKHN0cnVjdAo+Pj4+PiBkcm1fc3luY29iaiAqc3luY29iaikKPj4+Pj4gIMKgwqAgKiBAZmVu Y2U6IG91dCBwYXJhbWV0ZXIgZm9yIHRoZSBmZW5jZQo+Pj4+PiAgwqDCoCAqCj4+Pj4+ICDCoMKg ICogVGhpcyBpcyBqdXN0IGEgY29udmVuaWVuY2UgZnVuY3Rpb24gdGhhdCBjb21iaW5lcwo+Pj4+ PiBkcm1fc3luY29ial9maW5kKCkgYW5kCj4+Pj4+IC0gKiBkcm1fc3luY29ial9mZW5jZV9nZXQo KS4KPj4+Pj4gKyAqIGRybV9zeW5jb2JqX2xvb2t1cF9mZW5jZSgpLgo+Pj4+PiAgwqDCoCAqCj4+ Pj4+ICDCoMKgICogUmV0dXJucyAwIG9uIHN1Y2Nlc3Mgb3IgYSBuZWdhdGl2ZSBlcnJvciB2YWx1 ZSBvbiBmYWlsdXJlLiBPbgo+Pj4+PiBzdWNjZXNzIEBmZW5jZQo+Pj4+PiAgwqDCoCAqIGNvbnRh aW5zIGEgcmVmZXJlbmNlIHRvIHRoZSBmZW5jZSwgd2hpY2ggbXVzdCBiZSByZWxlYXNlZCBieQo+ Pj4+PiBjYWxsaW5nIEBAIC0yMzYsMTggKzQ1MSwxMSBAQCBzdGF0aWMgaW50Cj4+Pj4+IGRybV9z eW5jb2JqX2Fzc2lnbl9udWxsX2hhbmRsZShzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmopCj4+ Pj4+ICDCoMKgICovCj4+Pj4+ICDCoCBpbnQgZHJtX3N5bmNvYmpfZmluZF9mZW5jZShzdHJ1Y3Qg ZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSwKPj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHUzMiBoYW5kbGUsIHU2NCBwb2ludCwKPj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgc3RydWN0IGRtYV9mZW5jZSAqKmZlbmNlKSAtewo+Pj4+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZG1hX2ZlbmNlICoqZmVuY2UpIHsKPj4+Pj4gIMKgwqDC oMKgwqAgc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqID0gZHJtX3N5bmNvYmpfZmluZChmaWxl X3ByaXZhdGUsCj4+Pj4+IGhhbmRsZSk7Cj4+Pj4+IC3CoMKgwqAgaW50IHJldCA9IDA7Cj4+Pj4+ IC0KPj4+Pj4gLcKgwqDCoCBpZiAoIXN5bmNvYmopCj4+Pj4+IC3CoMKgwqDCoMKgwqDCoCByZXR1 cm4gLUVOT0VOVDsKPj4+Pj4gK8KgwqDCoCBpbnQgcmV0Owo+Pj4+PiAgwqAgLcKgwqDCoCAqZmVu Y2UgPSBkcm1fc3luY29ial9mZW5jZV9nZXQoc3luY29iaik7Cj4+Pj4+IC3CoMKgwqAgaWYgKCEq ZmVuY2UpIHsKPj4+Pj4gLcKgwqDCoMKgwqDCoMKgIHJldCA9IC1FSU5WQUw7Cj4+Pj4+IC3CoMKg wqAgfQo+Pj4+PiArwqDCoMKgIHJldCA9IGRybV9zeW5jb2JqX2xvb2t1cF9mZW5jZShzeW5jb2Jq LCBwb2ludCwgZmVuY2UpOwo+Pj4+PiAgwqDCoMKgwqDCoCBkcm1fc3luY29ial9wdXQoc3luY29i aik7Cj4+Pj4+ICDCoMKgwqDCoMKgIHJldHVybiByZXQ7Cj4+Pj4+ICDCoCB9Cj4+Pj4+IEBAIC0y NjQsNyArNDcyLDcgQEAgdm9pZCBkcm1fc3luY29ial9mcmVlKHN0cnVjdCBrcmVmICprcmVmKQo+ Pj4+PiAgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmogPSBjb250YWluZXJf b2Yoa3JlZiwKPj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkcm1fc3luY29iaiwKPj4+Pj4gIMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJlZmNvdW50KTsKPj4+ Pj4gLcKgwqDCoCBkcm1fc3luY29ial9yZXBsYWNlX2ZlbmNlKHN5bmNvYmosIDAsIE5VTEwpOwo+ Pj4+PiArwqDCoMKgIGRybV9zeW5jb2JqX3RpbWVsaW5lX2Zpbmkoc3luY29iaik7Cj4+Pj4+ICDC oMKgwqDCoMKgIGtmcmVlKHN5bmNvYmopOwo+Pj4+PiAgwqAgfQo+Pj4+PiAgwqAgRVhQT1JUX1NZ TUJPTChkcm1fc3luY29ial9mcmVlKTsKPj4+Pj4gQEAgLTI5NCw2ICs1MDIsMTEgQEAgaW50IGRy bV9zeW5jb2JqX2NyZWF0ZShzdHJ1Y3QgZHJtX3N5bmNvYmoKPj4+Pj4gKipvdXRfc3luY29iaiwg dWludDMyX3QgZmxhZ3MsCj4+Pj4+ICDCoMKgwqDCoMKgIGtyZWZfaW5pdCgmc3luY29iai0+cmVm Y291bnQpOwo+Pj4+PiAgwqDCoMKgwqDCoCBJTklUX0xJU1RfSEVBRCgmc3luY29iai0+Y2JfbGlz dCk7Cj4+Pj4+ICDCoMKgwqDCoMKgIHNwaW5fbG9ja19pbml0KCZzeW5jb2JqLT5sb2NrKTsKPj4+ Pj4gK8KgwqDCoCBpZiAoZmxhZ3MgJiBEUk1fU1lOQ09CSl9DUkVBVEVfVFlQRV9USU1FTElORSkK Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHN5bmNvYmotPnR5cGUgPSBEUk1fU1lOQ09CSl9UWVBFX1RJ TUVMSU5FOwo+Pj4+PiArwqDCoMKgIGVsc2UKPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHN5bmNvYmot PnR5cGUgPSBEUk1fU1lOQ09CSl9UWVBFX0lORElWSURVQUw7Cj4+Pj4+ICvCoMKgwqAgZHJtX3N5 bmNvYmpfdGltZWxpbmVfaW5pdChzeW5jb2JqKTsKPj4+Pj4gIMKgIMKgwqDCoMKgwqAgaWYgKGZs YWdzICYgRFJNX1NZTkNPQkpfQ1JFQVRFX1NJR05BTEVEKSB7Cj4+Pj4+ICDCoMKgwqDCoMKgwqDC oMKgwqAgcmV0ID0gZHJtX3N5bmNvYmpfYXNzaWduX251bGxfaGFuZGxlKHN5bmNvYmopOwo+Pj4+ PiBAQCAtNTc2LDcgKzc4OSw4IEBAIGRybV9zeW5jb2JqX2NyZWF0ZV9pb2N0bChzdHJ1Y3QgZHJt X2RldmljZQo+PiAqZGV2LAo+Pj4+PiB2b2lkICpkYXRhLAo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDC oMKgIHJldHVybiAtRU5PREVWOwo+Pj4+PiAgwqAgwqDCoMKgwqDCoCAvKiBubyB2YWxpZCBmbGFn cyB5ZXQgKi8KPj4+Pj4gLcKgwqDCoCBpZiAoYXJncy0+ZmxhZ3MgJiB+RFJNX1NZTkNPQkpfQ1JF QVRFX1NJR05BTEVEKQo+Pj4+PiArwqDCoMKgIGlmIChhcmdzLT5mbGFncyAmIH4oRFJNX1NZTkNP QkpfQ1JFQVRFX1NJR05BTEVEIHwKPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBEUk1fU1lOQ09CSl9DUkVBVEVfVFlQRV9USU1FTElORSkpCj4+Pj4+ICDCoMKgwqDCoMKgwqDC oMKgwqAgcmV0dXJuIC1FSU5WQUw7Cj4+Pj4+ICDCoCDCoMKgwqDCoMKgIHJldHVybiBkcm1fc3lu Y29ial9jcmVhdGVfYXNfaGFuZGxlKGZpbGVfcHJpdmF0ZSwKPj4+Pj4gQEAgLTY2OSw5ICs4ODMs OCBAQCBzdGF0aWMgdm9pZCBzeW5jb2JqX3dhaXRfc3luY29ial9mdW5jKHN0cnVjdAo+Pj4+PiBk cm1fc3luY29iaiAqc3luY29iaiwKPj4+Pj4gIMKgwqDCoMKgwqAgc3RydWN0IHN5bmNvYmpfd2Fp dF9lbnRyeSAqd2FpdCA9Cj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqAgY29udGFpbmVyX29mKGNi LCBzdHJ1Y3Qgc3luY29ial93YWl0X2VudHJ5LCBzeW5jb2JqX2NiKTsKPj4+Pj4gIMKgIC3CoMKg wqAgLyogVGhpcyBoYXBwZW5zIGluc2lkZSB0aGUgc3luY29iaiBsb2NrICovCj4+Pj4+IC3CoMKg wqAgd2FpdC0+ZmVuY2UgPQo+Pj4+PiBkbWFfZmVuY2VfZ2V0KHJjdV9kZXJlZmVyZW5jZV9wcm90 ZWN0ZWQoc3luY29iai0+ZmVuY2UsCj4+Pj4+IC0gbG9ja2RlcF9pc19oZWxkKCZzeW5jb2JqLT5s b2NrKSkpOwo+Pj4+PiArwqDCoMKgIGRybV9zeW5jb2JqX3NlYXJjaF9mZW5jZShzeW5jb2JqLCAw LCAwLCAmd2FpdC0+ZmVuY2UpOwo+Pj4+PiArCj4+Pj4+ICDCoMKgwqDCoMKgIHdha2VfdXBfcHJv Y2Vzcyh3YWl0LT50YXNrKTsKPj4+Pj4gIMKgIH0KPj4+Pj4gIMKgIEBAIC02OTgsNyArOTExLDgg QEAgc3RhdGljIHNpZ25lZCBsb25nCj4+Pj4+IGRybV9zeW5jb2JqX2FycmF5X3dhaXRfdGltZW91 dChzdHJ1Y3QgZHJtX3N5bmNvYmogKipzeW5jb2JqcywKPj4+Pj4gIMKgwqDCoMKgwqAgc2lnbmFs ZWRfY291bnQgPSAwOwo+Pj4+PiAgwqDCoMKgwqDCoCBmb3IgKGkgPSAwOyBpIDwgY291bnQ7ICsr aSkgewo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgIGVudHJpZXNbaV0udGFzayA9IGN1cnJlbnQ7 Cj4+Pj4+IC3CoMKgwqDCoMKgwqDCoCBlbnRyaWVzW2ldLmZlbmNlID0gZHJtX3N5bmNvYmpfZmVu Y2VfZ2V0KHN5bmNvYmpzW2ldKTsKPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldCA9IGRybV9zeW5j b2JqX3NlYXJjaF9mZW5jZShzeW5jb2Jqc1tpXSwgMCwgMCwKPj4+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJmVudHJpZXNbaV0uZmVuY2Up Owo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICghZW50cmllc1tpXS5mZW5jZSkgewo+Pj4+ PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGZsYWdzICYgRFJNX1NZTkNPQkpfV0FJ VF9GTEFHU19XQUlUX0ZPUl9TVUJNSVQpIHsKPj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgY29udGludWU7Cj4+Pj4+IEBAIC05NzAsMTIgKzExODQsMTkgQEAgZHJtX3N5 bmNvYmpfcmVzZXRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UKPj4+Pj4gKmRldiwgdm9pZCAqZGF0 YSwKPj4+Pj4gIMKgwqDCoMKgwqAgaWYgKHJldCA8IDApCj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKg wqAgcmV0dXJuIHJldDsKPj4+Pj4gIMKgIC3CoMKgwqAgZm9yIChpID0gMDsgaSA8IGFyZ3MtPmNv dW50X2hhbmRsZXM7IGkrKykKPj4+Pj4gLcKgwqDCoMKgwqDCoMKgIGRybV9zeW5jb2JqX3JlcGxh Y2VfZmVuY2Uoc3luY29ianNbaV0sIDAsIE5VTEwpOwo+Pj4+PiAtCj4+Pj4+ICvCoMKgwqAgZm9y IChpID0gMDsgaSA8IGFyZ3MtPmNvdW50X2hhbmRsZXM7IGkrKykgewo+Pj4+PiArwqDCoMKgwqDC oMKgwqAgaWYgKHN5bmNvYmpzW2ldLT50eXBlID09IERSTV9TWU5DT0JKX1RZUEVfVElNRUxJTkUp IHsKPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRFJNX0VSUk9SKCJ0aW1lbGluZSBzeW5j b2JqIGNhbm5vdCByZXNldCFcbiIpOwo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXQg PSAtRUlOVkFMOwo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIG91dDsKPj4+Pj4g K8KgwqDCoMKgwqDCoMKgIH0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGRybV9zeW5jb2JqX3RpbWVs aW5lX2Zpbmkoc3luY29ianNbaV0pOwo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgZHJtX3N5bmNvYmpf dGltZWxpbmVfaW5pdChzeW5jb2Jqc1tpXSk7Cj4+Pj4+ICvCoMKgwqAgfQo+Pj4+PiArb3V0Ogo+ Pj4+PiAgwqDCoMKgwqDCoCBkcm1fc3luY29ial9hcnJheV9mcmVlKHN5bmNvYmpzLCBhcmdzLT5j b3VudF9oYW5kbGVzKTsKPj4+Pj4gIMKgIC3CoMKgwqAgcmV0dXJuIDA7Cj4+Pj4+ICvCoMKgwqAg cmV0dXJuIHJldDsKPj4+Pj4gIMKgIH0KPj4+Pj4gIMKgIMKgIGludAo+Pj4+PiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4+Pj4+IGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4+Pj4+IGluZGV4IDBhOGQy ZDY0ZjM4MC4uYTA0MGZhMzI4MWRmIDEwMDY0NAo+Pj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKPj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4+Pj4+IEBAIC0yMTM3LDcgKzIxMzcsNyBAQCBhd2Fp dF9mZW5jZV9hcnJheShzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyICplYiwKPj4+Pj4gIMKgwqDCoMKg wqDCoMKgwqDCoCBpZiAoIShmbGFncyAmIEk5MTVfRVhFQ19GRU5DRV9XQUlUKSkKPj4+Pj4gIMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnRpbnVlOwo+Pj4+PiAgwqAgLcKgwqDCoMKgwqDC oMKgIGZlbmNlID0gZHJtX3N5bmNvYmpfZmVuY2VfZ2V0KHN5bmNvYmopOwo+Pj4+PiArwqDCoMKg wqDCoMKgwqAgZHJtX3N5bmNvYmpfbG9va3VwX2ZlbmNlKHN5bmNvYmosIDAsICZmZW5jZSk7Cj4+ Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKCFmZW5jZSkKPj4+Pj4gIMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHJldHVybiAtRUlOVkFMOwo+Pj4+PiAgwqAgZGlmZiAtLWdpdCBhL2luY2x1 ZGUvZHJtL2RybV9zeW5jb2JqLmggYi9pbmNsdWRlL2RybS9kcm1fc3luY29iai5oCj4+Pj4+IGlu ZGV4IDQyNTQzMmI4NWE4Ny4uNmRhYzQ3OWZlZGZlIDEwMDY0NAo+Pj4+PiAtLS0gYS9pbmNsdWRl L2RybS9kcm1fc3luY29iai5oCj4+Pj4+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9zeW5jb2JqLmgK Pj4+Pj4gQEAgLTMwLDYgKzMwLDExIEBACj4+Pj4+ICDCoCDCoCBzdHJ1Y3QgZHJtX3N5bmNvYmpf Y2I7Cj4+Pj4+ICDCoCArZW51bSBkcm1fc3luY29ial90eXBlIHsKPj4+Pj4gK8KgwqDCoCBEUk1f U1lOQ09CSl9UWVBFX0lORElWSURVQUwsCj4+Pj4+ICvCoMKgwqAgRFJNX1NZTkNPQkpfVFlQRV9U SU1FTElORQo+Pj4+PiArfTsKPj4+Pj4gKwo+Pj4+PiAgwqAgLyoqCj4+Pj4+ICDCoMKgICogc3Ry dWN0IGRybV9zeW5jb2JqIC0gc3luYyBvYmplY3QuCj4+Pj4+ICDCoMKgICoKPj4+Pj4gQEAgLTQx LDE5ICs0NiwzNiBAQCBzdHJ1Y3QgZHJtX3N5bmNvYmogewo+Pj4+PiAgwqDCoMKgwqDCoMKgICov Cj4+Pj4+ICDCoMKgwqDCoMKgIHN0cnVjdCBrcmVmIHJlZmNvdW50Owo+Pj4+PiAgwqDCoMKgwqDC oCAvKioKPj4+Pj4gLcKgwqDCoMKgICogQGZlbmNlOgo+Pj4+PiAtwqDCoMKgwqAgKiBOVUxMIG9y IGEgcG9pbnRlciB0byB0aGUgZmVuY2UgYm91bmQgdG8gdGhpcyBvYmplY3QuCj4+Pj4+IC3CoMKg wqDCoCAqCj4+Pj4+IC3CoMKgwqDCoCAqIFRoaXMgZmllbGQgc2hvdWxkIG5vdCBiZSB1c2VkIGRp cmVjdGx5LiBVc2UKPj4+Pj4gZHJtX3N5bmNvYmpfZmVuY2VfZ2V0KCkKPj4+Pj4gLcKgwqDCoMKg ICogYW5kIGRybV9zeW5jb2JqX3JlcGxhY2VfZmVuY2UoKSBpbnN0ZWFkLgo+Pj4+PiArwqDCoMKg wqAgKiBAdHlwZTogaW5kaWNhdGUgc3luY29iaiB0eXBlCj4+Pj4+ICvCoMKgwqDCoCAqLwo+Pj4+ PiArwqDCoMKgIGVudW0gZHJtX3N5bmNvYmpfdHlwZSB0eXBlOwo+Pj4+PiArwqDCoMKgIC8qKgo+ Pj4+PiArwqDCoMKgwqAgKiBAd3E6IHdhaXQgc2lnbmFsIG9wZXJhdGlvbiB3b3JrIHF1ZXVlCj4+ Pj4+ICvCoMKgwqDCoCAqLwo+Pj4+PiArwqDCoMKgIHdhaXRfcXVldWVfaGVhZF90wqDCoMKgIHdx Owo+Pj4+PiArwqDCoMKgIC8qKgo+Pj4+PiArwqDCoMKgwqAgKiBAdGltZWxpbmVfY29udGV4dDog ZmVuY2UgY29udGV4dCB1c2VkIGJ5IHRpbWVsaW5lCj4+Pj4+ICDCoMKgwqDCoMKgwqAgKi8KPj4+ Pj4gLcKgwqDCoCBzdHJ1Y3QgZG1hX2ZlbmNlIF9fcmN1ICpmZW5jZTsKPj4+Pj4gK8KgwqDCoCB1 NjQgdGltZWxpbmVfY29udGV4dDsKPj4+Pj4gIMKgwqDCoMKgwqAgLyoqCj4+Pj4+IC3CoMKgwqDC oCAqIEBjYl9saXN0OiBMaXN0IG9mIGNhbGxiYWNrcyB0byBjYWxsIHdoZW4gdGhlICZmZW5jZSBn ZXRzCj4+Pj4+IHJlcGxhY2VkLgo+Pj4+PiArwqDCoMKgwqAgKiBAdGltZWxpbmU6IHN5bmNvYmog dGltZWxpbmUgdmFsdWUsIHdoaWNoIGluZGljYXRlcyBwb2ludCBpcwo+Pj4+PiBzaWduYWxlZC4K Pj4+Pj4gIMKgwqDCoMKgwqDCoCAqLwo+Pj4+PiArwqDCoMKgIHU2NCB0aW1lbGluZTsKPj4+Pj4g K8KgwqDCoCAvKioKPj4+Pj4gK8KgwqDCoMKgICogQHNpZ25hbF9wb2ludDogd2hpY2ggaW5kaWNh dGVzIHRoZSBsYXRlc3Qgc2lnbmFsZXIgcG9pbnQuCj4+Pj4+ICvCoMKgwqDCoCAqLwo+Pj4+PiAr wqDCoMKgIHU2NCBzaWduYWxfcG9pbnQ7Cj4+Pj4+ICvCoMKgwqAgLyoqCj4+Pj4+ICvCoMKgwqDC oCAqIEBzaWduYWxfcHRfbGlzdDogc2lnbmFsZXIgcG9pbnQgbGlzdC4KPj4+Pj4gK8KgwqDCoMKg ICovCj4+Pj4+ICvCoMKgwqAgc3RydWN0IGxpc3RfaGVhZCBzaWduYWxfcHRfbGlzdDsKPj4+Pj4g Kwo+Pj4+PiArwqDCoMKgIC8qKgo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoCAqIEBjYl9saXN0OiBM aXN0IG9mIGNhbGxiYWNrcyB0byBjYWxsIHdoZW4gdGhlICZmZW5jZSBnZXRzCj4+Pj4+IHJlcGxh Y2VkLgo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoCAqLwo+Pj4+PiAgwqDCoMKgwqDCoCBzdHJ1Y3Qg bGlzdF9oZWFkIGNiX2xpc3Q7Cj4+Pj4+ICDCoMKgwqDCoMKgIC8qKgo+Pj4+PiAtwqDCoMKgwqAg KiBAbG9jazogUHJvdGVjdHMgJmNiX2xpc3QgYW5kIHdyaXRlLWxvY2tzICZmZW5jZS4KPj4+Pj4g K8KgwqDCoMKgICogQGxvY2s6IFByb3RlY3RzIHN5bmNvYmogbGlzdCBhbmQgd3JpdGUtbG9ja3Mg JmZlbmNlLgo+Pj4+PiAgwqDCoMKgwqDCoMKgICovCj4+Pj4+ICDCoMKgwqDCoMKgIHNwaW5sb2Nr X3QgbG9jazsKPj4+Pj4gIMKgwqDCoMKgwqAgLyoqCj4+Pj4+IEBAIC02OCw3ICs5MCw3IEBAIHR5 cGVkZWYgdm9pZCAoKmRybV9zeW5jb2JqX2Z1bmNfdCkoc3RydWN0Cj4+Pj4+IGRybV9zeW5jb2Jq ICpzeW5jb2JqLAo+Pj4+PiAgwqAgLyoqCj4+Pj4+ICDCoMKgICogc3RydWN0IGRybV9zeW5jb2Jq X2NiIC0gY2FsbGJhY2sgZm9yIGRybV9zeW5jb2JqX2FkZF9jYWxsYmFjawo+Pj4+PiAgwqDCoCAq IEBub2RlOiB1c2VkIGJ5IGRybV9zeW5jb2JfYWRkX2NhbGxiYWNrIHRvIGFwcGVuZCB0aGlzIHN0 cnVjdCB0bwo+Pj4+PiAtICrCoMKgwqDCoMKgICZkcm1fc3luY29iai5jYl9saXN0Cj4+Pj4+ICsg KsKgwqDCoMKgwqDCoCAmZHJtX3N5bmNvYmouY2JfbGlzdAo+Pj4+PiAgwqDCoCAqIEBmdW5jOiBk cm1fc3luY29ial9mdW5jX3QgdG8gY2FsbAo+Pj4+PiAgwqDCoCAqCj4+Pj4+ICDCoMKgICogVGhp cyBzdHJ1Y3Qgd2lsbCBiZSBpbml0aWFsaXplZCBieSBkcm1fc3luY29ial9hZGRfY2FsbGJhY2ss Cj4+Pj4+IGFkZGl0aW9uYWwgQEAgLTEwNiwyOSArMTI4LDYgQEAgZHJtX3N5bmNvYmpfcHV0KHN0 cnVjdCBkcm1fc3luY29iago+Pj4+PiAqb2JqKQo+Pj4+PiAgwqDCoMKgwqDCoCBrcmVmX3B1dCgm b2JqLT5yZWZjb3VudCwgZHJtX3N5bmNvYmpfZnJlZSk7Cj4+Pj4+ICDCoCB9Cj4+Pj4+ICDCoCAt LyoqCj4+Pj4+IC0gKiBkcm1fc3luY29ial9mZW5jZV9nZXQgLSBnZXQgYSByZWZlcmVuY2UgdG8g YSBmZW5jZSBpbiBhIHN5bmMKPj4+Pj4gb2JqZWN0Cj4+Pj4+IC0gKiBAc3luY29iajogc3luYyBv YmplY3QuCj4+Pj4+IC0gKgo+Pj4+PiAtICogVGhpcyBhY3F1aXJlcyBhZGRpdGlvbmFsIHJlZmVy ZW5jZSB0byAmZHJtX3N5bmNvYmouZmVuY2UKPj4+Pj4gY29udGFpbmVkIGluIEBvYmosCj4+Pj4+ IC0gKiBpZiBub3QgTlVMTC4gSXQgaXMgaWxsZWdhbCB0byBjYWxsIHRoaXMgd2l0aG91dCBhbHJl YWR5IGhvbGRpbmcKPj4+Pj4gYSByZWZlcmVuY2UuCj4+Pj4+IC0gKiBObyBsb2NrcyByZXF1aXJl ZC4KPj4+Pj4gLSAqCj4+Pj4+IC0gKiBSZXR1cm5zOgo+Pj4+PiAtICogRWl0aGVyIHRoZSBmZW5j ZSBvZiBAb2JqIG9yIE5VTEwgaWYgdGhlcmUncyBub25lLgo+Pj4+PiAtICovCj4+Pj4+IC1zdGF0 aWMgaW5saW5lIHN0cnVjdCBkbWFfZmVuY2UgKgo+Pj4+PiAtZHJtX3N5bmNvYmpfZmVuY2VfZ2V0 KHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaikgLXsKPj4+Pj4gLcKgwqDCoCBzdHJ1Y3QgZG1h X2ZlbmNlICpmZW5jZTsKPj4+Pj4gLQo+Pj4+PiAtwqDCoMKgIHJjdV9yZWFkX2xvY2soKTsKPj4+ Pj4gLcKgwqDCoCBmZW5jZSA9IGRtYV9mZW5jZV9nZXRfcmN1X3NhZmUoJnN5bmNvYmotPmZlbmNl KTsKPj4+Pj4gLcKgwqDCoCByY3VfcmVhZF91bmxvY2soKTsKPj4+Pj4gLQo+Pj4+PiAtwqDCoMKg IHJldHVybiBmZW5jZTsKPj4+Pj4gLX0KPj4+Pj4gLQo+Pj4+PiAgwqAgc3RydWN0IGRybV9zeW5j b2JqICpkcm1fc3luY29ial9maW5kKHN0cnVjdCBkcm1fZmlsZQo+Pj4+PiAqZmlsZV9wcml2YXRl LAo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMy IGhhbmRsZSk7Cj4+Pj4+ICDCoCB2b2lkIGRybV9zeW5jb2JqX3JlcGxhY2VfZmVuY2Uoc3RydWN0 IGRybV9zeW5jb2JqICpzeW5jb2JqLCB1NjQKPj4+Pj4gcG9pbnQsIEBAIC0xNDIsNSArMTQxLDcg QEAgaW50IGRybV9zeW5jb2JqX2NyZWF0ZShzdHJ1Y3QKPj4gZHJtX3N5bmNvYmoKPj4+Pj4gKipv dXRfc3luY29iaiwgdWludDMyX3QgZmxhZ3MsCj4+Pj4+ICDCoCBpbnQgZHJtX3N5bmNvYmpfZ2V0 X2hhbmRsZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSwKPj4+Pj4gIMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwgdTMyICpo YW5kbGUpOwo+Pj4+PiAgwqAgaW50IGRybV9zeW5jb2JqX2dldF9mZChzdHJ1Y3QgZHJtX3N5bmNv YmogKnN5bmNvYmosIGludCAqcF9mZCk7Cj4+Pj4+ICtpbnQgZHJtX3N5bmNvYmpfbG9va3VwX2Zl bmNlKHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwgdTY0Cj4+Pj4+ICtwb2ludCwKPj4+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkbWFfZmVuY2UgKipmZW5j ZSk7Cj4+Pj4+ICDCoCDCoCAjZW5kaWYKPj4+Pj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9k cm0vZHJtLmggYi9pbmNsdWRlL3VhcGkvZHJtL2RybS5oIGluZGV4Cj4+Pj4+IDMwMGYzMzY2MzNm Mi4uY2ViZGIyNTQxZWI3IDEwMDY0NAo+Pj4+PiAtLS0gYS9pbmNsdWRlL3VhcGkvZHJtL2RybS5o Cj4+Pj4+ICsrKyBiL2luY2x1ZGUvdWFwaS9kcm0vZHJtLmgKPj4+Pj4gQEAgLTcxNyw2ICs3MTcs NyBAQCBzdHJ1Y3QgZHJtX3ByaW1lX2hhbmRsZSB7Cj4+Pj4+ICDCoCBzdHJ1Y3QgZHJtX3N5bmNv YmpfY3JlYXRlIHsKPj4+Pj4gIMKgwqDCoMKgwqAgX191MzIgaGFuZGxlOwo+Pj4+PiAgwqAgI2Rl ZmluZSBEUk1fU1lOQ09CSl9DUkVBVEVfU0lHTkFMRUQgKDEgPDwgMCkKPj4+Pj4gKyNkZWZpbmUg RFJNX1NZTkNPQkpfQ1JFQVRFX1RZUEVfVElNRUxJTkUgKDEgPDwgMSkKPj4+Pj4gIMKgwqDCoMKg wqAgX191MzIgZmxhZ3M7Cj4+Pj4+ICDCoCB9Owo+PiBfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwo+PiBhbWQtZ2Z4IG1haWxpbmcgbGlzdAo+PiBhbWQtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2FtZC1nZngKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v YW1kLWdmeAo=