From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 14/18] drm/i915: Read out HDMI infoframes Date: Mon, 24 Sep 2018 18:08:09 +0200 Message-ID: <20180924160809.GA11082@phenom.ffwll.local> References: <20180920185145.1912-1-ville.syrjala@linux.intel.com> <20180920185145.1912-15-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x544.google.com (mail-ed1-x544.google.com [IPv6:2a00:1450:4864:20::544]) by gabe.freedesktop.org (Postfix) with ESMTPS id 592916E08C for ; Mon, 24 Sep 2018 16:08:14 +0000 (UTC) Received: by mail-ed1-x544.google.com with SMTP id y21-v6so4503943edr.2 for ; Mon, 24 Sep 2018 09:08:14 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20180920185145.1912-15-ville.syrjala@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ville Syrjala Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBTZXAgMjAsIDIwMTggYXQgMDk6NTE6NDFQTSArMDMwMCwgVmlsbGUgU3lyamFsYSB3 cm90ZToKPiBGcm9tOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwu Y29tPgo+IAo+IEFkZCBjb2RlIHRvIHJlYWQgdGhlIGluZm9mcmFtZXMgZnJvbSB0aGUgdmlkZW8g RElQIGFuZCB1bnBhY2sgdGhlbSBpbnRvCj4gdGhlIGNydGMgc3RhdGUuCj4gCj4gU2lnbmVkLW9m Zi1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiAt LS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgIHwgIDE3ICsrKysKPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggIHwgIDEwICsrCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2hkbWkuYyB8IDIwMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwo+ICAzIGZpbGVzIGNoYW5nZWQsIDIzMCBpbnNlcnRpb25zKCspCj4gCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGRpLmMKPiBpbmRleCA1ZjNiZDUzNmQyNjEuLmE1NjI4OWY3ODMyNiAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gQEAgLTM0NTksNiArMzQ1OSwyMyBAQCB2b2lk IGludGVsX2RkaV9nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJ CQlieHRfZGRpX3BoeV9nZXRfbGFuZV9sYXRfb3B0aW1fbWFzayhlbmNvZGVyKTsKPiAgCj4gIAlp bnRlbF9kZGlfY29tcHV0ZV9taW5fdm9sdGFnZV9sZXZlbChkZXZfcHJpdiwgcGlwZV9jb25maWcp Owo+ICsKPiArCWludGVsX2hkbWlfcmVhZF9nY3BfaW5mb2ZyYW1lKGVuY29kZXIsIHBpcGVfY29u ZmlnKTsKPiArCj4gKwlpZiAoIWludGVsX3JlYWRfaW5mb2ZyYW1lKGVuY29kZXIsIHBpcGVfY29u ZmlnLAo+ICsJCQkJICBIRE1JX0lORk9GUkFNRV9UWVBFX0FWSSwKPiArCQkJCSAgJnBpcGVfY29u ZmlnLT5pbmZvZnJhbWVzLmF2aSkpCj4gKwkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gcmVhZCBBVkkg aW5mb2ZyYW1lXG4iKTsKPiArCj4gKwlpZiAoIWludGVsX3JlYWRfaW5mb2ZyYW1lKGVuY29kZXIs IHBpcGVfY29uZmlnLAo+ICsJCQkJICBIRE1JX0lORk9GUkFNRV9UWVBFX1NQRCwKPiArCQkJCSAg JnBpcGVfY29uZmlnLT5pbmZvZnJhbWVzLnNwZCkpCj4gKwkJRFJNX0VSUk9SKCJmYWlsZWQgdG8g cmVhZCBTUEQgaW5mb2ZyYW1lOlxuIik7Cj4gKwo+ICsJaWYgKCFpbnRlbF9yZWFkX2luZm9mcmFt ZShlbmNvZGVyLCBwaXBlX2NvbmZpZywKPiArCQkJCSAgSERNSV9JTkZPRlJBTUVfVFlQRV9WRU5E T1IsCj4gKwkJCQkgICZwaXBlX2NvbmZpZy0+aW5mb2ZyYW1lcy5oZG1pKSkKPiArCQlEUk1fRVJS T1IoImZhaWxlZCB0byByZWFkIEhETUkgaW5mb2ZyYW1lXG4iKTsKPiAgfQo+ICAKPiAgc3RhdGlj IGVudW0gaW50ZWxfb3V0cHV0X3R5cGUKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IGluZGV4 IDM1NzYyNGE2YmZlMi4uNzVlYzk5Yjg1MjMyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmgKPiBAQCAtMTE4NSw2ICsxMTg1LDEwIEBAIHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgewo+ ICAJCQkJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCQl1 bnNpZ25lZCBpbnQgdHlwZSwKPiAgCQkJCWNvbnN0IHZvaWQgKmZyYW1lLCBzc2l6ZV90IGxlbik7 Cj4gKwlzc2l6ZV90ICgqcmVhZF9pbmZvZnJhbWUpKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNv ZGVyLAo+ICsJCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwK PiArCQkJCSAgdW5zaWduZWQgaW50IHR5cGUsCj4gKwkJCQkgIHZvaWQgKmZyYW1lLCBzc2l6ZV90 IGxlbik7Cj4gIAl2b2lkICgqc2V0X2luZm9mcmFtZXMpKHN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyLAo+ICAJCQkgICAgICAgYm9vbCBlbmFibGUsCj4gIAkJCSAgICAgICBjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiBAQCAtMTg2Nyw2ICsxODcxLDEyIEBA IHZvaWQgaW50ZWxfaW5mb2ZyYW1lX2luaXQoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50 ZWxfZGlnX3BvcnQpOwo+ICB1MzIgaW50ZWxfaGRtaV9pbmZvZnJhbWVzX2VuYWJsZWQoc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAkJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlKTsKPiAgdTMyIGludGVsX2hkbWlfaW5mb2ZyYW1lX2VuYWJsZSh1 bnNpZ25lZCBpbnQgdHlwZSk7Cj4gK3ZvaWQgaW50ZWxfaGRtaV9yZWFkX2djcF9pbmZvZnJhbWUo c3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gKwkJCQkgICBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7Cj4gK2Jvb2wgaW50ZWxfcmVhZF9pbmZvZnJhbWUoc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gKwkJCSAgY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUsCj4gKwkJCSAgZW51bSBoZG1pX2luZm9mcmFtZV90eXBlIHR5cGUs Cj4gKwkJCSAgdW5pb24gaGRtaV9pbmZvZnJhbWUgKmZyYW1lKTsKPiAgCj4gIAo+ICAvKiBpbnRl bF9sdmRzLmMgKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRt aS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jCj4gaW5kZXggNDkxMDAxZmMw ZmFkLi4yN2NiNmVjMzJlOTQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfaGRtaS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jCj4gQEAg LTIwMyw2ICsyMDMsMzEgQEAgc3RhdGljIHZvaWQgZzR4X3dyaXRlX2luZm9mcmFtZShzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCVBPU1RJTkdfUkVBRChWSURFT19ESVBfQ1RMKTsK PiAgfQo+ICAKPiArc3RhdGljIHNzaXplX3QgZzR4X3JlYWRfaW5mb2ZyYW1lKHN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyLAo+ICsJCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSwKPiArCQkJCSAgdW5zaWduZWQgaW50IHR5cGUsCj4gKwkJCQkgIHZvaWQg KmZyYW1lLCBzc2l6ZV90IGxlbikKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Cj4gKwl1MzIgdmFsLCAqZGF0YSA9 IGZyYW1lOwo+ICsJaW50IGk7Cj4gKwo+ICsJdmFsID0gSTkxNV9SRUFEKFZJREVPX0RJUF9DVEwp Owo+ICsKPiArCWlmICgodmFsICYgZzR4X2luZm9mcmFtZV9lbmFibGUodHlwZSkpID09IDApCj4g KwkJcmV0dXJuIDA7Cj4gKwo+ICsJdmFsICY9IH4oVklERU9fRElQX1NFTEVDVF9NQVNLIHwgMHhm KTsgLyogY2xlYXIgRElQIGRhdGEgb2Zmc2V0ICovCj4gKwl2YWwgfD0gZzR4X2luZm9mcmFtZV9p bmRleCh0eXBlKTsKPiArCj4gKwlJOTE1X1dSSVRFKFZJREVPX0RJUF9DVEwsIHZhbCk7Cj4gKwo+ ICsJZm9yIChpID0gMDsgaSA8IGxlbjsgaSArPSA0KQo+ICsJCSpkYXRhKysgPSBJOTE1X1JFQUQo VklERU9fRElQX0RBVEEpOwo+ICsKPiArCXJldHVybiBsZW47Cj4gK30KPiArCj4gIHN0YXRpYyB1 MzIgZzR4X2luZm9mcmFtZXNfZW5hYmxlZChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwK PiAgCQkJCSAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQo+ICB7 Cj4gQEAgLTI1OCw2ICsyODMsMzIgQEAgc3RhdGljIHZvaWQgaWJ4X3dyaXRlX2luZm9mcmFtZShz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCVBPU1RJTkdfUkVBRChyZWcpOwo+ICB9 Cj4gIAo+ICtzdGF0aWMgc3NpemVfdCBpYnhfcmVhZF9pbmZvZnJhbWUoc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXIsCj4gKwkJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAo+ICsJCQkJICB1bnNpZ25lZCBpbnQgdHlwZSwKPiArCQkJCSAgdm9pZCAqZnJh bWUsIHNzaXplX3QgbGVuKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpj cnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ICsJdTMyIHZhbCwg KmRhdGEgPSBmcmFtZTsKPiArCWludCBpOwo+ICsKPiArCXZhbCA9IEk5MTVfUkVBRChUVklERU9f RElQX0NUTChjcnRjLT5waXBlKSk7Cj4gKwo+ICsJaWYgKCh2YWwgJiBnNHhfaW5mb2ZyYW1lX2Vu YWJsZSh0eXBlKSkgPT0gMCkKPiArCQlyZXR1cm4gMDsKPiArCj4gKwl2YWwgJj0gfihWSURFT19E SVBfU0VMRUNUX01BU0sgfCAweGYpOyAvKiBjbGVhciBESVAgZGF0YSBvZmZzZXQgKi8KPiArCXZh bCB8PSBnNHhfaW5mb2ZyYW1lX2luZGV4KHR5cGUpOwo+ICsKPiArCUk5MTVfV1JJVEUoVFZJREVP X0RJUF9DVEwoY3J0Yy0+cGlwZSksIHZhbCk7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IGxlbjsg aSArPSA0KQo+ICsJCSpkYXRhKysgPSBJOTE1X1JFQUQoVFZJREVPX0RJUF9EQVRBKGNydGMtPnBp cGUpKTsKPiArCj4gKwlyZXR1cm4gbGVuOwo+ICt9Cj4gKwo+ICBzdGF0aWMgdTMyIGlieF9pbmZv ZnJhbWVzX2VuYWJsZWQoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAkJCQkgIGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZykKPiAgewo+IEBAIC0zMTks NiArMzcwLDMyIEBAIHN0YXRpYyB2b2lkIGNwdF93cml0ZV9pbmZvZnJhbWUoc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIsCj4gIAlQT1NUSU5HX1JFQUQocmVnKTsKPiAgfQo+ICAKPiArc3Rh dGljIHNzaXplX3QgY3B0X3JlYWRfaW5mb2ZyYW1lKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNv ZGVyLAo+ICsJCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwK PiArCQkJCSAgdW5zaWduZWQgaW50IHR5cGUsCj4gKwkJCQkgIHZvaWQgKmZyYW1lLCBzc2l6ZV90 IGxlbikKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShlbmNvZGVyLT5iYXNlLmRldik7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2lu dGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPiArCXUzMiB2YWwsICpkYXRhID0gZnJh bWU7Cj4gKwlpbnQgaTsKPiArCj4gKwl2YWwgPSBJOTE1X1JFQUQoVFZJREVPX0RJUF9DVEwoY3J0 Yy0+cGlwZSkpOwo+ICsKPiArCWlmICgodmFsICYgZzR4X2luZm9mcmFtZV9lbmFibGUodHlwZSkp ID09IDApCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJdmFsICY9IH4oVklERU9fRElQX1NFTEVDVF9N QVNLIHwgMHhmKTsgLyogY2xlYXIgRElQIGRhdGEgb2Zmc2V0ICovCj4gKwl2YWwgfD0gZzR4X2lu Zm9mcmFtZV9pbmRleCh0eXBlKTsKPiArCj4gKwlJOTE1X1dSSVRFKFRWSURFT19ESVBfQ1RMKGNy dGMtPnBpcGUpLCB2YWwpOwo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBsZW47IGkgKz0gNCkKPiAr CQkqZGF0YSsrID0gSTkxNV9SRUFEKFRWSURFT19ESVBfREFUQShjcnRjLT5waXBlKSk7Cj4gKwo+ ICsJcmV0dXJuIGxlbjsKPiArfQo+ICsKPiAgc3RhdGljIHUzMiBjcHRfaW5mb2ZyYW1lc19lbmFi bGVkKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJCQkJICBjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCj4gIHsKPiBAQCAtMzczLDYgKzQ1MCwzMiBA QCBzdGF0aWMgdm9pZCB2bHZfd3JpdGVfaW5mb2ZyYW1lKHN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyLAo+ICAJUE9TVElOR19SRUFEKHJlZyk7Cj4gIH0KPiAgCj4gK3N0YXRpYyBzc2l6ZV90 IHZsdl9yZWFkX2luZm9mcmFtZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiArCQkJ CSAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gKwkJCQkgIHVu c2lnbmVkIGludCB0eXBlLAo+ICsJCQkJICB2b2lkICpmcmFtZSwgc3NpemVfdCBsZW4pCj4gK3sK PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+ YmFzZS5kZXYpOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNy dGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gKwl1MzIgdmFsLCAqZGF0YSA9IGZyYW1lOwo+ICsJaW50 IGk7Cj4gKwo+ICsJdmFsID0gSTkxNV9SRUFEKFZMVl9UVklERU9fRElQX0NUTChjcnRjLT5waXBl KSk7Cj4gKwo+ICsJaWYgKCh2YWwgJiBnNHhfaW5mb2ZyYW1lX2VuYWJsZSh0eXBlKSkgPT0gMCkK PiArCQlyZXR1cm4gMDsKPiArCj4gKwl2YWwgJj0gfihWSURFT19ESVBfU0VMRUNUX01BU0sgfCAw eGYpOyAvKiBjbGVhciBESVAgZGF0YSBvZmZzZXQgKi8KPiArCXZhbCB8PSBnNHhfaW5mb2ZyYW1l X2luZGV4KHR5cGUpOwo+ICsKPiArCUk5MTVfV1JJVEUoVkxWX1RWSURFT19ESVBfQ1RMKGNydGMt PnBpcGUpLCB2YWwpOwo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBsZW47IGkgKz0gNCkKPiArCQkq ZGF0YSsrID0gSTkxNV9SRUFEKFZMVl9UVklERU9fRElQX0RBVEEoY3J0Yy0+cGlwZSkpOwo+ICsK PiArCXJldHVybiBsZW47Cj4gK30KPiArCj4gIHN0YXRpYyB1MzIgdmx2X2luZm9mcmFtZXNfZW5h YmxlZChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCQkJCSAgY29uc3Qgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQo+ICB7Cj4gQEAgLTQyNSw2ICs1MjgsMjgg QEAgc3RhdGljIHZvaWQgaHN3X3dyaXRlX2luZm9mcmFtZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlciwKPiAgCVBPU1RJTkdfUkVBRChjdGxfcmVnKTsKPiAgfQo+ICAKPiArc3RhdGljIHNz aXplX3QgaHN3X3JlYWRfaW5mb2ZyYW1lKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ ICsJCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiArCQkJ CSAgdW5zaWduZWQgaW50IHR5cGUsCj4gKwkJCQkgIHZvaWQgKmZyYW1lLCBzc2l6ZV90IGxlbikK PiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNv ZGVyLT5iYXNlLmRldik7Cj4gKwllbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXIgPSBjcnRj X3N0YXRlLT5jcHVfdHJhbnNjb2RlcjsKPiArCXUzMiB2YWwsICpkYXRhID0gZnJhbWU7Cj4gKwlp bnQgaTsKPiArCj4gKwl2YWwgPSBJOTE1X1JFQUQoSFNXX1RWSURFT19ESVBfQ1RMKGNwdV90cmFu c2NvZGVyKSk7Cj4gKwo+ICsJaWYgKCh2YWwgJiBoc3dfaW5mb2ZyYW1lX2VuYWJsZSh0eXBlKSkg PT0gMCkKPiArCQlyZXR1cm4gMDsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgbGVuOyBpICs9IDQp Cj4gKwkJKmRhdGErKyA9IEk5MTVfUkVBRChoc3dfZGlwX2RhdGFfcmVnKGRldl9wcml2LCBjcHVf dHJhbnNjb2RlciwKPiArCQkJCQkJICAgICB0eXBlLCBpID4+IDIpKTsKPiArCj4gKwlyZXR1cm4g bGVuOwo+ICt9Cj4gKwo+ICBzdGF0aWMgdTMyIGhzd19pbmZvZnJhbWVzX2VuYWJsZWQoc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAkJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpwaXBlX2NvbmZpZykKPiAgewo+IEBAIC01MzAsNiArNjU1LDM5IEBAIHN0YXRpYyB2 b2lkIGludGVsX3dyaXRlX2luZm9mcmFtZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwK PiAgCWludGVsX2RpZ19wb3J0LT53cml0ZV9pbmZvZnJhbWUoZW5jb2RlciwgY3J0Y19zdGF0ZSwg dHlwZSwgYnVmZmVyLCBsZW4pOwo+ICB9Cj4gIAo+ICtib29sIGludGVsX3JlYWRfaW5mb2ZyYW1l KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICsJCQkgIGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICsJCQkgIGVudW0gaGRtaV9pbmZvZnJhbWVfdHlw ZSB0eXBlLAo+ICsJCQkgIHVuaW9uIGhkbWlfaW5mb2ZyYW1lICpmcmFtZSkKCkJpdCBhIGJpa2Vz aGVkOiBJJ2QgZHJvcCB0aGUgYm9vbGVhbiBoZXJlIGFuZCBwdWxsIHRoZSBkZWJ1ZyBvdXRwdXQg aW4uClRoYXQgd2F5IHlvdSBjYW4gZ2l2ZSBhIGJpdCBiZXR0ZXIgaGludCBhYm91dCB3aGF0J3Mg Z29pbmcgd3JvbmcuIEFuZCBsZXNzCmR1cGxpY2F0ZWQgY29kZS4gWW91IGNhbiBzdGlsbCBwcmlu dCB0aGUgdHlwZS4KCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2Rp Z19wb3J0ID0gZW5jX3RvX2RpZ19wb3J0KCZlbmNvZGVyLT5iYXNlKTsKPiArCXU4IGJ1ZmZlcltW SURFT19ESVBfREFUQV9TSVpFXTsKPiArCXNzaXplX3QgbGVuOwo+ICsJaW50IHJldDsKPiArCj4g KwlpZiAoKGNydGNfc3RhdGUtPmluZm9mcmFtZXMuZW5hYmxlICYKPiArCSAgICAgaW50ZWxfaGRt aV9pbmZvZnJhbWVfZW5hYmxlKHR5cGUpKSA9PSAwKQo+ICsJCXJldHVybiB0cnVlOwoKQWZhaXVp IHlvdSBvbmx5IG5lZWQgdGhpcyBiZWNhdXNlIGc0eCBkb2Vzbid0IGNoZWNrIHRoZSBwaXBlICh3 ZWxsLCBwb3J0KQphc3NvY2lhdGlvbi4gQnV0IHRoZW4gYWxsIHRoZSB0ZXN0cyBvbmNlIGFnYWlu IGNoZWNrIHRoaXMgYnkgY29uZmlybWluZwp0aGF0IHRoZSBpbmZvZnJhbWUgdGhleSBzaG91bGQg cmVhZCBvdXQgaXMgZW5hYmxlZC4gSSdkIGRyb3AgdGhlIGNoZWNrIGluCnRoZSB2YXJpb3VzIGh3 LXNwZWNpZmljIHJlYWRvdXQgZnVuY3Rpb25zIChpdCdzIGR1cGxpY2F0ZWQpLiBUaGF0IHNob3Vs ZApzdGlsbCB3b3JrIHdpdGggZzR4IGhlcmUsIGFzIGxvbmcgYXMgeW91IGZpbHRlciBhdCB0aGlz IGxldmVsIGhlcmUuCgpXaXRoIG9yIHdpdGhvdXQgdGhlIGJpa2VzaGVkczoKClJldmlld2VkLWJ5 OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgoKPiArCj4gKwlsZW4gPSBp bnRlbF9kaWdfcG9ydC0+cmVhZF9pbmZvZnJhbWUoZW5jb2RlciwgY3J0Y19zdGF0ZSwKPiArCQkJ CQkgICAgIHR5cGUsIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikpOwo+ICsJaWYgKGxlbiA9PSAwKQo+ ICsJCXJldHVybiB0cnVlOwo+ICsKPiArCS8qIEZpbGwgdGhlICdob2xlJyAoc2VlIGJpZyBjb21t ZW50IGFib3ZlKSBhdCBwb3NpdGlvbiAzICovCj4gKwltZW1tb3ZlKCZidWZmZXJbMV0sICZidWZm ZXJbMF0sIDMpOwo+ICsKPiArCS8qIHNlZSBjb21tZW50IGFib3ZlIGZvciB0aGUgcmVhc29uIGZv ciB0aGlzIG9mZnNldCAqLwo+ICsJcmV0ID0gaGRtaV9pbmZvZnJhbWVfdW5wYWNrKGZyYW1lLCBi dWZmZXIgKyAxLCBzaXplb2YoYnVmZmVyKSAtIDEpOwo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4g ZmFsc2U7Cj4gKwo+ICsJaWYgKGZyYW1lLT5hbnkudHlwZSAhPSB0eXBlKQo+ICsJCXJldHVybiBm YWxzZTsKPiArCj4gKwlyZXR1cm4gdHJ1ZTsKPiArfQo+ICsKPiAgc3RhdGljIGJvb2wKPiAgaW50 ZWxfaGRtaV9jb21wdXRlX2F2aV9pbmZvZnJhbWUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXIsCj4gIAkJCQkgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gQEAgLTc4 NCw2ICs5NDIsMjkgQEAgc3RhdGljIGJvb2wgaW50ZWxfaGRtaV9zZXRfZ2NwX2luZm9mcmFtZShz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCXJldHVybiB0cnVlOwo+ICB9Cj4gIAo+ ICt2b2lkIGludGVsX2hkbWlfcmVhZF9nY3BfaW5mb2ZyYW1lKHN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyLAo+ICsJCQkJICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUp Cj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5j b2Rlci0+YmFzZS5kZXYpOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9j cnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gKwlpOTE1X3JlZ190IHJlZzsKPiArCj4gKwlp ZiAoKGNydGNfc3RhdGUtPmluZm9mcmFtZXMuZW5hYmxlICYKPiArCSAgICAgaW50ZWxfaGRtaV9p bmZvZnJhbWVfZW5hYmxlKEhETUlfUEFDS0VUX1RZUEVfR0VORVJBTF9DT05UUk9MKSkgPT0gMCkK PiArCQlyZXR1cm47Cj4gKwo+ICsJaWYgKEhBU19EREkoZGV2X3ByaXYpKQo+ICsJCXJlZyA9IEhT V19UVklERU9fRElQX0dDUChjcnRjX3N0YXRlLT5jcHVfdHJhbnNjb2Rlcik7Cj4gKwllbHNlIGlm IChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkKPiAr CQlyZWcgPSBWTFZfVFZJREVPX0RJUF9HQ1AoY3J0Yy0+cGlwZSk7Cj4gKwllbHNlIGlmIChIQVNf UENIX1NQTElUKGRldl9wcml2KSkKPiArCQlyZWcgPSBUVklERU9fRElQX0dDUChjcnRjLT5waXBl KTsKPiArCWVsc2UKPiArCQlyZXR1cm47Cj4gKwo+ICsJY3J0Y19zdGF0ZS0+aW5mb2ZyYW1lcy5n Y3AgPSBJOTE1X1JFQUQocmVnKTsKPiArfQo+ICsKPiAgc3RhdGljIHZvaWQgaW50ZWxfaGRtaV9j b21wdXRlX2djcF9pbmZvZnJhbWUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAkJ CQkJICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkJCQkgICAg IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQo+IEBAIC0xMzgyLDYgKzE1 NjMsMjMgQEAgc3RhdGljIHZvaWQgaW50ZWxfaGRtaV9nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyLAo+ICAJcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRj X2Nsb2NrID0gZG90Y2xvY2s7Cj4gIAo+ICAJcGlwZV9jb25maWctPmxhbmVfY291bnQgPSA0Owo+ ICsKPiArCWludGVsX2hkbWlfcmVhZF9nY3BfaW5mb2ZyYW1lKGVuY29kZXIsIHBpcGVfY29uZmln KTsKPiArCj4gKwlpZiAoIWludGVsX3JlYWRfaW5mb2ZyYW1lKGVuY29kZXIsIHBpcGVfY29uZmln LAo+ICsJCQkJICBIRE1JX0lORk9GUkFNRV9UWVBFX0FWSSwKPiArCQkJCSAgJnBpcGVfY29uZmln LT5pbmZvZnJhbWVzLmF2aSkpCj4gKwkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gcmVhZCBBVkkgaW5m b2ZyYW1lXG4iKTsKPiArCj4gKwlpZiAoIWludGVsX3JlYWRfaW5mb2ZyYW1lKGVuY29kZXIsIHBp cGVfY29uZmlnLAo+ICsJCQkJICBIRE1JX0lORk9GUkFNRV9UWVBFX1NQRCwKPiArCQkJCSAgJnBp cGVfY29uZmlnLT5pbmZvZnJhbWVzLnNwZCkpCj4gKwkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gcmVh ZCBTUEQgaW5mb2ZyYW1lOlxuIik7Cj4gKwo+ICsJaWYgKCFpbnRlbF9yZWFkX2luZm9mcmFtZShl bmNvZGVyLCBwaXBlX2NvbmZpZywKPiArCQkJCSAgSERNSV9JTkZPRlJBTUVfVFlQRV9WRU5ET1Is Cj4gKwkJCQkgICZwaXBlX2NvbmZpZy0+aW5mb2ZyYW1lcy5oZG1pKSkKPiArCQlEUk1fRVJST1Io ImZhaWxlZCB0byByZWFkIEhETUkgaW5mb2ZyYW1lXG4iKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZv aWQgaW50ZWxfZW5hYmxlX2hkbWlfYXVkaW8oc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIs Cj4gQEAgLTI0ODEsMjIgKzI2NzksMjcgQEAgdm9pZCBpbnRlbF9pbmZvZnJhbWVfaW5pdChzdHJ1 Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCkKPiAgCj4gIAlpZiAoSVNfVkFM TEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpIHsKPiAgCQlpbnRl bF9kaWdfcG9ydC0+d3JpdGVfaW5mb2ZyYW1lID0gdmx2X3dyaXRlX2luZm9mcmFtZTsKPiArCQlp bnRlbF9kaWdfcG9ydC0+cmVhZF9pbmZvZnJhbWUgPSB2bHZfcmVhZF9pbmZvZnJhbWU7Cj4gIAkJ aW50ZWxfZGlnX3BvcnQtPnNldF9pbmZvZnJhbWVzID0gdmx2X3NldF9pbmZvZnJhbWVzOwo+ICAJ CWludGVsX2RpZ19wb3J0LT5pbmZvZnJhbWVzX2VuYWJsZWQgPSB2bHZfaW5mb2ZyYW1lc19lbmFi bGVkOwo+ICAJfSBlbHNlIGlmIChJU19HNFgoZGV2X3ByaXYpKSB7Cj4gIAkJaW50ZWxfZGlnX3Bv cnQtPndyaXRlX2luZm9mcmFtZSA9IGc0eF93cml0ZV9pbmZvZnJhbWU7Cj4gKwkJaW50ZWxfZGln X3BvcnQtPnJlYWRfaW5mb2ZyYW1lID0gZzR4X3JlYWRfaW5mb2ZyYW1lOwo+ICAJCWludGVsX2Rp Z19wb3J0LT5zZXRfaW5mb2ZyYW1lcyA9IGc0eF9zZXRfaW5mb2ZyYW1lczsKPiAgCQlpbnRlbF9k aWdfcG9ydC0+aW5mb2ZyYW1lc19lbmFibGVkID0gZzR4X2luZm9mcmFtZXNfZW5hYmxlZDsKPiAg CX0gZWxzZSBpZiAoSEFTX0RESShkZXZfcHJpdikpIHsKPiAgCQlpbnRlbF9kaWdfcG9ydC0+d3Jp dGVfaW5mb2ZyYW1lID0gaHN3X3dyaXRlX2luZm9mcmFtZTsKPiArCQlpbnRlbF9kaWdfcG9ydC0+ cmVhZF9pbmZvZnJhbWUgPSBoc3dfcmVhZF9pbmZvZnJhbWU7Cj4gIAkJaW50ZWxfZGlnX3BvcnQt PnNldF9pbmZvZnJhbWVzID0gaHN3X3NldF9pbmZvZnJhbWVzOwo+ICAJCWludGVsX2RpZ19wb3J0 LT5pbmZvZnJhbWVzX2VuYWJsZWQgPSBoc3dfaW5mb2ZyYW1lc19lbmFibGVkOwo+ICAJfSBlbHNl IGlmIChIQVNfUENIX0lCWChkZXZfcHJpdikpIHsKPiAgCQlpbnRlbF9kaWdfcG9ydC0+d3JpdGVf aW5mb2ZyYW1lID0gaWJ4X3dyaXRlX2luZm9mcmFtZTsKPiArCQlpbnRlbF9kaWdfcG9ydC0+cmVh ZF9pbmZvZnJhbWUgPSBpYnhfcmVhZF9pbmZvZnJhbWU7Cj4gIAkJaW50ZWxfZGlnX3BvcnQtPnNl dF9pbmZvZnJhbWVzID0gaWJ4X3NldF9pbmZvZnJhbWVzOwo+ICAJCWludGVsX2RpZ19wb3J0LT5p bmZvZnJhbWVzX2VuYWJsZWQgPSBpYnhfaW5mb2ZyYW1lc19lbmFibGVkOwo+ICAJfSBlbHNlIHsK PiAgCQlpbnRlbF9kaWdfcG9ydC0+d3JpdGVfaW5mb2ZyYW1lID0gY3B0X3dyaXRlX2luZm9mcmFt ZTsKPiArCQlpbnRlbF9kaWdfcG9ydC0+cmVhZF9pbmZvZnJhbWUgPSBjcHRfcmVhZF9pbmZvZnJh bWU7Cj4gIAkJaW50ZWxfZGlnX3BvcnQtPnNldF9pbmZvZnJhbWVzID0gY3B0X3NldF9pbmZvZnJh bWVzOwo+ICAJCWludGVsX2RpZ19wb3J0LT5pbmZvZnJhbWVzX2VuYWJsZWQgPSBjcHRfaW5mb2Zy YW1lc19lbmFibGVkOwo+ICAJfQo+IC0tIAo+IDIuMTYuNAo+IAo+IF9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+ IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAoKLS0gCkRhbmllbCBWZXR0ZXIKU29m dHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBt YWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=