From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: Re: [PATCH 7/9] drm/xen-front: Implement KMS/connector handling Date: Tue, 6 Mar 2018 09:29:22 +0200 Message-ID: References: <1519200222-20623-1-git-send-email-andr2000@gmail.com> <1519200222-20623-8-git-send-email-andr2000@gmail.com> <20180305092353.GI22212@phenom.ffwll.local> <8132411b-ee50-fe42-2e62-8816a1f85433@gmail.com> <20180306072205.GP22212@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail-lf0-x230.google.com (mail-lf0-x230.google.com [IPv6:2a00:1450:4010:c07::230]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7EF3189EEB for ; Tue, 6 Mar 2018 07:29:26 +0000 (UTC) Received: by mail-lf0-x230.google.com with SMTP id v9so26893421lfa.11 for ; Mon, 05 Mar 2018 23:29:26 -0800 (PST) In-Reply-To: <20180306072205.GP22212@phenom.ffwll.local> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: 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, Oleksandr Andrushchenko List-Id: dri-devel@lists.freedesktop.org T24gMDMvMDYvMjAxOCAwOToyMiBBTSwgRGFuaWVsIFZldHRlciB3cm90ZToKPiBPbiBNb24sIE1h ciAwNSwgMjAxOCBhdCAwMjo1OToyM1BNICswMjAwLCBPbGVrc2FuZHIgQW5kcnVzaGNoZW5rbyB3 cm90ZToKPj4gT24gMDMvMDUvMjAxOCAxMToyMyBBTSwgRGFuaWVsIFZldHRlciB3cm90ZToKPj4+ IE9uIFdlZCwgRmViIDIxLCAyMDE4IGF0IDEwOjAzOjQwQU0gKzAyMDAsIE9sZWtzYW5kciBBbmRy dXNoY2hlbmtvIHdyb3RlOgo+Pj4+IEZyb206IE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIDxvbGVr c2FuZHJfYW5kcnVzaGNoZW5rb0BlcGFtLmNvbT4KPj4+Pgo+Pj4+IEltcGxlbWVudCBrZXJuZWwg bW9kZXNldGlpbmcvY29ubmVjdG9yIGhhbmRsaW5nIHVzaW5nCj4+Pj4gRFJNIHNpbXBsZSBLTVMg aGVscGVyIHBpcGVsaW5lOgo+Pj4+Cj4+Pj4gLSBpbXBsZW1lbnQgS01TIHBhcnQgb2YgdGhlIGRy aXZlciB3aXRoIHRoZSBoZWxwIG9mIERSTQo+Pj4+ICAgICBzaW1wbGUgcGlwZXBsaW5lIGhlbHBl ciB3aGljaCBpcyBwb3NzaWJsZSBkdWUgdG8gdGhlIGZhY3QKPj4+PiAgICAgdGhhdCB0aGUgcGFy YS12aXJ0dWFsaXplZCBkcml2ZXIgb25seSBzdXBwb3J0cyBhIHNpbmdsZQo+Pj4+ICAgICAocHJp bWFyeSkgcGxhbmU6Cj4+Pj4gICAgIC0gaW5pdGlhbGl6ZSBjb25uZWN0b3JzIGFjY29yZGluZyB0 byBYZW5TdG9yZSBjb25maWd1cmF0aW9uCj4+Pj4gICAgIC0gaGFuZGxlIGZyYW1lIGRvbmUgZXZl bnRzIGZyb20gdGhlIGJhY2tlbmQKPj4+PiAgICAgLSBnZW5lcmF0ZSB2YmxhbmsgZXZlbnRzCj4+ Pj4gICAgIC0gY3JlYXRlIGFuZCBkZXN0cm95IGZyYW1lIGJ1ZmZlcnMgYW5kIHByb3BhZ2F0ZSB0 aG9zZQo+Pj4+ICAgICAgIHRvIHRoZSBiYWNrZW5kCj4+Pj4gICAgIC0gcHJvcGFnYXRlIHNldC9y ZXNldCBtb2RlIGNvbmZpZ3VyYXRpb24gdG8gdGhlIGJhY2tlbmQgb24gZGlzcGxheQo+Pj4+ICAg ICAgIGVuYWJsZS9kaXNhYmxlIGNhbGxiYWNrcwo+Pj4+ICAgICAtIHNlbmQgcGFnZSBmbGlwIHJl cXVlc3QgdG8gdGhlIGJhY2tlbmQgYW5kIGltcGxlbWVudCBsb2dpYyBmb3IKPj4+PiAgICAgICBy ZXBvcnRpbmcgYmFja2VuZCBJTyBlcnJvcnMgb24gcHJlcGFyZSBmYiBjYWxsYmFjawo+Pj4+Cj4+ Pj4gLSBpbXBsZW1lbnQgdmlydHVhbCBjb25uZWN0b3IgaGFuZGxpbmc6Cj4+Pj4gICAgIC0gc3Vw cG9ydCBvbmx5IHBpeGVsIGZvcm1hdHMgc3VpdGFibGUgZm9yIHNpbmdsZSBwbGFuZSBtb2Rlcwo+ Pj4+ICAgICAtIG1ha2Ugc3VyZSB0aGUgY29ubmVjdG9yIGlzIGFsd2F5cyBjb25uZWN0ZWQKPj4+ PiAgICAgLSBzdXBwb3J0IGEgc2luZ2xlIHZpZGVvIG1vZGUgYXMgcGVyIHBhcmEtdmlydHVhbGl6 ZWQgZHJpdmVyCj4+Pj4gICAgICAgY29uZmlndXJhdGlvbgo+Pj4+Cj4+Pj4gU2lnbmVkLW9mZi1i eTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVwYW0u Y29tPgo+Pj4gSSB0aGluayBvbmNlIHlvdSd2ZSByZW1vdmVkIHRoZSBtaWRsYXllciBpbiB0aGUg cHJldmlvdXMgcGF0Y2ggaXQgd291bGQKPj4+IG1ha2VzIHNlbnNlIHRvIG1lcmdlIHRoZSAyIHBh dGNoZXMgaW50byAxLgo+PiBvaywgd2lsbCBzcXVhc2ggdGhlIHR3bwo+Pj4gQnVuY2ggbW9yZSBj b21tZW50cyBiZWxvdy4KPj4+IC1EYW5pZWwKPj4+Cj4+Pj4gLS0tCj4+Pj4gICAgZHJpdmVycy9n cHUvZHJtL3hlbi9NYWtlZmlsZSAgICAgICAgICAgICB8ICAgMiArCj4+Pj4gICAgZHJpdmVycy9n cHUvZHJtL3hlbi94ZW5fZHJtX2Zyb250X2Nvbm4uYyB8IDEyNSArKysrKysrKysrKysrCj4+Pj4g ICAgZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5fZHJtX2Zyb250X2Nvbm4uaCB8ICAzNSArKysrCj4+ Pj4gICAgZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5fZHJtX2Zyb250X2Rydi5jICB8ICAxNSArKwo+ Pj4+ICAgIGRyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udF9kcnYuaCAgfCAgMTIgKysK Pj4+PiAgICBkcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnRfa21zLmMgIHwgMjk5ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPj4+PiAgICBkcml2ZXJzL2dwdS9kcm0veGVu L3hlbl9kcm1fZnJvbnRfa21zLmggIHwgIDMwICsrKysKPj4+PiAgICA3IGZpbGVzIGNoYW5nZWQs IDUxOCBpbnNlcnRpb25zKCspCj4+Pj4gICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1 L2RybS94ZW4veGVuX2RybV9mcm9udF9jb25uLmMKPj4+PiAgICBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5fZHJtX2Zyb250X2Nvbm4uaAo+Pj4+ICAgIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnRfa21zLmMKPj4+PiAg ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5fZHJtX2Zyb250X2tt cy5oCj4+Pj4KPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlbi9NYWtlZmlsZSBi L2RyaXZlcnMvZ3B1L2RybS94ZW4vTWFrZWZpbGUKPj4+PiBpbmRleCBkMzA2ODIwMjU5MGYuLjRm Y2IwZGExYTljNSAxMDA2NDQKPj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0veGVuL01ha2VmaWxl Cj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlbi9NYWtlZmlsZQo+Pj4+IEBAIC0yLDYgKzIs OCBAQAo+Pj4+ICAgIGRybV94ZW5fZnJvbnQtb2JqcyA6PSB4ZW5fZHJtX2Zyb250Lm8gXAo+Pj4+ ICAgIAkJICAgICAgeGVuX2RybV9mcm9udF9kcnYubyBcCj4+Pj4gKwkJICAgICAgeGVuX2RybV9m cm9udF9rbXMubyBcCj4+Pj4gKwkJICAgICAgeGVuX2RybV9mcm9udF9jb25uLm8gXAo+Pj4+ICAg IAkJICAgICAgeGVuX2RybV9mcm9udF9ldnRjaG5sLm8gXAo+Pj4+ICAgIAkJICAgICAgeGVuX2Ry bV9mcm9udF9zaGJ1Zi5vIFwKPj4+PiAgICAJCSAgICAgIHhlbl9kcm1fZnJvbnRfY2ZnLm8KPj4+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5fZHJtX2Zyb250X2Nvbm4uYyBi L2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udF9jb25uLmMKPj4+PiBuZXcgZmlsZSBt b2RlIDEwMDY0NAo+Pj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uZDk5ODZhMmUxYTNiCj4+Pj4gLS0t IC9kZXYvbnVsbAo+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udF9j b25uLmMKPj4+PiBAQCAtMCwwICsxLDEyNSBAQAo+Pj4+ICsvKgo+Pj4+ICsgKiAgWGVuIHBhcmEt dmlydHVhbCBEUk0gZGV2aWNlCj4+Pj4gKyAqCj4+Pj4gKyAqICAgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKPj4+PiAr ICogICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQo+Pj4+ICsgKiAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCj4+Pj4gKyAqICAgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPj4+PiArICoKPj4+PiArICogICBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKPj4+ PiArICogICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgo+Pj4+ICsgKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKPj4+PiArICogICBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+Pj4+ICsgKgo+Pj4+ICsgKiBDb3B5cmlnaHQg KEMpIDIwMTYtMjAxOCBFUEFNIFN5c3RlbXMgSW5jLgo+Pj4+ICsgKgo+Pj4+ICsgKiBBdXRob3I6 IE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIDxvbGVrc2FuZHJfYW5kcnVzaGNoZW5rb0BlcGFtLmNv bT4KPj4+PiArICovCj4+Pj4gKwo+Pj4+ICsjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVy Lmg+Cj4+Pj4gKyNpbmNsdWRlIDxkcm0vZHJtX2NydGNfaGVscGVyLmg+Cj4+Pj4gKwo+Pj4+ICsj aW5jbHVkZSA8dmlkZW8vdmlkZW9tb2RlLmg+Cj4+Pj4gKwo+Pj4+ICsjaW5jbHVkZSAieGVuX2Ry bV9mcm9udF9jb25uLmgiCj4+Pj4gKyNpbmNsdWRlICJ4ZW5fZHJtX2Zyb250X2Rydi5oIgo+Pj4+ ICsKPj4+PiArc3RhdGljIHN0cnVjdCB4ZW5fZHJtX2Zyb250X2RybV9waXBlbGluZSAqCj4+Pj4g K3RvX3hlbl9kcm1fcGlwZWxpbmUoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKPj4+ PiArewo+Pj4+ICsJcmV0dXJuIGNvbnRhaW5lcl9vZihjb25uZWN0b3IsIHN0cnVjdCB4ZW5fZHJt X2Zyb250X2RybV9waXBlbGluZSwgY29ubik7Cj4+Pj4gK30KPj4+PiArCj4+Pj4gK3N0YXRpYyBj b25zdCB1aW50MzJfdCBwbGFuZV9mb3JtYXRzW10gPSB7Cj4+Pj4gKwlEUk1fRk9STUFUX1JHQjU2 NSwKPj4+PiArCURSTV9GT1JNQVRfUkdCODg4LAo+Pj4+ICsJRFJNX0ZPUk1BVF9YUkdCODg4OCwK Pj4+PiArCURSTV9GT1JNQVRfQVJHQjg4ODgsCj4+Pj4gKwlEUk1fRk9STUFUX1hSR0I0NDQ0LAo+ Pj4+ICsJRFJNX0ZPUk1BVF9BUkdCNDQ0NCwKPj4+PiArCURSTV9GT1JNQVRfWFJHQjE1NTUsCj4+ Pj4gKwlEUk1fRk9STUFUX0FSR0IxNTU1LAo+Pj4+ICt9Owo+Pj4+ICsKPj4+PiArY29uc3QgdWlu dDMyX3QgKnhlbl9kcm1fZnJvbnRfY29ubl9nZXRfZm9ybWF0cyhpbnQgKmZvcm1hdF9jb3VudCkK Pj4+PiArewo+Pj4+ICsJKmZvcm1hdF9jb3VudCA9IEFSUkFZX1NJWkUocGxhbmVfZm9ybWF0cyk7 Cj4+Pj4gKwlyZXR1cm4gcGxhbmVfZm9ybWF0czsKPj4+PiArfQo+Pj4+ICsKPj4+PiArc3RhdGlj IGVudW0gZHJtX2Nvbm5lY3Rvcl9zdGF0dXMgY29ubmVjdG9yX2RldGVjdCgKPj4+PiArCQlzdHJ1 Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBib29sIGZvcmNlKQo+Pj4+ICt7Cj4+Pj4gKwlp ZiAoZHJtX2Rldl9pc191bnBsdWdnZWQoY29ubmVjdG9yLT5kZXYpKQo+Pj4+ICsJCXJldHVybiBj b25uZWN0b3Jfc3RhdHVzX2Rpc2Nvbm5lY3RlZDsKPj4+PiArCj4+Pj4gKwlyZXR1cm4gY29ubmVj dG9yX3N0YXR1c19jb25uZWN0ZWQ7Cj4+Pj4gK30KPj4+PiArCj4+Pj4gKyNkZWZpbmUgWEVOX0RS TV9OVU1fVklERU9fTU9ERVMJCTEKPj4+PiArI2RlZmluZSBYRU5fRFJNX0NSVENfVlJFRlJFU0hf SFoJNjAKPj4+PiArCj4+Pj4gK3N0YXRpYyBpbnQgY29ubmVjdG9yX2dldF9tb2RlcyhzdHJ1Y3Qg ZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+Pj4+ICt7Cj4+Pj4gKwlzdHJ1Y3QgeGVuX2RybV9m cm9udF9kcm1fcGlwZWxpbmUgKnBpcGVsaW5lID0KPj4+PiArCQl0b194ZW5fZHJtX3BpcGVsaW5l KGNvbm5lY3Rvcik7Cj4+Pj4gKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZTsKPj4+PiAr CXN0cnVjdCB2aWRlb21vZGUgdmlkZW9tb2RlOwo+Pj4+ICsJaW50IHdpZHRoLCBoZWlnaHQ7Cj4+ Pj4gKwo+Pj4+ICsJbW9kZSA9IGRybV9tb2RlX2NyZWF0ZShjb25uZWN0b3ItPmRldik7Cj4+Pj4g KwlpZiAoIW1vZGUpCj4+Pj4gKwkJcmV0dXJuIDA7Cj4+Pj4gKwo+Pj4+ICsJbWVtc2V0KCZ2aWRl b21vZGUsIDAsIHNpemVvZih2aWRlb21vZGUpKTsKPj4+PiArCXZpZGVvbW9kZS5oYWN0aXZlID0g cGlwZWxpbmUtPndpZHRoOwo+Pj4+ICsJdmlkZW9tb2RlLnZhY3RpdmUgPSBwaXBlbGluZS0+aGVp Z2h0Owo+Pj4+ICsJd2lkdGggPSB2aWRlb21vZGUuaGFjdGl2ZSArIHZpZGVvbW9kZS5oZnJvbnRf cG9yY2ggKwo+Pj4+ICsJCXZpZGVvbW9kZS5oYmFja19wb3JjaCArIHZpZGVvbW9kZS5oc3luY19s ZW47Cj4+Pj4gKwloZWlnaHQgPSB2aWRlb21vZGUudmFjdGl2ZSArIHZpZGVvbW9kZS52ZnJvbnRf cG9yY2ggKwo+Pj4+ICsJCXZpZGVvbW9kZS52YmFja19wb3JjaCArIHZpZGVvbW9kZS52c3luY19s ZW47Cj4+Pj4gKwl2aWRlb21vZGUucGl4ZWxjbG9jayA9IHdpZHRoICogaGVpZ2h0ICogWEVOX0RS TV9DUlRDX1ZSRUZSRVNIX0haOwo+Pj4+ICsJbW9kZS0+dHlwZSA9IERSTV9NT0RFX1RZUEVfUFJF RkVSUkVEIHwgRFJNX01PREVfVFlQRV9EUklWRVI7Cj4+Pj4gKwo+Pj4+ICsJZHJtX2Rpc3BsYXlf bW9kZV9mcm9tX3ZpZGVvbW9kZSgmdmlkZW9tb2RlLCBtb2RlKTsKPj4+PiArCWRybV9tb2RlX3By b2JlZF9hZGQoY29ubmVjdG9yLCBtb2RlKTsKPj4+PiArCXJldHVybiBYRU5fRFJNX05VTV9WSURF T19NT0RFUzsKPj4+PiArfQo+Pj4+ICsKPj4+PiArc3RhdGljIGludCBjb25uZWN0b3JfbW9kZV92 YWxpZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+Pj4+ICsJCXN0cnVjdCBkcm1f ZGlzcGxheV9tb2RlICptb2RlKQo+Pj4+ICt7Cj4+Pj4gKwlzdHJ1Y3QgeGVuX2RybV9mcm9udF9k cm1fcGlwZWxpbmUgKnBpcGVsaW5lID0KPj4+PiArCQkJdG9feGVuX2RybV9waXBlbGluZShjb25u ZWN0b3IpOwo+Pj4+ICsKPj4+PiArCWlmIChtb2RlLT5oZGlzcGxheSAhPSBwaXBlbGluZS0+d2lk dGgpCj4+Pj4gKwkJcmV0dXJuIE1PREVfRVJST1I7Cj4+Pj4gKwo+Pj4+ICsJaWYgKG1vZGUtPnZk aXNwbGF5ICE9IHBpcGVsaW5lLT5oZWlnaHQpCj4+Pj4gKwkJcmV0dXJuIE1PREVfRVJST1I7Cj4+ Pj4gKwo+Pj4+ICsJcmV0dXJuIE1PREVfT0s7Cj4+Pj4gK30KPj4+PiArCj4+Pj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgY29ubmVjdG9yX2hlbHBlcl9m dW5jcyA9IHsKPj4+PiArCS5nZXRfbW9kZXMgPSBjb25uZWN0b3JfZ2V0X21vZGVzLAo+Pj4+ICsJ Lm1vZGVfdmFsaWQgPSBjb25uZWN0b3JfbW9kZV92YWxpZCwKPj4+PiArfTsKPj4+PiArCj4+Pj4g K3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyBjb25uZWN0b3JfZnVuY3Mg PSB7Cj4+Pj4gKwkuZGV0ZWN0ID0gY29ubmVjdG9yX2RldGVjdCwKPj4+PiArCS5maWxsX21vZGVz ID0gZHJtX2hlbHBlcl9wcm9iZV9zaW5nbGVfY29ubmVjdG9yX21vZGVzLAo+Pj4+ICsJLmRlc3Ry b3kgPSBkcm1fY29ubmVjdG9yX2NsZWFudXAsCj4+Pj4gKwkucmVzZXQgPSBkcm1fYXRvbWljX2hl bHBlcl9jb25uZWN0b3JfcmVzZXQsCj4+Pj4gKwkuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9IGRy bV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kdXBsaWNhdGVfc3RhdGUsCj4+Pj4gKwkuYXRvbWlj X2Rlc3Ryb3lfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZGVzdHJveV9zdGF0 ZSwKPj4+PiArfTsKPj4+PiArCj4+Pj4gK2ludCB4ZW5fZHJtX2Zyb250X2Nvbm5faW5pdChzdHJ1 Y3QgeGVuX2RybV9mcm9udF9kcm1faW5mbyAqZHJtX2luZm8sCj4+Pj4gKwkJc3RydWN0IGRybV9j b25uZWN0b3IgKmNvbm5lY3RvcikKPj4+PiArewo+Pj4+ICsJZHJtX2Nvbm5lY3Rvcl9oZWxwZXJf YWRkKGNvbm5lY3RvciwgJmNvbm5lY3Rvcl9oZWxwZXJfZnVuY3MpOwo+Pj4+ICsKPj4+PiArCXJl dHVybiBkcm1fY29ubmVjdG9yX2luaXQoZHJtX2luZm8tPmRybV9kZXYsIGNvbm5lY3RvciwKPj4+ PiArCQkmY29ubmVjdG9yX2Z1bmNzLCBEUk1fTU9ERV9DT05ORUNUT1JfVklSVFVBTCk7Cj4+Pj4g K30KPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5fZHJtX2Zyb250X2Nv bm4uaCBiL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udF9jb25uLmgKPj4+PiBuZXcg ZmlsZSBtb2RlIDEwMDY0NAo+Pj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uNzA4ZTgwZDQ1OTg1Cj4+ Pj4gLS0tIC9kZXYvbnVsbAo+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9m cm9udF9jb25uLmgKPj4+PiBAQCAtMCwwICsxLDM1IEBACj4+Pj4gKy8qCj4+Pj4gKyAqICBYZW4g cGFyYS12aXJ0dWFsIERSTSBkZXZpY2UKPj4+PiArICoKPj4+PiArICogICBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo+ Pj4+ICsgKiAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cj4+Pj4gKyAqICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKPj4+PiArICogICAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgo+Pj4+ICsgKgo+Pj4+ICsgKiAgIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAo+Pj4+ICsgKiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCj4+Pj4gKyAqICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQo+Pj4+ICsgKiAgIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4+Pj4gKyAqCj4+Pj4gKyAqIENvcHly aWdodCAoQykgMjAxNi0yMDE4IEVQQU0gU3lzdGVtcyBJbmMuCj4+Pj4gKyAqCj4+Pj4gKyAqIEF1 dGhvcjogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVw YW0uY29tPgo+Pj4+ICsgKi8KPj4+PiArCj4+Pj4gKyNpZm5kZWYgX19YRU5fRFJNX0ZST05UX0NP Tk5fSF8KPj4+PiArI2RlZmluZSBfX1hFTl9EUk1fRlJPTlRfQ09OTl9IXwo+Pj4+ICsKPj4+PiAr I2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4+Pj4gKyNpbmNsdWRlIDxkcm0vZHJtX2NydGMuaD4KPj4+ PiArI2luY2x1ZGUgPGRybS9kcm1fZW5jb2Rlci5oPgo+Pj4+ICsKPj4+PiArI2luY2x1ZGUgPGxp bnV4L3dhaXQuaD4KPj4+PiArCj4+Pj4gK3N0cnVjdCB4ZW5fZHJtX2Zyb250X2RybV9pbmZvOwo+ Pj4+ICsKPj4+PiArY29uc3QgdWludDMyX3QgKnhlbl9kcm1fZnJvbnRfY29ubl9nZXRfZm9ybWF0 cyhpbnQgKmZvcm1hdF9jb3VudCk7Cj4+Pj4gKwo+Pj4+ICtpbnQgeGVuX2RybV9mcm9udF9jb25u X2luaXQoc3RydWN0IHhlbl9kcm1fZnJvbnRfZHJtX2luZm8gKmRybV9pbmZvLAo+Pj4+ICsJCXN0 cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpOwo+Pj4+ICsKPj4+PiArI2VuZGlmIC8qIF9f WEVOX0RSTV9GUk9OVF9DT05OX0hfICovCj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS94ZW4veGVuX2RybV9mcm9udF9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9m cm9udF9kcnYuYwo+Pj4+IGluZGV4IGIzNzY0ZDVlZDBmNi4uZTg4NjJkMjZiYTI3IDEwMDY0NAo+ Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udF9kcnYuYwo+Pj4+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udF9kcnYuYwo+Pj4+IEBAIC0yMyw2 ICsyMyw3IEBACj4+Pj4gICAgI2luY2x1ZGUgInhlbl9kcm1fZnJvbnQuaCIKPj4+PiAgICAjaW5j bHVkZSAieGVuX2RybV9mcm9udF9jZmcuaCIKPj4+PiAgICAjaW5jbHVkZSAieGVuX2RybV9mcm9u dF9kcnYuaCIKPj4+PiArI2luY2x1ZGUgInhlbl9kcm1fZnJvbnRfa21zLmgiCj4+Pj4gICAgc3Rh dGljIGludCBkdW1iX2NyZWF0ZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbHAsCj4+Pj4gICAgCQlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX21vZGVfY3JlYXRlX2R1bWIgKmFyZ3MpCj4+ Pj4gQEAgLTQxLDYgKzQyLDEzIEBAIHN0YXRpYyB2b2lkIGZyZWVfb2JqZWN0KHN0cnVjdCBkcm1f Z2VtX29iamVjdCAqb2JqKQo+Pj4+ICAgIHN0YXRpYyB2b2lkIG9uX2ZyYW1lX2RvbmUoc3RydWN0 IHBsYXRmb3JtX2RldmljZSAqcGRldiwKPj4+PiAgICAJCWludCBjb25uX2lkeCwgdWludDY0X3Qg ZmJfY29va2llKQo+Pj4+ICAgIHsKPj4+PiArCXN0cnVjdCB4ZW5fZHJtX2Zyb250X2RybV9pbmZv ICpkcm1faW5mbyA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOwo+Pj4+ICsKPj4+PiArCWlm ICh1bmxpa2VseShjb25uX2lkeCA+PSBkcm1faW5mby0+Y2ZnLT5udW1fY29ubmVjdG9ycykpCj4+ Pj4gKwkJcmV0dXJuOwo+Pj4+ICsKPj4+PiArCXhlbl9kcm1fZnJvbnRfa21zX29uX2ZyYW1lX2Rv bmUoJmRybV9pbmZvLT5waXBlbGluZVtjb25uX2lkeF0sCj4+Pj4gKwkJCWZiX2Nvb2tpZSk7Cj4+ Pj4gICAgfQo+Pj4+ICAgIHN0YXRpYyB2b2lkIGxhc3RjbG9zZShzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQo+Pj4+IEBAIC0xNTcsNiArMTY1LDEyIEBAIGludCB4ZW5fZHJtX2Zyb250X2Rydl9wcm9i ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAo+Pj4+ICAgIAkJcmV0dXJuIHJldDsKPj4+ PiAgICAJfQo+Pj4+ICsJcmV0ID0geGVuX2RybV9mcm9udF9rbXNfaW5pdChkcm1faW5mbyk7Cj4+ Pj4gKwlpZiAocmV0KSB7Cj4+Pj4gKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBE Uk0vS01TLCByZXQgJWRcbiIsIHJldCk7Cj4+Pj4gKwkJZ290byBmYWlsX21vZGVzZXQ7Cj4+Pj4g Kwl9Cj4+Pj4gKwo+Pj4+ICAgIAlkZXYtPmlycV9lbmFibGVkID0gMTsKPj4+PiAgICAJcmV0ID0g ZHJtX2Rldl9yZWdpc3RlcihkZXYsIDApOwo+Pj4+IEBAIC0xNzIsNiArMTg2LDcgQEAgaW50IHhl bl9kcm1fZnJvbnRfZHJ2X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCj4+Pj4g ICAgZmFpbF9yZWdpc3RlcjoKPj4+PiAgICAJZHJtX2Rldl91bnJlZ2lzdGVyKGRldik7Cj4+Pj4g K2ZhaWxfbW9kZXNldDoKPj4+PiAgICAJZHJtX21vZGVfY29uZmlnX2NsZWFudXAoZGV2KTsKPj4+ PiAgICAJcmV0dXJuIHJldDsKPj4+PiAgICB9Cj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS94ZW4veGVuX2RybV9mcm9udF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2Ry bV9mcm9udF9kcnYuaAo+Pj4+IGluZGV4IGFhYTQ3NjUzNWMxMy4uNTYzMzE4YjE5ZjM0IDEwMDY0 NAo+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udF9kcnYuaAo+Pj4+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udF9kcnYuaAo+Pj4+IEBAIC0y MCwxNCArMjAsMjQgQEAKPj4+PiAgICAjZGVmaW5lIF9fWEVOX0RSTV9GUk9OVF9EUlZfSF8KPj4+ PiAgICAjaW5jbHVkZSA8ZHJtL2RybVAuaD4KPj4+PiArI2luY2x1ZGUgPGRybS9kcm1fc2ltcGxl X2ttc19oZWxwZXIuaD4KPj4+PiAgICAjaW5jbHVkZSAieGVuX2RybV9mcm9udC5oIgo+Pj4+ICAg ICNpbmNsdWRlICJ4ZW5fZHJtX2Zyb250X2NmZy5oIgo+Pj4+ICsjaW5jbHVkZSAieGVuX2RybV9m cm9udF9jb25uLmgiCj4+Pj4gICAgc3RydWN0IHhlbl9kcm1fZnJvbnRfZHJtX3BpcGVsaW5lIHsK Pj4+PiAgICAJc3RydWN0IHhlbl9kcm1fZnJvbnRfZHJtX2luZm8gKmRybV9pbmZvOwo+Pj4+ICAg IAlpbnQgaW5kZXg7Cj4+Pj4gKwo+Pj4+ICsJc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBl IHBpcGU7Cj4+Pj4gKwo+Pj4+ICsJc3RydWN0IGRybV9jb25uZWN0b3IgY29ubjsKPj4+PiArCS8q IHRoZXNlIGFyZSBvbmx5IGZvciBjb25uZWN0b3IgbW9kZSBjaGVja2luZyAqLwo+Pj4+ICsJaW50 IHdpZHRoLCBoZWlnaHQ7Cj4+Pj4gKwkvKiBsYXN0IGJhY2tlbmQgZXJyb3Igc2VlbiBvbiBwYWdl IGZsaXAgKi8KPj4+PiArCWludCBwZ2ZsaXBfbGFzdF9lcnJvcjsKPj4+PiAgICB9Owo+Pj4+ICAg IHN0cnVjdCB4ZW5fZHJtX2Zyb250X2RybV9pbmZvIHsKPj4+PiBAQCAtMzUsNiArNDUsOCBAQCBz dHJ1Y3QgeGVuX2RybV9mcm9udF9kcm1faW5mbyB7Cj4+Pj4gICAgCXN0cnVjdCB4ZW5fZHJtX2Zy b250X29wcyAqZnJvbnRfb3BzOwo+Pj4+ICAgIAlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtX2RldjsK Pj4+PiAgICAJc3RydWN0IHhlbl9kcm1fZnJvbnRfY2ZnICpjZmc7Cj4+Pj4gKwo+Pj4+ICsJc3Ry dWN0IHhlbl9kcm1fZnJvbnRfZHJtX3BpcGVsaW5lIHBpcGVsaW5lW1hFTl9EUk1fRlJPTlRfTUFY X0NSVENTXTsKPj4+PiAgICB9Owo+Pj4+ICAgIHN0YXRpYyBpbmxpbmUgdWludDY0X3QgeGVuX2Ry bV9mcm9udF9mYl90b19jb29raWUoCj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94 ZW4veGVuX2RybV9mcm9udF9rbXMuYyBiL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9u dF9rbXMuYwo+Pj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+Pj4gaW5kZXggMDAwMDAwMDAwMDAw Li5hZDk0YzI4ODM1Y2QKPj4+PiAtLS0gL2Rldi9udWxsCj4+Pj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL3hlbi94ZW5fZHJtX2Zyb250X2ttcy5jCj4+Pj4gQEAgLTAsMCArMSwyOTkgQEAKPj4+PiAr LyoKPj4+PiArICogIFhlbiBwYXJhLXZpcnR1YWwgRFJNIGRldmljZQo+Pj4+ICsgKgo+Pj4+ICsg KiAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5Cj4+Pj4gKyAqICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKPj4+PiArICogICB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv cgo+Pj4+ICsgKiAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCj4+Pj4gKyAq Cj4+Pj4gKyAqICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCj4+Pj4gKyAqICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKPj4+PiArICogICBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCj4+Pj4g KyAqICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPj4+PiAr ICoKPj4+PiArICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggRVBBTSBTeXN0ZW1zIEluYy4KPj4+ PiArICoKPj4+PiArICogQXV0aG9yOiBPbGVrc2FuZHIgQW5kcnVzaGNoZW5rbyA8b2xla3NhbmRy X2FuZHJ1c2hjaGVua29AZXBhbS5jb20+Cj4+Pj4gKyAqLwo+Pj4+ICsKPj4+PiArI2luY2x1ZGUg Inhlbl9kcm1fZnJvbnRfa21zLmgiCj4+Pj4gKwo+Pj4+ICsjaW5jbHVkZSA8ZHJtL2RybVAuaD4K Pj4+PiArI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljLmg+Cj4+Pj4gKyNpbmNsdWRlIDxkcm0vZHJt X2F0b21pY19oZWxwZXIuaD4KPj4+PiArI2luY2x1ZGUgPGRybS9kcm1fZ2VtLmg+Cj4+Pj4gKyNp bmNsdWRlIDxkcm0vZHJtX2dlbV9mcmFtZWJ1ZmZlcl9oZWxwZXIuaD4KPj4+PiArCj4+Pj4gKyNp bmNsdWRlICJ4ZW5fZHJtX2Zyb250LmgiCj4+Pj4gKyNpbmNsdWRlICJ4ZW5fZHJtX2Zyb250X2Nv bm4uaCIKPj4+PiArI2luY2x1ZGUgInhlbl9kcm1fZnJvbnRfZHJ2LmgiCj4+Pj4gKwo+Pj4+ICtz dGF0aWMgc3RydWN0IHhlbl9kcm1fZnJvbnRfZHJtX3BpcGVsaW5lICoKPj4+PiArdG9feGVuX2Ry bV9waXBlbGluZShzdHJ1Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGUgKnBpcGUpCj4+Pj4gK3sK Pj4+PiArCXJldHVybiBjb250YWluZXJfb2YocGlwZSwgc3RydWN0IHhlbl9kcm1fZnJvbnRfZHJt X3BpcGVsaW5lLCBwaXBlKTsKPj4+PiArfQo+Pj4+ICsKPj4+PiArc3RhdGljIHZvaWQgZmJfZGVz dHJveShzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYikKPj4+PiArewo+Pj4+ICsJc3RydWN0IHhl bl9kcm1fZnJvbnRfZHJtX2luZm8gKmRybV9pbmZvID0gZmItPmRldi0+ZGV2X3ByaXZhdGU7Cj4+ Pj4gKwo+Pj4+ICsJZHJtX2luZm8tPmZyb250X29wcy0+ZmJfZGV0YWNoKGRybV9pbmZvLT5mcm9u dF9pbmZvLAo+Pj4+ICsJCQl4ZW5fZHJtX2Zyb250X2ZiX3RvX2Nvb2tpZShmYikpOwo+Pj4+ICsJ ZHJtX2dlbV9mYl9kZXN0cm95KGZiKTsKPj4+PiArfQo+Pj4+ICsKPj4+PiArc3RhdGljIHN0cnVj dCBkcm1fZnJhbWVidWZmZXJfZnVuY3MgZmJfZnVuY3MgPSB7Cj4+Pj4gKwkuZGVzdHJveSA9IGZi X2Rlc3Ryb3ksCj4+Pj4gK307Cj4+Pj4gKwo+Pj4+ICtzdGF0aWMgc3RydWN0IGRybV9mcmFtZWJ1 ZmZlciAqZmJfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4+Pj4gKwkJc3RydWN0IGRy bV9maWxlICpmaWxwLCBjb25zdCBzdHJ1Y3QgZHJtX21vZGVfZmJfY21kMiAqbW9kZV9jbWQpCj4+ Pj4gK3sKPj4+PiArCXN0cnVjdCB4ZW5fZHJtX2Zyb250X2RybV9pbmZvICpkcm1faW5mbyA9IGRl di0+ZGV2X3ByaXZhdGU7Cj4+Pj4gKwlzdGF0aWMgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmI7 Cj4+Pj4gKwlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdlbV9vYmo7Cj4+Pj4gKwlpbnQgcmV0Owo+ Pj4+ICsKPj4+PiArCWZiID0gZHJtX2dlbV9mYl9jcmVhdGVfd2l0aF9mdW5jcyhkZXYsIGZpbHAs IG1vZGVfY21kLCAmZmJfZnVuY3MpOwo+Pj4+ICsJaWYgKElTX0VSUl9PUl9OVUxMKGZiKSkKPj4+ PiArCQlyZXR1cm4gZmI7Cj4+Pj4gKwo+Pj4+ICsJZ2VtX29iaiA9IGRybV9nZW1fb2JqZWN0X2xv b2t1cChmaWxwLCBtb2RlX2NtZC0+aGFuZGxlc1swXSk7Cj4+Pj4gKwlpZiAoIWdlbV9vYmopIHsK Pj4+PiArCQlEUk1fRVJST1IoIkZhaWxlZCB0byBsb29rdXAgR0VNIG9iamVjdFxuIik7Cj4+Pj4g KwkJcmV0ID0gLUVOT0VOVDsKPj4+PiArCQlnb3RvIGZhaWw7Cj4+Pj4gKwl9Cj4+Pj4gKwo+Pj4+ ICsJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2VfdW5sb2NrZWQoZ2VtX29iaik7Cj4+Pj4gKwo+ Pj4+ICsJcmV0ID0gZHJtX2luZm8tPmZyb250X29wcy0+ZmJfYXR0YWNoKAo+Pj4+ICsJCQlkcm1f aW5mby0+ZnJvbnRfaW5mbywKPj4+PiArCQkJeGVuX2RybV9mcm9udF9kYnVmX3RvX2Nvb2tpZShn ZW1fb2JqKSwKPj4+PiArCQkJeGVuX2RybV9mcm9udF9mYl90b19jb29raWUoZmIpLAo+Pj4+ICsJ CQlmYi0+d2lkdGgsIGZiLT5oZWlnaHQsIGZiLT5mb3JtYXQtPmZvcm1hdCk7Cj4+Pj4gKwlpZiAo cmV0IDwgMCkgewo+Pj4+ICsJCURSTV9FUlJPUigiQmFjayBmYWlsZWQgdG8gYXR0YWNoIEZCICVw OiAlZFxuIiwgZmIsIHJldCk7Cj4+Pj4gKwkJZ290byBmYWlsOwo+Pj4+ICsJfQo+Pj4+ICsKPj4+ PiArCXJldHVybiBmYjsKPj4+PiArCj4+Pj4gK2ZhaWw6Cj4+Pj4gKwlkcm1fZ2VtX2ZiX2Rlc3Ry b3koZmIpOwo+Pj4+ICsJcmV0dXJuIEVSUl9QVFIocmV0KTsKPj4+PiArfQo+Pj4+ICsKPj4+PiAr c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fbW9kZV9jb25maWdfZnVuY3MgbW9kZV9jb25maWdfZnVu Y3MgPSB7Cj4+Pj4gKwkuZmJfY3JlYXRlID0gZmJfY3JlYXRlLAo+Pj4+ICsJLmF0b21pY19jaGVj ayA9IGRybV9hdG9taWNfaGVscGVyX2NoZWNrLAo+Pj4+ICsJLmF0b21pY19jb21taXQgPSBkcm1f YXRvbWljX2hlbHBlcl9jb21taXQsCj4+Pj4gK307Cj4+Pj4gKwo+Pj4+ICtzdGF0aWMgaW50IGRp c3BsYXlfc2V0X2NvbmZpZyhzdHJ1Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGUgKnBpcGUsCj4+ Pj4gKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYikKPj4+PiArewo+Pj4+ICsJc3RydWN0IHhl bl9kcm1fZnJvbnRfZHJtX3BpcGVsaW5lICpwaXBlbGluZSA9Cj4+Pj4gKwkJCXRvX3hlbl9kcm1f cGlwZWxpbmUocGlwZSk7Cj4+Pj4gKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSAmcGlwZS0+Y3J0 YzsKPj4+PiArCXN0cnVjdCB4ZW5fZHJtX2Zyb250X2RybV9pbmZvICpkcm1faW5mbyA9IHBpcGVs aW5lLT5kcm1faW5mbzsKPj4+PiArCWludCByZXQ7Cj4+Pj4gKwo+Pj4+ICsJaWYgKGZiKQo+Pj4+ ICsJCXJldCA9IGRybV9pbmZvLT5mcm9udF9vcHMtPm1vZGVfc2V0KHBpcGVsaW5lLAo+Pj4+ICsJ CQkJY3J0Yy0+eCwgY3J0Yy0+eSwKPj4+PiArCQkJCWZiLT53aWR0aCwgZmItPmhlaWdodCwgZmIt PmZvcm1hdC0+Y3BwWzBdICogOCwKPj4+PiArCQkJCXhlbl9kcm1fZnJvbnRfZmJfdG9fY29va2ll KGZiKSk7Cj4+Pj4gKwllbHNlCj4+Pj4gKwkJcmV0ID0gZHJtX2luZm8tPmZyb250X29wcy0+bW9k ZV9zZXQocGlwZWxpbmUsCj4+Pj4gKwkJCQkwLCAwLCAwLCAwLCAwLAo+Pj4+ICsJCQkJeGVuX2Ry bV9mcm9udF9mYl90b19jb29raWUoTlVMTCkpOwo+Pj4gVGhpcyBpcyBhIGJpdCBtdWNoIGxheWVy aW5nLCB0aGUgaWYgKGZiKSBjYXNlIGNvcnJlc3BvbmRzIHRvIHRoZQo+Pj4gZGlzcGxheV9lbmFi bGUvZGlzYWJsZSBob29rcywgcGxzIGZvbGQgdGhhdCBpbiBpbnN0ZWFkIG9mIHRoZSBpbmRpcmVj dGlvbi4KPj4+IHNpbXBsZSBoZWxwZXJzIGd1YXJhbnRlZSB0aGF0IHdoZW4gdGhlIGRpc3BsYXkg aXMgb24sIHRoZW4geW91IGhhdmUgYW4gZmIuCj4+IDEuIE9rLCB0aGUgb25seSByZWFzb24gZm9y IGhhdmluZyB0aGlzIGZ1bmN0aW9uIHdhcyB0byBrZWVwCj4+IGZyb250X29wcy0+bW9kZV9zZXQg Y2FsbHMgYXQgb25lIHBsYWNlICh3aWxsIGJlIHJlZmFjdG9yZWQKPj4gdG8gYmUgYSBkaXJlY3Qg Y2FsbCwgbm90IHZpYSBmcm9udF9vcHMpLgo+PiAyLiBUaGUgaWYgKGZiKSBjaGVjayB3YXMgbWVh bnQgbm90IHRvIGNoZWNrIGlmIHNpbXBsZSBoZWxwZXJzCj4+IG1heSBnaXZlIHVzIHNvbWUgd3Jv bmcgdmFsdWUgd2hlbiB3ZSBkbyBub3QgZXhwZWN0OiB0aGVyZSBpcwo+PiBub3RoaW5nIHdyb25n IHdpdGggdGhlbS4gVGhlIGNoZWNrIHdhcyBmb3IgMiBjYXNlcyB3aGVuIHRoaXMKPj4gZnVuY3Rp b24gd2FzIGNhbGxlZDogd2l0aCBmYiAhPSBOVUxMIG9uIGRpc3BsYXkgZW5hYmxlIGFuZAo+PiB3 aXRoIGZiID09IE5VTEwgb24gZGlzcGxheSBkaXNhYmxlLCBlLmcuIGZiIHdhcyB1c2VkIGFzIGEK Pj4gZmxhZyBpbiB0aGlzIGNoZWNrLgo+IFllYWggdGhhdCdzIHdoYXQgSSBtZWFudCAtIGl0IGlz IG5lZWRsZXNzbHkgY29uZnVzaW5nOiBZb3UgZ2V0IDIgZXhwbGljaXQKPiBlbmFibGUvZGlzYWJs ZSBjYWxsYmFja3MsIHRoZW4geW91IHNxdWFzaCB0aGVtIGludG8gMSBmdW5jdGlvbiBjYWxsLCBv bmx5Cj4gdG8gcmVxdWlyZSBhbgo+Cj4gaWYgKGRvX0lfbmVlZF90b19lbmFibGVfb3JfZGlzYWJs ZSkgewo+IAkvKiBjb2RlIHRoYXQgcmVhbGx5IHNob3VsZCBiZSBkaXJlY3RseSBwdXQgaW4gdGhl IGVuYWJsZSBjYWxsYmFjayAqLwo+IH0gZWxzZSB7Cj4gCS8qIGNvZGUgdGhhdCByZWFsbHkgc2hv dWxkIGJlIGRpcmVjdGx5IHB1dCBpbiB0aGUgZW5hYmxlIGNhbGxiYWNrICovCj4gfQo+Cj4gSnVz dCBhIGJpdCBvZiBpbmRpcmVjdGlvbiB3aGVyZSBJIGRpZG50JyBzZWUgdGhlIHBvaW50Lgo+Cj4g QXNpZGUgZm9yIHdoeSB0aGlzIG1hdHRlcnM6IFdoZW4gcmVmYWN0b3JpbmcgdGhlIGVudGlyZSBz dWJzeXN0ZW0geW91IG5lZWQKPiB0byBiZSBhYmxlIHRvIHF1aWNrbHkgdW5kZXJzdGFuZCBob3cg YWxsIHRoZSBkcml2ZXJzIHdvcmsgaW4gYSBzcGVjaWZpYwo+IGNhc2UsIHdpdGhvdXQgYmVpbmcg YW4gZXhwZXJ0IG9uIHRoYXQgZHJpdmVyLiBJZiB0aGVyZSdzIHZlcnkgbGl0dGxlCj4gaW5kaXJl Y3Rpb24gYmV0d2VlbiB0aGUgc2hhcmVkIGRybSBjb25jZXB0cy9zdHJ1Y3RzL2NhbGxiYWNrcyBh bmQgdGhlCj4gYWN0dWFsIGRyaXZlciBjb2RlLCB0aGVuIHRoYXQncyBlYXN5LiBJZiB0aGVyZSdz IGEgYnVuY2ggb2YgY2FsbGJhY2sKPiBsYXllcnMgb3IgaW5kaXJlY3Rpb25zIGxpa2UgdGhlIGFi b3ZlLCB5b3UgbWFrZSBzdWJzeXN0ZW0gcmVmYWN0b3JpbmcKPiBoYXJkZXIgZm9yIG5vIHJlYXNv bi4gQW5kIGluIHVwc3RyZWFtIHdlIG9wdGltaXplIGZvciB0aGUgb3ZlcmFsbAo+IHN1YnN5c3Rl bSwgbm90IGluZGl2aWR1YWwgZHJpdmVycy4Kb2ssIGRvZXMgbWFrZSBzZW5zZSwgd2lsbCByZXdv cmsgd2l0aG91dCB5ZXQgYW5vdGhlciBmdW5jdGlvbgo+PiAzLiBJIHdpbGwgcmVtb3ZlIHRoaXMg ZnVuY3Rpb24gYXQgYWxsIGFuZCB3aWxsIG1ha2UgZGlyZWN0IGNhbGxzCj4+IHRvIHRoZSBiYWNr ZW5kIG9uIC5kaXNwbGF5X3tlbmFibGV8ZGlzYWJsZX0KPj4+IE1heWJlIHdlIG5lZWQgdG8gZml4 IHRoZSBkb2NzLCBwbHMgY2hlY2sgYW5kIGlmIHRoYXQncyBub3QgY2xlYXIsIHN1Ym1pdCBhCj4+ PiBrZXJuZWwtZG9jIHBhdGNoIGZvciB0aGUgc2ltcGxlIHBpcGUgaGVscGVycy4KPj4gbm8sIG5v dGhpbmcgd3JvbmcgaGVyZSwganVzdCBzZWUgbXkgcmVhc29uaW5nIGFib3ZlCj4+Pj4gKwo+Pj4+ ICsJaWYgKHJldCkKPj4+PiArCQlEUk1fRVJST1IoIkZhaWxlZCB0byBzZXQgbW9kZSB0byBiYWNr OiAlZFxuIiwgcmV0KTsKPj4+PiArCj4+Pj4gKwlyZXR1cm4gcmV0Owo+Pj4+ICt9Cj4+Pj4gKwo+ Pj4+ICtzdGF0aWMgdm9pZCBkaXNwbGF5X2VuYWJsZShzdHJ1Y3QgZHJtX3NpbXBsZV9kaXNwbGF5 X3BpcGUgKnBpcGUsCj4+Pj4gKwkJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ Pj4+ICt7Cj4+Pj4gKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSAmcGlwZS0+Y3J0YzsKPj4+PiAr CXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGlwZS0+cGxhbmUuc3RhdGUtPmZiOwo+Pj4+ ICsKPj4+PiArCWlmIChkaXNwbGF5X3NldF9jb25maWcocGlwZSwgZmIpID09IDApCj4+Pj4gKwkJ ZHJtX2NydGNfdmJsYW5rX29uKGNydGMpOwo+Pj4gSSBnZXQgdGhlIGltcHJlc3Npb24geW91ciBk cml2ZXIgZG9lc24ndCBzdXBwb3J0IHZibGFua3MgKHRoZSBwYWdlIGZsaXAKPj4+IGNvZGUgYXQg bGVhc3QgbG9va3MgbGlrZSBpdCdzIG9ubHkgZ2VuZXJhdGluZyBhIHNpbmdsZSBldmVudCksCj4+ IHllcywgdGhpcyBpcyB0cnVlCj4+PiAgICB5b3UgYWxzbwo+Pj4gZG9uJ3QgaGF2ZSBhIGVuYWJs ZS9kaXNhYmxlX3ZibGFuayBpbXBsZW1lbnRhdGlvbi4KPj4gdGhpcyBpcyBiZWNhdXNlIHdpdGgg bXkgcHJldmlvdXMgcGF0Y2hlcyBbMV0gdGhlc2UgYXJlIG5vdyBoYW5kbGVkCj4+IGJ5IHNpbXBs ZSBoZWxwZXJzLCBzbyBubyBuZWVkIHRvIHByb3ZpZGUgZHVtbXkgb25lcyBpbiB0aGUgZHJpdmVy Cj4+PiAgICBJZiB0aGVyZSdzIG5vIHZibGFuawo+Pj4gaGFuZGxpbmcgdGhlbiB0aGlzIHNob3Vs ZG4ndCBiZSBuZWVkZWQuCj4+IHllcywgSSB3aWxsIHJld29yayB0aGUgY29kZSwgcGxlYXNlIHNl ZSBiZWxvdwo+Pj4+ICsJZWxzZQo+Pj4+ICsJCURSTV9FUlJPUigiRmFpbGVkIHRvIGVuYWJsZSBk aXNwbGF5XG4iKTsKPj4+PiArfQo+Pj4+ICsKPj4+PiArc3RhdGljIHZvaWQgZGlzcGxheV9kaXNh YmxlKHN0cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZSAqcGlwZSkKPj4+PiArewo+Pj4+ICsJ c3RydWN0IGRybV9jcnRjICpjcnRjID0gJnBpcGUtPmNydGM7Cj4+Pj4gKwo+Pj4+ICsJZGlzcGxh eV9zZXRfY29uZmlnKHBpcGUsIE5VTEwpOwo+Pj4+ICsJZHJtX2NydGNfdmJsYW5rX29mZihjcnRj KTsKPj4+PiArCS8qIGZpbmFsIGNoZWNrIGZvciBzdGFsbGVkIGV2ZW50cyAqLwo+Pj4+ICsJaWYg KGNydGMtPnN0YXRlLT5ldmVudCAmJiAhY3J0Yy0+c3RhdGUtPmFjdGl2ZSkgewo+Pj4+ICsJCXVu c2lnbmVkIGxvbmcgZmxhZ3M7Cj4+Pj4gKwo+Pj4+ICsJCXNwaW5fbG9ja19pcnFzYXZlKCZjcnRj LT5kZXYtPmV2ZW50X2xvY2ssIGZsYWdzKTsKPj4+PiArCQlkcm1fY3J0Y19zZW5kX3ZibGFua19l dmVudChjcnRjLCBjcnRjLT5zdGF0ZS0+ZXZlbnQpOwo+Pj4+ICsJCXNwaW5fdW5sb2NrX2lycXJl c3RvcmUoJmNydGMtPmRldi0+ZXZlbnRfbG9jaywgZmxhZ3MpOwo+Pj4+ICsJCWNydGMtPnN0YXRl LT5ldmVudCA9IE5VTEw7Cj4+Pj4gKwl9Cj4+Pj4gK30KPj4+PiArCj4+Pj4gK3ZvaWQgeGVuX2Ry bV9mcm9udF9rbXNfb25fZnJhbWVfZG9uZSgKPj4+PiArCQlzdHJ1Y3QgeGVuX2RybV9mcm9udF9k cm1fcGlwZWxpbmUgKnBpcGVsaW5lLAo+Pj4+ICsJCXVpbnQ2NF90IGZiX2Nvb2tpZSkKPj4+PiAr ewo+Pj4+ICsJZHJtX2NydGNfaGFuZGxlX3ZibGFuaygmcGlwZWxpbmUtPnBpcGUuY3J0Yyk7Cj4+ PiBIbSwgYWdhaW4gdGhpcyBkb2Vzbid0IGxvb2sgbGlrZSByZWFsIHZibGFuaywgYnV0IG9ubHkg YSBwYWdlLWZsaXAgZG9uZQo+Pj4gZXZlbnQuIElmIHRoYXQncyBjb3JyZWN0IHRoZW4gcGxlYXNl IGRvbid0IHVzZSB0aGUgdmJsYW5rIG1hY2hpbmVyeSwgYnV0Cj4+PiBqdXN0IHN0b3JlIHRoZSBl dmVudCBpbnRlcm5hbGx5IChwcm90ZWN0ZWQgd2l0aCB5b3VyIG93biBwcml2YXRlIHNwaW5sb2Nr KQo+PiBXaHkgY2FuJ3QgSSB1c2UgJmRldi0+ZXZlbnRfbG9jaz8gQW55d2F5cyBmb3IgaGFuZGxp bmcKPj4gcGFnZS1mbGlwIGV2ZW50cyBJIHdpbGwgbmVlZCB0byBsb2NrIG9uIGl0LCBzbyBJIGNh biBkbwo+PiBkcm1fY3J0Y19zZW5kX3ZibGFua19ldmVudD8KPiBZZWFoIHlvdSBjYW4gcmV1c2Ug dGhlIGV2ZW50X2xvY2sgdG9vLCB0aGF0J3Mgd2hhdCBtYW55IGRyaXZlcnMgZG8uCkkganVzdCB3 YXMgY2xhcmlmeWluZyBvbiB0aGUgbmVlZCBmb3IgbXkgb3duIHByaXZhdGUgbG9jayA7KQo+Pj4g YW5kIHNlbmQgaXQgb3V0IHVzaW5nIGRybV9jcnRjX3NlbmRfdmJsYW5rX2V2ZW50IGRpcmVjdGx5 LiBObyBjYWxscyB0bwo+Pj4gYXJtX3ZibGFua19ldmVudCBvciBhbnkgb2YgdGhlIG90aGVyIHZi bGFuayBpbmZyYXN0cnVjdHVyZSBzaG91bGQgYmUKPj4+IG5lZWRlZC4KPj4gd2lsbCByZS13b3Jr LCBlLmcuIHdpbGwgc3RvcmUgZHJtX3BlbmRpbmdfdmJsYW5rX2V2ZW50Cj4+IG9uIC5kaXNwbGF5 X3VwZGF0ZSBhbmQgc2VuZCBvdXQgb24gcGFnZSBmbGlwIGV2ZW50IGZyb20gdGhlCj4+IGJhY2tl bmQKPj4+IEFsc28gcGxlYXNlIHJlbW92ZSB0aGUgZHJtX3ZibGFua19pbml0KCkgY2FsbCwgc2lu Y2UgeW91ciBodyBkb2Vzbid0Cj4+PiByZWFsbHkgaGF2ZSB2YmxhbmtzLiBBbmQgZXhwb3Npbmcg dmJsYW5rcyB0byB1c2Vyc3BhY2Ugd2l0aG91dAo+Pj4gaW1wbGVtZW50aW5nIHRoZW0gaXMgY29u ZnVzaW5nLgo+PiB3aWxsIHJlbW92ZSBhbGwgdmJsYW5rIGhhbmRsaW5nIGF0IGFsbCB3aXRoIHRo ZSByZS13b3JrIGFib3ZlCj4+Pj4gK30KPj4+PiArCj4+Pj4gK3N0YXRpYyB2b2lkIGRpc3BsYXlf c2VuZF9wYWdlX2ZsaXAoc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlICpwaXBlLAo+Pj4+ ICsJCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9wbGFuZV9zdGF0ZSkKPj4+PiArewo+Pj4+ ICsJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9u ZXdfcGxhbmVfc3RhdGUoCj4+Pj4gKwkJCW9sZF9wbGFuZV9zdGF0ZS0+c3RhdGUsICZwaXBlLT5w bGFuZSk7Cj4+Pj4gKwo+Pj4+ICsJLyoKPj4+PiArCSAqIElmIG9sZF9wbGFuZV9zdGF0ZS0+ZmIg aXMgTlVMTCBhbmQgcGxhbmVfc3RhdGUtPmZiIGlzIG5vdCwKPj4+PiArCSAqIHRoZW4gdGhpcyBp cyBhbiBhdG9taWMgY29tbWl0IHdoaWNoIHdpbGwgZW5hYmxlIGRpc3BsYXkuCj4+Pj4gKwkgKiBJ ZiBvbGRfcGxhbmVfc3RhdGUtPmZiIGlzIG5vdCBOVUxMIGFuZCBwbGFuZV9zdGF0ZS0+ZmIgaXMs Cj4+Pj4gKwkgKiB0aGVuIHRoaXMgaXMgYW4gYXRvbWljIGNvbW1pdCB3aGljaCB3aWxsIGRpc2Fi bGUgZGlzcGxheS4KPj4+PiArCSAqIElnbm9yZSB0aGVzZSBhbmQgZG8gbm90IHNlbmQgcGFnZSBm bGlwIGFzIHRoaXMgZnJhbWVidWZmZXIgd2lsbCBiZQo+Pj4+ICsJICogc2VudCB0byB0aGUgYmFj a2VuZCBhcyBhIHBhcnQgb2YgZGlzcGxheV9zZXRfY29uZmlnIGNhbGwuCj4+Pj4gKwkgKi8KPj4+ PiArCWlmIChvbGRfcGxhbmVfc3RhdGUtPmZiICYmIHBsYW5lX3N0YXRlLT5mYikgewo+Pj4+ICsJ CXN0cnVjdCB4ZW5fZHJtX2Zyb250X2RybV9waXBlbGluZSAqcGlwZWxpbmUgPQo+Pj4+ICsJCQkJ dG9feGVuX2RybV9waXBlbGluZShwaXBlKTsKPj4+PiArCQlzdHJ1Y3QgeGVuX2RybV9mcm9udF9k cm1faW5mbyAqZHJtX2luZm8gPSBwaXBlbGluZS0+ZHJtX2luZm87Cj4+Pj4gKwkJaW50IHJldDsK Pj4+PiArCj4+Pj4gKwkJcmV0ID0gZHJtX2luZm8tPmZyb250X29wcy0+cGFnZV9mbGlwKGRybV9p bmZvLT5mcm9udF9pbmZvLAo+Pj4+ICsJCQkJcGlwZWxpbmUtPmluZGV4LAo+Pj4+ICsJCQkJeGVu X2RybV9mcm9udF9mYl90b19jb29raWUocGxhbmVfc3RhdGUtPmZiKSk7Cj4+Pj4gKwkJcGlwZWxp bmUtPnBnZmxpcF9sYXN0X2Vycm9yID0gcmV0Owo+Pj4+ICsJCWlmIChyZXQpIHsKPj4+PiArCQkJ RFJNX0VSUk9SKCJGYWlsZWQgdG8gc2VuZCBwYWdlIGZsaXAgcmVxdWVzdCB0byBiYWNrZW5kOiAl ZFxuIiwgcmV0KTsKPj4+PiArCQkJLyoKPj4+PiArCQkJICogQXMgd2UgYXJlIGF0IGNvbW1pdCBz dGFnZSB0aGUgRFJNIGNvcmUgd2lsbCBhbnl3YXlzCj4+Pj4gKwkJCSAqIHdhaXQgZm9yIHRoZSB2 YmxhbmsgYW5kIGtub3dzIG5vdGhpbmcgYWJvdXQgb3VyCj4+Pj4gKwkJCSAqIGZhaWx1cmUuIFRo ZSBiZXN0IHdlIGNhbiBkbyBpcyB0byBoYW5kbGUKPj4+PiArCQkJICogdmJsYW5rIG5vdywgc28g dGhlcmUgaXMgbm8gdmJsYW5rL2ZsaXBfZG9uZQo+Pj4+ICsJCQkgKiB0aW1lIG91dHMKPj4+PiAr CQkJICovCj4+Pj4gKwkJCWRybV9jcnRjX2hhbmRsZV92YmxhbmsoJnBpcGVsaW5lLT5waXBlLmNy dGMpOwo+Pj4+ICsJCX0KPj4+PiArCX0KPj4+PiArfQo+Pj4+ICsKPj4+PiArc3RhdGljIGludCBk aXNwbGF5X3ByZXBhcmVfZmIoc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlICpwaXBlLAo+ Pj4+ICsJCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+Pj4+ICt7Cj4+Pj4g KwlzdHJ1Y3QgeGVuX2RybV9mcm9udF9kcm1fcGlwZWxpbmUgKnBpcGVsaW5lID0KPj4+PiArCQkJ dG9feGVuX2RybV9waXBlbGluZShwaXBlKTsKPj4+PiArCj4+Pj4gKwlpZiAocGlwZWxpbmUtPnBn ZmxpcF9sYXN0X2Vycm9yKSB7Cj4+Pj4gKwkJaW50IHJldDsKPj4+PiArCj4+Pj4gKwkJLyogaWYg cHJldmlvdXMgcGFnZSBmbGlwIGRpZG4ndCBzdWNjZWVkIHRoZW4gcmVwb3J0IHRoZSBlcnJvciAq Lwo+Pj4+ICsJCXJldCA9IHBpcGVsaW5lLT5wZ2ZsaXBfbGFzdF9lcnJvcjsKPj4+PiArCQkvKiBh bmQgbGV0IHVzIHRyeSB0byBwYWdlIGZsaXAgbmV4dCB0aW1lICovCj4+Pj4gKwkJcGlwZWxpbmUt PnBnZmxpcF9sYXN0X2Vycm9yID0gMDsKPj4+PiArCQlyZXR1cm4gcmV0Owo+Pj4+ICsJfQo+Pj4g Tm9wZSwgdGhpcyBpc24ndCBob3cgdGhlIHVhcGkgd29ya3MuIElmIHlvdXIgZmxpcHMgZmFpbCB0 aGVuIHdlIG1pZ2h0IG5lZWQKPj4+IHRvIGFkZCBzb21lIGVycm9yIHN0YXR1cyB0aGluZyB0byB0 aGUgZHJtIGV2ZW50cywgYnV0IHlvdSBjYW4ndCBtYWtlIHRoZQo+Pj4gbmV4dCBmbGlwIGZhaWwu Cj4+IFdlbGwsIHllcywgdGhlcmUgaXMgbm8gd2F5IGZvciBtZSB0byB0ZWxsIHRoYXQgdGhlIHBh Z2UgZmxpcAo+PiBoYXMgZmFpbGVkLCBzbyB0aGlzIGlzIHdoeSBJIHRyaWVkIHRvIGRvIHRoaXMg d29ya2Fyb3VuZCB3aXRoCj4+IHRoZSBuZXh0IHBhZ2UtZmxpcC4gVGhlIHJlYXNvbiBmb3IgdGhh dCBpcyB0aGF0IGlmLCBmb3IgZXhhbXBsZSwKPj4gd2UgYXJlIGRpc2Nvbm5lY3RlZCBmcm9tIHRo ZSBiYWNrZW5kIGZvciBzb21lIHJlYXNvbiwgdGhlcmUgaXMKPj4gbm8gd2F5IGZvciBtZSB0byB0 ZWxsIHRoZSB1c2VyLXNwYWNlIHRoYXQgaGV5LCBwbGVhc2UsIGRvIG5vdAo+PiBzZW5kIGFueSBv dGhlciBwYWdlIGZsaXBzLiBJZiBiYWNrZW5kIGNhbiByZWNvdmVyIGFuZCB0aGF0IHdhcwo+PiBh IG9uZSB0aW1lIGVycm9yIHRoZW4geWVzLCB0aGUgY29kZSBJIGhhdmUgd2lsbCBkbyB3cm9uZyB0 aGluZwo+PiAoZmFpbCB0aGUgY3VycmVudCBwYWdlIGZsaXApLCBidXQgaWYgdGhlIGVycm9yIHN0 YXRlIGlzIHBlcnNpc3RlbnQKPj4gdGhlbiBJIHdpbGwgYmUgYWJsZSB0byB0ZWxsIHRoZSB1c2Vy LXNwYWNlIHRvIHN0b3AgYnkgcmV0dXJuaW5nIGVycm9ycy4KPj4gVGhpcyBpcyBraW5kIG9mIHRy YWRlLW9mZiB3aGljaCBJIGFtIG5vdCBzdXJlIGhvdyB0byBzb2x2ZSBjb3JyZWN0bHkuCj4+Cj4+ IERvIHlvdSB0aGluayBJIGNhbiByZW1vdmUgdGhpcyB3b3JrYXJvdW5kIGNvbXBsZXRlbHk/Cj4g WWVzLiBJZiB5b3Ugd2FudCB0byB0ZWxsIHVzZXJzcGFjZSB0aGF0IHRoZSBiYWNrZW5kIGlzIGdv bmUsIHNlbmQgYQo+IGhvdHBsdWcgdWV2ZW50IGFuZCB1cGRhdGUgdGhlIGNvbm5lY3RvciBzdGF0 dXMgdG8gZGlzY29ubmVjdGVkLiBIb3RwbHVnCj4gdWV2ZW50cyBpcyBob3cgd2UgdGVsbCB1c2Vy c3BhY2UgYWJvdXQgYXN5bmNocm9ub3VzIGNoYW5nZXMuIFdlIGFsc28gaGF2ZQo+IHNwZWNpYWwg c3R1ZmYgdG8gc2lnbmFsIGRpc3BsYXkgY2FibGUgaXNzdWUgdGhhdCBtaWdodCByZXF1aXJlIHBp Y2tpbmcgYQo+IGxvd2VyIHJlc29sdXRpb24gKERQIGxpbmsgdHJhaW5pbmcpIGFuZCB3aGVuIEhE Q1AgZW5jcnlwdGlvbiBmYWlsZWQuCkFoLCB0aGVuIEknbGwgbmVlZCB0byBwbHVtYiBpbiBjb25u ZWN0b3IgaG90cGx1ZyBtYWNoaW5lcnkuCldpbGwgYWRkIHRoYXQgc28gSSBjYW4gcmVwb3J0IGVy cm9ycwo+IFNlbmRpbmcgYmFjayByYW5kb20gZXJyb3JzIG9uIHBhZ2VmbGlwcyBqdXN0IGNvbmZ1 c2VzIHRoZSBjb21wb3NpdG9yLCBhbmQKPiBhbGwgY29ycmVjdGx5IHdvcmtpbmcgY29tcG9zaXRv cnMgd2lsbCBsaXN0ZW4gdG8gaG90cGx1ZyBldmVudHMgYW5kCj4gcmVwcm9iZSBhbGwgdGhlIG91 dHB1dHMgYW5kIGNoYW5nZSB0aGUgY29uZmlndXJhdGlvbiBpZiBuZWNlc3NhcnkuCkdvb2QgcG9p bnQsIHRoYW5rIHlvdQo+IC1EYW5pZWwKPgo+Pj4gLURhbmllbAo+Pj4KPj4+PiArCXJldHVybiBk cm1fZ2VtX2ZiX3ByZXBhcmVfZmIoJnBpcGUtPnBsYW5lLCBwbGFuZV9zdGF0ZSk7Cj4+Pj4gK30K Pj4+PiArCj4+Pj4gK3N0YXRpYyB2b2lkIGRpc3BsYXlfdXBkYXRlKHN0cnVjdCBkcm1fc2ltcGxl X2Rpc3BsYXlfcGlwZSAqcGlwZSwKPj4+PiArCQlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpvbGRf cGxhbmVfc3RhdGUpCj4+Pj4gK3sKPj4+PiArCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9ICZwaXBl LT5jcnRjOwo+Pj4+ICsJc3RydWN0IGRybV9wZW5kaW5nX3ZibGFua19ldmVudCAqZXZlbnQ7Cj4+ Pj4gKwo+Pj4+ICsJZXZlbnQgPSBjcnRjLT5zdGF0ZS0+ZXZlbnQ7Cj4+Pj4gKwlpZiAoZXZlbnQp IHsKPj4+PiArCQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+Pj4+ICsJCXVu c2lnbmVkIGxvbmcgZmxhZ3M7Cj4+Pj4gKwo+Pj4+ICsJCWNydGMtPnN0YXRlLT5ldmVudCA9IE5V TEw7Cj4+Pj4gKwo+Pj4+ICsJCXNwaW5fbG9ja19pcnFzYXZlKCZkZXYtPmV2ZW50X2xvY2ssIGZs YWdzKTsKPj4+PiArCQlpZiAoZHJtX2NydGNfdmJsYW5rX2dldChjcnRjKSA9PSAwKQo+Pj4+ICsJ CQlkcm1fY3J0Y19hcm1fdmJsYW5rX2V2ZW50KGNydGMsIGV2ZW50KTsKPj4+PiArCQllbHNlCj4+ Pj4gKwkJCWRybV9jcnRjX3NlbmRfdmJsYW5rX2V2ZW50KGNydGMsIGV2ZW50KTsKPj4+PiArCQlz cGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXYtPmV2ZW50X2xvY2ssIGZsYWdzKTsKPj4+PiArCX0K Pj4+PiArCS8qCj4+Pj4gKwkgKiBTZW5kIHBhZ2UgZmxpcCByZXF1ZXN0IHRvIHRoZSBiYWNrZW5k ICphZnRlciogd2UgaGF2ZSBldmVudCBhcm1lZC8KPj4+PiArCSAqIHNlbnQgYWJvdmUsIHNvIG9u IHBhZ2UgZmxpcCBkb25lIGV2ZW50IGZyb20gdGhlIGJhY2tlbmQgd2UgY2FuCj4+Pj4gKwkgKiBk ZWxpdmVyIGl0IHdoaWxlIGhhbmRsaW5nIHZibGFuay4KPj4+PiArCSAqLwo+Pj4+ICsJZGlzcGxh eV9zZW5kX3BhZ2VfZmxpcChwaXBlLCBvbGRfcGxhbmVfc3RhdGUpOwo+Pj4+ICt9Cj4+Pj4gKwo+ Pj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlX2Z1bmNzIGRp c3BsYXlfZnVuY3MgPSB7Cj4+Pj4gKwkuZW5hYmxlID0gZGlzcGxheV9lbmFibGUsCj4+Pj4gKwku ZGlzYWJsZSA9IGRpc3BsYXlfZGlzYWJsZSwKPj4+PiArCS5wcmVwYXJlX2ZiID0gZGlzcGxheV9w cmVwYXJlX2ZiLAo+Pj4+ICsJLnVwZGF0ZSA9IGRpc3BsYXlfdXBkYXRlLAo+Pj4+ICt9Owo+Pj4+ ICsKPj4+PiArc3RhdGljIGludCBkaXNwbGF5X3BpcGVfaW5pdChzdHJ1Y3QgeGVuX2RybV9mcm9u dF9kcm1faW5mbyAqZHJtX2luZm8sCj4+Pj4gKwkJaW50IGluZGV4LCBzdHJ1Y3QgeGVuX2RybV9m cm9udF9jZmdfY29ubmVjdG9yICpjZmcsCj4+Pj4gKwkJc3RydWN0IHhlbl9kcm1fZnJvbnRfZHJt X3BpcGVsaW5lICpwaXBlbGluZSkKPj4+PiArewo+Pj4+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IGRybV9pbmZvLT5kcm1fZGV2Owo+Pj4+ICsJY29uc3QgdWludDMyX3QgKmZvcm1hdHM7Cj4+ Pj4gKwlpbnQgZm9ybWF0X2NvdW50Owo+Pj4+ICsJaW50IHJldDsKPj4+PiArCj4+Pj4gKwlwaXBl bGluZS0+ZHJtX2luZm8gPSBkcm1faW5mbzsKPj4+PiArCXBpcGVsaW5lLT5pbmRleCA9IGluZGV4 Owo+Pj4+ICsJcGlwZWxpbmUtPmhlaWdodCA9IGNmZy0+aGVpZ2h0Owo+Pj4+ICsJcGlwZWxpbmUt PndpZHRoID0gY2ZnLT53aWR0aDsKPj4+PiArCj4+Pj4gKwlyZXQgPSB4ZW5fZHJtX2Zyb250X2Nv bm5faW5pdChkcm1faW5mbywgJnBpcGVsaW5lLT5jb25uKTsKPj4+PiArCWlmIChyZXQpCj4+Pj4g KwkJcmV0dXJuIHJldDsKPj4+PiArCj4+Pj4gKwlmb3JtYXRzID0geGVuX2RybV9mcm9udF9jb25u X2dldF9mb3JtYXRzKCZmb3JtYXRfY291bnQpOwo+Pj4+ICsKPj4+PiArCXJldHVybiBkcm1fc2lt cGxlX2Rpc3BsYXlfcGlwZV9pbml0KGRldiwgJnBpcGVsaW5lLT5waXBlLAo+Pj4+ICsJCQkmZGlz cGxheV9mdW5jcywgZm9ybWF0cywgZm9ybWF0X2NvdW50LAo+Pj4+ICsJCQlOVUxMLCAmcGlwZWxp bmUtPmNvbm4pOwo+Pj4+ICt9Cj4+Pj4gKwo+Pj4+ICtpbnQgeGVuX2RybV9mcm9udF9rbXNfaW5p dChzdHJ1Y3QgeGVuX2RybV9mcm9udF9kcm1faW5mbyAqZHJtX2luZm8pCj4+Pj4gK3sKPj4+PiAr CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBkcm1faW5mby0+ZHJtX2RldjsKPj4+PiArCWludCBp LCByZXQ7Cj4+Pj4gKwo+Pj4+ICsJZHJtX21vZGVfY29uZmlnX2luaXQoZGV2KTsKPj4+PiArCj4+ Pj4gKwlkZXYtPm1vZGVfY29uZmlnLm1pbl93aWR0aCA9IDA7Cj4+Pj4gKwlkZXYtPm1vZGVfY29u ZmlnLm1pbl9oZWlnaHQgPSAwOwo+Pj4+ICsJZGV2LT5tb2RlX2NvbmZpZy5tYXhfd2lkdGggPSA0 MDk1Owo+Pj4+ICsJZGV2LT5tb2RlX2NvbmZpZy5tYXhfaGVpZ2h0ID0gMjA0NzsKPj4+PiArCWRl di0+bW9kZV9jb25maWcuZnVuY3MgPSAmbW9kZV9jb25maWdfZnVuY3M7Cj4+Pj4gKwo+Pj4+ICsJ Zm9yIChpID0gMDsgaSA8IGRybV9pbmZvLT5jZmctPm51bV9jb25uZWN0b3JzOyBpKyspIHsKPj4+ PiArCQlzdHJ1Y3QgeGVuX2RybV9mcm9udF9jZmdfY29ubmVjdG9yICpjZmcgPQo+Pj4+ICsJCQkJ JmRybV9pbmZvLT5jZmctPmNvbm5lY3RvcnNbaV07Cj4+Pj4gKwkJc3RydWN0IHhlbl9kcm1fZnJv bnRfZHJtX3BpcGVsaW5lICpwaXBlbGluZSA9Cj4+Pj4gKwkJCQkmZHJtX2luZm8tPnBpcGVsaW5l W2ldOwo+Pj4+ICsKPj4+PiArCQlyZXQgPSBkaXNwbGF5X3BpcGVfaW5pdChkcm1faW5mbywgaSwg Y2ZnLCBwaXBlbGluZSk7Cj4+Pj4gKwkJaWYgKHJldCkgewo+Pj4+ICsJCQlkcm1fbW9kZV9jb25m aWdfY2xlYW51cChkZXYpOwo+Pj4+ICsJCQlyZXR1cm4gcmV0Owo+Pj4+ICsJCX0KPj4+PiArCX0K Pj4+PiArCj4+Pj4gKwlkcm1fbW9kZV9jb25maWdfcmVzZXQoZGV2KTsKPj4+PiArCXJldHVybiAw Owo+Pj4+ICt9Cj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9m cm9udF9rbXMuaCBiL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udF9rbXMuaAo+Pj4+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+Pj4gaW5kZXggMDAwMDAwMDAwMDAwLi42NWE1MDAzM2Ji OWIKPj4+PiAtLS0gL2Rldi9udWxsCj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5f ZHJtX2Zyb250X2ttcy5oCj4+Pj4gQEAgLTAsMCArMSwzMCBAQAo+Pj4+ICsvKgo+Pj4+ICsgKiAg WGVuIHBhcmEtdmlydHVhbCBEUk0gZGV2aWNlCj4+Pj4gKyAqCj4+Pj4gKyAqICAgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKPj4+PiArICogICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQo+Pj4+ICsgKiAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCj4+Pj4gKyAqICAg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPj4+PiArICoKPj4+PiArICogICBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKPj4+PiArICogICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+Pj4+ICsgKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKPj4+PiArICogICBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+Pj4+ICsgKgo+Pj4+ICsgKiBD b3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBFUEFNIFN5c3RlbXMgSW5jLgo+Pj4+ICsgKgo+Pj4+ICsg KiBBdXRob3I6IE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIDxvbGVrc2FuZHJfYW5kcnVzaGNoZW5r b0BlcGFtLmNvbT4KPj4+PiArICovCj4+Pj4gKwo+Pj4+ICsjaWZuZGVmIF9fWEVOX0RSTV9GUk9O VF9LTVNfSF8KPj4+PiArI2RlZmluZSBfX1hFTl9EUk1fRlJPTlRfS01TX0hfCj4+Pj4gKwo+Pj4+ ICsjaW5jbHVkZSAieGVuX2RybV9mcm9udF9kcnYuaCIKPj4+PiArCj4+Pj4gK2ludCB4ZW5fZHJt X2Zyb250X2ttc19pbml0KHN0cnVjdCB4ZW5fZHJtX2Zyb250X2RybV9pbmZvICpkcm1faW5mbyk7 Cj4+Pj4gKwo+Pj4+ICt2b2lkIHhlbl9kcm1fZnJvbnRfa21zX29uX2ZyYW1lX2RvbmUoCj4+Pj4g KwkJc3RydWN0IHhlbl9kcm1fZnJvbnRfZHJtX3BpcGVsaW5lICpwaXBlbGluZSwKPj4+PiArCQl1 aW50NjRfdCBmYl9jb29raWUpOwo+Pj4+ICsKPj4+PiArI2VuZGlmIC8qIF9fWEVOX0RSTV9GUk9O VF9LTVNfSF8gKi8KPj4+PiAtLSAKPj4+PiAyLjcuNAo+Pj4+Cj4+Pj4gX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4+PiBkcmktZGV2ZWwgbWFpbGluZyBs aXN0Cj4+Pj4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+Pj4+IGh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCj4+IFsxXSBodHRw czovL3BhdGNod29yay5rZXJuZWwub3JnL3BhdGNoLzEwMjExOTk3Lwo+PiBfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+PiBkcmktZGV2ZWwgbWFpbGluZyBs aXN0Cj4+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPj4gaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QK ZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752800AbeCFH3j (ORCPT ); Tue, 6 Mar 2018 02:29:39 -0500 Received: from mail-lf0-f52.google.com ([209.85.215.52]:36982 "EHLO mail-lf0-f52.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750836AbeCFH30 (ORCPT ); Tue, 6 Mar 2018 02:29:26 -0500 X-Google-Smtp-Source: AG47ELuIClZU+OgpWf1WOrZuwgJ04dHORe0bVLcbDZ9OTh9Yz0Mn57DUfFyeLrgjMflA1I8C+Gm5lw== Subject: Re: [PATCH 7/9] drm/xen-front: Implement KMS/connector handling To: 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, Oleksandr Andrushchenko References: <1519200222-20623-1-git-send-email-andr2000@gmail.com> <1519200222-20623-8-git-send-email-andr2000@gmail.com> <20180305092353.GI22212@phenom.ffwll.local> <8132411b-ee50-fe42-2e62-8816a1f85433@gmail.com> <20180306072205.GP22212@phenom.ffwll.local> From: Oleksandr Andrushchenko Message-ID: Date: Tue, 6 Mar 2018 09:29:22 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 MIME-Version: 1.0 In-Reply-To: <20180306072205.GP22212@phenom.ffwll.local> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-Language: en-US Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 03/06/2018 09:22 AM, Daniel Vetter wrote: > On Mon, Mar 05, 2018 at 02:59:23PM +0200, Oleksandr Andrushchenko wrote: >> On 03/05/2018 11:23 AM, Daniel Vetter wrote: >>> On Wed, Feb 21, 2018 at 10:03:40AM +0200, Oleksandr Andrushchenko wrote: >>>> From: Oleksandr Andrushchenko >>>> >>>> Implement kernel modesetiing/connector handling using >>>> DRM simple KMS helper pipeline: >>>> >>>> - implement KMS part of the driver with the help of DRM >>>> simple pipepline helper which is possible due to the fact >>>> that the para-virtualized driver only supports a single >>>> (primary) plane: >>>> - initialize connectors according to XenStore configuration >>>> - handle frame done events from the backend >>>> - generate vblank events >>>> - create and destroy frame buffers and propagate those >>>> to the backend >>>> - propagate set/reset mode configuration to the backend on display >>>> enable/disable callbacks >>>> - send page flip request to the backend and implement logic for >>>> reporting backend IO errors on prepare fb callback >>>> >>>> - implement virtual connector handling: >>>> - support only pixel formats suitable for single plane modes >>>> - make sure the connector is always connected >>>> - support a single video mode as per para-virtualized driver >>>> configuration >>>> >>>> Signed-off-by: Oleksandr Andrushchenko >>> I think once you've removed the midlayer in the previous patch it would >>> makes sense to merge the 2 patches into 1. >> ok, will squash the two >>> Bunch more comments below. >>> -Daniel >>> >>>> --- >>>> drivers/gpu/drm/xen/Makefile | 2 + >>>> drivers/gpu/drm/xen/xen_drm_front_conn.c | 125 +++++++++++++ >>>> drivers/gpu/drm/xen/xen_drm_front_conn.h | 35 ++++ >>>> drivers/gpu/drm/xen/xen_drm_front_drv.c | 15 ++ >>>> drivers/gpu/drm/xen/xen_drm_front_drv.h | 12 ++ >>>> drivers/gpu/drm/xen/xen_drm_front_kms.c | 299 +++++++++++++++++++++++++++++++ >>>> drivers/gpu/drm/xen/xen_drm_front_kms.h | 30 ++++ >>>> 7 files changed, 518 insertions(+) >>>> create mode 100644 drivers/gpu/drm/xen/xen_drm_front_conn.c >>>> create mode 100644 drivers/gpu/drm/xen/xen_drm_front_conn.h >>>> create mode 100644 drivers/gpu/drm/xen/xen_drm_front_kms.c >>>> create mode 100644 drivers/gpu/drm/xen/xen_drm_front_kms.h >>>> >>>> diff --git a/drivers/gpu/drm/xen/Makefile b/drivers/gpu/drm/xen/Makefile >>>> index d3068202590f..4fcb0da1a9c5 100644 >>>> --- a/drivers/gpu/drm/xen/Makefile >>>> +++ b/drivers/gpu/drm/xen/Makefile >>>> @@ -2,6 +2,8 @@ >>>> drm_xen_front-objs := xen_drm_front.o \ >>>> xen_drm_front_drv.o \ >>>> + xen_drm_front_kms.o \ >>>> + xen_drm_front_conn.o \ >>>> xen_drm_front_evtchnl.o \ >>>> xen_drm_front_shbuf.o \ >>>> xen_drm_front_cfg.o >>>> diff --git a/drivers/gpu/drm/xen/xen_drm_front_conn.c b/drivers/gpu/drm/xen/xen_drm_front_conn.c >>>> new file mode 100644 >>>> index 000000000000..d9986a2e1a3b >>>> --- /dev/null >>>> +++ b/drivers/gpu/drm/xen/xen_drm_front_conn.c >>>> @@ -0,0 +1,125 @@ >>>> +/* >>>> + * Xen para-virtual DRM device >>>> + * >>>> + * This program is free software; you can redistribute it and/or modify >>>> + * it under the terms of the GNU General Public License as published by >>>> + * the Free Software Foundation; either version 2 of the License, or >>>> + * (at your option) any later version. >>>> + * >>>> + * This program is distributed in the hope that it will be useful, >>>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of >>>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >>>> + * GNU General Public License for more details. >>>> + * >>>> + * Copyright (C) 2016-2018 EPAM Systems Inc. >>>> + * >>>> + * Author: Oleksandr Andrushchenko >>>> + */ >>>> + >>>> +#include >>>> +#include >>>> + >>>> +#include