From mboxrd@z Thu Jan 1 00:00:00 1970 From: Benjamin Gaignard Subject: [PATCH 1/4] drm: add generic zpos property Date: Wed, 11 May 2016 12:25:05 +0200 Message-ID: <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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org, linux-samsung-soc@vger.kernel.org, daniel@ffwll.ch Cc: Krzysztof Kozlowski , Bartlomiej Zolnierkiewicz , Seung-Woo Kim , fabien.dessenne@st.com, Andrzej Hajda , Tobias Jakobi , Laurent Pinchart , Benjamin Gaignard , vincent.abriou@st.com, Marek Szyprowski List-Id: linux-samsung-soc@vger.kernel.org VGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGdlbmVyaWMgcGxhbmUncyB6cG9zIHByb3BlcnR5 IHByb3BlcnR5IHdpdGgKd2VsbC1kZWZpbmVkIHNlbWFudGljczoKLSBhZGRlZCB6cG9zIHByb3Bl cnRpZXMgdG8gcGxhbmUgYW5kIHBsYW5lIHN0YXRlIHN0cnVjdHVyZXMKLSBhZGRlZCBoZWxwZXJz IGZvciBub3JtYWxpemluZyB6cG9zIHByb3BlcnRpZXMgb2YgZ2l2ZW4gc2V0IG9mIHBsYW5lcwot IHdlbGwgZGVmaW5lZCBzZW1hbnRpY3M6IHBsYW5lcyBhcmUgc29ydGVkIGJ5IHpwb3MgdmFsdWVz IGFuZCB0aGVuIHBsYW5lCiAgaWQgdmFsdWUgaWYgenBvcyBlcXVhbHMKCk5vcm1hbGl6ZWQgenBv cyB2YWx1ZXMgYXJlIGNhbGN1bGF0ZWQgYXV0b21hdGljYWxseSB3aGVuIGdlbmVyaWMKbXV0dGFi bGUgenBvcyBwcm9wZXJ0eSBoYXMgYmVlbiBpbml0aWFsaXplZC4gRHJpdmVycyBjYW4gc2ltcGx5 IHVzZQpwbGFuZV9zdGF0ZS0+bm9ybWFsaXplZF96cG9zIGluIHRoZWlyIGF0b21pY19jaGVjayBh bmQvb3IgcGxhbmVfdXBkYXRlCmNhbGxiYWNrcyB3aXRob3V0IGFueSBhZGRpdGlvbmFsIGNhbGxz IHRvIERSTSBjb3JlLgoKU2lnbmVkLW9mZi1ieTogTWFyZWsgU3p5cHJvd3NraSA8bS5zenlwcm93 c2tpQHNhbXN1bmcuY29tPgoKQ29tcGFyZSB0byBNYXJlaydzIG9yaWdpbmFsIHBhdGNoIHpwb3Mg cHJvcGVydHkgaXMgbm93IHNwZWNpZmljIHRvIGVhY2gKcGxhbmUgYW5kIG5vIG1vcmUgdG8gdGhl IGNvcmUuCk5vcm1hbGl6ZSBmdW5jdGlvbiB0YWtlIGNhcmUgb2YgdGhlIHJhbmdlIG9mIHBlciBw bGFuZSBkZWZpbmVkIHJhbmdlCmJlZm9yZSBzZXQgbm9ybWFsaXplZF96cG9zLgoKU2lnbmVkLW9m Zi1ieTogQmVuamFtaW4gR2FpZ25hcmQgPGJlbmphbWluLmdhaWduYXJkQGxpbmFyby5vcmc+CgpD YzogSW5raSBEYWUgPGlua2kuZGFlQHNhbXN1bmcuY29tPgpDYzogRGFuaWVsIFZldHRlciA8ZGFu aWVsQGZmd2xsLmNoPgpDYzogVmlsbGUgU3lyamFsYSA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRl bC5jb20+CkNjOiBKb29ueW91bmcgU2hpbSA8ankwOTIyLnNoaW1Ac2Ftc3VuZy5jb20+CkNjOiBT ZXVuZy1Xb28gS2ltIDxzdzAzMTIua2ltQHNhbXN1bmcuY29tPgpDYzogQW5kcnplaiBIYWpkYSA8 YS5oYWpkYUBzYW1zdW5nLmNvbT4KQ2M6IEtyenlzenRvZiBLb3psb3dza2kgPGsua296bG93c2tp QHNhbXN1bmcuY29tPgpDYzogQmFydGxvbWllaiBab2xuaWVya2lld2ljeiA8Yi56b2xuaWVya2ll QHNhbXN1bmcuY29tPgpDYzogVG9iaWFzIEpha29iaSA8dGpha29iaUBtYXRoLnVuaS1iaWVsZWZl bGQuZGU+CkNjOiBHdXN0YXZvIFBhZG92YW4gPGd1c3Rhdm9AcGFkb3Zhbi5vcmc+CkNjOiB2aW5j ZW50LmFicmlvdUBzdC5jb20KQ2M6IGZhYmllbi5kZXNzZW5uZUBzdC5jb20KQ2M6IExhdXJlbnQg UGluY2hhcnQgPGxhdXJlbnQucGluY2hhcnRAaWRlYXNvbmJvYXJkLmNvbT4KCi0tLQogRG9jdW1l bnRhdGlvbi9Eb2NCb29rL2dwdS50bXBsICAgICAgfCAgMTAgKysKIGRyaXZlcnMvZ3B1L2RybS9N YWtlZmlsZSAgICAgICAgICAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19o ZWxwZXIuYyB8ICAgNiArCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2JsZW5kLmMgICAgICAgICB8IDI4 NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9k cm1fY3J0Y19pbnRlcm5hbC5oIHwgICAzICsKIGluY2x1ZGUvZHJtL2RybV9jcnRjLmggICAgICAg ICAgICAgIHwgIDI1ICsrKysKIDYgZmlsZXMgY2hhbmdlZCwgMzI5IGluc2VydGlvbnMoKyksIDEg ZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vZHJtX2JsZW5k LmMKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svZ3B1LnRtcGwgYi9Eb2N1bWVu dGF0aW9uL0RvY0Jvb2svZ3B1LnRtcGwKaW5kZXggOWRkNDhmNy4uMGRmNmFiYiAxMDA2NDQKLS0t IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2dwdS50bXBsCisrKyBiL0RvY3VtZW50YXRpb24vRG9j Qm9vay9ncHUudG1wbApAQCAtMjE1MSw2ICsyMTUxLDE2IEBAIHZvaWQgaW50ZWxfY3J0X2luaXQo c3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkJdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUpLjwvdGQ+ CiAJPC90cj4KIAk8dHI+CisJPHRkIHZhbGlnbj0idG9wIiA+ICJ6cG9zIiA8L3RkPgorCTx0ZCB2 YWxpZ249InRvcCIgPlJBTkdFPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5NaW49IGRyaXZlciBk ZXBlbmRlbnQsIE1heD0gZHJpdmVyIGRlcGVuZGVudDwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+ UGxhbmU8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlBsYW5lJ3MgJ3onIHBvc2l0aW9uIGR1cmlu ZyBibGVuZGluZyBvcGVyYXRpb24gKDAgZm9yIGJhY2tncm91bmQsIGhpZ2hlc3QgZm9yIGZyb250 bW9zdCkuCisJCUlmIHR3byBwbGFuZXMgYXNzaWduZWQgdG8gc2FtZSBDUlRDIGhhdmUgZXF1YWwg enBvcyB2YWx1ZXMsIHRoZSBwbGFuZSB3aXRoIGhpZ2hlciBwbGFuZQorCQlpZCBpcyB0cmVhdGVk IGFzIGNsb3NlciB0byBmcm9udC4gQ2FuIGJlIElNTVVUQUJMRSBpZiBkcml2ZXIgZG9lc24ndCBz dXBwb3J0IGNoYW5naW5nCisJCXBsYW5lcycgb3JkZXIuIEV4YWN0IHZhbHVlIHJhbmdlIGlzIGRy aXZlciBkZXBlbmRlbnQuPC90ZD4KKwk8L3RyPgorCTx0cj4KIAk8dGQgcm93c3Bhbj0iMjAiIHZh bGlnbj0idG9wIiA+aTkxNTwvdGQ+CiAJPHRkIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIiA+R2Vu ZXJpYzwvdGQ+CiAJPHRkIHZhbGlnbj0idG9wIiA+IkJyb2FkY2FzdCBSR0IiPC90ZD4KZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmls ZQppbmRleCAyYmQzZTVhLi5kZjg4MjUzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vTWFr ZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCkBAIC0yLDcgKzIsNyBAQAogIyBN YWtlZmlsZSBmb3IgdGhlIGRybSBkZXZpY2UgZHJpdmVyLiAgVGhpcyBkcml2ZXIgcHJvdmlkZXMg c3VwcG9ydCBmb3IgdGhlCiAjIERpcmVjdCBSZW5kZXJpbmcgSW5mcmFzdHJ1Y3R1cmUgKERSSSkg aW4gWEZyZWU4NiA0LjEuMCBhbmQgaGlnaGVyLgogCi1kcm0teSAgICAgICA6PQlkcm1fYXV0aC5v IGRybV9idWZzLm8gZHJtX2NhY2hlLm8gXAorZHJtLXkgICAgICAgOj0JZHJtX2F1dGgubyBkcm1f YnVmcy5vIGRybV9ibGVuZC5vIGRybV9jYWNoZS5vIFwKIAkJZHJtX2NvbnRleHQubyBkcm1fZG1h Lm8gXAogCQlkcm1fZm9wcy5vIGRybV9nZW0ubyBkcm1faW9jdGwubyBkcm1faXJxLm8gXAogCQlk cm1fbG9jay5vIGRybV9tZW1vcnkubyBkcm1fZHJ2Lm8gZHJtX3ZtLm8gXApkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJt X2F0b21pY19oZWxwZXIuYwppbmRleCA5OTdmZDIxLi5mMTA2NTJmIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJt X2F0b21pY19oZWxwZXIuYwpAQCAtMzIsNiArMzIsOCBAQAogI2luY2x1ZGUgPGRybS9kcm1fYXRv bWljX2hlbHBlci5oPgogI2luY2x1ZGUgPGxpbnV4L2ZlbmNlLmg+CiAKKyNpbmNsdWRlICJkcm1f Y3J0Y19pbnRlcm5hbC5oIgorCiAvKioKICAqIERPQzogb3ZlcnZpZXcKICAqCkBAIC01ODcsNiAr NTg5LDEwIEBAIGRybV9hdG9taWNfaGVscGVyX2NoZWNrX3BsYW5lcyhzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAogCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlOwogCWludCBpLCBy ZXQgPSAwOwogCisJcmV0ID0gZHJtX2F0b21pY19oZWxwZXJfbm9ybWFsaXplX3pwb3MoZGV2LCBz dGF0ZSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKwogCWZvcl9lYWNoX3BsYW5lX2luX3N0 YXRlKHN0YXRlLCBwbGFuZSwgcGxhbmVfc3RhdGUsIGkpIHsKIAkJY29uc3Qgc3RydWN0IGRybV9w bGFuZV9oZWxwZXJfZnVuY3MgKmZ1bmNzOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v ZHJtX2JsZW5kLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2JsZW5kLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uNzAxNzcxNQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9kcm1fYmxlbmQuYwpAQCAtMCwwICsxLDI4NCBAQAorLyoKKyAqIENvcHlyaWdodCAo QykgMjAxNiBTYW1zdW5nIEVsZWN0cm9uaWNzIENvLkx0ZAorICogQXV0aG9yczoKKyAqCU1hcmVr IFN6eXByb3dza2kgPG0uc3p5cHJvd3NraUBzYW1zdW5nLmNvbT4KKyAqCisgKiBEUk0gY29yZSBw bGFuZSBibGVuZGluZyByZWxhdGVkIGZ1bmN0aW9ucworICoKKyAqIFBlcm1pc3Npb24gdG8gdXNl LCBjb3B5LCBtb2RpZnksIGRpc3RyaWJ1dGUsIGFuZCBzZWxsIHRoaXMgc29mdHdhcmUgYW5kIGl0 cworICogZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgaXMgaGVyZWJ5IGdyYW50ZWQgd2l0 aG91dCBmZWUsIHByb3ZpZGVkIHRoYXQKKyAqIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFw cGVhciBpbiBhbGwgY29waWVzIGFuZCB0aGF0IGJvdGggdGhhdCBjb3B5cmlnaHQKKyAqIG5vdGlj ZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gc3VwcG9ydGluZyBkb2N1bWVu dGF0aW9uLCBhbmQKKyAqIHRoYXQgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXJzIG5v dCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yCisgKiBwdWJsaWNpdHkgcGVydGFpbmluZyB0byBk aXN0cmlidXRpb24gb2YgdGhlIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMsCisgKiB3cml0dGVu IHByaW9yIHBlcm1pc3Npb24uICBUaGUgY29weXJpZ2h0IGhvbGRlcnMgbWFrZSBubyByZXByZXNl bnRhdGlvbnMKKyAqIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlIGZvciBh bnkgcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJhcworICogaXMiIHdpdGhvdXQgZXhwcmVzcyBv ciBpbXBsaWVkIHdhcnJhbnR5LgorICoKKyAqIFRIRSBDT1BZUklHSFQgSE9MREVSUyBESVNDTEFJ TSBBTEwgV0FSUkFOVElFUyBXSVRIIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFLAorICogSU5DTFVE SU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT LCBJTiBOTworICogRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBG T1IgQU5ZIFNQRUNJQUwsIElORElSRUNUIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1Ig QU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTSBMT1NTIE9GIFVTRSwKKyAqIERB VEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VO Q0UgT1IgT1RIRVIKKyAqIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09O TkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UKKyAqIE9GIFRISVMgU09GVFdBUkUu CisgKi8KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CisjaW5jbHVkZSA8bGludXgvc29ydC5oPgor I2luY2x1ZGUgPGxpbnV4L2V4cG9ydC5oPgorI2luY2x1ZGUgPGRybS9kcm1QLmg+CisjaW5jbHVk ZSA8ZHJtL2RybV9jcnRjLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMuaD4KKworI2luY2x1 ZGUgImRybV9pbnRlcm5hbC5oIgorCisjZGVmaW5lIE1BWChhLCBiKSAoKChhKSA+IChiKSkgPyAo YSkgOiAoYikpCisKKy8qKgorICogZHJtX3BsYW5lX2F0b21pY19zZXRfenBvc19wcm9wZXJ0eSAt IHNldCBwbGFuZSB6cG9zIHByb3BlcnR5CisgKiBAcGxhbmU6IGRybSBwbGFuZQorICogQHN0YXRl OiBkcm0gcGxhbmUgc3RhdGUKKyAqIEBwcm9wZXJ0eTogbXVzdCBiZSB0aGUgenBvcyBwcm9wZXJ0 eSBhc3NvY2lhdGVkIHRvIHRoZSBwbGFuZQorICogQHZhbDogenBvcyB2YWx1ZSB0byBiZSBzZXQK KyAqCisgKiBSZXR1cm5zOgorICogWmVybyBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJubyBvbiBm YWlsdXJlLgorICovCitpbnQgZHJtX3BsYW5lX2F0b21pY19zZXRfenBvc19wcm9wZXJ0eShzdHJ1 Y3QgZHJtX3BsYW5lICpwbGFuZSwKKwkJCQkgICAgICAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAq c3RhdGUsCisJCQkJICAgICAgIHN0cnVjdCBkcm1fcHJvcGVydHkgKnByb3BlcnR5LAorCQkJCSAg ICAgICB1aW50NjRfdCB2YWwpCit7CisJc3RydWN0IGRybV9tb2RlX29iamVjdCAqb2JqID0gJnBs YW5lLT5iYXNlOworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8IG9iai0+cHJvcGVydGllcy0+ Y291bnQ7IGkrKykgeworCQlpZiAob2JqLT5wcm9wZXJ0aWVzLT5wcm9wZXJ0aWVzW2ldID09IHBy b3BlcnR5KSB7CisJCQlzdGF0ZS0+enBvcyA9IHZhbDsKKwkJCXJldHVybiAwOworCQl9CisJfQor CisJcmV0dXJuIC1FSU5WQUw7Cit9CitFWFBPUlRfU1lNQk9MKGRybV9wbGFuZV9hdG9taWNfc2V0 X3pwb3NfcHJvcGVydHkpOworCisvKioKKyAqIGRybV9wbGFuZV9hdG9taWNfZ2V0X3pwb3NfcHJv cGVydHkgLSBzZXQgcGxhbmUgenBvcyBwcm9wZXJ0eQorICogQHBsYW5lOiBkcm0gcGxhbmUKKyAq IEBzdGF0ZTogZHJtIHBsYW5lIHN0YXRlCisgKiBAcHJvcGVydHk6IG11c3QgYmUgdGhlIHpwb3Mg cHJvcGVydHkgYXNzb2NpYXRlZCB0byB0aGUgcGxhbmUKKyAqIEB2YWw6IHpwb3MgdmFsdWUgdG8g YmUgcmV0cmlldmUKKyAqCisgKiBSZXR1cm5zOgorICogWmVybyBvbiBzdWNjZXNzLCBuZWdhdGl2 ZSBlcnJubyBvbiBmYWlsdXJlLgorICovCitpbnQgZHJtX3BsYW5lX2F0b21pY19nZXRfenBvc19w cm9wZXJ0eShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKKwkJCQkgICAgICAgY29uc3Qgc3RydWN0 IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUsCisJCQkJICAgICAgIHN0cnVjdCBkcm1fcHJvcGVydHkg KnByb3BlcnR5LAorCQkJCSAgICAgICB1aW50NjRfdCAqdmFsKQoreworCXN0cnVjdCBkcm1fbW9k ZV9vYmplY3QgKm9iaiA9ICZwbGFuZS0+YmFzZTsKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkg PCBvYmotPnByb3BlcnRpZXMtPmNvdW50OyBpKyspIHsKKwkJaWYgKG9iai0+cHJvcGVydGllcy0+ cHJvcGVydGllc1tpXSA9PSBwcm9wZXJ0eSkgeworCQkJKnZhbCA9IHN0YXRlLT56cG9zOworCQkJ cmV0dXJuIDA7CisJCX0KKwl9CisKKwlyZXR1cm4gLUVJTlZBTDsKK30KK0VYUE9SVF9TWU1CT0wo ZHJtX3BsYW5lX2F0b21pY19nZXRfenBvc19wcm9wZXJ0eSk7CisKKy8qKgorICogZHJtX3BsYW5l X2NyZWF0ZV96cG9zX3Byb3BlcnR5IC0gY3JlYXRlIG11dGFibGUgenBvcyBwcm9wZXJ0eQorICog QHBsYW5lOiBkcm0gcGxhbmUKKyAqIEBtaW46IG1pbmltYWwgcG9zc2libGUgdmFsdWUgb2YgenBv cyBwcm9wZXJ0eQorICogQG1heDogbWF4aW1hbCBwb3NzaWJsZSB2YWx1ZSBvZiB6cG9zIHByb3Bl cnR5CisgKgorICogVGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyBnZW5lcmljIG11dGFibGUgenBv cyBwcm9wZXJ0eSBhbmQgZW5hYmxlcyBzdXBwb3J0CisgKiBmb3IgaXQgaW4gZHJtIGNvcmUuIERy aXZlcnMgY2FuIHRoZW4gYXR0YWNoIHRoaXMgcHJvcGVydHkgdG8gcGxhbmVzIHRvIGVuYWJsZQor ICogc3VwcG9ydCBmb3IgY29uZmlndXJhYmxlIHBsYW5lcyBhcnJhbmdlbWVudCBkdXJpbmcgYmxl bmRpbmcgb3BlcmF0aW9uLgorICogT25jZSBtdXRhYmxlIHpwb3MgcHJvcGVydHkgaGFzIGJlZW4g ZW5hYmxlZCwgdGhlIERSTSBjb3JlIHdpbGwgYXV0b21hdGljYWxseQorICogY2FsY3VsYXRlIGRy bV9wbGFuZV9zdGF0ZS0+bm9ybWFsaXplZF96cG9zIHZhbHVlcy4gVXN1YWxseSBtaW4gc2hvdWxk IGJlIHNldAorICogdG8gMCBhbmQgbWF4IHRvIG1heGltYWwgbnVtYmVyIG9mIHBsYW5lcyBmb3Ig Z2l2ZW4gY3J0YyAtIDEuCisgKgorICogSWYgenBvcyBvZiBzb21lIHBsYW5lcyBjYW5ub3QgYmUg Y2hhbmdlZCAobGlrZSBmaXhlZCBiYWNrZ3JvdW5kIG9yCisgKiBjdXJzb3IvdG9wbW9zdCBwbGFu ZXMpLCBkcml2ZXIgc2hvdWxkIGFkanVzdCBtaW4vbWF4IHZhbHVlcyBhbmQgYXNzaWduIHRob3Nl CisgKiBwbGFuZXMgaW1tdXRhYmxlIHpwb3MgcHJvcGVydHkgd2l0aCBsb3dlciBvciBoaWdoZXIg dmFsdWVzIChmb3IgbW9yZQorICogaW5mb3JtYXRpb24sIHNlZSBkcm1fbW9kZV9jcmVhdGVfenBv c19pbW11dGFibGVfcHJvcGVydHkoKSBmdW5jdGlvbikuIEluIHN1Y2gKKyAqIGNhc2UgZHJpdmVy IHNob3VsZCBhbHNvIGFzc2lnbiBwcm9wZXIgaW5pdGlhbCB6cG9zIHZhbHVlcyBmb3IgYWxsIHBs YW5lcyBpbgorICogaXRzIHBsYW5lX3Jlc2V0KCkgY2FsbGJhY2ssIHNvIHRoZSBwbGFuZXMgd2ls bCBiZSBhbHdheXMgc29ydGVkIHByb3Blcmx5LgorICoKKyAqIFJldHVybnM6CisgKiBaZXJvIG9u IHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm5vIG9uIGZhaWx1cmUuCisgKi8KK2ludCBkcm1fcGxhbmVf Y3JlYXRlX3pwb3NfcHJvcGVydHkoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCisJCQkJICAgdW5z aWduZWQgaW50IG1pbiwgdW5zaWduZWQgaW50IG1heCkKK3sKKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5 ICpwcm9wOworCisJcHJvcCA9IGRybV9wcm9wZXJ0eV9jcmVhdGVfcmFuZ2UocGxhbmUtPmRldiwg MCwgInpwb3MiLCBtaW4sIG1heCk7CisJaWYgKCFwcm9wKQorCQlyZXR1cm4gLUVOT01FTTsKKwor CWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZwbGFuZS0+YmFzZSwgcHJvcCwgbWluKTsKKwly ZXR1cm4gMDsKK30KK0VYUE9SVF9TWU1CT0woZHJtX3BsYW5lX2NyZWF0ZV96cG9zX3Byb3BlcnR5 KTsKKworLyoqCisgKiBkcm1fcGxhbmVfY3JlYXRlX3pwb3NfaW1tdXRhYmxlX3Byb3BlcnR5IC0g Y3JlYXRlIGltbXV0dGFibGUgenBvcyBwcm9wZXJ0eQorICogQHBsYW5lOiBkcm0gcGxhbmUKKyAq IEBtaW46IG1pbmltYWwgcG9zc2libGUgdmFsdWUgb2YgenBvcyBwcm9wZXJ0eQorICogQG1heDog bWF4aW1hbCBwb3NzaWJsZSB2YWx1ZSBvZiB6cG9zIHByb3BlcnR5CisgKgorICogVGhpcyBmdW5j dGlvbiBpbml0aWFsaXplcyBnZW5lcmljIGltbXV0YWJsZSB6cG9zIHByb3BlcnR5IGFuZCBlbmFi bGVzCisgKiBzdXBwb3J0IGZvciBpdCBpbiBkcm0gY29yZS4gVXNpbmcgdGhpcyBwcm9wZXJ0eSBk cml2ZXIgbGV0cyB1c2Vyc3BhY2UKKyAqIHRvIGdldCB0aGUgYXJyYW5nZW1lbnQgb2YgdGhlIHBs YW5lcyBmb3IgYmxlbmRpbmcgb3BlcmF0aW9uIGFuZCBub3RpZmllcworICogaXQgdGhhdCB0aGUg aGFyZHdhcmUgKG9yIGRyaXZlcikgZG9lc24ndCBzdXBwb3J0IGNoYW5naW5nIG9mIHRoZSBwbGFu ZXMnCisgKiBvcmRlci4KKyAqCisgKiBSZXR1cm5zOgorICogWmVybyBvbiBzdWNjZXNzLCBuZWdh dGl2ZSBlcnJubyBvbiBmYWlsdXJlLgorICovCitpbnQgZHJtX3BsYW5lX2NyZWF0ZV96cG9zX2lt bXV0YWJsZV9wcm9wZXJ0eShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKKwkJCQkJICAgICB1bnNp Z25lZCBpbnQgbWluLCB1bnNpZ25lZCBpbnQgbWF4KQoreworCXN0cnVjdCBkcm1fcHJvcGVydHkg KnByb3A7CisKKwlwcm9wID0gZHJtX3Byb3BlcnR5X2NyZWF0ZV9yYW5nZShwbGFuZS0+ZGV2LCBE Uk1fTU9ERV9QUk9QX0lNTVVUQUJMRSwKKwkJCQkJICJ6cG9zIiwgbWluLCBtYXgpOworCWlmICgh cHJvcCkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgm cGxhbmUtPmJhc2UsIHByb3AsIG1pbik7CisJcmV0dXJuIDA7Cit9CitFWFBPUlRfU1lNQk9MKGRy bV9wbGFuZV9jcmVhdGVfenBvc19pbW11dGFibGVfcHJvcGVydHkpOworCitzdGF0aWMgaW50IGRy bV9hdG9taWNfc3RhdGVfenBvc19jbXAoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKK3sK Kwljb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpzYSA9ICooc3RydWN0IGRybV9wbGFuZV9z dGF0ZSAqKilhOworCWNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnNiID0gKihzdHJ1Y3Qg ZHJtX3BsYW5lX3N0YXRlICoqKWI7CisJaW50IHpwb3NfYSA9IChzYS0+enBvcyA8PCAxNikgKyBz YS0+cGxhbmUtPmJhc2UuaWQ7CisJaW50IHpwb3NfYiA9IChzYi0+enBvcyA8PCAxNikgKyBzYi0+ cGxhbmUtPmJhc2UuaWQ7CisKKwlyZXR1cm4genBvc19hIC0genBvc19iOworfQorCisvKioKKyAq IGRybV9hdG9taWNfaGVscGVyX2NydGNfbm9ybWFsaXplX3pwb3MgLSBjYWxjdWxhdGUgbm9ybWFs aXplZCB6cG9zIHZhbHVlcworICogQGNydGM6IGNydGMgd2l0aCBwbGFuZXMsIHdoaWNoIGhhdmUg dG8gYmUgY29uc2lkZXJlZCBmb3Igbm9ybWFsaXphdGlvbgorICogQGNydGNfc3RhdGU6IG5ldyBh dG9taWMgc3RhdGUgdG8gYXBwbHkKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBuZXcgc3Rh dGVzIG9mIGFsbCBwbGFuZXMgYXNzaWduZWQgdG8gZ2l2ZW4gY3J0YyBhbmQKKyAqIGNhbGN1bGF0 ZXMgbm9ybWFsaXplZCB6cG9zIHZhbHVlIGZvciB0aGVtLiBQbGFuZXMgYXJlIGNvbXBhcmVkIGZp cnN0IGJ5IHRoZWlyCisgKiB6cG9zIHZhbHVlcywgdGhlbiBieSBwbGFuZSBpZCAoaWYgenBvcyBl cXVhbHMpLiBQbGFuZSB3aXRoIGxvd2VzdCB6cG9zIHZhbHVlCisgKiBpcyBhdCB0aGUgYm90dG9t LiBUaGUgcGxhbmVfc3RhdGUtPm5vcm1hbGl6ZWRfenBvcyBpcyB0aGVuIGZpbGxlZCB3aXRoIHVu aXF1ZQorICogdmFsdWVzIGZyb20gMCB0byBudW1iZXIgb2YgYWN0aXZlIHBsYW5lcyBpbiBjcnRj IG1pbnVzIG9uZS4KKyAqCisgKiBSRVRVUk5TCisgKiBaZXJvIGZvciBzdWNjZXNzIG9yIC1lcnJu bworICovCitpbnQgZHJtX2F0b21pY19oZWxwZXJfY3J0Y19ub3JtYWxpemVfenBvcyhzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMsCisJCQkJCSAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRl KQoreworCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSA9IGNydGNfc3RhdGUtPnN0YXRl OworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7CisJaW50IHRvdGFsX3BsYW5l cyA9IGRldi0+bW9kZV9jb25maWcubnVtX3RvdGFsX3BsYW5lOworCXN0cnVjdCBkcm1fcGxhbmVf c3RhdGUgKipzdGF0ZXM7CisJc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7CisJaW50IGksIHpwb3Ms IG4gPSAwOworCWludCByZXQgPSAwOworCisJRFJNX0RFQlVHX0FUT01JQygiW0NSVEM6JWQ6JXNd IGNhbGN1bGF0aW5nIG5vcm1hbGl6ZWQgenBvcyB2YWx1ZXNcbiIsCisJCQkgY3J0Yy0+YmFzZS5p ZCwgY3J0Yy0+bmFtZSk7CisKKwlzdGF0ZXMgPSBrbWFsbG9jKHRvdGFsX3BsYW5lcyAqIHNpemVv Zigqc3RhdGVzKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFzdGF0ZXMpCisJCXJldHVybiAtRU5PTUVN OworCisJLyoKKwkgKiBOb3JtYWxpemF0aW9uIHByb2Nlc3MgbWlnaHQgY3JlYXRlIG5ldyBzdGF0 ZXMgZm9yIHBsYW5lcyB3aGljaAorCSAqIG5vcm1hbGl6ZWRfenBvcyBoYXMgdG8gYmUgcmVjYWxj dWxhdGVkLgorCSAqLworCWRybV9mb3JfZWFjaF9wbGFuZV9tYXNrKHBsYW5lLCBkZXYsIGNydGNf c3RhdGUtPnBsYW5lX21hc2spIHsKKwkJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3Rh dGUgPQorCQkJZHJtX2F0b21pY19nZXRfcGxhbmVfc3RhdGUoc3RhdGUsIHBsYW5lKTsKKwkJaWYg KElTX0VSUihwbGFuZV9zdGF0ZSkpIHsKKwkJCXJldCA9IFBUUl9FUlIocGxhbmVfc3RhdGUpOwor CQkJZ290byBmYWlsOworCQl9CisJCXN0YXRlc1tuKytdID0gcGxhbmVfc3RhdGU7CisJCURSTV9E RUJVR19BVE9NSUMoIltQTEFORTolZDolc10gcHJvY2Vzc2luZyB6cG9zIHZhbHVlICVkXG4iLAor CQkJCSBwbGFuZS0+YmFzZS5pZCwgcGxhbmUtPm5hbWUsCisJCQkJIHBsYW5lX3N0YXRlLT56cG9z KTsKKwl9CisKKwlzb3J0KHN0YXRlcywgbiwgc2l6ZW9mKCpzdGF0ZXMpLCBkcm1fYXRvbWljX3N0 YXRlX3pwb3NfY21wLCBOVUxMKTsKKworCWZvciAoaSA9IDAsIHpwb3MgPSAwOyBpIDwgbjsgaSsr LCB6cG9zKyspIHsKKwkJcGxhbmUgPSBzdGF0ZXNbaV0tPnBsYW5lOworCisJCXpwb3MgPSBNQVgo enBvcywgc3RhdGVzW2ldLT56cG9zKTsKKworCQlzdGF0ZXNbaV0tPm5vcm1hbGl6ZWRfenBvcyA9 IHpwb3M7CisJCURSTV9ERUJVR19BVE9NSUMoIltQTEFORTolZDolc10gbm9ybWFsaXplZCB6cG9z IHZhbHVlICVkXG4iLAorCQkJCSBwbGFuZS0+YmFzZS5pZCwgcGxhbmUtPm5hbWUsIHpwb3MpOwor CX0KKwljcnRjX3N0YXRlLT56cG9zX2NoYW5nZWQgPSB0cnVlOworCitmYWlsOgorCWtmcmVlKHN0 YXRlcyk7CisJcmV0dXJuIHJldDsKK30KK0VYUE9SVF9TWU1CT0woZHJtX2F0b21pY19oZWxwZXJf Y3J0Y19ub3JtYWxpemVfenBvcyk7CisKKy8qKgorICogZHJtX2F0b21pY19oZWxwZXJfbm9ybWFs aXplX3pwb3MgLSBjYWxjdWxhdGUgbm9ybWFsaXplZCB6cG9zIHZhbHVlcyBmb3IgYWxsCisgKgkJ CQkgICAgICBjcnRjcworICogQGRldjogRFJNIGRldmljZQorICogQHN0YXRlOiBhdG9taWMgc3Rh dGUgb2YgRFJNIGRldmljZQorICoKKyAqIFRoaXMgZnVuY3Rpb24gY2FsY3VsYXRlcyBub3JtYWxp emVkIHpwb3MgdmFsdWUgZm9yIGFsbCBtb2RpZmllZCBwbGFuZXMgaW4KKyAqIHRoZSBwcm92aWRl ZCBhdG9taWMgc3RhdGUgb2YgRFJNIGRldmljZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZQor ICogZHJtX2F0b21pY19oZWxwZXJfY3J0Y19ub3JtYWxpemVfenBvcygpIGZ1bmN0aW9uLgorICoK KyAqIFJFVFVSTlMKKyAqIFplcm8gZm9yIHN1Y2Nlc3Mgb3IgLWVycm5vCisgKi8KK2ludCBkcm1f YXRvbWljX2hlbHBlcl9ub3JtYWxpemVfenBvcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQkJ CSAgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQoreworCXN0cnVjdCBkcm1fY3J0 YyAqY3J0YzsKKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7CisJc3RydWN0IGRy bV9wbGFuZSAqcGxhbmU7CisJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGU7CisJ aW50IGksIHJldCA9IDA7CisKKwlmb3JfZWFjaF9wbGFuZV9pbl9zdGF0ZShzdGF0ZSwgcGxhbmUs IHBsYW5lX3N0YXRlLCBpKSB7CisJCWNydGMgPSBwbGFuZV9zdGF0ZS0+Y3J0YzsKKwkJaWYgKCFj cnRjKQorCQkJY29udGludWU7CisJCWlmIChwbGFuZS0+c3RhdGUtPnpwb3MgIT0gcGxhbmVfc3Rh dGUtPnpwb3MpIHsKKwkJCWNydGNfc3RhdGUgPQorCQkJCWRybV9hdG9taWNfZ2V0X2V4aXN0aW5n X2NydGNfc3RhdGUoc3RhdGUsIGNydGMpOworCQkJY3J0Y19zdGF0ZS0+enBvc19jaGFuZ2VkID0g dHJ1ZTsKKwkJfQorCX0KKworCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNy dGNfc3RhdGUsIGkpIHsKKwkJaWYgKGNydGNfc3RhdGUtPnBsYW5lX21hc2sgIT0gY3J0Yy0+c3Rh dGUtPnBsYW5lX21hc2sgfHwKKwkJICAgIGNydGNfc3RhdGUtPnpwb3NfY2hhbmdlZCkgeworCQkJ cmV0ID0gZHJtX2F0b21pY19oZWxwZXJfY3J0Y19ub3JtYWxpemVfenBvcyhjcnRjLAorCQkJCQkJ CQkgICAgY3J0Y19zdGF0ZSk7CisJCQlpZiAocmV0KQorCQkJCXJldHVybiByZXQ7CisJCX0KKwl9 CisJcmV0dXJuIDA7Cit9CitFWFBPUlRfU1lNQk9MKGRybV9hdG9taWNfaGVscGVyX25vcm1hbGl6 ZV96cG9zKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Y19pbnRlcm5hbC5o IGIvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjX2ludGVybmFsLmgKaW5kZXggYTc4YzEzOC4uMzdk OTA2OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjX2ludGVybmFsLmgKKysr IGIvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjX2ludGVybmFsLmgKQEAgLTQyLDMgKzQyLDYgQEAg aW50IGRybV9hdG9taWNfZ2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fbW9kZV9vYmplY3QgKm9iaiwK IGludCBkcm1fbW9kZV9hdG9taWNfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCSAg dm9pZCAqZGF0YSwgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpOwogCisvKiBkcm1fYmxlbmQu YyAqLworaW50IGRybV9hdG9taWNfaGVscGVyX25vcm1hbGl6ZV96cG9zKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCisJCQkJICAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpOwpkaWZm IC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2NydGMuaCBiL2luY2x1ZGUvZHJtL2RybV9jcnRjLmgK aW5kZXggZDE1NTljZC4uYTM0YmMyOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2NydGMu aAorKysgYi9pbmNsdWRlL2RybS9kcm1fY3J0Yy5oCkBAIC0zMDUsNiArMzA1LDcgQEAgc3RydWN0 IGRybV9wbGFuZV9oZWxwZXJfZnVuY3M7CiAgKiBAbW9kZV9jaGFuZ2VkOiBjcnRjX3N0YXRlLT5t b2RlIG9yIGNydGNfc3RhdGUtPmVuYWJsZSBoYXMgYmVlbiBjaGFuZ2VkCiAgKiBAYWN0aXZlX2No YW5nZWQ6IGNydGNfc3RhdGUtPmFjdGl2ZSBoYXMgYmVlbiB0b2dnbGVkLgogICogQGNvbm5lY3Rv cnNfY2hhbmdlZDogY29ubmVjdG9ycyB0byB0aGlzIGNydGMgaGF2ZSBiZWVuIHVwZGF0ZWQKKyAq IEB6cG9zX2NoYW5nZWQ6IHpwb3MgdmFsdWVzIG9mIHBsYW5lcyBvbiB0aGlzIGNydGMgaGF2ZSBi ZWVuIHVwZGF0ZWQKICAqIEBjb2xvcl9tZ210X2NoYW5nZWQ6IGNvbG9yIG1hbmFnZW1lbnQgcHJv cGVydGllcyBoYXZlIGNoYW5nZWQgKGRlZ2FtbWEgb3IKICAqCWdhbW1hIExVVCBvciBDU0MgbWF0 cml4KQogICogQHBsYW5lX21hc2s6IGJpdG1hc2sgb2YgKDEgPDwgZHJtX3BsYW5lX2luZGV4KHBs YW5lKSkgb2YgYXR0YWNoZWQgcGxhbmVzCkBAIC0zNDAsNiArMzQxLDcgQEAgc3RydWN0IGRybV9j cnRjX3N0YXRlIHsKIAlib29sIG1vZGVfY2hhbmdlZCA6IDE7CiAJYm9vbCBhY3RpdmVfY2hhbmdl ZCA6IDE7CiAJYm9vbCBjb25uZWN0b3JzX2NoYW5nZWQgOiAxOworCWJvb2wgenBvc19jaGFuZ2Vk IDogMTsKIAlib29sIGNvbG9yX21nbXRfY2hhbmdlZCA6IDE7CiAKIAkvKiBhdHRhY2hlZCBwbGFu ZXMgYml0bWFzazoKQEAgLTEyNjMsNiArMTI2NSw5IEBAIHN0cnVjdCBkcm1fY29ubmVjdG9yIHsK ICAqCXBsYW5lIChpbiAxNi4xNikKICAqIEBzcmNfdzogd2lkdGggb2YgdmlzaWJsZSBwb3J0aW9u IG9mIHBsYW5lIChpbiAxNi4xNikKICAqIEBzcmNfaDogaGVpZ2h0IG9mIHZpc2libGUgcG9ydGlv biBvZiBwbGFuZSAoaW4gMTYuMTYpCisgKiBAenBvczogcHJpb3JpdHkgb2YgdGhlIGdpdmVuIHBs YW5lIG9uIGNydGMgKG9wdGlvbmFsKQorICogQG5vcm1hbGl6ZWRfenBvczogbm9ybWFsaXplZCB2 YWx1ZSBvZiB6cG9zOiB1bmlxdWUsIHJhbmdlIGZyb20gMCB0byBOCisgKgkgZm9yIGdpdmVuIGNy dGMKICAqIEBzdGF0ZTogYmFja3BvaW50ZXIgdG8gZ2xvYmFsIGRybV9hdG9taWNfc3RhdGUKICAq Lwogc3RydWN0IGRybV9wbGFuZV9zdGF0ZSB7CkBAIC0xMjgzLDYgKzEyODgsMTAgQEAgc3RydWN0 IGRybV9wbGFuZV9zdGF0ZSB7CiAJLyogUGxhbmUgcm90YXRpb24gKi8KIAl1bnNpZ25lZCBpbnQg cm90YXRpb247CiAKKwkvKiBQbGFuZSB6cG9zICovCisJdW5zaWduZWQgaW50IHpwb3M7CisJdW5z aWduZWQgaW50IG5vcm1hbGl6ZWRfenBvczsKKwogCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpz dGF0ZTsKIH07CiAKQEAgLTI1NTQsNiArMjU2MywyMiBAQCBleHRlcm4gc3RydWN0IGRybV9wcm9w ZXJ0eSAqZHJtX21vZGVfY3JlYXRlX3JvdGF0aW9uX3Byb3BlcnR5KHN0cnVjdCBkcm1fZGV2aWNl CiBleHRlcm4gdW5zaWduZWQgaW50IGRybV9yb3RhdGlvbl9zaW1wbGlmeSh1bnNpZ25lZCBpbnQg cm90YXRpb24sCiAJCQkJCSAgdW5zaWduZWQgaW50IHN1cHBvcnRlZF9yb3RhdGlvbnMpOwogCitl eHRlcm4gaW50IGRybV9wbGFuZV9hdG9taWNfc2V0X3pwb3NfcHJvcGVydHkoc3RydWN0IGRybV9w bGFuZSAqcGxhbmUsCisJCQkJCSAgICAgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlLAor CQkJCQkgICAgICBzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wZXJ0eSwKKwkJCQkJICAgICAgdWlu dDY0X3QgdmFsKTsKKworZXh0ZXJuIGludCBkcm1fcGxhbmVfYXRvbWljX2dldF96cG9zX3Byb3Bl cnR5KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAorCQkJCQkgICAgICBjb25zdCBzdHJ1Y3QgZHJt X3BsYW5lX3N0YXRlICpzdGF0ZSwKKwkJCQkJICAgICAgc3RydWN0IGRybV9wcm9wZXJ0eSAqcHJv cGVydHksCisJCQkJCSAgICAgIHVpbnQ2NF90ICp2YWwpOworCitleHRlcm4gaW50IGRybV9wbGFu ZV9jcmVhdGVfenBvc19wcm9wZXJ0eShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKKwkJCQkJICB1 bnNpZ25lZCBpbnQgbWluLCB1bnNpZ25lZCBpbnQgbWF4KTsKK2V4dGVybiBpbnQgZHJtX3BsYW5l X2NyZWF0ZV96cG9zX2ltbXV0YWJsZV9wcm9wZXJ0eShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwK KwkJCQkJCSAgICB1bnNpZ25lZCBpbnQgbWluLAorCQkJCQkJICAgIHVuc2lnbmVkIGludCBtYXgp OworCiAvKiBIZWxwZXJzICovCiAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IGRybV9wbGFuZSAqZHJt X3BsYW5lX2ZpbmQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKLS0gCjEuOS4xCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBs aXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK