From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Paul Subject: Re: [RFC 3/4] drm/i915/gen9: Expose top-most universal plane as cursor Date: Thu, 27 Oct 2016 18:15:32 -0400 Message-ID: <1477606532.24403.14.camel@redhat.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 mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by gabe.freedesktop.org (Postfix) with ESMTPS id BE6946E2B4 for ; Thu, 27 Oct 2016 22:15:35 +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: Paulo Zanoni List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCAyMDE2LTEwLTI2IGF0IDE1OjUxIC0wNzAwLCBNYXR0IFJvcGVyIHdyb3RlOgo+IEdl bjkgaGFzIGEgdHJhZGl0aW9uYWwgY3Vyc29yIHBsYW5lIHRoYXQgaXMgbXV0dWFsbHkgZXhjbHVz aXZlIHdpdGgKPiB0aGUKPiBzeXN0ZW0ncyB0b3AtbW9zdCAidW5pdmVyc2FsIiBwbGFuZTsgaXQg c2VlbXMgbGlrZWx5IHRoYXQgdHdvIHBsYW5lcwo+IGFyZQo+IHJlYWxseSBhIHNpbmdsZSBzaGFy ZWQgaGFyZHdhcmUgdW5pdCB3aXRoIHR3byBkaWZmZXJlbnQgcmVnaXN0ZXIKPiBpbnRlcmZhY2Vz LsKgwqBUaHVzIGZhciBpOTE1IGhhcyBleHBvc2VkIGEgY3Vyc29yIHBsYW5lIHRvIHVzZXJzcGFj ZQo+IHRoYXQncyBob29rZWQgdXAgdG8gdGhlIG9sZC1zdHlsZSBjdXJzb3IgcmVnaXN0ZXJzOyB3 ZSBqdXN0IHByZXRlbmRlZAo+IHRoYXQgdGhlIHRvcC1tb3N0IHVuaXZlcnNhbCBwbGFuZSBkaWRu J3QgZXhpc3QgYW5kIHJlcG9ydGVkIG9uZSBmZXdlcgo+ICJzcHJpdGUvb3ZlcmxheSIgcGxhbmVz IGZvciBlYWNoIHBpcGUgdGhhbiB0aGUgcGxhdGZvcm0gdGVjaG5pY2FsbHkKPiBoYXMuCj4gTGV0 J3Mgc3dpdGNoIHRoaXMgYXJvdW5kIHNvIHRoYXQgdGhlIGN1cnNvciBleHBvc2VkIHRvIHVzZXJz cGFjZSBpcwo+IGFjdHVhbGx5IHdpcmVkIHVwIHRvIHRvcC1tb3N0IHVuaXZlcnNhbCBwbGFuZSBy ZWdpc3RlcnMuwqDCoFdlJ2xsCj4gY29udGludWUKPiB0byBwcmVzZW50IHRoZSBzYW1lIGN1cnNv ciBBQkkgdG8gdXNlcnNwYWNlIHRoYXQgd2UgYWx3YXlzIGhhdmUsIGJ1dAo+IGludGVybmFsbHkg d2UnbGwganVzdCBiZSBwcm9ncmFtbWluZyBhIGRpZmZlcmVudCBzZXQgb2YgcmVnaXN0ZXJzIGFu ZAo+IGRvaW5nIHNvIGluIGEgd2F5IHRoYXQncyBtb3JlIGNvbnNpc3RlbnQgd2l0aCBob3cgYWxs IHRoZSBvdGhlciBnZW45Cj4gcGxhbmVzIHdvcmsgLS0tIGxlc3MgY3Vyc29yLXNwZWNpZmljIHNw ZWNpYWwgY2FzZXMgdGhyb3VnaG91dCB0aGUKPiBjb2RlLgo+IAo+IEFzaWRlIGZyb20gbWFraW5n IHRoZSBjb2RlIGEgYml0IHNpbXBsZXIgKGZld2VyIGN1cnNvci1zcGVjaWZpYwo+IHNwZWNpYWwK PiBjYXNlcyksIHRoaXMgd2lsbCBhbHNvIHBhdmUgdGhlIHdheSB0byBldmVudHVhbGx5IGV4cG9z aW5nIHRoZSB0b3AtCj4gbW9zdAo+IHBsYW5lIGluIGEgbW9yZSBmdWxsLWZlYXR1cmVkIG1hbm5l ciB0byB1c2Vyc3BhY2UgY2xpZW50cyB0aGF0IGRvbid0Cj4gbmVlZCBhIHRyYWRpdGlvbmFsIGN1 cnNvciBhbmQgd2lzaCB0byBvcHQgaW50byBoYXZpbmcgYWNjZXNzIHRvIGFuCj4gYWRkaXRpb25h bCBzcHJpdGUvb3ZlcmxheS1zdHlsZSBwbGFuZSBpbnN0ZWFkLgo+IAo+IEl0J3Mgd29ydGggbm90 aW5nIHRoYXQgYSBsb3Qgb2YgdGhlIHNwZWNpYWwtY2FzZWQgY3Vyc29yLXNwZWNpZmljCj4gY29k ZQo+IHdhcyBpbiB0aGUgZ2VuOSB3YXRlcm1hcmsgcHJvZ3JhbW1pbmcuwqDCoEl0J3MgZ29vZCB0 byBzaW1wbGlmeSB0aGF0Cj4gY29kZSwKPiBidXQgd2Ugc2hvdWxkIGtlZXAgYW4gZXllIG91dCBm b3IgYW55IHVud2FudGVkIHNpZGUgZWZmZWN0cyBvZiB0aGlzCj4gcGF0Y2g7IHNpbmNlIHNwcml0 ZXMvb3ZlcmxheXMgdGVuZCB0byBnZXQgdXNlZCBsZXNzIHRoYW4gY3Vyc29ycywKPiBpdCdzCj4g cG9zc2libGUgdGhhdCB0aGlzIGNvdWxkIGhlbHAgdXMgdW5jb3ZlciBhZGRpdGlvbmFsIHVuZGVy cnVucyB0aGF0Cj4gbm9ib2R5IGhhZCBydW4gYWNyb3NzIHlldC7CoMKgT3IgaXQgY291bGQgaGF2 ZSB0aGUgb3Bwb3NpdGUgZWZmZWN0IGFuZAo+IGVsaW1pbmF0ZSBzb21lIG9mIHRoZSB1bmRlcnJ1 bnMgdGhhdCB3ZSBoYXZlbid0IGJlZW4gYWJsZSB0byBnZXQgcmlkCj4gb2YKPiB5ZXQuCgpBbHJp Z2h0LCBzbyBJIGhhZCB0byBzaXQgb24gdGhpcyBwYXRjaCBmb3IgYSB3aGlsZS4gSSB0aGluayBl eHBvc2luZwp0aGlzIGFzIGEgbm9ybWFsIHBsYW5lIGlzIGEgZ29vZCBpZGVhOiB0aGUgcmVzdCBv ZiB0aGUgd29ybGQganVzdCB1c2VzCnBsYW5lcywgc28gd2Ugc2hvdWxkIHRvby4gV2UgbmVlZCB0 byBiZSAqcmVhbGx5KiBjYXJlZnVsIHdpdGggdGhpcwp0aG91Z2guIExpa2UgUGF1bG8gc2FpZCB3 YXRlcm1hcmtzIGFyZSBzdGlsbCBmcmFnaWxlIGFuZCBob25lc3RseSBJCndvdWxkbid0IGJlIHN1 cnByaXNlZCBpZiB3ZSBmb3VuZCBtb3JlIHVuZGVycnVucyBoaWRpbmcgc29tZXdoZXJlLgoKRmly c3Qgb2ZmLCBhbHRob3VnaCB0aGlzIHdhcyBtZW50aW9uZWQgaW4gYW4gZS1tYWlsIGRvd24gdGhl IGNoYWluLCBJJ20KcHJldHR5IHN1cmUgaGF2aW5nIGEgMCBibG9jayBhbGxvY2F0aW9uIGlzIGRl ZmluaXRlbHkgbm90IHdoYXQgd2Ugd2FudC4KVGhlIHNwZWMgaXRzZWxmIHNheXMgYSBtaW5pbXVt IG9mIDggYmxvY2tzIGFzc3VtaW5nIGl0J3MgYSBub3JtYWwKY3Vyc29yLCBzbyBpZiB3ZSdyZSBn b2luZyBiZWxvdyB0aGF0IHdlIGRlZmluaXRlbHkgbmVlZCB0byBhdCBsZWFzdAptYWtlIHN1cmUg dGhhdCBiZWhhdmlvciBpc24ndCB3cm9uZy4KClRoZSBzZWNvbmQgdGhpbmcgaXMgdGhhdCB1bmZv cnR1bmF0ZWx5IHRoaXMgcmVncmVzc2VzIGluIGEgcmF0aGVyCnN0cmFuZ2Ugd2F5LiBPbiB0aGlz IFgxIHlvZ2Egdy8gYSA0SyBzY3JlZW4gKFNLTCBjaGlwc2V0IG9mIGNvdXJzZSksIGlmCkkgbW92 ZSB0aGUgY3Vyc29yIGluIGZyb250IG9mIGEgZ3JheSBiYWNrZ3JvdW5kIEkgY2FuIHNlZSBhIGZh aW50bHkKdmlzaWJsZSBib3ggc3RhcnRpbmcgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBjdXJz b3IgYW5kIGdvaW5nIHRvIHRoZQplbmQgb2YgdGhlIHBsYW5lLiBSZXZlcnRpbmcgdGhlIHBhdGNo IGZpeGVzIHRoZSBwcm9ibGVtLgoKPiAKPiBDYzogQm9iIFBhYXV3ZSA8Ym9iLmoucGFhdXdlQGlu dGVsLmNvbT4KPiBDYzogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4 LmludGVsLmNvbT4KPiBDYzogUGF1bG8gWmFub25pIDxwYXVsby5yLnphbm9uaUBpbnRlbC5jb20+ Cj4gQ2M6IEx5dWRlIFBhdWwgPGx5dWRlQHJlZGhhdC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogTWF0 dCBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNvbT4KPiAtLS0KPiDCoGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jwqDCoMKgwqDCoMKgfMKgwqA0IC0tCj4gwqBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5owqDCoMKgwqDCoMKgwqDCoMKgwqB8IDExICsrKy0KPiDC oGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9pbmZvLmMgfCAzOCArKysrKysrKyst LS0tCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmPCoMKgwqDCoMKgfCA5 NyArKysrKysrKysrKystLS0tLS0tLQo+IC0tLS0tLS0tLS0tLQo+IMKgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmjCoMKgwqDCoMKgwqDCoMKgwqB8wqDCoDcgKysrCj4gwqBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jwqDCoMKgwqDCoMKgwqDCoMKgwqB8IDg1ICsrKystLS0t LS0tLS0tLS0tLS0tCj4gLS0tLS0tLS0KPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nw cml0ZS5jwqDCoMKgwqDCoMKgfMKgwqA2ICstCj4gwqA3IGZpbGVzIGNoYW5nZWQsIDkzIGluc2Vy dGlvbnMoKyksIDE1NSBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVi dWdmcy5jCj4gaW5kZXggOWY1YTM5Mi4uMGJiYTQ3MiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZGVidWdmcy5jCj4gQEAgLTM0NjksMTAgKzM0NjksNiBAQCBzdGF0aWMgaW50IGk5MTVfZGRi X2luZm8oc3RydWN0IHNlcV9maWxlICptLAo+IHZvaWQgKnVudXNlZCkKPiDCoAkJCQnCoMKgwqBl bnRyeS0+c3RhcnQsIGVudHJ5LT5lbmQsCj4gwqAJCQkJwqDCoMKgc2tsX2RkYl9lbnRyeV9zaXpl KGVudHJ5KSk7Cj4gwqAJCX0KPiAtCj4gLQkJZW50cnkgPSAmZGRiLT5wbGFuZVtwaXBlXVtQTEFO RV9DVVJTT1JdOwo+IC0JCXNlcV9wcmludGYobSwgIsKgwqAlLTEzcyU4dSU4dSU4dVxuIiwgIkN1 cnNvciIsIGVudHJ5LQo+ID5zdGFydCwKPiAtCQkJwqDCoMKgZW50cnktPmVuZCwgc2tsX2RkYl9l bnRyeV9zaXplKGVudHJ5KSk7Cj4gwqAJfQo+IMKgCj4gwqAJZHJtX21vZGVzZXRfdW5sb2NrX2Fs bChkZXYpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4g Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggNDcxNDA1MS4uODNhYWVk MiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC0xNzgsNyArMTc4LDcgQEAgZW51 bSBwbGFuZSB7Cj4gwqAJUExBTkVfQSA9IDAsCj4gwqAJUExBTkVfQiwKPiDCoAlQTEFORV9DLAo+ IC0JUExBTkVfQ1VSU09SLAo+ICsJUExBTkVfRCwKPiDCoAlJOTE1X01BWF9QTEFORVMsCj4gwqB9 Owo+IMKgI2RlZmluZSBwbGFuZV9uYW1lKHApICgocCkgKyAnQScpCj4gQEAgLTMxNiw5ICszMTYs MTUgQEAgc3RydWN0IGk5MTVfaG90cGx1ZyB7Cj4gwqAJZm9yICgoX19wKSA9IDA7CQkJCQkJCj4g CVwKPiDCoAnCoMKgwqDCoMKgKF9fcCkgPCBJTlRFTF9JTkZPKF9fZGV2X3ByaXYpLT5udW1fc3By aXRlc1soX19waXBlKV0gKwo+IDE7CVwKPiDCoAnCoMKgwqDCoMKgKF9fcCkrKykKPiArCj4gKy8q Cj4gKyAqIE9ubHkgaXRlcmF0ZSBvdmVyIHNwcml0ZXMgZXhwb3NlZCBhcyBzcHJpdGVzOyBvbWl0 IHNwcml0ZXMgdGhhdAo+ICsgKiBhcmUgYmVpbmcgcmVwdXJwb3NlZCB0byBzaW11bGF0ZSBhIGN1 cnNvci4KPiArICovCj4gwqAjZGVmaW5lIGZvcl9lYWNoX3Nwcml0ZShfX2Rldl9wcml2LCBfX3As IF9fcykJCQkKPiAJXAo+IMKgCWZvciAoKF9fcykgPSAwOwkJCQkJCQo+IAlcCj4gLQnCoMKgwqDC oMKgKF9fcykgPCBJTlRFTF9JTkZPKF9fZGV2X3ByaXYpLT5udW1fc3ByaXRlc1soX19wKV07CQo+ IFwKPiArCcKgwqDCoMKgwqAoX19zKSA8IElOVEVMX0lORk8oX19kZXZfcHJpdiktPm51bV9zcHJp dGVzWyhfX3ApXSAtCQo+IFwKPiArCcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKElOVEVMX0lO Rk8oX19kZXZfcHJpdiktPmhhc19yZWFsX2N1cnNvciA/IDAgOgo+IDEpOwlcCj4gwqAJwqDCoMKg wqDCoChfX3MpKyspCj4gwqAKPiDCoCNkZWZpbmUgZm9yX2VhY2hfcG9ydF9tYXNrZWQoX19wb3J0 LCBfX3BvcnRzX21hc2spIFwKPiBAQCAtNjg3LDYgKzY5Myw3IEBAIHN0cnVjdCBpbnRlbF9jc3Ig ewo+IMKgCWZ1bmMoaGFzX3Bzcik7IFwKPiDCoAlmdW5jKGhhc19yYzYpOyBcCj4gwqAJZnVuYyho YXNfcmM2cCk7IFwKPiArCWZ1bmMoaGFzX3JlYWxfY3Vyc29yKTsgXAo+IMKgCWZ1bmMoaGFzX3Jl c291cmNlX3N0cmVhbWVyKTsgXAo+IMKgCWZ1bmMoaGFzX3J1bnRpbWVfcG0pOyBcCj4gwqAJZnVu YyhoYXNfc25vb3ApOyBcCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RldmljZV9pbmZvLmMKPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9pbmZv LmMKPiBpbmRleCBkNmE4ZjExLi5hNDY0ZTBlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RldmljZV9pbmZvLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kZXZpY2VfaW5mby5jCj4gQEAgLTI3MSwyMyArMjcxLDM5IEBAIHZvaWQgaW50ZWxfZGV2 aWNlX2luZm9fcnVudGltZV9pbml0KHN0cnVjdAo+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+IMKgCWVudW0gcGlwZSBwaXBlOwo+IMKgCj4gwqAJLyoKPiAtCcKgKiBTa3lsYWtlIGFuZCBC cm94dG9uIGN1cnJlbnRseSBkb24ndCBleHBvc2UgdGhlIHRvcG1vc3QKPiBwbGFuZSBhcyBpdHMK PiAtCcKgKiB1c2UgaXMgZXhjbHVzaXZlIHdpdGggdGhlIGxlZ2FjeSBjdXJzb3IgYW5kIHdlIG9u bHkgd2FudAo+IHRvIGV4cG9zZQo+IC0JwqAqIG9uZSBvZiB0aG9zZSwgbm90IGJvdGguIFVudGls IHdlIGNhbiBzYWZlbHkgZXhwb3NlIHRoZQo+IHRvcG1vc3QgcGxhbmUKPiAtCcKgKiBhcyBhIERS TV9QTEFORV9UWVBFX0NVUlNPUiB3aXRoIGFsbCB0aGUgZmVhdHVyZXMKPiBleHBvc2VkL3N1cHBv cnRlZCwKPiAtCcKgKiB3ZSBkb24ndCBleHBvc2UgdGhlIHRvcG1vc3QgcGxhbmUgYXQgYWxsIHRv IHByZXZlbnQgQUJJCj4gYnJlYWthZ2UKPiAtCcKgKiBkb3duIHRoZSBsaW5lLgo+ICsJwqAqIEdl bjkgcGxhdGZvcm1zIGhhdmUgYSB0b3AtbW9zdCB1bml2ZXJzYWwgKGkuZS4sIHNwcml0ZSkKPiBw bGFuZSBhbmQgYQo+ICsJwqAqIGN1cnNvciBwbGFuZSB0aGF0IGFyZSBtdXR1YWxseSBleGNsdXNp dmUuwqDCoElmIHdlIHVzZSB0aGUKPiBjdXJzb3IKPiArCcKgKiBwbGFuZSB3ZSBwZXJtYW5lbnRs eSBsb3NlIHRoZSBhYmlsaXR5IHRvIG1ha2UgdXNlIG9mIHRoZQo+IG1vcmUKPiArCcKgKiBmdWxs LWZlYXR1cmVkIHVuaXZlcnNhbCBwbGFuZS7CoMKgU28gaW5zdGVhZCBsZXQncyB1c2UgYWxsCj4g b2YgdGhlCj4gKwnCoCogdW5pdmVyc2FsIHBsYW5lcywgaWdub3JlIHRoZSBjdXJzb3IgcGxhbmUs IGJ1dCBob29rIHRoZQo+IHRvcC1tb3N0Cj4gKwnCoCogdW5pdmVyc2FsIHBsYW5lIHVwIHRvIHRo ZSBsZWdhY3kgY3Vyc29yIGlvY3RsJ3MgYW5kCj4gZXhwb3NlIGl0IHRvCj4gKwnCoCogdXNlcnNw YWNlIGFzIERSTV9QTEFORV9UWVBFX0NVUlNPUi7CoMKgVGhpcyB3b24ndCByZXN1bHQgaW4KPiBh bnkKPiArCcKgKiB2aXNpYmxlIGJlaGF2aW9yIGNoYW5nZSB0byB1c2Vyc3BhY2U7IHdlJ3JlIGp1 c3QKPiBpbnRlcm5hbGx5Cj4gKwnCoCogcHJvZ3JhbW1pbmcgYSBkaWZmZXJlbnQgc2V0IG9mIHJl Z2lzdGVycy4KPiArCcKgKgo+ICsJwqAqIEZvciB0aGUgcHVycG9zZXMgb2YgZGV2aWNlX2luZm8s IHdlJ3JlIG9ubHkgY29uY2VybmVkCj4gd2l0aCB0aGUKPiArCcKgKiBudW1iZXIgb2YgdW5pdmVy c2FsIHBsYW5lcyB3ZSdyZSBwcm9ncmFtbWluZywgcmVnYXJkbGVzcwo+IG9mIGhvdyB0aGV5Cj4g KwnCoCogZ2V0IG1hcHBlZCB0byB1c2Vyc3BhY2UgaW50ZXJmYWNlcywgc28gd2UnbGwgcmVwb3J0 IHRoZQo+IHRydWUgbnVtYmVyIG9mCj4gKwnCoCogdW5pdmVyc2FsIHBsYW5lcyBmb3IgZ2VuOS4K PiDCoAnCoCovCj4gwqAJaWYgKElTX0JST1hUT04oZGV2X3ByaXYpKSB7Cj4gLQkJaW5mby0+bnVt X3Nwcml0ZXNbUElQRV9BXSA9IDI7Cj4gLQkJaW5mby0+bnVtX3Nwcml0ZXNbUElQRV9CXSA9IDI7 Cj4gLQkJaW5mby0+bnVtX3Nwcml0ZXNbUElQRV9DXSA9IDE7Cj4gLQl9IGVsc2UgaWYgKElTX1ZB TExFWVZJRVcoZGV2X3ByaXYpIHx8Cj4gSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCj4gKwkJaW5m by0+aGFzX3JlYWxfY3Vyc29yID0gMDsKPiArCQlpbmZvLT5udW1fc3ByaXRlc1tQSVBFX0FdID0g MzsKPiArCQlpbmZvLT5udW1fc3ByaXRlc1tQSVBFX0JdID0gMzsKPiArCQlpbmZvLT5udW1fc3By aXRlc1tQSVBFX0NdID0gMjsKPiArCX0gZWxzZSBpZiAoSVNfR0VOOShkZXZfcHJpdikpIHsKPiAr CQlpbmZvLT5oYXNfcmVhbF9jdXJzb3IgPSAwOwo+IMKgCQlmb3JfZWFjaF9waXBlKGRldl9wcml2 LCBwaXBlKQo+IMKgCQkJaW5mby0+bnVtX3Nwcml0ZXNbcGlwZV0gPSAyOwo+IC0JZWxzZQo+ICsJ fSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fAo+IElTX0NIRVJSWVZJRVcoZGV2 X3ByaXYpKSB7Cj4gKwkJaW5mby0+aGFzX3JlYWxfY3Vyc29yID0gMTsKPiArCQlmb3JfZWFjaF9w aXBlKGRldl9wcml2LCBwaXBlKQo+ICsJCQlpbmZvLT5udW1fc3ByaXRlc1twaXBlXSA9IDI7Cj4g Kwl9IGVsc2Ugewo+ICsJCWluZm8tPmhhc19yZWFsX2N1cnNvciA9IDE7Cj4gwqAJCWZvcl9lYWNo X3BpcGUoZGV2X3ByaXYsIHBpcGUpCj4gwqAJCQlpbmZvLT5udW1fc3ByaXRlc1twaXBlXSA9IDE7 Cj4gKwl9Cj4gwqAKPiDCoAlpZiAoaTkxNS5kaXNhYmxlX2Rpc3BsYXkpIHsKPiDCoAkJRFJNX0lO Rk8oIkRpc3BsYXkgZGlzYWJsZWQgKG1vZHVsZSBwYXJhbWV0ZXIpXG4iKTsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBpbmRleCBjYjdkZDExLi45YThjMmIxIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC0xMjMyLDYgKzEyMzIsMjMgQEAg dm9pZCBhc3NlcnRfcGFuZWxfdW5sb2NrZWQoc3RydWN0Cj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsIGVudW0gcGlwZSBwaXBlKQo+IMKgCcKgwqDCoMKgwqBwaXBlX25hbWUocGlwZSkpOwo+ IMKgfQo+IMKgCj4gKy8qCj4gKyAqIEN1cnNvciBzdGF0ZSBmb3IgcGxhdGZvcm1zIHRoYXQgdXNl IGEgdW5pdmVyc2FsIHBsYW5lIGFzIGEKPiBjdXJzb3IuCj4gKyAqIFByaW1hcnkgaXMgdW5pdmVy c2FsICMwLCBvdGhlcnMgYXJlIHVuaXZlcnNhbCAjMS0KPiBudW1zcHJpdGVzLsKgwqBDdXJzb3IK PiArICogd2lsbCBiZSB0aGUgZmluYWwgdW5pdmVyc2FsIHBsYW5lIGZvciB0aGUgcGlwZS4KPiAr ICovCj4gK3N0YXRpYyBib29sCj4gK3VuaXZlcnNhbF9jdXJzb3Jfc3RhdGUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCcKgwqDCoMKgwqDCoMKgZW51bSBwaXBlIHBpcGUp Cj4gK3sKPiArCXVuc2lnbmVkIGludCBwbGFuZW51bSA9IElOVEVMX0lORk8oZGV2X3ByaXYpLQo+ ID5udW1fc3ByaXRlc1twaXBlXTsKPiArCXUzMiB2YWw7Cj4gKwo+ICsJdmFsID0gSTkxNV9SRUFE KFBMQU5FX0NUTChwaXBlLCBwbGFuZW51bSkpOwo+ICsKPiArCXJldHVybiB2YWwgJiBQTEFORV9D VExfRU5BQkxFOwo+ICt9Cj4gKwo+IMKgc3RhdGljIHZvaWQgYXNzZXJ0X2N1cnNvcihzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gwqAJCQnCoMKgZW51bSBwaXBlIHBpcGUsIGJv b2wgc3RhdGUpCj4gwqB7Cj4gQEAgLTEyMzksNiArMTI1Niw4IEBAIHN0YXRpYyB2b2lkIGFzc2Vy dF9jdXJzb3Ioc3RydWN0Cj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gwqAKPiDCoAlp ZiAoSVNfODQ1RyhkZXZfcHJpdikgfHwgSVNfSTg2NUcoZGV2X3ByaXYpKQo+IMKgCQljdXJfc3Rh dGUgPSBJOTE1X1JFQUQoQ1VSQ05UUihQSVBFX0EpKSAmCj4gQ1VSU09SX0VOQUJMRTsKPiArCWVs c2UgaWYgKCFJTlRFTF9JTkZPKGRldl9wcml2KS0+aGFzX3JlYWxfY3Vyc29yKQo+ICsJCWN1cl9z dGF0ZSA9IHVuaXZlcnNhbF9jdXJzb3Jfc3RhdGUoZGV2X3ByaXYsIHBpcGUpOwo+IMKgCWVsc2UK PiDCoAkJY3VyX3N0YXRlID0gSTkxNV9SRUFEKENVUkNOVFIocGlwZSkpICYgQ1VSU09SX01PREU7 Cj4gwqAKPiBAQCAtMTA4NDEsMTUgKzEwODYwLDE2IEBAIHN0YXRpYyB2b2lkIGk5eHhfdXBkYXRl X2N1cnNvcihzdHJ1Y3QKPiBkcm1fY3J0YyAqY3J0YywgdTMyIGJhc2UsCj4gwqAJc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiDCoAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gwqAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2Ny dGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+IC0Jc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNz dGF0ZSA9IHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0KPiA+c3RhdGUpOwo+IC0JY29uc3Qgc3Ry dWN0IHNrbF93bV92YWx1ZXMgKndtID0gJmRldl9wcml2LT53bS5za2xfcmVzdWx0czsKPiAtCWNv bnN0IHN0cnVjdCBza2xfcGxhbmVfd20gKnBfd20gPQo+IC0JCSZjc3RhdGUtPndtLnNrbC5vcHRp bWFsLnBsYW5lc1tQTEFORV9DVVJTT1JdOwo+IMKgCWludCBwaXBlID0gaW50ZWxfY3J0Yy0+cGlw ZTsKPiDCoAl1aW50MzJfdCBjbnRsID0gMDsKPiDCoAo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPj0gOSAmJiB3bS0+ZGlydHlfcGlwZXMgJgo+IGRybV9jcnRjX21hc2soY3J0YykpCj4gLQkJ c2tsX3dyaXRlX2N1cnNvcl93bShpbnRlbF9jcnRjLCBwX3dtLCAmd20tPmRkYik7Cj4gKwkvKgo+ ICsJwqAqIEFsdGhvdWdoIGdlbjkgaGFzIGxlZ2FjeSBjdXJzb3IgcmVnaXN0ZXJzLCB0aGVpciB1 c2UgaXMKPiBtdXR1YWxseQo+ICsJwqAqIGV4Y2x1c2l2ZSB3aXRoIHRoZSB0b3AtbW9zdCB1bml2 ZXJzYWwgcGxhbmUuwqDCoFdlJ2xsIGp1c3QKPiB1c2UgdGhlCj4gKwnCoCogdW5pdmVyc2FsIHBs YW5lIHRvIHNpbXVsYXRlIHRoZSBsZWdhY3kgY3Vyc29yIGludGVyZmFjZQo+IGluc3RlYWQsCj4g KwnCoCogd2hpY2ggbWVhbnMgd2UnbGwgbmV2ZXIgZW50ZXIgaGVyZSBvbiBnZW45IHBsYXRmb3Jt cy4KPiArCcKgKi8KPiArCVdBUk5fT04oSVNfR0VOOShkZXZfcHJpdikpOwo+IMKgCj4gwqAJaWYg KHBsYW5lX3N0YXRlICYmIHBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUpIHsKPiDCoAkJY250bCA9 IE1DVVJTT1JfR0FNTUFfRU5BQkxFOwo+IEBAIC0xMzUyOCw1NiArMTM1NDgsNiBAQCBzdGF0aWMg dm9pZCB2ZXJpZnlfd21fc3RhdGUoc3RydWN0IGRybV9jcnRjCj4gKmNydGMsCj4gwqAJCQkJwqDC oGh3X2RkYl9lbnRyeS0+c3RhcnQsIGh3X2RkYl9lbnRyeS0KPiA+ZW5kKTsKPiDCoAkJfQo+IMKg CX0KPiAtCj4gLQkvKgo+IC0JwqAqIGN1cnNvcgo+IC0JwqAqIElmIHRoZSBjdXJzb3IgcGxhbmUg aXNuJ3QgYWN0aXZlLCB3ZSBtYXkgbm90IGhhdmUgdXBkYXRlZAo+IGl0J3MgZGRiCj4gLQnCoCog YWxsb2NhdGlvbi4gSW4gdGhhdCBjYXNlIHNpbmNlIHRoZSBkZGIgYWxsb2NhdGlvbiB3aWxsIGJl Cj4gdXBkYXRlZAo+IC0JwqAqIG9uY2UgdGhlIHBsYW5lIGJlY29tZXMgdmlzaWJsZSwgd2UgY2Fu IHNraXAgdGhpcyBjaGVjawo+IC0JwqAqLwo+IC0JaWYgKGludGVsX2NydGMtPmN1cnNvcl9hZGRy KSB7Cj4gLQkJaHdfcGxhbmVfd20gPSAmaHdfd20ucGxhbmVzW1BMQU5FX0NVUlNPUl07Cj4gLQkJ c3dfcGxhbmVfd20gPSAmc3dfd20tPnBsYW5lc1tQTEFORV9DVVJTT1JdOwo+IC0KPiAtCQkvKiBX YXRlcm1hcmtzICovCj4gLQkJZm9yIChsZXZlbCA9IDA7IGxldmVsIDw9IG1heF9sZXZlbDsgbGV2 ZWwrKykgewo+IC0JCQlpZiAoc2tsX3dtX2xldmVsX2VxdWFscygmaHdfcGxhbmVfd20tCj4gPndt W2xldmVsXSwKPiAtCQkJCQkJJnN3X3BsYW5lX3dtLQo+ID53bVtsZXZlbF0pKQo+IC0JCQkJY29u dGludWU7Cj4gLQo+IC0JCQlEUk1fRVJST1IoIm1pc21hdGNoIGluIFdNIHBpcGUgJWMgY3Vyc29y Cj4gbGV2ZWwgJWQgKGV4cGVjdGVkIGU9JWQgYj0ldSBsPSV1LCBnb3QgZT0lZCBiPSV1IGw9JXUp XG4iLAo+IC0JCQkJwqDCoHBpcGVfbmFtZShwaXBlKSwgbGV2ZWwsCj4gLQkJCQnCoMKgc3dfcGxh bmVfd20tPndtW2xldmVsXS5wbGFuZV9lbiwKPiAtCQkJCcKgwqBzd19wbGFuZV93bS0KPiA+d21b bGV2ZWxdLnBsYW5lX3Jlc19iLAo+IC0JCQkJwqDCoHN3X3BsYW5lX3dtLQo+ID53bVtsZXZlbF0u cGxhbmVfcmVzX2wsCj4gLQkJCQnCoMKgaHdfcGxhbmVfd20tPndtW2xldmVsXS5wbGFuZV9lbiwK PiAtCQkJCcKgwqBod19wbGFuZV93bS0KPiA+d21bbGV2ZWxdLnBsYW5lX3Jlc19iLAo+IC0JCQkJ wqDCoGh3X3BsYW5lX3dtLQo+ID53bVtsZXZlbF0ucGxhbmVfcmVzX2wpOwo+IC0JCX0KPiAtCj4g LQkJaWYgKCFza2xfd21fbGV2ZWxfZXF1YWxzKCZod19wbGFuZV93bS0+dHJhbnNfd20sCj4gLQkJ CQkJwqAmc3dfcGxhbmVfd20tPnRyYW5zX3dtKSkgewo+IC0JCQlEUk1fRVJST1IoIm1pc21hdGNo IGluIHRyYW5zIFdNIHBpcGUgJWMKPiBjdXJzb3IgKGV4cGVjdGVkIGU9JWQgYj0ldSBsPSV1LCBn b3QgZT0lZCBiPSV1IGw9JXUpXG4iLAo+IC0JCQkJwqDCoHBpcGVfbmFtZShwaXBlKSwKPiAtCQkJ CcKgwqBzd19wbGFuZV93bS0+dHJhbnNfd20ucGxhbmVfZW4sCj4gLQkJCQnCoMKgc3dfcGxhbmVf d20tPnRyYW5zX3dtLnBsYW5lX3Jlc19iLAo+IC0JCQkJwqDCoHN3X3BsYW5lX3dtLT50cmFuc193 bS5wbGFuZV9yZXNfbCwKPiAtCQkJCcKgwqBod19wbGFuZV93bS0+dHJhbnNfd20ucGxhbmVfZW4s Cj4gLQkJCQnCoMKgaHdfcGxhbmVfd20tPnRyYW5zX3dtLnBsYW5lX3Jlc19iLAo+IC0JCQkJwqDC oGh3X3BsYW5lX3dtLQo+ID50cmFuc193bS5wbGFuZV9yZXNfbCk7Cj4gLQkJfQo+IC0KPiAtCQkv KiBEREIgKi8KPiAtCQlod19kZGJfZW50cnkgPSAmaHdfZGRiLnBsYW5lW3BpcGVdW1BMQU5FX0NV UlNPUl07Cj4gLQkJc3dfZGRiX2VudHJ5ID0gJnN3X2RkYi0+cGxhbmVbcGlwZV1bUExBTkVfQ1VS U09SXTsKPiAtCj4gLQkJaWYgKCFza2xfZGRiX2VudHJ5X2VxdWFsKGh3X2RkYl9lbnRyeSwKPiBz d19kZGJfZW50cnkpKSB7Cj4gLQkJCURSTV9FUlJPUigibWlzbWF0Y2ggaW4gRERCIHN0YXRlIHBp cGUgJWMKPiBjdXJzb3IgKGV4cGVjdGVkICgldSwldSksIGZvdW5kICgldSwldSkpXG4iLAo+IC0J CQkJwqDCoHBpcGVfbmFtZShwaXBlKSwKPiAtCQkJCcKgwqBzd19kZGJfZW50cnktPnN0YXJ0LCBz d19kZGJfZW50cnktCj4gPmVuZCwKPiAtCQkJCcKgwqBod19kZGJfZW50cnktPnN0YXJ0LCBod19k ZGJfZW50cnktCj4gPmVuZCk7Cj4gLQkJfQo+IC0JfQo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgdm9p ZAo+IEBAIC0xNTIxNSwxMSArMTUxODUsMTggQEAgc3RhdGljIHN0cnVjdCBkcm1fcGxhbmUKPiAq aW50ZWxfY3Vyc29yX3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+IMKgCWN1 cnNvci0+Y2FuX3NjYWxlID0gZmFsc2U7Cj4gwqAJY3Vyc29yLT5tYXhfZG93bnNjYWxlID0gMTsK PiDCoAljdXJzb3ItPnBpcGUgPSBwaXBlOwo+IC0JY3Vyc29yLT5wbGFuZSA9IHBpcGU7Cj4gwqAJ Y3Vyc29yLT5mcm9udGJ1ZmZlcl9iaXQgPSBJTlRFTF9GUk9OVEJVRkZFUl9DVVJTT1IocGlwZSk7 Cj4gLQljdXJzb3ItPmNoZWNrX3BsYW5lID0gaW50ZWxfY2hlY2tfY3Vyc29yX3BsYW5lOwo+IC0J Y3Vyc29yLT51cGRhdGVfcGxhbmUgPSBpbnRlbF91cGRhdGVfY3Vyc29yX3BsYW5lOwo+IC0JY3Vy c29yLT5kaXNhYmxlX3BsYW5lID0gaW50ZWxfZGlzYWJsZV9jdXJzb3JfcGxhbmU7Cj4gKwlpZiAo SU5URUxfSU5GTyhkZXYpLT5oYXNfcmVhbF9jdXJzb3IpIHsKPiArCQljdXJzb3ItPnBsYW5lID0g cGlwZTvCoMKgLyogdW51c2VkPyAqLwo+ICsJCWN1cnNvci0+Y2hlY2tfcGxhbmUgPSBpbnRlbF9j aGVja19jdXJzb3JfcGxhbmU7Cj4gKwkJY3Vyc29yLT51cGRhdGVfcGxhbmUgPSBpbnRlbF91cGRh dGVfY3Vyc29yX3BsYW5lOwo+ICsJCWN1cnNvci0+ZGlzYWJsZV9wbGFuZSA9IGludGVsX2Rpc2Fi bGVfY3Vyc29yX3BsYW5lOwo+ICsJfSBlbHNlIHsKPiArCQljdXJzb3ItPnBsYW5lID0gSU5URUxf SU5GTyhkZXYpLT5udW1fc3ByaXRlc1twaXBlXSAtCj4gMTsKPiArCQljdXJzb3ItPmNoZWNrX3Bs YW5lID0gaW50ZWxfY2hlY2tfc3ByaXRlX3BsYW5lOwo+ICsJCWN1cnNvci0+dXBkYXRlX3BsYW5l ID0gc2tsX3VwZGF0ZV9wbGFuZTsKPiArCQljdXJzb3ItPmRpc2FibGVfcGxhbmUgPSBza2xfZGlz YWJsZV9wbGFuZTsKPiArCX0KPiDCoAo+IMKgCXJldCA9IGRybV91bml2ZXJzYWxfcGxhbmVfaW5p dChkZXYsICZjdXJzb3ItPmJhc2UsIDAsCj4gwqAJCQkJwqDCoMKgwqDCoMKgwqAmaW50ZWxfcGxh bmVfZnVuY3MsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5o Cj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IGluZGV4IGMzMWZkZGQuLjUw ODc0ZTIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IEBAIC0xNzkwLDYgKzE3OTAs MTMgQEAgaW50IGludGVsX3Nwcml0ZV9zZXRfY29sb3JrZXkoc3RydWN0Cj4gZHJtX2RldmljZSAq ZGV2LCB2b2lkICpkYXRhLAo+IMKgCQkJwqDCoMKgwqDCoMKgc3RydWN0IGRybV9maWxlICpmaWxl X3ByaXYpOwo+IMKgdm9pZCBpbnRlbF9waXBlX3VwZGF0ZV9zdGFydChzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0Yyk7Cj4gwqB2b2lkIGludGVsX3BpcGVfdXBkYXRlX2VuZChzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0Yywgc3RydWN0Cj4gaW50ZWxfZmxpcF93b3JrICp3b3JrKTsKPiAraW50IGludGVsX2No ZWNrX3Nwcml0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiArCQkJwqDCoMKgwqDC oHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICsJCQnCoMKgwqDCoMKgc3Ry dWN0IGludGVsX3BsYW5lX3N0YXRlICpzdGF0ZSk7Cj4gK3ZvaWQgc2tsX3VwZGF0ZV9wbGFuZShz dHJ1Y3QgZHJtX3BsYW5lICpkcm1fcGxhbmUsCj4gKwkJwqDCoMKgwqDCoMKgY29uc3Qgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gKwkJwqDCoMKgwqDCoMKgY29uc3Qgc3Ry dWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSk7Cj4gK3ZvaWQgc2tsX2Rpc2FibGVf cGxhbmUoc3RydWN0IGRybV9wbGFuZSAqZHBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMKPiAqY3J0Yyk7 Cj4gwqAKPiDCoC8qIGludGVsX3R2LmMgKi8KPiDCoHZvaWQgaW50ZWxfdHZfaW5pdChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcG0uYwo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+IGluZGV4IDZmMTll NjAuLmU3NWY2ZDggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0u Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiBAQCAtMjg2Myw5ICsy ODYzLDcgQEAgYm9vbCBpbGtfZGlzYWJsZV9scF93bShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ IMKgCj4gwqAvKgo+IMKgICogUmV0dXJuIHRoZSBpbmRleCBvZiBhIHBsYW5lIGluIHRoZSBTS0wg RERCIGFuZCB3bSByZXN1bHQKPiBhcnJheXMuwqDCoFByaW1hcnkKPiAtICogcGxhbmUgaXMgYWx3 YXlzIGluIHNsb3QgMCwgY3Vyc29yIGlzIGFsd2F5cyBpbiBzbG90Cj4gSTkxNV9NQVhfUExBTkVT LTEsIGFuZAo+IC0gKiBvdGhlciB1bml2ZXJzYWwgcGxhbmVzIGFyZSBpbiBpbmRpY2VzIDEuLm4u wqDCoE5vdGUgdGhhdCB0aGlzIG1heQo+IGxlYXZlIHVudXNlZAo+IC0gKiBpbmRpY2VzIGJldHdl ZW4gdGhlIHRvcCAic3ByaXRlIiBwbGFuZSBhbmQgdGhlIGN1cnNvci4KPiArICogcGxhbmUgaXMg YWx3YXlzIGluIHNsb3QgMCBhbmQgb3RoZXIgdW5pdmVyc2FsIHBsYW5lcyBhcmUgaW4KPiBpbmRp Y2VzIDEuLm4uCj4gwqAgKi8KPiDCoHN0YXRpYyBpbnQKPiDCoHNrbF93bV9wbGFuZV9pZChjb25z dCBzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lKQo+IEBAIC0yODc0LDcgKzI4NzIsNiBAQCBza2xf d21fcGxhbmVfaWQoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lCj4gKnBsYW5lKQo+IMKgCWNhc2Ug RFJNX1BMQU5FX1RZUEVfUFJJTUFSWToKPiDCoAkJcmV0dXJuIDA7Cj4gwqAJY2FzZSBEUk1fUExB TkVfVFlQRV9DVVJTT1I6Cj4gLQkJcmV0dXJuIFBMQU5FX0NVUlNPUjsKPiDCoAljYXNlIERSTV9Q TEFORV9UWVBFX09WRVJMQVk6Cj4gwqAJCXJldHVybiBwbGFuZS0+cGxhbmUgKyAxOwo+IMKgCWRl ZmF1bHQ6Cj4gQEAgLTMxMjgsMTQgKzMxMjUsNiBAQCBza2xfZGRiX2dldF9waXBlX2FsbG9jYXRp b25fbGltaXRzKHN0cnVjdAo+IGRybV9kZXZpY2UgKmRldiwKPiDCoAlhbGxvYy0+ZW5kID0gYWxs b2MtPnN0YXJ0ICsgcGlwZV9zaXplOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyB1bnNpZ25lZCBpbnQg c2tsX2N1cnNvcl9hbGxvY2F0aW9uKGludCBudW1fYWN0aXZlKQo+IC17Cj4gLQlpZiAobnVtX2Fj dGl2ZSA9PSAxKQo+IC0JCXJldHVybiAzMjsKPiAtCj4gLQlyZXR1cm4gODsKPiAtfQo+IC0KPiDC oHN0YXRpYyB2b2lkIHNrbF9kZGJfZW50cnlfaW5pdF9mcm9tX2h3KHN0cnVjdCBza2xfZGRiX2Vu dHJ5ICplbnRyeSwKPiB1MzIgcmVnKQo+IMKgewo+IMKgCWVudHJ5LT5zdGFydCA9IHJlZyAmIDB4 M2ZmOwo+IEBAIC0zMTY2LDEwICszMTU1LDYgQEAgdm9pZCBza2xfZGRiX2dldF9od19zdGF0ZShz dHJ1Y3QKPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiDCoAkJCQkJCcKgwqDCoHZhbCk7 Cj4gwqAJCX0KPiDCoAo+IC0JCXZhbCA9IEk5MTVfUkVBRChDVVJfQlVGX0NGRyhwaXBlKSk7Cj4g LQkJc2tsX2RkYl9lbnRyeV9pbml0X2Zyb21faHcoJmRkYi0KPiA+cGxhbmVbcGlwZV1bUExBTkVf Q1VSU09SXSwKPiAtCQkJCQnCoMKgwqB2YWwpOwo+IC0KPiDCoAkJaW50ZWxfZGlzcGxheV9wb3dl cl9wdXQoZGV2X3ByaXYsIHBvd2VyX2RvbWFpbik7Cj4gwqAJfQo+IMKgfQo+IEBAIC0zMjI3LDgg KzMyMTIsNiBAQCBza2xfcGxhbmVfcmVsYXRpdmVfZGF0YV9yYXRlKGNvbnN0IHN0cnVjdAo+IGlu dGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKPiDCoAo+IMKgCWlmICghaW50ZWxfcHN0YXRlLT5iYXNl LnZpc2libGUpCj4gwqAJCXJldHVybiAwOwo+IC0JaWYgKHBzdGF0ZS0+cGxhbmUtPnR5cGUgPT0g RFJNX1BMQU5FX1RZUEVfQ1VSU09SKQo+IC0JCXJldHVybiAwOwo+IMKgCWlmICh5ICYmIGZvcm1h dCAhPSBEUk1fRk9STUFUX05WMTIpCj4gwqAJCXJldHVybiAwOwo+IMKgCj4gQEAgLTMzODYsNyAr MzM2OSw3IEBAIHNrbF9hbGxvY2F0ZV9waXBlX2RkYihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZQo+ ICpjc3RhdGUsCj4gwqAJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcHN0YXRlOwo+IMKgCWVudW0g cGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiDCoAlzdHJ1Y3Qgc2tsX2RkYl9lbnRyeSAq YWxsb2MgPSAmY3N0YXRlLT53bS5za2wuZGRiOwo+IC0JdWludDE2X3QgYWxsb2Nfc2l6ZSwgc3Rh cnQsIGN1cnNvcl9ibG9ja3M7Cj4gKwl1aW50MTZfdCBhbGxvY19zaXplLCBzdGFydDsKPiDCoAl1 aW50MTZfdCAqbWluaW11bSA9IGNzdGF0ZS0+d20uc2tsLm1pbmltdW1fYmxvY2tzOwo+IMKgCXVp bnQxNl90ICp5X21pbmltdW0gPSBjc3RhdGUtPndtLnNrbC5taW5pbXVtX3lfYmxvY2tzOwo+IMKg CXVuc2lnbmVkIGludCB0b3RhbF9kYXRhX3JhdGU7Cj4gQEAgLTM0MTIsMTIgKzMzOTUsNiBAQCBz a2xfYWxsb2NhdGVfcGlwZV9kZGIoc3RydWN0IGludGVsX2NydGNfc3RhdGUKPiAqY3N0YXRlLAo+ IMKgCQlyZXR1cm4gMDsKPiDCoAl9Cj4gwqAKPiAtCWN1cnNvcl9ibG9ja3MgPSBza2xfY3Vyc29y X2FsbG9jYXRpb24obnVtX2FjdGl2ZSk7Cj4gLQlkZGItPnBsYW5lW3BpcGVdW1BMQU5FX0NVUlNP Ul0uc3RhcnQgPSBhbGxvYy0+ZW5kIC0KPiBjdXJzb3JfYmxvY2tzOwo+IC0JZGRiLT5wbGFuZVtw aXBlXVtQTEFORV9DVVJTT1JdLmVuZCA9IGFsbG9jLT5lbmQ7Cj4gLQo+IC0JYWxsb2Nfc2l6ZSAt PSBjdXJzb3JfYmxvY2tzOwo+IC0KPiDCoAkvKiAxLiBBbGxvY2F0ZSB0aGUgbWluaW51bSByZXF1 aXJlZCBibG9ja3MgZm9yIGVhY2ggYWN0aXZlCj4gcGxhbmUgKi8KPiDCoAlmb3JfZWFjaF9wbGFu ZV9pbl9zdGF0ZShzdGF0ZSwgcGxhbmUsIHBzdGF0ZSwgaSkgewo+IMKgCQlpbnRlbF9wbGFuZSA9 IHRvX2ludGVsX3BsYW5lKHBsYW5lKTsKPiBAQCAtMzQzMSwxNyArMzQwOCwxMiBAQCBza2xfYWxs b2NhdGVfcGlwZV9kZGIoc3RydWN0IGludGVsX2NydGNfc3RhdGUKPiAqY3N0YXRlLAo+IMKgCQkJ eV9taW5pbXVtW2lkXSA9IDA7Cj4gwqAJCQljb250aW51ZTsKPiDCoAkJfQo+IC0JCWlmIChwbGFu ZS0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9DVVJTT1IpIHsKPiAtCQkJbWluaW11bVtpZF0gPSAw Owo+IC0JCQl5X21pbmltdW1baWRdID0gMDsKPiAtCQkJY29udGludWU7Cj4gLQkJfQo+IMKgCj4g wqAJCW1pbmltdW1baWRdID0gc2tsX2RkYl9taW5fYWxsb2MocHN0YXRlLCAwKTsKPiDCoAkJeV9t aW5pbXVtW2lkXSA9IHNrbF9kZGJfbWluX2FsbG9jKHBzdGF0ZSwgMSk7Cj4gwqAJfQo+IMKgCj4g LQlmb3IgKGkgPSAwOyBpIDwgUExBTkVfQ1VSU09SOyBpKyspIHsKPiArCWZvciAoaSA9IDA7IGkg PCBJOTE1X01BWF9QTEFORVM7IGkrKykgewo+IMKgCQlhbGxvY19zaXplIC09IG1pbmltdW1baV07 Cj4gwqAJCWFsbG9jX3NpemUgLT0geV9taW5pbXVtW2ldOwo+IMKgCX0KPiBAQCAtMzg2NiwyNiAr MzgzOCw2IEBAIHZvaWQgc2tsX3dyaXRlX3BsYW5lX3dtKHN0cnVjdCBpbnRlbF9jcnRjCj4gKmlu dGVsX2NydGMsCj4gwqAJCQnCoMKgwqDCoCZkZGItPnlfcGxhbmVbcGlwZV1bcGxhbmVdKTsKPiDC oH0KPiDCoAo+IC12b2lkIHNrbF93cml0ZV9jdXJzb3Jfd20oc3RydWN0IGludGVsX2NydGMgKmlu dGVsX2NydGMsCj4gLQkJCcKgY29uc3Qgc3RydWN0IHNrbF9wbGFuZV93bSAqd20sCj4gLQkJCcKg Y29uc3Qgc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAqZGRiKQo+IC17Cj4gLQlzdHJ1Y3QgZHJt X2NydGMgKmNydGMgPSAmaW50ZWxfY3J0Yy0+YmFzZTsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBjcnRjLT5kZXY7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KGRldik7Cj4gLQlpbnQgbGV2ZWwsIG1heF9sZXZlbCA9IGlsa193bV9tYXhfbGV2ZWwo ZGV2X3ByaXYpOwo+IC0JZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+IC0KPiAt CWZvciAobGV2ZWwgPSAwOyBsZXZlbCA8PSBtYXhfbGV2ZWw7IGxldmVsKyspIHsKPiAtCQlza2xf d3JpdGVfd21fbGV2ZWwoZGV2X3ByaXYsIENVUl9XTShwaXBlLCBsZXZlbCksCj4gLQkJCQnCoMKg wqAmd20tPndtW2xldmVsXSk7Cj4gLQl9Cj4gLQlza2xfd3JpdGVfd21fbGV2ZWwoZGV2X3ByaXYs IENVUl9XTV9UUkFOUyhwaXBlKSwgJndtLQo+ID50cmFuc193bSk7Cj4gLQo+IC0Jc2tsX2RkYl9l bnRyeV93cml0ZShkZXZfcHJpdiwgQ1VSX0JVRl9DRkcocGlwZSksCj4gLQkJCcKgwqDCoMKgJmRk Yi0+cGxhbmVbcGlwZV1bUExBTkVfQ1VSU09SXSk7Cj4gLX0KPiAtCj4gwqBib29sIHNrbF93bV9s ZXZlbF9lcXVhbHMoY29uc3Qgc3RydWN0IHNrbF93bV9sZXZlbCAqbDEsCj4gwqAJCQnCoGNvbnN0 IHN0cnVjdCBza2xfd21fbGV2ZWwgKmwyKQo+IMKgewo+IEBAIC00MTIyLDE5ICs0MDc0LDExIEBA IHNrbF9wcmludF93bV9jaGFuZ2VzKGNvbnN0IHN0cnVjdAo+IGRybV9hdG9taWNfc3RhdGUgKnN0 YXRlKQo+IMKgCQkJaWYgKHNrbF9kZGJfZW50cnlfZXF1YWwob2xkLCBuZXcpKQo+IMKgCQkJCWNv bnRpbnVlOwo+IMKgCj4gLQkJCWlmIChpZCAhPSBQTEFORV9DVVJTT1IpIHsKPiAtCQkJCURSTV9E RUJVR19BVE9NSUMoIltQTEFORTolZDpwbGFuZQo+ICVkJWNdIGRkYiAoJWQgLSAlZCkgLT4gKCVk IC0gJWQpXG4iLAo+IC0JCQkJCQnCoHBsYW5lLT5iYXNlLmlkLCBpZAo+ICsgMSwKPiAtCQkJCQkJ wqBwaXBlX25hbWUocGlwZSksCj4gLQkJCQkJCcKgb2xkLT5zdGFydCwgb2xkLQo+ID5lbmQsCj4g LQkJCQkJCcKgbmV3LT5zdGFydCwgbmV3LQo+ID5lbmQpOwo+IC0JCQl9IGVsc2Ugewo+IC0JCQkJ RFJNX0RFQlVHX0FUT01JQygiW1BMQU5FOiVkOmN1cnNvcgo+ICVjXSBkZGIgKCVkIC0gJWQpIC0+ ICglZCAtICVkKVxuIiwKPiAtCQkJCQkJwqBwbGFuZS0+YmFzZS5pZCwKPiAtCQkJCQkJwqBwaXBl X25hbWUocGlwZSksCj4gLQkJCQkJCcKgb2xkLT5zdGFydCwgb2xkLQo+ID5lbmQsCj4gLQkJCQkJ CcKgbmV3LT5zdGFydCwgbmV3LQo+ID5lbmQpOwo+IC0JCQl9Cj4gKwkJCURSTV9ERUJVR19BVE9N SUMoIltQTEFORTolZDpwbGFuZSAlZCVjXSBkZGIKPiAoJWQgLSAlZCkgLT4gKCVkIC0gJWQpXG4i LAo+ICsJCQkJCcKgcGxhbmUtPmJhc2UuaWQsIGlkICsgMSwKPiArCQkJCQnCoHBpcGVfbmFtZShw aXBlKSwKPiArCQkJCQnCoG9sZC0+c3RhcnQsIG9sZC0+ZW5kLAo+ICsJCQkJCcKgbmV3LT5zdGFy dCwgbmV3LT5lbmQpOwo+IMKgCQl9Cj4gwqAJfQo+IMKgfQo+IEBAIC00MjM1LDkgKzQxNzksNiBA QCBzdGF0aWMgdm9pZCBza2xfdXBkYXRlX3dtKHN0cnVjdCBkcm1fY3J0Ywo+ICpjcnRjKQo+IMKg CQlmb3JfZWFjaF91bml2ZXJzYWxfcGxhbmUoZGV2X3ByaXYsIHBpcGUsIHBsYW5lKQo+IMKgCQkJ c2tsX3dyaXRlX3BsYW5lX3dtKGludGVsX2NydGMsICZwaXBlX3dtLQo+ID5wbGFuZXNbcGxhbmVd LAo+IMKgCQkJCQnCoMKgwqAmcmVzdWx0cy0+ZGRiLCBwbGFuZSk7Cj4gLQo+IC0JCXNrbF93cml0 ZV9jdXJzb3Jfd20oaW50ZWxfY3J0YywgJnBpcGVfd20tCj4gPnBsYW5lc1tQTEFORV9DVVJTT1Jd LAo+IC0JCQkJwqDCoMKgwqAmcmVzdWx0cy0+ZGRiKTsKPiDCoAl9Cj4gwqAKPiDCoAlza2xfY29w eV93bV9mb3JfcGlwZShod192YWxzLCByZXN1bHRzLCBwaXBlKTsKPiBAQCAtNDM1MCwxOCArNDI5 MSwxMiBAQCB2b2lkIHNrbF9waXBlX3dtX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2NydGMKPiAq Y3J0YywKPiDCoAkJd20gPSAmb3V0LT5wbGFuZXNbaWRdOwo+IMKgCj4gwqAJCWZvciAobGV2ZWwg PSAwOyBsZXZlbCA8PSBtYXhfbGV2ZWw7IGxldmVsKyspIHsKPiAtCQkJaWYgKGlkICE9IFBMQU5F X0NVUlNPUikKPiAtCQkJCXZhbCA9IEk5MTVfUkVBRChQTEFORV9XTShwaXBlLCBpZCwKPiBsZXZl bCkpOwo+IC0JCQllbHNlCj4gLQkJCQl2YWwgPSBJOTE1X1JFQUQoQ1VSX1dNKHBpcGUsCj4gbGV2 ZWwpKTsKPiArCQkJdmFsID0gSTkxNV9SRUFEKFBMQU5FX1dNKHBpcGUsIGlkLCBsZXZlbCkpOwo+ IMKgCj4gwqAJCQlza2xfd21fbGV2ZWxfZnJvbV9yZWdfdmFsKHZhbCwgJndtLQo+ID53bVtsZXZl bF0pOwo+IMKgCQl9Cj4gwqAKPiAtCQlpZiAoaWQgIT0gUExBTkVfQ1VSU09SKQo+IC0JCQl2YWwg PSBJOTE1X1JFQUQoUExBTkVfV01fVFJBTlMocGlwZSwgaWQpKTsKPiAtCQllbHNlCj4gLQkJCXZh bCA9IEk5MTVfUkVBRChDVVJfV01fVFJBTlMocGlwZSkpOwo+ICsJCXZhbCA9IEk5MTVfUkVBRChQ TEFORV9XTV9UUkFOUyhwaXBlLCBpZCkpOwo+IMKgCj4gwqAJCXNrbF93bV9sZXZlbF9mcm9tX3Jl Z192YWwodmFsLCAmd20tPnRyYW5zX3dtKTsKPiDCoAl9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9zcHJpdGUuYwo+IGluZGV4IDQzZDAzNTAuLjllNjQwNmEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9zcHJpdGUuYwo+IEBAIC0xOTQsNyArMTk0LDcgQEAgdm9pZCBpbnRlbF9waXBlX3Vw ZGF0ZV9lbmQoc3RydWN0IGludGVsX2NydGMKPiAqY3J0Yywgc3RydWN0IGludGVsX2ZsaXBfd29y ayAqd29yawo+IMKgCX0KPiDCoH0KPiDCoAo+IC1zdGF0aWMgdm9pZAo+ICt2b2lkCj4gwqBza2xf dXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKmRybV9wbGFuZSwKPiDCoAkJwqBjb25zdCBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiDCoAkJwqBjb25zdCBzdHJ1Y3Qg aW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+IEBAIC0yODUsNyArMjg1LDcgQEAgc2ts X3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpkcm1fcGxhbmUsCj4gwqAJUE9TVElOR19S RUFEKFBMQU5FX1NVUkYocGlwZSwgcGxhbmUpKTsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgdm9pZAo+ ICt2b2lkCj4gwqBza2xfZGlzYWJsZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpkcGxhbmUsIHN0 cnVjdCBkcm1fY3J0YyAqY3J0YykKPiDCoHsKPiDCoAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g ZHBsYW5lLT5kZXY7Cj4gQEAgLTc1Miw3ICs3NTIsNyBAQCBpbGtfZGlzYWJsZV9wbGFuZShzdHJ1 Y3QgZHJtX3BsYW5lICpwbGFuZSwgc3RydWN0Cj4gZHJtX2NydGMgKmNydGMpCj4gwqAJUE9TVElO R19SRUFEKERWU1NVUkYocGlwZSkpOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQKPiAraW50Cj4g wqBpbnRlbF9jaGVja19zcHJpdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gwqAJ CQnCoHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+IMKgCQkJwqBzdHJ1Y3Qg aW50ZWxfcGxhbmVfc3RhdGUgKnN0YXRlKQotLSAKQ2hlZXJzLAoJTHl1ZGUKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==