From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Sharma, Shashank" Subject: Re: [PATCH 20/20] drm/i915: write AVI infoframes for LSPCON Date: Thu, 13 Jul 2017 18:09:53 +0530 Message-ID: <238816f6-bd93-b223-02a5-624111dd89d7@intel.com> References: <1499685528-6926-1-git-send-email-shashank.sharma@intel.com> <1499685528-6926-21-git-send-email-shashank.sharma@intel.com> <20170712172451.GR12629@intel.com> <34f7b895-e127-b0c3-b922-fd3edb7e683d@intel.com> <20170713122732.GT12629@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170713122732.GT12629@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?= Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org UmVnYXJkcwoKU2hhc2hhbmsKCgpPbiA3LzEzLzIwMTcgNTo1NyBQTSwgVmlsbGUgU3lyasOkbMOk IHdyb3RlOgo+IE9uIFRodSwgSnVsIDEzLCAyMDE3IGF0IDExOjExOjUzQU0gKzA1MzAsIFNoYXJt YSwgU2hhc2hhbmsgd3JvdGU6Cj4+IFJlZ2FyZHMKPj4KPj4gU2hhc2hhbmsKPj4KPj4KPj4gT24g Ny8xMi8yMDE3IDEwOjU0IFBNLCBWaWxsZSBTeXJqw6Rsw6Qgd3JvdGU6Cj4+PiBPbiBNb24sIEp1 bCAxMCwgMjAxNyBhdCAwNDo0ODo0OFBNICswNTMwLCBTaGFzaGFuayBTaGFybWEgd3JvdGU6Cj4+ Pj4gTFNQQ09OIGNoaXBzIGNhbid0IHBpY2sgdGhlIEhETUkgQVZJIGluZm9mcmFtZXMgZnJvbSBk aXJlY3QgbGluay4KPj4+PiBJbiBvcmRlciB0byBwYXNzIEFWSSBpbmZvZnJhbWVzIGZyb20gZGlz cGxheSBjb250cm9sbGVyIHRvIExTUENPTiwKPj4+PiB3ZSBoYXZlIHRvIHdyaXRlIGluZm9mcmFt ZSBwYWNrZXRzIGludG8gdmVuZG9yIHNwZWNpZmllZCBBVVggYWRkcmVzcy4KPj4+Pgo+Pj4+IEFs c28sIExTUENPTiB2ZW5kb3JzIHByb3ZpZGUgQVVYIG9mZnNldHMsIHRvIGluZm9ybSB0aGUgTFNQ Q09OCj4+Pj4gY2hpcCB0aGF0IHRoZSBBVkkgSUYgcGFja2V0cyBhcmUgd3JpdHRlbiwgc28gdGhh dCB0aGUgZmlybXdhcmUKPj4+PiBjYW4gcGljayBpdCB1cCBhbmQgYXBwbHkuCj4+Pj4KPj4+PiBU aGlzIHBhdGNoIGFkZHMgZnVuY3Rpb24gdG8gd3JpdGUgQVZJIGluZm9mcmFtZXMgZm9yIGJvdGgg TUNBIGFzCj4+Pj4gd2VsbCBhcyBQYXJhZGUgVGVjaCBMU1BDT04gY2hpcHMuIFRoZXNlIHR3byB2 ZW5kb3JzIHByb3ZpZGUgZGlmZmVyZW50Cj4+Pj4gbWV0aG9kcyBmb3Igd3JpdGluZyBpbmZvZnJh bWVzLCBzbyB0aGlzIHBhdGNoIGNvbnRhaW5zIHR3byBkaWZmZXJlbnQKPj4+PiBmdW5jdGlvbnMs IG9uZSBmb3IgZWFjaC4KPj4+IFNlZW1zIHRvIG1lIHRoYXQgd2Ugc2hvdWxkIGFsc28gYmUgY2hl Y2tpbmcgdGhlIHJlY2VpdmVyIGNhcCBmb3IgdGhlCj4+PiA0NDQtPjQyMCBjb252ZXJzaW9uIHN1 cHBvcnQsIGFuZCBlbmFibGUgaXQgaW4gdGhlIFBST1RPQ09MX0NPTlZFUlRFUgo+Pj4gRFBDRCBy ZWdpc3Rlci4gT3IgYXJlIHRoZXNlIExTUENPTiB0aGluZ3MgZXZlbiBpZ25vcmluZyB0aGF0IHBh cnQgb2YgdGhlCj4+PiBzcGVjPwo+PiBZZXMsIExTUENPTiBqdXN0IG5lZWRzIHRoZSBZQ0JDUjQ0 NCBpbnB1dCwgYW5kIGluZm8gZnJhbWVzIGZvciA0MjAsIGFuZAo+PiBpdCB3b3VsZCB0YWtlIGNh cmUgb2YKPj4gNDQ0LT40MjAgY29udmVyc2lvbiBpbiBGVy4KPiBTbyBpdCBzbm9vcHMgdGhlIEFW SSBpbmZvZnJhbWUgd2Ugd3JpdGUgdG8gaXQgdG8gZmlndXJlIG91dCB0aGF0IGl0IGhhcwo+IHRv IGRvIHRoZSA0NDQtPjQyMCBkb3duc2FtcGxpbmc/ClllcywgdGhhdCdzIGV4YWN0bHkgd2hhdCBp dCBkb2VzLgotIFNoYXNoYW5rCj4+IEFsc28sIGl0cyBhIHBhcnQgb2YgTFNQQ09OIHNwZWNzLCB0 aGF0IGl0IGhhcwo+PiB0byBoYXZlIDQyMCBvdXRwdXQgY2FwYWJpbGl0eS4KPj4KPj4gLSBTaGFz aGFuawo+Pj4+IENjOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwu Y29tPgo+Pj4+IENjOiBJbXJlIERlYWsgPGltcmUuZGVha0BpbnRlbC5jb20+Cj4+Pj4gU2lnbmVk LW9mZi1ieTogU2hhc2hhbmsgU2hhcm1hIDxzaGFzaGFuay5zaGFybWFAaW50ZWwuY29tPgo+Pj4+ IC0tLQo+Pj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jICAgIHwgICA4ICsr Cj4+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgfCAgIDMgKwo+Pj4+ ICAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xzcGNvbi5jIHwgMTc0ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKwo+Pj4+ICAgIDMgZmlsZXMgY2hhbmdlZCwgMTg1IGlu c2VydGlvbnMoKykKPj4+Pgo+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kZGkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4+Pj4gaW5kZXgg ZjY5MTcxMC4uOTQ0ZDlkNSAxMDA2NDQKPj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kZGkuYwo+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4+ Pj4gQEAgLTIwNjgsNiArMjA2OCwxNCBAQCB2b2lkIGludGVsX2RkaV9zZXRfYXZpX2luZm9mcmFt ZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCj4+Pj4gICAgCQkJCQkgICByZ2JfcXJhbmdl X2xpbWl0ZWQsCj4+Pj4gICAgCQkJCQkgICByZ2JfcXJhbmdlX3NlbGVjdGFibGUpOwo+Pj4+ICAg IAo+Pj4+ICsJaWYgKGNydGNfc3RhdGUtPmxzcGNvbl9hY3RpdmUpIHsKPj4+PiArCQlzdHJ1Y3Qg aW50ZWxfbHNwY29uICpsc3Bjb24gPSBlbmNfdG9faW50ZWxfbHNwY29uKGVuY29kZXIpOwo+Pj4+ ICsKPj4+PiArCQkvKiBMU1BDT04gd3JpdGVzIGluZm9mcmFtZXMgdmlhIEFVWCAqLwo+Pj4+ICsJ CWxzcGNvbi0+d3JpdGVfaW5mb2ZyYW1lKGVuY29kZXIsIGNydGNfc3RhdGUsICZmcmFtZSk7Cj4+ Pj4gKwkJcmV0dXJuOwo+Pj4+ICsJfQo+Pj4+ICsKPj4+PiAgICAJaW50ZWxfd3JpdGVfaW5mb2Zy YW1lKGVuY29kZXIsIGNydGNfc3RhdGUsICZmcmFtZSk7Cj4+Pj4gICAgfQo+Pj4+ICAgIAo+Pj4+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4+Pj4gaW5kZXggZmFkOWE1My4uM2U2ODZkMiAxMDA2 NDQKPj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+Pj4+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4+Pj4gQEAgLTEwNzksNiArMTA3OSw5 IEBAIHN0cnVjdCBpbnRlbF9sc3Bjb24gewo+Pj4+ICAgIAkvKiBBVkkgSUYgc2V0dXAgZnVuY3Rp b24gZm9yIExTUENPTiAqLwo+Pj4+ICAgIAl2b2lkICgqc2V0X2luZm9mcmFtZXMpKHN0cnVjdCBk cm1fZW5jb2RlciAqZW5jb2RlciwKPj4+PiAgICAJCQkJY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUpOwo+Pj4+ICsJdm9pZCAoKndyaXRlX2luZm9mcmFtZSkoc3RydWN0 IGRybV9lbmNvZGVyICplbmNvZGVyLAo+Pj4+ICsJCQkJY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUsCj4+Pj4gKwkJCQl1bmlvbiBoZG1pX2luZm9mcmFtZSAqZnJhbWUp Owo+Pj4+ICAgIH07Cj4+Pj4gICAgCj4+Pj4gICAgc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCB7 Cj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xzcGNvbi5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHNwY29uLmMKPj4+PiBpbmRleCA1M2RkZDM5Li4w MWZkZGY3IDEwMDY0NAo+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xzcGNv bi5jCj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHNwY29uLmMKPj4+PiBA QCAtMzEsNiArMzEsMTggQEAKPj4+PiAgICAjZGVmaW5lIExTUENPTl9WRU5ET1JfUEFSQURFX09V SSAweDAwMUNGOAo+Pj4+ICAgICNkZWZpbmUgTFNQQ09OX1ZFTkRPUl9NQ0FfT1VJIDB4MDA2MEFE Cj4+Pj4gICAgCj4+Pj4gKy8qIEFVWCBhZGRyZXNzZXMgdG8gd3JpdGUgQVZJIElGIGludG8gKi8K Pj4+PiArI2RlZmluZSBMU1BDT05fTUNBX0FWSV9JRl9XUklURV9PRkZTRVQgMHg1QzAKPj4+PiAr I2RlZmluZSBMU1BDT05fTUNBX0FWSV9JRl9DVFJMIDB4NURGCj4+Pj4gKyNkZWZpbmUgIExTUENP Tl9NQ0FfQVZJX0lGX0tJQ0tPRkYgKDEgPDwgMCkKPj4+PiArI2RlZmluZSAgTFNQQ09OX01DQV9B VklfSUZfSEFORExFRCAoMSA8PCAxKQo+Pj4+ICsKPj4+PiArI2RlZmluZSBMU1BDT05fUEFSQURF X0FWSV9JRl9XUklURV9PRkZTRVQgMHg1MTYKPj4+PiArI2RlZmluZSBMU1BDT05fUEFSQURFX0FW SV9JRl9DVFJMIDB4NTFFCj4+Pj4gKyNkZWZpbmUgIExTUENPTl9QQVJBREVfQVZJX0lGX0tJQ0tP RkYgKDEgPDwgNykKPj4+PiArI2RlZmluZSBMU1BDT05fUEFSQURFX0FWSV9JRl9TVEFUVVMgMHg1 MUYKPj4+PiArI2RlZmluZSAgTFNQQ09OX1BBUkFERV9BVklfSUZfSEFORExFRCAoMiA8PCA2KQo+ Pj4+ICsKPj4+PiAgICBzdGF0aWMgc3RydWN0IGludGVsX2RwICpsc3Bjb25fdG9faW50ZWxfZHAo c3RydWN0IGludGVsX2xzcGNvbiAqbHNwY29uKQo+Pj4+ICAgIHsKPj4+PiAgICAJc3RydWN0IGlu dGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQgPQo+Pj4+IEBAIC0yMTcsNiArMjI5LDE2NyBAQCBi b29sIGxzcGNvbl95Y2JjcjQyMF9jb25maWcoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rv ciwKPj4+PiAgICAJcmV0dXJuIGZhbHNlOwo+Pj4+ICAgIH0KPj4+PiAgICAKPj4+PiArc3RhdGlj IGJvb2wgX2xzcGNvbl93cml0ZV9pbmZvZnJhbWVfcGFyYWRlKHN0cnVjdCBkcm1fZHBfYXV4ICph dXgsCj4+Pj4gKwkJCQkJICAgdWludDhfdCAqYnVmZmVyLCBzc2l6ZV90IGxlbikKPj4+PiArewo+ Pj4+ICsJdTggYXZpX2lmX2N0cmw7Cj4+Pj4gKwl1OCBhdmlfaWZfc3RhdHVzOwo+Pj4+ICsJdTgg Y291bnQgPSAwOwo+Pj4+ICsJdTggcmV0cnkgPSA1Owo+Pj4+ICsJdTggYXZpX2J1Zls4XSA9IHsw LCB9Owo+Pj4+ICsJdWludDE2X3QgcmVnOwo+Pj4+ICsJc3NpemVfdCByZXQ7Cj4+Pj4gKwo+Pj4+ ICsJd2hpbGUgKGNvdW50KysgPCA0KSB7Cj4+Pj4gKwo+Pj4+ICsJCWRvIHsKPj4+PiArCQkJLyog SXMgTFNQQ09OIEZXIHJlYWR5ICovCj4+Pj4gKwkJCXJlZyA9IExTUENPTl9QQVJBREVfQVZJX0lG X0NUUkw7Cj4+Pj4gKwkJCXJldCA9IGRybV9kcF9kcGNkX3JlYWQoYXV4LCByZWcsICZhdmlfaWZf Y3RybCwgMSk7Cj4+Pj4gKwkJCWlmIChyZXQgPCAwKSB7Cj4+Pj4gKwkJCQlEUk1fRVJST1IoIkRQ Q0QgcmVhZCBmYWlsZWQsIGFkZDoweCV4XG4iLCByZWcpOwo+Pj4+ICsJCQkJcmV0dXJuIGZhbHNl Owo+Pj4+ICsJCQl9Cj4+Pj4gKwo+Pj4+ICsJCQlpZiAoYXZpX2lmX2N0cmwgJiBMU1BDT05fUEFS QURFX0FWSV9JRl9LSUNLT0ZGKQo+Pj4+ICsJCQkJYnJlYWs7Cj4+Pj4gKwkJCXVzbGVlcF9yYW5n ZSgxMDAsIDIwMCk7Cj4+Pj4gKwkJfSB3aGlsZSAoLS1yZXRyeSk7Cj4+Pj4gKwo+Pj4+ICsJCWlm ICghKGF2aV9pZl9jdHJsICYgTFNQQ09OX1BBUkFERV9BVklfSUZfS0lDS09GRikpIHsKPj4+PiAr CQkJRFJNX0VSUk9SKCJMU1BDT04gRlcgbm90IHJlYWR5IGZvciBpbmZvZnJhbWVzXG4iKTsKPj4+ PiArCQkJcmV0dXJuIGZhbHNlOwo+Pj4+ICsJCX0KPj4+PiArCj4+Pj4gKwkJLyoKPj4+PiArCQkg KiBBVkkgSW5mb2ZyYW1lIGNvbnRhaW5zIDMxIGJ5dGVzIG9mIGRhdGE6Cj4+Pj4gKwkJICoJSEIw IHRvIEhCMiAgICgzIGJ5dGVzIGhlYWRlcikKPj4+PiArCQkgKglQQjAgdG8gUEIyNyAoMjggYnl0 ZXMgZGF0YSkKPj4+PiArCQkgKiBBcyBwZXIgUGFyYWRlIHNwZWMsIHdoaWxlIHNlbmRpbmcgZmly c3QgYmxvY2sgKDhieXRlcyksCj4+Pj4gKwkJICogYnl0ZSAwIGlzIGtlcHQgZm9yIHJlcXVlc3Qg dG9rZW4gbm8sIGFuZCBieXRlMSAtIGJ5dGU3Cj4+Pj4gKwkJICogY29udGFpbiBmcmFtZSBkYXRh LiBTbyB3ZSBoYXZlIHRvIHBhY2sgZnJhbWUgbGlrZSB0aGlzOgo+Pj4+ICsJCSAqCWZpcnN0IGJs b2NrIG9mIDggYnl0ZXM6IDx0b2tlbj4gPEhCMC1IQjI+IDxQQjAtUEIzPgo+Pj4+ICsJCSAqCW5l eHQgMyBibG9ja3M6IDxQQjQtUEIyNz4KPj4+PiArCQkgKi8KPj4+PiArCQlpZiAoY291bnQpCj4+ Pj4gKwkJCW1lbWNweShhdmlfYnVmLCBidWZmZXIgKyBjb3VudCAqIDggLSAxLCA4KTsKPj4+PiAr CQllbHNlIHsKPj4+PiArCQkJYXZpX2J1ZlswXSA9IDE7Cj4+Pj4gKwkJCW1lbWNweSgmYXZpX2J1 ZlsxXSwgYnVmZmVyLCA3KTsKPj4+PiArCQl9Cj4+Pj4gKwo+Pj4+ICsJCS8qIFdyaXRlIDggYnl0 ZXMgb2YgZGF0YSBhdCBhIHRpbWUgKi8KPj4+PiArCQlyZWcgPSBMU1BDT05fUEFSQURFX0FWSV9J Rl9XUklURV9PRkZTRVQ7Cj4+Pj4gKwkJcmV0ID0gZHJtX2RwX2RwY2Rfd3JpdGUoYXV4LCByZWcs IGF2aV9idWYsIDgpOwo+Pj4+ICsJCWlmIChyZXQgPCAwKSB7Cj4+Pj4gKwkJCURSTV9FUlJPUigi RFBDRCB3cml0ZSBmYWlsZWQsIGFkZDoweCV4XG4iLCByZWcpOwo+Pj4+ICsJCQlyZXR1cm4gZmFs c2U7Cj4+Pj4gKwkJfQo+Pj4+ICsKPj4+PiArCQkvKgo+Pj4+ICsJCSAqIFdoaWxlIHNlbmRpbmcg YSBibG9jayBvZiA4IGJ5ZXMsIHdlIG5lZWQgdG8gaW5mb3JtIGJsb2NrCj4+Pj4gKwkJICogbnVt YmVyIHRvIEZXLCBieSBwcm9ncmFtbWluZyBiaXRzWzE6MF0gb2YgY3RybCByZWcgd2l0aAo+Pj4+ ICsJCSAqIGJsb2NrIG51bWJlcgo+Pj4+ICsJCSAqLwo+Pj4+ICsJCWF2aV9pZl9jdHJsID0gMHg4 MCArIGNvdW50Owo+Pj4+ICsJCXJlZyA9IExTUENPTl9QQVJBREVfQVZJX0lGX0NUUkw7Cj4+Pj4g KwkJcmV0ID0gZHJtX2RwX2RwY2Rfd3JpdGUoYXV4LCByZWcsICZhdmlfaWZfY3RybCwgMSk7Cj4+ Pj4gKwkJaWYgKHJldCA8IDApIHsKPj4+PiArCQkJRFJNX0VSUk9SKCJEUENEIHdyaXRlIGZhaWxl ZCwgYWRkOjB4JXhcbiIsIHJlZyk7Cj4+Pj4gKwkJCXJldHVybiBmYWxzZTsKPj4+PiArCQl9Cj4+ Pj4gKwl9Cj4+Pj4gKwo+Pj4+ICsJLyogQ2hlY2sgTFNQQ09OIEZXIHN0YXR1cyAqLwo+Pj4+ICsJ cmVnID0gTFNQQ09OX1BBUkFERV9BVklfSUZfU1RBVFVTOwo+Pj4+ICsJcmV0ID0gZHJtX2RwX2Rw Y2RfcmVhZChhdXgsIHJlZywgJmF2aV9pZl9zdGF0dXMsIDEpOwo+Pj4+ICsJaWYgKHJldCA8IDAp IHsKPj4+PiArCQlEUk1fRVJST1IoIkRQQ0Qgd3JpdGUgZmFpbGVkLCBhZGRyZXNzIDB4JXhcbiIs IHJlZyk7Cj4+Pj4gKwkJcmV0dXJuIGZhbHNlOwo+Pj4+ICsJfQo+Pj4+ICsKPj4+PiArCWlmIChh dmlfaWZfc3RhdHVzICYgTFNQQ09OX1BBUkFERV9BVklfSUZfSEFORExFRCkKPj4+PiArCQlEUk1f REVCVUdfS01TKCJBVkkgSUYgaGFuZGxlZCBieSBGV1xuIik7Cj4+Pj4gKwo+Pj4+ICsJcmV0dXJu IHRydWU7Cj4+Pj4gK30KPj4+PiArCj4+Pj4gK3N0YXRpYyBib29sIF9sc3Bjb25fd3JpdGVfaW5m b2ZyYW1lX21jYShzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4LAo+Pj4+ICsJCQkJCXVpbnQ4X3QgKmJ1 ZmZlciwgc3NpemVfdCBsZW4pCj4+Pj4gK3sKPj4+PiArCWludCByZXQ7Cj4+Pj4gKwl1aW50MzJf dCB2YWwgPSAwOwo+Pj4+ICsJdWludDE2X3QgcmVnOwo+Pj4+ICsJdWludDhfdCAqZGF0YSA9IGJ1 ZmZlcjsKPj4+PiArCj4+Pj4gKwlyZWcgPSBMU1BDT05fTUNBX0FWSV9JRl9XUklURV9PRkZTRVQ7 Cj4+Pj4gKwl3aGlsZSAodmFsIDwgbGVuKSB7Cj4+Pj4gKwkJcmV0ID0gZHJtX2RwX2RwY2Rfd3Jp dGUoYXV4LCByZWcsIGRhdGEsIDEpOwo+Pj4+ICsJCWlmIChyZXQgPCAwKSB7Cj4+Pj4gKwkJCURS TV9FUlJPUigiRFBDRCB3cml0ZSBmYWlsZWQsIGFkZDoweCV4XG4iLCByZWcpOwo+Pj4+ICsJCQly ZXR1cm4gZmFsc2U7Cj4+Pj4gKwkJfQo+Pj4+ICsJCXZhbCsrOyByZWcrKzsgZGF0YSsrOwo+Pj4+ ICsJfQo+Pj4+ICsKPj4+PiArCXZhbCA9IDA7Cj4+Pj4gKwlyZWcgPSBMU1BDT05fTUNBX0FWSV9J Rl9DVFJMOwo+Pj4+ICsJcmV0ID0gZHJtX2RwX2RwY2RfcmVhZChhdXgsIHJlZywgJnZhbCwgMSk7 Cj4+Pj4gKwlpZiAocmV0IDwgMCkgewo+Pj4+ICsJCURSTV9FUlJPUigiRFBDRCByZWFkIGZhaWxl ZCwgYWRkcmVzcyAweCV4XG4iLCByZWcpOwo+Pj4+ICsJCXJldHVybiBmYWxzZTsKPj4+PiArCX0K Pj4+PiArCj4+Pj4gKwkvKiBJbmRpY2F0ZSBMU1BDT04gY2hpcCBhYm91dCBpbmZvZnJhbWUsIGNs ZWFyIGJpdCAxIGFuZCBzZXQgYml0IDAgKi8KPj4+PiArCXZhbCAmPSB+TFNQQ09OX01DQV9BVklf SUZfSEFORExFRDsKPj4+PiArCXZhbCB8PSBMU1BDT05fTUNBX0FWSV9JRl9LSUNLT0ZGOwo+Pj4+ ICsKPj4+PiArCXJldCA9IGRybV9kcF9kcGNkX3dyaXRlKGF1eCwgcmVnLCAmdmFsLCAxKTsKPj4+ PiArCWlmIChyZXQgPCAwKSB7Cj4+Pj4gKwkJRFJNX0VSUk9SKCJEUENEIHJlYWQgZmFpbGVkLCBh ZGRyZXNzIDB4JXhcbiIsIHJlZyk7Cj4+Pj4gKwkJcmV0dXJuIGZhbHNlOwo+Pj4+ICsJfQo+Pj4+ ICsKPj4+PiArCXZhbCA9IDA7Cj4+Pj4gKwlyZXQgPSBkcm1fZHBfZHBjZF9yZWFkKGF1eCwgcmVn LCAmdmFsLCAxKTsKPj4+PiArCWlmIChyZXQgPCAwKSB7Cj4+Pj4gKwkJRFJNX0VSUk9SKCJEUENE IHJlYWQgZmFpbGVkLCBhZGRyZXNzIDB4JXhcbiIsIHJlZyk7Cj4+Pj4gKwkJcmV0dXJuIGZhbHNl Owo+Pj4+ICsJfQo+Pj4+ICsKPj4+PiArCWlmICh2YWwgPT0gTFNQQ09OX01DQV9BVklfSUZfSEFO RExFRCkKPj4+PiArCQlEUk1fREVCVUdfS01TKCJBVkkgSUYgaGFuZGxlZCBieSBGV1xuIik7Cj4+ Pj4gKwo+Pj4+ICsJcmV0dXJuIHRydWU7Cj4+Pj4gK30KPj4+PiArCj4+Pj4gK3ZvaWQgbHNwY29u X3dyaXRlX2luZm9mcmFtZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCj4+Pj4gKwkJCQkg IGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+Pj4+ICsJCQkJICB1 bmlvbiBoZG1pX2luZm9mcmFtZSAqZnJhbWUpCj4+Pj4gK3sKPj4+PiArCWJvb2wgcmV0Owo+Pj4+ ICsJc3NpemVfdCBsZW47Cj4+Pj4gKwl1aW50OF90IGJ1ZltWSURFT19ESVBfREFUQV9TSVpFXTsK Pj4+PiArCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoZW5jb2Rl cik7Cj4+Pj4gKwlzdHJ1Y3QgaW50ZWxfbHNwY29uICpsc3Bjb24gPSBlbmNfdG9faW50ZWxfbHNw Y29uKGVuY29kZXIpOwo+Pj4+ICsKPj4+PiArCWxlbiA9IGhkbWlfaW5mb2ZyYW1lX3BhY2soZnJh bWUsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOwo+Pj4+ICsJaWYgKGxlbiA8IDApIHsKPj4+PiArCQlEUk1f RVJST1IoIkZhaWxlZCB0byBwYWNrIEFWSSBJRlxuIik7Cj4+Pj4gKwkJcmV0dXJuOwo+Pj4+ICsJ fQo+Pj4+ICsKPj4+PiArCWlmIChsc3Bjb24tPnZlbmRvciA9PSBMU1BDT05fVkVORE9SX01DQSkK Pj4+PiArCQlyZXQgPSBfbHNwY29uX3dyaXRlX2luZm9mcmFtZV9tY2EoJmludGVsX2RwLT5hdXgs IGJ1ZiwgbGVuKTsKPj4+PiArCWVsc2UKPj4+PiArCQlyZXQgPSBfbHNwY29uX3dyaXRlX2luZm9m cmFtZV9wYXJhZGUoJmludGVsX2RwLT5hdXgsIGJ1ZiwgbGVuKTsKPj4+PiArCj4+Pj4gKwlpZiAo IXJldCkKPj4+PiArCQlEUk1fRVJST1IoIkZhaWxlZCB0byB3cml0ZSBBVkkgaW5mb2ZyYW1lc1xu Iik7Cj4+Pj4gKwllbHNlCj4+Pj4gKwkJRFJNX0RFQlVHX0RSSVZFUigiQVZJIGluZm9mcmFtZXMg dXBkYXRlZCBzdWNjZXNzZnVsbHlcbiIpOwo+Pj4+ICt9Cj4+Pj4gKwo+Pj4+ICAgIHZvaWQgbHNw Y29uX3Jlc3VtZShzdHJ1Y3QgaW50ZWxfbHNwY29uICpsc3Bjb24pCj4+Pj4gICAgewo+Pj4+ICAg IAllbnVtIGRybV9sc3Bjb25fbW9kZSBleHBlY3RlZF9tb2RlOwo+Pj4+IEBAIC0yODIsNiArNDU1 LDcgQEAgYm9vbCBsc3Bjb25faW5pdChzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9k aWdfcG9ydCkKPj4+PiAgICAKPj4+PiAgICAJY29ubmVjdG9yLT55Y2Jjcl80MjBfYWxsb3dlZCA9 IHRydWU7Cj4+Pj4gICAgCWxzcGNvbi0+c2V0X2luZm9mcmFtZXMgPSBpbnRlbF9kZGlfc2V0X2F2 aV9pbmZvZnJhbWU7Cj4+Pj4gKwlsc3Bjb24tPndyaXRlX2luZm9mcmFtZSA9IGxzcGNvbl93cml0 ZV9pbmZvZnJhbWU7Cj4+Pj4gICAgCWRybV9kcF9yZWFkX2Rlc2MoJmRwLT5hdXgsICZkcC0+ZGVz YywgZHJtX2RwX2lzX2JyYW5jaChkcC0+ZHBjZCkpOwo+Pj4+ICAgIAo+Pj4+ICAgIAlEUk1fREVC VUdfS01TKCJTdWNjZXNzOiBMU1BDT04gaW5pdFxuIik7Cj4+Pj4gLS0gCj4+Pj4gMi43LjQKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBt YWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=