From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 3/6] drm/i915: Propagating correct error codes to the userspace Date: Wed, 9 Dec 2015 15:10:43 +0000 Message-ID: <56684473.9020302@linux.intel.com> References: <1449665182-10054-1-git-send-email-ankitprasad.r.sharma@intel.com> <1449665182-10054-4-git-send-email-ankitprasad.r.sharma@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 497526E1D8 for ; Wed, 9 Dec 2015 07:11:59 -0800 (PST) In-Reply-To: <1449665182-10054-4-git-send-email-ankitprasad.r.sharma@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: ankitprasad.r.sharma@intel.com, intel-gfx@lists.freedesktop.org Cc: akash.goel@intel.com, shashidhar.hiremath@intel.com List-Id: intel-gfx@lists.freedesktop.org CkhpLAoKT24gMDkvMTIvMTUgMTI6NDYsIGFua2l0cHJhc2FkLnIuc2hhcm1hQGludGVsLmNvbSB3 cm90ZToKPiBGcm9tOiBBbmtpdHByYXNhZCBTaGFybWEgPGFua2l0cHJhc2FkLnIuc2hhcm1hQGlu dGVsLmNvbT4KPgo+IFByb3BhZ2F0aW5nIGNvcnJlY3QgZXJyb3IgY29kZXMgdG8gdXNlcnNwYWNl IGJ5IHVzaW5nIEVSUl9QVFIgYW5kCj4gUFRSX0VSUiBtYWNyb3MgZm9yIHN0b2xlbiBtZW1vcnkg YmFzZWQgb2JqZWN0IGFsbG9jYXRpb24uIFdlIGdlbmVyYWxseQo+IHJldHVybiAtRU5PTUVNIHRv IHRoZSB1c2VyIHdoZW5ldmVyIHRoZXJlIGlzIGEgZmFpbHVyZSBpbiBvYmplY3QKPiBhbGxvY2F0 aW9uLiBUaGlzIHBhdGNoIGhlbHBzIHVzZXIgdG8gaWRlbnRpZnkgdGhlIGNvcnJlY3QgcmVhc29u IGZvciB0aGUKPiBmYWlsdXJlIGFuZCBub3QganVzdCAtRU5PTUVNIGVhY2ggdGltZS4KPgo+IHYy OiBNb3ZlZCB0aGUgcGF0Y2ggdXAgaW4gdGhlIHNlcmllcywgYWRkZWQgZXJyb3IgcHJvcGFnYXRp b24gZm9yCj4gaTkxNV9nZW1fYWxsb2Nfb2JqZWN0IHRvbyAoQ2hyaXMpCj4KPiB2MzogUmVtb3Zl ZCBzdG9yaW5nIG9mIGVycm9yIHBvaW50ZXIgaW5zaWRlIHN0cnVjdHMsIENvcnJlY3RlZCBlcnJv cgo+IHByb3BhZ2F0aW9uIGluIGNhbGxlciBmdW5jdGlvbnMgKENocmlzKQo+Cj4gdjQ6IFJlbW92 ZSBhc3NpZ25tZW50cyBpbnNpZGUgdGhlIHByZWRpY2F0ZSAoQ2hyaXMpCj4KPiBTaWduZWQtb2Zm LWJ5OiBBbmtpdHByYXNhZCBTaGFybWEgPGFua2l0cHJhc2FkLnIuc2hhcm1hQGludGVsLmNvbT4K PiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICAgICAgIHwg MTYgKysrKystLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fYmF0Y2hfcG9v bC5jICAgfCAgNCArLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQu YyAgICAgIHwgIDQgKy0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZW5kZXJf c3RhdGUuYyB8ICA3ICsrKy0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9s ZW4uYyAgICAgICB8IDQzICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCj4gICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMgICB8IDQ1ICsrKysrKysrKysrKysrKysr Ky0tLS0tLS0tLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyAgICAg ICAgIHwgIDIgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMgICAgICAg ICAgIHwgIDYgKystLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgICAg ICAgICAgfCAxMCArKysrLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5 LmMgICAgICAgICB8ICA0ICstLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAg ICAgICAgICAgICAgfCAgMiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1 ZmZlci5jICAgICAgfCAyMSArKysrKystLS0tLS0tCj4gICAxMiBmaWxlcyBjaGFuZ2VkLCA5NSBp bnNlcnRpb25zKCspLCA2OSBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ IGluZGV4IDI5NmU2M2YuLjU4MTI3NDggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBA QCAtMzkzLDkgKzM5Myw5IEBAIGk5MTVfZ2VtX2NyZWF0ZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUs Cj4gICAJaWYgKGZsYWdzICYgSTkxNV9DUkVBVEVfUExBQ0VNRU5UX1NUT0xFTikgewo+ICAgCQlt dXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gICAJCW9iaiA9IGk5MTVfZ2VtX29iamVj dF9jcmVhdGVfc3RvbGVuKGRldiwgc2l6ZSk7Cj4gLQkJaWYgKCFvYmopIHsKPiArCQlpZiAoSVNf RVJSKG9iaikpIHsKPiAgIAkJCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+IC0J CQlyZXR1cm4gLUVOT01FTTsKPiArCQkJcmV0dXJuIFBUUl9FUlIob2JqKTsKPiAgIAkJfQo+Cj4g ICAJCS8qIEFsd2F5cyBjbGVhciBmcmVzaCBidWZmZXJzIGJlZm9yZSBoYW5kaW5nIHRvIHVzZXJz cGFjZSAqLwo+IEBAIC00MTEsOCArNDExLDggQEAgaTkxNV9nZW1fY3JlYXRlKHN0cnVjdCBkcm1f ZmlsZSAqZmlsZSwKPiAgIAkJb2JqID0gaTkxNV9nZW1fYWxsb2Nfb2JqZWN0KGRldiwgc2l6ZSk7 Cj4gICAJfQo+Cj4gLQlpZiAob2JqID09IE5VTEwpCj4gLQkJcmV0dXJuIC1FTk9NRU07Cj4gKwlp ZiAoSVNfRVJSKG9iaikpCj4gKwkJcmV0dXJuIFBUUl9FUlIob2JqKTsKPgo+ICAgCXJldCA9IGRy bV9nZW1faGFuZGxlX2NyZWF0ZShmaWxlLCAmb2JqLT5iYXNlLCAmaGFuZGxlKTsKPiAgIAkvKiBk cm9wIHJlZmVyZW5jZSBmcm9tIGFsbG9jYXRlIC0gaGFuZGxlIGhvbGRzIGl0IG5vdyAqLwo+IEBA IC00Mzk5LDE0ICs0Mzk5LDE2IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICppOTE1X2dl bV9hbGxvY19vYmplY3Qoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgIAlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqOwo+ICAgCXN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nOwo+ ICAgCWdmcF90IG1hc2s7Cj4gKwlpbnQgcmV0Owo+Cj4gICAJb2JqID0gaTkxNV9nZW1fb2JqZWN0 X2FsbG9jKGRldik7Cj4gICAJaWYgKG9iaiA9PSBOVUxMKQo+IC0JCXJldHVybiBOVUxMOwo+ICsJ CXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+Cj4gLQlpZiAoZHJtX2dlbV9vYmplY3RfaW5pdChk ZXYsICZvYmotPmJhc2UsIHNpemUpICE9IDApIHsKPiArCXJldCA9IGRybV9nZW1fb2JqZWN0X2lu aXQoZGV2LCAmb2JqLT5iYXNlLCBzaXplKTsKPiArCWlmIChyZXQpIHsKPiAgIAkJaTkxNV9nZW1f b2JqZWN0X2ZyZWUob2JqKTsKPiAtCQlyZXR1cm4gTlVMTDsKPiArCQlyZXR1cm4gRVJSX1BUUihy ZXQpOwo+ICAgCX0KPgo+ICAgCW1hc2sgPSBHRlBfSElHSFVTRVIgfCBfX0dGUF9SRUNMQUlNQUJM RTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fYmF0Y2hfcG9v bC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fYmF0Y2hfcG9vbC5jCj4gaW5kZXgg N2JmMmYzZi4uZDc5Y2FhMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9iYXRjaF9wb29sLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9i YXRjaF9wb29sLmMKPiBAQCAtMTM1LDggKzEzNSw4IEBAIGk5MTVfZ2VtX2JhdGNoX3Bvb2xfZ2V0 KHN0cnVjdCBpOTE1X2dlbV9iYXRjaF9wb29sICpwb29sLAo+ICAgCQlpbnQgcmV0Owo+Cj4gICAJ CW9iaiA9IGk5MTVfZ2VtX2FsbG9jX29iamVjdChwb29sLT5kZXYsIHNpemUpOwo+IC0JCWlmIChv YmogPT0gTlVMTCkKPiAtCQkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4gKwkJaWYgKElTX0VS UihvYmopKQo+ICsJCQlyZXR1cm4gb2JqOwo+Cj4gICAJCXJldCA9IGk5MTVfZ2VtX29iamVjdF9n ZXRfcGFnZXMob2JqKTsKPiAgIAkJaWYgKHJldCkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fY29udGV4dC5jCj4gaW5kZXggMjA0ZGM3Yy4uNGQyNGNmYyAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPiBAQCAtMTgxLDggKzE4MSw4IEBAIGk5MTVfZ2Vt X2FsbG9jX2NvbnRleHRfb2JqKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHNpemVfdCBzaXplKQo+ ICAgCWludCByZXQ7Cj4KPiAgIAlvYmogPSBpOTE1X2dlbV9hbGxvY19vYmplY3QoZGV2LCBzaXpl KTsKPiAtCWlmIChvYmogPT0gTlVMTCkKPiAtCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiAr CWlmIChJU19FUlIob2JqKSkKPiArCQlyZXR1cm4gb2JqOwo+Cj4gICAJLyoKPiAgIAkgKiBUcnkg dG8gbWFrZSB0aGUgY29udGV4dCB1dGlsaXplIEwzIGFzIHdlbGwgYXMgTExDLgo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZW5kZXJfc3RhdGUuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlbmRlcl9zdGF0ZS5jCj4gaW5kZXggNTAyNmE2Mi4u MmJmZGQ0OSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZW5k ZXJfc3RhdGUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlbmRlcl9z dGF0ZS5jCj4gQEAgLTU4LDggKzU4LDExIEBAIHN0YXRpYyBpbnQgcmVuZGVyX3N0YXRlX2luaXQo c3RydWN0IHJlbmRlcl9zdGF0ZSAqc28sIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICAJCXJl dHVybiAtRUlOVkFMOwo+Cj4gICAJc28tPm9iaiA9IGk5MTVfZ2VtX2FsbG9jX29iamVjdChkZXYs IDQwOTYpOwo+IC0JaWYgKHNvLT5vYmogPT0gTlVMTCkKPiAtCQlyZXR1cm4gLUVOT01FTTsKPiAr CWlmIChJU19FUlIoc28tPm9iaikpIHsKPiArCQlyZXQgPSBQVFJfRVJSKHNvLT5vYmopOwo+ICsJ CXNvLT5vYmogPSBOVUxMOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4KPiAgIAlyZXQgPSBpOTE1 X2dlbV9vYmpfZ2d0dF9waW4oc28tPm9iaiwgNDA5NiwgMCk7Cj4gICAJaWYgKHJldCkKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYwo+IGluZGV4IGI5OGEzYmYuLjBiMGNlMTEg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYwo+IEBAIC00OTIsNiAr NDkyLDcgQEAgaTkxNV9wYWdlc19jcmVhdGVfZm9yX3N0b2xlbihzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3By aXZhdGU7Cj4gICAJc3RydWN0IHNnX3RhYmxlICpzdDsKPiAgIAlzdHJ1Y3Qgc2NhdHRlcmxpc3Qg KnNnOwo+ICsJaW50IHJldDsKPgo+ICAgCURSTV9ERUJVR19EUklWRVIoIm9mZnNldD0weCV4LCBz aXplPSVkXG4iLCBvZmZzZXQsIHNpemUpOwo+ICAgCUJVR19PTihvZmZzZXQgPiBkZXZfcHJpdi0+ Z3R0LnN0b2xlbl9zaXplIC0gc2l6ZSk7Cj4gQEAgLTUwMywxMSArNTA0LDEyIEBAIGk5MTVfcGFn ZXNfY3JlYXRlX2Zvcl9zdG9sZW4oc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPgo+ICAgCXN0ID0g a21hbGxvYyhzaXplb2YoKnN0KSwgR0ZQX0tFUk5FTCk7Cj4gICAJaWYgKHN0ID09IE5VTEwpCj4g LQkJcmV0dXJuIE5VTEw7Cj4gKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4KPiAtCWlmIChz Z19hbGxvY190YWJsZShzdCwgMSwgR0ZQX0tFUk5FTCkpIHsKPiArCXJldCA9IHNnX2FsbG9jX3Rh YmxlKHN0LCAxLCBHRlBfS0VSTkVMKTsKPiArCWlmIChyZXQpIHsKPiAgIAkJa2ZyZWUoc3QpOwo+ IC0JCXJldHVybiBOVUxMOwo+ICsJCXJldHVybiBFUlJfUFRSKHJldCk7Cj4gICAJfQo+Cj4gICAJ c2cgPSBzdC0+c2dsOwo+IEBAIC01NTYsMTggKzU1OCwyMSBAQCBfaTkxNV9nZW1fb2JqZWN0X2Ny ZWF0ZV9zdG9sZW4oc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgIAkJCSAgICAgICBzdHJ1Y3Qg ZHJtX21tX25vZGUgKnN0b2xlbikKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqOwo+ICsJaW50IHJldCA9IDA7CgpyZXQgbG9va3Mgb25seSB0byBiZSB1c2VkIG9uIHRo ZSBjbGVhbnVwIHBhdGggc28gbm8gbmVlZCB0byBpbml0aWFsaXNlIAppdCB0byB6ZXJvLiBPciBp cyB0aGUgY29tcGlsZXIgY29tcGxhaW5pbmc/IEluIHdoaWNoIGNhc2VzIGl0IG1pZ2h0IGJlIApz aW1wbGVyIHRvIHJlbW92ZSB0aGUgY2xlYW51cCBwYXRoIGFuZCBqdXN0IGRvIGl0IGZyb20gdGhl ICJpZiAKKElTX0VSUihvYmotPnBhZ2VzKSkiIGJsb2NrPwoKPgo+ICAgCW9iaiA9IGk5MTVfZ2Vt X29iamVjdF9hbGxvYyhkZXYpOwo+ICAgCWlmIChvYmogPT0gTlVMTCkKPiAtCQlyZXR1cm4gTlVM TDsKPiArCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPgo+ICAgCWRybV9nZW1fcHJpdmF0ZV9v YmplY3RfaW5pdChkZXYsICZvYmotPmJhc2UsIHN0b2xlbi0+c2l6ZSk7Cj4gICAJaTkxNV9nZW1f b2JqZWN0X2luaXQob2JqLCAmaTkxNV9nZW1fb2JqZWN0X3N0b2xlbl9vcHMpOwo+Cj4gICAJb2Jq LT5wYWdlcyA9IGk5MTVfcGFnZXNfY3JlYXRlX2Zvcl9zdG9sZW4oZGV2LAo+ICAgCQkJCQkJICBz dG9sZW4tPnN0YXJ0LCBzdG9sZW4tPnNpemUpOwo+IC0JaWYgKG9iai0+cGFnZXMgPT0gTlVMTCkK PiArCWlmIChJU19FUlIob2JqLT5wYWdlcykpIHsKPiArCQlyZXQgPSBQVFJfRVJSKG9iai0+cGFn ZXMpOwo+ICAgCQlnb3RvIGNsZWFudXA7Cj4gKwl9Cj4KPiAgIAlpOTE1X2dlbV9vYmplY3RfcGlu X3BhZ2VzKG9iaik7Cj4gICAJb2JqLT5zdG9sZW4gPSBzdG9sZW47Cj4gQEAgLTU3OSw3ICs1ODQs NyBAQCBfaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oc3RydWN0IGRybV9kZXZpY2UgKmRl diwKPgo+ICAgY2xlYW51cDoKPiAgIAlpOTE1X2dlbV9vYmplY3RfZnJlZShvYmopOwo+IC0JcmV0 dXJuIE5VTEw7Cj4gKwlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ICAgfQo+Cj4gICBzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqCj4gQEAgLTU5MSwyOSArNTk2LDI5IEBAIGk5MTVfZ2VtX29iamVj dF9jcmVhdGVfc3RvbGVuKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHU2NCBzaXplKQo+ICAgCWlu dCByZXQ7Cj4KPiAgIAlpZiAoIWRybV9tbV9pbml0aWFsaXplZCgmZGV2X3ByaXYtPm1tLnN0b2xl bikpCj4gLQkJcmV0dXJuIE5VTEw7Cj4gKwkJcmV0dXJuIEVSUl9QVFIoLUVOT0RFVik7Cj4KPiAg IAlEUk1fREVCVUdfS01TKCJjcmVhdGluZyBzdG9sZW4gb2JqZWN0OiBzaXplPSVsbHhcbiIsIHNp emUpOwo+ICAgCWlmIChzaXplID09IDApCj4gLQkJcmV0dXJuIE5VTEw7Cj4gKwkJcmV0dXJuIEVS Ul9QVFIoLUVJTlZBTCk7Cj4KPiAgIAlzdG9sZW4gPSBremFsbG9jKHNpemVvZigqc3RvbGVuKSwg R0ZQX0tFUk5FTCk7Cj4gICAJaWYgKCFzdG9sZW4pCj4gLQkJcmV0dXJuIE5VTEw7Cj4gKwkJcmV0 dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4KPiAgIAlyZXQgPSBpOTE1X2dlbV9zdG9sZW5faW5zZXJ0 X25vZGUoZGV2X3ByaXYsIHN0b2xlbiwgc2l6ZSwgNDA5Nik7Cj4gICAJaWYgKHJldCkgewo+ICAg CQlrZnJlZShzdG9sZW4pOwo+IC0JCXJldHVybiBOVUxMOwo+ICsJCXJldHVybiBFUlJfUFRSKHJl dCk7Cj4gICAJfQo+Cj4gICAJb2JqID0gX2k5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVuKGRl diwgc3RvbGVuKTsKPiAtCWlmIChvYmopCj4gKwlpZiAoIUlTX0VSUihvYmopKQo+ICAgCQlyZXR1 cm4gb2JqOwo+Cj4gICAJaTkxNV9nZW1fc3RvbGVuX3JlbW92ZV9ub2RlKGRldl9wcml2LCBzdG9s ZW4pOwo+ICAgCWtmcmVlKHN0b2xlbik7Cj4gLQlyZXR1cm4gTlVMTDsKPiArCXJldHVybiBvYmo7 Cj4gICB9Cj4KPiAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICoKPiBAQCAtNjMwLDcgKzYz NSw3IEBAIGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVuX2Zvcl9wcmVhbGxvY2F0ZWQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKPiAgIAlpbnQgcmV0Owo+Cj4gICAJaWYgKCFkcm1fbW1faW5p dGlhbGl6ZWQoJmRldl9wcml2LT5tbS5zdG9sZW4pKQo+IC0JCXJldHVybiBOVUxMOwo+ICsJCXJl dHVybiBFUlJfUFRSKC1FTk9ERVYpOwoKV2hhdCBhYm91dCB0aGUgY2FsbGVycyBvZiB0aGlzIGZ1 bmN0aW9uPyBUaGV5IGRvbid0IHNlZW0gdG8gaGFuZGxlIEVSUl9QVFIuCgo+Cj4gICAJRFJNX0RF QlVHX0tNUygiY3JlYXRpbmcgcHJlYWxsb2NhdGVkIHN0b2xlbiBvYmplY3Q6IHN0b2xlbl9vZmZz ZXQ9JXgsIGd0dF9vZmZzZXQ9JXgsIHNpemU9JXhcbiIsCj4gICAJCQlzdG9sZW5fb2Zmc2V0LCBn dHRfb2Zmc2V0LCBzaXplKTsKPiBAQCAtNjM4LDExICs2NDMsMTEgQEAgaTkxNV9nZW1fb2JqZWN0 X2NyZWF0ZV9zdG9sZW5fZm9yX3ByZWFsbG9jYXRlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ ICAgCS8qIEtJU1MgYW5kIGV4cGVjdCBldmVyeXRoaW5nIHRvIGJlIHBhZ2UtYWxpZ25lZCAqLwo+ ICAgCWlmIChXQVJOX09OKHNpemUgPT0gMCkgfHwgV0FSTl9PTihzaXplICYgNDA5NSkgfHwKPiAg IAkgICAgV0FSTl9PTihzdG9sZW5fb2Zmc2V0ICYgNDA5NSkpCj4gLQkJcmV0dXJuIE5VTEw7Cj4g KwkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7Cj4KPiAgIAlzdG9sZW4gPSBremFsbG9jKHNpemVv Zigqc3RvbGVuKSwgR0ZQX0tFUk5FTCk7Cj4gICAJaWYgKCFzdG9sZW4pCj4gLQkJcmV0dXJuIE5V TEw7Cj4gKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4KPiAgIAlzdG9sZW4tPnN0YXJ0ID0g c3RvbGVuX29mZnNldDsKPiAgIAlzdG9sZW4tPnNpemUgPSBzaXplOwo+IEBAIC02NTIsMTUgKzY1 NywxNSBAQCBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbl9mb3JfcHJlYWxsb2NhdGVkKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gICAJaWYgKHJldCkgewo+ICAgCQlEUk1fREVCVUdfS01T KCJmYWlsZWQgdG8gYWxsb2NhdGUgc3RvbGVuIHNwYWNlXG4iKTsKPiAgIAkJa2ZyZWUoc3RvbGVu KTsKPiAtCQlyZXR1cm4gTlVMTDsKPiArCQlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ICAgCX0KPgo+ ICAgCW9iaiA9IF9pOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbihkZXYsIHN0b2xlbik7Cj4g LQlpZiAob2JqID09IE5VTEwpIHsKPiArCWlmIChJU19FUlIob2JqKSkgewo+ICAgCQlEUk1fREVC VUdfS01TKCJmYWlsZWQgdG8gYWxsb2NhdGUgc3RvbGVuIG9iamVjdFxuIik7Cj4gICAJCWk5MTVf Z2VtX3N0b2xlbl9yZW1vdmVfbm9kZShkZXZfcHJpdiwgc3RvbGVuKTsKPiAgIAkJa2ZyZWUoc3Rv bGVuKTsKPiAtCQlyZXR1cm4gTlVMTDsKPiArCQlyZXR1cm4gb2JqOwo+ICAgCX0KPgo+ICAgCS8q IFNvbWUgb2JqZWN0cyBqdXN0IG5lZWQgcGh5c2ljYWwgbWVtIGZyb20gc3RvbGVuIHNwYWNlICov Cj4gQEAgLTY5OCw1ICs3MDMsNSBAQCBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbl9mb3Jf cHJlYWxsb2NhdGVkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4KPiAgIGVycjoKPiAgIAlkcm1f Z2VtX29iamVjdF91bnJlZmVyZW5jZSgmb2JqLT5iYXNlKTsKPiAtCXJldHVybiBOVUxMOwo+ICsJ cmV0dXJuIEVSUl9QVFIocmV0KTsKPiAgIH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n dWNfc3VibWlzc2lvbi5jCj4gaW5kZXggNGFjODg2Ny4uYWEzOGFlNCAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKPiBAQCAtNjQ1LDIyICs2NDUsMjQg QEAgaW50IGk5MTVfZ3VjX3N1Ym1pdChzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50ICpjbGllbnQsCj4g ICAgKiBvYmplY3QgbmVlZHMgdG8gYmUgcGlubmVkIGxpZmV0aW1lLiBBbHNvIHdlIG11c3QgcGlu IGl0IHRvIGd0dCBzcGFjZSBvdGhlcgo+ICAgICogdGhhbiBbMCwgR1VDX1dPUENNX1RPUCkgYmVj YXVzZSB0aGlzIHJhbmdlIGlzIHJlc2VydmVkIGluc2lkZSBHdUMuCj4gICAgKgo+IC0gKiBSZXR1 cm46CUEgZHJtX2k5MTVfZ2VtX29iamVjdCBpZiBzdWNjZXNzZnVsLCBvdGhlcndpc2UgTlVMTC4K PiArICogUmV0dXJuOglBIGRybV9pOTE1X2dlbV9vYmplY3QgaWYgc3VjY2Vzc2Z1bCwgb3RoZXJ3 aXNlIGVycm9yIHBvaW50ZXIuCj4gICAgKi8KPiAgIHN0YXRpYyBzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqZ2VtX2FsbG9jYXRlX2d1Y19vYmooc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAg IAkJCQkJCQl1MzIgc2l6ZSkKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmo7Cj4gKwlpbnQgcmV0Owo+Cj4gICAJb2JqID0gaTkxNV9nZW1fYWxsb2Nfb2JqZWN0KGRl diwgc2l6ZSk7Cj4gLQlpZiAoIW9iaikKPiAtCQlyZXR1cm4gTlVMTDsKPiArCWlmIChJU19FUlIo b2JqKSkKPiArCQlyZXR1cm4gb2JqOwo+Cj4gLQlpZiAoaTkxNV9nZW1fb2JqX2dndHRfcGluKG9i aiwgUEFHRV9TSVpFLAo+IC0JCQlQSU5fT0ZGU0VUX0JJQVMgfCBHVUNfV09QQ01fVE9QKSkgewo+ ICsJcmV0ID0gaTkxNV9nZW1fb2JqX2dndHRfcGluKG9iaiwgUEFHRV9TSVpFLAo+ICsJCQkJICAg IFBJTl9PRkZTRVRfQklBUyB8IEdVQ19XT1BDTV9UT1ApOwo+ICsJaWYgKHJldCkgewo+ICAgCQlk cm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgmb2JqLT5iYXNlKTsKPiAtCQlyZXR1cm4gTlVMTDsK PiArCQlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ICAgCX0KPgo+ICAgCS8qIEludmFsaWRhdGUgR3VD IFRMQiB0byBsZXQgR3VDIHRha2UgdGhlIGxhdGVzdCB1cGRhdGVzIHRvIEdUVC4gKi8KPiBAQCAt NzM4LDEwICs3NDAsMTEgQEAgc3RhdGljIHN0cnVjdCBpOTE1X2d1Y19jbGllbnQgKmd1Y19jbGll bnRfYWxsb2Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwKCk5lZWQgdG8gdXBkYXRlIGtlcm5lbGRv YyBmb3IgdGhpcyBmdW5jdGlvbi4KCj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgIAlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSAmZGV2 X3ByaXYtPmd1YzsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwo+ICsJaW50 IHJldDsKPgo+ICAgCWNsaWVudCA9IGt6YWxsb2Moc2l6ZW9mKCpjbGllbnQpLCBHRlBfS0VSTkVM KTsKPiAgIAlpZiAoIWNsaWVudCkKPiAtCQlyZXR1cm4gTlVMTDsKPiArCQlyZXR1cm4gRVJSX1BU UigtRU5PTUVNKTsKPgo+ICAgCWNsaWVudC0+ZG9vcmJlbGxfaWQgPSBHVUNfSU5WQUxJRF9ET09S QkVMTF9JRDsKPiAgIAljbGllbnQtPnByaW9yaXR5ID0gcHJpb3JpdHk7Cj4gQEAgLTc1MiwxMyAr NzU1LDE2IEBAIHN0YXRpYyBzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50ICpndWNfY2xpZW50X2FsbG9j KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gICAJCQlHVUNfTUFYX0dQVV9DT05URVhUUywgR0ZQ X0tFUk5FTCk7Cj4gICAJaWYgKGNsaWVudC0+Y3R4X2luZGV4ID49IEdVQ19NQVhfR1BVX0NPTlRF WFRTKSB7Cj4gICAJCWNsaWVudC0+Y3R4X2luZGV4ID0gR1VDX0lOVkFMSURfQ1RYX0lEOwo+ICsJ CXJldCA9IC1FSU5WQUw7Cj4gICAJCWdvdG8gZXJyOwo+ICAgCX0KPgo+ICAgCS8qIFRoZSBmaXJz dCBwYWdlIGlzIGRvb3JiZWxsL3Byb2NfZGVzYy4gVHdvIGZvbGxvd2VkIHBhZ2VzIGFyZSB3cS4g Ki8KPiAgIAlvYmogPSBnZW1fYWxsb2NhdGVfZ3VjX29iaihkZXYsIEdVQ19EQl9TSVpFICsgR1VD X1dRX1NJWkUpOwo+IC0JaWYgKCFvYmopCj4gKwlpZiAoSVNfRVJSKG9iaikpIHsKPiArCQlyZXQg PSBQVFJfRVJSKG9iaik7Cj4gICAJCWdvdG8gZXJyOwo+ICsJfQo+Cj4gICAJY2xpZW50LT5jbGll bnRfb2JqID0gb2JqOwo+ICAgCWNsaWVudC0+d3Ffb2Zmc2V0ID0gR1VDX0RCX1NJWkU7Cj4gQEAg LTc3OCw5ICs3ODQsMTEgQEAgc3RhdGljIHN0cnVjdCBpOTE1X2d1Y19jbGllbnQgKmd1Y19jbGll bnRfYWxsb2Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgIAkJY2xpZW50LT5wcm9jX2Rlc2Nf b2Zmc2V0ID0gKEdVQ19EQl9TSVpFIC8gMik7Cj4KPiAgIAljbGllbnQtPmRvb3JiZWxsX2lkID0g YXNzaWduX2Rvb3JiZWxsKGd1YywgY2xpZW50LT5wcmlvcml0eSk7Cj4gLQlpZiAoY2xpZW50LT5k b29yYmVsbF9pZCA9PSBHVUNfSU5WQUxJRF9ET09SQkVMTF9JRCkKPiArCWlmIChjbGllbnQtPmRv b3JiZWxsX2lkID09IEdVQ19JTlZBTElEX0RPT1JCRUxMX0lEKSB7Cj4gICAJCS8qIFhYWDogZXZp Y3QgYSBkb29yYmVsbCBpbnN0ZWFkICovCj4gKwkJcmV0ID0gLUVJTlZBTDsKPiAgIAkJZ290byBl cnI7Cj4gKwl9Cj4KPiAgIAlndWNfaW5pdF9wcm9jX2Rlc2MoZ3VjLCBjbGllbnQpOwo+ICAgCWd1 Y19pbml0X2N0eF9kZXNjKGd1YywgY2xpZW50KTsKPiBAQCAtNzg4LDcgKzc5Niw4IEBAIHN0YXRp YyBzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50ICpndWNfY2xpZW50X2FsbG9jKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCj4KPiAgIAkvKiBYWFg6IEFueSBjYWNoZSBmbHVzaGVzIG5lZWRlZD8gR2VuZXJh bCBkb21haW4gbWdtdCBjYWxscz8gKi8KPgo+IC0JaWYgKGhvc3QyZ3VjX2FsbG9jYXRlX2Rvb3Ji ZWxsKGd1YywgY2xpZW50KSkKPiArCXJldCA9IGhvc3QyZ3VjX2FsbG9jYXRlX2Rvb3JiZWxsKGd1 YywgY2xpZW50KTsKPiArCWlmIChyZXQpCj4gICAJCWdvdG8gZXJyOwo+Cj4gICAJRFJNX0RFQlVH X0RSSVZFUigibmV3IHByaW9yaXR5ICV1IGNsaWVudCAlcDogY3R4X2luZGV4ICV1IGRiX2lkICV1 XG4iLAo+IEBAIC04MDAsNyArODA5LDcgQEAgZXJyOgo+ICAgCURSTV9FUlJPUigiRkFJTEVEIHRv IGNyZWF0ZSBwcmlvcml0eSAldSBHdUMgY2xpZW50IVxuIiwgcHJpb3JpdHkpOwo+Cj4gICAJZ3Vj X2NsaWVudF9mcmVlKGRldiwgY2xpZW50KTsKPiAtCXJldHVybiBOVUxMOwo+ICsJcmV0dXJuIEVS Ul9QVFIocmV0KTsKPiAgIH0KPgo+ICAgc3RhdGljIHZvaWQgZ3VjX2NyZWF0ZV9sb2coc3RydWN0 IGludGVsX2d1YyAqZ3VjKQo+IEBAIC04MjUsNyArODM0LDcgQEAgc3RhdGljIHZvaWQgZ3VjX2Ny ZWF0ZV9sb2coc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ICAgCW9iaiA9IGd1Yy0+bG9nX29iajsK PiAgIAlpZiAoIW9iaikgewo+ICAgCQlvYmogPSBnZW1fYWxsb2NhdGVfZ3VjX29iaihkZXZfcHJp di0+ZGV2LCBzaXplKTsKPiAtCQlpZiAoIW9iaikgewo+ICsJCWlmIChJU19FUlIob2JqKSkgewo+ ICAgCQkJLyogbG9nZ2luZyB3aWxsIGJlIG9mZiAqLwo+ICAgCQkJaTkxNS5ndWNfbG9nX2xldmVs ID0gLTE7Cj4gICAJCQlyZXR1cm47Cj4gQEAgLTg1NSw2ICs4NjQsNyBAQCBpbnQgaTkxNV9ndWNf c3VibWlzc2lvbl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICAJY29uc3Qgc2l6ZV90 IHBvb2xzaXplID0gR1VDX01BWF9HUFVfQ09OVEVYVFMgKiBjdHhzaXplOwo+ICAgCWNvbnN0IHNp emVfdCBnZW1zaXplID0gcm91bmRfdXAocG9vbHNpemUsIFBBR0VfU0laRSk7Cj4gICAJc3RydWN0 IGludGVsX2d1YyAqZ3VjID0gJmRldl9wcml2LT5ndWM7Cj4gKwlpbnQgcmV0ID0gMDsKCk5vIG5l ZWQgdG8gaW5pdGlhbGlzZS4KCj4KPiAgIAlpZiAoIWk5MTUuZW5hYmxlX2d1Y19zdWJtaXNzaW9u KQo+ICAgCQlyZXR1cm4gMDsgLyogbm90IGVuYWJsZWQgICovCj4gQEAgLTg2Myw4ICs4NzMsMTEg QEAgaW50IGk5MTVfZ3VjX3N1Ym1pc3Npb25faW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ ICAgCQlyZXR1cm4gMDsgLyogYWxyZWFkeSBhbGxvY2F0ZWQgKi8KPgo+ICAgCWd1Yy0+Y3R4X3Bv b2xfb2JqID0gZ2VtX2FsbG9jYXRlX2d1Y19vYmooZGV2X3ByaXYtPmRldiwgZ2Vtc2l6ZSk7Cj4g LQlpZiAoIWd1Yy0+Y3R4X3Bvb2xfb2JqKQo+IC0JCXJldHVybiAtRU5PTUVNOwo+ICsJaWYgKElT X0VSUihndWMtPmN0eF9wb29sX29iaikpIHsKPiArCQlyZXQgPSBQVFJfRVJSKGd1Yy0+Y3R4X3Bv b2xfb2JqKTsKPiArCQlndWMtPmN0eF9wb29sX29iaiA9IE5VTEw7Cj4gKwkJcmV0dXJuIHJldDsK PiArCX0KPgo+ICAgCXNwaW5fbG9ja19pbml0KCZkZXZfcHJpdi0+Z3VjLmhvc3QyZ3VjX2xvY2sp Owo+Cj4gQEAgLTg4NCw5ICs4OTcsOSBAQCBpbnQgaTkxNV9ndWNfc3VibWlzc2lvbl9lbmFibGUo c3RydWN0IGRybV9kZXZpY2UgKmRldikKPgo+ICAgCS8qIGNsaWVudCBmb3IgZXhlY2J1ZiBzdWJt aXNzaW9uICovCj4gICAJY2xpZW50ID0gZ3VjX2NsaWVudF9hbGxvYyhkZXYsIEdVQ19DVFhfUFJJ T1JJVFlfS01EX05PUk1BTCwgY3R4KTsKPiAtCWlmICghY2xpZW50KSB7Cj4gKwlpZiAoSVNfRVJS KGNsaWVudCkpIHsKPiAgIAkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGV4ZWNidWYgZ3Vj X2NsaWVudFxuIik7Cj4gLQkJcmV0dXJuIC1FTk9NRU07Cj4gKwkJcmV0dXJuIFBUUl9FUlIoY2xp ZW50KTsKPiAgIAl9Cj4KPiAgIAlndWMtPmV4ZWNidWZfY2xpZW50ID0gY2xpZW50Owo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBpbmRleCA3Nzk3OWVkLi5mMjgxZTBiIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC0yNTQ2LDcgKzI1NDYsNyBA QCBpbnRlbF9hbGxvY19pbml0aWFsX3BsYW5lX29iaihzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywK PiAgIAkJCQkJCQkgICAgIGJhc2VfYWxpZ25lZCwKPiAgIAkJCQkJCQkgICAgIGJhc2VfYWxpZ25l ZCwKPiAgIAkJCQkJCQkgICAgIHNpemVfYWxpZ25lZCk7Cj4gLQlpZiAoIW9iaikKPiArCWlmIChJ U19FUlIob2JqKSkKPiAgIAkJcmV0dXJuIGZhbHNlOwo+Cj4gICAJb2JqLT50aWxpbmdfbW9kZSA9 IHBsYW5lX2NvbmZpZy0+dGlsaW5nOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9mYmRldi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYuYwo+IGlu ZGV4IDg0MGQ2YmYuLmY0MzY4MWUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZmJkZXYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMK PiBAQCAtMTQ2LDExICsxNDYsMTEgQEAgc3RhdGljIGludCBpbnRlbGZiX2FsbG9jKHN0cnVjdCBk cm1fZmJfaGVscGVyICpoZWxwZXIsCj4gICAJICogZmVhdHVyZXMuICovCj4gICAJaWYgKHNpemUg KiAyIDwgZGV2X3ByaXYtPmd0dC5zdG9sZW5fdXNhYmxlX3NpemUpCj4gICAJCW9iaiA9IGk5MTVf Z2VtX29iamVjdF9jcmVhdGVfc3RvbGVuKGRldiwgc2l6ZSk7Cj4gLQlpZiAob2JqID09IE5VTEwp Cj4gKwlpZiAoSVNfRVJSX09SX05VTEwob2JqKSkKPiAgIAkJb2JqID0gaTkxNV9nZW1fYWxsb2Nf b2JqZWN0KGRldiwgc2l6ZSk7Cj4gLQlpZiAoIW9iaikgewo+ICsJaWYgKElTX0VSUihvYmopKSB7 Cj4gICAJCURSTV9FUlJPUigiZmFpbGVkIHRvIGFsbG9jYXRlIGZyYW1lYnVmZmVyXG4iKTsKPiAt CQlyZXQgPSAtRU5PTUVNOwo+ICsJCXJldCA9IFBUUl9FUlIob2JqKTsKPiAgIAkJZ290byBvdXQ7 Cj4gICAJfQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiBpbmRleCAwNjE4MGRjLi40NTM5 Y2M2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiBAQCAtMTM2NCw5ICsxMzY0LDEx IEBAIHN0YXRpYyBpbnQgbHJjX3NldHVwX3dhX2N0eF9vYmooc3RydWN0IGludGVsX2VuZ2luZV9j cyAqcmluZywgdTMyIHNpemUpCj4gICAJaW50IHJldDsKPgo+ICAgCXJpbmctPndhX2N0eC5vYmog PSBpOTE1X2dlbV9hbGxvY19vYmplY3QocmluZy0+ZGV2LCBQQUdFX0FMSUdOKHNpemUpKTsKPiAt CWlmICghcmluZy0+d2FfY3R4Lm9iaikgewo+ICsJaWYgKElTX0VSUihyaW5nLT53YV9jdHgub2Jq KSkgewo+ICAgCQlEUk1fREVCVUdfRFJJVkVSKCJhbGxvYyBMUkMgV0EgY3R4IGJhY2tpbmcgb2Jq IGZhaWxlZC5cbiIpOwo+IC0JCXJldHVybiAtRU5PTUVNOwo+ICsJCXJldCA9IFBUUl9FUlIocmlu Zy0+d2FfY3R4Lm9iaik7Cj4gKwkJcmluZy0+d2FfY3R4Lm9iaiA9IE5VTEw7Cj4gKwkJcmV0dXJu IHJldDsKPiAgIAl9Cj4KPiAgIAlyZXQgPSBpOTE1X2dlbV9vYmpfZ2d0dF9waW4ocmluZy0+d2Ff Y3R4Lm9iaiwgUEFHRV9TSVpFLCAwKTsKPiBAQCAtMjQ3MSw5ICsyNDczLDkgQEAgaW50IGludGVs X2xyX2NvbnRleHRfZGVmZXJyZWRfYWxsb2Moc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCwKPiAg IAljb250ZXh0X3NpemUgKz0gUEFHRV9TSVpFICogTFJDX1BQSFdTUF9QTjsKPgo+ICAgCWN0eF9v YmogPSBpOTE1X2dlbV9hbGxvY19vYmplY3QoZGV2LCBjb250ZXh0X3NpemUpOwo+IC0JaWYgKCFj dHhfb2JqKSB7Cj4gKwlpZiAoSVNfRVJSKGN0eF9vYmopKSB7Cj4gICAJCURSTV9ERUJVR19EUklW RVIoIkFsbG9jIExSQyBiYWNraW5nIG9iaiBmYWlsZWQuXG4iKTsKPiAtCQlyZXR1cm4gLUVOT01F TTsKPiArCQlyZXR1cm4gUFRSX0VSUihjdHhfb2JqKTsKPiAgIAl9Cj4KPiAgIAlyaW5nYnVmID0g aW50ZWxfZW5naW5lX2NyZWF0ZV9yaW5nYnVmZmVyKHJpbmcsIDQgKiBQQUdFX1NJWkUpOwo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5LmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5LmMKPiBpbmRleCA3NmYxOTgwLi4zYTY1ODU4IDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX292ZXJsYXkuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX292ZXJsYXkuYwo+IEBAIC0xMzkyLDkgKzEzOTIs OSBAQCB2b2lkIGludGVsX3NldHVwX292ZXJsYXkoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAg IAlyZWdfYm8gPSBOVUxMOwo+ICAgCWlmICghT1ZFUkxBWV9ORUVEU19QSFlTSUNBTChkZXYpKQo+ ICAgCQlyZWdfYm8gPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbihkZXYsIFBBR0VfU0la RSk7Cj4gLQlpZiAocmVnX2JvID09IE5VTEwpCj4gKwlpZiAoSVNfRVJSX09SX05VTEwocmVnX2Jv KSkKPiAgIAkJcmVnX2JvID0gaTkxNV9nZW1fYWxsb2Nfb2JqZWN0KGRldiwgUEFHRV9TSVpFKTsK PiAtCWlmIChyZWdfYm8gPT0gTlVMTCkKPiArCWlmIChJU19FUlIocmVnX2JvKSkKPiAgIAkJZ290 byBvdXRfZnJlZTsKPiAgIAlvdmVybGF5LT5yZWdfYm8gPSByZWdfYm87Cj4KPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3BtLmMKPiBpbmRleCA2NDdjMGZmLi42ZGVlOTA4IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9wbS5jCj4gQEAgLTUxNzIsNyArNTE3Miw3IEBAIHN0YXRpYyB2b2lkIHZhbGxleXZpZXdf c2V0dXBfcGN0eChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgCSAqIG1lbW9yeSwgb3IgYW55 IG90aGVyIHJlbGV2YW50IHJhbmdlcy4KPiAgIAkgKi8KPiAgIAlwY3R4ID0gaTkxNV9nZW1fb2Jq ZWN0X2NyZWF0ZV9zdG9sZW4oZGV2LCBwY3R4X3NpemUpOwo+IC0JaWYgKCFwY3R4KSB7Cj4gKwlp ZiAoSVNfRVJSKHBjdHgpKSB7Cj4gICAJCURSTV9ERUJVRygibm90IGVub3VnaCBzdG9sZW4gc3Bh Y2UgZm9yIFBDVFgsIGRpc2FibGluZ1xuIik7Cj4gICAJCXJldHVybjsKPiAgIAl9Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+IGluZGV4IGM5YjA4MWYuLjVlYWJhZjYg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gQEAgLTY3OCw5 ICs2NzgsMTAgQEAgaW50ZWxfaW5pdF9waXBlX2NvbnRyb2woc3RydWN0IGludGVsX2VuZ2luZV9j cyAqcmluZykKPiAgIAlXQVJOX09OKHJpbmctPnNjcmF0Y2gub2JqKTsKPgo+ICAgCXJpbmctPnNj cmF0Y2gub2JqID0gaTkxNV9nZW1fYWxsb2Nfb2JqZWN0KHJpbmctPmRldiwgNDA5Nik7Cj4gLQlp ZiAocmluZy0+c2NyYXRjaC5vYmogPT0gTlVMTCkgewo+ICsJaWYgKElTX0VSUihyaW5nLT5zY3Jh dGNoLm9iaikpIHsKPiAgIAkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gYWxsb2NhdGUgc2Vxbm8gcGFn ZVxuIik7Cj4gLQkJcmV0ID0gLUVOT01FTTsKPiArCQlyZXQgPSBQVFJfRVJSKHJpbmctPnNjcmF0 Y2gub2JqKTsKPiArCQlyaW5nLT5zY3JhdGNoLm9iaiA9IE5VTEw7Cj4gICAJCWdvdG8gZXJyOwo+ ICAgCX0KPgo+IEBAIC0xOTM1LDkgKzE5MzYsOSBAQCBzdGF0aWMgaW50IGluaXRfc3RhdHVzX3Bh Z2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKPiAgIAkJaW50IHJldDsKPgo+ICAgCQlv YmogPSBpOTE1X2dlbV9hbGxvY19vYmplY3QocmluZy0+ZGV2LCA0MDk2KTsKPiAtCQlpZiAob2Jq ID09IE5VTEwpIHsKPiArCQlpZiAoSVNfRVJSKG9iaikpIHsKPiAgIAkJCURSTV9FUlJPUigiRmFp bGVkIHRvIGFsbG9jYXRlIHN0YXR1cyBwYWdlXG4iKTsKPiAtCQkJcmV0dXJuIC1FTk9NRU07Cj4g KwkJCXJldHVybiBQVFJfRVJSKG9iaik7Cj4gICAJCX0KPgo+ICAgCQlyZXQgPSBpOTE1X2dlbV9v YmplY3Rfc2V0X2NhY2hlX2xldmVsKG9iaiwgSTkxNV9DQUNIRV9MTEMpOwo+IEBAIC0yMDg0LDEw ICsyMDg1LDEwIEBAIHN0YXRpYyBpbnQgaW50ZWxfYWxsb2NfcmluZ2J1ZmZlcl9vYmooc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKPiAgIAlvYmogPSBOVUxMOwo+ICAgCWlmICghSEFTX0xMQyhkZXYp KQo+ICAgCQlvYmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbihkZXYsIHJpbmdidWYt PnNpemUpOwo+IC0JaWYgKG9iaiA9PSBOVUxMKQo+ICsJaWYgKElTX0VSUl9PUl9OVUxMKG9iaikp Cj4gICAJCW9iaiA9IGk5MTVfZ2VtX2FsbG9jX29iamVjdChkZXYsIHJpbmdidWYtPnNpemUpOwo+ IC0JaWYgKG9iaiA9PSBOVUxMKQo+IC0JCXJldHVybiAtRU5PTUVNOwo+ICsJaWYgKElTX0VSUihv YmopKQo+ICsJCXJldHVybiBQVFJfRVJSKG9iaik7Cj4KPiAgIAkvKiBtYXJrIHJpbmcgYnVmZmVy cyBhcyByZWFkLW9ubHkgZnJvbSBHUFUgc2lkZSBieSBkZWZhdWx0ICovCj4gICAJb2JqLT5ndF9y byA9IDE7Cj4gQEAgLTI2NzgsNyArMjY3OSw3IEBAIGludCBpbnRlbF9pbml0X3JlbmRlcl9yaW5n X2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgCWlmIChJTlRFTF9JTkZPKGRldikt PmdlbiA+PSA4KSB7Cj4gICAJCWlmIChpOTE1X3NlbWFwaG9yZV9pc19lbmFibGVkKGRldikpIHsK PiAgIAkJCW9iaiA9IGk5MTVfZ2VtX2FsbG9jX29iamVjdChkZXYsIDQwOTYpOwo+IC0JCQlpZiAo b2JqID09IE5VTEwpIHsKPiArCQkJaWYgKElTX0VSUihvYmopKSB7Cj4gICAJCQkJRFJNX0VSUk9S KCJGYWlsZWQgdG8gYWxsb2NhdGUgc2VtYXBob3JlIGJvLiBEaXNhYmxpbmcgc2VtYXBob3Jlc1xu Iik7Cj4gICAJCQkJaTkxNS5zZW1hcGhvcmVzID0gMDsKPiAgIAkJCX0gZWxzZSB7Cj4gQEAgLTI3 ODUsOSArMjc4Niw5IEBAIGludCBpbnRlbF9pbml0X3JlbmRlcl9yaW5nX2J1ZmZlcihzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+ICAgCS8qIFdvcmthcm91bmQgYmF0Y2hidWZmZXIgdG8gY29tYmF0 IENTIHRsYiBidWcuICovCj4gICAJaWYgKEhBU19CUk9LRU5fQ1NfVExCKGRldikpIHsKPiAgIAkJ b2JqID0gaTkxNV9nZW1fYWxsb2Nfb2JqZWN0KGRldiwgSTgzMF9XQV9TSVpFKTsKPiAtCQlpZiAo b2JqID09IE5VTEwpIHsKPiArCQlpZiAoSVNfRVJSKG9iaikpIHsKPiAgIAkJCURSTV9FUlJPUigi RmFpbGVkIHRvIGFsbG9jYXRlIGJhdGNoIGJvXG4iKTsKPiAtCQkJcmV0dXJuIC1FTk9NRU07Cj4g KwkJCXJldHVybiBQVFJfRVJSKG9iaik7Cj4gICAJCX0KPgo+ICAgCQlyZXQgPSBpOTE1X2dlbV9v YmpfZ2d0dF9waW4ob2JqLCAwLCAwKTsKPgoKUmVnYXJkcywKClR2cnRrbwpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0 CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=