From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 14/18] drm/i915: Read out HDMI infoframes Date: Mon, 24 Sep 2018 19:52:55 +0300 Message-ID: <20180924165255.GT5565@intel.com> References: <20180920185145.1912-1-ville.syrjala@linux.intel.com> <20180920185145.1912-15-ville.syrjala@linux.intel.com> <20180924160809.GA11082@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20180924160809.GA11082@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gTW9uLCBTZXAgMjQsIDIwMTggYXQgMDY6MDg6MDlQTSArMDIwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBUaHUsIFNlcCAyMCwgMjAxOCBhdCAwOTo1MTo0MVBNICswMzAwLCBWaWxsZSBT eXJqYWxhIHdyb3RlOgo+ID4gRnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxp bnV4LmludGVsLmNvbT4KPiA+IAo+ID4gQWRkIGNvZGUgdG8gcmVhZCB0aGUgaW5mb2ZyYW1lcyBm cm9tIHRoZSB2aWRlbyBESVAgYW5kIHVucGFjayB0aGVtIGludG8KPiA+IHRoZSBjcnRjIHN0YXRl Lgo+ID4gCj4gPiBTaWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFA bGludXguaW50ZWwuY29tPgo+ID4gLS0tCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGRpLmMgIHwgIDE3ICsrKysKPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAg fCAgMTAgKysKPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMgfCAyMDMgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiA+ICAzIGZpbGVzIGNoYW5nZWQs IDIzMCBpbnNlcnRpb25zKCspCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kZGkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gPiBp bmRleCA1ZjNiZDUzNmQyNjEuLmE1NjI4OWY3ODMyNiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kZGkuYwo+ID4gQEAgLTM0NTksNiArMzQ1OSwyMyBAQCB2b2lkIGludGVsX2RkaV9nZXRf Y29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gIAkJCWJ4dF9kZGlfcGh5 X2dldF9sYW5lX2xhdF9vcHRpbV9tYXNrKGVuY29kZXIpOwo+ID4gIAo+ID4gIAlpbnRlbF9kZGlf Y29tcHV0ZV9taW5fdm9sdGFnZV9sZXZlbChkZXZfcHJpdiwgcGlwZV9jb25maWcpOwo+ID4gKwo+ ID4gKwlpbnRlbF9oZG1pX3JlYWRfZ2NwX2luZm9mcmFtZShlbmNvZGVyLCBwaXBlX2NvbmZpZyk7 Cj4gPiArCj4gPiArCWlmICghaW50ZWxfcmVhZF9pbmZvZnJhbWUoZW5jb2RlciwgcGlwZV9jb25m aWcsCj4gPiArCQkJCSAgSERNSV9JTkZPRlJBTUVfVFlQRV9BVkksCj4gPiArCQkJCSAgJnBpcGVf Y29uZmlnLT5pbmZvZnJhbWVzLmF2aSkpCj4gPiArCQlEUk1fRVJST1IoImZhaWxlZCB0byByZWFk IEFWSSBpbmZvZnJhbWVcbiIpOwo+ID4gKwo+ID4gKwlpZiAoIWludGVsX3JlYWRfaW5mb2ZyYW1l KGVuY29kZXIsIHBpcGVfY29uZmlnLAo+ID4gKwkJCQkgIEhETUlfSU5GT0ZSQU1FX1RZUEVfU1BE LAo+ID4gKwkJCQkgICZwaXBlX2NvbmZpZy0+aW5mb2ZyYW1lcy5zcGQpKQo+ID4gKwkJRFJNX0VS Uk9SKCJmYWlsZWQgdG8gcmVhZCBTUEQgaW5mb2ZyYW1lOlxuIik7Cj4gPiArCj4gPiArCWlmICgh aW50ZWxfcmVhZF9pbmZvZnJhbWUoZW5jb2RlciwgcGlwZV9jb25maWcsCj4gPiArCQkJCSAgSERN SV9JTkZPRlJBTUVfVFlQRV9WRU5ET1IsCj4gPiArCQkJCSAgJnBpcGVfY29uZmlnLT5pbmZvZnJh bWVzLmhkbWkpKQo+ID4gKwkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gcmVhZCBIRE1JIGluZm9mcmFt ZVxuIik7Cj4gPiAgfQo+ID4gIAo+ID4gIHN0YXRpYyBlbnVtIGludGVsX291dHB1dF90eXBlCj4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gaW5kZXggMzU3NjI0YTZiZmUyLi43NWVjOTli ODUyMzIgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+IEBAIC0xMTg1LDYg KzExODUsMTAgQEAgc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCB7Cj4gPiAgCQkJCWNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ID4gIAkJCQl1bnNpZ25lZCBpbnQg dHlwZSwKPiA+ICAJCQkJY29uc3Qgdm9pZCAqZnJhbWUsIHNzaXplX3QgbGVuKTsKPiA+ICsJc3Np emVfdCAoKnJlYWRfaW5mb2ZyYW1lKShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ ICsJCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiA+ICsJ CQkJICB1bnNpZ25lZCBpbnQgdHlwZSwKPiA+ICsJCQkJICB2b2lkICpmcmFtZSwgc3NpemVfdCBs ZW4pOwo+ID4gIAl2b2lkICgqc2V0X2luZm9mcmFtZXMpKHN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyLAo+ID4gIAkJCSAgICAgICBib29sIGVuYWJsZSwKPiA+ICAJCQkgICAgICAgY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gPiBAQCAtMTg2Nyw2ICsxODcx LDEyIEBAIHZvaWQgaW50ZWxfaW5mb2ZyYW1lX2luaXQoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9y dCAqaW50ZWxfZGlnX3BvcnQpOwo+ID4gIHUzMiBpbnRlbF9oZG1pX2luZm9mcmFtZXNfZW5hYmxl ZChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ICAJCQkJICBjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7Cj4gPiAgdTMyIGludGVsX2hkbWlfaW5mb2Zy YW1lX2VuYWJsZSh1bnNpZ25lZCBpbnQgdHlwZSk7Cj4gPiArdm9pZCBpbnRlbF9oZG1pX3JlYWRf Z2NwX2luZm9mcmFtZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ICsJCQkJICAg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwo+ID4gK2Jvb2wgaW50ZWxfcmVh ZF9pbmZvZnJhbWUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPiArCQkJICBjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiA+ICsJCQkgIGVudW0gaGRt aV9pbmZvZnJhbWVfdHlwZSB0eXBlLAo+ID4gKwkJCSAgdW5pb24gaGRtaV9pbmZvZnJhbWUgKmZy YW1lKTsKPiA+ICAKPiA+ICAKPiA+ICAvKiBpbnRlbF9sdmRzLmMgKi8KPiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9oZG1pLmMKPiA+IGluZGV4IDQ5MTAwMWZjMGZhZC4uMjdjYjZlYzMyZTk0IDEwMDY0 NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jCj4gPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMKPiA+IEBAIC0yMDMsNiArMjAzLDMxIEBA IHN0YXRpYyB2b2lkIGc0eF93cml0ZV9pbmZvZnJhbWUoc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXIsCj4gPiAgCVBPU1RJTkdfUkVBRChWSURFT19ESVBfQ1RMKTsKPiA+ICB9Cj4gPiAgCj4g PiArc3RhdGljIHNzaXplX3QgZzR4X3JlYWRfaW5mb2ZyYW1lKHN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyLAo+ID4gKwkJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlLAo+ID4gKwkJCQkgIHVuc2lnbmVkIGludCB0eXBlLAo+ID4gKwkJCQkgIHZvaWQgKmZy YW1lLCBzc2l6ZV90IGxlbikKPiA+ICt7Cj4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+ID4gKwl1MzIgdmFsLCAqZGF0 YSA9IGZyYW1lOwo+ID4gKwlpbnQgaTsKPiA+ICsKPiA+ICsJdmFsID0gSTkxNV9SRUFEKFZJREVP X0RJUF9DVEwpOwo+ID4gKwo+ID4gKwlpZiAoKHZhbCAmIGc0eF9pbmZvZnJhbWVfZW5hYmxlKHR5 cGUpKSA9PSAwKQo+ID4gKwkJcmV0dXJuIDA7Cj4gPiArCj4gPiArCXZhbCAmPSB+KFZJREVPX0RJ UF9TRUxFQ1RfTUFTSyB8IDB4Zik7IC8qIGNsZWFyIERJUCBkYXRhIG9mZnNldCAqLwo+ID4gKwl2 YWwgfD0gZzR4X2luZm9mcmFtZV9pbmRleCh0eXBlKTsKPiA+ICsKPiA+ICsJSTkxNV9XUklURShW SURFT19ESVBfQ1RMLCB2YWwpOwo+ID4gKwo+ID4gKwlmb3IgKGkgPSAwOyBpIDwgbGVuOyBpICs9 IDQpCj4gPiArCQkqZGF0YSsrID0gSTkxNV9SRUFEKFZJREVPX0RJUF9EQVRBKTsKPiA+ICsKPiA+ ICsJcmV0dXJuIGxlbjsKPiA+ICt9Cj4gPiArCj4gPiAgc3RhdGljIHUzMiBnNHhfaW5mb2ZyYW1l c19lbmFibGVkKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gIAkJCQkgIGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZykKPiA+ICB7Cj4gPiBAQCAtMjU4 LDYgKzI4MywzMiBAQCBzdGF0aWMgdm9pZCBpYnhfd3JpdGVfaW5mb2ZyYW1lKHN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyLAo+ID4gIAlQT1NUSU5HX1JFQUQocmVnKTsKPiA+ICB9Cj4gPiAg Cj4gPiArc3RhdGljIHNzaXplX3QgaWJ4X3JlYWRfaW5mb2ZyYW1lKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyLAo+ID4gKwkJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAo+ID4gKwkJCQkgIHVuc2lnbmVkIGludCB0eXBlLAo+ID4gKwkJCQkgIHZvaWQg KmZyYW1lLCBzc2l6ZV90IGxlbikKPiA+ICt7Cj4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+ID4gKwlzdHJ1Y3QgaW50 ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPiA+ ICsJdTMyIHZhbCwgKmRhdGEgPSBmcmFtZTsKPiA+ICsJaW50IGk7Cj4gPiArCj4gPiArCXZhbCA9 IEk5MTVfUkVBRChUVklERU9fRElQX0NUTChjcnRjLT5waXBlKSk7Cj4gPiArCj4gPiArCWlmICgo dmFsICYgZzR4X2luZm9mcmFtZV9lbmFibGUodHlwZSkpID09IDApCj4gPiArCQlyZXR1cm4gMDsK PiA+ICsKPiA+ICsJdmFsICY9IH4oVklERU9fRElQX1NFTEVDVF9NQVNLIHwgMHhmKTsgLyogY2xl YXIgRElQIGRhdGEgb2Zmc2V0ICovCj4gPiArCXZhbCB8PSBnNHhfaW5mb2ZyYW1lX2luZGV4KHR5 cGUpOwo+ID4gKwo+ID4gKwlJOTE1X1dSSVRFKFRWSURFT19ESVBfQ1RMKGNydGMtPnBpcGUpLCB2 YWwpOwo+ID4gKwo+ID4gKwlmb3IgKGkgPSAwOyBpIDwgbGVuOyBpICs9IDQpCj4gPiArCQkqZGF0 YSsrID0gSTkxNV9SRUFEKFRWSURFT19ESVBfREFUQShjcnRjLT5waXBlKSk7Cj4gPiArCj4gPiAr CXJldHVybiBsZW47Cj4gPiArfQo+ID4gKwo+ID4gIHN0YXRpYyB1MzIgaWJ4X2luZm9mcmFtZXNf ZW5hYmxlZChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ICAJCQkJICBjb25zdCBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCj4gPiAgewo+ID4gQEAgLTMxOSw2 ICszNzAsMzIgQEAgc3RhdGljIHZvaWQgY3B0X3dyaXRlX2luZm9mcmFtZShzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlciwKPiA+ICAJUE9TVElOR19SRUFEKHJlZyk7Cj4gPiAgfQo+ID4gIAo+ ID4gK3N0YXRpYyBzc2l6ZV90IGNwdF9yZWFkX2luZm9mcmFtZShzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2RlciwKPiA+ICsJCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSwKPiA+ICsJCQkJICB1bnNpZ25lZCBpbnQgdHlwZSwKPiA+ICsJCQkJICB2b2lkICpm cmFtZSwgc3NpemVfdCBsZW4pCj4gPiArewo+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPiA+ICsJc3RydWN0IGludGVs X2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gPiAr CXUzMiB2YWwsICpkYXRhID0gZnJhbWU7Cj4gPiArCWludCBpOwo+ID4gKwo+ID4gKwl2YWwgPSBJ OTE1X1JFQUQoVFZJREVPX0RJUF9DVEwoY3J0Yy0+cGlwZSkpOwo+ID4gKwo+ID4gKwlpZiAoKHZh bCAmIGc0eF9pbmZvZnJhbWVfZW5hYmxlKHR5cGUpKSA9PSAwKQo+ID4gKwkJcmV0dXJuIDA7Cj4g PiArCj4gPiArCXZhbCAmPSB+KFZJREVPX0RJUF9TRUxFQ1RfTUFTSyB8IDB4Zik7IC8qIGNsZWFy IERJUCBkYXRhIG9mZnNldCAqLwo+ID4gKwl2YWwgfD0gZzR4X2luZm9mcmFtZV9pbmRleCh0eXBl KTsKPiA+ICsKPiA+ICsJSTkxNV9XUklURShUVklERU9fRElQX0NUTChjcnRjLT5waXBlKSwgdmFs KTsKPiA+ICsKPiA+ICsJZm9yIChpID0gMDsgaSA8IGxlbjsgaSArPSA0KQo+ID4gKwkJKmRhdGEr KyA9IEk5MTVfUkVBRChUVklERU9fRElQX0RBVEEoY3J0Yy0+cGlwZSkpOwo+ID4gKwo+ID4gKwly ZXR1cm4gbGVuOwo+ID4gK30KPiA+ICsKPiA+ICBzdGF0aWMgdTMyIGNwdF9pbmZvZnJhbWVzX2Vu YWJsZWQoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPiAgCQkJCSAgY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQo+ID4gIHsKPiA+IEBAIC0zNzMsNiAr NDUwLDMyIEBAIHN0YXRpYyB2b2lkIHZsdl93cml0ZV9pbmZvZnJhbWUoc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXIsCj4gPiAgCVBPU1RJTkdfUkVBRChyZWcpOwo+ID4gIH0KPiA+ICAKPiA+ ICtzdGF0aWMgc3NpemVfdCB2bHZfcmVhZF9pbmZvZnJhbWUoc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXIsCj4gPiArCQkJCSAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNf c3RhdGUsCj4gPiArCQkJCSAgdW5zaWduZWQgaW50IHR5cGUsCj4gPiArCQkJCSAgdm9pZCAqZnJh bWUsIHNzaXplX3QgbGVuKQo+ID4gK3sKPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Cj4gPiArCXN0cnVjdCBpbnRlbF9j cnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ID4gKwl1 MzIgdmFsLCAqZGF0YSA9IGZyYW1lOwo+ID4gKwlpbnQgaTsKPiA+ICsKPiA+ICsJdmFsID0gSTkx NV9SRUFEKFZMVl9UVklERU9fRElQX0NUTChjcnRjLT5waXBlKSk7Cj4gPiArCj4gPiArCWlmICgo dmFsICYgZzR4X2luZm9mcmFtZV9lbmFibGUodHlwZSkpID09IDApCj4gPiArCQlyZXR1cm4gMDsK PiA+ICsKPiA+ICsJdmFsICY9IH4oVklERU9fRElQX1NFTEVDVF9NQVNLIHwgMHhmKTsgLyogY2xl YXIgRElQIGRhdGEgb2Zmc2V0ICovCj4gPiArCXZhbCB8PSBnNHhfaW5mb2ZyYW1lX2luZGV4KHR5 cGUpOwo+ID4gKwo+ID4gKwlJOTE1X1dSSVRFKFZMVl9UVklERU9fRElQX0NUTChjcnRjLT5waXBl KSwgdmFsKTsKPiA+ICsKPiA+ICsJZm9yIChpID0gMDsgaSA8IGxlbjsgaSArPSA0KQo+ID4gKwkJ KmRhdGErKyA9IEk5MTVfUkVBRChWTFZfVFZJREVPX0RJUF9EQVRBKGNydGMtPnBpcGUpKTsKPiA+ ICsKPiA+ICsJcmV0dXJuIGxlbjsKPiA+ICt9Cj4gPiArCj4gPiAgc3RhdGljIHUzMiB2bHZfaW5m b2ZyYW1lc19lbmFibGVkKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gIAkJCQkg IGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZykKPiA+ICB7Cj4gPiBA QCAtNDI1LDYgKzUyOCwyOCBAQCBzdGF0aWMgdm9pZCBoc3dfd3JpdGVfaW5mb2ZyYW1lKHN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gIAlQT1NUSU5HX1JFQUQoY3RsX3JlZyk7Cj4g PiAgfQo+ID4gIAo+ID4gK3N0YXRpYyBzc2l6ZV90IGhzd19yZWFkX2luZm9mcmFtZShzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ICsJCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiA+ICsJCQkJICB1bnNpZ25lZCBpbnQgdHlwZSwKPiA+ICsJ CQkJICB2b2lkICpmcmFtZSwgc3NpemVfdCBsZW4pCj4gPiArewo+ID4gKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPiA+ICsJ ZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVyID0gY3J0Y19zdGF0ZS0+Y3B1X3RyYW5zY29k ZXI7Cj4gPiArCXUzMiB2YWwsICpkYXRhID0gZnJhbWU7Cj4gPiArCWludCBpOwo+ID4gKwo+ID4g Kwl2YWwgPSBJOTE1X1JFQUQoSFNXX1RWSURFT19ESVBfQ1RMKGNwdV90cmFuc2NvZGVyKSk7Cj4g PiArCj4gPiArCWlmICgodmFsICYgaHN3X2luZm9mcmFtZV9lbmFibGUodHlwZSkpID09IDApCj4g PiArCQlyZXR1cm4gMDsKPiA+ICsKPiA+ICsJZm9yIChpID0gMDsgaSA8IGxlbjsgaSArPSA0KQo+ ID4gKwkJKmRhdGErKyA9IEk5MTVfUkVBRChoc3dfZGlwX2RhdGFfcmVnKGRldl9wcml2LCBjcHVf dHJhbnNjb2RlciwKPiA+ICsJCQkJCQkgICAgIHR5cGUsIGkgPj4gMikpOwo+ID4gKwo+ID4gKwly ZXR1cm4gbGVuOwo+ID4gK30KPiA+ICsKPiA+ICBzdGF0aWMgdTMyIGhzd19pbmZvZnJhbWVzX2Vu YWJsZWQoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPiAgCQkJCSAgY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQo+ID4gIHsKPiA+IEBAIC01MzAsNiAr NjU1LDM5IEBAIHN0YXRpYyB2b2lkIGludGVsX3dyaXRlX2luZm9mcmFtZShzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlciwKPiA+ICAJaW50ZWxfZGlnX3BvcnQtPndyaXRlX2luZm9mcmFtZShl bmNvZGVyLCBjcnRjX3N0YXRlLCB0eXBlLCBidWZmZXIsIGxlbik7Cj4gPiAgfQo+ID4gIAo+ID4g K2Jvb2wgaW50ZWxfcmVhZF9pbmZvZnJhbWUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIs Cj4gPiArCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiA+ ICsJCQkgIGVudW0gaGRtaV9pbmZvZnJhbWVfdHlwZSB0eXBlLAo+ID4gKwkJCSAgdW5pb24gaGRt aV9pbmZvZnJhbWUgKmZyYW1lKQo+IAo+IEJpdCBhIGJpa2VzaGVkOiBJJ2QgZHJvcCB0aGUgYm9v bGVhbiBoZXJlIGFuZCBwdWxsIHRoZSBkZWJ1ZyBvdXRwdXQgaW4uCj4gVGhhdCB3YXkgeW91IGNh biBnaXZlIGEgYml0IGJldHRlciBoaW50IGFib3V0IHdoYXQncyBnb2luZyB3cm9uZy4gQW5kIGxl c3MKPiBkdXBsaWNhdGVkIGNvZGUuIFlvdSBjYW4gc3RpbGwgcHJpbnQgdGhlIHR5cGUuCgpTdXJl LgoKPiAKPiA+ICt7Cj4gPiArCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19w b3J0ID0gZW5jX3RvX2RpZ19wb3J0KCZlbmNvZGVyLT5iYXNlKTsKPiA+ICsJdTggYnVmZmVyW1ZJ REVPX0RJUF9EQVRBX1NJWkVdOwo+ID4gKwlzc2l6ZV90IGxlbjsKPiA+ICsJaW50IHJldDsKPiA+ ICsKPiA+ICsJaWYgKChjcnRjX3N0YXRlLT5pbmZvZnJhbWVzLmVuYWJsZSAmCj4gPiArCSAgICAg aW50ZWxfaGRtaV9pbmZvZnJhbWVfZW5hYmxlKHR5cGUpKSA9PSAwKQo+ID4gKwkJcmV0dXJuIHRy dWU7Cj4gCj4gQWZhaXVpIHlvdSBvbmx5IG5lZWQgdGhpcyBiZWNhdXNlIGc0eCBkb2Vzbid0IGNo ZWNrIHRoZSBwaXBlICh3ZWxsLCBwb3J0KQo+IGFzc29jaWF0aW9uLiBCdXQgdGhlbiBhbGwgdGhl IHRlc3RzIG9uY2UgYWdhaW4gY2hlY2sgdGhpcyBieSBjb25maXJtaW5nCj4gdGhhdCB0aGUgaW5m b2ZyYW1lIHRoZXkgc2hvdWxkIHJlYWQgb3V0IGlzIGVuYWJsZWQuIEknZCBkcm9wIHRoZSBjaGVj ayBpbgo+IHRoZSB2YXJpb3VzIGh3LXNwZWNpZmljIHJlYWRvdXQgZnVuY3Rpb25zIChpdCdzIGR1 cGxpY2F0ZWQpLiBUaGF0IHNob3VsZAo+IHN0aWxsIHdvcmsgd2l0aCBnNHggaGVyZSwgYXMgbG9u ZyBhcyB5b3UgZmlsdGVyIGF0IHRoaXMgbGV2ZWwgaGVyZS4KClllYWgsIHRoYXQgc2VlbXMgbGlr ZSBhIGdvb2QgaWRlYS4KCkkgZG8gaGF2ZSBhZGRpdGlvbmFsIGZpeGVzIGZvciBnNHggaW5mb2Zy YW1lcy9hdWRpbyBzb21ld2hlcmUKdGhhdCBJIHNob3VsZCBhbHNvIHNlbmQgb3V0IGF0IHNvbWUg cG9pbnQuIFRoZSBzdGF0ZSBjaGVja2VyCmdldHMgcmF0aGVyIHVwc2V0IHdpdGggdGhlIGN1cnJl bnQgY29kZSB3aGVuIG1vcmUgdGhhbiBvbmUKcG9ydCB3YW50cyBpbmZvZnJhbWVzL2F1ZGlvIGVu YWJsZWQuCgo+IAo+IFdpdGggb3Igd2l0aG91dCB0aGUgYmlrZXNoZWRzOgo+IAo+IFJldmlld2Vk LWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgo+IAo+ID4gKwo+ID4g KwlsZW4gPSBpbnRlbF9kaWdfcG9ydC0+cmVhZF9pbmZvZnJhbWUoZW5jb2RlciwgY3J0Y19zdGF0 ZSwKPiA+ICsJCQkJCSAgICAgdHlwZSwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSk7Cj4gPiArCWlm IChsZW4gPT0gMCkKPiA+ICsJCXJldHVybiB0cnVlOwo+ID4gKwo+ID4gKwkvKiBGaWxsIHRoZSAn aG9sZScgKHNlZSBiaWcgY29tbWVudCBhYm92ZSkgYXQgcG9zaXRpb24gMyAqLwo+ID4gKwltZW1t b3ZlKCZidWZmZXJbMV0sICZidWZmZXJbMF0sIDMpOwo+ID4gKwo+ID4gKwkvKiBzZWUgY29tbWVu dCBhYm92ZSBmb3IgdGhlIHJlYXNvbiBmb3IgdGhpcyBvZmZzZXQgKi8KPiA+ICsJcmV0ID0gaGRt aV9pbmZvZnJhbWVfdW5wYWNrKGZyYW1lLCBidWZmZXIgKyAxLCBzaXplb2YoYnVmZmVyKSAtIDEp Owo+ID4gKwlpZiAocmV0KQo+ID4gKwkJcmV0dXJuIGZhbHNlOwo+ID4gKwo+ID4gKwlpZiAoZnJh bWUtPmFueS50eXBlICE9IHR5cGUpCj4gPiArCQlyZXR1cm4gZmFsc2U7Cj4gPiArCj4gPiArCXJl dHVybiB0cnVlOwo+ID4gK30KPiA+ICsKPiA+ICBzdGF0aWMgYm9vbAo+ID4gIGludGVsX2hkbWlf Y29tcHV0ZV9hdmlfaW5mb2ZyYW1lKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4g IAkJCQkgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gPiBAQCAtNzg0LDYg Kzk0MiwyOSBAQCBzdGF0aWMgYm9vbCBpbnRlbF9oZG1pX3NldF9nY3BfaW5mb2ZyYW1lKHN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gIAlyZXR1cm4gdHJ1ZTsKPiA+ICB9Cj4gPiAg Cj4gPiArdm9pZCBpbnRlbF9oZG1pX3JlYWRfZ2NwX2luZm9mcmFtZShzdHJ1Y3QgaW50ZWxfZW5j b2RlciAqZW5jb2RlciwKPiA+ICsJCQkJICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNf c3RhdGUpCj4gPiArewo+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPiA+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMg PSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gPiArCWk5MTVfcmVnX3Qg cmVnOwo+ID4gKwo+ID4gKwlpZiAoKGNydGNfc3RhdGUtPmluZm9mcmFtZXMuZW5hYmxlICYKPiA+ ICsJICAgICBpbnRlbF9oZG1pX2luZm9mcmFtZV9lbmFibGUoSERNSV9QQUNLRVRfVFlQRV9HRU5F UkFMX0NPTlRST0wpKSA9PSAwKQo+ID4gKwkJcmV0dXJuOwo+ID4gKwo+ID4gKwlpZiAoSEFTX0RE SShkZXZfcHJpdikpCj4gPiArCQlyZWcgPSBIU1dfVFZJREVPX0RJUF9HQ1AoY3J0Y19zdGF0ZS0+ Y3B1X3RyYW5zY29kZXIpOwo+ID4gKwllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8 fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkKPiA+ICsJCXJlZyA9IFZMVl9UVklERU9fRElQX0dD UChjcnRjLT5waXBlKTsKPiA+ICsJZWxzZSBpZiAoSEFTX1BDSF9TUExJVChkZXZfcHJpdikpCj4g PiArCQlyZWcgPSBUVklERU9fRElQX0dDUChjcnRjLT5waXBlKTsKPiA+ICsJZWxzZQo+ID4gKwkJ cmV0dXJuOwo+ID4gKwo+ID4gKwljcnRjX3N0YXRlLT5pbmZvZnJhbWVzLmdjcCA9IEk5MTVfUkVB RChyZWcpOwo+ID4gK30KPiA+ICsKPiA+ICBzdGF0aWMgdm9pZCBpbnRlbF9oZG1pX2NvbXB1dGVf Z2NwX2luZm9mcmFtZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ICAJCQkJCSAg ICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gPiAgCQkJCQkgICAgIHN0 cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQo+ID4gQEAgLTEzODIsNiArMTU2 MywyMyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9oZG1pX2dldF9jb25maWcoc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXIsCj4gPiAgCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0 Y19jbG9jayA9IGRvdGNsb2NrOwo+ID4gIAo+ID4gIAlwaXBlX2NvbmZpZy0+bGFuZV9jb3VudCA9 IDQ7Cj4gPiArCj4gPiArCWludGVsX2hkbWlfcmVhZF9nY3BfaW5mb2ZyYW1lKGVuY29kZXIsIHBp cGVfY29uZmlnKTsKPiA+ICsKPiA+ICsJaWYgKCFpbnRlbF9yZWFkX2luZm9mcmFtZShlbmNvZGVy LCBwaXBlX2NvbmZpZywKPiA+ICsJCQkJICBIRE1JX0lORk9GUkFNRV9UWVBFX0FWSSwKPiA+ICsJ CQkJICAmcGlwZV9jb25maWctPmluZm9mcmFtZXMuYXZpKSkKPiA+ICsJCURSTV9FUlJPUigiZmFp bGVkIHRvIHJlYWQgQVZJIGluZm9mcmFtZVxuIik7Cj4gPiArCj4gPiArCWlmICghaW50ZWxfcmVh ZF9pbmZvZnJhbWUoZW5jb2RlciwgcGlwZV9jb25maWcsCj4gPiArCQkJCSAgSERNSV9JTkZPRlJB TUVfVFlQRV9TUEQsCj4gPiArCQkJCSAgJnBpcGVfY29uZmlnLT5pbmZvZnJhbWVzLnNwZCkpCj4g PiArCQlEUk1fRVJST1IoImZhaWxlZCB0byByZWFkIFNQRCBpbmZvZnJhbWU6XG4iKTsKPiA+ICsK PiA+ICsJaWYgKCFpbnRlbF9yZWFkX2luZm9mcmFtZShlbmNvZGVyLCBwaXBlX2NvbmZpZywKPiA+ ICsJCQkJICBIRE1JX0lORk9GUkFNRV9UWVBFX1ZFTkRPUiwKPiA+ICsJCQkJICAmcGlwZV9jb25m aWctPmluZm9mcmFtZXMuaGRtaSkpCj4gPiArCQlEUk1fRVJST1IoImZhaWxlZCB0byByZWFkIEhE TUkgaW5mb2ZyYW1lXG4iKTsKPiA+ICB9Cj4gPiAgCj4gPiAgc3RhdGljIHZvaWQgaW50ZWxfZW5h YmxlX2hkbWlfYXVkaW8oc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPiBAQCAtMjQ4 MSwyMiArMjY3OSwyNyBAQCB2b2lkIGludGVsX2luZm9mcmFtZV9pbml0KHN0cnVjdCBpbnRlbF9k aWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0KQo+ID4gIAo+ID4gIAlpZiAoSVNfVkFMTEVZVklF VyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpIHsKPiA+ICAJCWludGVsX2Rp Z19wb3J0LT53cml0ZV9pbmZvZnJhbWUgPSB2bHZfd3JpdGVfaW5mb2ZyYW1lOwo+ID4gKwkJaW50 ZWxfZGlnX3BvcnQtPnJlYWRfaW5mb2ZyYW1lID0gdmx2X3JlYWRfaW5mb2ZyYW1lOwo+ID4gIAkJ aW50ZWxfZGlnX3BvcnQtPnNldF9pbmZvZnJhbWVzID0gdmx2X3NldF9pbmZvZnJhbWVzOwo+ID4g IAkJaW50ZWxfZGlnX3BvcnQtPmluZm9mcmFtZXNfZW5hYmxlZCA9IHZsdl9pbmZvZnJhbWVzX2Vu YWJsZWQ7Cj4gPiAgCX0gZWxzZSBpZiAoSVNfRzRYKGRldl9wcml2KSkgewo+ID4gIAkJaW50ZWxf ZGlnX3BvcnQtPndyaXRlX2luZm9mcmFtZSA9IGc0eF93cml0ZV9pbmZvZnJhbWU7Cj4gPiArCQlp bnRlbF9kaWdfcG9ydC0+cmVhZF9pbmZvZnJhbWUgPSBnNHhfcmVhZF9pbmZvZnJhbWU7Cj4gPiAg CQlpbnRlbF9kaWdfcG9ydC0+c2V0X2luZm9mcmFtZXMgPSBnNHhfc2V0X2luZm9mcmFtZXM7Cj4g PiAgCQlpbnRlbF9kaWdfcG9ydC0+aW5mb2ZyYW1lc19lbmFibGVkID0gZzR4X2luZm9mcmFtZXNf ZW5hYmxlZDsKPiA+ICAJfSBlbHNlIGlmIChIQVNfRERJKGRldl9wcml2KSkgewo+ID4gIAkJaW50 ZWxfZGlnX3BvcnQtPndyaXRlX2luZm9mcmFtZSA9IGhzd193cml0ZV9pbmZvZnJhbWU7Cj4gPiAr CQlpbnRlbF9kaWdfcG9ydC0+cmVhZF9pbmZvZnJhbWUgPSBoc3dfcmVhZF9pbmZvZnJhbWU7Cj4g PiAgCQlpbnRlbF9kaWdfcG9ydC0+c2V0X2luZm9mcmFtZXMgPSBoc3dfc2V0X2luZm9mcmFtZXM7 Cj4gPiAgCQlpbnRlbF9kaWdfcG9ydC0+aW5mb2ZyYW1lc19lbmFibGVkID0gaHN3X2luZm9mcmFt ZXNfZW5hYmxlZDsKPiA+ICAJfSBlbHNlIGlmIChIQVNfUENIX0lCWChkZXZfcHJpdikpIHsKPiA+ ICAJCWludGVsX2RpZ19wb3J0LT53cml0ZV9pbmZvZnJhbWUgPSBpYnhfd3JpdGVfaW5mb2ZyYW1l Owo+ID4gKwkJaW50ZWxfZGlnX3BvcnQtPnJlYWRfaW5mb2ZyYW1lID0gaWJ4X3JlYWRfaW5mb2Zy YW1lOwo+ID4gIAkJaW50ZWxfZGlnX3BvcnQtPnNldF9pbmZvZnJhbWVzID0gaWJ4X3NldF9pbmZv ZnJhbWVzOwo+ID4gIAkJaW50ZWxfZGlnX3BvcnQtPmluZm9mcmFtZXNfZW5hYmxlZCA9IGlieF9p bmZvZnJhbWVzX2VuYWJsZWQ7Cj4gPiAgCX0gZWxzZSB7Cj4gPiAgCQlpbnRlbF9kaWdfcG9ydC0+ d3JpdGVfaW5mb2ZyYW1lID0gY3B0X3dyaXRlX2luZm9mcmFtZTsKPiA+ICsJCWludGVsX2RpZ19w b3J0LT5yZWFkX2luZm9mcmFtZSA9IGNwdF9yZWFkX2luZm9mcmFtZTsKPiA+ICAJCWludGVsX2Rp Z19wb3J0LT5zZXRfaW5mb2ZyYW1lcyA9IGNwdF9zZXRfaW5mb2ZyYW1lczsKPiA+ICAJCWludGVs X2RpZ19wb3J0LT5pbmZvZnJhbWVzX2VuYWJsZWQgPSBjcHRfaW5mb2ZyYW1lc19lbmFibGVkOwo+ ID4gIAl9Cj4gPiAtLSAKPiA+IDIuMTYuNAo+ID4gCj4gPiBfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwo+ID4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+ID4g SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ID4gaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKPiAKPiAtLSAKPiBEYW5pZWwgVmV0 dGVyCj4gU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCj4gaHR0cDovL2Jsb2cu ZmZ3bGwuY2gKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==