From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 3/4] drm/i915: Convert wait_for(I915_READ(reg)) to intel_wait_for_register() Date: Thu, 30 Jun 2016 14:27:55 +0100 Message-ID: <57751E5B.6050802@linux.intel.com> References: <1467286215-8357-1-git-send-email-chris@chris-wilson.co.uk> <1467286215-8357-3-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTP id 865A86E893 for ; Thu, 30 Jun 2016 13:27:58 +0000 (UTC) In-Reply-To: <1467286215-8357-3-git-send-email-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org CgpPbiAzMC8wNi8xNiAxMjozMCwgQ2hyaXMgV2lsc29uIHdyb3RlOgo+IEJ5IHVzaW5nIHRoZSBv dXQtb2YtbGluZSBpbnRlbF93YWl0X2Zvcl9yZWdpc3RlcigpIG5vdCBvbmx5IGRvIHdlIGNhbgo+ IGVmZmljaWVuY3kgZnJvbSB1c2luZyB0aGUgaHlicmlkIHdhaXRfZm9yKCkgY29udGFpbmVkIHdp dGhpbiwgYnV0IHdlCj4gYXZvaWQgY29kZSBibG9hdCBmcm9tIHRoZSBudW1lcm91cyBpbmxpbmVk IGxvb3BzOgo+Cj4gICAgIHRleHQgICAgZGF0YSAgICAgYnNzICAgICBkZWMgICAgIGhleCBmaWxl bmFtZQo+IDEwNzg1NTEgICAgNDU1NyAgICAgNDE2IDEwODM1MjQgIDEwODg4NCBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1LmtvCj4gMTA3MDc3NSAgICA0NTU3ICAgICA0MTYgMTA3NTc0OCAgMTA2 YTI0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTUua28KPgo+IFNpZ25lZC1vZmYtYnk6IENocmlz IFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IC0tLQo+ICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgICAgIHwgMjcgKysrKysrKy0tLS0tLQo+ICAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfY3J0LmMgICAgICAgIHwgMTggKysrKystLS0tCj4gICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyAgICAgICAgfCAgNSArKy0KPiAgIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyAgICB8IDY5ICsrKysrKysrKysrKysrKysrKysr KysrKystLS0tLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyAgICAgICAg IHwgMTEgKysrKy0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9tc3QuYyAgICAg fCAgNyArKystCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGxsX21nci5jICAgfCAg NiArKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5jICAgICAgICB8IDI5ICsr KysrKysrKystLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2lfcGxsLmMgICAg fCAxMyArKysrKy0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYyAgICAgICAg fCAgNCArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaTJjLmMgICAgICAgIHwgMTAg KystLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAgICB8ICA1ICsr LQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHZkcy5jICAgICAgIHwgIDQgKy0KPiAg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jICAgICAgICB8IDI5ICsrKysrKysrKy0t LS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgfCAxOSArKysr KystLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYyB8IDQ3ICsr KysrKysrKysrKysrKy0tLS0tLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3NpZGVi YW5kLmMgICB8IDMyICsrKysrKysrKystLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfdW5jb3JlLmMgICAgIHwgMjAgKysrKystLS0tLQo+ICAgMTggZmlsZXMgY2hhbmdlZCwgMjQx IGluc2VydGlvbnMoKyksIDExNCBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu Ywo+IGluZGV4IGI5OGFmYmQzMzIzNS4uYzU4MGUyNDA5NWIwIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5jCj4gQEAgLTI1MzUsOCArMjUzNSw2IEBAIGludCB2bHZfZm9yY2VfZ2Z4X2Nsb2Nr KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgYm9vbCBmb3JjZV9vbikKPiAgIAl1 MzIgdmFsOwo+ICAgCWludCBlcnI7Cj4KPiAtI2RlZmluZSBDT05EIChJOTE1X1JFQUQoVkxWX0dU TENfU1VSVklWQUJJTElUWV9SRUcpICYgVkxWX0dGWF9DTEtfU1RBVFVTX0JJVCkKPiAtCj4gICAJ dmFsID0gSTkxNV9SRUFEKFZMVl9HVExDX1NVUlZJVkFCSUxJVFlfUkVHKTsKPiAgIAl2YWwgJj0g flZMVl9HRlhfQ0xLX0ZPUkNFX09OX0JJVDsKPiAgIAlpZiAoZm9yY2Vfb24pCj4gQEAgLTI1NDYs MTMgKzI1NDQsMTYgQEAgaW50IHZsdl9mb3JjZV9nZnhfY2xvY2soc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LCBib29sIGZvcmNlX29uKQo+ICAgCWlmICghZm9yY2Vfb24pCj4gICAJ CXJldHVybiAwOwo+Cj4gLQllcnIgPSB3YWl0X2ZvcihDT05ELCAyMCk7Cj4gKwllcnIgPSBpbnRl bF93YWl0X2Zvcl9yZWdpc3RlcihkZXZfcHJpdiwKPiArCQkJCSAgICAgIFZMVl9HVExDX1NVUlZJ VkFCSUxJVFlfUkVHLAo+ICsJCQkJICAgICAgVkxWX0dGWF9DTEtfU1RBVFVTX0JJVCwKPiArCQkJ CSAgICAgIFZMVl9HRlhfQ0xLX1NUQVRVU19CSVQsCj4gKwkJCQkgICAgICAyMCk7Cj4gICAJaWYg KGVycikKPiAgIAkJRFJNX0VSUk9SKCJ0aW1lb3V0IHdhaXRpbmcgZm9yIEdGWCBjbG9jayBmb3Jj ZS1vbiAoJTA4eClcbiIsCj4gICAJCQkgIEk5MTVfUkVBRChWTFZfR1RMQ19TVVJWSVZBQklMSVRZ X1JFRykpOwo+Cj4gICAJcmV0dXJuIGVycjsKPiAtI3VuZGVmIENPTkQKPiAgIH0KPgo+ICAgc3Rh dGljIGludCB2bHZfYWxsb3dfZ3Rfd2FrZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsIGJvb2wgYWxsb3cpCj4gQEAgLTI1NjcsMTMgKzI1NjgsMTUgQEAgc3RhdGljIGludCB2bHZf YWxsb3dfZ3Rfd2FrZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGJvb2wgYWxs b3cpCj4gICAJSTkxNV9XUklURShWTFZfR1RMQ19XQUtFX0NUUkwsIHZhbCk7Cj4gICAJUE9TVElO R19SRUFEKFZMVl9HVExDX1dBS0VfQ1RSTCk7Cj4KPiAtI2RlZmluZSBDT05EICghIShJOTE1X1JF QUQoVkxWX0dUTENfUFdfU1RBVFVTKSAmIFZMVl9HVExDX0FMTE9XV0FLRUFDSykgPT0gXAo+IC0J ICAgICAgYWxsb3cpCj4gLQllcnIgPSB3YWl0X2ZvcihDT05ELCAxKTsKPiArCWVyciA9IGludGVs X3dhaXRfZm9yX3JlZ2lzdGVyKGRldl9wcml2LAo+ICsJCQkJICAgICAgVkxWX0dUTENfUFdfU1RB VFVTLAo+ICsJCQkJICAgICAgVkxWX0dUTENfQUxMT1dXQUtFQUNLLAo+ICsJCQkJICAgICAgYWxs b3csCj4gKwkJCQkgICAgICAxKTsKPiAgIAlpZiAoZXJyKQo+ICAgCQlEUk1fRVJST1IoInRpbWVv dXQgZGlzYWJsaW5nIEdUIHdha2luZ1xuIik7Cj4gKwo+ICAgCXJldHVybiBlcnI7Cj4gLSN1bmRl ZiBDT05ECj4gICB9Cj4KPiAgIHN0YXRpYyBpbnQgdmx2X3dhaXRfZm9yX2d0X3dlbGxzKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiBAQCAtMjU4NSw4ICsyNTg4LDcgQEAgc3Rh dGljIGludCB2bHZfd2FpdF9mb3JfZ3Rfd2VsbHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+Cj4gICAJbWFzayA9IFZMVl9HVExDX1BXX01FRElBX1NUQVRVU19NQVNLIHwgVkxW X0dUTENfUFdfUkVOREVSX1NUQVRVU19NQVNLOwo+ICAgCXZhbCA9IHdhaXRfZm9yX29uID8gbWFz ayA6IDA7Cj4gLSNkZWZpbmUgQ09ORCAoKEk5MTVfUkVBRChWTFZfR1RMQ19QV19TVEFUVVMpICYg bWFzaykgPT0gdmFsKQo+IC0JaWYgKENPTkQpCj4gKwlpZiAoKEk5MTVfUkVBRChWTFZfR1RMQ19Q V19TVEFUVVMpICYgbWFzaykgPT0gdmFsKQo+ICAgCQlyZXR1cm4gMDsKPgo+ICAgCURSTV9ERUJV R19LTVMoIndhaXRpbmcgZm9yIEdUIHdlbGxzIHRvIGdvICVzICglMDh4KVxuIiwKPiBAQCAtMjU5 NywxMyArMjU5OSwxNCBAQCBzdGF0aWMgaW50IHZsdl93YWl0X2Zvcl9ndF93ZWxscyhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAJICogUkM2IHRyYW5zaXRpb25pbmcgY2Fu IGJlIGRlbGF5ZWQgdXAgdG8gMiBtc2VjIChzZWUKPiAgIAkgKiB2YWxsZXl2aWV3X2VuYWJsZV9y cHMpLCB1c2UgMyBtc2VjIGZvciBzYWZldHkuCj4gICAJICovCj4gLQllcnIgPSB3YWl0X2ZvcihD T05ELCAzKTsKPiArCWVyciA9IGludGVsX3dhaXRfZm9yX3JlZ2lzdGVyKGRldl9wcml2LAo+ICsJ CQkJICAgICAgVkxWX0dUTENfUFdfU1RBVFVTLCBtYXNrLCB2YWwsCj4gKwkJCQkgICAgICAzKTsK PiAgIAlpZiAoZXJyKQo+ICAgCQlEUk1fRVJST1IoInRpbWVvdXQgd2FpdGluZyBmb3IgR1Qgd2Vs bHMgdG8gZ28gJXNcbiIsCj4gICAJCQkgIG9ub2ZmKHdhaXRfZm9yX29uKSk7Cj4KPiAgIAlyZXR1 cm4gZXJyOwo+IC0jdW5kZWYgQ09ORAo+ICAgfQo+Cj4gICBzdGF0aWMgdm9pZCB2bHZfY2hlY2tf bm9fZ3RfYWNjZXNzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY3J0LmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9jcnQuYwo+IGluZGV4IDE2NWU0YjkwMTU0OC4uMGM4MDM2ZTFiNGQ3IDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NydC5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfY3J0LmMKPiBAQCAtMzAxLDggKzMwMSwxMCBAQCBzdGF0aWMg Ym9vbCBpbnRlbF9pcm9ubGFrZV9jcnRfZGV0ZWN0X2hvdHBsdWcoc3RydWN0IGRybV9jb25uZWN0 b3IgKmNvbm5lY3RvcikKPgo+ICAgCQlJOTE1X1dSSVRFKGNydC0+YWRwYV9yZWcsIGFkcGEpOwo+ Cj4gLQkJaWYgKHdhaXRfZm9yKChJOTE1X1JFQUQoY3J0LT5hZHBhX3JlZykgJiBBRFBBX0NSVF9I T1RQTFVHX0ZPUkNFX1RSSUdHRVIpID09IDAsCj4gLQkJCSAgICAgMTAwMCkpCj4gKwkJaWYgKGlu dGVsX3dhaXRfZm9yX3JlZ2lzdGVyKGRldl9wcml2LAo+ICsJCQkJCSAgICBjcnQtPmFkcGFfcmVn LAo+ICsJCQkJCSAgICBBRFBBX0NSVF9IT1RQTFVHX0ZPUkNFX1RSSUdHRVIsIDAsCj4gKwkJCQkJ ICAgIDEwMDApKQo+ICAgCQkJRFJNX0RFQlVHX0tNUygidGltZWQgb3V0IHdhaXRpbmcgZm9yIEZP UkNFX1RSSUdHRVIiKTsKPgo+ICAgCQlpZiAodHVybl9vZmZfZGFjKSB7Cj4gQEAgLTMzOCw4ICsz NDAsMTAgQEAgc3RhdGljIGJvb2wgdmFsbGV5dmlld19jcnRfZGV0ZWN0X2hvdHBsdWcoc3RydWN0 IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKPgo+ICAgCUk5MTVfV1JJVEUoY3J0LT5hZHBhX3Jl ZywgYWRwYSk7Cj4KPiAtCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFEKGNydC0+YWRwYV9yZWcpICYg QURQQV9DUlRfSE9UUExVR19GT1JDRV9UUklHR0VSKSA9PSAwLAo+IC0JCSAgICAgMTAwMCkpIHsK PiArCWlmIChpbnRlbF93YWl0X2Zvcl9yZWdpc3RlcihkZXZfcHJpdiwKPiArCQkJCSAgICBjcnQt PmFkcGFfcmVnLAo+ICsJCQkJICAgIEFEUEFfQ1JUX0hPVFBMVUdfRk9SQ0VfVFJJR0dFUiwgMCwK PiArCQkJCSAgICAxMDAwKSkgewo+ICAgCQlEUk1fREVCVUdfS01TKCJ0aW1lZCBvdXQgd2FpdGlu ZyBmb3IgRk9SQ0VfVFJJR0dFUiIpOwo+ICAgCQlJOTE1X1dSSVRFKGNydC0+YWRwYV9yZWcsIHNh dmVfYWRwYSk7Cj4gICAJfQo+IEBAIC0zOTQsOSArMzk4LDkgQEAgc3RhdGljIGJvb2wgaW50ZWxf Y3J0X2RldGVjdF9ob3RwbHVnKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCj4gICAJ CQkJCSAgICAgIENSVF9IT1RQTFVHX0ZPUkNFX0RFVEVDVCwKPiAgIAkJCQkJICAgICAgQ1JUX0hP VFBMVUdfRk9SQ0VfREVURUNUKTsKPiAgIAkJLyogd2FpdCBmb3IgRk9SQ0VfREVURUNUIHRvIGdv IG9mZiAqLwo+IC0JCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFEKFBPUlRfSE9UUExVR19FTikgJgo+ IC0JCQkgICAgICBDUlRfSE9UUExVR19GT1JDRV9ERVRFQ1QpID09IDAsCj4gLQkJCSAgICAgMTAw MCkpCj4gKwkJaWYgKGludGVsX3dhaXRfZm9yX3JlZ2lzdGVyKGRldl9wcml2LCBQT1JUX0hPVFBM VUdfRU4sCj4gKwkJCQkJICAgIENSVF9IT1RQTFVHX0ZPUkNFX0RFVEVDVCwgMCwKPiArCQkJCQkg ICAgMTAwMCkpCj4gICAJCQlEUk1fREVCVUdfS01TKCJ0aW1lZCBvdXQgd2FpdGluZyBmb3IgRk9S Q0VfREVURUNUIHRvIGdvIG9mZiIpOwo+ICAgCX0KPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kZGkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5j Cj4gaW5kZXggYWQzYjBlZTVlNTViLi42YmNkN2ZmYmZmNDMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kZGkuYwo+IEBAIC0xODA4LDcgKzE4MDgsMTAgQEAgc3RhdGljIHUzMiBieHRfZ2V0X2dy YyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gZHBpb19waHkgcGh5KQo+ ICAgc3RhdGljIHZvaWQgYnh0X3BoeV93YWl0X2dyY19kb25lKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKPiAgIAkJCQkgIGVudW0gZHBpb19waHkgcGh5KQo+ICAgewo+IC0JaWYg KHdhaXRfZm9yKEk5MTVfUkVBRChCWFRfUE9SVF9SRUZfRFczKHBoeSkpICYgR1JDX0RPTkUsIDEw KSkKPiArCWlmIChpbnRlbF93YWl0X2Zvcl9yZWdpc3RlcihkZXZfcHJpdiwKPiArCQkJCSAgICBC WFRfUE9SVF9SRUZfRFczKHBoeSksCj4gKwkJCQkgICAgR1JDX0RPTkUsIEdSQ19ET05FLAo+ICsJ CQkJICAgIDEwKSkKPiAgIAkJRFJNX0VSUk9SKCJ0aW1lb3V0IHdhaXRpbmcgZm9yIFBIWSVkIEdS Q1xuIiwgcGh5KTsKPiAgIH0KPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBp bmRleCAyYWNjNjA2MGI3OGQuLjMwYzE4MWE3MjIwMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmMKPiBAQCAtMTEyNCw4ICsxMTI0LDkgQEAgc3RhdGljIHZvaWQgaW50ZWxf d2FpdF9mb3JfcGlwZV9vZmYoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gICAJCWk5MTVfcmVn X3QgcmVnID0gUElQRUNPTkYoY3B1X3RyYW5zY29kZXIpOwo+Cj4gICAJCS8qIFdhaXQgZm9yIHRo ZSBQaXBlIFN0YXRlIHRvIGdvIG9mZiAqLwo+IC0JCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFEKHJl ZykgJiBJOTY1X1BJUEVDT05GX0FDVElWRSkgPT0gMCwKPiAtCQkJICAgICAxMDApKQo+ICsJCWlm IChpbnRlbF93YWl0X2Zvcl9yZWdpc3RlcihkZXZfcHJpdiwKPiArCQkJCQkgICAgcmVnLCBJOTY1 X1BJUEVDT05GX0FDVElWRSwgMCwKPiArCQkJCQkgICAgMTAwKSkKPiAgIAkJCVdBUk4oMSwgInBp cGVfb2ZmIHdhaXQgdGltZWQgb3V0XG4iKTsKPiAgIAl9IGVsc2Ugewo+ICAgCQkvKiBXYWl0IGZv ciB0aGUgZGlzcGxheSBsaW5lIHRvIHNldHRsZSAqLwo+IEBAIC0xNTQ0LDcgKzE1NDUsMTEgQEAg c3RhdGljIHZvaWQgX3Zsdl9lbmFibGVfcGxsKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAg CVBPU1RJTkdfUkVBRChEUExMKHBpcGUpKTsKPiAgIAl1ZGVsYXkoMTUwKTsKPgo+IC0JaWYgKHdh aXRfZm9yKCgoSTkxNV9SRUFEKERQTEwocGlwZSkpICYgRFBMTF9MT0NLX1ZMVikgPT0gRFBMTF9M T0NLX1ZMViksIDEpKQo+ICsJaWYgKGludGVsX3dhaXRfZm9yX3JlZ2lzdGVyKGRldl9wcml2LAo+ ICsJCQkJICAgIERQTEwocGlwZSksCj4gKwkJCQkgICAgRFBMTF9MT0NLX1ZMViwKPiArCQkJCSAg ICBEUExMX0xPQ0tfVkxWLAo+ICsJCQkJICAgIDEpKQo+ICAgCQlEUk1fRVJST1IoIkRQTEwgJWQg ZmFpbGVkIHRvIGxvY2tcbiIsIHBpcGUpOwo+ICAgfQo+Cj4gQEAgLTE1OTMsNyArMTU5OCw5IEBA IHN0YXRpYyB2b2lkIF9jaHZfZW5hYmxlX3BsbChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAg IAlJOTE1X1dSSVRFKERQTEwocGlwZSksIHBpcGVfY29uZmlnLT5kcGxsX2h3X3N0YXRlLmRwbGwp Owo+Cj4gICAJLyogQ2hlY2sgUExMIGlzIGxvY2tlZCAqLwo+IC0JaWYgKHdhaXRfZm9yKCgoSTkx NV9SRUFEKERQTEwocGlwZSkpICYgRFBMTF9MT0NLX1ZMVikgPT0gRFBMTF9MT0NLX1ZMViksIDEp KQo+ICsJaWYgKGludGVsX3dhaXRfZm9yX3JlZ2lzdGVyKGRldl9wcml2LAo+ICsJCQkJICAgIERQ TEwocGlwZSksIERQTExfTE9DS19WTFYsIERQTExfTE9DS19WTFYsCj4gKwkJCQkgICAgMSkpCj4g ICAJCURSTV9FUlJPUigiUExMICVkIGZhaWxlZCB0byBsb2NrXG4iLCBwaXBlKTsKPiAgIH0KPgo+ IEBAIC0xODEzLDcgKzE4MjAsOSBAQCB2b2lkIHZsdl93YWl0X3BvcnRfcmVhZHkoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCQlCVUcoKTsKPiAgIAl9Cj4KPiAtCWlmICh3 YWl0X2ZvcigoSTkxNV9SRUFEKGRwbGxfcmVnKSAmIHBvcnRfbWFzaykgPT0gZXhwZWN0ZWRfbWFz aywgMTAwMCkpCj4gKwlpZiAoaW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXIoZGV2X3ByaXYsCj4gKwkJ CQkgICAgZHBsbF9yZWcsIHBvcnRfbWFzaywgZXhwZWN0ZWRfbWFzaywKPiArCQkJCSAgICAxMDAw KSkKPiAgIAkJV0FSTigxLCAidGltZWQgb3V0IHdhaXRpbmcgZm9yIHBvcnQgJWMgcmVhZHk6IGdv dCAweCV4LCBleHBlY3RlZCAweCV4XG4iLAo+ICAgCQkgICAgIHBvcnRfbmFtZShkcG9ydC0+cG9y dCksIEk5MTVfUkVBRChkcGxsX3JlZykgJiBwb3J0X21hc2ssIGV4cGVjdGVkX21hc2spOwo+ICAg fQo+IEBAIC0xODcxLDcgKzE4ODAsOSBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV9lbmFibGVfcGNo X3RyYW5zY29kZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCQl2YWwg fD0gVFJBTlNfUFJPR1JFU1NJVkU7Cj4KPiAgIAlJOTE1X1dSSVRFKHJlZywgdmFsIHwgVFJBTlNf RU5BQkxFKTsKPiAtCWlmICh3YWl0X2ZvcihJOTE1X1JFQUQocmVnKSAmIFRSQU5TX1NUQVRFX0VO QUJMRSwgMTAwKSkKPiArCWlmIChpbnRlbF93YWl0X2Zvcl9yZWdpc3RlcihkZXZfcHJpdiwKPiAr CQkJCSAgICByZWcsIFRSQU5TX1NUQVRFX0VOQUJMRSwgVFJBTlNfU1RBVEVfRU5BQkxFLAo+ICsJ CQkJICAgIDEwMCkpCj4gICAJCURSTV9FUlJPUigiZmFpbGVkIHRvIGVuYWJsZSB0cmFuc2NvZGVy ICVjXG4iLCBwaXBlX25hbWUocGlwZSkpOwo+ICAgfQo+Cj4gQEAgLTE4OTksNyArMTkxMCwxMSBA QCBzdGF0aWMgdm9pZCBscHRfZW5hYmxlX3BjaF90cmFuc2NvZGVyKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKPiAgIAkJdmFsIHw9IFRSQU5TX1BST0dSRVNTSVZFOwo+Cj4gICAJ STkxNV9XUklURShMUFRfVFJBTlNDT05GLCB2YWwpOwo+IC0JaWYgKHdhaXRfZm9yKEk5MTVfUkVB RChMUFRfVFJBTlNDT05GKSAmIFRSQU5TX1NUQVRFX0VOQUJMRSwgMTAwKSkKPiArCWlmIChpbnRl bF93YWl0X2Zvcl9yZWdpc3RlcihkZXZfcHJpdiwKPiArCQkJCSAgICBMUFRfVFJBTlNDT05GLAo+ ICsJCQkJICAgIFRSQU5TX1NUQVRFX0VOQUJMRSwKPiArCQkJCSAgICBUUkFOU19TVEFURV9FTkFC TEUsCj4gKwkJCQkgICAgMTAwKSkKPiAgIAkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gZW5hYmxlIFBD SCB0cmFuc2NvZGVyXG4iKTsKPiAgIH0KPgo+IEBAIC0xOTIyLDcgKzE5MzcsOSBAQCBzdGF0aWMg dm9pZCBpcm9ubGFrZV9kaXNhYmxlX3BjaF90cmFuc2NvZGVyKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKPiAgIAl2YWwgJj0gflRSQU5TX0VOQUJMRTsKPiAgIAlJOTE1X1dSSVRF KHJlZywgdmFsKTsKPiAgIAkvKiB3YWl0IGZvciBQQ0ggdHJhbnNjb2RlciBvZmYsIHRyYW5zY29k ZXIgc3RhdGUgKi8KPiAtCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFEKHJlZykgJiBUUkFOU19TVEFU RV9FTkFCTEUpID09IDAsIDUwKSkKPiArCWlmIChpbnRlbF93YWl0X2Zvcl9yZWdpc3RlcihkZXZf cHJpdiwKPiArCQkJCSAgICByZWcsIFRSQU5TX1NUQVRFX0VOQUJMRSwgMCwKPiArCQkJCSAgICA1 MCkpCj4gICAJCURSTV9FUlJPUigiZmFpbGVkIHRvIGRpc2FibGUgdHJhbnNjb2RlciAlY1xuIiwg cGlwZV9uYW1lKHBpcGUpKTsKPgo+ICAgCWlmIChIQVNfUENIX0NQVChkZXYpKSB7Cj4gQEAgLTE5 NDIsNyArMTk1OSw5IEBAIHN0YXRpYyB2b2lkIGxwdF9kaXNhYmxlX3BjaF90cmFuc2NvZGVyKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAl2YWwgJj0gflRSQU5TX0VOQUJM RTsKPiAgIAlJOTE1X1dSSVRFKExQVF9UUkFOU0NPTkYsIHZhbCk7Cj4gICAJLyogd2FpdCBmb3Ig UENIIHRyYW5zY29kZXIgb2ZmLCB0cmFuc2NvZGVyIHN0YXRlICovCj4gLQlpZiAod2FpdF9mb3Io KEk5MTVfUkVBRChMUFRfVFJBTlNDT05GKSAmIFRSQU5TX1NUQVRFX0VOQUJMRSkgPT0gMCwgNTAp KQo+ICsJaWYgKGludGVsX3dhaXRfZm9yX3JlZ2lzdGVyKGRldl9wcml2LAo+ICsJCQkJICAgIExQ VF9UUkFOU0NPTkYsIFRSQU5TX1NUQVRFX0VOQUJMRSwgMCwKPiArCQkJCSAgICA1MCkpCj4gICAJ CURSTV9FUlJPUigiRmFpbGVkIHRvIGRpc2FibGUgUENIIHRyYW5zY29kZXJcbiIpOwo+Cj4gICAJ LyogV29ya2Fyb3VuZDogY2xlYXIgdGltaW5nIG92ZXJyaWRlIGJpdC4gKi8KPiBAQCAtNDQ0Niw3 ICs0NDY1LDkgQEAgdm9pZCBoc3dfZW5hYmxlX2lwcyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykK PiAgIAkJICogYW5kIGRvbid0IHdhaXQgZm9yIHZibGFua3MgdW50aWwgdGhlIGVuZCBvZiBjcnRj X2VuYWJsZSwgdGhlbgo+ICAgCQkgKiB0aGUgSFcgc3RhdGUgcmVhZG91dCBjb2RlIHdpbGwgY29t cGxhaW4gdGhhdCB0aGUgZXhwZWN0ZWQKPiAgIAkJICogSVBTX0NUTCB2YWx1ZSBpcyBub3QgdGhl IG9uZSB3ZSByZWFkLiAqLwo+IC0JCWlmICh3YWl0X2ZvcihJOTE1X1JFQURfTk9UUkFDRShJUFNf Q1RMKSAmIElQU19FTkFCTEUsIDUwKSkKPiArCQlpZiAoaW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXIo ZGV2X3ByaXYsCj4gKwkJCQkJICAgIElQU19DVEwsIElQU19FTkFCTEUsIElQU19FTkFCTEUsCj4g KwkJCQkJICAgIDUwKSkKPiAgIAkJCURSTV9FUlJPUigiVGltZWQgb3V0IHdhaXRpbmcgZm9yIElQ UyBlbmFibGVcbiIpOwo+ICAgCX0KPiAgIH0KPiBAQCAtNDQ2NSw3ICs0NDg2LDkgQEAgdm9pZCBo c3dfZGlzYWJsZV9pcHMoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gICAJCVdBUk5fT04oc2Fu ZHlicmlkZ2VfcGNvZGVfd3JpdGUoZGV2X3ByaXYsIERJU1BMQVlfSVBTX0NPTlRST0wsIDApKTsK PiAgIAkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOwo+ICAgCQkvKiB3YWl0 IGZvciBwY29kZSB0byBmaW5pc2ggZGlzYWJsaW5nIElQUywgd2hpY2ggbWF5IHRha2UgdXAgdG8g NDJtcyAqLwo+IC0JCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFEKElQU19DVEwpICYgSVBTX0VOQUJM RSkgPT0gMCwgNDIpKQo+ICsJCWlmIChpbnRlbF93YWl0X2Zvcl9yZWdpc3RlcihkZXZfcHJpdiwK PiArCQkJCQkgICAgSVBTX0NUTCwgSVBTX0VOQUJMRSwgMCwKPiArCQkJCQkgICAgNDIpKQo+ICAg CQkJRFJNX0VSUk9SKCJUaW1lZCBvdXQgd2FpdGluZyBmb3IgSVBTIGRpc2FibGVcbiIpOwo+ICAg CX0gZWxzZSB7Cj4gICAJCUk5MTVfV1JJVEUoSVBTX0NUTCwgMCk7Cj4gQEAgLTUzOTUsNyArNTQx OCw5IEBAIHN0YXRpYyB2b2lkIGJ4dF9kZV9wbGxfZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4gICAJSTkxNV9XUklURShCWFRfREVfUExMX0VOQUJMRSwgMCk7Cj4K PiAgIAkvKiBUaW1lb3V0IDIwMHVzICovCj4gLQlpZiAod2FpdF9mb3IoKEk5MTVfUkVBRChCWFRf REVfUExMX0VOQUJMRSkgJiBCWFRfREVfUExMX0xPQ0spID09IDAsIDEpKQo+ICsJaWYgKGludGVs X3dhaXRfZm9yX3JlZ2lzdGVyKGRldl9wcml2LAo+ICsJCQkJICAgIEJYVF9ERV9QTExfRU5BQkxF LCBCWFRfREVfUExMX0xPQ0ssIDAsCj4gKwkJCQkgICAgMSkpCj4gICAJCURSTV9FUlJPUigidGlt ZW91dCB3YWl0aW5nIGZvciBERSBQTEwgdW5sb2NrXG4iKTsKPgo+ICAgCWRldl9wcml2LT5jZGNs a19wbGwudmNvID0gMDsKPiBAQCAtNTQxNCw3ICs1NDM5LDExIEBAIHN0YXRpYyB2b2lkIGJ4dF9k ZV9wbGxfZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IHZjbykK PiAgIAlJOTE1X1dSSVRFKEJYVF9ERV9QTExfRU5BQkxFLCBCWFRfREVfUExMX1BMTF9FTkFCTEUp Owo+Cj4gICAJLyogVGltZW91dCAyMDB1cyAqLwo+IC0JaWYgKHdhaXRfZm9yKChJOTE1X1JFQUQo QlhUX0RFX1BMTF9FTkFCTEUpICYgQlhUX0RFX1BMTF9MT0NLKSAhPSAwLCAxKSkKPiArCWlmIChp bnRlbF93YWl0X2Zvcl9yZWdpc3RlcihkZXZfcHJpdiwKPiArCQkJCSAgICBCWFRfREVfUExMX0VO QUJMRSwKPiArCQkJCSAgICBCWFRfREVfUExMX0xPQ0ssCj4gKwkJCQkgICAgQlhUX0RFX1BMTF9M T0NLLAo+ICsJCQkJICAgIDEpKQo+ICAgCQlEUk1fRVJST1IoInRpbWVvdXQgd2FpdGluZyBmb3Ig REUgUExMIGxvY2tcbiIpOwo+Cj4gICAJZGV2X3ByaXYtPmNkY2xrX3BsbC52Y28gPSB2Y287Cj4g QEAgLTU2NzcsNyArNTcwNiw5IEBAIHNrbF9kcGxsMF9lbmFibGUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LCBpbnQgdmNvKQo+Cj4gICAJSTkxNV9XUklURShMQ1BMTDFfQ1RMLCBJ OTE1X1JFQUQoTENQTEwxX0NUTCkgfCBMQ1BMTF9QTExfRU5BQkxFKTsKPgo+IC0JaWYgKHdhaXRf Zm9yKEk5MTVfUkVBRChMQ1BMTDFfQ1RMKSAmIExDUExMX1BMTF9MT0NLLCA1KSkKPiArCWlmIChp bnRlbF93YWl0X2Zvcl9yZWdpc3RlcihkZXZfcHJpdiwKPiArCQkJCSAgICBMQ1BMTDFfQ1RMLCBM Q1BMTF9QTExfTE9DSywgTENQTExfUExMX0xPQ0ssCj4gKwkJCQkgICAgNSkpCj4gICAJCURSTV9F UlJPUigiRFBMTDAgbm90IGxvY2tlZFxuIik7Cj4KPiAgIAlkZXZfcHJpdi0+Y2RjbGtfcGxsLnZj byA9IHZjbzsKPiBAQCAtNTY5MCw3ICs1NzIxLDkgQEAgc3RhdGljIHZvaWQKPiAgIHNrbF9kcGxs MF9kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIHsKPiAgIAlJ OTE1X1dSSVRFKExDUExMMV9DVEwsIEk5MTVfUkVBRChMQ1BMTDFfQ1RMKSAmIH5MQ1BMTF9QTExf RU5BQkxFKTsKPiAtCWlmICh3YWl0X2ZvcighKEk5MTVfUkVBRChMQ1BMTDFfQ1RMKSAmIExDUExM X1BMTF9MT0NLKSwgMSkpCj4gKwlpZiAoaW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXIoZGV2X3ByaXYs Cj4gKwkJCQkgICBMQ1BMTDFfQ1RMLCBMQ1BMTF9QTExfTE9DSywgMCwKPiArCQkJCSAgIDEpKQo+ ICAgCQlEUk1fRVJST1IoIkNvdWxkbid0IGRpc2FibGUgRFBMTDBcbiIpOwo+Cj4gICAJZGV2X3By aXYtPmNkY2xrX3BsbC52Y28gPSAwOwo+IEBAIC05NTQ1LDcgKzk1NzgsNyBAQCBzdGF0aWMgdm9p ZCBoc3dfZGlzYWJsZV9sY3BsbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4g ICAJSTkxNV9XUklURShMQ1BMTF9DVEwsIHZhbCk7Cj4gICAJUE9TVElOR19SRUFEKExDUExMX0NU TCk7Cj4KPiAtCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFEKExDUExMX0NUTCkgJiBMQ1BMTF9QTExf TE9DSykgPT0gMCwgMSkpCj4gKwlpZiAoaW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXIoZGV2X3ByaXYs IExDUExMX0NUTCwgTENQTExfUExMX0xPQ0ssIDAsIDEpKQo+ICAgCQlEUk1fRVJST1IoIkxDUExM IHN0aWxsIGxvY2tlZFxuIik7Cj4KPiAgIAl2YWwgPSBoc3dfcmVhZF9kY29tcChkZXZfcHJpdik7 Cj4gQEAgLTk2MDAsNyArOTYzMyw5IEBAIHN0YXRpYyB2b2lkIGhzd19yZXN0b3JlX2xjcGxsKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAl2YWwgJj0gfkxDUExMX1BMTF9E SVNBQkxFOwo+ICAgCUk5MTVfV1JJVEUoTENQTExfQ1RMLCB2YWwpOwo+Cj4gLQlpZiAod2FpdF9m b3IoSTkxNV9SRUFEKExDUExMX0NUTCkgJiBMQ1BMTF9QTExfTE9DSywgNSkpCj4gKwlpZiAoaW50 ZWxfd2FpdF9mb3JfcmVnaXN0ZXIoZGV2X3ByaXYsCj4gKwkJCQkgICAgTENQTExfQ1RMLCBMQ1BM TF9QTExfTE9DSywgTENQTExfUExMX0xPQ0ssCj4gKwkJCQkgICAgNSkpCj4gICAJCURSTV9FUlJP UigiTENQTEwgbm90IGxvY2tlZCB5ZXRcbiIpOwo+Cj4gICAJaWYgKHZhbCAmIExDUExMX0NEX1NP VVJDRV9GQ0xLKSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rw LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gaW5kZXggNmQ1ODZiNzJkYTg4 Li4wNzU3ZWU0MjdhZDcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHAuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiBAQCAtMTc2OCw4 ICsxNzY4LDkgQEAgc3RhdGljIHZvaWQgd2FpdF9wYW5lbF9zdGF0dXMoc3RydWN0IGludGVsX2Rw ICppbnRlbF9kcCwKPiAgIAkJCUk5MTVfUkVBRChwcF9zdGF0X3JlZyksCj4gICAJCQlJOTE1X1JF QUQocHBfY3RybF9yZWcpKTsKPgo+IC0JaWYgKF93YWl0X2ZvcigoSTkxNV9SRUFEKHBwX3N0YXRf cmVnKSAmIG1hc2spID09IHZhbHVlLAo+IC0JCSAgICAgIDUgKiBVU0VDX1BFUl9TRUMsIDEwICog VVNFQ19QRVJfTVNFQykpCj4gKwlpZiAoaW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXIoZGV2X3ByaXYs Cj4gKwkJCQkgICAgcHBfc3RhdF9yZWcsIG1hc2ssIHZhbHVlLAo+ICsJCQkJICAgIDUwMDApKQo+ ICAgCQlEUk1fRVJST1IoIlBhbmVsIHN0YXR1cyB0aW1lb3V0OiBzdGF0dXMgJTA4eCBjb250cm9s ICUwOHhcbiIsCj4gICAJCQkJSTkxNV9SRUFEKHBwX3N0YXRfcmVnKSwKPiAgIAkJCQlJOTE1X1JF QUQocHBfY3RybF9yZWcpKTsKPiBAQCAtMzMyMSw4ICszMzIyLDEwIEBAIHZvaWQgaW50ZWxfZHBf c2V0X2lkbGVfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICAgCWlmIChw b3J0ID09IFBPUlRfQSkKPiAgIAkJcmV0dXJuOwo+Cj4gLQlpZiAod2FpdF9mb3IoKEk5MTVfUkVB RChEUF9UUF9TVEFUVVMocG9ydCkpICYgRFBfVFBfU1RBVFVTX0lETEVfRE9ORSksCj4gLQkJICAg ICAxKSkKPiArCWlmIChpbnRlbF93YWl0X2Zvcl9yZWdpc3RlcihkZXZfcHJpdixEUF9UUF9TVEFU VVMocG9ydCksCj4gKwkJCQkgICAgRFBfVFBfU1RBVFVTX0lETEVfRE9ORSwKPiArCQkJCSAgICBE UF9UUF9TVEFUVVNfSURMRV9ET05FLAo+ICsJCQkJICAgIDEpKQo+ICAgCQlEUk1fRVJST1IoIlRp bWVkIG91dCB3YWl0aW5nIGZvciBEUCBpZGxlIHBhdHRlcm5zXG4iKTsKPiAgIH0KPgo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9tc3QuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2RwX21zdC5jCj4gaW5kZXggNWY4OGUxMjU3NWFjLi5jMWQzMTg2MDFi ZjEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbXN0LmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9tc3QuYwo+IEBAIC0yMTMsOCArMjEz LDExIEBAIHN0YXRpYyB2b2lkIGludGVsX21zdF9lbmFibGVfZHAoc3RydWN0IGludGVsX2VuY29k ZXIgKmVuY29kZXIpCj4KPiAgIAlEUk1fREVCVUdfS01TKCIlZFxuIiwgaW50ZWxfZHAtPmFjdGl2 ZV9tc3RfbGlua3MpOwo+Cj4gLQlpZiAod2FpdF9mb3IoKEk5MTVfUkVBRChEUF9UUF9TVEFUVVMo cG9ydCkpICYgRFBfVFBfU1RBVFVTX0FDVF9TRU5UKSwKPiAtCQkgICAgIDEpKQo+ICsJaWYgKGlu dGVsX3dhaXRfZm9yX3JlZ2lzdGVyKGRldl9wcml2LAo+ICsJCQkJICAgIERQX1RQX1NUQVRVUyhw b3J0KSwKPiArCQkJCSAgICBEUF9UUF9TVEFUVVNfQUNUX1NFTlQsCj4gKwkJCQkgICAgRFBfVFBf U1RBVFVTX0FDVF9TRU5ULAo+ICsJCQkJICAgIDEpKQo+ICAgCQlEUk1fRVJST1IoIlRpbWVkIG91 dCB3YWl0aW5nIGZvciBBQ1Qgc2VudFxuIik7Cj4KPiAgIAlyZXQgPSBkcm1fZHBfY2hlY2tfYWN0 X3N0YXR1cygmaW50ZWxfZHAtPm1zdF9tZ3IpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcGxsX21nci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBs bF9tZ3IuYwo+IGluZGV4IGUxMzBjM2VkMmI2ZS4uZTE5NzU3Yzc2ZGI2IDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwbGxfbWdyLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcGxsX21nci5jCj4gQEAgLTg1Niw3ICs4NTYsMTEgQEAgc3RhdGlj IHZvaWQgc2tsX2RkaV9wbGxfZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPiAgIAlJOTE1X1dSSVRFKHJlZ3NbcGxsLT5pZF0uY3RsLAo+ICAgCQkgICBJOTE1X1JFQUQo cmVnc1twbGwtPmlkXS5jdGwpIHwgTENQTExfUExMX0VOQUJMRSk7Cj4KPiAtCWlmICh3YWl0X2Zv cihJOTE1X1JFQUQoRFBMTF9TVEFUVVMpICYgRFBMTF9MT0NLKHBsbC0+aWQpLCA1KSkKPiArCWlm IChpbnRlbF93YWl0X2Zvcl9yZWdpc3RlcihkZXZfcHJpdiwKPiArCQkJCSAgICBEUExMX1NUQVRV UywKPiArCQkJCSAgICBEUExMX0xPQ0socGxsLT5pZCksCj4gKwkJCQkgICAgRFBMTF9MT0NLKHBs bC0+aWQpLAo+ICsJCQkJICAgIDUpKQo+ICAgCQlEUk1fRVJST1IoIkRQTEwgJWQgbm90IGxvY2tl ZFxuIiwgcGxsLT5pZCk7Cj4gICB9Cj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHNpLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2kuYwo+IGluZGV4 IDYzYjcyMDA2MWJkMi4uNDQ4NzQxZDg2NTNiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RzaS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNp LmMKPiBAQCAtOTAsNyArOTAsOSBAQCBzdGF0aWMgdm9pZCB3YWl0X2Zvcl9kc2lfZmlmb19lbXB0 eShzdHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2ksIGVudW0gcG9ydCBwb3J0KQo+ICAgCW1hc2sg PSBMUF9DVFJMX0ZJRk9fRU1QVFkgfCBIU19DVFJMX0ZJRk9fRU1QVFkgfAo+ICAgCQlMUF9EQVRB X0ZJRk9fRU1QVFkgfCBIU19EQVRBX0ZJRk9fRU1QVFk7Cj4KPiAtCWlmICh3YWl0X2ZvcigoSTkx NV9SRUFEKE1JUElfR0VOX0ZJRk9fU1RBVChwb3J0KSkgJiBtYXNrKSA9PSBtYXNrLCAxMDApKQo+ ICsJaWYgKGludGVsX3dhaXRfZm9yX3JlZ2lzdGVyKGRldl9wcml2LAo+ICsJCQkJICAgIE1JUElf R0VOX0ZJRk9fU1RBVChwb3J0KSwgbWFzaywgbWFzaywKPiArCQkJCSAgICAxMDApKQo+ICAgCQlE Uk1fRVJST1IoIkRQSSBGSUZPcyBhcmUgbm90IGVtcHR5XG4iKTsKPiAgIH0KPgo+IEBAIC0xNTgs OCArMTYwLDEwIEBAIHN0YXRpYyBzc2l6ZV90IGludGVsX2RzaV9ob3N0X3RyYW5zZmVyKHN0cnVj dCBtaXBpX2RzaV9ob3N0ICpob3N0LAo+Cj4gICAJLyogbm90ZTogdGhpcyBpcyBuZXZlciB0cnVl IGZvciByZWFkcyAqLwo+ICAgCWlmIChwYWNrZXQucGF5bG9hZF9sZW5ndGgpIHsKPiAtCj4gLQkJ aWYgKHdhaXRfZm9yKChJOTE1X1JFQUQoTUlQSV9HRU5fRklGT19TVEFUKHBvcnQpKSAmIGRhdGFf bWFzaykgPT0gMCwgNTApKQo+ICsJCWlmIChpbnRlbF93YWl0X2Zvcl9yZWdpc3RlcihkZXZfcHJp diwKPiArCQkJCQkgICAgTUlQSV9HRU5fRklGT19TVEFUKHBvcnQpLAo+ICsJCQkJCSAgICBkYXRh X21hc2ssIDAsCj4gKwkJCQkJICAgIDUwKSkKPiAgIAkJCURSTV9FUlJPUigiVGltZW91dCB3YWl0 aW5nIGZvciBIUy9MUCBEQVRBIEZJRk8gIWZ1bGxcbiIpOwo+Cj4gICAJCXdyaXRlX2RhdGEoZGV2 X3ByaXYsIGRhdGFfcmVnLCBwYWNrZXQucGF5bG9hZCwKPiBAQCAtMTcwLDcgKzE3NCwxMCBAQCBz dGF0aWMgc3NpemVfdCBpbnRlbF9kc2lfaG9zdF90cmFuc2ZlcihzdHJ1Y3QgbWlwaV9kc2lfaG9z dCAqaG9zdCwKPiAgIAkJSTkxNV9XUklURShNSVBJX0lOVFJfU1RBVChwb3J0KSwgR0VOX1JFQURf REFUQV9BVkFJTCk7Cj4gICAJfQo+Cj4gLQlpZiAod2FpdF9mb3IoKEk5MTVfUkVBRChNSVBJX0dF Tl9GSUZPX1NUQVQocG9ydCkpICYgY3RybF9tYXNrKSA9PSAwLCA1MCkpIHsKPiArCWlmIChpbnRl bF93YWl0X2Zvcl9yZWdpc3RlcihkZXZfcHJpdiwKPiArCQkJCSAgICBNSVBJX0dFTl9GSUZPX1NU QVQocG9ydCksCj4gKwkJCQkgICAgY3RybF9tYXNrLCAwLAo+ICsJCQkJICAgIDUwKSkgewo+ICAg CQlEUk1fRVJST1IoIlRpbWVvdXQgd2FpdGluZyBmb3IgSFMvTFAgQ1RSTCBGSUZPICFmdWxsXG4i KTsKPiAgIAl9Cj4KPiBAQCAtMTc5LDcgKzE4NiwxMCBAQCBzdGF0aWMgc3NpemVfdCBpbnRlbF9k c2lfaG9zdF90cmFuc2ZlcihzdHJ1Y3QgbWlwaV9kc2lfaG9zdCAqaG9zdCwKPiAgIAkvKiAtPnJ4 X2xlbiBpcyBzZXQgb25seSBmb3IgcmVhZHMgKi8KPiAgIAlpZiAobXNnLT5yeF9sZW4pIHsKPiAg IAkJZGF0YV9tYXNrID0gR0VOX1JFQURfREFUQV9BVkFJTDsKPiAtCQlpZiAod2FpdF9mb3IoKEk5 MTVfUkVBRChNSVBJX0lOVFJfU1RBVChwb3J0KSkgJiBkYXRhX21hc2spID09IGRhdGFfbWFzaywg NTApKQo+ICsJCWlmIChpbnRlbF93YWl0X2Zvcl9yZWdpc3RlcihkZXZfcHJpdiwKPiArCQkJCQkg ICAgTUlQSV9JTlRSX1NUQVQocG9ydCksCj4gKwkJCQkJICAgIGRhdGFfbWFzaywgZGF0YV9tYXNr LAo+ICsJCQkJCSAgICA1MCkpCj4gICAJCQlEUk1fRVJST1IoIlRpbWVvdXQgd2FpdGluZyBmb3Ig cmVhZCBkYXRhLlxuIik7Cj4KPiAgIAkJcmVhZF9kYXRhKGRldl9wcml2LCBkYXRhX3JlZywgbXNn LT5yeF9idWYsIG1zZy0+cnhfbGVuKTsKPiBAQCAtMjY5LDcgKzI3OSw5IEBAIHN0YXRpYyBpbnQg ZHBpX3NlbmRfY21kKHN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSwgdTMyIGNtZCwgYm9vbCBo cywKPiAgIAlJOTE1X1dSSVRFKE1JUElfRFBJX0NPTlRST0wocG9ydCksIGNtZCk7Cj4KPiAgIAlt YXNrID0gU1BMX1BLVF9TRU5UX0lOVEVSUlVQVDsKPiAtCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFE KE1JUElfSU5UUl9TVEFUKHBvcnQpKSAmIG1hc2spID09IG1hc2ssIDEwMCkpCj4gKwlpZiAoaW50 ZWxfd2FpdF9mb3JfcmVnaXN0ZXIoZGV2X3ByaXYsCj4gKwkJCQkgICAgTUlQSV9JTlRSX1NUQVQo cG9ydCksIG1hc2ssIG1hc2ssCj4gKwkJCQkgICAgMTAwKSkKPiAgIAkJRFJNX0VSUk9SKCJWaWRl byBtb2RlIGNvbW1hbmQgMHglMDh4IHNlbmQgZmFpbGVkLlxuIiwgY21kKTsKPgo+ICAgCXJldHVy biAwOwo+IEBAIC02NjcsOCArNjc5LDkgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHNpX2NsZWFyX2Rl dmljZV9yZWFkeShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiAgIAkJLyogV2FpdCB0 aWxsIENsb2NrIGxhbmVzIGFyZSBpbiBMUC0wMCBzdGF0ZSBmb3IgTUlQSSBQb3J0IEEKPiAgIAkJ ICogb25seS4gTUlQSSBQb3J0IEMgaGFzIG5vIHNpbWlsYXIgYml0IGZvciBjaGVja2luZwo+ICAg CQkgKi8KPiAtCQlpZiAod2FpdF9mb3IoKChJOTE1X1JFQUQocG9ydF9jdHJsKSAmIEFGRV9MQVRD SE9VVCkKPiAtCQkJCQkJPT0gMHgwMDAwMCksIDMwKSkKPiArCQlpZiAoaW50ZWxfd2FpdF9mb3Jf cmVnaXN0ZXIoZGV2X3ByaXYsCj4gKwkJCQkJICAgIHBvcnRfY3RybCwgQUZFX0xBVENIT1VULCAw LAo+ICsJCQkJCSAgICAzMCkpCj4gICAJCQlEUk1fRVJST1IoIkRTSSBMUCBub3QgZ29pbmcgTG93 XG4iKTsKPgo+ICAgCQkvKiBEaXNhYmxlIE1JUEkgUEhZIHRyYW5zcGFyZW50IGxhdGNoICovCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaV9wbGwuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaV9wbGwuYwo+IGluZGV4IDE3NjVlNmUxOGYyYy4uNGY5 OTMwYmM4OWU1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaV9w bGwuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaV9wbGwuYwo+IEBAIC0y MzQsOCArMjM0LDExIEBAIHN0YXRpYyB2b2lkIGJ4dF9kaXNhYmxlX2RzaV9wbGwoc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIpCj4gICAJICogUExMIGxvY2sgc2hvdWxkIGRlYXNzZXJ0IHdp dGhpbiAyMDB1cy4KPiAgIAkgKiBXYWl0IHVwIHRvIDFtcyBiZWZvcmUgdGltaW5nIG91dC4KPiAg IAkgKi8KPiAtCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFEKEJYVF9EU0lfUExMX0VOQUJMRSkKPiAt CQkJCQkmIEJYVF9EU0lfUExMX0xPQ0tFRCkgPT0gMCwgMSkpCj4gKwlpZiAoaW50ZWxfd2FpdF9m b3JfcmVnaXN0ZXIoZGV2X3ByaXYsCj4gKwkJCQkgICAgQlhUX0RTSV9QTExfRU5BQkxFLAo+ICsJ CQkJICAgIEJYVF9EU0lfUExMX0xPQ0tFRCwKPiArCQkJCSAgICAwLAo+ICsJCQkJICAgIDEpKQo+ ICAgCQlEUk1fRVJST1IoIlRpbWVvdXQgd2FpdGluZyBmb3IgUExMIGxvY2sgZGVhc3NlcnRpb25c biIpOwo+ICAgfQo+Cj4gQEAgLTQ4Niw3ICs0ODksMTEgQEAgc3RhdGljIHZvaWQgYnh0X2VuYWJs ZV9kc2lfcGxsKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAgCUk5MTVfV1JJVEUo QlhUX0RTSV9QTExfRU5BQkxFLCB2YWwpOwo+Cj4gICAJLyogVGltZW91dCBhbmQgZmFpbCBpZiBQ TEwgbm90IGxvY2tlZCAqLwo+IC0JaWYgKHdhaXRfZm9yKEk5MTVfUkVBRChCWFRfRFNJX1BMTF9F TkFCTEUpICYgQlhUX0RTSV9QTExfTE9DS0VELCAxKSkgewo+ICsJaWYgKGludGVsX3dhaXRfZm9y X3JlZ2lzdGVyKGRldl9wcml2LAo+ICsJCQkJICAgIEJYVF9EU0lfUExMX0VOQUJMRSwKPiArCQkJ CSAgICBCWFRfRFNJX1BMTF9MT0NLRUQsCj4gKwkJCQkgICAgQlhUX0RTSV9QTExfTE9DS0VELAo+ ICsJCQkJICAgIDEpKSB7Cj4gICAJCURSTV9FUlJPUigiVGltZWQgb3V0IHdhaXRpbmcgZm9yIERT SSBQTEwgdG8gbG9ja1xuIik7Cj4gICAJCXJldHVybjsKPiAgIAl9Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZmJjLmMKPiBpbmRleCA5NzExMDUzM2RjYWEuLjk3OGQ3OTUzMmY5NiAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2ZiYy5jCj4gQEAgLTEyNCw3ICsxMjQsOSBAQCBzdGF0aWMgdm9pZCBpOHh4 X2ZiY19kZWFjdGl2YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAlJ OTE1X1dSSVRFKEZCQ19DT05UUk9MLCBmYmNfY3RsKTsKPgo+ICAgCS8qIFdhaXQgZm9yIGNvbXBy ZXNzaW5nIGJpdCB0byBjbGVhciAqLwo+IC0JaWYgKHdhaXRfZm9yKChJOTE1X1JFQUQoRkJDX1NU QVRVUykgJiBGQkNfU1RBVF9DT01QUkVTU0lORykgPT0gMCwgMTApKSB7Cj4gKwlpZiAoaW50ZWxf d2FpdF9mb3JfcmVnaXN0ZXIoZGV2X3ByaXYsCj4gKwkJCQkgICAgRkJDX1NUQVRVUywgRkJDX1NU QVRfQ09NUFJFU1NJTkcsIDAsCj4gKwkJCQkgICAgMTApKSB7Cj4gICAJCURSTV9ERUJVR19LTVMo IkZCQyBpZGxlIHRpbWVkIG91dFxuIik7Cj4gICAJCXJldHVybjsKPiAgIAl9Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2kyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfaTJjLmMKPiBpbmRleCA4MWRlMjMwOThiZTcuLjZiYzRjMDY0ZGYwYiAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9pMmMuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2kyYy5jCj4gQEAgLTI5OCwxNSArMjk4LDE2IEBAIGdtYnVzX3dh aXRfaWRsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICB7Cj4gICAJaW50 IHJldDsKPgo+IC0jZGVmaW5lIEMgKChJOTE1X1JFQURfTk9UUkFDRShHTUJVUzIpICYgR01CVVNf QUNUSVZFKSA9PSAwKQo+IC0KPiAgIAlpZiAoIUhBU19HTUJVU19JUlEoZGV2X3ByaXYpKQo+IC0J CXJldHVybiB3YWl0X2ZvcihDLCAxMCk7Cj4gKwkJcmV0dXJuIGludGVsX3dhaXRfZm9yX3JlZ2lz dGVyKGRldl9wcml2LAo+ICsJCQkJCSAgICAgICBHTUJVUzIsIEdNQlVTX0FDVElWRSwgMCwKPiAr CQkJCQkgICAgICAgMTApOwo+Cj4gICAJLyogSW1wb3J0YW50OiBUaGUgaHcgaGFuZGxlcyBvbmx5 IHRoZSBmaXJzdCBiaXQsIHNvIHNldCBvbmx5IG9uZSEgKi8KPiAgIAlJOTE1X1dSSVRFKEdNQlVT NCwgR01CVVNfSURMRV9FTik7Cj4KPiAtCXJldCA9IHdhaXRfZXZlbnRfdGltZW91dChkZXZfcHJp di0+Z21idXNfd2FpdF9xdWV1ZSwgQywKPiArCXJldCA9IHdhaXRfZXZlbnRfdGltZW91dChkZXZf cHJpdi0+Z21idXNfd2FpdF9xdWV1ZSwKPiArCQkJCSAoSTkxNV9SRUFEX05PVFJBQ0UoR01CVVMy KSAmIEdNQlVTX0FDVElWRSkgPT0gMCwKPiAgIAkJCQkgbXNlY3NfdG9famlmZmllc190aW1lb3V0 KDEwKSk7Cj4KPiAgIAlJOTE1X1dSSVRFKEdNQlVTNCwgMCk7Cj4gQEAgLTMxNSw3ICszMTYsNiBA QCBnbWJ1c193YWl0X2lkbGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAg CQlyZXR1cm4gMDsKPiAgIAllbHNlCj4gICAJCXJldHVybiAtRVRJTUVET1VUOwo+IC0jdW5kZWYg Qwo+ICAgfQo+Cj4gICBzdGF0aWMgaW50Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiBpbmRl eCA2MmIwZGM2YzI2NDIuLjMzOWQ4MDQxMDc1ZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9scmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xy Yy5jCj4gQEAgLTkyOSw3ICs5MjksMTAgQEAgdm9pZCBpbnRlbF9sb2dpY2FsX3Jpbmdfc3RvcChz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4KPiAgIAkvKiBUT0RPOiBJcyB0aGlzIGNv cnJlY3Qgd2l0aCBFeGVjbGlzdHMgZW5hYmxlZD8gKi8KPiAgIAlJOTE1X1dSSVRFX01PREUoZW5n aW5lLCBfTUFTS0VEX0JJVF9FTkFCTEUoU1RPUF9SSU5HKSk7Cj4gLQlpZiAod2FpdF9mb3IoKEk5 MTVfUkVBRF9NT0RFKGVuZ2luZSkgJiBNT0RFX0lETEUpICE9IDAsIDEwMDApKSB7Cj4gKwlpZiAo aW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXIoZGV2X3ByaXYsCj4gKwkJCQkgICAgUklOR19NSV9NT0RF KGVuZ2luZS0+bW1pb19iYXNlKSwKPiArCQkJCSAgICBNT0RFX0lETEUsIE1PREVfSURMRSwKPiAr CQkJCSAgICAxMDAwKSkgewo+ICAgCQlEUk1fRVJST1IoIiVzIDp0aW1lZCBvdXQgdHJ5aW5nIHRv IHN0b3AgcmluZ1xuIiwgZW5naW5lLT5uYW1lKTsKPiAgIAkJcmV0dXJuOwo+ICAgCX0KPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHZkcy5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfbHZkcy5jCj4gaW5kZXggY2Y2ODA2NjE0NTRiLi5jMjZmZmVmODA2OTIg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHZkcy5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHZkcy5jCj4gQEAgLTIzMSw3ICsyMzEsNyBAQCBz dGF0aWMgdm9pZCBpbnRlbF9lbmFibGVfbHZkcyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl cikKPgo+ICAgCUk5MTVfV1JJVEUoY3RsX3JlZywgSTkxNV9SRUFEKGN0bF9yZWcpIHwgUE9XRVJf VEFSR0VUX09OKTsKPiAgIAlQT1NUSU5HX1JFQUQobHZkc19lbmNvZGVyLT5yZWcpOwo+IC0JaWYg KHdhaXRfZm9yKChJOTE1X1JFQUQoc3RhdF9yZWcpICYgUFBfT04pICE9IDAsIDEwMDApKQo+ICsJ aWYgKGludGVsX3dhaXRfZm9yX3JlZ2lzdGVyKGRldl9wcml2LCBzdGF0X3JlZywgUFBfT04sIFBQ X09OLCAxMDAwKSkKPiAgIAkJRFJNX0VSUk9SKCJ0aW1lZCBvdXQgd2FpdGluZyBmb3IgcGFuZWwg dG8gcG93ZXIgb25cbiIpOwo+Cj4gICAJaW50ZWxfcGFuZWxfZW5hYmxlX2JhY2tsaWdodChpbnRl bF9jb25uZWN0b3IpOwo+IEBAIC0yNTMsNyArMjUzLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZGlz YWJsZV9sdmRzKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ICAgCX0KPgo+ICAgCUk5 MTVfV1JJVEUoY3RsX3JlZywgSTkxNV9SRUFEKGN0bF9yZWcpICYgflBPV0VSX1RBUkdFVF9PTik7 Cj4gLQlpZiAod2FpdF9mb3IoKEk5MTVfUkVBRChzdGF0X3JlZykgJiBQUF9PTikgPT0gMCwgMTAw MCkpCj4gKwlpZiAoaW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXIoZGV2X3ByaXYsIHN0YXRfcmVnLCBQ UF9PTiwgMCwgMTAwMCkpCj4gICAJCURSTV9FUlJPUigidGltZWQgb3V0IHdhaXRpbmcgZm9yIHBh bmVsIHRvIHBvd2VyIG9mZlxuIik7Cj4KPiAgIAlJOTE1X1dSSVRFKGx2ZHNfZW5jb2Rlci0+cmVn LCBJOTE1X1JFQUQobHZkc19lbmNvZGVyLT5yZWcpICYgfkxWRFNfUE9SVF9FTik7Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcHNyLmMKPiBpbmRleCAyOWEwOWJmNmJkMTguLjhkMjVjNDVhYTZmZSAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wc3IuYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jCj4gQEAgLTUwMSw4ICs1MDEsMTEgQEAgc3RhdGlj IHZvaWQgdmx2X3Bzcl9kaXNhYmxlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4KPiAgIAlp ZiAoZGV2X3ByaXYtPnBzci5hY3RpdmUpIHsKPiAgIAkJLyogUHV0IFZMViBQU1IgYmFjayB0byBQ U1Jfc3RhdGUgMCB0aGF0IGlzIFBTUiBEaXNhYmxlZC4gKi8KPiAtCQlpZiAod2FpdF9mb3IoKEk5 MTVfUkVBRChWTFZfUFNSU1RBVChpbnRlbF9jcnRjLT5waXBlKSkgJgo+IC0JCQkgICAgICBWTFZf RURQX1BTUl9JTl9UUkFOUykgPT0gMCwgMSkpCj4gKwkJaWYgKGludGVsX3dhaXRfZm9yX3JlZ2lz dGVyKGRldl9wcml2LAo+ICsJCQkJCSAgICBWTFZfUFNSU1RBVChpbnRlbF9jcnRjLT5waXBlKSwK PiArCQkJCQkgICAgVkxWX0VEUF9QU1JfSU5fVFJBTlMsCj4gKwkJCQkJICAgIDAsCj4gKwkJCQkJ ICAgIDEpKQo+ICAgCQkJV0FSTigxLCAiUFNSIHRyYW5zaXRpb24gdG9vayBsb25nZXIgdGhhbiBl eHBlY3RlZFxuIik7Cj4KPiAgIAkJdmFsID0gSTkxNV9SRUFEKFZMVl9QU1JDVEwoaW50ZWxfY3J0 Yy0+cGlwZSkpOwo+IEBAIC01MjgsOSArNTMxLDExIEBAIHN0YXRpYyB2b2lkIGhzd19wc3JfZGlz YWJsZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICAgCQkJICAgSTkxNV9SRUFEKEVEUF9Q U1JfQ1RMKSAmIH5FRFBfUFNSX0VOQUJMRSk7Cj4KPiAgIAkJLyogV2FpdCB0aWxsIFBTUiBpcyBp ZGxlICovCj4gLQkJaWYgKF93YWl0X2ZvcigoSTkxNV9SRUFEKEVEUF9QU1JfU1RBVFVTX0NUTCkg Jgo+IC0JCQkgICAgICAgRURQX1BTUl9TVEFUVVNfU1RBVEVfTUFTSykgPT0gMCwKPiAtCQkJICAg ICAgIDIgKiBVU0VDX1BFUl9TRUMsIDEwICogVVNFQ19QRVJfTVNFQykpCj4gKwkJaWYgKGludGVs X3dhaXRfZm9yX3JlZ2lzdGVyKGRldl9wcml2LAo+ICsJCQkJCSAgICBFRFBfUFNSX1NUQVRVU19D VEwsCj4gKwkJCQkJICAgIEVEUF9QU1JfU1RBVFVTX1NUQVRFX01BU0ssCj4gKwkJCQkJICAgIDAs Cj4gKwkJCQkJICAgIDIwMDApKQo+ICAgCQkJRFJNX0VSUk9SKCJUaW1lZCBvdXQgd2FpdGluZyBm b3IgUFNSIElkbGUgU3RhdGVcbiIpOwo+Cj4gICAJCWRldl9wcml2LT5wc3IuYWN0aXZlID0gZmFs c2U7Cj4gQEAgLTU4NiwxNCArNTkxLDIwIEBAIHN0YXRpYyB2b2lkIGludGVsX3Bzcl93b3JrKHN0 cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPiAgIAkgKiBhbmQgYmUgcmVhZHkgZm9yIHJlLWVuYWJs ZS4KPiAgIAkgKi8KPiAgIAlpZiAoSEFTX0RESShkZXZfcHJpdikpIHsKPiAtCQlpZiAod2FpdF9m b3IoKEk5MTVfUkVBRChFRFBfUFNSX1NUQVRVU19DVEwpICYKPiAtCQkJICAgICAgRURQX1BTUl9T VEFUVVNfU1RBVEVfTUFTSykgPT0gMCwgNTApKSB7Cj4gKwkJaWYgKGludGVsX3dhaXRfZm9yX3Jl Z2lzdGVyKGRldl9wcml2LAo+ICsJCQkJCSAgICBFRFBfUFNSX1NUQVRVU19DVEwsCj4gKwkJCQkJ ICAgIEVEUF9QU1JfU1RBVFVTX1NUQVRFX01BU0ssCj4gKwkJCQkJICAgIDAsCj4gKwkJCQkJICAg IDUwKSkgewo+ICAgCQkJRFJNX0VSUk9SKCJUaW1lZCBvdXQgd2FpdGluZyBmb3IgUFNSIElkbGUg Zm9yIHJlLWVuYWJsZVxuIik7Cj4gICAJCQlyZXR1cm47Cj4gICAJCX0KPiAgIAl9IGVsc2Ugewo+ IC0JCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFEKFZMVl9QU1JTVEFUKHBpcGUpKSAmCj4gLQkJCSAg ICAgIFZMVl9FRFBfUFNSX0lOX1RSQU5TKSA9PSAwLCAxKSkgewo+ICsJCWlmIChpbnRlbF93YWl0 X2Zvcl9yZWdpc3RlcihkZXZfcHJpdiwKPiArCQkJCQkgICAgVkxWX1BTUlNUQVQocGlwZSksCj4g KwkJCQkJICAgIFZMVl9FRFBfUFNSX0lOX1RSQU5TLAo+ICsJCQkJCSAgICAwLAo+ICsJCQkJCSAg ICAxKSkgewo+ICAgCQkJRFJNX0VSUk9SKCJUaW1lZCBvdXQgd2FpdGluZyBmb3IgUFNSIElkbGUg Zm9yIHJlLWVuYWJsZVxuIik7Cj4gICAJCQlyZXR1cm47Cj4gICAJCX0KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gaW5kZXggMDRhMmQxNDFlNjkwLi5jNDM2NWNjMWYx MzMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gQEAgLTUx NSw4ICs1MTUsOSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9yaW5nX3NldHVwX3N0YXR1c19wYWdlKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAkJSTkxNV9XUklURShyZWcsCj4gICAJ CQkgICBfTUFTS0VEX0JJVF9FTkFCTEUoSU5TVFBNX1RMQl9JTlZBTElEQVRFIHwKPiAgIAkJCQkJ ICAgICAgSU5TVFBNX1NZTkNfRkxVU0gpKTsKPiAtCQlpZiAod2FpdF9mb3IoKEk5MTVfUkVBRChy ZWcpICYgSU5TVFBNX1NZTkNfRkxVU0gpID09IDAsCj4gLQkJCSAgICAgMTAwMCkpCj4gKwkJaWYg KGludGVsX3dhaXRfZm9yX3JlZ2lzdGVyKGRldl9wcml2LAo+ICsJCQkJCSAgICByZWcsIElOU1RQ TV9TWU5DX0ZMVVNILCAwLAo+ICsJCQkJCSAgICAxMDAwKSkKPiAgIAkJCURSTV9FUlJPUigiJXM6 IHdhaXQgZm9yIFN5bmNGbHVzaCB0byBjb21wbGV0ZSBmb3IgVExCIGludmFsaWRhdGlvbiB0aW1l ZCBvdXRcbiIsCj4gICAJCQkJICBlbmdpbmUtPm5hbWUpOwo+ICAgCX0KPiBAQCAtNTI4LDcgKzUy OSwxMSBAQCBzdGF0aWMgYm9vbCBzdG9wX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lKQo+Cj4gICAJaWYgKCFJU19HRU4yKGRldl9wcml2KSkgewo+ICAgCQlJOTE1X1dSSVRFX01P REUoZW5naW5lLCBfTUFTS0VEX0JJVF9FTkFCTEUoU1RPUF9SSU5HKSk7Cj4gLQkJaWYgKHdhaXRf Zm9yKChJOTE1X1JFQURfTU9ERShlbmdpbmUpICYgTU9ERV9JRExFKSAhPSAwLCAxMDAwKSkgewo+ ICsJCWlmIChpbnRlbF93YWl0X2Zvcl9yZWdpc3RlcihkZXZfcHJpdiwKPiArCQkJCQkgICAgUklO R19NSV9NT0RFKGVuZ2luZS0+bW1pb19iYXNlKSwKPiArCQkJCQkgICAgTU9ERV9JRExFLAo+ICsJ CQkJCSAgICBNT0RFX0lETEUsCj4gKwkJCQkJICAgIDEwMDApKSB7Cj4gICAJCQlEUk1fRVJST1Io IiVzIDogdGltZWQgb3V0IHRyeWluZyB0byBzdG9wIHJpbmdcbiIsCj4gICAJCQkJICBlbmdpbmUt Pm5hbWUpOwo+ICAgCQkJLyogU29tZXRpbWVzIHdlIG9ic2VydmUgdGhhdCB0aGUgaWRsZSBmbGFn IGlzIG5vdAo+IEBAIC0yNjkxLDkgKzI2OTYsMTEgQEAgc3RhdGljIHZvaWQgZ2VuNl9ic2Rfcmlu Z193cml0ZV90YWlsKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgIAlJOTE1X1dS SVRFNjQoR0VONl9CU0RfUk5DSUQsIDB4MCk7Cj4KPiAgIAkvKiBXYWl0IGZvciB0aGUgcmluZyBu b3QgdG8gYmUgaWRsZSwgaS5lLiBmb3IgaXQgdG8gd2FrZSB1cC4gKi8KPiAtCWlmICh3YWl0X2Zv cigoSTkxNV9SRUFEKEdFTjZfQlNEX1NMRUVQX1BTTUlfQ09OVFJPTCkgJgo+IC0JCSAgICAgIEdF TjZfQlNEX1NMRUVQX0lORElDQVRPUikgPT0gMCwKPiAtCQkgICAgIDUwKSkKPiArCWlmIChpbnRl bF93YWl0X2Zvcl9yZWdpc3RlcihkZXZfcHJpdiwKPiArCQkJCSAgICBHRU42X0JTRF9TTEVFUF9Q U01JX0NPTlRST0wsCj4gKwkJCQkgICAgR0VONl9CU0RfU0xFRVBfSU5ESUNBVE9SLAo+ICsJCQkJ ICAgIDAsCj4gKwkJCQkgICAgNTApKQo+ICAgCQlEUk1fRVJST1IoInRpbWVkIG91dCB3YWl0aW5n IGZvciB0aGUgQlNEIHJpbmcgdG8gd2FrZSB1cFxuIik7Cj4KPiAgIAkvKiBOb3cgdGhhdCB0aGUg cmluZyBpcyBmdWxseSBwb3dlcmVkIHVwLCB1cGRhdGUgdGhlIHRhaWwgKi8KPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jCj4gaW5kZXggMjJiNDZmNWYwMjczLi43Y2JiYTQy ZjBhYjQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9w bS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jCj4gQEAg LTM2NSw4ICszNjUsMTEgQEAgc3RhdGljIHZvaWQgaHN3X3NldF9wb3dlcl93ZWxsKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPgo+ICAgCQlpZiAoIWlzX2VuYWJsZWQpIHsKPiAg IAkJCURSTV9ERUJVR19LTVMoIkVuYWJsaW5nIHBvd2VyIHdlbGxcbiIpOwo+IC0JCQlpZiAod2Fp dF9mb3IoKEk5MTVfUkVBRChIU1dfUFdSX1dFTExfRFJJVkVSKSAmCj4gLQkJCQkgICAgICBIU1df UFdSX1dFTExfU1RBVEVfRU5BQkxFRCksIDIwKSkKPiArCQkJaWYgKGludGVsX3dhaXRfZm9yX3Jl Z2lzdGVyKGRldl9wcml2LAo+ICsJCQkJCQkgICAgSFNXX1BXUl9XRUxMX0RSSVZFUiwKPiArCQkJ CQkJICAgIEhTV19QV1JfV0VMTF9TVEFURV9FTkFCTEVELAo+ICsJCQkJCQkgICAgSFNXX1BXUl9X RUxMX1NUQVRFX0VOQUJMRUQsCj4gKwkJCQkJCSAgICAyMCkpCj4gICAJCQkJRFJNX0VSUk9SKCJU aW1lb3V0IGVuYWJsaW5nIHBvd2VyIHdlbGxcbiIpOwo+ICAgCQkJaHN3X3Bvd2VyX3dlbGxfcG9z dF9lbmFibGUoZGV2X3ByaXYpOwo+ICAgCQl9Cj4gQEAgLTcwMCw4ICs3MDMsMTEgQEAgc3RhdGlj IHZvaWQgc2tsX3NldF9wb3dlcl93ZWxsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPgo+ICAgCXN3aXRjaCAocG93ZXJfd2VsbC0+ZGF0YSkgewo+ICAgCWNhc2UgU0tMX0RJU1Bf UFdfMToKPiAtCQlpZiAod2FpdF9mb3IoKEk5MTVfUkVBRChTS0xfRlVTRV9TVEFUVVMpICYKPiAt CQkJU0tMX0ZVU0VfUEcwX0RJU1RfU1RBVFVTKSwgMSkpIHsKPiArCQlpZiAoaW50ZWxfd2FpdF9m b3JfcmVnaXN0ZXIoZGV2X3ByaXYsCj4gKwkJCQkJICAgIFNLTF9GVVNFX1NUQVRVUywKPiArCQkJ CQkgICAgU0tMX0ZVU0VfUEcwX0RJU1RfU1RBVFVTLAo+ICsJCQkJCSAgICBTS0xfRlVTRV9QRzBf RElTVF9TVEFUVVMsCj4gKwkJCQkJICAgIDEpKSB7Cj4gICAJCQlEUk1fRVJST1IoIlBHMCBub3Qg ZW5hYmxlZFxuIik7Cj4gICAJCQlyZXR1cm47Cj4gICAJCX0KPiBAQCAtNzYyLDEyICs3NjgsMTgg QEAgc3RhdGljIHZvaWQgc2tsX3NldF9wb3dlcl93ZWxsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKPgo+ICAgCWlmIChjaGVja19mdXNlX3N0YXR1cykgewo+ICAgCQlpZiAocG93 ZXJfd2VsbC0+ZGF0YSA9PSBTS0xfRElTUF9QV18xKSB7Cj4gLQkJCWlmICh3YWl0X2ZvcigoSTkx NV9SRUFEKFNLTF9GVVNFX1NUQVRVUykgJgo+IC0JCQkJU0tMX0ZVU0VfUEcxX0RJU1RfU1RBVFVT KSwgMSkpCj4gKwkJCWlmIChpbnRlbF93YWl0X2Zvcl9yZWdpc3RlcihkZXZfcHJpdiwKPiArCQkJ CQkJICAgIFNLTF9GVVNFX1NUQVRVUywKPiArCQkJCQkJICAgIFNLTF9GVVNFX1BHMV9ESVNUX1NU QVRVUywKPiArCQkJCQkJICAgIFNLTF9GVVNFX1BHMV9ESVNUX1NUQVRVUywKPiArCQkJCQkJICAg IDEpKQo+ICAgCQkJCURSTV9FUlJPUigiUEcxIGRpc3RyaWJ1dGluZyBzdGF0dXMgdGltZW91dFxu Iik7Cj4gICAJCX0gZWxzZSBpZiAocG93ZXJfd2VsbC0+ZGF0YSA9PSBTS0xfRElTUF9QV18yKSB7 Cj4gLQkJCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFEKFNLTF9GVVNFX1NUQVRVUykgJgo+IC0JCQkJ U0tMX0ZVU0VfUEcyX0RJU1RfU1RBVFVTKSwgMSkpCj4gKwkJCWlmIChpbnRlbF93YWl0X2Zvcl9y ZWdpc3RlcihkZXZfcHJpdiwKPiArCQkJCQkJICAgIFNLTF9GVVNFX1NUQVRVUywKPiArCQkJCQkJ ICAgIFNLTF9GVVNFX1BHMl9ESVNUX1NUQVRVUywKPiArCQkJCQkJICAgIFNLTF9GVVNFX1BHMl9E SVNUX1NUQVRVUywKPiArCQkJCQkJICAgIDEpKQo+ICAgCQkJCURSTV9FUlJPUigiUEcyIGRpc3Ry aWJ1dGluZyBzdGF0dXMgdGltZW91dFxuIik7Cj4gICAJCX0KPiAgIAl9Cj4gQEAgLTEyMDYsNyAr MTIxOCw2IEBAIHN0YXRpYyB2b2lkIGFzc2VydF9jaHZfcGh5X3N0YXR1cyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAJdTMyIHBoeV9jb250cm9sID0gZGV2X3ByaXYtPmNo dl9waHlfY29udHJvbDsKPiAgIAl1MzIgcGh5X3N0YXR1cyA9IDA7Cj4gICAJdTMyIHBoeV9zdGF0 dXNfbWFzayA9IDB4ZmZmZmZmZmY7Cj4gLQl1MzIgdG1wOwo+Cj4gICAJLyoKPiAgIAkgKiBUaGUg QklPUyBjYW4gbGVhdmUgdGhlIFBIWSBpcyBzb21lIHdlaXJkIHN0YXRlCj4gQEAgLTEyOTQsMTAg KzEzMDUsMTQgQEAgc3RhdGljIHZvaWQgYXNzZXJ0X2Nodl9waHlfc3RhdHVzKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAkgKiBUaGUgUEhZIG1heSBiZSBidXN5IHdpdGgg c29tZSBpbml0aWFsIGNhbGlicmF0aW9uIGFuZCB3aGF0bm90LAo+ICAgCSAqIHNvIHRoZSBwb3dl ciBzdGF0ZSBjYW4gdGFrZSBhIHdoaWxlIHRvIGFjdHVhbGx5IGNoYW5nZS4KPiAgIAkgKi8KPiAt CWlmICh3YWl0X2ZvcigodG1wID0gSTkxNV9SRUFEKERJU1BMQVlfUEhZX1NUQVRVUykgJiBwaHlf c3RhdHVzX21hc2spID09IHBoeV9zdGF0dXMsIDEwKSkKPiAtCQlXQVJOKHBoeV9zdGF0dXMgIT0g dG1wLAo+IC0JCSAgICAgIlVuZXhwZWN0ZWQgUEhZX1NUQVRVUyAweCUwOHgsIGV4cGVjdGVkIDB4 JTA4eCAoUEhZX0NPTlRST0w9MHglMDh4KVxuIiwKPiAtCQkgICAgIHRtcCwgcGh5X3N0YXR1cywg ZGV2X3ByaXYtPmNodl9waHlfY29udHJvbCk7Cj4gKwlpZiAoaW50ZWxfd2FpdF9mb3JfcmVnaXN0 ZXIoZGV2X3ByaXYsCj4gKwkJCQkgICAgRElTUExBWV9QSFlfU1RBVFVTLAo+ICsJCQkJICAgIHBo eV9zdGF0dXNfbWFzaywKPiArCQkJCSAgICBwaHlfc3RhdHVzLAo+ICsJCQkJICAgIDEwKSkKPiAr CQlEUk1fRVJST1IoIlVuZXhwZWN0ZWQgUEhZX1NUQVRVUyAweCUwOHgsIGV4cGVjdGVkIDB4JTA4 eCAoUEhZX0NPTlRST0w9MHglMDh4KVxuIiwKPiArCQkJICBJOTE1X1JFQUQoRElTUExBWV9QSFlf U1RBVFVTKSAmIHBoeV9zdGF0dXNfbWFzaywKPiArCQkJICAgcGh5X3N0YXR1cywgZGV2X3ByaXYt PmNodl9waHlfY29udHJvbCk7Cj4gICB9Cj4KPiAgICN1bmRlZiBCSVRTX1NFVAo+IEBAIC0xMzI1 LDcgKzEzNDAsMTEgQEAgc3RhdGljIHZvaWQgY2h2X2RwaW9fY21uX3Bvd2VyX3dlbGxfZW5hYmxl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgIAl2bHZfc2V0X3Bvd2VyX3dl bGwoZGV2X3ByaXYsIHBvd2VyX3dlbGwsIHRydWUpOwo+Cj4gICAJLyogUG9sbCBmb3IgcGh5cHdy Z29vZCBzaWduYWwgKi8KPiAtCWlmICh3YWl0X2ZvcihJOTE1X1JFQUQoRElTUExBWV9QSFlfU1RB VFVTKSAmIFBIWV9QT1dFUkdPT0QocGh5KSwgMSkpCj4gKwlpZiAoaW50ZWxfd2FpdF9mb3JfcmVn aXN0ZXIoZGV2X3ByaXYsCj4gKwkJCQkgICAgRElTUExBWV9QSFlfU1RBVFVTLAo+ICsJCQkJICAg IFBIWV9QT1dFUkdPT0QocGh5KSwKPiArCQkJCSAgICBQSFlfUE9XRVJHT09EKHBoeSksCj4gKwkJ CQkgICAgMSkpCj4gICAJCURSTV9FUlJPUigiRGlzcGxheSBQSFkgJWQgaXMgbm90IHBvd2VyIHVw XG4iLCBwaHkpOwo+Cj4gICAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnNiX2xvY2spOwo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zaWRlYmFuZC5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfc2lkZWJhbmQuYwo+IGluZGV4IGMzOTk4MTg4Y2YzNS4uMWE4NDBi ZjkyZWVhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3NpZGViYW5k LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zaWRlYmFuZC5jCj4gQEAgLTUx LDcgKzUxLDkgQEAgc3RhdGljIGludCB2bHZfc2lkZWJhbmRfcncoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LCB1MzIgZGV2Zm4sCj4KPiAgIAlXQVJOX09OKCFtdXRleF9pc19sb2Nr ZWQoJmRldl9wcml2LT5zYl9sb2NrKSk7Cj4KPiAtCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFEKFZM Vl9JT1NGX0RPT1JCRUxMX1JFUSkgJiBJT1NGX1NCX0JVU1kpID09IDAsIDUpKSB7Cj4gKwlpZiAo aW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXIoZGV2X3ByaXYsCj4gKwkJCQkgICAgVkxWX0lPU0ZfRE9P UkJFTExfUkVRLCBJT1NGX1NCX0JVU1ksIDAsCj4gKwkJCQkgICAgNSkpIHsKPiAgIAkJRFJNX0RF QlVHX0RSSVZFUigiSU9TRiBzaWRlYmFuZCBpZGxlIHdhaXQgKCVzKSB0aW1lZCBvdXRcbiIsCj4g ICAJCQkJIGlzX3JlYWQgPyAicmVhZCIgOiAid3JpdGUiKTsKPiAgIAkJcmV0dXJuIC1FQUdBSU47 Cj4gQEAgLTYyLDcgKzY0LDkgQEAgc3RhdGljIGludCB2bHZfc2lkZWJhbmRfcncoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgZGV2Zm4sCj4gICAJCUk5MTVfV1JJVEUoVkxW X0lPU0ZfREFUQSwgKnZhbCk7Cj4gICAJSTkxNV9XUklURShWTFZfSU9TRl9ET09SQkVMTF9SRVEs IGNtZCk7Cj4KPiAtCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFEKFZMVl9JT1NGX0RPT1JCRUxMX1JF USkgJiBJT1NGX1NCX0JVU1kpID09IDAsIDUpKSB7Cj4gKwlpZiAoaW50ZWxfd2FpdF9mb3JfcmVn aXN0ZXIoZGV2X3ByaXYsCj4gKwkJCQkgICAgVkxWX0lPU0ZfRE9PUkJFTExfUkVRLCBJT1NGX1NC X0JVU1ksIDAsCj4gKwkJCQkgICAgNSkpIHsKPiAgIAkJRFJNX0RFQlVHX0RSSVZFUigiSU9TRiBz aWRlYmFuZCBmaW5pc2ggd2FpdCAoJXMpIHRpbWVkIG91dFxuIiwKPiAgIAkJCQkgaXNfcmVhZCA/ ICJyZWFkIiA6ICJ3cml0ZSIpOwo+ICAgCQlyZXR1cm4gLUVUSU1FRE9VVDsKPiBAQCAtMjAyLDgg KzIwNiw5IEBAIHUzMiBpbnRlbF9zYmlfcmVhZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsIHUxNiByZWcsCj4gICAJdTMyIHZhbHVlID0gMDsKPiAgIAlXQVJOX09OKCFtdXRleF9p c19sb2NrZWQoJmRldl9wcml2LT5zYl9sb2NrKSk7Cj4KPiAtCWlmICh3YWl0X2ZvcigoSTkxNV9S RUFEKFNCSV9DVExfU1RBVCkgJiBTQklfQlVTWSkgPT0gMCwKPiAtCQkJCTEwMCkpIHsKPiArCWlm IChpbnRlbF93YWl0X2Zvcl9yZWdpc3RlcihkZXZfcHJpdiwKPiArCQkJCSAgICBTQklfQ1RMX1NU QVQsIFNCSV9CVVNZLCAwLAo+ICsJCQkJICAgIDEwMCkpIHsKPiAgIAkJRFJNX0VSUk9SKCJ0aW1l b3V0IHdhaXRpbmcgZm9yIFNCSSB0byBiZWNvbWUgcmVhZHlcbiIpOwo+ICAgCQlyZXR1cm4gMDsK PiAgIAl9Cj4gQEAgLTIxNiw4ICsyMjEsMTEgQEAgdTMyIGludGVsX3NiaV9yZWFkKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTE2IHJlZywKPiAgIAkJdmFsdWUgPSBTQklfQ1RM X0RFU1RfTVBIWSB8IFNCSV9DVExfT1BfSU9SRDsKPiAgIAlJOTE1X1dSSVRFKFNCSV9DVExfU1RB VCwgdmFsdWUgfCBTQklfQlVTWSk7Cj4KPiAtCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFEKFNCSV9D VExfU1RBVCkgJiAoU0JJX0JVU1kgfCBTQklfUkVTUE9OU0VfRkFJTCkpID09IDAsCj4gLQkJCQkx MDApKSB7Cj4gKwlpZiAoaW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXIoZGV2X3ByaXYsCj4gKwkJCQkg ICAgU0JJX0NUTF9TVEFULAo+ICsJCQkJICAgIFNCSV9CVVNZIHwgU0JJX1JFU1BPTlNFX0ZBSUws Cj4gKwkJCQkgICAgMCwKPiArCQkJCSAgICAxMDApKSB7Cj4gICAJCURSTV9FUlJPUigidGltZW91 dCB3YWl0aW5nIGZvciBTQkkgdG8gY29tcGxldGUgcmVhZCB0cmFuc2FjdGlvblxuIik7Cj4gICAJ CXJldHVybiAwOwo+ICAgCX0KPiBAQCAtMjMyLDggKzI0MCw5IEBAIHZvaWQgaW50ZWxfc2JpX3dy aXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTE2IHJlZywgdTMyIHZhbHVl LAo+Cj4gICAJV0FSTl9PTighbXV0ZXhfaXNfbG9ja2VkKCZkZXZfcHJpdi0+c2JfbG9jaykpOwo+ Cj4gLQlpZiAod2FpdF9mb3IoKEk5MTVfUkVBRChTQklfQ1RMX1NUQVQpICYgU0JJX0JVU1kpID09 IDAsCj4gLQkJCQkxMDApKSB7Cj4gKwlpZiAoaW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXIoZGV2X3By aXYsCj4gKwkJCQkgICAgU0JJX0NUTF9TVEFULCBTQklfQlVTWSwgMCwKPiArCQkJCSAgICAxMDAp KSB7Cj4gICAJCURSTV9FUlJPUigidGltZW91dCB3YWl0aW5nIGZvciBTQkkgdG8gYmVjb21lIHJl YWR5XG4iKTsKPiAgIAkJcmV0dXJuOwo+ICAgCX0KPiBAQCAtMjQ3LDggKzI1NiwxMSBAQCB2b2lk IGludGVsX3NiaV93cml0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUxNiBy ZWcsIHUzMiB2YWx1ZSwKPiAgIAkJdG1wID0gU0JJX0NUTF9ERVNUX01QSFkgfCBTQklfQ1RMX09Q X0lPV1I7Cj4gICAJSTkxNV9XUklURShTQklfQ1RMX1NUQVQsIFNCSV9CVVNZIHwgdG1wKTsKPgo+ IC0JaWYgKHdhaXRfZm9yKChJOTE1X1JFQUQoU0JJX0NUTF9TVEFUKSAmIChTQklfQlVTWSB8IFNC SV9SRVNQT05TRV9GQUlMKSkgPT0gMCwKPiAtCQkJCTEwMCkpIHsKPiArCWlmIChpbnRlbF93YWl0 X2Zvcl9yZWdpc3RlcihkZXZfcHJpdiwKPiArCQkJCSAgICBTQklfQ1RMX1NUQVQsCj4gKwkJCQkg ICAgU0JJX0JVU1kgfCBTQklfUkVTUE9OU0VfRkFJTCwKPiArCQkJCSAgICAwLAo+ICsJCQkJICAg IDEwMCkpIHsKPiAgIAkJRFJNX0VSUk9SKCJ0aW1lb3V0IHdhaXRpbmcgZm9yIFNCSSB0byBjb21w bGV0ZSB3cml0ZSB0cmFuc2FjdGlvblxuIik7Cj4gICAJCXJldHVybjsKPiAgIAl9Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMKPiBpbmRleCA0YzE2NmY2NTUwYmUuLmI0OWE5NWExOGRh NCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jCj4gQEAgLTE1MzAsMTUgKzE1 MzAsMTcgQEAgc3RhdGljIGludCBpcm9ubGFrZV9kb19yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4KPiAgIAlJOTE1X1dSSVRFKElMS19HRFNSLAo+ICAgCQkgICBJTEtf R1JET01fUkVOREVSIHwgSUxLX0dSRE9NX1JFU0VUX0VOQUJMRSk7Cj4gLQlyZXQgPSB3YWl0X2Zv cigoSTkxNV9SRUFEKElMS19HRFNSKSAmCj4gLQkJCUlMS19HUkRPTV9SRVNFVF9FTkFCTEUpID09 IDAsIDUwMCk7Cj4gKwlyZXQgPSBpbnRlbF93YWl0X2Zvcl9yZWdpc3RlcihkZXZfcHJpdiwKPiAr CQkJCSAgICAgIElMS19HRFNSLCBJTEtfR1JET01fUkVTRVRfRU5BQkxFLCAwLAo+ICsJCQkJICAg ICAgNTAwKTsKPiAgIAlpZiAocmV0KQo+ICAgCQlyZXR1cm4gcmV0Owo+Cj4gICAJSTkxNV9XUklU RShJTEtfR0RTUiwKPiAgIAkJICAgSUxLX0dSRE9NX01FRElBIHwgSUxLX0dSRE9NX1JFU0VUX0VO QUJMRSk7Cj4gLQlyZXQgPSB3YWl0X2ZvcigoSTkxNV9SRUFEKElMS19HRFNSKSAmCj4gLQkJCUlM S19HUkRPTV9SRVNFVF9FTkFCTEUpID09IDAsIDUwMCk7Cj4gKwlyZXQgPSBpbnRlbF93YWl0X2Zv cl9yZWdpc3RlcihkZXZfcHJpdiwKPiArCQkJCSAgICAgIElMS19HRFNSLCBJTEtfR1JET01fUkVT RVRfRU5BQkxFLCAwLAo+ICsJCQkJICAgICAgNTAwKTsKPiAgIAlpZiAocmV0KQo+ICAgCQlyZXR1 cm4gcmV0Owo+Cj4gQEAgLTE1NTEsMjAgKzE1NTMsMTYgQEAgc3RhdGljIGludCBpcm9ubGFrZV9k b19yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICBzdGF0aWMgaW50 IGdlbjZfaHdfZG9tYWluX3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK PiAgIAkJCQl1MzIgaHdfZG9tYWluX21hc2spCj4gICB7Cj4gLQlpbnQgcmV0Owo+IC0KPiAgIAkv KiBHRU42X0dEUlNUIGlzIG5vdCBpbiB0aGUgZ3QgcG93ZXIgd2VsbCwgbm8gbmVlZCB0byBjaGVj awo+ICAgCSAqIGZvciBmaWZvIHNwYWNlIGZvciB0aGUgd3JpdGUgb3IgZm9yY2V3YWtlIHRoZSBj aGlwIGZvcgo+ICAgCSAqIHRoZSByZWFkCj4gICAJICovCj4gICAJX19yYXdfaTkxNV93cml0ZTMy KGRldl9wcml2LCBHRU42X0dEUlNULCBod19kb21haW5fbWFzayk7Cj4KPiAtI2RlZmluZSBBQ0tF RCAoKF9fcmF3X2k5MTVfcmVhZDMyKGRldl9wcml2LCBHRU42X0dEUlNUKSAmIGh3X2RvbWFpbl9t YXNrKSA9PSAwKQo+ICAgCS8qIFNwaW4gd2FpdGluZyBmb3IgdGhlIGRldmljZSB0byBhY2sgdGhl IHJlc2V0IHJlcXVlc3RzICovCj4gLQlyZXQgPSB3YWl0X2ZvcihBQ0tFRCwgNTAwKTsKPiAtI3Vu ZGVmIEFDS0VECj4gLQo+IC0JcmV0dXJuIHJldDsKPiArCXJldHVybiBpbnRlbF93YWl0X2Zvcl9y ZWdpc3Rlcl9mdyhkZXZfcHJpdiwKPiArCQkJCQkgIEdFTjZfR0RSU1QsIGh3X2RvbWFpbl9tYXNr LCAwLAo+ICsJCQkJCSAgNTAwKTsKPiAgIH0KPgo+ICAgLyoqCj4KClJlYWQgaXQgYWxsIGFuZCBk aWQgbm90IHNwb3QgYW55IGVycm9ycy4KClJldmlld2VkLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZy dGtvLnVyc3VsaW5AaW50ZWwuY29tPgoKUmVnYXJkcywKClR2cnRrbwoKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=