From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: Re: [PATCH 9/9] drm/xen-front: Implement communication with backend Date: Mon, 5 Mar 2018 11:30:35 +0200 Message-ID: <7a6d19be-a740-dae4-551b-17740171aedf__15275.7943993949$1520242190$gmane$org@epam.com> References: <1519200222-20623-1-git-send-email-andr2000@gmail.com> <1519200222-20623-10-git-send-email-andr2000@gmail.com> <20180305092515.GJ22212@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1esmSK-0004cY-P0 for xen-devel@lists.xenproject.org; Mon, 05 Mar 2018 09:30:52 +0000 In-Reply-To: <20180305092515.GJ22212@phenom.ffwll.local> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Oleksandr Andrushchenko , xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, airlied@linux.ie, daniel.vetter@intel.com, seanpaul@chromium.org, gustavo@padovan.org, jgross@suse.com, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com List-Id: xen-devel@lists.xenproject.org T24gMDMvMDUvMjAxOCAxMToyNSBBTSwgRGFuaWVsIFZldHRlciB3cm90ZToKPiBPbiBXZWQsIEZl YiAyMSwgMjAxOCBhdCAxMDowMzo0MkFNICswMjAwLCBPbGVrc2FuZHIgQW5kcnVzaGNoZW5rbyB3 cm90ZToKPj4gRnJvbTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNo Y2hlbmtvQGVwYW0uY29tPgo+Pgo+PiBIYW5kbGUgY29tbXVuaWNhdGlvbiB3aXRoIHRoZSBiYWNr ZW5kOgo+PiAgIC0gc2VuZCByZXF1ZXN0cyBhbmQgd2FpdCBmb3IgdGhlIHJlc3BvbnNlcyBhY2Nv cmRpbmcKPj4gICAgIHRvIHRoZSBkaXNwbGlmIHByb3RvY29sCj4+ICAgLSBzZXJpYWxpemUgYWNj ZXNzIHRvIHRoZSBjb21tdW5pY2F0aW9uIGNoYW5uZWwKPj4gICAtIHRpbWUtb3V0IHVzZWQgZm9y IGJhY2tlbmQgY29tbXVuaWNhdGlvbiBpcyBzZXQgdG8gMzAwMCBtcwo+PiAgIC0gbWFuYWdlIGRp c3BsYXkgYnVmZmVycyBzaGFyZWQgd2l0aCB0aGUgYmFja2VuZAo+Pgo+PiBTaWduZWQtb2ZmLWJ5 OiBPbGVrc2FuZHIgQW5kcnVzaGNoZW5rbyA8b2xla3NhbmRyX2FuZHJ1c2hjaGVua29AZXBhbS5j b20+Cj4gQWZ0ZXIgdGhlIGRlbWlkbGF5ZXJpbmcgaXQgcHJvYmFibHkgbWFrZXMgc2Vuc2UgdG8g bWVyZ2UgdGhpcyB3aXRoIHRoZQo+IG92ZXJhbGwga21zL2Jhc2ljLWRybS1kcml2ZXIgcGF0Y2gu IFVwIHRvIHlvdSByZWFsbHkuClRoZSByZWFzb24gZm9yIHN1Y2ggcGFydGl0aW9uaW5nIGhlcmUg YW5kIGJlZm9yZSB3YXMgdGhhdApJIGNhbiBoYXZlIFhlbi9EUk0gcGFydHMgc2VwYXJhdGUsIHNv IHRob3NlIGFyZSBlYXNpZXIgZm9yCnJldmlldyBieSBYZW4vRFJNIGNvbW11bml0aWVzLiBTbywg SSB3b3VsZCBwcmVmZXIgdG8gaGF2ZSBpdAphcyBpdCBpcwo+IC1EYW5pZWwKPj4gLS0tCj4+ICAg ZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5fZHJtX2Zyb250LmMgfCAzMjcgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKystCj4+ICAgZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5fZHJtX2Zy b250LmggfCAgIDUgKwo+PiAgIDIgZmlsZXMgY2hhbmdlZCwgMzI3IGluc2VydGlvbnMoKyksIDUg ZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9k cm1fZnJvbnQuYyBiL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udC5jCj4+IGluZGV4 IDhkZTg4ZTM1OWQ1ZS4uNWFkNTQ2MjMxZDMwIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0veGVuL3hlbl9kcm1fZnJvbnQuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9k cm1fZnJvbnQuYwo+PiBAQCAtMzEsMTIgKzMxLDE0NiBAQAo+PiAgICNpbmNsdWRlICJ4ZW5fZHJt X2Zyb250X2V2dGNobmwuaCIKPj4gICAjaW5jbHVkZSAieGVuX2RybV9mcm9udF9zaGJ1Zi5oIgo+ PiAgIAo+PiArLyogdGltZW91dCBpbiBtcyB0byB3YWl0IGZvciBiYWNrZW5kIHRvIHJlc3BvbmQg Ki8KPj4gKyNkZWZpbmUgVkRSTV9XQUlUX0JBQ0tfTVMJMzAwMAo+PiArCj4+ICtzdHJ1Y3QgeGVu X2RybV9mcm9udF9kYnVmIHsKPj4gKwlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7Cj4+ICsJdWludDY0 X3QgZGJ1Zl9jb29raWU7Cj4+ICsJdWludDY0X3QgZmJfY29va2llOwo+PiArCXN0cnVjdCB4ZW5f ZHJtX2Zyb250X3NoYnVmICpzaGJ1ZjsKPj4gK307Cj4+ICsKPj4gK3N0YXRpYyBpbnQgZGJ1Zl9h ZGRfdG9fbGlzdChzdHJ1Y3QgeGVuX2RybV9mcm9udF9pbmZvICpmcm9udF9pbmZvLAo+PiArCQlz dHJ1Y3QgeGVuX2RybV9mcm9udF9zaGJ1ZiAqc2hidWYsIHVpbnQ2NF90IGRidWZfY29va2llKQo+ PiArewo+PiArCXN0cnVjdCB4ZW5fZHJtX2Zyb250X2RidWYgKmRidWY7Cj4+ICsKPj4gKwlkYnVm ID0ga3phbGxvYyhzaXplb2YoKmRidWYpLCBHRlBfS0VSTkVMKTsKPj4gKwlpZiAoIWRidWYpCj4+ ICsJCXJldHVybiAtRU5PTUVNOwo+PiArCj4+ICsJZGJ1Zi0+ZGJ1Zl9jb29raWUgPSBkYnVmX2Nv b2tpZTsKPj4gKwlkYnVmLT5zaGJ1ZiA9IHNoYnVmOwo+PiArCWxpc3RfYWRkKCZkYnVmLT5saXN0 LCAmZnJvbnRfaW5mby0+ZGJ1Zl9saXN0KTsKPj4gKwlyZXR1cm4gMDsKPj4gK30KPj4gKwo+PiAr c3RhdGljIHN0cnVjdCB4ZW5fZHJtX2Zyb250X2RidWYgKmRidWZfZ2V0KHN0cnVjdCBsaXN0X2hl YWQgKmRidWZfbGlzdCwKPj4gKwkJdWludDY0X3QgZGJ1Zl9jb29raWUpCj4+ICt7Cj4+ICsJc3Ry dWN0IHhlbl9kcm1fZnJvbnRfZGJ1ZiAqYnVmLCAqcTsKPj4gKwo+PiArCWxpc3RfZm9yX2VhY2hf ZW50cnlfc2FmZShidWYsIHEsIGRidWZfbGlzdCwgbGlzdCkKPj4gKwkJaWYgKGJ1Zi0+ZGJ1Zl9j b29raWUgPT0gZGJ1Zl9jb29raWUpCj4+ICsJCQlyZXR1cm4gYnVmOwo+PiArCj4+ICsJcmV0dXJu IE5VTEw7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIGRidWZfZmx1c2hfZmIoc3RydWN0IGxp c3RfaGVhZCAqZGJ1Zl9saXN0LCB1aW50NjRfdCBmYl9jb29raWUpCj4+ICt7Cj4+ICsJc3RydWN0 IHhlbl9kcm1fZnJvbnRfZGJ1ZiAqYnVmLCAqcTsKPj4gKwo+PiArCWxpc3RfZm9yX2VhY2hfZW50 cnlfc2FmZShidWYsIHEsIGRidWZfbGlzdCwgbGlzdCkKPj4gKwkJaWYgKGJ1Zi0+ZmJfY29va2ll ID09IGZiX2Nvb2tpZSkKPj4gKwkJCXhlbl9kcm1fZnJvbnRfc2hidWZfZmx1c2goYnVmLT5zaGJ1 Zik7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIGRidWZfZnJlZShzdHJ1Y3QgbGlzdF9oZWFk ICpkYnVmX2xpc3QsIHVpbnQ2NF90IGRidWZfY29va2llKQo+PiArewo+PiArCXN0cnVjdCB4ZW5f ZHJtX2Zyb250X2RidWYgKmJ1ZiwgKnE7Cj4+ICsKPj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3Nh ZmUoYnVmLCBxLCBkYnVmX2xpc3QsIGxpc3QpCj4+ICsJCWlmIChidWYtPmRidWZfY29va2llID09 IGRidWZfY29va2llKSB7Cj4+ICsJCQlsaXN0X2RlbCgmYnVmLT5saXN0KTsKPj4gKwkJCXhlbl9k cm1fZnJvbnRfc2hidWZfdW5tYXAoYnVmLT5zaGJ1Zik7Cj4+ICsJCQl4ZW5fZHJtX2Zyb250X3No YnVmX2ZyZWUoYnVmLT5zaGJ1Zik7Cj4+ICsJCQlrZnJlZShidWYpOwo+PiArCQkJYnJlYWs7Cj4+ ICsJCX0KPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgZGJ1Zl9mcmVlX2FsbChzdHJ1Y3QgbGlz dF9oZWFkICpkYnVmX2xpc3QpCj4+ICt7Cj4+ICsJc3RydWN0IHhlbl9kcm1fZnJvbnRfZGJ1ZiAq YnVmLCAqcTsKPj4gKwo+PiArCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShidWYsIHEsIGRidWZf bGlzdCwgbGlzdCkgewo+PiArCQlsaXN0X2RlbCgmYnVmLT5saXN0KTsKPj4gKwkJeGVuX2RybV9m cm9udF9zaGJ1Zl91bm1hcChidWYtPnNoYnVmKTsKPj4gKwkJeGVuX2RybV9mcm9udF9zaGJ1Zl9m cmVlKGJ1Zi0+c2hidWYpOwo+PiArCQlrZnJlZShidWYpOwo+PiArCX0KPj4gK30KPj4gKwo+PiAr c3RhdGljIHN0cnVjdCB4ZW5kaXNwbF9yZXEgKmJlX3ByZXBhcmVfcmVxKAo+PiArCQlzdHJ1Y3Qg eGVuX2RybV9mcm9udF9ldnRjaG5sICpldnRjaG5sLCB1aW50OF90IG9wZXJhdGlvbikKPj4gK3sK Pj4gKwlzdHJ1Y3QgeGVuZGlzcGxfcmVxICpyZXE7Cj4+ICsKPj4gKwlyZXEgPSBSSU5HX0dFVF9S RVFVRVNUKCZldnRjaG5sLT51LnJlcS5yaW5nLAo+PiArCQkJZXZ0Y2hubC0+dS5yZXEucmluZy5y ZXFfcHJvZF9wdnQpOwo+PiArCXJlcS0+b3BlcmF0aW9uID0gb3BlcmF0aW9uOwo+PiArCXJlcS0+ aWQgPSBldnRjaG5sLT5ldnRfbmV4dF9pZCsrOwo+PiArCWV2dGNobmwtPmV2dF9pZCA9IHJlcS0+ aWQ7Cj4+ICsJcmV0dXJuIHJlcTsKPj4gK30KPj4gKwo+PiArc3RhdGljIGludCBiZV9zdHJlYW1f ZG9faW8oc3RydWN0IHhlbl9kcm1fZnJvbnRfZXZ0Y2hubCAqZXZ0Y2hubCwKPj4gKwkJc3RydWN0 IHhlbmRpc3BsX3JlcSAqcmVxKQo+PiArewo+PiArCXJlaW5pdF9jb21wbGV0aW9uKCZldnRjaG5s LT51LnJlcS5jb21wbGV0aW9uKTsKPj4gKwlpZiAodW5saWtlbHkoZXZ0Y2hubC0+c3RhdGUgIT0g RVZUQ0hOTF9TVEFURV9DT05ORUNURUQpKQo+PiArCQlyZXR1cm4gLUVJTzsKPj4gKwo+PiArCXhl bl9kcm1fZnJvbnRfZXZ0Y2hubF9mbHVzaChldnRjaG5sKTsKPj4gKwlyZXR1cm4gMDsKPj4gK30K Pj4gKwo+PiArc3RhdGljIGludCBiZV9zdHJlYW1fd2FpdF9pbyhzdHJ1Y3QgeGVuX2RybV9mcm9u dF9ldnRjaG5sICpldnRjaG5sKQo+PiArewo+PiArCWlmICh3YWl0X2Zvcl9jb21wbGV0aW9uX3Rp bWVvdXQoJmV2dGNobmwtPnUucmVxLmNvbXBsZXRpb24sCj4+ICsJCQltc2Vjc190b19qaWZmaWVz KFZEUk1fV0FJVF9CQUNLX01TKSkgPD0gMCkKPj4gKwkJcmV0dXJuIC1FVElNRURPVVQ7Cj4+ICsK Pj4gKwlyZXR1cm4gZXZ0Y2hubC0+dS5yZXEucmVzcF9zdGF0dXM7Cj4+ICt9Cj4+ICsKPj4gICBz dGF0aWMgaW50IGJlX21vZGVfc2V0KHN0cnVjdCB4ZW5fZHJtX2Zyb250X2RybV9waXBlbGluZSAq cGlwZWxpbmUsIHVpbnQzMl90IHgsCj4+ICAgCQl1aW50MzJfdCB5LCB1aW50MzJfdCB3aWR0aCwg dWludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBicHAsCj4+ICAgCQl1aW50NjRfdCBmYl9jb29raWUp Cj4+ICAgCj4+ICAgewo+PiAtCXJldHVybiAwOwo+PiArCXN0cnVjdCB4ZW5fZHJtX2Zyb250X2V2 dGNobmwgKmV2dGNobmw7Cj4+ICsJc3RydWN0IHhlbl9kcm1fZnJvbnRfaW5mbyAqZnJvbnRfaW5m bzsKPj4gKwlzdHJ1Y3QgeGVuZGlzcGxfcmVxICpyZXE7Cj4+ICsJdW5zaWduZWQgbG9uZyBmbGFn czsKPj4gKwlpbnQgcmV0Owo+PiArCj4+ICsJZnJvbnRfaW5mbyA9IHBpcGVsaW5lLT5kcm1faW5m by0+ZnJvbnRfaW5mbzsKPj4gKwlldnRjaG5sID0gJmZyb250X2luZm8tPmV2dF9wYWlyc1twaXBl bGluZS0+aW5kZXhdLnJlcTsKPj4gKwlpZiAodW5saWtlbHkoIWV2dGNobmwpKQo+PiArCQlyZXR1 cm4gLUVJTzsKPj4gKwo+PiArCW11dGV4X2xvY2soJmZyb250X2luZm8tPnJlcV9pb19sb2NrKTsK Pj4gKwo+PiArCXNwaW5fbG9ja19pcnFzYXZlKCZmcm9udF9pbmZvLT5pb19sb2NrLCBmbGFncyk7 Cj4+ICsJcmVxID0gYmVfcHJlcGFyZV9yZXEoZXZ0Y2hubCwgWEVORElTUExfT1BfU0VUX0NPTkZJ Ryk7Cj4+ICsJcmVxLT5vcC5zZXRfY29uZmlnLnggPSB4Owo+PiArCXJlcS0+b3Auc2V0X2NvbmZp Zy55ID0geTsKPj4gKwlyZXEtPm9wLnNldF9jb25maWcud2lkdGggPSB3aWR0aDsKPj4gKwlyZXEt Pm9wLnNldF9jb25maWcuaGVpZ2h0ID0gaGVpZ2h0Owo+PiArCXJlcS0+b3Auc2V0X2NvbmZpZy5i cHAgPSBicHA7Cj4+ICsJcmVxLT5vcC5zZXRfY29uZmlnLmZiX2Nvb2tpZSA9IGZiX2Nvb2tpZTsK Pj4gKwo+PiArCXJldCA9IGJlX3N0cmVhbV9kb19pbyhldnRjaG5sLCByZXEpOwo+PiArCXNwaW5f dW5sb2NrX2lycXJlc3RvcmUoJmZyb250X2luZm8tPmlvX2xvY2ssIGZsYWdzKTsKPj4gKwo+PiAr CWlmIChyZXQgPT0gMCkKPj4gKwkJcmV0ID0gYmVfc3RyZWFtX3dhaXRfaW8oZXZ0Y2hubCk7Cj4+ ICsKPj4gKwltdXRleF91bmxvY2soJmZyb250X2luZm8tPnJlcV9pb19sb2NrKTsKPj4gKwlyZXR1 cm4gcmV0Owo+PiAgIH0KPj4gICAKPj4gICBzdGF0aWMgaW50IGJlX2RidWZfY3JlYXRlX2ludChz dHJ1Y3QgeGVuX2RybV9mcm9udF9pbmZvICpmcm9udF9pbmZvLAo+PiBAQCAtNDQsNyArMTc4LDY5 IEBAIHN0YXRpYyBpbnQgYmVfZGJ1Zl9jcmVhdGVfaW50KHN0cnVjdCB4ZW5fZHJtX2Zyb250X2lu Zm8gKmZyb250X2luZm8sCj4+ICAgCQl1aW50MzJfdCBicHAsIHVpbnQ2NF90IHNpemUsIHN0cnVj dCBwYWdlICoqcGFnZXMsCj4+ICAgCQlzdHJ1Y3Qgc2dfdGFibGUgKnNndCkKPj4gICB7Cj4+ICsJ c3RydWN0IHhlbl9kcm1fZnJvbnRfZXZ0Y2hubCAqZXZ0Y2hubDsKPj4gKwlzdHJ1Y3QgeGVuX2Ry bV9mcm9udF9zaGJ1ZiAqc2hidWY7Cj4+ICsJc3RydWN0IHhlbmRpc3BsX3JlcSAqcmVxOwo+PiAr CXN0cnVjdCB4ZW5fZHJtX2Zyb250X3NoYnVmX2NmZyBidWZfY2ZnOwo+PiArCXVuc2lnbmVkIGxv bmcgZmxhZ3M7Cj4+ICsJaW50IHJldDsKPj4gKwo+PiArCWV2dGNobmwgPSAmZnJvbnRfaW5mby0+ ZXZ0X3BhaXJzW0dFTkVSSUNfT1BfRVZUX0NITkxdLnJlcTsKPj4gKwlpZiAodW5saWtlbHkoIWV2 dGNobmwpKQo+PiArCQlyZXR1cm4gLUVJTzsKPj4gKwo+PiArCW1lbXNldCgmYnVmX2NmZywgMCwg c2l6ZW9mKGJ1Zl9jZmcpKTsKPj4gKwlidWZfY2ZnLnhiX2RldiA9IGZyb250X2luZm8tPnhiX2Rl djsKPj4gKwlidWZfY2ZnLnBhZ2VzID0gcGFnZXM7Cj4+ICsJYnVmX2NmZy5zaXplID0gc2l6ZTsK Pj4gKwlidWZfY2ZnLnNndCA9IHNndDsKPj4gKwlidWZfY2ZnLmJlX2FsbG9jID0gZnJvbnRfaW5m by0+Y2ZnLmJlX2FsbG9jOwo+PiArCj4+ICsJc2hidWYgPSB4ZW5fZHJtX2Zyb250X3NoYnVmX2Fs bG9jKCZidWZfY2ZnKTsKPj4gKwlpZiAoIXNoYnVmKQo+PiArCQlyZXR1cm4gLUVOT01FTTsKPj4g Kwo+PiArCXJldCA9IGRidWZfYWRkX3RvX2xpc3QoZnJvbnRfaW5mbywgc2hidWYsIGRidWZfY29v a2llKTsKPj4gKwlpZiAocmV0IDwgMCkgewo+PiArCQl4ZW5fZHJtX2Zyb250X3NoYnVmX2ZyZWUo c2hidWYpOwo+PiArCQlyZXR1cm4gcmV0Owo+PiArCX0KPj4gKwo+PiArCW11dGV4X2xvY2soJmZy b250X2luZm8tPnJlcV9pb19sb2NrKTsKPj4gKwo+PiArCXNwaW5fbG9ja19pcnFzYXZlKCZmcm9u dF9pbmZvLT5pb19sb2NrLCBmbGFncyk7Cj4+ICsJcmVxID0gYmVfcHJlcGFyZV9yZXEoZXZ0Y2hu bCwgWEVORElTUExfT1BfREJVRl9DUkVBVEUpOwo+PiArCXJlcS0+b3AuZGJ1Zl9jcmVhdGUuZ3Jl Zl9kaXJlY3RvcnkgPQo+PiArCQkJeGVuX2RybV9mcm9udF9zaGJ1Zl9nZXRfZGlyX3N0YXJ0KHNo YnVmKTsKPj4gKwlyZXEtPm9wLmRidWZfY3JlYXRlLmJ1ZmZlcl9zeiA9IHNpemU7Cj4+ICsJcmVx LT5vcC5kYnVmX2NyZWF0ZS5kYnVmX2Nvb2tpZSA9IGRidWZfY29va2llOwo+PiArCXJlcS0+b3Au ZGJ1Zl9jcmVhdGUud2lkdGggPSB3aWR0aDsKPj4gKwlyZXEtPm9wLmRidWZfY3JlYXRlLmhlaWdo dCA9IGhlaWdodDsKPj4gKwlyZXEtPm9wLmRidWZfY3JlYXRlLmJwcCA9IGJwcDsKPj4gKwlpZiAo YnVmX2NmZy5iZV9hbGxvYykKPj4gKwkJcmVxLT5vcC5kYnVmX2NyZWF0ZS5mbGFncyB8PSBYRU5E SVNQTF9EQlVGX0ZMR19SRVFfQUxMT0M7Cj4+ICsKPj4gKwlyZXQgPSBiZV9zdHJlYW1fZG9faW8o ZXZ0Y2hubCwgcmVxKTsKPj4gKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZmcm9udF9pbmZvLT5p b19sb2NrLCBmbGFncyk7Cj4+ICsKPj4gKwlpZiAocmV0IDwgMCkKPj4gKwkJZ290byBmYWlsOwo+ PiArCj4+ICsJcmV0ID0gYmVfc3RyZWFtX3dhaXRfaW8oZXZ0Y2hubCk7Cj4+ICsJaWYgKHJldCA8 IDApCj4+ICsJCWdvdG8gZmFpbDsKPj4gKwo+PiArCXJldCA9IHhlbl9kcm1fZnJvbnRfc2hidWZf bWFwKHNoYnVmKTsKPj4gKwlpZiAocmV0IDwgMCkKPj4gKwkJZ290byBmYWlsOwo+PiArCj4+ICsJ bXV0ZXhfdW5sb2NrKCZmcm9udF9pbmZvLT5yZXFfaW9fbG9jayk7Cj4+ICAgCXJldHVybiAwOwo+ PiArCj4+ICtmYWlsOgo+PiArCW11dGV4X3VubG9jaygmZnJvbnRfaW5mby0+cmVxX2lvX2xvY2sp Owo+PiArCWRidWZfZnJlZSgmZnJvbnRfaW5mby0+ZGJ1Zl9saXN0LCBkYnVmX2Nvb2tpZSk7Cj4+ ICsJcmV0dXJuIHJldDsKPj4gICB9Cj4+ICAgCj4+ICAgc3RhdGljIGludCBiZV9kYnVmX2NyZWF0 ZV9mcm9tX3NndChzdHJ1Y3QgeGVuX2RybV9mcm9udF9pbmZvICpmcm9udF9pbmZvLAo+PiBAQCAt NjYsMjYgKzI2MiwxNDQgQEAgc3RhdGljIGludCBiZV9kYnVmX2NyZWF0ZV9mcm9tX3BhZ2VzKHN0 cnVjdCB4ZW5fZHJtX2Zyb250X2luZm8gKmZyb250X2luZm8sCj4+ICAgc3RhdGljIGludCBiZV9k YnVmX2Rlc3Ryb3koc3RydWN0IHhlbl9kcm1fZnJvbnRfaW5mbyAqZnJvbnRfaW5mbywKPj4gICAJ CXVpbnQ2NF90IGRidWZfY29va2llKQo+PiAgIHsKPj4gLQlyZXR1cm4gMDsKPj4gKwlzdHJ1Y3Qg eGVuX2RybV9mcm9udF9ldnRjaG5sICpldnRjaG5sOwo+PiArCXN0cnVjdCB4ZW5kaXNwbF9yZXEg KnJlcTsKPj4gKwl1bnNpZ25lZCBsb25nIGZsYWdzOwo+PiArCWJvb2wgYmVfYWxsb2M7Cj4+ICsJ aW50IHJldDsKPj4gKwo+PiArCWV2dGNobmwgPSAmZnJvbnRfaW5mby0+ZXZ0X3BhaXJzW0dFTkVS SUNfT1BfRVZUX0NITkxdLnJlcTsKPj4gKwlpZiAodW5saWtlbHkoIWV2dGNobmwpKQo+PiArCQly ZXR1cm4gLUVJTzsKPj4gKwo+PiArCWJlX2FsbG9jID0gZnJvbnRfaW5mby0+Y2ZnLmJlX2FsbG9j Owo+PiArCj4+ICsJLyoKPj4gKwkgKiBmb3IgdGhlIGJhY2tlbmQgYWxsb2NhdGVkIGJ1ZmZlciBy ZWxlYXNlIHJlZmVyZW5jZXMgbm93LCBzbyBiYWNrZW5kCj4+ICsJICogY2FuIGZyZWUgdGhlIGJ1 ZmZlcgo+PiArCSAqLwo+PiArCWlmIChiZV9hbGxvYykKPj4gKwkJZGJ1Zl9mcmVlKCZmcm9udF9p bmZvLT5kYnVmX2xpc3QsIGRidWZfY29va2llKTsKPj4gKwo+PiArCW11dGV4X2xvY2soJmZyb250 X2luZm8tPnJlcV9pb19sb2NrKTsKPj4gKwo+PiArCXNwaW5fbG9ja19pcnFzYXZlKCZmcm9udF9p bmZvLT5pb19sb2NrLCBmbGFncyk7Cj4+ICsJcmVxID0gYmVfcHJlcGFyZV9yZXEoZXZ0Y2hubCwg WEVORElTUExfT1BfREJVRl9ERVNUUk9ZKTsKPj4gKwlyZXEtPm9wLmRidWZfZGVzdHJveS5kYnVm X2Nvb2tpZSA9IGRidWZfY29va2llOwo+PiArCj4+ICsJcmV0ID0gYmVfc3RyZWFtX2RvX2lvKGV2 dGNobmwsIHJlcSk7Cj4+ICsJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZnJvbnRfaW5mby0+aW9f bG9jaywgZmxhZ3MpOwo+PiArCj4+ICsJaWYgKHJldCA9PSAwKQo+PiArCQlyZXQgPSBiZV9zdHJl YW1fd2FpdF9pbyhldnRjaG5sKTsKPj4gKwo+PiArCS8qCj4+ICsJICogZG8gdGhpcyByZWdhcmRs ZXNzIG9mIGNvbW11bmljYXRpb24gc3RhdHVzIHdpdGggdGhlIGJhY2tlbmQ6Cj4+ICsJICogaWYg d2UgY2Fubm90IHJlbW92ZSByZW1vdGUgcmVzb3VyY2VzIHJlbW92ZSB3aGF0IHdlIGNhbiBsb2Nh bGx5Cj4+ICsJICovCj4+ICsJaWYgKCFiZV9hbGxvYykKPj4gKwkJZGJ1Zl9mcmVlKCZmcm9udF9p bmZvLT5kYnVmX2xpc3QsIGRidWZfY29va2llKTsKPj4gKwo+PiArCW11dGV4X3VubG9jaygmZnJv bnRfaW5mby0+cmVxX2lvX2xvY2spOwo+PiArCXJldHVybiByZXQ7Cj4+ICAgfQo+PiAgIAo+PiAg IHN0YXRpYyBpbnQgYmVfZmJfYXR0YWNoKHN0cnVjdCB4ZW5fZHJtX2Zyb250X2luZm8gKmZyb250 X2luZm8sCj4+ICAgCQl1aW50NjRfdCBkYnVmX2Nvb2tpZSwgdWludDY0X3QgZmJfY29va2llLCB1 aW50MzJfdCB3aWR0aCwKPj4gICAJCXVpbnQzMl90IGhlaWdodCwgdWludDMyX3QgcGl4ZWxfZm9y bWF0KQo+PiAgIHsKPj4gLQlyZXR1cm4gMDsKPj4gKwlzdHJ1Y3QgeGVuX2RybV9mcm9udF9ldnRj aG5sICpldnRjaG5sOwo+PiArCXN0cnVjdCB4ZW5fZHJtX2Zyb250X2RidWYgKmJ1ZjsKPj4gKwlz dHJ1Y3QgeGVuZGlzcGxfcmVxICpyZXE7Cj4+ICsJdW5zaWduZWQgbG9uZyBmbGFnczsKPj4gKwlp bnQgcmV0Owo+PiArCj4+ICsJZXZ0Y2hubCA9ICZmcm9udF9pbmZvLT5ldnRfcGFpcnNbR0VORVJJ Q19PUF9FVlRfQ0hOTF0ucmVxOwo+PiArCWlmICh1bmxpa2VseSghZXZ0Y2hubCkpCj4+ICsJCXJl dHVybiAtRUlPOwo+PiArCj4+ICsJYnVmID0gZGJ1Zl9nZXQoJmZyb250X2luZm8tPmRidWZfbGlz dCwgZGJ1Zl9jb29raWUpOwo+PiArCWlmICghYnVmKQo+PiArCQlyZXR1cm4gLUVJTlZBTDsKPj4g Kwo+PiArCWJ1Zi0+ZmJfY29va2llID0gZmJfY29va2llOwo+PiArCj4+ICsJbXV0ZXhfbG9jaygm ZnJvbnRfaW5mby0+cmVxX2lvX2xvY2spOwo+PiArCj4+ICsJc3Bpbl9sb2NrX2lycXNhdmUoJmZy b250X2luZm8tPmlvX2xvY2ssIGZsYWdzKTsKPj4gKwlyZXEgPSBiZV9wcmVwYXJlX3JlcShldnRj aG5sLCBYRU5ESVNQTF9PUF9GQl9BVFRBQ0gpOwo+PiArCXJlcS0+b3AuZmJfYXR0YWNoLmRidWZf Y29va2llID0gZGJ1Zl9jb29raWU7Cj4+ICsJcmVxLT5vcC5mYl9hdHRhY2guZmJfY29va2llID0g ZmJfY29va2llOwo+PiArCXJlcS0+b3AuZmJfYXR0YWNoLndpZHRoID0gd2lkdGg7Cj4+ICsJcmVx LT5vcC5mYl9hdHRhY2guaGVpZ2h0ID0gaGVpZ2h0Owo+PiArCXJlcS0+b3AuZmJfYXR0YWNoLnBp eGVsX2Zvcm1hdCA9IHBpeGVsX2Zvcm1hdDsKPj4gKwo+PiArCXJldCA9IGJlX3N0cmVhbV9kb19p byhldnRjaG5sLCByZXEpOwo+PiArCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmZyb250X2luZm8t PmlvX2xvY2ssIGZsYWdzKTsKPj4gKwo+PiArCWlmIChyZXQgPT0gMCkKPj4gKwkJcmV0ID0gYmVf c3RyZWFtX3dhaXRfaW8oZXZ0Y2hubCk7Cj4+ICsKPj4gKwltdXRleF91bmxvY2soJmZyb250X2lu Zm8tPnJlcV9pb19sb2NrKTsKPj4gKwlyZXR1cm4gcmV0Owo+PiAgIH0KPj4gICAKPj4gICBzdGF0 aWMgaW50IGJlX2ZiX2RldGFjaChzdHJ1Y3QgeGVuX2RybV9mcm9udF9pbmZvICpmcm9udF9pbmZv LAo+PiAgIAkJdWludDY0X3QgZmJfY29va2llKQo+PiAgIHsKPj4gLQlyZXR1cm4gMDsKPj4gKwlz dHJ1Y3QgeGVuX2RybV9mcm9udF9ldnRjaG5sICpldnRjaG5sOwo+PiArCXN0cnVjdCB4ZW5kaXNw bF9yZXEgKnJlcTsKPj4gKwl1bnNpZ25lZCBsb25nIGZsYWdzOwo+PiArCWludCByZXQ7Cj4+ICsK Pj4gKwlldnRjaG5sID0gJmZyb250X2luZm8tPmV2dF9wYWlyc1tHRU5FUklDX09QX0VWVF9DSE5M XS5yZXE7Cj4+ICsJaWYgKHVubGlrZWx5KCFldnRjaG5sKSkKPj4gKwkJcmV0dXJuIC1FSU87Cj4+ ICsKPj4gKwltdXRleF9sb2NrKCZmcm9udF9pbmZvLT5yZXFfaW9fbG9jayk7Cj4+ICsKPj4gKwlz cGluX2xvY2tfaXJxc2F2ZSgmZnJvbnRfaW5mby0+aW9fbG9jaywgZmxhZ3MpOwo+PiArCXJlcSA9 IGJlX3ByZXBhcmVfcmVxKGV2dGNobmwsIFhFTkRJU1BMX09QX0ZCX0RFVEFDSCk7Cj4+ICsJcmVx LT5vcC5mYl9kZXRhY2guZmJfY29va2llID0gZmJfY29va2llOwo+PiArCj4+ICsJcmV0ID0gYmVf c3RyZWFtX2RvX2lvKGV2dGNobmwsIHJlcSk7Cj4+ICsJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgm ZnJvbnRfaW5mby0+aW9fbG9jaywgZmxhZ3MpOwo+PiArCj4+ICsJaWYgKHJldCA9PSAwKQo+PiAr CQlyZXQgPSBiZV9zdHJlYW1fd2FpdF9pbyhldnRjaG5sKTsKPj4gKwo+PiArCW11dGV4X3VubG9j aygmZnJvbnRfaW5mby0+cmVxX2lvX2xvY2spOwo+PiArCXJldHVybiByZXQ7Cj4+ICAgfQo+PiAg IAo+PiAgIHN0YXRpYyBpbnQgYmVfcGFnZV9mbGlwKHN0cnVjdCB4ZW5fZHJtX2Zyb250X2luZm8g KmZyb250X2luZm8sIGludCBjb25uX2lkeCwKPj4gICAJCXVpbnQ2NF90IGZiX2Nvb2tpZSkKPj4g ICB7Cj4+IC0JcmV0dXJuIDA7Cj4+ICsJc3RydWN0IHhlbl9kcm1fZnJvbnRfZXZ0Y2hubCAqZXZ0 Y2hubDsKPj4gKwlzdHJ1Y3QgeGVuZGlzcGxfcmVxICpyZXE7Cj4+ICsJdW5zaWduZWQgbG9uZyBm bGFnczsKPj4gKwlpbnQgcmV0Owo+PiArCj4+ICsJaWYgKHVubGlrZWx5KGNvbm5faWR4ID49IGZy b250X2luZm8tPm51bV9ldnRfcGFpcnMpKQo+PiArCQlyZXR1cm4gLUVJTlZBTDsKPj4gKwo+PiAr CWRidWZfZmx1c2hfZmIoJmZyb250X2luZm8tPmRidWZfbGlzdCwgZmJfY29va2llKTsKPj4gKwll dnRjaG5sID0gJmZyb250X2luZm8tPmV2dF9wYWlyc1tjb25uX2lkeF0ucmVxOwo+PiArCj4+ICsJ bXV0ZXhfbG9jaygmZnJvbnRfaW5mby0+cmVxX2lvX2xvY2spOwo+PiArCj4+ICsJc3Bpbl9sb2Nr X2lycXNhdmUoJmZyb250X2luZm8tPmlvX2xvY2ssIGZsYWdzKTsKPj4gKwlyZXEgPSBiZV9wcmVw YXJlX3JlcShldnRjaG5sLCBYRU5ESVNQTF9PUF9QR19GTElQKTsKPj4gKwlyZXEtPm9wLnBnX2Zs aXAuZmJfY29va2llID0gZmJfY29va2llOwo+PiArCj4+ICsJcmV0ID0gYmVfc3RyZWFtX2RvX2lv KGV2dGNobmwsIHJlcSk7Cj4+ICsJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZnJvbnRfaW5mby0+ aW9fbG9jaywgZmxhZ3MpOwo+PiArCj4+ICsJaWYgKHJldCA9PSAwKQo+PiArCQlyZXQgPSBiZV9z dHJlYW1fd2FpdF9pbyhldnRjaG5sKTsKPj4gKwo+PiArCW11dGV4X3VubG9jaygmZnJvbnRfaW5m by0+cmVxX2lvX2xvY2spOwo+PiArCXJldHVybiByZXQ7Cj4+ICAgfQo+PiAgIAo+PiAgIHN0YXRp YyB2b2lkIHhlbl9kcm1fZHJ2X3VubG9hZChzdHJ1Y3QgeGVuX2RybV9mcm9udF9pbmZvICpmcm9u dF9pbmZvKQo+PiBAQCAtMTgzLDYgKzQ5Nyw3IEBAIHN0YXRpYyB2b2lkIHhlbl9kcnZfcmVtb3Zl X2ludGVybmFsKHN0cnVjdCB4ZW5fZHJtX2Zyb250X2luZm8gKmZyb250X2luZm8pCj4+ICAgewo+ PiAgIAl4ZW5fZHJtX2Rydl9kZWluaXQoZnJvbnRfaW5mbyk7Cj4+ICAgCXhlbl9kcm1fZnJvbnRf ZXZ0Y2hubF9mcmVlX2FsbChmcm9udF9pbmZvKTsKPj4gKwlkYnVmX2ZyZWVfYWxsKCZmcm9udF9p bmZvLT5kYnVmX2xpc3QpOwo+PiAgIH0KPj4gICAKPj4gICBzdGF0aWMgaW50IGJhY2tlbmRfb25f aW5pdHdhaXQoc3RydWN0IHhlbl9kcm1fZnJvbnRfaW5mbyAqZnJvbnRfaW5mbykKPj4gQEAgLTMx MCw2ICs2MjUsOCBAQCBzdGF0aWMgaW50IHhlbl9kcnZfcHJvYmUoc3RydWN0IHhlbmJ1c19kZXZp Y2UgKnhiX2RldiwKPj4gICAKPj4gICAJZnJvbnRfaW5mby0+eGJfZGV2ID0geGJfZGV2Owo+PiAg IAlzcGluX2xvY2tfaW5pdCgmZnJvbnRfaW5mby0+aW9fbG9jayk7Cj4+ICsJbXV0ZXhfaW5pdCgm ZnJvbnRfaW5mby0+cmVxX2lvX2xvY2spOwo+PiArCUlOSVRfTElTVF9IRUFEKCZmcm9udF9pbmZv LT5kYnVmX2xpc3QpOwo+PiAgIAlmcm9udF9pbmZvLT5kcm1fcGRydl9yZWdpc3RlcmVkID0gZmFs c2U7Cj4+ICAgCWRldl9zZXRfZHJ2ZGF0YSgmeGJfZGV2LT5kZXYsIGZyb250X2luZm8pOwo+PiAg IAlyZXR1cm4geGVuYnVzX3N3aXRjaF9zdGF0ZSh4Yl9kZXYsIFhlbmJ1c1N0YXRlSW5pdGlhbGlz aW5nKTsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udC5o IGIvZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5fZHJtX2Zyb250LmgKPj4gaW5kZXggYzZmNTJjODky NDM0Li5kYjMyZDAwMTQ1ZDEgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVu X2RybV9mcm9udC5oCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udC5o Cj4+IEBAIC0xMzcsNiArMTM3LDggQEAgc3RydWN0IHhlbl9kcm1fZnJvbnRfaW5mbyB7Cj4+ICAg CXN0cnVjdCB4ZW5idXNfZGV2aWNlICp4Yl9kZXY7Cj4+ICAgCS8qIHRvIHByb3RlY3QgZGF0YSBi ZXR3ZWVuIGJhY2tlbmQgSU8gY29kZSBhbmQgaW50ZXJydXB0IGhhbmRsZXIgKi8KPj4gICAJc3Bp bmxvY2tfdCBpb19sb2NrOwo+PiArCS8qIHNlcmlhbGl6ZXIgZm9yIGJhY2tlbmQgSU86IHJlcXVl c3QvcmVzcG9uc2UgKi8KPj4gKwlzdHJ1Y3QgbXV0ZXggcmVxX2lvX2xvY2s7Cj4+ICAgCWJvb2wg ZHJtX3BkcnZfcmVnaXN0ZXJlZDsKPj4gICAJLyogdmlydHVhbCBEUk0gcGxhdGZvcm0gZGV2aWNl ICovCj4+ICAgCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmRybV9wZGV2Owo+PiBAQCAtMTQ0LDYg KzE0Niw5IEBAIHN0cnVjdCB4ZW5fZHJtX2Zyb250X2luZm8gewo+PiAgIAlpbnQgbnVtX2V2dF9w YWlyczsKPj4gICAJc3RydWN0IHhlbl9kcm1fZnJvbnRfZXZ0Y2hubF9wYWlyICpldnRfcGFpcnM7 Cj4+ICAgCXN0cnVjdCB4ZW5fZHJtX2Zyb250X2NmZyBjZmc7Cj4+ICsKPj4gKwkvKiBkaXNwbGF5 IGJ1ZmZlcnMgKi8KPj4gKwlzdHJ1Y3QgbGlzdF9oZWFkIGRidWZfbGlzdDsKPj4gICB9Owo+PiAg IAo+PiAgICNlbmRpZiAvKiBfX1hFTl9EUk1fRlJPTlRfSF8gKi8KPj4gLS0gCj4+IDIuNy40Cj4+ Cj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+IGRy aS1kZXZlbCBtYWlsaW5nIGxpc3QKPj4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZl bAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1k ZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8v bGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=