From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: [PATCH 1/4] drm: add generic zpos property Date: Wed, 11 May 2016 14:24:36 +0300 Message-ID: <7326036.oCkcemzpKu@avalon> References: <1462962308-13410-1-git-send-email-benjamin.gaignard@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1462962308-13410-1-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: Krzysztof Kozlowski , linux-samsung-soc@vger.kernel.org, Bartlomiej Zolnierkiewicz , Seung-Woo Kim , dri-devel@lists.freedesktop.org, Andrzej Hajda , Tobias Jakobi , fabien.dessenne@st.com, vincent.abriou@st.com, Marek Szyprowski List-Id: linux-samsung-soc@vger.kernel.org SGkgQmVuamFtaW4sCgpUaGFuayB5b3UgZm9yIHRoZSBwYXRjaC4KCkkgd291bGQgaGF2ZSBzdGFy dGVkIHdvcmtpbmcgb24gdGhpcyBuZXh0IHdlZWssIHRoYW5rcyBmb3IgYmVhdGluZyBtZSB0byBp dCAKOi0pCgpPbiBXZWRuZXNkYXkgMTEgTWF5IDIwMTYgMTI6MjU6MDUgQmVuamFtaW4gR2FpZ25h cmQgd3JvdGU6Cj4gVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGdlbmVyaWMgcGxhbmUncyB6 cG9zIHByb3BlcnR5IHByb3BlcnR5IHdpdGgKPiB3ZWxsLWRlZmluZWQgc2VtYW50aWNzOgo+IC0g YWRkZWQgenBvcyBwcm9wZXJ0aWVzIHRvIHBsYW5lIGFuZCBwbGFuZSBzdGF0ZSBzdHJ1Y3R1cmVz Cj4gLSBhZGRlZCBoZWxwZXJzIGZvciBub3JtYWxpemluZyB6cG9zIHByb3BlcnRpZXMgb2YgZ2l2 ZW4gc2V0IG9mIHBsYW5lcwo+IC0gd2VsbCBkZWZpbmVkIHNlbWFudGljczogcGxhbmVzIGFyZSBz b3J0ZWQgYnkgenBvcyB2YWx1ZXMgYW5kIHRoZW4gcGxhbmUKPiAgIGlkIHZhbHVlIGlmIHpwb3Mg ZXF1YWxzCj4gCj4gTm9ybWFsaXplZCB6cG9zIHZhbHVlcyBhcmUgY2FsY3VsYXRlZCBhdXRvbWF0 aWNhbGx5IHdoZW4gZ2VuZXJpYwo+IG11dHRhYmxlIHpwb3MgcHJvcGVydHkgaGFzIGJlZW4gaW5p dGlhbGl6ZWQuIERyaXZlcnMgY2FuIHNpbXBseSB1c2UKPiBwbGFuZV9zdGF0ZS0+bm9ybWFsaXpl ZF96cG9zIGluIHRoZWlyIGF0b21pY19jaGVjayBhbmQvb3IgcGxhbmVfdXBkYXRlCj4gY2FsbGJh Y2tzIHdpdGhvdXQgYW55IGFkZGl0aW9uYWwgY2FsbHMgdG8gRFJNIGNvcmUuCj4gCj4gU2lnbmVk LW9mZi1ieTogTWFyZWsgU3p5cHJvd3NraSA8bS5zenlwcm93c2tpQHNhbXN1bmcuY29tPgo+IAo+ IENvbXBhcmUgdG8gTWFyZWsncyBvcmlnaW5hbCBwYXRjaCB6cG9zIHByb3BlcnR5IGlzIG5vdyBz cGVjaWZpYyB0byBlYWNoCj4gcGxhbmUgYW5kIG5vIG1vcmUgdG8gdGhlIGNvcmUuCj4gTm9ybWFs aXplIGZ1bmN0aW9uIHRha2UgY2FyZSBvZiB0aGUgcmFuZ2Ugb2YgcGVyIHBsYW5lIGRlZmluZWQg cmFuZ2UKPiBiZWZvcmUgc2V0IG5vcm1hbGl6ZWRfenBvcy4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBC ZW5qYW1pbiBHYWlnbmFyZCA8YmVuamFtaW4uZ2FpZ25hcmRAbGluYXJvLm9yZz4KPiAKPiBDYzog SW5raSBEYWUgPGlua2kuZGFlQHNhbXN1bmcuY29tPgo+IENjOiBEYW5pZWwgVmV0dGVyIDxkYW5p ZWxAZmZ3bGwuY2g+Cj4gQ2M6IFZpbGxlIFN5cmphbGEgPHZpbGxlLnN5cmphbGFAbGludXguaW50 ZWwuY29tPgo+IENjOiBKb29ueW91bmcgU2hpbSA8ankwOTIyLnNoaW1Ac2Ftc3VuZy5jb20+Cj4g Q2M6IFNldW5nLVdvbyBLaW0gPHN3MDMxMi5raW1Ac2Ftc3VuZy5jb20+Cj4gQ2M6IEFuZHJ6ZWog SGFqZGEgPGEuaGFqZGFAc2Ftc3VuZy5jb20+Cj4gQ2M6IEtyenlzenRvZiBLb3psb3dza2kgPGsu a296bG93c2tpQHNhbXN1bmcuY29tPgo+IENjOiBCYXJ0bG9taWVqIFpvbG5pZXJraWV3aWN6IDxi LnpvbG5pZXJraWVAc2Ftc3VuZy5jb20+Cj4gQ2M6IFRvYmlhcyBKYWtvYmkgPHRqYWtvYmlAbWF0 aC51bmktYmllbGVmZWxkLmRlPgo+IENjOiBHdXN0YXZvIFBhZG92YW4gPGd1c3Rhdm9AcGFkb3Zh bi5vcmc+Cj4gQ2M6IHZpbmNlbnQuYWJyaW91QHN0LmNvbQo+IENjOiBmYWJpZW4uZGVzc2VubmVA c3QuY29tCj4gQ2M6IExhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnQucGluY2hhcnRAaWRlYXNvbmJv YXJkLmNvbT4KPiAKPiAtLS0KPiAgRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2dwdS50bXBsICAgICAg fCAgMTAgKysKPiAgZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlICAgICAgICAgICAgfCAgIDIgKy0K PiAgZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMgfCAgIDYgKwo+ICBkcml2ZXJz L2dwdS9kcm0vZHJtX2JsZW5kLmMgICAgICAgICB8IDI4NCArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKPiAgZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjX2ludGVybmFsLmggfCAgIDMg Kwo+ICBpbmNsdWRlL2RybS9kcm1fY3J0Yy5oICAgICAgICAgICAgICB8ICAyNSArKysrCj4gIDYg ZmlsZXMgY2hhbmdlZCwgMzI5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPiAgY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9kcm1fYmxlbmQuYwo+IAo+IGRpZmYgLS1naXQg YS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svZ3B1LnRtcGwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2sv Z3B1LnRtcGwKPiBpbmRleCA5ZGQ0OGY3Li4wZGY2YWJiIDEwMDY0NAo+IC0tLSBhL0RvY3VtZW50 YXRpb24vRG9jQm9vay9ncHUudG1wbAo+ICsrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9ncHUu dG1wbAo+IEBAIC0yMTUxLDYgKzIxNTEsMTYgQEAgdm9pZCBpbnRlbF9jcnRfaW5pdChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+ICAJCXRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlKS48L3RkPgo+ICAJ PC90cj4KPiAgCTx0cj4KPiArCTx0ZCB2YWxpZ249InRvcCIgPiAienBvcyIgPC90ZD4KPiArCTx0 ZCB2YWxpZ249InRvcCIgPlJBTkdFPC90ZD4KPiArCTx0ZCB2YWxpZ249InRvcCIgPk1pbj0gZHJp dmVyIGRlcGVuZGVudCwgTWF4PSBkcml2ZXIgZGVwZW5kZW50PC90ZD4KPiArCTx0ZCB2YWxpZ249 InRvcCIgPlBsYW5lPC90ZD4KPiArCTx0ZCB2YWxpZ249InRvcCIgPlBsYW5lJ3MgJ3onIHBvc2l0 aW9uIGR1cmluZyBibGVuZGluZyBvcGVyYXRpb24gKDAgZm9yCj4gYmFja2dyb3VuZCwgaGlnaGVz dCBmb3IgZnJvbnRtb3N0KS4KPiArCQlJZiB0d28gcGxhbmVzIGFzc2lnbmVkIHRvIHNhbWUgQ1JU QyBoYXZlIGVxdWFsIHpwb3MgdmFsdWVzLCB0aGUgcGxhbmUKPiB3aXRoIGhpZ2hlciBwbGFuZQo+ ICsJCWlkIGlzIHRyZWF0ZWQgYXMgY2xvc2VyIHRvIGZyb250LiBDYW4gYmUgSU1NVVRBQkxFIGlm IGRyaXZlciBkb2Vzbid0Cj4gc3VwcG9ydCBjaGFuZ2luZwo+ICsJCXBsYW5lcycgb3JkZXIuIEV4 YWN0IHZhbHVlIHJhbmdlIGlzIGRyaXZlciBkZXBlbmRlbnQuPC90ZD4KPiArCTwvdHI+Cj4gKwk8 dHI+Cj4gIAk8dGQgcm93c3Bhbj0iMjAiIHZhbGlnbj0idG9wIiA+aTkxNTwvdGQ+Cj4gIAk8dGQg cm93c3Bhbj0iMiIgdmFsaWduPSJ0b3AiID5HZW5lcmljPC90ZD4KPiAgCTx0ZCB2YWxpZ249InRv cCIgPiJCcm9hZGNhc3QgUkdCIjwvdGQ+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9N YWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQo+IGluZGV4IDJiZDNlNWEuLmRmODgy NTMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL01ha2VmaWxlCj4gQEAgLTIsNyArMiw3IEBACj4gICMgTWFrZWZpbGUgZm9yIHRo ZSBkcm0gZGV2aWNlIGRyaXZlci4gIFRoaXMgZHJpdmVyIHByb3ZpZGVzIHN1cHBvcnQgZm9yIHRo ZQo+ICMgRGlyZWN0IFJlbmRlcmluZyBJbmZyYXN0cnVjdHVyZSAoRFJJKSBpbiBYRnJlZTg2IDQu MS4wIGFuZCBoaWdoZXIuCj4gCj4gLWRybS15ICAgICAgIDo9CWRybV9hdXRoLm8gZHJtX2J1ZnMu byBkcm1fY2FjaGUubyBcCj4gK2RybS15ICAgICAgIDo9CWRybV9hdXRoLm8gZHJtX2J1ZnMubyBk cm1fYmxlbmQubyBkcm1fY2FjaGUubyBcCj4gIAkJZHJtX2NvbnRleHQubyBkcm1fZG1hLm8gXAo+ ICAJCWRybV9mb3BzLm8gZHJtX2dlbS5vIGRybV9pb2N0bC5vIGRybV9pcnEubyBcCj4gIAkJZHJt X2xvY2subyBkcm1fbWVtb3J5Lm8gZHJtX2Rydi5vIGRybV92bS5vIFwKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMKPiBiL2RyaXZlcnMvZ3B1L2RybS9k cm1fYXRvbWljX2hlbHBlci5jIGluZGV4IDk5N2ZkMjEuLmYxMDY1MmYgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vZHJtX2F0b21pY19oZWxwZXIuYwo+IEBAIC0zMiw2ICszMiw4IEBACj4gICNpbmNsdWRlIDxk cm0vZHJtX2F0b21pY19oZWxwZXIuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L2ZlbmNlLmg+Cj4gCj4g KyNpbmNsdWRlICJkcm1fY3J0Y19pbnRlcm5hbC5oIgoKZHJtX2F0b21pY19oZWxwZXJfbm9ybWFs aXplX3pwb3MoKSBpcyBkZWNsYXJlZCBpbiA8ZHJtL2RybV9jcnRjLmg+LCB3aHkgZG8geW91IApu ZWVkIHRvIGluY2x1ZGUgZHJtX2NydGNfaW50ZXJuYWwuaCA/Cgo+ICAvKioKPiAgICogRE9DOiBv dmVydmlldwo+ICAgKgo+IEBAIC01ODcsNiArNTg5LDEwIEBAIGRybV9hdG9taWNfaGVscGVyX2No ZWNrX3BsYW5lcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJc3RydWN0IGRybV9wbGFuZV9z dGF0ZSAqcGxhbmVfc3RhdGU7Cj4gIAlpbnQgaSwgcmV0ID0gMDsKPiAKPiArCXJldCA9IGRybV9h dG9taWNfaGVscGVyX25vcm1hbGl6ZV96cG9zKGRldiwgc3RhdGUpOwo+ICsJaWYgKHJldCkKPiAr CQlyZXR1cm4gcmV0Owo+ICsKPiAgCWZvcl9lYWNoX3BsYW5lX2luX3N0YXRlKHN0YXRlLCBwbGFu ZSwgcGxhbmVfc3RhdGUsIGkpIHsKPiAgCQljb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2hlbHBlcl9m dW5jcyAqZnVuY3M7Cj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYmxlbmQu YyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYmxlbmQuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4g aW5kZXggMDAwMDAwMC4uNzAxNzcxNQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vZHJtX2JsZW5kLmMKPiBAQCAtMCwwICsxLDI4NCBAQAoKW3NuaXBdCgo+ICsjaW5jbHVk ZSA8bGludXgvc2xhYi5oPgo+ICsjaW5jbHVkZSA8bGludXgvc29ydC5oPgo+ICsjaW5jbHVkZSA8 bGludXgvZXhwb3J0Lmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+ICsjaW5jbHVkZSA8ZHJt L2RybV9jcnRjLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pYy5oPgoKTml0cGlja2luZywg Y291bGQgeW91IHBsZWFzZSBrZWVwIGhlYWRlciBmaWxlcyBhbHBoYWJldGljYWxseSBzb3J0ZWQg PyBJdCAKaGVscHMgbG9jYXRpbmcgYW5kIGF2b2lkaW5nIGR1cGxpY2F0ZXMuCgo+ICsjaW5jbHVk ZSAiZHJtX2ludGVybmFsLmgiCj4gKwo+ICsjZGVmaW5lIE1BWChhLCBiKSAoKChhKSA+IChiKSkg PyAoYSkgOiAoYikpCgpsaW51eC9rZXJuZWwuaCBoYXMgbWF4IGFuZCBtYXhfdCwgaXMgdGhlcmUg cmVhbGx5IGEgbmVlZCBmb3IgYSBuZXcgbWFjcm8gPwoKPiArLyoqCj4gKyAqIGRybV9wbGFuZV9h dG9taWNfc2V0X3pwb3NfcHJvcGVydHkgLSBzZXQgcGxhbmUgenBvcyBwcm9wZXJ0eQo+ICsgKiBA cGxhbmU6IGRybSBwbGFuZQo+ICsgKiBAc3RhdGU6IGRybSBwbGFuZSBzdGF0ZQo+ICsgKiBAcHJv cGVydHk6IG11c3QgYmUgdGhlIHpwb3MgcHJvcGVydHkgYXNzb2NpYXRlZCB0byB0aGUgcGxhbmUK PiArICogQHZhbDogenBvcyB2YWx1ZSB0byBiZSBzZXQKPiArICoKPiArICogUmV0dXJuczoKPiAr ICogWmVybyBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJubyBvbiBmYWlsdXJlLgo+ICsgKi8KPiAr aW50IGRybV9wbGFuZV9hdG9taWNfc2V0X3pwb3NfcHJvcGVydHkoc3RydWN0IGRybV9wbGFuZSAq cGxhbmUsCj4gKwkJCQkgICAgICAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUsCj4gKwkJ CQkgICAgICAgc3RydWN0IGRybV9wcm9wZXJ0eSAqcHJvcGVydHksCj4gKwkJCQkgICAgICAgdWlu dDY0X3QgdmFsKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX21vZGVfb2JqZWN0ICpvYmogPSAmcGxhbmUt PmJhc2U7Cj4gKwlpbnQgaTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgb2JqLT5wcm9wZXJ0aWVz LT5jb3VudDsgaSsrKSB7Cj4gKwkJaWYgKG9iai0+cHJvcGVydGllcy0+cHJvcGVydGllc1tpXSA9 PSBwcm9wZXJ0eSkgewo+ICsJCQlzdGF0ZS0+enBvcyA9IHZhbDsKPiArCQkJcmV0dXJuIDA7Cj4g KwkJfQo+ICsJfQo+ICsKPiArCXJldHVybiAtRUlOVkFMOwo+ICt9Cj4gK0VYUE9SVF9TWU1CT0wo ZHJtX3BsYW5lX2F0b21pY19zZXRfenBvc19wcm9wZXJ0eSk7CgpXaHkgZG8geW91IG5lZWQgdGhp cyBmdW5jdGlvbiBpbnN0ZWFkIG9mIGFkZGluZyB6cG9zIHN1cHBvcnQgdG8gCmRybV9hdG9taWNf cGxhbmVfc2V0X3Byb3BlcnR5KCkgPyBTYW1lIHF1ZXN0aW9uIGZvciB0aGUgZ2V0IGhhbmRsZXIu Cgo+ICsvKioKPiArICogZHJtX3BsYW5lX2F0b21pY19nZXRfenBvc19wcm9wZXJ0eSAtIHNldCBw bGFuZSB6cG9zIHByb3BlcnR5Cj4gKyAqIEBwbGFuZTogZHJtIHBsYW5lCj4gKyAqIEBzdGF0ZTog ZHJtIHBsYW5lIHN0YXRlCj4gKyAqIEBwcm9wZXJ0eTogbXVzdCBiZSB0aGUgenBvcyBwcm9wZXJ0 eSBhc3NvY2lhdGVkIHRvIHRoZSBwbGFuZQo+ICsgKiBAdmFsOiB6cG9zIHZhbHVlIHRvIGJlIHJl dHJpZXZlCj4gKyAqCj4gKyAqIFJldHVybnM6Cj4gKyAqIFplcm8gb24gc3VjY2VzcywgbmVnYXRp dmUgZXJybm8gb24gZmFpbHVyZS4KPiArICovCj4gK2ludCBkcm1fcGxhbmVfYXRvbWljX2dldF96 cG9zX3Byb3BlcnR5KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICsJCQkJICAgICAgIGNvbnN0 IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlLAo+ICsJCQkJICAgICAgIHN0cnVjdCBkcm1f cHJvcGVydHkgKnByb3BlcnR5LAo+ICsJCQkJICAgICAgIHVpbnQ2NF90ICp2YWwpCj4gK3sKPiAr CXN0cnVjdCBkcm1fbW9kZV9vYmplY3QgKm9iaiA9ICZwbGFuZS0+YmFzZTsKPiArCWludCBpOwo+ ICsKPiArCWZvciAoaSA9IDA7IGkgPCBvYmotPnByb3BlcnRpZXMtPmNvdW50OyBpKyspIHsKPiAr CQlpZiAob2JqLT5wcm9wZXJ0aWVzLT5wcm9wZXJ0aWVzW2ldID09IHByb3BlcnR5KSB7Cj4gKwkJ CSp2YWwgPSBzdGF0ZS0+enBvczsKPiArCQkJcmV0dXJuIDA7Cj4gKwkJfQo+ICsJfQo+ICsKPiAr CXJldHVybiAtRUlOVkFMOwo+ICt9Cj4gK0VYUE9SVF9TWU1CT0woZHJtX3BsYW5lX2F0b21pY19n ZXRfenBvc19wcm9wZXJ0eSk7Cj4gKwo+ICsvKioKPiArICogZHJtX3BsYW5lX2NyZWF0ZV96cG9z X3Byb3BlcnR5IC0gY3JlYXRlIG11dGFibGUgenBvcyBwcm9wZXJ0eQo+ICsgKiBAcGxhbmU6IGRy bSBwbGFuZQo+ICsgKiBAbWluOiBtaW5pbWFsIHBvc3NpYmxlIHZhbHVlIG9mIHpwb3MgcHJvcGVy dHkKPiArICogQG1heDogbWF4aW1hbCBwb3NzaWJsZSB2YWx1ZSBvZiB6cG9zIHByb3BlcnR5Cj4g KyAqCj4gKyAqIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgZ2VuZXJpYyBtdXRhYmxlIHpwb3Mg cHJvcGVydHkgYW5kIGVuYWJsZXMKPiBzdXBwb3J0Cj4gKyAqIGZvciBpdCBpbiBkcm0gY29yZS4g RHJpdmVycyBjYW4gdGhlbiBhdHRhY2ggdGhpcyBwcm9wZXJ0eSB0byBwbGFuZXMgdG8KPiBlbmFi bGUKPiArICogc3VwcG9ydCBmb3IgY29uZmlndXJhYmxlIHBsYW5lcyBhcnJhbmdlbWVudCBkdXJp bmcgYmxlbmRpbmcgb3BlcmF0aW9uLgo+ICsgKiBPbmNlIG11dGFibGUgenBvcyBwcm9wZXJ0eSBo YXMgYmVlbiBlbmFibGVkLCB0aGUgRFJNIGNvcmUgd2lsbAo+IGF1dG9tYXRpY2FsbHkKPiArICog Y2FsY3VsYXRlIGRybV9wbGFuZV9zdGF0ZS0+bm9ybWFsaXplZF96cG9zIHZhbHVlcy4gVXN1YWxs eSBtaW4gc2hvdWxkIGJlCj4gc2V0IAo+ICsgKiB0byAwIGFuZCBtYXggdG8gbWF4aW1hbCBudW1i ZXIgb2YgcGxhbmVzIGZvciBnaXZlbiBjcnRjIC0gMS4KPiArICoKPiArICogSWYgenBvcyBvZiBz b21lIHBsYW5lcyBjYW5ub3QgYmUgY2hhbmdlZCAobGlrZSBmaXhlZCBiYWNrZ3JvdW5kIG9yCj4g KyAqIGN1cnNvci90b3Btb3N0IHBsYW5lcyksIGRyaXZlciBzaG91bGQgYWRqdXN0IG1pbi9tYXgg dmFsdWVzIGFuZCBhc3NpZ24KPiB0aG9zZQo+ICsgKiBwbGFuZXMgaW1tdXRhYmxlIHpwb3MgcHJv cGVydHkgd2l0aCBsb3dlciBvciBoaWdoZXIgdmFsdWVzIChmb3IgbW9yZQo+ICsgKiBpbmZvcm1h dGlvbiwgc2VlIGRybV9tb2RlX2NyZWF0ZV96cG9zX2ltbXV0YWJsZV9wcm9wZXJ0eSgpIGZ1bmN0 aW9uKS4gSW4KPiBzdWNoCj4gKyAqIGNhc2UgZHJpdmVyIHNob3VsZCBhbHNvIGFzc2lnbiBwcm9w ZXIgaW5pdGlhbCB6cG9zIHZhbHVlcyBmb3IgYWxsIHBsYW5lcwo+IGluCj4gKyAqIGl0cyBwbGFu ZV9yZXNldCgpIGNhbGxiYWNrLCBzbyB0aGUgcGxhbmVzIHdpbGwgYmUgYWx3YXlzIHNvcnRlZAo+ IHByb3Blcmx5Lgo+ICsgKgo+ICsgKiBSZXR1cm5zOgo+ICsgKiBaZXJvIG9uIHN1Y2Nlc3MsIG5l Z2F0aXZlIGVycm5vIG9uIGZhaWx1cmUuCj4gKyAqLwo+ICtpbnQgZHJtX3BsYW5lX2NyZWF0ZV96 cG9zX3Byb3BlcnR5KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICsJCQkJICAgdW5zaWduZWQg aW50IG1pbiwgdW5zaWduZWQgaW50IG1heCkKPiArewo+ICsJc3RydWN0IGRybV9wcm9wZXJ0eSAq cHJvcDsKPiArCj4gKwlwcm9wID0gZHJtX3Byb3BlcnR5X2NyZWF0ZV9yYW5nZShwbGFuZS0+ZGV2 LCAwLCAienBvcyIsIG1pbiwgbWF4KTsKPiArCWlmICghcHJvcCkKPiArCQlyZXR1cm4gLUVOT01F TTsKPiArCgpZb3Ugc2hvdWxkIGNhY2hlIHByb3AgKGluIGRybV9tb2RlX2NvbmZpZykgaW5zdGVh ZCBvZiByZWNyZWF0aW5nIGl0IGZvciBlYWNoIApwbGFuZSwgbGlrZSBkb25lIGZvciB0aGUgb3Ro ZXIgcHJvcGVydGllcy4gU2FtZSBpbiB0aGUgbmV4dCBmdW5jdGlvbi4KCj4gKwlkcm1fb2JqZWN0 X2F0dGFjaF9wcm9wZXJ0eSgmcGxhbmUtPmJhc2UsIHByb3AsIG1pbik7Cj4gKwlyZXR1cm4gMDsK PiArfQo+ICtFWFBPUlRfU1lNQk9MKGRybV9wbGFuZV9jcmVhdGVfenBvc19wcm9wZXJ0eSk7Cj4g Kwo+ICsvKioKPiArICogZHJtX3BsYW5lX2NyZWF0ZV96cG9zX2ltbXV0YWJsZV9wcm9wZXJ0eSAt IGNyZWF0ZSBpbW11dHRhYmxlIHpwb3MKPiBwcm9wZXJ0eQo+ICsgKiBAcGxhbmU6IGRybSBwbGFu ZQo+ICsgKiBAbWluOiBtaW5pbWFsIHBvc3NpYmxlIHZhbHVlIG9mIHpwb3MgcHJvcGVydHkKPiAr ICogQG1heDogbWF4aW1hbCBwb3NzaWJsZSB2YWx1ZSBvZiB6cG9zIHByb3BlcnR5Cj4gKyAqCj4g KyAqIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgZ2VuZXJpYyBpbW11dGFibGUgenBvcyBwcm9w ZXJ0eSBhbmQgZW5hYmxlcwo+ICsgKiBzdXBwb3J0IGZvciBpdCBpbiBkcm0gY29yZS4gVXNpbmcg dGhpcyBwcm9wZXJ0eSBkcml2ZXIgbGV0cyB1c2Vyc3BhY2UKPiArICogdG8gZ2V0IHRoZSBhcnJh bmdlbWVudCBvZiB0aGUgcGxhbmVzIGZvciBibGVuZGluZyBvcGVyYXRpb24gYW5kIG5vdGlmaWVz Cj4gKyAqIGl0IHRoYXQgdGhlIGhhcmR3YXJlIChvciBkcml2ZXIpIGRvZXNuJ3Qgc3VwcG9ydCBj aGFuZ2luZyBvZiB0aGUKPiBwbGFuZXMnCj4gKyAqIG9yZGVyLgo+ICsgKgo+ICsgKiBSZXR1cm5z Ogo+ICsgKiBaZXJvIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm5vIG9uIGZhaWx1cmUuCj4gKyAq Lwo+ICtpbnQgZHJtX3BsYW5lX2NyZWF0ZV96cG9zX2ltbXV0YWJsZV9wcm9wZXJ0eShzdHJ1Y3Qg ZHJtX3BsYW5lICpwbGFuZSwKPiArCQkJCQkgICAgIHVuc2lnbmVkIGludCBtaW4sIHVuc2lnbmVk IGludCBtYXgpCj4gK3sKPiArCXN0cnVjdCBkcm1fcHJvcGVydHkgKnByb3A7Cj4gKwo+ICsJcHJv cCA9IGRybV9wcm9wZXJ0eV9jcmVhdGVfcmFuZ2UocGxhbmUtPmRldiwgRFJNX01PREVfUFJPUF9J TU1VVEFCTEUsCj4gKwkJCQkJICJ6cG9zIiwgbWluLCBtYXgpOwoKQ2FuIHR3byBwcm9wZXJ0aWVz IGV4aXN0IHdpdGggdGhlIHNhbWUgbmFtZSBidXQgZGlmZmVyZW50IGZsYWdzIChpbW11dGFibGUg YW5kIAptdXRhYmxlKSA/IE9yIHdpdGggZGlmZmVyZW50IG1pbi9tYXggdmFsdWVzID8gSSBkb24n dCBleHBlY3QgbWluL21heCB0byBiZSAKZGlmZmVyZW50IGZvciBldmVyeSBwbGFuZSwgc28gbWF5 YmUgYSBmdW5jdGlvbiB0aGF0IGNyZWF0ZXMgdGhlIHpwb3MgcHJvcGVydHkgCm9uY2Ugd2l0aCBt aW4vbWF4IHZhbHVlcyBhbmQgYSBzZWNvbmQgb25lIHRoYXQgYXR0YWNoZXMgdGhlIHByb3BlcnR5 IHRvIHBsYW5lcyAKd291bGQgYmUgYSBiZXR0ZXIgQVBJLgoKPiArCWlmICghcHJvcCkKPiArCQly ZXR1cm4gLUVOT01FTTsKPiArCj4gKwlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmcGxhbmUt PmJhc2UsIHByb3AsIG1pbik7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICtFWFBPUlRfU1lNQk9MKGRy bV9wbGFuZV9jcmVhdGVfenBvc19pbW11dGFibGVfcHJvcGVydHkpOwo+ICsKPiArc3RhdGljIGlu dCBkcm1fYXRvbWljX3N0YXRlX3pwb3NfY21wKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIp Cj4gK3sKPiArCWNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnNhID0gKihzdHJ1Y3QgZHJt X3BsYW5lX3N0YXRlICoqKWE7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpzYiA9 ICooc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqKiliOwo+ICsJaW50IHpwb3NfYSA9IChzYS0+enBv cyA8PCAxNikgKyBzYS0+cGxhbmUtPmJhc2UuaWQ7Cj4gKwlpbnQgenBvc19iID0gKHNiLT56cG9z IDw8IDE2KSArIHNiLT5wbGFuZS0+YmFzZS5pZDsKPiArCj4gKwlyZXR1cm4genBvc19hIC0genBv c19iOwoKSW5zdGVhZCBvZiBwbGF5aW5nIHRyaWNrcyB3aXRoIHRoZSBpZHMgdGhhdCB3aWxsIGNy ZWF0ZSBhIGRlcGVuZGVuY3kgb24gdGhlIApwbGFuZSBpZCB2YWx1ZSByYW5nZSwgaG93IGFib3V0 CgoJaWYgKHNhLT56cG9zICE9IHNiLT56cG9zKQoJCXJldHVybiBzYS0+enBvcyAtIHNiLT56cG9z OwoJZWxzZQoJCXJldHVybiBzYS0+cGxhbmUtPmJhc2UuaWQgLSBzYi0+cGxhbmUtPmJhc2UuaWQ7 Cgo+ICt9Cj4gKwo+ICsvKioKPiArICogZHJtX2F0b21pY19oZWxwZXJfY3J0Y19ub3JtYWxpemVf enBvcyAtIGNhbGN1bGF0ZSBub3JtYWxpemVkIHpwb3MgdmFsdWVzCj4gKyAqIEBjcnRjOiBjcnRj IHdpdGggcGxhbmVzLCB3aGljaCBoYXZlIHRvIGJlIGNvbnNpZGVyZWQgZm9yIG5vcm1hbGl6YXRp b24KPiArICogQGNydGNfc3RhdGU6IG5ldyBhdG9taWMgc3RhdGUgdG8gYXBwbHkKPiArICoKPiAr ICogVGhpcyBmdW5jdGlvbiBjaGVja3MgbmV3IHN0YXRlcyBvZiBhbGwgcGxhbmVzIGFzc2lnbmVk IHRvIGdpdmVuIGNydGMgYW5kCj4gKyAqIGNhbGN1bGF0ZXMgbm9ybWFsaXplZCB6cG9zIHZhbHVl IGZvciB0aGVtLiBQbGFuZXMgYXJlIGNvbXBhcmVkIGZpcnN0IGJ5Cj4gdGhlaXIKPiArICogenBv cyB2YWx1ZXMsIHRoZW4gYnkgcGxhbmUgaWQgKGlmIHpwb3MgZXF1YWxzKS4gUGxhbmUgd2l0aCBs b3dlc3QgenBvcwo+IHZhbHVlCj4gKyAqIGlzIGF0IHRoZSBib3R0b20uIFRoZSBwbGFuZV9zdGF0 ZS0+bm9ybWFsaXplZF96cG9zIGlzIHRoZW4gZmlsbGVkIHdpdGgKPiB1bmlxdWUKPiArICogdmFs dWVzIGZyb20gMCB0byBudW1iZXIgb2YgYWN0aXZlIHBsYW5lcyBpbiBjcnRjIG1pbnVzIG9uZS4K PiArICoKPiArICogUkVUVVJOUwo+ICsgKiBaZXJvIGZvciBzdWNjZXNzIG9yIC1lcnJubwo+ICsg Ki8KPiAraW50IGRybV9hdG9taWNfaGVscGVyX2NydGNfbm9ybWFsaXplX3pwb3Moc3RydWN0IGRy bV9jcnRjICpjcnRjLAo+ICsJCQkJCSAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRl KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUgPSBjcnRjX3N0YXRlLT5z dGF0ZTsKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4gKwlpbnQgdG90 YWxfcGxhbmVzID0gZGV2LT5tb2RlX2NvbmZpZy5udW1fdG90YWxfcGxhbmU7Cj4gKwlzdHJ1Y3Qg ZHJtX3BsYW5lX3N0YXRlICoqc3RhdGVzOwo+ICsJc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7Cj4g KwlpbnQgaSwgenBvcywgbiA9IDA7Cj4gKwlpbnQgcmV0ID0gMDsKPiArCj4gKwlEUk1fREVCVUdf QVRPTUlDKCJbQ1JUQzolZDolc10gY2FsY3VsYXRpbmcgbm9ybWFsaXplZCB6cG9zIHZhbHVlc1xu IiwKPiArCQkJIGNydGMtPmJhc2UuaWQsIGNydGMtPm5hbWUpOwo+ICsKPiArCXN0YXRlcyA9IGtt YWxsb2ModG90YWxfcGxhbmVzICogc2l6ZW9mKCpzdGF0ZXMpLCBHRlBfS0VSTkVMKTsKPiArCWlm ICghc3RhdGVzKQo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsKPiArCS8qCj4gKwkgKiBOb3JtYWxp emF0aW9uIHByb2Nlc3MgbWlnaHQgY3JlYXRlIG5ldyBzdGF0ZXMgZm9yIHBsYW5lcyB3aGljaAo+ ICsJICogbm9ybWFsaXplZF96cG9zIGhhcyB0byBiZSByZWNhbGN1bGF0ZWQuCj4gKwkgKi8KPiAr CWRybV9mb3JfZWFjaF9wbGFuZV9tYXNrKHBsYW5lLCBkZXYsIGNydGNfc3RhdGUtPnBsYW5lX21h c2spIHsKPiArCQlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSA9Cj4gKwkJCWRy bV9hdG9taWNfZ2V0X3BsYW5lX3N0YXRlKHN0YXRlLCBwbGFuZSk7Cj4gKwkJaWYgKElTX0VSUihw bGFuZV9zdGF0ZSkpIHsKPiArCQkJcmV0ID0gUFRSX0VSUihwbGFuZV9zdGF0ZSk7Cj4gKwkJCWdv dG8gZmFpbDsKPiArCQl9Cj4gKwkJc3RhdGVzW24rK10gPSBwbGFuZV9zdGF0ZTsKPiArCQlEUk1f REVCVUdfQVRPTUlDKCJbUExBTkU6JWQ6JXNdIHByb2Nlc3NpbmcgenBvcyB2YWx1ZSAlZFxuIiwK PiArCQkJCSBwbGFuZS0+YmFzZS5pZCwgcGxhbmUtPm5hbWUsCj4gKwkJCQkgcGxhbmVfc3RhdGUt Pnpwb3MpOwo+ICsJfQo+ICsKPiArCXNvcnQoc3RhdGVzLCBuLCBzaXplb2YoKnN0YXRlcyksIGRy bV9hdG9taWNfc3RhdGVfenBvc19jbXAsIE5VTEwpOwo+ICsKPiArCWZvciAoaSA9IDAsIHpwb3Mg PSAwOyBpIDwgbjsgaSsrLCB6cG9zKyspIHsKPiArCQlwbGFuZSA9IHN0YXRlc1tpXS0+cGxhbmU7 Cj4gKwo+ICsJCXpwb3MgPSBNQVgoenBvcywgc3RhdGVzW2ldLT56cG9zKTsKPiArCj4gKwkJc3Rh dGVzW2ldLT5ub3JtYWxpemVkX3pwb3MgPSB6cG9zOwoKQ2FuJ3QgeW91IGp1c3QgdXNlIGkgaW5z dGVhZCBvZiBNQVgoenBvcywgc3RhdGVzW2ldLT56cG9zKSA/Cgo+ICsJCURSTV9ERUJVR19BVE9N SUMoIltQTEFORTolZDolc10gbm9ybWFsaXplZCB6cG9zIHZhbHVlICVkXG4iLAo+ICsJCQkJIHBs YW5lLT5iYXNlLmlkLCBwbGFuZS0+bmFtZSwgenBvcyk7Cj4gKwl9Cj4gKwljcnRjX3N0YXRlLT56 cG9zX2NoYW5nZWQgPSB0cnVlOwo+ICsKPiArZmFpbDoKCldlIHJlYWNoIHRoZSBsYWJlbCBpbiB0 aGUgbm9ybWFsIGNvZGUgcGF0aCB0b28sIEkgd291bGQgdGh1cyBjYWxsIGl0IGRvbmUgb3IgCmV4 aXQgaW5zdGVhZCBvZiBmYWlsLgoKPiArCWtmcmVlKHN0YXRlcyk7Cj4gKwlyZXR1cm4gcmV0Owo+ ICt9Cj4gK0VYUE9SVF9TWU1CT0woZHJtX2F0b21pY19oZWxwZXJfY3J0Y19ub3JtYWxpemVfenBv cyk7Cj4gKwo+ICsvKioKPiArICogZHJtX2F0b21pY19oZWxwZXJfbm9ybWFsaXplX3pwb3MgLSBj YWxjdWxhdGUgbm9ybWFsaXplZCB6cG9zIHZhbHVlcyBmb3IKPiBhbGwKPiArICoJCQkJICAgICAg Y3J0Y3MKPiArICogQGRldjogRFJNIGRldmljZQo+ICsgKiBAc3RhdGU6IGF0b21pYyBzdGF0ZSBv ZiBEUk0gZGV2aWNlCj4gKyAqCj4gKyAqIFRoaXMgZnVuY3Rpb24gY2FsY3VsYXRlcyBub3JtYWxp emVkIHpwb3MgdmFsdWUgZm9yIGFsbCBtb2RpZmllZCBwbGFuZXMKPiBpbgo+ICsgKiB0aGUgcHJv dmlkZWQgYXRvbWljIHN0YXRlIG9mIERSTSBkZXZpY2UuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBz ZWUKPiArICogZHJtX2F0b21pY19oZWxwZXJfY3J0Y19ub3JtYWxpemVfenBvcygpIGZ1bmN0aW9u Lgo+ICsgKgo+ICsgKiBSRVRVUk5TCj4gKyAqIFplcm8gZm9yIHN1Y2Nlc3Mgb3IgLWVycm5vCj4g KyAqLwo+ICtpbnQgZHJtX2F0b21pY19oZWxwZXJfbm9ybWFsaXplX3pwb3Moc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKPiArCQkJCSAgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ ICt7Cj4gKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4gKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUg KmNydGNfc3RhdGU7Cj4gKwlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKPiArCXN0cnVjdCBkcm1f cGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlOwo+ICsJaW50IGksIHJldCA9IDA7Cj4gKwo+ICsJZm9y X2VhY2hfcGxhbmVfaW5fc3RhdGUoc3RhdGUsIHBsYW5lLCBwbGFuZV9zdGF0ZSwgaSkgewo+ICsJ CWNydGMgPSBwbGFuZV9zdGF0ZS0+Y3J0YzsKPiArCQlpZiAoIWNydGMpCj4gKwkJCWNvbnRpbnVl Owo+ICsJCWlmIChwbGFuZS0+c3RhdGUtPnpwb3MgIT0gcGxhbmVfc3RhdGUtPnpwb3MpIHsKPiAr CQkJY3J0Y19zdGF0ZSA9Cj4gKwkJCQlkcm1fYXRvbWljX2dldF9leGlzdGluZ19jcnRjX3N0YXRl KHN0YXRlLCBjcnRjKTsKPiArCQkJY3J0Y19zdGF0ZS0+enBvc19jaGFuZ2VkID0gdHJ1ZTsKPiAr CQl9Cj4gKwl9Cj4gKwo+ICsJZm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0 Y19zdGF0ZSwgaSkgewo+ICsJCWlmIChjcnRjX3N0YXRlLT5wbGFuZV9tYXNrICE9IGNydGMtPnN0 YXRlLT5wbGFuZV9tYXNrIHx8Cj4gKwkJICAgIGNydGNfc3RhdGUtPnpwb3NfY2hhbmdlZCkgewo+ ICsJCQlyZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jcnRjX25vcm1hbGl6ZV96cG9zKGNydGMsCj4g KwkJCQkJCQkJICAgIGNydGNfc3RhdGUpOwo+ICsJCQlpZiAocmV0KQo+ICsJCQkJcmV0dXJuIHJl dDsKPiArCQl9Cj4gKwl9Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICtFWFBPUlRfU1lNQk9MKGRybV9h dG9taWNfaGVscGVyX25vcm1hbGl6ZV96cG9zKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2RybV9jcnRjX2ludGVybmFsLmgKPiBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Y19pbnRl cm5hbC5oIGluZGV4IGE3OGMxMzguLjM3ZDkwNjggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2RybV9jcnRjX2ludGVybmFsLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NydGNf aW50ZXJuYWwuaAo+IEBAIC00MiwzICs0Miw2IEBAIGludCBkcm1fYXRvbWljX2dldF9wcm9wZXJ0 eShzdHJ1Y3QgZHJtX21vZGVfb2JqZWN0ICpvYmosCj4gIGludCBkcm1fbW9kZV9hdG9taWNfaW9j dGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQkJICB2b2lkICpkYXRhLCBzdHJ1Y3QgZHJt X2ZpbGUgKmZpbGVfcHJpdik7Cj4gCj4gKy8qIGRybV9ibGVuZC5jICovCj4gK2ludCBkcm1fYXRv bWljX2hlbHBlcl9ub3JtYWxpemVfenBvcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICsJCQkJ ICAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpOwo+IGRpZmYgLS1naXQgYS9pbmNs dWRlL2RybS9kcm1fY3J0Yy5oIGIvaW5jbHVkZS9kcm0vZHJtX2NydGMuaAo+IGluZGV4IGQxNTU5 Y2QuLmEzNGJjMjkgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2NydGMuaAo+ICsrKyBi L2luY2x1ZGUvZHJtL2RybV9jcnRjLmgKPiBAQCAtMzA1LDYgKzMwNSw3IEBAIHN0cnVjdCBkcm1f cGxhbmVfaGVscGVyX2Z1bmNzOwo+ICAgKiBAbW9kZV9jaGFuZ2VkOiBjcnRjX3N0YXRlLT5tb2Rl IG9yIGNydGNfc3RhdGUtPmVuYWJsZSBoYXMgYmVlbiBjaGFuZ2VkCj4gICAqIEBhY3RpdmVfY2hh bmdlZDogY3J0Y19zdGF0ZS0+YWN0aXZlIGhhcyBiZWVuIHRvZ2dsZWQuCj4gICAqIEBjb25uZWN0 b3JzX2NoYW5nZWQ6IGNvbm5lY3RvcnMgdG8gdGhpcyBjcnRjIGhhdmUgYmVlbiB1cGRhdGVkCj4g KyAqIEB6cG9zX2NoYW5nZWQ6IHpwb3MgdmFsdWVzIG9mIHBsYW5lcyBvbiB0aGlzIGNydGMgaGF2 ZSBiZWVuIHVwZGF0ZWQKPiAgICogQGNvbG9yX21nbXRfY2hhbmdlZDogY29sb3IgbWFuYWdlbWVu dCBwcm9wZXJ0aWVzIGhhdmUgY2hhbmdlZCAoZGVnYW1tYQo+IG9yICoJZ2FtbWEgTFVUIG9yIENT QyBtYXRyaXgpCj4gICAqIEBwbGFuZV9tYXNrOiBiaXRtYXNrIG9mICgxIDw8IGRybV9wbGFuZV9p bmRleChwbGFuZSkpIG9mIGF0dGFjaGVkIHBsYW5lcwo+IEBAIC0zNDAsNiArMzQxLDcgQEAgc3Ry dWN0IGRybV9jcnRjX3N0YXRlIHsKPiAgCWJvb2wgbW9kZV9jaGFuZ2VkIDogMTsKPiAgCWJvb2wg YWN0aXZlX2NoYW5nZWQgOiAxOwo+ICAJYm9vbCBjb25uZWN0b3JzX2NoYW5nZWQgOiAxOwo+ICsJ Ym9vbCB6cG9zX2NoYW5nZWQgOiAxOwo+ICAJYm9vbCBjb2xvcl9tZ210X2NoYW5nZWQgOiAxOwo+ IAo+ICAJLyogYXR0YWNoZWQgcGxhbmVzIGJpdG1hc2s6Cj4gQEAgLTEyNjMsNiArMTI2NSw5IEBA IHN0cnVjdCBkcm1fY29ubmVjdG9yIHsKPiAgICoJcGxhbmUgKGluIDE2LjE2KQo+ICAgKiBAc3Jj X3c6IHdpZHRoIG9mIHZpc2libGUgcG9ydGlvbiBvZiBwbGFuZSAoaW4gMTYuMTYpCj4gICAqIEBz cmNfaDogaGVpZ2h0IG9mIHZpc2libGUgcG9ydGlvbiBvZiBwbGFuZSAoaW4gMTYuMTYpCj4gKyAq IEB6cG9zOiBwcmlvcml0eSBvZiB0aGUgZ2l2ZW4gcGxhbmUgb24gY3J0YyAob3B0aW9uYWwpCj4g KyAqIEBub3JtYWxpemVkX3pwb3M6IG5vcm1hbGl6ZWQgdmFsdWUgb2YgenBvczogdW5pcXVlLCBy YW5nZSBmcm9tIDAgdG8gTgo+ICsgKgkgZm9yIGdpdmVuIGNydGMKCklmIE4gaXMgdGhlIG51bWJl ciBvZiBhY3RpdmUgcGxhbmVzIHRoYXQgd291bGQgYmUgMCB0byBOLTEuIElmIE4gaXMgdGhlIG51 bWJlciAKb2YgYWN0aXZlIHBsYW5lcyBtaW51cyBvbmUgdGhlbiB0aGlzIGlzIGNvcnJlY3QgOi0p Cgo+ICAgKiBAc3RhdGU6IGJhY2twb2ludGVyIHRvIGdsb2JhbCBkcm1fYXRvbWljX3N0YXRlCj4g ICAqLwo+ICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIHsKPiBAQCAtMTI4Myw2ICsxMjg4LDEwIEBA IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgewo+ICAJLyogUGxhbmUgcm90YXRpb24gKi8KPiAgCXVu c2lnbmVkIGludCByb3RhdGlvbjsKPiAKPiArCS8qIFBsYW5lIHpwb3MgKi8KPiArCXVuc2lnbmVk IGludCB6cG9zOwo+ICsJdW5zaWduZWQgaW50IG5vcm1hbGl6ZWRfenBvczsKPiArCj4gIAlzdHJ1 Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGU7Cj4gIH07Cj4gCj4gQEAgLTI1NTQsNiArMjU2Mywy MiBAQCBleHRlcm4gc3RydWN0IGRybV9wcm9wZXJ0eQo+ICpkcm1fbW9kZV9jcmVhdGVfcm90YXRp b25fcHJvcGVydHkoc3RydWN0IGRybV9kZXZpY2UgZXh0ZXJuIHVuc2lnbmVkIGludAo+IGRybV9y b3RhdGlvbl9zaW1wbGlmeSh1bnNpZ25lZCBpbnQgcm90YXRpb24sCj4gIAkJCQkJICB1bnNpZ25l ZCBpbnQgc3VwcG9ydGVkX3JvdGF0aW9ucyk7Cj4gCj4gK2V4dGVybiBpbnQgZHJtX3BsYW5lX2F0 b21pY19zZXRfenBvc19wcm9wZXJ0eShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiArCQkJCQkg ICAgICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSwKPiArCQkJCQkgICAgICBzdHJ1Y3Qg ZHJtX3Byb3BlcnR5ICpwcm9wZXJ0eSwKPiArCQkJCQkgICAgICB1aW50NjRfdCB2YWwpOwo+ICsK CllvdSBjYW4gZHJvcCB0aGUgZXh0ZXJuIGtleXdvcmRzLCB0aGV5J3JlIG5vdCBuZWVkZWQuIEkg a25vdyB0aGF0IGxvdHMgb2YgCmZ1bmN0aW9ucyBpbiB0aGlzIGhlYWRlciBmaWxlIHVzZSBleHRl cm4sIGJ1dCBub3QgYWxsIG9mIHRoZW0gZG8sIGFuZCBtb3ZpbmcgCmZvcndhcmQgSSBkb24ndCBz ZWUgYSBiaWcgcmVhc29uIHRvIGtlZXAgdXNpbmcgdW5uZWVkZWQga2V5d29yZHMuCgo+ICtleHRl cm4gaW50IGRybV9wbGFuZV9hdG9taWNfZ2V0X3pwb3NfcHJvcGVydHkoc3RydWN0IGRybV9wbGFu ZSAqcGxhbmUsCj4gKwkJCQkJICAgICAgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3Rh dGUsCj4gKwkJCQkJICAgICAgc3RydWN0IGRybV9wcm9wZXJ0eSAqcHJvcGVydHksCj4gKwkJCQkJ ICAgICAgdWludDY0X3QgKnZhbCk7Cj4gKwo+ICtleHRlcm4gaW50IGRybV9wbGFuZV9jcmVhdGVf enBvc19wcm9wZXJ0eShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiArCQkJCQkgIHVuc2lnbmVk IGludCBtaW4sIHVuc2lnbmVkIGludCBtYXgpOwoKU2hvdWxkbid0IHRoaXMgYmUgbmFtZWQgZHJt X3BsYW5lX2F0dGFjaF96cG9zX3Byb3BlcnR5KCkgaW5zdGVhZCA/IFRoZSBtYWluIApwdXJwb3Nl IG9mIHRoZSBmdW5jdGlvbiBpcyB0byBhdHRhY2ggdGhlIHByb3BlcnR5LCBldmVuIGlmIGl0IGhh cyB0byBjcmVhdGUgaXQgCm9uIGZpcnN0IGludm9jYXRpb24gYXMgYSBzaWRlIGVmZmVjdC4KCj4g K2V4dGVybiBpbnQgZHJtX3BsYW5lX2NyZWF0ZV96cG9zX2ltbXV0YWJsZV9wcm9wZXJ0eShzdHJ1 Y3QgZHJtX3BsYW5lCj4gKnBsYW5lLAo+ICsJCQkJCQkgICAgdW5zaWduZWQgaW50IG1pbiwKPiAr CQkJCQkJICAgIHVuc2lnbmVkIGludCBtYXgpOwo+ICsgCj4gIC8qIEhlbHBlcnMgKi8KPiAKPiAg c3RhdGljIGlubGluZSBzdHJ1Y3QgZHJtX3BsYW5lICpkcm1fcGxhbmVfZmluZChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAoKLS0gClJlZ2FyZHMsCgpMYXVyZW50IFBpbmNoYXJ0CgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBs aXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK