From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Thulasimani, Sivakumar" Subject: Re: [PATCH 7/8] drm/i915: Move max voltage and pre emphasis to intel_dp_link_training.c Date: Mon, 19 Oct 2015 10:44:43 +0530 Message-ID: <56247C43.8040307@intel.com> References: <1441715280-11623-1-git-send-email-ander.conselvan.de.oliveira@intel.com> <1441715280-11623-8-git-send-email-ander.conselvan.de.oliveira@intel.com> <20150908130147.GE29811@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id AC21A6E59A for ; Sun, 18 Oct 2015 22:14:46 -0700 (PDT) In-Reply-To: <20150908130147.GE29811@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: =?UTF-8?B?VmlsbGUgU3lyasOkbMOk?= , Ander Conselvan de Oliveira Cc: jani.nikula@intel.com, intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org QXMgYW4gRllJLCBib3RoIG9mIHRoZXNlIGZ1bmN0aW9ucyBuZWVkIHRvIGJlIHJld3JpdHRlbiB3 aGVuIHdlIHdhbnQgdGhlIApjb2RlIHRvIGJlCmNvbXBsaWFudCB0byBEUCBzcGVjLgpXZSBzaG91 bGQgcmVhZCB0aGUgcHJlLWVtcGhhc2lzIGdpdmVuIGJ5IHRoZSBwYW5lbCBhbmQgaWYgdndpbmcg ZXhlZWRzIAptYXggdmFsdWUKd2Ugc2hvdWxkIHVzZSB0aGUgbWF4IHZzd2luZyBzdXBwb3J0ZWQg Zm9yIHRoYXQgcHJlLWVtcGhhc2lzIGJ1dCBjdXJyZW50IApjb2RlCmlzIG9wcG9zaXRlIG9mIHRo YXQuICB5b3UgY2FuIHJlYWQgbW9yZSBkZXRhaWxlZCBsb2dpYyBpbiBzZWN0aW9uIAoiMy41LjEu MiBMaW5rIFRyYWluaW5nIgppbiBEUCBTcGVjLgoKYnkgdGhlIHdheSBzYW1lIGlzIHRydWUgZm9y IG11Y2ggb2YgdGhlIGxpbmsgdHJhaW5pbmcgbG9naWMgYW5kIHJlbGF0ZWQgCmZ1bmN0aW9ucwpp IGRvbid0IGtub3cgaWYgc3VjaCByZXdyaXRpbmcgc2hvdWxkIGJlIGRvbmUgYWZ0ZXIgZml4aW5n IHRob3NlIG9yIApiZWZvcmUgOiguCgpyZWdhcmRzLApTaXZha3VtYXIuCgpPbiA5LzgvMjAxNSA2 OjMxIFBNLCBWaWxsZSBTeXJqw6Rsw6Qgd3JvdGU6Cj4gT24gVHVlLCBTZXAgMDgsIDIwMTUgYXQg MDM6Mjc6NThQTSArMDMwMCwgQW5kZXIgQ29uc2VsdmFuIGRlIE9saXZlaXJhIHdyb3RlOgo+PiBT byBsaW5rIHRyYWluaW5nIHRlc3RzIGNhbiB1c2UgcmVhbCBoYXJkd2FyZSBsaW1pdHMuCj4gVGhl c2UgbmVlZCB0byBiZSBrZXB0IGluIHN5bmMgd2l0aCB0aGUgX3NpZ25hbF9sZXZlbHMoKSBmdW5j dGlvbnMsIHNvCj4gbW92aW5nIHRoZW0gdG8gYSBzZXBhcmF0ZSBmaWxlIGlzIGEgYml0IHF1ZXN0 aW9uYWJsZS4KPgo+IEkgc3VnZ2VzdCB0aGF0IHdlIHNob3VsZCBhdHRlbXB0IHRvIHJlc3RydWN0 dXJlIHRoaXMgaW5mb3JtYXRpb24gYXMKPiBzb21lIGtpbmQgb2YgdGFibGVzLCBmcm9tIHdoaWNo IHdlIGNhbiBsb29rIHVwIHRoZSBtYXggdmFsdWVzIGFzCj4gd2VsbCBhcyB0aGUgaGFyZHdhcmUg c3BlY2lmaWMgdmFsdWVzIGZvciBlYWNoIHNldHRpbmcuCj4KPiBUaGF0IG9mIGNvdXJzZSB3b24n dCBzb2x2ZSB5b3VyIHByb2JsZW0uIFNvIGZhciBJIGRvbid0IGtub3cgd2hhdCB5b3VyCj4gdGVz dCBldmVuIGRvZXMgYW5kIHdoeSBkb2VzIGl0IG5lZWQgdGhpcyBpbmZvcm1hdGlvbiwgc28gSSBn dWVzcyBJJ2xsCj4gbmVlZCB0byByZWFkIG9uLi4uCj4KPj4gLS0tCj4+ICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHAuYyAgICAgICAgICAgICAgIHwgOTkgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbGlua190cmFpbmlu Zy5jIHwgOTIgKysrKysrKysrKysrKysrKysrKysrKysrKwo+PiAgIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oICAgICAgICAgICAgICB8IDExICstLQo+PiAgIDMgZmlsZXMgY2hhbmdl ZCwgOTkgaW5zZXJ0aW9ucygrKSwgMTAzIGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RwLmMKPj4gaW5kZXggNTc3ODA1OS4uZGE4N2FlZiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcC5jCj4+IEBAIC0xMTEsMTMgKzExMSw2IEBAIHN0YXRpYyBib29sIGlzX2VkcChzdHJ1 Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+PiAgIAlyZXR1cm4gaW50ZWxfZGlnX3BvcnQtPmJhc2Uu dHlwZSA9PSBJTlRFTF9PVVRQVVRfRURQOwo+PiAgIH0KPj4gICAKPj4gLXN0YXRpYyBzdHJ1Y3Qg ZHJtX2RldmljZSAqaW50ZWxfZHBfdG9fZGV2KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4+ IC17Cj4+IC0Jc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQgPSBkcF90 b19kaWdfcG9ydChpbnRlbF9kcCk7Cj4+IC0KPj4gLQlyZXR1cm4gaW50ZWxfZGlnX3BvcnQtPmJh c2UuYmFzZS5kZXY7Cj4+IC19Cj4+IC0KPj4gICBzdGF0aWMgc3RydWN0IGludGVsX2RwICppbnRl bF9hdHRhY2hlZF9kcChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+PiAgIHsKPj4g ICAJcmV0dXJuIGVuY190b19pbnRlbF9kcCgmaW50ZWxfYXR0YWNoZWRfZW5jb2Rlcihjb25uZWN0 b3IpLT5iYXNlKTsKPj4gQEAgLTMwNTQsOTggKzMwNDcsNiBAQCBpbnRlbF9kcF9nZXRfbGlua19z dGF0dXMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgdWludDhfdCBsaW5rX3N0YXR1c1tEUF9M SU5LXwo+PiAgIAkJCQkgICAgICAgRFBfTElOS19TVEFUVVNfU0laRSkgPT0gRFBfTElOS19TVEFU VVNfU0laRTsKPj4gICB9Cj4+ICAgCj4+IC0vKiBUaGVzZSBhcmUgc291cmNlLXNwZWNpZmljIHZh bHVlcy4gKi8KPj4gLXVpbnQ4X3QKPj4gLWludGVsX2RwX3ZvbHRhZ2VfbWF4KHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHApCj4+IC17Cj4+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVs X2RwX3RvX2RldihpbnRlbF9kcCk7Cj4+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPj4gLQllbnVtIHBvcnQgcG9ydCA9IGRwX3RvX2RpZ19w b3J0KGludGVsX2RwKS0+cG9ydDsKPj4gLQo+PiAtCWlmIChJU19CUk9YVE9OKGRldikpCj4+IC0J CXJldHVybiBEUF9UUkFJTl9WT0xUQUdFX1NXSU5HX0xFVkVMXzM7Cj4+IC0JZWxzZSBpZiAoSU5U RUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkgewo+PiAtCQlpZiAoZGV2X3ByaXYtPmVkcF9sb3dfdnN3 aW5nICYmIHBvcnQgPT0gUE9SVF9BKQo+PiAtCQkJcmV0dXJuIERQX1RSQUlOX1ZPTFRBR0VfU1dJ TkdfTEVWRUxfMzsKPj4gLQkJcmV0dXJuIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxfMjsK Pj4gLQl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkKPj4gLQkJcmV0dXJuIERQX1RSQUlO X1ZPTFRBR0VfU1dJTkdfTEVWRUxfMzsKPj4gLQllbHNlIGlmIChJU19HRU43KGRldikgJiYgcG9y dCA9PSBQT1JUX0EpCj4+IC0JCXJldHVybiBEUF9UUkFJTl9WT0xUQUdFX1NXSU5HX0xFVkVMXzI7 Cj4+IC0JZWxzZSBpZiAoSEFTX1BDSF9DUFQoZGV2KSAmJiBwb3J0ICE9IFBPUlRfQSkKPj4gLQkJ cmV0dXJuIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxfMzsKPj4gLQllbHNlCj4+IC0JCXJl dHVybiBEUF9UUkFJTl9WT0xUQUdFX1NXSU5HX0xFVkVMXzI7Cj4+IC19Cj4+IC0KPj4gLXVpbnQ4 X3QKPj4gLWludGVsX2RwX3ByZV9lbXBoYXNpc19tYXgoc3RydWN0IGludGVsX2RwICppbnRlbF9k cCwgdWludDhfdCB2b2x0YWdlX3N3aW5nKQo+PiAtewo+PiAtCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBpbnRlbF9kcF90b19kZXYoaW50ZWxfZHApOwo+PiAtCWVudW0gcG9ydCBwb3J0ID0gZHBf dG9fZGlnX3BvcnQoaW50ZWxfZHApLT5wb3J0Owo+PiAtCj4+IC0JaWYgKElOVEVMX0lORk8oZGV2 KS0+Z2VuID49IDkpIHsKPj4gLQkJc3dpdGNoICh2b2x0YWdlX3N3aW5nICYgRFBfVFJBSU5fVk9M VEFHRV9TV0lOR19NQVNLKSB7Cj4+IC0JCWNhc2UgRFBfVFJBSU5fVk9MVEFHRV9TV0lOR19MRVZF TF8wOgo+PiAtCQkJcmV0dXJuIERQX1RSQUlOX1BSRV9FTVBIX0xFVkVMXzM7Cj4+IC0JCWNhc2Ug RFBfVFJBSU5fVk9MVEFHRV9TV0lOR19MRVZFTF8xOgo+PiAtCQkJcmV0dXJuIERQX1RSQUlOX1BS RV9FTVBIX0xFVkVMXzI7Cj4+IC0JCWNhc2UgRFBfVFJBSU5fVk9MVEFHRV9TV0lOR19MRVZFTF8y Ogo+PiAtCQkJcmV0dXJuIERQX1RSQUlOX1BSRV9FTVBIX0xFVkVMXzE7Cj4+IC0JCWNhc2UgRFBf VFJBSU5fVk9MVEFHRV9TV0lOR19MRVZFTF8zOgo+PiAtCQkJcmV0dXJuIERQX1RSQUlOX1BSRV9F TVBIX0xFVkVMXzA7Cj4+IC0JCWRlZmF1bHQ6Cj4+IC0JCQlyZXR1cm4gRFBfVFJBSU5fUFJFX0VN UEhfTEVWRUxfMDsKPj4gLQkJfQo+PiAtCX0gZWxzZSBpZiAoSVNfSEFTV0VMTChkZXYpIHx8IElT X0JST0FEV0VMTChkZXYpKSB7Cj4+IC0JCXN3aXRjaCAodm9sdGFnZV9zd2luZyAmIERQX1RSQUlO X1ZPTFRBR0VfU1dJTkdfTUFTSykgewo+PiAtCQljYXNlIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdf TEVWRUxfMDoKPj4gLQkJCXJldHVybiBEUF9UUkFJTl9QUkVfRU1QSF9MRVZFTF8zOwo+PiAtCQlj YXNlIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxfMToKPj4gLQkJCXJldHVybiBEUF9UUkFJ Tl9QUkVfRU1QSF9MRVZFTF8yOwo+PiAtCQljYXNlIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVW RUxfMjoKPj4gLQkJCXJldHVybiBEUF9UUkFJTl9QUkVfRU1QSF9MRVZFTF8xOwo+PiAtCQljYXNl IERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxfMzoKPj4gLQkJZGVmYXVsdDoKPj4gLQkJCXJl dHVybiBEUF9UUkFJTl9QUkVfRU1QSF9MRVZFTF8wOwo+PiAtCQl9Cj4+IC0JfSBlbHNlIGlmIChJ U19WQUxMRVlWSUVXKGRldikpIHsKPj4gLQkJc3dpdGNoICh2b2x0YWdlX3N3aW5nICYgRFBfVFJB SU5fVk9MVEFHRV9TV0lOR19NQVNLKSB7Cj4+IC0JCWNhc2UgRFBfVFJBSU5fVk9MVEFHRV9TV0lO R19MRVZFTF8wOgo+PiAtCQkJcmV0dXJuIERQX1RSQUlOX1BSRV9FTVBIX0xFVkVMXzM7Cj4+IC0J CWNhc2UgRFBfVFJBSU5fVk9MVEFHRV9TV0lOR19MRVZFTF8xOgo+PiAtCQkJcmV0dXJuIERQX1RS QUlOX1BSRV9FTVBIX0xFVkVMXzI7Cj4+IC0JCWNhc2UgRFBfVFJBSU5fVk9MVEFHRV9TV0lOR19M RVZFTF8yOgo+PiAtCQkJcmV0dXJuIERQX1RSQUlOX1BSRV9FTVBIX0xFVkVMXzE7Cj4+IC0JCWNh c2UgRFBfVFJBSU5fVk9MVEFHRV9TV0lOR19MRVZFTF8zOgo+PiAtCQlkZWZhdWx0Ogo+PiAtCQkJ cmV0dXJuIERQX1RSQUlOX1BSRV9FTVBIX0xFVkVMXzA7Cj4+IC0JCX0KPj4gLQl9IGVsc2UgaWYg KElTX0dFTjcoZGV2KSAmJiBwb3J0ID09IFBPUlRfQSkgewo+PiAtCQlzd2l0Y2ggKHZvbHRhZ2Vf c3dpbmcgJiBEUF9UUkFJTl9WT0xUQUdFX1NXSU5HX01BU0spIHsKPj4gLQkJY2FzZSBEUF9UUkFJ Tl9WT0xUQUdFX1NXSU5HX0xFVkVMXzA6Cj4+IC0JCQlyZXR1cm4gRFBfVFJBSU5fUFJFX0VNUEhf TEVWRUxfMjsKPj4gLQkJY2FzZSBEUF9UUkFJTl9WT0xUQUdFX1NXSU5HX0xFVkVMXzE6Cj4+IC0J CWNhc2UgRFBfVFJBSU5fVk9MVEFHRV9TV0lOR19MRVZFTF8yOgo+PiAtCQkJcmV0dXJuIERQX1RS QUlOX1BSRV9FTVBIX0xFVkVMXzE7Cj4+IC0JCWRlZmF1bHQ6Cj4+IC0JCQlyZXR1cm4gRFBfVFJB SU5fUFJFX0VNUEhfTEVWRUxfMDsKPj4gLQkJfQo+PiAtCX0gZWxzZSB7Cj4+IC0JCXN3aXRjaCAo dm9sdGFnZV9zd2luZyAmIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTUFTSykgewo+PiAtCQljYXNl IERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxfMDoKPj4gLQkJCXJldHVybiBEUF9UUkFJTl9Q UkVfRU1QSF9MRVZFTF8yOwo+PiAtCQljYXNlIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxf MToKPj4gLQkJCXJldHVybiBEUF9UUkFJTl9QUkVfRU1QSF9MRVZFTF8yOwo+PiAtCQljYXNlIERQ X1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxfMjoKPj4gLQkJCXJldHVybiBEUF9UUkFJTl9QUkVf RU1QSF9MRVZFTF8xOwo+PiAtCQljYXNlIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxfMzoK Pj4gLQkJZGVmYXVsdDoKPj4gLQkJCXJldHVybiBEUF9UUkFJTl9QUkVfRU1QSF9MRVZFTF8wOwo+ PiAtCQl9Cj4+IC0JfQo+PiAtfQo+PiAtCj4+ICAgc3RhdGljIHVpbnQzMl90IHZsdl9zaWduYWxf bGV2ZWxzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4+ICAgewo+PiAgIAlzdHJ1Y3QgZHJt X2RldmljZSAqZGV2ID0gaW50ZWxfZHBfdG9fZGV2KGludGVsX2RwKTsKPj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2xpbmtfdHJhaW5pbmcuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RwX2xpbmtfdHJhaW5pbmcuYwo+PiBpbmRleCBmMzNjYmJiLi44 ZDI3ZGNlIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9saW5r X3RyYWluaW5nLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbGlua190 cmFpbmluZy5jCj4+IEBAIC0yMyw2ICsyMyw5OCBAQAo+PiAgIAo+PiAgICNpbmNsdWRlICJpbnRl bF9kcnYuaCIKPj4gICAKPj4gKy8qIFRoZXNlIGFyZSBzb3VyY2Utc3BlY2lmaWMgdmFsdWVzLiAq Lwo+PiArc3RhdGljIHVpbnQ4X3QKPj4gK2ludGVsX2RwX3ZvbHRhZ2VfbWF4KHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHApCj4+ICt7Cj4+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVs X2RwX3RvX2RldihpbnRlbF9kcCk7Cj4+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPj4gKwllbnVtIHBvcnQgcG9ydCA9IGRwX3RvX2RpZ19w b3J0KGludGVsX2RwKS0+cG9ydDsKPj4gKwo+PiArCWlmIChJU19CUk9YVE9OKGRldikpCj4+ICsJ CXJldHVybiBEUF9UUkFJTl9WT0xUQUdFX1NXSU5HX0xFVkVMXzM7Cj4+ICsJZWxzZSBpZiAoSU5U RUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkgewo+PiArCQlpZiAoZGV2X3ByaXYtPmVkcF9sb3dfdnN3 aW5nICYmIHBvcnQgPT0gUE9SVF9BKQo+PiArCQkJcmV0dXJuIERQX1RSQUlOX1ZPTFRBR0VfU1dJ TkdfTEVWRUxfMzsKPj4gKwkJcmV0dXJuIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxfMjsK Pj4gKwl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkKPj4gKwkJcmV0dXJuIERQX1RSQUlO X1ZPTFRBR0VfU1dJTkdfTEVWRUxfMzsKPj4gKwllbHNlIGlmIChJU19HRU43KGRldikgJiYgcG9y dCA9PSBQT1JUX0EpCj4+ICsJCXJldHVybiBEUF9UUkFJTl9WT0xUQUdFX1NXSU5HX0xFVkVMXzI7 Cj4+ICsJZWxzZSBpZiAoSEFTX1BDSF9DUFQoZGV2KSAmJiBwb3J0ICE9IFBPUlRfQSkKPj4gKwkJ cmV0dXJuIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxfMzsKPj4gKwllbHNlCj4+ICsJCXJl dHVybiBEUF9UUkFJTl9WT0xUQUdFX1NXSU5HX0xFVkVMXzI7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRp YyB1aW50OF90Cj4+ICtpbnRlbF9kcF9wcmVfZW1waGFzaXNfbWF4KHN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHAsIHVpbnQ4X3Qgdm9sdGFnZV9zd2luZykKPj4gK3sKPj4gKwlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2ID0gaW50ZWxfZHBfdG9fZGV2KGludGVsX2RwKTsKPj4gKwllbnVtIHBvcnQgcG9y dCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKS0+cG9ydDsKPj4gKwo+PiArCWlmIChJTlRFTF9J TkZPKGRldiktPmdlbiA+PSA5KSB7Cj4+ICsJCXN3aXRjaCAodm9sdGFnZV9zd2luZyAmIERQX1RS QUlOX1ZPTFRBR0VfU1dJTkdfTUFTSykgewo+PiArCQljYXNlIERQX1RSQUlOX1ZPTFRBR0VfU1dJ TkdfTEVWRUxfMDoKPj4gKwkJCXJldHVybiBEUF9UUkFJTl9QUkVfRU1QSF9MRVZFTF8zOwo+PiAr CQljYXNlIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxfMToKPj4gKwkJCXJldHVybiBEUF9U UkFJTl9QUkVfRU1QSF9MRVZFTF8yOwo+PiArCQljYXNlIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdf TEVWRUxfMjoKPj4gKwkJCXJldHVybiBEUF9UUkFJTl9QUkVfRU1QSF9MRVZFTF8xOwo+PiArCQlj YXNlIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxfMzoKPj4gKwkJCXJldHVybiBEUF9UUkFJ Tl9QUkVfRU1QSF9MRVZFTF8wOwo+PiArCQlkZWZhdWx0Ogo+PiArCQkJcmV0dXJuIERQX1RSQUlO X1BSRV9FTVBIX0xFVkVMXzA7Cj4+ICsJCX0KPj4gKwl9IGVsc2UgaWYgKElTX0hBU1dFTEwoZGV2 KSB8fCBJU19CUk9BRFdFTEwoZGV2KSkgewo+PiArCQlzd2l0Y2ggKHZvbHRhZ2Vfc3dpbmcgJiBE UF9UUkFJTl9WT0xUQUdFX1NXSU5HX01BU0spIHsKPj4gKwkJY2FzZSBEUF9UUkFJTl9WT0xUQUdF X1NXSU5HX0xFVkVMXzA6Cj4+ICsJCQlyZXR1cm4gRFBfVFJBSU5fUFJFX0VNUEhfTEVWRUxfMzsK Pj4gKwkJY2FzZSBEUF9UUkFJTl9WT0xUQUdFX1NXSU5HX0xFVkVMXzE6Cj4+ICsJCQlyZXR1cm4g RFBfVFJBSU5fUFJFX0VNUEhfTEVWRUxfMjsKPj4gKwkJY2FzZSBEUF9UUkFJTl9WT0xUQUdFX1NX SU5HX0xFVkVMXzI6Cj4+ICsJCQlyZXR1cm4gRFBfVFJBSU5fUFJFX0VNUEhfTEVWRUxfMTsKPj4g KwkJY2FzZSBEUF9UUkFJTl9WT0xUQUdFX1NXSU5HX0xFVkVMXzM6Cj4+ICsJCWRlZmF1bHQ6Cj4+ ICsJCQlyZXR1cm4gRFBfVFJBSU5fUFJFX0VNUEhfTEVWRUxfMDsKPj4gKwkJfQo+PiArCX0gZWxz ZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4+ICsJCXN3aXRjaCAodm9sdGFnZV9zd2luZyAm IERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTUFTSykgewo+PiArCQljYXNlIERQX1RSQUlOX1ZPTFRB R0VfU1dJTkdfTEVWRUxfMDoKPj4gKwkJCXJldHVybiBEUF9UUkFJTl9QUkVfRU1QSF9MRVZFTF8z Owo+PiArCQljYXNlIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxfMToKPj4gKwkJCXJldHVy biBEUF9UUkFJTl9QUkVfRU1QSF9MRVZFTF8yOwo+PiArCQljYXNlIERQX1RSQUlOX1ZPTFRBR0Vf U1dJTkdfTEVWRUxfMjoKPj4gKwkJCXJldHVybiBEUF9UUkFJTl9QUkVfRU1QSF9MRVZFTF8xOwo+ PiArCQljYXNlIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxfMzoKPj4gKwkJZGVmYXVsdDoK Pj4gKwkJCXJldHVybiBEUF9UUkFJTl9QUkVfRU1QSF9MRVZFTF8wOwo+PiArCQl9Cj4+ICsJfSBl bHNlIGlmIChJU19HRU43KGRldikgJiYgcG9ydCA9PSBQT1JUX0EpIHsKPj4gKwkJc3dpdGNoICh2 b2x0YWdlX3N3aW5nICYgRFBfVFJBSU5fVk9MVEFHRV9TV0lOR19NQVNLKSB7Cj4+ICsJCWNhc2Ug RFBfVFJBSU5fVk9MVEFHRV9TV0lOR19MRVZFTF8wOgo+PiArCQkJcmV0dXJuIERQX1RSQUlOX1BS RV9FTVBIX0xFVkVMXzI7Cj4+ICsJCWNhc2UgRFBfVFJBSU5fVk9MVEFHRV9TV0lOR19MRVZFTF8x Ogo+PiArCQljYXNlIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxfMjoKPj4gKwkJCXJldHVy biBEUF9UUkFJTl9QUkVfRU1QSF9MRVZFTF8xOwo+PiArCQlkZWZhdWx0Ogo+PiArCQkJcmV0dXJu IERQX1RSQUlOX1BSRV9FTVBIX0xFVkVMXzA7Cj4+ICsJCX0KPj4gKwl9IGVsc2Ugewo+PiArCQlz d2l0Y2ggKHZvbHRhZ2Vfc3dpbmcgJiBEUF9UUkFJTl9WT0xUQUdFX1NXSU5HX01BU0spIHsKPj4g KwkJY2FzZSBEUF9UUkFJTl9WT0xUQUdFX1NXSU5HX0xFVkVMXzA6Cj4+ICsJCQlyZXR1cm4gRFBf VFJBSU5fUFJFX0VNUEhfTEVWRUxfMjsKPj4gKwkJY2FzZSBEUF9UUkFJTl9WT0xUQUdFX1NXSU5H X0xFVkVMXzE6Cj4+ICsJCQlyZXR1cm4gRFBfVFJBSU5fUFJFX0VNUEhfTEVWRUxfMjsKPj4gKwkJ Y2FzZSBEUF9UUkFJTl9WT0xUQUdFX1NXSU5HX0xFVkVMXzI6Cj4+ICsJCQlyZXR1cm4gRFBfVFJB SU5fUFJFX0VNUEhfTEVWRUxfMTsKPj4gKwkJY2FzZSBEUF9UUkFJTl9WT0xUQUdFX1NXSU5HX0xF VkVMXzM6Cj4+ICsJCWRlZmF1bHQ6Cj4+ICsJCQlyZXR1cm4gRFBfVFJBSU5fUFJFX0VNUEhfTEVW RUxfMDsKPj4gKwkJfQo+PiArCX0KPj4gK30KPj4gKwo+PiAgIHN0YXRpYyB2b2lkCj4+ICAgaW50 ZWxfZ2V0X2FkanVzdF90cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+PiAgIAkJICAg ICAgIGNvbnN0IHVpbnQ4X3QgbGlua19zdGF0dXNbRFBfTElOS19TVEFUVVNfU0laRV0pCj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oCj4+IGluZGV4IDI5YWU0YmIuLjY3MWEyMGYgMTAwNjQ0Cj4+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4+IEBAIC0xMjE2LDE1ICsxMjE2LDE4IEBAIGludGVs X2RwX3Byb2dyYW1fbGlua190cmFpbmluZ19wYXR0ZXJuKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHAsCj4+ICAgdm9pZAo+PiAgIGludGVsX2RwX3VwZGF0ZV9zaWduYWxfbGV2ZWxzKHN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHApOwo+PiAgIHZvaWQgaW50ZWxfZHBfc2V0X2lkbGVfbGlua190cmFp bihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKPj4gLXVpbnQ4X3QKPj4gLWludGVsX2RwX3Zv bHRhZ2VfbWF4KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOwo+PiAtdWludDhfdAo+PiAtaW50 ZWxfZHBfcHJlX2VtcGhhc2lzX21heChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCB1aW50OF90 IHZvbHRhZ2Vfc3dpbmcpOwo+PiAgIHZvaWQgaW50ZWxfZHBfY29tcHV0ZV9yYXRlKHN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHAsIGludCBwb3J0X2Nsb2NrLAo+PiAgIAkJCSAgIHVpbnQ4X3QgKmxp bmtfYncsIHVpbnQ4X3QgKnJhdGVfc2VsZWN0KTsKPj4gICBib29sIGludGVsX2RwX3NvdXJjZV9z dXBwb3J0c19oYnIyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+PiAgIGJvb2wKPj4gICBpbnRl bF9kcF9nZXRfbGlua19zdGF0dXMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgdWludDhfdCBs aW5rX3N0YXR1c1tEUF9MSU5LX1NUQVRVU19TSVpFXSk7Cj4+ICtzdGF0aWMgaW5saW5lIHN0cnVj dCBkcm1fZGV2aWNlICppbnRlbF9kcF90b19kZXYoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkK Pj4gK3sKPj4gKwlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9IGRw X3RvX2RpZ19wb3J0KGludGVsX2RwKTsKPj4gKwo+PiArCXJldHVybiBpbnRlbF9kaWdfcG9ydC0+ YmFzZS5iYXNlLmRldjsKPj4gK30KPj4gKwo+PiAgIAo+PiAgIC8qIGludGVsX2RwX21zdC5jICov Cj4+ICAgaW50IGludGVsX2RwX21zdF9lbmNvZGVyX2luaXQoc3RydWN0IGludGVsX2RpZ2l0YWxf cG9ydCAqaW50ZWxfZGlnX3BvcnQsIGludCBjb25uX2lkKTsKPj4gLS0gCj4+IDIuNC4zCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFp bGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=