From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paulo Zanoni Subject: Re: [RFC 3/4] drm/i915/gen9: Expose top-most universal plane as cursor Date: Thu, 27 Oct 2016 18:03:54 -0200 Message-ID: <1477598634.19886.102.camel@intel.com> References: <1477522291-10874-1-git-send-email-matthew.d.roper@intel.com> <1477522291-10874-4-git-send-email-matthew.d.roper@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 29EA26E2CE for ; Thu, 27 Oct 2016 20:03:59 +0000 (UTC) In-Reply-To: <1477522291-10874-4-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 Cc: Lyude Paul List-Id: intel-gfx@lists.freedesktop.org RW0gUXVhLCAyMDE2LTEwLTI2IMOgcyAxNTo1MSAtMDcwMCwgTWF0dCBSb3BlciBlc2NyZXZldToK PiBHZW45IGhhcyBhIHRyYWRpdGlvbmFsIGN1cnNvciBwbGFuZSB0aGF0IGlzIG11dHVhbGx5IGV4 Y2x1c2l2ZSB3aXRoCj4gdGhlCj4gc3lzdGVtJ3MgdG9wLW1vc3QgInVuaXZlcnNhbCIgcGxhbmU7 IGl0IHNlZW1zIGxpa2VseSB0aGF0IHR3byBwbGFuZXMKPiBhcmUKPiByZWFsbHkgYSBzaW5nbGUg c2hhcmVkIGhhcmR3YXJlIHVuaXQgd2l0aCB0d28gZGlmZmVyZW50IHJlZ2lzdGVyCj4gaW50ZXJm YWNlcy7CoMKgVGh1cyBmYXIgaTkxNSBoYXMgZXhwb3NlZCBhIGN1cnNvciBwbGFuZSB0byB1c2Vy c3BhY2UKPiB0aGF0J3MgaG9va2VkIHVwIHRvIHRoZSBvbGQtc3R5bGUgY3Vyc29yIHJlZ2lzdGVy czsgd2UganVzdCBwcmV0ZW5kZWQKPiB0aGF0IHRoZSB0b3AtbW9zdCB1bml2ZXJzYWwgcGxhbmUg ZGlkbid0IGV4aXN0IGFuZCByZXBvcnRlZCBvbmUgZmV3ZXIKPiAic3ByaXRlL292ZXJsYXkiIHBs YW5lcyBmb3IgZWFjaCBwaXBlIHRoYW4gdGhlIHBsYXRmb3JtIHRlY2huaWNhbGx5Cj4gaGFzLgo+ IExldCdzIHN3aXRjaCB0aGlzIGFyb3VuZCBzbyB0aGF0IHRoZSBjdXJzb3IgZXhwb3NlZCB0byB1 c2Vyc3BhY2UgaXMKPiBhY3R1YWxseSB3aXJlZCB1cCB0byB0b3AtbW9zdCB1bml2ZXJzYWwgcGxh bmUgcmVnaXN0ZXJzLsKgwqBXZSdsbAo+IGNvbnRpbnVlCj4gdG8gcHJlc2VudCB0aGUgc2FtZSBj dXJzb3IgQUJJIHRvIHVzZXJzcGFjZSB0aGF0IHdlIGFsd2F5cyBoYXZlLCBidXQKPiBpbnRlcm5h bGx5IHdlJ2xsIGp1c3QgYmUgcHJvZ3JhbW1pbmcgYSBkaWZmZXJlbnQgc2V0IG9mIHJlZ2lzdGVy cyBhbmQKPiBkb2luZyBzbyBpbiBhIHdheSB0aGF0J3MgbW9yZSBjb25zaXN0ZW50IHdpdGggaG93 IGFsbCB0aGUgb3RoZXIgZ2VuOQo+IHBsYW5lcyB3b3JrIC0tLSBsZXNzIGN1cnNvci1zcGVjaWZp YyBzcGVjaWFsIGNhc2VzIHRocm91Z2hvdXQgdGhlCj4gY29kZS4KPiAKPiBBc2lkZSBmcm9tIG1h a2luZyB0aGUgY29kZSBhIGJpdCBzaW1wbGVyIChmZXdlciBjdXJzb3Itc3BlY2lmaWMKPiBzcGVj aWFsCj4gY2FzZXMpLCB0aGlzIHdpbGwgYWxzbyBwYXZlIHRoZSB3YXkgdG8gZXZlbnR1YWxseSBl eHBvc2luZyB0aGUgdG9wLQo+IG1vc3QKPiBwbGFuZSBpbiBhIG1vcmUgZnVsbC1mZWF0dXJlZCBt YW5uZXIgdG8gdXNlcnNwYWNlIGNsaWVudHMgdGhhdCBkb24ndAo+IG5lZWQgYSB0cmFkaXRpb25h bCBjdXJzb3IgYW5kIHdpc2ggdG8gb3B0IGludG8gaGF2aW5nIGFjY2VzcyB0byBhbgo+IGFkZGl0 aW9uYWwgc3ByaXRlL292ZXJsYXktc3R5bGUgcGxhbmUgaW5zdGVhZC4KPiAKPiBJdCdzIHdvcnRo IG5vdGluZyB0aGF0IGEgbG90IG9mIHRoZSBzcGVjaWFsLWNhc2VkIGN1cnNvci1zcGVjaWZpYwo+ IGNvZGUKPiB3YXMgaW4gdGhlIGdlbjkgd2F0ZXJtYXJrIHByb2dyYW1taW5nLsKgwqBJdCdzIGdv b2QgdG8gc2ltcGxpZnkgdGhhdAo+IGNvZGUsCj4gYnV0IHdlIHNob3VsZCBrZWVwIGFuIGV5ZSBv dXQgZm9yIGFueSB1bndhbnRlZCBzaWRlIGVmZmVjdHMgb2YgdGhpcwo+IHBhdGNoOyBzaW5jZSBz cHJpdGVzL292ZXJsYXlzIHRlbmQgdG8gZ2V0IHVzZWQgbGVzcyB0aGFuIGN1cnNvcnMsCj4gaXQn cwo+IHBvc3NpYmxlIHRoYXQgdGhpcyBjb3VsZCBoZWxwIHVzIHVuY292ZXIgYWRkaXRpb25hbCB1 bmRlcnJ1bnMgdGhhdAo+IG5vYm9keSBoYWQgcnVuIGFjcm9zcyB5ZXQuwqDCoE9yIGl0IGNvdWxk IGhhdmUgdGhlIG9wcG9zaXRlIGVmZmVjdCBhbmQKPiBlbGltaW5hdGUgc29tZSBvZiB0aGUgdW5k ZXJydW5zIHRoYXQgd2UgaGF2ZW4ndCBiZWVuIGFibGUgdG8gZ2V0IHJpZAo+IG9mCj4geWV0Lgo+ IAo+IENjOiBCb2IgUGFhdXdlIDxib2Iuai5wYWF1d2VAaW50ZWwuY29tPgo+IENjOiBNYWFydGVu IExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgo+IENjOiBQYXVs byBaYW5vbmkgPHBhdWxvLnIuemFub25pQGludGVsLmNvbT4KPiBDYzogTHl1ZGUgUGF1bCA8bHl1 ZGVAcmVkaGF0LmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBNYXR0IFJvcGVyIDxtYXR0aGV3LmQucm9w ZXJAaW50ZWwuY29tPgo+IC0tLQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2Zz LmPCoMKgwqDCoMKgwqB8wqDCoDQgLS0KPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmjCoMKgwqDCoMKgwqDCoMKgwqDCoHwgMTEgKysrLQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGV2aWNlX2luZm8uYyB8IDM4ICsrKysrKysrKy0tLS0KPiDCoGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuY8KgwqDCoMKgwqB8IDk3ICsrKysrKysrKysrKy0tLS0tLS0t Cj4gLS0tLS0tLS0tLS0tCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaMKgwqDC oMKgwqDCoMKgwqDCoHzCoMKgNyArKysKPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bt LmPCoMKgwqDCoMKgwqDCoMKgwqDCoHwgODUgKysrKy0tLS0tLS0tLS0tLS0tLS0KPiAtLS0tLS0t LQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmPCoMKgwqDCoMKgwqB8wqDC oDYgKy0KPiDCoDcgZmlsZXMgY2hhbmdlZCwgOTMgaW5zZXJ0aW9ucygrKSwgMTU1IGRlbGV0aW9u cygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMu Ywo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBpbmRleCA5ZjVhMzky Li4wYmJhNDcyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdm cy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBAQCAtMzQ2 OSwxMCArMzQ2OSw2IEBAIHN0YXRpYyBpbnQgaTkxNV9kZGJfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUg Km0sCj4gdm9pZCAqdW51c2VkKQo+IMKgCQkJCcKgwqDCoGVudHJ5LT5zdGFydCwgZW50cnktPmVu ZCwKPiDCoAkJCQnCoMKgwqBza2xfZGRiX2VudHJ5X3NpemUoZW50cnkpKTsKPiDCoAkJfQo+IC0K PiAtCQllbnRyeSA9ICZkZGItPnBsYW5lW3BpcGVdW1BMQU5FX0NVUlNPUl07Cj4gLQkJc2VxX3By aW50ZihtLCAiwqDCoCUtMTNzJTh1JTh1JTh1XG4iLCAiQ3Vyc29yIiwgZW50cnktCj4gPnN0YXJ0 LAo+IC0JCQnCoMKgwqBlbnRyeS0+ZW5kLCBza2xfZGRiX2VudHJ5X3NpemUoZW50cnkpKTsKPiDC oAl9Cj4gwqAKPiDCoAlkcm1fbW9kZXNldF91bmxvY2tfYWxsKGRldik7Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKPiBpbmRleCA0NzE0MDUxLi44M2FhZWQyIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCj4gQEAgLTE3OCw3ICsxNzgsNyBAQCBlbnVtIHBsYW5lIHsKPiDCoAlQTEFORV9B ID0gMCwKPiDCoAlQTEFORV9CLAo+IMKgCVBMQU5FX0MsCj4gLQlQTEFORV9DVVJTT1IsCj4gKwlQ TEFORV9ELAo+IMKgCUk5MTVfTUFYX1BMQU5FUywKPiDCoH07Cj4gwqAjZGVmaW5lIHBsYW5lX25h bWUocCkgKChwKSArICdBJykKPiBAQCAtMzE2LDkgKzMxNiwxNSBAQCBzdHJ1Y3QgaTkxNV9ob3Rw bHVnIHsKPiDCoAlmb3IgKChfX3ApID0gMDsJCQkJCQkKPiAJXAo+IMKgCcKgwqDCoMKgwqAoX19w KSA8IElOVEVMX0lORk8oX19kZXZfcHJpdiktPm51bV9zcHJpdGVzWyhfX3BpcGUpXSArCj4gMTsJ XAo+IMKgCcKgwqDCoMKgwqAoX19wKSsrKQo+ICsKPiArLyoKPiArICogT25seSBpdGVyYXRlIG92 ZXIgc3ByaXRlcyBleHBvc2VkIGFzIHNwcml0ZXM7IG9taXQgc3ByaXRlcyB0aGF0Cj4gKyAqIGFy ZSBiZWluZyByZXB1cnBvc2VkIHRvIHNpbXVsYXRlIGEgY3Vyc29yLgo+ICsgKi8KPiDCoCNkZWZp bmUgZm9yX2VhY2hfc3ByaXRlKF9fZGV2X3ByaXYsIF9fcCwgX19zKQkJCQo+IAlcCj4gwqAJZm9y ICgoX19zKSA9IDA7CQkJCQkJCj4gCVwKPiAtCcKgwqDCoMKgwqAoX19zKSA8IElOVEVMX0lORk8o X19kZXZfcHJpdiktPm51bV9zcHJpdGVzWyhfX3ApXTsJCj4gXAo+ICsJwqDCoMKgwqDCoChfX3Mp IDwgSU5URUxfSU5GTyhfX2Rldl9wcml2KS0+bnVtX3Nwcml0ZXNbKF9fcCldIC0JCj4gXAo+ICsJ wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAoSU5URUxfSU5GTyhfX2Rldl9wcml2KS0+aGFzX3Jl YWxfY3Vyc29yID8gMCA6Cj4gMSk7CVwKPiDCoAnCoMKgwqDCoMKgKF9fcykrKykKPiDCoAo+IMKg I2RlZmluZSBmb3JfZWFjaF9wb3J0X21hc2tlZChfX3BvcnQsIF9fcG9ydHNfbWFzaykgXAo+IEBA IC02ODcsNiArNjkzLDcgQEAgc3RydWN0IGludGVsX2NzciB7Cj4gwqAJZnVuYyhoYXNfcHNyKTsg XAo+IMKgCWZ1bmMoaGFzX3JjNik7IFwKPiDCoAlmdW5jKGhhc19yYzZwKTsgXAo+ICsJZnVuYyho YXNfcmVhbF9jdXJzb3IpOyBcCj4gwqAJZnVuYyhoYXNfcmVzb3VyY2Vfc3RyZWFtZXIpOyBcCj4g wqAJZnVuYyhoYXNfcnVudGltZV9wbSk7IFwKPiDCoAlmdW5jKGhhc19zbm9vcCk7IFwKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uYwo+IGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uYwo+IGluZGV4IGQ2YThmMTEuLmE0 NjRlMGUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2lu Zm8uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9pbmZvLmMKPiBA QCAtMjcxLDIzICsyNzEsMzkgQEAgdm9pZCBpbnRlbF9kZXZpY2VfaW5mb19ydW50aW1lX2luaXQo c3RydWN0Cj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gwqAJZW51bSBwaXBlIHBpcGU7 Cj4gwqAKPiDCoAkvKgo+IC0JwqAqIFNreWxha2UgYW5kIEJyb3h0b24gY3VycmVudGx5IGRvbid0 IGV4cG9zZSB0aGUgdG9wbW9zdAo+IHBsYW5lIGFzIGl0cwo+IC0JwqAqIHVzZSBpcyBleGNsdXNp dmUgd2l0aCB0aGUgbGVnYWN5IGN1cnNvciBhbmQgd2Ugb25seSB3YW50Cj4gdG8gZXhwb3NlCj4g LQnCoCogb25lIG9mIHRob3NlLCBub3QgYm90aC4gVW50aWwgd2UgY2FuIHNhZmVseSBleHBvc2Ug dGhlCj4gdG9wbW9zdCBwbGFuZQo+IC0JwqAqIGFzIGEgRFJNX1BMQU5FX1RZUEVfQ1VSU09SIHdp dGggYWxsIHRoZSBmZWF0dXJlcwo+IGV4cG9zZWQvc3VwcG9ydGVkLAo+IC0JwqAqIHdlIGRvbid0 IGV4cG9zZSB0aGUgdG9wbW9zdCBwbGFuZSBhdCBhbGwgdG8gcHJldmVudCBBQkkKPiBicmVha2Fn ZQo+IC0JwqAqIGRvd24gdGhlIGxpbmUuCj4gKwnCoCogR2VuOSBwbGF0Zm9ybXMgaGF2ZSBhIHRv cC1tb3N0IHVuaXZlcnNhbCAoaS5lLiwgc3ByaXRlKQo+IHBsYW5lIGFuZCBhCj4gKwnCoCogY3Vy c29yIHBsYW5lIHRoYXQgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS7CoMKgSWYgd2UgdXNlIHRoZQo+ IGN1cnNvcgo+ICsJwqAqIHBsYW5lIHdlIHBlcm1hbmVudGx5IGxvc2UgdGhlIGFiaWxpdHkgdG8g bWFrZSB1c2Ugb2YgdGhlCj4gbW9yZQo+ICsJwqAqIGZ1bGwtZmVhdHVyZWQgdW5pdmVyc2FsIHBs YW5lLsKgwqBTbyBpbnN0ZWFkIGxldCdzIHVzZSBhbGwKPiBvZiB0aGUKPiArCcKgKiB1bml2ZXJz YWwgcGxhbmVzLCBpZ25vcmUgdGhlIGN1cnNvciBwbGFuZSwgYnV0IGhvb2sgdGhlCj4gdG9wLW1v c3QKPiArCcKgKiB1bml2ZXJzYWwgcGxhbmUgdXAgdG8gdGhlIGxlZ2FjeSBjdXJzb3IgaW9jdGwn cyBhbmQKPiBleHBvc2UgaXQgdG8KPiArCcKgKiB1c2Vyc3BhY2UgYXMgRFJNX1BMQU5FX1RZUEVf Q1VSU09SLsKgwqBUaGlzIHdvbid0IHJlc3VsdCBpbgo+IGFueQo+ICsJwqAqIHZpc2libGUgYmVo YXZpb3IgY2hhbmdlIHRvIHVzZXJzcGFjZTsgd2UncmUganVzdAo+IGludGVybmFsbHkKPiArCcKg KiBwcm9ncmFtbWluZyBhIGRpZmZlcmVudCBzZXQgb2YgcmVnaXN0ZXJzLgo+ICsJwqAqCj4gKwnC oCogRm9yIHRoZSBwdXJwb3NlcyBvZiBkZXZpY2VfaW5mbywgd2UncmUgb25seSBjb25jZXJuZWQK PiB3aXRoIHRoZQo+ICsJwqAqIG51bWJlciBvZiB1bml2ZXJzYWwgcGxhbmVzIHdlJ3JlIHByb2dy YW1taW5nLCByZWdhcmRsZXNzCj4gb2YgaG93IHRoZXkKPiArCcKgKiBnZXQgbWFwcGVkIHRvIHVz ZXJzcGFjZSBpbnRlcmZhY2VzLCBzbyB3ZSdsbCByZXBvcnQgdGhlCj4gdHJ1ZSBudW1iZXIgb2YK PiArCcKgKiB1bml2ZXJzYWwgcGxhbmVzIGZvciBnZW45Lgo+IMKgCcKgKi8KPiDCoAlpZiAoSVNf QlJPWFRPTihkZXZfcHJpdikpIHsKPiAtCQlpbmZvLT5udW1fc3ByaXRlc1tQSVBFX0FdID0gMjsK PiAtCQlpbmZvLT5udW1fc3ByaXRlc1tQSVBFX0JdID0gMjsKPiAtCQlpbmZvLT5udW1fc3ByaXRl c1tQSVBFX0NdID0gMTsKPiAtCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwK PiBJU19DSEVSUllWSUVXKGRldl9wcml2KSkKPiArCQlpbmZvLT5oYXNfcmVhbF9jdXJzb3IgPSAw Owo+ICsJCWluZm8tPm51bV9zcHJpdGVzW1BJUEVfQV0gPSAzOwo+ICsJCWluZm8tPm51bV9zcHJp dGVzW1BJUEVfQl0gPSAzOwo+ICsJCWluZm8tPm51bV9zcHJpdGVzW1BJUEVfQ10gPSAyOwo+ICsJ fSBlbHNlIGlmIChJU19HRU45KGRldl9wcml2KSkgewo+ICsJCWluZm8tPmhhc19yZWFsX2N1cnNv ciA9IDA7Cj4gwqAJCWZvcl9lYWNoX3BpcGUoZGV2X3ByaXYsIHBpcGUpCj4gwqAJCQlpbmZvLT5u dW1fc3ByaXRlc1twaXBlXSA9IDI7Cj4gLQllbHNlCj4gKwl9IGVsc2UgaWYgKElTX1ZBTExFWVZJ RVcoZGV2X3ByaXYpIHx8Cj4gSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpIHsKPiArCQlpbmZvLT5o YXNfcmVhbF9jdXJzb3IgPSAxOwo+ICsJCWZvcl9lYWNoX3BpcGUoZGV2X3ByaXYsIHBpcGUpCj4g KwkJCWluZm8tPm51bV9zcHJpdGVzW3BpcGVdID0gMjsKPiArCX0gZWxzZSB7Cj4gKwkJaW5mby0+ aGFzX3JlYWxfY3Vyc29yID0gMTsKPiDCoAkJZm9yX2VhY2hfcGlwZShkZXZfcHJpdiwgcGlwZSkK PiDCoAkJCWluZm8tPm51bV9zcHJpdGVzW3BpcGVdID0gMTsKPiArCX0KPiDCoAo+IMKgCWlmIChp OTE1LmRpc2FibGVfZGlzcGxheSkgewo+IMKgCQlEUk1fSU5GTygiRGlzcGxheSBkaXNhYmxlZCAo bW9kdWxlIHBhcmFtZXRlcilcbiIpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kaXNwbGF5LmMKPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku Ywo+IGluZGV4IGNiN2RkMTEuLjlhOGMyYjEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jCj4gQEAgLTEyMzIsNiArMTIzMiwyMyBAQCB2b2lkIGFzc2VydF9wYW5lbF91bmxv Y2tlZChzdHJ1Y3QKPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBwaXBlIHBpcGUp Cj4gwqAJwqDCoMKgwqDCoHBpcGVfbmFtZShwaXBlKSk7Cj4gwqB9Cj4gwqAKPiArLyoKPiArICog Q3Vyc29yIHN0YXRlIGZvciBwbGF0Zm9ybXMgdGhhdCB1c2UgYSB1bml2ZXJzYWwgcGxhbmUgYXMg YQo+IGN1cnNvci4KPiArICogUHJpbWFyeSBpcyB1bml2ZXJzYWwgIzAsIG90aGVycyBhcmUgdW5p dmVyc2FsICMxLQo+IG51bXNwcml0ZXMuwqDCoEN1cnNvcgo+ICsgKiB3aWxsIGJlIHRoZSBmaW5h bCB1bml2ZXJzYWwgcGxhbmUgZm9yIHRoZSBwaXBlLgo+ICsgKi8KPiArc3RhdGljIGJvb2wKPiAr dW5pdmVyc2FsX2N1cnNvcl9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs CgotRU5PVkVSQgoKZ2V0X3VuaXZlcnNhbF9jdXJzb3Jfc3RhdGUoKT8KCj4gKwkJwqDCoMKgwqDC oMKgwqBlbnVtIHBpcGUgcGlwZSkKPiArewo+ICsJdW5zaWduZWQgaW50IHBsYW5lbnVtID0gSU5U RUxfSU5GTyhkZXZfcHJpdiktCj4gPm51bV9zcHJpdGVzW3BpcGVdOwo+ICsJdTMyIHZhbDsKPiAr Cj4gKwl2YWwgPSBJOTE1X1JFQUQoUExBTkVfQ1RMKHBpcGUsIHBsYW5lbnVtKSk7Cj4gKwo+ICsJ cmV0dXJuIHZhbCAmIFBMQU5FX0NUTF9FTkFCTEU7Cj4gK30KPiArCj4gwqBzdGF0aWMgdm9pZCBh c3NlcnRfY3Vyc29yKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiDCoAkJCcKg wqBlbnVtIHBpcGUgcGlwZSwgYm9vbCBzdGF0ZSkKPiDCoHsKPiBAQCAtMTIzOSw2ICsxMjU2LDgg QEAgc3RhdGljIHZvaWQgYXNzZXJ0X2N1cnNvcihzdHJ1Y3QKPiBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKPiDCoAo+IMKgCWlmIChJU184NDVHKGRldl9wcml2KSB8fCBJU19JODY1RyhkZXZf cHJpdikpCj4gwqAJCWN1cl9zdGF0ZSA9IEk5MTVfUkVBRChDVVJDTlRSKFBJUEVfQSkpICYKPiBD VVJTT1JfRU5BQkxFOwo+ICsJZWxzZSBpZiAoIUlOVEVMX0lORk8oZGV2X3ByaXYpLT5oYXNfcmVh bF9jdXJzb3IpCj4gKwkJY3VyX3N0YXRlID0gdW5pdmVyc2FsX2N1cnNvcl9zdGF0ZShkZXZfcHJp diwgcGlwZSk7Cj4gwqAJZWxzZQo+IMKgCQljdXJfc3RhdGUgPSBJOTE1X1JFQUQoQ1VSQ05UUihw aXBlKSkgJiBDVVJTT1JfTU9ERTsKPiDCoAo+IEBAIC0xMDg0MSwxNSArMTA4NjAsMTYgQEAgc3Rh dGljIHZvaWQgaTl4eF91cGRhdGVfY3Vyc29yKHN0cnVjdAo+IGRybV9jcnRjICpjcnRjLCB1MzIg YmFzZSwKPiDCoAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+IMKgCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiDCoAlzdHJ1Y3Qg aW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gLQlzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLQo+ID5z dGF0ZSk7Cj4gLQljb25zdCBzdHJ1Y3Qgc2tsX3dtX3ZhbHVlcyAqd20gPSAmZGV2X3ByaXYtPndt LnNrbF9yZXN1bHRzOwo+IC0JY29uc3Qgc3RydWN0IHNrbF9wbGFuZV93bSAqcF93bSA9Cj4gLQkJ JmNzdGF0ZS0+d20uc2tsLm9wdGltYWwucGxhbmVzW1BMQU5FX0NVUlNPUl07Cj4gwqAJaW50IHBp cGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+IMKgCXVpbnQzMl90IGNudGwgPSAwOwo+IMKgCj4gLQlp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5ICYmIHdtLT5kaXJ0eV9waXBlcyAmCj4gZHJtX2Ny dGNfbWFzayhjcnRjKSkKPiAtCQlza2xfd3JpdGVfY3Vyc29yX3dtKGludGVsX2NydGMsIHBfd20s ICZ3bS0+ZGRiKTsKPiArCS8qCj4gKwnCoCogQWx0aG91Z2ggZ2VuOSBoYXMgbGVnYWN5IGN1cnNv ciByZWdpc3RlcnMsIHRoZWlyIHVzZSBpcwo+IG11dHVhbGx5Cj4gKwnCoCogZXhjbHVzaXZlIHdp dGggdGhlIHRvcC1tb3N0IHVuaXZlcnNhbCBwbGFuZS7CoMKgV2UnbGwganVzdAo+IHVzZSB0aGUK PiArCcKgKiB1bml2ZXJzYWwgcGxhbmUgdG8gc2ltdWxhdGUgdGhlIGxlZ2FjeSBjdXJzb3IgaW50 ZXJmYWNlCj4gaW5zdGVhZCwKPiArCcKgKiB3aGljaCBtZWFucyB3ZSdsbCBuZXZlciBlbnRlciBo ZXJlIG9uIGdlbjkgcGxhdGZvcm1zLgo+ICsJwqAqLwo+ICsJV0FSTl9PTihJU19HRU45KGRldl9w cml2KSk7Cj4gwqAKPiDCoAlpZiAocGxhbmVfc3RhdGUgJiYgcGxhbmVfc3RhdGUtPmJhc2Uudmlz aWJsZSkgewo+IMKgCQljbnRsID0gTUNVUlNPUl9HQU1NQV9FTkFCTEU7Cj4gQEAgLTEzNTI4LDU2 ICsxMzU0OCw2IEBAIHN0YXRpYyB2b2lkIHZlcmlmeV93bV9zdGF0ZShzdHJ1Y3QgZHJtX2NydGMK PiAqY3J0YywKPiDCoAkJCQnCoMKgaHdfZGRiX2VudHJ5LT5zdGFydCwgaHdfZGRiX2VudHJ5LQo+ ID5lbmQpOwo+IMKgCQl9Cj4gwqAJfQo+IC0KPiAtCS8qCj4gLQnCoCogY3Vyc29yCj4gLQnCoCog SWYgdGhlIGN1cnNvciBwbGFuZSBpc24ndCBhY3RpdmUsIHdlIG1heSBub3QgaGF2ZSB1cGRhdGVk Cj4gaXQncyBkZGIKPiAtCcKgKiBhbGxvY2F0aW9uLiBJbiB0aGF0IGNhc2Ugc2luY2UgdGhlIGRk YiBhbGxvY2F0aW9uIHdpbGwgYmUKPiB1cGRhdGVkCj4gLQnCoCogb25jZSB0aGUgcGxhbmUgYmVj b21lcyB2aXNpYmxlLCB3ZSBjYW4gc2tpcCB0aGlzIGNoZWNrCj4gLQnCoCovCj4gLQlpZiAoaW50 ZWxfY3J0Yy0+Y3Vyc29yX2FkZHIpIHsKPiAtCQlod19wbGFuZV93bSA9ICZod193bS5wbGFuZXNb UExBTkVfQ1VSU09SXTsKPiAtCQlzd19wbGFuZV93bSA9ICZzd193bS0+cGxhbmVzW1BMQU5FX0NV UlNPUl07Cj4gLQo+IC0JCS8qIFdhdGVybWFya3MgKi8KPiAtCQlmb3IgKGxldmVsID0gMDsgbGV2 ZWwgPD0gbWF4X2xldmVsOyBsZXZlbCsrKSB7Cj4gLQkJCWlmIChza2xfd21fbGV2ZWxfZXF1YWxz KCZod19wbGFuZV93bS0KPiA+d21bbGV2ZWxdLAo+IC0JCQkJCQkmc3dfcGxhbmVfd20tCj4gPndt W2xldmVsXSkpCj4gLQkJCQljb250aW51ZTsKPiAtCj4gLQkJCURSTV9FUlJPUigibWlzbWF0Y2gg aW4gV00gcGlwZSAlYyBjdXJzb3IKPiBsZXZlbCAlZCAoZXhwZWN0ZWQgZT0lZCBiPSV1IGw9JXUs IGdvdCBlPSVkIGI9JXUgbD0ldSlcbiIsCj4gLQkJCQnCoMKgcGlwZV9uYW1lKHBpcGUpLCBsZXZl bCwKPiAtCQkJCcKgwqBzd19wbGFuZV93bS0+d21bbGV2ZWxdLnBsYW5lX2VuLAo+IC0JCQkJwqDC oHN3X3BsYW5lX3dtLQo+ID53bVtsZXZlbF0ucGxhbmVfcmVzX2IsCj4gLQkJCQnCoMKgc3dfcGxh bmVfd20tCj4gPndtW2xldmVsXS5wbGFuZV9yZXNfbCwKPiAtCQkJCcKgwqBod19wbGFuZV93bS0+ d21bbGV2ZWxdLnBsYW5lX2VuLAo+IC0JCQkJwqDCoGh3X3BsYW5lX3dtLQo+ID53bVtsZXZlbF0u cGxhbmVfcmVzX2IsCj4gLQkJCQnCoMKgaHdfcGxhbmVfd20tCj4gPndtW2xldmVsXS5wbGFuZV9y ZXNfbCk7Cj4gLQkJfQo+IC0KPiAtCQlpZiAoIXNrbF93bV9sZXZlbF9lcXVhbHMoJmh3X3BsYW5l X3dtLT50cmFuc193bSwKPiAtCQkJCQnCoCZzd19wbGFuZV93bS0+dHJhbnNfd20pKSB7Cj4gLQkJ CURSTV9FUlJPUigibWlzbWF0Y2ggaW4gdHJhbnMgV00gcGlwZSAlYwo+IGN1cnNvciAoZXhwZWN0 ZWQgZT0lZCBiPSV1IGw9JXUsIGdvdCBlPSVkIGI9JXUgbD0ldSlcbiIsCj4gLQkJCQnCoMKgcGlw ZV9uYW1lKHBpcGUpLAo+IC0JCQkJwqDCoHN3X3BsYW5lX3dtLT50cmFuc193bS5wbGFuZV9lbiwK PiAtCQkJCcKgwqBzd19wbGFuZV93bS0+dHJhbnNfd20ucGxhbmVfcmVzX2IsCj4gLQkJCQnCoMKg c3dfcGxhbmVfd20tPnRyYW5zX3dtLnBsYW5lX3Jlc19sLAo+IC0JCQkJwqDCoGh3X3BsYW5lX3dt LT50cmFuc193bS5wbGFuZV9lbiwKPiAtCQkJCcKgwqBod19wbGFuZV93bS0+dHJhbnNfd20ucGxh bmVfcmVzX2IsCj4gLQkJCQnCoMKgaHdfcGxhbmVfd20tCj4gPnRyYW5zX3dtLnBsYW5lX3Jlc19s KTsKPiAtCQl9Cj4gLQo+IC0JCS8qIEREQiAqLwo+IC0JCWh3X2RkYl9lbnRyeSA9ICZod19kZGIu cGxhbmVbcGlwZV1bUExBTkVfQ1VSU09SXTsKPiAtCQlzd19kZGJfZW50cnkgPSAmc3dfZGRiLT5w bGFuZVtwaXBlXVtQTEFORV9DVVJTT1JdOwo+IC0KPiAtCQlpZiAoIXNrbF9kZGJfZW50cnlfZXF1 YWwoaHdfZGRiX2VudHJ5LAo+IHN3X2RkYl9lbnRyeSkpIHsKPiAtCQkJRFJNX0VSUk9SKCJtaXNt YXRjaCBpbiBEREIgc3RhdGUgcGlwZSAlYwo+IGN1cnNvciAoZXhwZWN0ZWQgKCV1LCV1KSwgZm91 bmQgKCV1LCV1KSlcbiIsCj4gLQkJCQnCoMKgcGlwZV9uYW1lKHBpcGUpLAo+IC0JCQkJwqDCoHN3 X2RkYl9lbnRyeS0+c3RhcnQsIHN3X2RkYl9lbnRyeS0KPiA+ZW5kLAo+IC0JCQkJwqDCoGh3X2Rk Yl9lbnRyeS0+c3RhcnQsIGh3X2RkYl9lbnRyeS0KPiA+ZW5kKTsKPiAtCQl9Cj4gLQl9Cj4gwqB9 Cj4gwqAKPiDCoHN0YXRpYyB2b2lkCj4gQEAgLTE1MjE1LDExICsxNTE4NSwxOCBAQCBzdGF0aWMg c3RydWN0IGRybV9wbGFuZQo+ICppbnRlbF9jdXJzb3JfcGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCj4gwqAJY3Vyc29yLT5jYW5fc2NhbGUgPSBmYWxzZTsKPiDCoAljdXJzb3It Pm1heF9kb3duc2NhbGUgPSAxOwo+IMKgCWN1cnNvci0+cGlwZSA9IHBpcGU7Cj4gLQljdXJzb3It PnBsYW5lID0gcGlwZTsKPiDCoAljdXJzb3ItPmZyb250YnVmZmVyX2JpdCA9IElOVEVMX0ZST05U QlVGRkVSX0NVUlNPUihwaXBlKTsKPiAtCWN1cnNvci0+Y2hlY2tfcGxhbmUgPSBpbnRlbF9jaGVj a19jdXJzb3JfcGxhbmU7Cj4gLQljdXJzb3ItPnVwZGF0ZV9wbGFuZSA9IGludGVsX3VwZGF0ZV9j dXJzb3JfcGxhbmU7Cj4gLQljdXJzb3ItPmRpc2FibGVfcGxhbmUgPSBpbnRlbF9kaXNhYmxlX2N1 cnNvcl9wbGFuZTsKPiArCWlmIChJTlRFTF9JTkZPKGRldiktPmhhc19yZWFsX2N1cnNvcikgewo+ ICsJCWN1cnNvci0+cGxhbmUgPSBwaXBlO8KgwqAvKiB1bnVzZWQ/ICovCj4gKwkJY3Vyc29yLT5j aGVja19wbGFuZSA9IGludGVsX2NoZWNrX2N1cnNvcl9wbGFuZTsKPiArCQljdXJzb3ItPnVwZGF0 ZV9wbGFuZSA9IGludGVsX3VwZGF0ZV9jdXJzb3JfcGxhbmU7Cj4gKwkJY3Vyc29yLT5kaXNhYmxl X3BsYW5lID0gaW50ZWxfZGlzYWJsZV9jdXJzb3JfcGxhbmU7Cj4gKwl9IGVsc2Ugewo+ICsJCWN1 cnNvci0+cGxhbmUgPSBJTlRFTF9JTkZPKGRldiktPm51bV9zcHJpdGVzW3BpcGVdIC0KPiAxOwo+ ICsJCWN1cnNvci0+Y2hlY2tfcGxhbmUgPSBpbnRlbF9jaGVja19zcHJpdGVfcGxhbmU7Cj4gKwkJ Y3Vyc29yLT51cGRhdGVfcGxhbmUgPSBza2xfdXBkYXRlX3BsYW5lOwo+ICsJCWN1cnNvci0+ZGlz YWJsZV9wbGFuZSA9IHNrbF9kaXNhYmxlX3BsYW5lOwo+ICsJfQo+IMKgCj4gwqAJcmV0ID0gZHJt X3VuaXZlcnNhbF9wbGFuZV9pbml0KGRldiwgJmN1cnNvci0+YmFzZSwgMCwKPiDCoAkJCQnCoMKg wqDCoMKgwqDCoCZpbnRlbF9wbGFuZV9mdW5jcywKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5o Cj4gaW5kZXggYzMxZmRkZC4uNTA4NzRlMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5o Cj4gQEAgLTE3OTAsNiArMTc5MCwxMyBAQCBpbnQgaW50ZWxfc3ByaXRlX3NldF9jb2xvcmtleShz dHJ1Y3QKPiBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gwqAJCQnCoMKgwqDCoMKgwqBz dHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdik7Cj4gwqB2b2lkIGludGVsX3BpcGVfdXBkYXRlX3N0 YXJ0KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKTsKPiDCoHZvaWQgaW50ZWxfcGlwZV91cGRhdGVf ZW5kKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLCBzdHJ1Y3QKPiBpbnRlbF9mbGlwX3dvcmsgKndv cmspOwo+ICtpbnQgaW50ZWxfY2hlY2tfc3ByaXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBs YW5lLAo+ICsJCQnCoMKgwqDCoMKgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUs Cj4gKwkJCcKgwqDCoMKgwqBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnN0YXRlKTsKPiArdm9p ZCBza2xfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKmRybV9wbGFuZSwKPiArCQnCoMKg wqDCoMKgwqBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiArCQnC oMKgwqDCoMKgwqBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKTsK PiArdm9pZCBza2xfZGlzYWJsZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpkcGxhbmUsIHN0cnVj dCBkcm1fY3J0Ywo+ICpjcnRjKTsKPiDCoAo+IMKgLyogaW50ZWxfdHYuYyAqLwo+IMKgdm9pZCBp bnRlbF90dl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9wbS5jCj4gaW5kZXggNmYxOWU2MC4uZTc1ZjZkOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cG0uYwo+IEBAIC0yODYzLDkgKzI4NjMsNyBAQCBib29sIGlsa19kaXNhYmxlX2xwX3dtKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpCj4gwqAKPiDCoC8qCj4gwqAgKiBSZXR1cm4gdGhlIGluZGV4IG9m IGEgcGxhbmUgaW4gdGhlIFNLTCBEREIgYW5kIHdtIHJlc3VsdAo+IGFycmF5cy7CoMKgUHJpbWFy eQo+IC0gKiBwbGFuZSBpcyBhbHdheXMgaW4gc2xvdCAwLCBjdXJzb3IgaXMgYWx3YXlzIGluIHNs b3QKPiBJOTE1X01BWF9QTEFORVMtMSwgYW5kCj4gLSAqIG90aGVyIHVuaXZlcnNhbCBwbGFuZXMg YXJlIGluIGluZGljZXMgMS4ubi7CoMKgTm90ZSB0aGF0IHRoaXMgbWF5Cj4gbGVhdmUgdW51c2Vk Cj4gLSAqIGluZGljZXMgYmV0d2VlbiB0aGUgdG9wICJzcHJpdGUiIHBsYW5lIGFuZCB0aGUgY3Vy c29yLgo+ICsgKiBwbGFuZSBpcyBhbHdheXMgaW4gc2xvdCAwIGFuZCBvdGhlciB1bml2ZXJzYWwg cGxhbmVzIGFyZSBpbgo+IGluZGljZXMgMS4ubi4KPiDCoCAqLwo+IMKgc3RhdGljIGludAo+IMKg c2tsX3dtX3BsYW5lX2lkKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUpCj4gQEAgLTI4 NzQsNyArMjg3Miw2IEBAIHNrbF93bV9wbGFuZV9pZChjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmUK PiAqcGxhbmUpCj4gwqAJY2FzZSBEUk1fUExBTkVfVFlQRV9QUklNQVJZOgo+IMKgCQlyZXR1cm4g MDsKPiDCoAljYXNlIERSTV9QTEFORV9UWVBFX0NVUlNPUjoKPiAtCQlyZXR1cm4gUExBTkVfQ1VS U09SOwo+IMKgCWNhc2UgRFJNX1BMQU5FX1RZUEVfT1ZFUkxBWToKPiDCoAkJcmV0dXJuIHBsYW5l LT5wbGFuZSArIDE7Cj4gwqAJZGVmYXVsdDoKPiBAQCAtMzEyOCwxNCArMzEyNSw2IEBAIHNrbF9k ZGJfZ2V0X3BpcGVfYWxsb2NhdGlvbl9saW1pdHMoc3RydWN0Cj4gZHJtX2RldmljZSAqZGV2LAo+ IMKgCWFsbG9jLT5lbmQgPSBhbGxvYy0+c3RhcnQgKyBwaXBlX3NpemU7Cj4gwqB9Cj4gwqAKPiAt c3RhdGljIHVuc2lnbmVkIGludCBza2xfY3Vyc29yX2FsbG9jYXRpb24oaW50IG51bV9hY3RpdmUp Cj4gLXsKPiAtCWlmIChudW1fYWN0aXZlID09IDEpCj4gLQkJcmV0dXJuIDMyOwo+IC0KPiAtCXJl dHVybiA4Owo+IC19Cj4gLQo+IMKgc3RhdGljIHZvaWQgc2tsX2RkYl9lbnRyeV9pbml0X2Zyb21f aHcoc3RydWN0IHNrbF9kZGJfZW50cnkgKmVudHJ5LAo+IHUzMiByZWcpCj4gwqB7Cj4gwqAJZW50 cnktPnN0YXJ0ID0gcmVnICYgMHgzZmY7Cj4gQEAgLTMxNjYsMTAgKzMxNTUsNiBAQCB2b2lkIHNr bF9kZGJfZ2V0X2h3X3N0YXRlKHN0cnVjdAo+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ IMKgCQkJCQkJwqDCoMKgdmFsKTsKPiDCoAkJfQo+IMKgCj4gLQkJdmFsID0gSTkxNV9SRUFEKENV Ul9CVUZfQ0ZHKHBpcGUpKTsKPiAtCQlza2xfZGRiX2VudHJ5X2luaXRfZnJvbV9odygmZGRiLQo+ ID5wbGFuZVtwaXBlXVtQTEFORV9DVVJTT1JdLAo+IC0JCQkJCcKgwqDCoHZhbCk7Cj4gLQo+IMKg CQlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgcG93ZXJfZG9tYWluKTsKPiDCoAl9 Cj4gwqB9Cj4gQEAgLTMyMjcsOCArMzIxMiw2IEBAIHNrbF9wbGFuZV9yZWxhdGl2ZV9kYXRhX3Jh dGUoY29uc3Qgc3RydWN0Cj4gaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAo+IMKgCj4gwqAJaWYg KCFpbnRlbF9wc3RhdGUtPmJhc2UudmlzaWJsZSkKPiDCoAkJcmV0dXJuIDA7Cj4gLQlpZiAocHN0 YXRlLT5wbGFuZS0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9DVVJTT1IpCj4gLQkJcmV0dXJuIDA7 Cj4gwqAJaWYgKHkgJiYgZm9ybWF0ICE9IERSTV9GT1JNQVRfTlYxMikKPiDCoAkJcmV0dXJuIDA7 Cj4gwqAKPiBAQCAtMzM4Niw3ICszMzY5LDcgQEAgc2tsX2FsbG9jYXRlX3BpcGVfZGRiKHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlCj4gKmNzdGF0ZSwKPiDCoAlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRl ICpwc3RhdGU7Cj4gwqAJZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+IMKgCXN0 cnVjdCBza2xfZGRiX2VudHJ5ICphbGxvYyA9ICZjc3RhdGUtPndtLnNrbC5kZGI7Cj4gLQl1aW50 MTZfdCBhbGxvY19zaXplLCBzdGFydCwgY3Vyc29yX2Jsb2NrczsKPiArCXVpbnQxNl90IGFsbG9j X3NpemUsIHN0YXJ0Owo+IMKgCXVpbnQxNl90ICptaW5pbXVtID0gY3N0YXRlLT53bS5za2wubWlu aW11bV9ibG9ja3M7Cj4gwqAJdWludDE2X3QgKnlfbWluaW11bSA9IGNzdGF0ZS0+d20uc2tsLm1p bmltdW1feV9ibG9ja3M7Cj4gwqAJdW5zaWduZWQgaW50IHRvdGFsX2RhdGFfcmF0ZTsKPiBAQCAt MzQxMiwxMiArMzM5NSw2IEBAIHNrbF9hbGxvY2F0ZV9waXBlX2RkYihzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZQo+ICpjc3RhdGUsCj4gwqAJCXJldHVybiAwOwo+IMKgCX0KPiDCoAo+IC0JY3Vyc29y X2Jsb2NrcyA9IHNrbF9jdXJzb3JfYWxsb2NhdGlvbihudW1fYWN0aXZlKTsKPiAtCWRkYi0+cGxh bmVbcGlwZV1bUExBTkVfQ1VSU09SXS5zdGFydCA9IGFsbG9jLT5lbmQgLQo+IGN1cnNvcl9ibG9j a3M7Cj4gLQlkZGItPnBsYW5lW3BpcGVdW1BMQU5FX0NVUlNPUl0uZW5kID0gYWxsb2MtPmVuZDsK PiAtCj4gLQlhbGxvY19zaXplIC09IGN1cnNvcl9ibG9ja3M7CgpTbyB0aGlzIG1lYW5zIHRoYXQg bm93IGluIHN0ZXAgMiB3ZSdyZSBnb2luZyB0byB0cnkgdG8gaW5jcmVhc2UgdGhlCmN1cnNvciBE REJzIGJleW9uZCB0aGUgY3VycmVudCBmaXhlZCBzaXplcyBvZiAzMiBvciA4PyBBcmVuJ3Qgd2Ug Z29pbmcKdG8gbGVhdmUgdGhlIGN1cnNvciBEREIgd2F5LXRvby1iaWcgYW5kIHRha2luZyBzcGFj ZSBvZiB0aGUgb3RoZXIgRERCcwp3aGVuIGl0J3MganVzdCBiZWluZyB1c2VkIGFzIGEgY3Vyc29y PwoKQWxzbywgd2UncmUgbm90IGdvaW5nIHRvIGxlYXZlIHRoZSBjdXJzb3IgRERCIGF0IHRoZSBl bmQgb2YgdGhlIGJ1ZmZlciwKd2hpY2ggbWF5IGNhdXNlIHNvbWUgZXh0cmEgRERCIHJlYWxsb2Nh dGlvbnMgdGhhdCB3ZSBtYXkgbm90IHdhbnQuCkFsc28sIHdoZW5ldmVyIHNvbWVvbmUgZGlzYWJs ZXMgdGhlIGN1cnNvciB3ZSdsbCBkbyBhIEREQiByZWFsbG9jYXRpb24sCmFuZCBhcyBmYXIgYXMg SSB1bmRlcnN0YW5kIHdlIHJlYWxseSBkb24ndCB3YW50IHRoaXMgc3BlY2lmaWMgY2FzZQpzaW5j ZSBpdCdzIHNvIGNvbW1vbi4KCkFuZCB0aGVyZSdzIGEgc2lsbC1ub3QtaW1wbGVtZW50ZWQgd29y a2Fyb3VuZCBmb3Igd2F0ZXJtYXJrcwpwcm9ncmFtbWluZyByZWxhdGVkIHRvIHRoZSBtZW1vcnkg YmFuZHdpZHRoIGFuZCBpdCBhbHNvIHNwZWNpYWwtY2FzZXMKdGhlIGN1cnNvci4gSXMgdGhlcmUg YSB3YXkgdG8ga25vdyB3aGVuIHRoZSBjdXJzb3IgaXMgYmVpbmcgdXNlZCBhcyBhCmN1cnNvciBv ciB3aGVuIGl0J3MgYmVpbmcgdXNlZCBhcyBhIG5vcm1hbCBwbGFuZT8gTWF5YmUganVzdCBjaGVj ayBpdApieSBhIHNpemUgdGhyZXNob2xkPwoKTXkgYW54aWV0eSBsZXZlbHMgYWx3YXlzIGdvIHVw IHdoZW5ldmVyIEkgc2VlIHNvbWVvbmUgY2hhbmdpbmcgdGhlIGNvZGUKaW4gYSB3YXkgdGhhdCBt YWtlcyBpdCBub3QgbWF0Y2ggd2l0aCB3aGF0J3Mgd3JpdHRlbiBpbiB0aGUgc3BlYwphbnltb3Jl LiBNYXliZSB3ZSdsbCBiZSBmaW5lIHdpdGggdGhlIGNoYW5nZXMsIGJ1dCB3ZSBuZWVkIHRvIGNh cmVmdWxseQphbmFseXplIHRoZSBpbXBhY3QgaGVyZSwgZXNwZWNpYWxseSBzaW5jZSB3YXRlcm1h cmtzIGFyZSBzdGlsbCBzbwpmcmFnaWxlLiBNYXliZSB3ZSBzaG91bGQganVzdCBwaW5nIHRoZSBz cGVjIGF1dGhvcnMgYW5kIG1ha2UgdGhlbQpyZXdyaXRlIHRoZSBzcGVjcyBpbiBhIHdheSB0aGF0 IGNvbnNpZGVycyB0aGUgY2FzZXMgd2hlcmUgdGhlIGN1cnNvcgpwbGFuZSBpcyBiZWluZyB1c2Vk IGFzIGEgZ2VuZXJpYyBwbGFuZT8KCj4gLQo+IMKgCS8qIDEuIEFsbG9jYXRlIHRoZSBtaW5pbnVt IHJlcXVpcmVkIGJsb2NrcyBmb3IgZWFjaCBhY3RpdmUKPiBwbGFuZSAqLwo+IMKgCWZvcl9lYWNo X3BsYW5lX2luX3N0YXRlKHN0YXRlLCBwbGFuZSwgcHN0YXRlLCBpKSB7Cj4gwqAJCWludGVsX3Bs YW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmUpOwo+IEBAIC0zNDMxLDE3ICszNDA4LDEyIEBAIHNr bF9hbGxvY2F0ZV9waXBlX2RkYihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZQo+ICpjc3RhdGUsCj4g wqAJCQl5X21pbmltdW1baWRdID0gMDsKPiDCoAkJCWNvbnRpbnVlOwo+IMKgCQl9Cj4gLQkJaWYg KHBsYW5lLT50eXBlID09IERSTV9QTEFORV9UWVBFX0NVUlNPUikgewo+IC0JCQltaW5pbXVtW2lk XSA9IDA7Cj4gLQkJCXlfbWluaW11bVtpZF0gPSAwOwo+IC0JCQljb250aW51ZTsKPiAtCQl9Cj4g wqAKPiDCoAkJbWluaW11bVtpZF0gPSBza2xfZGRiX21pbl9hbGxvYyhwc3RhdGUsIDApOwo+IMKg CQl5X21pbmltdW1baWRdID0gc2tsX2RkYl9taW5fYWxsb2MocHN0YXRlLCAxKTsKPiDCoAl9Cj4g wqAKPiAtCWZvciAoaSA9IDA7IGkgPCBQTEFORV9DVVJTT1I7IGkrKykgewo+ICsJZm9yIChpID0g MDsgaSA8IEk5MTVfTUFYX1BMQU5FUzsgaSsrKSB7Cj4gwqAJCWFsbG9jX3NpemUgLT0gbWluaW11 bVtpXTsKPiDCoAkJYWxsb2Nfc2l6ZSAtPSB5X21pbmltdW1baV07Cj4gwqAJfQo+IEBAIC0zODY2 LDI2ICszODM4LDYgQEAgdm9pZCBza2xfd3JpdGVfcGxhbmVfd20oc3RydWN0IGludGVsX2NydGMK PiAqaW50ZWxfY3J0YywKPiDCoAkJCcKgwqDCoMKgJmRkYi0+eV9wbGFuZVtwaXBlXVtwbGFuZV0p Owo+IMKgfQo+IMKgCj4gLXZvaWQgc2tsX3dyaXRlX2N1cnNvcl93bShzdHJ1Y3QgaW50ZWxfY3J0 YyAqaW50ZWxfY3J0YywKPiAtCQkJwqBjb25zdCBzdHJ1Y3Qgc2tsX3BsYW5lX3dtICp3bSwKPiAt CQkJwqBjb25zdCBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpkZGIpCj4gLXsKPiAtCXN0cnVj dCBkcm1fY3J0YyAqY3J0YyA9ICZpbnRlbF9jcnRjLT5iYXNlOwo+IC0Jc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IGNydGMtPmRldjsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoZGV2KTsKPiAtCWludCBsZXZlbCwgbWF4X2xldmVsID0gaWxrX3dtX21heF9s ZXZlbChkZXZfcHJpdik7Cj4gLQllbnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7Cj4g LQo+IC0JZm9yIChsZXZlbCA9IDA7IGxldmVsIDw9IG1heF9sZXZlbDsgbGV2ZWwrKykgewo+IC0J CXNrbF93cml0ZV93bV9sZXZlbChkZXZfcHJpdiwgQ1VSX1dNKHBpcGUsIGxldmVsKSwKPiAtCQkJ CcKgwqDCoCZ3bS0+d21bbGV2ZWxdKTsKPiAtCX0KPiAtCXNrbF93cml0ZV93bV9sZXZlbChkZXZf cHJpdiwgQ1VSX1dNX1RSQU5TKHBpcGUpLCAmd20tCj4gPnRyYW5zX3dtKTsKPiAtCj4gLQlza2xf ZGRiX2VudHJ5X3dyaXRlKGRldl9wcml2LCBDVVJfQlVGX0NGRyhwaXBlKSwKPiAtCQkJwqDCoMKg wqAmZGRiLT5wbGFuZVtwaXBlXVtQTEFORV9DVVJTT1JdKTsKPiAtfQo+IC0KPiDCoGJvb2wgc2ts X3dtX2xldmVsX2VxdWFscyhjb25zdCBzdHJ1Y3Qgc2tsX3dtX2xldmVsICpsMSwKPiDCoAkJCcKg Y29uc3Qgc3RydWN0IHNrbF93bV9sZXZlbCAqbDIpCj4gwqB7Cj4gQEAgLTQxMjIsMTkgKzQwNzQs MTEgQEAgc2tsX3ByaW50X3dtX2NoYW5nZXMoY29uc3Qgc3RydWN0Cj4gZHJtX2F0b21pY19zdGF0 ZSAqc3RhdGUpCj4gwqAJCQlpZiAoc2tsX2RkYl9lbnRyeV9lcXVhbChvbGQsIG5ldykpCj4gwqAJ CQkJY29udGludWU7Cj4gwqAKPiAtCQkJaWYgKGlkICE9IFBMQU5FX0NVUlNPUikgewo+IC0JCQkJ RFJNX0RFQlVHX0FUT01JQygiW1BMQU5FOiVkOnBsYW5lCj4gJWQlY10gZGRiICglZCAtICVkKSAt PiAoJWQgLSAlZClcbiIsCj4gLQkJCQkJCcKgcGxhbmUtPmJhc2UuaWQsIGlkCj4gKyAxLAo+IC0J CQkJCQnCoHBpcGVfbmFtZShwaXBlKSwKPiAtCQkJCQkJwqBvbGQtPnN0YXJ0LCBvbGQtCj4gPmVu ZCwKPiAtCQkJCQkJwqBuZXctPnN0YXJ0LCBuZXctCj4gPmVuZCk7Cj4gLQkJCX0gZWxzZSB7Cj4g LQkJCQlEUk1fREVCVUdfQVRPTUlDKCJbUExBTkU6JWQ6Y3Vyc29yCj4gJWNdIGRkYiAoJWQgLSAl ZCkgLT4gKCVkIC0gJWQpXG4iLAo+IC0JCQkJCQnCoHBsYW5lLT5iYXNlLmlkLAo+IC0JCQkJCQnC oHBpcGVfbmFtZShwaXBlKSwKPiAtCQkJCQkJwqBvbGQtPnN0YXJ0LCBvbGQtCj4gPmVuZCwKPiAt CQkJCQkJwqBuZXctPnN0YXJ0LCBuZXctCj4gPmVuZCk7Cj4gLQkJCX0KPiArCQkJRFJNX0RFQlVH X0FUT01JQygiW1BMQU5FOiVkOnBsYW5lICVkJWNdIGRkYgo+ICglZCAtICVkKSAtPiAoJWQgLSAl ZClcbiIsCj4gKwkJCQkJwqBwbGFuZS0+YmFzZS5pZCwgaWQgKyAxLAo+ICsJCQkJCcKgcGlwZV9u YW1lKHBpcGUpLAo+ICsJCQkJCcKgb2xkLT5zdGFydCwgb2xkLT5lbmQsCj4gKwkJCQkJwqBuZXct PnN0YXJ0LCBuZXctPmVuZCk7Cj4gwqAJCX0KPiDCoAl9Cj4gwqB9Cj4gQEAgLTQyMzUsOSArNDE3 OSw2IEBAIHN0YXRpYyB2b2lkIHNrbF91cGRhdGVfd20oc3RydWN0IGRybV9jcnRjCj4gKmNydGMp Cj4gwqAJCWZvcl9lYWNoX3VuaXZlcnNhbF9wbGFuZShkZXZfcHJpdiwgcGlwZSwgcGxhbmUpCj4g wqAJCQlza2xfd3JpdGVfcGxhbmVfd20oaW50ZWxfY3J0YywgJnBpcGVfd20tCj4gPnBsYW5lc1tw bGFuZV0sCj4gwqAJCQkJCcKgwqDCoCZyZXN1bHRzLT5kZGIsIHBsYW5lKTsKPiAtCj4gLQkJc2ts X3dyaXRlX2N1cnNvcl93bShpbnRlbF9jcnRjLCAmcGlwZV93bS0KPiA+cGxhbmVzW1BMQU5FX0NV UlNPUl0sCj4gLQkJCQnCoMKgwqDCoCZyZXN1bHRzLT5kZGIpOwo+IMKgCX0KPiDCoAo+IMKgCXNr bF9jb3B5X3dtX2Zvcl9waXBlKGh3X3ZhbHMsIHJlc3VsdHMsIHBpcGUpOwo+IEBAIC00MzUwLDE4 ICs0MjkxLDEyIEBAIHZvaWQgc2tsX3BpcGVfd21fZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1fY3J0 Ywo+ICpjcnRjLAo+IMKgCQl3bSA9ICZvdXQtPnBsYW5lc1tpZF07Cj4gwqAKPiDCoAkJZm9yIChs ZXZlbCA9IDA7IGxldmVsIDw9IG1heF9sZXZlbDsgbGV2ZWwrKykgewo+IC0JCQlpZiAoaWQgIT0g UExBTkVfQ1VSU09SKQo+IC0JCQkJdmFsID0gSTkxNV9SRUFEKFBMQU5FX1dNKHBpcGUsIGlkLAo+ IGxldmVsKSk7Cj4gLQkJCWVsc2UKPiAtCQkJCXZhbCA9IEk5MTVfUkVBRChDVVJfV00ocGlwZSwK PiBsZXZlbCkpOwo+ICsJCQl2YWwgPSBJOTE1X1JFQUQoUExBTkVfV00ocGlwZSwgaWQsIGxldmVs KSk7Cj4gwqAKPiDCoAkJCXNrbF93bV9sZXZlbF9mcm9tX3JlZ192YWwodmFsLCAmd20tCj4gPndt W2xldmVsXSk7Cj4gwqAJCX0KPiDCoAo+IC0JCWlmIChpZCAhPSBQTEFORV9DVVJTT1IpCj4gLQkJ CXZhbCA9IEk5MTVfUkVBRChQTEFORV9XTV9UUkFOUyhwaXBlLCBpZCkpOwo+IC0JCWVsc2UKPiAt CQkJdmFsID0gSTkxNV9SRUFEKENVUl9XTV9UUkFOUyhwaXBlKSk7Cj4gKwkJdmFsID0gSTkxNV9S RUFEKFBMQU5FX1dNX1RSQU5TKHBpcGUsIGlkKSk7Cj4gwqAKPiDCoAkJc2tsX3dtX2xldmVsX2Zy b21fcmVnX3ZhbCh2YWwsICZ3bS0+dHJhbnNfd20pOwo+IMKgCX0KPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3Nwcml0ZS5jCj4gaW5kZXggNDNkMDM1MC4uOWU2NDA2YSAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gQEAgLTE5NCw3ICsxOTQsNyBAQCB2b2lkIGludGVsX3Bp cGVfdXBkYXRlX2VuZChzdHJ1Y3QgaW50ZWxfY3J0Ywo+ICpjcnRjLCBzdHJ1Y3QgaW50ZWxfZmxp cF93b3JrICp3b3JrCj4gwqAJfQo+IMKgfQo+IMKgCj4gLXN0YXRpYyB2b2lkCj4gK3ZvaWQKPiDC oHNrbF91cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqZHJtX3BsYW5lLAo+IMKgCQnCoGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+IMKgCQnCoGNvbnN0IHN0 cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gQEAgLTI4NSw3ICsyODUsNyBA QCBza2xfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKmRybV9wbGFuZSwKPiDCoAlQT1NU SU5HX1JFQUQoUExBTkVfU1VSRihwaXBlLCBwbGFuZSkpOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyB2 b2lkCj4gK3ZvaWQKPiDCoHNrbF9kaXNhYmxlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKmRwbGFu ZSwgc3RydWN0IGRybV9jcnRjICpjcnRjKQo+IMKgewo+IMKgCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBkcGxhbmUtPmRldjsKPiBAQCAtNzUyLDcgKzc1Miw3IEBAIGlsa19kaXNhYmxlX3BsYW5l KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3QKPiBkcm1fY3J0YyAqY3J0YykKPiDCoAlQ T1NUSU5HX1JFQUQoRFZTU1VSRihwaXBlKSk7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludAo+ICtp bnQKPiDCoGludGVsX2NoZWNrX3Nwcml0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwK PiDCoAkJCcKgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gwqAJCQnCoHN0 cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqc3RhdGUpCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeAo=