From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 05/10] drm/i915: Propagating correct error codes to the userspace Date: Tue, 22 Dec 2015 12:02:17 +0000 Message-ID: <56793BC9.9040001@linux.intel.com> 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> <1450783786.10582.6.camel@ankitprasad-desktop> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id E56056E190 for ; Tue, 22 Dec 2015 04:02:23 -0800 (PST) In-Reply-To: <1450783786.10582.6.camel@ankitprasad-desktop> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ankitprasad Sharma Cc: intel-gfx@lists.freedesktop.org, akash.goel@intel.com, shashidhar.hiremath@intel.com List-Id: intel-gfx@lists.freedesktop.org Ck9uIDIyLzEyLzE1IDExOjI5LCBBbmtpdHByYXNhZCBTaGFybWEgd3JvdGU6Cj4gT24gVHVlLCAy MDE1LTEyLTIyIGF0IDExOjIwICswMDAwLCBUdnJ0a28gVXJzdWxpbiB3cm90ZToKPj4gT24gMjIv MTIvMTUgMDY6MjAsIGFua2l0cHJhc2FkLnIuc2hhcm1hQGludGVsLmNvbSB3cm90ZToKPj4+IEZy b206IEFua2l0cHJhc2FkIFNoYXJtYSA8YW5raXRwcmFzYWQuci5zaGFybWFAaW50ZWwuY29tPgo+ Pj4KPj4+IFByb3BhZ2F0aW5nIGNvcnJlY3QgZXJyb3IgY29kZXMgdG8gdXNlcnNwYWNlIGJ5IHVz aW5nIEVSUl9QVFIgYW5kCj4+PiBQVFJfRVJSIG1hY3JvcyBmb3Igc3RvbGVuIG1lbW9yeSBiYXNl ZCBvYmplY3QgYWxsb2NhdGlvbi4gV2UgZ2VuZXJhbGx5Cj4+PiByZXR1cm4gLUVOT01FTSB0byB0 aGUgdXNlciB3aGVuZXZlciB0aGVyZSBpcyBhIGZhaWx1cmUgaW4gb2JqZWN0Cj4+PiBhbGxvY2F0 aW9uLiBUaGlzIHBhdGNoIGhlbHBzIHVzZXIgdG8gaWRlbnRpZnkgdGhlIGNvcnJlY3QgcmVhc29u IGZvciB0aGUKPj4+IGZhaWx1cmUgYW5kIG5vdCBqdXN0IC1FTk9NRU0gZWFjaCB0aW1lLgo+Pj4K Pj4+IHYyOiBNb3ZlZCB0aGUgcGF0Y2ggdXAgaW4gdGhlIHNlcmllcywgYWRkZWQgZXJyb3IgcHJv cGFnYXRpb24gZm9yCj4+PiBpOTE1X2dlbV9hbGxvY19vYmplY3QgdG9vIChDaHJpcykKPj4+Cj4+ PiB2MzogUmVtb3ZlZCBzdG9yaW5nIG9mIGVycm9yIHBvaW50ZXIgaW5zaWRlIHN0cnVjdHMsIENv cnJlY3RlZCBlcnJvcgo+Pj4gcHJvcGFnYXRpb24gaW4gY2FsbGVyIGZ1bmN0aW9ucyAoQ2hyaXMp Cj4+Pgo+Pj4gdjQ6IFJlbW92ZSBhc3NpZ25tZW50cyBpbnNpZGUgdGhlIHByZWRpY2F0ZSAoQ2hy aXMpCj4+Pgo+Pj4gdjU6IFJlbW92ZWQgdW5uZWNlc3NhcnkgaW5pdGlhbGl6YXRpb25zLCB1cGRh dGVkIGtlcm5lbGRvYyBmb3IKPj4+IGk5MTVfZ3VjX2NsaWVudCwgY29ycmVjdGVkIG1pc3NlZCBl cnJvciBwb2ludGVyIGhhbmRsaW5nIChUdnJ0a28pCj4+Pgo+Pj4gdjY6IFVzZSBFUlJfQ0FTVC90 ZW1wb3JhcnkgdmFyaWFibGUgdG8gYXZvaWQgc3RvcmluZyBpbnZhbGlkIHBvaW50ZXIKPj4+IGlu IGEgY29tbW9uIGZpZWxkIChDaHJpcykKPj4+Cj4+PiBTaWduZWQtb2ZmLWJ5OiBBbmtpdHByYXNh ZCBTaGFybWEgPGFua2l0cHJhc2FkLnIuc2hhcm1hQGludGVsLmNvbT4KPj4+IC0tLQo+Pj4gICAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgICAgICAgfCAxNiArKysrKy0t LS0KPj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2JhdGNoX3Bvb2wuYyAgIHwg IDQgKy0tCj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgICAg ICB8ICA0ICstLQo+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVuZGVyX3N0 YXRlLmMgfCAgNyArKy0tCj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9s ZW4uYyAgICAgICB8IDUzICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KPj4+ICAgIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyAgIHwgNTIgKysrKysrKysrKysr KysrKystLS0tLS0tLS0tCj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMgICAgICAgICB8ICAyICstCj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRl di5jICAgICAgICAgICB8ICA2ICsrLS0KPj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2xyYy5jICAgICAgICAgICAgIHwgMTAgKysrLS0tCj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9vdmVybGF5LmMgICAgICAgICB8ICA0ICstLQo+Pj4gICAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcG0uYyAgICAgICAgICAgICAgfCAgNyArKy0tCj4+PiAgICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgICAgICB8IDIxICsrKysrLS0tLS0tCj4+PiAg ICAxMiBmaWxlcyBjaGFuZ2VkLCAxMDYgaW5zZXJ0aW9ucygrKSwgODAgZGVsZXRpb25zKC0pCj4+ Pgo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4+PiBpbmRleCBjZDdmMGFlLi4zMWQ2NmUwIDEw MDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+Pj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+Pj4gQEAgLTQxMCw5ICs0MTAsOSBAQCBp OTE1X2dlbV9jcmVhdGUoc3RydWN0IGRybV9maWxlICpmaWxlLAo+Pj4gICAgCWlmIChmbGFncyAm IEk5MTVfQ1JFQVRFX1BMQUNFTUVOVF9TVE9MRU4pIHsKPj4+ICAgIAkJbXV0ZXhfbG9jaygmZGV2 LT5zdHJ1Y3RfbXV0ZXgpOwo+Pj4gICAgCQlvYmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0 b2xlbihkZXYsIHNpemUpOwo+Pj4gLQkJaWYgKCFvYmopIHsKPj4+ICsJCWlmIChJU19FUlIob2Jq KSkgewo+Pj4gICAgCQkJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4+PiAtCQkJ cmV0dXJuIC1FTk9NRU07Cj4+PiArCQkJcmV0dXJuIFBUUl9FUlIob2JqKTsKPj4+ICAgIAkJfQo+ Pj4KPj4+ICAgIAkJLyogQWx3YXlzIGNsZWFyIGZyZXNoIGJ1ZmZlcnMgYmVmb3JlIGhhbmRpbmcg dG8gdXNlcnNwYWNlICovCj4+PiBAQCAtNDI4LDggKzQyOCw4IEBAIGk5MTVfZ2VtX2NyZWF0ZShz dHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsCj4+PiAgICAJCW9iaiA9IGk5MTVfZ2VtX2FsbG9jX29iamVj dChkZXYsIHNpemUpOwo+Pj4gICAgCX0KPj4+Cj4+PiAtCWlmIChvYmogPT0gTlVMTCkKPj4+IC0J CXJldHVybiAtRU5PTUVNOwo+Pj4gKwlpZiAoSVNfRVJSKG9iaikpCj4+PiArCQlyZXR1cm4gUFRS X0VSUihvYmopOwo+Pj4KPj4+ICAgIAlyZXQgPSBkcm1fZ2VtX2hhbmRsZV9jcmVhdGUoZmlsZSwg Jm9iai0+YmFzZSwgJmhhbmRsZSk7Cj4+PiAgICAJLyogZHJvcCByZWZlcmVuY2UgZnJvbSBhbGxv Y2F0ZSAtIGhhbmRsZSBob2xkcyBpdCBub3cgKi8KPj4+IEBAIC00NDU5LDE0ICs0NDU5LDE2IEBA IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICppOTE1X2dlbV9hbGxvY19vYmplY3Qoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKPj4+ICAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq Owo+Pj4gICAgCXN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nOwo+Pj4gICAgCWdmcF90IG1h c2s7Cj4+PiArCWludCByZXQ7Cj4+Pgo+Pj4gICAgCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9hbGxv YyhkZXYpOwo+Pj4gICAgCWlmIChvYmogPT0gTlVMTCkKPj4+IC0JCXJldHVybiBOVUxMOwo+Pj4g KwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4+Pgo+Pj4gLQlpZiAoZHJtX2dlbV9vYmplY3Rf aW5pdChkZXYsICZvYmotPmJhc2UsIHNpemUpICE9IDApIHsKPj4+ICsJcmV0ID0gZHJtX2dlbV9v YmplY3RfaW5pdChkZXYsICZvYmotPmJhc2UsIHNpemUpOwo+Pj4gKwlpZiAocmV0KSB7Cj4+PiAg ICAJCWk5MTVfZ2VtX29iamVjdF9mcmVlKG9iaik7Cj4+PiAtCQlyZXR1cm4gTlVMTDsKPj4+ICsJ CXJldHVybiBFUlJfUFRSKHJldCk7Cj4+PiAgICAJfQo+Pj4KPj4+ICAgIAltYXNrID0gR0ZQX0hJ R0hVU0VSIHwgX19HRlBfUkVDTEFJTUFCTEU7Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fYmF0Y2hfcG9vbC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fYmF0Y2hfcG9vbC5jCj4+PiBpbmRleCA3YmYyZjNmLi5kNzljYWEyIDEwMDY0NAo+Pj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fYmF0Y2hfcG9vbC5jCj4+PiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9iYXRjaF9wb29sLmMKPj4+IEBAIC0xMzUs OCArMTM1LDggQEAgaTkxNV9nZW1fYmF0Y2hfcG9vbF9nZXQoc3RydWN0IGk5MTVfZ2VtX2JhdGNo X3Bvb2wgKnBvb2wsCj4+PiAgICAJCWludCByZXQ7Cj4+Pgo+Pj4gICAgCQlvYmogPSBpOTE1X2dl bV9hbGxvY19vYmplY3QocG9vbC0+ZGV2LCBzaXplKTsKPj4+IC0JCWlmIChvYmogPT0gTlVMTCkK Pj4+IC0JCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPj4+ICsJCWlmIChJU19FUlIob2JqKSkK Pj4+ICsJCQlyZXR1cm4gb2JqOwo+Pj4KPj4+ICAgIAkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X2dl dF9wYWdlcyhvYmopOwo+Pj4gICAgCQlpZiAocmV0KQo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2NvbnRleHQuYwo+Pj4gaW5kZXggNDM3NjFjNS4uOTc1NDg5NCAxMDA2NDQKPj4+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+Pj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4+PiBAQCAtMTc5LDggKzE3OSw4 IEBAIGk5MTVfZ2VtX2FsbG9jX2NvbnRleHRfb2JqKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHNp emVfdCBzaXplKQo+Pj4gICAgCWludCByZXQ7Cj4+Pgo+Pj4gICAgCW9iaiA9IGk5MTVfZ2VtX2Fs bG9jX29iamVjdChkZXYsIHNpemUpOwo+Pj4gLQlpZiAob2JqID09IE5VTEwpCj4+PiAtCQlyZXR1 cm4gRVJSX1BUUigtRU5PTUVNKTsKPj4+ICsJaWYgKElTX0VSUihvYmopKQo+Pj4gKwkJcmV0dXJu IG9iajsKPj4+Cj4+PiAgICAJLyoKPj4+ICAgIAkgKiBUcnkgdG8gbWFrZSB0aGUgY29udGV4dCB1 dGlsaXplIEwzIGFzIHdlbGwgYXMgTExDLgo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX3JlbmRlcl9zdGF0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fcmVuZGVyX3N0YXRlLmMKPj4+IGluZGV4IDUwMjZhNjIuLjJiZmRkNDkgMTAwNjQ0Cj4+ PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZW5kZXJfc3RhdGUuYwo+Pj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVuZGVyX3N0YXRlLmMKPj4+IEBA IC01OCw4ICs1OCwxMSBAQCBzdGF0aWMgaW50IHJlbmRlcl9zdGF0ZV9pbml0KHN0cnVjdCByZW5k ZXJfc3RhdGUgKnNvLCBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+Pj4gICAgCQlyZXR1cm4gLUVJ TlZBTDsKPj4+Cj4+PiAgICAJc28tPm9iaiA9IGk5MTVfZ2VtX2FsbG9jX29iamVjdChkZXYsIDQw OTYpOwo+Pj4gLQlpZiAoc28tPm9iaiA9PSBOVUxMKQo+Pj4gLQkJcmV0dXJuIC1FTk9NRU07Cj4+ PiArCWlmIChJU19FUlIoc28tPm9iaikpIHsKPj4+ICsJCXJldCA9IFBUUl9FUlIoc28tPm9iaik7 Cj4+PiArCQlzby0+b2JqID0gTlVMTDsKPj4+ICsJCXJldHVybiByZXQ7Cj4+PiArCX0KPj4+Cj4+ PiAgICAJcmV0ID0gaTkxNV9nZW1fb2JqX2dndHRfcGluKHNvLT5vYmosIDQwOTYsIDApOwo+Pj4g ICAgCWlmIChyZXQpCj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fc3RvbGVuLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYwo+Pj4g aW5kZXggMTdkNjc5ZS4uODY5YmEyNSAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX3N0b2xlbi5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9zdG9sZW4uYwo+Pj4gQEAgLTQ5Miw2ICs0OTIsNyBAQCBpOTE1X3BhZ2VzX2NyZWF0ZV9m b3Jfc3RvbGVuKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4+PiAgICAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPj4+ICAgIAlzdHJ1Y3Qgc2df dGFibGUgKnN0Owo+Pj4gICAgCXN0cnVjdCBzY2F0dGVybGlzdCAqc2c7Cj4+PiArCWludCByZXQ7 Cj4+Pgo+Pj4gICAgCURSTV9ERUJVR19EUklWRVIoIm9mZnNldD0weCV4LCBzaXplPSVkXG4iLCBv ZmZzZXQsIHNpemUpOwo+Pj4gICAgCUJVR19PTihvZmZzZXQgPiBkZXZfcHJpdi0+Z3R0LnN0b2xl bl9zaXplIC0gc2l6ZSk7Cj4+PiBAQCAtNTAzLDExICs1MDQsMTIgQEAgaTkxNV9wYWdlc19jcmVh dGVfZm9yX3N0b2xlbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+Pj4KPj4+ICAgIAlzdCA9IGtt YWxsb2Moc2l6ZW9mKCpzdCksIEdGUF9LRVJORUwpOwo+Pj4gICAgCWlmIChzdCA9PSBOVUxMKQo+ Pj4gLQkJcmV0dXJuIE5VTEw7Cj4+PiArCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPj4+Cj4+ PiAtCWlmIChzZ19hbGxvY190YWJsZShzdCwgMSwgR0ZQX0tFUk5FTCkpIHsKPj4+ICsJcmV0ID0g c2dfYWxsb2NfdGFibGUoc3QsIDEsIEdGUF9LRVJORUwpOwo+Pj4gKwlpZiAocmV0KSB7Cj4+PiAg ICAJCWtmcmVlKHN0KTsKPj4+IC0JCXJldHVybiBOVUxMOwo+Pj4gKwkJcmV0dXJuIEVSUl9QVFIo cmV0KTsKPj4+ICAgIAl9Cj4+Pgo+Pj4gICAgCXNnID0gc3QtPnNnbDsKPj4+IEBAIC01NTYsMTgg KzU1OCwyMyBAQCBfaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKPj4+ICAgIAkJCSAgICAgICBzdHJ1Y3QgZHJtX21tX25vZGUgKnN0b2xlbikKPj4+ ICAgIHsKPj4+ICAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwo+Pj4gKwlzdHJ1 Y3Qgc2dfdGFibGUgKnBhZ2VzOwo+Pj4KPj4+ICAgIAlvYmogPSBpOTE1X2dlbV9vYmplY3RfYWxs b2MoZGV2KTsKPj4+ICAgIAlpZiAob2JqID09IE5VTEwpCj4+PiAtCQlyZXR1cm4gTlVMTDsKPj4+ ICsJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+Pj4KPj4+ICAgIAlkcm1fZ2VtX3ByaXZhdGVf b2JqZWN0X2luaXQoZGV2LCAmb2JqLT5iYXNlLCBzdG9sZW4tPnNpemUpOwo+Pj4gICAgCWk5MTVf Z2VtX29iamVjdF9pbml0KG9iaiwgJmk5MTVfZ2VtX29iamVjdF9zdG9sZW5fb3BzKTsKPj4+Cj4+ PiAtCW9iai0+cGFnZXMgPSBpOTE1X3BhZ2VzX2NyZWF0ZV9mb3Jfc3RvbGVuKGRldiwKPj4+IC0J CQkJCQkgIHN0b2xlbi0+c3RhcnQsIHN0b2xlbi0+c2l6ZSk7Cj4+PiAtCWlmIChvYmotPnBhZ2Vz ID09IE5VTEwpCj4+PiAtCQlnb3RvIGNsZWFudXA7Cj4+PiArCXBhZ2VzID0gaTkxNV9wYWdlc19j cmVhdGVfZm9yX3N0b2xlbihkZXYsCj4+PiArCQkJCQkgICAgIHN0b2xlbi0+c3RhcnQsIHN0b2xl bi0+c2l6ZSk7Cj4+PiArCWlmIChJU19FUlIocGFnZXMpKSB7Cj4+PiArCQlpOTE1X2dlbV9vYmpl Y3RfZnJlZShvYmopOwo+Pj4gKwkJcmV0dXJuIEVSUl9DQVNUKHBhZ2VzKTsKPj4+ICsJfQo+Pj4g Kwo+Pj4gKwlvYmotPnBhZ2VzID0gcGFnZXM7Cj4+Pgo+Pj4gICAgCW9iai0+Z2V0X3BhZ2Uuc2cg PSBvYmotPnBhZ2VzLT5zZ2w7Cj4+PiAgICAJb2JqLT5nZXRfcGFnZS5sYXN0ID0gMDsKPj4+IEBA IC01NzksMTAgKzU4Niw2IEBAIF9pOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbihzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAo+Pj4gICAgCW9iai0+Y2FjaGVfbGV2ZWwgPSBIQVNfTExDKGRldikg PyBJOTE1X0NBQ0hFX0xMQyA6IEk5MTVfQ0FDSEVfTk9ORTsKPj4+Cj4+PiAgICAJcmV0dXJuIG9i ajsKPj4+IC0KPj4+IC1jbGVhbnVwOgo+Pj4gLQlpOTE1X2dlbV9vYmplY3RfZnJlZShvYmopOwo+ Pj4gLQlyZXR1cm4gTlVMTDsKPj4+ICAgIH0KPj4+Cj4+PiAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqCj4+PiBAQCAtNTk0LDI5ICs1OTcsMjkgQEAgaTkxNV9nZW1fb2JqZWN0X2NyZWF0 ZV9zdG9sZW4oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTY0IHNpemUpCj4+PiAgICAJaW50IHJl dDsKPj4+Cj4+PiAgICAJaWYgKCFkcm1fbW1faW5pdGlhbGl6ZWQoJmRldl9wcml2LT5tbS5zdG9s ZW4pKQo+Pj4gLQkJcmV0dXJuIE5VTEw7Cj4+PiArCQlyZXR1cm4gRVJSX1BUUigtRU5PREVWKTsK Pj4+Cj4+PiAgICAJRFJNX0RFQlVHX0tNUygiY3JlYXRpbmcgc3RvbGVuIG9iamVjdDogc2l6ZT0l bGx4XG4iLCBzaXplKTsKPj4+ICAgIAlpZiAoc2l6ZSA9PSAwKQo+Pj4gLQkJcmV0dXJuIE5VTEw7 Cj4+PiArCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKPj4+Cj4+PiAgICAJc3RvbGVuID0ga3ph bGxvYyhzaXplb2YoKnN0b2xlbiksIEdGUF9LRVJORUwpOwo+Pj4gICAgCWlmICghc3RvbGVuKQo+ Pj4gLQkJcmV0dXJuIE5VTEw7Cj4+PiArCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPj4+Cj4+ PiAgICAJcmV0ID0gaTkxNV9nZW1fc3RvbGVuX2luc2VydF9ub2RlKGRldl9wcml2LCBzdG9sZW4s IHNpemUsIDQwOTYpOwo+Pj4gICAgCWlmIChyZXQpIHsKPj4+ICAgIAkJa2ZyZWUoc3RvbGVuKTsK Pj4+IC0JCXJldHVybiBOVUxMOwo+Pj4gKwkJcmV0dXJuIEVSUl9QVFIocmV0KTsKPj4+ICAgIAl9 Cj4+Pgo+Pj4gICAgCW9iaiA9IF9pOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbihkZXYsIHN0 b2xlbik7Cj4+PiAtCWlmIChvYmopCj4+PiArCWlmICghSVNfRVJSKG9iaikpCj4+PiAgICAJCXJl dHVybiBvYmo7Cj4+Pgo+Pj4gICAgCWk5MTVfZ2VtX3N0b2xlbl9yZW1vdmVfbm9kZShkZXZfcHJp diwgc3RvbGVuKTsKPj4+ICAgIAlrZnJlZShzdG9sZW4pOwo+Pj4gLQlyZXR1cm4gTlVMTDsKPj4+ ICsJcmV0dXJuIG9iajsKPj4+ICAgIH0KPj4+Cj4+PiAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqCj4+PiBAQCAtNjMzLDcgKzYzNiw3IEBAIGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3Rv bGVuX2Zvcl9wcmVhbGxvY2F0ZWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPj4+ICAgIAlpbnQg cmV0Owo+Pj4KPj4+ICAgIAlpZiAoIWRybV9tbV9pbml0aWFsaXplZCgmZGV2X3ByaXYtPm1tLnN0 b2xlbikpCj4+PiAtCQlyZXR1cm4gTlVMTDsKPj4+ICsJCXJldHVybiBFUlJfUFRSKC1FTk9ERVYp Owo+Pj4KPj4+ICAgIAlEUk1fREVCVUdfS01TKCJjcmVhdGluZyBwcmVhbGxvY2F0ZWQgc3RvbGVu IG9iamVjdDogc3RvbGVuX29mZnNldD0leCwgZ3R0X29mZnNldD0leCwgc2l6ZT0leFxuIiwKPj4+ ICAgIAkJCXN0b2xlbl9vZmZzZXQsIGd0dF9vZmZzZXQsIHNpemUpOwo+Pj4gQEAgLTY0MSwxMSAr NjQ0LDExIEBAIGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVuX2Zvcl9wcmVhbGxvY2F0ZWQo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKPj4+ICAgIAkvKiBLSVNTIGFuZCBleHBlY3QgZXZlcnl0 aGluZyB0byBiZSBwYWdlLWFsaWduZWQgKi8KPj4+ICAgIAlpZiAoV0FSTl9PTihzaXplID09IDAp IHx8IFdBUk5fT04oc2l6ZSAmIDQwOTUpIHx8Cj4+PiAgICAJICAgIFdBUk5fT04oc3RvbGVuX29m ZnNldCAmIDQwOTUpKQo+Pj4gLQkJcmV0dXJuIE5VTEw7Cj4+PiArCQlyZXR1cm4gRVJSX1BUUigt RUlOVkFMKTsKPj4+Cj4+PiAgICAJc3RvbGVuID0ga3phbGxvYyhzaXplb2YoKnN0b2xlbiksIEdG UF9LRVJORUwpOwo+Pj4gICAgCWlmICghc3RvbGVuKQo+Pj4gLQkJcmV0dXJuIE5VTEw7Cj4+PiAr CQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPj4+Cj4+PiAgICAJc3RvbGVuLT5zdGFydCA9IHN0 b2xlbl9vZmZzZXQ7Cj4+PiAgICAJc3RvbGVuLT5zaXplID0gc2l6ZTsKPj4+IEBAIC02NTUsMTUg KzY1OCwxNSBAQCBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbl9mb3JfcHJlYWxsb2NhdGVk KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4+PiAgICAJaWYgKHJldCkgewo+Pj4gICAgCQlEUk1f REVCVUdfS01TKCJmYWlsZWQgdG8gYWxsb2NhdGUgc3RvbGVuIHNwYWNlXG4iKTsKPj4+ICAgIAkJ a2ZyZWUoc3RvbGVuKTsKPj4+IC0JCXJldHVybiBOVUxMOwo+Pj4gKwkJcmV0dXJuIEVSUl9QVFIo cmV0KTsKPj4+ICAgIAl9Cj4+Pgo+Pj4gICAgCW9iaiA9IF9pOTE1X2dlbV9vYmplY3RfY3JlYXRl X3N0b2xlbihkZXYsIHN0b2xlbik7Cj4+PiAtCWlmIChvYmogPT0gTlVMTCkgewo+Pj4gKwlpZiAo SVNfRVJSKG9iaikpIHsKPj4+ICAgIAkJRFJNX0RFQlVHX0tNUygiZmFpbGVkIHRvIGFsbG9jYXRl IHN0b2xlbiBvYmplY3RcbiIpOwo+Pj4gICAgCQlpOTE1X2dlbV9zdG9sZW5fcmVtb3ZlX25vZGUo ZGV2X3ByaXYsIHN0b2xlbik7Cj4+PiAgICAJCWtmcmVlKHN0b2xlbik7Cj4+PiAtCQlyZXR1cm4g TlVMTDsKPj4+ICsJCXJldHVybiBvYmo7Cj4+PiAgICAJfQo+Pj4KPj4+ICAgIAkvKiBTb21lIG9i amVjdHMganVzdCBuZWVkIHBoeXNpY2FsIG1lbSBmcm9tIHN0b2xlbiBzcGFjZSAqLwo+Pj4gQEAg LTcwMSw1ICs3MDQsNSBAQCBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbl9mb3JfcHJlYWxs b2NhdGVkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4+Pgo+Pj4gICAgZXJyOgo+Pj4gICAgCWRy bV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKCZvYmotPmJhc2UpOwo+Pj4gLQlyZXR1cm4gTlVMTDsK Pj4+ICsJcmV0dXJuIEVSUl9QVFIocmV0KTsKPj4+ICAgIH0KPj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKPj4+IGluZGV4IDBkMjM3ODViLi5hYzA0MmM2IDEw MDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5j Cj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKPj4+ IEBAIC02MjksMjcgKzYyOSwzMCBAQCBpbnQgaTkxNV9ndWNfc3VibWl0KHN0cnVjdCBpOTE1X2d1 Y19jbGllbnQgKmNsaWVudCwKPj4+ICAgICAqIG9iamVjdCBuZWVkcyB0byBiZSBwaW5uZWQgbGlm ZXRpbWUuIEFsc28gd2UgbXVzdCBwaW4gaXQgdG8gZ3R0IHNwYWNlIG90aGVyCj4+PiAgICAgKiB0 aGFuIFswLCBHVUNfV09QQ01fVE9QKSBiZWNhdXNlIHRoaXMgcmFuZ2UgaXMgcmVzZXJ2ZWQgaW5z aWRlIEd1Qy4KPj4+ICAgICAqCj4+PiAtICogUmV0dXJuOglBIGRybV9pOTE1X2dlbV9vYmplY3Qg aWYgc3VjY2Vzc2Z1bCwgb3RoZXJ3aXNlIE5VTEwuCj4+PiArICogUmV0dXJuOglBIGRybV9pOTE1 X2dlbV9vYmplY3QgaWYgc3VjY2Vzc2Z1bCwgb3RoZXJ3aXNlIGVycm9yIHBvaW50ZXIuCj4+PiAg ICAgKi8KPj4+ICAgIHN0YXRpYyBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqZ2VtX2FsbG9j YXRlX2d1Y19vYmooc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPj4+ICAgIAkJCQkJCQl1MzIgc2l6 ZSkKPj4+ICAgIHsKPj4+ICAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBk ZXYtPmRldl9wcml2YXRlOwo+Pj4gICAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7 Cj4+PiArCWludCByZXQ7Cj4+Pgo+Pj4gICAgCW9iaiA9IGk5MTVfZ2VtX2FsbG9jX29iamVjdChk ZXYsIHNpemUpOwo+Pj4gLQlpZiAoIW9iaikKPj4+IC0JCXJldHVybiBOVUxMOwo+Pj4gKwlpZiAo SVNfRVJSKG9iaikpCj4+PiArCQlyZXR1cm4gb2JqOwo+Pj4KPj4+IC0JaWYgKGk5MTVfZ2VtX29i amVjdF9nZXRfcGFnZXMob2JqKSkgewo+Pj4gKwlyZXQgPSBpOTE1X2dlbV9vYmplY3RfZ2V0X3Bh Z2VzKG9iaik7Cj4+PiArCWlmIChyZXQpIHsKPj4+ICAgIAkJZHJtX2dlbV9vYmplY3RfdW5yZWZl cmVuY2UoJm9iai0+YmFzZSk7Cj4+PiAtCQlyZXR1cm4gTlVMTDsKPj4+ICsJCXJldHVybiBFUlJf UFRSKHJldCk7Cj4+PiAgICAJfQo+Pj4KPj4+IC0JaWYgKGk5MTVfZ2VtX29ial9nZ3R0X3Bpbihv YmosIFBBR0VfU0laRSwKPj4+IC0JCQlQSU5fT0ZGU0VUX0JJQVMgfCBHVUNfV09QQ01fVE9QKSkg ewo+Pj4gKwlyZXQgPSBpOTE1X2dlbV9vYmpfZ2d0dF9waW4ob2JqLCBQQUdFX1NJWkUsCj4+PiAr CQkJCSAgICBQSU5fT0ZGU0VUX0JJQVMgfCBHVUNfV09QQ01fVE9QKTsKPj4+ICsJaWYgKHJldCkg ewo+Pj4gICAgCQlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgmb2JqLT5iYXNlKTsKPj4+IC0J CXJldHVybiBOVUxMOwo+Pj4gKwkJcmV0dXJuIEVSUl9QVFIocmV0KTsKPj4+ICAgIAl9Cj4+Pgo+ Pj4gICAgCS8qIEludmFsaWRhdGUgR3VDIFRMQiB0byBsZXQgR3VDIHRha2UgdGhlIGxhdGVzdCB1 cGRhdGVzIHRvIEdUVC4gKi8KPj4+IEBAIC03MTcsNyArNzIwLDcgQEAgc3RhdGljIHZvaWQgZ3Vj X2NsaWVudF9mcmVlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4+PiAgICAgKiBAY3R4Ogl0aGUg Y29udGV4dCB0aGF0IG93bnMgdGhlIGNsaWVudCAod2UgdXNlIHRoZSBkZWZhdWx0IHJlbmRlcgo+ Pj4gICAgICogCQljb250ZXh0KQo+Pj4gICAgICoKPj4+IC0gKiBSZXR1cm46CUFuIGk5MTVfZ3Vj X2NsaWVudCBvYmplY3QgaWYgc3VjY2Vzcy4KPj4+ICsgKiBSZXR1cm46CUFuIGk5MTVfZ3VjX2Ns aWVudCBvYmplY3QgaWYgc3VjY2VzcywgZXJyb3IgcG9pbnRlciBvbiBmYWlsdXJlLgo+Pj4gICAg ICovCj4+PiAgICBzdGF0aWMgc3RydWN0IGk5MTVfZ3VjX2NsaWVudCAqZ3VjX2NsaWVudF9hbGxv YyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+Pj4gICAgCQkJCQkJdWludDMyX3QgcHJpb3JpdHks Cj4+PiBAQCAtNzI3LDEwICs3MzAsMTEgQEAgc3RhdGljIHN0cnVjdCBpOTE1X2d1Y19jbGllbnQg Kmd1Y19jbGllbnRfYWxsb2Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPj4+ICAgIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+Pj4gICAgCXN0 cnVjdCBpbnRlbF9ndWMgKmd1YyA9ICZkZXZfcHJpdi0+Z3VjOwo+Pj4gICAgCXN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4+PiArCWludCByZXQ7Cj4+Pgo+Pj4gICAgCWNsaWVudCA9 IGt6YWxsb2Moc2l6ZW9mKCpjbGllbnQpLCBHRlBfS0VSTkVMKTsKPj4+ICAgIAlpZiAoIWNsaWVu dCkKPj4+IC0JCXJldHVybiBOVUxMOwo+Pj4gKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4+ Pgo+Pj4gICAgCWNsaWVudC0+ZG9vcmJlbGxfaWQgPSBHVUNfSU5WQUxJRF9ET09SQkVMTF9JRDsK Pj4+ICAgIAljbGllbnQtPnByaW9yaXR5ID0gcHJpb3JpdHk7Cj4+PiBAQCAtNzQxLDEzICs3NDUs MTYgQEAgc3RhdGljIHN0cnVjdCBpOTE1X2d1Y19jbGllbnQgKmd1Y19jbGllbnRfYWxsb2Moc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKPj4+ICAgIAkJCUdVQ19NQVhfR1BVX0NPTlRFWFRTLCBHRlBf S0VSTkVMKTsKPj4+ICAgIAlpZiAoY2xpZW50LT5jdHhfaW5kZXggPj0gR1VDX01BWF9HUFVfQ09O VEVYVFMpIHsKPj4+ICAgIAkJY2xpZW50LT5jdHhfaW5kZXggPSBHVUNfSU5WQUxJRF9DVFhfSUQ7 Cj4+PiArCQlyZXQgPSAtRUlOVkFMOwo+Pj4gICAgCQlnb3RvIGVycjsKPj4+ICAgIAl9Cj4+Pgo+ Pj4gICAgCS8qIFRoZSBmaXJzdCBwYWdlIGlzIGRvb3JiZWxsL3Byb2NfZGVzYy4gVHdvIGZvbGxv d2VkIHBhZ2VzIGFyZSB3cS4gKi8KPj4+ICAgIAlvYmogPSBnZW1fYWxsb2NhdGVfZ3VjX29iaihk ZXYsIEdVQ19EQl9TSVpFICsgR1VDX1dRX1NJWkUpOwo+Pj4gLQlpZiAoIW9iaikKPj4+ICsJaWYg KElTX0VSUihvYmopKSB7Cj4+PiArCQlyZXQgPSBQVFJfRVJSKG9iaik7Cj4+PiAgICAJCWdvdG8g ZXJyOwo+Pj4gKwl9Cj4+Pgo+Pj4gICAgCWNsaWVudC0+Y2xpZW50X29iaiA9IG9iajsKPj4+ICAg IAljbGllbnQtPndxX29mZnNldCA9IEdVQ19EQl9TSVpFOwo+Pj4gQEAgLTc2Niw5ICs3NzMsMTEg QEAgc3RhdGljIHN0cnVjdCBpOTE1X2d1Y19jbGllbnQgKmd1Y19jbGllbnRfYWxsb2Moc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKPj4+ICAgIAkJY2xpZW50LT5wcm9jX2Rlc2Nfb2Zmc2V0ID0gKEdV Q19EQl9TSVpFIC8gMik7Cj4+Pgo+Pj4gICAgCWNsaWVudC0+ZG9vcmJlbGxfaWQgPSBhc3NpZ25f ZG9vcmJlbGwoZ3VjLCBjbGllbnQtPnByaW9yaXR5KTsKPj4+IC0JaWYgKGNsaWVudC0+ZG9vcmJl bGxfaWQgPT0gR1VDX0lOVkFMSURfRE9PUkJFTExfSUQpCj4+PiArCWlmIChjbGllbnQtPmRvb3Ji ZWxsX2lkID09IEdVQ19JTlZBTElEX0RPT1JCRUxMX0lEKSB7Cj4+PiAgICAJCS8qIFhYWDogZXZp Y3QgYSBkb29yYmVsbCBpbnN0ZWFkICovCj4+PiArCQlyZXQgPSAtRUlOVkFMOwo+Pj4gICAgCQln b3RvIGVycjsKPj4+ICsJfQo+Pj4KPj4+ICAgIAlndWNfaW5pdF9wcm9jX2Rlc2MoZ3VjLCBjbGll bnQpOwo+Pj4gICAgCWd1Y19pbml0X2N0eF9kZXNjKGd1YywgY2xpZW50KTsKPj4+IEBAIC03NzYs NyArNzg1LDggQEAgc3RhdGljIHN0cnVjdCBpOTE1X2d1Y19jbGllbnQgKmd1Y19jbGllbnRfYWxs b2Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPj4+Cj4+PiAgICAJLyogWFhYOiBBbnkgY2FjaGUg Zmx1c2hlcyBuZWVkZWQ/IEdlbmVyYWwgZG9tYWluIG1nbXQgY2FsbHM/ICovCj4+Pgo+Pj4gLQlp ZiAoaG9zdDJndWNfYWxsb2NhdGVfZG9vcmJlbGwoZ3VjLCBjbGllbnQpKQo+Pj4gKwlyZXQgPSBo b3N0Mmd1Y19hbGxvY2F0ZV9kb29yYmVsbChndWMsIGNsaWVudCk7Cj4+PiArCWlmIChyZXQpCj4+ PiAgICAJCWdvdG8gZXJyOwo+Pj4KPj4+ICAgIAlEUk1fREVCVUdfRFJJVkVSKCJuZXcgcHJpb3Jp dHkgJXUgY2xpZW50ICVwOiBjdHhfaW5kZXggJXUgZGJfaWQgJXVcbiIsCj4+PiBAQCAtNzg4LDcg Kzc5OCw3IEBAIGVycjoKPj4+ICAgIAlEUk1fRVJST1IoIkZBSUxFRCB0byBjcmVhdGUgcHJpb3Jp dHkgJXUgR3VDIGNsaWVudCFcbiIsIHByaW9yaXR5KTsKPj4+Cj4+PiAgICAJZ3VjX2NsaWVudF9m cmVlKGRldiwgY2xpZW50KTsKPj4+IC0JcmV0dXJuIE5VTEw7Cj4+PiArCXJldHVybiBFUlJfUFRS KHJldCk7Cj4+PiAgICB9Cj4+Pgo+Pj4gICAgc3RhdGljIHZvaWQgZ3VjX2NyZWF0ZV9sb2coc3Ry dWN0IGludGVsX2d1YyAqZ3VjKQo+Pj4gQEAgLTgxMyw3ICs4MjMsNyBAQCBzdGF0aWMgdm9pZCBn dWNfY3JlYXRlX2xvZyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4+PiAgICAJb2JqID0gZ3VjLT5s b2dfb2JqOwo+Pj4gICAgCWlmICghb2JqKSB7Cj4+PiAgICAJCW9iaiA9IGdlbV9hbGxvY2F0ZV9n dWNfb2JqKGRldl9wcml2LT5kZXYsIHNpemUpOwo+Pj4gLQkJaWYgKCFvYmopIHsKPj4+ICsJCWlm IChJU19FUlIob2JqKSkgewo+Pj4gICAgCQkJLyogbG9nZ2luZyB3aWxsIGJlIG9mZiAqLwo+Pj4g ICAgCQkJaTkxNS5ndWNfbG9nX2xldmVsID0gLTE7Cj4+PiAgICAJCQlyZXR1cm47Cj4+PiBAQCAt ODQzLDYgKzg1Myw3IEBAIGludCBpOTE1X2d1Y19zdWJtaXNzaW9uX2luaXQoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKPj4+ICAgIAljb25zdCBzaXplX3QgcG9vbHNpemUgPSBHVUNfTUFYX0dQVV9D T05URVhUUyAqIGN0eHNpemU7Cj4+PiAgICAJY29uc3Qgc2l6ZV90IGdlbXNpemUgPSByb3VuZF91 cChwb29sc2l6ZSwgUEFHRV9TSVpFKTsKPj4+ICAgIAlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSAm ZGV2X3ByaXYtPmd1YzsKPj4+ICsJaW50IHJldDsKPj4+Cj4+PiAgICAJaWYgKCFpOTE1LmVuYWJs ZV9ndWNfc3VibWlzc2lvbikKPj4+ICAgIAkJcmV0dXJuIDA7IC8qIG5vdCBlbmFibGVkICAqLwo+ Pj4gQEAgLTg1MSw4ICs4NjIsMTEgQEAgaW50IGk5MTVfZ3VjX3N1Ym1pc3Npb25faW5pdChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQo+Pj4gICAgCQlyZXR1cm4gMDsgLyogYWxyZWFkeSBhbGxvY2F0 ZWQgKi8KPj4+Cj4+PiAgICAJZ3VjLT5jdHhfcG9vbF9vYmogPSBnZW1fYWxsb2NhdGVfZ3VjX29i aihkZXZfcHJpdi0+ZGV2LCBnZW1zaXplKTsKPj4+IC0JaWYgKCFndWMtPmN0eF9wb29sX29iaikK Pj4+IC0JCXJldHVybiAtRU5PTUVNOwo+Pj4gKwlpZiAoSVNfRVJSKGd1Yy0+Y3R4X3Bvb2xfb2Jq KSkgewo+Pj4gKwkJcmV0ID0gUFRSX0VSUihndWMtPmN0eF9wb29sX29iaik7Cj4+PiArCQlndWMt PmN0eF9wb29sX29iaiA9IE5VTEw7Cj4+PiArCQlyZXR1cm4gcmV0Owo+Pj4gKwl9Cj4+Pgo+Pj4g ICAgCWlkYV9pbml0KCZndWMtPmN0eF9pZHMpOwo+Pj4KPj4+IEBAIC04NzAsOSArODg0LDkgQEAg aW50IGk5MTVfZ3VjX3N1Ym1pc3Npb25fZW5hYmxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4+ Pgo+Pj4gICAgCS8qIGNsaWVudCBmb3IgZXhlY2J1ZiBzdWJtaXNzaW9uICovCj4+PiAgICAJY2xp ZW50ID0gZ3VjX2NsaWVudF9hbGxvYyhkZXYsIEdVQ19DVFhfUFJJT1JJVFlfS01EX05PUk1BTCwg Y3R4KTsKPj4+IC0JaWYgKCFjbGllbnQpIHsKPj4+ICsJaWYgKElTX0VSUihjbGllbnQpKSB7Cj4+ PiAgICAJCURSTV9FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBleGVjYnVmIGd1Y19jbGllbnRcbiIp Owo+Pj4gLQkJcmV0dXJuIC1FTk9NRU07Cj4+PiArCQlyZXR1cm4gUFRSX0VSUihjbGllbnQpOwo+ Pj4gICAgCX0KPj4+Cj4+PiAgICAJZ3VjLT5leGVjYnVmX2NsaWVudCA9IGNsaWVudDsKPj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPj4+IGluZGV4IGRkMGU5NjYuLjAwNmQ0M2Eg MTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPj4+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+Pj4gQEAgLTI1NDMs NyArMjU0Myw3IEBAIGludGVsX2FsbG9jX2luaXRpYWxfcGxhbmVfb2JqKHN0cnVjdCBpbnRlbF9j cnRjICpjcnRjLAo+Pj4gICAgCQkJCQkJCSAgICAgYmFzZV9hbGlnbmVkLAo+Pj4gICAgCQkJCQkJ CSAgICAgYmFzZV9hbGlnbmVkLAo+Pj4gICAgCQkJCQkJCSAgICAgc2l6ZV9hbGlnbmVkKTsKPj4+ IC0JaWYgKCFvYmopCj4+PiArCWlmIChJU19FUlIob2JqKSkKPj4+ICAgIAkJcmV0dXJuIGZhbHNl Owo+Pj4KPj4+ICAgIAlvYmotPnRpbGluZ19tb2RlID0gcGxhbmVfY29uZmlnLT50aWxpbmc7Cj4+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMKPj4+IGluZGV4IDdjY2RlNTguLmIyZjEzNGEg MTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRldi5jCj4+PiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRldi5jCj4+PiBAQCAtMTQ4LDExICsx NDgsMTEgQEAgc3RhdGljIGludCBpbnRlbGZiX2FsbG9jKHN0cnVjdCBkcm1fZmJfaGVscGVyICpo ZWxwZXIsCj4+PiAgICAJICogZmVhdHVyZXMuICovCj4+PiAgICAJaWYgKHNpemUgKiAyIDwgZGV2 X3ByaXYtPmd0dC5zdG9sZW5fdXNhYmxlX3NpemUpCj4+PiAgICAJCW9iaiA9IGk5MTVfZ2VtX29i amVjdF9jcmVhdGVfc3RvbGVuKGRldiwgc2l6ZSk7Cj4+PiAtCWlmIChvYmogPT0gTlVMTCkKPj4+ ICsJaWYgKElTX0VSUl9PUl9OVUxMKG9iaikpCj4+PiAgICAJCW9iaiA9IGk5MTVfZ2VtX2FsbG9j X29iamVjdChkZXYsIHNpemUpOwo+Pj4gLQlpZiAoIW9iaikgewo+Pj4gKwlpZiAoSVNfRVJSKG9i aikpIHsKPj4+ICAgIAkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gYWxsb2NhdGUgZnJhbWVidWZmZXJc biIpOwo+Pj4gLQkJcmV0ID0gLUVOT01FTTsKPj4+ICsJCXJldCA9IFBUUl9FUlIob2JqKTsKPj4+ ICAgIAkJZ290byBvdXQ7Cj4+PiAgICAJfQo+Pj4KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5j Cj4+PiBpbmRleCA0ZWJhZmFiLi41Y2E0YzA2IDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfbHJjLmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2xyYy5jCj4+PiBAQCAtMTM3MSw5ICsxMzcxLDExIEBAIHN0YXRpYyBpbnQgbHJjX3NldHVwX3dh X2N0eF9vYmooc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywgdTMyIHNpemUpCj4+PiAgICAJ aW50IHJldDsKPj4+Cj4+PiAgICAJcmluZy0+d2FfY3R4Lm9iaiA9IGk5MTVfZ2VtX2FsbG9jX29i amVjdChyaW5nLT5kZXYsIFBBR0VfQUxJR04oc2l6ZSkpOwo+Pj4gLQlpZiAoIXJpbmctPndhX2N0 eC5vYmopIHsKPj4+ICsJaWYgKElTX0VSUihyaW5nLT53YV9jdHgub2JqKSkgewo+Pj4gICAgCQlE Uk1fREVCVUdfRFJJVkVSKCJhbGxvYyBMUkMgV0EgY3R4IGJhY2tpbmcgb2JqIGZhaWxlZC5cbiIp Owo+Pj4gLQkJcmV0dXJuIC1FTk9NRU07Cj4+PiArCQlyZXQgPSBQVFJfRVJSKHJpbmctPndhX2N0 eC5vYmopOwo+Pj4gKwkJcmluZy0+d2FfY3R4Lm9iaiA9IE5VTEw7Cj4+PiArCQlyZXR1cm4gcmV0 Owo+Pj4gICAgCX0KPj4+Cj4+PiAgICAJcmV0ID0gaTkxNV9nZW1fb2JqX2dndHRfcGluKHJpbmct PndhX2N0eC5vYmosIFBBR0VfU0laRSwgMCk7Cj4+PiBAQCAtMjQ1Niw5ICsyNDU4LDkgQEAgaW50 IGludGVsX2xyX2NvbnRleHRfZGVmZXJyZWRfYWxsb2Moc3RydWN0IGludGVsX2NvbnRleHQgKmN0 eCwKPj4+ICAgIAljb250ZXh0X3NpemUgKz0gUEFHRV9TSVpFICogTFJDX1BQSFdTUF9QTjsKPj4+ Cj4+PiAgICAJY3R4X29iaiA9IGk5MTVfZ2VtX2FsbG9jX29iamVjdChkZXYsIGNvbnRleHRfc2l6 ZSk7Cj4+PiAtCWlmICghY3R4X29iaikgewo+Pj4gKwlpZiAoSVNfRVJSKGN0eF9vYmopKSB7Cj4+ PiAgICAJCURSTV9ERUJVR19EUklWRVIoIkFsbG9jIExSQyBiYWNraW5nIG9iaiBmYWlsZWQuXG4i KTsKPj4+IC0JCXJldHVybiAtRU5PTUVNOwo+Pj4gKwkJcmV0dXJuIFBUUl9FUlIoY3R4X29iaik7 Cj4+PiAgICAJfQo+Pj4KPj4+ICAgIAlyaW5nYnVmID0gaW50ZWxfZW5naW5lX2NyZWF0ZV9yaW5n YnVmZmVyKHJpbmcsIDQgKiBQQUdFX1NJWkUpOwo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX292ZXJsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX292 ZXJsYXkuYwo+Pj4gaW5kZXggNzZmMTk4MC4uM2E2NTg1OCAxMDA2NDQKPj4+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX292ZXJsYXkuYwo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfb3ZlcmxheS5jCj4+PiBAQCAtMTM5Miw5ICsxMzkyLDkgQEAgdm9pZCBpbnRl bF9zZXR1cF9vdmVybGF5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4+PiAgICAJcmVnX2JvID0g TlVMTDsKPj4+ICAgIAlpZiAoIU9WRVJMQVlfTkVFRFNfUEhZU0lDQUwoZGV2KSkKPj4+ICAgIAkJ cmVnX2JvID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oZGV2LCBQQUdFX1NJWkUpOwo+ Pj4gLQlpZiAocmVnX2JvID09IE5VTEwpCj4+PiArCWlmIChJU19FUlJfT1JfTlVMTChyZWdfYm8p KQo+Pj4gICAgCQlyZWdfYm8gPSBpOTE1X2dlbV9hbGxvY19vYmplY3QoZGV2LCBQQUdFX1NJWkUp Owo+Pj4gLQlpZiAocmVnX2JvID09IE5VTEwpCj4+PiArCWlmIChJU19FUlIocmVnX2JvKSkKPj4+ ICAgIAkJZ290byBvdXRfZnJlZTsKPj4+ICAgIAlvdmVybGF5LT5yZWdfYm8gPSByZWdfYm87Cj4+ Pgo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4+PiBpbmRleCA5OTY4YzY2Li4wYWZiODE5IDEw MDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+Pj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+Pj4gQEAgLTUxNzQsMTAgKzUxNzQsMTEg QEAgc3RhdGljIHZvaWQgdmFsbGV5dmlld19zZXR1cF9wY3R4KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpCj4+PiAgICAJCQkJCQkJCSAgICAgIHBjYnJfb2Zmc2V0LAo+Pj4gICAgCQkJCQkJCQkgICAg ICBJOTE1X0dUVF9PRkZTRVRfTk9ORSwKPj4+ICAgIAkJCQkJCQkJICAgICAgcGN0eF9zaXplKTsK Pj4+IC0JCWdvdG8gb3V0Owo+Pj4gKwkJaWYgKCFJU19FUlIocGN0eCkpCj4+PiArCQkJZ290byBv dXQ7Cj4+Cj4+IFRoaXMgaXMgYSBjaGFuZ2UgaW4gYmVoYXZpb3VyLCBpcyBpdCBPSyBpbiB0aGlz IHBhdGNoIG9yIG5lZWRzIHRvIGJlCj4+IHNwbGl0IG91dD8KPj4KPj4gUHJldmlvdXNseSBpZiBp OTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbl9mb3JfcHJlYWxsb2NhdGVkIGZhaWxlZCBpdAo+ PiB3b3VsZCBsZWF2ZSBpdCBhdCB0aGF0LiBOb3cgaXQgdHJpZXMgYSBmYWxsYmFjayBwYXRoLgo+ IEkgdGhpbmsgSSBzaG91bGQgZmFsbGJhY2sgdG8gc29tZXRoaW5nIGxpa2UgdGhpcywKPgo+IGlm IChJU19FUlIocGN0eCkpCj4gCXBjdHggPSBOVUxMOwo+Cj4gZ290byBvdXQ7Cj4KPgo+IEFzIGtl ZXBpbmcgcGN0eCBhcyBhbiBFUlJPUiBQT0lOVEVSIG1pZ2h0IGFmZmVjdCBvdGhlciBOVUxMIGNo ZWNrcyBmb3IKPiB0aGUgcG9pbnRlciwgYW5kIG5vIGNoYW5nZSBpbiBiZWhhdmlvdXIuIElzIHRo aXMgb2theT8KCkkgdGhpbmsgc28sIGl0IGlzIHRoZW4ga2VlcGluZyB0aGUgZXhpc3RpbmcgYmVo YXZpb3VyIDE6MS4KClJlZ2FyZHMsCgpUdnJ0a28KCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeAo=