From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gustavo Padovan Subject: Re: [RFC 1/7] drm/atomic: initial support for asynchronous plane update Date: Fri, 21 Apr 2017 15:41:10 -0300 Message-ID: <20170421184110.GC15339@joana> References: <20170410002448.12460-1-gustavo@padovan.org> <20170410002448.12460-2-gustavo@padovan.org> <87mvboujey.fsf@eliezer.anholt.net> <20170411202339.46uso62ptbc24w6z@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qk0-f195.google.com (mail-qk0-f195.google.com [209.85.220.195]) by gabe.freedesktop.org (Postfix) with ESMTPS id 924E16E70F for ; Fri, 21 Apr 2017 18:41:14 +0000 (UTC) Received: by mail-qk0-f195.google.com with SMTP id o85so2230609qkh.0 for ; Fri, 21 Apr 2017 11:41:14 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20170411202339.46uso62ptbc24w6z@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter Cc: Daniel Vetter , dri-devel@lists.freedesktop.org, Gustavo Padovan List-Id: dri-devel@lists.freedesktop.org MjAxNy0wNC0xMSBEYW5pZWwgVmV0dGVyIDxkYW5pZWxAZmZ3bGwuY2g+OgoKPiBPbiBNb24sIEFw ciAxMCwgMjAxNyBhdCAxMjo1NTozM1BNIC0wNzAwLCBFcmljIEFuaG9sdCB3cm90ZToKPiA+IEd1 c3Rhdm8gUGFkb3ZhbiA8Z3VzdGF2b0BwYWRvdmFuLm9yZz4gd3JpdGVzOgo+ID4gCj4gPiA+IEZy b206IEd1c3Rhdm8gUGFkb3ZhbiA8Z3VzdGF2by5wYWRvdmFuQGNvbGxhYm9yYS5jb20+Cj4gPiA+ Cj4gPiA+IEluIHNvbWUgY2FzZXMsIGxpa2UgY3Vyc29yIHVwZGF0ZXMsIGl0IGlzIGludGVyZXN0 aW5nIHRvIHVwZGF0ZSB0aGUKPiA+ID4gcGxhbmUgaW4gYW4gYXN5bmNocm9ub3VzIGZhc2hpb24g dG8gYXZvaWQgYmlnIGRlbGF5cy4KPiA+ID4KPiA+ID4gVGhlIGN1cnJlbnQgcXVldWVkIHVwZGF0 ZSBjb3VsZCBiZSBzdGlsbCB3YWl0aW5nIGZvciBhIGZlbmNlIHRvIHNpZ25hbCBhbmQKPiA+ID4g dGh1cyBibG9jayBhbmQgc3Vic2VxdWVudCB1cGRhdGUgdW50aWwgaXRzIHNjYW4gb3V0LiBJbiBj YXNlcyBsaWtlIHRoaXMgaWYKPiA+ID4gd2UgdXBkYXRlIHRoZSBjdXJzb3Igc3luY2hyb25vdXNs eSBpdCB3aWxsIGNhdXNlIHNpZ25pZmljYW50IGRlbGF5cyBvbgo+ID4gPiBzb21lIHBsYXRmb3Jt cyB0aGF0IHdvdWxkIGJlIG5vdGljZWQgYnkgdGhlIGZpbmFsIHVzZXIuCj4gPiA+Cj4gPiA+IFRo aXMgcGF0Y2ggY3JlYXRlcyBhIGZhc3QgcGF0aCB0byBqdW1wIGFoZWFkIHRoZSBjdXJyZW50IHF1 ZXVlZCBzdGF0ZSBhbmQKPiA+ID4gZG8gc2luZ2xlIHBsYW5lcyB1cGRhdGVzIHdpdGhvdXQgZ29p bmcgdGhyb3VnaCBhbGwgYXRvbWljIHN0ZXAgaW4KPiA+ID4gZHJtX2F0b21pY19oZWxwZXJfY29t bWl0KCkuCj4gPiA+Cj4gPiA+IEZvciBub3cgb25seSBzaW5nbGUgcGxhbmUgdXBkYXRlcyBhcmUg c3VwcG9ydGVkIGFuZCBvbmx5IGlmIHRoZXJlIGlzIG5vCj4gPiA+IHVwZGF0ZSB0byB0aGF0IHBs YW5lIGluIHRoZSBxdWV1ZWQgc3RhdGUuCj4gPiA+Cj4gPiA+IFdlIHBsYW4gdG8gc3VwcG9ydCBh c3luYyBQYWdlRmxpcHMgdGhyb3VnaCB0aGlzIGludGVyZmFjZSBhcyB3ZWxsIGluIHRoZQo+ID4g PiBuZWFyIGZ1dHVyZS4KPiA+IAo+ID4gVGhpcyBsb29rcyByZWFsbHkgbmljZSAtLSB0aGUgdmM0 IGNvZGUgZm9yIGN1cnNvcnMgd2FzIHJlYWxseSBncm9zcyB0bwo+ID4gd3JpdGUsIGFuZCBJIGdv dCBpdCB3cm9uZyBhIGNvdXBsZSBvZiB0aW1lcy4gIENvdXBsZSBvZiBjb21tZW50cyBpbmxpbmUu Cj4gCj4gU29tZSBtb3JlIGNvbW1lbnRzIGJlbG93Lgo+IC1EYW5pZWwKPiAKPiA+IAo+ID4gPiAt LS0KPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMgICAgICAgICAgICAgfCA3NSAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2Ry bV9hdG9taWNfaGVscGVyLmMgICAgICB8IDQxICsrKysrKysrKysrKysrKysrCj4gPiA+ICBpbmNs dWRlL2RybS9kcm1fYXRvbWljLmggICAgICAgICAgICAgICAgIHwgIDQgKysKPiA+ID4gIGluY2x1 ZGUvZHJtL2RybV9hdG9taWNfaGVscGVyLmggICAgICAgICAgfCAgMiArCj4gPiA+ICBpbmNsdWRl L2RybS9kcm1fbW9kZXNldF9oZWxwZXJfdnRhYmxlcy5oIHwgNDcgKysrKysrKysrKysrKysrKysr KysKPiA+ID4gIDUgZmlsZXMgY2hhbmdlZCwgMTY5IGluc2VydGlvbnMoKykKPiA+ID4KPiA+ID4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMgYi9kcml2ZXJzL2dwdS9k cm0vZHJtX2F0b21pYy5jCj4gPiA+IGluZGV4IGYzMjUwNmEuLmNhZTAxMjIgMTAwNjQ0Cj4gPiA+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKPiA+ID4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2RybV9hdG9taWMuYwo+ID4gPiBAQCAtNjMxLDYgKzYzMSw3OSBAQCBzdGF0aWMgaW50 IGRybV9hdG9taWNfY3J0Y19jaGVjayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gPiA+ICAJcmV0 dXJuIDA7Cj4gPiA+ICB9Cj4gPiA+ICAKPiA+ID4gK3N0YXRpYyBib29sIGRybV9hdG9taWNfYXN5 bmNfY2hlY2soc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ID4gPiArewo+ID4gPiAr CXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPiA+ID4gKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNy dGNfc3RhdGU7Cj4gPiA+ICsJc3RydWN0IGRybV9jcnRjX2NvbW1pdCAqY29tbWl0Owo+ID4gPiAr CXN0cnVjdCBkcm1fcGxhbmUgKl9fcGxhbmUsICpwbGFuZSA9IE5VTEw7Cj4gPiA+ICsJc3RydWN0 IGRybV9wbGFuZV9zdGF0ZSAqX19wbGFuZV9zdGF0ZSwgKnBsYW5lX3N0YXRlID0gTlVMTDsKPiA+ ID4gKwljb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2hlbHBlcl9mdW5jcyAqZnVuY3M7Cj4gPiA+ICsJ aW50IGksIG5fcGxhbmVzID0gMDsKPiA+ID4gKwo+ID4gPiArCWZvcl9lYWNoX25ld19jcnRjX2lu X3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7Cj4gPiA+ICsJCWlmIChkcm1fYXRv bWljX2NydGNfbmVlZHNfbW9kZXNldChjcnRjX3N0YXRlKSkKPiA+ID4gKwkJCXJldHVybiBmYWxz ZTsKPiA+ID4gKwl9Cj4gPiA+ICsKPiA+ID4gKwlmb3JfZWFjaF9uZXdfcGxhbmVfaW5fc3RhdGUo c3RhdGUsIF9fcGxhbmUsIF9fcGxhbmVfc3RhdGUsIGkpIHsKPiA+ID4gKwkJbl9wbGFuZXMrKzsK PiA+ID4gKwkJcGxhbmUgPSBfX3BsYW5lOwo+ID4gPiArCQlwbGFuZV9zdGF0ZSA9IF9fcGxhbmVf c3RhdGU7Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJaWYgKCFwbGFuZSB8fCBuX3BsYW5lcyAh PSAxKQo+ID4gPiArCQlyZXR1cm4gZmFsc2U7Cj4gPiA+ICsKPiA+ID4gKwlpZiAoIXBsYW5lLT5z dGF0ZS0+Y3J0YykKPiA+ID4gKwkJcmV0dXJuIGZhbHNlOwo+ID4gPiArCj4gPiA+ICsJaWYgKHBs YW5lX3N0YXRlLT5mZW5jZSkKPiA+ID4gKwkJcmV0dXJuIGZhbHNlOwo+ID4gPiArCj4gPiA+ICsJ Zm9yX2VhY2hfbmV3X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsK PiA+ID4gKwkJaWYgKHBsYW5lLT5jcnRjICE9IGNydGMpCj4gPiA+ICsJCQljb250aW51ZTsKPiA+ ID4gKwo+ID4gPiArCQlzcGluX2xvY2soJmNydGMtPmNvbW1pdF9sb2NrKTsKPiA+ID4gKwkJY29t bWl0ID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKCZjcnRjLT5jb21taXRfbGlzdCwKPiA+ID4g KwkJCQkJCSAgc3RydWN0IGRybV9jcnRjX2NvbW1pdCwKPiA+ID4gKwkJCQkJCSAgY29tbWl0X2Vu dHJ5KTsKPiA+ID4gKwkJaWYgKCFjb21taXQpIHsKPiA+ID4gKwkJCXNwaW5fdW5sb2NrKCZjcnRj LT5jb21taXRfbG9jayk7Cj4gPiA+ICsJCQljb250aW51ZTsKPiA+ID4gKwkJfQo+ID4gPiArCQlz cGluX3VubG9jaygmY3J0Yy0+Y29tbWl0X2xvY2spOwo+ID4gPiArCj4gPiA+ICsJCWZvcl9lYWNo X3BsYW5lX2luX3N0YXRlKGNydGNfc3RhdGUtPnN0YXRlLCBfX3BsYW5lLAo+ID4gPiArCQkJCQlf X3BsYW5lX3N0YXRlLCBpKSB7Cj4gPiA+ICsJCQlpZiAoX19wbGFuZSA9PSBwbGFuZSkgewo+ID4g PiArCQkJCXJldHVybiBmYWxzZTsKPiA+ID4gKwkJCX0KPiA+ID4gKwkJfQo+ID4gPiArCX0KPiA+ ID4gKwo+ID4gPiArCS8qIE5vdCBjb25maWd1cmluZyBuZXcgc2NhbGluZyBpbiB0aGUgYXN5bmMg cGF0aC4gKi8KPiA+IAo+ID4gcy9Ob3QvTm8vCj4gPiAKPiA+ID4gKwlpZiAocGxhbmUtPnN0YXRl LT5jcnRjX3cgIT0gcGxhbmVfc3RhdGUtPmNydGNfdyB8fAo+ID4gPiArCSAgICBwbGFuZS0+c3Rh dGUtPmNydGNfaCAhPSBwbGFuZV9zdGF0ZS0+Y3J0Y19oIHx8Cj4gPiA+ICsJICAgIHBsYW5lLT5z dGF0ZS0+c3JjX3cgIT0gcGxhbmVfc3RhdGUtPnNyY193IHx8Cj4gPiA+ICsJICAgIHBsYW5lLT5z dGF0ZS0+c3JjX2ggIT0gcGxhbmVfc3RhdGUtPnNyY19oKSB7Cj4gPiA+ICsJCXJldHVybiBmYWxz ZTsKPiA+ID4gKwl9Cj4gPiA+ICsKPiA+ID4gKwlmdW5jcyA9IHBsYW5lLT5oZWxwZXJfcHJpdmF0 ZTsKPiA+ID4gKwo+ID4gPiArCWlmICghZnVuY3MtPmF0b21pY19hc3luY191cGRhdGUpCj4gPiA+ ICsJCXJldHVybiBmYWxzZTsKPiAKPiBJIGtpbmRhIGZlZWwgbGlrZSB3ZSBzaG91bGQgY2hlY2sg dGhpcyBmaXJzdCwgdG8gYmFpbCBvdXQgZm9yIGFsbCB0aGUKPiBkcml2ZXJzIHRoYXQgZG9uJ3Qg aW1wbGVtZW50IHRoaXMgYmVmb3JlIGFueSBvZiB0aGUgbW9yZSBleHBlbnNpdmUgY2hlY2tzLgo+ ID4gPiArCj4gPiA+ICsJaWYgKGZ1bmNzLT5hdG9taWNfYXN5bmNfY2hlY2spIHsKPiAKPiBUaGlz IGlzIHJlZHVuZGFudC4KPiAKPiA+ID4gKwkJaWYgKGZ1bmNzLT5hdG9taWNfYXN5bmNfY2hlY2so cGxhbmUsIHBsYW5lX3N0YXRlKSA8IDApCj4gPiA+ICsJCQlyZXR1cm4gZmFsc2U7Cj4gCj4gT2Yg Y291cnNlIHRoZSBjYWxsYmFjayBzaG91bGQgYmUgc3RpbGwgY2FsbGVkIGF0IHRoZSBlbmQsIHNv IGl0IGRvZXNuJ3QKPiBoYXZlIHRvIGNoZWNrIHN0dWZmLgo+IAo+ID4gPiArCX0KPiA+ID4gKwo+ ID4gPiArCXJldHVybiB0cnVlOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICBzdGF0aWMgdm9pZCBk cm1fYXRvbWljX2NydGNfcHJpbnRfc3RhdGUoc3RydWN0IGRybV9wcmludGVyICpwLAo+ID4gPiAg CQljb25zdCBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKnN0YXRlKQo+ID4gPiAgewo+ID4gPiBAQCAt MTU5MSw2ICsxNjY0LDggQEAgaW50IGRybV9hdG9taWNfY2hlY2tfb25seShzdHJ1Y3QgZHJtX2F0 b21pY19zdGF0ZSAqc3RhdGUpCj4gPiA+ICAJCX0KPiA+ID4gIAl9Cj4gPiA+ICAKPiA+ID4gKwlz dGF0ZS0+YXN5bmNfdXBkYXRlID0gZHJtX2F0b21pY19hc3luY19jaGVjayhzdGF0ZSk7Cj4gPiA+ ICsKPiA+ID4gIAlyZXR1cm4gcmV0Owo+ID4gPiAgfQo+ID4gCj4gPiBUaGUgcHJvbW90aW9uIG9m IGFueSBtb2Rlc2V0IHRoYXQgcGFzc2VzIHRoZSBhc3luY19jaGVjayB0ZXN0IHRvIGFzeW5jCj4g PiBzZWVtcyB3ZWlyZCAtLSBzaG91bGRuJ3Qgd2Ugb25seSBiZSBkb2luZyB0aGF0IGlmIHVzZXJz cGFjZSByZXF1ZXN0ZWQKPiA+IGFzeW5jPyAgUmlnaHQgbm93IGl0IHNlZW1zIGxpa2Ugd2UncmUg anVzdCBnZXR0aW5nIGx1Y2t5IGJlY2F1c2Ugb25seQo+ID4gY3Vyc29yIHBsYW5lcyBoYXZlIGl0 IHNldCwgYW5kIHRoZSBjdXJzb3IgdXBkYXRlIGlvY3RscyBpbXBseSBhc3luYy4KPiAKPiBZZWFo LCB3ZSBzaG91bGQgb25seSBkbyB0aGlzIHdoZW4gdGhlIGFzeW5jIGZsYWcgaXMgc2V0LCBhbmQg c2V0IHRoYXQgYm90aAo+IGluIHRoZSBwYWdlX2ZsaXAgaGVscGVycyBhbmQgdGhlIGN1cnNvciBo ZWxwZXJzLgo+IAo+IE9uZSB0aGluZyBJIHdvbmRlciBpcyB3aGV0aGVyIHdlIG5lZWQgdG8gZGlm ZmVyZW50aWF0ZSBiZXR3ZWVuICJwbHMgZG8KPiBhc3luYyBpZiB5b3UgY2FuIiBhbmQgIkkgd2Fu dCBhc3luYyBvciBsZXQgdGhlIHVwZGF0ZSBmYWlsIi4gQ3Vyc29ycyB3b3VsZAo+IGJlIHRoZSBm b3JtZXIsIHBhZ2VfZmxpcHMgcHJvYmFibHkgdG9vLCBidXQgZm9yIGFzeW5jIHRocm91Z2ggYXRv bWljIHdlCj4gbWlnaHQgYWxzbyBuZWVkIHRoZSBsYXRlci4gQnV0IHRoYXQncyBqdXN0IGFuIGFz aWRlLCB3ZSBjYW4gZWFzaWx5IHdpcmUKPiB0aGlzIHVwIHdoZW4gd2UgaGF2ZSB1c2Vyc3BhY2Ug YXNraW5nIGZvciBpdCAoaXQgbWlnaHQgY29tZSByZWFsIGhhbmR5IGZvcgo+IFZSKS4KPiAKPiA+ IAo+ID4gPiAgRVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX2NoZWNrX29ubHkpOwo+ID4gPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMgYi9kcml2ZXJzL2dw dS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwo+ID4gPiBpbmRleCA4YmU5NzE5Li5hNzllMDZjIDEw MDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwo+ID4g PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwo+ID4gPiBAQCAtMTIz NSw2ICsxMjM1LDM2IEBAIHN0YXRpYyB2b2lkIGNvbW1pdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVj dCAqd29yaykKPiA+ID4gIH0KPiA+ID4gIAo+ID4gPiAgLyoqCj4gPiA+ICsgKiBkcm1fYXRvbWlj X2hlbHBlcl9hc3luY19jb21taXQgLSBjb21taXQgc3RhdGUgYXN5bmNocm9ub3VzbHkKPiA+ID4g KyAqCj4gPiA+ICsgKiBUaGlzIGZ1bmN0aW9uIGNvbW1pdHMgYSBzdGF0ZSBhc3luY2hyb25vdXNs eS4gSXQgc2hvdWxkIGJlIHVzZWQKPiA+ID4gKyAqIG9uIGEgc3RhdGUgb25seSB3aGVuIGRybV9h dG9taWNfYXN5bmNfY2hlY2soKSBzdWNjZWRzLiBBc3luYwo+ID4gPiArICogY29tbWl0cyBhcmUg bm90IHN1cHBvc2VkIHRvIHN3YXAgdGhlIHN0YXRlcyBsaWtlIG5vcm1hbCBzeW5jIGNvbW1pdHMs Cj4gPiA+ICsgKiBidXQganVzdCBkbyBpbi1wbGFjZSBjaGFuZ2Ugb24gdGhlIGN1cnJlbnQgc3Rh dGUuCj4gPiA+ICsgKi8KPiA+ID4gK3ZvaWQgZHJtX2F0b21pY19oZWxwZXJfYXN5bmNfY29tbWl0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPiA+ICsJCQkJICAgIHN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlICpzdGF0ZSkKPiA+ID4gK3sKPiA+ID4gKwlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsK PiA+ID4gKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZTsKPiA+ID4gKwljb25z dCBzdHJ1Y3QgZHJtX3BsYW5lX2hlbHBlcl9mdW5jcyAqZnVuY3M7Cj4gPiA+ICsJaW50IGk7Cj4g PiA+ICsKPiA+ID4gKwlmb3JfZWFjaF9uZXdfcGxhbmVfaW5fc3RhdGUoc3RhdGUsIHBsYW5lLCBw bGFuZV9zdGF0ZSwgaSkgewo+ID4gPiArCQlmdW5jcyA9IHBsYW5lLT5oZWxwZXJfcHJpdmF0ZTsK PiA+ID4gKwo+ID4gPiArCQlwbGFuZS0+c3RhdGUtPnNyY194ID0gcGxhbmVfc3RhdGUtPnNyY194 Owo+ID4gPiArCQlwbGFuZS0+c3RhdGUtPnNyY195ID0gcGxhbmVfc3RhdGUtPnNyY195Owo+ID4g PiArCQlwbGFuZS0+c3RhdGUtPmNydGNfeCA9IHBsYW5lX3N0YXRlLT5jcnRjX3g7Cj4gPiA+ICsJ CXBsYW5lLT5zdGF0ZS0+Y3J0Y195ID0gcGxhbmVfc3RhdGUtPmNydGNfeTsKPiA+ID4gKwo+ID4g PiArCQlpZiAoZnVuY3MgJiYgZnVuY3MtPmF0b21pY19hc3luY191cGRhdGUpCj4gPiA+ICsJCQlm dW5jcy0+YXRvbWljX2FzeW5jX3VwZGF0ZShwbGFuZSwgcGxhbmVfc3RhdGUpOwo+ID4gPiArCX0K PiA+ID4gK30KPiA+IAo+ID4gSXQgc2VlbXMgc3RyYW5nZSB0byBtZSB0aGF0IHRoZSBhc3luY191 cGRhdGUoKSBpbXBsZW1lbnRhdGlvbiBpbiB0aGUKPiA+IGRyaXZlciBuZWVkcyB0byB1cGRhdGUg dGhlIHN0YXRlLT5mYiBidXQgbm90IHRoZSB4L3kuICBDb3VsZCB3ZSBtb3ZlIHRoZQo+ID4gY29y ZSdzIHgveSB1cGRhdGUgYWZ0ZXIgdGhlIGNhbGwgaW50byB0aGUgZHJpdmVyLCBhbmQgdGhlbiB1 cGRhdGUKPiA+IHBsYW5lLT5zdGF0ZS0+ZmIgaW4gdGhlIGNvcmUgaW5zdGVhZCBvZiB0aGUgZHJp dmVyPwo+IAo+IFllYWgsIGNvbnNpc3RlbmN5IHdvdWxkIGJlIHJlYWwgZ29vZCBoZXJlIC4uLgo+ IAo+ID4gPiArRVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX2hlbHBlcl9hc3luY19jb21taXQpOwo+ ID4gPiArCj4gPiA+ICsvKioKPiA+ID4gICAqIGRybV9hdG9taWNfaGVscGVyX2NvbW1pdCAtIGNv bW1pdCB2YWxpZGF0ZWQgc3RhdGUgb2JqZWN0Cj4gPiA+ICAgKiBAZGV2OiBEUk0gZGV2aWNlCj4g PiA+ICAgKiBAc3RhdGU6IHRoZSBkcml2ZXIgc3RhdGUgb2JqZWN0Cj4gPiA+IEBAIC0xMjU4LDYg KzEyODgsMTcgQEAgaW50IGRybV9hdG9taWNfaGVscGVyX2NvbW1pdChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAo+ID4gPiAgewo+ID4gPiAgCWludCByZXQ7Cj4gPiA+ICAKPiA+ID4gKwlpZiAoc3Rh dGUtPmFzeW5jX3VwZGF0ZSkgewo+ID4gPiArCQlyZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9wcmVw YXJlX3BsYW5lcyhkZXYsIHN0YXRlKTsKPiA+ID4gKwkJaWYgKHJldCkKPiA+ID4gKwkJCXJldHVy biByZXQ7Cj4gPiA+ICsKPiA+ID4gKwkJZHJtX2F0b21pY19oZWxwZXJfYXN5bmNfY29tbWl0KGRl diwgc3RhdGUpOwo+ID4gPiArCQlkcm1fYXRvbWljX2hlbHBlcl9jbGVhbnVwX3BsYW5lcyhkZXYs IHN0YXRlKTsKPiAKPiBTb21lIGFzeW5jIGN1cnNvciB1cGRhdGVzIGFyZSBub3QgMTAwJSBhc3lu YywgYXMgaW4gdGhlIGh3IG1pZ2h0IHN0aWxsCj4gc2NhbiBvdXQgdGhlIG9sZCBidWZmZXIgdW50 aWwgdGhlIG5leHQgdmJsYW5rLiBDb3VsZC9zaG91bGQgd2UgaGFuZGxlIHRoaXMKPiBpbiBjb3Jl PyBPciBhcmUgd2UgZ29pbmcgdG8gc2hydWcgdGhpcyBvZmYgd2l0aCAibWVoLCB5b3UgYXNrZWQg Zm9yCj4gdGVhcmluZywgeW91IGdvdCB0ZWFyaW5nIj8KCkRvIHlvdSBrbm93IHdoaWNoIGh3IHdv dWxkIHRoYXQgYmU/IEkgZG9uJ3Qga25vdy4gTWF5YmUgd2Ugc2hvdWxkIGp1c3QKZG9uJ3QgY2Fy ZSBmb3Igbm93IGFuZCBzZWUgaG93IGRyaXZlcnMgd2lsbCBzb2x2ZSB0aGlzIHRvIHRoZW4gZXh0 cmFjdApoZWxwZXJzIGxpa2Ugd2UgZGlkIGZvciBhdG9taWMgbm9uYmxvY2tpbmcgY29tbWl0cy4K Ckd1c3Rhdm8KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K ZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==