From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: Re: [RFC 3/4] drm/i915/gen9: Expose top-most universal plane as cursor Date: Thu, 27 Oct 2016 15:35:40 -0700 Message-ID: <20161027223540.GK5924@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> <1477606532.24403.14.camel@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 288666E2AC for ; Thu, 27 Oct 2016 22:35:41 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1477606532.24403.14.camel@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Lyude Paul Cc: intel-gfx@lists.freedesktop.org, Paulo Zanoni List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBPY3QgMjcsIDIwMTYgYXQgMDY6MTU6MzJQTSAtMDQwMCwgTHl1ZGUgUGF1bCB3cm90 ZToKPiBPbiBXZWQsIDIwMTYtMTAtMjYgYXQgMTU6NTEgLTA3MDAsIE1hdHQgUm9wZXIgd3JvdGU6 Cj4gPiBHZW45IGhhcyBhIHRyYWRpdGlvbmFsIGN1cnNvciBwbGFuZSB0aGF0IGlzIG11dHVhbGx5 IGV4Y2x1c2l2ZSB3aXRoCj4gPiB0aGUKPiA+IHN5c3RlbSdzIHRvcC1tb3N0ICJ1bml2ZXJzYWwi IHBsYW5lOyBpdCBzZWVtcyBsaWtlbHkgdGhhdCB0d28gcGxhbmVzCj4gPiBhcmUKPiA+IHJlYWxs eSBhIHNpbmdsZSBzaGFyZWQgaGFyZHdhcmUgdW5pdCB3aXRoIHR3byBkaWZmZXJlbnQgcmVnaXN0 ZXIKPiA+IGludGVyZmFjZXMuwqDCoFRodXMgZmFyIGk5MTUgaGFzIGV4cG9zZWQgYSBjdXJzb3Ig cGxhbmUgdG8gdXNlcnNwYWNlCj4gPiB0aGF0J3MgaG9va2VkIHVwIHRvIHRoZSBvbGQtc3R5bGUg Y3Vyc29yIHJlZ2lzdGVyczsgd2UganVzdCBwcmV0ZW5kZWQKPiA+IHRoYXQgdGhlIHRvcC1tb3N0 IHVuaXZlcnNhbCBwbGFuZSBkaWRuJ3QgZXhpc3QgYW5kIHJlcG9ydGVkIG9uZSBmZXdlcgo+ID4g InNwcml0ZS9vdmVybGF5IiBwbGFuZXMgZm9yIGVhY2ggcGlwZSB0aGFuIHRoZSBwbGF0Zm9ybSB0 ZWNobmljYWxseQo+ID4gaGFzLgo+ID4gTGV0J3Mgc3dpdGNoIHRoaXMgYXJvdW5kIHNvIHRoYXQg dGhlIGN1cnNvciBleHBvc2VkIHRvIHVzZXJzcGFjZSBpcwo+ID4gYWN0dWFsbHkgd2lyZWQgdXAg dG8gdG9wLW1vc3QgdW5pdmVyc2FsIHBsYW5lIHJlZ2lzdGVycy7CoMKgV2UnbGwKPiA+IGNvbnRp bnVlCj4gPiB0byBwcmVzZW50IHRoZSBzYW1lIGN1cnNvciBBQkkgdG8gdXNlcnNwYWNlIHRoYXQg d2UgYWx3YXlzIGhhdmUsIGJ1dAo+ID4gaW50ZXJuYWxseSB3ZSdsbCBqdXN0IGJlIHByb2dyYW1t aW5nIGEgZGlmZmVyZW50IHNldCBvZiByZWdpc3RlcnMgYW5kCj4gPiBkb2luZyBzbyBpbiBhIHdh eSB0aGF0J3MgbW9yZSBjb25zaXN0ZW50IHdpdGggaG93IGFsbCB0aGUgb3RoZXIgZ2VuOQo+ID4g cGxhbmVzIHdvcmsgLS0tIGxlc3MgY3Vyc29yLXNwZWNpZmljIHNwZWNpYWwgY2FzZXMgdGhyb3Vn aG91dCB0aGUKPiA+IGNvZGUuCj4gPiAKPiA+IEFzaWRlIGZyb20gbWFraW5nIHRoZSBjb2RlIGEg Yml0IHNpbXBsZXIgKGZld2VyIGN1cnNvci1zcGVjaWZpYwo+ID4gc3BlY2lhbAo+ID4gY2FzZXMp LCB0aGlzIHdpbGwgYWxzbyBwYXZlIHRoZSB3YXkgdG8gZXZlbnR1YWxseSBleHBvc2luZyB0aGUg dG9wLQo+ID4gbW9zdAo+ID4gcGxhbmUgaW4gYSBtb3JlIGZ1bGwtZmVhdHVyZWQgbWFubmVyIHRv IHVzZXJzcGFjZSBjbGllbnRzIHRoYXQgZG9uJ3QKPiA+IG5lZWQgYSB0cmFkaXRpb25hbCBjdXJz b3IgYW5kIHdpc2ggdG8gb3B0IGludG8gaGF2aW5nIGFjY2VzcyB0byBhbgo+ID4gYWRkaXRpb25h bCBzcHJpdGUvb3ZlcmxheS1zdHlsZSBwbGFuZSBpbnN0ZWFkLgo+ID4gCj4gPiBJdCdzIHdvcnRo IG5vdGluZyB0aGF0IGEgbG90IG9mIHRoZSBzcGVjaWFsLWNhc2VkIGN1cnNvci1zcGVjaWZpYwo+ ID4gY29kZQo+ID4gd2FzIGluIHRoZSBnZW45IHdhdGVybWFyayBwcm9ncmFtbWluZy7CoMKgSXQn cyBnb29kIHRvIHNpbXBsaWZ5IHRoYXQKPiA+IGNvZGUsCj4gPiBidXQgd2Ugc2hvdWxkIGtlZXAg YW4gZXllIG91dCBmb3IgYW55IHVud2FudGVkIHNpZGUgZWZmZWN0cyBvZiB0aGlzCj4gPiBwYXRj aDsgc2luY2Ugc3ByaXRlcy9vdmVybGF5cyB0ZW5kIHRvIGdldCB1c2VkIGxlc3MgdGhhbiBjdXJz b3JzLAo+ID4gaXQncwo+ID4gcG9zc2libGUgdGhhdCB0aGlzIGNvdWxkIGhlbHAgdXMgdW5jb3Zl ciBhZGRpdGlvbmFsIHVuZGVycnVucyB0aGF0Cj4gPiBub2JvZHkgaGFkIHJ1biBhY3Jvc3MgeWV0 LsKgwqBPciBpdCBjb3VsZCBoYXZlIHRoZSBvcHBvc2l0ZSBlZmZlY3QgYW5kCj4gPiBlbGltaW5h dGUgc29tZSBvZiB0aGUgdW5kZXJydW5zIHRoYXQgd2UgaGF2ZW4ndCBiZWVuIGFibGUgdG8gZ2V0 IHJpZAo+ID4gb2YKPiA+IHlldC4KPiAKPiBBbHJpZ2h0LCBzbyBJIGhhZCB0byBzaXQgb24gdGhp cyBwYXRjaCBmb3IgYSB3aGlsZS4gSSB0aGluayBleHBvc2luZwo+IHRoaXMgYXMgYSBub3JtYWwg cGxhbmUgaXMgYSBnb29kIGlkZWE6IHRoZSByZXN0IG9mIHRoZSB3b3JsZCBqdXN0IHVzZXMKPiBw bGFuZXMsIHNvIHdlIHNob3VsZCB0b28uIFdlIG5lZWQgdG8gYmUgKnJlYWxseSogY2FyZWZ1bCB3 aXRoIHRoaXMKPiB0aG91Z2guIExpa2UgUGF1bG8gc2FpZCB3YXRlcm1hcmtzIGFyZSBzdGlsbCBm cmFnaWxlIGFuZCBob25lc3RseSBJCj4gd291bGRuJ3QgYmUgc3VycHJpc2VkIGlmIHdlIGZvdW5k IG1vcmUgdW5kZXJydW5zIGhpZGluZyBzb21ld2hlcmUuCgpBZ3JlZWQuICBXZSdyZSBwcm9ncmFt bWluZyBhIGRpZmZlcmVudCBzdWJzZXQgb2YgdGhlIGludGVybmFsIGhhcmR3YXJlCnNvIGV2ZW4g aWYgd2UgZG8gaXQgMTAwJSBwcm9wZXJseSBhY2NvcmRpbmcgdG8gdGhlIHNwZWMsIHdlIGNhbiBl YXNpbHkKdW5jb3ZlciBwcmV2aW91c2x5IGhpZGRlbiBwYWlucG9pbnRzIGluIHRoZSBoYXJkd2Fy ZSB0aGF0IG5lZWQgbmV3Cndvcmthcm91bmRzLgoKPiBGaXJzdCBvZmYsIGFsdGhvdWdoIHRoaXMg d2FzIG1lbnRpb25lZCBpbiBhbiBlLW1haWwgZG93biB0aGUgY2hhaW4sIEknbQo+IHByZXR0eSBz dXJlIGhhdmluZyBhIDAgYmxvY2sgYWxsb2NhdGlvbiBpcyBkZWZpbml0ZWx5IG5vdCB3aGF0IHdl IHdhbnQuCj4gVGhlIHNwZWMgaXRzZWxmIHNheXMgYSBtaW5pbXVtIG9mIDggYmxvY2tzIGFzc3Vt aW5nIGl0J3MgYSBub3JtYWwKPiBjdXJzb3IsIHNvIGlmIHdlJ3JlIGdvaW5nIGJlbG93IHRoYXQg d2UgZGVmaW5pdGVseSBuZWVkIHRvIGF0IGxlYXN0Cj4gbWFrZSBzdXJlIHRoYXQgYmVoYXZpb3Ig aXNuJ3Qgd3JvbmcuCgpEREIgYWxsb2NhdGlvbiBzaG91bGQgb25seSBiZSBuZWNlc3NhcnkgaWYg YSBwbGFuZSBpcyBiZWluZyB1c2VkCihvdGhlcndpc2UgeW91IGhhdmUgbm8gZGF0YSB0byBmaWxs IHRoZSBidWZmZXIgd2l0aCBhbnl3YXkpLiAgSWYgYSBwbGFuZQppcyBvZmYsIHRoZW4gaXQgc2hv dWxkbid0IG5lZWQgYWxsb2NhdGlvbiAoYW5kIHRoaXMgcGF0Y2ggZ3VhcmFudGVlcwp0aGF0IHRo ZSBjdXJzb3Igd2lsbCBfbmV2ZXJfIGJlIHR1cm5lZCBvbikgSSdtIHByZXR0eSBzdXJlIHdlJ3Zl CmFjdHVhbGx5IGhhZCBzb21lIHRocmVhZHMgd2hlcmUgQXJ0IChvbmUgb2Ygb3VyIGhhcmR3YXJl IGFyY2hpdGVjdHMpCm1lbnRpb25lZCB0aGF0IHRoZSBjdXJzb3IgZml4ZWQgYWxsb2NhdGlvbiBp cyBqdXN0IGFuIG9wdGltaXphdGlvbiBhbmQKaXNuJ3QgaW4gYW55IHdheSByZXF1aXJlZCBldmVu IHdoZW4geW91IGRvIHVzZSB0aGUgY3Vyc29yIGhhcmR3YXJlCnBsYW5lLiAgVGhlIG9ubHkgb25l IEkgY2FuIGZpbmQgc2VhcmNoaW5nIG5vdyBpcyB0aGlzIG9uZToKCiAgICAgICAgaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvYXJjaGl2ZXMvaW50ZWwtZ2Z4LzIwMTYtSnVuZS8wOTkyNTYu aHRtbAoKYnV0IEkgZmVlbCBsaWtlIHRoZXJlIHdhcyBhbm90aGVyIHRocmVhZCAob3IgbWF5YmUg YW4gSVJDIGNvbnZlcnNhdGlvbikKd2hlcmUgaGUgdGFsa2VkIGFib3V0IGl0IGEgYml0IG1vcmUu ICBJJ2xsIHNlZSBpZiBJIGNhbiBmaW5kIHRoZSBvbmUgSSdtCnRoaW5raW5nIG9mLgoKPiBUaGUg c2Vjb25kIHRoaW5nIGlzIHRoYXQgdW5mb3J0dW5hdGVseSB0aGlzIHJlZ3Jlc3NlcyBpbiBhIHJh dGhlcgo+IHN0cmFuZ2Ugd2F5LiBPbiB0aGlzIFgxIHlvZ2Egdy8gYSA0SyBzY3JlZW4gKFNLTCBj aGlwc2V0IG9mIGNvdXJzZSksIGlmCj4gSSBtb3ZlIHRoZSBjdXJzb3IgaW4gZnJvbnQgb2YgYSBn cmF5IGJhY2tncm91bmQgSSBjYW4gc2VlIGEgZmFpbnRseQo+IHZpc2libGUgYm94IHN0YXJ0aW5n IGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgY3Vyc29yIGFuZCBnb2luZyB0byB0aGUKPiBlbmQg b2YgdGhlIHBsYW5lLiBSZXZlcnRpbmcgdGhlIHBhdGNoIGZpeGVzIHRoZSBwcm9ibGVtLgoKWWVh aCwgSSBtZW50aW9uZWQgdGhhdCBpbiB0aGUgY292ZXIgbGV0dGVyLi4uSSBiZWxpZXZlIHRoZSBj b2xvcgpjb3JyZWN0aW9uIHNldHRpbmdzIGFyZSBkaWZmZXJlbnQgZm9yIHRoZSB1bml2ZXJzYWwg cGxhbmUgdnMgdGhlIGN1cnNvcgpwbGFuZSAod2hpY2ggY2F1c2VzIElHVCBDUkMgbWlzbWF0Y2hl cyBhdCB0aGUgbW9tZW50IGFuZCBtYXkgYmUgdmlzdWFsbHkKbm90aWNlYWJsZSBpZiB5b3UgaGF2 ZSBnb29kIGV5ZXMpOyB0aGF0IHNob3VsZG4ndCBiZSBoYXJkIHRvIHRyYWNrIGRvd24KYW5kIGZp eC4KCgpNYXR0Cgo+IAo+ID4gCj4gPiBDYzogQm9iIFBhYXV3ZSA8Ym9iLmoucGFhdXdlQGludGVs LmNvbT4KPiA+IENjOiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXgu aW50ZWwuY29tPgo+ID4gQ2M6IFBhdWxvIFphbm9uaSA8cGF1bG8uci56YW5vbmlAaW50ZWwuY29t Pgo+ID4gQ2M6IEx5dWRlIFBhdWwgPGx5dWRlQHJlZGhhdC5jb20+Cj4gPiBTaWduZWQtb2ZmLWJ5 OiBNYXR0IFJvcGVyIDxtYXR0aGV3LmQucm9wZXJAaW50ZWwuY29tPgo+ID4gLS0tCj4gPiDCoGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jwqDCoMKgwqDCoMKgfMKgwqA0IC0tCj4g PiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmjCoMKgwqDCoMKgwqDCoMKgwqDCoHwg MTEgKysrLQo+ID4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5jIHwg MzggKysrKysrKysrLS0tLQo+ID4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmPCoMKgwqDCoMKgfCA5NyArKysrKysrKysrKystLS0tLS0tLQo+ID4gLS0tLS0tLS0tLS0tCj4g PiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5owqDCoMKgwqDCoMKgwqDCoMKgfMKg wqA3ICsrKwo+ID4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jwqDCoMKgwqDCoMKg wqDCoMKgwqB8IDg1ICsrKystLS0tLS0tLS0tLS0tLS0tCj4gPiAtLS0tLS0tLQo+ID4gwqBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuY8KgwqDCoMKgwqDCoHzCoMKgNiArLQo+ID4g wqA3IGZpbGVzIGNoYW5nZWQsIDkzIGluc2VydGlvbnMoKyksIDE1NSBkZWxldGlvbnMoLSkKPiA+ IAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4g PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gPiBpbmRleCA5ZjVhMzky Li4wYmJhNDcyIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1 Z2ZzLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gPiBA QCAtMzQ2OSwxMCArMzQ2OSw2IEBAIHN0YXRpYyBpbnQgaTkxNV9kZGJfaW5mbyhzdHJ1Y3Qgc2Vx X2ZpbGUgKm0sCj4gPiB2b2lkICp1bnVzZWQpCj4gPiDCoAkJCQnCoMKgwqBlbnRyeS0+c3RhcnQs IGVudHJ5LT5lbmQsCj4gPiDCoAkJCQnCoMKgwqBza2xfZGRiX2VudHJ5X3NpemUoZW50cnkpKTsK PiA+IMKgCQl9Cj4gPiAtCj4gPiAtCQllbnRyeSA9ICZkZGItPnBsYW5lW3BpcGVdW1BMQU5FX0NV UlNPUl07Cj4gPiAtCQlzZXFfcHJpbnRmKG0sICLCoMKgJS0xM3MlOHUlOHUlOHVcbiIsICJDdXJz b3IiLCBlbnRyeS0KPiA+ID5zdGFydCwKPiA+IC0JCQnCoMKgwqBlbnRyeS0+ZW5kLCBza2xfZGRi X2VudHJ5X3NpemUoZW50cnkpKTsKPiA+IMKgCX0KPiA+IMKgCj4gPiDCoAlkcm1fbW9kZXNldF91 bmxvY2tfYWxsKGRldik7Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaAo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gPiBpbmRleCA0 NzE0MDUxLi44M2FhZWQyIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaAo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4gQEAg LTE3OCw3ICsxNzgsNyBAQCBlbnVtIHBsYW5lIHsKPiA+IMKgCVBMQU5FX0EgPSAwLAo+ID4gwqAJ UExBTkVfQiwKPiA+IMKgCVBMQU5FX0MsCj4gPiAtCVBMQU5FX0NVUlNPUiwKPiA+ICsJUExBTkVf RCwKPiA+IMKgCUk5MTVfTUFYX1BMQU5FUywKPiA+IMKgfTsKPiA+IMKgI2RlZmluZSBwbGFuZV9u YW1lKHApICgocCkgKyAnQScpCj4gPiBAQCAtMzE2LDkgKzMxNiwxNSBAQCBzdHJ1Y3QgaTkxNV9o b3RwbHVnIHsKPiA+IMKgCWZvciAoKF9fcCkgPSAwOwkJCQkJCQo+ID4gCVwKPiA+IMKgCcKgwqDC oMKgwqAoX19wKSA8IElOVEVMX0lORk8oX19kZXZfcHJpdiktPm51bV9zcHJpdGVzWyhfX3BpcGUp XSArCj4gPiAxOwlcCj4gPiDCoAnCoMKgwqDCoMKgKF9fcCkrKykKPiA+ICsKPiA+ICsvKgo+ID4g KyAqIE9ubHkgaXRlcmF0ZSBvdmVyIHNwcml0ZXMgZXhwb3NlZCBhcyBzcHJpdGVzOyBvbWl0IHNw cml0ZXMgdGhhdAo+ID4gKyAqIGFyZSBiZWluZyByZXB1cnBvc2VkIHRvIHNpbXVsYXRlIGEgY3Vy c29yLgo+ID4gKyAqLwo+ID4gwqAjZGVmaW5lIGZvcl9lYWNoX3Nwcml0ZShfX2Rldl9wcml2LCBf X3AsIF9fcykJCQkKPiA+IAlcCj4gPiDCoAlmb3IgKChfX3MpID0gMDsJCQkJCQkKPiA+IAlcCj4g PiAtCcKgwqDCoMKgwqAoX19zKSA8IElOVEVMX0lORk8oX19kZXZfcHJpdiktPm51bV9zcHJpdGVz WyhfX3ApXTsJCj4gPiBcCj4gPiArCcKgwqDCoMKgwqAoX19zKSA8IElOVEVMX0lORk8oX19kZXZf cHJpdiktPm51bV9zcHJpdGVzWyhfX3ApXSAtCQo+ID4gXAo+ID4gKwnCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoChJTlRFTF9JTkZPKF9fZGV2X3ByaXYpLT5oYXNfcmVhbF9jdXJzb3IgPyAwIDoK PiA+IDEpOwlcCj4gPiDCoAnCoMKgwqDCoMKgKF9fcykrKykKPiA+IMKgCj4gPiDCoCNkZWZpbmUg Zm9yX2VhY2hfcG9ydF9tYXNrZWQoX19wb3J0LCBfX3BvcnRzX21hc2spIFwKPiA+IEBAIC02ODcs NiArNjkzLDcgQEAgc3RydWN0IGludGVsX2NzciB7Cj4gPiDCoAlmdW5jKGhhc19wc3IpOyBcCj4g PiDCoAlmdW5jKGhhc19yYzYpOyBcCj4gPiDCoAlmdW5jKGhhc19yYzZwKTsgXAo+ID4gKwlmdW5j KGhhc19yZWFsX2N1cnNvcik7IFwKPiA+IMKgCWZ1bmMoaGFzX3Jlc291cmNlX3N0cmVhbWVyKTsg XAo+ID4gwqAJZnVuYyhoYXNfcnVudGltZV9wbSk7IFwKPiA+IMKgCWZ1bmMoaGFzX3Nub29wKTsg XAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9pbmZv LmMKPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uYwo+ID4gaW5k ZXggZDZhOGYxMS4uYTQ2NGUwZSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RldmljZV9pbmZvLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RldmljZV9pbmZvLmMKPiA+IEBAIC0yNzEsMjMgKzI3MSwzOSBAQCB2b2lkIGludGVsX2Rldmlj ZV9pbmZvX3J1bnRpbWVfaW5pdChzdHJ1Y3QKPiA+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ID4gwqAJZW51bSBwaXBlIHBpcGU7Cj4gPiDCoAo+ID4gwqAJLyoKPiA+IC0JwqAqIFNreWxh a2UgYW5kIEJyb3h0b24gY3VycmVudGx5IGRvbid0IGV4cG9zZSB0aGUgdG9wbW9zdAo+ID4gcGxh bmUgYXMgaXRzCj4gPiAtCcKgKiB1c2UgaXMgZXhjbHVzaXZlIHdpdGggdGhlIGxlZ2FjeSBjdXJz b3IgYW5kIHdlIG9ubHkgd2FudAo+ID4gdG8gZXhwb3NlCj4gPiAtCcKgKiBvbmUgb2YgdGhvc2Us IG5vdCBib3RoLiBVbnRpbCB3ZSBjYW4gc2FmZWx5IGV4cG9zZSB0aGUKPiA+IHRvcG1vc3QgcGxh bmUKPiA+IC0JwqAqIGFzIGEgRFJNX1BMQU5FX1RZUEVfQ1VSU09SIHdpdGggYWxsIHRoZSBmZWF0 dXJlcwo+ID4gZXhwb3NlZC9zdXBwb3J0ZWQsCj4gPiAtCcKgKiB3ZSBkb24ndCBleHBvc2UgdGhl IHRvcG1vc3QgcGxhbmUgYXQgYWxsIHRvIHByZXZlbnQgQUJJCj4gPiBicmVha2FnZQo+ID4gLQnC oCogZG93biB0aGUgbGluZS4KPiA+ICsJwqAqIEdlbjkgcGxhdGZvcm1zIGhhdmUgYSB0b3AtbW9z dCB1bml2ZXJzYWwgKGkuZS4sIHNwcml0ZSkKPiA+IHBsYW5lIGFuZCBhCj4gPiArCcKgKiBjdXJz b3IgcGxhbmUgdGhhdCBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLsKgwqBJZiB3ZSB1c2UgdGhlCj4g PiBjdXJzb3IKPiA+ICsJwqAqIHBsYW5lIHdlIHBlcm1hbmVudGx5IGxvc2UgdGhlIGFiaWxpdHkg dG8gbWFrZSB1c2Ugb2YgdGhlCj4gPiBtb3JlCj4gPiArCcKgKiBmdWxsLWZlYXR1cmVkIHVuaXZl cnNhbCBwbGFuZS7CoMKgU28gaW5zdGVhZCBsZXQncyB1c2UgYWxsCj4gPiBvZiB0aGUKPiA+ICsJ wqAqIHVuaXZlcnNhbCBwbGFuZXMsIGlnbm9yZSB0aGUgY3Vyc29yIHBsYW5lLCBidXQgaG9vayB0 aGUKPiA+IHRvcC1tb3N0Cj4gPiArCcKgKiB1bml2ZXJzYWwgcGxhbmUgdXAgdG8gdGhlIGxlZ2Fj eSBjdXJzb3IgaW9jdGwncyBhbmQKPiA+IGV4cG9zZSBpdCB0bwo+ID4gKwnCoCogdXNlcnNwYWNl IGFzIERSTV9QTEFORV9UWVBFX0NVUlNPUi7CoMKgVGhpcyB3b24ndCByZXN1bHQgaW4KPiA+IGFu eQo+ID4gKwnCoCogdmlzaWJsZSBiZWhhdmlvciBjaGFuZ2UgdG8gdXNlcnNwYWNlOyB3ZSdyZSBq dXN0Cj4gPiBpbnRlcm5hbGx5Cj4gPiArCcKgKiBwcm9ncmFtbWluZyBhIGRpZmZlcmVudCBzZXQg b2YgcmVnaXN0ZXJzLgo+ID4gKwnCoCoKPiA+ICsJwqAqIEZvciB0aGUgcHVycG9zZXMgb2YgZGV2 aWNlX2luZm8sIHdlJ3JlIG9ubHkgY29uY2VybmVkCj4gPiB3aXRoIHRoZQo+ID4gKwnCoCogbnVt YmVyIG9mIHVuaXZlcnNhbCBwbGFuZXMgd2UncmUgcHJvZ3JhbW1pbmcsIHJlZ2FyZGxlc3MKPiA+ IG9mIGhvdyB0aGV5Cj4gPiArCcKgKiBnZXQgbWFwcGVkIHRvIHVzZXJzcGFjZSBpbnRlcmZhY2Vz LCBzbyB3ZSdsbCByZXBvcnQgdGhlCj4gPiB0cnVlIG51bWJlciBvZgo+ID4gKwnCoCogdW5pdmVy c2FsIHBsYW5lcyBmb3IgZ2VuOS4KPiA+IMKgCcKgKi8KPiA+IMKgCWlmIChJU19CUk9YVE9OKGRl dl9wcml2KSkgewo+ID4gLQkJaW5mby0+bnVtX3Nwcml0ZXNbUElQRV9BXSA9IDI7Cj4gPiAtCQlp bmZvLT5udW1fc3ByaXRlc1tQSVBFX0JdID0gMjsKPiA+IC0JCWluZm8tPm51bV9zcHJpdGVzW1BJ UEVfQ10gPSAxOwo+ID4gLQl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8Cj4g PiBJU19DSEVSUllWSUVXKGRldl9wcml2KSkKPiA+ICsJCWluZm8tPmhhc19yZWFsX2N1cnNvciA9 IDA7Cj4gPiArCQlpbmZvLT5udW1fc3ByaXRlc1tQSVBFX0FdID0gMzsKPiA+ICsJCWluZm8tPm51 bV9zcHJpdGVzW1BJUEVfQl0gPSAzOwo+ID4gKwkJaW5mby0+bnVtX3Nwcml0ZXNbUElQRV9DXSA9 IDI7Cj4gPiArCX0gZWxzZSBpZiAoSVNfR0VOOShkZXZfcHJpdikpIHsKPiA+ICsJCWluZm8tPmhh c19yZWFsX2N1cnNvciA9IDA7Cj4gPiDCoAkJZm9yX2VhY2hfcGlwZShkZXZfcHJpdiwgcGlwZSkK PiA+IMKgCQkJaW5mby0+bnVtX3Nwcml0ZXNbcGlwZV0gPSAyOwo+ID4gLQllbHNlCj4gPiArCX0g ZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwKPiA+IElTX0NIRVJSWVZJRVcoZGV2 X3ByaXYpKSB7Cj4gPiArCQlpbmZvLT5oYXNfcmVhbF9jdXJzb3IgPSAxOwo+ID4gKwkJZm9yX2Vh Y2hfcGlwZShkZXZfcHJpdiwgcGlwZSkKPiA+ICsJCQlpbmZvLT5udW1fc3ByaXRlc1twaXBlXSA9 IDI7Cj4gPiArCX0gZWxzZSB7Cj4gPiArCQlpbmZvLT5oYXNfcmVhbF9jdXJzb3IgPSAxOwo+ID4g wqAJCWZvcl9lYWNoX3BpcGUoZGV2X3ByaXYsIHBpcGUpCj4gPiDCoAkJCWluZm8tPm51bV9zcHJp dGVzW3BpcGVdID0gMTsKPiA+ICsJfQo+ID4gwqAKPiA+IMKgCWlmIChpOTE1LmRpc2FibGVfZGlz cGxheSkgewo+ID4gwqAJCURSTV9JTkZPKCJEaXNwbGF5IGRpc2FibGVkIChtb2R1bGUgcGFyYW1l dGVyKVxuIik7Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gaW5k ZXggY2I3ZGQxMS4uOWE4YzJiMSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rpc3BsYXkuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jCj4gPiBAQCAtMTIzMiw2ICsxMjMyLDIzIEBAIHZvaWQgYXNzZXJ0X3BhbmVsX3VubG9j a2VkKHN0cnVjdAo+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcGlwZSBwaXBl KQo+ID4gwqAJwqDCoMKgwqDCoHBpcGVfbmFtZShwaXBlKSk7Cj4gPiDCoH0KPiA+IMKgCj4gPiAr LyoKPiA+ICsgKiBDdXJzb3Igc3RhdGUgZm9yIHBsYXRmb3JtcyB0aGF0IHVzZSBhIHVuaXZlcnNh bCBwbGFuZSBhcyBhCj4gPiBjdXJzb3IuCj4gPiArICogUHJpbWFyeSBpcyB1bml2ZXJzYWwgIzAs IG90aGVycyBhcmUgdW5pdmVyc2FsICMxLQo+ID4gbnVtc3ByaXRlcy7CoMKgQ3Vyc29yCj4gPiAr ICogd2lsbCBiZSB0aGUgZmluYWwgdW5pdmVyc2FsIHBsYW5lIGZvciB0aGUgcGlwZS4KPiA+ICsg Ki8KPiA+ICtzdGF0aWMgYm9vbAo+ID4gK3VuaXZlcnNhbF9jdXJzb3Jfc3RhdGUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gKwkJwqDCoMKgwqDCoMKgwqBlbnVtIHBpcGUg cGlwZSkKPiA+ICt7Cj4gPiArCXVuc2lnbmVkIGludCBwbGFuZW51bSA9IElOVEVMX0lORk8oZGV2 X3ByaXYpLQo+ID4gPm51bV9zcHJpdGVzW3BpcGVdOwo+ID4gKwl1MzIgdmFsOwo+ID4gKwo+ID4g Kwl2YWwgPSBJOTE1X1JFQUQoUExBTkVfQ1RMKHBpcGUsIHBsYW5lbnVtKSk7Cj4gPiArCj4gPiAr CXJldHVybiB2YWwgJiBQTEFORV9DVExfRU5BQkxFOwo+ID4gK30KPiA+ICsKPiA+IMKgc3RhdGlj IHZvaWQgYXNzZXJ0X2N1cnNvcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4g PiDCoAkJCcKgwqBlbnVtIHBpcGUgcGlwZSwgYm9vbCBzdGF0ZSkKPiA+IMKgewo+ID4gQEAgLTEy MzksNiArMTI1Niw4IEBAIHN0YXRpYyB2b2lkIGFzc2VydF9jdXJzb3Ioc3RydWN0Cj4gPiBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+IMKgCj4gPiDCoAlpZiAoSVNfODQ1RyhkZXZfcHJp dikgfHwgSVNfSTg2NUcoZGV2X3ByaXYpKQo+ID4gwqAJCWN1cl9zdGF0ZSA9IEk5MTVfUkVBRChD VVJDTlRSKFBJUEVfQSkpICYKPiA+IENVUlNPUl9FTkFCTEU7Cj4gPiArCWVsc2UgaWYgKCFJTlRF TF9JTkZPKGRldl9wcml2KS0+aGFzX3JlYWxfY3Vyc29yKQo+ID4gKwkJY3VyX3N0YXRlID0gdW5p dmVyc2FsX2N1cnNvcl9zdGF0ZShkZXZfcHJpdiwgcGlwZSk7Cj4gPiDCoAllbHNlCj4gPiDCoAkJ Y3VyX3N0YXRlID0gSTkxNV9SRUFEKENVUkNOVFIocGlwZSkpICYgQ1VSU09SX01PREU7Cj4gPiDC oAo+ID4gQEAgLTEwODQxLDE1ICsxMDg2MCwxNiBAQCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV9j dXJzb3Ioc3RydWN0Cj4gPiBkcm1fY3J0YyAqY3J0YywgdTMyIGJhc2UsCj4gPiDCoAlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ID4gwqAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ID4gwqAJc3RydWN0IGludGVsX2NydGMgKmlu dGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ID4gLQlzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLQo+ID4gPnN0YXRlKTsKPiA+ IC0JY29uc3Qgc3RydWN0IHNrbF93bV92YWx1ZXMgKndtID0gJmRldl9wcml2LT53bS5za2xfcmVz dWx0czsKPiA+IC0JY29uc3Qgc3RydWN0IHNrbF9wbGFuZV93bSAqcF93bSA9Cj4gPiAtCQkmY3N0 YXRlLT53bS5za2wub3B0aW1hbC5wbGFuZXNbUExBTkVfQ1VSU09SXTsKPiA+IMKgCWludCBwaXBl ID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiA+IMKgCXVpbnQzMl90IGNudGwgPSAwOwo+ID4gwqAKPiA+ IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSAmJiB3bS0+ZGlydHlfcGlwZXMgJgo+ID4g ZHJtX2NydGNfbWFzayhjcnRjKSkKPiA+IC0JCXNrbF93cml0ZV9jdXJzb3Jfd20oaW50ZWxfY3J0 YywgcF93bSwgJndtLT5kZGIpOwo+ID4gKwkvKgo+ID4gKwnCoCogQWx0aG91Z2ggZ2VuOSBoYXMg bGVnYWN5IGN1cnNvciByZWdpc3RlcnMsIHRoZWlyIHVzZSBpcwo+ID4gbXV0dWFsbHkKPiA+ICsJ wqAqIGV4Y2x1c2l2ZSB3aXRoIHRoZSB0b3AtbW9zdCB1bml2ZXJzYWwgcGxhbmUuwqDCoFdlJ2xs IGp1c3QKPiA+IHVzZSB0aGUKPiA+ICsJwqAqIHVuaXZlcnNhbCBwbGFuZSB0byBzaW11bGF0ZSB0 aGUgbGVnYWN5IGN1cnNvciBpbnRlcmZhY2UKPiA+IGluc3RlYWQsCj4gPiArCcKgKiB3aGljaCBt ZWFucyB3ZSdsbCBuZXZlciBlbnRlciBoZXJlIG9uIGdlbjkgcGxhdGZvcm1zLgo+ID4gKwnCoCov Cj4gPiArCVdBUk5fT04oSVNfR0VOOShkZXZfcHJpdikpOwo+ID4gwqAKPiA+IMKgCWlmIChwbGFu ZV9zdGF0ZSAmJiBwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKSB7Cj4gPiDCoAkJY250bCA9IE1D VVJTT1JfR0FNTUFfRU5BQkxFOwo+ID4gQEAgLTEzNTI4LDU2ICsxMzU0OCw2IEBAIHN0YXRpYyB2 b2lkIHZlcmlmeV93bV9zdGF0ZShzdHJ1Y3QgZHJtX2NydGMKPiA+ICpjcnRjLAo+ID4gwqAJCQkJ wqDCoGh3X2RkYl9lbnRyeS0+c3RhcnQsIGh3X2RkYl9lbnRyeS0KPiA+ID5lbmQpOwo+ID4gwqAJ CX0KPiA+IMKgCX0KPiA+IC0KPiA+IC0JLyoKPiA+IC0JwqAqIGN1cnNvcgo+ID4gLQnCoCogSWYg dGhlIGN1cnNvciBwbGFuZSBpc24ndCBhY3RpdmUsIHdlIG1heSBub3QgaGF2ZSB1cGRhdGVkCj4g PiBpdCdzIGRkYgo+ID4gLQnCoCogYWxsb2NhdGlvbi4gSW4gdGhhdCBjYXNlIHNpbmNlIHRoZSBk ZGIgYWxsb2NhdGlvbiB3aWxsIGJlCj4gPiB1cGRhdGVkCj4gPiAtCcKgKiBvbmNlIHRoZSBwbGFu ZSBiZWNvbWVzIHZpc2libGUsIHdlIGNhbiBza2lwIHRoaXMgY2hlY2sKPiA+IC0JwqAqLwo+ID4g LQlpZiAoaW50ZWxfY3J0Yy0+Y3Vyc29yX2FkZHIpIHsKPiA+IC0JCWh3X3BsYW5lX3dtID0gJmh3 X3dtLnBsYW5lc1tQTEFORV9DVVJTT1JdOwo+ID4gLQkJc3dfcGxhbmVfd20gPSAmc3dfd20tPnBs YW5lc1tQTEFORV9DVVJTT1JdOwo+ID4gLQo+ID4gLQkJLyogV2F0ZXJtYXJrcyAqLwo+ID4gLQkJ Zm9yIChsZXZlbCA9IDA7IGxldmVsIDw9IG1heF9sZXZlbDsgbGV2ZWwrKykgewo+ID4gLQkJCWlm IChza2xfd21fbGV2ZWxfZXF1YWxzKCZod19wbGFuZV93bS0KPiA+ID53bVtsZXZlbF0sCj4gPiAt CQkJCQkJJnN3X3BsYW5lX3dtLQo+ID4gPndtW2xldmVsXSkpCj4gPiAtCQkJCWNvbnRpbnVlOwo+ ID4gLQo+ID4gLQkJCURSTV9FUlJPUigibWlzbWF0Y2ggaW4gV00gcGlwZSAlYyBjdXJzb3IKPiA+ IGxldmVsICVkIChleHBlY3RlZCBlPSVkIGI9JXUgbD0ldSwgZ290IGU9JWQgYj0ldSBsPSV1KVxu IiwKPiA+IC0JCQkJwqDCoHBpcGVfbmFtZShwaXBlKSwgbGV2ZWwsCj4gPiAtCQkJCcKgwqBzd19w bGFuZV93bS0+d21bbGV2ZWxdLnBsYW5lX2VuLAo+ID4gLQkJCQnCoMKgc3dfcGxhbmVfd20tCj4g PiA+d21bbGV2ZWxdLnBsYW5lX3Jlc19iLAo+ID4gLQkJCQnCoMKgc3dfcGxhbmVfd20tCj4gPiA+ d21bbGV2ZWxdLnBsYW5lX3Jlc19sLAo+ID4gLQkJCQnCoMKgaHdfcGxhbmVfd20tPndtW2xldmVs XS5wbGFuZV9lbiwKPiA+IC0JCQkJwqDCoGh3X3BsYW5lX3dtLQo+ID4gPndtW2xldmVsXS5wbGFu ZV9yZXNfYiwKPiA+IC0JCQkJwqDCoGh3X3BsYW5lX3dtLQo+ID4gPndtW2xldmVsXS5wbGFuZV9y ZXNfbCk7Cj4gPiAtCQl9Cj4gPiAtCj4gPiAtCQlpZiAoIXNrbF93bV9sZXZlbF9lcXVhbHMoJmh3 X3BsYW5lX3dtLT50cmFuc193bSwKPiA+IC0JCQkJCcKgJnN3X3BsYW5lX3dtLT50cmFuc193bSkp IHsKPiA+IC0JCQlEUk1fRVJST1IoIm1pc21hdGNoIGluIHRyYW5zIFdNIHBpcGUgJWMKPiA+IGN1 cnNvciAoZXhwZWN0ZWQgZT0lZCBiPSV1IGw9JXUsIGdvdCBlPSVkIGI9JXUgbD0ldSlcbiIsCj4g PiAtCQkJCcKgwqBwaXBlX25hbWUocGlwZSksCj4gPiAtCQkJCcKgwqBzd19wbGFuZV93bS0+dHJh bnNfd20ucGxhbmVfZW4sCj4gPiAtCQkJCcKgwqBzd19wbGFuZV93bS0+dHJhbnNfd20ucGxhbmVf cmVzX2IsCj4gPiAtCQkJCcKgwqBzd19wbGFuZV93bS0+dHJhbnNfd20ucGxhbmVfcmVzX2wsCj4g PiAtCQkJCcKgwqBod19wbGFuZV93bS0+dHJhbnNfd20ucGxhbmVfZW4sCj4gPiAtCQkJCcKgwqBo d19wbGFuZV93bS0+dHJhbnNfd20ucGxhbmVfcmVzX2IsCj4gPiAtCQkJCcKgwqBod19wbGFuZV93 bS0KPiA+ID50cmFuc193bS5wbGFuZV9yZXNfbCk7Cj4gPiAtCQl9Cj4gPiAtCj4gPiAtCQkvKiBE REIgKi8KPiA+IC0JCWh3X2RkYl9lbnRyeSA9ICZod19kZGIucGxhbmVbcGlwZV1bUExBTkVfQ1VS U09SXTsKPiA+IC0JCXN3X2RkYl9lbnRyeSA9ICZzd19kZGItPnBsYW5lW3BpcGVdW1BMQU5FX0NV UlNPUl07Cj4gPiAtCj4gPiAtCQlpZiAoIXNrbF9kZGJfZW50cnlfZXF1YWwoaHdfZGRiX2VudHJ5 LAo+ID4gc3dfZGRiX2VudHJ5KSkgewo+ID4gLQkJCURSTV9FUlJPUigibWlzbWF0Y2ggaW4gRERC IHN0YXRlIHBpcGUgJWMKPiA+IGN1cnNvciAoZXhwZWN0ZWQgKCV1LCV1KSwgZm91bmQgKCV1LCV1 KSlcbiIsCj4gPiAtCQkJCcKgwqBwaXBlX25hbWUocGlwZSksCj4gPiAtCQkJCcKgwqBzd19kZGJf ZW50cnktPnN0YXJ0LCBzd19kZGJfZW50cnktCj4gPiA+ZW5kLAo+ID4gLQkJCQnCoMKgaHdfZGRi X2VudHJ5LT5zdGFydCwgaHdfZGRiX2VudHJ5LQo+ID4gPmVuZCk7Cj4gPiAtCQl9Cj4gPiAtCX0K PiA+IMKgfQo+ID4gwqAKPiA+IMKgc3RhdGljIHZvaWQKPiA+IEBAIC0xNTIxNSwxMSArMTUxODUs MTggQEAgc3RhdGljIHN0cnVjdCBkcm1fcGxhbmUKPiA+ICppbnRlbF9jdXJzb3JfcGxhbmVfY3Jl YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPiDCoAljdXJzb3ItPmNhbl9zY2FsZSA9IGZh bHNlOwo+ID4gwqAJY3Vyc29yLT5tYXhfZG93bnNjYWxlID0gMTsKPiA+IMKgCWN1cnNvci0+cGlw ZSA9IHBpcGU7Cj4gPiAtCWN1cnNvci0+cGxhbmUgPSBwaXBlOwo+ID4gwqAJY3Vyc29yLT5mcm9u dGJ1ZmZlcl9iaXQgPSBJTlRFTF9GUk9OVEJVRkZFUl9DVVJTT1IocGlwZSk7Cj4gPiAtCWN1cnNv ci0+Y2hlY2tfcGxhbmUgPSBpbnRlbF9jaGVja19jdXJzb3JfcGxhbmU7Cj4gPiAtCWN1cnNvci0+ dXBkYXRlX3BsYW5lID0gaW50ZWxfdXBkYXRlX2N1cnNvcl9wbGFuZTsKPiA+IC0JY3Vyc29yLT5k aXNhYmxlX3BsYW5lID0gaW50ZWxfZGlzYWJsZV9jdXJzb3JfcGxhbmU7Cj4gPiArCWlmIChJTlRF TF9JTkZPKGRldiktPmhhc19yZWFsX2N1cnNvcikgewo+ID4gKwkJY3Vyc29yLT5wbGFuZSA9IHBp cGU7wqDCoC8qIHVudXNlZD8gKi8KPiA+ICsJCWN1cnNvci0+Y2hlY2tfcGxhbmUgPSBpbnRlbF9j aGVja19jdXJzb3JfcGxhbmU7Cj4gPiArCQljdXJzb3ItPnVwZGF0ZV9wbGFuZSA9IGludGVsX3Vw ZGF0ZV9jdXJzb3JfcGxhbmU7Cj4gPiArCQljdXJzb3ItPmRpc2FibGVfcGxhbmUgPSBpbnRlbF9k aXNhYmxlX2N1cnNvcl9wbGFuZTsKPiA+ICsJfSBlbHNlIHsKPiA+ICsJCWN1cnNvci0+cGxhbmUg PSBJTlRFTF9JTkZPKGRldiktPm51bV9zcHJpdGVzW3BpcGVdIC0KPiA+IDE7Cj4gPiArCQljdXJz b3ItPmNoZWNrX3BsYW5lID0gaW50ZWxfY2hlY2tfc3ByaXRlX3BsYW5lOwo+ID4gKwkJY3Vyc29y LT51cGRhdGVfcGxhbmUgPSBza2xfdXBkYXRlX3BsYW5lOwo+ID4gKwkJY3Vyc29yLT5kaXNhYmxl X3BsYW5lID0gc2tsX2Rpc2FibGVfcGxhbmU7Cj4gPiArCX0KPiA+IMKgCj4gPiDCoAlyZXQgPSBk cm1fdW5pdmVyc2FsX3BsYW5lX2luaXQoZGV2LCAmY3Vyc29yLT5iYXNlLCAwLAo+ID4gwqAJCQkJ wqDCoMKgwqDCoMKgwqAmaW50ZWxfcGxhbmVfZnVuY3MsCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmgKPiA+IGluZGV4IGMzMWZkZGQuLjUwODc0ZTIgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmgKPiA+IEBAIC0xNzkwLDYgKzE3OTAsMTMgQEAgaW50IGludGVsX3Nwcml0 ZV9zZXRfY29sb3JrZXkoc3RydWN0Cj4gPiBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4g PiDCoAkJCcKgwqDCoMKgwqDCoHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKPiA+IMKgdm9p ZCBpbnRlbF9waXBlX3VwZGF0ZV9zdGFydChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0Yyk7Cj4gPiDC oHZvaWQgaW50ZWxfcGlwZV91cGRhdGVfZW5kKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLCBzdHJ1 Y3QKPiA+IGludGVsX2ZsaXBfd29yayAqd29yayk7Cj4gPiAraW50IGludGVsX2NoZWNrX3Nwcml0 ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiA+ICsJCQnCoMKgwqDCoMKgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gPiArCQkJwqDCoMKgwqDCoHN0cnVjdCBp bnRlbF9wbGFuZV9zdGF0ZSAqc3RhdGUpOwo+ID4gK3ZvaWQgc2tsX3VwZGF0ZV9wbGFuZShzdHJ1 Y3QgZHJtX3BsYW5lICpkcm1fcGxhbmUsCj4gPiArCQnCoMKgwqDCoMKgwqBjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiA+ICsJCcKgwqDCoMKgwqDCoGNvbnN0IHN0 cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpOwo+ID4gK3ZvaWQgc2tsX2Rpc2Fi bGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqZHBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMKPiA+ICpj cnRjKTsKPiA+IMKgCj4gPiDCoC8qIGludGVsX3R2LmMgKi8KPiA+IMKgdm9pZCBpbnRlbF90dl9p bml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3BtLmMKPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0u Ywo+ID4gaW5kZXggNmYxOWU2MC4uZTc1ZjZkOCAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3BtLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3BtLmMKPiA+IEBAIC0yODYzLDkgKzI4NjMsNyBAQCBib29sIGlsa19kaXNhYmxlX2xwX3dtKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gPiDCoAo+ID4gwqAvKgo+ID4gwqAgKiBSZXR1cm4gdGhl IGluZGV4IG9mIGEgcGxhbmUgaW4gdGhlIFNLTCBEREIgYW5kIHdtIHJlc3VsdAo+ID4gYXJyYXlz LsKgwqBQcmltYXJ5Cj4gPiAtICogcGxhbmUgaXMgYWx3YXlzIGluIHNsb3QgMCwgY3Vyc29yIGlz IGFsd2F5cyBpbiBzbG90Cj4gPiBJOTE1X01BWF9QTEFORVMtMSwgYW5kCj4gPiAtICogb3RoZXIg dW5pdmVyc2FsIHBsYW5lcyBhcmUgaW4gaW5kaWNlcyAxLi5uLsKgwqBOb3RlIHRoYXQgdGhpcyBt YXkKPiA+IGxlYXZlIHVudXNlZAo+ID4gLSAqIGluZGljZXMgYmV0d2VlbiB0aGUgdG9wICJzcHJp dGUiIHBsYW5lIGFuZCB0aGUgY3Vyc29yLgo+ID4gKyAqIHBsYW5lIGlzIGFsd2F5cyBpbiBzbG90 IDAgYW5kIG90aGVyIHVuaXZlcnNhbCBwbGFuZXMgYXJlIGluCj4gPiBpbmRpY2VzIDEuLm4uCj4g PiDCoCAqLwo+ID4gwqBzdGF0aWMgaW50Cj4gPiDCoHNrbF93bV9wbGFuZV9pZChjb25zdCBzdHJ1 Y3QgaW50ZWxfcGxhbmUgKnBsYW5lKQo+ID4gQEAgLTI4NzQsNyArMjg3Miw2IEBAIHNrbF93bV9w bGFuZV9pZChjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmUKPiA+ICpwbGFuZSkKPiA+IMKgCWNhc2Ug RFJNX1BMQU5FX1RZUEVfUFJJTUFSWToKPiA+IMKgCQlyZXR1cm4gMDsKPiA+IMKgCWNhc2UgRFJN X1BMQU5FX1RZUEVfQ1VSU09SOgo+ID4gLQkJcmV0dXJuIFBMQU5FX0NVUlNPUjsKPiA+IMKgCWNh c2UgRFJNX1BMQU5FX1RZUEVfT1ZFUkxBWToKPiA+IMKgCQlyZXR1cm4gcGxhbmUtPnBsYW5lICsg MTsKPiA+IMKgCWRlZmF1bHQ6Cj4gPiBAQCAtMzEyOCwxNCArMzEyNSw2IEBAIHNrbF9kZGJfZ2V0 X3BpcGVfYWxsb2NhdGlvbl9saW1pdHMoc3RydWN0Cj4gPiBkcm1fZGV2aWNlICpkZXYsCj4gPiDC oAlhbGxvYy0+ZW5kID0gYWxsb2MtPnN0YXJ0ICsgcGlwZV9zaXplOwo+ID4gwqB9Cj4gPiDCoAo+ ID4gLXN0YXRpYyB1bnNpZ25lZCBpbnQgc2tsX2N1cnNvcl9hbGxvY2F0aW9uKGludCBudW1fYWN0 aXZlKQo+ID4gLXsKPiA+IC0JaWYgKG51bV9hY3RpdmUgPT0gMSkKPiA+IC0JCXJldHVybiAzMjsK PiA+IC0KPiA+IC0JcmV0dXJuIDg7Cj4gPiAtfQo+ID4gLQo+ID4gwqBzdGF0aWMgdm9pZCBza2xf ZGRiX2VudHJ5X2luaXRfZnJvbV9odyhzdHJ1Y3Qgc2tsX2RkYl9lbnRyeSAqZW50cnksCj4gPiB1 MzIgcmVnKQo+ID4gwqB7Cj4gPiDCoAllbnRyeS0+c3RhcnQgPSByZWcgJiAweDNmZjsKPiA+IEBA IC0zMTY2LDEwICszMTU1LDYgQEAgdm9pZCBza2xfZGRiX2dldF9od19zdGF0ZShzdHJ1Y3QKPiA+ IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gwqAJCQkJCQnCoMKgwqB2YWwpOwo+ID4g wqAJCX0KPiA+IMKgCj4gPiAtCQl2YWwgPSBJOTE1X1JFQUQoQ1VSX0JVRl9DRkcocGlwZSkpOwo+ ID4gLQkJc2tsX2RkYl9lbnRyeV9pbml0X2Zyb21faHcoJmRkYi0KPiA+ID5wbGFuZVtwaXBlXVtQ TEFORV9DVVJTT1JdLAo+ID4gLQkJCQkJwqDCoMKgdmFsKTsKPiA+IC0KPiA+IMKgCQlpbnRlbF9k aXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgcG93ZXJfZG9tYWluKTsKPiA+IMKgCX0KPiA+IMKg fQo+ID4gQEAgLTMyMjcsOCArMzIxMiw2IEBAIHNrbF9wbGFuZV9yZWxhdGl2ZV9kYXRhX3JhdGUo Y29uc3Qgc3RydWN0Cj4gPiBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCj4gPiDCoAo+ID4gwqAJ aWYgKCFpbnRlbF9wc3RhdGUtPmJhc2UudmlzaWJsZSkKPiA+IMKgCQlyZXR1cm4gMDsKPiA+IC0J aWYgKHBzdGF0ZS0+cGxhbmUtPnR5cGUgPT0gRFJNX1BMQU5FX1RZUEVfQ1VSU09SKQo+ID4gLQkJ cmV0dXJuIDA7Cj4gPiDCoAlpZiAoeSAmJiBmb3JtYXQgIT0gRFJNX0ZPUk1BVF9OVjEyKQo+ID4g wqAJCXJldHVybiAwOwo+ID4gwqAKPiA+IEBAIC0zMzg2LDcgKzMzNjksNyBAQCBza2xfYWxsb2Nh dGVfcGlwZV9kZGIoc3RydWN0IGludGVsX2NydGNfc3RhdGUKPiA+ICpjc3RhdGUsCj4gPiDCoAlz dHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwc3RhdGU7Cj4gPiDCoAllbnVtIHBpcGUgcGlwZSA9IGlu dGVsX2NydGMtPnBpcGU7Cj4gPiDCoAlzdHJ1Y3Qgc2tsX2RkYl9lbnRyeSAqYWxsb2MgPSAmY3N0 YXRlLT53bS5za2wuZGRiOwo+ID4gLQl1aW50MTZfdCBhbGxvY19zaXplLCBzdGFydCwgY3Vyc29y X2Jsb2NrczsKPiA+ICsJdWludDE2X3QgYWxsb2Nfc2l6ZSwgc3RhcnQ7Cj4gPiDCoAl1aW50MTZf dCAqbWluaW11bSA9IGNzdGF0ZS0+d20uc2tsLm1pbmltdW1fYmxvY2tzOwo+ID4gwqAJdWludDE2 X3QgKnlfbWluaW11bSA9IGNzdGF0ZS0+d20uc2tsLm1pbmltdW1feV9ibG9ja3M7Cj4gPiDCoAl1 bnNpZ25lZCBpbnQgdG90YWxfZGF0YV9yYXRlOwo+ID4gQEAgLTM0MTIsMTIgKzMzOTUsNiBAQCBz a2xfYWxsb2NhdGVfcGlwZV9kZGIoc3RydWN0IGludGVsX2NydGNfc3RhdGUKPiA+ICpjc3RhdGUs Cj4gPiDCoAkJcmV0dXJuIDA7Cj4gPiDCoAl9Cj4gPiDCoAo+ID4gLQljdXJzb3JfYmxvY2tzID0g c2tsX2N1cnNvcl9hbGxvY2F0aW9uKG51bV9hY3RpdmUpOwo+ID4gLQlkZGItPnBsYW5lW3BpcGVd W1BMQU5FX0NVUlNPUl0uc3RhcnQgPSBhbGxvYy0+ZW5kIC0KPiA+IGN1cnNvcl9ibG9ja3M7Cj4g PiAtCWRkYi0+cGxhbmVbcGlwZV1bUExBTkVfQ1VSU09SXS5lbmQgPSBhbGxvYy0+ZW5kOwo+ID4g LQo+ID4gLQlhbGxvY19zaXplIC09IGN1cnNvcl9ibG9ja3M7Cj4gPiAtCj4gPiDCoAkvKiAxLiBB bGxvY2F0ZSB0aGUgbWluaW51bSByZXF1aXJlZCBibG9ja3MgZm9yIGVhY2ggYWN0aXZlCj4gPiBw bGFuZSAqLwo+ID4gwqAJZm9yX2VhY2hfcGxhbmVfaW5fc3RhdGUoc3RhdGUsIHBsYW5lLCBwc3Rh dGUsIGkpIHsKPiA+IMKgCQlpbnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lKTsKPiA+ IEBAIC0zNDMxLDE3ICszNDA4LDEyIEBAIHNrbF9hbGxvY2F0ZV9waXBlX2RkYihzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZQo+ID4gKmNzdGF0ZSwKPiA+IMKgCQkJeV9taW5pbXVtW2lkXSA9IDA7Cj4g PiDCoAkJCWNvbnRpbnVlOwo+ID4gwqAJCX0KPiA+IC0JCWlmIChwbGFuZS0+dHlwZSA9PSBEUk1f UExBTkVfVFlQRV9DVVJTT1IpIHsKPiA+IC0JCQltaW5pbXVtW2lkXSA9IDA7Cj4gPiAtCQkJeV9t aW5pbXVtW2lkXSA9IDA7Cj4gPiAtCQkJY29udGludWU7Cj4gPiAtCQl9Cj4gPiDCoAo+ID4gwqAJ CW1pbmltdW1baWRdID0gc2tsX2RkYl9taW5fYWxsb2MocHN0YXRlLCAwKTsKPiA+IMKgCQl5X21p bmltdW1baWRdID0gc2tsX2RkYl9taW5fYWxsb2MocHN0YXRlLCAxKTsKPiA+IMKgCX0KPiA+IMKg Cj4gPiAtCWZvciAoaSA9IDA7IGkgPCBQTEFORV9DVVJTT1I7IGkrKykgewo+ID4gKwlmb3IgKGkg PSAwOyBpIDwgSTkxNV9NQVhfUExBTkVTOyBpKyspIHsKPiA+IMKgCQlhbGxvY19zaXplIC09IG1p bmltdW1baV07Cj4gPiDCoAkJYWxsb2Nfc2l6ZSAtPSB5X21pbmltdW1baV07Cj4gPiDCoAl9Cj4g PiBAQCAtMzg2NiwyNiArMzgzOCw2IEBAIHZvaWQgc2tsX3dyaXRlX3BsYW5lX3dtKHN0cnVjdCBp bnRlbF9jcnRjCj4gPiAqaW50ZWxfY3J0YywKPiA+IMKgCQkJwqDCoMKgwqAmZGRiLT55X3BsYW5l W3BpcGVdW3BsYW5lXSk7Cj4gPiDCoH0KPiA+IMKgCj4gPiAtdm9pZCBza2xfd3JpdGVfY3Vyc29y X3dtKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAo+ID4gLQkJCcKgY29uc3Qgc3RydWN0 IHNrbF9wbGFuZV93bSAqd20sCj4gPiAtCQkJwqBjb25zdCBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0 aW9uICpkZGIpCj4gPiAtewo+ID4gLQlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSAmaW50ZWxfY3J0 Yy0+YmFzZTsKPiA+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiA+IC0J c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ID4gLQlp bnQgbGV2ZWwsIG1heF9sZXZlbCA9IGlsa193bV9tYXhfbGV2ZWwoZGV2X3ByaXYpOwo+ID4gLQll bnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7Cj4gPiAtCj4gPiAtCWZvciAobGV2ZWwg PSAwOyBsZXZlbCA8PSBtYXhfbGV2ZWw7IGxldmVsKyspIHsKPiA+IC0JCXNrbF93cml0ZV93bV9s ZXZlbChkZXZfcHJpdiwgQ1VSX1dNKHBpcGUsIGxldmVsKSwKPiA+IC0JCQkJwqDCoMKgJndtLT53 bVtsZXZlbF0pOwo+ID4gLQl9Cj4gPiAtCXNrbF93cml0ZV93bV9sZXZlbChkZXZfcHJpdiwgQ1VS X1dNX1RSQU5TKHBpcGUpLCAmd20tCj4gPiA+dHJhbnNfd20pOwo+ID4gLQo+ID4gLQlza2xfZGRi X2VudHJ5X3dyaXRlKGRldl9wcml2LCBDVVJfQlVGX0NGRyhwaXBlKSwKPiA+IC0JCQnCoMKgwqDC oCZkZGItPnBsYW5lW3BpcGVdW1BMQU5FX0NVUlNPUl0pOwo+ID4gLX0KPiA+IC0KPiA+IMKgYm9v bCBza2xfd21fbGV2ZWxfZXF1YWxzKGNvbnN0IHN0cnVjdCBza2xfd21fbGV2ZWwgKmwxLAo+ID4g wqAJCQnCoGNvbnN0IHN0cnVjdCBza2xfd21fbGV2ZWwgKmwyKQo+ID4gwqB7Cj4gPiBAQCAtNDEy MiwxOSArNDA3NCwxMSBAQCBza2xfcHJpbnRfd21fY2hhbmdlcyhjb25zdCBzdHJ1Y3QKPiA+IGRy bV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ID4gwqAJCQlpZiAoc2tsX2RkYl9lbnRyeV9lcXVhbChv bGQsIG5ldykpCj4gPiDCoAkJCQljb250aW51ZTsKPiA+IMKgCj4gPiAtCQkJaWYgKGlkICE9IFBM QU5FX0NVUlNPUikgewo+ID4gLQkJCQlEUk1fREVCVUdfQVRPTUlDKCJbUExBTkU6JWQ6cGxhbmUK PiA+ICVkJWNdIGRkYiAoJWQgLSAlZCkgLT4gKCVkIC0gJWQpXG4iLAo+ID4gLQkJCQkJCcKgcGxh bmUtPmJhc2UuaWQsIGlkCj4gPiArIDEsCj4gPiAtCQkJCQkJwqBwaXBlX25hbWUocGlwZSksCj4g PiAtCQkJCQkJwqBvbGQtPnN0YXJ0LCBvbGQtCj4gPiA+ZW5kLAo+ID4gLQkJCQkJCcKgbmV3LT5z dGFydCwgbmV3LQo+ID4gPmVuZCk7Cj4gPiAtCQkJfSBlbHNlIHsKPiA+IC0JCQkJRFJNX0RFQlVH X0FUT01JQygiW1BMQU5FOiVkOmN1cnNvcgo+ID4gJWNdIGRkYiAoJWQgLSAlZCkgLT4gKCVkIC0g JWQpXG4iLAo+ID4gLQkJCQkJCcKgcGxhbmUtPmJhc2UuaWQsCj4gPiAtCQkJCQkJwqBwaXBlX25h bWUocGlwZSksCj4gPiAtCQkJCQkJwqBvbGQtPnN0YXJ0LCBvbGQtCj4gPiA+ZW5kLAo+ID4gLQkJ CQkJCcKgbmV3LT5zdGFydCwgbmV3LQo+ID4gPmVuZCk7Cj4gPiAtCQkJfQo+ID4gKwkJCURSTV9E RUJVR19BVE9NSUMoIltQTEFORTolZDpwbGFuZSAlZCVjXSBkZGIKPiA+ICglZCAtICVkKSAtPiAo JWQgLSAlZClcbiIsCj4gPiArCQkJCQnCoHBsYW5lLT5iYXNlLmlkLCBpZCArIDEsCj4gPiArCQkJ CQnCoHBpcGVfbmFtZShwaXBlKSwKPiA+ICsJCQkJCcKgb2xkLT5zdGFydCwgb2xkLT5lbmQsCj4g PiArCQkJCQnCoG5ldy0+c3RhcnQsIG5ldy0+ZW5kKTsKPiA+IMKgCQl9Cj4gPiDCoAl9Cj4gPiDC oH0KPiA+IEBAIC00MjM1LDkgKzQxNzksNiBAQCBzdGF0aWMgdm9pZCBza2xfdXBkYXRlX3dtKHN0 cnVjdCBkcm1fY3J0Ywo+ID4gKmNydGMpCj4gPiDCoAkJZm9yX2VhY2hfdW5pdmVyc2FsX3BsYW5l KGRldl9wcml2LCBwaXBlLCBwbGFuZSkKPiA+IMKgCQkJc2tsX3dyaXRlX3BsYW5lX3dtKGludGVs X2NydGMsICZwaXBlX3dtLQo+ID4gPnBsYW5lc1twbGFuZV0sCj4gPiDCoAkJCQkJwqDCoMKgJnJl c3VsdHMtPmRkYiwgcGxhbmUpOwo+ID4gLQo+ID4gLQkJc2tsX3dyaXRlX2N1cnNvcl93bShpbnRl bF9jcnRjLCAmcGlwZV93bS0KPiA+ID5wbGFuZXNbUExBTkVfQ1VSU09SXSwKPiA+IC0JCQkJwqDC oMKgwqAmcmVzdWx0cy0+ZGRiKTsKPiA+IMKgCX0KPiA+IMKgCj4gPiDCoAlza2xfY29weV93bV9m b3JfcGlwZShod192YWxzLCByZXN1bHRzLCBwaXBlKTsKPiA+IEBAIC00MzUwLDE4ICs0MjkxLDEy IEBAIHZvaWQgc2tsX3BpcGVfd21fZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1fY3J0Ywo+ID4gKmNy dGMsCj4gPiDCoAkJd20gPSAmb3V0LT5wbGFuZXNbaWRdOwo+ID4gwqAKPiA+IMKgCQlmb3IgKGxl dmVsID0gMDsgbGV2ZWwgPD0gbWF4X2xldmVsOyBsZXZlbCsrKSB7Cj4gPiAtCQkJaWYgKGlkICE9 IFBMQU5FX0NVUlNPUikKPiA+IC0JCQkJdmFsID0gSTkxNV9SRUFEKFBMQU5FX1dNKHBpcGUsIGlk LAo+ID4gbGV2ZWwpKTsKPiA+IC0JCQllbHNlCj4gPiAtCQkJCXZhbCA9IEk5MTVfUkVBRChDVVJf V00ocGlwZSwKPiA+IGxldmVsKSk7Cj4gPiArCQkJdmFsID0gSTkxNV9SRUFEKFBMQU5FX1dNKHBp cGUsIGlkLCBsZXZlbCkpOwo+ID4gwqAKPiA+IMKgCQkJc2tsX3dtX2xldmVsX2Zyb21fcmVnX3Zh bCh2YWwsICZ3bS0KPiA+ID53bVtsZXZlbF0pOwo+ID4gwqAJCX0KPiA+IMKgCj4gPiAtCQlpZiAo aWQgIT0gUExBTkVfQ1VSU09SKQo+ID4gLQkJCXZhbCA9IEk5MTVfUkVBRChQTEFORV9XTV9UUkFO UyhwaXBlLCBpZCkpOwo+ID4gLQkJZWxzZQo+ID4gLQkJCXZhbCA9IEk5MTVfUkVBRChDVVJfV01f VFJBTlMocGlwZSkpOwo+ID4gKwkJdmFsID0gSTkxNV9SRUFEKFBMQU5FX1dNX1RSQU5TKHBpcGUs IGlkKSk7Cj4gPiDCoAo+ID4gwqAJCXNrbF93bV9sZXZlbF9mcm9tX3JlZ192YWwodmFsLCAmd20t PnRyYW5zX3dtKTsKPiA+IMKgCX0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9zcHJpdGUuYwo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUu Ywo+ID4gaW5kZXggNDNkMDM1MC4uOWU2NDA2YSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9zcHJpdGUuYwo+ID4gQEAgLTE5NCw3ICsxOTQsNyBAQCB2b2lkIGludGVsX3BpcGVfdXBk YXRlX2VuZChzdHJ1Y3QgaW50ZWxfY3J0Ywo+ID4gKmNydGMsIHN0cnVjdCBpbnRlbF9mbGlwX3dv cmsgKndvcmsKPiA+IMKgCX0KPiA+IMKgfQo+ID4gwqAKPiA+IC1zdGF0aWMgdm9pZAo+ID4gK3Zv aWQKPiA+IMKgc2tsX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpkcm1fcGxhbmUsCj4g PiDCoAkJwqBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiA+IMKg CQnCoGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gPiBAQCAt Mjg1LDcgKzI4NSw3IEBAIHNrbF91cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqZHJtX3Bs YW5lLAo+ID4gwqAJUE9TVElOR19SRUFEKFBMQU5FX1NVUkYocGlwZSwgcGxhbmUpKTsKPiA+IMKg fQo+ID4gwqAKPiA+IC1zdGF0aWMgdm9pZAo+ID4gK3ZvaWQKPiA+IMKgc2tsX2Rpc2FibGVfcGxh bmUoc3RydWN0IGRybV9wbGFuZSAqZHBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gPiDC oHsKPiA+IMKgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBkcGxhbmUtPmRldjsKPiA+IEBAIC03 NTIsNyArNzUyLDcgQEAgaWxrX2Rpc2FibGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUs IHN0cnVjdAo+ID4gZHJtX2NydGMgKmNydGMpCj4gPiDCoAlQT1NUSU5HX1JFQUQoRFZTU1VSRihw aXBlKSk7Cj4gPiDCoH0KPiA+IMKgCj4gPiAtc3RhdGljIGludAo+ID4gK2ludAo+ID4gwqBpbnRl bF9jaGVja19zcHJpdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gPiDCoAkJCcKg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gPiDCoAkJCcKgc3RydWN0IGlu dGVsX3BsYW5lX3N0YXRlICpzdGF0ZSkKPiAtLSAKPiBDaGVlcnMsCj4gCUx5dWRlCgotLSAKTWF0 dCBSb3BlcgpHcmFwaGljcyBTb2Z0d2FyZSBFbmdpbmVlcgpJb1RHIFBsYXRmb3JtIEVuYWJsaW5n ICYgRGV2ZWxvcG1lbnQKSW50ZWwgQ29ycG9yYXRpb24KKDkxNikgMzU2LTI3OTUKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==