From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ankitprasad Sharma Subject: Re: [PATCH 05/10] drm/i915: Propagating correct error codes to the userspace Date: Tue, 22 Dec 2015 16:59:46 +0530 Message-ID: <1450783786.10582.6.camel@ankitprasad-desktop> References: <1450765253-32104-1-git-send-email-ankitprasad.r.sharma@intel.com> <1450765253-32104-6-git-send-email-ankitprasad.r.sharma@intel.com> <567931E7.9010001@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 635996E133 for ; Tue, 22 Dec 2015 03:51:24 -0800 (PST) In-Reply-To: <567931E7.9010001@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tvrtko Ursulin Cc: intel-gfx@lists.freedesktop.org, akash.goel@intel.com, shashidhar.hiremath@intel.com List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCAyMDE1LTEyLTIyIGF0IDExOjIwICswMDAwLCBUdnJ0a28gVXJzdWxpbiB3cm90ZToK PiBPbiAyMi8xMi8xNSAwNjoyMCwgYW5raXRwcmFzYWQuci5zaGFybWFAaW50ZWwuY29tIHdyb3Rl Ogo+ID4gRnJvbTogQW5raXRwcmFzYWQgU2hhcm1hIDxhbmtpdHByYXNhZC5yLnNoYXJtYUBpbnRl bC5jb20+Cj4gPgo+ID4gUHJvcGFnYXRpbmcgY29ycmVjdCBlcnJvciBjb2RlcyB0byB1c2Vyc3Bh Y2UgYnkgdXNpbmcgRVJSX1BUUiBhbmQKPiA+IFBUUl9FUlIgbWFjcm9zIGZvciBzdG9sZW4gbWVt b3J5IGJhc2VkIG9iamVjdCBhbGxvY2F0aW9uLiBXZSBnZW5lcmFsbHkKPiA+IHJldHVybiAtRU5P TUVNIHRvIHRoZSB1c2VyIHdoZW5ldmVyIHRoZXJlIGlzIGEgZmFpbHVyZSBpbiBvYmplY3QKPiA+ IGFsbG9jYXRpb24uIFRoaXMgcGF0Y2ggaGVscHMgdXNlciB0byBpZGVudGlmeSB0aGUgY29ycmVj dCByZWFzb24gZm9yIHRoZQo+ID4gZmFpbHVyZSBhbmQgbm90IGp1c3QgLUVOT01FTSBlYWNoIHRp bWUuCj4gPgo+ID4gdjI6IE1vdmVkIHRoZSBwYXRjaCB1cCBpbiB0aGUgc2VyaWVzLCBhZGRlZCBl cnJvciBwcm9wYWdhdGlvbiBmb3IKPiA+IGk5MTVfZ2VtX2FsbG9jX29iamVjdCB0b28gKENocmlz KQo+ID4KPiA+IHYzOiBSZW1vdmVkIHN0b3Jpbmcgb2YgZXJyb3IgcG9pbnRlciBpbnNpZGUgc3Ry dWN0cywgQ29ycmVjdGVkIGVycm9yCj4gPiBwcm9wYWdhdGlvbiBpbiBjYWxsZXIgZnVuY3Rpb25z IChDaHJpcykKPiA+Cj4gPiB2NDogUmVtb3ZlIGFzc2lnbm1lbnRzIGluc2lkZSB0aGUgcHJlZGlj YXRlIChDaHJpcykKPiA+Cj4gPiB2NTogUmVtb3ZlZCB1bm5lY2Vzc2FyeSBpbml0aWFsaXphdGlv bnMsIHVwZGF0ZWQga2VybmVsZG9jIGZvcgo+ID4gaTkxNV9ndWNfY2xpZW50LCBjb3JyZWN0ZWQg bWlzc2VkIGVycm9yIHBvaW50ZXIgaGFuZGxpbmcgKFR2cnRrbykKPiA+Cj4gPiB2NjogVXNlIEVS Ul9DQVNUL3RlbXBvcmFyeSB2YXJpYWJsZSB0byBhdm9pZCBzdG9yaW5nIGludmFsaWQgcG9pbnRl cgo+ID4gaW4gYSBjb21tb24gZmllbGQgKENocmlzKQo+ID4KPiA+IFNpZ25lZC1vZmYtYnk6IEFu a2l0cHJhc2FkIFNoYXJtYSA8YW5raXRwcmFzYWQuci5zaGFybWFAaW50ZWwuY29tPgo+ID4gLS0t Cj4gPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICAgICAgIHwgMTYg KysrKystLS0tCj4gPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2JhdGNoX3Bvb2wu YyAgIHwgIDQgKy0tCj4gPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQu YyAgICAgIHwgIDQgKy0tCj4gPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlbmRl cl9zdGF0ZS5jIHwgIDcgKystLQo+ID4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9z dG9sZW4uYyAgICAgICB8IDUzICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KPiA+ICAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jICAgfCA1MiArKysrKysrKysr KysrKysrKy0tLS0tLS0tLS0KPiA+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jICAgICAgICAgfCAgMiArLQo+ID4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRl di5jICAgICAgICAgICB8ICA2ICsrLS0KPiA+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf bHJjLmMgICAgICAgICAgICAgfCAxMCArKystLS0KPiA+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfb3ZlcmxheS5jICAgICAgICAgfCAgNCArLS0KPiA+ICAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcG0uYyAgICAgICAgICAgICAgfCAgNyArKy0tCj4gPiAgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyAgICAgIHwgMjEgKysrKystLS0tLS0KPiA+ICAgMTIg ZmlsZXMgY2hhbmdlZCwgMTA2IGluc2VydGlvbnMoKyksIDgwIGRlbGV0aW9ucygtKQo+ID4KPiA+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ID4gaW5kZXggY2Q3ZjBhZS4uMzFkNjZlMCAxMDA2NDQK PiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiA+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiA+IEBAIC00MTAsOSArNDEwLDkgQEAgaTkxNV9n ZW1fY3JlYXRlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwKPiA+ICAgCWlmIChmbGFncyAmIEk5MTVf Q1JFQVRFX1BMQUNFTUVOVF9TVE9MRU4pIHsKPiA+ICAgCQltdXRleF9sb2NrKCZkZXYtPnN0cnVj dF9tdXRleCk7Cj4gPiAgIAkJb2JqID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oZGV2 LCBzaXplKTsKPiA+IC0JCWlmICghb2JqKSB7Cj4gPiArCQlpZiAoSVNfRVJSKG9iaikpIHsKPiA+ ICAgCQkJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gPiAtCQkJcmV0dXJuIC1F Tk9NRU07Cj4gPiArCQkJcmV0dXJuIFBUUl9FUlIob2JqKTsKPiA+ICAgCQl9Cj4gPgo+ID4gICAJ CS8qIEFsd2F5cyBjbGVhciBmcmVzaCBidWZmZXJzIGJlZm9yZSBoYW5kaW5nIHRvIHVzZXJzcGFj ZSAqLwo+ID4gQEAgLTQyOCw4ICs0MjgsOCBAQCBpOTE1X2dlbV9jcmVhdGUoc3RydWN0IGRybV9m aWxlICpmaWxlLAo+ID4gICAJCW9iaiA9IGk5MTVfZ2VtX2FsbG9jX29iamVjdChkZXYsIHNpemUp Owo+ID4gICAJfQo+ID4KPiA+IC0JaWYgKG9iaiA9PSBOVUxMKQo+ID4gLQkJcmV0dXJuIC1FTk9N RU07Cj4gPiArCWlmIChJU19FUlIob2JqKSkKPiA+ICsJCXJldHVybiBQVFJfRVJSKG9iaik7Cj4g Pgo+ID4gICAJcmV0ID0gZHJtX2dlbV9oYW5kbGVfY3JlYXRlKGZpbGUsICZvYmotPmJhc2UsICZo YW5kbGUpOwo+ID4gICAJLyogZHJvcCByZWZlcmVuY2UgZnJvbSBhbGxvY2F0ZSAtIGhhbmRsZSBo b2xkcyBpdCBub3cgKi8KPiA+IEBAIC00NDU5LDE0ICs0NDU5LDE2IEBAIHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICppOTE1X2dlbV9hbGxvY19vYmplY3Qoc3RydWN0IGRybV9kZXZpY2UgKmRl diwKPiA+ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4gPiAgIAlzdHJ1Y3Qg YWRkcmVzc19zcGFjZSAqbWFwcGluZzsKPiA+ICAgCWdmcF90IG1hc2s7Cj4gPiArCWludCByZXQ7 Cj4gPgo+ID4gICAJb2JqID0gaTkxNV9nZW1fb2JqZWN0X2FsbG9jKGRldik7Cj4gPiAgIAlpZiAo b2JqID09IE5VTEwpCj4gPiAtCQlyZXR1cm4gTlVMTDsKPiA+ICsJCXJldHVybiBFUlJfUFRSKC1F Tk9NRU0pOwo+ID4KPiA+IC0JaWYgKGRybV9nZW1fb2JqZWN0X2luaXQoZGV2LCAmb2JqLT5iYXNl LCBzaXplKSAhPSAwKSB7Cj4gPiArCXJldCA9IGRybV9nZW1fb2JqZWN0X2luaXQoZGV2LCAmb2Jq LT5iYXNlLCBzaXplKTsKPiA+ICsJaWYgKHJldCkgewo+ID4gICAJCWk5MTVfZ2VtX29iamVjdF9m cmVlKG9iaik7Cj4gPiAtCQlyZXR1cm4gTlVMTDsKPiA+ICsJCXJldHVybiBFUlJfUFRSKHJldCk7 Cj4gPiAgIAl9Cj4gPgo+ID4gICAJbWFzayA9IEdGUF9ISUdIVVNFUiB8IF9fR0ZQX1JFQ0xBSU1B QkxFOwo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2JhdGNo X3Bvb2wuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2JhdGNoX3Bvb2wuYwo+ID4g aW5kZXggN2JmMmYzZi4uZDc5Y2FhMiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2JhdGNoX3Bvb2wuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fYmF0Y2hfcG9vbC5jCj4gPiBAQCAtMTM1LDggKzEzNSw4IEBAIGk5MTVfZ2VtX2Jh dGNoX3Bvb2xfZ2V0KHN0cnVjdCBpOTE1X2dlbV9iYXRjaF9wb29sICpwb29sLAo+ID4gICAJCWlu dCByZXQ7Cj4gPgo+ID4gICAJCW9iaiA9IGk5MTVfZ2VtX2FsbG9jX29iamVjdChwb29sLT5kZXYs IHNpemUpOwo+ID4gLQkJaWYgKG9iaiA9PSBOVUxMKQo+ID4gLQkJCXJldHVybiBFUlJfUFRSKC1F Tk9NRU0pOwo+ID4gKwkJaWYgKElTX0VSUihvYmopKQo+ID4gKwkJCXJldHVybiBvYmo7Cj4gPgo+ ID4gICAJCXJldCA9IGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXMob2JqKTsKPiA+ICAgCQlpZiAo cmV0KQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRl eHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+ID4gaW5kZXgg NDM3NjFjNS4uOTc1NDg5NCAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2NvbnRleHQuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Y29udGV4dC5jCj4gPiBAQCAtMTc5LDggKzE3OSw4IEBAIGk5MTVfZ2VtX2FsbG9jX2NvbnRleHRf b2JqKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHNpemVfdCBzaXplKQo+ID4gICAJaW50IHJldDsK PiA+Cj4gPiAgIAlvYmogPSBpOTE1X2dlbV9hbGxvY19vYmplY3QoZGV2LCBzaXplKTsKPiA+IC0J aWYgKG9iaiA9PSBOVUxMKQo+ID4gLQkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4gPiArCWlm IChJU19FUlIob2JqKSkKPiA+ICsJCXJldHVybiBvYmo7Cj4gPgo+ID4gICAJLyoKPiA+ICAgCSAq IFRyeSB0byBtYWtlIHRoZSBjb250ZXh0IHV0aWxpemUgTDMgYXMgd2VsbCBhcyBMTEMuCj4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVuZGVyX3N0YXRlLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZW5kZXJfc3RhdGUuYwo+ID4gaW5kZXgg NTAyNmE2Mi4uMmJmZGQ0OSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX3JlbmRlcl9zdGF0ZS5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9yZW5kZXJfc3RhdGUuYwo+ID4gQEAgLTU4LDggKzU4LDExIEBAIHN0YXRpYyBpbnQgcmVu ZGVyX3N0YXRlX2luaXQoc3RydWN0IHJlbmRlcl9zdGF0ZSAqc28sIHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCj4gPiAgIAkJcmV0dXJuIC1FSU5WQUw7Cj4gPgo+ID4gICAJc28tPm9iaiA9IGk5MTVf Z2VtX2FsbG9jX29iamVjdChkZXYsIDQwOTYpOwo+ID4gLQlpZiAoc28tPm9iaiA9PSBOVUxMKQo+ ID4gLQkJcmV0dXJuIC1FTk9NRU07Cj4gPiArCWlmIChJU19FUlIoc28tPm9iaikpIHsKPiA+ICsJ CXJldCA9IFBUUl9FUlIoc28tPm9iaik7Cj4gPiArCQlzby0+b2JqID0gTlVMTDsKPiA+ICsJCXJl dHVybiByZXQ7Cj4gPiArCX0KPiA+Cj4gPiAgIAlyZXQgPSBpOTE1X2dlbV9vYmpfZ2d0dF9waW4o c28tPm9iaiwgNDA5NiwgMCk7Cj4gPiAgIAlpZiAocmV0KQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fc3RvbGVuLmMKPiA+IGluZGV4IDE3ZDY3OWUuLjg2OWJhMjUgMTAwNjQ0Cj4gPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYwo+ID4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMKPiA+IEBAIC00OTIsNiArNDkyLDcg QEAgaTkxNV9wYWdlc19jcmVhdGVfZm9yX3N0b2xlbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ ID4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0 ZTsKPiA+ICAgCXN0cnVjdCBzZ190YWJsZSAqc3Q7Cj4gPiAgIAlzdHJ1Y3Qgc2NhdHRlcmxpc3Qg KnNnOwo+ID4gKwlpbnQgcmV0Owo+ID4KPiA+ICAgCURSTV9ERUJVR19EUklWRVIoIm9mZnNldD0w eCV4LCBzaXplPSVkXG4iLCBvZmZzZXQsIHNpemUpOwo+ID4gICAJQlVHX09OKG9mZnNldCA+IGRl dl9wcml2LT5ndHQuc3RvbGVuX3NpemUgLSBzaXplKTsKPiA+IEBAIC01MDMsMTEgKzUwNCwxMiBA QCBpOTE1X3BhZ2VzX2NyZWF0ZV9mb3Jfc3RvbGVuKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4g Pgo+ID4gICAJc3QgPSBrbWFsbG9jKHNpemVvZigqc3QpLCBHRlBfS0VSTkVMKTsKPiA+ICAgCWlm IChzdCA9PSBOVUxMKQo+ID4gLQkJcmV0dXJuIE5VTEw7Cj4gPiArCQlyZXR1cm4gRVJSX1BUUigt RU5PTUVNKTsKPiA+Cj4gPiAtCWlmIChzZ19hbGxvY190YWJsZShzdCwgMSwgR0ZQX0tFUk5FTCkp IHsKPiA+ICsJcmV0ID0gc2dfYWxsb2NfdGFibGUoc3QsIDEsIEdGUF9LRVJORUwpOwo+ID4gKwlp ZiAocmV0KSB7Cj4gPiAgIAkJa2ZyZWUoc3QpOwo+ID4gLQkJcmV0dXJuIE5VTEw7Cj4gPiArCQly ZXR1cm4gRVJSX1BUUihyZXQpOwo+ID4gICAJfQo+ID4KPiA+ICAgCXNnID0gc3QtPnNnbDsKPiA+ IEBAIC01NTYsMTggKzU1OCwyMyBAQCBfaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ICAgCQkJICAgICAgIHN0cnVjdCBkcm1fbW1fbm9kZSAq c3RvbGVuKQo+ID4gICB7Cj4gPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwo+ ID4gKwlzdHJ1Y3Qgc2dfdGFibGUgKnBhZ2VzOwo+ID4KPiA+ICAgCW9iaiA9IGk5MTVfZ2VtX29i amVjdF9hbGxvYyhkZXYpOwo+ID4gICAJaWYgKG9iaiA9PSBOVUxMKQo+ID4gLQkJcmV0dXJuIE5V TEw7Cj4gPiArCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiA+Cj4gPiAgIAlkcm1fZ2VtX3By aXZhdGVfb2JqZWN0X2luaXQoZGV2LCAmb2JqLT5iYXNlLCBzdG9sZW4tPnNpemUpOwo+ID4gICAJ aTkxNV9nZW1fb2JqZWN0X2luaXQob2JqLCAmaTkxNV9nZW1fb2JqZWN0X3N0b2xlbl9vcHMpOwo+ ID4KPiA+IC0Jb2JqLT5wYWdlcyA9IGk5MTVfcGFnZXNfY3JlYXRlX2Zvcl9zdG9sZW4oZGV2LAo+ ID4gLQkJCQkJCSAgc3RvbGVuLT5zdGFydCwgc3RvbGVuLT5zaXplKTsKPiA+IC0JaWYgKG9iai0+ cGFnZXMgPT0gTlVMTCkKPiA+IC0JCWdvdG8gY2xlYW51cDsKPiA+ICsJcGFnZXMgPSBpOTE1X3Bh Z2VzX2NyZWF0ZV9mb3Jfc3RvbGVuKGRldiwKPiA+ICsJCQkJCSAgICAgc3RvbGVuLT5zdGFydCwg c3RvbGVuLT5zaXplKTsKPiA+ICsJaWYgKElTX0VSUihwYWdlcykpIHsKPiA+ICsJCWk5MTVfZ2Vt X29iamVjdF9mcmVlKG9iaik7Cj4gPiArCQlyZXR1cm4gRVJSX0NBU1QocGFnZXMpOwo+ID4gKwl9 Cj4gPiArCj4gPiArCW9iai0+cGFnZXMgPSBwYWdlczsKPiA+Cj4gPiAgIAlvYmotPmdldF9wYWdl LnNnID0gb2JqLT5wYWdlcy0+c2dsOwo+ID4gICAJb2JqLT5nZXRfcGFnZS5sYXN0ID0gMDsKPiA+ IEBAIC01NzksMTAgKzU4Niw2IEBAIF9pOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbihzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4gICAJb2JqLT5jYWNoZV9sZXZlbCA9IEhBU19MTEMoZGV2 KSA/IEk5MTVfQ0FDSEVfTExDIDogSTkxNV9DQUNIRV9OT05FOwo+ID4KPiA+ICAgCXJldHVybiBv Ymo7Cj4gPiAtCj4gPiAtY2xlYW51cDoKPiA+IC0JaTkxNV9nZW1fb2JqZWN0X2ZyZWUob2JqKTsK PiA+IC0JcmV0dXJuIE5VTEw7Cj4gPiAgIH0KPiA+Cj4gPiAgIHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICoKPiA+IEBAIC01OTQsMjkgKzU5NywyOSBAQCBpOTE1X2dlbV9vYmplY3RfY3JlYXRl X3N0b2xlbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1NjQgc2l6ZSkKPiA+ICAgCWludCByZXQ7 Cj4gPgo+ID4gICAJaWYgKCFkcm1fbW1faW5pdGlhbGl6ZWQoJmRldl9wcml2LT5tbS5zdG9sZW4p KQo+ID4gLQkJcmV0dXJuIE5VTEw7Cj4gPiArCQlyZXR1cm4gRVJSX1BUUigtRU5PREVWKTsKPiA+ Cj4gPiAgIAlEUk1fREVCVUdfS01TKCJjcmVhdGluZyBzdG9sZW4gb2JqZWN0OiBzaXplPSVsbHhc biIsIHNpemUpOwo+ID4gICAJaWYgKHNpemUgPT0gMCkKPiA+IC0JCXJldHVybiBOVUxMOwo+ID4g KwkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7Cj4gPgo+ID4gICAJc3RvbGVuID0ga3phbGxvYyhz aXplb2YoKnN0b2xlbiksIEdGUF9LRVJORUwpOwo+ID4gICAJaWYgKCFzdG9sZW4pCj4gPiAtCQly ZXR1cm4gTlVMTDsKPiA+ICsJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+ID4KPiA+ICAgCXJl dCA9IGk5MTVfZ2VtX3N0b2xlbl9pbnNlcnRfbm9kZShkZXZfcHJpdiwgc3RvbGVuLCBzaXplLCA0 MDk2KTsKPiA+ICAgCWlmIChyZXQpIHsKPiA+ICAgCQlrZnJlZShzdG9sZW4pOwo+ID4gLQkJcmV0 dXJuIE5VTEw7Cj4gPiArCQlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ID4gICAJfQo+ID4KPiA+ICAg CW9iaiA9IF9pOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbihkZXYsIHN0b2xlbik7Cj4gPiAt CWlmIChvYmopCj4gPiArCWlmICghSVNfRVJSKG9iaikpCj4gPiAgIAkJcmV0dXJuIG9iajsKPiA+ Cj4gPiAgIAlpOTE1X2dlbV9zdG9sZW5fcmVtb3ZlX25vZGUoZGV2X3ByaXYsIHN0b2xlbik7Cj4g PiAgIAlrZnJlZShzdG9sZW4pOwo+ID4gLQlyZXR1cm4gTlVMTDsKPiA+ICsJcmV0dXJuIG9iajsK PiA+ICAgfQo+ID4KPiA+ICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKgo+ID4gQEAgLTYz Myw3ICs2MzYsNyBAQCBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbl9mb3JfcHJlYWxsb2Nh dGVkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPiAgIAlpbnQgcmV0Owo+ID4KPiA+ICAgCWlm ICghZHJtX21tX2luaXRpYWxpemVkKCZkZXZfcHJpdi0+bW0uc3RvbGVuKSkKPiA+IC0JCXJldHVy biBOVUxMOwo+ID4gKwkJcmV0dXJuIEVSUl9QVFIoLUVOT0RFVik7Cj4gPgo+ID4gICAJRFJNX0RF QlVHX0tNUygiY3JlYXRpbmcgcHJlYWxsb2NhdGVkIHN0b2xlbiBvYmplY3Q6IHN0b2xlbl9vZmZz ZXQ9JXgsIGd0dF9vZmZzZXQ9JXgsIHNpemU9JXhcbiIsCj4gPiAgIAkJCXN0b2xlbl9vZmZzZXQs IGd0dF9vZmZzZXQsIHNpemUpOwo+ID4gQEAgLTY0MSwxMSArNjQ0LDExIEBAIGk5MTVfZ2VtX29i amVjdF9jcmVhdGVfc3RvbGVuX2Zvcl9wcmVhbGxvY2F0ZWQoc3RydWN0IGRybV9kZXZpY2UgKmRl diwKPiA+ICAgCS8qIEtJU1MgYW5kIGV4cGVjdCBldmVyeXRoaW5nIHRvIGJlIHBhZ2UtYWxpZ25l ZCAqLwo+ID4gICAJaWYgKFdBUk5fT04oc2l6ZSA9PSAwKSB8fCBXQVJOX09OKHNpemUgJiA0MDk1 KSB8fAo+ID4gICAJICAgIFdBUk5fT04oc3RvbGVuX29mZnNldCAmIDQwOTUpKQo+ID4gLQkJcmV0 dXJuIE5VTEw7Cj4gPiArCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKPiA+Cj4gPiAgIAlzdG9s ZW4gPSBremFsbG9jKHNpemVvZigqc3RvbGVuKSwgR0ZQX0tFUk5FTCk7Cj4gPiAgIAlpZiAoIXN0 b2xlbikKPiA+IC0JCXJldHVybiBOVUxMOwo+ID4gKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7 Cj4gPgo+ID4gICAJc3RvbGVuLT5zdGFydCA9IHN0b2xlbl9vZmZzZXQ7Cj4gPiAgIAlzdG9sZW4t PnNpemUgPSBzaXplOwo+ID4gQEAgLTY1NSwxNSArNjU4LDE1IEBAIGk5MTVfZ2VtX29iamVjdF9j cmVhdGVfc3RvbGVuX2Zvcl9wcmVhbGxvY2F0ZWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ ICAgCWlmIChyZXQpIHsKPiA+ICAgCQlEUk1fREVCVUdfS01TKCJmYWlsZWQgdG8gYWxsb2NhdGUg c3RvbGVuIHNwYWNlXG4iKTsKPiA+ICAgCQlrZnJlZShzdG9sZW4pOwo+ID4gLQkJcmV0dXJuIE5V TEw7Cj4gPiArCQlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ID4gICAJfQo+ID4KPiA+ICAgCW9iaiA9 IF9pOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbihkZXYsIHN0b2xlbik7Cj4gPiAtCWlmIChv YmogPT0gTlVMTCkgewo+ID4gKwlpZiAoSVNfRVJSKG9iaikpIHsKPiA+ICAgCQlEUk1fREVCVUdf S01TKCJmYWlsZWQgdG8gYWxsb2NhdGUgc3RvbGVuIG9iamVjdFxuIik7Cj4gPiAgIAkJaTkxNV9n ZW1fc3RvbGVuX3JlbW92ZV9ub2RlKGRldl9wcml2LCBzdG9sZW4pOwo+ID4gICAJCWtmcmVlKHN0 b2xlbik7Cj4gPiAtCQlyZXR1cm4gTlVMTDsKPiA+ICsJCXJldHVybiBvYmo7Cj4gPiAgIAl9Cj4g Pgo+ID4gICAJLyogU29tZSBvYmplY3RzIGp1c3QgbmVlZCBwaHlzaWNhbCBtZW0gZnJvbSBzdG9s ZW4gc3BhY2UgKi8KPiA+IEBAIC03MDEsNSArNzA0LDUgQEAgaTkxNV9nZW1fb2JqZWN0X2NyZWF0 ZV9zdG9sZW5fZm9yX3ByZWFsbG9jYXRlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4KPiA+ ICAgZXJyOgo+ID4gICAJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UoJm9iai0+YmFzZSk7Cj4g PiAtCXJldHVybiBOVUxMOwo+ID4gKwlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ID4gICB9Cj4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCj4gPiBpbmRleCAwZDIz Nzg1Yi4uYWMwNDJjNiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z3VjX3N1Ym1pc3Npb24uYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNf c3VibWlzc2lvbi5jCj4gPiBAQCAtNjI5LDI3ICs2MjksMzAgQEAgaW50IGk5MTVfZ3VjX3N1Ym1p dChzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50ICpjbGllbnQsCj4gPiAgICAqIG9iamVjdCBuZWVkcyB0 byBiZSBwaW5uZWQgbGlmZXRpbWUuIEFsc28gd2UgbXVzdCBwaW4gaXQgdG8gZ3R0IHNwYWNlIG90 aGVyCj4gPiAgICAqIHRoYW4gWzAsIEdVQ19XT1BDTV9UT1ApIGJlY2F1c2UgdGhpcyByYW5nZSBp cyByZXNlcnZlZCBpbnNpZGUgR3VDLgo+ID4gICAgKgo+ID4gLSAqIFJldHVybjoJQSBkcm1faTkx NV9nZW1fb2JqZWN0IGlmIHN1Y2Nlc3NmdWwsIG90aGVyd2lzZSBOVUxMLgo+ID4gKyAqIFJldHVy bjoJQSBkcm1faTkxNV9nZW1fb2JqZWN0IGlmIHN1Y2Nlc3NmdWwsIG90aGVyd2lzZSBlcnJvciBw b2ludGVyLgo+ID4gICAgKi8KPiA+ICAgc3RhdGljIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpnZW1fYWxsb2NhdGVfZ3VjX29iaihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4gICAJCQkJ CQkJdTMyIHNpemUpCj4gPiAgIHsKPiA+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqOwo+ID4gKwlpbnQgcmV0Owo+ID4KPiA+ICAgCW9iaiA9IGk5MTVfZ2VtX2FsbG9jX29i amVjdChkZXYsIHNpemUpOwo+ID4gLQlpZiAoIW9iaikKPiA+IC0JCXJldHVybiBOVUxMOwo+ID4g KwlpZiAoSVNfRVJSKG9iaikpCj4gPiArCQlyZXR1cm4gb2JqOwo+ID4KPiA+IC0JaWYgKGk5MTVf Z2VtX29iamVjdF9nZXRfcGFnZXMob2JqKSkgewo+ID4gKwlyZXQgPSBpOTE1X2dlbV9vYmplY3Rf Z2V0X3BhZ2VzKG9iaik7Cj4gPiArCWlmIChyZXQpIHsKPiA+ICAgCQlkcm1fZ2VtX29iamVjdF91 bnJlZmVyZW5jZSgmb2JqLT5iYXNlKTsKPiA+IC0JCXJldHVybiBOVUxMOwo+ID4gKwkJcmV0dXJu IEVSUl9QVFIocmV0KTsKPiA+ICAgCX0KPiA+Cj4gPiAtCWlmIChpOTE1X2dlbV9vYmpfZ2d0dF9w aW4ob2JqLCBQQUdFX1NJWkUsCj4gPiAtCQkJUElOX09GRlNFVF9CSUFTIHwgR1VDX1dPUENNX1RP UCkpIHsKPiA+ICsJcmV0ID0gaTkxNV9nZW1fb2JqX2dndHRfcGluKG9iaiwgUEFHRV9TSVpFLAo+ ID4gKwkJCQkgICAgUElOX09GRlNFVF9CSUFTIHwgR1VDX1dPUENNX1RPUCk7Cj4gPiArCWlmIChy ZXQpIHsKPiA+ICAgCQlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgmb2JqLT5iYXNlKTsKPiA+ IC0JCXJldHVybiBOVUxMOwo+ID4gKwkJcmV0dXJuIEVSUl9QVFIocmV0KTsKPiA+ICAgCX0KPiA+ Cj4gPiAgIAkvKiBJbnZhbGlkYXRlIEd1QyBUTEIgdG8gbGV0IEd1QyB0YWtlIHRoZSBsYXRlc3Qg dXBkYXRlcyB0byBHVFQuICovCj4gPiBAQCAtNzE3LDcgKzcyMCw3IEBAIHN0YXRpYyB2b2lkIGd1 Y19jbGllbnRfZnJlZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4gICAgKiBAY3R4Ogl0aGUg Y29udGV4dCB0aGF0IG93bnMgdGhlIGNsaWVudCAod2UgdXNlIHRoZSBkZWZhdWx0IHJlbmRlcgo+ ID4gICAgKiAJCWNvbnRleHQpCj4gPiAgICAqCj4gPiAtICogUmV0dXJuOglBbiBpOTE1X2d1Y19j bGllbnQgb2JqZWN0IGlmIHN1Y2Nlc3MuCj4gPiArICogUmV0dXJuOglBbiBpOTE1X2d1Y19jbGll bnQgb2JqZWN0IGlmIHN1Y2Nlc3MsIGVycm9yIHBvaW50ZXIgb24gZmFpbHVyZS4KPiA+ICAgICov Cj4gPiAgIHN0YXRpYyBzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50ICpndWNfY2xpZW50X2FsbG9jKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPiAgIAkJCQkJCXVpbnQzMl90IHByaW9yaXR5LAo+ID4g QEAgLTcyNywxMCArNzMwLDExIEBAIHN0YXRpYyBzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50ICpndWNf Y2xpZW50X2FsbG9jKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPiAgIAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ID4gICAJc3RydWN0IGlu dGVsX2d1YyAqZ3VjID0gJmRldl9wcml2LT5ndWM7Cj4gPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqOwo+ID4gKwlpbnQgcmV0Owo+ID4KPiA+ICAgCWNsaWVudCA9IGt6YWxsb2Mo c2l6ZW9mKCpjbGllbnQpLCBHRlBfS0VSTkVMKTsKPiA+ICAgCWlmICghY2xpZW50KQo+ID4gLQkJ cmV0dXJuIE5VTEw7Cj4gPiArCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiA+Cj4gPiAgIAlj bGllbnQtPmRvb3JiZWxsX2lkID0gR1VDX0lOVkFMSURfRE9PUkJFTExfSUQ7Cj4gPiAgIAljbGll bnQtPnByaW9yaXR5ID0gcHJpb3JpdHk7Cj4gPiBAQCAtNzQxLDEzICs3NDUsMTYgQEAgc3RhdGlj IHN0cnVjdCBpOTE1X2d1Y19jbGllbnQgKmd1Y19jbGllbnRfYWxsb2Moc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKPiA+ICAgCQkJR1VDX01BWF9HUFVfQ09OVEVYVFMsIEdGUF9LRVJORUwpOwo+ID4g ICAJaWYgKGNsaWVudC0+Y3R4X2luZGV4ID49IEdVQ19NQVhfR1BVX0NPTlRFWFRTKSB7Cj4gPiAg IAkJY2xpZW50LT5jdHhfaW5kZXggPSBHVUNfSU5WQUxJRF9DVFhfSUQ7Cj4gPiArCQlyZXQgPSAt RUlOVkFMOwo+ID4gICAJCWdvdG8gZXJyOwo+ID4gICAJfQo+ID4KPiA+ICAgCS8qIFRoZSBmaXJz dCBwYWdlIGlzIGRvb3JiZWxsL3Byb2NfZGVzYy4gVHdvIGZvbGxvd2VkIHBhZ2VzIGFyZSB3cS4g Ki8KPiA+ICAgCW9iaiA9IGdlbV9hbGxvY2F0ZV9ndWNfb2JqKGRldiwgR1VDX0RCX1NJWkUgKyBH VUNfV1FfU0laRSk7Cj4gPiAtCWlmICghb2JqKQo+ID4gKwlpZiAoSVNfRVJSKG9iaikpIHsKPiA+ ICsJCXJldCA9IFBUUl9FUlIob2JqKTsKPiA+ICAgCQlnb3RvIGVycjsKPiA+ICsJfQo+ID4KPiA+ ICAgCWNsaWVudC0+Y2xpZW50X29iaiA9IG9iajsKPiA+ICAgCWNsaWVudC0+d3Ffb2Zmc2V0ID0g R1VDX0RCX1NJWkU7Cj4gPiBAQCAtNzY2LDkgKzc3MywxMSBAQCBzdGF0aWMgc3RydWN0IGk5MTVf Z3VjX2NsaWVudCAqZ3VjX2NsaWVudF9hbGxvYyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4g ICAJCWNsaWVudC0+cHJvY19kZXNjX29mZnNldCA9IChHVUNfREJfU0laRSAvIDIpOwo+ID4KPiA+ ICAgCWNsaWVudC0+ZG9vcmJlbGxfaWQgPSBhc3NpZ25fZG9vcmJlbGwoZ3VjLCBjbGllbnQtPnBy aW9yaXR5KTsKPiA+IC0JaWYgKGNsaWVudC0+ZG9vcmJlbGxfaWQgPT0gR1VDX0lOVkFMSURfRE9P UkJFTExfSUQpCj4gPiArCWlmIChjbGllbnQtPmRvb3JiZWxsX2lkID09IEdVQ19JTlZBTElEX0RP T1JCRUxMX0lEKSB7Cj4gPiAgIAkJLyogWFhYOiBldmljdCBhIGRvb3JiZWxsIGluc3RlYWQgKi8K PiA+ICsJCXJldCA9IC1FSU5WQUw7Cj4gPiAgIAkJZ290byBlcnI7Cj4gPiArCX0KPiA+Cj4gPiAg IAlndWNfaW5pdF9wcm9jX2Rlc2MoZ3VjLCBjbGllbnQpOwo+ID4gICAJZ3VjX2luaXRfY3R4X2Rl c2MoZ3VjLCBjbGllbnQpOwo+ID4gQEAgLTc3Niw3ICs3ODUsOCBAQCBzdGF0aWMgc3RydWN0IGk5 MTVfZ3VjX2NsaWVudCAqZ3VjX2NsaWVudF9hbGxvYyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ ID4KPiA+ICAgCS8qIFhYWDogQW55IGNhY2hlIGZsdXNoZXMgbmVlZGVkPyBHZW5lcmFsIGRvbWFp biBtZ210IGNhbGxzPyAqLwo+ID4KPiA+IC0JaWYgKGhvc3QyZ3VjX2FsbG9jYXRlX2Rvb3JiZWxs KGd1YywgY2xpZW50KSkKPiA+ICsJcmV0ID0gaG9zdDJndWNfYWxsb2NhdGVfZG9vcmJlbGwoZ3Vj LCBjbGllbnQpOwo+ID4gKwlpZiAocmV0KQo+ID4gICAJCWdvdG8gZXJyOwo+ID4KPiA+ICAgCURS TV9ERUJVR19EUklWRVIoIm5ldyBwcmlvcml0eSAldSBjbGllbnQgJXA6IGN0eF9pbmRleCAldSBk Yl9pZCAldVxuIiwKPiA+IEBAIC03ODgsNyArNzk4LDcgQEAgZXJyOgo+ID4gICAJRFJNX0VSUk9S KCJGQUlMRUQgdG8gY3JlYXRlIHByaW9yaXR5ICV1IEd1QyBjbGllbnQhXG4iLCBwcmlvcml0eSk7 Cj4gPgo+ID4gICAJZ3VjX2NsaWVudF9mcmVlKGRldiwgY2xpZW50KTsKPiA+IC0JcmV0dXJuIE5V TEw7Cj4gPiArCXJldHVybiBFUlJfUFRSKHJldCk7Cj4gPiAgIH0KPiA+Cj4gPiAgIHN0YXRpYyB2 b2lkIGd1Y19jcmVhdGVfbG9nKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPiA+IEBAIC04MTMsNyAr ODIzLDcgQEAgc3RhdGljIHZvaWQgZ3VjX2NyZWF0ZV9sb2coc3RydWN0IGludGVsX2d1YyAqZ3Vj KQo+ID4gICAJb2JqID0gZ3VjLT5sb2dfb2JqOwo+ID4gICAJaWYgKCFvYmopIHsKPiA+ICAgCQlv YmogPSBnZW1fYWxsb2NhdGVfZ3VjX29iaihkZXZfcHJpdi0+ZGV2LCBzaXplKTsKPiA+IC0JCWlm ICghb2JqKSB7Cj4gPiArCQlpZiAoSVNfRVJSKG9iaikpIHsKPiA+ICAgCQkJLyogbG9nZ2luZyB3 aWxsIGJlIG9mZiAqLwo+ID4gICAJCQlpOTE1Lmd1Y19sb2dfbGV2ZWwgPSAtMTsKPiA+ICAgCQkJ cmV0dXJuOwo+ID4gQEAgLTg0Myw2ICs4NTMsNyBAQCBpbnQgaTkxNV9ndWNfc3VibWlzc2lvbl9p bml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gPiAgIAljb25zdCBzaXplX3QgcG9vbHNpemUg PSBHVUNfTUFYX0dQVV9DT05URVhUUyAqIGN0eHNpemU7Cj4gPiAgIAljb25zdCBzaXplX3QgZ2Vt c2l6ZSA9IHJvdW5kX3VwKHBvb2xzaXplLCBQQUdFX1NJWkUpOwo+ID4gICAJc3RydWN0IGludGVs X2d1YyAqZ3VjID0gJmRldl9wcml2LT5ndWM7Cj4gPiArCWludCByZXQ7Cj4gPgo+ID4gICAJaWYg KCFpOTE1LmVuYWJsZV9ndWNfc3VibWlzc2lvbikKPiA+ICAgCQlyZXR1cm4gMDsgLyogbm90IGVu YWJsZWQgICovCj4gPiBAQCAtODUxLDggKzg2MiwxMSBAQCBpbnQgaTkxNV9ndWNfc3VibWlzc2lv bl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gPiAgIAkJcmV0dXJuIDA7IC8qIGFscmVh ZHkgYWxsb2NhdGVkICovCj4gPgo+ID4gICAJZ3VjLT5jdHhfcG9vbF9vYmogPSBnZW1fYWxsb2Nh dGVfZ3VjX29iaihkZXZfcHJpdi0+ZGV2LCBnZW1zaXplKTsKPiA+IC0JaWYgKCFndWMtPmN0eF9w b29sX29iaikKPiA+IC0JCXJldHVybiAtRU5PTUVNOwo+ID4gKwlpZiAoSVNfRVJSKGd1Yy0+Y3R4 X3Bvb2xfb2JqKSkgewo+ID4gKwkJcmV0ID0gUFRSX0VSUihndWMtPmN0eF9wb29sX29iaik7Cj4g PiArCQlndWMtPmN0eF9wb29sX29iaiA9IE5VTEw7Cj4gPiArCQlyZXR1cm4gcmV0Owo+ID4gKwl9 Cj4gPgo+ID4gICAJaWRhX2luaXQoJmd1Yy0+Y3R4X2lkcyk7Cj4gPgo+ID4gQEAgLTg3MCw5ICs4 ODQsOSBAQCBpbnQgaTkxNV9ndWNfc3VibWlzc2lvbl9lbmFibGUoc3RydWN0IGRybV9kZXZpY2Ug KmRldikKPiA+Cj4gPiAgIAkvKiBjbGllbnQgZm9yIGV4ZWNidWYgc3VibWlzc2lvbiAqLwo+ID4g ICAJY2xpZW50ID0gZ3VjX2NsaWVudF9hbGxvYyhkZXYsIEdVQ19DVFhfUFJJT1JJVFlfS01EX05P Uk1BTCwgY3R4KTsKPiA+IC0JaWYgKCFjbGllbnQpIHsKPiA+ICsJaWYgKElTX0VSUihjbGllbnQp KSB7Cj4gPiAgIAkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGV4ZWNidWYgZ3VjX2NsaWVu dFxuIik7Cj4gPiAtCQlyZXR1cm4gLUVOT01FTTsKPiA+ICsJCXJldHVybiBQVFJfRVJSKGNsaWVu dCk7Cj4gPiAgIAl9Cj4gPgo+ID4gICAJZ3VjLT5leGVjYnVmX2NsaWVudCA9IGNsaWVudDsKPiA+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+IGluZGV4IGRkMGU5NjYuLjAwNmQ0 M2EgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMK PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gQEAgLTI1 NDMsNyArMjU0Myw3IEBAIGludGVsX2FsbG9jX2luaXRpYWxfcGxhbmVfb2JqKHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjLAo+ID4gICAJCQkJCQkJICAgICBiYXNlX2FsaWduZWQsCj4gPiAgIAkJCQkJ CQkgICAgIGJhc2VfYWxpZ25lZCwKPiA+ICAgCQkJCQkJCSAgICAgc2l6ZV9hbGlnbmVkKTsKPiA+ IC0JaWYgKCFvYmopCj4gPiArCWlmIChJU19FUlIob2JqKSkKPiA+ICAgCQlyZXR1cm4gZmFsc2U7 Cj4gPgo+ID4gICAJb2JqLT50aWxpbmdfbW9kZSA9IHBsYW5lX2NvbmZpZy0+dGlsaW5nOwo+ID4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRldi5jCj4gPiBpbmRleCA3Y2NkZTU4Li5iMmYxMzRhIDEw MDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYuYwo+ID4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYuYwo+ID4gQEAgLTE0OCwxMSArMTQ4 LDExIEBAIHN0YXRpYyBpbnQgaW50ZWxmYl9hbGxvYyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqaGVs cGVyLAo+ID4gICAJICogZmVhdHVyZXMuICovCj4gPiAgIAlpZiAoc2l6ZSAqIDIgPCBkZXZfcHJp di0+Z3R0LnN0b2xlbl91c2FibGVfc2l6ZSkKPiA+ICAgCQlvYmogPSBpOTE1X2dlbV9vYmplY3Rf Y3JlYXRlX3N0b2xlbihkZXYsIHNpemUpOwo+ID4gLQlpZiAob2JqID09IE5VTEwpCj4gPiArCWlm IChJU19FUlJfT1JfTlVMTChvYmopKQo+ID4gICAJCW9iaiA9IGk5MTVfZ2VtX2FsbG9jX29iamVj dChkZXYsIHNpemUpOwo+ID4gLQlpZiAoIW9iaikgewo+ID4gKwlpZiAoSVNfRVJSKG9iaikpIHsK PiA+ICAgCQlEUk1fRVJST1IoImZhaWxlZCB0byBhbGxvY2F0ZSBmcmFtZWJ1ZmZlclxuIik7Cj4g PiAtCQlyZXQgPSAtRU5PTUVNOwo+ID4gKwkJcmV0ID0gUFRSX0VSUihvYmopOwo+ID4gICAJCWdv dG8gb3V0Owo+ID4gICAJfQo+ID4KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gPiBpbmRl eCA0ZWJhZmFiLi41Y2E0YzA2IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfbHJjLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4g PiBAQCAtMTM3MSw5ICsxMzcxLDExIEBAIHN0YXRpYyBpbnQgbHJjX3NldHVwX3dhX2N0eF9vYmoo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywgdTMyIHNpemUpCj4gPiAgIAlpbnQgcmV0Owo+ ID4KPiA+ICAgCXJpbmctPndhX2N0eC5vYmogPSBpOTE1X2dlbV9hbGxvY19vYmplY3QocmluZy0+ ZGV2LCBQQUdFX0FMSUdOKHNpemUpKTsKPiA+IC0JaWYgKCFyaW5nLT53YV9jdHgub2JqKSB7Cj4g PiArCWlmIChJU19FUlIocmluZy0+d2FfY3R4Lm9iaikpIHsKPiA+ICAgCQlEUk1fREVCVUdfRFJJ VkVSKCJhbGxvYyBMUkMgV0EgY3R4IGJhY2tpbmcgb2JqIGZhaWxlZC5cbiIpOwo+ID4gLQkJcmV0 dXJuIC1FTk9NRU07Cj4gPiArCQlyZXQgPSBQVFJfRVJSKHJpbmctPndhX2N0eC5vYmopOwo+ID4g KwkJcmluZy0+d2FfY3R4Lm9iaiA9IE5VTEw7Cj4gPiArCQlyZXR1cm4gcmV0Owo+ID4gICAJfQo+ ID4KPiA+ICAgCXJldCA9IGk5MTVfZ2VtX29ial9nZ3R0X3BpbihyaW5nLT53YV9jdHgub2JqLCBQ QUdFX1NJWkUsIDApOwo+ID4gQEAgLTI0NTYsOSArMjQ1OCw5IEBAIGludCBpbnRlbF9scl9jb250 ZXh0X2RlZmVycmVkX2FsbG9jKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgsCj4gPiAgIAljb250 ZXh0X3NpemUgKz0gUEFHRV9TSVpFICogTFJDX1BQSFdTUF9QTjsKPiA+Cj4gPiAgIAljdHhfb2Jq ID0gaTkxNV9nZW1fYWxsb2Nfb2JqZWN0KGRldiwgY29udGV4dF9zaXplKTsKPiA+IC0JaWYgKCFj dHhfb2JqKSB7Cj4gPiArCWlmIChJU19FUlIoY3R4X29iaikpIHsKPiA+ICAgCQlEUk1fREVCVUdf RFJJVkVSKCJBbGxvYyBMUkMgYmFja2luZyBvYmogZmFpbGVkLlxuIik7Cj4gPiAtCQlyZXR1cm4g LUVOT01FTTsKPiA+ICsJCXJldHVybiBQVFJfRVJSKGN0eF9vYmopOwo+ID4gICAJfQo+ID4KPiA+ ICAgCXJpbmdidWYgPSBpbnRlbF9lbmdpbmVfY3JlYXRlX3JpbmdidWZmZXIocmluZywgNCAqIFBB R0VfU0laRSk7Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3Zl cmxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ZlcmxheS5jCj4gPiBpbmRleCA3 NmYxOTgwLi4zYTY1ODU4IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfb3ZlcmxheS5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5 LmMKPiA+IEBAIC0xMzkyLDkgKzEzOTIsOSBAQCB2b2lkIGludGVsX3NldHVwX292ZXJsYXkoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKPiA+ICAgCXJlZ19ibyA9IE5VTEw7Cj4gPiAgIAlpZiAoIU9W RVJMQVlfTkVFRFNfUEhZU0lDQUwoZGV2KSkKPiA+ICAgCQlyZWdfYm8gPSBpOTE1X2dlbV9vYmpl Y3RfY3JlYXRlX3N0b2xlbihkZXYsIFBBR0VfU0laRSk7Cj4gPiAtCWlmIChyZWdfYm8gPT0gTlVM TCkKPiA+ICsJaWYgKElTX0VSUl9PUl9OVUxMKHJlZ19ibykpCj4gPiAgIAkJcmVnX2JvID0gaTkx NV9nZW1fYWxsb2Nfb2JqZWN0KGRldiwgUEFHRV9TSVpFKTsKPiA+IC0JaWYgKHJlZ19ibyA9PSBO VUxMKQo+ID4gKwlpZiAoSVNfRVJSKHJlZ19ibykpCj4gPiAgIAkJZ290byBvdXRfZnJlZTsKPiA+ ICAgCW92ZXJsYXktPnJlZ19ibyA9IHJlZ19ibzsKPiA+Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bt LmMKPiA+IGluZGV4IDk5NjhjNjYuLjBhZmI4MTkgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9wbS5jCj4gPiBAQCAtNTE3NCwxMCArNTE3NCwxMSBAQCBzdGF0aWMgdm9pZCB2YWxsZXl2aWV3 X3NldHVwX3BjdHgoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+ICAgCQkJCQkJCQkgICAgICBw Y2JyX29mZnNldCwKPiA+ICAgCQkJCQkJCQkgICAgICBJOTE1X0dUVF9PRkZTRVRfTk9ORSwKPiA+ ICAgCQkJCQkJCQkgICAgICBwY3R4X3NpemUpOwo+ID4gLQkJZ290byBvdXQ7Cj4gPiArCQlpZiAo IUlTX0VSUihwY3R4KSkKPiA+ICsJCQlnb3RvIG91dDsKPiAKPiBUaGlzIGlzIGEgY2hhbmdlIGlu IGJlaGF2aW91ciwgaXMgaXQgT0sgaW4gdGhpcyBwYXRjaCBvciBuZWVkcyB0byBiZSAKPiBzcGxp dCBvdXQ/Cj4gCj4gUHJldmlvdXNseSBpZiBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbl9m b3JfcHJlYWxsb2NhdGVkIGZhaWxlZCBpdCAKPiB3b3VsZCBsZWF2ZSBpdCBhdCB0aGF0LiBOb3cg aXQgdHJpZXMgYSBmYWxsYmFjayBwYXRoLgpJIHRoaW5rIEkgc2hvdWxkIGZhbGxiYWNrIHRvIHNv bWV0aGluZyBsaWtlIHRoaXMsCgppZiAoSVNfRVJSKHBjdHgpKQoJcGN0eCA9IE5VTEw7Cgpnb3Rv IG91dDsKCgpBcyBrZWVwaW5nIHBjdHggYXMgYW4gRVJST1IgUE9JTlRFUiBtaWdodCBhZmZlY3Qg b3RoZXIgTlVMTCBjaGVja3MgZm9yCnRoZSBwb2ludGVyLCBhbmQgbm8gY2hhbmdlIGluIGJlaGF2 aW91ci4gSXMgdGhpcyBva2F5PwoKVGhhbmtzLApBbmtpdAo+IAoKPiBSZWdhcmRzLAo+IAo+IFR2 cnRrbwo+IAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==