From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v3 1/3] drm: Add callbacks for late registering Date: Tue, 21 Jun 2016 15:34:32 +0200 Message-ID: <20160621133432.GF23520@phenom.ffwll.local> References: <1466514580-15194-1-git-send-email-benjamin.gaignard@linaro.org> <1466514580-15194-2-git-send-email-benjamin.gaignard@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-lb0-x244.google.com (mail-lb0-x244.google.com [IPv6:2a00:1450:4010:c04::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6516B6E6F9 for ; Tue, 21 Jun 2016 13:34:37 +0000 (UTC) Received: by mail-lb0-x244.google.com with SMTP id ur4so1895444lbc.3 for ; Tue, 21 Jun 2016 06:34:37 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1466514580-15194-2-git-send-email-benjamin.gaignard@linaro.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Benjamin Gaignard Cc: emil.l.velikov@gmail.com, fabien.dessenne@st.com, dri-devel@lists.freedesktop.org, vincent.abriou@st.com List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBKdW4gMjEsIDIwMTYgYXQgMDM6MDk6MzhQTSArMDIwMCwgQmVuamFtaW4gR2FpZ25h cmQgd3JvdGU6Cj4gTGlrZSB3aGF0IGhhcyBiZWVuIGRvbmUgZm9yIGNvbm5lY3RvcnMgYWRkIGNh bGxiYWNrcyBvbiBlbmNvZGVyLAo+IGNydGMgYW5kIHBsYW5lIHRvIGxldCBkcml2ZXIgZG8gYWN0 aW9ucyBhZnRlciBkcm0gZGV2aWNlIHJlZ2lzdHJhdGlvbi4KPiAKPiBDb3JyZXNwb25kaW5nbHks IGFkZCBjYWxsYmFja3MgY2FsbGVkIGJlZm9yZSB1bnJlZ2lzdGVyIGRybSBkZXZpY2UuCj4gCj4g dmVyc2lvbiAyOgo+IGFkZCBkcm1fbW9kZXNldF9yZWdpc3Rlcl9hbGwoKSBhbmQgZHJtX21vZGVz ZXRfdW5yZWdpc3Rlcl9hbGwoKQo+IHRvIGNlbnRyYWxpemUgYWxsIGNhbGxzCj4gCj4gdmVyc2lv biAzOgo+IGluIGVycm9yIGNhc2UgdW53aW5kIHJlZ2lzdGVycyBpbiBkcm1fbW9kZXNldF9yZWdp c3Rlcl9hbGwKPiBmaXggdW5pbml0aWFsZWQgcmV0dXJuIHZhbHVlCj4gaW52ZXJzZSBvcmRlciBv ZiB1bnJlZ2lzdHJhdGlvbiBpbiBkcm1fbW9kZXNldF91bnJlZ2lzdGVyX2FsbAo+IAo+IFNpZ25l ZC1vZmYtYnk6IEJlbmphbWluIEdhaWduYXJkIDxiZW5qYW1pbi5nYWlnbmFyZEBsaW5hcm8ub3Jn Pgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2NydGMuYyB8IDEzMiArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgZHJpdmVycy9ncHUvZHJtL2RybV9k cnYuYyAgfCAgIDQgKy0KPiAgaW5jbHVkZS9kcm0vZHJtX2NydGMuaCAgICAgfCAgNzkgKysrKysr KysrKysrKysrKysrKysrKysrKysrCj4gIDMgZmlsZXMgY2hhbmdlZCwgMjEzIGluc2VydGlvbnMo KyksIDIgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1f Y3J0Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMKPiBpbmRleCBlN2M4NjJiLi5jMDc4 YmM0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Yy5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2RybV9jcnRjLmMKPiBAQCAtNjA4LDYgKzYwOCwzMSBAQCBzdGF0aWMgdW5z aWduZWQgaW50IGRybV9udW1fY3J0Y3Moc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCXJldHVy biBudW07Cj4gIH0KPiAgCj4gK3N0YXRpYyBpbnQgZHJtX2NydGNfcmVnaXN0ZXJfYWxsKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpCj4gK3sKPiArCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPiArCWlu dCByZXQgPSAwOwo+ICsKPiArCWRybV9mb3JfZWFjaF9jcnRjKGNydGMsIGRldikgewo+ICsJCWlm IChjcnRjLT5mdW5jcy0+bGF0ZV9yZWdpc3RlcikKPiArCQkJcmV0ID0gY3J0Yy0+ZnVuY3MtPmxh dGVfcmVnaXN0ZXIoY3J0Yyk7Cj4gKwkJaWYgKHJldCkKPiArCQkJcmV0dXJuIHJldDsKPiArCX0K PiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZHJtX2NydGNfdW5yZWdp c3Rlcl9hbGwoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiArewo+ICsJc3RydWN0IGRybV9jcnRj ICpjcnRjOwo+ICsKPiArCWRybV9mb3JfZWFjaF9jcnRjKGNydGMsIGRldikgewo+ICsJCWlmIChj cnRjLT5mdW5jcy0+ZWFybHlfdW5yZWdpc3RlcikKPiArCQkJY3J0Yy0+ZnVuY3MtPmVhcmx5X3Vu cmVnaXN0ZXIoY3J0Yyk7Cj4gKwl9Cj4gK30KPiArCj4gIC8qKgo+ICAgKiBkcm1fY3J0Y19pbml0 X3dpdGhfcGxhbmVzIC0gSW5pdGlhbGlzZSBhIG5ldyBDUlRDIG9iamVjdCB3aXRoCj4gICAqICAg IHNwZWNpZmllZCBwcmltYXJ5IGFuZCBjdXJzb3IgcGxhbmVzLgo+IEBAIC0xMTAyLDYgKzExMjcs MzEgQEAgdm9pZCBkcm1fY29ubmVjdG9yX3VucmVnaXN0ZXJfYWxsKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCj4gIH0KPiAgRVhQT1JUX1NZTUJPTChkcm1fY29ubmVjdG9yX3VucmVnaXN0ZXJfYWxs KTsKPiAgCj4gK3N0YXRpYyBpbnQgZHJtX2VuY29kZXJfcmVnaXN0ZXJfYWxsKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCj4gK3sKPiArCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKPiArCWlu dCByZXQgPSAwOwo+ICsKPiArCWRybV9mb3JfZWFjaF9lbmNvZGVyKGVuY29kZXIsIGRldikgewo+ ICsJCWlmIChlbmNvZGVyLT5mdW5jcy0+bGF0ZV9yZWdpc3RlcikKPiArCQkJcmV0ID0gZW5jb2Rl ci0+ZnVuY3MtPmxhdGVfcmVnaXN0ZXIoZW5jb2Rlcik7Cj4gKwkJaWYgKHJldCkKPiArCQkJcmV0 dXJuIHJldDsKPiArCX0KPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQg ZHJtX2VuY29kZXJfdW5yZWdpc3Rlcl9hbGwoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiArewo+ ICsJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyOwo+ICsKPiArCWRybV9mb3JfZWFjaF9lbmNv ZGVyKGVuY29kZXIsIGRldikgewo+ICsJCWlmIChlbmNvZGVyLT5mdW5jcy0+ZWFybHlfdW5yZWdp c3RlcikKPiArCQkJZW5jb2Rlci0+ZnVuY3MtPmVhcmx5X3VucmVnaXN0ZXIoZW5jb2Rlcik7Cj4g Kwl9Cj4gK30KPiArCj4gIC8qKgo+ICAgKiBkcm1fZW5jb2Rlcl9pbml0IC0gSW5pdCBhIHByZWFs bG9jYXRlZCBlbmNvZGVyCj4gICAqIEBkZXY6IGRybSBkZXZpY2UKPiBAQCAtMTI5MCw2ICsxMzQw LDMxIEBAIGludCBkcm1fdW5pdmVyc2FsX3BsYW5lX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gIH0KPiAgRVhQT1JUX1NZTUJPTChkcm1fdW5p dmVyc2FsX3BsYW5lX2luaXQpOwo+ICAKPiArc3RhdGljIGludCBkcm1fcGxhbmVfcmVnaXN0ZXJf YWxsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gK3sKPiArCXN0cnVjdCBkcm1fcGxhbmUgKnBs YW5lOwo+ICsJaW50IHJldCA9IDA7Cj4gKwo+ICsJZHJtX2Zvcl9lYWNoX3BsYW5lKHBsYW5lLCBk ZXYpIHsKPiArCQlpZiAocGxhbmUtPmZ1bmNzLT5sYXRlX3JlZ2lzdGVyKQo+ICsJCQlyZXQgPSBw bGFuZS0+ZnVuY3MtPmxhdGVfcmVnaXN0ZXIocGxhbmUpOwo+ICsJCWlmIChyZXQpCj4gKwkJCXJl dHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lk IGRybV9wbGFuZV91bnJlZ2lzdGVyX2FsbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICt7Cj4g KwlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKPiArCj4gKwlkcm1fZm9yX2VhY2hfcGxhbmUocGxh bmUsIGRldikgewo+ICsJCWlmIChwbGFuZS0+ZnVuY3MtPmVhcmx5X3VucmVnaXN0ZXIpCj4gKwkJ CXBsYW5lLT5mdW5jcy0+ZWFybHlfdW5yZWdpc3RlcihwbGFuZSk7Cj4gKwl9Cj4gK30KPiArCj4g IC8qKgo+ICAgKiBkcm1fcGxhbmVfaW5pdCAtIEluaXRpYWxpemUgYSBsZWdhY3kgcGxhbmUKPiAg ICogQGRldjogRFJNIGRldmljZQo+IEBAIC0xNDEyLDYgKzE0ODcsNjMgQEAgdm9pZCBkcm1fcGxh bmVfZm9yY2VfZGlzYWJsZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKPiAgfQo+ICBFWFBPUlRf U1lNQk9MKGRybV9wbGFuZV9mb3JjZV9kaXNhYmxlKTsKPiAgCj4gKy8qKgo+ICsgKiBkcm1fbW9k ZXNldF9yZWdpc3Rlcl9hbGwgLSBkbyBsYXRlIHJlZ2lzdHJhdGlvbgo+ICsgKiBAZGV2OiBkcm0g ZGV2aWNlCj4gKyAqCj4gKyAqIFRoaXMgZnVuY3Rpb24gY2FsbCBsYXRlX3JlZ2lzdGVyIGNhbGxi YWNrIGZvciBhbGwgcGxhbmVzLAo+ICsgKiBjcmN0cywgZW5jb2RlcnMgYW5kIGNvbm5lY3RvcnMK PiArICoKPiArICogUmV0dXJuczoKPiArICogWmVybyBvbiBzdWNjZXNzLCBlcnJvIGNvZGUgb24g ZmFpbHVyZQo+ICsgKi8KCldlIGRvbid0IGRvY3VtZW50IGRybS1pbnRlcm5hbCBmdW5jdGlvbnMs IGl0IGp1c3QgY29uZnVzZXMgdGhlIGRvY3MgKHdoaWNoCmFyZSBhaW1lZCBhdCBkcml2ZXIgd3Jp dGVycykuIFNpbmNlIHRoZSBjb21tZW50IGRvZXNuJ3QgZXhwbGFpbiBtdWNoIG9mCndoYXQgdGhl IGNvZGUgZG9lcywgcGxlYXNlIHJlbW92ZS4gU2FtZSBmb3IgdW5yZWdpc3RlciBiZWxvdy4KCj4g K2ludCBkcm1fbW9kZXNldF9yZWdpc3Rlcl9hbGwoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAr ewo+ICsJaW50IHJldDsKPiArCj4gKwlyZXQgPSBkcm1fcGxhbmVfcmVnaXN0ZXJfYWxsKGRldik7 Cj4gKwlpZiAocmV0KQo+ICsJCWdvdG8gZXJyX3BsYW5lOwo+ICsKPiArCXJldCA9IGRybV9jcnRj X3JlZ2lzdGVyX2FsbChkZXYpOwo+ICsJaWYgIChyZXQpCj4gKwkJZ290byBlcnJfY3J0YzsKPiAr Cj4gKwlyZXQgPSBkcm1fZW5jb2Rlcl9yZWdpc3Rlcl9hbGwoZGV2KTsKPiArCWlmIChyZXQpCj4g KwkJZ290byBlcnJfZW5jb2RlcjsKPiArCj4gKwlyZXQgPSBkcm1fY29ubmVjdG9yX3JlZ2lzdGVy X2FsbChkZXYpOwo+ICsJaWYgKHJldCkKPiArCQlnb3RvIGVycl9jb25uZWN0b3I7Cj4gKwo+ICsJ cmV0dXJuIDA7Cj4gKwo+ICtlcnJfY29ubmVjdG9yOgo+ICsJZHJtX2VuY29kZXJfdW5yZWdpc3Rl cl9hbGwoZGV2KTsKPiArZXJyX2VuY29kZXI6Cj4gKwlkcm1fY3J0Y191bnJlZ2lzdGVyX2FsbChk ZXYpOwo+ICtlcnJfY3J0YzoKPiArCWRybV9wbGFuZV91bnJlZ2lzdGVyX2FsbChkZXYpOwo+ICtl cnJfcGxhbmU6Cj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICsvKioKPiArICogZHJtX21vZGVz ZXRfdW5yZWdpc3Rlcl9hbGwgLSBkbyBlYXJseSB1bnJlZ2lzdHJhdGlvbgo+ICsgKiBAZGV2OiBk cm0gZGV2aWNlCj4gKyAqCj4gKyAqIFRoaXMgZnVuY3Rpb24gY2FsbCBlYXJseV91bnJlZ2lzdGVy IGNhbGxiYWNrcyBmb3IgYWxsCj4gKyAqIGNvbm5lY3RvcnMsIGVuY29kZXJzLCBjcnRjcyBhbmQg cGxhbmVzCj4gKyAqLwo+ICt2b2lkIGRybV9tb2Rlc2V0X3VucmVnaXN0ZXJfYWxsKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCj4gK3sKPiArCWRybV9jb25uZWN0b3JfdW5yZWdpc3Rlcl9hbGwoZGV2 KTsKPiArCWRybV9lbmNvZGVyX3VucmVnaXN0ZXJfYWxsKGRldik7Cj4gKwlkcm1fY3J0Y191bnJl Z2lzdGVyX2FsbChkZXYpOwo+ICsJZHJtX3BsYW5lX3VucmVnaXN0ZXJfYWxsKGRldik7Cj4gK30K PiArCj4gIHN0YXRpYyBpbnQgZHJtX21vZGVfY3JlYXRlX3N0YW5kYXJkX3Byb3BlcnRpZXMoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKPiAgewo+ICAJc3RydWN0IGRybV9wcm9wZXJ0eSAqcHJvcDsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9kcm1fZHJ2LmMKPiBpbmRleCBjNzEwMWMwLi41M2VhZGNhIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9kcm1fZHJ2LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2Rydi5jCj4g QEAgLTY4OCw3ICs2ODgsNyBAQCBpbnQgZHJtX2Rldl9yZWdpc3RlcihzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCB1bnNpZ25lZCBsb25nIGZsYWdzKQo+ICAJfQo+ICAKPiAgCWlmIChkcm1fY29yZV9j aGVja19mZWF0dXJlKGRldiwgRFJJVkVSX01PREVTRVQpKQo+IC0JCWRybV9jb25uZWN0b3JfcmVn aXN0ZXJfYWxsKGRldik7Cj4gKwkJZHJtX21vZGVzZXRfcmVnaXN0ZXJfYWxsKGRldik7Cj4gIAo+ ICAJcmV0ID0gMDsKPiAgCWdvdG8gb3V0X3VubG9jazsKPiBAQCAtNzIxLDcgKzcyMSw3IEBAIHZv aWQgZHJtX2Rldl91bnJlZ2lzdGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAlkcm1fbGFz dGNsb3NlKGRldik7Cj4gIAo+ICAJaWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklW RVJfTU9ERVNFVCkpCj4gLQkJZHJtX2Nvbm5lY3Rvcl91bnJlZ2lzdGVyX2FsbChkZXYpOwo+ICsJ CWRybV9tb2Rlc2V0X3VucmVnaXN0ZXJfYWxsKGRldik7Cj4gIAo+ICAJaWYgKGRldi0+ZHJpdmVy LT51bmxvYWQpCj4gIAkJZGV2LT5kcml2ZXItPnVubG9hZChkZXYpOwo+IGRpZmYgLS1naXQgYS9p bmNsdWRlL2RybS9kcm1fY3J0Yy5oIGIvaW5jbHVkZS9kcm0vZHJtX2NydGMuaAo+IGluZGV4IGMy NzM0OTcuLmQwZjIyNTZiIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9jcnRjLmgKPiAr KysgYi9pbmNsdWRlL2RybS9kcm1fY3J0Yy5oCj4gQEAgLTcwNCw2ICs3MDQsMzIgQEAgc3RydWN0 IGRybV9jcnRjX2Z1bmNzIHsKPiAgCQkJCSAgIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAq c3RhdGUsCj4gIAkJCQkgICBzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wZXJ0eSwKPiAgCQkJCSAg IHVpbnQ2NF90ICp2YWwpOwo+ICsKPiArCS8qKgo+ICsJICogQGxhdGVfcmVnaXN0ZXI6Cj4gKwkg Kgo+ICsJICogVGhpcyBvcHRpb25hbCBob29rIGNhbiBiZSB1c2VkIHRvIHJlZ2lzdGVyIGFkZGl0 aW9uYWwgdXNlcnNwYWNlCj4gKwkgKiBpbnRlcmZhY2VzIGF0dGFjaGVkIHRvIHRoZSBjcnRjIGxp a2UgZGVidWdmcyBpbnRlcmZhY2VzLgo+ICsJICogSXQgaXMgY2FsbGVkIGxhdGUgaW4gdGhlIGRy aXZlciBsb2FkIHNlcXVlbmNlIGZyb20gZHJtX2Rldl9yZWdpc3RlcigpLgo+ICsJICogRXZlcnl0 aGluZyBhZGRlZCBmcm9tIHRoaXMgY2FsbGJhY2sgc2hvdWxkIGJlIHVucmVnaXN0ZXJlZCBpbgo+ ICsJICogdGhlIGVhcmx5X3VucmVnaXN0ZXIgY2FsbGJhY2suCj4gKwkgKgo+ICsJICogUmV0dXJu czoKPiArCSAqCj4gKwkgKiAwIG9uIHN1Y2Nlc3MsIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBv biBmYWlsdXJlLgo+ICsJICovCj4gKwlpbnQgKCpsYXRlX3JlZ2lzdGVyKShzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMpOwo+ICsKPiArCS8qKgo+ICsJICogQGVhcmx5X3VucmVnaXN0ZXI6Cj4gKwkgKgo+ ICsJICogVGhpcyBvcHRpb25hbCBob29rIHNob3VsZCBiZSB1c2VkIHRvIHVucmVnaXN0ZXIgdGhl IGFkZGl0aW9uYWwKPiArCSAqIHVzZXJzcGFjZSBpbnRlcmZhY2VzIGF0dGFjaGVkIHRvIHRoZSBj cnRjIGZyb20KPiArCSAqIGxhdGVfdW5yZWdpc3RlcigpLiBJdCBpcyBjYWxsZWQgZnJvbSBkcm1f ZGV2X3VucmVnaXN0ZXIoKSwKPiArCSAqIGVhcmx5IGluIHRoZSBkcml2ZXIgdW5sb2FkIHNlcXVl bmNlIHRvIGRpc2FibGUgdXNlcnNwYWNlIGFjY2Vzcwo+ICsJICogYmVmb3JlIGRhdGEgc3RydWN0 dXJlcyBhcmUgdG9ybmRvd24uCj4gKwkgKi8KPiArCXZvaWQgKCplYXJseV91bnJlZ2lzdGVyKShz dHJ1Y3QgZHJtX2NydGMgKmNydGMpOwo+ICB9Owo+ICAKPiAgLyoqCj4gQEAgLTExMjcsNiArMTE1 MywzMiBAQCBzdHJ1Y3QgZHJtX2VuY29kZXJfZnVuY3Mgewo+ICAJICogaG90cGx1Z2dlZCBpbiBE Uk0uCj4gIAkgKi8KPiAgCXZvaWQgKCpkZXN0cm95KShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29k ZXIpOwo+ICsKPiArCS8qKgo+ICsJICogQGxhdGVfcmVnaXN0ZXI6Cj4gKwkgKgo+ICsJICogVGhp cyBvcHRpb25hbCBob29rIGNhbiBiZSB1c2VkIHRvIHJlZ2lzdGVyIGFkZGl0aW9uYWwgdXNlcnNw YWNlCj4gKwkgKiBpbnRlcmZhY2VzIGF0dGFjaGVkIHRvIHRoZSBlbmNvZGVyIGxpa2UgZGVidWdm cyBpbnRlcmZhY2VzLgo+ICsJICogSXQgaXMgY2FsbGVkIGxhdGUgaW4gdGhlIGRyaXZlciBsb2Fk IHNlcXVlbmNlIGZyb20gZHJtX2Rldl9yZWdpc3RlcigpLgo+ICsJICogRXZlcnl0aGluZyBhZGRl ZCBmcm9tIHRoaXMgY2FsbGJhY2sgc2hvdWxkIGJlIHVucmVnaXN0ZXJlZCBpbgo+ICsJICogdGhl IGVhcmx5X3VucmVnaXN0ZXIgY2FsbGJhY2suCj4gKwkgKgo+ICsJICogUmV0dXJuczoKPiArCSAq Cj4gKwkgKiAwIG9uIHN1Y2Nlc3MsIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJl Lgo+ICsJICovCj4gKwlpbnQgKCpsYXRlX3JlZ2lzdGVyKShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVu Y29kZXIpOwo+ICsKPiArCS8qKgo+ICsJICogQGVhcmx5X3VucmVnaXN0ZXI6Cj4gKwkgKgo+ICsJ ICogVGhpcyBvcHRpb25hbCBob29rIHNob3VsZCBiZSB1c2VkIHRvIHVucmVnaXN0ZXIgdGhlIGFk ZGl0aW9uYWwKPiArCSAqIHVzZXJzcGFjZSBpbnRlcmZhY2VzIGF0dGFjaGVkIHRvIHRoZSBlbmNv ZGVyIGZyb20KPiArCSAqIGxhdGVfdW5yZWdpc3RlcigpLiBJdCBpcyBjYWxsZWQgZnJvbSBkcm1f ZGV2X3VucmVnaXN0ZXIoKSwKPiArCSAqIGVhcmx5IGluIHRoZSBkcml2ZXIgdW5sb2FkIHNlcXVl bmNlIHRvIGRpc2FibGUgdXNlcnNwYWNlIGFjY2Vzcwo+ICsJICogYmVmb3JlIGRhdGEgc3RydWN0 dXJlcyBhcmUgdG9ybmRvd24uCj4gKwkgKi8KPiArCXZvaWQgKCplYXJseV91bnJlZ2lzdGVyKShz dHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpOwo+ICB9Owo+ICAKPiAgI2RlZmluZSBEUk1fQ09O TkVDVE9SX01BWF9FTkNPREVSIDMKPiBAQCAtMTU3MCw2ICsxNjIyLDMxIEBAIHN0cnVjdCBkcm1f cGxhbmVfZnVuY3Mgewo+ICAJCQkJICAgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3Rh dGUsCj4gIAkJCQkgICBzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wZXJ0eSwKPiAgCQkJCSAgIHVp bnQ2NF90ICp2YWwpOwo+ICsJLyoqCj4gKwkgKiBAbGF0ZV9yZWdpc3RlcjoKPiArCSAqCj4gKwkg KiBUaGlzIG9wdGlvbmFsIGhvb2sgY2FuIGJlIHVzZWQgdG8gcmVnaXN0ZXIgYWRkaXRpb25hbCB1 c2Vyc3BhY2UKPiArCSAqIGludGVyZmFjZXMgYXR0YWNoZWQgdG8gdGhlIHBsYW5lIGxpa2UgZGVi dWdmcyBpbnRlcmZhY2VzLgo+ICsJICogSXQgaXMgY2FsbGVkIGxhdGUgaW4gdGhlIGRyaXZlciBs b2FkIHNlcXVlbmNlIGZyb20gZHJtX2Rldl9yZWdpc3RlcigpLgo+ICsJICogRXZlcnl0aGluZyBh ZGRlZCBmcm9tIHRoaXMgY2FsbGJhY2sgc2hvdWxkIGJlIHVucmVnaXN0ZXJlZCBpbgo+ICsJICog dGhlIGVhcmx5X3VucmVnaXN0ZXIgY2FsbGJhY2suCj4gKwkgKgo+ICsJICogUmV0dXJuczoKPiAr CSAqCj4gKwkgKiAwIG9uIHN1Y2Nlc3MsIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWls dXJlLgo+ICsJICovCj4gKwlpbnQgKCpsYXRlX3JlZ2lzdGVyKShzdHJ1Y3QgZHJtX3BsYW5lICpw bGFuZSk7Cj4gKwo+ICsJLyoqCj4gKwkgKiBAZWFybHlfdW5yZWdpc3RlcjoKPiArCSAqCj4gKwkg KiBUaGlzIG9wdGlvbmFsIGhvb2sgc2hvdWxkIGJlIHVzZWQgdG8gdW5yZWdpc3RlciB0aGUgYWRk aXRpb25hbAo+ICsJICogdXNlcnNwYWNlIGludGVyZmFjZXMgYXR0YWNoZWQgdG8gdGhlIHBsYW5l IGZyb20KPiArCSAqIGxhdGVfdW5yZWdpc3RlcigpLiBJdCBpcyBjYWxsZWQgZnJvbSBkcm1fZGV2 X3VucmVnaXN0ZXIoKSwKPiArCSAqIGVhcmx5IGluIHRoZSBkcml2ZXIgdW5sb2FkIHNlcXVlbmNl IHRvIGRpc2FibGUgdXNlcnNwYWNlIGFjY2Vzcwo+ICsJICogYmVmb3JlIGRhdGEgc3RydWN0dXJl cyBhcmUgdG9ybmRvd24uCj4gKwkgKi8KPiArCXZvaWQgKCplYXJseV91bnJlZ2lzdGVyKShzdHJ1 Y3QgZHJtX3BsYW5lICpwbGFuZSk7Cj4gIH07Cj4gIAo+ICBlbnVtIGRybV9wbGFuZV90eXBlIHsK PiBAQCAtMjUxNCw2ICsyNTkxLDggQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBkcm1fY29ubmVj dG9yX2luZGV4KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCj4gIC8qIGhlbHBlcnMg dG8ge3VufXJlZ2lzdGVyIGFsbCBjb25uZWN0b3JzIGZyb20gc3lzZnMgZm9yIGRldmljZSAqLwo+ ICBleHRlcm4gaW50IGRybV9jb25uZWN0b3JfcmVnaXN0ZXJfYWxsKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpOwo+ICBleHRlcm4gdm9pZCBkcm1fY29ubmVjdG9yX3VucmVnaXN0ZXJfYWxsKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpOwo+ICtpbnQgZHJtX21vZGVzZXRfcmVnaXN0ZXJfYWxsKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpOwo+ICt2b2lkIGRybV9tb2Rlc2V0X3VucmVnaXN0ZXJfYWxsKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpOwoKUGxlYXNlIG1vdmUgdGhlc2UgdG8gZHJtX2NydGNfaW50 ZXJuYWwuaCwgaXQncyBub3QgcGFydCBvZiB0aGUgZHJpdmVyIGFwaS4KLURhbmllbAoKPiAgCj4g IGV4dGVybiBpbnQgZHJtX2JyaWRnZV9hZGQoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSk7Cj4g IGV4dGVybiB2b2lkIGRybV9icmlkZ2VfcmVtb3ZlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2Up Owo+IC0tIAo+IDEuOS4xCj4gCgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwg SW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmkt ZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==