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 (v9) Date: Fri, 09 Jan 2015 15:02:18 +0200 Message-ID: <54AFD15A.5050508@gmail.com> References: <1419360113-10972-1-git-send-email-matthew.d.roper@intel.com> <1419360113-10972-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 mail-wg0-f53.google.com (mail-wg0-f53.google.com [74.125.82.53]) by gabe.freedesktop.org (Postfix) with ESMTP id 1ECB46E8D5 for ; Fri, 9 Jan 2015 05:02:23 -0800 (PST) Received: by mail-wg0-f53.google.com with SMTP id x13so7986642wgg.12 for ; Fri, 09 Jan 2015 05:02:22 -0800 (PST) In-Reply-To: <1419360113-10972-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 UmV2aWV3ZWQtYnk6IEFuZGVyIENvbnNlbHZhbiBkZSBPbGl2ZWlyYSA8Y29uc2VsdmFuMkBnbWFp bC5jb20+CgpPbiAxMi8yMy8yMDE0IDA4OjQxIFBNLCBNYXR0IFJvcGVyIHdyb3RlOgo+IFN3aXRj aCBwbGFuZSBoYW5kbGluZyB0byB1c2UgdGhlIGF0b21pYyBwbGFuZSBoZWxwZXJzLiAgVGhpcyBt ZWFucyB0aGF0Cj4gcmF0aGVyIHRoYW4gcHJvdmlkZSBvdXIgb3duIGltcGxlbWVudGF0aW9ucyBv ZiAudXBkYXRlX3BsYW5lKCkgYW5kCj4gLmRpc2FibGVfcGxhbmUoKSwgd2UgZXhwb3NlIHRoZSBs b3dlci1sZXZlbCBjaGVjay9wcmVwYXJlL2NvbW1pdC9jbGVhbnVwCj4gZW50cnlwb2ludHMgYW5k IGxldCB0aGUgRFJNIGNvcmUgaW1wbGVtZW50IHVwZGF0ZS9kaXNhYmxlIGZvciB1cyB1c2luZwo+ IHRob3NlIGVudHJ5cG9pbnRzLgo+Cj4gVGhlIG90aGVyIG1haW4gY2hhbmdlIHRoYXQgZmFsbHMg b3V0IG9mIHRoaXMgcGF0Y2ggaXMgdGhhdCBvdXIKPiBkcm1fcGxhbmUncyB3aWxsIG5vdyBhbHdh eXMgaGF2ZSBhIHZhbGlkIHBsYW5lLT5zdGF0ZSB0aGF0IGNvbnRhaW5zIHRoZQo+IHJlbGV2YW50 IHBsYW5lIHN0YXRlIChpbml0aWFsIHN0YXRlIGlzIGFsbG9jYXRlZCBhdCBwbGFuZSBjcmVhdGlv bikuCj4gVGhlIGJhc2UgZHJtX3BsYW5lX3N0YXRlIHBvaW50ZWQgdG8gaG9sZHMgdGhlIHJlcXVl c3RlZCBzb3VyY2UvZGVzdAo+IGNvb3JkaW5hdGVzLCBhbmQgdGhlIHN1YmNsYXNzZWQgaW50ZWxf cGxhbmVfc3RhdGUgaG9sZHMgdGhlIGFkanVzdGVkCj4gdmFsdWVzIHRoYXQgb3VyIGRyaXZlciBh Y3R1YWxseSB1c2VzLgo+Cj4gdjI6Cj4gICAtIFJlbmFtZWQgZmlsZSBmcm9tIGludGVsX2F0b21p Yy5jIHRvIGludGVsX2F0b21pY19wbGFuZS5jIChEYW5pZWwpCj4gICAtIEZpeCBhIGNvcHkvcGFz dGUgY29tbWVudCBtaXN0YWtlIChCb2IpCj4KPiB2MzoKPiAgIC0gVXNlIHByZXBhcmUvY2xlYW51 cCBmdW5jdGlvbnMgdGhhdCB3ZSd2ZSBhbHJlYWR5IGZhY3RvcmVkIG91dAo+ICAgLSBVc2UgbmV3 bHkgcmVmYWN0b3JlZCBwcmVfY29tbWl0L2NvbW1pdC9wb3N0X2NvbW1pdCB0byBhdm9pZCBzbGVl cGluZwo+ICAgICBkdXJpbmcgdmJsYW5rIGV2YXNpb24KPgo+IHY0Ogo+ICAgLSBSZWJhc2UgdG8g bGF0ZXN0IGRpLW5pZ2h0bHkgcmVxdWlyZXMgYWRkaW5nIGFuICdvbGRfc3RhdGUnIHBhcmFtZXRl cgo+ICAgICB0byBhdG9taWNfdXBkYXRlOwo+Cj4gdjU6Cj4gICAtIE11c3QgaGF2ZSBib3RjaGVk IGEgcmViYXNlIHNvbWV3aGVyZSBhbmQgbG9zdCBzb21lIHdvcmsuICBSZXN0b3JlCj4gICAgIHN0 YXRlICdkaXJ0eScgZmxhZyB0byBsZXQgYmVnaW4vZW5kIGNvZGUga25vdyB3aGljaCBwbGFuZXMg dG8KPiAgICAgcnVuIHRoZSBwcmVfY29tbWl0L3Bvc3RfY29tbWl0IGhvb2tzIGZvci4gIFRoaXMg d291bGQgaGF2ZSBhY3R1YWxseQo+ICAgICBzaG93biB1cCBhcyBicm9rZW4gaW4gdGhlIG5leHQg Y29tbWl0IHJhdGhlciB0aGFuIHRoaXMgb25lLgo+Cj4gdjY6Cj4gICAtIFNxdWFzaCBrZXJuZWxk b2MgcGF0Y2ggaW50byB0aGlzIG9uZS4KPiAgIC0gUHJldmlvdXMgcGF0Y2hlcyBoYXZlIG5vdyBh bHJlYWR5IHRha2VuIGNhcmUgb2YgbW9zdCBvZiB0aGUKPiAgICAgaW5mcmFzdHJ1Y3R1cmUgdGhh dCB1c2VkIHRvIGJlIGluIHRoaXMgcGF0Y2guICBBbGwgd2UncmUgYWRkaW5nIGhlcmUKPiAgICAg bm93IGlzIHNvbWUgdGhpbiB3cmFwcGVycy4KPgo+IHY3Ogo+ICAgLSBDaGVjayByZXR1cm4gb2Yg aW50ZWxfcGxhbmVfZHVwbGljYXRlX3N0YXRlKCkgZm9yIGFsbG9jYXRpb24KPiAgICAgZmFpbHVy ZXMuCj4KPiB2ODoKPiAgIC0gRHJvcCB1bnVzZWQgZHJtX3BsYW5lX3N0YXRlIC0+IGludGVsX3Bs YW5lX3N0YXRlIGNhc3QuICAoQW5kZXIpCj4gICAtIFNxdWFzaCBpbiBhY3R1YWwgdHJhbnNpdGlv biB0byBwbGFuZSBoZWxwZXJzLiAgU2lnbmlmaWNhbnQKPiAgICAgcmVmYWN0b3JpbmcgZWFybGll ciBpbiB0aGUgcGF0Y2hzZXQgaGFzIG1hZGUgdGhlIGNvbWJpbmVkCj4gICAgIHByZXArdHJhbnNp dGlvbiBtdWNoIGVhc2llciB0byBzd2FsbG93IHRoYW4gaXQgd2FzIGluIGVhcmxpZXIKPiAgICAg aXRlcmF0aW9ucy4gKEFuZGVyKQo+Cj4gdjk6Cj4gICAtIHMvdHJhY2tfZmJzL2Rpc2FibGVkX3Bs YW5lcy8gaW4gdGhlIGF0b21pYyBjcnRjIGZsYWdzLiAgVGhlIG9ubHkgZmIncwo+ICAgICB3ZSBu ZWVkIHRvIHVwZGF0ZSBmcm9udGJ1ZmZlciB0cmFja2luZyBmb3IgYXJlIHRob3NlIG9uIGEgcGxh bmUgYWJvdXQKPiAgICAgdG8gYmUgZGlzYWJsZWQgKHNpbmNlIHRoZSBhdG9taWMgaGVscGVycyBu ZXZlciBjYWxsIHByZXBhcmVfZmIoKSB3aGVuCj4gICAgIGRpc2FibGluZyBhIHBsYW5lKSwgc28g dGhlIG5ldyBuYW1lIG1vcmUgYWNjdXJhdGVseSBkZXNjcmliZXMgd2hhdAo+ICAgICB3ZSdyZSBh Y3R1YWxseSB0cmFja2luZy4KPgo+IFRlc3RjYXNlOiBpZ3Qva21zX3BsYW5lCj4gVGVzdGNhc2U6 IGlndC9rbXNfdW5pdmVyc2FsX3BsYW5lCj4gVGVzdGNhc2U6IGlndC9rbXNfY3Vyc29yX2NyYwo+ IFNpZ25lZC1vZmYtYnk6IE1hdHQgUm9wZXIgPG1hdHRoZXcuZC5yb3BlckBpbnRlbC5jb20+Cj4g LS0tCj4gICBEb2N1bWVudGF0aW9uL0RvY0Jvb2svZHJtLnRtcGwgICAgICAgICAgICB8ICAgNSAr Cj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICAgICAgICAgICB8ICAgMSArCj4g ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYyB8IDE1MSArKysrKysr KysrKysrKysrKysKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyAgICAg IHwgMjUxICsrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmggICAgICAgICAgfCAgMTAgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3Nwcml0ZS5jICAgICAgIHwgIDUwICsrKystLQo+ICAgNiBmaWxlcyBjaGFuZ2Vk LCAzMDMgaW5zZXJ0aW9ucygrKSwgMTY1IGRlbGV0aW9ucygtKQo+ICAgY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5jCj4KPiBkaWZmIC0t Z2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2RybS50bXBsIGIvRG9jdW1lbnRhdGlvbi9Eb2NC b29rL2RybS50bXBsCj4gaW5kZXggM2IyNTcxZS4uMTY5ZDIwNSAxMDA2NDQKPiAtLS0gYS9Eb2N1 bWVudGF0aW9uL0RvY0Jvb2svZHJtLnRtcGwKPiArKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2sv ZHJtLnRtcGwKPiBAQCAtNDAxOCw2ICs0MDE4LDExIEBAIGludCBudW1faW9jdGxzOzwvc3lub3Bz aXM+Cj4gICAgICAgICAgIDwvcGFyYT4KPiAgICAgICAgIDwvc2VjdDI+Cj4gICAgICAgICA8c2Vj dDI+Cj4gKyAgICAgICAgPHRpdGxlPkF0b21pYyBQbGFuZSBIZWxwZXJzPC90aXRsZT4KPiArIVBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYyBhdG9taWMgcGxhbmUgaGVs cGVycwo+ICshSWRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5jCj4gKyAg ICAgIDwvc2VjdDI+Cj4gKyAgICAgIDxzZWN0Mj4KPiAgICAgICAgICAgPHRpdGxlPk91dHB1dCBQ cm9iaW5nPC90aXRsZT4KPiAgICAgICAgICAgPHBhcmE+Cj4gICAJICBUaGlzIHNlY3Rpb24gY292 ZXJzIG91dHB1dCBwcm9iaW5nIGFuZCByZWxhdGVkIGluZnJhc3RydWN0dXJlIGxpa2UgdGhlCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvTWFrZWZpbGUKPiBpbmRleCAxODQ5ZmZhLi4xNmUzZGMzIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvTWFrZWZpbGUKPiBAQCAtNjYsNiArNjYsNyBAQCBpOTE1LXkgKz0gZHZvX2NoNzAxNy5vIFwK PiAgIAkgIGR2b19uczI1MDEubyBcCj4gICAJICBkdm9fc2lsMTY0Lm8gXAo+ICAgCSAgZHZvX3Rm cDQxMC5vIFwKPiArCSAgaW50ZWxfYXRvbWljX3BsYW5lLm8gXAo+ICAgCSAgaW50ZWxfY3J0Lm8g XAo+ICAgCSAgaW50ZWxfZGRpLm8gXAo+ICAgCSAgaW50ZWxfZHAubyBcCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGlu ZGV4IDAwMDAwMDAuLmU3NDI1ZDZjCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5jCj4gQEAgLTAsMCArMSwxNTEgQEAKPiArLyoK PiArICogQ29weXJpZ2h0IMKpIDIwMTQgSW50ZWwgQ29ycG9yYXRpb24KPiArICoKPiArICogUGVy bWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24g b2J0YWluaW5nIGEKPiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRv Y3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKPiArICogdG8gZGVhbCBpbiB0aGUg U29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlv bgo+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwg ZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKPiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBT b2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCj4gKyAqIFNvZnR3YXJl IGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlv bnM6Cj4gKyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1p c3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKPiArICogcGFyYWdyYXBoKSBzaGFsbCBi ZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQo+ ICsgKiBTb2Z0d2FyZS4KPiArICoKPiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJ UyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPiArICogSU1QTElF RCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFO VEFCSUxJVFksCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05J TkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAo+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZ UklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+ ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9S IE9USEVSV0lTRSwgQVJJU0lORwo+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBX SVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCj4gKyAqIERFQUxJTkdTIElOIFRI RSBTT0ZUV0FSRS4KPiArICovCj4gKwo+ICsvKioKPiArICogRE9DOiBhdG9taWMgcGxhbmUgaGVs cGVyIHN1cHBvcnQKPiArICoKPiArICogVGhlIGZ1bmN0aW9ucyBoZXJlIGFyZSB1c2VkIGJ5IHRo ZSBhdG9taWMgcGxhbmUgaGVscGVyIGZ1bmN0aW9ucyB0bwo+ICsgKiBpbXBsZW1lbnQgbGVnYWN5 IHBsYW5lIHVwZGF0ZXMgKGkuZS4sIGRybV9wbGFuZS0+dXBkYXRlX3BsYW5lKCkgYW5kCj4gKyAq IGRybV9wbGFuZS0+ZGlzYWJsZV9wbGFuZSgpKS4gIFRoaXMgYWxsb3dzIHBsYW5lIHVwZGF0ZXMg dG8gdXNlIHRoZQo+ICsgKiBhdG9taWMgc3RhdGUgaW5mcmFzdHJ1Y3R1cmUgYW5kIHBlcmZvcm0g cGxhbmUgdXBkYXRlcyBhcyBzZXBhcmF0ZQo+ICsgKiBwcmVwYXJlL2NoZWNrL2NvbW1pdC9jbGVh bnVwIHN0ZXBzLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+ICsjaW5jbHVk ZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX3BsYW5lX2hl bHBlci5oPgo+ICsjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCj4gKwo+ICsvKioKPiArICogaW50ZWxf cGxhbmVfZHVwbGljYXRlX3N0YXRlIC0gZHVwbGljYXRlIHBsYW5lIHN0YXRlCj4gKyAqIEBwbGFu ZTogZHJtIHBsYW5lCj4gKyAqCj4gKyAqIEFsbG9jYXRlcyBhbmQgcmV0dXJucyBhIGNvcHkgb2Yg dGhlIHBsYW5lIHN0YXRlIChib3RoIGNvbW1vbiBhbmQKPiArICogSW50ZWwtc3BlY2lmaWMpIGZv ciB0aGUgc3BlY2lmaWVkIHBsYW5lLgo+ICsgKgo+ICsgKiBSZXR1cm5zOiBUaGUgbmV3bHkgYWxs b2NhdGVkIHBsYW5lIHN0YXRlLCBvciBOVUxMIG9yIGZhaWx1cmUuCj4gKyAqLwo+ICtzdHJ1Y3Qg ZHJtX3BsYW5lX3N0YXRlICoKPiAraW50ZWxfcGxhbmVfZHVwbGljYXRlX3N0YXRlKHN0cnVjdCBk cm1fcGxhbmUgKnBsYW5lKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnN0YXRl Owo+ICsKPiArCWlmIChwbGFuZS0+c3RhdGUpCj4gKwkJc3RhdGUgPSBrbWVtZHVwKHBsYW5lLT5z dGF0ZSwgc2l6ZW9mKCpzdGF0ZSksIEdGUF9LRVJORUwpOwo+ICsJZWxzZQo+ICsJCXN0YXRlID0g a3phbGxvYyhzaXplb2YoKnN0YXRlKSwgR0ZQX0tFUk5FTCk7Cj4gKwo+ICsJaWYgKCFzdGF0ZSkK PiArCQlyZXR1cm4gTlVMTDsKPiArCj4gKwlpZiAoc3RhdGUtPmJhc2UuZmIpCj4gKwkJZHJtX2Zy YW1lYnVmZmVyX3JlZmVyZW5jZShzdGF0ZS0+YmFzZS5mYik7Cj4gKwo+ICsJcmV0dXJuICZzdGF0 ZS0+YmFzZTsKPiArfQo+ICsKPiArLyoqCj4gKyAqIGludGVsX3BsYW5lX2Rlc3Ryb3lfc3RhdGUg LSBkZXN0cm95IHBsYW5lIHN0YXRlCj4gKyAqIEBwbGFuZTogZHJtIHBsYW5lCj4gKyAqCj4gKyAq IERlc3Ryb3lzIHRoZSBwbGFuZSBzdGF0ZSAoYm90aCBjb21tb24gYW5kIEludGVsLXNwZWNpZmlj KSBmb3IgdGhlCj4gKyAqIHNwZWNpZmllZCBwbGFuZS4KPiArICovCj4gK3ZvaWQKPiAraW50ZWxf cGxhbmVfZGVzdHJveV9zdGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiArCQkJICBzdHJ1 Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSkKPiArewo+ICsJZHJtX2F0b21pY19oZWxwZXJfcGxh bmVfZGVzdHJveV9zdGF0ZShwbGFuZSwgc3RhdGUpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGlu dGVsX3BsYW5lX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiArCQkJCSAg ICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSkKPiArewo+ICsJc3RydWN0IGRybV9jcnRj ICpjcnRjID0gc3RhdGUtPmNydGM7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YzsK PiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFu ZSk7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKmludGVsX3N0YXRlID0gdG9faW50ZWxf cGxhbmVfc3RhdGUoc3RhdGUpOwo+ICsKPiArCWNydGMgPSBjcnRjID8gY3J0YyA6IHBsYW5lLT5j cnRjOwo+ICsJaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gKwo+ICsJLyoKPiAr CSAqIFRoZSBvcmlnaW5hbCBzcmMvZGVzdCBjb29yZGluYXRlcyBhcmUgc3RvcmVkIGluIHN0YXRl LT5iYXNlLCBidXQKPiArCSAqIHdlIHdhbnQgdG8ga2VlcCBhbm90aGVyIGNvcHkgaW50ZXJuYWwg dG8gb3VyIGRyaXZlciB0aGF0IHdlIGNhbgo+ICsJICogY2xpcC9tb2RpZnkgb3Vyc2VsdmVzLgo+ ICsJICovCj4gKwlpbnRlbF9zdGF0ZS0+c3JjLngxID0gc3RhdGUtPnNyY194Owo+ICsJaW50ZWxf c3RhdGUtPnNyYy55MSA9IHN0YXRlLT5zcmNfeTsKPiArCWludGVsX3N0YXRlLT5zcmMueDIgPSBz dGF0ZS0+c3JjX3ggKyBzdGF0ZS0+c3JjX3c7Cj4gKwlpbnRlbF9zdGF0ZS0+c3JjLnkyID0gc3Rh dGUtPnNyY195ICsgc3RhdGUtPnNyY19oOwo+ICsJaW50ZWxfc3RhdGUtPmRzdC54MSA9IHN0YXRl LT5jcnRjX3g7Cj4gKwlpbnRlbF9zdGF0ZS0+ZHN0LnkxID0gc3RhdGUtPmNydGNfeTsKPiArCWlu dGVsX3N0YXRlLT5kc3QueDIgPSBzdGF0ZS0+Y3J0Y194ICsgc3RhdGUtPmNydGNfdzsKPiArCWlu dGVsX3N0YXRlLT5kc3QueTIgPSBzdGF0ZS0+Y3J0Y195ICsgc3RhdGUtPmNydGNfaDsKPiArCj4g KwkvKiBDbGlwIGFsbCBwbGFuZXMgdG8gQ1JUQyBzaXplLCBvciAweDAgaWYgQ1JUQyBpcyBkaXNh YmxlZCAqLwo+ICsJaW50ZWxfc3RhdGUtPmNsaXAueDEgPSAwOwo+ICsJaW50ZWxfc3RhdGUtPmNs aXAueTEgPSAwOwo+ICsJaW50ZWxfc3RhdGUtPmNsaXAueDIgPQo+ICsJCWludGVsX2NydGMtPmFj dGl2ZSA/IGludGVsX2NydGMtPmNvbmZpZy5waXBlX3NyY193IDogMDsKPiArCWludGVsX3N0YXRl LT5jbGlwLnkyID0KPiArCQlpbnRlbF9jcnRjLT5hY3RpdmUgPyBpbnRlbF9jcnRjLT5jb25maWcu cGlwZV9zcmNfaCA6IDA7Cj4gKwo+ICsJLyoKPiArCSAqIERpc2FibGluZyBhIHBsYW5lIGlzIGFs d2F5cyBva2F5OyB3ZSBqdXN0IG5lZWQgdG8gdXBkYXRlCj4gKwkgKiBmYiB0cmFja2luZyBpbiBh IHNwZWNpYWwgd2F5IHNpbmNlIGNsZWFudXBfZmIoKSB3b24ndAo+ICsJICogZ2V0IGNhbGxlZCBi eSB0aGUgcGxhbmUgaGVscGVycy4KPiArCSAqLwo+ICsJaWYgKHN0YXRlLT5mYiA9PSBOVUxMICYm IHBsYW5lLT5zdGF0ZS0+ZmIgIT0gTlVMTCkgewo+ICsJCS8qCj4gKwkJICogJ3ByZXBhcmUnIGlz IG5ldmVyIGNhbGxlZCB3aGVuIHBsYW5lIGlzIGJlaW5nIGRpc2FibGVkLCBzbwo+ICsJCSAqIHdl IG5lZWQgdG8gaGFuZGxlIGZyb250YnVmZmVyIHRyYWNraW5nIGFzIGEgc3BlY2lhbCBjYXNlCj4g KwkJICovCj4gKwkJaW50ZWxfY3J0Yy0+YXRvbWljLmRpc2FibGVkX3BsYW5lcyB8PQo+ICsJCQko MSA8PCBkcm1fcGxhbmVfaW5kZXgocGxhbmUpKTsKPiArCX0KPiArCj4gKwlyZXR1cm4gaW50ZWxf cGxhbmUtPmNoZWNrX3BsYW5lKHBsYW5lLCBpbnRlbF9zdGF0ZSk7Cj4gK30KPiArCj4gK3N0YXRp YyB2b2lkIGludGVsX3BsYW5lX2F0b21pY191cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUs Cj4gKwkJCQkgICAgICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpvbGRfc3RhdGUpCj4gK3sKPiAr CXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZSk7 Cj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKmludGVsX3N0YXRlID0KPiArCQl0b19pbnRl bF9wbGFuZV9zdGF0ZShwbGFuZS0+c3RhdGUpOwo+ICsKPiArCS8qIERvbid0IGRpc2FibGUgYW4g YWxyZWFkeSBkaXNhYmxlZCBwbGFuZSAqLwo+ICsJaWYgKCFwbGFuZS0+c3RhdGUtPmZiICYmICFv bGRfc3RhdGUtPmZiKQo+ICsJCXJldHVybjsKPiArCj4gKwlpbnRlbF9wbGFuZS0+Y29tbWl0X3Bs YW5lKHBsYW5lLCBpbnRlbF9zdGF0ZSk7Cj4gK30KPiArCj4gK2NvbnN0IHN0cnVjdCBkcm1fcGxh bmVfaGVscGVyX2Z1bmNzIGludGVsX3BsYW5lX2hlbHBlcl9mdW5jcyA9IHsKPiArCS5wcmVwYXJl X2ZiID0gaW50ZWxfcHJlcGFyZV9wbGFuZV9mYiwKPiArCS5jbGVhbnVwX2ZiID0gaW50ZWxfY2xl YW51cF9wbGFuZV9mYiwKPiArCS5hdG9taWNfY2hlY2sgPSBpbnRlbF9wbGFuZV9hdG9taWNfY2hl Y2ssCj4gKwkuYXRvbWljX3VwZGF0ZSA9IGludGVsX3BsYW5lX2F0b21pY191cGRhdGUsCj4gK307 Cj4gKwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBpbmRleCA0YmIxYTM3Li5l N2I1MWRiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC05OCw2 ICs5OCw4IEBAIHN0YXRpYyB2b2lkIHZsdl9wcmVwYXJlX3BsbChzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YywKPiAgIAkJCSAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19jb25maWcgKnBpcGVfY29u ZmlnKTsKPiAgIHN0YXRpYyB2b2lkIGNodl9wcmVwYXJlX3BsbChzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YywKPiAgIAkJCSAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19jb25maWcgKnBpcGVfY29u ZmlnKTsKPiArc3RhdGljIHZvaWQgaW50ZWxfYmVnaW5fY3J0Y19jb21taXQoc3RydWN0IGRybV9j cnRjICpjcnRjKTsKPiArc3RhdGljIHZvaWQgaW50ZWxfZmluaXNoX2NydGNfY29tbWl0KHN0cnVj dCBkcm1fY3J0YyAqY3J0Yyk7Cj4KPiAgIHN0YXRpYyBzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50 ZWxfZmluZF9lbmNvZGVyKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwgaW50IHBp cGUpCj4gICB7Cj4gQEAgLTk3OTQsNiArOTc5Niw4IEBAIG91dF9oYW5nOgo+ICAgc3RhdGljIHN0 cnVjdCBkcm1fY3J0Y19oZWxwZXJfZnVuY3MgaW50ZWxfaGVscGVyX2Z1bmNzID0gewo+ICAgCS5t b2RlX3NldF9iYXNlX2F0b21pYyA9IGludGVsX3BpcGVfc2V0X2Jhc2VfYXRvbWljLAo+ICAgCS5s b2FkX2x1dCA9IGludGVsX2NydGNfbG9hZF9sdXQsCj4gKwkuYXRvbWljX2JlZ2luID0gaW50ZWxf YmVnaW5fY3J0Y19jb21taXQsCj4gKwkuYXRvbWljX2ZsdXNoID0gaW50ZWxfZmluaXNoX2NydGNf Y29tbWl0LAo+ICAgfTsKPgo+ICAgLyoqCj4gQEAgLTExNjc0LDcgKzExNjc4LDcgQEAgaW50ZWxf cHJlcGFyZV9wbGFuZV9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgIAl1bnNpZ25lZCBm cm9udGJ1ZmZlcl9iaXRzID0gMDsKPiAgIAlpbnQgcmV0ID0gMDsKPgo+IC0JaWYgKFdBUk5fT04o ZmIgPT0gcGxhbmUtPmZiIHx8ICFvYmopKQo+ICsJaWYgKCFvYmopCj4gICAJCXJldHVybiAwOwo+ Cj4gICAJc3dpdGNoIChwbGFuZS0+dHlwZSkgewo+IEBAIC0xMTc0MSw3ICsxMTc0NSw3IEBAIGlu dGVsX2NoZWNrX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gICAJc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IHBsYW5lLT5kZXY7Cj4gICAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgIAlzdHJ1Y3QgZHJtX2NydGMg KmNydGMgPSBzdGF0ZS0+YmFzZS5jcnRjOwo+IC0Jc3RydWN0IGludGVsX2NydGMgKmludGVsX2Ny dGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmludGVsX2Ny dGM7Cj4gICAJc3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5l KHBsYW5lKTsKPiAgIAlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHN0YXRlLT5iYXNlLmZi Owo+ICAgCXN0cnVjdCBkcm1fcmVjdCAqZGVzdCA9ICZzdGF0ZS0+ZHN0Owo+IEBAIC0xMTc0OSw2 ICsxMTc1Myw5IEBAIGludGVsX2NoZWNrX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAq cGxhbmUsCj4gICAJY29uc3Qgc3RydWN0IGRybV9yZWN0ICpjbGlwID0gJnN0YXRlLT5jbGlwOwo+ ICAgCWludCByZXQ7Cj4KPiArCWNydGMgPSBjcnRjID8gY3J0YyA6IHBsYW5lLT5jcnRjOwo+ICsJ aW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gKwo+ICAgCXJldCA9IGRybV9wbGFu ZV9oZWxwZXJfY2hlY2tfdXBkYXRlKHBsYW5lLCBjcnRjLCBmYiwKPiAgIAkJCQkJICAgIHNyYywg ZGVzdCwgY2xpcCwKPiAgIAkJCQkJICAgIERSTV9QTEFORV9IRUxQRVJfTk9fU0NBTElORywKPiBA QCAtMTE4MDQsMjMgKzExODExLDI2IEBAIGludGVsX2NvbW1pdF9wcmltYXJ5X3BsYW5lKHN0cnVj dCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAgCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gc3Rh dGUtPmJhc2UuZmI7Cj4gICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHBsYW5lLT5kZXY7Cj4g ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsK PiAtCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsK PiArCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjOwo+ICAgCXN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmogPSBpbnRlbF9mYl9vYmooZmIpOwo+ICAgCXN0cnVjdCBpbnRlbF9wbGFu ZSAqaW50ZWxfcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZSk7Cj4gICAJc3RydWN0IGRybV9y ZWN0ICpzcmMgPSAmc3RhdGUtPnNyYzsKPgo+ICsJY3J0YyA9IGNydGMgPyBjcnRjIDogcGxhbmUt PmNydGM7Cj4gKwlpbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiArCj4gICAJcGxh bmUtPmZiID0gZmI7Cj4gICAJY3J0Yy0+eCA9IHNyYy0+eDEgPj4gMTY7Cj4gICAJY3J0Yy0+eSA9 IHNyYy0+eTEgPj4gMTY7Cj4KPiAtCWludGVsX3BsYW5lLT5jcnRjX3ggPSBzdGF0ZS0+b3JpZ19k c3QueDE7Cj4gLQlpbnRlbF9wbGFuZS0+Y3J0Y195ID0gc3RhdGUtPm9yaWdfZHN0LnkxOwo+IC0J aW50ZWxfcGxhbmUtPmNydGNfdyA9IGRybV9yZWN0X3dpZHRoKCZzdGF0ZS0+b3JpZ19kc3QpOwo+ IC0JaW50ZWxfcGxhbmUtPmNydGNfaCA9IGRybV9yZWN0X2hlaWdodCgmc3RhdGUtPm9yaWdfZHN0 KTsKPiAtCWludGVsX3BsYW5lLT5zcmNfeCA9IHN0YXRlLT5vcmlnX3NyYy54MTsKPiAtCWludGVs X3BsYW5lLT5zcmNfeSA9IHN0YXRlLT5vcmlnX3NyYy55MTsKPiAtCWludGVsX3BsYW5lLT5zcmNf dyA9IGRybV9yZWN0X3dpZHRoKCZzdGF0ZS0+b3JpZ19zcmMpOwo+IC0JaW50ZWxfcGxhbmUtPnNy Y19oID0gZHJtX3JlY3RfaGVpZ2h0KCZzdGF0ZS0+b3JpZ19zcmMpOwo+ICsJaW50ZWxfcGxhbmUt PmNydGNfeCA9IHN0YXRlLT5iYXNlLmNydGNfeDsKPiArCWludGVsX3BsYW5lLT5jcnRjX3kgPSBz dGF0ZS0+YmFzZS5jcnRjX3k7Cj4gKwlpbnRlbF9wbGFuZS0+Y3J0Y193ID0gc3RhdGUtPmJhc2Uu Y3J0Y193Owo+ICsJaW50ZWxfcGxhbmUtPmNydGNfaCA9IHN0YXRlLT5iYXNlLmNydGNfaDsKPiAr CWludGVsX3BsYW5lLT5zcmNfeCA9IHN0YXRlLT5iYXNlLnNyY194Owo+ICsJaW50ZWxfcGxhbmUt PnNyY195ID0gc3RhdGUtPmJhc2Uuc3JjX3k7Cj4gKwlpbnRlbF9wbGFuZS0+c3JjX3cgPSBzdGF0 ZS0+YmFzZS5zcmNfdzsKPiArCWludGVsX3BsYW5lLT5zcmNfaCA9IHN0YXRlLT5iYXNlLnNyY19o Owo+ICAgCWludGVsX3BsYW5lLT5vYmogPSBvYmo7Cj4KPiAgIAlpZiAoaW50ZWxfY3J0Yy0+YWN0 aXZlKSB7Cj4gQEAgLTExODUwLDYgKzExODYwLDMzIEBAIHN0YXRpYyB2b2lkIGludGVsX2JlZ2lu X2NydGNfY29tbWl0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgIAlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gICAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMg PSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ICsJc3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFu ZTsKPiArCXN0cnVjdCBkcm1fcGxhbmUgKnA7Cj4gKwl1bnNpZ25lZCBmYl9iaXRzID0gMDsKPiAr Cj4gKwkvKiBUcmFjayBmYidzIGZvciBhbnkgcGxhbmVzIGJlaW5nIGRpc2FibGVkICovCj4gKwls aXN0X2Zvcl9lYWNoX2VudHJ5KHAsICZkZXYtPm1vZGVfY29uZmlnLnBsYW5lX2xpc3QsIGhlYWQp IHsKPiArCQlpbnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5lKHApOwo+ICsKPiArCQlpZiAoaW50 ZWxfY3J0Yy0+YXRvbWljLmRpc2FibGVkX3BsYW5lcyAmCj4gKwkJICAgICgxIDw8IGRybV9wbGFu ZV9pbmRleChwKSkpIHsKPiArCQkJc3dpdGNoIChwLT50eXBlKSB7Cj4gKwkJCWNhc2UgRFJNX1BM QU5FX1RZUEVfUFJJTUFSWToKPiArCQkJCWZiX2JpdHMgPSBJTlRFTF9GUk9OVEJVRkZFUl9QUklN QVJZKGludGVsX3BsYW5lLT5waXBlKTsKPiArCQkJCWJyZWFrOwo+ICsJCQljYXNlIERSTV9QTEFO RV9UWVBFX0NVUlNPUjoKPiArCQkJCWZiX2JpdHMgPSBJTlRFTF9GUk9OVEJVRkZFUl9DVVJTT1Io aW50ZWxfcGxhbmUtPnBpcGUpOwo+ICsJCQkJYnJlYWs7Cj4gKwkJCWNhc2UgRFJNX1BMQU5FX1RZ UEVfT1ZFUkxBWToKPiArCQkJCWZiX2JpdHMgPSBJTlRFTF9GUk9OVEJVRkZFUl9TUFJJVEUoaW50 ZWxfcGxhbmUtPnBpcGUpOwo+ICsJCQkJYnJlYWs7Cj4gKwkJCX0KPiArCj4gKwkJCW11dGV4X2xv Y2soJmRldi0+c3RydWN0X211dGV4KTsKPiArCQkJaTkxNV9nZW1fdHJhY2tfZmIoaW50ZWxfZmJf b2JqKHAtPmZiKSwgTlVMTCwgZmJfYml0cyk7Cj4gKwkJCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1 Y3RfbXV0ZXgpOwo+ICsJCX0KPiArCX0KPgo+ICAgCWlmIChpbnRlbF9jcnRjLT5hdG9taWMud2Fp dF9mb3JfZmxpcHMpCj4gICAJCWludGVsX2NydGNfd2FpdF9mb3JfcGVuZGluZ19mbGlwcyhjcnRj KTsKPiBAQCAtMTE5MDcsMTExICsxMTk0NCw2IEBAIHN0YXRpYyB2b2lkIGludGVsX2ZpbmlzaF9j cnRjX2NvbW1pdChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gICAJbWVtc2V0KCZpbnRlbF9jcnRj LT5hdG9taWMsIDAsIHNpemVvZihpbnRlbF9jcnRjLT5hdG9taWMpKTsKPiAgIH0KPgo+IC1pbnQK PiAtaW50ZWxfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJt X2NydGMgKmNydGMsCj4gLQkJICAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsIGludCBjcnRj X3gsIGludCBjcnRjX3ksCj4gLQkJICAgdW5zaWduZWQgaW50IGNydGNfdywgdW5zaWduZWQgaW50 IGNydGNfaCwKPiAtCQkgICB1aW50MzJfdCBzcmNfeCwgdWludDMyX3Qgc3JjX3ksCj4gLQkJICAg dWludDMyX3Qgc3JjX3csIHVpbnQzMl90IHNyY19oKQo+IC17Cj4gLQlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gcGxhbmUtPmRldjsKPiAtCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKm9sZF9mYiA9 IHBsYW5lLT5mYjsKPiAtCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSBzdGF0ZSA9IHt7IDAgfX07 Cj4gLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lID0gdG9faW50ZWxfcGxhbmUocGxh bmUpOwo+IC0Jc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNy dGMpOwo+IC0JaW50IHJldDsKPiAtCj4gLQlzdGF0ZS5iYXNlLmNydGMgPSBjcnRjID8gY3J0YyA6 IHBsYW5lLT5jcnRjOwo+IC0Jc3RhdGUuYmFzZS5mYiA9IGZiOwo+IC0KPiAtCS8qIHNhbXBsZSBj b29yZGluYXRlcyBpbiAxNi4xNiBmaXhlZCBwb2ludCAqLwo+IC0Jc3RhdGUuc3JjLngxID0gc3Jj X3g7Cj4gLQlzdGF0ZS5zcmMueDIgPSBzcmNfeCArIHNyY193Owo+IC0Jc3RhdGUuc3JjLnkxID0g c3JjX3k7Cj4gLQlzdGF0ZS5zcmMueTIgPSBzcmNfeSArIHNyY19oOwo+IC0KPiAtCS8qIGludGVn ZXIgcGl4ZWxzICovCj4gLQlzdGF0ZS5kc3QueDEgPSBjcnRjX3g7Cj4gLQlzdGF0ZS5kc3QueDIg PSBjcnRjX3ggKyBjcnRjX3c7Cj4gLQlzdGF0ZS5kc3QueTEgPSBjcnRjX3k7Cj4gLQlzdGF0ZS5k c3QueTIgPSBjcnRjX3kgKyBjcnRjX2g7Cj4gLQo+IC0Jc3RhdGUuY2xpcC54MSA9IDA7Cj4gLQlz dGF0ZS5jbGlwLnkxID0gMDsKPiAtCXN0YXRlLmNsaXAueDIgPSBpbnRlbF9jcnRjLT5hY3RpdmUg PyBpbnRlbF9jcnRjLT5jb25maWcucGlwZV9zcmNfdyA6IDA7Cj4gLQlzdGF0ZS5jbGlwLnkyID0g aW50ZWxfY3J0Yy0+YWN0aXZlID8gaW50ZWxfY3J0Yy0+Y29uZmlnLnBpcGVfc3JjX2ggOiAwOwo+ IC0KPiAtCXN0YXRlLm9yaWdfc3JjID0gc3RhdGUuc3JjOwo+IC0Jc3RhdGUub3JpZ19kc3QgPSBz dGF0ZS5kc3Q7Cj4gLQo+IC0JcmV0ID0gaW50ZWxfcGxhbmUtPmNoZWNrX3BsYW5lKHBsYW5lLCAm c3RhdGUpOwo+IC0JaWYgKHJldCkKPiAtCQlyZXR1cm4gcmV0Owo+IC0KPiAtCWlmIChmYiAhPSBv bGRfZmIgJiYgZmIpIHsKPiAtCQlyZXQgPSBpbnRlbF9wcmVwYXJlX3BsYW5lX2ZiKHBsYW5lLCBm Yik7Cj4gLQkJaWYgKHJldCkKPiAtCQkJcmV0dXJuIHJldDsKPiAtCX0KPiAtCj4gLQlpZiAoIXN0 YXRlLmJhc2UuZmIpIHsKPiAtCQl1bnNpZ25lZCBmYl9iaXRzID0gMDsKPiAtCj4gLQkJc3dpdGNo IChwbGFuZS0+dHlwZSkgewo+IC0JCWNhc2UgRFJNX1BMQU5FX1RZUEVfUFJJTUFSWToKPiAtCQkJ ZmJfYml0cyA9IElOVEVMX0ZST05UQlVGRkVSX1BSSU1BUlkoaW50ZWxfcGxhbmUtPnBpcGUpOwo+ IC0JCQlicmVhazsKPiAtCQljYXNlIERSTV9QTEFORV9UWVBFX0NVUlNPUjoKPiAtCQkJZmJfYml0 cyA9IElOVEVMX0ZST05UQlVGRkVSX0NVUlNPUihpbnRlbF9wbGFuZS0+cGlwZSk7Cj4gLQkJCWJy ZWFrOwo+IC0JCWNhc2UgRFJNX1BMQU5FX1RZUEVfT1ZFUkxBWToKPiAtCQkJZmJfYml0cyA9IElO VEVMX0ZST05UQlVGRkVSX1NQUklURShpbnRlbF9wbGFuZS0+cGlwZSk7Cj4gLQkJCWJyZWFrOwo+ IC0JCX0KPiAtCj4gLQkJLyoKPiAtCQkgKiAncHJlcGFyZScgaXMgbmV2ZXIgY2FsbGVkIHdoZW4g cGxhbmUgaXMgYmVpbmcgZGlzYWJsZWQsIHNvCj4gLQkJICogd2UgbmVlZCB0byBoYW5kbGUgZnJv bnRidWZmZXIgdHJhY2tpbmcgaGVyZQo+IC0JCSAqLwo+IC0JCW11dGV4X2xvY2soJmRldi0+c3Ry dWN0X211dGV4KTsKPiAtCQlpOTE1X2dlbV90cmFja19mYihpbnRlbF9mYl9vYmoocGxhbmUtPmZi KSwgTlVMTCwgZmJfYml0cyk7Cj4gLQkJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7 Cj4gLQl9Cj4gLQo+IC0JaW50ZWxfYmVnaW5fY3J0Y19jb21taXQoY3J0Yyk7Cj4gLQlpbnRlbF9w bGFuZS0+Y29tbWl0X3BsYW5lKHBsYW5lLCAmc3RhdGUpOwo+IC0JaW50ZWxfZmluaXNoX2NydGNf Y29tbWl0KGNydGMpOwo+IC0KPiAtCWlmIChmYiAhPSBvbGRfZmIgJiYgb2xkX2ZiKSB7Cj4gLQkJ aWYgKGludGVsX2NydGMtPmFjdGl2ZSkKPiAtCQkJaW50ZWxfd2FpdF9mb3JfdmJsYW5rKGRldiwg aW50ZWxfY3J0Yy0+cGlwZSk7Cj4gLQkJaW50ZWxfY2xlYW51cF9wbGFuZV9mYihwbGFuZSwgb2xk X2ZiKTsKPiAtCX0KPiAtCj4gLQlwbGFuZS0+ZmIgPSBmYjsKPiAtCj4gLQlyZXR1cm4gMDsKPiAt fQo+IC0KPiAtLyoqCj4gLSAqIGludGVsX2Rpc2FibGVfcGxhbmUgLSBkaXNhYmxlIGEgcGxhbmUK PiAtICogQHBsYW5lOiBwbGFuZSB0byBkaXNhYmxlCj4gLSAqCj4gLSAqIEdlbmVyYWwgZGlzYWJs ZSBoYW5kbGVyIGZvciBhbGwgcGxhbmUgdHlwZXMuCj4gLSAqLwo+IC1pbnQKPiAtaW50ZWxfZGlz YWJsZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKPiAtewo+IC0JaWYgKCFwbGFuZS0+ ZmIpCj4gLQkJcmV0dXJuIDA7Cj4gLQo+IC0JaWYgKFdBUk5fT04oIXBsYW5lLT5jcnRjKSkKPiAt CQlyZXR1cm4gLUVJTlZBTDsKPiAtCj4gLQlyZXR1cm4gcGxhbmUtPmZ1bmNzLT51cGRhdGVfcGxh bmUocGxhbmUsIHBsYW5lLT5jcnRjLCBOVUxMLAo+IC0JCQkJCSAgMCwgMCwgMCwgMCwgMCwgMCwg MCwgMCk7Cj4gLX0KPiAtCj4gICAvKioKPiAgICAqIGludGVsX3BsYW5lX2Rlc3Ryb3kgLSBkZXN0 cm95IGEgcGxhbmUKPiAgICAqIEBwbGFuZTogcGxhbmUgdG8gZGVzdHJveQo+IEBAIC0xMjAyMiwx NSArMTE5NTQsMTkgQEAgaW50ZWxfZGlzYWJsZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu ZSkKPiAgIHZvaWQgaW50ZWxfcGxhbmVfZGVzdHJveShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkK PiAgIHsKPiAgIAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lID0gdG9faW50ZWxfcGxh bmUocGxhbmUpOwo+ICsJaW50ZWxfcGxhbmVfZGVzdHJveV9zdGF0ZShwbGFuZSwgcGxhbmUtPnN0 YXRlKTsKPiAgIAlkcm1fcGxhbmVfY2xlYW51cChwbGFuZSk7Cj4gICAJa2ZyZWUoaW50ZWxfcGxh bmUpOwo+ICAgfQo+Cj4gICBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9mdW5jcyBpbnRl bF9wcmltYXJ5X3BsYW5lX2Z1bmNzID0gewo+IC0JLnVwZGF0ZV9wbGFuZSA9IGludGVsX3VwZGF0 ZV9wbGFuZSwKPiAtCS5kaXNhYmxlX3BsYW5lID0gaW50ZWxfZGlzYWJsZV9wbGFuZSwKPiArCS51 cGRhdGVfcGxhbmUgPSBkcm1fcGxhbmVfaGVscGVyX3VwZGF0ZSwKPiArCS5kaXNhYmxlX3BsYW5l ID0gZHJtX3BsYW5lX2hlbHBlcl9kaXNhYmxlLAo+ICAgCS5kZXN0cm95ID0gaW50ZWxfcGxhbmVf ZGVzdHJveSwKPiAtCS5zZXRfcHJvcGVydHkgPSBpbnRlbF9wbGFuZV9zZXRfcHJvcGVydHkKPiAr CS5zZXRfcHJvcGVydHkgPSBpbnRlbF9wbGFuZV9zZXRfcHJvcGVydHksCj4gKwkuYXRvbWljX2R1 cGxpY2F0ZV9zdGF0ZSA9IGludGVsX3BsYW5lX2R1cGxpY2F0ZV9zdGF0ZSwKPiArCS5hdG9taWNf ZGVzdHJveV9zdGF0ZSA9IGludGVsX3BsYW5lX2Rlc3Ryb3lfc3RhdGUsCj4gKwo+ICAgfTsKPgo+ ICAgc3RhdGljIHN0cnVjdCBkcm1fcGxhbmUgKmludGVsX3ByaW1hcnlfcGxhbmVfY3JlYXRlKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gQEAgLTEyMDQ0LDYgKzExOTgwLDEyIEBAIHN0YXRpYyBz dHJ1Y3QgZHJtX3BsYW5lICppbnRlbF9wcmltYXJ5X3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAo+ICAgCWlmIChwcmltYXJ5ID09IE5VTEwpCj4gICAJCXJldHVybiBOVUxMOwo+ Cj4gKwlwcmltYXJ5LT5iYXNlLnN0YXRlID0gaW50ZWxfcGxhbmVfZHVwbGljYXRlX3N0YXRlKCZw cmltYXJ5LT5iYXNlKTsKPiArCWlmIChwcmltYXJ5LT5iYXNlLnN0YXRlID09IE5VTEwpIHsKPiAr CQlrZnJlZShwcmltYXJ5KTsKPiArCQlyZXR1cm4gTlVMTDsKPiArCX0KPiArCj4gICAJcHJpbWFy eS0+Y2FuX3NjYWxlID0gZmFsc2U7Cj4gICAJcHJpbWFyeS0+bWF4X2Rvd25zY2FsZSA9IDE7Cj4g ICAJcHJpbWFyeS0+cGlwZSA9IHBpcGU7Cj4gQEAgLTEyMDc5LDYgKzEyMDIxLDggQEAgc3RhdGlj IHN0cnVjdCBkcm1fcGxhbmUgKmludGVsX3ByaW1hcnlfcGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCj4gICAJCQkJcHJpbWFyeS0+cm90YXRpb24pOwo+ICAgCX0KPgo+ICsJZHJt X3BsYW5lX2hlbHBlcl9hZGQoJnByaW1hcnktPmJhc2UsICZpbnRlbF9wbGFuZV9oZWxwZXJfZnVu Y3MpOwo+ICsKPiAgIAlyZXR1cm4gJnByaW1hcnktPmJhc2U7Cj4gICB9Cj4KPiBAQCAtMTIwODcs MTcgKzEyMDMxLDE5IEBAIGludGVsX2NoZWNrX2N1cnNvcl9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5l ICpwbGFuZSwKPiAgIAkJCSBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnN0YXRlKQo+ICAgewo+ ICAgCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IHN0YXRlLT5iYXNlLmNydGM7Cj4gLQlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IHBsYW5lLT5kZXY7Cj4gICAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBzdGF0ZS0+YmFz ZS5mYjsKPiAgIAlzdHJ1Y3QgZHJtX3JlY3QgKmRlc3QgPSAmc3RhdGUtPmRzdDsKPiAgIAlzdHJ1 Y3QgZHJtX3JlY3QgKnNyYyA9ICZzdGF0ZS0+c3JjOwo+ICAgCWNvbnN0IHN0cnVjdCBkcm1fcmVj dCAqY2xpcCA9ICZzdGF0ZS0+Y2xpcDsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqID0gaW50ZWxfZmJfb2JqKGZiKTsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRj ID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAtCWludCBjcnRjX3csIGNydGNfaDsKPiArCXN0cnVj dCBpbnRlbF9jcnRjICppbnRlbF9jcnRjOwo+ICAgCXVuc2lnbmVkIHN0cmlkZTsKPiAgIAlpbnQg cmV0Owo+Cj4gKwljcnRjID0gY3J0YyA/IGNydGMgOiBwbGFuZS0+Y3J0YzsKPiArCWludGVsX2Ny dGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ICsKPiAgIAlyZXQgPSBkcm1fcGxhbmVfaGVscGVy X2NoZWNrX3VwZGF0ZShwbGFuZSwgY3J0YywgZmIsCj4gICAJCQkJCSAgICBzcmMsIGRlc3QsIGNs aXAsCj4gICAJCQkJCSAgICBEUk1fUExBTkVfSEVMUEVSX05PX1NDQUxJTkcsCj4gQEAgLTEyMTEy LDE1ICsxMjA1OCwxNCBAQCBpbnRlbF9jaGVja19jdXJzb3JfcGxhbmUoc3RydWN0IGRybV9wbGFu ZSAqcGxhbmUsCj4gICAJCWdvdG8gZmluaXNoOwo+Cj4gICAJLyogQ2hlY2sgZm9yIHdoaWNoIGN1 cnNvciB0eXBlcyB3ZSBzdXBwb3J0ICovCj4gLQljcnRjX3cgPSBkcm1fcmVjdF93aWR0aCgmc3Rh dGUtPm9yaWdfZHN0KTsKPiAtCWNydGNfaCA9IGRybV9yZWN0X2hlaWdodCgmc3RhdGUtPm9yaWdf ZHN0KTsKPiAtCWlmICghY3Vyc29yX3NpemVfb2soZGV2LCBjcnRjX3csIGNydGNfaCkpIHsKPiAt CQlEUk1fREVCVUcoIkN1cnNvciBkaW1lbnNpb24gbm90IHN1cHBvcnRlZFxuIik7Cj4gKwlpZiAo IWN1cnNvcl9zaXplX29rKGRldiwgc3RhdGUtPmJhc2UuY3J0Y193LCBzdGF0ZS0+YmFzZS5jcnRj X2gpKSB7Cj4gKwkJRFJNX0RFQlVHKCJDdXJzb3IgZGltZW5zaW9uICVkeCVkIG5vdCBzdXBwb3J0 ZWRcbiIsCj4gKwkJCSAgc3RhdGUtPmJhc2UuY3J0Y193LCBzdGF0ZS0+YmFzZS5jcnRjX2gpOwo+ ICAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgIAl9Cj4KPiAtCXN0cmlkZSA9IHJvdW5kdXBfcG93X29m X3R3byhjcnRjX3cpICogNDsKPiAtCWlmIChvYmotPmJhc2Uuc2l6ZSA8IHN0cmlkZSAqIGNydGNf aCkgewo+ICsJc3RyaWRlID0gcm91bmR1cF9wb3dfb2ZfdHdvKHN0YXRlLT5iYXNlLmNydGNfdykg KiA0Owo+ICsJaWYgKG9iai0+YmFzZS5zaXplIDwgc3RyaWRlICogc3RhdGUtPmJhc2UuY3J0Y19o KSB7Cj4gICAJCURSTV9ERUJVR19LTVMoImJ1ZmZlciBpcyB0b28gc21hbGxcbiIpOwo+ICAgCQly ZXR1cm4gLUVOT01FTTsKPiAgIAl9Cj4gQEAgLTEyMTM4LDggKzEyMDgzLDcgQEAgaW50ZWxfY2hl Y2tfY3Vyc29yX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+Cj4gICBmaW5pc2g6Cj4g ICAJaWYgKGludGVsX2NydGMtPmFjdGl2ZSkgewo+IC0JCWlmIChpbnRlbF9jcnRjLT5jdXJzb3Jf d2lkdGggIT0KPiAtCQkgICAgZHJtX3JlY3Rfd2lkdGgoJnN0YXRlLT5vcmlnX2RzdCkpCj4gKwkJ aWYgKGludGVsX2NydGMtPmN1cnNvcl93aWR0aCAhPSBzdGF0ZS0+YmFzZS5jcnRjX3cpCj4gICAJ CQlpbnRlbF9jcnRjLT5hdG9taWMudXBkYXRlX3dtID0gdHJ1ZTsKPgo+ICAgCQlpbnRlbF9jcnRj LT5hdG9taWMuZmJfYml0cyB8PQo+IEBAIC0xMjE1NCwyNCArMTIwOTgsMjcgQEAgaW50ZWxfY29t bWl0X2N1cnNvcl9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgIAkJCSAgc3RydWN0 IGludGVsX3BsYW5lX3N0YXRlICpzdGF0ZSkKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2NydGMgKmNy dGMgPSBzdGF0ZS0+YmFzZS5jcnRjOwo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMt PmRldjsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0Yyhj cnRjKTsKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBwbGFuZS0+ZGV2Owo+ICsJc3RydWN0 IGludGVsX2NydGMgKmludGVsX2NydGM7Cj4gICAJc3RydWN0IGludGVsX3BsYW5lICppbnRlbF9w bGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lKTsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqID0gaW50ZWxfZmJfb2JqKHN0YXRlLT5iYXNlLmZiKTsKPiAgIAl1aW50MzJfdCBh ZGRyOwo+Cj4gKwljcnRjID0gY3J0YyA/IGNydGMgOiBwbGFuZS0+Y3J0YzsKPiArCWludGVsX2Ny dGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ICsKPiAgIAlwbGFuZS0+ZmIgPSBzdGF0ZS0+YmFz ZS5mYjsKPiAtCWNydGMtPmN1cnNvcl94ID0gc3RhdGUtPm9yaWdfZHN0LngxOwo+IC0JY3J0Yy0+ Y3Vyc29yX3kgPSBzdGF0ZS0+b3JpZ19kc3QueTE7Cj4gLQo+IC0JaW50ZWxfcGxhbmUtPmNydGNf eCA9IHN0YXRlLT5vcmlnX2RzdC54MTsKPiAtCWludGVsX3BsYW5lLT5jcnRjX3kgPSBzdGF0ZS0+ b3JpZ19kc3QueTE7Cj4gLQlpbnRlbF9wbGFuZS0+Y3J0Y193ID0gZHJtX3JlY3Rfd2lkdGgoJnN0 YXRlLT5vcmlnX2RzdCk7Cj4gLQlpbnRlbF9wbGFuZS0+Y3J0Y19oID0gZHJtX3JlY3RfaGVpZ2h0 KCZzdGF0ZS0+b3JpZ19kc3QpOwo+IC0JaW50ZWxfcGxhbmUtPnNyY194ID0gc3RhdGUtPm9yaWdf c3JjLngxOwo+IC0JaW50ZWxfcGxhbmUtPnNyY195ID0gc3RhdGUtPm9yaWdfc3JjLnkxOwo+IC0J aW50ZWxfcGxhbmUtPnNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnN0YXRlLT5vcmlnX3NyYyk7Cj4g LQlpbnRlbF9wbGFuZS0+c3JjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnN0YXRlLT5vcmlnX3NyYyk7 Cj4gKwljcnRjLT5jdXJzb3JfeCA9IHN0YXRlLT5iYXNlLmNydGNfeDsKPiArCWNydGMtPmN1cnNv cl95ID0gc3RhdGUtPmJhc2UuY3J0Y195Owo+ICsKPiArCWludGVsX3BsYW5lLT5jcnRjX3ggPSBz dGF0ZS0+YmFzZS5jcnRjX3g7Cj4gKwlpbnRlbF9wbGFuZS0+Y3J0Y195ID0gc3RhdGUtPmJhc2Uu Y3J0Y195Owo+ICsJaW50ZWxfcGxhbmUtPmNydGNfdyA9IHN0YXRlLT5iYXNlLmNydGNfdzsKPiAr CWludGVsX3BsYW5lLT5jcnRjX2ggPSBzdGF0ZS0+YmFzZS5jcnRjX2g7Cj4gKwlpbnRlbF9wbGFu ZS0+c3JjX3ggPSBzdGF0ZS0+YmFzZS5zcmNfeDsKPiArCWludGVsX3BsYW5lLT5zcmNfeSA9IHN0 YXRlLT5iYXNlLnNyY195Owo+ICsJaW50ZWxfcGxhbmUtPnNyY193ID0gc3RhdGUtPmJhc2Uuc3Jj X3c7Cj4gKwlpbnRlbF9wbGFuZS0+c3JjX2ggPSBzdGF0ZS0+YmFzZS5zcmNfaDsKPiAgIAlpbnRl bF9wbGFuZS0+b2JqID0gb2JqOwo+Cj4gICAJaWYgKGludGVsX2NydGMtPmN1cnNvcl9ibyA9PSBv YmopCj4gQEAgLTEyMTg3LDE4ICsxMjEzNCwyMCBAQCBpbnRlbF9jb21taXRfY3Vyc29yX3BsYW5l KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAgCWludGVsX2NydGMtPmN1cnNvcl9hZGRyID0g YWRkcjsKPiAgIAlpbnRlbF9jcnRjLT5jdXJzb3JfYm8gPSBvYmo7Cj4gICB1cGRhdGU6Cj4gLQlp bnRlbF9jcnRjLT5jdXJzb3Jfd2lkdGggPSBkcm1fcmVjdF93aWR0aCgmc3RhdGUtPm9yaWdfZHN0 KTsKPiAtCWludGVsX2NydGMtPmN1cnNvcl9oZWlnaHQgPSBkcm1fcmVjdF9oZWlnaHQoJnN0YXRl LT5vcmlnX2RzdCk7Cj4gKwlpbnRlbF9jcnRjLT5jdXJzb3Jfd2lkdGggPSBzdGF0ZS0+YmFzZS5j cnRjX3c7Cj4gKwlpbnRlbF9jcnRjLT5jdXJzb3JfaGVpZ2h0ID0gc3RhdGUtPmJhc2UuY3J0Y19o Owo+Cj4gICAJaWYgKGludGVsX2NydGMtPmFjdGl2ZSkKPiAgIAkJaW50ZWxfY3J0Y191cGRhdGVf Y3Vyc29yKGNydGMsIHN0YXRlLT52aXNpYmxlKTsKPiAgIH0KPgo+ICAgc3RhdGljIGNvbnN0IHN0 cnVjdCBkcm1fcGxhbmVfZnVuY3MgaW50ZWxfY3Vyc29yX3BsYW5lX2Z1bmNzID0gewo+IC0JLnVw ZGF0ZV9wbGFuZSA9IGludGVsX3VwZGF0ZV9wbGFuZSwKPiAtCS5kaXNhYmxlX3BsYW5lID0gaW50 ZWxfZGlzYWJsZV9wbGFuZSwKPiArCS51cGRhdGVfcGxhbmUgPSBkcm1fcGxhbmVfaGVscGVyX3Vw ZGF0ZSwKPiArCS5kaXNhYmxlX3BsYW5lID0gZHJtX3BsYW5lX2hlbHBlcl9kaXNhYmxlLAo+ICAg CS5kZXN0cm95ID0gaW50ZWxfcGxhbmVfZGVzdHJveSwKPiAgIAkuc2V0X3Byb3BlcnR5ID0gaW50 ZWxfcGxhbmVfc2V0X3Byb3BlcnR5LAo+ICsJLmF0b21pY19kdXBsaWNhdGVfc3RhdGUgPSBpbnRl bF9wbGFuZV9kdXBsaWNhdGVfc3RhdGUsCj4gKwkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSBpbnRl bF9wbGFuZV9kZXN0cm95X3N0YXRlLAo+ICAgfTsKPgo+ICAgc3RhdGljIHN0cnVjdCBkcm1fcGxh bmUgKmludGVsX2N1cnNvcl9wbGFuZV9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiBA QCAtMTIyMTAsNiArMTIxNTksMTIgQEAgc3RhdGljIHN0cnVjdCBkcm1fcGxhbmUgKmludGVsX2N1 cnNvcl9wbGFuZV9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgIAlpZiAoY3Vyc29y ID09IE5VTEwpCj4gICAJCXJldHVybiBOVUxMOwo+Cj4gKwljdXJzb3ItPmJhc2Uuc3RhdGUgPSBp bnRlbF9wbGFuZV9kdXBsaWNhdGVfc3RhdGUoJmN1cnNvci0+YmFzZSk7Cj4gKwlpZiAoY3Vyc29y LT5iYXNlLnN0YXRlID09IE5VTEwpIHsKPiArCQlrZnJlZShjdXJzb3IpOwo+ICsJCXJldHVybiBO VUxMOwo+ICsJfQo+ICsKPiAgIAljdXJzb3ItPmNhbl9zY2FsZSA9IGZhbHNlOwo+ICAgCWN1cnNv ci0+bWF4X2Rvd25zY2FsZSA9IDE7Cj4gICAJY3Vyc29yLT5waXBlID0gcGlwZTsKPiBAQCAtMTIy MzYsNiArMTIxOTEsOCBAQCBzdGF0aWMgc3RydWN0IGRybV9wbGFuZSAqaW50ZWxfY3Vyc29yX3Bs YW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgCQkJCWN1cnNvci0+cm90YXRp b24pOwo+ICAgCX0KPgo+ICsJZHJtX3BsYW5lX2hlbHBlcl9hZGQoJmN1cnNvci0+YmFzZSwgJmlu dGVsX3BsYW5lX2hlbHBlcl9mdW5jcyk7Cj4gKwo+ICAgCXJldHVybiAmY3Vyc29yLT5iYXNlOwo+ ICAgfQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBpbmRleCAyNTIzMzE1Li42MDRiZDIy IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBAQCAtMjQ4LDggKzI0OCw2IEBAIHN0 cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSB7Cj4gICAJc3RydWN0IGRybV9yZWN0IHNyYzsKPiAgIAlz dHJ1Y3QgZHJtX3JlY3QgZHN0Owo+ICAgCXN0cnVjdCBkcm1fcmVjdCBjbGlwOwo+IC0Jc3RydWN0 IGRybV9yZWN0IG9yaWdfc3JjOwo+IC0Jc3RydWN0IGRybV9yZWN0IG9yaWdfZHN0Owo+ICAgCWJv b2wgdmlzaWJsZTsKPgo+ICAgCS8qCj4gQEAgLTQzNyw2ICs0MzUsNyBAQCBzdHJ1Y3QgaW50ZWxf Y3J0Y19hdG9taWNfY29tbWl0IHsKPiAgIAlib29sIGRpc2FibGVfZmJjOwo+ICAgCWJvb2wgcHJl X2Rpc2FibGVfcHJpbWFyeTsKPiAgIAlib29sIHVwZGF0ZV93bTsKPiArCXVuc2lnbmVkIGRpc2Fi bGVkX3BsYW5lczsKPgo+ICAgCS8qIFNsZWVwYWJsZSBvcGVyYXRpb25zIHRvIHBlcmZvcm0gYWZ0 ZXIgY29tbWl0ICovCj4gICAJdW5zaWduZWQgZmJfYml0czsKPiBAQCAtNTc1LDYgKzU3NCw3IEBA IHN0cnVjdCBjeHNyX2xhdGVuY3kgewo+ICAgI2RlZmluZSB0b19pbnRlbF9lbmNvZGVyKHgpIGNv bnRhaW5lcl9vZih4LCBzdHJ1Y3QgaW50ZWxfZW5jb2RlciwgYmFzZSkKPiAgICNkZWZpbmUgdG9f aW50ZWxfZnJhbWVidWZmZXIoeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCBpbnRlbF9mcmFtZWJ1 ZmZlciwgYmFzZSkKPiAgICNkZWZpbmUgdG9faW50ZWxfcGxhbmUoeCkgY29udGFpbmVyX29mKHgs IHN0cnVjdCBpbnRlbF9wbGFuZSwgYmFzZSkKPiArI2RlZmluZSB0b19pbnRlbF9wbGFuZV9zdGF0 ZSh4KSBjb250YWluZXJfb2YoeCwgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlLCBiYXNlKQo+ICAg I2RlZmluZSBpbnRlbF9mYl9vYmooeCkgKHggPyB0b19pbnRlbF9mcmFtZWJ1ZmZlcih4KS0+b2Jq IDogTlVMTCkKPgo+ICAgc3RydWN0IGludGVsX2hkbWkgewo+IEBAIC0xMjUzLDQgKzEyNTMsMTAg QEAgdm9pZCBpbnRlbF9wcmVfZGlzYWJsZV9wcmltYXJ5KHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7 Cj4gICAvKiBpbnRlbF90di5jICovCj4gICB2b2lkIGludGVsX3R2X2luaXQoc3RydWN0IGRybV9k ZXZpY2UgKmRldik7Cj4KPiArLyogaW50ZWxfYXRvbWljLmMgKi8KPiArc3RydWN0IGRybV9wbGFu ZV9zdGF0ZSAqaW50ZWxfcGxhbmVfZHVwbGljYXRlX3N0YXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBs YW5lKTsKPiArdm9pZCBpbnRlbF9wbGFuZV9kZXN0cm95X3N0YXRlKHN0cnVjdCBkcm1fcGxhbmUg KnBsYW5lLAo+ICsJCQkgICAgICAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUpOwo+ICtl eHRlcm4gY29uc3Qgc3RydWN0IGRybV9wbGFuZV9oZWxwZXJfZnVuY3MgaW50ZWxfcGxhbmVfaGVs cGVyX2Z1bmNzOwo+ICsKPiAgICNlbmRpZiAvKiBfX0lOVEVMX0RSVl9IX18gKi8KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9zcHJpdGUuYwo+IGluZGV4IDUzN2ZmZjI1Li4xNmU3Yzk2IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPiBAQCAtMzMsNiArMzMsNyBAQAo+ICAgI2lu Y2x1ZGUgPGRybS9kcm1fY3J0Yy5oPgo+ICAgI2luY2x1ZGUgPGRybS9kcm1fZm91cmNjLmg+Cj4g ICAjaW5jbHVkZSA8ZHJtL2RybV9yZWN0Lmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX3BsYW5lX2hl bHBlci5oPgo+ICAgI2luY2x1ZGUgImludGVsX2Rydi5oIgo+ICAgI2luY2x1ZGUgPGRybS9pOTE1 X2RybS5oPgo+ICAgI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4gQEAgLTEwODEsMTIgKzEwODIsMTMg QEAgaW50ZWxfY2hlY2tfc3ByaXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAg CXVpbnQzMl90IHNyY194LCBzcmNfeSwgc3JjX3csIHNyY19oOwo+ICAgCXN0cnVjdCBkcm1fcmVj dCAqc3JjID0gJnN0YXRlLT5zcmM7Cj4gICAJc3RydWN0IGRybV9yZWN0ICpkc3QgPSAmc3RhdGUt PmRzdDsKPiAtCXN0cnVjdCBkcm1fcmVjdCAqb3JpZ19zcmMgPSAmc3RhdGUtPm9yaWdfc3JjOwo+ ICAgCWNvbnN0IHN0cnVjdCBkcm1fcmVjdCAqY2xpcCA9ICZzdGF0ZS0+Y2xpcDsKPiAgIAlpbnQg aHNjYWxlLCB2c2NhbGU7Cj4gICAJaW50IG1heF9zY2FsZSwgbWluX3NjYWxlOwo+ICAgCWludCBw aXhlbF9zaXplOwo+Cj4gKwlpbnRlbF9jcnRjID0gaW50ZWxfY3J0YyA/IGludGVsX2NydGMgOiB0 b19pbnRlbF9jcnRjKHBsYW5lLT5jcnRjKTsKPiArCj4gICAJaWYgKCFmYikgewo+ICAgCQlzdGF0 ZS0+dmlzaWJsZSA9IGZhbHNlOwo+ICAgCQlnb3RvIGZpbmlzaDsKPiBAQCAtMTE2NywxMCArMTE2 OSwxMCBAQCBpbnRlbF9jaGVja19zcHJpdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUs Cj4gICAJCQkJICAgIGludGVsX3BsYW5lLT5yb3RhdGlvbik7Cj4KPiAgIAkJLyogc2FuaXR5IGNo ZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3JjIHZpZXdwb3J0IHdhc24ndCBlbmxhcmdlZCAqLwo+IC0J CVdBUk5fT04oc3JjLT54MSA8IChpbnQpIG9yaWdfc3JjLT54MSB8fAo+IC0JCQlzcmMtPnkxIDwg KGludCkgb3JpZ19zcmMtPnkxIHx8Cj4gLQkJCXNyYy0+eDIgPiAoaW50KSBvcmlnX3NyYy0+eDIg fHwKPiAtCQkJc3JjLT55MiA+IChpbnQpIG9yaWdfc3JjLT55Mik7Cj4gKwkJV0FSTl9PTihzcmMt PngxIDwgKGludCkgc3RhdGUtPmJhc2Uuc3JjX3ggfHwKPiArCQkJc3JjLT55MSA8IChpbnQpIHN0 YXRlLT5iYXNlLnNyY195IHx8Cj4gKwkJCXNyYy0+eDIgPiAoaW50KSBzdGF0ZS0+YmFzZS5zcmNf eCArIHN0YXRlLT5iYXNlLnNyY193IHx8Cj4gKwkJCXNyYy0+eTIgPiAoaW50KSBzdGF0ZS0+YmFz ZS5zcmNfeSArIHN0YXRlLT5iYXNlLnNyY19oKTsKPgo+ICAgCQkvKgo+ICAgCQkgKiBIYXJkd2Fy ZSBkb2Vzbid0IGhhbmRsZSBzdWJwaXhlbCBjb29yZGluYXRlcy4KPiBAQCAtMTI2Nyw3ICsxMjY5 LDcgQEAgaW50ZWxfY29tbWl0X3Nwcml0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwK PiAgIAkJCSAgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpzdGF0ZSkKPiAgIHsKPiAgIAlzdHJ1 Y3QgZHJtX2NydGMgKmNydGMgPSBzdGF0ZS0+YmFzZS5jcnRjOwo+IC0Jc3RydWN0IGludGVsX2Ny dGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ICsJc3RydWN0IGludGVsX2Ny dGMgKmludGVsX2NydGM7Cj4gICAJc3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSA9IHRv X2ludGVsX3BsYW5lKHBsYW5lKTsKPiAgIAlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHN0 YXRlLT5iYXNlLmZiOwo+ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBpbnRl bF9mYl9vYmooZmIpOwo+IEBAIC0xMjc1LDE0ICsxMjc3LDE5IEBAIGludGVsX2NvbW1pdF9zcHJp dGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gICAJdW5zaWduZWQgaW50IGNydGNf dywgY3J0Y19oOwo+ICAgCXVpbnQzMl90IHNyY194LCBzcmNfeSwgc3JjX3csIHNyY19oOwo+Cj4g LQlpbnRlbF9wbGFuZS0+Y3J0Y194ID0gc3RhdGUtPm9yaWdfZHN0LngxOwo+IC0JaW50ZWxfcGxh bmUtPmNydGNfeSA9IHN0YXRlLT5vcmlnX2RzdC55MTsKPiAtCWludGVsX3BsYW5lLT5jcnRjX3cg PSBkcm1fcmVjdF93aWR0aCgmc3RhdGUtPm9yaWdfZHN0KTsKPiAtCWludGVsX3BsYW5lLT5jcnRj X2ggPSBkcm1fcmVjdF9oZWlnaHQoJnN0YXRlLT5vcmlnX2RzdCk7Cj4gLQlpbnRlbF9wbGFuZS0+ c3JjX3ggPSBzdGF0ZS0+b3JpZ19zcmMueDE7Cj4gLQlpbnRlbF9wbGFuZS0+c3JjX3kgPSBzdGF0 ZS0+b3JpZ19zcmMueTE7Cj4gLQlpbnRlbF9wbGFuZS0+c3JjX3cgPSBkcm1fcmVjdF93aWR0aCgm c3RhdGUtPm9yaWdfc3JjKTsKPiAtCWludGVsX3BsYW5lLT5zcmNfaCA9IGRybV9yZWN0X2hlaWdo dCgmc3RhdGUtPm9yaWdfc3JjKTsKPiArCWludGVsX3BsYW5lLT5jcnRjX3ggPSBzdGF0ZS0+YmFz ZS5jcnRjX3g7Cj4gKwlpbnRlbF9wbGFuZS0+Y3J0Y195ID0gc3RhdGUtPmJhc2UuY3J0Y195Owo+ ICsJaW50ZWxfcGxhbmUtPmNydGNfdyA9IHN0YXRlLT5iYXNlLmNydGNfdzsKPiArCWludGVsX3Bs YW5lLT5jcnRjX2ggPSBzdGF0ZS0+YmFzZS5jcnRjX2g7Cj4gKwlpbnRlbF9wbGFuZS0+c3JjX3gg PSBzdGF0ZS0+YmFzZS5zcmNfeDsKPiArCWludGVsX3BsYW5lLT5zcmNfeSA9IHN0YXRlLT5iYXNl LnNyY195Owo+ICsJaW50ZWxfcGxhbmUtPnNyY193ID0gc3RhdGUtPmJhc2Uuc3JjX3c7Cj4gKwlp bnRlbF9wbGFuZS0+c3JjX2ggPSBzdGF0ZS0+YmFzZS5zcmNfaDsKPiArCj4gKwljcnRjID0gY3J0 YyA/IGNydGMgOiBwbGFuZS0+Y3J0YzsKPiArCWludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNy dGMpOwo+ICsKPiArCXBsYW5lLT5mYiA9IHN0YXRlLT5iYXNlLmZiOwo+ICAgCWludGVsX3BsYW5l LT5vYmogPSBvYmo7Cj4KPiAgIAlpZiAoaW50ZWxfY3J0Yy0+YWN0aXZlKSB7Cj4gQEAgLTE0MDYs MTAgKzE0MTMsMTIgQEAgaW50IGludGVsX3BsYW5lX3Jlc3RvcmUoc3RydWN0IGRybV9wbGFuZSAq cGxhbmUpCj4gICB9Cj4KPiAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2Z1bmNzIGlu dGVsX3Nwcml0ZV9wbGFuZV9mdW5jcyA9IHsKPiAtCS51cGRhdGVfcGxhbmUgPSBpbnRlbF91cGRh dGVfcGxhbmUsCj4gLQkuZGlzYWJsZV9wbGFuZSA9IGludGVsX2Rpc2FibGVfcGxhbmUsCj4gKwku dXBkYXRlX3BsYW5lID0gZHJtX3BsYW5lX2hlbHBlcl91cGRhdGUsCj4gKwkuZGlzYWJsZV9wbGFu ZSA9IGRybV9wbGFuZV9oZWxwZXJfZGlzYWJsZSwKPiAgIAkuZGVzdHJveSA9IGludGVsX3BsYW5l X2Rlc3Ryb3ksCj4gICAJLnNldF9wcm9wZXJ0eSA9IGludGVsX3BsYW5lX3NldF9wcm9wZXJ0eSwK PiArCS5hdG9taWNfZHVwbGljYXRlX3N0YXRlID0gaW50ZWxfcGxhbmVfZHVwbGljYXRlX3N0YXRl LAo+ICsJLmF0b21pY19kZXN0cm95X3N0YXRlID0gaW50ZWxfcGxhbmVfZGVzdHJveV9zdGF0ZSwK PiAgIH07Cj4KPiAgIHN0YXRpYyB1aW50MzJfdCBpbGtfcGxhbmVfZm9ybWF0c1tdID0gewo+IEBA IC0xNDcxLDYgKzE0ODAsMTMgQEAgaW50ZWxfcGxhbmVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCBlbnVtIHBpcGUgcGlwZSwgaW50IHBsYW5lKQo+ICAgCWlmICghaW50ZWxfcGxhbmUpCj4g ICAJCXJldHVybiAtRU5PTUVNOwo+Cj4gKwlpbnRlbF9wbGFuZS0+YmFzZS5zdGF0ZSA9Cj4gKwkJ aW50ZWxfcGxhbmVfZHVwbGljYXRlX3N0YXRlKCZpbnRlbF9wbGFuZS0+YmFzZSk7Cj4gKwlpZiAo aW50ZWxfcGxhbmUtPmJhc2Uuc3RhdGUgPT0gTlVMTCkgewo+ICsJCWtmcmVlKGludGVsX3BsYW5l KTsKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCX0KPiArCj4gICAJc3dpdGNoIChJTlRFTF9JTkZP KGRldiktPmdlbikgewo+ICAgCWNhc2UgNToKPiAgIAljYXNlIDY6Cj4gQEAgLTE1NjQsNiArMTU4 MCw4IEBAIGludGVsX3BsYW5lX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBwaXBl IHBpcGUsIGludCBwbGFuZSkKPiAgIAkJCQkJICAgZGV2LT5tb2RlX2NvbmZpZy5yb3RhdGlvbl9w cm9wZXJ0eSwKPiAgIAkJCQkJICAgaW50ZWxfcGxhbmUtPnJvdGF0aW9uKTsKPgo+ICsJZHJtX3Bs YW5lX2hlbHBlcl9hZGQoJmludGVsX3BsYW5lLT5iYXNlLCAmaW50ZWxfcGxhbmVfaGVscGVyX2Z1 bmNzKTsKPiArCj4gICAgb3V0Ogo+ICAgCXJldHVybiByZXQ7Cj4gICB9Cj4KCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxp c3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==