From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jindal, Sonika" Subject: Re: [PATCH 2/2] drm/i915/skl: Support for 90/270 rotation Date: Mon, 13 Apr 2015 09:36:02 +0530 Message-ID: <552B40AA.3040504@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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 0B0356E051 for ; Sun, 12 Apr 2015 21:06:07 -0700 (PDT) In-Reply-To: <20150410144419.GA28877@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: =?windows-1252?Q?Ville_Syrj=E4l=E4?= , Daniel Vetter Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org CgpPbiA0LzEwLzIwMTUgODoxNCBQTSwgVmlsbGUgU3lyasOkbMOkIHdyb3RlOgo+IE9uIEZyaSwg QXByIDEwLCAyMDE1IGF0IDA0OjE3OjE3UE0gKzAyMDAsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4+ IE9uIEZyaSwgQXByIDEwLCAyMDE1IGF0IDAyOjM3OjI5UE0gKzA1MzAsIFNvbmlrYSBKaW5kYWwg d3JvdGU6Cj4+PiB2MjogTW92aW5nIGNyZWF0aW9uIG9mIHByb3BlcnR5IGluIGEgZnVuY3Rpb24s IGNoZWNraW5nIGZvciA5MC8yNzAKPj4+IHJvdGF0aW9uIHNpbXVsdGFuZW91c2x5IChDaHJpcykK Pj4+IExldHRpbmcgcHJpbWFyeSBwbGFuZSB0byBiZSBwb3NpdGlvbmVkCj4+PiB2MzogQWRkaW5n IGlmL2Vsc2UgZm9yIDkwLzI3MCBhbmQgcmVzdCBwYXJhbXMgcHJvZ3JhbW1pbmcsIGFkZGluZyBj aGVjayBmb3IKPj4+IHBpeGVsX2Zvcm1hdCwgc29tZSBjbGVhbnVwIChyZXZpZXcgY29tbWVudHMp Cj4+PiB2NDogQWRkaW5nIHJpZ2h0IHBpeGVsX2Zvcm1hdHMsIHVzaW5nIHNyY18qIHBhcmFtcyBp bnN0ZWFkIG9mIGNydGNfKiBmb3Igb2Zmc2V0Cj4+PiBhbmQgc2l6ZSBwcm9ncmFtbWluZyAoVmls bGUpCj4+PiB2NTogUmViYXNlZCBvbiAtbmlnaHRseSBhbmQgVHZydGtvJ3Mgc2VyaWVzIGZvciBn dHQgcmVtYXBwaW5nLgo+Pj4gdjY6IFJlYmFzZWQgb24gLW5pZ2h0bHkgKFR2cnRrbydzIHNlcmll cyBtZXJnZWQpCj4+PiB2NzogTW92aW5nIHBpeGVsX2Zvcm1hdCBjaGVjayB0byBpbnRlbF9hdG9t aWNfcGxhbmVfY2hlY2sgKE1hdHQpCj4+Pgo+Pj4gU2lnbmVkLW9mZi1ieTogU29uaWthIEppbmRh bCA8c29uaWthLmppbmRhbEBpbnRlbC5jb20+Cj4+PiBSZXZpZXdlZC1ieTogTWF0dCBSb3BlciA8 bWF0dGhldy5kLnJvcGVyQGludGVsLmNvbT4KPj4KPj4gUGF0Y2hlcyBhcmUgbWlzc2luZyB0aGUg VGVzdGNhc2U6IHRhZywgcGxlYXNlIGFkZCB0aGF0LiBBbHNvLCBhcmUgYWxsIHRoZQo+PiBpZ3Qg Y29tbWl0dGVkIG9yIG5vdCB5ZXQ/IFB1bGxlZCB0aGVzZSB0d28gaW4gbWVhbndoaWxlLgo+Cj4g VGhpbmdzIGFyZSBnb2luZyBzb21ld2hhdCBicm9rZW4gYmVjYXVzZSB5b3UgZGlkbid0IGFwcGx5 IG15IHBsYW5lCj4gc3RhdGUgc3R1ZmYuIEhtbS4gQWN0dWFsbHkgaXQgc29ydCBvZiBsb29rcyB0 aGF0IGl0IG1pZ2h0IHdvcmsgYnkgbHVjawo+IGFzIGxvbmcgYXMgdGhlIHByaW1hcnkgcGxhbmUg ZG9lc24ndCBnZXQgY2xpcHBlZCBzaW5jZSB0aGlzIGlzIGJhc2hpbmcKPiB0aGUgdXNlciBzdGF0 ZSBkaXJlY3RseSBpbnRvIHRoZSBoYXJkd2FyZSByZWdpc3RlcnMgYW5kIG5vdCB0aGUgZGVyaXZl ZAo+IHN0YXRlIChpZS4gY2xpcHBlZCBjb29yZGluYXRlcykuCj4KSSB3YXMgaG9waW5nIHlvdXIg Y2hhbmdlcyBnZXQgbWVyZ2VkLCBidXQgbm90IHN1cmUgd2h5IHRoZXkgYXJlIGhlbGQgdXAuCgo+ IEFsc28gSSBzZWUgbXkgcmV2aWV3IGNvbW1lbnQgYWJvdXQgdGhlIDkwIHZzLiAyNzAgcm90YXRp b24gbWl4dXAgd2FzCj4gaWdub3JlZCBhdCBsZWFzdC4KPgpJIG5ldmVyIHJlYWxseSBnb3QgdGhl IHRvIHVuZGVyc3RhbmQgdGhlIG5lZWQgb2YgcmV2ZXJzaW5nIDkwIGFuZCAyNzAgOikgClRoZSBs YXN0IGRpc2N1c3Npb24gd2FzIG5vdCBjb25jbHVkZWQsIEFGQUlSLgpUaGluZ3MgbG9vayBjb3Jy ZWN0IHRvIG1lIGFuZCB3b3JrIGZpbmUgd2l0aCB0aGUgdGVzdGNhc2UgYWxzby4KSXMgdGhlcmUg c29tZXRoaW5nIGNvbXBsZXRlbHkgZGlmZmVyZW50IHdoaWNoIEkgYW0gdW5hYmxlIHRvIGdldD8K Ci1Tb25pa2EKCj4+IC1EYW5pZWwKPj4KPj4+IC0tLQo+Pj4gICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3JlZy5oICAgICAgICAgICB8ICAgIDIgKwo+Pj4gICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9hdG9taWNfcGxhbmUuYyB8ICAgMjQgKysrKysrKysKPj4+ICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jICAgICAgfCAgIDg4ICsrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0tCj4+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICAgICAg IHwgICAgNiArKwo+Pj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyAgICAg ICB8ICAgNTIgKysrKysrKysrKysrLS0tLS0KPj4+ICAgNSBmaWxlcyBjaGFuZ2VkLCAxMzEgaW5z ZXJ0aW9ucygrKSwgNDEgZGVsZXRpb25zKC0pCj4+Pgo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5o Cj4+PiBpbmRleCBiNTIyZWI2Li41NjRiYmQ1IDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9yZWcuaAo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9y ZWcuaAo+Pj4gQEAgLTQ4NTQsNyArNDg1NCw5IEBAIGVudW0gc2tsX2Rpc3BfcG93ZXJfd2VsbHMg ewo+Pj4gICAjZGVmaW5lICAgUExBTkVfQ1RMX0FMUEhBX0hXX1BSRU1VTFRJUExZCSggIDMgPDwg NCkKPj4+ICAgI2RlZmluZSAgIFBMQU5FX0NUTF9ST1RBVEVfTUFTSwkJCTB4Mwo+Pj4gICAjZGVm aW5lICAgUExBTkVfQ1RMX1JPVEFURV8wCQkJMHgwCj4+PiArI2RlZmluZSAgIFBMQU5FX0NUTF9S T1RBVEVfOTAJCQkweDEKPj4+ICAgI2RlZmluZSAgIFBMQU5FX0NUTF9ST1RBVEVfMTgwCQkJMHgy Cj4+PiArI2RlZmluZSAgIFBMQU5FX0NUTF9ST1RBVEVfMjcwCQkJMHgzCj4+PiAgICNkZWZpbmUg X1BMQU5FX1NUUklERV8xX0EJCQkweDcwMTg4Cj4+PiAgICNkZWZpbmUgX1BMQU5FX1NUUklERV8y X0EJCQkweDcwMjg4Cj4+PiAgICNkZWZpbmUgX1BMQU5FX1NUUklERV8zX0EJCQkweDcwMzg4Cj4+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYwo+Pj4gaW5kZXggOTc2 Yjg5MS4uYTI3ZWU4YyAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2F0b21pY19wbGFuZS5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9t aWNfcGxhbmUuYwo+Pj4gQEAgLTE2Miw2ICsxNjIsMzAgQEAgc3RhdGljIGludCBpbnRlbF9wbGFu ZV9hdG9taWNfY2hlY2soc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4+PiAgIAkJCSgxIDw8IGRy bV9wbGFuZV9pbmRleChwbGFuZSkpOwo+Pj4gICAJfQo+Pj4KPj4+ICsJaWYgKHN0YXRlLT5mYiAm JiBpbnRlbF9yb3RhdGlvbl85MF9vcl8yNzAoc3RhdGUtPnJvdGF0aW9uKSkgewo+Pj4gKwkJaWYg KCEoc3RhdGUtPmZiLT5tb2RpZmllclswXSA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRCB8fAo+ Pj4gKwkJCXN0YXRlLT5mYi0+bW9kaWZpZXJbMF0gPT0gSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVE KSkgewo+Pj4gKwkJCURSTV9ERUJVR19LTVMoIlkvWWYgdGlsaW5nIHJlcXVpcmVkIGZvciA5MC8y NzAhXG4iKTsKPj4+ICsJCQlyZXR1cm4gLUVJTlZBTDsKPj4+ICsJCX0KPj4+ICsKPj4+ICsJCS8q Cj4+PiArCQkgKiA5MC8yNzAgaXMgbm90IGFsbG93ZWQgd2l0aCBSR0I2NCAxNjoxNjoxNjoxNiwK Pj4+ICsJCSAqIFJHQiAxNi1iaXQgNTo2OjUsIGFuZCBJbmRleGVkIDgtYml0Lgo+Pj4gKwkJICog VEJEOiBBZGQgUkdCNjQgY2FzZSBvbmNlIGl0cyBhZGRlZCBpbiBzdXBwb3J0ZWQgZm9ybWF0IGxp c3QuCj4+PiArCQkgKi8KPj4+ICsJCXN3aXRjaCAoc3RhdGUtPmZiLT5waXhlbF9mb3JtYXQpIHsK Pj4+ICsJCWNhc2UgRFJNX0ZPUk1BVF9DODoKPj4+ICsJCWNhc2UgRFJNX0ZPUk1BVF9SR0I1NjU6 Cj4+PiArCQkJRFJNX0RFQlVHX0tNUygiVW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0ICVzIGZvciA5 MC8yNzAhXG4iLAo+Pj4gKwkJCQkJZHJtX2dldF9mb3JtYXRfbmFtZShzdGF0ZS0+ZmItPnBpeGVs X2Zvcm1hdCkpOwo+Pj4gKwkJCXJldHVybiAtRUlOVkFMOwo+Pj4gKwo+Pj4gKwkJZGVmYXVsdDoK Pj4+ICsJCQlicmVhazsKPj4+ICsJCX0KPj4+ICsJfQo+Pj4gKwo+Pj4gICAJcmV0dXJuIGludGVs X3BsYW5lLT5jaGVja19wbGFuZShwbGFuZSwgaW50ZWxfc3RhdGUpOwo+Pj4gICB9Cj4+Pgo+Pj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+Pj4gaW5kZXggZjBiYmMyMi4uNGRlNTQ0 YyAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4+PiBAQCAtMjMx MSwxMyArMjMxMSw2IEBAIGludGVsX2ZpbGxfZmJfZ2d0dF92aWV3KHN0cnVjdCBpOTE1X2dndHRf dmlldyAqdmlldywgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCj4+PiAgIAlpbmZvLT5waXRj aCA9IGZiLT5waXRjaGVzWzBdOwo+Pj4gICAJaW5mby0+ZmJfbW9kaWZpZXIgPSBmYi0+bW9kaWZp ZXJbMF07Cj4+Pgo+Pj4gLQlpZiAoIShpbmZvLT5mYl9tb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9N T0RfWV9USUxFRCB8fAo+Pj4gLQkgICAgICBpbmZvLT5mYl9tb2RpZmllciA9PSBJOTE1X0ZPUk1B VF9NT0RfWWZfVElMRUQpKSB7Cj4+PiAtCQlEUk1fREVCVUdfS01TKAo+Pj4gLQkJCSAgICAgICJZ IG9yIFlmIHRpbGluZyBpcyBuZWVkZWQgZm9yIDkwLzI3MCByb3RhdGlvbiFcbiIpOwo+Pj4gLQkJ cmV0dXJuIC1FSU5WQUw7Cj4+PiAtCX0KPj4+IC0KPj4+ICAgCXJldHVybiAwOwo+Pj4gICB9Cj4+ Pgo+Pj4gQEAgLTI5MTksOCArMjkxMiwxMiBAQCBzdGF0aWMgdm9pZCBza3lsYWtlX3VwZGF0ZV9w cmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPj4+ICAgCXN0cnVjdCBpbnRlbF9j cnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPj4+ICAgCXN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4+PiAgIAlpbnQgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7 Cj4+PiAtCXUzMiBwbGFuZV9jdGwsIHN0cmlkZV9kaXY7Cj4+PiArCXUzMiBwbGFuZV9jdGwsIHN0 cmlkZV9kaXYsIHN0cmlkZTsKPj4+ICsJdTMyIHRpbGVfaGVpZ2h0LCBwbGFuZV9vZmZzZXQsIHBs YW5lX3NpemU7Cj4+PiArCXVuc2lnbmVkIGludCByb3RhdGlvbjsKPj4+ICsJaW50IHhfb2Zmc2V0 LCB5X29mZnNldDsKPj4+ICAgCXVuc2lnbmVkIGxvbmcgc3VyZl9hZGRyOwo+Pj4gKwlzdHJ1Y3Qg ZHJtX3BsYW5lICpwbGFuZTsKPj4+Cj4+PiAgIAlpZiAoIWludGVsX2NydGMtPnByaW1hcnlfZW5h YmxlZCkgewo+Pj4gICAJCUk5MTVfV1JJVEUoUExBTkVfQ1RMKHBpcGUsIDApLCAwKTsKPj4+IEBA IC0yOTgxLDIxICsyOTc4LDUxIEBAIHN0YXRpYyB2b2lkIHNreWxha2VfdXBkYXRlX3ByaW1hcnlf cGxhbmUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+Pj4gICAJfQo+Pj4KPj4+ICAgCXBsYW5lX2N0 bCB8PSBQTEFORV9DVExfUExBTkVfR0FNTUFfRElTQUJMRTsKPj4+IC0JaWYgKGNydGMtPnByaW1h cnktPnN0YXRlLT5yb3RhdGlvbiA9PSBCSVQoRFJNX1JPVEFURV8xODApKQo+Pj4gKwo+Pj4gKwlw bGFuZSA9IGNydGMtPnByaW1hcnk7Cj4+PiArCXJvdGF0aW9uID0gcGxhbmUtPnN0YXRlLT5yb3Rh dGlvbjsKPj4+ICsJc3dpdGNoIChyb3RhdGlvbikgewo+Pj4gKwljYXNlIEJJVChEUk1fUk9UQVRF XzkwKToKPj4+ICsJCXBsYW5lX2N0bCB8PSBQTEFORV9DVExfUk9UQVRFXzkwOwo+Pj4gKwkJYnJl YWs7Cj4+PiArCj4+PiArCWNhc2UgQklUKERSTV9ST1RBVEVfMTgwKToKPj4+ICAgCQlwbGFuZV9j dGwgfD0gUExBTkVfQ1RMX1JPVEFURV8xODA7Cj4+PiArCQlicmVhazsKPj4+ICsKPj4+ICsJY2Fz ZSBCSVQoRFJNX1JPVEFURV8yNzApOgo+Pj4gKwkJcGxhbmVfY3RsIHw9IFBMQU5FX0NUTF9ST1RB VEVfMjcwOwo+Pj4gKwkJYnJlYWs7Cj4+PiArCX0KPj4+Cj4+PiAgIAlvYmogPSBpbnRlbF9mYl9v YmooZmIpOwo+Pj4gICAJc3RyaWRlX2RpdiA9IGludGVsX2ZiX3N0cmlkZV9hbGlnbm1lbnQoZGV2 LCBmYi0+bW9kaWZpZXJbMF0sCj4+PiAgIAkJCQkJICAgICAgIGZiLT5waXhlbF9mb3JtYXQpOwo+ Pj4gLQlzdXJmX2FkZHIgPSBpbnRlbF9wbGFuZV9vYmpfb2Zmc2V0KHRvX2ludGVsX3BsYW5lKGNy dGMtPnByaW1hcnkpLCBvYmopOwo+Pj4gKwlzdXJmX2FkZHIgPSBpbnRlbF9wbGFuZV9vYmpfb2Zm c2V0KHRvX2ludGVsX3BsYW5lKHBsYW5lKSwgb2JqKTsKPj4+ICsKPj4+ICsJaWYgKGludGVsX3Jv dGF0aW9uXzkwX29yXzI3MChyb3RhdGlvbikpIHsKPj4+ICsJCS8qIHN0cmlkZSA9IFN1cmZhY2Ug aGVpZ2h0IGluIHRpbGVzICovCj4+PiArCQl0aWxlX2hlaWdodCA9IGludGVsX3RpbGVfaGVpZ2h0 KGRldiwgZmItPmJpdHNfcGVyX3BpeGVsLAo+Pj4gKwkJCQkJCWZiLT5tb2RpZmllclswXSk7Cj4+ PiArCQlzdHJpZGUgPSBESVZfUk9VTkRfVVAoZmItPmhlaWdodCwgdGlsZV9oZWlnaHQpOwo+Pj4g KwkJeF9vZmZzZXQgPSBzdHJpZGUgKiB0aWxlX2hlaWdodCAtIHkgLSAocGxhbmUtPnN0YXRlLT5z cmNfaCA+PiAxNik7Cj4+PiArCQl5X29mZnNldCA9IHg7Cj4+PiArCQlwbGFuZV9zaXplID0gKChw bGFuZS0+c3RhdGUtPnNyY193ID4+IDE2KSAtIDEpIDw8IDE2IHwKPj4+ICsJCQkJCSgocGxhbmUt PnN0YXRlLT5zcmNfaCA+PiAxNikgLSAxKTsKPj4+ICsJfSBlbHNlIHsKPj4+ICsJCXN0cmlkZSA9 IGZiLT5waXRjaGVzWzBdIC8gc3RyaWRlX2RpdjsKPj4+ICsJCXhfb2Zmc2V0ID0geDsKPj4+ICsJ CXlfb2Zmc2V0ID0geTsKPj4+ICsJCXBsYW5lX3NpemUgPSAoKHBsYW5lLT5zdGF0ZS0+c3JjX2gg Pj4gMTYpIC0gMSkgPDwgMTYgfAo+Pj4gKwkJCSgocGxhbmUtPnN0YXRlLT5zcmNfdyA+PiAxNikg LSAxKTsKPj4+ICsJfQo+Pj4gKwlwbGFuZV9vZmZzZXQgPSB5X29mZnNldCA8PCAxNiB8IHhfb2Zm c2V0Owo+Pj4KPj4+ICAgCUk5MTVfV1JJVEUoUExBTkVfQ1RMKHBpcGUsIDApLCBwbGFuZV9jdGwp Owo+Pj4gICAJSTkxNV9XUklURShQTEFORV9QT1MocGlwZSwgMCksIDApOwo+Pj4gLQlJOTE1X1dS SVRFKFBMQU5FX09GRlNFVChwaXBlLCAwKSwgKHkgPDwgMTYpIHwgeCk7Cj4+PiAtCUk5MTVfV1JJ VEUoUExBTkVfU0laRShwaXBlLCAwKSwKPj4+IC0JCSAgIChpbnRlbF9jcnRjLT5jb25maWctPnBp cGVfc3JjX2ggLSAxKSA8PCAxNiB8Cj4+PiAtCQkgICAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5waXBl X3NyY193IC0gMSkpOwo+Pj4gLQlJOTE1X1dSSVRFKFBMQU5FX1NUUklERShwaXBlLCAwKSwgZmIt PnBpdGNoZXNbMF0gLyBzdHJpZGVfZGl2KTsKPj4+ICsJSTkxNV9XUklURShQTEFORV9PRkZTRVQo cGlwZSwgMCksIHBsYW5lX29mZnNldCk7Cj4+PiArCUk5MTVfV1JJVEUoUExBTkVfU0laRShwaXBl LCAwKSwgcGxhbmVfc2l6ZSk7Cj4+PiArCUk5MTVfV1JJVEUoUExBTkVfU1RSSURFKHBpcGUsIDAp LCBzdHJpZGUpOwo+Pj4gICAJSTkxNV9XUklURShQTEFORV9TVVJGKHBpcGUsIDApLCBzdXJmX2Fk ZHIpOwo+Pj4KPj4+ICAgCVBPU1RJTkdfUkVBRChQTEFORV9TVVJGKHBpcGUsIDApKTsKPj4+IEBA IC0xMjQwNiwyMyArMTI0MzMsMzIgQEAgc3RhdGljIHN0cnVjdCBkcm1fcGxhbmUgKmludGVsX3By aW1hcnlfcGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4+PiAgIAkJCQkgaW50 ZWxfcHJpbWFyeV9mb3JtYXRzLCBudW1fZm9ybWF0cywKPj4+ICAgCQkJCSBEUk1fUExBTkVfVFlQ RV9QUklNQVJZKTsKPj4+Cj4+PiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA0KSB7Cj4+ PiAtCQlpZiAoIWRldi0+bW9kZV9jb25maWcucm90YXRpb25fcHJvcGVydHkpCj4+PiAtCQkJZGV2 LT5tb2RlX2NvbmZpZy5yb3RhdGlvbl9wcm9wZXJ0eSA9Cj4+PiAtCQkJCWRybV9tb2RlX2NyZWF0 ZV9yb3RhdGlvbl9wcm9wZXJ0eShkZXYsCj4+PiAtCQkJCQkJCUJJVChEUk1fUk9UQVRFXzApIHwK Pj4+IC0JCQkJCQkJQklUKERSTV9ST1RBVEVfMTgwKSk7Cj4+PiAtCQlpZiAoZGV2LT5tb2RlX2Nv bmZpZy5yb3RhdGlvbl9wcm9wZXJ0eSkKPj4+IC0JCQlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0 eSgmcHJpbWFyeS0+YmFzZS5iYXNlLAo+Pj4gLQkJCQlkZXYtPm1vZGVfY29uZmlnLnJvdGF0aW9u X3Byb3BlcnR5LAo+Pj4gLQkJCQlzdGF0ZS0+YmFzZS5yb3RhdGlvbik7Cj4+PiAtCX0KPj4+ICsJ aWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDQpCj4+PiArCQlpbnRlbF9jcmVhdGVfcm90YXRp b25fcHJvcGVydHkoZGV2LCBwcmltYXJ5KTsKPj4+Cj4+PiAgIAlkcm1fcGxhbmVfaGVscGVyX2Fk ZCgmcHJpbWFyeS0+YmFzZSwgJmludGVsX3BsYW5lX2hlbHBlcl9mdW5jcyk7Cj4+Pgo+Pj4gICAJ cmV0dXJuICZwcmltYXJ5LT5iYXNlOwo+Pj4gICB9Cj4+Pgo+Pj4gK3ZvaWQgaW50ZWxfY3JlYXRl X3JvdGF0aW9uX3Byb3BlcnR5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBpbnRlbF9w bGFuZSAqcGxhbmUpCj4+PiArewo+Pj4gKwlpZiAoIWRldi0+bW9kZV9jb25maWcucm90YXRpb25f cHJvcGVydHkpIHsKPj4+ICsJCXVuc2lnbmVkIGxvbmcgZmxhZ3MgPSBCSVQoRFJNX1JPVEFURV8w KSB8Cj4+PiArCQkJQklUKERSTV9ST1RBVEVfMTgwKTsKPj4+ICsKPj4+ICsJCWlmIChJTlRFTF9J TkZPKGRldiktPmdlbiA+PSA5KQo+Pj4gKwkJCWZsYWdzIHw9IEJJVChEUk1fUk9UQVRFXzkwKSB8 IEJJVChEUk1fUk9UQVRFXzI3MCk7Cj4+PiArCj4+PiArCQlkZXYtPm1vZGVfY29uZmlnLnJvdGF0 aW9uX3Byb3BlcnR5ID0KPj4+ICsJCQlkcm1fbW9kZV9jcmVhdGVfcm90YXRpb25fcHJvcGVydHko ZGV2LCBmbGFncyk7Cj4+PiArCX0KPj4+ICsJaWYgKGRldi0+bW9kZV9jb25maWcucm90YXRpb25f cHJvcGVydHkpCj4+PiArCQlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmcGxhbmUtPmJhc2Uu YmFzZSwKPj4+ICsJCQkJZGV2LT5tb2RlX2NvbmZpZy5yb3RhdGlvbl9wcm9wZXJ0eSwKPj4+ICsJ CQkJcGxhbmUtPmJhc2Uuc3RhdGUtPnJvdGF0aW9uKTsKPj4+ICt9Cj4+PiArCj4+PiAgIHN0YXRp YyBpbnQKPj4+ICAgaW50ZWxfY2hlY2tfY3Vyc29yX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBs YW5lLAo+Pj4gICAJCQkgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpzdGF0ZSkKPj4+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oCj4+PiBpbmRleCA4MTFhMWRiLi5kMzIwMjVhIDEwMDY0NAo+Pj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPj4+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4+PiBAQCAtOTk1LDYgKzk5NSwxMiBAQCBpbnRlbF9y b3RhdGlvbl85MF9vcl8yNzAodW5zaWduZWQgaW50IHJvdGF0aW9uKQo+Pj4gICAJcmV0dXJuIHJv dGF0aW9uICYgKEJJVChEUk1fUk9UQVRFXzkwKSB8IEJJVChEUk1fUk9UQVRFXzI3MCkpOwo+Pj4g ICB9Cj4+Pgo+Pj4gK3Vuc2lnbmVkIGludAo+Pj4gK2ludGVsX3RpbGVfaGVpZ2h0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIHVpbnQzMl90IGJpdHNfcGVyX3BpeGVsLAo+Pj4gKwkJICB1aW50NjRf dCBmYl9tb2RpZmllcik7Cj4+PiArdm9pZCBpbnRlbF9jcmVhdGVfcm90YXRpb25fcHJvcGVydHko c3RydWN0IGRybV9kZXZpY2UgKmRldiwKPj4+ICsJCQkJCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxh bmUpOwo+Pj4gKwo+Pj4gICBib29sIGludGVsX3dtX25lZWRfdXBkYXRlKHN0cnVjdCBkcm1fcGxh bmUgKnBsYW5lLAo+Pj4gICAJCQkgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlKTsKPj4+ Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwo+Pj4gaW5kZXggZjQxZTg3Mi4uODNh ZGM5YiAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5j Cj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwo+Pj4gQEAgLTE5 MCwxMCArMTkwLDEzIEBAIHNrbF91cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqZHJtX3Bs YW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4+PiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqID0gaW50ZWxfZmJfb2JqKGZiKTsKPj4+ICAgCWNvbnN0IGludCBwaXBlID0gaW50 ZWxfcGxhbmUtPnBpcGU7Cj4+PiAgIAljb25zdCBpbnQgcGxhbmUgPSBpbnRlbF9wbGFuZS0+cGxh bmUgKyAxOwo+Pj4gLQl1MzIgcGxhbmVfY3RsLCBzdHJpZGVfZGl2Owo+Pj4gKwl1MzIgcGxhbmVf Y3RsLCBzdHJpZGVfZGl2LCBzdHJpZGU7Cj4+PiAgIAlpbnQgcGl4ZWxfc2l6ZSA9IGRybV9mb3Jt YXRfcGxhbmVfY3BwKGZiLT5waXhlbF9mb3JtYXQsIDApOwo+Pj4gICAJY29uc3Qgc3RydWN0IGRy bV9pbnRlbF9zcHJpdGVfY29sb3JrZXkgKmtleSA9ICZpbnRlbF9wbGFuZS0+Y2tleTsKPj4+ICAg CXVuc2lnbmVkIGxvbmcgc3VyZl9hZGRyOwo+Pj4gKwl1MzIgdGlsZV9oZWlnaHQsIHBsYW5lX29m ZnNldCwgcGxhbmVfc2l6ZTsKPj4+ICsJdW5zaWduZWQgaW50IHJvdGF0aW9uOwo+Pj4gKwlpbnQg eF9vZmZzZXQsIHlfb2Zmc2V0Owo+Pj4KPj4+ICAgCXBsYW5lX2N0bCA9IFBMQU5FX0NUTF9FTkFC TEUgfAo+Pj4gICAJCVBMQU5FX0NUTF9QSVBFX0NTQ19FTkFCTEU7Cj4+PiBAQCAtMjU0LDggKzI1 NywyMCBAQCBza2xfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKmRybV9wbGFuZSwgc3Ry dWN0IGRybV9jcnRjICpjcnRjLAo+Pj4gICAJCU1JU1NJTkdfQ0FTRShmYi0+bW9kaWZpZXJbMF0p Owo+Pj4gICAJfQo+Pj4KPj4+IC0JaWYgKGRybV9wbGFuZS0+c3RhdGUtPnJvdGF0aW9uID09IEJJ VChEUk1fUk9UQVRFXzE4MCkpCj4+PiArCXJvdGF0aW9uID0gZHJtX3BsYW5lLT5zdGF0ZS0+cm90 YXRpb247Cj4+PiArCXN3aXRjaCAocm90YXRpb24pIHsKPj4+ICsJY2FzZSBCSVQoRFJNX1JPVEFU RV85MCk6Cj4+PiArCQlwbGFuZV9jdGwgfD0gUExBTkVfQ1RMX1JPVEFURV85MDsKPj4+ICsJCWJy ZWFrOwo+Pj4gKwo+Pj4gKwljYXNlIEJJVChEUk1fUk9UQVRFXzE4MCk6Cj4+PiAgIAkJcGxhbmVf Y3RsIHw9IFBMQU5FX0NUTF9ST1RBVEVfMTgwOwo+Pj4gKwkJYnJlYWs7Cj4+PiArCj4+PiArCWNh c2UgQklUKERSTV9ST1RBVEVfMjcwKToKPj4+ICsJCXBsYW5lX2N0bCB8PSBQTEFORV9DVExfUk9U QVRFXzI3MDsKPj4+ICsJCWJyZWFrOwo+Pj4gKwl9Cj4+Pgo+Pj4gICAJaW50ZWxfdXBkYXRlX3Nw cml0ZV93YXRlcm1hcmtzKGRybV9wbGFuZSwgY3J0Yywgc3JjX3csIHNyY19oLAo+Pj4gICAJCQkJ ICAgICAgIHBpeGVsX3NpemUsIHRydWUsCj4+PiBAQCAtMjgzLDEwICsyOTgsMjYgQEAgc2tsX3Vw ZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpkcm1fcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAq Y3J0YywKPj4+Cj4+PiAgIAlzdXJmX2FkZHIgPSBpbnRlbF9wbGFuZV9vYmpfb2Zmc2V0KGludGVs X3BsYW5lLCBvYmopOwo+Pj4KPj4+IC0JSTkxNV9XUklURShQTEFORV9PRkZTRVQocGlwZSwgcGxh bmUpLCAoeSA8PCAxNikgfCB4KTsKPj4+IC0JSTkxNV9XUklURShQTEFORV9TVFJJREUocGlwZSwg cGxhbmUpLCBmYi0+cGl0Y2hlc1swXSAvIHN0cmlkZV9kaXYpOwo+Pj4gKwlpZiAoaW50ZWxfcm90 YXRpb25fOTBfb3JfMjcwKHJvdGF0aW9uKSkgewo+Pj4gKwkJLyogc3RyaWRlOiBTdXJmYWNlIGhl aWdodCBpbiB0aWxlcyAqLwo+Pj4gKwkJdGlsZV9oZWlnaHQgPSBpbnRlbF90aWxlX2hlaWdodChk ZXYsIGZiLT5iaXRzX3Blcl9waXhlbCwKPj4+ICsJCQkJCQkJZmItPm1vZGlmaWVyWzBdKTsKPj4+ ICsJCXN0cmlkZSA9IERJVl9ST1VORF9VUChmYi0+aGVpZ2h0LCB0aWxlX2hlaWdodCk7Cj4+PiAr CQlwbGFuZV9zaXplID0gKHNyY193IDw8IDE2KSB8IHNyY19oOwo+Pj4gKwkJeF9vZmZzZXQgPSBz dHJpZGUgKiB0aWxlX2hlaWdodCAtIHkgLSAoc3JjX2ggKyAxKTsKPj4+ICsJCXlfb2Zmc2V0ID0g eDsKPj4+ICsJfSBlbHNlIHsKPj4+ICsJCXN0cmlkZSA9IGZiLT5waXRjaGVzWzBdIC8gc3RyaWRl X2RpdjsKPj4+ICsJCXBsYW5lX3NpemUgPSAoc3JjX2ggPDwgMTYpIHwgc3JjX3c7Cj4+PiArCQl4 X29mZnNldCA9IHg7Cj4+PiArCQl5X29mZnNldCA9IHk7Cj4+PiArCX0KPj4+ICsJcGxhbmVfb2Zm c2V0ID0geV9vZmZzZXQgPDwgMTYgfCB4X29mZnNldDsKPj4+ICsKPj4+ICsJSTkxNV9XUklURShQ TEFORV9PRkZTRVQocGlwZSwgcGxhbmUpLCBwbGFuZV9vZmZzZXQpOwo+Pj4gKwlJOTE1X1dSSVRF KFBMQU5FX1NUUklERShwaXBlLCBwbGFuZSksIHN0cmlkZSk7Cj4+PiAgIAlJOTE1X1dSSVRFKFBM QU5FX1BPUyhwaXBlLCBwbGFuZSksIChjcnRjX3kgPDwgMTYpIHwgY3J0Y194KTsKPj4+IC0JSTkx NV9XUklURShQTEFORV9TSVpFKHBpcGUsIHBsYW5lKSwgKGNydGNfaCA8PCAxNikgfCBjcnRjX3cp Owo+Pj4gKwlJOTE1X1dSSVRFKFBMQU5FX1NJWkUocGlwZSwgcGxhbmUpLCBwbGFuZV9zaXplKTsK Pj4+ICAgCUk5MTVfV1JJVEUoUExBTkVfQ1RMKHBpcGUsIHBsYW5lKSwgcGxhbmVfY3RsKTsKPj4+ ICAgCUk5MTVfV1JJVEUoUExBTkVfU1VSRihwaXBlLCBwbGFuZSksIHN1cmZfYWRkcik7Cj4+PiAg IAlQT1NUSU5HX1JFQUQoUExBTkVfU1VSRihwaXBlLCBwbGFuZSkpOwo+Pj4gQEAgLTEzMTAsMTYg KzEzNDEsNyBAQCBpbnRlbF9wbGFuZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVudW0g cGlwZSBwaXBlLCBpbnQgcGxhbmUpCj4+PiAgIAkJZ290byBvdXQ7Cj4+PiAgIAl9Cj4+Pgo+Pj4g LQlpZiAoIWRldi0+bW9kZV9jb25maWcucm90YXRpb25fcHJvcGVydHkpCj4+PiAtCQlkZXYtPm1v ZGVfY29uZmlnLnJvdGF0aW9uX3Byb3BlcnR5ID0KPj4+IC0JCQlkcm1fbW9kZV9jcmVhdGVfcm90 YXRpb25fcHJvcGVydHkoZGV2LAo+Pj4gLQkJCQkJCQkgIEJJVChEUk1fUk9UQVRFXzApIHwKPj4+ IC0JCQkJCQkJICBCSVQoRFJNX1JPVEFURV8xODApKTsKPj4+IC0KPj4+IC0JaWYgKGRldi0+bW9k ZV9jb25maWcucm90YXRpb25fcHJvcGVydHkpCj4+PiAtCQlkcm1fb2JqZWN0X2F0dGFjaF9wcm9w ZXJ0eSgmaW50ZWxfcGxhbmUtPmJhc2UuYmFzZSwKPj4+IC0JCQkJCSAgIGRldi0+bW9kZV9jb25m aWcucm90YXRpb25fcHJvcGVydHksCj4+PiAtCQkJCQkgICBzdGF0ZS0+YmFzZS5yb3RhdGlvbik7 Cj4+PiArCWludGVsX2NyZWF0ZV9yb3RhdGlvbl9wcm9wZXJ0eShkZXYsIGludGVsX3BsYW5lKTsK Pj4+Cj4+PiAgIAlkcm1fcGxhbmVfaGVscGVyX2FkZCgmaW50ZWxfcGxhbmUtPmJhc2UsICZpbnRl bF9wbGFuZV9oZWxwZXJfZnVuY3MpOwo+Pj4KPj4+IC0tCj4+PiAxLjcuMTAuNAo+Pj4KPj4+IF9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+PiBJbnRlbC1n ZnggbWFpbGluZyBsaXN0Cj4+PiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+PiBo dHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cj4+ Cj4+IC0tCj4+IERhbmllbCBWZXR0ZXIKPj4gU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBv cmF0aW9uCj4+IGh0dHA6Ly9ibG9nLmZmd2xsLmNoCj4+IF9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCj4+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPj4gSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+PiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cj4KX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngK