From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH v7] drm/i915: Beware temporary wedging when determining -EIO Date: Wed, 20 Feb 2019 16:44:36 +0200 Message-ID: <87tvgywmcr.fsf@gaia.fi.intel.com> References: <20190219133138.15813-1-chris@chris-wilson.co.uk> <20190219161850.28143-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id AE24C89310 for ; Wed, 20 Feb 2019 14:44:57 +0000 (UTC) In-Reply-To: <20190219161850.28143-1-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 Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+IHdyaXRlczoKCj4gQXQgYSBm ZXcgcG9pbnRzIGluIG91ciB1QUJJLCB3ZSBjaGVjayB0byBzZWUgaWYgdGhlIGRyaXZlciBpcyB3 ZWRnZWQgYW5kCj4gcmVwb3J0IC1FSU8gYmFjayB0byB0aGUgdXNlciBpbiB0aGF0IGNhc2UuIEhv d2V2ZXIsIGFzIHdlIHBlcmZvcm0gdGhlCj4gY2hlY2sgYW5kIHJlc2V0IGFzeW5jaHJvbm91c2x5 LCB3ZSBtYXkgaW5zdGVhZCBzZWUgdGhlIHRlbXBvcmFyeSB3ZWRnaW5nCj4gdXNlZCB0byBjYW5j ZWwgaW5mbGlnaHQgcmVuZGVyaW5nIHRvIGF2b2lkIGEgZGVhZGxvY2sgZHVyaW5nIHJlc2V0LiBJ ZgoKVGhpcyBjb3VsZCBtZW50aW9uIHRoYXQgaXQgaXMgdGhlIHdlZGdlIG9uIHRpbWVvdXQgd2hp Y2ggd2lsbApmbGFzaCB0aGUgLUVJTyB0byB1c2Vyc3BhY2UuCgo+IHdlIHN1c3BlY3QgdGhpcyBp cyB0aGUgY2FzZSwgdGhhdCBpcyB3ZSBzZWUgYSB3ZWRnZWQgZHJpdmVyIGFuZCByZXNldCBpbgo+ IHByb2dyZXNzLCB0aGVuIHdhaXQgdW50aWwgdGhlIHJlc2V0IGlzIHJlc29sdmVkIGJlZm9yZSBy ZXBvcnRpbmcgdXBvbgo+IHRoZSB3ZWRnZWQgc3RhdHVzLgo+Cj4gQnVnemlsbGE6IGh0dHBzOi8v YnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTU4MAo+IFNpZ25lZC1vZmYt Ynk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IENjOiBNaWthIEt1 b3BwYWxhIDxtaWthLmt1b3BwYWxhQGxpbnV4LmludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgICAgICAgICAgIHwgMTYgKysrKysrKystLS0KPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgICAgIHwgIDcgKysrKy0K PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgICAgICAgIHwgMjIgKysr KysrKy0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jICAgICAg ICAgICB8ICA1ICsrLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXNldC5jICAgICAg ICAgICAgIHwgMjcgKysrKysrKysrKysrKysrKystLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3Jlc2V0LmggICAgICAgICAgICAgfCAgMiArKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9lbmdpbmVfY3MuYyAgICAgICAgfCAgOCArKystLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfaGFuZ2NoZWNrLmMgICAgICAgIHwgIDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL2h1Z2VfcGFnZXMuYyAgIHwgIDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL2k5MTVfYWN0aXZlLmMgIHwgIDIgKy0KPiAgLi4uL2RybS9pOTE1L3NlbGZ0 ZXN0cy9pOTE1X2dlbV9jb2hlcmVuY3kuYyAgIHwgIDQgKy0tCj4gIC4uLi9ncHUvZHJtL2k5MTUv c2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYyB8ICAyICstCj4gIC4uLi9ncHUvZHJtL2k5MTUv c2VsZnRlc3RzL2k5MTVfZ2VtX2V2aWN0LmMgICB8ICAyICstCj4gIC4uLi9ncHUvZHJtL2k5MTUv c2VsZnRlc3RzL2k5MTVfZ2VtX29iamVjdC5jICB8ICAyICstCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYyB8ICAyICstCj4gIC4uLi9ncHUvZHJtL2k5MTUv c2VsZnRlc3RzL2lndF9mbHVzaF90ZXN0LmMgICB8ICAyICstCj4gIC4uLi9ncHUvZHJtL2k5MTUv c2VsZnRlc3RzL2ludGVsX2hhbmdjaGVjay5jICB8IDI0ICsrKysrKysrLS0tLS0tLS0tCj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9scmMuYyAgICB8ICAyICstCj4gIC4u Li9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfd29ya2Fyb3VuZHMuYyAgICB8ICA0ICstLQo+ICAx OSBmaWxlcyBjaGFuZ2VkLCA4NyBpbnNlcnRpb25zKCspLCA1MCBkZWxldGlvbnMoLSkKPgo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gaW5kZXggMmFlZWE5NzcyODNmLi41NDkyOGQ2 OTNjODUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IEBAIC0zODMzLDEx ICszODMzLDE5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGk5MTVfY3Vy X3dtX2xhdGVuY3lfZm9wcyA9IHsKPiAgc3RhdGljIGludAo+ICBpOTE1X3dlZGdlZF9nZXQodm9p ZCAqZGF0YSwgdTY0ICp2YWwpCj4gIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IGRhdGE7Cj4gKwlpbnQgcmV0ID0gaTkxNV90ZXJtaW5hbGx5X3dlZGdlZChkYXRhKTsK PiAgCj4gLQkqdmFsID0gaTkxNV90ZXJtaW5hbGx5X3dlZGdlZCgmZGV2X3ByaXYtPmdwdV9lcnJv cik7Cj4gKwlzd2l0Y2ggKHJldCkgewo+ICsJY2FzZSAtRUlPOgo+ICsJCSp2YWwgPSAxOwo+ICsJ CXJldCA9IDA7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIDA6Cj4gKwkJKnZhbCA9IDA7Cj4gKwkJYnJl YWs7Cj4gKwl9CgpIbW0sIGpva2UgaXMgc3RpbGwgdGhlcmUgYnV0IGl0IGlzIGJldHRlci4KCj4g IAo+IC0JcmV0dXJuIDA7Cj4gKwlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50Cj4g QEAgLTM5MTgsNyArMzkyNiw3IEBAIGk5MTVfZHJvcF9jYWNoZXNfc2V0KHZvaWQgKmRhdGEsIHU2 NCB2YWwpCj4gIAkJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgCX0K PiAgCj4gLQlpZiAodmFsICYgRFJPUF9SRVNFVF9BQ1RJVkUgJiYgaTkxNV90ZXJtaW5hbGx5X3dl ZGdlZCgmaTkxNS0+Z3B1X2Vycm9yKSkKPiArCWlmICh2YWwgJiBEUk9QX1JFU0VUX0FDVElWRSAm JiBpOTE1X3Rlcm1pbmFsbHlfd2VkZ2VkKGk5MTUpKQo+ICAJCWk5MTVfaGFuZGxlX2Vycm9yKGk5 MTUsIEFMTF9FTkdJTkVTLCAwLCBOVUxMKTsKPiAgCj4gIAlmc19yZWNsYWltX2FjcXVpcmUoR0ZQ X0tFUk5FTCk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2Lmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggNWM4ZDA0ODlhMWNkLi4x NGM2ZjVlNjViOGQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtMzAyMCwxMSAr MzAyMCwxNiBAQCBpbnQgX19tdXN0X2NoZWNrIGk5MTVfZ2VtX3NldF9nbG9iYWxfc2Vxbm8oc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIHNlcW5vKTsKPiAgc3RydWN0IGk5MTVfcmVxdWVzdCAq Cj4gIGk5MTVfZ2VtX2ZpbmRfYWN0aXZlX3JlcXVlc3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKTsKPiAgCj4gLXN0YXRpYyBpbmxpbmUgYm9vbCBpOTE1X3Rlcm1pbmFsbHlfd2VkZ2Vk KHN0cnVjdCBpOTE1X2dwdV9lcnJvciAqZXJyb3IpCj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBfX2k5 MTVfd2VkZ2VkKHN0cnVjdCBpOTE1X2dwdV9lcnJvciAqZXJyb3IpCj4gIHsKPiAgCXJldHVybiB1 bmxpa2VseSh0ZXN0X2JpdChJOTE1X1dFREdFRCwgJmVycm9yLT5mbGFncykpOwo+ICB9Cj4gIAo+ ICtzdGF0aWMgaW5saW5lIGJvb2wgaTkxNV9yZXNldF9mYWlsZWQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUpCj4gK3sKPiArCXJldHVybiBfX2k5MTVfd2VkZ2VkKCZpOTE1LT5ncHVfZXJy b3IpOwo+ICt9Cj4gKwo+ICBzdGF0aWMgaW5saW5lIHUzMiBpOTE1X3Jlc2V0X2NvdW50KHN0cnVj dCBpOTE1X2dwdV9lcnJvciAqZXJyb3IpCj4gIHsKPiAgCXJldHVybiBSRUFEX09OQ0UoZXJyb3It PnJlc2V0X2NvdW50KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBpbmRleCBiNDIxYmM3YTJl MjYuLmIzZDkxOGQ5MGMxZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IEBAIC0xOTI4 LDcgKzE5MjgsNyBAQCB2bV9mYXVsdF90IGk5MTVfZ2VtX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAq dm1mKQo+ICAJCSAqIGZhaWwpLiBCdXQgYW55IG90aGVyIC1FSU8gaXNuJ3Qgb3VycyAoZS5nLiBz d2FwIGluIGZhaWx1cmUpCj4gIAkJICogYW5kIHNvIG5lZWRzIHRvIGJlIHJlcG9ydGVkLgo+ICAJ CSAqLwo+IC0JCWlmICghaTkxNV90ZXJtaW5hbGx5X3dlZGdlZCgmZGV2X3ByaXYtPmdwdV9lcnJv cikpCj4gKwkJaWYgKCFpOTE1X3Rlcm1pbmFsbHlfd2VkZ2VkKGRldl9wcml2KSkKPiAgCQkJcmV0 dXJuIFZNX0ZBVUxUX1NJR0JVUzsKPiAgCQkvKiBlbHNlOiBmYWxsIHRocm91Z2ggKi8KPiAgCWNh c2UgLUVBR0FJTjoKPiBAQCAtMjk1OCw3ICsyOTU4LDcgQEAgc3RhdGljIHZvaWQgYXNzZXJ0X2tl cm5lbF9jb250ZXh0X2lzX2N1cnJlbnQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4g IAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gIAllbnVtIGludGVsX2VuZ2luZV9p ZCBpZDsKPiAgCj4gLQlpZiAoaTkxNV90ZXJtaW5hbGx5X3dlZGdlZCgmaTkxNS0+Z3B1X2Vycm9y KSkKPiArCWlmIChpOTE1X3Jlc2V0X2ZhaWxlZChpOTE1KSkKPiAgCQlyZXR1cm47Cj4gIAo+ICAJ R0VNX0JVR19PTihpOTE1LT5ndC5hY3RpdmVfcmVxdWVzdHMpOwo+IEBAIC0zODA2LDggKzM4MDYs OSBAQCBpOTE1X2dlbV9yaW5nX3Rocm90dGxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVj dCBkcm1fZmlsZSAqZmlsZSkKPiAgCWxvbmcgcmV0Owo+ICAKPiAgCS8qIEFCSTogcmV0dXJuIC1F SU8gaWYgYWxyZWFkeSB3ZWRnZWQgKi8KPiAtCWlmIChpOTE1X3Rlcm1pbmFsbHlfd2VkZ2VkKCZk ZXZfcHJpdi0+Z3B1X2Vycm9yKSkKPiAtCQlyZXR1cm4gLUVJTzsKPiArCXJldCA9IGk5MTVfdGVy bWluYWxseV93ZWRnZWQoZGV2X3ByaXYpOwo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0Owo+ ICAKPiAgCXNwaW5fbG9jaygmZmlsZV9wcml2LT5tbS5sb2NrKTsKPiAgCWxpc3RfZm9yX2VhY2hf ZW50cnkocmVxdWVzdCwgJmZpbGVfcHJpdi0+bW0ucmVxdWVzdF9saXN0LCBjbGllbnRfbGluaykg ewo+IEBAIC00NDYwLDcgKzQ0NjEsNyBAQCB2b2lkIGk5MTVfZ2VtX3Nhbml0aXplKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAJICogYmFjayB0byBkZWZhdWx0cywgcmVjb3Zlcmlu ZyBmcm9tIHdoYXRldmVyIHdlZGdlZCBzdGF0ZSB3ZSBsZWZ0IGl0Cj4gIAkgKiBpbiBhbmQgc28g d29ydGggdHJ5aW5nIHRvIHVzZSB0aGUgZGV2aWNlIG9uY2UgbW9yZS4KPiAgCSAqLwo+IC0JaWYg KGk5MTVfdGVybWluYWxseV93ZWRnZWQoJmk5MTUtPmdwdV9lcnJvcikpCj4gKwlpZiAoaTkxNV90 ZXJtaW5hbGx5X3dlZGdlZChpOTE1KSkKPiAgCQlpOTE1X2dlbV91bnNldF93ZWRnZWQoaTkxNSk7 Cj4gIAo+ICAJLyoKPiBAQCAtNDUwNCw3ICs0NTA1LDcgQEAgaW50IGk5MTVfZ2VtX3N1c3BlbmQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gIAkgKiBzdGF0ZS4gRm9ydHVuYXRlbHks IHRoZSBrZXJuZWxfY29udGV4dCBpcyBkaXNwb3NhYmxlIGFuZCB3ZSBkbwo+ICAJICogbm90IHJl bHkgb24gaXRzIHN0YXRlLgo+ICAJICovCj4gLQlpZiAoIWk5MTVfdGVybWluYWxseV93ZWRnZWQo Jmk5MTUtPmdwdV9lcnJvcikpIHsKPiArCWlmICghaTkxNV9yZXNldF9mYWlsZWQoaTkxNSkpIHsK PiAgCQlyZXQgPSBpOTE1X2dlbV9zd2l0Y2hfdG9fa2VybmVsX2NvbnRleHQoaTkxNSk7Cj4gIAkJ aWYgKHJldCkKPiAgCQkJZ290byBlcnJfdW5sb2NrOwo+IEBAIC00NjI1LDcgKzQ2MjYsNyBAQCB2 b2lkIGk5MTVfZ2VtX3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgCXJl dHVybjsKPiAgCj4gIGVycl93ZWRnZWQ6Cj4gLQlpZiAoIWk5MTVfdGVybWluYWxseV93ZWRnZWQo Jmk5MTUtPmdwdV9lcnJvcikpIHsKPiArCWlmICghaTkxNV90ZXJtaW5hbGx5X3dlZGdlZChpOTE1 KSkgewo+ICAJCURSTV9FUlJPUigiZmFpbGVkIHRvIHJlLWluaXRpYWxpemUgR1BVLCBkZWNsYXJp bmcgd2VkZ2VkIVxuIik7Cj4gIAkJaTkxNV9nZW1fc2V0X3dlZGdlZChpOTE1KTsKPiAgCX0KPiBA QCAtNDczMSwxMCArNDczMiw5IEBAIGludCBpOTE1X2dlbV9pbml0X2h3KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiAgCWluaXRfdW51c2VkX3JpbmdzKGRldl9wcml2KTsKPiAg Cj4gIAlCVUdfT04oIWRldl9wcml2LT5rZXJuZWxfY29udGV4dCk7Cj4gLQlpZiAoaTkxNV90ZXJt aW5hbGx5X3dlZGdlZCgmZGV2X3ByaXYtPmdwdV9lcnJvcikpIHsKPiAtCQlyZXQgPSAtRUlPOwo+ ICsJcmV0ID0gaTkxNV90ZXJtaW5hbGx5X3dlZGdlZChkZXZfcHJpdik7Cj4gKwlpZiAocmV0KQo+ ICAJCWdvdG8gb3V0Owo+IC0JfQo+ICAKPiAgCXJldCA9IGk5MTVfcHBndHRfaW5pdF9odyhkZXZf cHJpdik7Cj4gIAlpZiAocmV0KSB7Cj4gQEAgLTUxMDcsNyArNTEwNyw3IEBAIGludCBpOTE1X2dl bV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCQkgKiB3ZWRnZWQu IEJ1dCB3ZSBvbmx5IHdhbnQgdG8gZG8gdGhpcyB3aGVyZSB0aGUgR1BVIGlzIGFuZ3J5LAo+ICAJ CSAqIGZvciBhbGwgb3RoZXIgZmFpbHVyZSwgc3VjaCBhcyBhbiBhbGxvY2F0aW9uIGZhaWx1cmUs IGJhaWwuCj4gIAkJICovCj4gLQkJaWYgKCFpOTE1X3Rlcm1pbmFsbHlfd2VkZ2VkKCZkZXZfcHJp di0+Z3B1X2Vycm9yKSkgewo+ICsJCWlmICghaTkxNV9yZXNldF9mYWlsZWQoZGV2X3ByaXYpKSB7 Cj4gIAkJCWk5MTVfbG9hZF9lcnJvcihkZXZfcHJpdiwKPiAgCQkJCQkiRmFpbGVkIHRvIGluaXRp YWxpemUgR1BVLCBkZWNsYXJpbmcgaXQgd2VkZ2VkIVxuIik7Cj4gIAkJCWk5MTVfZ2VtX3NldF93 ZWRnZWQoZGV2X3ByaXYpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3JlcXVlc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jCj4gaW5kZXgg YTYxZTNhNGZjOWRjLi4xMjRiM2UyNzljODggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9yZXF1ZXN0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jl cXVlc3QuYwo+IEBAIC01NTksOCArNTU5LDkgQEAgaTkxNV9yZXF1ZXN0X2FsbG9jKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKPiAg CSAqIEFCSTogQmVmb3JlIHVzZXJzcGFjZSBhY2Nlc3NlcyB0aGUgR1BVIChlLmcuIGV4ZWNidWZm ZXIpLCByZXBvcnQKPiAgCSAqIEVJTyBpZiB0aGUgR1BVIGlzIGFscmVhZHkgd2VkZ2VkLgo+ICAJ ICovCj4gLQlpZiAoaTkxNV90ZXJtaW5hbGx5X3dlZGdlZCgmaTkxNS0+Z3B1X2Vycm9yKSkKPiAt CQlyZXR1cm4gRVJSX1BUUigtRUlPKTsKPiArCXJldCA9IGk5MTVfdGVybWluYWxseV93ZWRnZWQo aTkxNSk7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiBFUlJfUFRSKHJldCk7Cj4gIAo+ICAJLyoK PiAgCSAqIFBpbm5pbmcgdGhlIGNvbnRleHRzIG1heSBnZW5lcmF0ZSByZXF1ZXN0cyBpbiBvcmRl ciB0byBhY3F1aXJlCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVz ZXQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVzZXQuYwo+IGluZGV4IGMyMzRmZWI1 ZmRmNS4uMDg1M2NkY2RjZTk5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcmVzZXQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVzZXQuYwo+IEBA IC0xMDMyLDcgKzEwMzIsNyBAQCB2b2lkIGk5MTVfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUsCj4gIAo+ICBmaW5pc2g6Cj4gIAlyZXNldF9maW5pc2goaTkxNSk7Cj4gLQlpZiAo IWk5MTVfdGVybWluYWxseV93ZWRnZWQoZXJyb3IpKQo+ICsJaWYgKCFfX2k5MTVfd2VkZ2VkKGVy cm9yKSkKPiAgCQlyZXNldF9yZXN0YXJ0KGk5MTUpOwo+ICAJcmV0dXJuOwo+ICAKPiBAQCAtMTI1 Myw3ICsxMjUzLDcgQEAgdm9pZCBpOTE1X2hhbmRsZV9lcnJvcihzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSwKPiAgCSAqIFRyeSBlbmdpbmUgcmVzZXQgd2hlbiBhdmFpbGFibGUuIFdlIGZh bGwgYmFjayB0byBmdWxsIHJlc2V0IGlmCj4gIAkgKiBzaW5nbGUgcmVzZXQgZmFpbHMuCj4gIAkg Ki8KPiAtCWlmIChpbnRlbF9oYXNfcmVzZXRfZW5naW5lKGk5MTUpICYmICFpOTE1X3Rlcm1pbmFs bHlfd2VkZ2VkKGVycm9yKSkgewo+ICsJaWYgKGludGVsX2hhc19yZXNldF9lbmdpbmUoaTkxNSkg JiYgIV9faTkxNV93ZWRnZWQoZXJyb3IpKSB7Cj4gIAkJZm9yX2VhY2hfZW5naW5lX21hc2tlZChl bmdpbmUsIGk5MTUsIGVuZ2luZV9tYXNrLCB0bXApIHsKPiAgCQkJQlVJTERfQlVHX09OKEk5MTVf UkVTRVRfTU9ERVNFVCA+PSBJOTE1X1JFU0VUX0VOR0lORSk7Cj4gIAkJCWlmICh0ZXN0X2FuZF9z ZXRfYml0KEk5MTVfUkVTRVRfRU5HSU5FICsgZW5naW5lLT5pZCwKPiBAQCAtMTMzOSw2ICsxMzM5 LDI5IEBAIF9fcmVsZWFzZXMoJmk5MTUtPmdwdV9lcnJvci5yZXNldF9iYWNrb2ZmX3NyY3UpCj4g IAlzcmN1X3JlYWRfdW5sb2NrKCZlcnJvci0+cmVzZXRfYmFja29mZl9zcmN1LCB0YWcpOwo+ICB9 Cj4gIAo+ICtpbnQgaTkxNV90ZXJtaW5hbGx5X3dlZGdlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSkKPiArewo+ICsJc3RydWN0IGk5MTVfZ3B1X2Vycm9yICplcnJvciA9ICZpOTE1LT5n cHVfZXJyb3I7Cj4gKwoKbWlnaHRfc2xlZXAoKTsKClJldmlld2VkLWJ5OiBNaWthIEt1b3BwYWxh IDxtaWthLmt1b3BwYWxhQGxpbnV4LmludGVsLmNvbT4KCj4gKwlpZiAoIV9faTkxNV93ZWRnZWQo ZXJyb3IpKQo+ICsJCXJldHVybiAwOwo+ICsKPiArCS8qIFJlc2V0IHN0aWxsIGluIHByb2dyZXNz PyBNYXliZSB3ZSB3aWxsIHJlY292ZXI/ICovCj4gKwlpZiAoIXRlc3RfYml0KEk5MTVfUkVTRVRf QkFDS09GRiwgJmVycm9yLT5mbGFncykpCj4gKwkJcmV0dXJuIC1FSU87Cj4gKwo+ICsJLyogWFhY IGludGVsX3Jlc2V0X2ZpbmlzaCgpIHN0aWxsIHRha2VzIHN0cnVjdF9tdXRleCEhISAqLwo+ICsJ aWYgKG11dGV4X2lzX2xvY2tlZCgmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCkpCj4gKwkJcmV0dXJu IC1FQUdBSU47Cj4gKwo+ICsJaWYgKHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZShlcnJvci0+cmVz ZXRfcXVldWUsCj4gKwkJCQkgICAgICF0ZXN0X2JpdChJOTE1X1JFU0VUX0JBQ0tPRkYsCj4gKwkJ CQkJICAgICAgICZlcnJvci0+ZmxhZ3MpKSkKPiArCQlyZXR1cm4gLUVJTlRSOwo+ICsKPiArCXJl dHVybiBfX2k5MTVfd2VkZ2VkKGVycm9yKSA/IC1FSU8gOiAwOwo+ICt9Cj4gKwo+ICBib29sIGk5 MTVfcmVzZXRfZmx1c2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gIHsKPiAgCWlu dCBlcnI7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVzZXQuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVzZXQuaAo+IGluZGV4IDg5M2M1ZDFjMmViOC4u MTZmMjM4OWY2NTZmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVz ZXQuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVzZXQuaAo+IEBAIC0zNiw2 ICszNiw4IEBAIGJvb2wgaTkxNV9yZXNldF9mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSk7Cj4gIGludCBfX211c3RfY2hlY2sgaTkxNV9yZXNldF90cnlsb2NrKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1KTsKPiAgdm9pZCBpOTE1X3Jlc2V0X3VubG9jayhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSwgaW50IHRhZyk7Cj4gIAo+ICtpbnQgaTkxNV90ZXJtaW5hbGx5 X3dlZGdlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Cj4gKwo+ICBib29sIGludGVs X2hhc19ncHVfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwo+ICBib29sIGlu dGVsX2hhc19yZXNldF9lbmdpbmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwo+ICAK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwo+IGluZGV4IDI1NDdlMmU1MWRi OC4uODFiODBmOGZkOWVhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2VuZ2luZV9jcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2Nz LmMKPiBAQCAtMTAwNywxMCArMTAwNyw4IEBAIHN0YXRpYyBib29sIHJpbmdfaXNfaWRsZShzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAqLwo+ICBib29sIGludGVsX2VuZ2luZV9p c19pZGxlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgewo+IC0Jc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1Owo+IC0KPiAgCS8qIE1vcmUg d2hpdGUgbGllcywgaWYgd2VkZ2VkLCBodyBzdGF0ZSBpcyBpbmNvbnNpc3RlbnQgKi8KPiAtCWlm IChpOTE1X3Rlcm1pbmFsbHlfd2VkZ2VkKCZkZXZfcHJpdi0+Z3B1X2Vycm9yKSkKPiArCWlmIChp OTE1X3Jlc2V0X2ZhaWxlZChlbmdpbmUtPmk5MTUpKQo+ICAJCXJldHVybiB0cnVlOwo+ICAKPiAg CS8qIEFueSBpbmZsaWdodC9pbmNvbXBsZXRlIHJlcXVlc3RzPyAqLwo+IEBAIC0xMDU0LDcgKzEw NTIsNyBAQCBib29sIGludGVsX2VuZ2luZXNfYXJlX2lkbGUoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQo+ICAJICogSWYgdGhlIGRyaXZlciBpcyB3ZWRnZWQsIEhXIHN0YXRlIG1h eSBiZSB2ZXJ5IGluY29uc2lzdGVudCBhbmQKPiAgCSAqIHJlcG9ydCB0aGF0IGl0IGlzIHN0aWxs IGJ1c3ksIGV2ZW4gdGhvdWdoIHdlIGhhdmUgc3RvcHBlZCB1c2luZyBpdC4KPiAgCSAqLwo+IC0J aWYgKGk5MTVfdGVybWluYWxseV93ZWRnZWQoJmRldl9wcml2LT5ncHVfZXJyb3IpKQo+ICsJaWYg KGk5MTVfcmVzZXRfZmFpbGVkKGRldl9wcml2KSkKPiAgCQlyZXR1cm4gdHJ1ZTsKPiAgCj4gIAlm b3JfZWFjaF9lbmdpbmUoZW5naW5lLCBkZXZfcHJpdiwgaWQpIHsKPiBAQCAtMTQ5Niw3ICsxNDk0 LDcgQEAgdm9pZCBpbnRlbF9lbmdpbmVfZHVtcChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUsCj4gIAkJdmFfZW5kKGFwKTsKPiAgCX0KPiAgCj4gLQlpZiAoaTkxNV90ZXJtaW5hbGx5X3dl ZGdlZCgmZW5naW5lLT5pOTE1LT5ncHVfZXJyb3IpKQo+ICsJaWYgKGk5MTVfcmVzZXRfZmFpbGVk KGVuZ2luZS0+aTkxNSkpCj4gIAkJZHJtX3ByaW50ZihtLCAiKioqIFdFREdFRCAqKipcbiIpOwo+ ICAKPiAgCWRybV9wcmludGYobSwgIlx0Y3VycmVudCBzZXFubyAleCwgbGFzdCAleCwgaGFuZ2No ZWNrICV4IFslZCBtc11cbiIsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2hhbmdjaGVjay5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGFuZ2NoZWNrLmMK PiBpbmRleCBhMjE5Yzc5NmU1NmQuLjliZTAzM2I2ZjRkMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9oYW5nY2hlY2suYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2hhbmdjaGVjay5jCj4gQEAgLTI2Myw3ICsyNjMsNyBAQCBzdGF0aWMgdm9pZCBp OTE1X2hhbmdjaGVja19lbGFwc2VkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPiAgCWlmICgh UkVBRF9PTkNFKGRldl9wcml2LT5ndC5hd2FrZSkpCj4gIAkJcmV0dXJuOwo+ICAKPiAtCWlmIChp OTE1X3Rlcm1pbmFsbHlfd2VkZ2VkKCZkZXZfcHJpdi0+Z3B1X2Vycm9yKSkKPiArCWlmIChpOTE1 X3Rlcm1pbmFsbHlfd2VkZ2VkKGRldl9wcml2KSkKPiAgCQlyZXR1cm47Cj4gIAo+ICAJLyogQXMg ZW5hYmxpbmcgdGhlIEdQVSByZXF1aXJlcyBmYWlybHkgZXh0ZW5zaXZlIG1taW8gYWNjZXNzLAo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaHVnZV9wYWdlcy5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2h1Z2VfcGFnZXMuYwo+IGluZGV4IGE5 YTJmYTM1ODc2Zi4uNDA2MDdiYTdkZGE2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L3NlbGZ0ZXN0cy9odWdlX3BhZ2VzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9z ZWxmdGVzdHMvaHVnZV9wYWdlcy5jCj4gQEAgLTE3NjQsNyArMTc2NCw3IEBAIGludCBpOTE1X2dl bV9odWdlX3BhZ2VfbGl2ZV9zZWxmdGVzdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ICAJCXJldHVybiAwOwo+ICAJfQo+ICAKPiAtCWlmIChpOTE1X3Rlcm1pbmFsbHlfd2Vk Z2VkKCZkZXZfcHJpdi0+Z3B1X2Vycm9yKSkKPiArCWlmIChpOTE1X3Rlcm1pbmFsbHlfd2VkZ2Vk KGRldl9wcml2KSkKPiAgCQlyZXR1cm4gMDsKPiAgCj4gIAlmaWxlID0gbW9ja19maWxlKGRldl9w cml2KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVf YWN0aXZlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9hY3RpdmUuYwo+ IGluZGV4IDMzN2IxZjk4YjkyMy4uMjdkOGY4NTMxMTFiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2FjdGl2ZS5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfYWN0aXZlLmMKPiBAQCAtMTUwLDcgKzE1MCw3IEBAIGlu dCBpOTE1X2FjdGl2ZV9saXZlX3NlbGZ0ZXN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSkKPiAgCQlTVUJURVNUKGxpdmVfYWN0aXZlX3JldGlyZSksCj4gIAl9Owo+ICAKPiAtCWlmIChp OTE1X3Rlcm1pbmFsbHlfd2VkZ2VkKCZpOTE1LT5ncHVfZXJyb3IpKQo+ICsJaWYgKGk5MTVfdGVy bWluYWxseV93ZWRnZWQoaTkxNSkpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+ICAJcmV0dXJuIGk5MTVf c3VidGVzdHModGVzdHMsIGk5MTUpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvaTkxNV9nZW1fY29oZXJlbmN5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9z ZWxmdGVzdHMvaTkxNV9nZW1fY29oZXJlbmN5LmMKPiBpbmRleCBmZDg5YTVhMzNjMWEuLjljMTZh ZmY4NzAyOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkx NV9nZW1fY29oZXJlbmN5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMv aTkxNV9nZW1fY29oZXJlbmN5LmMKPiBAQCAtMjQ4LDEyICsyNDgsMTIgQEAgc3RhdGljIGJvb2wg YWx3YXlzX3ZhbGlkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAKPiAgc3RhdGlj IGJvb2wgbmVlZHNfZmVuY2VfcmVnaXN0ZXJzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 KQo+ICB7Cj4gLQlyZXR1cm4gIWk5MTVfdGVybWluYWxseV93ZWRnZWQoJmk5MTUtPmdwdV9lcnJv cik7Cj4gKwlyZXR1cm4gIWk5MTVfdGVybWluYWxseV93ZWRnZWQoaTkxNSk7Cj4gIH0KPiAgCj4g IHN0YXRpYyBib29sIG5lZWRzX21pX3N0b3JlX2R3b3JkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1KQo+ICB7Cj4gLQlpZiAoaTkxNV90ZXJtaW5hbGx5X3dlZGdlZCgmaTkxNS0+Z3B1X2Vy cm9yKSkKPiArCWlmIChpOTE1X3Rlcm1pbmFsbHlfd2VkZ2VkKGk5MTUpKQo+ICAJCXJldHVybiBm YWxzZTsKPiAgCj4gIAlyZXR1cm4gaW50ZWxfZW5naW5lX2Nhbl9zdG9yZV9kd29yZChpOTE1LT5l bmdpbmVbUkNTXSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0 cy9pOTE1X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkx NV9nZW1fY29udGV4dC5jCj4gaW5kZXggYjdiOTdjNTdhZDA1Li4zYTIzOGI5NjI4YjMgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0 LmMKPiBAQCAtMTYzMiw3ICsxNjMyLDcgQEAgaW50IGk5MTVfZ2VtX2NvbnRleHRfbGl2ZV9zZWxm dGVzdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJCVNVQlRFU1QoaWd0 X3ZtX2lzb2xhdGlvbiksCj4gIAl9Owo+ICAKPiAtCWlmIChpOTE1X3Rlcm1pbmFsbHlfd2VkZ2Vk KCZkZXZfcHJpdi0+Z3B1X2Vycm9yKSkKPiArCWlmIChpOTE1X3Rlcm1pbmFsbHlfd2VkZ2VkKGRl dl9wcml2KSkKPiAgCQlyZXR1cm4gMDsKPiAgCj4gIAlyZXR1cm4gaTkxNV9zdWJ0ZXN0cyh0ZXN0 cywgZGV2X3ByaXYpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVz dHMvaTkxNV9nZW1fZXZpY3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1 X2dlbV9ldmljdC5jCj4gaW5kZXggMzJkY2U3MTc2ZjYzLi5iMjcwZWFiMWNhZDEgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2V2aWN0LmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fZXZpY3QuYwo+IEBA IC01NDcsNyArNTQ3LDcgQEAgaW50IGk5MTVfZ2VtX2V2aWN0X2xpdmVfc2VsZnRlc3RzKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAJCVNVQlRFU1QoaWd0X2V2aWN0X2NvbnRleHRz KSwKPiAgCX07Cj4gIAo+IC0JaWYgKGk5MTVfdGVybWluYWxseV93ZWRnZWQoJmk5MTUtPmdwdV9l cnJvcikpCj4gKwlpZiAoaTkxNV90ZXJtaW5hbGx5X3dlZGdlZChpOTE1KSkKPiAgCQlyZXR1cm4g MDsKPiAgCj4gIAlyZXR1cm4gaTkxNV9zdWJ0ZXN0cyh0ZXN0cywgaTkxNSk7Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9vYmplY3QuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9vYmplY3QuYwo+IGluZGV4IDM5 NWFlODc4ZTBmNy4uNzg0OTgyYWVkNjI1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9vYmplY3QuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9vYmplY3QuYwo+IEBAIC01ODMsNyArNTgzLDcgQEAgc3Rh dGljIGludCBpZ3RfbW1hcF9vZmZzZXRfZXhoYXVzdGlvbih2b2lkICphcmcpCj4gIAlmb3IgKGxv b3AgPSAwOyBsb29wIDwgMzsgbG9vcCsrKSB7Cj4gIAkJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7 Cj4gIAo+IC0JCWlmIChpOTE1X3Rlcm1pbmFsbHlfd2VkZ2VkKCZpOTE1LT5ncHVfZXJyb3IpKQo+ ICsJCWlmIChpOTE1X3Rlcm1pbmFsbHlfd2VkZ2VkKGk5MTUpKQo+ICAJCQlicmVhazsKPiAgCj4g IAkJb2JqID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9pbnRlcm5hbChpOTE1LCBQQUdFX1NJWkUp Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yZXF1 ZXN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yZXF1ZXN0LmMKPiBp bmRleCA2NzMzZGM1YjZiNGMuLjAzY2M4YWI2YTYyMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yZXF1ZXN0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yZXF1ZXN0LmMKPiBAQCAtMTI0Niw3ICsxMjQ2LDcgQEAg aW50IGk5MTVfcmVxdWVzdF9saXZlX3NlbGZ0ZXN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSkKPiAgCQlTVUJURVNUKGxpdmVfYnJlYWRjcnVtYnNfc21va2V0ZXN0KSwKPiAgCX07Cj4g IAo+IC0JaWYgKGk5MTVfdGVybWluYWxseV93ZWRnZWQoJmk5MTUtPmdwdV9lcnJvcikpCj4gKwlp ZiAoaTkxNV90ZXJtaW5hbGx5X3dlZGdlZChpOTE1KSkKPiAgCQlyZXR1cm4gMDsKPiAgCj4gIAly ZXR1cm4gaTkxNV9zdWJ0ZXN0cyh0ZXN0cywgaTkxNSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pZ3RfZmx1c2hfdGVzdC5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvc2VsZnRlc3RzL2lndF9mbHVzaF90ZXN0LmMKPiBpbmRleCBhZjY2ZTNkNGUyM2EuLmUw ZDMxMjJmZDM1YSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMv aWd0X2ZsdXNoX3Rlc3QuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9p Z3RfZmx1c2hfdGVzdC5jCj4gQEAgLTI5LDUgKzI5LDUgQEAgaW50IGlndF9mbHVzaF90ZXN0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCB1bnNpZ25lZCBpbnQgZmxhZ3MpCj4gIAkJaTkx NV9nZW1fc2V0X3dlZGdlZChpOTE1KTsKPiAgCX0KPiAgCj4gLQlyZXR1cm4gaTkxNV90ZXJtaW5h bGx5X3dlZGdlZCgmaTkxNS0+Z3B1X2Vycm9yKSA/IC1FSU8gOiAwOwo+ICsJcmV0dXJuIGk5MTVf dGVybWluYWxseV93ZWRnZWQoaTkxNSk7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX2hhbmdjaGVjay5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL2ludGVsX2hhbmdjaGVjay5jCj4gaW5kZXggYzMyYmMzMTE5MmFlLi5hNzdl NGJmMWFiNTUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2lu dGVsX2hhbmdjaGVjay5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2lu dGVsX2hhbmdjaGVjay5jCj4gQEAgLTM0Miw3ICszNDIsNyBAQCBzdGF0aWMgaW50IGlndF9oYW5n X3Nhbml0eWNoZWNrKHZvaWQgKmFyZykKPiAgCQkJdGltZW91dCA9IGk5MTVfcmVxdWVzdF93YWl0 KHJxLAo+ICAJCQkJCQkgICAgSTkxNV9XQUlUX0xPQ0tFRCwKPiAgCQkJCQkJICAgIE1BWF9TQ0hF RFVMRV9USU1FT1VUKTsKPiAtCQlpZiAoaTkxNV90ZXJtaW5hbGx5X3dlZGdlZCgmaTkxNS0+Z3B1 X2Vycm9yKSkKPiArCQlpZiAoaTkxNV9yZXNldF9mYWlsZWQoaTkxNSkpCj4gIAkJCXRpbWVvdXQg PSAtRUlPOwo+ICAKPiAgCQlpOTE1X3JlcXVlc3RfcHV0KHJxKTsKPiBAQCAtMzgzLDcgKzM4Myw3 IEBAIHN0YXRpYyBpbnQgaWd0X2dsb2JhbF9yZXNldCh2b2lkICphcmcpCj4gIAo+ICAJaWd0X2ds b2JhbF9yZXNldF91bmxvY2soaTkxNSk7Cj4gIAo+IC0JaWYgKGk5MTVfdGVybWluYWxseV93ZWRn ZWQoJmk5MTUtPmdwdV9lcnJvcikpCj4gKwlpZiAoaTkxNV9yZXNldF9mYWlsZWQoaTkxNSkpCj4g IAkJZXJyID0gLUVJTzsKPiAgCj4gIAlyZXR1cm4gZXJyOwo+IEBAIC00MDEsMTMgKzQwMSwxMyBA QCBzdGF0aWMgaW50IGlndF93ZWRnZWRfcmVzZXQodm9pZCAqYXJnKQo+ICAKPiAgCWk5MTVfZ2Vt X3NldF93ZWRnZWQoaTkxNSk7Cj4gIAo+IC0JR0VNX0JVR19PTighaTkxNV90ZXJtaW5hbGx5X3dl ZGdlZCgmaTkxNS0+Z3B1X2Vycm9yKSk7Cj4gKwlHRU1fQlVHX09OKCFpOTE1X3Jlc2V0X2ZhaWxl ZChpOTE1KSk7Cj4gIAlpOTE1X3Jlc2V0KGk5MTUsIEFMTF9FTkdJTkVTLCBOVUxMKTsKPiAgCj4g IAlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1LCB3YWtlcmVmKTsKPiAgCWlndF9nbG9iYWxfcmVz ZXRfdW5sb2NrKGk5MTUpOwo+ICAKPiAtCXJldHVybiBpOTE1X3Rlcm1pbmFsbHlfd2VkZ2VkKCZp OTE1LT5ncHVfZXJyb3IpID8gLUVJTyA6IDA7Cj4gKwlyZXR1cm4gaTkxNV9yZXNldF9mYWlsZWQo aTkxNSkgPyAtRUlPIDogMDsKPiAgfQo+ICAKPiAgc3RhdGljIGJvb2wgd2FpdF9mb3JfaWRsZShz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gQEAgLTUyOSw3ICs1MjksNyBAQCBzdGF0 aWMgaW50IF9faWd0X3Jlc2V0X2VuZ2luZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwg Ym9vbCBhY3RpdmUpCj4gIAkJCWJyZWFrOwo+ICAJfQo+ICAKPiAtCWlmIChpOTE1X3Rlcm1pbmFs bHlfd2VkZ2VkKCZpOTE1LT5ncHVfZXJyb3IpKQo+ICsJaWYgKGk5MTVfcmVzZXRfZmFpbGVkKGk5 MTUpKQo+ICAJCWVyciA9IC1FSU87Cj4gIAo+ICAJaWYgKGFjdGl2ZSkgewo+IEBAIC04NDMsNyAr ODQzLDcgQEAgc3RhdGljIGludCBfX2lndF9yZXNldF9lbmdpbmVzKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1LAo+ICAJCQlicmVhazsKPiAgCX0KPiAgCj4gLQlpZiAoaTkxNV90ZXJtaW5h bGx5X3dlZGdlZCgmaTkxNS0+Z3B1X2Vycm9yKSkKPiArCWlmIChpOTE1X3Jlc2V0X2ZhaWxlZChp OTE1KSkKPiAgCQllcnIgPSAtRUlPOwo+ICAKPiAgCWlmIChmbGFncyAmIFRFU1RfQUNUSVZFKSB7 Cj4gQEAgLTk2OSw3ICs5NjksNyBAQCBzdGF0aWMgaW50IGlndF9yZXNldF93YWl0KHZvaWQgKmFy ZykKPiAgCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gIAlpZ3RfZ2xv YmFsX3Jlc2V0X3VubG9jayhpOTE1KTsKPiAgCj4gLQlpZiAoaTkxNV90ZXJtaW5hbGx5X3dlZGdl ZCgmaTkxNS0+Z3B1X2Vycm9yKSkKPiArCWlmIChpOTE1X3Jlc2V0X2ZhaWxlZChpOTE1KSkKPiAg CQlyZXR1cm4gLUVJTzsKPiAgCj4gIAlyZXR1cm4gZXJyOwo+IEBAIC0xMTY2LDcgKzExNjYsNyBA QCBzdGF0aWMgaW50IF9faWd0X3Jlc2V0X2V2aWN0X3ZtYShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSwKPiAgdW5sb2NrOgo+ICAJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211 dGV4KTsKPiAgCj4gLQlpZiAoaTkxNV90ZXJtaW5hbGx5X3dlZGdlZCgmaTkxNS0+Z3B1X2Vycm9y KSkKPiArCWlmIChpOTE1X3Jlc2V0X2ZhaWxlZChpOTE1KSkKPiAgCQlyZXR1cm4gLUVJTzsKPiAg Cj4gIAlyZXR1cm4gZXJyOwo+IEBAIC0xMzcyLDcgKzEzNzIsNyBAQCBzdGF0aWMgaW50IGlndF9y ZXNldF9xdWV1ZSh2b2lkICphcmcpCj4gIAltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3Rf bXV0ZXgpOwo+ICAJaWd0X2dsb2JhbF9yZXNldF91bmxvY2soaTkxNSk7Cj4gIAo+IC0JaWYgKGk5 MTVfdGVybWluYWxseV93ZWRnZWQoJmk5MTUtPmdwdV9lcnJvcikpCj4gKwlpZiAoaTkxNV9yZXNl dF9mYWlsZWQoaTkxNSkpCj4gIAkJcmV0dXJuIC1FSU87Cj4gIAo+ICAJcmV0dXJuIGVycjsKPiBA QCAtMTU1Miw3ICsxNTUyLDcgQEAgc3RhdGljIGludCBpZ3RfYXRvbWljX3Jlc2V0X2VuZ2luZShz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gIAkJCWk5MTVfcmVxdWVzdF93YWl0KHJx LAo+ICAJCQkJCSAgSTkxNV9XQUlUX0xPQ0tFRCwKPiAgCQkJCQkgIE1BWF9TQ0hFRFVMRV9USU1F T1VUKTsKPiAtCQlpZiAoaTkxNV90ZXJtaW5hbGx5X3dlZGdlZCgmaTkxNS0+Z3B1X2Vycm9yKSkK PiArCQlpZiAoaTkxNV9yZXNldF9mYWlsZWQoaTkxNSkpCj4gIAkJCWVyciA9IC1FSU87Cj4gIAl9 Cj4gIAo+IEBAIC0xNTkxLDcgKzE1OTEsNyBAQCBzdGF0aWMgaW50IGlndF9hdG9taWNfcmVzZXQo dm9pZCAqYXJnKQo+ICAKPiAgCS8qIEZsdXNoIGFueSByZXF1ZXN0cyBiZWZvcmUgd2UgZ2V0IHN0 YXJ0ZWQgYW5kIGNoZWNrIGJhc2ljcyAqLwo+ICAJZm9yY2VfcmVzZXQoaTkxNSk7Cj4gLQlpZiAo aTkxNV90ZXJtaW5hbGx5X3dlZGdlZCgmaTkxNS0+Z3B1X2Vycm9yKSkKPiArCWlmIChpOTE1X3Jl c2V0X2ZhaWxlZChpOTE1KSkKPiAgCQlnb3RvIHVubG9jazsKPiAgCj4gIAlpZiAoaW50ZWxfaGFz X2dwdV9yZXNldChpOTE1KSkgewo+IEBAIC0xNjY1LDcgKzE2NjUsNyBAQCBpbnQgaW50ZWxfaGFu Z2NoZWNrX2xpdmVfc2VsZnRlc3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAJ aWYgKCFpbnRlbF9oYXNfZ3B1X3Jlc2V0KGk5MTUpKQo+ICAJCXJldHVybiAwOwo+ICAKPiAtCWlm IChpOTE1X3Rlcm1pbmFsbHlfd2VkZ2VkKCZpOTE1LT5ncHVfZXJyb3IpKQo+ICsJaWYgKGk5MTVf dGVybWluYWxseV93ZWRnZWQoaTkxNSkpCj4gIAkJcmV0dXJuIC1FSU87IC8qIHdlJ3JlIGxvbmcg cGFzdCBob3BlIG9mIGEgc3VjY2Vzc2Z1bCByZXNldCAqLwo+ICAKPiAgCXdha2VyZWYgPSBpbnRl bF9ydW50aW1lX3BtX2dldChpOTE1KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3Rz L2ludGVsX2xyYy5jCj4gaW5kZXggNTgxNDRlMDI0NzUxLi4wZjdhNWJmNjk2NDYgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX2xyYy5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX2xyYy5jCj4gQEAgLTg5NSw3ICs4 OTUsNyBAQCBpbnQgaW50ZWxfZXhlY2xpc3RzX2xpdmVfc2VsZnRlc3RzKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1KQo+ICAJaWYgKCFIQVNfRVhFQ0xJU1RTKGk5MTUpKQo+ICAJCXJldHVy biAwOwo+ICAKPiAtCWlmIChpOTE1X3Rlcm1pbmFsbHlfd2VkZ2VkKCZpOTE1LT5ncHVfZXJyb3Ip KQo+ICsJaWYgKGk5MTVfdGVybWluYWxseV93ZWRnZWQoaTkxNSkpCj4gIAkJcmV0dXJuIDA7Cj4g IAo+ICAJcmV0dXJuIGk5MTVfc3VidGVzdHModGVzdHMsIGk5MTUpOwo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfd29ya2Fyb3VuZHMuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF93b3JrYXJvdW5kcy5jCj4gaW5kZXggZmI0 NzlhMmMwNGZiLi5lNmZmYzhhYzIyZGMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL2ludGVsX3dvcmthcm91bmRzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9zZWxmdGVzdHMvaW50ZWxfd29ya2Fyb3VuZHMuYwo+IEBAIC0xODEsNyArMTgxLDcgQEAg c3RhdGljIGludCBjaGVja193aGl0ZWxpc3Qoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwK PiAgCWVyciA9IDA7Cj4gIAlpZ3Rfd2VkZ2Vfb25fdGltZW91dCgmd2VkZ2UsIGN0eC0+aTkxNSwg SFogLyA1KSAvKiBhIHNhZmV0eSBuZXQhICovCj4gIAkJZXJyID0gaTkxNV9nZW1fb2JqZWN0X3Nl dF90b19jcHVfZG9tYWluKHJlc3VsdHMsIGZhbHNlKTsKPiAtCWlmIChpOTE1X3Rlcm1pbmFsbHlf d2VkZ2VkKCZjdHgtPmk5MTUtPmdwdV9lcnJvcikpCj4gKwlpZiAoaTkxNV90ZXJtaW5hbGx5X3dl ZGdlZChjdHgtPmk5MTUpKQo+ICAJCWVyciA9IC1FSU87Cj4gIAlpZiAoZXJyKQo+ICAJCWdvdG8g b3V0X3B1dDsKPiBAQCAtNTEwLDcgKzUxMCw3IEBAIGludCBpbnRlbF93b3JrYXJvdW5kc19saXZl X3NlbGZ0ZXN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgCX07Cj4gIAlpbnQg ZXJyOwo+ICAKPiAtCWlmIChpOTE1X3Rlcm1pbmFsbHlfd2VkZ2VkKCZpOTE1LT5ncHVfZXJyb3Ip KQo+ICsJaWYgKGk5MTVfdGVybWluYWxseV93ZWRnZWQoaTkxNSkpCj4gIAkJcmV0dXJuIDA7Cj4g IAo+ICAJbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLS0gCj4gMi4yMC4x Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==