From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 13/18] drm/i915: Precompute HDMI infoframes Date: Mon, 24 Sep 2018 19:42:33 +0300 Message-ID: <20180924164233.GS5565@intel.com> References: <20180920185145.1912-1-ville.syrjala@linux.intel.com> <20180920185145.1912-14-ville.syrjala@linux.intel.com> <20180924155825.GZ11082@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: <20180924155825.GZ11082@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 T24gTW9uLCBTZXAgMjQsIDIwMTggYXQgMDU6NTg6MjVQTSArMDIwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBUaHUsIFNlcCAyMCwgMjAxOCBhdCAwOTo1MTo0MFBNICswMzAwLCBWaWxsZSBT eXJqYWxhIHdyb3RlOgo+ID4gRnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxp bnV4LmludGVsLmNvbT4KPiA+IAo+ID4gU3RvcmUgdGhlIGluZm9mcmFtZXMgaW4gdGhlIGNydGMg c3RhdGUgYW5kIHByZWNvbXB1dGUgdGhlbSBpbgo+ID4gLmNvbXB1dGVfY29uZmlnKCkuIFdoaWxl IHByZWNvbXB1dGluZyB3ZSdsbCBhbHNvIGZpbGwgb3V0IHRoZQo+ID4gaW5mb3JhbWVzLmVuYWJs ZSBiaXRtYXNrIGFwcHJvcHJpYXRlbHkuCj4gPiAKPiA+IFNpZ25lZC1vZmYtYnk6IFZpbGxlIFN5 cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gPiAtLS0KPiA+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyAgfCAgIDEgKwo+ID4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oICB8ICAgNSArCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfaGRtaS5jIHwgMjQ5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCj4g PiAgMyBmaWxlcyBjaGFuZ2VkLCAxODcgaW5zZXJ0aW9ucygrKSwgNjggZGVsZXRpb25zKC0pCj4g PiAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gPiBpbmRleCAxOWZlZjg4ZTY4MGUuLjVm M2JkNTM2ZDI2MSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rk aS5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ID4gQEAgLTMz OTEsNiArMzM5MSw3IEBAIHZvaWQgaW50ZWxfZGRpX2dldF9jb25maWcoc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXIsCj4gPiAgCQlpbnRlbF9kaWdfcG9ydCA9IGVuY190b19kaWdfcG9ydCgm ZW5jb2Rlci0+YmFzZSk7Cj4gPiAgCj4gPiAgCQlwaXBlX2NvbmZpZy0+aW5mb2ZyYW1lcy5lbmFi bGUgfD0KPiA+ICsJCQlpbnRlbF9oZG1pX2luZm9mcmFtZV9lbmFibGUoSERNSV9QQUNLRVRfVFlQ RV9OVUxMKSB8Cj4gCj4gTWlzcGxhY2VkIGh1bms/IEFzc3VtaW5nIEknbSByZWFkaW5nIHRoaXMg Y29ycmVjdGx5LCB0aGlzIHdpbGwgZ2l2ZSB5b3UgYQo+IDAuIE5vdCBleGFjdGx5IHN1cmUgd2hh dCdzIGdvaW5nIG9uIGhlcmUgLi4uIEkgZ3Vlc3MgSSdtIG5vdCBmb2xsb3dpbmcgd2h5Cj4gd2Ug Y2FyZSBhYm91dCBUWVBFX05VTEwsIGFuZCB3aHkgd2UgaGF2ZSB0byByZWNvbnN0cnVjdCBpdCBo ZXJlPwoKSSByYXRoZXIgd2FudGVkIHRoZSBpbmZvZnJhbWVzIGJpdG1hc2sgdG8gYmUgdHJ1dGhm dWwgYWJvdXQgd2hpY2gKcGFja2V0cyB3ZSdyZSBzZW5kaW5nIG91dC4gQnV0IG5vdCBxdWl0ZSBz dXJlIHdoeSBJIGluY2x1ZGVkIGl0IGluCnRoaXMgcGFydGljdWxhciBwYXRjaC4KCj4gCj4gSSB0 aG91Z2h0IFRZUEVfTlVMTCBpcyBlcXVpdmFsZW50IHRvIHN0YXRlLT5oYXNfaGRtaV9zaW5rPyBD b21tZW50Cj4gKHVuZm9ydHVuYXRlbHkgbm90IHlldCBrZXJuZWxkb2MpIGV2ZW4gZXhwbGFpbnMg dGhhdCAuLi4KClllYWggaXQncyB0aGUgc2FtZSB0aGluZyAoYXBhcnQgZnJvbSB0aGUgZzR4IERJ UCBlbmFibGUgdGhpbmcpLiBNYXliZQpJIHNob3VsZCByZW1vdmUgaGFzX2hkbWlfc2luayBlbnRp cmVseSBhbmQganVzdCByZWx5IG9uIHRoZSBudWxsIHBhY2tldApiaXQgaW5zdGVhZC4uLgoKPiAK PiBNYXliZSBqdXN0IG51a2UgYWxsIHRoZSBUWVBFX05VTEwgdHJhY2tpbmcgaGVyZSwgcGVyaGFw cyB3aXRoIHRoZSBnNHgKPiAoZXhjZXB0IGZvciBnNHggaXRzZWxmLCBiZWNhdXNlIGl0J3Mgc2hh cmVkIHRoZXJlKSBkZWNvZGVyIHRvIGFsc28gdGFrZQo+IERJUF9FTkFCTEUgaW50byBhY2NvdW50 IGZvciBoYXNfaGRtaV9zaW5rLgoKVGhhdCB3b3VsZCB0aGUgb3RoZXIgb3B0aW9uIEkgc3VwcG9z ZS4gVGhvdWdoIEkgbWlnaHQgbGlrZSB0aGUgaWRlYQpvZiBkcm9wcGluZyB0aGUgYm9vbCBmb3Ig dGhlIGJpdG1hc2sgYSBiaXQgbW9yZSBwZXJoYXBzLgoKPiAKPiBPciB1cGRhdGUgdGhlIGNvbW1l bnQgaW4gaW50ZWxfY3J0Y19zdGF0ZS4KPiAKPiBPdGhlcndpc2UgbGd0bSwgdGhvdWdodCBhZG1p dHRlZGx5IEkgZGlkIGNsZWFuIG92ZXIgdGhlIGRldGFpbHMgYSBiaXQsCj4gdHJ1c3RpbmcgQ0kg YW5kIGdjYyB0byBjYXRjaCB0aGUgc21hbGwgc3R1ZmYgOi0pCj4gCj4gUmV2aWV3ZWQtYnk6IERh bmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+IHdpdGggdGhlIFRZUEVfTlVMTAo+ IHN0b3J5IHNvbWVob3cgZmlndXJlZCBvdXQuCj4gLURhbmllbAo+IAo+IAo+ID4gIAkJCWludGVs X2hkbWlfaW5mb2ZyYW1lc19lbmFibGVkKGVuY29kZXIsIHBpcGVfY29uZmlnKTsKPiA+ICAKPiA+ ICAJCWlmIChwaXBlX2NvbmZpZy0+aW5mb2ZyYW1lcy5lbmFibGUpCj4gPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcnYuaAo+ID4gaW5kZXggNTBjMGMwNDllZTE1Li4zNTc2MjRhNmJmZTIgMTAwNjQ0Cj4g PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+IEBAIC04OTUsNiArODk1LDEwIEBAIHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlIHsKPiA+ICAKPiA+ICAJc3RydWN0IHsKPiA+ICAJCXUzMiBlbmFi bGU7Cj4gPiArCQl1MzIgZ2NwOwo+ID4gKwkJdW5pb24gaGRtaV9pbmZvZnJhbWUgYXZpOwo+ID4g KwkJdW5pb24gaGRtaV9pbmZvZnJhbWUgc3BkOwo+ID4gKwkJdW5pb24gaGRtaV9pbmZvZnJhbWUg aGRtaTsKPiA+ICAJfSBpbmZvZnJhbWVzOwo+ID4gIAo+ID4gIAkvKiBIRE1JIHNjcmFtYmxpbmcg c3RhdHVzICovCj4gPiBAQCAtMTg2Miw2ICsxODY2LDcgQEAgdm9pZCBpbnRlbF9kcF9kdWFsX21v ZGVfc2V0X3RtZHNfb3V0cHV0KHN0cnVjdCBpbnRlbF9oZG1pICpoZG1pLCBib29sIGVuYWJsZSk7 Cj4gPiAgdm9pZCBpbnRlbF9pbmZvZnJhbWVfaW5pdChzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0 ICppbnRlbF9kaWdfcG9ydCk7Cj4gPiAgdTMyIGludGVsX2hkbWlfaW5mb2ZyYW1lc19lbmFibGVk KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gIAkJCQkgIGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKPiA+ICt1MzIgaW50ZWxfaGRtaV9pbmZvZnJh bWVfZW5hYmxlKHVuc2lnbmVkIGludCB0eXBlKTsKPiA+ICAKPiA+ICAKPiA+ICAvKiBpbnRlbF9s dmRzLmMgKi8KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1p LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMKPiA+IGluZGV4IDk4YTQ0MDg0 MzI0Yy4uNDkxMDAxZmMwZmFkIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfaGRtaS5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMK PiA+IEBAIC00NDYsNiArNDQ2LDE4IEBAIHN0YXRpYyBjb25zdCB1OCBpbmZvZnJhbWVfdHlwZV90 b19pZHhbXSA9IHsKPiA+ICAJSERNSV9JTkZPRlJBTUVfVFlQRV9WRU5ET1IsCj4gPiAgfTsKPiA+ ICAKPiA+ICt1MzIgaW50ZWxfaGRtaV9pbmZvZnJhbWVfZW5hYmxlKHVuc2lnbmVkIGludCB0eXBl KQo+ID4gK3sKPiA+ICsJaW50IGk7Cj4gPiArCj4gPiArCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9T SVpFKGluZm9mcmFtZV90eXBlX3RvX2lkeCk7IGkrKykgewo+ID4gKwkJaWYgKGluZm9mcmFtZV90 eXBlX3RvX2lkeFtpXSA9PSB0eXBlKQo+ID4gKwkJCXJldHVybiBCSVQoaSk7Cj4gPiArCX0KPiA+ ICsKPiA+ICsJcmV0dXJuIDA7Cj4gPiArfQo+ID4gKwo+ID4gIHUzMiBpbnRlbF9oZG1pX2luZm9m cmFtZXNfZW5hYmxlZChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ICAJCQkJICBj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiA+ICB7Cj4gPiBAQCAt NDkxLDE1ICs1MDMsMjMgQEAgdTMyIGludGVsX2hkbWlfaW5mb2ZyYW1lc19lbmFibGVkKHN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gICAqLwo+ID4gIHN0YXRpYyB2b2lkIGludGVs X3dyaXRlX2luZm9mcmFtZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ICAJCQkJ ICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiA+IC0JCQkJICB1 bmlvbiBoZG1pX2luZm9mcmFtZSAqZnJhbWUpCj4gPiArCQkJCSAgZW51bSBoZG1pX2luZm9mcmFt ZV90eXBlIHR5cGUsCj4gPiArCQkJCSAgY29uc3QgdW5pb24gaGRtaV9pbmZvZnJhbWUgKmZyYW1l KQo+ID4gIHsKPiA+ICAJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQg PSBlbmNfdG9fZGlnX3BvcnQoJmVuY29kZXItPmJhc2UpOwo+ID4gIAl1OCBidWZmZXJbVklERU9f RElQX0RBVEFfU0laRV07Cj4gPiAgCXNzaXplX3QgbGVuOwo+ID4gIAo+ID4gKwlpZiAoKGNydGNf c3RhdGUtPmluZm9mcmFtZXMuZW5hYmxlICYKPiA+ICsJICAgICBpbnRlbF9oZG1pX2luZm9mcmFt ZV9lbmFibGUodHlwZSkpID09IDApCj4gPiArCQlyZXR1cm47Cj4gPiArCj4gPiArCWlmIChXQVJO X09OKGZyYW1lLT5hbnkudHlwZSAhPSB0eXBlKSkKPiA+ICsJCXJldHVybjsKPiA+ICsKPiA+ICAJ Lyogc2VlIGNvbW1lbnQgYWJvdmUgZm9yIHRoZSByZWFzb24gZm9yIHRoaXMgb2Zmc2V0ICovCj4g PiAtCWxlbiA9IGhkbWlfaW5mb2ZyYW1lX3BhY2soZnJhbWUsIGJ1ZmZlciArIDEsIHNpemVvZihi dWZmZXIpIC0gMSk7Cj4gPiAtCWlmIChsZW4gPCAwKQo+ID4gKwlsZW4gPSBoZG1pX2luZm9mcmFt ZV9wYWNrX29ubHkoZnJhbWUsIGJ1ZmZlciArIDEsIHNpemVvZihidWZmZXIpIC0gMSk7Cj4gPiAr CWlmIChXQVJOX09OKGxlbiA8IDApKQo+ID4gIAkJcmV0dXJuOwo+ID4gIAo+ID4gIAkvKiBJbnNl cnQgdGhlICdob2xlJyAoc2VlIGJpZyBjb21tZW50IGFib3ZlKSBhdCBwb3NpdGlvbiAzICovCj4g PiBAQCAtNTA3LDg1ICs1MjcsMTExIEBAIHN0YXRpYyB2b2lkIGludGVsX3dyaXRlX2luZm9mcmFt ZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ICAJYnVmZmVyWzNdID0gMDsKPiA+ ICAJbGVuKys7Cj4gPiAgCj4gPiAtCWludGVsX2RpZ19wb3J0LT53cml0ZV9pbmZvZnJhbWUoZW5j b2RlciwKPiA+IC0JCQkJCWNydGNfc3RhdGUsCj4gPiAtCQkJCQlmcmFtZS0+YW55LnR5cGUsIGJ1 ZmZlciwgbGVuKTsKPiA+ICsJaW50ZWxfZGlnX3BvcnQtPndyaXRlX2luZm9mcmFtZShlbmNvZGVy LCBjcnRjX3N0YXRlLCB0eXBlLCBidWZmZXIsIGxlbik7Cj4gPiAgfQo+ID4gIAo+ID4gLXN0YXRp YyB2b2lkIGludGVsX2hkbWlfc2V0X2F2aV9pbmZvZnJhbWUoc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXIsCj4gPiAtCQkJCQkgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNf c3RhdGUsCj4gPiAtCQkJCQkgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5f c3RhdGUpCj4gPiArc3RhdGljIGJvb2wKPiA+ICtpbnRlbF9oZG1pX2NvbXB1dGVfYXZpX2luZm9m cmFtZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ICsJCQkJIHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ID4gKwkJCQkgc3RydWN0IGRybV9jb25uZWN0b3Jf c3RhdGUgKmNvbm5fc3RhdGUpCj4gPiAgewo+ID4gIAlzdHJ1Y3QgaW50ZWxfaGRtaSAqaW50ZWxf aGRtaSA9IGVuY190b19pbnRlbF9oZG1pKCZlbmNvZGVyLT5iYXNlKTsKPiA+ICsJc3RydWN0IGhk bWlfYXZpX2luZm9mcmFtZSAqZnJhbWUgPSAmY3J0Y19zdGF0ZS0+aW5mb2ZyYW1lcy5hdmkuYXZp Owo+ID4gKwlib29sIGlzX2hkbWkyX3NpbmsgPSBjb25uX3N0YXRlLT5jb25uZWN0b3ItPmRpc3Bs YXlfaW5mby5oZG1pLnNjZGMuc3VwcG9ydGVkOwo+ID4gIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3Bs YXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9Cj4gPiAgCQkmY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3Rl ZF9tb2RlOwo+ID4gLQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gJmludGVsX2hk bWktPmF0dGFjaGVkX2Nvbm5lY3Rvci0+YmFzZTsKPiA+IC0JYm9vbCBpc19oZG1pMl9zaW5rID0g Y29ubmVjdG9yLT5kaXNwbGF5X2luZm8uaGRtaS5zY2RjLnN1cHBvcnRlZDsKPiA+IC0JdW5pb24g aGRtaV9pbmZvZnJhbWUgZnJhbWU7Cj4gPiAgCWludCByZXQ7Cj4gPiAgCj4gPiAtCXJldCA9IGRy bV9oZG1pX2F2aV9pbmZvZnJhbWVfZnJvbV9kaXNwbGF5X21vZGUoJmZyYW1lLmF2aSwKPiA+ICsJ aWYgKCFjcnRjX3N0YXRlLT5oYXNfaW5mb2ZyYW1lKQo+ID4gKwkJcmV0dXJuIHRydWU7Cj4gPiAr Cj4gPiArCWNydGNfc3RhdGUtPmluZm9mcmFtZXMuZW5hYmxlIHw9Cj4gPiArCQlpbnRlbF9oZG1p X2luZm9mcmFtZV9lbmFibGUoSERNSV9JTkZPRlJBTUVfVFlQRV9BVkkpOwo+ID4gKwo+ID4gKwly ZXQgPSBkcm1faGRtaV9hdmlfaW5mb2ZyYW1lX2Zyb21fZGlzcGxheV9tb2RlKGZyYW1lLAo+ID4g IAkJCQkJCSAgICAgICBhZGp1c3RlZF9tb2RlLAo+ID4gIAkJCQkJCSAgICAgICBpc19oZG1pMl9z aW5rKTsKPiA+IC0JaWYgKHJldCA8IDApIHsKPiA+IC0JCURSTV9FUlJPUigiY291bGRuJ3QgZmls bCBBVkkgaW5mb2ZyYW1lXG4iKTsKPiA+IC0JCXJldHVybjsKPiA+IC0JfQo+ID4gKwlpZiAocmV0 KQo+ID4gKwkJcmV0dXJuIGZhbHNlOwo+ID4gIAo+ID4gIAlpZiAoY3J0Y19zdGF0ZS0+eWNiY3I0 MjApCj4gPiAtCQlmcmFtZS5hdmkuY29sb3JzcGFjZSA9IEhETUlfQ09MT1JTUEFDRV9ZVVY0MjA7 Cj4gPiArCQlmcmFtZS0+Y29sb3JzcGFjZSA9IEhETUlfQ09MT1JTUEFDRV9ZVVY0MjA7Cj4gPiAg CWVsc2UKPiA+IC0JCWZyYW1lLmF2aS5jb2xvcnNwYWNlID0gSERNSV9DT0xPUlNQQUNFX1JHQjsK PiA+ICsJCWZyYW1lLT5jb2xvcnNwYWNlID0gSERNSV9DT0xPUlNQQUNFX1JHQjsKPiA+ICAKPiA+ IC0JZHJtX2hkbWlfYXZpX2luZm9mcmFtZV9xdWFudF9yYW5nZSgmZnJhbWUuYXZpLCBhZGp1c3Rl ZF9tb2RlLAo+ID4gKwlkcm1faGRtaV9hdmlfaW5mb2ZyYW1lX3F1YW50X3JhbmdlKGZyYW1lLCBh ZGp1c3RlZF9tb2RlLAo+ID4gIAkJCQkJICAgY3J0Y19zdGF0ZS0+bGltaXRlZF9jb2xvcl9yYW5n ZSA/Cj4gPiAgCQkJCQkgICBIRE1JX1FVQU5USVpBVElPTl9SQU5HRV9MSU1JVEVEIDoKPiA+ICAJ CQkJCSAgIEhETUlfUVVBTlRJWkFUSU9OX1JBTkdFX0ZVTEwsCj4gPiAgCQkJCQkgICBpbnRlbF9o ZG1pLT5yZ2JfcXVhbnRfcmFuZ2Vfc2VsZWN0YWJsZSwKPiA+ICAJCQkJCSAgIGlzX2hkbWkyX3Np bmspOwo+ID4gIAo+ID4gLQlkcm1faGRtaV9hdmlfaW5mb2ZyYW1lX2NvbnRlbnRfdHlwZSgmZnJh bWUuYXZpLAo+ID4gLQkJCQkJICAgIGNvbm5fc3RhdGUpOwo+ID4gKwlkcm1faGRtaV9hdmlfaW5m b2ZyYW1lX2NvbnRlbnRfdHlwZShmcmFtZSwgY29ubl9zdGF0ZSk7Cj4gPiAgCj4gPiAgCS8qIFRP RE86IGhhbmRsZSBwaXhlbCByZXBldGl0aW9uIGZvciBZQ0JDUjQyMCBvdXRwdXRzICovCj4gPiAt CWludGVsX3dyaXRlX2luZm9mcmFtZShlbmNvZGVyLCBjcnRjX3N0YXRlLAo+ID4gLQkJCSAgICAg ICZmcmFtZSk7Cj4gPiArCj4gPiArCXJldCA9IGhkbWlfYXZpX2luZm9mcmFtZV9jaGVjayhmcmFt ZSk7Cj4gPiArCWlmIChXQVJOX09OKHJldCkpCj4gPiArCQlyZXR1cm4gZmFsc2U7Cj4gPiArCj4g PiArCXJldHVybiB0cnVlOwo+ID4gIH0KPiA+ICAKPiA+IC1zdGF0aWMgdm9pZCBpbnRlbF9oZG1p X3NldF9zcGRfaW5mb2ZyYW1lKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gLQkJ CQkJIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ID4gK3N0YXRp YyBib29sCj4gPiAraW50ZWxfaGRtaV9jb21wdXRlX3NwZF9pbmZvZnJhbWUoc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIsCj4gPiArCQkJCSBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSwKPiA+ICsJCQkJIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRl KQo+ID4gIHsKPiA+IC0JdW5pb24gaGRtaV9pbmZvZnJhbWUgZnJhbWU7Cj4gPiArCXN0cnVjdCBo ZG1pX3NwZF9pbmZvZnJhbWUgKmZyYW1lID0gJmNydGNfc3RhdGUtPmluZm9mcmFtZXMuc3BkLnNw ZDsKPiA+ICAJaW50IHJldDsKPiA+ICAKPiA+IC0JcmV0ID0gaGRtaV9zcGRfaW5mb2ZyYW1lX2lu aXQoJmZyYW1lLnNwZCwgIkludGVsIiwgIkludGVncmF0ZWQgZ2Z4Iik7Cj4gPiAtCWlmIChyZXQg PCAwKSB7Cj4gPiAtCQlEUk1fRVJST1IoImNvdWxkbid0IGZpbGwgU1BEIGluZm9mcmFtZVxuIik7 Cj4gPiAtCQlyZXR1cm47Cj4gPiAtCX0KPiA+ICsJaWYgKCFjcnRjX3N0YXRlLT5oYXNfaW5mb2Zy YW1lKQo+ID4gKwkJcmV0dXJuIHRydWU7Cj4gPiAgCj4gPiAtCWZyYW1lLnNwZC5zZGkgPSBIRE1J X1NQRF9TRElfUEM7Cj4gPiArCWNydGNfc3RhdGUtPmluZm9mcmFtZXMuZW5hYmxlIHw9Cj4gPiAr CQlpbnRlbF9oZG1pX2luZm9mcmFtZV9lbmFibGUoSERNSV9JTkZPRlJBTUVfVFlQRV9TUEQpOwo+ ID4gIAo+ID4gLQlpbnRlbF93cml0ZV9pbmZvZnJhbWUoZW5jb2RlciwgY3J0Y19zdGF0ZSwKPiA+ IC0JCQkgICAgICAmZnJhbWUpOwo+ID4gKwlyZXQgPSBoZG1pX3NwZF9pbmZvZnJhbWVfaW5pdChm cmFtZSwgIkludGVsIiwgIkludGVncmF0ZWQgZ2Z4Iik7Cj4gPiArCWlmIChXQVJOX09OKHJldCkp Cj4gPiArCQlyZXR1cm4gZmFsc2U7Cj4gPiArCj4gPiArCWZyYW1lLT5zZGkgPSBIRE1JX1NQRF9T RElfUEM7Cj4gPiArCj4gPiArCXJldCA9IGhkbWlfc3BkX2luZm9mcmFtZV9jaGVjayhmcmFtZSk7 Cj4gPiArCWlmIChXQVJOX09OKHJldCkpCj4gPiArCQlyZXR1cm4gZmFsc2U7Cj4gPiArCj4gPiAr CXJldHVybiB0cnVlOwo+ID4gIH0KPiA+ICAKPiA+IC1zdGF0aWMgdm9pZAo+ID4gLWludGVsX2hk bWlfc2V0X2hkbWlfaW5mb2ZyYW1lKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4g LQkJCSAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ID4g LQkJCSAgICAgIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQo+ ID4gLXsKPiA+IC0JdW5pb24gaGRtaV9pbmZvZnJhbWUgZnJhbWU7Cj4gPiArc3RhdGljIGJvb2wK PiA+ICtpbnRlbF9oZG1pX2NvbXB1dGVfaGRtaV9pbmZvZnJhbWUoc3RydWN0IGludGVsX2VuY29k ZXIgKmVuY29kZXIsCj4gPiArCQkJCSAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUsCj4gPiArCQkJCSAgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCj4g PiArewo+ID4gKwlzdHJ1Y3QgaGRtaV92ZW5kb3JfaW5mb2ZyYW1lICpmcmFtZSA9Cj4gPiArCQkm Y3J0Y19zdGF0ZS0+aW5mb2ZyYW1lcy5oZG1pLnZlbmRvci5oZG1pOwo+ID4gKwljb25zdCBzdHJ1 Y3QgZHJtX2Rpc3BsYXlfaW5mbyAqaW5mbyA9Cj4gPiArCQkmY29ubl9zdGF0ZS0+Y29ubmVjdG9y LT5kaXNwbGF5X2luZm87Cj4gPiAgCWludCByZXQ7Cj4gPiAgCj4gPiAtCXJldCA9IGRybV9oZG1p X3ZlbmRvcl9pbmZvZnJhbWVfZnJvbV9kaXNwbGF5X21vZGUoJmZyYW1lLnZlbmRvci5oZG1pLAo+ ID4gKwlpZiAoIWNydGNfc3RhdGUtPmhhc19pbmZvZnJhbWUgfHwgIWluZm8tPmhhc19oZG1pX2lu Zm9mcmFtZSkKPiA+ICsJCXJldHVybiB0cnVlOwo+ID4gKwo+ID4gKwljcnRjX3N0YXRlLT5pbmZv ZnJhbWVzLmVuYWJsZSB8PQo+ID4gKwkJaW50ZWxfaGRtaV9pbmZvZnJhbWVfZW5hYmxlKEhETUlf SU5GT0ZSQU1FX1RZUEVfVkVORE9SKTsKPiA+ICsKPiA+ICsJcmV0ID0gZHJtX2hkbWlfdmVuZG9y X2luZm9mcmFtZV9mcm9tX2Rpc3BsYXlfbW9kZShmcmFtZSwKPiA+ICAJCQkJCQkJICBjb25uX3N0 YXRlLT5jb25uZWN0b3IsCj4gPiAgCQkJCQkJCSAgJmNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRf bW9kZSk7Cj4gPiAtCWlmIChyZXQgPCAwKQo+ID4gLQkJcmV0dXJuOwo+ID4gKwlpZiAoV0FSTl9P TihyZXQpKQo+ID4gKwkJcmV0dXJuIGZhbHNlOwo+ID4gIAo+ID4gLQlpbnRlbF93cml0ZV9pbmZv ZnJhbWUoZW5jb2RlciwgY3J0Y19zdGF0ZSwKPiA+IC0JCQkgICAgICAmZnJhbWUpOwo+ID4gKwly ZXQgPSBoZG1pX3ZlbmRvcl9pbmZvZnJhbWVfY2hlY2soZnJhbWUpOwo+ID4gKwlpZiAoV0FSTl9P TihyZXQpKQo+ID4gKwkJcmV0dXJuIGZhbHNlOwo+ID4gKwo+ID4gKwlyZXR1cm4gdHJ1ZTsKPiA+ ICB9Cj4gPiAgCj4gPiAgc3RhdGljIHZvaWQgZzR4X3NldF9pbmZvZnJhbWVzKHN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyLAo+ID4gQEAgLTY0NSw5ICs2OTEsMTUgQEAgc3RhdGljIHZvaWQg ZzR4X3NldF9pbmZvZnJhbWVzKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gIAlJ OTE1X1dSSVRFKHJlZywgdmFsKTsKPiA+ICAJUE9TVElOR19SRUFEKHJlZyk7Cj4gPiAgCj4gPiAt CWludGVsX2hkbWlfc2V0X2F2aV9pbmZvZnJhbWUoZW5jb2RlciwgY3J0Y19zdGF0ZSwgY29ubl9z dGF0ZSk7Cj4gPiAtCWludGVsX2hkbWlfc2V0X3NwZF9pbmZvZnJhbWUoZW5jb2RlciwgY3J0Y19z dGF0ZSk7Cj4gPiAtCWludGVsX2hkbWlfc2V0X2hkbWlfaW5mb2ZyYW1lKGVuY29kZXIsIGNydGNf c3RhdGUsIGNvbm5fc3RhdGUpOwo+ID4gKwlpbnRlbF93cml0ZV9pbmZvZnJhbWUoZW5jb2Rlciwg Y3J0Y19zdGF0ZSwKPiA+ICsJCQkgICAgICBIRE1JX0lORk9GUkFNRV9UWVBFX0FWSSwKPiA+ICsJ CQkgICAgICAmY3J0Y19zdGF0ZS0+aW5mb2ZyYW1lcy5hdmkpOwo+ID4gKwlpbnRlbF93cml0ZV9p bmZvZnJhbWUoZW5jb2RlciwgY3J0Y19zdGF0ZSwKPiA+ICsJCQkgICAgICBIRE1JX0lORk9GUkFN RV9UWVBFX1NQRCwKPiA+ICsJCQkgICAgICAmY3J0Y19zdGF0ZS0+aW5mb2ZyYW1lcy5zcGQpOwo+ ID4gKwlpbnRlbF93cml0ZV9pbmZvZnJhbWUoZW5jb2RlciwgY3J0Y19zdGF0ZSwKPiA+ICsJCQkg ICAgICBIRE1JX0lORk9GUkFNRV9UWVBFX1ZFTkRPUiwKPiA+ICsJCQkgICAgICAmY3J0Y19zdGF0 ZS0+aW5mb2ZyYW1lcy5oZG1pKTsKPiA+ICB9Cj4gPiAgCj4gPiAgc3RhdGljIGJvb2wgaGRtaV9z aW5rX2lzX2RlZXBfY29sb3IoY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5f c3RhdGUpCj4gPiBAQCAtNzEzLDcgKzc2NSwxMCBAQCBzdGF0aWMgYm9vbCBpbnRlbF9oZG1pX3Nl dF9nY3BfaW5mb2ZyYW1lKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2 KTsKPiA+ICAJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3Rh dGUtPmJhc2UuY3J0Yyk7Cj4gPiAgCWk5MTVfcmVnX3QgcmVnOwo+ID4gLQl1MzIgdmFsID0gMDsK PiA+ICsKPiA+ICsJaWYgKChjcnRjX3N0YXRlLT5pbmZvZnJhbWVzLmVuYWJsZSAmCj4gPiArCSAg ICAgaW50ZWxfaGRtaV9pbmZvZnJhbWVfZW5hYmxlKEhETUlfUEFDS0VUX1RZUEVfR0VORVJBTF9D T05UUk9MKSkgPT0gMCkKPiA+ICsJCXJldHVybiBmYWxzZTsKPiA+ICAKPiA+ICAJaWYgKEhBU19E REkoZGV2X3ByaXYpKQo+ID4gIAkJcmVnID0gSFNXX1RWSURFT19ESVBfR0NQKGNydGNfc3RhdGUt PmNwdV90cmFuc2NvZGVyKTsKPiA+IEBAIC03MjQsMTggKzc3OSwzMSBAQCBzdGF0aWMgYm9vbCBp bnRlbF9oZG1pX3NldF9nY3BfaW5mb2ZyYW1lKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVy LAo+ID4gIAllbHNlCj4gPiAgCQlyZXR1cm4gZmFsc2U7Cj4gPiAgCj4gPiArCUk5MTVfV1JJVEUo cmVnLCBjcnRjX3N0YXRlLT5pbmZvZnJhbWVzLmdjcCk7Cj4gPiArCj4gPiArCXJldHVybiB0cnVl Owo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBpbnRlbF9oZG1pX2NvbXB1dGVfZ2NwX2lu Zm9mcmFtZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ICsJCQkJCSAgICAgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gPiArCQkJCQkgICAgIHN0cnVjdCBk cm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQo+ID4gK3sKPiA+ICsJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Cj4gPiAr Cj4gPiArCWlmIChJU19HNFgoZGV2X3ByaXYpIHx8ICFjcnRjX3N0YXRlLT5oYXNfaW5mb2ZyYW1l KQo+ID4gKwkJcmV0dXJuOwo+ID4gKwo+ID4gKwljcnRjX3N0YXRlLT5pbmZvZnJhbWVzLmVuYWJs ZSB8PQo+ID4gKwkJaW50ZWxfaGRtaV9pbmZvZnJhbWVfZW5hYmxlKEhETUlfUEFDS0VUX1RZUEVf R0VORVJBTF9DT05UUk9MKTsKPiA+ICsKPiA+ICAJLyogSW5kaWNhdGUgY29sb3IgZGVwdGggd2hl bmV2ZXIgdGhlIHNpbmsgc3VwcG9ydHMgZGVlcCBjb2xvciAqLwo+ID4gIAlpZiAoaGRtaV9zaW5r X2lzX2RlZXBfY29sb3IoY29ubl9zdGF0ZSkpCj4gPiAtCQl2YWwgfD0gR0NQX0NPTE9SX0lORElD QVRJT047Cj4gPiArCQljcnRjX3N0YXRlLT5pbmZvZnJhbWVzLmdjcCB8PSBHQ1BfQ09MT1JfSU5E SUNBVElPTjsKPiA+ICAKPiA+ICAJLyogRW5hYmxlIGRlZmF1bHRfcGhhc2Ugd2hlbmV2ZXIgdGhl IGRpc3BsYXkgbW9kZSBpcyBzdWl0YWJseSBhbGlnbmVkICovCj4gPiAgCWlmIChnY3BfZGVmYXVs dF9waGFzZV9wb3NzaWJsZShjcnRjX3N0YXRlLT5waXBlX2JwcCwKPiA+ICAJCQkJICAgICAgICZj cnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGUpKQo+ID4gLQkJdmFsIHw9IEdDUF9ERUZBVUxU X1BIQVNFX0VOQUJMRTsKPiA+IC0KPiA+IC0JSTkxNV9XUklURShyZWcsIHZhbCk7Cj4gPiAtCj4g PiAtCXJldHVybiB2YWwgIT0gMDsKPiA+ICsJCWNydGNfc3RhdGUtPmluZm9mcmFtZXMuZ2NwIHw9 IEdDUF9ERUZBVUxUX1BIQVNFX0VOQUJMRTsKPiA+ICB9Cj4gPiAgCj4gPiAgc3RhdGljIHZvaWQg aWJ4X3NldF9pbmZvZnJhbWVzKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gQEAg LTc4Niw5ICs4NTQsMTUgQEAgc3RhdGljIHZvaWQgaWJ4X3NldF9pbmZvZnJhbWVzKHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gIAlJOTE1X1dSSVRFKHJlZywgdmFsKTsKPiA+ICAJ UE9TVElOR19SRUFEKHJlZyk7Cj4gPiAgCj4gPiAtCWludGVsX2hkbWlfc2V0X2F2aV9pbmZvZnJh bWUoZW5jb2RlciwgY3J0Y19zdGF0ZSwgY29ubl9zdGF0ZSk7Cj4gPiAtCWludGVsX2hkbWlfc2V0 X3NwZF9pbmZvZnJhbWUoZW5jb2RlciwgY3J0Y19zdGF0ZSk7Cj4gPiAtCWludGVsX2hkbWlfc2V0 X2hkbWlfaW5mb2ZyYW1lKGVuY29kZXIsIGNydGNfc3RhdGUsIGNvbm5fc3RhdGUpOwo+ID4gKwlp bnRlbF93cml0ZV9pbmZvZnJhbWUoZW5jb2RlciwgY3J0Y19zdGF0ZSwKPiA+ICsJCQkgICAgICBI RE1JX0lORk9GUkFNRV9UWVBFX0FWSSwKPiA+ICsJCQkgICAgICAmY3J0Y19zdGF0ZS0+aW5mb2Zy YW1lcy5hdmkpOwo+ID4gKwlpbnRlbF93cml0ZV9pbmZvZnJhbWUoZW5jb2RlciwgY3J0Y19zdGF0 ZSwKPiA+ICsJCQkgICAgICBIRE1JX0lORk9GUkFNRV9UWVBFX1NQRCwKPiA+ICsJCQkgICAgICAm Y3J0Y19zdGF0ZS0+aW5mb2ZyYW1lcy5zcGQpOwo+ID4gKwlpbnRlbF93cml0ZV9pbmZvZnJhbWUo ZW5jb2RlciwgY3J0Y19zdGF0ZSwKPiA+ICsJCQkgICAgICBIRE1JX0lORk9GUkFNRV9UWVBFX1ZF TkRPUiwKPiA+ICsJCQkgICAgICAmY3J0Y19zdGF0ZS0+aW5mb2ZyYW1lcy5oZG1pKTsKPiA+ICB9 Cj4gPiAgCj4gPiAgc3RhdGljIHZvaWQgY3B0X3NldF9pbmZvZnJhbWVzKHN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyLAo+ID4gQEAgLTgyOSw5ICs5MDMsMTUgQEAgc3RhdGljIHZvaWQgY3B0 X3NldF9pbmZvZnJhbWVzKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gIAlJOTE1 X1dSSVRFKHJlZywgdmFsKTsKPiA+ICAJUE9TVElOR19SRUFEKHJlZyk7Cj4gPiAgCj4gPiAtCWlu dGVsX2hkbWlfc2V0X2F2aV9pbmZvZnJhbWUoZW5jb2RlciwgY3J0Y19zdGF0ZSwgY29ubl9zdGF0 ZSk7Cj4gPiAtCWludGVsX2hkbWlfc2V0X3NwZF9pbmZvZnJhbWUoZW5jb2RlciwgY3J0Y19zdGF0 ZSk7Cj4gPiAtCWludGVsX2hkbWlfc2V0X2hkbWlfaW5mb2ZyYW1lKGVuY29kZXIsIGNydGNfc3Rh dGUsIGNvbm5fc3RhdGUpOwo+ID4gKwlpbnRlbF93cml0ZV9pbmZvZnJhbWUoZW5jb2RlciwgY3J0 Y19zdGF0ZSwKPiA+ICsJCQkgICAgICBIRE1JX0lORk9GUkFNRV9UWVBFX0FWSSwKPiA+ICsJCQkg ICAgICAmY3J0Y19zdGF0ZS0+aW5mb2ZyYW1lcy5hdmkpOwo+ID4gKwlpbnRlbF93cml0ZV9pbmZv ZnJhbWUoZW5jb2RlciwgY3J0Y19zdGF0ZSwKPiA+ICsJCQkgICAgICBIRE1JX0lORk9GUkFNRV9U WVBFX1NQRCwKPiA+ICsJCQkgICAgICAmY3J0Y19zdGF0ZS0+aW5mb2ZyYW1lcy5zcGQpOwo+ID4g KwlpbnRlbF93cml0ZV9pbmZvZnJhbWUoZW5jb2RlciwgY3J0Y19zdGF0ZSwKPiA+ICsJCQkgICAg ICBIRE1JX0lORk9GUkFNRV9UWVBFX1ZFTkRPUiwKPiA+ICsJCQkgICAgICAmY3J0Y19zdGF0ZS0+ aW5mb2ZyYW1lcy5oZG1pKTsKPiA+ICB9Cj4gPiAgCj4gPiAgc3RhdGljIHZvaWQgdmx2X3NldF9p bmZvZnJhbWVzKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gQEAgLTg4MSw5ICs5 NjEsMTUgQEAgc3RhdGljIHZvaWQgdmx2X3NldF9pbmZvZnJhbWVzKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyLAo+ID4gIAlJOTE1X1dSSVRFKHJlZywgdmFsKTsKPiA+ICAJUE9TVElOR19S RUFEKHJlZyk7Cj4gPiAgCj4gPiAtCWludGVsX2hkbWlfc2V0X2F2aV9pbmZvZnJhbWUoZW5jb2Rl ciwgY3J0Y19zdGF0ZSwgY29ubl9zdGF0ZSk7Cj4gPiAtCWludGVsX2hkbWlfc2V0X3NwZF9pbmZv ZnJhbWUoZW5jb2RlciwgY3J0Y19zdGF0ZSk7Cj4gPiAtCWludGVsX2hkbWlfc2V0X2hkbWlfaW5m b2ZyYW1lKGVuY29kZXIsIGNydGNfc3RhdGUsIGNvbm5fc3RhdGUpOwo+ID4gKwlpbnRlbF93cml0 ZV9pbmZvZnJhbWUoZW5jb2RlciwgY3J0Y19zdGF0ZSwKPiA+ICsJCQkgICAgICBIRE1JX0lORk9G UkFNRV9UWVBFX0FWSSwKPiA+ICsJCQkgICAgICAmY3J0Y19zdGF0ZS0+aW5mb2ZyYW1lcy5hdmkp Owo+ID4gKwlpbnRlbF93cml0ZV9pbmZvZnJhbWUoZW5jb2RlciwgY3J0Y19zdGF0ZSwKPiA+ICsJ CQkgICAgICBIRE1JX0lORk9GUkFNRV9UWVBFX1NQRCwKPiA+ICsJCQkgICAgICAmY3J0Y19zdGF0 ZS0+aW5mb2ZyYW1lcy5zcGQpOwo+ID4gKwlpbnRlbF93cml0ZV9pbmZvZnJhbWUoZW5jb2Rlciwg Y3J0Y19zdGF0ZSwKPiA+ICsJCQkgICAgICBIRE1JX0lORk9GUkFNRV9UWVBFX1ZFTkRPUiwKPiA+ ICsJCQkgICAgICAmY3J0Y19zdGF0ZS0+aW5mb2ZyYW1lcy5oZG1pKTsKPiA+ICB9Cj4gPiAgCj4g PiAgc3RhdGljIHZvaWQgaHN3X3NldF9pbmZvZnJhbWVzKHN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyLAo+ID4gQEAgLTkxNCw5ICsxMDAwLDE1IEBAIHN0YXRpYyB2b2lkIGhzd19zZXRfaW5m b2ZyYW1lcyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ICAJSTkxNV9XUklURShy ZWcsIHZhbCk7Cj4gPiAgCVBPU1RJTkdfUkVBRChyZWcpOwo+ID4gIAo+ID4gLQlpbnRlbF9oZG1p X3NldF9hdmlfaW5mb2ZyYW1lKGVuY29kZXIsIGNydGNfc3RhdGUsIGNvbm5fc3RhdGUpOwo+ID4g LQlpbnRlbF9oZG1pX3NldF9zcGRfaW5mb2ZyYW1lKGVuY29kZXIsIGNydGNfc3RhdGUpOwo+ID4g LQlpbnRlbF9oZG1pX3NldF9oZG1pX2luZm9mcmFtZShlbmNvZGVyLCBjcnRjX3N0YXRlLCBjb25u X3N0YXRlKTsKPiA+ICsJaW50ZWxfd3JpdGVfaW5mb2ZyYW1lKGVuY29kZXIsIGNydGNfc3RhdGUs Cj4gPiArCQkJICAgICAgSERNSV9JTkZPRlJBTUVfVFlQRV9BVkksCj4gPiArCQkJICAgICAgJmNy dGNfc3RhdGUtPmluZm9mcmFtZXMuYXZpKTsKPiA+ICsJaW50ZWxfd3JpdGVfaW5mb2ZyYW1lKGVu Y29kZXIsIGNydGNfc3RhdGUsCj4gPiArCQkJICAgICAgSERNSV9JTkZPRlJBTUVfVFlQRV9TUEQs Cj4gPiArCQkJICAgICAgJmNydGNfc3RhdGUtPmluZm9mcmFtZXMuc3BkKTsKPiA+ICsJaW50ZWxf d3JpdGVfaW5mb2ZyYW1lKGVuY29kZXIsIGNydGNfc3RhdGUsCj4gPiArCQkJICAgICAgSERNSV9J TkZPRlJBTUVfVFlQRV9WRU5ET1IsCj4gPiArCQkJICAgICAgJmNydGNfc3RhdGUtPmluZm9mcmFt ZXMuaGRtaSk7Cj4gPiAgfQo+ID4gIAo+ID4gIHZvaWQgaW50ZWxfZHBfZHVhbF9tb2RlX3NldF90 bWRzX291dHB1dChzdHJ1Y3QgaW50ZWxfaGRtaSAqaGRtaSwgYm9vbCBlbmFibGUpCj4gPiBAQCAt MTg1MSw2ICsxOTQzLDI3IEBAIGJvb2wgaW50ZWxfaGRtaV9jb21wdXRlX2NvbmZpZyhzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ICAJCX0KPiA+ICAJfQo+ID4gIAo+ID4gKwlpZiAo cGlwZV9jb25maWctPmhhc19oZG1pX3NpbmspCj4gPiArCQlwaXBlX2NvbmZpZy0+aW5mb2ZyYW1l cy5lbmFibGUgfD0KPiA+ICsJCQlpbnRlbF9oZG1pX2luZm9mcmFtZV9lbmFibGUoSERNSV9QQUNL RVRfVFlQRV9OVUxMKTsKPiA+ICsKPiA+ICsJaW50ZWxfaGRtaV9jb21wdXRlX2djcF9pbmZvZnJh bWUoZW5jb2RlciwgcGlwZV9jb25maWcsIGNvbm5fc3RhdGUpOwo+ID4gKwo+ID4gKwlpZiAoIWlu dGVsX2hkbWlfY29tcHV0ZV9hdmlfaW5mb2ZyYW1lKGVuY29kZXIsIHBpcGVfY29uZmlnLCBjb25u X3N0YXRlKSkgewo+ID4gKwkJRFJNX0RFQlVHX0tNUygiYmFkIEFWSSBpbmZvZnJhbWVcbiIpOwo+ ID4gKwkJcmV0dXJuIGZhbHNlOwo+ID4gKwl9Cj4gPiArCj4gPiArCWlmICghaW50ZWxfaGRtaV9j b21wdXRlX3NwZF9pbmZvZnJhbWUoZW5jb2RlciwgcGlwZV9jb25maWcsIGNvbm5fc3RhdGUpKSB7 Cj4gPiArCQlEUk1fREVCVUdfS01TKCJiYWQgU1BEIGluZm9mcmFtZVxuIik7Cj4gPiArCQlyZXR1 cm4gZmFsc2U7Cj4gPiArCX0KPiA+ICsKPiA+ICsJaWYgKCFpbnRlbF9oZG1pX2NvbXB1dGVfaGRt aV9pbmZvZnJhbWUoZW5jb2RlciwgcGlwZV9jb25maWcsIGNvbm5fc3RhdGUpKSB7Cj4gPiArCQlE Uk1fREVCVUdfS01TKCJiYWQgSERNSSBpbmZvZnJhbWVcbiIpOwo+ID4gKwkJcmV0dXJuIGZhbHNl Owo+ID4gKwl9Cj4gPiArCj4gPiAgCXJldHVybiB0cnVlOwo+ID4gIH0KPiA+ICAKPiA+IC0tIAo+ ID4gMi4xNi40Cj4gPiAKPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCj4gPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gPiBJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCj4gPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeAo+IAo+IC0tIAo+IERhbmllbCBWZXR0ZXIKPiBTb2Z0d2FyZSBF bmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KPiBodHRwOi8vYmxvZy5mZndsbC5jaAoKLS0gClZp bGxlIFN5cmrDpGzDpApJbnRlbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngK