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, 06 Apr 2015 17:57:03 +0530 Message-ID: <55227B97.9000607@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> <20150402155933.GQ28205@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id E2BF86E00B for ; Mon, 6 Apr 2015 05:27:06 -0700 (PDT) In-Reply-To: <20150402155933.GQ28205@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 Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org CgpPbiA0LzIvMjAxNSA5OjI5IFBNLCBNYXR0IFJvcGVyIHdyb3RlOgo+IE9uIFRodSwgQXByIDAy LCAyMDE1IGF0IDEwOjI0OjAyQU0gKzA1MzAsIEppbmRhbCwgU29uaWthIHdyb3RlOgo+Pgo+Pgo+ PiBPbiA0LzEvMjAxNSAxMTo1MiBQTSwgTWF0dCBSb3BlciB3cm90ZToKPj4+IE9uIE1vbiwgTWFy IDMwLCAyMDE1IGF0IDAyOjA0OjU3UE0gKzA1MzAsIFNvbmlrYSBKaW5kYWwgd3JvdGU6Cj4+Pj4g djI6IE1vdmluZyBjcmVhdGlvbiBvZiBwcm9wZXJ0eSBpbiBhIGZ1bmN0aW9uLCBjaGVja2luZyBm b3IgOTAvMjcwCj4+Pj4gcm90YXRpb24gc2ltdWx0YW5lb3VzbHkgKENocmlzKQo+Pj4+IExldHRp bmcgcHJpbWFyeSBwbGFuZSB0byBiZSBwb3NpdGlvbmVkCj4+Pj4gdjM6IEFkZGluZyBpZi9lbHNl IGZvciA5MC8yNzAgYW5kIHJlc3QgcGFyYW1zIHByb2dyYW1taW5nLCBhZGRpbmcgY2hlY2sgZm9y Cj4+Pj4gcGl4ZWxfZm9ybWF0LCBzb21lIGNsZWFudXAgKHJldmlldyBjb21tZW50cykKPj4+PiB2 NDogQWRkaW5nIHJpZ2h0IHBpeGVsX2Zvcm1hdHMsIHVzaW5nIHNyY18qIHBhcmFtcyBpbnN0ZWFk IG9mIGNydGNfKiBmb3Igb2Zmc2V0Cj4+Pj4gYW5kIHNpemUgcHJvZ3JhbW1pbmcgKFZpbGxlKQo+ Pj4+IHY1OiBSZWJhc2VkIG9uIC1uaWdodGx5IGFuZCBUdnJ0a28ncyBzZXJpZXMgZm9yIGd0dCBy ZW1hcHBpbmcuCj4+Pj4gdjY6IFJlYmFzZWQgb24gLW5pZ2h0bHkgKFR2cnRrbydzIHNlcmllcyBt ZXJnZWQpCj4+Pj4KPj4+PiBTaWduZWQtb2ZmLWJ5OiBTb25pa2EgSmluZGFsIDxzb25pa2Euamlu ZGFsQGludGVsLmNvbT4KPj4+PiAtLS0KPj4+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf cmVnLmggICAgICB8ICAgIDIgKwo+Pj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jIHwgIDEwMyArKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tCj4+Pj4gICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgfCAgICA2ICsrCj4+Pj4gICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyAgfCAgIDUyICsrKysrKysrKysrKy0tLS0t Cj4+Pj4gICA0IGZpbGVzIGNoYW5nZWQsIDEyOSBpbnNlcnRpb25zKCspLCAzNCBkZWxldGlvbnMo LSkKPj4+Pgo+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+Pj4+IGluZGV4IGI1MjJlYjYuLjU2 NGJiZDUgMTAwNjQ0Cj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPj4+PiBAQCAtNDg1NCw3 ICs0ODU0LDkgQEAgZW51bSBza2xfZGlzcF9wb3dlcl93ZWxscyB7Cj4+Pj4gICAjZGVmaW5lICAg UExBTkVfQ1RMX0FMUEhBX0hXX1BSRU1VTFRJUExZCSggIDMgPDwgNCkKPj4+PiAgICNkZWZpbmUg ICBQTEFORV9DVExfUk9UQVRFX01BU0sJCQkweDMKPj4+PiAgICNkZWZpbmUgICBQTEFORV9DVExf Uk9UQVRFXzAJCQkweDAKPj4+PiArI2RlZmluZSAgIFBMQU5FX0NUTF9ST1RBVEVfOTAJCQkweDEK Pj4+PiAgICNkZWZpbmUgICBQTEFORV9DVExfUk9UQVRFXzE4MAkJCTB4Mgo+Pj4+ICsjZGVmaW5l ICAgUExBTkVfQ1RMX1JPVEFURV8yNzAJCQkweDMKPj4+PiAgICNkZWZpbmUgX1BMQU5FX1NUUklE RV8xX0EJCQkweDcwMTg4Cj4+Pj4gICAjZGVmaW5lIF9QTEFORV9TVFJJREVfMl9BCQkJMHg3MDI4 OAo+Pj4+ICAgI2RlZmluZSBfUExBTkVfU1RSSURFXzNfQQkJCTB4NzAzODgKPj4+PiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4+Pj4gaW5kZXggZjBiYmMyMi4uODZlZTBmMCAxMDA2 NDQKPj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPj4+PiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPj4+PiBAQCAtMjMxOCw2 ICsyMzE4LDI4IEBAIGludGVsX2ZpbGxfZmJfZ2d0dF92aWV3KHN0cnVjdCBpOTE1X2dndHRfdmll dyAqdmlldywgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCj4+Pj4gICAJCXJldHVybiAtRUlO VkFMOwo+Pj4+ICAgCX0KPj4+Pgo+Pj4+ICsJc3dpdGNoIChmYi0+cGl4ZWxfZm9ybWF0KSB7Cj4+ Pj4gKwljYXNlIERSTV9GT1JNQVRfWFJHQjg4ODg6Cj4+Pj4gKwljYXNlIERSTV9GT1JNQVRfQVJH Qjg4ODg6Cj4+Pj4gKwljYXNlIERSTV9GT1JNQVRfWEJHUjg4ODg6Cj4+Pj4gKwljYXNlIERSTV9G T1JNQVRfQUJHUjg4ODg6Cj4+Pj4gKwljYXNlIERSTV9GT1JNQVRfWFJHQjIxMDEwMTA6Cj4+Pj4g KwljYXNlIERSTV9GT1JNQVRfQVJHQjIxMDEwMTA6Cj4+Pj4gKwljYXNlIERSTV9GT1JNQVRfWEJH UjIxMDEwMTA6Cj4+Pj4gKwljYXNlIERSTV9GT1JNQVRfQUJHUjIxMDEwMTA6Cj4+Pj4gKwljYXNl IERSTV9GT1JNQVRfWVVZVjoKPj4+PiArCWNhc2UgRFJNX0ZPUk1BVF9ZVllVOgo+Pj4+ICsJY2Fz ZSBEUk1fRk9STUFUX1VZVlk6Cj4+Pj4gKwljYXNlIERSTV9GT1JNQVRfVllVWToKPj4+PiArCWNh c2UgRFJNX0ZPUk1BVF9OVjEyOgo+Pj4+ICsJCWJyZWFrOwo+Pj4+ICsKPj4+PiArCWRlZmF1bHQ6 Cj4+Pj4gKwkJRFJNX0RFQlVHX0tNUygiVW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0OiVkIGZvciA5 MC8yNzAgcm90YXRpb24hXG4iLAo+Pj4+ICsJCSAgICAgIGZiLT5waXhlbF9mb3JtYXQpOwo+Pj4+ ICsJCXJldHVybiAtRUlOVkFMOwo+Pj4+ICsJfQo+Pj4KPj4+IFNob3VsZG4ndCB3ZSBiZSBtYXRj aGluZyBhZ2FpbnN0IHRoZSBsaXN0IG9mIGZvcm1hdHMgdGhlIHBsYW5lIHN1cHBvcnRzCj4+PiAo d2hpY2ggbWF5IHZhcnkgYnkgcGxhdGZvcm0sIG9yIGJ5IHNwZWNpZmljIHBsYW5lKSByYXRoZXIg dGhhbiB0aGlzCj4+PiBnZW5lcmljIGxpc3Q/ICBXZSBhbHJlYWR5IHNwZWNpZmllZCB3aGF0IGZv cm1hdHMgdGhlIHBsYW5lIGNhbiBoYW5kbGUgYXQKPj4+IHBsYW5lIGluaXQgdGltZSwgc28gaXQg c2VlbXMgbGlrZSB3aGF0IHlvdSdkIHJlYWxseSB3YW50IGlzIGp1c3QgYSBjYWxsCj4+PiB0bwo+ Pj4KPj4+ICAgICAgZHJtX3BsYW5lX2NoZWNrX3BpeGVsX2Zvcm1hdChwbGFuZV9zdGF0ZS0+cGxh bmUsIGZiLT5waXhlbF9mb3JtYXQpCj4+Pgo+Pj4gdGhlbiBmb2xsb3cgdGhhdCB1cCB3aXRoIGV4 cGxpY2l0IGNoZWNrcyB0byBleGNsdWRlIGFueSBmb3JtYXRzIHRoYXQgd2UKPj4+IGNhbiBoYW5k bGUgaW4gMC8xODAsIGJ1dCBub3QgaW4gOTAvMjcwLgo+Pj4KPj4gSSBhbSBub3Qgc3VyZSBob3cg aXQgd2lsbCBoZWxwLiBkcm1fcGxhbmVfY2hlY2tfcGl4ZWxfZm9ybWF0IHNob3VsZAo+PiBiZSB1 c2VkIHRvIGNoZWNrIHRoZSBwaXhlbCBmb3JtYXQgb2YgdGhlIGZiIHdoaWNoIHdlIHNob3VsZCBi ZSBkb2luZwo+PiBpbiBzb21lIC1jaGVjayBmdW5jdGlvbnMgKEkgZG9uJ3QgdGhpbmsgd2UgZG8g dGhhdCByaWdodCBub3c/KQo+PiBhZ2FpbnN0IHdoYXQgaXMgc3VwcG9ydGVkIGJ5IHRoZSBwbGFu ZS4KPj4gQnV0IHRvIGNoZWNrIGZvciB0aGUgZm9ybWF0cyB3aGljaCBhcmUgYWxsb3dlZCBmb3Ig OTAvMjcwLCB3ZSB3b3VsZAo+PiBuZWVkIHRoaXMga2luZCBvZiBleHBsaWNpdCBjaGVjay4KPgo+ IFJpZ2h0LCBJIGd1ZXNzIHRoZXJlIGFyZSB0d28gYXNwZWN0cyBoZXJlLiAgRmlyc3QsIHdlIG5l ZWQgdG8gcHJvcGVybHkKPiB0ZXN0IGZvciBhY2NlcHRhYmxlIHBpeGVsIGZvcm1hdHMgZm9yIHRo ZSBwbGFuZSBpbiBnZW5lcmFsOyBhdCB0aGUKPiBtb21lbnQgdGhlIERSTSBjb3JlIHNldHBsYW5l KCkgdGVzdHMgdGhpcywgYnV0IGlmIHdlIHVzZSB0aGUgYXRvbWljCj4gaW9jdGwgaXQgbmV2ZXIg Z2V0cyBjaGVja2VkICh3aGljaCBpcyBhIGJ1ZykuICBTbyBhcyB5b3Ugc2F5LCB3ZSBuZWVkIGEK PiB0ZXN0IGluIGEgX2NoZWNrKCkgZnVuY3Rpb24gdG8gdmVyaWZ5IHRoaXMuICBXZSBwcm9iYWJs eSBhbHNvIG5lZWQgdG8KPiBhZGQgYW4gaS1nLXQgdGVzdCBmb3IgaXQgdG9vLgo+Ck9LLCBJJ2wg YWRkIHRoYXQgY2hlY2sgaW4gaW50ZWxfYXRvbWljX3BsYW5lX2NoZWNrKCkKCj4gT25jZSB3ZSBr bm93IHRoYXQgdGhlIHBpeGVsIGZvcm1hdCBpcyB2YWxpZCBpbiBnZW5lcmFsLCBpdCBtYWtlcyBz ZW5zZQo+IHRvIGhhdmUgYSBzaW1wbGVyIHRlc3QgdG8gcmVqZWN0IHNvbWUgc3Vic2V0IG9mIHRo b3NlIGZvcm1hdHMgaWZmIHdlCj4gbm90aWNlIHdlJ3JlIGRvaW5nIDkwLzI3MCByb3RhdGlvbi4g IE1heWJlIGl0J3Mgbm90IHJlYWxseSBhIGJpZyBkZWFsLAo+IGJ1dCBpdCBzZWVtcyBsaWtlIHRo YXQncyBhIGxpdHRsZSBlYXNpZXIgdG8gdW5kZXJzdGFuZCBhbmQgdmVyaWZ5IHRoYW4KPiBoYXZp bmcgdHdvIGNvbXBsZXRlbHkgc2VwYXJhdGUgbGlzdHMsIGVzcGVjaWFsbHkgd2hlbiBmdXR1cmUg cGxhdGZvcm1zCj4gbWF5IHN1cHBvcnQgZGlmZmVyZW50IGZvcm1hdHMsIG9yIGV2ZW4gZGlmZmVy ZW50IHBsYW5lcyBvZiB0aGUgc2FtZQo+IHBsYXRmb3JtIGhhdmUgdmFyeWluZyBwaXhlbCBmb3Jt YXQgY2FwYWJpbGl0aWVzLgo+Ckkgd2lsbCBzZW5kIG91dCBhIHBhdGNoIHdpdGggdGhlIGNoYW5n ZXMgYW5kIGFkZCBuZWdhdGl2ZSB0ZXN0IGNhc2UgaW4gCmttc19yb3RhdGlvbl9jcmMuCgpSZWdh cmRzLApTb25pa2EKCj4KPiBNYXR0Cj4KPj4+IEknZCBhbHNvIG1vdmUgdGhpcyBjaGVjayB0byBp bnRlbF9wbGFuZV9hdG9taWNfY2hlY2soKSwgc2luY2UgdGhlCj4+PiAnY2hlY2snIGNvZGUgcGF0 aCBpcyB3aGVyZSBJJ2QgdXN1YWxseSBnbyBsb29raW5nIGZvciB0aGVzZSB0eXBlcyBvZgo+Pj4g Y2hlY2tzOyB0aGUgZnVuY3Rpb24geW91J3ZlIGdvdCBpdCBpbiBhdCB0aGUgbW9tZW50IGdldHMg Y2FsbGVkIGZyb20gdGhlCj4+PiAncHJlcGFyZScgc3RlcCB3aGljaCB3b3JrcyBhcyB3ZWxsLCBi dXQgc2VlbXMgYSBiaXQgbGVzcyBvYnZpb3VzLgo+Pj4KPj4gWWVzLCBJIGFncmVlLCBidXQgdGhp cyBpcyBvbiB0b3Agb2YgVHZydGtvJ3MgcGF0Y2ggZm9yIHNlY29uZGFyeQo+PiBidWZmZXIgbWFw cGluZyB3aGVyZSBiYXNlZCB1cG9uIHRpbGluZyBhbmQgcGl4ZWwgZm9ybWF0IHdlIGFyZQo+PiBh bGxvd2luZyB0aGUgcm90YXRlZCBndHQuCj4+Cj4+IFR2cnRrbywKPj4gQ2FuIHRoZXNlIGJlIG1v dmVkIHRvIHRoZSBpbnRlbF9wbGFuZV9hdG9taWNfY2hlY2soKQo+Pgo+Pj4+ICsKPj4+PiAgIAly ZXR1cm4gMDsKPj4+PiAgIH0KPj4+Pgo+Pj4+IEBAIC0yOTE5LDggKzI5NDEsMTIgQEAgc3RhdGlj IHZvaWQgc2t5bGFrZV91cGRhdGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMs Cj4+Pj4gICAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNy dGMpOwo+Pj4+ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4+Pj4gICAJaW50 IHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+Pj4+IC0JdTMyIHBsYW5lX2N0bCwgc3RyaWRlX2Rp djsKPj4+PiArCXUzMiBwbGFuZV9jdGwsIHN0cmlkZV9kaXYsIHN0cmlkZTsKPj4+PiArCXUzMiB0 aWxlX2hlaWdodCwgcGxhbmVfb2Zmc2V0LCBwbGFuZV9zaXplOwo+Pj4+ICsJdW5zaWduZWQgaW50 IHJvdGF0aW9uOwo+Pj4+ICsJaW50IHhfb2Zmc2V0LCB5X29mZnNldDsKPj4+PiAgIAl1bnNpZ25l ZCBsb25nIHN1cmZfYWRkcjsKPj4+PiArCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwo+Pj4+Cj4+ Pj4gICAJaWYgKCFpbnRlbF9jcnRjLT5wcmltYXJ5X2VuYWJsZWQpIHsKPj4+PiAgIAkJSTkxNV9X UklURShQTEFORV9DVEwocGlwZSwgMCksIDApOwo+Pj4+IEBAIC0yOTgxLDIxICszMDA3LDUxIEBA IHN0YXRpYyB2b2lkIHNreWxha2VfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9jcnRj ICpjcnRjLAo+Pj4+ICAgCX0KPj4+Pgo+Pj4+ICAgCXBsYW5lX2N0bCB8PSBQTEFORV9DVExfUExB TkVfR0FNTUFfRElTQUJMRTsKPj4+PiAtCWlmIChjcnRjLT5wcmltYXJ5LT5zdGF0ZS0+cm90YXRp b24gPT0gQklUKERSTV9ST1RBVEVfMTgwKSkKPj4+PiArCj4+Pj4gKwlwbGFuZSA9IGNydGMtPnBy aW1hcnk7Cj4+Pj4gKwlyb3RhdGlvbiA9IHBsYW5lLT5zdGF0ZS0+cm90YXRpb247Cj4+Pj4gKwlz d2l0Y2ggKHJvdGF0aW9uKSB7Cj4+Pj4gKwljYXNlIEJJVChEUk1fUk9UQVRFXzkwKToKPj4+PiAr CQlwbGFuZV9jdGwgfD0gUExBTkVfQ1RMX1JPVEFURV85MDsKPj4+PiArCQlicmVhazsKPj4+PiAr Cj4+Pj4gKwljYXNlIEJJVChEUk1fUk9UQVRFXzE4MCk6Cj4+Pj4gICAJCXBsYW5lX2N0bCB8PSBQ TEFORV9DVExfUk9UQVRFXzE4MDsKPj4+PiArCQlicmVhazsKPj4+PiArCj4+Pj4gKwljYXNlIEJJ VChEUk1fUk9UQVRFXzI3MCk6Cj4+Pj4gKwkJcGxhbmVfY3RsIHw9IFBMQU5FX0NUTF9ST1RBVEVf MjcwOwo+Pj4+ICsJCWJyZWFrOwo+Pj4+ICsJfQo+Pj4+Cj4+Pj4gICAJb2JqID0gaW50ZWxfZmJf b2JqKGZiKTsKPj4+PiAgIAlzdHJpZGVfZGl2ID0gaW50ZWxfZmJfc3RyaWRlX2FsaWdubWVudChk ZXYsIGZiLT5tb2RpZmllclswXSwKPj4+PiAgIAkJCQkJICAgICAgIGZiLT5waXhlbF9mb3JtYXQp Owo+Pj4KPj4+IE1pbm9yIG5pdDsgY2FuIHdlIG1vdmUgdGhpcyBkb3duIGluc2lkZSB0aGUgJ2Vs c2UnIGJyYW5jaCB0byBtYWtlIGl0Cj4+PiBhcHBhcmVudCBob3cgdGhpcyBzZXJ2ZXMgYSBwYXJh bGxlbCByb2xlIHRvICd0aWxlX2hlaWdodCcgZnJvbSB0aGUgJ2lmJwo+Pj4gYnJhbmNoLgo+Pj4K Pj4gWWVzIHN1cmUuCj4+Pgo+Pj4+IC0Jc3VyZl9hZGRyID0gaW50ZWxfcGxhbmVfb2JqX29mZnNl dCh0b19pbnRlbF9wbGFuZShjcnRjLT5wcmltYXJ5KSwgb2JqKTsKPj4+PiArCXN1cmZfYWRkciA9 IGludGVsX3BsYW5lX29ial9vZmZzZXQodG9faW50ZWxfcGxhbmUocGxhbmUpLCBvYmopOwo+Pj4+ ICsKPj4+PiArCWlmIChyb3RhdGlvbiAmIChCSVQoRFJNX1JPVEFURV85MCkgfCBCSVQoRFJNX1JP VEFURV8yNzApKSkgewo+Pj4KPj4+IE1pZ2h0IGFzIHdlbGwgdXNlIHRoZSBpbnRlbF9yb3RhdGlv bl85MF9vcl8yNzAoKSBmdW5jdGlvbiBzaW5jZSB3ZSBoYXZlCj4+PiBpdC4gIFNhbWUgY29tbWVu dCBmb3IgdGhlIHNwcml0ZSBwYXRoIGZhcnRoZXIgZG93bi4KPj4+Cj4+IFN1cmUuCj4+Cj4+IFJl Z2FyZHMsCj4+IFNvbmlrYQo+Pj4+ICsJCS8qIHN0cmlkZSA9IFN1cmZhY2UgaGVpZ2h0IGluIHRp bGVzICovCj4+Pj4gKwkJdGlsZV9oZWlnaHQgPSBpbnRlbF90aWxlX2hlaWdodChkZXYsIGZiLT5i aXRzX3Blcl9waXhlbCwKPj4+PiArCQkJCQkJZmItPm1vZGlmaWVyWzBdKTsKPj4+PiArCQlzdHJp ZGUgPSBESVZfUk9VTkRfVVAoZmItPmhlaWdodCwgdGlsZV9oZWlnaHQpOwo+Pj4+ICsJCXhfb2Zm c2V0ID0gc3RyaWRlICogdGlsZV9oZWlnaHQgLSB5IC0gKHBsYW5lLT5zdGF0ZS0+c3JjX2ggPj4g MTYpOwo+Pj4+ICsJCXlfb2Zmc2V0ID0geDsKPj4+PiArCQlwbGFuZV9zaXplID0gKChwbGFuZS0+ c3RhdGUtPnNyY193ID4+IDE2KSAtIDEpIDw8IDE2IHwKPj4+PiArCQkJCQkoKHBsYW5lLT5zdGF0 ZS0+c3JjX2ggPj4gMTYpIC0gMSk7Cj4+Pj4gKwl9IGVsc2Ugewo+Pj4+ICsJCXN0cmlkZSA9IGZi LT5waXRjaGVzWzBdIC8gc3RyaWRlX2RpdjsKPj4+PiArCQl4X29mZnNldCA9IHg7Cj4+Pj4gKwkJ eV9vZmZzZXQgPSB5Owo+Pj4+ICsJCXBsYW5lX3NpemUgPSAoKHBsYW5lLT5zdGF0ZS0+c3JjX2gg Pj4gMTYpIC0gMSkgPDwgMTYgfAo+Pj4+ICsJCQkoKHBsYW5lLT5zdGF0ZS0+c3JjX3cgPj4gMTYp IC0gMSk7Cj4+Pj4gKwl9Cj4+Pj4gKwlwbGFuZV9vZmZzZXQgPSB5X29mZnNldCA8PCAxNiB8IHhf b2Zmc2V0Owo+Pj4+Cj4+Pj4gICAJSTkxNV9XUklURShQTEFORV9DVEwocGlwZSwgMCksIHBsYW5l X2N0bCk7Cj4+Pj4gICAJSTkxNV9XUklURShQTEFORV9QT1MocGlwZSwgMCksIDApOwo+Pj4+IC0J STkxNV9XUklURShQTEFORV9PRkZTRVQocGlwZSwgMCksICh5IDw8IDE2KSB8IHgpOwo+Pj4+IC0J STkxNV9XUklURShQTEFORV9TSVpFKHBpcGUsIDApLAo+Pj4+IC0JCSAgIChpbnRlbF9jcnRjLT5j b25maWctPnBpcGVfc3JjX2ggLSAxKSA8PCAxNiB8Cj4+Pj4gLQkJICAgKGludGVsX2NydGMtPmNv bmZpZy0+cGlwZV9zcmNfdyAtIDEpKTsKPj4+PiAtCUk5MTVfV1JJVEUoUExBTkVfU1RSSURFKHBp cGUsIDApLCBmYi0+cGl0Y2hlc1swXSAvIHN0cmlkZV9kaXYpOwo+Pj4+ICsJSTkxNV9XUklURShQ TEFORV9PRkZTRVQocGlwZSwgMCksIHBsYW5lX29mZnNldCk7Cj4+Pj4gKwlJOTE1X1dSSVRFKFBM QU5FX1NJWkUocGlwZSwgMCksIHBsYW5lX3NpemUpOwo+Pj4+ICsJSTkxNV9XUklURShQTEFORV9T VFJJREUocGlwZSwgMCksIHN0cmlkZSk7Cj4+Pj4gICAJSTkxNV9XUklURShQTEFORV9TVVJGKHBp cGUsIDApLCBzdXJmX2FkZHIpOwo+Pj4+Cj4+Pj4gICAJUE9TVElOR19SRUFEKFBMQU5FX1NVUkYo cGlwZSwgMCkpOwo+Pj4+IEBAIC0xMjQwNiwyMyArMTI0NjIsMzIgQEAgc3RhdGljIHN0cnVjdCBk cm1fcGxhbmUgKmludGVsX3ByaW1hcnlfcGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCj4+Pj4gICAJCQkJIGludGVsX3ByaW1hcnlfZm9ybWF0cywgbnVtX2Zvcm1hdHMsCj4+Pj4g ICAJCQkJIERSTV9QTEFORV9UWVBFX1BSSU1BUlkpOwo+Pj4+Cj4+Pj4gLQlpZiAoSU5URUxfSU5G TyhkZXYpLT5nZW4gPj0gNCkgewo+Pj4+IC0JCWlmICghZGV2LT5tb2RlX2NvbmZpZy5yb3RhdGlv bl9wcm9wZXJ0eSkKPj4+PiAtCQkJZGV2LT5tb2RlX2NvbmZpZy5yb3RhdGlvbl9wcm9wZXJ0eSA9 Cj4+Pj4gLQkJCQlkcm1fbW9kZV9jcmVhdGVfcm90YXRpb25fcHJvcGVydHkoZGV2LAo+Pj4+IC0J CQkJCQkJQklUKERSTV9ST1RBVEVfMCkgfAo+Pj4+IC0JCQkJCQkJQklUKERSTV9ST1RBVEVfMTgw KSk7Cj4+Pj4gLQkJaWYgKGRldi0+bW9kZV9jb25maWcucm90YXRpb25fcHJvcGVydHkpCj4+Pj4g LQkJCWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZwcmltYXJ5LT5iYXNlLmJhc2UsCj4+Pj4g LQkJCQlkZXYtPm1vZGVfY29uZmlnLnJvdGF0aW9uX3Byb3BlcnR5LAo+Pj4+IC0JCQkJc3RhdGUt PmJhc2Uucm90YXRpb24pOwo+Pj4+IC0JfQo+Pj4+ICsJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2Vu ID49IDQpCj4+Pj4gKwkJaW50ZWxfY3JlYXRlX3JvdGF0aW9uX3Byb3BlcnR5KGRldiwgcHJpbWFy eSk7Cj4+Pj4KPj4+PiAgIAlkcm1fcGxhbmVfaGVscGVyX2FkZCgmcHJpbWFyeS0+YmFzZSwgJmlu dGVsX3BsYW5lX2hlbHBlcl9mdW5jcyk7Cj4+Pj4KPj4+PiAgIAlyZXR1cm4gJnByaW1hcnktPmJh c2U7Cj4+Pj4gICB9Cj4+Pj4KPj4+PiArdm9pZCBpbnRlbF9jcmVhdGVfcm90YXRpb25fcHJvcGVy dHkoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSkKPj4+ PiArewo+Pj4+ICsJaWYgKCFkZXYtPm1vZGVfY29uZmlnLnJvdGF0aW9uX3Byb3BlcnR5KSB7Cj4+ Pj4gKwkJdW5zaWduZWQgbG9uZyBmbGFncyA9IEJJVChEUk1fUk9UQVRFXzApIHwKPj4+PiArCQkJ QklUKERSTV9ST1RBVEVfMTgwKTsKPj4+PiArCj4+Pj4gKwkJaWYgKElOVEVMX0lORk8oZGV2KS0+ Z2VuID49IDkpCj4+Pj4gKwkJCWZsYWdzIHw9IEJJVChEUk1fUk9UQVRFXzkwKSB8IEJJVChEUk1f Uk9UQVRFXzI3MCk7Cj4+Pj4gKwo+Pj4+ICsJCWRldi0+bW9kZV9jb25maWcucm90YXRpb25fcHJv cGVydHkgPQo+Pj4+ICsJCQlkcm1fbW9kZV9jcmVhdGVfcm90YXRpb25fcHJvcGVydHkoZGV2LCBm bGFncyk7Cj4+Pj4gKwl9Cj4+Pj4gKwlpZiAoZGV2LT5tb2RlX2NvbmZpZy5yb3RhdGlvbl9wcm9w ZXJ0eSkKPj4+PiArCQlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmcGxhbmUtPmJhc2UuYmFz ZSwKPj4+PiArCQkJCWRldi0+bW9kZV9jb25maWcucm90YXRpb25fcHJvcGVydHksCj4+Pj4gKwkJ CQlwbGFuZS0+YmFzZS5zdGF0ZS0+cm90YXRpb24pOwo+Pj4+ICt9Cj4+Pj4gKwo+Pj4+ICAgc3Rh dGljIGludAo+Pj4+ICAgaW50ZWxfY2hlY2tfY3Vyc29yX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUg KnBsYW5lLAo+Pj4+ICAgCQkJIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqc3RhdGUpCj4+Pj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPj4+PiBpbmRleCA4MTFhMWRiLi5kMzIwMjVhIDEwMDY0 NAo+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4+Pj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPj4+PiBAQCAtOTk1LDYgKzk5NSwxMiBA QCBpbnRlbF9yb3RhdGlvbl85MF9vcl8yNzAodW5zaWduZWQgaW50IHJvdGF0aW9uKQo+Pj4+ICAg CXJldHVybiByb3RhdGlvbiAmIChCSVQoRFJNX1JPVEFURV85MCkgfCBCSVQoRFJNX1JPVEFURV8y NzApKTsKPj4+PiAgIH0KPj4+Pgo+Pj4+ICt1bnNpZ25lZCBpbnQKPj4+PiAraW50ZWxfdGlsZV9o ZWlnaHQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdWludDMyX3QgYml0c19wZXJfcGl4ZWwsCj4+ Pj4gKwkJICB1aW50NjRfdCBmYl9tb2RpZmllcik7Cj4+Pj4gK3ZvaWQgaW50ZWxfY3JlYXRlX3Jv dGF0aW9uX3Byb3BlcnR5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4+Pj4gKwkJCQkJc3RydWN0 IGludGVsX3BsYW5lICpwbGFuZSk7Cj4+Pj4gKwo+Pj4+ICAgYm9vbCBpbnRlbF93bV9uZWVkX3Vw ZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPj4+PiAgIAkJCSAgc3RydWN0IGRybV9wbGFu ZV9zdGF0ZSAqc3RhdGUpOwo+Pj4+Cj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3Nwcml0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMK Pj4+PiBpbmRleCBmNDFlODcyLi42NWViMTQ3IDEwMDY0NAo+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfc3ByaXRlLmMKPj4+PiBAQCAtMTkwLDEwICsxOTAsMTMgQEAgc2tsX3VwZGF0ZV9wbGFu ZShzdHJ1Y3QgZHJtX3BsYW5lICpkcm1fcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPj4+ PiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gaW50ZWxfZmJfb2JqKGZiKTsK Pj4+PiAgIAljb25zdCBpbnQgcGlwZSA9IGludGVsX3BsYW5lLT5waXBlOwo+Pj4+ICAgCWNvbnN0 IGludCBwbGFuZSA9IGludGVsX3BsYW5lLT5wbGFuZSArIDE7Cj4+Pj4gLQl1MzIgcGxhbmVfY3Rs LCBzdHJpZGVfZGl2Owo+Pj4+ICsJdTMyIHBsYW5lX2N0bCwgc3RyaWRlX2Rpdiwgc3RyaWRlOwo+ Pj4+ICAgCWludCBwaXhlbF9zaXplID0gZHJtX2Zvcm1hdF9wbGFuZV9jcHAoZmItPnBpeGVsX2Zv cm1hdCwgMCk7Cj4+Pj4gICAJY29uc3Qgc3RydWN0IGRybV9pbnRlbF9zcHJpdGVfY29sb3JrZXkg KmtleSA9ICZpbnRlbF9wbGFuZS0+Y2tleTsKPj4+PiAgIAl1bnNpZ25lZCBsb25nIHN1cmZfYWRk cjsKPj4+PiArCXUzMiB0aWxlX2hlaWdodCwgcGxhbmVfb2Zmc2V0LCBwbGFuZV9zaXplOwo+Pj4+ ICsJdW5zaWduZWQgaW50IHJvdGF0aW9uOwo+Pj4+ICsJaW50IHhfb2Zmc2V0LCB5X29mZnNldDsK Pj4+Pgo+Pj4+ICAgCXBsYW5lX2N0bCA9IFBMQU5FX0NUTF9FTkFCTEUgfAo+Pj4+ICAgCQlQTEFO RV9DVExfUElQRV9DU0NfRU5BQkxFOwo+Pj4+IEBAIC0yNTQsOCArMjU3LDIwIEBAIHNrbF91cGRh dGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqZHJtX3BsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNy dGMsCj4+Pj4gICAJCU1JU1NJTkdfQ0FTRShmYi0+bW9kaWZpZXJbMF0pOwo+Pj4+ICAgCX0KPj4+ Pgo+Pj4+IC0JaWYgKGRybV9wbGFuZS0+c3RhdGUtPnJvdGF0aW9uID09IEJJVChEUk1fUk9UQVRF XzE4MCkpCj4+Pj4gKwlyb3RhdGlvbiA9IGRybV9wbGFuZS0+c3RhdGUtPnJvdGF0aW9uOwo+Pj4+ ICsJc3dpdGNoIChyb3RhdGlvbikgewo+Pj4+ICsJY2FzZSBCSVQoRFJNX1JPVEFURV85MCk6Cj4+ Pj4gKwkJcGxhbmVfY3RsIHw9IFBMQU5FX0NUTF9ST1RBVEVfOTA7Cj4+Pj4gKwkJYnJlYWs7Cj4+ Pj4gKwo+Pj4+ICsJY2FzZSBCSVQoRFJNX1JPVEFURV8xODApOgo+Pj4+ICAgCQlwbGFuZV9jdGwg fD0gUExBTkVfQ1RMX1JPVEFURV8xODA7Cj4+Pj4gKwkJYnJlYWs7Cj4+Pj4gKwo+Pj4+ICsJY2Fz ZSBCSVQoRFJNX1JPVEFURV8yNzApOgo+Pj4+ICsJCXBsYW5lX2N0bCB8PSBQTEFORV9DVExfUk9U QVRFXzI3MDsKPj4+PiArCQlicmVhazsKPj4+PiArCX0KPj4+Pgo+Pj4+ICAgCWludGVsX3VwZGF0 ZV9zcHJpdGVfd2F0ZXJtYXJrcyhkcm1fcGxhbmUsIGNydGMsIHNyY193LCBzcmNfaCwKPj4+PiAg IAkJCQkgICAgICAgcGl4ZWxfc2l6ZSwgdHJ1ZSwKPj4+PiBAQCAtMjgzLDEwICsyOTgsMjYgQEAg c2tsX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpkcm1fcGxhbmUsIHN0cnVjdCBkcm1f Y3J0YyAqY3J0YywKPj4+Pgo+Pj4+ICAgCXN1cmZfYWRkciA9IGludGVsX3BsYW5lX29ial9vZmZz ZXQoaW50ZWxfcGxhbmUsIG9iaik7Cj4+Pj4KPj4+PiAtCUk5MTVfV1JJVEUoUExBTkVfT0ZGU0VU KHBpcGUsIHBsYW5lKSwgKHkgPDwgMTYpIHwgeCk7Cj4+Pj4gLQlJOTE1X1dSSVRFKFBMQU5FX1NU UklERShwaXBlLCBwbGFuZSksIGZiLT5waXRjaGVzWzBdIC8gc3RyaWRlX2Rpdik7Cj4+Pj4gKwlp ZiAocm90YXRpb24gJiAoQklUKERSTV9ST1RBVEVfOTApIHwgQklUKERSTV9ST1RBVEVfMjcwKSkp IHsKPj4+PiArCQkvKiBzdHJpZGU6IFN1cmZhY2UgaGVpZ2h0IGluIHRpbGVzICovCj4+Pj4gKwkJ dGlsZV9oZWlnaHQgPSBpbnRlbF90aWxlX2hlaWdodChkZXYsIGZiLT5iaXRzX3Blcl9waXhlbCwK Pj4+PiArCQkJCQkJCWZiLT5tb2RpZmllclswXSk7Cj4+Pj4gKwkJc3RyaWRlID0gRElWX1JPVU5E X1VQKGZiLT5oZWlnaHQsIHRpbGVfaGVpZ2h0KTsKPj4+PiArCQlwbGFuZV9zaXplID0gKHNyY193 IDw8IDE2KSB8IHNyY19oOwo+Pj4+ICsJCXhfb2Zmc2V0ID0gc3RyaWRlICogdGlsZV9oZWlnaHQg LSB5IC0gKHNyY19oICsgMSk7Cj4+Pj4gKwkJeV9vZmZzZXQgPSB4Owo+Pj4+ICsJfSBlbHNlIHsK Pj4+PiArCQlzdHJpZGUgPSBmYi0+cGl0Y2hlc1swXSAvIHN0cmlkZV9kaXY7Cj4+Pj4gKwkJcGxh bmVfc2l6ZSA9IChzcmNfaCA8PCAxNikgfCBzcmNfdzsKPj4+PiArCQl4X29mZnNldCA9IHg7Cj4+ Pj4gKwkJeV9vZmZzZXQgPSB5Owo+Pj4+ICsJfQo+Pj4+ICsJcGxhbmVfb2Zmc2V0ID0geV9vZmZz ZXQgPDwgMTYgfCB4X29mZnNldDsKPj4+PiArCj4+Pj4gKwlJOTE1X1dSSVRFKFBMQU5FX09GRlNF VChwaXBlLCBwbGFuZSksIHBsYW5lX29mZnNldCk7Cj4+Pj4gKwlJOTE1X1dSSVRFKFBMQU5FX1NU UklERShwaXBlLCBwbGFuZSksIHN0cmlkZSk7Cj4+Pj4gICAJSTkxNV9XUklURShQTEFORV9QT1Mo cGlwZSwgcGxhbmUpLCAoY3J0Y195IDw8IDE2KSB8IGNydGNfeCk7Cj4+Pj4gLQlJOTE1X1dSSVRF KFBMQU5FX1NJWkUocGlwZSwgcGxhbmUpLCAoY3J0Y19oIDw8IDE2KSB8IGNydGNfdyk7Cj4+Pj4g KwlJOTE1X1dSSVRFKFBMQU5FX1NJWkUocGlwZSwgcGxhbmUpLCBwbGFuZV9zaXplKTsKPj4+PiAg IAlJOTE1X1dSSVRFKFBMQU5FX0NUTChwaXBlLCBwbGFuZSksIHBsYW5lX2N0bCk7Cj4+Pj4gICAJ STkxNV9XUklURShQTEFORV9TVVJGKHBpcGUsIHBsYW5lKSwgc3VyZl9hZGRyKTsKPj4+PiAgIAlQ T1NUSU5HX1JFQUQoUExBTkVfU1VSRihwaXBlLCBwbGFuZSkpOwo+Pj4+IEBAIC0xMzEwLDE2ICsx MzQxLDcgQEAgaW50ZWxfcGxhbmVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVtIHBp cGUgcGlwZSwgaW50IHBsYW5lKQo+Pj4+ICAgCQlnb3RvIG91dDsKPj4+PiAgIAl9Cj4+Pj4KPj4+ PiAtCWlmICghZGV2LT5tb2RlX2NvbmZpZy5yb3RhdGlvbl9wcm9wZXJ0eSkKPj4+PiAtCQlkZXYt Pm1vZGVfY29uZmlnLnJvdGF0aW9uX3Byb3BlcnR5ID0KPj4+PiAtCQkJZHJtX21vZGVfY3JlYXRl X3JvdGF0aW9uX3Byb3BlcnR5KGRldiwKPj4+PiAtCQkJCQkJCSAgQklUKERSTV9ST1RBVEVfMCkg fAo+Pj4+IC0JCQkJCQkJICBCSVQoRFJNX1JPVEFURV8xODApKTsKPj4+PiAtCj4+Pj4gLQlpZiAo ZGV2LT5tb2RlX2NvbmZpZy5yb3RhdGlvbl9wcm9wZXJ0eSkKPj4+PiAtCQlkcm1fb2JqZWN0X2F0 dGFjaF9wcm9wZXJ0eSgmaW50ZWxfcGxhbmUtPmJhc2UuYmFzZSwKPj4+PiAtCQkJCQkgICBkZXYt Pm1vZGVfY29uZmlnLnJvdGF0aW9uX3Byb3BlcnR5LAo+Pj4+IC0JCQkJCSAgIHN0YXRlLT5iYXNl LnJvdGF0aW9uKTsKPj4+PiArCWludGVsX2NyZWF0ZV9yb3RhdGlvbl9wcm9wZXJ0eShkZXYsIGlu dGVsX3BsYW5lKTsKPj4+Pgo+Pj4+ICAgCWRybV9wbGFuZV9oZWxwZXJfYWRkKCZpbnRlbF9wbGFu ZS0+YmFzZSwgJmludGVsX3BsYW5lX2hlbHBlcl9mdW5jcyk7Cj4+Pj4KPj4+PiAtLQo+Pj4+IDEu Ny4xMC40Cj4+Pj4KPj4+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwo+Pj4+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPj4+PiBJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCj4+Pj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeAo+Pj4KPgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ludGVsLWdmeAo=