From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan de Oliveira Subject: Re: [PATCH 4/5] drm/i915: Move to atomic plane helpers (v8) Date: Tue, 23 Dec 2014 15:27:30 +0200 Message-ID: <54996DC2.9000102@gmail.com> References: <1418689401-22957-1-git-send-email-matthew.d.roper@intel.com> <1418689401-22957-5-git-send-email-matthew.d.roper@intel.com> 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 765426E1F7 for ; Tue, 23 Dec 2014 05:27:36 -0800 (PST) In-Reply-To: <1418689401-22957-5-git-send-email-matthew.d.roper@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Matt Roper , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gMTIvMTYvMjAxNCAwMjoyMyBBTSwgTWF0dCBSb3BlciB3cm90ZToKPiBTd2l0Y2ggcGxhbmUg aGFuZGxpbmcgdG8gdXNlIHRoZSBhdG9taWMgcGxhbmUgaGVscGVycy4gIFRoaXMgbWVhbnMgdGhh dAo+IHJhdGhlciB0aGFuIHByb3ZpZGUgb3VyIG93biBpbXBsZW1lbnRhdGlvbnMgb2YgLnVwZGF0 ZV9wbGFuZSgpIGFuZAo+IC5kaXNhYmxlX3BsYW5lKCksIHdlIGV4cG9zZSB0aGUgbG93ZXItbGV2 ZWwgY2hlY2svcHJlcGFyZS9jb21taXQvY2xlYW51cAo+IGVudHJ5cG9pbnRzIGFuZCBsZXQgdGhl IERSTSBjb3JlIGltcGxlbWVudCB1cGRhdGUvZGlzYWJsZSBmb3IgdXMgdXNpbmcKPiB0aG9zZSBl bnRyeXBvaW50cy4KPgo+IFRoZSBvdGhlciBtYWluIGNoYW5nZSB0aGF0IGZhbGxzIG91dCBvZiB0 aGlzIHBhdGNoIGlzIHRoYXQgb3VyCj4gZHJtX3BsYW5lJ3Mgd2lsbCBub3cgYWx3YXlzIGhhdmUg YSB2YWxpZCBwbGFuZS0+c3RhdGUgdGhhdCBjb250YWlucyB0aGUKPiByZWxldmFudCBwbGFuZSBz dGF0ZSAoaW5pdGlhbCBzdGF0ZSBpcyBhbGxvY2F0ZWQgYXQgcGxhbmUgY3JlYXRpb24pLgo+IFRo ZSBiYXNlIGRybV9wbGFuZV9zdGF0ZSBwb2ludGVkIHRvIGhvbGRzIHRoZSByZXF1ZXN0ZWQgc291 cmNlL2Rlc3QKPiBjb29yZGluYXRlcywgYW5kIHRoZSBzdWJjbGFzc2VkIGludGVsX3BsYW5lX3N0 YXRlIGhvbGRzIHRoZSBhZGp1c3RlZAo+IHZhbHVlcyB0aGF0IG91ciBkcml2ZXIgYWN0dWFsbHkg dXNlcy4KPgo+IHYyOgo+ICAgLSBSZW5hbWVkIGZpbGUgZnJvbSBpbnRlbF9hdG9taWMuYyB0byBp bnRlbF9hdG9taWNfcGxhbmUuYyAoRGFuaWVsKQo+ICAgLSBGaXggYSBjb3B5L3Bhc3RlIGNvbW1l bnQgbWlzdGFrZSAoQm9iKQo+Cj4gdjM6Cj4gICAtIFVzZSBwcmVwYXJlL2NsZWFudXAgZnVuY3Rp b25zIHRoYXQgd2UndmUgYWxyZWFkeSBmYWN0b3JlZCBvdXQKPiAgIC0gVXNlIG5ld2x5IHJlZmFj dG9yZWQgcHJlX2NvbW1pdC9jb21taXQvcG9zdF9jb21taXQgdG8gYXZvaWQgc2xlZXBpbmcKPiAg ICAgZHVyaW5nIHZibGFuayBldmFzaW9uCj4KPiB2NDoKPiAgIC0gUmViYXNlIHRvIGxhdGVzdCBk aS1uaWdodGx5IHJlcXVpcmVzIGFkZGluZyBhbiAnb2xkX3N0YXRlJyBwYXJhbWV0ZXIKPiAgICAg dG8gYXRvbWljX3VwZGF0ZTsKPgo+IHY1Ogo+ICAgLSBNdXN0IGhhdmUgYm90Y2hlZCBhIHJlYmFz ZSBzb21ld2hlcmUgYW5kIGxvc3Qgc29tZSB3b3JrLiAgUmVzdG9yZQo+ICAgICBzdGF0ZSAnZGly dHknIGZsYWcgdG8gbGV0IGJlZ2luL2VuZCBjb2RlIGtub3cgd2hpY2ggcGxhbmVzIHRvCj4gICAg IHJ1biB0aGUgcHJlX2NvbW1pdC9wb3N0X2NvbW1pdCBob29rcyBmb3IuICBUaGlzIHdvdWxkIGhh dmUgYWN0dWFsbHkKPiAgICAgc2hvd24gdXAgYXMgYnJva2VuIGluIHRoZSBuZXh0IGNvbW1pdCBy YXRoZXIgdGhhbiB0aGlzIG9uZS4KPgo+IHY2Ogo+ICAgLSBTcXVhc2gga2VybmVsZG9jIHBhdGNo IGludG8gdGhpcyBvbmUuCj4gICAtIFByZXZpb3VzIHBhdGNoZXMgaGF2ZSBub3cgYWxyZWFkeSB0 YWtlbiBjYXJlIG9mIG1vc3Qgb2YgdGhlCj4gICAgIGluZnJhc3RydWN0dXJlIHRoYXQgdXNlZCB0 byBiZSBpbiB0aGlzIHBhdGNoLiAgQWxsIHdlJ3JlIGFkZGluZyBoZXJlCj4gICAgIG5vdyBpcyBz b21lIHRoaW4gd3JhcHBlcnMuCj4KPiB2NzoKPiAgIC0gQ2hlY2sgcmV0dXJuIG9mIGludGVsX3Bs YW5lX2R1cGxpY2F0ZV9zdGF0ZSgpIGZvciBhbGxvY2F0aW9uCj4gICAgIGZhaWx1cmVzLgo+Cj4g djg6Cj4gICAtIERyb3AgdW51c2VkIGRybV9wbGFuZV9zdGF0ZSAtPiBpbnRlbF9wbGFuZV9zdGF0 ZSBjYXN0LiAgKEFuZGVyKQo+ICAgLSBTcXVhc2ggaW4gYWN0dWFsIHRyYW5zaXRpb24gdG8gcGxh bmUgaGVscGVycy4gIFNpZ25pZmljYW50Cj4gICAgIHJlZmFjdG9yaW5nIGVhcmxpZXIgaW4gdGhl IHBhdGNoc2V0IGhhcyBtYWRlIHRoZSBjb21iaW5lZAo+ICAgICBwcmVwK3RyYW5zaXRpb24gbXVj aCBlYXNpZXIgdG8gc3dhbGxvdyB0aGFuIGl0IHdhcyBpbiBlYXJsaWVyCj4gICAgIGl0ZXJhdGlv bnMuIChBbmRlcikKClBhdGNoIGxvb2tzIGdvb2Qgb3ZlcmFsbC4gSnVzdCBhIGxpdHRsZSBiaWtl IHNoZWRkaW5nIGJlbG93Lgo+Cj4gVGVzdGNhc2U6IGlndC9rbXNfcGxhbmUKPiBUZXN0Y2FzZTog aWd0L2ttc191bml2ZXJzYWxfcGxhbmUKPiBUZXN0Y2FzZTogaWd0L2ttc19jdXJzb3JfY3JjCj4g U2lnbmVkLW9mZi1ieTogTWF0dCBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNvbT4KPiAt LS0KPiAgIERvY3VtZW50YXRpb24vRG9jQm9vay9kcm0udG1wbCAgICAgICAgICAgIHwgICA1ICsK PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlICAgICAgICAgICAgIHwgICAxICsKPiAg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5jIHwgMTUwICsrKysrKysr KysrKysrKysrKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jICAgICAg fCAyNTAgKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcnYuaCAgICAgICAgICB8ICAxMCArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfc3ByaXRlLmMgICAgICAgfCAgNTAgKysrKy0tCj4gICA2IGZpbGVzIGNoYW5nZWQs IDMwMSBpbnNlcnRpb25zKCspLCAxNjUgZGVsZXRpb25zKC0pCj4gICBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMKPgo+IGRpZmYgLS1n aXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svZHJtLnRtcGwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jv b2svZHJtLnRtcGwKPiBpbmRleCA5OTVkZmIyLi5jMDMzYTBkIDEwMDY0NAo+IC0tLSBhL0RvY3Vt ZW50YXRpb24vRG9jQm9vay9kcm0udG1wbAo+ICsrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9k cm0udG1wbAo+IEBAIC0zOTMyLDYgKzM5MzIsMTEgQEAgaW50IG51bV9pb2N0bHM7PC9zeW5vcHNp cz4KPiAgICAgICAgICAgPC9wYXJhPgo+ICAgICAgICAgPC9zZWN0Mj4KPiAgICAgICAgIDxzZWN0 Mj4KPiArICAgICAgICA8dGl0bGU+QXRvbWljIFBsYW5lIEhlbHBlcnM8L3RpdGxlPgo+ICshUGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5jIGF0b21pYyBwbGFuZSBoZWxw ZXJzCj4gKyFJZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMKPiArICAg ICAgPC9zZWN0Mj4KPiArICAgICAgPHNlY3QyPgo+ICAgICAgICAgICA8dGl0bGU+T3V0cHV0IFBy b2Jpbmc8L3RpdGxlPgo+ICAgICAgICAgICA8cGFyYT4KPiAgIAkgIFRoaXMgc2VjdGlvbiBjb3Zl cnMgb3V0cHV0IHByb2JpbmcgYW5kIHJlbGF0ZWQgaW5mcmFzdHJ1Y3R1cmUgbGlrZSB0aGUKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9NYWtlZmlsZQo+IGluZGV4IDE4NDlmZmEuLjE2ZTNkYzMgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9NYWtlZmlsZQo+IEBAIC02Niw2ICs2Niw3IEBAIGk5MTUteSArPSBkdm9fY2g3MDE3Lm8gXAo+ ICAgCSAgZHZvX25zMjUwMS5vIFwKPiAgIAkgIGR2b19zaWwxNjQubyBcCj4gICAJICBkdm9fdGZw NDEwLm8gXAo+ICsJICBpbnRlbF9hdG9taWNfcGxhbmUubyBcCj4gICAJICBpbnRlbF9jcnQubyBc Cj4gICAJICBpbnRlbF9kZGkubyBcCj4gICAJICBpbnRlbF9kcC5vIFwKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5k ZXggMDAwMDAwMC4uMjg2ZmVjOAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYwo+IEBAIC0wLDAgKzEsMTUwIEBACj4gKy8qCj4g KyAqIENvcHlyaWdodCDCqSAyMDE0IEludGVsIENvcnBvcmF0aW9uCj4gKyAqCj4gKyAqIFBlcm1p c3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9i dGFpbmluZyBhCj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1 bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNv ZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24K PiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRp c3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCj4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29m dHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ICsgKiBTb2Z0d2FyZSBp cyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25z Ogo+ICsgKgo+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNz aW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUg aW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKPiAr ICogU29mdHdhcmUuCj4gKyAqCj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMi LCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gKyAqIElNUExJRUQs IElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB QklMSVRZLAo+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5G UklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKPiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJ R0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiAr ICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBP VEhFUldJU0UsIEFSSVNJTkcKPiArICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lU SCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgo+ICsgKiBERUFMSU5HUyBJTiBUSEUg U09GVFdBUkUuCj4gKyAqLwo+ICsKPiArLyoqCj4gKyAqIERPQzogYXRvbWljIHBsYW5lIGhlbHBl ciBzdXBwb3J0Cj4gKyAqCj4gKyAqIFRoZSBmdW5jdGlvbnMgaGVyZSBhcmUgdXNlZCBieSB0aGUg YXRvbWljIHBsYW5lIGhlbHBlciBmdW5jdGlvbnMgdG8KPiArICogaW1wbGVtZW50IGxlZ2FjeSBw bGFuZSB1cGRhdGVzIChpLmUuLCBkcm1fcGxhbmUtPnVwZGF0ZV9wbGFuZSgpIGFuZAo+ICsgKiBk cm1fcGxhbmUtPmRpc2FibGVfcGxhbmUoKSkuICBUaGlzIGFsbG93cyBwbGFuZSB1cGRhdGVzIHRv IHVzZSB0aGUKPiArICogYXRvbWljIHN0YXRlIGluZnJhc3RydWN0dXJlIGFuZCBwZXJmb3JtIHBs YW5lIHVwZGF0ZXMgYXMgc2VwYXJhdGUKPiArICogcHJlcGFyZS9jaGVjay9jb21taXQvY2xlYW51 cCBzdGVwcy4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8ZHJtL2RybVAuaD4KPiArI2luY2x1ZGUg PGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9wbGFuZV9oZWxw ZXIuaD4KPiArI2luY2x1ZGUgImludGVsX2Rydi5oIgo+ICsKPiArLyoqCj4gKyAqIGludGVsX3Bs YW5lX2R1cGxpY2F0ZV9zdGF0ZSAtIGR1cGxpY2F0ZSBwbGFuZSBzdGF0ZQo+ICsgKiBAcGxhbmU6 IGRybSBwbGFuZQo+ICsgKgo+ICsgKiBBbGxvY2F0ZXMgYW5kIHJldHVybnMgYSBjb3B5IG9mIHRo ZSBwbGFuZSBzdGF0ZSAoYm90aCBjb21tb24gYW5kCj4gKyAqIEludGVsLXNwZWNpZmljKSBmb3Ig dGhlIHNwZWNpZmllZCBwbGFuZS4KPiArICoKPiArICogUmV0dXJuczogVGhlIG5ld2x5IGFsbG9j YXRlZCBwbGFuZSBzdGF0ZSwgb3IgTlVMTCBvciBmYWlsdXJlLgo+ICsgKi8KPiArc3RydWN0IGRy bV9wbGFuZV9zdGF0ZSAqCj4gK2ludGVsX3BsYW5lX2R1cGxpY2F0ZV9zdGF0ZShzdHJ1Y3QgZHJt X3BsYW5lICpwbGFuZSkKPiArewo+ICsJc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpzdGF0ZTsK PiArCj4gKwlpZiAocGxhbmUtPnN0YXRlKQo+ICsJCXN0YXRlID0ga21lbWR1cChwbGFuZS0+c3Rh dGUsIHNpemVvZigqc3RhdGUpLCBHRlBfS0VSTkVMKTsKPiArCWVsc2UKPiArCQlzdGF0ZSA9IGt6 YWxsb2Moc2l6ZW9mKCpzdGF0ZSksIEdGUF9LRVJORUwpOwo+ICsKPiArCWlmICghc3RhdGUpCj4g KwkJcmV0dXJuIE5VTEw7Cj4gKwo+ICsJaWYgKHN0YXRlLT5iYXNlLmZiKQo+ICsJCWRybV9mcmFt ZWJ1ZmZlcl9yZWZlcmVuY2Uoc3RhdGUtPmJhc2UuZmIpOwo+ICsKPiArCXJldHVybiAmc3RhdGUt PmJhc2U7Cj4gK30KPiArCj4gKy8qKgo+ICsgKiBpbnRlbF9wbGFuZV9kZXN0cm95X3N0YXRlIC0g ZGVzdHJveSBwbGFuZSBzdGF0ZQo+ICsgKiBAcGxhbmU6IGRybSBwbGFuZQo+ICsgKgo+ICsgKiBE ZXN0cm95cyB0aGUgcGxhbmUgc3RhdGUgKGJvdGggY29tbW9uIGFuZCBJbnRlbC1zcGVjaWZpYykg Zm9yIHRoZQo+ICsgKiBzcGVjaWZpZWQgcGxhbmUuCj4gKyAqLwo+ICt2b2lkCj4gK2ludGVsX3Bs YW5lX2Rlc3Ryb3lfc3RhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gKwkJCSAgc3RydWN0 IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUpCj4gK3sKPiArCWRybV9hdG9taWNfaGVscGVyX3BsYW5l X2Rlc3Ryb3lfc3RhdGUocGxhbmUsIHN0YXRlKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBpbnRl bF9wbGFuZV9hdG9taWNfY2hlY2soc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gKwkJCQkgICAg c3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUpCj4gK3sKPiArCXN0cnVjdCBkcm1fY3J0YyAq Y3J0YyA9IHN0YXRlLT5jcnRjOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGM7Cj4g KwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmUp Owo+ICsJc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICppbnRlbF9zdGF0ZSA9IHRvX2ludGVsX3Bs YW5lX3N0YXRlKHN0YXRlKTsKPiArCj4gKwljcnRjID0gY3J0YyA/IGNydGMgOiBwbGFuZS0+Y3J0 YzsKPiArCWludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ICsKPiArCS8qCj4gKwkg KiBUaGUgb3JpZ2luYWwgc3JjL2Rlc3QgY29vcmRpbmF0ZXMgYXJlIHN0b3JlZCBpbiBzdGF0ZS0+ YmFzZSwgYnV0Cj4gKwkgKiB3ZSB3YW50IHRvIGtlZXAgYW5vdGhlciBjb3B5IGludGVybmFsIHRv IG91ciBkcml2ZXIgdGhhdCB3ZSBjYW4KPiArCSAqIGNsaXAvbW9kaWZ5IG91cnNlbHZlcy4KPiAr CSAqLwo+ICsJaW50ZWxfc3RhdGUtPnNyYy54MSA9IHN0YXRlLT5zcmNfeDsKPiArCWludGVsX3N0 YXRlLT5zcmMueTEgPSBzdGF0ZS0+c3JjX3k7Cj4gKwlpbnRlbF9zdGF0ZS0+c3JjLngyID0gc3Rh dGUtPnNyY194ICsgc3RhdGUtPnNyY193Owo+ICsJaW50ZWxfc3RhdGUtPnNyYy55MiA9IHN0YXRl LT5zcmNfeSArIHN0YXRlLT5zcmNfaDsKPiArCWludGVsX3N0YXRlLT5kc3QueDEgPSBzdGF0ZS0+ Y3J0Y194Owo+ICsJaW50ZWxfc3RhdGUtPmRzdC55MSA9IHN0YXRlLT5jcnRjX3k7Cj4gKwlpbnRl bF9zdGF0ZS0+ZHN0LngyID0gc3RhdGUtPmNydGNfeCArIHN0YXRlLT5jcnRjX3c7Cj4gKwlpbnRl bF9zdGF0ZS0+ZHN0LnkyID0gc3RhdGUtPmNydGNfeSArIHN0YXRlLT5jcnRjX2g7Cj4gKwo+ICsJ LyogQ2xpcCBhbGwgcGxhbmVzIHRvIENSVEMgc2l6ZSwgb3IgMHgwIGlmIENSVEMgaXMgZGlzYWJs ZWQgKi8KPiArCWludGVsX3N0YXRlLT5jbGlwLngxID0gMDsKPiArCWludGVsX3N0YXRlLT5jbGlw LnkxID0gMDsKPiArCWludGVsX3N0YXRlLT5jbGlwLngyID0KPiArCQlpbnRlbF9jcnRjLT5hY3Rp dmUgPyBpbnRlbF9jcnRjLT5jb25maWcucGlwZV9zcmNfdyA6IDA7Cj4gKwlpbnRlbF9zdGF0ZS0+ Y2xpcC55MiA9Cj4gKwkJaW50ZWxfY3J0Yy0+YWN0aXZlID8gaW50ZWxfY3J0Yy0+Y29uZmlnLnBp cGVfc3JjX2ggOiAwOwo+ICsKPiArCS8qCj4gKwkgKiBEaXNhYmxpbmcgYSBwbGFuZSBpcyBhbHdh eXMgb2theTsgd2UganVzdCBuZWVkIHRvIHVwZGF0ZQo+ICsJICogZmIgdHJhY2tpbmcgaW4gYSBz cGVjaWFsIHdheSBzaW5jZSBjbGVhbnVwX2ZiKCkgd29uJ3QKPiArCSAqIGdldCBjYWxsZWQgYnkg dGhlIHBsYW5lIGhlbHBlcnMuCj4gKwkgKi8KPiArCWlmIChzdGF0ZS0+ZmIgPT0gTlVMTCAmJiBw bGFuZS0+c3RhdGUtPmZiICE9IE5VTEwpIHsKPiArCQkvKgo+ICsJCSAqICdwcmVwYXJlJyBpcyBu ZXZlciBjYWxsZWQgd2hlbiBwbGFuZSBpcyBiZWluZyBkaXNhYmxlZCwgc28KPiArCQkgKiB3ZSBu ZWVkIHRvIGhhbmRsZSBmcm9udGJ1ZmZlciB0cmFja2luZyBhcyBhIHNwZWNpYWwgY2FzZQo+ICsJ CSAqLwo+ICsJCWludGVsX2NydGMtPmF0b21pYy50cmFja19mYnMgfD0gKDEgPDwgZHJtX3BsYW5l X2luZGV4KHBsYW5lKSk7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIGludGVsX3BsYW5lLT5jaGVja19w bGFuZShwbGFuZSwgaW50ZWxfc3RhdGUpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBpbnRlbF9w bGFuZV9hdG9taWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICsJCQkJICAgICAg c3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqb2xkX3N0YXRlKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxf cGxhbmUgKmludGVsX3BsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmUpOwo+ICsJc3RydWN0IGlu dGVsX3BsYW5lX3N0YXRlICppbnRlbF9zdGF0ZSA9Cj4gKwkJdG9faW50ZWxfcGxhbmVfc3RhdGUo cGxhbmUtPnN0YXRlKTsKPiArCj4gKwkvKiBEb24ndCBkaXNhYmxlIGFuIGFscmVhZHkgZGlzYWJs ZWQgcGxhbmUgKi8KPiArCWlmICghcGxhbmUtPnN0YXRlLT5mYiAmJiAhb2xkX3N0YXRlLT5mYikK PiArCQlyZXR1cm47Cj4gKwo+ICsJaW50ZWxfcGxhbmUtPmNvbW1pdF9wbGFuZShwbGFuZSwgaW50 ZWxfc3RhdGUpOwo+ICt9Cj4gKwo+ICtjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2hlbHBlcl9mdW5j cyBpbnRlbF9wbGFuZV9oZWxwZXJfZnVuY3MgPSB7Cj4gKwkucHJlcGFyZV9mYiA9IGludGVsX3By ZXBhcmVfcGxhbmVfZmIsCj4gKwkuY2xlYW51cF9mYiA9IGludGVsX2NsZWFudXBfcGxhbmVfZmIs Cj4gKwkuYXRvbWljX2NoZWNrID0gaW50ZWxfcGxhbmVfYXRvbWljX2NoZWNrLAo+ICsJLmF0b21p Y191cGRhdGUgPSBpbnRlbF9wbGFuZV9hdG9taWNfdXBkYXRlLAo+ICt9Owo+ICsKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gaW5kZXggMDMwY2Y5My4uOTM0ZTZhOCAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBAQCAtOTgsNiArOTgsOCBAQCBzdGF0 aWMgdm9pZCB2bHZfcHJlcGFyZV9wbGwoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gICAJCQkg ICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfY29uZmlnICpwaXBlX2NvbmZpZyk7Cj4gICBzdGF0 aWMgdm9pZCBjaHZfcHJlcGFyZV9wbGwoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gICAJCQkg ICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfY29uZmlnICpwaXBlX2NvbmZpZyk7Cj4gK3N0YXRp YyB2b2lkIGludGVsX2JlZ2luX2NydGNfY29tbWl0KHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7Cj4g K3N0YXRpYyB2b2lkIGludGVsX2ZpbmlzaF9jcnRjX2NvbW1pdChzdHJ1Y3QgZHJtX2NydGMgKmNy dGMpOwo+Cj4gICBzdGF0aWMgc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2ZpbmRfZW5jb2Rl cihzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsIGludCBwaXBlKQo+ICAgewo+IEBA IC05Nzk0LDYgKzk3OTYsOCBAQCBvdXRfaGFuZzoKPiAgIHN0YXRpYyBzdHJ1Y3QgZHJtX2NydGNf aGVscGVyX2Z1bmNzIGludGVsX2hlbHBlcl9mdW5jcyA9IHsKPiAgIAkubW9kZV9zZXRfYmFzZV9h dG9taWMgPSBpbnRlbF9waXBlX3NldF9iYXNlX2F0b21pYywKPiAgIAkubG9hZF9sdXQgPSBpbnRl bF9jcnRjX2xvYWRfbHV0LAo+ICsJLmF0b21pY19iZWdpbiA9IGludGVsX2JlZ2luX2NydGNfY29t bWl0LAo+ICsJLmF0b21pY19mbHVzaCA9IGludGVsX2ZpbmlzaF9jcnRjX2NvbW1pdCwKPiAgIH07 Cj4KPiAgIC8qKgo+IEBAIC0xMTY3NCw3ICsxMTY3OCw3IEBAIGludGVsX3ByZXBhcmVfcGxhbmVf ZmIoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gICAJdW5zaWduZWQgZnJvbnRidWZmZXJfYml0 cyA9IDA7Cj4gICAJaW50IHJldCA9IDA7Cj4KPiAtCWlmIChXQVJOX09OKGZiID09IHBsYW5lLT5m YiB8fCAhb2JqKSkKPiArCWlmICghb2JqKQo+ICAgCQlyZXR1cm4gMDsKPgo+ICAgCXN3aXRjaCAo cGxhbmUtPnR5cGUpIHsKPiBAQCAtMTE3NDEsNyArMTE3NDUsNyBAQCBpbnRlbF9jaGVja19wcmlt YXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAgCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSBwbGFuZS0+ZGV2Owo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gICAJc3RydWN0IGRybV9jcnRjICpjcnRjID0gc3RhdGUt PmJhc2UuY3J0YzsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxf Y3J0YyhjcnRjKTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjOwo+ICAgCXN0cnVj dCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZSk7Cj4gICAJ c3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBzdGF0ZS0+YmFzZS5mYjsKPiAgIAlzdHJ1Y3Qg ZHJtX3JlY3QgKmRlc3QgPSAmc3RhdGUtPmRzdDsKPiBAQCAtMTE3NDksNiArMTE3NTMsOSBAQCBp bnRlbF9jaGVja19wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAgCWNv bnN0IHN0cnVjdCBkcm1fcmVjdCAqY2xpcCA9ICZzdGF0ZS0+Y2xpcDsKPiAgIAlpbnQgcmV0Owo+ Cj4gKwljcnRjID0gY3J0YyA/IGNydGMgOiBwbGFuZS0+Y3J0YzsKPiArCWludGVsX2NydGMgPSB0 b19pbnRlbF9jcnRjKGNydGMpOwo+ICsKPiAgIAlyZXQgPSBkcm1fcGxhbmVfaGVscGVyX2NoZWNr X3VwZGF0ZShwbGFuZSwgY3J0YywgZmIsCj4gICAJCQkJCSAgICBzcmMsIGRlc3QsIGNsaXAsCj4g ICAJCQkJCSAgICBEUk1fUExBTkVfSEVMUEVSX05PX1NDQUxJTkcsCj4gQEAgLTExODA4LDIzICsx MTgxNSwyNiBAQCBpbnRlbF9jb21taXRfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpw bGFuZSwKPiAgIAlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHN0YXRlLT5iYXNlLmZiOwo+ ICAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBwbGFuZS0+ZGV2Owo+ICAgCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gLQlzdHJ1Y3QgaW50 ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50 ZWxfY3J0YyAqaW50ZWxfY3J0YzsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq ID0gaW50ZWxfZmJfb2JqKGZiKTsKPiAgIAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5l ID0gdG9faW50ZWxfcGxhbmUocGxhbmUpOwo+ICAgCXN0cnVjdCBkcm1fcmVjdCAqc3JjID0gJnN0 YXRlLT5zcmM7Cj4KPiArCWNydGMgPSBjcnRjID8gY3J0YyA6IHBsYW5lLT5jcnRjOwo+ICsJaW50 ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gKwo+ICAgCXBsYW5lLT5mYiA9IGZiOwo+ ICAgCWNydGMtPnggPSBzcmMtPngxID4+IDE2Owo+ICAgCWNydGMtPnkgPSBzcmMtPnkxID4+IDE2 Owo+Cj4gLQlpbnRlbF9wbGFuZS0+Y3J0Y194ID0gc3RhdGUtPm9yaWdfZHN0LngxOwo+IC0JaW50 ZWxfcGxhbmUtPmNydGNfeSA9IHN0YXRlLT5vcmlnX2RzdC55MTsKPiAtCWludGVsX3BsYW5lLT5j cnRjX3cgPSBkcm1fcmVjdF93aWR0aCgmc3RhdGUtPm9yaWdfZHN0KTsKPiAtCWludGVsX3BsYW5l LT5jcnRjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnN0YXRlLT5vcmlnX2RzdCk7Cj4gLQlpbnRlbF9w bGFuZS0+c3JjX3ggPSBzdGF0ZS0+b3JpZ19zcmMueDE7Cj4gLQlpbnRlbF9wbGFuZS0+c3JjX3kg PSBzdGF0ZS0+b3JpZ19zcmMueTE7Cj4gLQlpbnRlbF9wbGFuZS0+c3JjX3cgPSBkcm1fcmVjdF93 aWR0aCgmc3RhdGUtPm9yaWdfc3JjKTsKPiAtCWludGVsX3BsYW5lLT5zcmNfaCA9IGRybV9yZWN0 X2hlaWdodCgmc3RhdGUtPm9yaWdfc3JjKTsKPiArCWludGVsX3BsYW5lLT5jcnRjX3ggPSBzdGF0 ZS0+YmFzZS5jcnRjX3g7Cj4gKwlpbnRlbF9wbGFuZS0+Y3J0Y195ID0gc3RhdGUtPmJhc2UuY3J0 Y195Owo+ICsJaW50ZWxfcGxhbmUtPmNydGNfdyA9IHN0YXRlLT5iYXNlLmNydGNfdzsKPiArCWlu dGVsX3BsYW5lLT5jcnRjX2ggPSBzdGF0ZS0+YmFzZS5jcnRjX2g7Cj4gKwlpbnRlbF9wbGFuZS0+ c3JjX3ggPSBzdGF0ZS0+YmFzZS5zcmNfeDsKPiArCWludGVsX3BsYW5lLT5zcmNfeSA9IHN0YXRl LT5iYXNlLnNyY195Owo+ICsJaW50ZWxfcGxhbmUtPnNyY193ID0gc3RhdGUtPmJhc2Uuc3JjX3c7 Cj4gKwlpbnRlbF9wbGFuZS0+c3JjX2ggPSBzdGF0ZS0+YmFzZS5zcmNfaDsKPiAgIAlpbnRlbF9w bGFuZS0+b2JqID0gb2JqOwo+Cj4gICAJaWYgKGludGVsX2NydGMtPmFjdGl2ZSkgewo+IEBAIC0x MTg1Myw2ICsxMTg2MywzMiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9iZWdpbl9jcnRjX2NvbW1pdChz dHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gICB7Cj4gICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IGNydGMtPmRldjsKPiAgIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVs X2NydGMoY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lOwo+ICsJc3Ry dWN0IGRybV9wbGFuZSAqcDsKPiArCXVuc2lnbmVkIGZiX2JpdHMgPSAwOwo+ICsKPiArCS8qIFRy YWNrIGZiJ3MgZm9yIGFueSBwbGFuZXMgYmVpbmcgZGlzYWJsZWQgKi8KPiArCWxpc3RfZm9yX2Vh Y2hfZW50cnkocCwgJmRldi0+bW9kZV9jb25maWcucGxhbmVfbGlzdCwgaGVhZCkgewo+ICsJCWlu dGVsX3BsYW5lID0gdG9faW50ZWxfcGxhbmUocCk7Cj4gKwo+ICsJCWlmIChpbnRlbF9jcnRjLT5h dG9taWMudHJhY2tfZmJzICYgKDEgPDwgZHJtX3BsYW5lX2luZGV4KHApKSkgewo+ICsJCQlzd2l0 Y2ggKHAtPnR5cGUpIHsKPiArCQkJY2FzZSBEUk1fUExBTkVfVFlQRV9QUklNQVJZOgo+ICsJCQkJ ZmJfYml0cyA9IElOVEVMX0ZST05UQlVGRkVSX1BSSU1BUlkoaW50ZWxfcGxhbmUtPnBpcGUpOwo+ ICsJCQkJYnJlYWs7Cj4gKwkJCWNhc2UgRFJNX1BMQU5FX1RZUEVfQ1VSU09SOgo+ICsJCQkJZmJf Yml0cyA9IElOVEVMX0ZST05UQlVGRkVSX0NVUlNPUihpbnRlbF9wbGFuZS0+cGlwZSk7Cj4gKwkJ CQlicmVhazsKPiArCQkJY2FzZSBEUk1fUExBTkVfVFlQRV9PVkVSTEFZOgo+ICsJCQkJZmJfYml0 cyA9IElOVEVMX0ZST05UQlVGRkVSX1NQUklURShpbnRlbF9wbGFuZS0+cGlwZSk7Cj4gKwkJCQli cmVhazsKPiArCQkJfQo+ICsKPiArCQkJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ ICsJCQlpOTE1X2dlbV90cmFja19mYihpbnRlbF9mYl9vYmoocC0+ZmIpLCBOVUxMLCBmYl9iaXRz KTsKPiArCQkJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gKwkJfQo+ICsJfQo+ Cj4gICAJaWYgKGludGVsX2NydGMtPmF0b21pYy5kaXNhYmxlX2ZiYykKPiAgIAkJaW50ZWxfZmJj X2Rpc2FibGUoZGV2KTsKPiBAQCAtMTE5MDIsMTI0ICsxMTkzOCwyMyBAQCBzdGF0aWMgdm9pZCBp bnRlbF9maW5pc2hfY3J0Y19jb21taXQoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAgCW1lbXNl dCgmaW50ZWxfY3J0Yy0+YXRvbWljLCAwLCBzaXplb2YoaW50ZWxfY3J0Yy0+YXRvbWljKSk7Cj4g ICB9Cj4KPiAtaW50Cj4gLWludGVsX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu ZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAo+IC0JCSAgIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIg KmZiLCBpbnQgY3J0Y194LCBpbnQgY3J0Y195LAo+IC0JCSAgIHVuc2lnbmVkIGludCBjcnRjX3cs IHVuc2lnbmVkIGludCBjcnRjX2gsCj4gLQkJICAgdWludDMyX3Qgc3JjX3gsIHVpbnQzMl90IHNy Y195LAo+IC0JCSAgIHVpbnQzMl90IHNyY193LCB1aW50MzJfdCBzcmNfaCkKPiAtewo+IC0Jc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IHBsYW5lLT5kZXY7Cj4gLQlzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyICpvbGRfZmIgPSBwbGFuZS0+ZmI7Cj4gLQlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgc3Rh dGUgPSB7eyAwIH19Owo+IC0Jc3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSA9IHRvX2lu dGVsX3BsYW5lKHBsYW5lKTsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9f aW50ZWxfY3J0YyhjcnRjKTsKPiAtCWludCByZXQ7Cj4gLQo+IC0Jc3RhdGUuYmFzZS5jcnRjID0g Y3J0YyA/IGNydGMgOiBwbGFuZS0+Y3J0YzsKPiAtCXN0YXRlLmJhc2UuZmIgPSBmYjsKPiAtCj4g LQkvKiBzYW1wbGUgY29vcmRpbmF0ZXMgaW4gMTYuMTYgZml4ZWQgcG9pbnQgKi8KPiAtCXN0YXRl LnNyYy54MSA9IHNyY194Owo+IC0Jc3RhdGUuc3JjLngyID0gc3JjX3ggKyBzcmNfdzsKPiAtCXN0 YXRlLnNyYy55MSA9IHNyY195Owo+IC0Jc3RhdGUuc3JjLnkyID0gc3JjX3kgKyBzcmNfaDsKPiAt Cj4gLQkvKiBpbnRlZ2VyIHBpeGVscyAqLwo+IC0Jc3RhdGUuZHN0LngxID0gY3J0Y194Owo+IC0J c3RhdGUuZHN0LngyID0gY3J0Y194ICsgY3J0Y193Owo+IC0Jc3RhdGUuZHN0LnkxID0gY3J0Y195 Owo+IC0Jc3RhdGUuZHN0LnkyID0gY3J0Y195ICsgY3J0Y19oOwo+IC0KPiAtCXN0YXRlLmNsaXAu eDEgPSAwOwo+IC0Jc3RhdGUuY2xpcC55MSA9IDA7Cj4gLQlzdGF0ZS5jbGlwLngyID0gaW50ZWxf Y3J0Yy0+YWN0aXZlID8gaW50ZWxfY3J0Yy0+Y29uZmlnLnBpcGVfc3JjX3cgOiAwOwo+IC0Jc3Rh dGUuY2xpcC55MiA9IGludGVsX2NydGMtPmFjdGl2ZSA/IGludGVsX2NydGMtPmNvbmZpZy5waXBl X3NyY19oIDogMDsKPiAtCj4gLQlzdGF0ZS5vcmlnX3NyYyA9IHN0YXRlLnNyYzsKPiAtCXN0YXRl Lm9yaWdfZHN0ID0gc3RhdGUuZHN0Owo+IC0KPiAtCXJldCA9IGludGVsX3BsYW5lLT5jaGVja19w bGFuZShwbGFuZSwgJnN0YXRlKTsKPiAtCWlmIChyZXQpCj4gLQkJcmV0dXJuIHJldDsKPiAtCj4g LQlpZiAoZmIgIT0gb2xkX2ZiICYmIGZiKSB7Cj4gLQkJcmV0ID0gaW50ZWxfcHJlcGFyZV9wbGFu ZV9mYihwbGFuZSwgZmIpOwo+IC0JCWlmIChyZXQpCj4gLQkJCXJldHVybiByZXQ7Cj4gLQl9Cj4g LQo+IC0JaWYgKCFzdGF0ZS5iYXNlLmZiKSB7Cj4gLQkJdW5zaWduZWQgZmJfYml0cyA9IDA7Cj4g LQo+IC0JCXN3aXRjaCAocGxhbmUtPnR5cGUpIHsKPiAtCQljYXNlIERSTV9QTEFORV9UWVBFX1BS SU1BUlk6Cj4gLQkJCWZiX2JpdHMgPSBJTlRFTF9GUk9OVEJVRkZFUl9QUklNQVJZKGludGVsX3Bs YW5lLT5waXBlKTsKPiAtCQkJYnJlYWs7Cj4gLQkJY2FzZSBEUk1fUExBTkVfVFlQRV9DVVJTT1I6 Cj4gLQkJCWZiX2JpdHMgPSBJTlRFTF9GUk9OVEJVRkZFUl9DVVJTT1IoaW50ZWxfcGxhbmUtPnBp cGUpOwo+IC0JCQlicmVhazsKPiAtCQljYXNlIERSTV9QTEFORV9UWVBFX09WRVJMQVk6Cj4gLQkJ CWZiX2JpdHMgPSBJTlRFTF9GUk9OVEJVRkZFUl9TUFJJVEUoaW50ZWxfcGxhbmUtPnBpcGUpOwo+ IC0JCQlicmVhazsKPiAtCQl9Cj4gLQo+IC0JCS8qCj4gLQkJICogJ3ByZXBhcmUnIGlzIG5ldmVy IGNhbGxlZCB3aGVuIHBsYW5lIGlzIGJlaW5nIGRpc2FibGVkLCBzbwo+IC0JCSAqIHdlIG5lZWQg dG8gaGFuZGxlIGZyb250YnVmZmVyIHRyYWNraW5nIGhlcmUKPiAtCQkgKi8KPiAtCQltdXRleF9s b2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gLQkJaTkxNV9nZW1fdHJhY2tfZmIoaW50ZWxfZmJf b2JqKHBsYW5lLT5mYiksIE5VTEwsIGZiX2JpdHMpOwo+IC0JCW11dGV4X3VubG9jaygmZGV2LT5z dHJ1Y3RfbXV0ZXgpOwo+IC0JfQo+IC0KPiAtCWludGVsX2JlZ2luX2NydGNfY29tbWl0KGNydGMp Owo+IC0JaW50ZWxfcGxhbmUtPmNvbW1pdF9wbGFuZShwbGFuZSwgJnN0YXRlKTsKPiAtCWludGVs X2ZpbmlzaF9jcnRjX2NvbW1pdChjcnRjKTsKPiAtCj4gLQlpZiAoZmIgIT0gb2xkX2ZiICYmIG9s ZF9mYikgewo+IC0JCWlmIChpbnRlbF9jcnRjLT5hY3RpdmUpCj4gLQkJCWludGVsX3dhaXRfZm9y X3ZibGFuayhkZXYsIGludGVsX2NydGMtPnBpcGUpOwo+IC0JCWludGVsX2NsZWFudXBfcGxhbmVf ZmIocGxhbmUsIG9sZF9mYik7Cj4gLQl9Cj4gLQo+IC0JcGxhbmUtPmZiID0gZmI7Cj4gLQo+IC0J cmV0dXJuIDA7Cj4gLX0KPiAtCj4gLS8qKgo+IC0gKiBpbnRlbF9kaXNhYmxlX3BsYW5lIC0gZGlz YWJsZSBhIHBsYW5lCj4gLSAqIEBwbGFuZTogcGxhbmUgdG8gZGlzYWJsZQo+IC0gKgo+IC0gKiBH ZW5lcmFsIGRpc2FibGUgaGFuZGxlciBmb3IgYWxsIHBsYW5lIHR5cGVzLgo+IC0gKi8KPiAtaW50 Cj4gLWludGVsX2Rpc2FibGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCj4gLXsKPiAt CWlmICghcGxhbmUtPmZiKQo+IC0JCXJldHVybiAwOwo+IC0KPiAtCWlmIChXQVJOX09OKCFwbGFu ZS0+Y3J0YykpCj4gLQkJcmV0dXJuIC1FSU5WQUw7Cj4gLQo+IC0JcmV0dXJuIHBsYW5lLT5mdW5j cy0+dXBkYXRlX3BsYW5lKHBsYW5lLCBwbGFuZS0+Y3J0YywgTlVMTCwKPiAtCQkJCQkgIDAsIDAs IDAsIDAsIDAsIDAsIDAsIDApOwo+IC19Cj4gLQo+ICAgLyogQ29tbW9uIGRlc3RydWN0aW9uIGZ1 bmN0aW9uIGZvciBib3RoIHByaW1hcnkgYW5kIGN1cnNvciBwbGFuZXMgKi8KPiAgIHZvaWQgaW50 ZWxfcGxhbmVfZGVzdHJveShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKPiAgIHsKPiAgIAlzdHJ1 Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmUpOwo+ICsJ aW50ZWxfcGxhbmVfZGVzdHJveV9zdGF0ZShwbGFuZSwgcGxhbmUtPnN0YXRlKTsKPiAgIAlkcm1f cGxhbmVfY2xlYW51cChwbGFuZSk7Cj4gICAJa2ZyZWUoaW50ZWxfcGxhbmUpOwo+ICAgfQo+Cj4g ICBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9mdW5jcyBpbnRlbF9wcmltYXJ5X3BsYW5l X2Z1bmNzID0gewo+IC0JLnVwZGF0ZV9wbGFuZSA9IGludGVsX3VwZGF0ZV9wbGFuZSwKPiAtCS5k aXNhYmxlX3BsYW5lID0gaW50ZWxfZGlzYWJsZV9wbGFuZSwKPiArCS51cGRhdGVfcGxhbmUgPSBk cm1fcGxhbmVfaGVscGVyX3VwZGF0ZSwKPiArCS5kaXNhYmxlX3BsYW5lID0gZHJtX3BsYW5lX2hl bHBlcl9kaXNhYmxlLAo+ICAgCS5kZXN0cm95ID0gaW50ZWxfcGxhbmVfZGVzdHJveSwKPiAtCS5z ZXRfcHJvcGVydHkgPSBpbnRlbF9wbGFuZV9zZXRfcHJvcGVydHkKPiArCS5zZXRfcHJvcGVydHkg PSBpbnRlbF9wbGFuZV9zZXRfcHJvcGVydHksCj4gKwkuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9 IGludGVsX3BsYW5lX2R1cGxpY2F0ZV9zdGF0ZSwKPiArCS5hdG9taWNfZGVzdHJveV9zdGF0ZSA9 IGludGVsX3BsYW5lX2Rlc3Ryb3lfc3RhdGUsCj4gKwo+ICAgfTsKPgo+ICAgc3RhdGljIHN0cnVj dCBkcm1fcGxhbmUgKmludGVsX3ByaW1hcnlfcGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCj4gQEAgLTEyMDMzLDYgKzExOTY4LDEyIEBAIHN0YXRpYyBzdHJ1Y3QgZHJtX3BsYW5l ICppbnRlbF9wcmltYXJ5X3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAg CWlmIChwcmltYXJ5ID09IE5VTEwpCj4gICAJCXJldHVybiBOVUxMOwo+Cj4gKwlwcmltYXJ5LT5i YXNlLnN0YXRlID0gaW50ZWxfcGxhbmVfZHVwbGljYXRlX3N0YXRlKCZwcmltYXJ5LT5iYXNlKTsK PiArCWlmIChwcmltYXJ5LT5iYXNlLnN0YXRlID09IE5VTEwpIHsKPiArCQlrZnJlZShwcmltYXJ5 KTsKPiArCQlyZXR1cm4gTlVMTDsKPiArCX0KPiArCj4gICAJcHJpbWFyeS0+Y2FuX3NjYWxlID0g ZmFsc2U7Cj4gICAJcHJpbWFyeS0+bWF4X2Rvd25zY2FsZSA9IDE7Cj4gICAJcHJpbWFyeS0+cGlw ZSA9IHBpcGU7Cj4gQEAgLTEyMDY4LDYgKzEyMDA5LDggQEAgc3RhdGljIHN0cnVjdCBkcm1fcGxh bmUgKmludGVsX3ByaW1hcnlfcGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4g ICAJCQkJcHJpbWFyeS0+cm90YXRpb24pOwo+ICAgCX0KPgo+ICsJZHJtX3BsYW5lX2hlbHBlcl9h ZGQoJnByaW1hcnktPmJhc2UsICZpbnRlbF9wbGFuZV9oZWxwZXJfZnVuY3MpOwo+ICsKPiAgIAly ZXR1cm4gJnByaW1hcnktPmJhc2U7Cj4gICB9Cj4KPiBAQCAtMTIwNzYsMTcgKzEyMDE5LDE5IEBA IGludGVsX2NoZWNrX2N1cnNvcl9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgIAkJ CSBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnN0YXRlKQo+ICAgewo+ICAgCXN0cnVjdCBkcm1f Y3J0YyAqY3J0YyA9IHN0YXRlLT5iYXNlLmNydGM7Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gY3J0Yy0+ZGV2Owo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHBsYW5lLT5kZXY7Cj4g ICAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBzdGF0ZS0+YmFzZS5mYjsKPiAgIAlzdHJ1 Y3QgZHJtX3JlY3QgKmRlc3QgPSAmc3RhdGUtPmRzdDsKPiAgIAlzdHJ1Y3QgZHJtX3JlY3QgKnNy YyA9ICZzdGF0ZS0+c3JjOwo+ICAgCWNvbnN0IHN0cnVjdCBkcm1fcmVjdCAqY2xpcCA9ICZzdGF0 ZS0+Y2xpcDsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gaW50ZWxfZmJf b2JqKGZiKTsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0 YyhjcnRjKTsKPiAtCWludCBjcnRjX3csIGNydGNfaDsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpp bnRlbF9jcnRjOwo+ICAgCXVuc2lnbmVkIHN0cmlkZTsKPiAgIAlpbnQgcmV0Owo+Cj4gKwljcnRj ID0gY3J0YyA/IGNydGMgOiBwbGFuZS0+Y3J0YzsKPiArCWludGVsX2NydGMgPSB0b19pbnRlbF9j cnRjKGNydGMpOwo+ICsKPiAgIAlyZXQgPSBkcm1fcGxhbmVfaGVscGVyX2NoZWNrX3VwZGF0ZShw bGFuZSwgY3J0YywgZmIsCj4gICAJCQkJCSAgICBzcmMsIGRlc3QsIGNsaXAsCj4gICAJCQkJCSAg ICBEUk1fUExBTkVfSEVMUEVSX05PX1NDQUxJTkcsCj4gQEAgLTEyMTAxLDE1ICsxMjA0NiwxNCBA QCBpbnRlbF9jaGVja19jdXJzb3JfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gICAJ CWdvdG8gZmluaXNoOwo+Cj4gICAJLyogQ2hlY2sgZm9yIHdoaWNoIGN1cnNvciB0eXBlcyB3ZSBz dXBwb3J0ICovCj4gLQljcnRjX3cgPSBkcm1fcmVjdF93aWR0aCgmc3RhdGUtPm9yaWdfZHN0KTsK PiAtCWNydGNfaCA9IGRybV9yZWN0X2hlaWdodCgmc3RhdGUtPm9yaWdfZHN0KTsKPiAtCWlmICgh Y3Vyc29yX3NpemVfb2soZGV2LCBjcnRjX3csIGNydGNfaCkpIHsKPiAtCQlEUk1fREVCVUcoIkN1 cnNvciBkaW1lbnNpb24gbm90IHN1cHBvcnRlZFxuIik7Cj4gKwlpZiAoIWN1cnNvcl9zaXplX29r KGRldiwgc3RhdGUtPmJhc2UuY3J0Y193LCBzdGF0ZS0+YmFzZS5jcnRjX2gpKSB7Cj4gKwkJRFJN X0RFQlVHKCJDdXJzb3IgZGltZW5zaW9uICVkeCVkIG5vdCBzdXBwb3J0ZWRcbiIsCj4gKwkJCSAg c3RhdGUtPmJhc2UuY3J0Y193LCBzdGF0ZS0+YmFzZS5jcnRjX2gpOwo+ICAgCQlyZXR1cm4gLUVJ TlZBTDsKPiAgIAl9Cj4KPiAtCXN0cmlkZSA9IHJvdW5kdXBfcG93X29mX3R3byhjcnRjX3cpICog NDsKPiAtCWlmIChvYmotPmJhc2Uuc2l6ZSA8IHN0cmlkZSAqIGNydGNfaCkgewo+ICsJc3RyaWRl ID0gcm91bmR1cF9wb3dfb2ZfdHdvKHN0YXRlLT5iYXNlLmNydGNfdykgKiA0Owo+ICsJaWYgKG9i ai0+YmFzZS5zaXplIDwgc3RyaWRlICogc3RhdGUtPmJhc2UuY3J0Y19oKSB7Cj4gICAJCURSTV9E RUJVR19LTVMoImJ1ZmZlciBpcyB0b28gc21hbGxcbiIpOwo+ICAgCQlyZXR1cm4gLUVOT01FTTsK PiAgIAl9Cj4gQEAgLTEyMTI3LDggKzEyMDcxLDcgQEAgaW50ZWxfY2hlY2tfY3Vyc29yX3BsYW5l KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+Cj4gICBmaW5pc2g6Cj4gICAJaWYgKGludGVsX2Ny dGMtPmFjdGl2ZSkgewo+IC0JCWlmIChpbnRlbF9jcnRjLT5jdXJzb3Jfd2lkdGggIT0KPiAtCQkg ICAgZHJtX3JlY3Rfd2lkdGgoJnN0YXRlLT5vcmlnX2RzdCkpCj4gKwkJaWYgKGludGVsX2NydGMt PmN1cnNvcl93aWR0aCAhPSBzdGF0ZS0+YmFzZS5jcnRjX3cpCj4gICAJCQlpbnRlbF9jcnRjLT5h dG9taWMudXBkYXRlX3dtID0gdHJ1ZTsKPgo+ICAgCQlpbnRlbF9jcnRjLT5hdG9taWMuZmJfYml0 cyB8PQo+IEBAIC0xMjE0MywyNCArMTIwODYsMjcgQEAgaW50ZWxfY29tbWl0X2N1cnNvcl9wbGFu ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgIAkJCSAgc3RydWN0IGludGVsX3BsYW5lX3N0 YXRlICpzdGF0ZSkKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBzdGF0ZS0+YmFz ZS5jcnRjOwo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiAtCXN0cnVj dCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiArCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBwbGFuZS0+ZGV2Owo+ICsJc3RydWN0IGludGVsX2NydGMgKmlu dGVsX2NydGM7Cj4gICAJc3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSA9IHRvX2ludGVs X3BsYW5lKHBsYW5lKTsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gaW50 ZWxfZmJfb2JqKHN0YXRlLT5iYXNlLmZiKTsKPiAgIAl1aW50MzJfdCBhZGRyOwo+Cj4gKwljcnRj ID0gY3J0YyA/IGNydGMgOiBwbGFuZS0+Y3J0YzsKPiArCWludGVsX2NydGMgPSB0b19pbnRlbF9j cnRjKGNydGMpOwo+ICsKPiAgIAlwbGFuZS0+ZmIgPSBzdGF0ZS0+YmFzZS5mYjsKPiAtCWNydGMt PmN1cnNvcl94ID0gc3RhdGUtPm9yaWdfZHN0LngxOwo+IC0JY3J0Yy0+Y3Vyc29yX3kgPSBzdGF0 ZS0+b3JpZ19kc3QueTE7Cj4gLQo+IC0JaW50ZWxfcGxhbmUtPmNydGNfeCA9IHN0YXRlLT5vcmln X2RzdC54MTsKPiAtCWludGVsX3BsYW5lLT5jcnRjX3kgPSBzdGF0ZS0+b3JpZ19kc3QueTE7Cj4g LQlpbnRlbF9wbGFuZS0+Y3J0Y193ID0gZHJtX3JlY3Rfd2lkdGgoJnN0YXRlLT5vcmlnX2RzdCk7 Cj4gLQlpbnRlbF9wbGFuZS0+Y3J0Y19oID0gZHJtX3JlY3RfaGVpZ2h0KCZzdGF0ZS0+b3JpZ19k c3QpOwo+IC0JaW50ZWxfcGxhbmUtPnNyY194ID0gc3RhdGUtPm9yaWdfc3JjLngxOwo+IC0JaW50 ZWxfcGxhbmUtPnNyY195ID0gc3RhdGUtPm9yaWdfc3JjLnkxOwo+IC0JaW50ZWxfcGxhbmUtPnNy Y193ID0gZHJtX3JlY3Rfd2lkdGgoJnN0YXRlLT5vcmlnX3NyYyk7Cj4gLQlpbnRlbF9wbGFuZS0+ c3JjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnN0YXRlLT5vcmlnX3NyYyk7Cj4gKwljcnRjLT5jdXJz b3JfeCA9IHN0YXRlLT5iYXNlLmNydGNfeDsKPiArCWNydGMtPmN1cnNvcl95ID0gc3RhdGUtPmJh c2UuY3J0Y195Owo+ICsKPiArCWludGVsX3BsYW5lLT5jcnRjX3ggPSBzdGF0ZS0+YmFzZS5jcnRj X3g7Cj4gKwlpbnRlbF9wbGFuZS0+Y3J0Y195ID0gc3RhdGUtPmJhc2UuY3J0Y195Owo+ICsJaW50 ZWxfcGxhbmUtPmNydGNfdyA9IHN0YXRlLT5iYXNlLmNydGNfdzsKPiArCWludGVsX3BsYW5lLT5j cnRjX2ggPSBzdGF0ZS0+YmFzZS5jcnRjX2g7Cj4gKwlpbnRlbF9wbGFuZS0+c3JjX3ggPSBzdGF0 ZS0+YmFzZS5zcmNfeDsKPiArCWludGVsX3BsYW5lLT5zcmNfeSA9IHN0YXRlLT5iYXNlLnNyY195 Owo+ICsJaW50ZWxfcGxhbmUtPnNyY193ID0gc3RhdGUtPmJhc2Uuc3JjX3c7Cj4gKwlpbnRlbF9w bGFuZS0+c3JjX2ggPSBzdGF0ZS0+YmFzZS5zcmNfaDsKPiAgIAlpbnRlbF9wbGFuZS0+b2JqID0g b2JqOwo+Cj4gICAJaWYgKGludGVsX2NydGMtPmN1cnNvcl9ibyA9PSBvYmopCj4gQEAgLTEyMTc2 LDE4ICsxMjEyMiwyMCBAQCBpbnRlbF9jb21taXRfY3Vyc29yX3BsYW5lKHN0cnVjdCBkcm1fcGxh bmUgKnBsYW5lLAo+ICAgCWludGVsX2NydGMtPmN1cnNvcl9hZGRyID0gYWRkcjsKPiAgIAlpbnRl bF9jcnRjLT5jdXJzb3JfYm8gPSBvYmo7Cj4gICB1cGRhdGU6Cj4gLQlpbnRlbF9jcnRjLT5jdXJz b3Jfd2lkdGggPSBkcm1fcmVjdF93aWR0aCgmc3RhdGUtPm9yaWdfZHN0KTsKPiAtCWludGVsX2Ny dGMtPmN1cnNvcl9oZWlnaHQgPSBkcm1fcmVjdF9oZWlnaHQoJnN0YXRlLT5vcmlnX2RzdCk7Cj4g KwlpbnRlbF9jcnRjLT5jdXJzb3Jfd2lkdGggPSBzdGF0ZS0+YmFzZS5jcnRjX3c7Cj4gKwlpbnRl bF9jcnRjLT5jdXJzb3JfaGVpZ2h0ID0gc3RhdGUtPmJhc2UuY3J0Y19oOwo+Cj4gICAJaWYgKGlu dGVsX2NydGMtPmFjdGl2ZSkKPiAgIAkJaW50ZWxfY3J0Y191cGRhdGVfY3Vyc29yKGNydGMsIHN0 YXRlLT52aXNpYmxlKTsKPiAgIH0KPgo+ICAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVf ZnVuY3MgaW50ZWxfY3Vyc29yX3BsYW5lX2Z1bmNzID0gewo+IC0JLnVwZGF0ZV9wbGFuZSA9IGlu dGVsX3VwZGF0ZV9wbGFuZSwKPiAtCS5kaXNhYmxlX3BsYW5lID0gaW50ZWxfZGlzYWJsZV9wbGFu ZSwKPiArCS51cGRhdGVfcGxhbmUgPSBkcm1fcGxhbmVfaGVscGVyX3VwZGF0ZSwKPiArCS5kaXNh YmxlX3BsYW5lID0gZHJtX3BsYW5lX2hlbHBlcl9kaXNhYmxlLAo+ICAgCS5kZXN0cm95ID0gaW50 ZWxfcGxhbmVfZGVzdHJveSwKPiAgIAkuc2V0X3Byb3BlcnR5ID0gaW50ZWxfcGxhbmVfc2V0X3By b3BlcnR5LAo+ICsJLmF0b21pY19kdXBsaWNhdGVfc3RhdGUgPSBpbnRlbF9wbGFuZV9kdXBsaWNh dGVfc3RhdGUsCj4gKwkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSBpbnRlbF9wbGFuZV9kZXN0cm95 X3N0YXRlLAo+ICAgfTsKPgo+ICAgc3RhdGljIHN0cnVjdCBkcm1fcGxhbmUgKmludGVsX2N1cnNv cl9wbGFuZV9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiBAQCAtMTIxOTksNiArMTIx NDcsMTIgQEAgc3RhdGljIHN0cnVjdCBkcm1fcGxhbmUgKmludGVsX2N1cnNvcl9wbGFuZV9jcmVh dGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgIAlpZiAoY3Vyc29yID09IE5VTEwpCj4gICAJ CXJldHVybiBOVUxMOwo+Cj4gKwljdXJzb3ItPmJhc2Uuc3RhdGUgPSBpbnRlbF9wbGFuZV9kdXBs aWNhdGVfc3RhdGUoJmN1cnNvci0+YmFzZSk7Cj4gKwlpZiAoY3Vyc29yLT5iYXNlLnN0YXRlID09 IE5VTEwpIHsKPiArCQlrZnJlZShjdXJzb3IpOwo+ICsJCXJldHVybiBOVUxMOwo+ICsJfQo+ICsK PiAgIAljdXJzb3ItPmNhbl9zY2FsZSA9IGZhbHNlOwo+ICAgCWN1cnNvci0+bWF4X2Rvd25zY2Fs ZSA9IDE7Cj4gICAJY3Vyc29yLT5waXBlID0gcGlwZTsKPiBAQCAtMTIyMjUsNiArMTIxNzksOCBA QCBzdGF0aWMgc3RydWN0IGRybV9wbGFuZSAqaW50ZWxfY3Vyc29yX3BsYW5lX2NyZWF0ZShzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgCQkJCWN1cnNvci0+cm90YXRpb24pOwo+ICAgCX0KPgo+ ICsJZHJtX3BsYW5lX2hlbHBlcl9hZGQoJmN1cnNvci0+YmFzZSwgJmludGVsX3BsYW5lX2hlbHBl cl9mdW5jcyk7Cj4gKwo+ICAgCXJldHVybiAmY3Vyc29yLT5iYXNlOwo+ICAgfQo+Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmgKPiBpbmRleCAyNTIzMzE1Li5hYjIzMTkwIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmgKPiBAQCAtMjQ4LDggKzI0OCw2IEBAIHN0cnVjdCBpbnRlbF9wbGFu ZV9zdGF0ZSB7Cj4gICAJc3RydWN0IGRybV9yZWN0IHNyYzsKPiAgIAlzdHJ1Y3QgZHJtX3JlY3Qg ZHN0Owo+ICAgCXN0cnVjdCBkcm1fcmVjdCBjbGlwOwo+IC0Jc3RydWN0IGRybV9yZWN0IG9yaWdf c3JjOwo+IC0Jc3RydWN0IGRybV9yZWN0IG9yaWdfZHN0Owo+ICAgCWJvb2wgdmlzaWJsZTsKPgo+ ICAgCS8qCj4gQEAgLTQzNyw2ICs0MzUsNyBAQCBzdHJ1Y3QgaW50ZWxfY3J0Y19hdG9taWNfY29t bWl0IHsKPiAgIAlib29sIGRpc2FibGVfZmJjOwo+ICAgCWJvb2wgcHJlX2Rpc2FibGVfcHJpbWFy eTsKPiAgIAlib29sIHVwZGF0ZV93bTsKPiArCXVuc2lnbmVkIHRyYWNrX2ZiczsKCkkgdGhpbmsg dHJhY2tfZmJzIGlzIGEgcG9vciBuYW1lIGZvciB0aGlzLCBzaW5jZSB0aGlzIGlzIGFjdHVhbGx5 IGEgbWFzayAKb2YgcGxhbmVzIGJlaW5nIGRpc2FibGVkLiBNYXliZSBjYWxsIGl0IGRpc2FibGVk X3BsYW5lcy4KCkFuZGVyCgoKPgo+ICAgCS8qIFNsZWVwYWJsZSBvcGVyYXRpb25zIHRvIHBlcmZv cm0gYWZ0ZXIgY29tbWl0ICovCj4gICAJdW5zaWduZWQgZmJfYml0czsKPiBAQCAtNTc1LDYgKzU3 NCw3IEBAIHN0cnVjdCBjeHNyX2xhdGVuY3kgewo+ICAgI2RlZmluZSB0b19pbnRlbF9lbmNvZGVy KHgpIGNvbnRhaW5lcl9vZih4LCBzdHJ1Y3QgaW50ZWxfZW5jb2RlciwgYmFzZSkKPiAgICNkZWZp bmUgdG9faW50ZWxfZnJhbWVidWZmZXIoeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCBpbnRlbF9m cmFtZWJ1ZmZlciwgYmFzZSkKPiAgICNkZWZpbmUgdG9faW50ZWxfcGxhbmUoeCkgY29udGFpbmVy X29mKHgsIHN0cnVjdCBpbnRlbF9wbGFuZSwgYmFzZSkKPiArI2RlZmluZSB0b19pbnRlbF9wbGFu ZV9zdGF0ZSh4KSBjb250YWluZXJfb2YoeCwgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlLCBiYXNl KQo+ICAgI2RlZmluZSBpbnRlbF9mYl9vYmooeCkgKHggPyB0b19pbnRlbF9mcmFtZWJ1ZmZlcih4 KS0+b2JqIDogTlVMTCkKPgo+ICAgc3RydWN0IGludGVsX2hkbWkgewo+IEBAIC0xMjUzLDQgKzEy NTMsMTAgQEAgdm9pZCBpbnRlbF9wcmVfZGlzYWJsZV9wcmltYXJ5KHN0cnVjdCBkcm1fY3J0YyAq Y3J0Yyk7Cj4gICAvKiBpbnRlbF90di5jICovCj4gICB2b2lkIGludGVsX3R2X2luaXQoc3RydWN0 IGRybV9kZXZpY2UgKmRldik7Cj4KPiArLyogaW50ZWxfYXRvbWljLmMgKi8KPiArc3RydWN0IGRy bV9wbGFuZV9zdGF0ZSAqaW50ZWxfcGxhbmVfZHVwbGljYXRlX3N0YXRlKHN0cnVjdCBkcm1fcGxh bmUgKnBsYW5lKTsKPiArdm9pZCBpbnRlbF9wbGFuZV9kZXN0cm95X3N0YXRlKHN0cnVjdCBkcm1f cGxhbmUgKnBsYW5lLAo+ICsJCQkgICAgICAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUp Owo+ICtleHRlcm4gY29uc3Qgc3RydWN0IGRybV9wbGFuZV9oZWxwZXJfZnVuY3MgaW50ZWxfcGxh bmVfaGVscGVyX2Z1bmNzOwo+ICsKPiAgICNlbmRpZiAvKiBfX0lOVEVMX0RSVl9IX18gKi8KPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwo+IGluZGV4IGE2ODljNzMuLmY4ZWZjZmQgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwo+IEBAIC0zMyw2ICszMyw3IEBACj4g ICAjaW5jbHVkZSA8ZHJtL2RybV9jcnRjLmg+Cj4gICAjaW5jbHVkZSA8ZHJtL2RybV9mb3VyY2Mu aD4KPiAgICNpbmNsdWRlIDxkcm0vZHJtX3JlY3QuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fcGxh bmVfaGVscGVyLmg+Cj4gICAjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCj4gICAjaW5jbHVkZSA8ZHJt L2k5MTVfZHJtLmg+Cj4gICAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPiBAQCAtMTA2MSwxMiArMTA2 MiwxMyBAQCBpbnRlbF9jaGVja19zcHJpdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUs Cj4gICAJdWludDMyX3Qgc3JjX3gsIHNyY195LCBzcmNfdywgc3JjX2g7Cj4gICAJc3RydWN0IGRy bV9yZWN0ICpzcmMgPSAmc3RhdGUtPnNyYzsKPiAgIAlzdHJ1Y3QgZHJtX3JlY3QgKmRzdCA9ICZz dGF0ZS0+ZHN0Owo+IC0Jc3RydWN0IGRybV9yZWN0ICpvcmlnX3NyYyA9ICZzdGF0ZS0+b3JpZ19z cmM7Cj4gICAJY29uc3Qgc3RydWN0IGRybV9yZWN0ICpjbGlwID0gJnN0YXRlLT5jbGlwOwo+ICAg CWludCBoc2NhbGUsIHZzY2FsZTsKPiAgIAlpbnQgbWF4X3NjYWxlLCBtaW5fc2NhbGU7Cj4gICAJ aW50IHBpeGVsX3NpemU7Cj4KPiArCWludGVsX2NydGMgPSBpbnRlbF9jcnRjID8gaW50ZWxfY3J0 YyA6IHRvX2ludGVsX2NydGMocGxhbmUtPmNydGMpOwo+ICsKPiAgIAlpZiAoIWZiKSB7Cj4gICAJ CXN0YXRlLT52aXNpYmxlID0gZmFsc2U7Cj4gICAJCWdvdG8gZmluaXNoOwo+IEBAIC0xMTQ3LDEw ICsxMTQ5LDEwIEBAIGludGVsX2NoZWNrX3Nwcml0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpw bGFuZSwKPiAgIAkJCQkgICAgaW50ZWxfcGxhbmUtPnJvdGF0aW9uKTsKPgo+ICAgCQkvKiBzYW5p dHkgY2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzcmMgdmlld3BvcnQgd2Fzbid0IGVubGFyZ2VkICov Cj4gLQkJV0FSTl9PTihzcmMtPngxIDwgKGludCkgb3JpZ19zcmMtPngxIHx8Cj4gLQkJCXNyYy0+ eTEgPCAoaW50KSBvcmlnX3NyYy0+eTEgfHwKPiAtCQkJc3JjLT54MiA+IChpbnQpIG9yaWdfc3Jj LT54MiB8fAo+IC0JCQlzcmMtPnkyID4gKGludCkgb3JpZ19zcmMtPnkyKTsKPiArCQlXQVJOX09O KHNyYy0+eDEgPCAoaW50KSBzdGF0ZS0+YmFzZS5zcmNfeCB8fAo+ICsJCQlzcmMtPnkxIDwgKGlu dCkgc3RhdGUtPmJhc2Uuc3JjX3kgfHwKPiArCQkJc3JjLT54MiA+IChpbnQpIHN0YXRlLT5iYXNl LnNyY194ICsgc3RhdGUtPmJhc2Uuc3JjX3cgfHwKPiArCQkJc3JjLT55MiA+IChpbnQpIHN0YXRl LT5iYXNlLnNyY195ICsgc3RhdGUtPmJhc2Uuc3JjX2gpOwo+Cj4gICAJCS8qCj4gICAJCSAqIEhh cmR3YXJlIGRvZXNuJ3QgaGFuZGxlIHN1YnBpeGVsIGNvb3JkaW5hdGVzLgo+IEBAIC0xMjQ3LDcg KzEyNDksNyBAQCBpbnRlbF9jb21taXRfc3ByaXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBs YW5lLAo+ICAgCQkJICBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnN0YXRlKQo+ICAgewo+ICAg CXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IHN0YXRlLT5iYXNlLmNydGM7Cj4gLQlzdHJ1Y3QgaW50 ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50 ZWxfY3J0YyAqaW50ZWxfY3J0YzsKPiAgIAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5l ID0gdG9faW50ZWxfcGxhbmUocGxhbmUpOwo+ICAgCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZi ID0gc3RhdGUtPmJhc2UuZmI7Cj4gICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9 IGludGVsX2ZiX29iaihmYik7Cj4gQEAgLTEyNTUsMTQgKzEyNTcsMTkgQEAgaW50ZWxfY29tbWl0 X3Nwcml0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgIAl1bnNpZ25lZCBpbnQg Y3J0Y193LCBjcnRjX2g7Cj4gICAJdWludDMyX3Qgc3JjX3gsIHNyY195LCBzcmNfdywgc3JjX2g7 Cj4KPiAtCWludGVsX3BsYW5lLT5jcnRjX3ggPSBzdGF0ZS0+b3JpZ19kc3QueDE7Cj4gLQlpbnRl bF9wbGFuZS0+Y3J0Y195ID0gc3RhdGUtPm9yaWdfZHN0LnkxOwo+IC0JaW50ZWxfcGxhbmUtPmNy dGNfdyA9IGRybV9yZWN0X3dpZHRoKCZzdGF0ZS0+b3JpZ19kc3QpOwo+IC0JaW50ZWxfcGxhbmUt PmNydGNfaCA9IGRybV9yZWN0X2hlaWdodCgmc3RhdGUtPm9yaWdfZHN0KTsKPiAtCWludGVsX3Bs YW5lLT5zcmNfeCA9IHN0YXRlLT5vcmlnX3NyYy54MTsKPiAtCWludGVsX3BsYW5lLT5zcmNfeSA9 IHN0YXRlLT5vcmlnX3NyYy55MTsKPiAtCWludGVsX3BsYW5lLT5zcmNfdyA9IGRybV9yZWN0X3dp ZHRoKCZzdGF0ZS0+b3JpZ19zcmMpOwo+IC0JaW50ZWxfcGxhbmUtPnNyY19oID0gZHJtX3JlY3Rf aGVpZ2h0KCZzdGF0ZS0+b3JpZ19zcmMpOwo+ICsJaW50ZWxfcGxhbmUtPmNydGNfeCA9IHN0YXRl LT5iYXNlLmNydGNfeDsKPiArCWludGVsX3BsYW5lLT5jcnRjX3kgPSBzdGF0ZS0+YmFzZS5jcnRj X3k7Cj4gKwlpbnRlbF9wbGFuZS0+Y3J0Y193ID0gc3RhdGUtPmJhc2UuY3J0Y193Owo+ICsJaW50 ZWxfcGxhbmUtPmNydGNfaCA9IHN0YXRlLT5iYXNlLmNydGNfaDsKPiArCWludGVsX3BsYW5lLT5z cmNfeCA9IHN0YXRlLT5iYXNlLnNyY194Owo+ICsJaW50ZWxfcGxhbmUtPnNyY195ID0gc3RhdGUt PmJhc2Uuc3JjX3k7Cj4gKwlpbnRlbF9wbGFuZS0+c3JjX3cgPSBzdGF0ZS0+YmFzZS5zcmNfdzsK PiArCWludGVsX3BsYW5lLT5zcmNfaCA9IHN0YXRlLT5iYXNlLnNyY19oOwo+ICsKPiArCWNydGMg PSBjcnRjID8gY3J0YyA6IHBsYW5lLT5jcnRjOwo+ICsJaW50ZWxfY3J0YyA9IHRvX2ludGVsX2Ny dGMoY3J0Yyk7Cj4gKwo+ICsJcGxhbmUtPmZiID0gc3RhdGUtPmJhc2UuZmI7Cj4gICAJaW50ZWxf cGxhbmUtPm9iaiA9IG9iajsKPgo+ICAgCWlmIChpbnRlbF9jcnRjLT5hY3RpdmUpIHsKPiBAQCAt MTM4NiwxMCArMTM5MywxMiBAQCBpbnQgaW50ZWxfcGxhbmVfcmVzdG9yZShzdHJ1Y3QgZHJtX3Bs YW5lICpwbGFuZSkKPiAgIH0KPgo+ICAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfZnVu Y3MgaW50ZWxfc3ByaXRlX3BsYW5lX2Z1bmNzID0gewo+IC0JLnVwZGF0ZV9wbGFuZSA9IGludGVs X3VwZGF0ZV9wbGFuZSwKPiAtCS5kaXNhYmxlX3BsYW5lID0gaW50ZWxfZGlzYWJsZV9wbGFuZSwK PiArCS51cGRhdGVfcGxhbmUgPSBkcm1fcGxhbmVfaGVscGVyX3VwZGF0ZSwKPiArCS5kaXNhYmxl X3BsYW5lID0gZHJtX3BsYW5lX2hlbHBlcl9kaXNhYmxlLAo+ICAgCS5kZXN0cm95ID0gaW50ZWxf cGxhbmVfZGVzdHJveSwKPiAgIAkuc2V0X3Byb3BlcnR5ID0gaW50ZWxfcGxhbmVfc2V0X3Byb3Bl cnR5LAo+ICsJLmF0b21pY19kdXBsaWNhdGVfc3RhdGUgPSBpbnRlbF9wbGFuZV9kdXBsaWNhdGVf c3RhdGUsCj4gKwkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSBpbnRlbF9wbGFuZV9kZXN0cm95X3N0 YXRlLAo+ICAgfTsKPgo+ICAgc3RhdGljIHVpbnQzMl90IGlsa19wbGFuZV9mb3JtYXRzW10gPSB7 Cj4gQEAgLTE0NTEsNiArMTQ2MCwxMyBAQCBpbnRlbF9wbGFuZV9pbml0KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIGVudW0gcGlwZSBwaXBlLCBpbnQgcGxhbmUpCj4gICAJaWYgKCFpbnRlbF9wbGFu ZSkKPiAgIAkJcmV0dXJuIC1FTk9NRU07Cj4KPiArCWludGVsX3BsYW5lLT5iYXNlLnN0YXRlID0K PiArCQlpbnRlbF9wbGFuZV9kdXBsaWNhdGVfc3RhdGUoJmludGVsX3BsYW5lLT5iYXNlKTsKPiAr CWlmIChpbnRlbF9wbGFuZS0+YmFzZS5zdGF0ZSA9PSBOVUxMKSB7Cj4gKwkJa2ZyZWUoaW50ZWxf cGxhbmUpOwo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsJfQo+ICsKPiAgIAlzd2l0Y2ggKElOVEVM X0lORk8oZGV2KS0+Z2VuKSB7Cj4gICAJY2FzZSA1Ogo+ICAgCWNhc2UgNjoKPiBAQCAtMTU0NCw2 ICsxNTYwLDggQEAgaW50ZWxfcGxhbmVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVt IHBpcGUgcGlwZSwgaW50IHBsYW5lKQo+ICAgCQkJCQkgICBkZXYtPm1vZGVfY29uZmlnLnJvdGF0 aW9uX3Byb3BlcnR5LAo+ICAgCQkJCQkgICBpbnRlbF9wbGFuZS0+cm90YXRpb24pOwo+Cj4gKwlk cm1fcGxhbmVfaGVscGVyX2FkZCgmaW50ZWxfcGxhbmUtPmJhc2UsICZpbnRlbF9wbGFuZV9oZWxw ZXJfZnVuY3MpOwo+ICsKPiAgICBvdXQ6Cj4gICAJcmV0dXJuIHJldDsKPiAgIH0KPgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK