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: Thu, 2 Apr 2015 08:59:33 -0700 Message-ID: <20150402155933.GQ28205@intel.com> References: <1427704497-28344-1-git-send-email-sonika.jindal@intel.com> <1427704497-28344-2-git-send-email-sonika.jindal@intel.com> <20150401182207.GI28205@intel.com> <551CCB6A.40608@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 79AEE6E215 for ; Thu, 2 Apr 2015 08:59:34 -0700 (PDT) Content-Disposition: inline In-Reply-To: <551CCB6A.40608@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Jindal, Sonika" Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBBcHIgMDIsIDIwMTUgYXQgMTA6MjQ6MDJBTSArMDUzMCwgSmluZGFsLCBTb25pa2Eg d3JvdGU6Cj4gCj4gCj4gT24gNC8xLzIwMTUgMTE6NTIgUE0sIE1hdHQgUm9wZXIgd3JvdGU6Cj4g Pk9uIE1vbiwgTWFyIDMwLCAyMDE1IGF0IDAyOjA0OjU3UE0gKzA1MzAsIFNvbmlrYSBKaW5kYWwg d3JvdGU6Cj4gPj52MjogTW92aW5nIGNyZWF0aW9uIG9mIHByb3BlcnR5IGluIGEgZnVuY3Rpb24s IGNoZWNraW5nIGZvciA5MC8yNzAKPiA+PnJvdGF0aW9uIHNpbXVsdGFuZW91c2x5IChDaHJpcykK PiA+PkxldHRpbmcgcHJpbWFyeSBwbGFuZSB0byBiZSBwb3NpdGlvbmVkCj4gPj52MzogQWRkaW5n IGlmL2Vsc2UgZm9yIDkwLzI3MCBhbmQgcmVzdCBwYXJhbXMgcHJvZ3JhbW1pbmcsIGFkZGluZyBj aGVjayBmb3IKPiA+PnBpeGVsX2Zvcm1hdCwgc29tZSBjbGVhbnVwIChyZXZpZXcgY29tbWVudHMp Cj4gPj52NDogQWRkaW5nIHJpZ2h0IHBpeGVsX2Zvcm1hdHMsIHVzaW5nIHNyY18qIHBhcmFtcyBp bnN0ZWFkIG9mIGNydGNfKiBmb3Igb2Zmc2V0Cj4gPj5hbmQgc2l6ZSBwcm9ncmFtbWluZyAoVmls bGUpCj4gPj52NTogUmViYXNlZCBvbiAtbmlnaHRseSBhbmQgVHZydGtvJ3Mgc2VyaWVzIGZvciBn dHQgcmVtYXBwaW5nLgo+ID4+djY6IFJlYmFzZWQgb24gLW5pZ2h0bHkgKFR2cnRrbydzIHNlcmll cyBtZXJnZWQpCj4gPj4KPiA+PlNpZ25lZC1vZmYtYnk6IFNvbmlrYSBKaW5kYWwgPHNvbmlrYS5q aW5kYWxAaW50ZWwuY29tPgo+ID4+LS0tCj4gPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf cmVnLmggICAgICB8ICAgIDIgKwo+ID4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMgfCAgMTAzICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KPiA+PiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgIHwgICAgNiArKwo+ID4+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyAgfCAgIDUyICsrKysrKysrKysrKy0tLS0tCj4g Pj4gIDQgZmlsZXMgY2hhbmdlZCwgMTI5IGluc2VydGlvbnMoKyksIDM0IGRlbGV0aW9ucygtKQo+ ID4+Cj4gPj5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiA+PmluZGV4IGI1MjJlYjYuLjU2NGJiZDUg MTAwNjQ0Cj4gPj4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gPj4rKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gPj5AQCAtNDg1NCw3ICs0ODU0LDkg QEAgZW51bSBza2xfZGlzcF9wb3dlcl93ZWxscyB7Cj4gPj4gICNkZWZpbmUgICBQTEFORV9DVExf QUxQSEFfSFdfUFJFTVVMVElQTFkJKCAgMyA8PCA0KQo+ID4+ICAjZGVmaW5lICAgUExBTkVfQ1RM X1JPVEFURV9NQVNLCQkJMHgzCj4gPj4gICNkZWZpbmUgICBQTEFORV9DVExfUk9UQVRFXzAJCQkw eDAKPiA+PisjZGVmaW5lICAgUExBTkVfQ1RMX1JPVEFURV85MAkJCTB4MQo+ID4+ICAjZGVmaW5l ICAgUExBTkVfQ1RMX1JPVEFURV8xODAJCQkweDIKPiA+PisjZGVmaW5lICAgUExBTkVfQ1RMX1JP VEFURV8yNzAJCQkweDMKPiA+PiAgI2RlZmluZSBfUExBTkVfU1RSSURFXzFfQQkJCTB4NzAxODgK PiA+PiAgI2RlZmluZSBfUExBTkVfU1RSSURFXzJfQQkJCTB4NzAyODgKPiA+PiAgI2RlZmluZSBf UExBTkVfU1RSSURFXzNfQQkJCTB4NzAzODgKPiA+PmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMKPiA+PmluZGV4IGYwYmJjMjIuLjg2ZWUwZjAgMTAwNjQ0Cj4gPj4tLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+PisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4+QEAgLTIzMTgsNiArMjMxOCwyOCBAQCBpbnRlbF9maWxs X2ZiX2dndHRfdmlldyhzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKnZpZXcsIHN0cnVjdCBkcm1fZnJh bWVidWZmZXIgKmZiLAo+ID4+ICAJCXJldHVybiAtRUlOVkFMOwo+ID4+ICAJfQo+ID4+Cj4gPj4r CXN3aXRjaCAoZmItPnBpeGVsX2Zvcm1hdCkgewo+ID4+KwljYXNlIERSTV9GT1JNQVRfWFJHQjg4 ODg6Cj4gPj4rCWNhc2UgRFJNX0ZPUk1BVF9BUkdCODg4ODoKPiA+PisJY2FzZSBEUk1fRk9STUFU X1hCR1I4ODg4Ogo+ID4+KwljYXNlIERSTV9GT1JNQVRfQUJHUjg4ODg6Cj4gPj4rCWNhc2UgRFJN X0ZPUk1BVF9YUkdCMjEwMTAxMDoKPiA+PisJY2FzZSBEUk1fRk9STUFUX0FSR0IyMTAxMDEwOgo+ ID4+KwljYXNlIERSTV9GT1JNQVRfWEJHUjIxMDEwMTA6Cj4gPj4rCWNhc2UgRFJNX0ZPUk1BVF9B QkdSMjEwMTAxMDoKPiA+PisJY2FzZSBEUk1fRk9STUFUX1lVWVY6Cj4gPj4rCWNhc2UgRFJNX0ZP Uk1BVF9ZVllVOgo+ID4+KwljYXNlIERSTV9GT1JNQVRfVVlWWToKPiA+PisJY2FzZSBEUk1fRk9S TUFUX1ZZVVk6Cj4gPj4rCWNhc2UgRFJNX0ZPUk1BVF9OVjEyOgo+ID4+KwkJYnJlYWs7Cj4gPj4r Cj4gPj4rCWRlZmF1bHQ6Cj4gPj4rCQlEUk1fREVCVUdfS01TKCJVbnN1cHBvcnRlZCBwaXhlbCBm b3JtYXQ6JWQgZm9yIDkwLzI3MCByb3RhdGlvbiFcbiIsCj4gPj4rCQkgICAgICBmYi0+cGl4ZWxf Zm9ybWF0KTsKPiA+PisJCXJldHVybiAtRUlOVkFMOwo+ID4+Kwl9Cj4gPgo+ID5TaG91bGRuJ3Qg d2UgYmUgbWF0Y2hpbmcgYWdhaW5zdCB0aGUgbGlzdCBvZiBmb3JtYXRzIHRoZSBwbGFuZSBzdXBw b3J0cwo+ID4od2hpY2ggbWF5IHZhcnkgYnkgcGxhdGZvcm0sIG9yIGJ5IHNwZWNpZmljIHBsYW5l KSByYXRoZXIgdGhhbiB0aGlzCj4gPmdlbmVyaWMgbGlzdD8gIFdlIGFscmVhZHkgc3BlY2lmaWVk IHdoYXQgZm9ybWF0cyB0aGUgcGxhbmUgY2FuIGhhbmRsZSBhdAo+ID5wbGFuZSBpbml0IHRpbWUs IHNvIGl0IHNlZW1zIGxpa2Ugd2hhdCB5b3UnZCByZWFsbHkgd2FudCBpcyBqdXN0IGEgY2FsbAo+ ID50bwo+ID4KPiA+ICAgICBkcm1fcGxhbmVfY2hlY2tfcGl4ZWxfZm9ybWF0KHBsYW5lX3N0YXRl LT5wbGFuZSwgZmItPnBpeGVsX2Zvcm1hdCkKPiA+Cj4gPnRoZW4gZm9sbG93IHRoYXQgdXAgd2l0 aCBleHBsaWNpdCBjaGVja3MgdG8gZXhjbHVkZSBhbnkgZm9ybWF0cyB0aGF0IHdlCj4gPmNhbiBo YW5kbGUgaW4gMC8xODAsIGJ1dCBub3QgaW4gOTAvMjcwLgo+ID4KPiBJIGFtIG5vdCBzdXJlIGhv dyBpdCB3aWxsIGhlbHAuIGRybV9wbGFuZV9jaGVja19waXhlbF9mb3JtYXQgc2hvdWxkCj4gYmUg dXNlZCB0byBjaGVjayB0aGUgcGl4ZWwgZm9ybWF0IG9mIHRoZSBmYiB3aGljaCB3ZSBzaG91bGQg YmUgZG9pbmcKPiBpbiBzb21lIC1jaGVjayBmdW5jdGlvbnMgKEkgZG9uJ3QgdGhpbmsgd2UgZG8g dGhhdCByaWdodCBub3c/KQo+IGFnYWluc3Qgd2hhdCBpcyBzdXBwb3J0ZWQgYnkgdGhlIHBsYW5l Lgo+IEJ1dCB0byBjaGVjayBmb3IgdGhlIGZvcm1hdHMgd2hpY2ggYXJlIGFsbG93ZWQgZm9yIDkw LzI3MCwgd2Ugd291bGQKPiBuZWVkIHRoaXMga2luZCBvZiBleHBsaWNpdCBjaGVjay4KClJpZ2h0 LCBJIGd1ZXNzIHRoZXJlIGFyZSB0d28gYXNwZWN0cyBoZXJlLiAgRmlyc3QsIHdlIG5lZWQgdG8g cHJvcGVybHkKdGVzdCBmb3IgYWNjZXB0YWJsZSBwaXhlbCBmb3JtYXRzIGZvciB0aGUgcGxhbmUg aW4gZ2VuZXJhbDsgYXQgdGhlCm1vbWVudCB0aGUgRFJNIGNvcmUgc2V0cGxhbmUoKSB0ZXN0cyB0 aGlzLCBidXQgaWYgd2UgdXNlIHRoZSBhdG9taWMKaW9jdGwgaXQgbmV2ZXIgZ2V0cyBjaGVja2Vk ICh3aGljaCBpcyBhIGJ1ZykuICBTbyBhcyB5b3Ugc2F5LCB3ZSBuZWVkIGEKdGVzdCBpbiBhIF9j aGVjaygpIGZ1bmN0aW9uIHRvIHZlcmlmeSB0aGlzLiAgV2UgcHJvYmFibHkgYWxzbyBuZWVkIHRv CmFkZCBhbiBpLWctdCB0ZXN0IGZvciBpdCB0b28uCgpPbmNlIHdlIGtub3cgdGhhdCB0aGUgcGl4 ZWwgZm9ybWF0IGlzIHZhbGlkIGluIGdlbmVyYWwsIGl0IG1ha2VzIHNlbnNlCnRvIGhhdmUgYSBz aW1wbGVyIHRlc3QgdG8gcmVqZWN0IHNvbWUgc3Vic2V0IG9mIHRob3NlIGZvcm1hdHMgaWZmIHdl Cm5vdGljZSB3ZSdyZSBkb2luZyA5MC8yNzAgcm90YXRpb24uICBNYXliZSBpdCdzIG5vdCByZWFs bHkgYSBiaWcgZGVhbCwKYnV0IGl0IHNlZW1zIGxpa2UgdGhhdCdzIGEgbGl0dGxlIGVhc2llciB0 byB1bmRlcnN0YW5kIGFuZCB2ZXJpZnkgdGhhbgpoYXZpbmcgdHdvIGNvbXBsZXRlbHkgc2VwYXJh dGUgbGlzdHMsIGVzcGVjaWFsbHkgd2hlbiBmdXR1cmUgcGxhdGZvcm1zCm1heSBzdXBwb3J0IGRp ZmZlcmVudCBmb3JtYXRzLCBvciBldmVuIGRpZmZlcmVudCBwbGFuZXMgb2YgdGhlIHNhbWUKcGxh dGZvcm0gaGF2ZSB2YXJ5aW5nIHBpeGVsIGZvcm1hdCBjYXBhYmlsaXRpZXMuCgoKTWF0dAoKPiA+ SSdkIGFsc28gbW92ZSB0aGlzIGNoZWNrIHRvIGludGVsX3BsYW5lX2F0b21pY19jaGVjaygpLCBz aW5jZSB0aGUKPiA+J2NoZWNrJyBjb2RlIHBhdGggaXMgd2hlcmUgSSdkIHVzdWFsbHkgZ28gbG9v a2luZyBmb3IgdGhlc2UgdHlwZXMgb2YKPiA+Y2hlY2tzOyB0aGUgZnVuY3Rpb24geW91J3ZlIGdv dCBpdCBpbiBhdCB0aGUgbW9tZW50IGdldHMgY2FsbGVkIGZyb20gdGhlCj4gPidwcmVwYXJlJyBz dGVwIHdoaWNoIHdvcmtzIGFzIHdlbGwsIGJ1dCBzZWVtcyBhIGJpdCBsZXNzIG9idmlvdXMuCj4g Pgo+IFllcywgSSBhZ3JlZSwgYnV0IHRoaXMgaXMgb24gdG9wIG9mIFR2cnRrbydzIHBhdGNoIGZv ciBzZWNvbmRhcnkKPiBidWZmZXIgbWFwcGluZyB3aGVyZSBiYXNlZCB1cG9uIHRpbGluZyBhbmQg cGl4ZWwgZm9ybWF0IHdlIGFyZQo+IGFsbG93aW5nIHRoZSByb3RhdGVkIGd0dC4KPiAKPiBUdnJ0 a28sCj4gQ2FuIHRoZXNlIGJlIG1vdmVkIHRvIHRoZSBpbnRlbF9wbGFuZV9hdG9taWNfY2hlY2so KQo+IAo+ID4+Kwo+ID4+ICAJcmV0dXJuIDA7Cj4gPj4gIH0KPiA+Pgo+ID4+QEAgLTI5MTksOCAr Mjk0MSwxMiBAQCBzdGF0aWMgdm9pZCBza3lsYWtlX3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVj dCBkcm1fY3J0YyAqY3J0YywKPiA+PiAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0g dG9faW50ZWxfY3J0YyhjcnRjKTsKPiA+PiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv Ymo7Cj4gPj4gIAlpbnQgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7Cj4gPj4tCXUzMiBwbGFuZV9j dGwsIHN0cmlkZV9kaXY7Cj4gPj4rCXUzMiBwbGFuZV9jdGwsIHN0cmlkZV9kaXYsIHN0cmlkZTsK PiA+PisJdTMyIHRpbGVfaGVpZ2h0LCBwbGFuZV9vZmZzZXQsIHBsYW5lX3NpemU7Cj4gPj4rCXVu c2lnbmVkIGludCByb3RhdGlvbjsKPiA+PisJaW50IHhfb2Zmc2V0LCB5X29mZnNldDsKPiA+PiAg CXVuc2lnbmVkIGxvbmcgc3VyZl9hZGRyOwo+ID4+KwlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsK PiA+Pgo+ID4+ICAJaWYgKCFpbnRlbF9jcnRjLT5wcmltYXJ5X2VuYWJsZWQpIHsKPiA+PiAgCQlJ OTE1X1dSSVRFKFBMQU5FX0NUTChwaXBlLCAwKSwgMCk7Cj4gPj5AQCAtMjk4MSwyMSArMzAwNyw1 MSBAQCBzdGF0aWMgdm9pZCBza3lsYWtlX3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1f Y3J0YyAqY3J0YywKPiA+PiAgCX0KPiA+Pgo+ID4+ICAJcGxhbmVfY3RsIHw9IFBMQU5FX0NUTF9Q TEFORV9HQU1NQV9ESVNBQkxFOwo+ID4+LQlpZiAoY3J0Yy0+cHJpbWFyeS0+c3RhdGUtPnJvdGF0 aW9uID09IEJJVChEUk1fUk9UQVRFXzE4MCkpCj4gPj4rCj4gPj4rCXBsYW5lID0gY3J0Yy0+cHJp bWFyeTsKPiA+PisJcm90YXRpb24gPSBwbGFuZS0+c3RhdGUtPnJvdGF0aW9uOwo+ID4+Kwlzd2l0 Y2ggKHJvdGF0aW9uKSB7Cj4gPj4rCWNhc2UgQklUKERSTV9ST1RBVEVfOTApOgo+ID4+KwkJcGxh bmVfY3RsIHw9IFBMQU5FX0NUTF9ST1RBVEVfOTA7Cj4gPj4rCQlicmVhazsKPiA+PisKPiA+PisJ Y2FzZSBCSVQoRFJNX1JPVEFURV8xODApOgo+ID4+ICAJCXBsYW5lX2N0bCB8PSBQTEFORV9DVExf Uk9UQVRFXzE4MDsKPiA+PisJCWJyZWFrOwo+ID4+Kwo+ID4+KwljYXNlIEJJVChEUk1fUk9UQVRF XzI3MCk6Cj4gPj4rCQlwbGFuZV9jdGwgfD0gUExBTkVfQ1RMX1JPVEFURV8yNzA7Cj4gPj4rCQli cmVhazsKPiA+PisJfQo+ID4+Cj4gPj4gIAlvYmogPSBpbnRlbF9mYl9vYmooZmIpOwo+ID4+ICAJ c3RyaWRlX2RpdiA9IGludGVsX2ZiX3N0cmlkZV9hbGlnbm1lbnQoZGV2LCBmYi0+bW9kaWZpZXJb MF0sCj4gPj4gIAkJCQkJICAgICAgIGZiLT5waXhlbF9mb3JtYXQpOwo+ID4KPiA+TWlub3Igbml0 OyBjYW4gd2UgbW92ZSB0aGlzIGRvd24gaW5zaWRlIHRoZSAnZWxzZScgYnJhbmNoIHRvIG1ha2Ug aXQKPiA+YXBwYXJlbnQgaG93IHRoaXMgc2VydmVzIGEgcGFyYWxsZWwgcm9sZSB0byAndGlsZV9o ZWlnaHQnIGZyb20gdGhlICdpZicKPiA+YnJhbmNoLgo+ID4KPiBZZXMgc3VyZS4KPiA+Cj4gPj4t CXN1cmZfYWRkciA9IGludGVsX3BsYW5lX29ial9vZmZzZXQodG9faW50ZWxfcGxhbmUoY3J0Yy0+ cHJpbWFyeSksIG9iaik7Cj4gPj4rCXN1cmZfYWRkciA9IGludGVsX3BsYW5lX29ial9vZmZzZXQo dG9faW50ZWxfcGxhbmUocGxhbmUpLCBvYmopOwo+ID4+Kwo+ID4+KwlpZiAocm90YXRpb24gJiAo QklUKERSTV9ST1RBVEVfOTApIHwgQklUKERSTV9ST1RBVEVfMjcwKSkpIHsKPiA+Cj4gPk1pZ2h0 IGFzIHdlbGwgdXNlIHRoZSBpbnRlbF9yb3RhdGlvbl85MF9vcl8yNzAoKSBmdW5jdGlvbiBzaW5j ZSB3ZSBoYXZlCj4gPml0LiAgU2FtZSBjb21tZW50IGZvciB0aGUgc3ByaXRlIHBhdGggZmFydGhl ciBkb3duLgo+ID4KPiBTdXJlLgo+IAo+IFJlZ2FyZHMsCj4gU29uaWthCj4gPj4rCQkvKiBzdHJp ZGUgPSBTdXJmYWNlIGhlaWdodCBpbiB0aWxlcyAqLwo+ID4+KwkJdGlsZV9oZWlnaHQgPSBpbnRl bF90aWxlX2hlaWdodChkZXYsIGZiLT5iaXRzX3Blcl9waXhlbCwKPiA+PisJCQkJCQlmYi0+bW9k aWZpZXJbMF0pOwo+ID4+KwkJc3RyaWRlID0gRElWX1JPVU5EX1VQKGZiLT5oZWlnaHQsIHRpbGVf aGVpZ2h0KTsKPiA+PisJCXhfb2Zmc2V0ID0gc3RyaWRlICogdGlsZV9oZWlnaHQgLSB5IC0gKHBs YW5lLT5zdGF0ZS0+c3JjX2ggPj4gMTYpOwo+ID4+KwkJeV9vZmZzZXQgPSB4Owo+ID4+KwkJcGxh bmVfc2l6ZSA9ICgocGxhbmUtPnN0YXRlLT5zcmNfdyA+PiAxNikgLSAxKSA8PCAxNiB8Cj4gPj4r CQkJCQkoKHBsYW5lLT5zdGF0ZS0+c3JjX2ggPj4gMTYpIC0gMSk7Cj4gPj4rCX0gZWxzZSB7Cj4g Pj4rCQlzdHJpZGUgPSBmYi0+cGl0Y2hlc1swXSAvIHN0cmlkZV9kaXY7Cj4gPj4rCQl4X29mZnNl dCA9IHg7Cj4gPj4rCQl5X29mZnNldCA9IHk7Cj4gPj4rCQlwbGFuZV9zaXplID0gKChwbGFuZS0+ c3RhdGUtPnNyY19oID4+IDE2KSAtIDEpIDw8IDE2IHwKPiA+PisJCQkoKHBsYW5lLT5zdGF0ZS0+ c3JjX3cgPj4gMTYpIC0gMSk7Cj4gPj4rCX0KPiA+PisJcGxhbmVfb2Zmc2V0ID0geV9vZmZzZXQg PDwgMTYgfCB4X29mZnNldDsKPiA+Pgo+ID4+ICAJSTkxNV9XUklURShQTEFORV9DVEwocGlwZSwg MCksIHBsYW5lX2N0bCk7Cj4gPj4gIAlJOTE1X1dSSVRFKFBMQU5FX1BPUyhwaXBlLCAwKSwgMCk7 Cj4gPj4tCUk5MTVfV1JJVEUoUExBTkVfT0ZGU0VUKHBpcGUsIDApLCAoeSA8PCAxNikgfCB4KTsK PiA+Pi0JSTkxNV9XUklURShQTEFORV9TSVpFKHBpcGUsIDApLAo+ID4+LQkJICAgKGludGVsX2Ny dGMtPmNvbmZpZy0+cGlwZV9zcmNfaCAtIDEpIDw8IDE2IHwKPiA+Pi0JCSAgIChpbnRlbF9jcnRj LT5jb25maWctPnBpcGVfc3JjX3cgLSAxKSk7Cj4gPj4tCUk5MTVfV1JJVEUoUExBTkVfU1RSSURF KHBpcGUsIDApLCBmYi0+cGl0Y2hlc1swXSAvIHN0cmlkZV9kaXYpOwo+ID4+KwlJOTE1X1dSSVRF KFBMQU5FX09GRlNFVChwaXBlLCAwKSwgcGxhbmVfb2Zmc2V0KTsKPiA+PisJSTkxNV9XUklURShQ TEFORV9TSVpFKHBpcGUsIDApLCBwbGFuZV9zaXplKTsKPiA+PisJSTkxNV9XUklURShQTEFORV9T VFJJREUocGlwZSwgMCksIHN0cmlkZSk7Cj4gPj4gIAlJOTE1X1dSSVRFKFBMQU5FX1NVUkYocGlw ZSwgMCksIHN1cmZfYWRkcik7Cj4gPj4KPiA+PiAgCVBPU1RJTkdfUkVBRChQTEFORV9TVVJGKHBp cGUsIDApKTsKPiA+PkBAIC0xMjQwNiwyMyArMTI0NjIsMzIgQEAgc3RhdGljIHN0cnVjdCBkcm1f cGxhbmUgKmludGVsX3ByaW1hcnlfcGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs Cj4gPj4gIAkJCQkgaW50ZWxfcHJpbWFyeV9mb3JtYXRzLCBudW1fZm9ybWF0cywKPiA+PiAgCQkJ CSBEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsKPiA+Pgo+ID4+LQlpZiAoSU5URUxfSU5GTyhkZXYp LT5nZW4gPj0gNCkgewo+ID4+LQkJaWYgKCFkZXYtPm1vZGVfY29uZmlnLnJvdGF0aW9uX3Byb3Bl cnR5KQo+ID4+LQkJCWRldi0+bW9kZV9jb25maWcucm90YXRpb25fcHJvcGVydHkgPQo+ID4+LQkJ CQlkcm1fbW9kZV9jcmVhdGVfcm90YXRpb25fcHJvcGVydHkoZGV2LAo+ID4+LQkJCQkJCQlCSVQo RFJNX1JPVEFURV8wKSB8Cj4gPj4tCQkJCQkJCUJJVChEUk1fUk9UQVRFXzE4MCkpOwo+ID4+LQkJ aWYgKGRldi0+bW9kZV9jb25maWcucm90YXRpb25fcHJvcGVydHkpCj4gPj4tCQkJZHJtX29iamVj dF9hdHRhY2hfcHJvcGVydHkoJnByaW1hcnktPmJhc2UuYmFzZSwKPiA+Pi0JCQkJZGV2LT5tb2Rl X2NvbmZpZy5yb3RhdGlvbl9wcm9wZXJ0eSwKPiA+Pi0JCQkJc3RhdGUtPmJhc2Uucm90YXRpb24p Owo+ID4+LQl9Cj4gPj4rCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA0KQo+ID4+KwkJaW50 ZWxfY3JlYXRlX3JvdGF0aW9uX3Byb3BlcnR5KGRldiwgcHJpbWFyeSk7Cj4gPj4KPiA+PiAgCWRy bV9wbGFuZV9oZWxwZXJfYWRkKCZwcmltYXJ5LT5iYXNlLCAmaW50ZWxfcGxhbmVfaGVscGVyX2Z1 bmNzKTsKPiA+Pgo+ID4+ICAJcmV0dXJuICZwcmltYXJ5LT5iYXNlOwo+ID4+ICB9Cj4gPj4KPiA+ Pit2b2lkIGludGVsX2NyZWF0ZV9yb3RhdGlvbl9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCBzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lKQo+ID4+K3sKPiA+PisJaWYgKCFkZXYtPm1v ZGVfY29uZmlnLnJvdGF0aW9uX3Byb3BlcnR5KSB7Cj4gPj4rCQl1bnNpZ25lZCBsb25nIGZsYWdz ID0gQklUKERSTV9ST1RBVEVfMCkgfAo+ID4+KwkJCUJJVChEUk1fUk9UQVRFXzE4MCk7Cj4gPj4r Cj4gPj4rCQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkKPiA+PisJCQlmbGFncyB8PSBC SVQoRFJNX1JPVEFURV85MCkgfCBCSVQoRFJNX1JPVEFURV8yNzApOwo+ID4+Kwo+ID4+KwkJZGV2 LT5tb2RlX2NvbmZpZy5yb3RhdGlvbl9wcm9wZXJ0eSA9Cj4gPj4rCQkJZHJtX21vZGVfY3JlYXRl X3JvdGF0aW9uX3Byb3BlcnR5KGRldiwgZmxhZ3MpOwo+ID4+Kwl9Cj4gPj4rCWlmIChkZXYtPm1v ZGVfY29uZmlnLnJvdGF0aW9uX3Byb3BlcnR5KQo+ID4+KwkJZHJtX29iamVjdF9hdHRhY2hfcHJv cGVydHkoJnBsYW5lLT5iYXNlLmJhc2UsCj4gPj4rCQkJCWRldi0+bW9kZV9jb25maWcucm90YXRp b25fcHJvcGVydHksCj4gPj4rCQkJCXBsYW5lLT5iYXNlLnN0YXRlLT5yb3RhdGlvbik7Cj4gPj4r fQo+ID4+Kwo+ID4+ICBzdGF0aWMgaW50Cj4gPj4gIGludGVsX2NoZWNrX2N1cnNvcl9wbGFuZShz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiA+PiAgCQkJIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0 ZSAqc3RhdGUpCj4gPj5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4+aW5kZXggODExYTFkYi4u ZDMyMDI1YSAxMDA2NDQKPiA+Pi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5o Cj4gPj4rKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4+QEAgLTk5NSw2 ICs5OTUsMTIgQEAgaW50ZWxfcm90YXRpb25fOTBfb3JfMjcwKHVuc2lnbmVkIGludCByb3RhdGlv bikKPiA+PiAgCXJldHVybiByb3RhdGlvbiAmIChCSVQoRFJNX1JPVEFURV85MCkgfCBCSVQoRFJN X1JPVEFURV8yNzApKTsKPiA+PiAgfQo+ID4+Cj4gPj4rdW5zaWduZWQgaW50Cj4gPj4raW50ZWxf dGlsZV9oZWlnaHQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdWludDMyX3QgYml0c19wZXJfcGl4 ZWwsCj4gPj4rCQkgIHVpbnQ2NF90IGZiX21vZGlmaWVyKTsKPiA+Pit2b2lkIGludGVsX2NyZWF0 ZV9yb3RhdGlvbl9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4+KwkJCQkJc3Ry dWN0IGludGVsX3BsYW5lICpwbGFuZSk7Cj4gPj4rCj4gPj4gIGJvb2wgaW50ZWxfd21fbmVlZF91 cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gPj4gIAkJCSAgc3RydWN0IGRybV9wbGFu ZV9zdGF0ZSAqc3RhdGUpOwo+ID4+Cj4gPj5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfc3ByaXRlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwo+ ID4+aW5kZXggZjQxZTg3Mi4uNjVlYjE0NyAxMDA2NDQKPiA+Pi0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gPj4rKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9zcHJpdGUuYwo+ID4+QEAgLTE5MCwxMCArMTkwLDEzIEBAIHNrbF91cGRhdGVfcGxhbmUoc3Ry dWN0IGRybV9wbGFuZSAqZHJtX3BsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gPj4gIAlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gaW50ZWxfZmJfb2JqKGZiKTsKPiA+PiAg CWNvbnN0IGludCBwaXBlID0gaW50ZWxfcGxhbmUtPnBpcGU7Cj4gPj4gIAljb25zdCBpbnQgcGxh bmUgPSBpbnRlbF9wbGFuZS0+cGxhbmUgKyAxOwo+ID4+LQl1MzIgcGxhbmVfY3RsLCBzdHJpZGVf ZGl2Owo+ID4+Kwl1MzIgcGxhbmVfY3RsLCBzdHJpZGVfZGl2LCBzdHJpZGU7Cj4gPj4gIAlpbnQg cGl4ZWxfc2l6ZSA9IGRybV9mb3JtYXRfcGxhbmVfY3BwKGZiLT5waXhlbF9mb3JtYXQsIDApOwo+ ID4+ICAJY29uc3Qgc3RydWN0IGRybV9pbnRlbF9zcHJpdGVfY29sb3JrZXkgKmtleSA9ICZpbnRl bF9wbGFuZS0+Y2tleTsKPiA+PiAgCXVuc2lnbmVkIGxvbmcgc3VyZl9hZGRyOwo+ID4+Kwl1MzIg dGlsZV9oZWlnaHQsIHBsYW5lX29mZnNldCwgcGxhbmVfc2l6ZTsKPiA+PisJdW5zaWduZWQgaW50 IHJvdGF0aW9uOwo+ID4+KwlpbnQgeF9vZmZzZXQsIHlfb2Zmc2V0Owo+ID4+Cj4gPj4gIAlwbGFu ZV9jdGwgPSBQTEFORV9DVExfRU5BQkxFIHwKPiA+PiAgCQlQTEFORV9DVExfUElQRV9DU0NfRU5B QkxFOwo+ID4+QEAgLTI1NCw4ICsyNTcsMjAgQEAgc2tsX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJt X3BsYW5lICpkcm1fcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiA+PiAgCQlNSVNTSU5H X0NBU0UoZmItPm1vZGlmaWVyWzBdKTsKPiA+PiAgCX0KPiA+Pgo+ID4+LQlpZiAoZHJtX3BsYW5l LT5zdGF0ZS0+cm90YXRpb24gPT0gQklUKERSTV9ST1RBVEVfMTgwKSkKPiA+PisJcm90YXRpb24g PSBkcm1fcGxhbmUtPnN0YXRlLT5yb3RhdGlvbjsKPiA+PisJc3dpdGNoIChyb3RhdGlvbikgewo+ ID4+KwljYXNlIEJJVChEUk1fUk9UQVRFXzkwKToKPiA+PisJCXBsYW5lX2N0bCB8PSBQTEFORV9D VExfUk9UQVRFXzkwOwo+ID4+KwkJYnJlYWs7Cj4gPj4rCj4gPj4rCWNhc2UgQklUKERSTV9ST1RB VEVfMTgwKToKPiA+PiAgCQlwbGFuZV9jdGwgfD0gUExBTkVfQ1RMX1JPVEFURV8xODA7Cj4gPj4r CQlicmVhazsKPiA+PisKPiA+PisJY2FzZSBCSVQoRFJNX1JPVEFURV8yNzApOgo+ID4+KwkJcGxh bmVfY3RsIHw9IFBMQU5FX0NUTF9ST1RBVEVfMjcwOwo+ID4+KwkJYnJlYWs7Cj4gPj4rCX0KPiA+ Pgo+ID4+ICAJaW50ZWxfdXBkYXRlX3Nwcml0ZV93YXRlcm1hcmtzKGRybV9wbGFuZSwgY3J0Yywg c3JjX3csIHNyY19oLAo+ID4+ICAJCQkJICAgICAgIHBpeGVsX3NpemUsIHRydWUsCj4gPj5AQCAt MjgzLDEwICsyOTgsMjYgQEAgc2tsX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpkcm1f cGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiA+Pgo+ID4+ICAJc3VyZl9hZGRyID0gaW50 ZWxfcGxhbmVfb2JqX29mZnNldChpbnRlbF9wbGFuZSwgb2JqKTsKPiA+Pgo+ID4+LQlJOTE1X1dS SVRFKFBMQU5FX09GRlNFVChwaXBlLCBwbGFuZSksICh5IDw8IDE2KSB8IHgpOwo+ID4+LQlJOTE1 X1dSSVRFKFBMQU5FX1NUUklERShwaXBlLCBwbGFuZSksIGZiLT5waXRjaGVzWzBdIC8gc3RyaWRl X2Rpdik7Cj4gPj4rCWlmIChyb3RhdGlvbiAmIChCSVQoRFJNX1JPVEFURV85MCkgfCBCSVQoRFJN X1JPVEFURV8yNzApKSkgewo+ID4+KwkJLyogc3RyaWRlOiBTdXJmYWNlIGhlaWdodCBpbiB0aWxl cyAqLwo+ID4+KwkJdGlsZV9oZWlnaHQgPSBpbnRlbF90aWxlX2hlaWdodChkZXYsIGZiLT5iaXRz X3Blcl9waXhlbCwKPiA+PisJCQkJCQkJZmItPm1vZGlmaWVyWzBdKTsKPiA+PisJCXN0cmlkZSA9 IERJVl9ST1VORF9VUChmYi0+aGVpZ2h0LCB0aWxlX2hlaWdodCk7Cj4gPj4rCQlwbGFuZV9zaXpl ID0gKHNyY193IDw8IDE2KSB8IHNyY19oOwo+ID4+KwkJeF9vZmZzZXQgPSBzdHJpZGUgKiB0aWxl X2hlaWdodCAtIHkgLSAoc3JjX2ggKyAxKTsKPiA+PisJCXlfb2Zmc2V0ID0geDsKPiA+PisJfSBl bHNlIHsKPiA+PisJCXN0cmlkZSA9IGZiLT5waXRjaGVzWzBdIC8gc3RyaWRlX2RpdjsKPiA+PisJ CXBsYW5lX3NpemUgPSAoc3JjX2ggPDwgMTYpIHwgc3JjX3c7Cj4gPj4rCQl4X29mZnNldCA9IHg7 Cj4gPj4rCQl5X29mZnNldCA9IHk7Cj4gPj4rCX0KPiA+PisJcGxhbmVfb2Zmc2V0ID0geV9vZmZz ZXQgPDwgMTYgfCB4X29mZnNldDsKPiA+PisKPiA+PisJSTkxNV9XUklURShQTEFORV9PRkZTRVQo cGlwZSwgcGxhbmUpLCBwbGFuZV9vZmZzZXQpOwo+ID4+KwlJOTE1X1dSSVRFKFBMQU5FX1NUUklE RShwaXBlLCBwbGFuZSksIHN0cmlkZSk7Cj4gPj4gIAlJOTE1X1dSSVRFKFBMQU5FX1BPUyhwaXBl LCBwbGFuZSksIChjcnRjX3kgPDwgMTYpIHwgY3J0Y194KTsKPiA+Pi0JSTkxNV9XUklURShQTEFO RV9TSVpFKHBpcGUsIHBsYW5lKSwgKGNydGNfaCA8PCAxNikgfCBjcnRjX3cpOwo+ID4+KwlJOTE1 X1dSSVRFKFBMQU5FX1NJWkUocGlwZSwgcGxhbmUpLCBwbGFuZV9zaXplKTsKPiA+PiAgCUk5MTVf V1JJVEUoUExBTkVfQ1RMKHBpcGUsIHBsYW5lKSwgcGxhbmVfY3RsKTsKPiA+PiAgCUk5MTVfV1JJ VEUoUExBTkVfU1VSRihwaXBlLCBwbGFuZSksIHN1cmZfYWRkcik7Cj4gPj4gIAlQT1NUSU5HX1JF QUQoUExBTkVfU1VSRihwaXBlLCBwbGFuZSkpOwo+ID4+QEAgLTEzMTAsMTYgKzEzNDEsNyBAQCBp bnRlbF9wbGFuZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVudW0gcGlwZSBwaXBlLCBp bnQgcGxhbmUpCj4gPj4gIAkJZ290byBvdXQ7Cj4gPj4gIAl9Cj4gPj4KPiA+Pi0JaWYgKCFkZXYt Pm1vZGVfY29uZmlnLnJvdGF0aW9uX3Byb3BlcnR5KQo+ID4+LQkJZGV2LT5tb2RlX2NvbmZpZy5y b3RhdGlvbl9wcm9wZXJ0eSA9Cj4gPj4tCQkJZHJtX21vZGVfY3JlYXRlX3JvdGF0aW9uX3Byb3Bl cnR5KGRldiwKPiA+Pi0JCQkJCQkJICBCSVQoRFJNX1JPVEFURV8wKSB8Cj4gPj4tCQkJCQkJCSAg QklUKERSTV9ST1RBVEVfMTgwKSk7Cj4gPj4tCj4gPj4tCWlmIChkZXYtPm1vZGVfY29uZmlnLnJv dGF0aW9uX3Byb3BlcnR5KQo+ID4+LQkJZHJtX29iamVjdF9hdHRhY2hfcHJvcGVydHkoJmludGVs X3BsYW5lLT5iYXNlLmJhc2UsCj4gPj4tCQkJCQkgICBkZXYtPm1vZGVfY29uZmlnLnJvdGF0aW9u X3Byb3BlcnR5LAo+ID4+LQkJCQkJICAgc3RhdGUtPmJhc2Uucm90YXRpb24pOwo+ID4+KwlpbnRl bF9jcmVhdGVfcm90YXRpb25fcHJvcGVydHkoZGV2LCBpbnRlbF9wbGFuZSk7Cj4gPj4KPiA+PiAg CWRybV9wbGFuZV9oZWxwZXJfYWRkKCZpbnRlbF9wbGFuZS0+YmFzZSwgJmludGVsX3BsYW5lX2hl bHBlcl9mdW5jcyk7Cj4gPj4KPiA+Pi0tCj4gPj4xLjcuMTAuNAo+ID4+Cj4gPj5fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ID4+SW50ZWwtZ2Z4IG1haWxp bmcgbGlzdAo+ID4+SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ID4+aHR0cDovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo+ID4KCi0tIApN YXR0IFJvcGVyCkdyYXBoaWNzIFNvZnR3YXJlIEVuZ2luZWVyCklvVEcgUGxhdGZvcm0gRW5hYmxp bmcgJiBEZXZlbG9wbWVudApJbnRlbCBDb3Jwb3JhdGlvbgooOTE2KSAzNTYtMjc5NQpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=