From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH v2 6/7] drm/i915: write AVI infoframes for LSPCON Date: Wed, 1 Nov 2017 10:27:23 +0100 Message-ID: References: <1502261186-10417-1-git-send-email-shashank.sharma@intel.com> <1502261186-10417-7-git-send-email-shashank.sharma@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5B6E589AC6 for ; Wed, 1 Nov 2017 09:27:26 +0000 (UTC) In-Reply-To: <1502261186-10417-7-git-send-email-shashank.sharma@intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Shashank Sharma , intel-gfx@lists.freedesktop.org, ville.syrjala@linux.intel.com, imre.deak@intel.com List-Id: intel-gfx@lists.freedesktop.org T3AgMDktMDgtMTcgb20gMDg6NDYgc2NocmVlZiBTaGFzaGFuayBTaGFybWE6Cj4gVG8gcGFzcyBB VkkgaW5mb2ZyYW1lcyBmcm9tIGRpc3BsYXkgY29udHJvbGxlciB0byBMU1BDT04sIHdlCj4gaGF2 ZSB0byB3cml0ZSBpbmZvZnJhbWUgcGFja2V0cyBpbnRvIHZlbmRvciBzcGVjaWZpZWQgQVVYIGFk ZHJlc3MsCj4gaW4gdmVuZG9yIHNwZWNpZmllZCB3YXkuCj4KPiBBbHNvLCBMU1BDT04gdmVuZG9y cyBwcm92aWRlIEFVWCBvZmZzZXRzLCB0byBpbmZvcm0gdGhlIExTUENPTgo+IGNoaXAgdGhhdCB0 aGUgQVZJIElGIHBhY2tldHMgYXJlIHdyaXR0ZW4sIHNvIHRoYXQgdGhlIGZpcm13YXJlCj4gY2Fu IHBpY2sgaXQgdXAgYW5kIGFwcGx5Lgo+Cj4gVGhpcyBwYXRjaCBhZGRzIGZ1bmN0aW9uIHRvIHdy aXRlIEFWSSBpbmZvZnJhbWVzIGZvciBib3RoIE1DQSBhcwo+IHdlbGwgYXMgUGFyYWRlIFRlY2gg TFNQQ09OIGNoaXBzLiBUaGVzZSB0d28gdmVuZG9ycyBwcm92aWRlIGRpZmZlcmVudAo+IG1ldGhv ZHMgZm9yIHdyaXRpbmcgaW5mb2ZyYW1lcywgc28gdGhpcyBwYXRjaCBjb250YWlucyB0d28gZGlm ZmVyZW50Cj4gZnVuY3Rpb25zLCBvbmUgZm9yIGVhY2guCj4KPiBWMjogUmViYXNlCj4KPiBDYzog VmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiBDYzogSW1y ZSBEZWFrIDxpbXJlLmRlYWtAaW50ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IFNoYXNoYW5rIFNo YXJtYSA8c2hhc2hhbmsuc2hhcm1hQGludGVsLmNvbT4KPiAtLS0KVGhpcyBwYXRjaCB3aWxsIGZh aWwgdG8gY29tcGlsZSB3aXRob3V0IDcvNyBhcHBsaWVkOgotIGVuY190b19pbnRlbF9sc3Bjb24g bWlzc2luZy4KLSBjcnRjX3N0YXRlLT5sc3Bjb25fYWN0aXZlIG1pc3NpbmcuCgo+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyAgICB8ICAxMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcnYuaCAgICB8ICAxNiArKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfaGRtaS5jICAgfCAgMTUgKystCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xzcGNv bi5jIHwgMjQ2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICA0IGZpbGVz IGNoYW5nZWQsIDI4NCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGRpLmMKPiBpbmRleCA5Mzg0MDgwLi4wOGYzNTY3IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGRpLmMKPiBAQCAtMjE5Myw2ICsyMTkzLDE1IEBAIHN0YXRpYyB2b2lkIGludGVs X2RkaV9wcmVfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJCQkJCXBp cGVfY29uZmlnLT5zaGFyZWRfZHBsbCwKPiAgCQkJCQlpbnRlbF9jcnRjX2hhc190eXBlKHBpcGVf Y29uZmlnLAo+ICAJCQkJCQkJICAgIElOVEVMX09VVFBVVF9EUF9NU1QpKTsKPiArCj4gKwkJaWYg KHBpcGVfY29uZmlnLT5sc3Bjb25fYWN0aXZlKSB7Cj4gKwkJCXN0cnVjdCBpbnRlbF9kaWdpdGFs X3BvcnQgKmRpZ19wb3J0ID0KPiArCQkJCQllbmNfdG9fZGlnX3BvcnQoJmVuY29kZXItPmJhc2Up Owo+ICsKPiArCQkJZGlnX3BvcnQtPnNldF9pbmZvZnJhbWVzKCZlbmNvZGVyLT5iYXNlLAo+ICsJ CQkJIHBpcGVfY29uZmlnLT5oYXNfaW5mb2ZyYW1lLAo+ICsJCQkJIHBpcGVfY29uZmlnLCBjb25u X3N0YXRlKTsKPiArCQl9Cj4gIAl9Cj4gIAlpZiAodHlwZSA9PSBJTlRFTF9PVVRQVVRfSERNSSkg ewo+ICAJCWludGVsX2RkaV9wcmVfZW5hYmxlX2hkbWkoZW5jb2RlciwKPiBAQCAtMjczNCw4ICsy NzQzLDYgQEAgdm9pZCBpbnRlbF9kZGlfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsIGVudW0gcG9ydCBwb3J0KQo+ICAJaW50ZWxfZW5jb2Rlci0+Y3J0Y19tYXNrID0gKDEg PDwgMCkgfCAoMSA8PCAxKSB8ICgxIDw8IDIpOwo+ICAJaW50ZWxfZW5jb2Rlci0+Y2xvbmVhYmxl ID0gMDsKPiAgCj4gLQlpbnRlbF9pbmZvZnJhbWVfaW5pdChpbnRlbF9kaWdfcG9ydCk7Cj4gLQo+ ICAJaWYgKGluaXRfZHApIHsKPiAgCQlpZiAoIWludGVsX2RkaV9pbml0X2RwX2Nvbm5lY3Rvcihp bnRlbF9kaWdfcG9ydCkpCj4gIAkJCWdvdG8gZXJyOwo+IEBAIC0yNzY1LDYgKzI3NzIsNyBAQCB2 b2lkIGludGVsX2RkaV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51 bSBwb3J0IHBvcnQpCj4gIAkJCQlwb3J0X25hbWUocG9ydCkpOwo+ICAJfQo+ICAKPiArCWludGVs X2luZm9mcmFtZV9pbml0KGludGVsX2RpZ19wb3J0KTsKPiAgCXJldHVybjsKPiAgCj4gIGVycjoK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IGluZGV4IGFkYWI2MzUuLjk5ZWFhYjYgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IEBAIC0xMDUyLDYgKzEwNTIsMTAgQEAgc3RydWN0 IGludGVsX2xzcGNvbiB7Cj4gIAlib29sIGFjdGl2ZTsKPiAgCWVudW0gZHJtX2xzcGNvbl9tb2Rl IG1vZGU7Cj4gIAllbnVtIGxzcGNvbl92ZW5kb3IgdmVuZG9yOwo+ICsKPiArCXZvaWQgKCp3cml0 ZV9pbmZvZnJhbWUpKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKPiArCQkJCWNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICsJCQkJdW5pb24gaGRtaV9pbmZv ZnJhbWUgKmZyYW1lKTsKPiAgfTsKPiAgCj4gIHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgewo+ IEBAIC0xOTc4LDYgKzE5ODIsMTggQEAgdm9pZCBpbnRlbF9jb2xvcl9sb2FkX2x1dHMoc3RydWN0 IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKPiAgYm9vbCBsc3Bjb25faW5pdChzdHJ1Y3Qg aW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCk7Cj4gIHZvaWQgbHNwY29uX3Jlc3Vt ZShzdHJ1Y3QgaW50ZWxfbHNwY29uICpsc3Bjb24pOwo+ICB2b2lkIGxzcGNvbl93YWl0X3Bjb25f bW9kZShzdHJ1Y3QgaW50ZWxfbHNwY29uICpsc3Bjb24pOwo+ICtib29sIGxzcGNvbl95Y2JjcjQy MF9jb25maWcoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiArCQkJICAgICBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY29uZmlnKTsKPiArdm9pZCBsc3Bjb25fd3JpdGVfaW5mb2Zy YW1lKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKPiArCQkJICAgIGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICsJCQkgICAgZW51bSBoZG1pX2luZm9mcmFt ZV90eXBlIHR5cGUsCj4gKwkJCSAgICBjb25zdCB2b2lkICpidWYsIHNzaXplX3QgbGVuKTsKPiAr dm9pZCBsc3Bjb25fc2V0X2luZm9mcmFtZXMoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAo+ ICsJCQkgICBib29sIGVuYWJsZSwKPiArCQkJICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUsCj4gKwkJCSAgIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRl ICpjb25uX3N0YXRlKTsKPiArYm9vbCBsc3Bjb25faW5mb2ZyYW1lX2VuYWJsZWQoc3RydWN0IGRy bV9lbmNvZGVyICplbmNvZGVyLAo+ICsJCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqcGlwZV9jb25maWcpOwo+ICAKPiAgLyogaW50ZWxfcGlwZV9jcmMuYyAqLwo+ICBpbnQg aW50ZWxfcGlwZV9jcmNfY3JlYXRlKHN0cnVjdCBkcm1fbWlub3IgKm1pbm9yKTsKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfaGRtaS5jCj4gaW5kZXggZTRhMjdlMS4uNTcxMDAyOSAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9oZG1pLmMKPiBAQCAtMTkwOSw5ICsxOTA5LDE4IEBAIHZvaWQgaW50ZWxf aW5mb2ZyYW1lX2luaXQoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQp Cj4gIAkJaW50ZWxfZGlnX3BvcnQtPnNldF9pbmZvZnJhbWVzID0gZzR4X3NldF9pbmZvZnJhbWVz Owo+ICAJCWludGVsX2RpZ19wb3J0LT5pbmZvZnJhbWVfZW5hYmxlZCA9IGc0eF9pbmZvZnJhbWVf ZW5hYmxlZDsKPiAgCX0gZWxzZSBpZiAoSEFTX0RESShkZXZfcHJpdikpIHsKPiAtCQlpbnRlbF9k aWdfcG9ydC0+d3JpdGVfaW5mb2ZyYW1lID0gaHN3X3dyaXRlX2luZm9mcmFtZTsKPiAtCQlpbnRl bF9kaWdfcG9ydC0+c2V0X2luZm9mcmFtZXMgPSBoc3dfc2V0X2luZm9mcmFtZXM7Cj4gLQkJaW50 ZWxfZGlnX3BvcnQtPmluZm9mcmFtZV9lbmFibGVkID0gaHN3X2luZm9mcmFtZV9lbmFibGVkOwo+ ICsJCWlmIChpbnRlbF9kaWdfcG9ydC0+bHNwY29uLmFjdGl2ZSkgewo+ICsJCQlpbnRlbF9kaWdf cG9ydC0+d3JpdGVfaW5mb2ZyYW1lID0KPiArCQkJCQkJbHNwY29uX3dyaXRlX2luZm9mcmFtZTsK PiArCQkJaW50ZWxfZGlnX3BvcnQtPnNldF9pbmZvZnJhbWVzID0gbHNwY29uX3NldF9pbmZvZnJh bWVzOwo+ICsJCQlpbnRlbF9kaWdfcG9ydC0+aW5mb2ZyYW1lX2VuYWJsZWQgPQo+ICsJCQkJCQls c3Bjb25faW5mb2ZyYW1lX2VuYWJsZWQ7Cj4gKwkJfSBlbHNlIHsKPiArCQkJaW50ZWxfZGlnX3Bv cnQtPnNldF9pbmZvZnJhbWVzID0gaHN3X3NldF9pbmZvZnJhbWVzOwo+ICsJCQlpbnRlbF9kaWdf cG9ydC0+aW5mb2ZyYW1lX2VuYWJsZWQgPQo+ICsJCQkJCQloc3dfaW5mb2ZyYW1lX2VuYWJsZWQ7 Cj4gKwkJCWludGVsX2RpZ19wb3J0LT53cml0ZV9pbmZvZnJhbWUgPSBoc3dfd3JpdGVfaW5mb2Zy YW1lOwo+ICsJCX0KPiAgCX0gZWxzZSBpZiAoSEFTX1BDSF9JQlgoZGV2X3ByaXYpKSB7Cj4gIAkJ aW50ZWxfZGlnX3BvcnQtPndyaXRlX2luZm9mcmFtZSA9IGlieF93cml0ZV9pbmZvZnJhbWU7Cj4g IAkJaW50ZWxfZGlnX3BvcnQtPnNldF9pbmZvZnJhbWVzID0gaWJ4X3NldF9pbmZvZnJhbWVzOwo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9sc3Bjb24uYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2xzcGNvbi5jCj4gaW5kZXggOTM1MDdjNS4uYjRmY2QzMCAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9sc3Bjb24uYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xzcGNvbi5jCj4gQEAgLTMxLDYgKzMxLDE4IEBA Cj4gICNkZWZpbmUgTFNQQ09OX1ZFTkRPUl9QQVJBREVfT1VJIDB4MDAxQ0Y4Cj4gICNkZWZpbmUg TFNQQ09OX1ZFTkRPUl9NQ0FfT1VJIDB4MDA2MEFECj4gIAo+ICsvKiBBVVggYWRkcmVzc2VzIHRv IHdyaXRlIEFWSSBJRiBpbnRvICovCj4gKyNkZWZpbmUgTFNQQ09OX01DQV9BVklfSUZfV1JJVEVf T0ZGU0VUIDB4NUMwCj4gKyNkZWZpbmUgTFNQQ09OX01DQV9BVklfSUZfQ1RSTCAweDVERgo+ICsj ZGVmaW5lICBMU1BDT05fTUNBX0FWSV9JRl9LSUNLT0ZGICgxIDw8IDApCj4gKyNkZWZpbmUgIExT UENPTl9NQ0FfQVZJX0lGX0hBTkRMRUQgKDEgPDwgMSkKPiArCj4gKyNkZWZpbmUgTFNQQ09OX1BB UkFERV9BVklfSUZfV1JJVEVfT0ZGU0VUIDB4NTE2Cj4gKyNkZWZpbmUgTFNQQ09OX1BBUkFERV9B VklfSUZfQ1RSTCAweDUxRQo+ICsjZGVmaW5lICBMU1BDT05fUEFSQURFX0FWSV9JRl9LSUNLT0ZG ICgxIDw8IDcpCj4gKyNkZWZpbmUgTFNQQ09OX1BBUkFERV9BVklfSUZfU1RBVFVTIDB4NTFGCj4g KyNkZWZpbmUgIExTUENPTl9QQVJBREVfQVZJX0lGX0hBTkRMRUQgKDIgPDwgNikKPiArCj4gIHN0 YXRpYyBzdHJ1Y3QgaW50ZWxfZHAgKmxzcGNvbl90b19pbnRlbF9kcChzdHJ1Y3QgaW50ZWxfbHNw Y29uICpsc3Bjb24pCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0 ID0KPiBAQCAtMjI3LDYgKzIzOSwyNDAgQEAgc3RhdGljIHZvaWQgbHNwY29uX3Jlc3VtZV9pbl9w Y29uX3dhKHN0cnVjdCBpbnRlbF9sc3Bjb24gKmxzcGNvbikKPiAgCURSTV9ERUJVR19LTVMoIkxT UENPTiBEUCBkZXNjcmlwdG9yIG1pc21hdGNoIGFmdGVyIHJlc3VtZVxuIik7Cj4gIH0KPiAgCj4g K2Jvb2wgbHNwY29uX3ljYmNyNDIwX2NvbmZpZyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVj dG9yLAo+ICsJCQkgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjb25maWcpCj4gK3sKPiAr CXN0cnVjdCBkcm1fZGlzcGxheV9pbmZvICppbmZvID0gJmNvbm5lY3Rvci0+ZGlzcGxheV9pbmZv Owo+ICsJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUgPSAmY29uZmlnLT5iYXNlLmFkanVz dGVkX21vZGU7Cj4gKwo+ICsJaWYgKGRybV9tb2RlX2lzXzQyMF9vbmx5KGluZm8sIG1vZGUpKSB7 Cj4gKwo+ICsJCWlmICghY29ubmVjdG9yLT55Y2Jjcl80MjBfYWxsb3dlZCkgewo+ICsJCQlEUk1f RVJST1IoIlBsYXRmb3JtIGRvZXNuJ3Qgc3VwcG9ydCBZQ0JDUjQyMCBvdXRwdXRcbiIpOwo+ICsJ CQlyZXR1cm4gZmFsc2U7Cj4gKwkJfQo+ICsKPiArCQljb25maWctPnBvcnRfY2xvY2sgLz0gMjsK PiArCQlyZXR1cm4gdHJ1ZTsKPiArCX0KPiArCj4gKwlyZXR1cm4gZmFsc2U7Cj4gK30KPiArCj4g K3N0YXRpYyBib29sIF9sc3Bjb25fd3JpdGVfYXZpX2luZm9mcmFtZV9wYXJhZGUoc3RydWN0IGRy bV9kcF9hdXggKmF1eCwKPiArCQkJCQkgICAgICAgY29uc3QgdWludDhfdCAqYnVmZmVyLAo+ICsJ CQkJCSAgICAgICBzc2l6ZV90IGxlbikKPiArewo+ICsJdTggYXZpX2lmX2N0cmw7Cj4gKwl1OCBh dmlfaWZfc3RhdHVzOwo+ICsJdTggY291bnQgPSAwOwo+ICsJdTggcmV0cnkgPSA1Owo+ICsJdTgg YXZpX2J1Zls4XSA9IHswLCB9OwpJbml0aWFsaXplIHRoZSBmaXJzdCBieXRlIHRvIDEsIGFuZCB5 b3UgY2FuIHJlbW92ZSB0aGUgc3BlY2lhbCBjYXNlIGZvciBjb3VudCA9PSAwPwo+ICsJdWludDE2 X3QgcmVnOwo+ICsJc3NpemVfdCByZXQ7Cj4gKwo+ICsJd2hpbGUgKGNvdW50KysgPCA0KSB7Cj4g Kwo+ICsJCWRvIHsKPiArCQkJLyogSXMgTFNQQ09OIEZXIHJlYWR5ICovCj4gKwkJCXJlZyA9IExT UENPTl9QQVJBREVfQVZJX0lGX0NUUkw7Cj4gKwkJCXJldCA9IGRybV9kcF9kcGNkX3JlYWQoYXV4 LCByZWcsICZhdmlfaWZfY3RybCwgMSk7Cj4gKwkJCWlmIChyZXQgPCAwKSB7Cj4gKwkJCQlEUk1f RVJST1IoIkRQQ0QgcmVhZCBmYWlsZWQsIGFkZDoweCV4XG4iLCByZWcpOwo+ICsJCQkJcmV0dXJu IGZhbHNlOwo+ICsJCQl9Cj4gKwo+ICsJCQlpZiAoYXZpX2lmX2N0cmwgJiBMU1BDT05fUEFSQURF X0FWSV9JRl9LSUNLT0ZGKQo+ICsJCQkJYnJlYWs7Cj4gKwkJCXVzbGVlcF9yYW5nZSgxMDAsIDIw MCk7Cj4gKwkJfSB3aGlsZSAoLS1yZXRyeSk7Cj4gKwo+ICsJCWlmICghKGF2aV9pZl9jdHJsICYg TFNQQ09OX1BBUkFERV9BVklfSUZfS0lDS09GRikpIHsKPiArCQkJRFJNX0VSUk9SKCJMU1BDT04g Rlcgbm90IHJlYWR5IGZvciBpbmZvZnJhbWVzXG4iKTsKPiArCQkJcmV0dXJuIGZhbHNlOwo+ICsJ CX0KPiArCj4gKwkJLyoKPiArCQkgKiBBVkkgSW5mb2ZyYW1lIGNvbnRhaW5zIDMxIGJ5dGVzIG9m IGRhdGE6Cj4gKwkJICoJSEIwIHRvIEhCMiAgICgzIGJ5dGVzIGhlYWRlcikKPiArCQkgKglQQjAg dG8gUEIyNyAoMjggYnl0ZXMgZGF0YSkKPiArCQkgKiBBcyBwZXIgUGFyYWRlIHNwZWMsIHdoaWxl IHNlbmRpbmcgZmlyc3QgYmxvY2sgKDhieXRlcyksCj4gKwkJICogYnl0ZSAwIGlzIGtlcHQgZm9y IHJlcXVlc3QgdG9rZW4gbm8sIGFuZCBieXRlMSAtIGJ5dGU3Cj4gKwkJICogY29udGFpbiBmcmFt ZSBkYXRhLiBTbyB3ZSBoYXZlIHRvIHBhY2sgZnJhbWUgbGlrZSB0aGlzOgo+ICsJCSAqCWZpcnN0 IGJsb2NrIG9mIDggYnl0ZXM6IDx0b2tlbj4gPEhCMC1IQjI+IDxQQjAtUEIzPgo+ICsJCSAqCW5l eHQgMyBibG9ja3M6IDxQQjQtUEIyNz4KPiArCQkgKi8KPiArCQlpZiAoY291bnQpCj4gKwkJCW1l bWNweShhdmlfYnVmLCBidWZmZXIgKyBjb3VudCAqIDggLSAxLCA4KTsKPiArCQllbHNlIHsKPiAr CQkJYXZpX2J1ZlswXSA9IDE7Cj4gKwkJCW1lbWNweSgmYXZpX2J1ZlsxXSwgYnVmZmVyLCA3KTsK PiArCQl9Cl5UaGlzIHdvbid0IHdvcmssIEkgdGhpbmsuCgpmb3IgKGNvdW50ID0gMDsgY291bnQg PCA0OyBjb3VudCsrKQo+ICsKPiArCQkvKiBXcml0ZSA4IGJ5dGVzIG9mIGRhdGEgYXQgYSB0aW1l ICovCj4gKwkJcmVnID0gTFNQQ09OX1BBUkFERV9BVklfSUZfV1JJVEVfT0ZGU0VUOwo+ICsJCXJl dCA9IGRybV9kcF9kcGNkX3dyaXRlKGF1eCwgcmVnLCBhdmlfYnVmLCA4KTsKPiArCQlpZiAocmV0 IDwgMCkgewo+ICsJCQlEUk1fRVJST1IoIkRQQ0Qgd3JpdGUgZmFpbGVkLCBhZGQ6MHgleFxuIiwg cmVnKTsKPiArCQkJcmV0dXJuIGZhbHNlOwo+ICsJCX0KPiArCj4gKwkJLyoKPiArCQkgKiBXaGls ZSBzZW5kaW5nIGEgYmxvY2sgb2YgOCBieWVzLCB3ZSBuZWVkIHRvIGluZm9ybSBibG9jawo+ICsJ CSAqIG51bWJlciB0byBGVywgYnkgcHJvZ3JhbW1pbmcgYml0c1sxOjBdIG9mIGN0cmwgcmVnIHdp dGgKPiArCQkgKiBibG9jayBudW1iZXIKPiArCQkgKi8KPiArCQlhdmlfaWZfY3RybCA9IDB4ODAg KyBjb3VudDsKPiArCQlyZWcgPSBMU1BDT05fUEFSQURFX0FWSV9JRl9DVFJMOwo+ICsJCXJldCA9 IGRybV9kcF9kcGNkX3dyaXRlKGF1eCwgcmVnLCAmYXZpX2lmX2N0cmwsIDEpOwo+ICsJCWlmIChy ZXQgPCAwKSB7Cj4gKwkJCURSTV9FUlJPUigiRFBDRCB3cml0ZSBmYWlsZWQsIGFkZDoweCV4XG4i LCByZWcpOwo+ICsJCQlyZXR1cm4gZmFsc2U7Cj4gKwkJfQo+ICsJfQo+ICsKPiArCS8qIENoZWNr IExTUENPTiBGVyBzdGF0dXMgKi8KPiArCXJlZyA9IExTUENPTl9QQVJBREVfQVZJX0lGX1NUQVRV UzsKPiArCXJldCA9IGRybV9kcF9kcGNkX3JlYWQoYXV4LCByZWcsICZhdmlfaWZfc3RhdHVzLCAx KTsKPiArCWlmIChyZXQgPCAwKSB7Cj4gKwkJRFJNX0VSUk9SKCJEUENEIHdyaXRlIGZhaWxlZCwg YWRkcmVzcyAweCV4XG4iLCByZWcpOwo+ICsJCXJldHVybiBmYWxzZTsKPiArCX0KPiArCj4gKwlp ZiAoYXZpX2lmX3N0YXR1cyAmIExTUENPTl9QQVJBREVfQVZJX0lGX0hBTkRMRUQpCj4gKwkJRFJN X0RFQlVHX0tNUygiQVZJIElGIGhhbmRsZWQgYnkgRldcbiIpOwp5b3Ugc2hvdWxkIGNoZWNrIGZv ciAoYXZpX2lmX3N0YXR1cyAmIEFWSV9JRl9TVEFUVVNfTUFTSykgPT0gSUZfSEFORExFRCwKYWZh aWN0IGZyb20gc3BlY3MsIGlmIHRoZSBzdGF0dXMgY29tcGxldGVzIHdpdGggYW4gZXJyb3IsIHlv dSBzdGlsbCByZXBvcnQgc3VjY2VzcyBoZXJlLgoKPiArCXJldHVybiB0cnVlOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgYm9vbCBfbHNwY29uX3dyaXRlX2F2aV9pbmZvZnJhbWVfbWNhKHN0cnVjdCBkcm1f ZHBfYXV4ICphdXgsCj4gKwkJCQkJICAgIGNvbnN0IHVpbnQ4X3QgKmJ1ZmZlciwgc3NpemVfdCBs ZW4pCj4gK3sKPiArCWludCByZXQ7Cj4gKwl1aW50MzJfdCB2YWwgPSAwOwo+ICsJdWludDE2X3Qg cmVnOwo+ICsJY29uc3QgdWludDhfdCAqZGF0YSA9IGJ1ZmZlcjsKPiArCj4gKwlyZWcgPSBMU1BD T05fTUNBX0FWSV9JRl9XUklURV9PRkZTRVQ7Cj4gKwl3aGlsZSAodmFsIDwgbGVuKSB7Cj4gKwkJ cmV0ID0gZHJtX2RwX2RwY2Rfd3JpdGUoYXV4LCByZWcsICh2b2lkICopZGF0YSwgMSk7Cj4gKwkJ aWYgKHJldCA8IDApIHsKPiArCQkJRFJNX0VSUk9SKCJEUENEIHdyaXRlIGZhaWxlZCwgYWRkOjB4 JXhcbiIsIHJlZyk7Cj4gKwkJCXJldHVybiBmYWxzZTsKPiArCQl9Cj4gKwkJdmFsKys7IHJlZysr OyBkYXRhKys7Cj4gKwl9Cj4gKwo+ICsJdmFsID0gMDsKPiArCXJlZyA9IExTUENPTl9NQ0FfQVZJ X0lGX0NUUkw7Cj4gKwlyZXQgPSBkcm1fZHBfZHBjZF9yZWFkKGF1eCwgcmVnLCAmdmFsLCAxKTsK PiArCWlmIChyZXQgPCAwKSB7Cj4gKwkJRFJNX0VSUk9SKCJEUENEIHJlYWQgZmFpbGVkLCBhZGRy ZXNzIDB4JXhcbiIsIHJlZyk7Cj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsJfQo+ICsKPiArCS8qIElu ZGljYXRlIExTUENPTiBjaGlwIGFib3V0IGluZm9mcmFtZSwgY2xlYXIgYml0IDEgYW5kIHNldCBi aXQgMCAqLwo+ICsJdmFsICY9IH5MU1BDT05fTUNBX0FWSV9JRl9IQU5ETEVEOwo+ICsJdmFsIHw9 IExTUENPTl9NQ0FfQVZJX0lGX0tJQ0tPRkY7Cj4gKwo+ICsJcmV0ID0gZHJtX2RwX2RwY2Rfd3Jp dGUoYXV4LCByZWcsICZ2YWwsIDEpOwo+ICsJaWYgKHJldCA8IDApIHsKPiArCQlEUk1fRVJST1Io IkRQQ0QgcmVhZCBmYWlsZWQsIGFkZHJlc3MgMHgleFxuIiwgcmVnKTsKPiArCQlyZXR1cm4gZmFs c2U7Cj4gKwl9Cj4gKwo+ICsJdmFsID0gMDsKPiArCXJldCA9IGRybV9kcF9kcGNkX3JlYWQoYXV4 LCByZWcsICZ2YWwsIDEpOwo+ICsJaWYgKHJldCA8IDApIHsKPiArCQlEUk1fRVJST1IoIkRQQ0Qg cmVhZCBmYWlsZWQsIGFkZHJlc3MgMHgleFxuIiwgcmVnKTsKPiArCQlyZXR1cm4gZmFsc2U7Cj4g Kwl9Cj4gKwo+ICsJaWYgKHZhbCA9PSBMU1BDT05fTUNBX0FWSV9JRl9IQU5ETEVEKQo+ICsJCURS TV9ERUJVR19LTVMoIkFWSSBJRiBoYW5kbGVkIGJ5IEZXXG4iKTsKPiArCj4gKwlyZXR1cm4gdHJ1 ZTsKPiArfQo+ICsKPiArdm9pZCBsc3Bjb25fd3JpdGVfaW5mb2ZyYW1lKHN0cnVjdCBkcm1fZW5j b2RlciAqZW5jb2RlciwKPiArCQkJICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAo+ICsJCQkgICAgZW51bSBoZG1pX2luZm9mcmFtZV90eXBlIHR5cGUsCj4gKwkJ CSAgICBjb25zdCB2b2lkICpmcmFtZSwgc3NpemVfdCBsZW4pCj4gK3sKPiArCWJvb2wgcmV0Owo+ ICsJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcChlbmNvZGVyKTsK PiArCXN0cnVjdCBpbnRlbF9sc3Bjb24gKmxzcGNvbiA9IGVuY190b19pbnRlbF9sc3Bjb24oZW5j b2Rlcik7Cj4gKwo+ICsJLyogTFNQQ09OIG9ubHkgbmVlZHMgQVZJIElGICovCj4gKwlpZiAodHlw ZSAhPSBIRE1JX0lORk9GUkFNRV9UWVBFX0FWSSkKPiArCQlyZXR1cm47Cj4gKwo+ICsJaWYgKGxz cGNvbi0+dmVuZG9yID09IExTUENPTl9WRU5ET1JfTUNBKQo+ICsJCXJldCA9IF9sc3Bjb25fd3Jp dGVfYXZpX2luZm9mcmFtZV9tY2EoJmludGVsX2RwLT5hdXgsCj4gKwkJCQkJCSAgICAgIGZyYW1l LCBsZW4pOwo+ICsJZWxzZQo+ICsJCXJldCA9IF9sc3Bjb25fd3JpdGVfYXZpX2luZm9mcmFtZV9w YXJhZGUoJmludGVsX2RwLT5hdXgsCj4gKwkJCQkJCQkgZnJhbWUsIGxlbik7Cj4gKwo+ICsJaWYg KCFyZXQpCj4gKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gd3JpdGUgQVZJIGluZm9mcmFtZXNcbiIp OwpXZWxsLCBib3RoIGluZm9mcmFtZSB3cml0ZSBmdW5jdGlvbnMgYWxyZWFkeSByZXBvcnQgYSBE Uk1fRVJST1IsIHRoaXMgcHJpbnQgY291bGQgYmUgbG93ZXIgb3IgcmVtb3ZlZC4gOikKPiArCWVs c2UKPiArCQlEUk1fREVCVUdfRFJJVkVSKCJBVkkgaW5mb2ZyYW1lcyB1cGRhdGVkIHN1Y2Nlc3Nm dWxseVxuIik7Cj4gK30KPiArCj4gK3ZvaWQgbHNwY29uX3NldF9pbmZvZnJhbWVzKHN0cnVjdCBk cm1fZW5jb2RlciAqZW5jb2RlciwKPiArCQkJICAgYm9vbCBlbmFibGUsCj4gKwkJCSAgIGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICsJCQkgICBjb25zdCBzdHJ1 Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkKPiArewo+ICsJc3NpemVfdCByZXQ7 Cj4gKwl1bmlvbiBoZG1pX2luZm9mcmFtZSBmcmFtZTsKPiArCXVpbnQ4X3QgYnVmW1ZJREVPX0RJ UF9EQVRBX1NJWkVdOwo+ICsJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQgPSBl bmNfdG9fZGlnX3BvcnQoZW5jb2Rlcik7Cj4gKwlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0g JmRpZ19wb3J0LT5kcDsKPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IgPSAmaW50 ZWxfZHAtPmF0dGFjaGVkX2Nvbm5lY3Rvci0+YmFzZTsKPiArCWNvbnN0IHN0cnVjdCBkcm1fZGlz cGxheV9tb2RlICptb2RlID0gJmNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZTsKPiArCWJv b2wgaXNfaGRtaTJfc2luayA9IGNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLmhkbWkuc2NkYy5zdXBw b3J0ZWQ7Cj4gKwo+ICsJaWYgKCFjcnRjX3N0YXRlLT5sc3Bjb25fYWN0aXZlKSB7Cj4gKwkJRFJN X0VSUk9SKCJXcml0aW5nIGluZm9mcmFtZXMgd2hpbGUgTFNQQ09OIGRpc2FibGVkID9cbiIpOwo+ ICsJCXJldHVybjsKPiArCX0KPiArCj4gKwlyZXQgPSBkcm1faGRtaV9hdmlfaW5mb2ZyYW1lX2Zy b21fZGlzcGxheV9tb2RlKCZmcmFtZS5hdmksCj4gKwkJCQkJCSAgICAgICBtb2RlLCBpc19oZG1p Ml9zaW5rKTsKPiArCWlmIChyZXQgPCAwKSB7Cj4gKwkJRFJNX0VSUk9SKCJjb3VsZG4ndCBmaWxs IEFWSSBpbmZvZnJhbWVcbiIpOwo+ICsJCXJldHVybjsKPiArCX0KPiArCj4gKwlpZiAoY3J0Y19z dGF0ZS0+eWNiY3I0MjApCj4gKwkJZnJhbWUuYXZpLmNvbG9yc3BhY2UgPSBIRE1JX0NPTE9SU1BB Q0VfWVVWNDIwOwo+ICsJZWxzZQo+ICsJCWZyYW1lLmF2aS5jb2xvcnNwYWNlID0gSERNSV9DT0xP UlNQQUNFX1JHQjsKPiArCj4gKwlkcm1faGRtaV9hdmlfaW5mb2ZyYW1lX3F1YW50X3JhbmdlKCZm cmFtZS5hdmksIG1vZGUsCj4gKwkJCQkJICAgY3J0Y19zdGF0ZS0+bGltaXRlZF9jb2xvcl9yYW5n ZSA/Cj4gKwkJCQkJICAgSERNSV9RVUFOVElaQVRJT05fUkFOR0VfTElNSVRFRCA6Cj4gKwkJCQkJ ICAgSERNSV9RVUFOVElaQVRJT05fUkFOR0VfRlVMTCwKPiArCQkJCQkgICBmYWxzZSk7Cj4gKwo+ ICsJcmV0ID0gaGRtaV9pbmZvZnJhbWVfcGFjaygmZnJhbWUsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOwo+ ICsJaWYgKHJldCA8IDApIHsKPiArCQlEUk1fRVJST1IoIkZhaWxlZCB0byBwYWNrIEFWSSBJRlxu Iik7CkluIGdlbmVyYWwsIGl0IHdvdWxkIGJlIG5pY2UgaWYgd2UgYWxzbyBnZXQgdGhlIHJldHVy bmVkIGVycm9yIGNvZGUgZm9yIGRlYnVnZ2luZy4gOikKPiArCQlyZXR1cm47Cj4gKwl9Cj4gKwo+ ICsJZGlnX3BvcnQtPndyaXRlX2luZm9mcmFtZShlbmNvZGVyLCBjcnRjX3N0YXRlLCBIRE1JX0lO Rk9GUkFNRV9UWVBFX0FWSSwKPiArCQkJCSAgYnVmLCByZXQpOwo+ICt9Cj4gKwo+ICtib29sIGxz cGNvbl9pbmZvZnJhbWVfZW5hYmxlZChzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCj4gKwkJ CSAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZykKPiArewo+ ICsJcmV0dXJuIGVuY190b19pbnRlbF9sc3Bjb24oZW5jb2RlciktPmFjdGl2ZTsKPiArfQo+ICsK PiAgdm9pZCBsc3Bjb25fcmVzdW1lKHN0cnVjdCBpbnRlbF9sc3Bjb24gKmxzcGNvbikKPiAgewo+ ICAJZW51bSBkcm1fbHNwY29uX21vZGUgZXhwZWN0ZWRfbW9kZTsKCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK