From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: Re: [PATCH 2/2] drm/i915/skl: Support for 90/270 rotation Date: Mon, 13 Apr 2015 16:39:10 -0700 Message-ID: <20150413233910.GC2804@intel.com> References: <1428656849-5004-1-git-send-email-sonika.jindal@intel.com> <1428656849-5004-2-git-send-email-sonika.jindal@intel.com> <20150410141717.GL6092@phenom.ffwll.local> <20150410144419.GA28877@intel.com> <552B40AA.3040504@intel.com> <20150413101045.GA11009@intel.com> <552B991A.7060403@intel.com> <20150413104922.GD11009@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 2E8EE6E307 for ; Mon, 13 Apr 2015 16:39:11 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20150413104922.GD11009@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBBcHIgMTMsIDIwMTUgYXQgMDE6NDk6MjJQTSArMDMwMCwgVmlsbGUgU3lyasOkbMOk IHdyb3RlOgo+IE9uIE1vbiwgQXByIDEzLCAyMDE1IGF0IDAzOjUzOjIyUE0gKzA1MzAsIEppbmRh bCwgU29uaWthIHdyb3RlOgo+ID4gCj4gPiAKPiA+IE9uIDQvMTMvMjAxNSAzOjQwIFBNLCBWaWxs ZSBTeXJqw6Rsw6Qgd3JvdGU6Cj4gPiA+IE9uIE1vbiwgQXByIDEzLCAyMDE1IGF0IDA5OjM2OjAy QU0gKzA1MzAsIEppbmRhbCwgU29uaWthIHdyb3RlOgo+ID4gPj4KPiA+ID4+Cj4gPiA+PiBPbiA0 LzEwLzIwMTUgODoxNCBQTSwgVmlsbGUgU3lyasOkbMOkIHdyb3RlOgo+ID4gPj4+IE9uIEZyaSwg QXByIDEwLCAyMDE1IGF0IDA0OjE3OjE3UE0gKzAyMDAsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4g PiA+Pj4+IE9uIEZyaSwgQXByIDEwLCAyMDE1IGF0IDAyOjM3OjI5UE0gKzA1MzAsIFNvbmlrYSBK aW5kYWwgd3JvdGU6Cj4gPiA+Pj4+PiB2MjogTW92aW5nIGNyZWF0aW9uIG9mIHByb3BlcnR5IGlu IGEgZnVuY3Rpb24sIGNoZWNraW5nIGZvciA5MC8yNzAKPiA+ID4+Pj4+IHJvdGF0aW9uIHNpbXVs dGFuZW91c2x5IChDaHJpcykKPiA+ID4+Pj4+IExldHRpbmcgcHJpbWFyeSBwbGFuZSB0byBiZSBw b3NpdGlvbmVkCj4gPiA+Pj4+PiB2MzogQWRkaW5nIGlmL2Vsc2UgZm9yIDkwLzI3MCBhbmQgcmVz dCBwYXJhbXMgcHJvZ3JhbW1pbmcsIGFkZGluZyBjaGVjayBmb3IKPiA+ID4+Pj4+IHBpeGVsX2Zv cm1hdCwgc29tZSBjbGVhbnVwIChyZXZpZXcgY29tbWVudHMpCj4gPiA+Pj4+PiB2NDogQWRkaW5n IHJpZ2h0IHBpeGVsX2Zvcm1hdHMsIHVzaW5nIHNyY18qIHBhcmFtcyBpbnN0ZWFkIG9mIGNydGNf KiBmb3Igb2Zmc2V0Cj4gPiA+Pj4+PiBhbmQgc2l6ZSBwcm9ncmFtbWluZyAoVmlsbGUpCj4gPiA+ Pj4+PiB2NTogUmViYXNlZCBvbiAtbmlnaHRseSBhbmQgVHZydGtvJ3Mgc2VyaWVzIGZvciBndHQg cmVtYXBwaW5nLgo+ID4gPj4+Pj4gdjY6IFJlYmFzZWQgb24gLW5pZ2h0bHkgKFR2cnRrbydzIHNl cmllcyBtZXJnZWQpCj4gPiA+Pj4+PiB2NzogTW92aW5nIHBpeGVsX2Zvcm1hdCBjaGVjayB0byBp bnRlbF9hdG9taWNfcGxhbmVfY2hlY2sgKE1hdHQpCj4gPiA+Pj4+Pgo+ID4gPj4+Pj4gU2lnbmVk LW9mZi1ieTogU29uaWthIEppbmRhbCA8c29uaWthLmppbmRhbEBpbnRlbC5jb20+Cj4gPiA+Pj4+ PiBSZXZpZXdlZC1ieTogTWF0dCBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNvbT4KPiA+ ID4+Pj4KPiA+ID4+Pj4gUGF0Y2hlcyBhcmUgbWlzc2luZyB0aGUgVGVzdGNhc2U6IHRhZywgcGxl YXNlIGFkZCB0aGF0LiBBbHNvLCBhcmUgYWxsIHRoZQo+ID4gPj4+PiBpZ3QgY29tbWl0dGVkIG9y IG5vdCB5ZXQ/IFB1bGxlZCB0aGVzZSB0d28gaW4gbWVhbndoaWxlLgo+ID4gPj4+Cj4gPiA+Pj4g VGhpbmdzIGFyZSBnb2luZyBzb21ld2hhdCBicm9rZW4gYmVjYXVzZSB5b3UgZGlkbid0IGFwcGx5 IG15IHBsYW5lCj4gPiA+Pj4gc3RhdGUgc3R1ZmYuIEhtbS4gQWN0dWFsbHkgaXQgc29ydCBvZiBs b29rcyB0aGF0IGl0IG1pZ2h0IHdvcmsgYnkgbHVjawo+ID4gPj4+IGFzIGxvbmcgYXMgdGhlIHBy aW1hcnkgcGxhbmUgZG9lc24ndCBnZXQgY2xpcHBlZCBzaW5jZSB0aGlzIGlzIGJhc2hpbmcKPiA+ ID4+PiB0aGUgdXNlciBzdGF0ZSBkaXJlY3RseSBpbnRvIHRoZSBoYXJkd2FyZSByZWdpc3RlcnMg YW5kIG5vdCB0aGUgZGVyaXZlZAo+ID4gPj4+IHN0YXRlIChpZS4gY2xpcHBlZCBjb29yZGluYXRl cykuCj4gPiA+Pj4KPiA+ID4+IEkgd2FzIGhvcGluZyB5b3VyIGNoYW5nZXMgZ2V0IG1lcmdlZCwg YnV0IG5vdCBzdXJlIHdoeSB0aGV5IGFyZSBoZWxkIHVwLgo+ID4gPj4KPiA+ID4+PiBBbHNvIEkg c2VlIG15IHJldmlldyBjb21tZW50IGFib3V0IHRoZSA5MCB2cy4gMjcwIHJvdGF0aW9uIG1peHVw IHdhcwo+ID4gPj4+IGlnbm9yZWQgYXQgbGVhc3QuCj4gPiA+Pj4KPiA+ID4+IEkgbmV2ZXIgcmVh bGx5IGdvdCB0aGUgdG8gdW5kZXJzdGFuZCB0aGUgbmVlZCBvZiByZXZlcnNpbmcgOTAgYW5kIDI3 MCA6KQo+ID4gPj4gVGhlIGxhc3QgZGlzY3Vzc2lvbiB3YXMgbm90IGNvbmNsdWRlZCwgQUZBSVIu Cj4gPiA+PiBUaGluZ3MgbG9vayBjb3JyZWN0IHRvIG1lIGFuZCB3b3JrIGZpbmUgd2l0aCB0aGUg dGVzdGNhc2UgYWxzby4KPiA+ID4+IElzIHRoZXJlIHNvbWV0aGluZyBjb21wbGV0ZWx5IGRpZmZl cmVudCB3aGljaCBJIGFtIHVuYWJsZSB0byBnZXQ/Cj4gPiA+Cj4gPiA+IEJTcGVjIGdpdmVzIG1l IHRoZSBpbXByZXNzaW9uIHRoZSBodyByb3RhdGlvbiBpcyBjdywgd2hlcmVhcyB0aGUgZHJtIG9u ZQo+ID4gPiBpcyBjY3cuCj4gPiA+Cj4gPiBZZXMsIEhXIHJvdGF0aW9uIGlzIGN3IGFzIHBlciBi c3BlYy4gSW4gZHJtLCB3aGVyZSBkbyB3ZSBjb25zaWRlciBpdCBhcyAKPiA+IGFudGktY3c/IEkg YXNzdW1lIGl0IGlzIGN3IGJlY2F1c2UgYWxsIHRoZSBtYWNyb3Mgd29yayBhcyBleHBlY3RlZCwg aWUgY3cuCj4gCj4gVGhlIGNjdyBydWxlIHdhcyBpbmhlcml0ZWQgZnJvbSBYUmFuZFIuIEknbSBu b3Qgc3VyZSB3aGF0IG1hY3JvcyB5b3UKPiBtZWFuLCBidXQgZHJtX3JlY3Rfcm90YXRlKCkgd2ls bCBjZXJ0YWlubHkgZ2l2ZSB5b3Ugd3JvbmcgcmVzdWx0cyBpZgo+IHlvdSBhc3N1bWUgY3cuCgpJ dCBzZWVtcyBsaWtlIHRoaXMgaW5mb3JtYXRpb24gbmVlZHMgdG8gYmUgYWRkZWQgdG8gdGhlIHBy b3BlcnR5IHNlY3Rpb24Kb2YgdGhlIERSTSBEb2NCb29rOyBjb250aW51aW5nIHRvIGZvbGxvdyBY UmFuZFIgcHJvYmFibHkgbWFrZXMgc2Vuc2UgaWYKdGhhdCdzIHdoYXQncyBhZ3JlZWQgb24sIGJ1 dCB0aGVyZSdzIG5vIGluZGljYXRpb24gb2YgdGhhdCBkZXNpZ24KcGhpbG9zb3BoeSBpbiB0aGUg YWN0dWFsIERSTSBkb2N1bWVudGF0aW9uIHRvZGF5LCBzbyB3ZSdyZSBpbiBkYW5nZXIgb2YKaGF2 aW5nIGRpZmZlcmVudCBkcml2ZXIgYXV0aG9ycyB1c2UgY29uZmxpY3RpbmcgaW50ZXJwcmV0YXRp b25zLgoKOTAvMjcwIHJvdGF0aW9uIGlzIGFscmVhZHkgc3VwcG9ydGVkIGJ5IGV4aXN0aW5nIGRy aXZlcnMgKG9tYXAgZm9yCnNldmVyYWwgeWVhcnMgbm93IGFuZCBhdG1lbC1obGNkYyBqdXN0IHJl Y2VudGx5KS4gIEkgdGhpbmsgaXQncyB0b28gbGF0ZQp0byB0cnkgdG8gcmVkZWZpbmUgdGhlIG1l YW5pbmcgb2Ygcm90YXRpb24gcHJvcGVydHkgdmFsdWVzIHRoYXQgYXJlCmFscmVhZHkgaW4gYWN0 aXZlIHVzZSwgc28gd2UgcHJvYmFibHkgbmVlZCB0byBjaGVjayB3aGV0aGVyIG9tYXAgaXMKdXNp bmcgYSBjdyBvciBjY3cgc2NoZW1lIGFuZCBmb2xsb3cgKGFuZCBkb2N1bWVudCEpIHRoYXQuCgoK TWF0dAoKPiAKPiA+IAo+ID4gPj4KPiA+ID4+IC1Tb25pa2EKPiA+ID4+Cj4gPiA+Pj4+IC1EYW5p ZWwKPiA+ID4+Pj4KPiA+ID4+Pj4+IC0tLQo+ID4gPj4+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9yZWcuaCAgICAgICAgICAgfCAgICAyICsKPiA+ID4+Pj4+ICAgIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5jIHwgICAyNCArKysrKysrKwo+ID4gPj4+Pj4g ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jICAgICAgfCAgIDg4ICsrKysr KysrKysrKysrKysrKysrLS0tLS0tLS0tCj4gPiA+Pj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaCAgICAgICAgICB8ICAgIDYgKysKPiA+ID4+Pj4+ICAgIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jICAgICAgIHwgICA1MiArKysrKysrKysrKystLS0tLQo+ ID4gPj4+Pj4gICAgNSBmaWxlcyBjaGFuZ2VkLCAxMzEgaW5zZXJ0aW9ucygrKSwgNDEgZGVsZXRp b25zKC0pCj4gPiA+Pj4+Pgo+ID4gPj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gPiA+Pj4+ PiBpbmRleCBiNTIyZWI2Li41NjRiYmQ1IDEwMDY0NAo+ID4gPj4+Pj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ID4gPj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9yZWcuaAo+ID4gPj4+Pj4gQEAgLTQ4NTQsNyArNDg1NCw5IEBAIGVudW0gc2tsX2Rp c3BfcG93ZXJfd2VsbHMgewo+ID4gPj4+Pj4gICAgI2RlZmluZSAgIFBMQU5FX0NUTF9BTFBIQV9I V19QUkVNVUxUSVBMWQkoICAzIDw8IDQpCj4gPiA+Pj4+PiAgICAjZGVmaW5lICAgUExBTkVfQ1RM X1JPVEFURV9NQVNLCQkJMHgzCj4gPiA+Pj4+PiAgICAjZGVmaW5lICAgUExBTkVfQ1RMX1JPVEFU RV8wCQkJMHgwCj4gPiA+Pj4+PiArI2RlZmluZSAgIFBMQU5FX0NUTF9ST1RBVEVfOTAJCQkweDEK PiA+ID4+Pj4+ICAgICNkZWZpbmUgICBQTEFORV9DVExfUk9UQVRFXzE4MAkJCTB4Mgo+ID4gPj4+ Pj4gKyNkZWZpbmUgICBQTEFORV9DVExfUk9UQVRFXzI3MAkJCTB4Mwo+ID4gPj4+Pj4gICAgI2Rl ZmluZSBfUExBTkVfU1RSSURFXzFfQQkJCTB4NzAxODgKPiA+ID4+Pj4+ICAgICNkZWZpbmUgX1BM QU5FX1NUUklERV8yX0EJCQkweDcwMjg4Cj4gPiA+Pj4+PiAgICAjZGVmaW5lIF9QTEFORV9TVFJJ REVfM19BCQkJMHg3MDM4OAo+ID4gPj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2F0b21pY19wbGFuZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRv bWljX3BsYW5lLmMKPiA+ID4+Pj4+IGluZGV4IDk3NmI4OTEuLmEyN2VlOGMgMTAwNjQ0Cj4gPiA+ Pj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYwo+ID4g Pj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMKPiA+ ID4+Pj4+IEBAIC0xNjIsNiArMTYyLDMwIEBAIHN0YXRpYyBpbnQgaW50ZWxfcGxhbmVfYXRvbWlj X2NoZWNrKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ID4gPj4+Pj4gICAgCQkJKDEgPDwgZHJt X3BsYW5lX2luZGV4KHBsYW5lKSk7Cj4gPiA+Pj4+PiAgICAJfQo+ID4gPj4+Pj4KPiA+ID4+Pj4+ ICsJaWYgKHN0YXRlLT5mYiAmJiBpbnRlbF9yb3RhdGlvbl85MF9vcl8yNzAoc3RhdGUtPnJvdGF0 aW9uKSkgewo+ID4gPj4+Pj4gKwkJaWYgKCEoc3RhdGUtPmZiLT5tb2RpZmllclswXSA9PSBJOTE1 X0ZPUk1BVF9NT0RfWV9USUxFRCB8fAo+ID4gPj4+Pj4gKwkJCXN0YXRlLT5mYi0+bW9kaWZpZXJb MF0gPT0gSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEKSkgewo+ID4gPj4+Pj4gKwkJCURSTV9ERUJV R19LTVMoIlkvWWYgdGlsaW5nIHJlcXVpcmVkIGZvciA5MC8yNzAhXG4iKTsKPiA+ID4+Pj4+ICsJ CQlyZXR1cm4gLUVJTlZBTDsKPiA+ID4+Pj4+ICsJCX0KPiA+ID4+Pj4+ICsKPiA+ID4+Pj4+ICsJ CS8qCj4gPiA+Pj4+PiArCQkgKiA5MC8yNzAgaXMgbm90IGFsbG93ZWQgd2l0aCBSR0I2NCAxNjox NjoxNjoxNiwKPiA+ID4+Pj4+ICsJCSAqIFJHQiAxNi1iaXQgNTo2OjUsIGFuZCBJbmRleGVkIDgt Yml0Lgo+ID4gPj4+Pj4gKwkJICogVEJEOiBBZGQgUkdCNjQgY2FzZSBvbmNlIGl0cyBhZGRlZCBp biBzdXBwb3J0ZWQgZm9ybWF0IGxpc3QuCj4gPiA+Pj4+PiArCQkgKi8KPiA+ID4+Pj4+ICsJCXN3 aXRjaCAoc3RhdGUtPmZiLT5waXhlbF9mb3JtYXQpIHsKPiA+ID4+Pj4+ICsJCWNhc2UgRFJNX0ZP Uk1BVF9DODoKPiA+ID4+Pj4+ICsJCWNhc2UgRFJNX0ZPUk1BVF9SR0I1NjU6Cj4gPiA+Pj4+PiAr CQkJRFJNX0RFQlVHX0tNUygiVW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0ICVzIGZvciA5MC8yNzAh XG4iLAo+ID4gPj4+Pj4gKwkJCQkJZHJtX2dldF9mb3JtYXRfbmFtZShzdGF0ZS0+ZmItPnBpeGVs X2Zvcm1hdCkpOwo+ID4gPj4+Pj4gKwkJCXJldHVybiAtRUlOVkFMOwo+ID4gPj4+Pj4gKwo+ID4g Pj4+Pj4gKwkJZGVmYXVsdDoKPiA+ID4+Pj4+ICsJCQlicmVhazsKPiA+ID4+Pj4+ICsJCX0KPiA+ ID4+Pj4+ICsJfQo+ID4gPj4+Pj4gKwo+ID4gPj4+Pj4gICAgCXJldHVybiBpbnRlbF9wbGFuZS0+ Y2hlY2tfcGxhbmUocGxhbmUsIGludGVsX3N0YXRlKTsKPiA+ID4+Pj4+ICAgIH0KPiA+ID4+Pj4+ Cj4gPiA+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiA+Pj4+PiBpbmRl eCBmMGJiYzIyLi40ZGU1NDRjIDEwMDY0NAo+ID4gPj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiA+Pj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kaXNwbGF5LmMKPiA+ID4+Pj4+IEBAIC0yMzExLDEzICsyMzExLDYgQEAgaW50ZWxf ZmlsbF9mYl9nZ3R0X3ZpZXcoc3RydWN0IGk5MTVfZ2d0dF92aWV3ICp2aWV3LCBzdHJ1Y3QgZHJt X2ZyYW1lYnVmZmVyICpmYiwKPiA+ID4+Pj4+ICAgIAlpbmZvLT5waXRjaCA9IGZiLT5waXRjaGVz WzBdOwo+ID4gPj4+Pj4gICAgCWluZm8tPmZiX21vZGlmaWVyID0gZmItPm1vZGlmaWVyWzBdOwo+ ID4gPj4+Pj4KPiA+ID4+Pj4+IC0JaWYgKCEoaW5mby0+ZmJfbW9kaWZpZXIgPT0gSTkxNV9GT1JN QVRfTU9EX1lfVElMRUQgfHwKPiA+ID4+Pj4+IC0JICAgICAgaW5mby0+ZmJfbW9kaWZpZXIgPT0g STkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEKSkgewo+ID4gPj4+Pj4gLQkJRFJNX0RFQlVHX0tNUygK PiA+ID4+Pj4+IC0JCQkgICAgICAiWSBvciBZZiB0aWxpbmcgaXMgbmVlZGVkIGZvciA5MC8yNzAg cm90YXRpb24hXG4iKTsKPiA+ID4+Pj4+IC0JCXJldHVybiAtRUlOVkFMOwo+ID4gPj4+Pj4gLQl9 Cj4gPiA+Pj4+PiAtCj4gPiA+Pj4+PiAgICAJcmV0dXJuIDA7Cj4gPiA+Pj4+PiAgICB9Cj4gPiA+ Pj4+Pgo+ID4gPj4+Pj4gQEAgLTI5MTksOCArMjkxMiwxMiBAQCBzdGF0aWMgdm9pZCBza3lsYWtl X3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiA+ID4+Pj4+ICAg IAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4g PiA+Pj4+PiAgICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKPiA+ID4+Pj4+ICAg IAlpbnQgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7Cj4gPiA+Pj4+PiAtCXUzMiBwbGFuZV9jdGws IHN0cmlkZV9kaXY7Cj4gPiA+Pj4+PiArCXUzMiBwbGFuZV9jdGwsIHN0cmlkZV9kaXYsIHN0cmlk ZTsKPiA+ID4+Pj4+ICsJdTMyIHRpbGVfaGVpZ2h0LCBwbGFuZV9vZmZzZXQsIHBsYW5lX3NpemU7 Cj4gPiA+Pj4+PiArCXVuc2lnbmVkIGludCByb3RhdGlvbjsKPiA+ID4+Pj4+ICsJaW50IHhfb2Zm c2V0LCB5X29mZnNldDsKPiA+ID4+Pj4+ICAgIAl1bnNpZ25lZCBsb25nIHN1cmZfYWRkcjsKPiA+ ID4+Pj4+ICsJc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7Cj4gPiA+Pj4+Pgo+ID4gPj4+Pj4gICAg CWlmICghaW50ZWxfY3J0Yy0+cHJpbWFyeV9lbmFibGVkKSB7Cj4gPiA+Pj4+PiAgICAJCUk5MTVf V1JJVEUoUExBTkVfQ1RMKHBpcGUsIDApLCAwKTsKPiA+ID4+Pj4+IEBAIC0yOTgxLDIxICsyOTc4 LDUxIEBAIHN0YXRpYyB2b2lkIHNreWxha2VfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRy bV9jcnRjICpjcnRjLAo+ID4gPj4+Pj4gICAgCX0KPiA+ID4+Pj4+Cj4gPiA+Pj4+PiAgICAJcGxh bmVfY3RsIHw9IFBMQU5FX0NUTF9QTEFORV9HQU1NQV9ESVNBQkxFOwo+ID4gPj4+Pj4gLQlpZiAo Y3J0Yy0+cHJpbWFyeS0+c3RhdGUtPnJvdGF0aW9uID09IEJJVChEUk1fUk9UQVRFXzE4MCkpCj4g PiA+Pj4+PiArCj4gPiA+Pj4+PiArCXBsYW5lID0gY3J0Yy0+cHJpbWFyeTsKPiA+ID4+Pj4+ICsJ cm90YXRpb24gPSBwbGFuZS0+c3RhdGUtPnJvdGF0aW9uOwo+ID4gPj4+Pj4gKwlzd2l0Y2ggKHJv dGF0aW9uKSB7Cj4gPiA+Pj4+PiArCWNhc2UgQklUKERSTV9ST1RBVEVfOTApOgo+ID4gPj4+Pj4g KwkJcGxhbmVfY3RsIHw9IFBMQU5FX0NUTF9ST1RBVEVfOTA7Cj4gPiA+Pj4+PiArCQlicmVhazsK PiA+ID4+Pj4+ICsKPiA+ID4+Pj4+ICsJY2FzZSBCSVQoRFJNX1JPVEFURV8xODApOgo+ID4gPj4+ Pj4gICAgCQlwbGFuZV9jdGwgfD0gUExBTkVfQ1RMX1JPVEFURV8xODA7Cj4gPiA+Pj4+PiArCQli cmVhazsKPiA+ID4+Pj4+ICsKPiA+ID4+Pj4+ICsJY2FzZSBCSVQoRFJNX1JPVEFURV8yNzApOgo+ ID4gPj4+Pj4gKwkJcGxhbmVfY3RsIHw9IFBMQU5FX0NUTF9ST1RBVEVfMjcwOwo+ID4gPj4+Pj4g KwkJYnJlYWs7Cj4gPiA+Pj4+PiArCX0KPiA+ID4+Pj4+Cj4gPiA+Pj4+PiAgICAJb2JqID0gaW50 ZWxfZmJfb2JqKGZiKTsKPiA+ID4+Pj4+ICAgIAlzdHJpZGVfZGl2ID0gaW50ZWxfZmJfc3RyaWRl X2FsaWdubWVudChkZXYsIGZiLT5tb2RpZmllclswXSwKPiA+ID4+Pj4+ICAgIAkJCQkJICAgICAg IGZiLT5waXhlbF9mb3JtYXQpOwo+ID4gPj4+Pj4gLQlzdXJmX2FkZHIgPSBpbnRlbF9wbGFuZV9v Ympfb2Zmc2V0KHRvX2ludGVsX3BsYW5lKGNydGMtPnByaW1hcnkpLCBvYmopOwo+ID4gPj4+Pj4g KwlzdXJmX2FkZHIgPSBpbnRlbF9wbGFuZV9vYmpfb2Zmc2V0KHRvX2ludGVsX3BsYW5lKHBsYW5l KSwgb2JqKTsKPiA+ID4+Pj4+ICsKPiA+ID4+Pj4+ICsJaWYgKGludGVsX3JvdGF0aW9uXzkwX29y XzI3MChyb3RhdGlvbikpIHsKPiA+ID4+Pj4+ICsJCS8qIHN0cmlkZSA9IFN1cmZhY2UgaGVpZ2h0 IGluIHRpbGVzICovCj4gPiA+Pj4+PiArCQl0aWxlX2hlaWdodCA9IGludGVsX3RpbGVfaGVpZ2h0 KGRldiwgZmItPmJpdHNfcGVyX3BpeGVsLAo+ID4gPj4+Pj4gKwkJCQkJCWZiLT5tb2RpZmllclsw XSk7Cj4gPiA+Pj4+PiArCQlzdHJpZGUgPSBESVZfUk9VTkRfVVAoZmItPmhlaWdodCwgdGlsZV9o ZWlnaHQpOwo+ID4gPj4+Pj4gKwkJeF9vZmZzZXQgPSBzdHJpZGUgKiB0aWxlX2hlaWdodCAtIHkg LSAocGxhbmUtPnN0YXRlLT5zcmNfaCA+PiAxNik7Cj4gPiA+Pj4+PiArCQl5X29mZnNldCA9IHg7 Cj4gPiA+Pj4+PiArCQlwbGFuZV9zaXplID0gKChwbGFuZS0+c3RhdGUtPnNyY193ID4+IDE2KSAt IDEpIDw8IDE2IHwKPiA+ID4+Pj4+ICsJCQkJCSgocGxhbmUtPnN0YXRlLT5zcmNfaCA+PiAxNikg LSAxKTsKPiA+ID4+Pj4+ICsJfSBlbHNlIHsKPiA+ID4+Pj4+ICsJCXN0cmlkZSA9IGZiLT5waXRj aGVzWzBdIC8gc3RyaWRlX2RpdjsKPiA+ID4+Pj4+ICsJCXhfb2Zmc2V0ID0geDsKPiA+ID4+Pj4+ ICsJCXlfb2Zmc2V0ID0geTsKPiA+ID4+Pj4+ICsJCXBsYW5lX3NpemUgPSAoKHBsYW5lLT5zdGF0 ZS0+c3JjX2ggPj4gMTYpIC0gMSkgPDwgMTYgfAo+ID4gPj4+Pj4gKwkJCSgocGxhbmUtPnN0YXRl LT5zcmNfdyA+PiAxNikgLSAxKTsKPiA+ID4+Pj4+ICsJfQo+ID4gPj4+Pj4gKwlwbGFuZV9vZmZz ZXQgPSB5X29mZnNldCA8PCAxNiB8IHhfb2Zmc2V0Owo+ID4gPj4+Pj4KPiA+ID4+Pj4+ICAgIAlJ OTE1X1dSSVRFKFBMQU5FX0NUTChwaXBlLCAwKSwgcGxhbmVfY3RsKTsKPiA+ID4+Pj4+ICAgIAlJ OTE1X1dSSVRFKFBMQU5FX1BPUyhwaXBlLCAwKSwgMCk7Cj4gPiA+Pj4+PiAtCUk5MTVfV1JJVEUo UExBTkVfT0ZGU0VUKHBpcGUsIDApLCAoeSA8PCAxNikgfCB4KTsKPiA+ID4+Pj4+IC0JSTkxNV9X UklURShQTEFORV9TSVpFKHBpcGUsIDApLAo+ID4gPj4+Pj4gLQkJICAgKGludGVsX2NydGMtPmNv bmZpZy0+cGlwZV9zcmNfaCAtIDEpIDw8IDE2IHwKPiA+ID4+Pj4+IC0JCSAgIChpbnRlbF9jcnRj LT5jb25maWctPnBpcGVfc3JjX3cgLSAxKSk7Cj4gPiA+Pj4+PiAtCUk5MTVfV1JJVEUoUExBTkVf U1RSSURFKHBpcGUsIDApLCBmYi0+cGl0Y2hlc1swXSAvIHN0cmlkZV9kaXYpOwo+ID4gPj4+Pj4g KwlJOTE1X1dSSVRFKFBMQU5FX09GRlNFVChwaXBlLCAwKSwgcGxhbmVfb2Zmc2V0KTsKPiA+ID4+ Pj4+ICsJSTkxNV9XUklURShQTEFORV9TSVpFKHBpcGUsIDApLCBwbGFuZV9zaXplKTsKPiA+ID4+ Pj4+ICsJSTkxNV9XUklURShQTEFORV9TVFJJREUocGlwZSwgMCksIHN0cmlkZSk7Cj4gPiA+Pj4+ PiAgICAJSTkxNV9XUklURShQTEFORV9TVVJGKHBpcGUsIDApLCBzdXJmX2FkZHIpOwo+ID4gPj4+ Pj4KPiA+ID4+Pj4+ICAgIAlQT1NUSU5HX1JFQUQoUExBTkVfU1VSRihwaXBlLCAwKSk7Cj4gPiA+ Pj4+PiBAQCAtMTI0MDYsMjMgKzEyNDMzLDMyIEBAIHN0YXRpYyBzdHJ1Y3QgZHJtX3BsYW5lICpp bnRlbF9wcmltYXJ5X3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4gPj4+ Pj4gICAgCQkJCSBpbnRlbF9wcmltYXJ5X2Zvcm1hdHMsIG51bV9mb3JtYXRzLAo+ID4gPj4+Pj4g ICAgCQkJCSBEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsKPiA+ID4+Pj4+Cj4gPiA+Pj4+PiAtCWlm IChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA0KSB7Cj4gPiA+Pj4+PiAtCQlpZiAoIWRldi0+bW9k ZV9jb25maWcucm90YXRpb25fcHJvcGVydHkpCj4gPiA+Pj4+PiAtCQkJZGV2LT5tb2RlX2NvbmZp Zy5yb3RhdGlvbl9wcm9wZXJ0eSA9Cj4gPiA+Pj4+PiAtCQkJCWRybV9tb2RlX2NyZWF0ZV9yb3Rh dGlvbl9wcm9wZXJ0eShkZXYsCj4gPiA+Pj4+PiAtCQkJCQkJCUJJVChEUk1fUk9UQVRFXzApIHwK PiA+ID4+Pj4+IC0JCQkJCQkJQklUKERSTV9ST1RBVEVfMTgwKSk7Cj4gPiA+Pj4+PiAtCQlpZiAo ZGV2LT5tb2RlX2NvbmZpZy5yb3RhdGlvbl9wcm9wZXJ0eSkKPiA+ID4+Pj4+IC0JCQlkcm1fb2Jq ZWN0X2F0dGFjaF9wcm9wZXJ0eSgmcHJpbWFyeS0+YmFzZS5iYXNlLAo+ID4gPj4+Pj4gLQkJCQlk ZXYtPm1vZGVfY29uZmlnLnJvdGF0aW9uX3Byb3BlcnR5LAo+ID4gPj4+Pj4gLQkJCQlzdGF0ZS0+ YmFzZS5yb3RhdGlvbik7Cj4gPiA+Pj4+PiAtCX0KPiA+ID4+Pj4+ICsJaWYgKElOVEVMX0lORk8o ZGV2KS0+Z2VuID49IDQpCj4gPiA+Pj4+PiArCQlpbnRlbF9jcmVhdGVfcm90YXRpb25fcHJvcGVy dHkoZGV2LCBwcmltYXJ5KTsKPiA+ID4+Pj4+Cj4gPiA+Pj4+PiAgICAJZHJtX3BsYW5lX2hlbHBl cl9hZGQoJnByaW1hcnktPmJhc2UsICZpbnRlbF9wbGFuZV9oZWxwZXJfZnVuY3MpOwo+ID4gPj4+ Pj4KPiA+ID4+Pj4+ICAgIAlyZXR1cm4gJnByaW1hcnktPmJhc2U7Cj4gPiA+Pj4+PiAgICB9Cj4g PiA+Pj4+Pgo+ID4gPj4+Pj4gK3ZvaWQgaW50ZWxfY3JlYXRlX3JvdGF0aW9uX3Byb3BlcnR5KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUpCj4gPiA+Pj4+ PiArewo+ID4gPj4+Pj4gKwlpZiAoIWRldi0+bW9kZV9jb25maWcucm90YXRpb25fcHJvcGVydHkp IHsKPiA+ID4+Pj4+ICsJCXVuc2lnbmVkIGxvbmcgZmxhZ3MgPSBCSVQoRFJNX1JPVEFURV8wKSB8 Cj4gPiA+Pj4+PiArCQkJQklUKERSTV9ST1RBVEVfMTgwKTsKPiA+ID4+Pj4+ICsKPiA+ID4+Pj4+ ICsJCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KQo+ID4gPj4+Pj4gKwkJCWZsYWdzIHw9 IEJJVChEUk1fUk9UQVRFXzkwKSB8IEJJVChEUk1fUk9UQVRFXzI3MCk7Cj4gPiA+Pj4+PiArCj4g PiA+Pj4+PiArCQlkZXYtPm1vZGVfY29uZmlnLnJvdGF0aW9uX3Byb3BlcnR5ID0KPiA+ID4+Pj4+ ICsJCQlkcm1fbW9kZV9jcmVhdGVfcm90YXRpb25fcHJvcGVydHkoZGV2LCBmbGFncyk7Cj4gPiA+ Pj4+PiArCX0KPiA+ID4+Pj4+ICsJaWYgKGRldi0+bW9kZV9jb25maWcucm90YXRpb25fcHJvcGVy dHkpCj4gPiA+Pj4+PiArCQlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmcGxhbmUtPmJhc2Uu YmFzZSwKPiA+ID4+Pj4+ICsJCQkJZGV2LT5tb2RlX2NvbmZpZy5yb3RhdGlvbl9wcm9wZXJ0eSwK PiA+ID4+Pj4+ICsJCQkJcGxhbmUtPmJhc2Uuc3RhdGUtPnJvdGF0aW9uKTsKPiA+ID4+Pj4+ICt9 Cj4gPiA+Pj4+PiArCj4gPiA+Pj4+PiAgICBzdGF0aWMgaW50Cj4gPiA+Pj4+PiAgICBpbnRlbF9j aGVja19jdXJzb3JfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gPiA+Pj4+PiAgICAJ CQkgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpzdGF0ZSkKPiA+ID4+Pj4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oCj4gPiA+Pj4+PiBpbmRleCA4MTFhMWRiLi5kMzIwMjVhIDEwMDY0NAo+ID4g Pj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+ID4+Pj4+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiA+Pj4+PiBAQCAtOTk1LDYg Kzk5NSwxMiBAQCBpbnRlbF9yb3RhdGlvbl85MF9vcl8yNzAodW5zaWduZWQgaW50IHJvdGF0aW9u KQo+ID4gPj4+Pj4gICAgCXJldHVybiByb3RhdGlvbiAmIChCSVQoRFJNX1JPVEFURV85MCkgfCBC SVQoRFJNX1JPVEFURV8yNzApKTsKPiA+ID4+Pj4+ICAgIH0KPiA+ID4+Pj4+Cj4gPiA+Pj4+PiAr dW5zaWduZWQgaW50Cj4gPiA+Pj4+PiAraW50ZWxfdGlsZV9oZWlnaHQoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgdWludDMyX3QgYml0c19wZXJfcGl4ZWwsCj4gPiA+Pj4+PiArCQkgIHVpbnQ2NF90 IGZiX21vZGlmaWVyKTsKPiA+ID4+Pj4+ICt2b2lkIGludGVsX2NyZWF0ZV9yb3RhdGlvbl9wcm9w ZXJ0eShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4gPj4+Pj4gKwkJCQkJc3RydWN0IGludGVs X3BsYW5lICpwbGFuZSk7Cj4gPiA+Pj4+PiArCj4gPiA+Pj4+PiAgICBib29sIGludGVsX3dtX25l ZWRfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ID4gPj4+Pj4gICAgCQkJICBzdHJ1 Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSk7Cj4gPiA+Pj4+Pgo+ID4gPj4+Pj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfc3ByaXRlLmMKPiA+ID4+Pj4+IGluZGV4IGY0MWU4NzIuLjgzYWRjOWIgMTAw NjQ0Cj4gPiA+Pj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwo+ ID4gPj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPiA+ID4+ Pj4+IEBAIC0xOTAsMTAgKzE5MCwxMyBAQCBza2xfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxh bmUgKmRybV9wbGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ID4gPj4+Pj4gICAgCXN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBpbnRlbF9mYl9vYmooZmIpOwo+ID4gPj4+Pj4g ICAgCWNvbnN0IGludCBwaXBlID0gaW50ZWxfcGxhbmUtPnBpcGU7Cj4gPiA+Pj4+PiAgICAJY29u c3QgaW50IHBsYW5lID0gaW50ZWxfcGxhbmUtPnBsYW5lICsgMTsKPiA+ID4+Pj4+IC0JdTMyIHBs YW5lX2N0bCwgc3RyaWRlX2RpdjsKPiA+ID4+Pj4+ICsJdTMyIHBsYW5lX2N0bCwgc3RyaWRlX2Rp diwgc3RyaWRlOwo+ID4gPj4+Pj4gICAgCWludCBwaXhlbF9zaXplID0gZHJtX2Zvcm1hdF9wbGFu ZV9jcHAoZmItPnBpeGVsX2Zvcm1hdCwgMCk7Cj4gPiA+Pj4+PiAgICAJY29uc3Qgc3RydWN0IGRy bV9pbnRlbF9zcHJpdGVfY29sb3JrZXkgKmtleSA9ICZpbnRlbF9wbGFuZS0+Y2tleTsKPiA+ID4+ Pj4+ICAgIAl1bnNpZ25lZCBsb25nIHN1cmZfYWRkcjsKPiA+ID4+Pj4+ICsJdTMyIHRpbGVfaGVp Z2h0LCBwbGFuZV9vZmZzZXQsIHBsYW5lX3NpemU7Cj4gPiA+Pj4+PiArCXVuc2lnbmVkIGludCBy b3RhdGlvbjsKPiA+ID4+Pj4+ICsJaW50IHhfb2Zmc2V0LCB5X29mZnNldDsKPiA+ID4+Pj4+Cj4g PiA+Pj4+PiAgICAJcGxhbmVfY3RsID0gUExBTkVfQ1RMX0VOQUJMRSB8Cj4gPiA+Pj4+PiAgICAJ CVBMQU5FX0NUTF9QSVBFX0NTQ19FTkFCTEU7Cj4gPiA+Pj4+PiBAQCAtMjU0LDggKzI1NywyMCBA QCBza2xfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKmRybV9wbGFuZSwgc3RydWN0IGRy bV9jcnRjICpjcnRjLAo+ID4gPj4+Pj4gICAgCQlNSVNTSU5HX0NBU0UoZmItPm1vZGlmaWVyWzBd KTsKPiA+ID4+Pj4+ICAgIAl9Cj4gPiA+Pj4+Pgo+ID4gPj4+Pj4gLQlpZiAoZHJtX3BsYW5lLT5z dGF0ZS0+cm90YXRpb24gPT0gQklUKERSTV9ST1RBVEVfMTgwKSkKPiA+ID4+Pj4+ICsJcm90YXRp b24gPSBkcm1fcGxhbmUtPnN0YXRlLT5yb3RhdGlvbjsKPiA+ID4+Pj4+ICsJc3dpdGNoIChyb3Rh dGlvbikgewo+ID4gPj4+Pj4gKwljYXNlIEJJVChEUk1fUk9UQVRFXzkwKToKPiA+ID4+Pj4+ICsJ CXBsYW5lX2N0bCB8PSBQTEFORV9DVExfUk9UQVRFXzkwOwo+ID4gPj4+Pj4gKwkJYnJlYWs7Cj4g PiA+Pj4+PiArCj4gPiA+Pj4+PiArCWNhc2UgQklUKERSTV9ST1RBVEVfMTgwKToKPiA+ID4+Pj4+ ICAgIAkJcGxhbmVfY3RsIHw9IFBMQU5FX0NUTF9ST1RBVEVfMTgwOwo+ID4gPj4+Pj4gKwkJYnJl YWs7Cj4gPiA+Pj4+PiArCj4gPiA+Pj4+PiArCWNhc2UgQklUKERSTV9ST1RBVEVfMjcwKToKPiA+ ID4+Pj4+ICsJCXBsYW5lX2N0bCB8PSBQTEFORV9DVExfUk9UQVRFXzI3MDsKPiA+ID4+Pj4+ICsJ CWJyZWFrOwo+ID4gPj4+Pj4gKwl9Cj4gPiA+Pj4+Pgo+ID4gPj4+Pj4gICAgCWludGVsX3VwZGF0 ZV9zcHJpdGVfd2F0ZXJtYXJrcyhkcm1fcGxhbmUsIGNydGMsIHNyY193LCBzcmNfaCwKPiA+ID4+ Pj4+ICAgIAkJCQkgICAgICAgcGl4ZWxfc2l6ZSwgdHJ1ZSwKPiA+ID4+Pj4+IEBAIC0yODMsMTAg KzI5OCwyNiBAQCBza2xfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKmRybV9wbGFuZSwg c3RydWN0IGRybV9jcnRjICpjcnRjLAo+ID4gPj4+Pj4KPiA+ID4+Pj4+ICAgIAlzdXJmX2FkZHIg PSBpbnRlbF9wbGFuZV9vYmpfb2Zmc2V0KGludGVsX3BsYW5lLCBvYmopOwo+ID4gPj4+Pj4KPiA+ ID4+Pj4+IC0JSTkxNV9XUklURShQTEFORV9PRkZTRVQocGlwZSwgcGxhbmUpLCAoeSA8PCAxNikg fCB4KTsKPiA+ID4+Pj4+IC0JSTkxNV9XUklURShQTEFORV9TVFJJREUocGlwZSwgcGxhbmUpLCBm Yi0+cGl0Y2hlc1swXSAvIHN0cmlkZV9kaXYpOwo+ID4gPj4+Pj4gKwlpZiAoaW50ZWxfcm90YXRp b25fOTBfb3JfMjcwKHJvdGF0aW9uKSkgewo+ID4gPj4+Pj4gKwkJLyogc3RyaWRlOiBTdXJmYWNl IGhlaWdodCBpbiB0aWxlcyAqLwo+ID4gPj4+Pj4gKwkJdGlsZV9oZWlnaHQgPSBpbnRlbF90aWxl X2hlaWdodChkZXYsIGZiLT5iaXRzX3Blcl9waXhlbCwKPiA+ID4+Pj4+ICsJCQkJCQkJZmItPm1v ZGlmaWVyWzBdKTsKPiA+ID4+Pj4+ICsJCXN0cmlkZSA9IERJVl9ST1VORF9VUChmYi0+aGVpZ2h0 LCB0aWxlX2hlaWdodCk7Cj4gPiA+Pj4+PiArCQlwbGFuZV9zaXplID0gKHNyY193IDw8IDE2KSB8 IHNyY19oOwo+ID4gPj4+Pj4gKwkJeF9vZmZzZXQgPSBzdHJpZGUgKiB0aWxlX2hlaWdodCAtIHkg LSAoc3JjX2ggKyAxKTsKPiA+ID4+Pj4+ICsJCXlfb2Zmc2V0ID0geDsKPiA+ID4+Pj4+ICsJfSBl bHNlIHsKPiA+ID4+Pj4+ICsJCXN0cmlkZSA9IGZiLT5waXRjaGVzWzBdIC8gc3RyaWRlX2RpdjsK PiA+ID4+Pj4+ICsJCXBsYW5lX3NpemUgPSAoc3JjX2ggPDwgMTYpIHwgc3JjX3c7Cj4gPiA+Pj4+ PiArCQl4X29mZnNldCA9IHg7Cj4gPiA+Pj4+PiArCQl5X29mZnNldCA9IHk7Cj4gPiA+Pj4+PiAr CX0KPiA+ID4+Pj4+ICsJcGxhbmVfb2Zmc2V0ID0geV9vZmZzZXQgPDwgMTYgfCB4X29mZnNldDsK PiA+ID4+Pj4+ICsKPiA+ID4+Pj4+ICsJSTkxNV9XUklURShQTEFORV9PRkZTRVQocGlwZSwgcGxh bmUpLCBwbGFuZV9vZmZzZXQpOwo+ID4gPj4+Pj4gKwlJOTE1X1dSSVRFKFBMQU5FX1NUUklERShw aXBlLCBwbGFuZSksIHN0cmlkZSk7Cj4gPiA+Pj4+PiAgICAJSTkxNV9XUklURShQTEFORV9QT1Mo cGlwZSwgcGxhbmUpLCAoY3J0Y195IDw8IDE2KSB8IGNydGNfeCk7Cj4gPiA+Pj4+PiAtCUk5MTVf V1JJVEUoUExBTkVfU0laRShwaXBlLCBwbGFuZSksIChjcnRjX2ggPDwgMTYpIHwgY3J0Y193KTsK PiA+ID4+Pj4+ICsJSTkxNV9XUklURShQTEFORV9TSVpFKHBpcGUsIHBsYW5lKSwgcGxhbmVfc2l6 ZSk7Cj4gPiA+Pj4+PiAgICAJSTkxNV9XUklURShQTEFORV9DVEwocGlwZSwgcGxhbmUpLCBwbGFu ZV9jdGwpOwo+ID4gPj4+Pj4gICAgCUk5MTVfV1JJVEUoUExBTkVfU1VSRihwaXBlLCBwbGFuZSks IHN1cmZfYWRkcik7Cj4gPiA+Pj4+PiAgICAJUE9TVElOR19SRUFEKFBMQU5FX1NVUkYocGlwZSwg cGxhbmUpKTsKPiA+ID4+Pj4+IEBAIC0xMzEwLDE2ICsxMzQxLDcgQEAgaW50ZWxfcGxhbmVfaW5p dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVtIHBpcGUgcGlwZSwgaW50IHBsYW5lKQo+ID4g Pj4+Pj4gICAgCQlnb3RvIG91dDsKPiA+ID4+Pj4+ICAgIAl9Cj4gPiA+Pj4+Pgo+ID4gPj4+Pj4g LQlpZiAoIWRldi0+bW9kZV9jb25maWcucm90YXRpb25fcHJvcGVydHkpCj4gPiA+Pj4+PiAtCQlk ZXYtPm1vZGVfY29uZmlnLnJvdGF0aW9uX3Byb3BlcnR5ID0KPiA+ID4+Pj4+IC0JCQlkcm1fbW9k ZV9jcmVhdGVfcm90YXRpb25fcHJvcGVydHkoZGV2LAo+ID4gPj4+Pj4gLQkJCQkJCQkgIEJJVChE Uk1fUk9UQVRFXzApIHwKPiA+ID4+Pj4+IC0JCQkJCQkJICBCSVQoRFJNX1JPVEFURV8xODApKTsK PiA+ID4+Pj4+IC0KPiA+ID4+Pj4+IC0JaWYgKGRldi0+bW9kZV9jb25maWcucm90YXRpb25fcHJv cGVydHkpCj4gPiA+Pj4+PiAtCQlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmaW50ZWxfcGxh bmUtPmJhc2UuYmFzZSwKPiA+ID4+Pj4+IC0JCQkJCSAgIGRldi0+bW9kZV9jb25maWcucm90YXRp b25fcHJvcGVydHksCj4gPiA+Pj4+PiAtCQkJCQkgICBzdGF0ZS0+YmFzZS5yb3RhdGlvbik7Cj4g PiA+Pj4+PiArCWludGVsX2NyZWF0ZV9yb3RhdGlvbl9wcm9wZXJ0eShkZXYsIGludGVsX3BsYW5l KTsKPiA+ID4+Pj4+Cj4gPiA+Pj4+PiAgICAJZHJtX3BsYW5lX2hlbHBlcl9hZGQoJmludGVsX3Bs YW5lLT5iYXNlLCAmaW50ZWxfcGxhbmVfaGVscGVyX2Z1bmNzKTsKPiA+ID4+Pj4+Cj4gPiA+Pj4+ PiAtLQo+ID4gPj4+Pj4gMS43LjEwLjQKPiA+ID4+Pj4+Cj4gPiA+Pj4+PiBfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ID4gPj4+Pj4gSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdAo+ID4gPj4+Pj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ID4g Pj4+Pj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeAo+ID4gPj4+Pgo+ID4gPj4+PiAtLQo+ID4gPj4+PiBEYW5pZWwgVmV0dGVyCj4gPiA+Pj4+ IFNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgo+ID4gPj4+PiBodHRwOi8vYmxv Zy5mZndsbC5jaAo+ID4gPj4+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwo+ID4gPj4+PiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gPiA+Pj4+IEludGVs LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiA+ID4+Pj4gaHR0cDovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo+ID4gPj4+Cj4gPiA+Cj4gCj4gLS0g Cj4gVmlsbGUgU3lyasOkbMOkCj4gSW50ZWwgT1RDCj4gX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCi0tIApNYXR0IFJvcGVyCkdyYXBoaWNzIFNvZnR3 YXJlIEVuZ2luZWVyCklvVEcgUGxhdGZvcm0gRW5hYmxpbmcgJiBEZXZlbG9wbWVudApJbnRlbCBD b3Jwb3JhdGlvbgooOTE2KSAzNTYtMjc5NQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ludGVsLWdmeAo=