From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ramalingam C Subject: Re: [PATCH] drm/i915/BXT: Fixed COS blanking issue Date: Fri, 11 Mar 2016 18:54:56 +0530 Message-ID: <56E2C728.3080801@intel.com> References: <1456771760-18823-1-git-send-email-ramalingam.c@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTP id 602436E2B9 for ; Fri, 11 Mar 2016 13:33:23 +0000 (UTC) In-Reply-To: <1456771760-18823-1-git-send-email-ramalingam.c@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: jani.nikula@intel.com List-Id: intel-gfx@lists.freedesktop.org SGksCgpUaGlzIGNoYW5nZSByZXRyaWV2ZXMgdGhlIHBpcGUgdGltaW5ncyBmcm9tIHBvcnQgcmVn aXN0ZXJzIGFzIHRoZSBwaXBlIApyZWdpc3RlcnMgYXJlIGluYWN0aXZlIGluIEJYVCBEU0kuCkFz IHRoZSAgaGZwLCBoc3luYyBhbmQgaGJwIGFyZSBwcm9ncmFtbWVkIHRvIHBvcnQgcmVnaXN0ZXJz IGludGVybXMgb2YgCmJ5dGVjbGsgaGVuY2UgY29udmVydGVkIHRvIHRoZSBwaXhlbHMuCkluIHRo aXMgY29udmVyc2lvbnMgd2UgaGF2ZSBtdWx0aXBsZSBhcHByb3hpbWF0aW9ucyBkdWUgdG8gRElW X1JPVU5EX1VQIApoZW5jZSB3ZSB3aWxsIGhhdmUgc29tZSBkZWx0YSBpbiB0aGUgcmV0cmlldmVk IHZhbHVlcy4KCkFzIHBlciBteSBkaXNjdXNzaW9uIHdpdGggSmFuaSwgdGhlc2UgZXJyb3JzIGFy ZSBjYWxjdWxhdGVkIGFuZCBoYW5kbGVkIAphdCBwaXBlX2NvbmZpZyBjb21wYXJpc29uIGF0Cmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL2FyY2hpdmVzL2ludGVsLWdmeC8yMDE2LU1hcmNo LzA4OTU0OC5odG1sCgpPbiBUdWVzZGF5IDAxIE1hcmNoIDIwMTYgMTI6MTkgQU0sIFJhbWFsaW5n YW0gQyB3cm90ZToKPiBEdXJpbmcgQ2hhcmdpbmcgT1MgbW9kZSwgbWlwaSBkaXNwbGF5IHdhcyBi bGFua2luZy5UaGlzIGlzCj4gYmVjYXVzZSBkdXJpbmcgZHJpdmVyIGxvYWQsIHRob3VnaCBlbmNv ZGVyLCBjb25uZWN0b3Igd2VyZQo+IGFjdGl2ZSBidXQgY3J0YyByZXR1cm5lZCBpbmFjdGl2ZS4g VGhpcyBjYXVzZWQgc2FuaXRpemUKPiBmdW5jdGlvbiB0byBkaXNhYmxlIHRoZSBEU0kgcGFuZWwu IEluIEFPUywgdGhpcyBpcyBmaW5lCj4gc2luY2UgSFdDIHdpbGwgZG8gYSBtb2Rlc2V0IGFuZCBj cnRjLCBjb25uZWN0b3IsIGVuY29kZXIKPiBtYXBwaW5nIHdpbGwgYmUgcmVzdG9yZWQuIEJ1dCBp biBDT1MsIG5vIG1vZGVzZXQgaXMgY2FsbGVkLAo+IGl0IGp1c3QgY2FsbHMgRFBNUyBPTi9PRkYu Cj4KPiBUaGlzIGlzIGZpbmUgb24gQllUL0NIVCBzaW5jZSB0cmFuc2NvZGVyIGlzIGNvbW1vbiBi L3cKPiBhbGwgZW5jb2RlcnMuIEJ1dCBmb3IgQlhULCB0aGVyZSBpcyBhIHNlcGFyYXRlIG1pcGkK PiB0cmFuc2NvZGVyLiBIZW5jZSB0aGlzIG5lZWRzIHNwZWNpYWwgaGFuZGxpbmcgZm9yIEJYVC4K Pgo+IFYyOiBwaXBlX2NvbmZpZy0+aGFzX2RzaV9lbmNvZGVyIGlzIHNldCBmb3IgQlhUIFtCeSBK YW5pXQo+Cj4gVjM6IFRpbWluZyBwYXJhbWV0ZXJzIGFyZSByZXRyaWV2ZWQgZnJvbSBWQlQuIFtC eSBKYW5pXQo+Cj4gVjQ6IFJldHJpZXZpbmcgdGhlIHBpcGUgdGltaW5nIGZyb20gdGhlIERTSSBw b3J0IHJlZ2lzdGVycy4KPiAgICAgIEFkZGVkIGEgZW5jb2RlciBmdW5jdGlvbiBmb3IgdGhpcyBw dXJwb3NlLiBbQnkgSmFuaV0KPgo+IFNpZ25lZC1vZmYtYnk6IFVtYSBTaGFua2FyIDx1bWEuc2hh bmthckBpbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogUmFtYWxpbmdhbSBDIDxyYW1hbGluZ2Ft LmNAaW50ZWwuY29tPgo+IC0tLQo+IFJldmlldyBvZiBwcmV2aW91cyBwYXRjaCBzZXQgY2FuIGJl IGZvdW5kIGF0Cj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvYXJjaGl2ZXMvaW50ZWwt Z2Z4LzIwMTYtRmVicnVhcnkvMDg4MDYwLmh0bWwKPgo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jIHwgICA4OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KPiAg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICB8ICAgIDkgKysrLQo+ICAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpLmMgICAgIHwgICA5OCArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCj4gICAzIGZpbGVzIGNoYW5nZWQsIDE4OSBpbnNlcnRpb25zKCsp LCA2IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGlu ZGV4IGFkZGU2ZjguLjMxYjlhNzEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jCj4gQEAgLTM0LDYgKzM0LDcgQEAKPiAgICNpbmNsdWRlIDxkcm0vZHJtX2VkaWQuaD4KPiAg ICNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+ICAgI2luY2x1ZGUgImludGVsX2Rydi5oIgo+ICsjaW5j bHVkZSAiaW50ZWxfZHNpLmgiCj4gICAjaW5jbHVkZSA8ZHJtL2k5MTVfZHJtLmg+Cj4gICAjaW5j bHVkZSAiaTkxNV9kcnYuaCIKPiAgICNpbmNsdWRlICJpOTE1X3RyYWNlLmgiCj4gQEAgLTk5ODEs MTEgKzk5ODIsNjYgQEAgc3RhdGljIHZvaWQgaGFzd2VsbF9nZXRfZGRpX3BvcnRfc3RhdGUoc3Ry dWN0IGludGVsX2NydGMgKmNydGMsCj4gICAJfQo+ICAgfQo+ICAgCj4gK2VudW0gcGlwZSBwaXBl X2xpbmtlZF90b19kc2lfcG9ydChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVtIHBvcnQgcG9y dCkKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZf cHJpdmF0ZTsKPiArCWVudW0gcGlwZSBwaXBlID0gSU5WQUxJRF9QSVBFOwo+ICsJdWludDMyX3Qg ZHNpX2N0cmw7Cj4gKwo+ICsJZHNpX2N0cmwgPSBJOTE1X1JFQUQoTUlQSV9DVFJMKHBvcnQpKTsK PiArCXN3aXRjaCAoZHNpX2N0cmwgJiBCWFRfUElQRV9TRUxFQ1RfTUFTSykgewo+ICsJY2FzZSBC WFRfUElQRV9TRUxFQ1QoUElQRV9BKToKPiArCQlwaXBlID0gUElQRV9BOwo+ICsJCWJyZWFrOwo+ ICsJY2FzZSBCWFRfUElQRV9TRUxFQ1QoUElQRV9CKToKPiArCQlwaXBlID0gUElQRV9COwo+ICsJ CWJyZWFrOwo+ICsJY2FzZSBCWFRfUElQRV9TRUxFQ1QoUElQRV9DKToKPiArCQlwaXBlID0gUElQ RV9DOwo+ICsJCWJyZWFrOwo+ICsJZGVmYXVsdDoKPiArCQlXQVJOKDEsICJ1bmtub3duIHBpcGUg bGlua2VkIHRvIGRzaSB0cmFuc2NvZGVyXG4iKTsKPiArCX0KPiArCj4gKwlyZXR1cm4gcGlwZTsK PiArfQo+ICsKPiArc3RydWN0IGludGVsX2VuY29kZXIgKmJ4dF9nZXRfZHNpX2VuY29kZXJfZm9y X2NydGMoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gKwkJCQkJc3RydWN0IGludGVsX2NydGNf c3RhdGUgKnBpcGVfY29uZmlnKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0 Yy0+YmFzZS5kZXY7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYt PmRldl9wcml2YXRlOwo+ICsJc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXI7Cj4g KwlzdHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2k7Cj4gKwllbnVtIHBvcnQgcG9ydDsKPiArCj4g Kwlmb3JfZWFjaF9pbnRlbF9lbmNvZGVyKGRldiwgaW50ZWxfZW5jb2Rlcikgewo+ICsJCWlmIChp bnRlbF9lbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9EU0kpIHsKPiArCQkJaW50ZWxfZHNp ID0gZW5jX3RvX2ludGVsX2RzaSgmaW50ZWxfZW5jb2Rlci0+YmFzZSk7Cj4gKwkJCWlmICghaW50 ZWxfZHNpKQo+ICsJCQkJY29udGludWU7Cj4gKwo+ICsJCQlmb3JfZWFjaF9kc2lfcG9ydChwb3J0 LCBpbnRlbF9kc2ktPnBvcnRzKSB7Cj4gKwkJCQlpZiAoIShJOTE1X1JFQUQoQlhUX01JUElfUE9S VF9DVFJMKHBvcnQpKSAmCj4gKwkJCQkJCQkJRFBJX0VOQUJMRSkpCj4gKwkJCQkJY29udGludWU7 Cj4gKwkJCQlpZiAocGlwZV9saW5rZWRfdG9fZHNpX3BvcnQoZGV2LCBwb3J0KSA9PQo+ICsJCQkJ CQkJCWNydGMtPnBpcGUpIHsKPiArCQkJCQlwaXBlX2NvbmZpZy0+aGFzX2RzaV9lbmNvZGVyID0g dHJ1ZTsKPiArCQkJCQlyZXR1cm4gaW50ZWxfZW5jb2RlcjsKPiArCQkJCX0KPiArCQkJfQo+ICsJ CX0KPiArCX0KPiArCXJldHVybiBOVUxMOwo+ICt9Cj4gKwo+ICAgc3RhdGljIGJvb2wgaGFzd2Vs bF9nZXRfcGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gICAJCQkJICAgIHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZykKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJt X2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Cj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVjdCBpbnRlbF9lbmNvZGVy ICppbnRlbF9lbmNvZGVyLCAqYXR0YWNoZWRfZW5jb2RlciA9IE5VTEw7Cj4gICAJZW51bSBpbnRl bF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBwb3dlcl9kb21haW47Cj4gICAJdW5zaWduZWQgbG9uZyBw b3dlcl9kb21haW5fbWFzazsKPiAgIAl1aW50MzJfdCB0bXA7Cj4gQEAgLTEwMDIzLDE4ICsxMDA3 OSw0MCBAQCBzdGF0aWMgYm9vbCBoYXN3ZWxsX2dldF9waXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0YywKPiAgIAkJCXBpcGVfY29uZmlnLT5jcHVfdHJhbnNjb2RlciA9IFRSQU5TQ09E RVJfRURQOwo+ICAgCX0KPiAgIAo+ICsJZm9yX2VhY2hfZW5jb2Rlcl9vbl9jcnRjKGRldiwgJmNy dGMtPmJhc2UsIGludGVsX2VuY29kZXIpCj4gKwkJYXR0YWNoZWRfZW5jb2RlciA9IGludGVsX2Vu Y29kZXI7Cj4gKwo+ICsJLyoKPiArCSAqIGF0dGFjaGVkX2VuY29kZXIgd2lsbCBiZSBOVUxMLCBp ZiB0aGVyZSBpcyBubyBtb2Rlc2V0IGZyb20gdGhlCj4gKwkgKiBrZXJuZWwgYm9vdHVwLgo+ICsJ ICovCj4gKwlpZiAoIWF0dGFjaGVkX2VuY29kZXIgJiYgZGV2X3ByaXYtPnZidC5oYXNfbWlwaSAm JiBJU19CUk9YVE9OKGRldikpCj4gKwkJYXR0YWNoZWRfZW5jb2RlciA9Cj4gKwkJCQlieHRfZ2V0 X2RzaV9lbmNvZGVyX2Zvcl9jcnRjKGNydGMsIHBpcGVfY29uZmlnKTsKPiArCj4gICAJcG93ZXJf ZG9tYWluID0gUE9XRVJfRE9NQUlOX1RSQU5TQ09ERVIocGlwZV9jb25maWctPmNwdV90cmFuc2Nv ZGVyKTsKPiAgIAlpZiAoIWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0X2lmX2VuYWJsZWQoZGV2X3By aXYsIHBvd2VyX2RvbWFpbikpCj4gICAJCWdvdG8gb3V0Owo+ICAgCXBvd2VyX2RvbWFpbl9tYXNr IHw9IEJJVChwb3dlcl9kb21haW4pOwo+ICAgCj4gLQl0bXAgPSBJOTE1X1JFQUQoUElQRUNPTkYo cGlwZV9jb25maWctPmNwdV90cmFuc2NvZGVyKSk7Cj4gLQlpZiAoISh0bXAgJiBQSVBFQ09ORl9F TkFCTEUpKQo+IC0JCWdvdG8gb3V0Owo+ICsJaWYgKGF0dGFjaGVkX2VuY29kZXIgJiYgYXR0YWNo ZWRfZW5jb2Rlci0+Z2V0X3BpcGVfY29uZmlnKQo+ICsJCS8qCj4gKwkJICogQlhUIGRvZXNuJ3Qg aGF2ZSB0aGUgUElQRSB0aW1pbmcgcmVnaXN0ZXJzLgo+ICsJCSAqIEhlbmNlIHJldHJpZXZlZCB0 aGUgcGlwZSBkZXRhaWwgZnJvbSBQT1JUIHJlZ2lzdGVyLgo+ICsJCSAqIEFuZCB0aW1pbmcgcGFy YW1ldGVycyBhcmUgb2J0YWluZWQgZnJvbSBWQlQKPiArCQkgKi8KPiArCQlhdHRhY2hlZF9lbmNv ZGVyLT5nZXRfcGlwZV9jb25maWcoYXR0YWNoZWRfZW5jb2RlciwKPiArCQkJCQkJCQlwaXBlX2Nv bmZpZyk7Cj4gKwllbHNlIHsKPiArCQl0bXAgPSBJOTE1X1JFQUQoUElQRUNPTkYocGlwZV9jb25m aWctPmNwdV90cmFuc2NvZGVyKSk7Cj4gKwkJaWYgKCEodG1wICYgUElQRUNPTkZfRU5BQkxFKSkK PiArCQkJZ290byBvdXQ7Cj4gICAKPiAtCWhhc3dlbGxfZ2V0X2RkaV9wb3J0X3N0YXRlKGNydGMs IHBpcGVfY29uZmlnKTsKPiArCQlpZiAoIUlTX1ZBTExFWVZJRVcoZGV2KSkKPiArCQkJaGFzd2Vs bF9nZXRfZGRpX3BvcnRfc3RhdGUoY3J0YywgcGlwZV9jb25maWcpOwo+ICAgCj4gLQlpbnRlbF9n ZXRfcGlwZV90aW1pbmdzKGNydGMsIHBpcGVfY29uZmlnKTsKPiArCQlpbnRlbF9nZXRfcGlwZV90 aW1pbmdzKGNydGMsIHBpcGVfY29uZmlnKTsKPiArCX0KPiAgIAo+ICAgCWlmIChJTlRFTF9JTkZP KGRldiktPmdlbiA+PSA5KSB7Cj4gICAJCXNrbF9pbml0X3NjYWxlcnMoZGV2LCBjcnRjLCBwaXBl X2NvbmZpZyk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBpbmRleCA0ODUyMDQ5Li41ODk3 OWU0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBAQCAtMTUyLDYgKzE1MiwxMyBA QCBzdHJ1Y3QgaW50ZWxfZW5jb2RlciB7Cj4gICAJdm9pZCAoKmdldF9jb25maWcpKHN0cnVjdCBp bnRlbF9lbmNvZGVyICosCj4gICAJCQkgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9j b25maWcpOwo+ICAgCS8qCj4gKwkgKiBSZXRyaXZlcyB0aGUgUElQRSBjb25maWcgZnJvbSB0aGUg UE9SVCByZWdpc3RlcnMgd2hlcmUgUElQRQo+ICsJICogcmVnaXN0ZXJzIGFyZSBpbnZhbGlkIGFu ZCBvbmx5IFBPUlQgcmVnaXN0ZXJzIHdpbGwgaG9sZCB0aGUgdGltaW5nCj4gKwkgKiBwYXJhbWV0 ZXJzLgo+ICsJICovCj4gKwl2b2lkICgqZ2V0X3BpcGVfY29uZmlnKShzdHJ1Y3QgaW50ZWxfZW5j b2RlciAqLAo+ICsJCQkgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpOwo+ ICsJLyoKPiAgIAkgKiBDYWxsZWQgZHVyaW5nIHN5c3RlbSBzdXNwZW5kIGFmdGVyIGFsbCBwZW5k aW5nIHJlcXVlc3RzIGZvciB0aGUKPiAgIAkgKiBlbmNvZGVyIGFyZSBmbHVzaGVkIChmb3IgZXhh bXBsZSBmb3IgRFAgQVVYIHRyYW5zYWN0aW9ucykgYW5kCj4gICAJICogZGV2aWNlIGludGVycnVw dHMgYXJlIGRpc2FibGVkLgo+IEBAIC0xMjkwLDcgKzEyOTcsNyBAQCBpbnQgaW50ZWxfZHBfbXN0 X2VuY29kZXJfaW5pdChzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwg aW50IGNvbgo+ICAgdm9pZCBpbnRlbF9kcF9tc3RfZW5jb2Rlcl9jbGVhbnVwKHN0cnVjdCBpbnRl bF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0KTsKPiAgIC8qIGludGVsX2RzaS5jICovCj4g ICB2b2lkIGludGVsX2RzaV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+IC0KPiArZW51 bSBwaXBlIHBpcGVfbGlua2VkX3RvX2RzaV9wb3J0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVu dW0gcG9ydCBwb3J0KTsKPiAgIAo+ICAgLyogaW50ZWxfZHZvLmMgKi8KPiAgIHZvaWQgaW50ZWxf ZHZvX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RzaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNp LmMKPiBpbmRleCA3MzRmMDZhLi43ZmJlYWU1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RzaS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNp LmMKPiBAQCAtNzQ1LDYgKzc0NSwxMDMgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHNpX2dldF9jb25m aWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gICAJcGlwZV9jb25maWctPnBvcnRf Y2xvY2sgPSBwY2xrOwo+ICAgfQo+ICAgCj4gKy8qIHJldHVybiBwaXhlbHMgZXF1dmFsZW50IHRv IHR4Ynl0ZWNsa2hzICovCj4gK3N0YXRpYyB1MTYgcGl4ZWxzX2Zyb21fdHhieXRlY2xraHModTE2 IGNsa19ocywgaW50IGJwcCwgaW50IGxhbmVfY291bnQsCj4gKwkJICAgICAgIHUxNiBidXJzdF9t b2RlX3JhdGlvKQo+ICt7Cj4gKwlyZXR1cm4gRElWX1JPVU5EX1VQKChjbGtfaHMgKiBsYW5lX2Nv dW50ICogOCAqIDEwMCksCj4gKwkJCQkJCShicHAgKiBidXJzdF9tb2RlX3JhdGlvKSk7Cj4gK30K PiArCj4gK3N0YXRpYyB2b2lkIGJ4dF9kc2lfZ2V0X3BpcGVfY29uZmlnKHN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyLAo+ICsJCQkJIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2Nv bmZpZykKPiArewo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuY29kZXItPmJhc2UuZGV2 Owo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0 ZTsKPiArCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0KPiArCQkJCQkm cGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsKPiArCXN0cnVjdCBpbnRlbF9kc2kgKmlu dGVsX2RzaSA9Cj4gKwkJCQllbmNfdG9faW50ZWxfZHNpKCZlbmNvZGVyLT5iYXNlKTsKPiArCXVu c2lnbmVkIGludCBicHAgPSBkc2lfcGl4ZWxfZm9ybWF0X2JwcChpbnRlbF9kc2ktPnBpeGVsX2Zv cm1hdCk7Cj4gKwl1bnNpZ25lZCBpbnQgbGFuZV9jb3VudCA9IGludGVsX2RzaS0+bGFuZV9jb3Vu dDsKPiArCWVudW0gcG9ydCBwb3J0Owo+ICsJZW51bSBwaXBlIGRzaV9waXBlOwo+ICsJdTE2IGhh Y3RpdmUsIGhmcCwgaHN5bmMsIGhicCwgdmZwLCB2c3luYywgdmJwOwo+ICsJdWludDMyX3QgdG1w Owo+ICsKPiArCWZvcl9lYWNoX2RzaV9wb3J0KHBvcnQsIGludGVsX2RzaS0+cG9ydHMpIHsKPiAr CQlpZiAoIShJOTE1X1JFQUQoQlhUX01JUElfUE9SVF9DVFJMKHBvcnQpKSAmIERQSV9FTkFCTEUp KQo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJLyogSW4gdGVybXMgb2YgcGl4ZWxzICovCj4gKwkJ YWRqdXN0ZWRfbW9kZS0+Y3J0Y19oZGlzcGxheSA9Cj4gKwkJCQkJSTkxNV9SRUFEKEJYVF9NSVBJ X1RSQU5TX0hBQ1RJVkUocG9ydCkpOwo+ICsJCWFkanVzdGVkX21vZGUtPmNydGNfdmRpc3BsYXkg PQo+ICsJCQkJCUk5MTVfUkVBRChCWFRfTUlQSV9UUkFOU19WQUNUSVZFKHBvcnQpKTsKPiArCQlh ZGp1c3RlZF9tb2RlLT5jcnRjX3Z0b3RhbCA9Cj4gKwkJCQkJSTkxNV9SRUFEKEJYVF9NSVBJX1RS QU5TX1ZUT1RBTChwb3J0KSk7Cj4gKwo+ICsJCWhhY3RpdmUgPSBhZGp1c3RlZF9tb2RlLT5jcnRj X2hkaXNwbGF5Owo+ICsJCWhmcCA9IEk5MTVfUkVBRChNSVBJX0hGUF9DT1VOVChwb3J0KSk7Cj4g Kwo+ICsJCS8qCj4gKwkJICogbWVhbmluZ2Z1bCBmb3IgdmlkZW8gbW9kZSBub24tYnVyc3Qgc3lu YyBwdWxzZSBtb2RlIG9ubHksCj4gKwkJICogY2FuIGJlIHplcm8gZm9yIG5vbi1idXJzdCBzeW5j IGV2ZW50cyBhbmQgYnVyc3QgbW9kZXMKPiArCQkgKi8KPiArCQloc3luYyA9IEk5MTVfUkVBRChN SVBJX0hTWU5DX1BBRERJTkdfQ09VTlQocG9ydCkpOwo+ICsJCWhicCA9IEk5MTVfUkVBRChNSVBJ X0hCUF9DT1VOVChwb3J0KSk7Cj4gKwo+ICsJCS8qIGhvcml6b250YWwgdmFsdWVzIGFyZSBpbiB0 ZXJtcyBvZiBoaWdoIHNwZWVkIGJ5dGUgY2xvY2sgKi8KPiArCQloZnAgPSBwaXhlbHNfZnJvbV90 eGJ5dGVjbGtocyhoZnAsIGJwcCwgbGFuZV9jb3VudCwKPiArCQkJCQkJaW50ZWxfZHNpLT5idXJz dF9tb2RlX3JhdGlvKTsKPiArCQloc3luYyA9IHBpeGVsc19mcm9tX3R4Ynl0ZWNsa2hzKGhzeW5j LCBicHAsIGxhbmVfY291bnQsCj4gKwkJCQkJCWludGVsX2RzaS0+YnVyc3RfbW9kZV9yYXRpbyk7 Cj4gKwkJaGJwID0gcGl4ZWxzX2Zyb21fdHhieXRlY2xraHMoaGJwLCBicHAsIGxhbmVfY291bnQs Cj4gKwkJCQkJCWludGVsX2RzaS0+YnVyc3RfbW9kZV9yYXRpbyk7Cj4gKwo+ICsJCWlmIChpbnRl bF9kc2ktPmR1YWxfbGluaykgewo+ICsJCQloZnAgKj0gMjsKPiArCQkJaHN5bmMgKj0gMjsKPiAr CQkJaGJwICo9IDI7Cj4gKwkJfQo+ICsKPiArCQkvKiB2ZXJ0aWNhbCB2YWx1ZXMgYXJlIGluIHRl cm1zIG9mIGxpbmVzICovCj4gKwkJdmZwID0gSTkxNV9SRUFEKE1JUElfVkZQX0NPVU5UKHBvcnQp KTsKPiArCQl2c3luYyA9IEk5MTVfUkVBRChNSVBJX1ZTWU5DX1BBRERJTkdfQ09VTlQocG9ydCkp Owo+ICsJCXZicCA9IEk5MTVfUkVBRChNSVBJX1ZCUF9DT1VOVChwb3J0KSk7Cj4gKwo+ICsJCWFk anVzdGVkX21vZGUtPmNydGNfaHRvdGFsID0gaGFjdGl2ZSArIGhmcCArIGhzeW5jICsgaGJwOwo+ ICsJCWFkanVzdGVkX21vZGUtPmNydGNfaHN5bmNfc3RhcnQgPQo+ICsJCQkJCWhmcCArIGFkanVz dGVkX21vZGUtPmNydGNfaGRpc3BsYXk7Cj4gKwkJYWRqdXN0ZWRfbW9kZS0+Y3J0Y19oc3luY19l bmQgPQo+ICsJCQkJCWhzeW5jICsgYWRqdXN0ZWRfbW9kZS0+Y3J0Y19oc3luY19zdGFydDsKPiAr Cj4gKwkJYWRqdXN0ZWRfbW9kZS0+Y3J0Y19oYmxhbmtfc3RhcnQgPSBhZGp1c3RlZF9tb2RlLT5j cnRjX2hkaXNwbGF5Owo+ICsJCWFkanVzdGVkX21vZGUtPmNydGNfaGJsYW5rX2VuZCA9IGFkanVz dGVkX21vZGUtPmNydGNfaHRvdGFsOwo+ICsKPiArCQlhZGp1c3RlZF9tb2RlLT5jcnRjX3ZzeW5j X3N0YXJ0ID0KPiArCQkJCQl2ZnAgKyBhZGp1c3RlZF9tb2RlLT5jcnRjX3ZkaXNwbGF5Owo+ICsJ CWFkanVzdGVkX21vZGUtPmNydGNfdnN5bmNfZW5kID0KPiArCQkJCQl2c3luYyArIGFkanVzdGVk X21vZGUtPmNydGNfdnN5bmNfc3RhcnQ7Cj4gKwo+ICsJCWFkanVzdGVkX21vZGUtPmNydGNfdmJs YW5rX3N0YXJ0ID0gYWRqdXN0ZWRfbW9kZS0+Y3J0Y192ZGlzcGxheTsKPiArCQlhZGp1c3RlZF9t b2RlLT5jcnRjX3ZibGFua19lbmQgPSBhZGp1c3RlZF9tb2RlLT5jcnRjX3Z0b3RhbDsKPiArCj4g KwkJcGlwZV9jb25maWctPnBpcGVfYnBwID0KPiArCQkJCWRzaV9waXhlbF9mb3JtYXRfYnBwKGlu dGVsX2RzaS0+cGl4ZWxfZm9ybWF0KTsKPiArCj4gKwkJZHNpX3BpcGUgPSBwaXBlX2xpbmtlZF90 b19kc2lfcG9ydChkZXYsIHBvcnQpOwo+ICsJCXRtcCA9IEk5MTVfUkVBRChQSVBFU1JDKGRzaV9w aXBlKSk7Cj4gKwkJcGlwZV9jb25maWctPnBpcGVfc3JjX2ggPSAodG1wICYgMHhmZmZmKSArIDE7 Cj4gKwkJcGlwZV9jb25maWctPnBpcGVfc3JjX3cgPSAoKHRtcCA+PiAxNikgJiAweGZmZmYpICsg MTsKPiArCj4gKwkJcGlwZV9jb25maWctPmJhc2UubW9kZS52ZGlzcGxheSA9IHBpcGVfY29uZmln LT5waXBlX3NyY19oOwo+ICsJCXBpcGVfY29uZmlnLT5iYXNlLm1vZGUuaGRpc3BsYXkgPSBwaXBl X2NvbmZpZy0+cGlwZV9zcmNfdzsKPiArCj4gKwkJYnJlYWs7Cj4gKwl9Cj4gK30KPiArCj4gICBz dGF0aWMgZW51bSBkcm1fbW9kZV9zdGF0dXMKPiAgIGludGVsX2RzaV9tb2RlX3ZhbGlkKHN0cnVj dCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gICAJCSAgICAgc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKm1vZGUpCj4gQEAgLTExNzMsNiArMTI3MCw3IEBAIHZvaWQgaW50ZWxfZHNpX2luaXQo c3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIAlpbnRlbF9lbmNvZGVyLT5wb3N0X2Rpc2FibGUg PSBpbnRlbF9kc2lfcG9zdF9kaXNhYmxlOwo+ICAgCWludGVsX2VuY29kZXItPmdldF9od19zdGF0 ZSA9IGludGVsX2RzaV9nZXRfaHdfc3RhdGU7Cj4gICAJaW50ZWxfZW5jb2Rlci0+Z2V0X2NvbmZp ZyA9IGludGVsX2RzaV9nZXRfY29uZmlnOwo+ICsJaW50ZWxfZW5jb2Rlci0+Z2V0X3BpcGVfY29u ZmlnID0gYnh0X2RzaV9nZXRfcGlwZV9jb25maWc7Cj4gICAKPiAgIAlpbnRlbF9jb25uZWN0b3It PmdldF9od19zdGF0ZSA9IGludGVsX2Nvbm5lY3Rvcl9nZXRfaHdfc3RhdGU7Cj4gICAJaW50ZWxf Y29ubmVjdG9yLT51bnJlZ2lzdGVyID0gaW50ZWxfY29ubmVjdG9yX3VucmVnaXN0ZXI7CgotLSAK VGhhbmtzLAotLVJhbQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4Cg==