From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 20/20] drm/i915: write AVI infoframes for LSPCON Date: Thu, 13 Jul 2017 15:55:41 +0300 Message-ID: <20170713125541.GA12629@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> <238816f6-bd93-b223-02a5-624111dd89d7@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <238816f6-bd93-b223-02a5-624111dd89d7@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Sharma, Shashank" Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBKdWwgMTMsIDIwMTcgYXQgMDY6MDk6NTNQTSArMDUzMCwgU2hhcm1hLCBTaGFzaGFu ayB3cm90ZToKPiBSZWdhcmRzCj4gCj4gU2hhc2hhbmsKPiAKPiAKPiBPbiA3LzEzLzIwMTcgNTo1 NyBQTSwgVmlsbGUgU3lyasOkbMOkIHdyb3RlOgo+ID4gT24gVGh1LCBKdWwgMTMsIDIwMTcgYXQg MTE6MTE6NTNBTSArMDUzMCwgU2hhcm1hLCBTaGFzaGFuayB3cm90ZToKPiA+PiBSZWdhcmRzCj4g Pj4KPiA+PiBTaGFzaGFuawo+ID4+Cj4gPj4KPiA+PiBPbiA3LzEyLzIwMTcgMTA6NTQgUE0sIFZp bGxlIFN5cmrDpGzDpCB3cm90ZToKPiA+Pj4gT24gTW9uLCBKdWwgMTAsIDIwMTcgYXQgMDQ6NDg6 NDhQTSArMDUzMCwgU2hhc2hhbmsgU2hhcm1hIHdyb3RlOgo+ID4+Pj4gTFNQQ09OIGNoaXBzIGNh bid0IHBpY2sgdGhlIEhETUkgQVZJIGluZm9mcmFtZXMgZnJvbSBkaXJlY3QgbGluay4KPiA+Pj4+ IEluIG9yZGVyIHRvIHBhc3MgQVZJIGluZm9mcmFtZXMgZnJvbSBkaXNwbGF5IGNvbnRyb2xsZXIg dG8gTFNQQ09OLAo+ID4+Pj4gd2UgaGF2ZSB0byB3cml0ZSBpbmZvZnJhbWUgcGFja2V0cyBpbnRv IHZlbmRvciBzcGVjaWZpZWQgQVVYIGFkZHJlc3MuCj4gPj4+Pgo+ID4+Pj4gQWxzbywgTFNQQ09O IHZlbmRvcnMgcHJvdmlkZSBBVVggb2Zmc2V0cywgdG8gaW5mb3JtIHRoZSBMU1BDT04KPiA+Pj4+ IGNoaXAgdGhhdCB0aGUgQVZJIElGIHBhY2tldHMgYXJlIHdyaXR0ZW4sIHNvIHRoYXQgdGhlIGZp cm13YXJlCj4gPj4+PiBjYW4gcGljayBpdCB1cCBhbmQgYXBwbHkuCj4gPj4+Pgo+ID4+Pj4gVGhp cyBwYXRjaCBhZGRzIGZ1bmN0aW9uIHRvIHdyaXRlIEFWSSBpbmZvZnJhbWVzIGZvciBib3RoIE1D QSBhcwo+ID4+Pj4gd2VsbCBhcyBQYXJhZGUgVGVjaCBMU1BDT04gY2hpcHMuIFRoZXNlIHR3byB2 ZW5kb3JzIHByb3ZpZGUgZGlmZmVyZW50Cj4gPj4+PiBtZXRob2RzIGZvciB3cml0aW5nIGluZm9m cmFtZXMsIHNvIHRoaXMgcGF0Y2ggY29udGFpbnMgdHdvIGRpZmZlcmVudAo+ID4+Pj4gZnVuY3Rp b25zLCBvbmUgZm9yIGVhY2guCj4gPj4+IFNlZW1zIHRvIG1lIHRoYXQgd2Ugc2hvdWxkIGFsc28g YmUgY2hlY2tpbmcgdGhlIHJlY2VpdmVyIGNhcCBmb3IgdGhlCj4gPj4+IDQ0NC0+NDIwIGNvbnZl cnNpb24gc3VwcG9ydCwgYW5kIGVuYWJsZSBpdCBpbiB0aGUgUFJPVE9DT0xfQ09OVkVSVEVSCj4g Pj4+IERQQ0QgcmVnaXN0ZXIuIE9yIGFyZSB0aGVzZSBMU1BDT04gdGhpbmdzIGV2ZW4gaWdub3Jp bmcgdGhhdCBwYXJ0IG9mIHRoZQo+ID4+PiBzcGVjPwo+ID4+IFllcywgTFNQQ09OIGp1c3QgbmVl ZHMgdGhlIFlDQkNSNDQ0IGlucHV0LCBhbmQgaW5mbyBmcmFtZXMgZm9yIDQyMCwgYW5kCj4gPj4g aXQgd291bGQgdGFrZSBjYXJlIG9mCj4gPj4gNDQ0LT40MjAgY29udmVyc2lvbiBpbiBGVy4KPiA+ IFNvIGl0IHNub29wcyB0aGUgQVZJIGluZm9mcmFtZSB3ZSB3cml0ZSB0byBpdCB0byBmaWd1cmUg b3V0IHRoYXQgaXQgaGFzCj4gPiB0byBkbyB0aGUgNDQ0LT40MjAgZG93bnNhbXBsaW5nPwo+IFll cywgdGhhdCdzIGV4YWN0bHkgd2hhdCBpdCBkb2VzLgoKQ2FuIHlvdSBhZGQgYSBjb21tZW50IHNv bWV3aGVyZSBhcHByb3ByaWF0ZSB0byBtYWtlIHRoYXQgY2xlYXIuCk90aGVyd2lzZSBwZW9wbGUg bWlnaHQgd29uZGVyIHdoeSB3ZSdyZSBub3QgZW5hYmxpbmcgdGhlIGRvd25zYW1wbGluZyBhdAph bGwuCgpEb2VzIExTUENPTiB0aGVuIG5vdCBldmVuIGltcGxlbWVudCB0aGUgUFJPVE9DT0xfQ09O VkVSVEVSIERDUEQKcmVnaXN0ZXJzPwoKQ2FuIHlvdSBzZW5kIHRoZSBzcGVjIGZvciB0aGlzIHN0 dWZmIG15IHdheT8gV2hhdCBJIGhhdmUgbm93IGRvZXNuJ3QKZG9jdW1lbnQgYW55IERQQ0QgcmVn aXN0ZXJzLgoKPiAtIFNoYXNoYW5rCj4gPj4gQWxzbywgaXRzIGEgcGFydCBvZiBMU1BDT04gc3Bl Y3MsIHRoYXQgaXQgaGFzCj4gPj4gdG8gaGF2ZSA0MjAgb3V0cHV0IGNhcGFiaWxpdHkuCj4gPj4K PiA+PiAtIFNoYXNoYW5rCj4gPj4+PiBDYzogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxh QGxpbnV4LmludGVsLmNvbT4KPiA+Pj4+IENjOiBJbXJlIERlYWsgPGltcmUuZGVha0BpbnRlbC5j b20+Cj4gPj4+PiBTaWduZWQtb2ZmLWJ5OiBTaGFzaGFuayBTaGFybWEgPHNoYXNoYW5rLnNoYXJt YUBpbnRlbC5jb20+Cj4gPj4+PiAtLS0KPiA+Pj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RkaS5jICAgIHwgICA4ICsrCj4gPj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcnYuaCAgICB8ICAgMyArCj4gPj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9s c3Bjb24uYyB8IDE3NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiA+Pj4+ ICAgIDMgZmlsZXMgY2hhbmdlZCwgMTg1IGluc2VydGlvbnMoKykKPiA+Pj4+Cj4gPj4+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kZGkuYwo+ID4+Pj4gaW5kZXggZjY5MTcxMC4uOTQ0ZDlkNSAxMDA2NDQK PiA+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gPj4+PiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ID4+Pj4gQEAgLTIwNjgsNiArMjA2 OCwxNCBAQCB2b2lkIGludGVsX2RkaV9zZXRfYXZpX2luZm9mcmFtZShzdHJ1Y3QgZHJtX2VuY29k ZXIgKmVuY29kZXIsCj4gPj4+PiAgICAJCQkJCSAgIHJnYl9xcmFuZ2VfbGltaXRlZCwKPiA+Pj4+ ICAgIAkJCQkJICAgcmdiX3FyYW5nZV9zZWxlY3RhYmxlKTsKPiA+Pj4+ICAgIAo+ID4+Pj4gKwlp ZiAoY3J0Y19zdGF0ZS0+bHNwY29uX2FjdGl2ZSkgewo+ID4+Pj4gKwkJc3RydWN0IGludGVsX2xz cGNvbiAqbHNwY29uID0gZW5jX3RvX2ludGVsX2xzcGNvbihlbmNvZGVyKTsKPiA+Pj4+ICsKPiA+ Pj4+ICsJCS8qIExTUENPTiB3cml0ZXMgaW5mb2ZyYW1lcyB2aWEgQVVYICovCj4gPj4+PiArCQls c3Bjb24tPndyaXRlX2luZm9mcmFtZShlbmNvZGVyLCBjcnRjX3N0YXRlLCAmZnJhbWUpOwo+ID4+ Pj4gKwkJcmV0dXJuOwo+ID4+Pj4gKwl9Cj4gPj4+PiArCj4gPj4+PiAgICAJaW50ZWxfd3JpdGVf aW5mb2ZyYW1lKGVuY29kZXIsIGNydGNfc3RhdGUsICZmcmFtZSk7Cj4gPj4+PiAgICB9Cj4gPj4+ PiAgICAKPiA+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYu aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPj4+PiBpbmRleCBmYWQ5YTUz Li4zZTY4NmQyIDEwMDY0NAo+ID4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmgKPiA+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPj4+ PiBAQCAtMTA3OSw2ICsxMDc5LDkgQEAgc3RydWN0IGludGVsX2xzcGNvbiB7Cj4gPj4+PiAgICAJ LyogQVZJIElGIHNldHVwIGZ1bmN0aW9uIGZvciBMU1BDT04gKi8KPiA+Pj4+ICAgIAl2b2lkICgq c2V0X2luZm9mcmFtZXMpKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKPiA+Pj4+ICAgIAkJ CQljb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7Cj4gPj4+PiArCXZv aWQgKCp3cml0ZV9pbmZvZnJhbWUpKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKPiA+Pj4+ ICsJCQkJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gPj4+PiAr CQkJCXVuaW9uIGhkbWlfaW5mb2ZyYW1lICpmcmFtZSk7Cj4gPj4+PiAgICB9Owo+ID4+Pj4gICAg Cj4gPj4+PiAgICBzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0IHsKPiA+Pj4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9sc3Bjb24uYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2xzcGNvbi5jCj4gPj4+PiBpbmRleCA1M2RkZDM5Li4wMWZkZGY3IDEwMDY0NAo+ ID4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHNwY29uLmMKPiA+Pj4+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xzcGNvbi5jCj4gPj4+PiBAQCAtMzEsNiAr MzEsMTggQEAKPiA+Pj4+ICAgICNkZWZpbmUgTFNQQ09OX1ZFTkRPUl9QQVJBREVfT1VJIDB4MDAx Q0Y4Cj4gPj4+PiAgICAjZGVmaW5lIExTUENPTl9WRU5ET1JfTUNBX09VSSAweDAwNjBBRAo+ID4+ Pj4gICAgCj4gPj4+PiArLyogQVVYIGFkZHJlc3NlcyB0byB3cml0ZSBBVkkgSUYgaW50byAqLwo+ ID4+Pj4gKyNkZWZpbmUgTFNQQ09OX01DQV9BVklfSUZfV1JJVEVfT0ZGU0VUIDB4NUMwCj4gPj4+ PiArI2RlZmluZSBMU1BDT05fTUNBX0FWSV9JRl9DVFJMIDB4NURGCj4gPj4+PiArI2RlZmluZSAg TFNQQ09OX01DQV9BVklfSUZfS0lDS09GRiAoMSA8PCAwKQo+ID4+Pj4gKyNkZWZpbmUgIExTUENP Tl9NQ0FfQVZJX0lGX0hBTkRMRUQgKDEgPDwgMSkKPiA+Pj4+ICsKPiA+Pj4+ICsjZGVmaW5lIExT UENPTl9QQVJBREVfQVZJX0lGX1dSSVRFX09GRlNFVCAweDUxNgo+ID4+Pj4gKyNkZWZpbmUgTFNQ Q09OX1BBUkFERV9BVklfSUZfQ1RSTCAweDUxRQo+ID4+Pj4gKyNkZWZpbmUgIExTUENPTl9QQVJB REVfQVZJX0lGX0tJQ0tPRkYgKDEgPDwgNykKPiA+Pj4+ICsjZGVmaW5lIExTUENPTl9QQVJBREVf QVZJX0lGX1NUQVRVUyAweDUxRgo+ID4+Pj4gKyNkZWZpbmUgIExTUENPTl9QQVJBREVfQVZJX0lG X0hBTkRMRUQgKDIgPDwgNikKPiA+Pj4+ICsKPiA+Pj4+ICAgIHN0YXRpYyBzdHJ1Y3QgaW50ZWxf ZHAgKmxzcGNvbl90b19pbnRlbF9kcChzdHJ1Y3QgaW50ZWxfbHNwY29uICpsc3Bjb24pCj4gPj4+ PiAgICB7Cj4gPj4+PiAgICAJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQgPQo+ ID4+Pj4gQEAgLTIxNyw2ICsyMjksMTY3IEBAIGJvb2wgbHNwY29uX3ljYmNyNDIwX2NvbmZpZyhz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ID4+Pj4gICAgCXJldHVybiBmYWxzZTsK PiA+Pj4+ICAgIH0KPiA+Pj4+ICAgIAo+ID4+Pj4gK3N0YXRpYyBib29sIF9sc3Bjb25fd3JpdGVf aW5mb2ZyYW1lX3BhcmFkZShzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4LAo+ID4+Pj4gKwkJCQkJICAg dWludDhfdCAqYnVmZmVyLCBzc2l6ZV90IGxlbikKPiA+Pj4+ICt7Cj4gPj4+PiArCXU4IGF2aV9p Zl9jdHJsOwo+ID4+Pj4gKwl1OCBhdmlfaWZfc3RhdHVzOwo+ID4+Pj4gKwl1OCBjb3VudCA9IDA7 Cj4gPj4+PiArCXU4IHJldHJ5ID0gNTsKPiA+Pj4+ICsJdTggYXZpX2J1Zls4XSA9IHswLCB9Owo+ ID4+Pj4gKwl1aW50MTZfdCByZWc7Cj4gPj4+PiArCXNzaXplX3QgcmV0Owo+ID4+Pj4gKwo+ID4+ Pj4gKwl3aGlsZSAoY291bnQrKyA8IDQpIHsKPiA+Pj4+ICsKPiA+Pj4+ICsJCWRvIHsKPiA+Pj4+ ICsJCQkvKiBJcyBMU1BDT04gRlcgcmVhZHkgKi8KPiA+Pj4+ICsJCQlyZWcgPSBMU1BDT05fUEFS QURFX0FWSV9JRl9DVFJMOwo+ID4+Pj4gKwkJCXJldCA9IGRybV9kcF9kcGNkX3JlYWQoYXV4LCBy ZWcsICZhdmlfaWZfY3RybCwgMSk7Cj4gPj4+PiArCQkJaWYgKHJldCA8IDApIHsKPiA+Pj4+ICsJ CQkJRFJNX0VSUk9SKCJEUENEIHJlYWQgZmFpbGVkLCBhZGQ6MHgleFxuIiwgcmVnKTsKPiA+Pj4+ ICsJCQkJcmV0dXJuIGZhbHNlOwo+ID4+Pj4gKwkJCX0KPiA+Pj4+ICsKPiA+Pj4+ICsJCQlpZiAo YXZpX2lmX2N0cmwgJiBMU1BDT05fUEFSQURFX0FWSV9JRl9LSUNLT0ZGKQo+ID4+Pj4gKwkJCQli cmVhazsKPiA+Pj4+ICsJCQl1c2xlZXBfcmFuZ2UoMTAwLCAyMDApOwo+ID4+Pj4gKwkJfSB3aGls ZSAoLS1yZXRyeSk7Cj4gPj4+PiArCj4gPj4+PiArCQlpZiAoIShhdmlfaWZfY3RybCAmIExTUENP Tl9QQVJBREVfQVZJX0lGX0tJQ0tPRkYpKSB7Cj4gPj4+PiArCQkJRFJNX0VSUk9SKCJMU1BDT04g Rlcgbm90IHJlYWR5IGZvciBpbmZvZnJhbWVzXG4iKTsKPiA+Pj4+ICsJCQlyZXR1cm4gZmFsc2U7 Cj4gPj4+PiArCQl9Cj4gPj4+PiArCj4gPj4+PiArCQkvKgo+ID4+Pj4gKwkJICogQVZJIEluZm9m cmFtZSBjb250YWlucyAzMSBieXRlcyBvZiBkYXRhOgo+ID4+Pj4gKwkJICoJSEIwIHRvIEhCMiAg ICgzIGJ5dGVzIGhlYWRlcikKPiA+Pj4+ICsJCSAqCVBCMCB0byBQQjI3ICgyOCBieXRlcyBkYXRh KQo+ID4+Pj4gKwkJICogQXMgcGVyIFBhcmFkZSBzcGVjLCB3aGlsZSBzZW5kaW5nIGZpcnN0IGJs b2NrICg4Ynl0ZXMpLAo+ID4+Pj4gKwkJICogYnl0ZSAwIGlzIGtlcHQgZm9yIHJlcXVlc3QgdG9r ZW4gbm8sIGFuZCBieXRlMSAtIGJ5dGU3Cj4gPj4+PiArCQkgKiBjb250YWluIGZyYW1lIGRhdGEu IFNvIHdlIGhhdmUgdG8gcGFjayBmcmFtZSBsaWtlIHRoaXM6Cj4gPj4+PiArCQkgKglmaXJzdCBi bG9jayBvZiA4IGJ5dGVzOiA8dG9rZW4+IDxIQjAtSEIyPiA8UEIwLVBCMz4KPiA+Pj4+ICsJCSAq CW5leHQgMyBibG9ja3M6IDxQQjQtUEIyNz4KPiA+Pj4+ICsJCSAqLwo+ID4+Pj4gKwkJaWYgKGNv dW50KQo+ID4+Pj4gKwkJCW1lbWNweShhdmlfYnVmLCBidWZmZXIgKyBjb3VudCAqIDggLSAxLCA4 KTsKPiA+Pj4+ICsJCWVsc2Ugewo+ID4+Pj4gKwkJCWF2aV9idWZbMF0gPSAxOwo+ID4+Pj4gKwkJ CW1lbWNweSgmYXZpX2J1ZlsxXSwgYnVmZmVyLCA3KTsKPiA+Pj4+ICsJCX0KPiA+Pj4+ICsKPiA+ Pj4+ICsJCS8qIFdyaXRlIDggYnl0ZXMgb2YgZGF0YSBhdCBhIHRpbWUgKi8KPiA+Pj4+ICsJCXJl ZyA9IExTUENPTl9QQVJBREVfQVZJX0lGX1dSSVRFX09GRlNFVDsKPiA+Pj4+ICsJCXJldCA9IGRy bV9kcF9kcGNkX3dyaXRlKGF1eCwgcmVnLCBhdmlfYnVmLCA4KTsKPiA+Pj4+ICsJCWlmIChyZXQg PCAwKSB7Cj4gPj4+PiArCQkJRFJNX0VSUk9SKCJEUENEIHdyaXRlIGZhaWxlZCwgYWRkOjB4JXhc biIsIHJlZyk7Cj4gPj4+PiArCQkJcmV0dXJuIGZhbHNlOwo+ID4+Pj4gKwkJfQo+ID4+Pj4gKwo+ ID4+Pj4gKwkJLyoKPiA+Pj4+ICsJCSAqIFdoaWxlIHNlbmRpbmcgYSBibG9jayBvZiA4IGJ5ZXMs IHdlIG5lZWQgdG8gaW5mb3JtIGJsb2NrCj4gPj4+PiArCQkgKiBudW1iZXIgdG8gRlcsIGJ5IHBy b2dyYW1taW5nIGJpdHNbMTowXSBvZiBjdHJsIHJlZyB3aXRoCj4gPj4+PiArCQkgKiBibG9jayBu dW1iZXIKPiA+Pj4+ICsJCSAqLwo+ID4+Pj4gKwkJYXZpX2lmX2N0cmwgPSAweDgwICsgY291bnQ7 Cj4gPj4+PiArCQlyZWcgPSBMU1BDT05fUEFSQURFX0FWSV9JRl9DVFJMOwo+ID4+Pj4gKwkJcmV0 ID0gZHJtX2RwX2RwY2Rfd3JpdGUoYXV4LCByZWcsICZhdmlfaWZfY3RybCwgMSk7Cj4gPj4+PiAr CQlpZiAocmV0IDwgMCkgewo+ID4+Pj4gKwkJCURSTV9FUlJPUigiRFBDRCB3cml0ZSBmYWlsZWQs IGFkZDoweCV4XG4iLCByZWcpOwo+ID4+Pj4gKwkJCXJldHVybiBmYWxzZTsKPiA+Pj4+ICsJCX0K PiA+Pj4+ICsJfQo+ID4+Pj4gKwo+ID4+Pj4gKwkvKiBDaGVjayBMU1BDT04gRlcgc3RhdHVzICov Cj4gPj4+PiArCXJlZyA9IExTUENPTl9QQVJBREVfQVZJX0lGX1NUQVRVUzsKPiA+Pj4+ICsJcmV0 ID0gZHJtX2RwX2RwY2RfcmVhZChhdXgsIHJlZywgJmF2aV9pZl9zdGF0dXMsIDEpOwo+ID4+Pj4g KwlpZiAocmV0IDwgMCkgewo+ID4+Pj4gKwkJRFJNX0VSUk9SKCJEUENEIHdyaXRlIGZhaWxlZCwg YWRkcmVzcyAweCV4XG4iLCByZWcpOwo+ID4+Pj4gKwkJcmV0dXJuIGZhbHNlOwo+ID4+Pj4gKwl9 Cj4gPj4+PiArCj4gPj4+PiArCWlmIChhdmlfaWZfc3RhdHVzICYgTFNQQ09OX1BBUkFERV9BVklf SUZfSEFORExFRCkKPiA+Pj4+ICsJCURSTV9ERUJVR19LTVMoIkFWSSBJRiBoYW5kbGVkIGJ5IEZX XG4iKTsKPiA+Pj4+ICsKPiA+Pj4+ICsJcmV0dXJuIHRydWU7Cj4gPj4+PiArfQo+ID4+Pj4gKwo+ ID4+Pj4gK3N0YXRpYyBib29sIF9sc3Bjb25fd3JpdGVfaW5mb2ZyYW1lX21jYShzdHJ1Y3QgZHJt X2RwX2F1eCAqYXV4LAo+ID4+Pj4gKwkJCQkJdWludDhfdCAqYnVmZmVyLCBzc2l6ZV90IGxlbikK PiA+Pj4+ICt7Cj4gPj4+PiArCWludCByZXQ7Cj4gPj4+PiArCXVpbnQzMl90IHZhbCA9IDA7Cj4g Pj4+PiArCXVpbnQxNl90IHJlZzsKPiA+Pj4+ICsJdWludDhfdCAqZGF0YSA9IGJ1ZmZlcjsKPiA+ Pj4+ICsKPiA+Pj4+ICsJcmVnID0gTFNQQ09OX01DQV9BVklfSUZfV1JJVEVfT0ZGU0VUOwo+ID4+ Pj4gKwl3aGlsZSAodmFsIDwgbGVuKSB7Cj4gPj4+PiArCQlyZXQgPSBkcm1fZHBfZHBjZF93cml0 ZShhdXgsIHJlZywgZGF0YSwgMSk7Cj4gPj4+PiArCQlpZiAocmV0IDwgMCkgewo+ID4+Pj4gKwkJ CURSTV9FUlJPUigiRFBDRCB3cml0ZSBmYWlsZWQsIGFkZDoweCV4XG4iLCByZWcpOwo+ID4+Pj4g KwkJCXJldHVybiBmYWxzZTsKPiA+Pj4+ICsJCX0KPiA+Pj4+ICsJCXZhbCsrOyByZWcrKzsgZGF0 YSsrOwo+ID4+Pj4gKwl9Cj4gPj4+PiArCj4gPj4+PiArCXZhbCA9IDA7Cj4gPj4+PiArCXJlZyA9 IExTUENPTl9NQ0FfQVZJX0lGX0NUUkw7Cj4gPj4+PiArCXJldCA9IGRybV9kcF9kcGNkX3JlYWQo YXV4LCByZWcsICZ2YWwsIDEpOwo+ID4+Pj4gKwlpZiAocmV0IDwgMCkgewo+ID4+Pj4gKwkJRFJN X0VSUk9SKCJEUENEIHJlYWQgZmFpbGVkLCBhZGRyZXNzIDB4JXhcbiIsIHJlZyk7Cj4gPj4+PiAr CQlyZXR1cm4gZmFsc2U7Cj4gPj4+PiArCX0KPiA+Pj4+ICsKPiA+Pj4+ICsJLyogSW5kaWNhdGUg TFNQQ09OIGNoaXAgYWJvdXQgaW5mb2ZyYW1lLCBjbGVhciBiaXQgMSBhbmQgc2V0IGJpdCAwICov Cj4gPj4+PiArCXZhbCAmPSB+TFNQQ09OX01DQV9BVklfSUZfSEFORExFRDsKPiA+Pj4+ICsJdmFs IHw9IExTUENPTl9NQ0FfQVZJX0lGX0tJQ0tPRkY7Cj4gPj4+PiArCj4gPj4+PiArCXJldCA9IGRy bV9kcF9kcGNkX3dyaXRlKGF1eCwgcmVnLCAmdmFsLCAxKTsKPiA+Pj4+ICsJaWYgKHJldCA8IDAp IHsKPiA+Pj4+ICsJCURSTV9FUlJPUigiRFBDRCByZWFkIGZhaWxlZCwgYWRkcmVzcyAweCV4XG4i LCByZWcpOwo+ID4+Pj4gKwkJcmV0dXJuIGZhbHNlOwo+ID4+Pj4gKwl9Cj4gPj4+PiArCj4gPj4+ PiArCXZhbCA9IDA7Cj4gPj4+PiArCXJldCA9IGRybV9kcF9kcGNkX3JlYWQoYXV4LCByZWcsICZ2 YWwsIDEpOwo+ID4+Pj4gKwlpZiAocmV0IDwgMCkgewo+ID4+Pj4gKwkJRFJNX0VSUk9SKCJEUENE IHJlYWQgZmFpbGVkLCBhZGRyZXNzIDB4JXhcbiIsIHJlZyk7Cj4gPj4+PiArCQlyZXR1cm4gZmFs c2U7Cj4gPj4+PiArCX0KPiA+Pj4+ICsKPiA+Pj4+ICsJaWYgKHZhbCA9PSBMU1BDT05fTUNBX0FW SV9JRl9IQU5ETEVEKQo+ID4+Pj4gKwkJRFJNX0RFQlVHX0tNUygiQVZJIElGIGhhbmRsZWQgYnkg RldcbiIpOwo+ID4+Pj4gKwo+ID4+Pj4gKwlyZXR1cm4gdHJ1ZTsKPiA+Pj4+ICt9Cj4gPj4+PiAr Cj4gPj4+PiArdm9pZCBsc3Bjb25fd3JpdGVfaW5mb2ZyYW1lKHN0cnVjdCBkcm1fZW5jb2RlciAq ZW5jb2RlciwKPiA+Pj4+ICsJCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSwKPiA+Pj4+ICsJCQkJICB1bmlvbiBoZG1pX2luZm9mcmFtZSAqZnJhbWUpCj4gPj4+ PiArewo+ID4+Pj4gKwlib29sIHJldDsKPiA+Pj4+ICsJc3NpemVfdCBsZW47Cj4gPj4+PiArCXVp bnQ4X3QgYnVmW1ZJREVPX0RJUF9EQVRBX1NJWkVdOwo+ID4+Pj4gKwlzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKGVuY29kZXIpOwo+ID4+Pj4gKwlzdHJ1Y3QgaW50 ZWxfbHNwY29uICpsc3Bjb24gPSBlbmNfdG9faW50ZWxfbHNwY29uKGVuY29kZXIpOwo+ID4+Pj4g Kwo+ID4+Pj4gKwlsZW4gPSBoZG1pX2luZm9mcmFtZV9wYWNrKGZyYW1lLCBidWYsIHNpemVvZihi dWYpKTsKPiA+Pj4+ICsJaWYgKGxlbiA8IDApIHsKPiA+Pj4+ICsJCURSTV9FUlJPUigiRmFpbGVk IHRvIHBhY2sgQVZJIElGXG4iKTsKPiA+Pj4+ICsJCXJldHVybjsKPiA+Pj4+ICsJfQo+ID4+Pj4g Kwo+ID4+Pj4gKwlpZiAobHNwY29uLT52ZW5kb3IgPT0gTFNQQ09OX1ZFTkRPUl9NQ0EpCj4gPj4+ PiArCQlyZXQgPSBfbHNwY29uX3dyaXRlX2luZm9mcmFtZV9tY2EoJmludGVsX2RwLT5hdXgsIGJ1 ZiwgbGVuKTsKPiA+Pj4+ICsJZWxzZQo+ID4+Pj4gKwkJcmV0ID0gX2xzcGNvbl93cml0ZV9pbmZv ZnJhbWVfcGFyYWRlKCZpbnRlbF9kcC0+YXV4LCBidWYsIGxlbik7Cj4gPj4+PiArCj4gPj4+PiAr CWlmICghcmV0KQo+ID4+Pj4gKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gd3JpdGUgQVZJIGluZm9m cmFtZXNcbiIpOwo+ID4+Pj4gKwllbHNlCj4gPj4+PiArCQlEUk1fREVCVUdfRFJJVkVSKCJBVkkg aW5mb2ZyYW1lcyB1cGRhdGVkIHN1Y2Nlc3NmdWxseVxuIik7Cj4gPj4+PiArfQo+ID4+Pj4gKwo+ ID4+Pj4gICAgdm9pZCBsc3Bjb25fcmVzdW1lKHN0cnVjdCBpbnRlbF9sc3Bjb24gKmxzcGNvbikK PiA+Pj4+ICAgIHsKPiA+Pj4+ICAgIAllbnVtIGRybV9sc3Bjb25fbW9kZSBleHBlY3RlZF9tb2Rl Owo+ID4+Pj4gQEAgLTI4Miw2ICs0NTUsNyBAQCBib29sIGxzcGNvbl9pbml0KHN0cnVjdCBpbnRl bF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0KQo+ID4+Pj4gICAgCj4gPj4+PiAgICAJY29u bmVjdG9yLT55Y2Jjcl80MjBfYWxsb3dlZCA9IHRydWU7Cj4gPj4+PiAgICAJbHNwY29uLT5zZXRf aW5mb2ZyYW1lcyA9IGludGVsX2RkaV9zZXRfYXZpX2luZm9mcmFtZTsKPiA+Pj4+ICsJbHNwY29u LT53cml0ZV9pbmZvZnJhbWUgPSBsc3Bjb25fd3JpdGVfaW5mb2ZyYW1lOwo+ID4+Pj4gICAgCWRy bV9kcF9yZWFkX2Rlc2MoJmRwLT5hdXgsICZkcC0+ZGVzYywgZHJtX2RwX2lzX2JyYW5jaChkcC0+ ZHBjZCkpOwo+ID4+Pj4gICAgCj4gPj4+PiAgICAJRFJNX0RFQlVHX0tNUygiU3VjY2VzczogTFNQ Q09OIGluaXRcbiIpOwo+ID4+Pj4gLS0gCj4gPj4+PiAyLjcuNAoKLS0gClZpbGxlIFN5cmrDpGzD pApJbnRlbCBPVEMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==