From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v3 08/18] drm/i915: Pass 90/270 vs. 0/180 rotation info for intel_gen4_compute_page_offset() Date: Wed, 10 Feb 2016 08:35:53 +0100 Message-ID: <20160210073553.GF11240@phenom.ffwll.local> References: <1453316739-13296-1-git-send-email-ville.syrjala@linux.intel.com> <1453316739-13296-9-git-send-email-ville.syrjala@linux.intel.com> <20160125173017.GF11240@phenom.ffwll.local> <20160128185114.GK23290@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-f47.google.com (mail-wm0-f47.google.com [74.125.82.47]) by gabe.freedesktop.org (Postfix) with ESMTPS id EBBD76E0FD for ; Tue, 9 Feb 2016 23:35:30 -0800 (PST) Received: by mail-wm0-f47.google.com with SMTP id p63so15147981wmp.1 for ; Tue, 09 Feb 2016 23:35:30 -0800 (PST) Content-Disposition: inline In-Reply-To: <20160128185114.GK23290@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 T24gVGh1LCBKYW4gMjgsIDIwMTYgYXQgMDg6NTE6MTRQTSArMDIwMCwgVmlsbGUgU3lyasOkbMOk IHdyb3RlOgo+IE9uIE1vbiwgSmFuIDI1LCAyMDE2IGF0IDA2OjMwOjE3UE0gKzAxMDAsIERhbmll bCBWZXR0ZXIgd3JvdGU6Cj4gPiBPbiBXZWQsIEphbiAyMCwgMjAxNiBhdCAwOTowNToyOVBNICsw MjAwLCB2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbSB3cm90ZToKPiA+ID4gRnJvbTogVmls bGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiA+ID4gCj4gPiA+ IFRoZSBwYWdlIGFsaWduZWQgc3VyZmFjZSBhZGRyZXNzIGNhbGN1bGF0aW9uIG5lZWRzIHRvIGtu b3cgd2hpY2ggd2F5Cj4gPiA+IHRoaW5ncyBhcmUgcm90YXRlZC4gVGhlIGNvbnRyYWN0IG5vdyBz YXlzIHRoYXQgdGhlIGNhbGxlciBtdXN0IHBhc3MgdGhlCj4gPiA+IHJvdGF0ZSB4L3kgY29vcmRp bmF0ZXMsIGFzIHdlbGwgYXMgdGhlIHRpbGVfaGVpZ2h0IGFsaWduZWQgc3RyaWRlIGluCj4gPiA+ IHRoZSB0aWxlX2hlaWdodCBkaXJlY3Rpb24uIFRoaXMgd2lsbCBtYWtlIGl0IGZhaXJseSBzaW1w bGUgdG8gZGVhbCB3aXRoCj4gPiA+IDkwLzI3MCBkZWdyZWUgcm90YXRpb24gb24gU0tMKyB3aGVy ZSB3ZSBoYXZlIHRvIGRlYWwgd2l0aCB0aGUgcm90YXRlZAo+ID4gPiB2aWV3IGludG8gdGhlIEdU VC4KPiA+ID4gCj4gPiA+IHYyOiBQYXNzIHJvdGF0aW9uIGluc3RlYWQgb2YgYm9vbCBldmVuIHRo b3VnaHdlIG9ubHkgY2FyZSBhYm91dCAwLzE4MCB2cy4gOTAvMjcwCj4gPiA+IHYzOiBJbnRyb2R1 Y2UgaW50ZWxfdGlsZV9kaW1zKCksIGFuZCBkb24ndCBtaXggdXAgZGlmZmVyZW50IHVuaXRzIHNv IG11Y2gKPiA+ID4gCj4gPiA+IFNpZ25lZC1vZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUu c3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gPiA+IFJldmlld2VkLWJ5OiBEYW5pZWwgVmV0dGVy IDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPiAodjIpCj4gPiA+IC0tLQo+ID4gPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgNjYgKysrKysrKysrKysrKysrKysrKysrKysr Ky0tLS0tLS0tLS0tCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAg fCAgMyArLQo+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgIHwgMTgg KysrKystLS0tLQo+ID4gPiAgMyBmaWxlcyBjaGFuZ2VkLCA1OSBpbnNlcnRpb25zKCspLCAyOCBk ZWxldGlvbnMoLSkKPiA+ID4gCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMK PiA+ID4gaW5kZXggY2ZkNTJlYTY4ZTM0Li5iZGEzMjI0MDIxYjIgMTAwNjQ0Cj4gPiA+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+ID4gQEAgLTIyNjksNiArMjI2OSwxOCBA QCB1bnNpZ25lZCBpbnQgaW50ZWxfdGlsZV9oZWlnaHQoY29uc3Qgc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+ID4gPiAgCQkJaW50ZWxfdGlsZV93aWR0aChkZXZfcHJpdiwgZmJf bW9kaWZpZXIsIGNwcCk7Cj4gPiA+ICB9Cj4gPiA+ICAKPiA+ID4gKy8qIFJldHVybiB0aGUgdGls ZSBkaW1lbnNpb25zIGluIHBpeGVsIHVuaXRzICovCj4gPiA+ICtzdGF0aWMgdm9pZCBpbnRlbF90 aWxlX2RpbXMoY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gPiAr CQkJICAgIHVuc2lnbmVkIGludCAqdGlsZV93aWR0aCwKPiA+ID4gKwkJCSAgICB1bnNpZ25lZCBp bnQgKnRpbGVfaGVpZ2h0LAo+ID4gPiArCQkJICAgIHVpbnQ2NF90IGZiX21vZGlmaWVyLAo+ID4g PiArCQkJICAgIHVuc2lnbmVkIGludCBjcHApCj4gPiA+ICt7Cj4gPiA+ICsJKnRpbGVfd2lkdGgg PSBpbnRlbF90aWxlX3dpZHRoKGRldl9wcml2LCBmYl9tb2RpZmllciwgY3BwKTsKPiA+ID4gKwkq dGlsZV9oZWlnaHQgPSBpbnRlbF90aWxlX3NpemUoZGV2X3ByaXYpIC8gKnRpbGVfd2lkdGg7Cj4g PiA+ICsJKnRpbGVfd2lkdGggLz0gY3BwOwo+ID4gCj4gPiBTZWVtcyBsaWtlIG15IHN1Z2dlc3Rp b24gdG8gdXNlIHRpbGVfd2lkdGggaW4gY3BwIHdhc24ndCB0aGF0IGF3ZXNvbWUsIGF0Cj4gPiBs ZWFzdCB3ZSBzdGlsbCBoYXZlIGEgYmlnIGNvbmZ1c2lvbiByaWdodCBoZXJlLiBOb3Qgc3VyZSB3 aGF0IHRvIGRvLAo+ID4gZXNwZWNpYWxseSBzaW5jZSB0aGVzZSBraW5kIG9mIGNoYW5nZXMgYXJl IHN1cGVyLXBhaW5mdWwgdG8gcmV2aWV3LiBDb3VsZAo+ID4gd2UgcGVyaGFwcyBnbyBiYWNrIHRv IHRoZSBvbGQgdmVyc2lvbnMgYW5kIHVudGFuZ2xlIHRoaXMgbWVzcyBhZnRlcndhcmRzPwo+ID4g SWlyYyBJJ3ZlIGZvbGxvdy11cCB3aXRoIHItYiB0YWdzIHRvIGFsbCBwYXRjaGVzIGluIHRoZSBv bGQgc2VyaWVzIGZvcgo+ID4gdGhhdCBhcHByb2FjaC4KPiAKPiBIbW0uIFdoYXQgZGlkIEkgZG8g ZGlmZmVyZW50bHkgaW4gdGhlIG9sZCBhcHByb2FjaCBhZ2Fpbj8gT3RoZXIgdGhhbiBub3QKPiBo YXZpbmcgdGhlIGNvbmZ1c2lvbiBpc29sYXRlZCB0byB0aGlzIG9uZSBmdW5jdGlvbi4gT25lIHN0 ZXAgZm9yd2FyZCBhbmQKPiB0d28gYmFjayBkb2Vucyd0IHNvdW5kIHByb2R1Y3RpdmUuIFBsdXMg SSBoYXZlIHNvbWUgbW9yZSBwYXRjaGVzIG9uIHRvcAo+IG9mIHRoaXMgb25lIGFscmVhZHksIHNv IG5vdCBwbGVhc2FudCBhdCBhbGwuCgpPbGQgcGF0Y2ggcmV1c2VkIHRoZSBzYW1lIHZhcmlhYmxl cyBmb3IgdmFsdWVzIGJvdGggaW4gYnl0ZXMgYW5kIHBpeGVscwooYW5kIHRoZSBjb252ZXJzaW9u IGhhcHBlbmVkIGRlZXAgZG93biBpbiBzb21lIGZ1bmN0aW9uIGNhbGwsIHdpdGhvdXQgYW55CmNv bW1lbnRzKS4gVGhpcyBoZXJlIGxvb2tzIGJldHRlciwgYnV0IHN0aWxsIHN1ZmZlcnMgYSBiaXQg ZnJvbSBjb25mdXNpbmcKbmFtaW5nLgoKPiAKPiBBbnl3YXksIHRvIGF2b2lkIG1vcmUgY29uZnVz aW9uIEkgc3VwcG9zZSBvbmUgdGhpbmcgdGhhdCBjb3VsZCBiZSBkb25lCj4gaXMgdGhpczoKPiAt IGludGVsX3RpbGVfd2lkdGgKPiArIGludGVsX3RpbGVfd2lkdGhfYnl0ZXMKPiAKPiBpbnRlbF90 aWxlX2RpbXMoKQo+IHsKPiAJdGlsZV93aWR0aF9ieXRlcyA9IGludGVsX3RpbGVfd2lkdGhfYnl0 ZXMoKQo+IAkqdGlsZV9oZWlnaHQgPSB0aWxlX3NpemUgLyB0aWxlX3dpZHRoX2J5dGVzOwo+IAkq dGlsZV93aWR0aCA9IHRpbGVfd2lkdGhfYnl0ZXMgLyBjcHA7Cj4gfQoKWWVhaCB0aGF0IHNvdW5k cyByZWFzb25hYmxlIEkgdGhpbmsuCi1EYW5pZWwKCj4gCj4gPiAKPiA+IE5vIGlkZWEgcmVhbGx5 IHdoYXQgd291bGQgYmUgYmVzdCBoZXJlIC4uLgo+ID4gLURhbmllbAo+ID4gCj4gPiA+ICt9Cj4g PiA+ICsKPiA+ID4gIHVuc2lnbmVkIGludAo+ID4gPiAgaW50ZWxfZmJfYWxpZ25faGVpZ2h0KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBoZWlnaHQsCj4gPiA+ICAJCSAgICAg IHVpbnQzMl90IHBpeGVsX2Zvcm1hdCwgdWludDY0X3QgZmJfbW9kaWZpZXIpCj4gPiA+IEBAIC0y MzA2LDE5ICsyMzE4LDE5IEBAIGludGVsX2ZpbGxfZmJfZ2d0dF92aWV3KHN0cnVjdCBpOTE1X2dn dHRfdmlldyAqdmlldywgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCj4gPiA+ICAJdGlsZV9z aXplID0gaW50ZWxfdGlsZV9zaXplKGRldl9wcml2KTsKPiA+ID4gIAo+ID4gPiAgCWNwcCA9IGRy bV9mb3JtYXRfcGxhbmVfY3BwKGZiLT5waXhlbF9mb3JtYXQsIDApOwo+ID4gPiAtCXRpbGVfd2lk dGggPSBpbnRlbF90aWxlX3dpZHRoKGRldl9wcml2LCBmYi0+bW9kaWZpZXJbMF0sIGNwcCk7Cj4g PiA+IC0JdGlsZV9oZWlnaHQgPSB0aWxlX3NpemUgLyB0aWxlX3dpZHRoOwo+ID4gPiArCWludGVs X3RpbGVfZGltcyhkZXZfcHJpdiwgJnRpbGVfd2lkdGgsICZ0aWxlX2hlaWdodCwKPiA+ID4gKwkJ CWZiLT5tb2RpZmllclswXSwgY3BwKTsKPiA+ID4gIAo+ID4gPiAtCWluZm8tPndpZHRoX3BhZ2Vz ID0gRElWX1JPVU5EX1VQKGZiLT5waXRjaGVzWzBdLCB0aWxlX3dpZHRoKTsKPiA+ID4gKwlpbmZv LT53aWR0aF9wYWdlcyA9IERJVl9ST1VORF9VUChmYi0+cGl0Y2hlc1swXSwgdGlsZV93aWR0aCAq IGNwcCk7Cj4gPiA+ICAJaW5mby0+aGVpZ2h0X3BhZ2VzID0gRElWX1JPVU5EX1VQKGZiLT5oZWln aHQsIHRpbGVfaGVpZ2h0KTsKPiA+ID4gIAlpbmZvLT5zaXplID0gaW5mby0+d2lkdGhfcGFnZXMg KiBpbmZvLT5oZWlnaHRfcGFnZXMgKiB0aWxlX3NpemU7Cj4gPiA+ICAKPiA+ID4gIAlpZiAoaW5m by0+cGl4ZWxfZm9ybWF0ID09IERSTV9GT1JNQVRfTlYxMikgewo+ID4gPiAgCQljcHAgPSBkcm1f Zm9ybWF0X3BsYW5lX2NwcChmYi0+cGl4ZWxfZm9ybWF0LCAxKTsKPiA+ID4gLQkJdGlsZV93aWR0 aCA9IGludGVsX3RpbGVfd2lkdGgoZGV2X3ByaXYsIGZiLT5tb2RpZmllclsxXSwgY3BwKTsKPiA+ ID4gLQkJdGlsZV9oZWlnaHQgPSB0aWxlX3NpemUgLyB0aWxlX3dpZHRoOwo+ID4gPiArCQlpbnRl bF90aWxlX2RpbXMoZGV2X3ByaXYsICZ0aWxlX3dpZHRoLCAmdGlsZV9oZWlnaHQsCj4gPiA+ICsJ CQkJZmItPm1vZGlmaWVyWzFdLCBjcHApOwo+ID4gPiAgCj4gPiA+IC0JCWluZm8tPndpZHRoX3Bh Z2VzX3V2ID0gRElWX1JPVU5EX1VQKGZiLT5waXRjaGVzWzFdLCB0aWxlX3dpZHRoKTsKPiA+ID4g KwkJaW5mby0+d2lkdGhfcGFnZXNfdXYgPSBESVZfUk9VTkRfVVAoZmItPnBpdGNoZXNbMV0sIHRp bGVfd2lkdGggKiBjcHApOwo+ID4gPiAgCQlpbmZvLT5oZWlnaHRfcGFnZXNfdXYgPSBESVZfUk9V TkRfVVAoZmItPmhlaWdodCAvIDIsIHRpbGVfaGVpZ2h0KTsKPiA+ID4gIAkJaW5mby0+c2l6ZV91 diA9IGluZm8tPndpZHRoX3BhZ2VzX3V2ICogaW5mby0+aGVpZ2h0X3BhZ2VzX3V2ICogdGlsZV9z aXplOwo+ID4gPiAgCX0KPiA+ID4gQEAgLTI0NDYsMjkgKzI0NTgsNDMgQEAgc3RhdGljIHZvaWQg aW50ZWxfdW5waW5fZmJfb2JqKHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAo+ID4gPiAgCWk5 MTVfZ2VtX29iamVjdF91bnBpbl9mcm9tX2Rpc3BsYXlfcGxhbmUob2JqLCAmdmlldyk7Cj4gPiA+ ICB9Cj4gPiA+ICAKPiA+ID4gLS8qIENvbXB1dGVzIHRoZSBsaW5lYXIgb2Zmc2V0IHRvIHRoZSBi YXNlIHRpbGUgYW5kIGFkanVzdHMgeCwgeS4gYnl0ZXMgcGVyIHBpeGVsCj4gPiA+IC0gKiBpcyBh c3N1bWVkIHRvIGJlIGEgcG93ZXItb2YtdHdvLiAqLwo+ID4gPiArLyoKPiA+ID4gKyAqIENvbXB1 dGVzIHRoZSBsaW5lYXIgb2Zmc2V0IHRvIHRoZSBiYXNlIHRpbGUgYW5kIGFkanVzdHMKPiA+ID4g KyAqIHgsIHkuIGJ5dGVzIHBlciBwaXhlbCBpcyBhc3N1bWVkIHRvIGJlIGEgcG93ZXItb2YtdHdv Lgo+ID4gPiArICoKPiA+ID4gKyAqIEluIHRoZSA5MC8yNzAgcm90YXRlZCBjYXNlLCB4IGFuZCB5 IGFyZSBhc3N1bWVkCj4gPiA+ICsgKiB0byBiZSBhbHJlYWR5IHJvdGF0ZWQgdG8gbWF0Y2ggdGhl IHJvdGF0ZWQgR1RUIHZpZXcsIGFuZAo+ID4gPiArICogcGl0Y2ggaXMgdGhlIHRpbGVfaGVpZ2h0 IGFsaWduZWQgZnJhbWVidWZmZXIgaGVpZ2h0Lgo+ID4gPiArICovCj4gPiA+ICB1MzIgaW50ZWxf Y29tcHV0ZV90aWxlX29mZnNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4g PiA+ICAJCQkgICAgICBpbnQgKngsIGludCAqeSwKPiA+ID4gIAkJCSAgICAgIHVpbnQ2NF90IGZi X21vZGlmaWVyLAo+ID4gPiAgCQkJICAgICAgdW5zaWduZWQgaW50IGNwcCwKPiA+ID4gLQkJCSAg ICAgIHVuc2lnbmVkIGludCBwaXRjaCkKPiA+ID4gKwkJCSAgICAgIHVuc2lnbmVkIGludCBwaXRj aCwKPiA+ID4gKwkJCSAgICAgIHVuc2lnbmVkIGludCByb3RhdGlvbikKPiA+ID4gIHsKPiA+ID4g IAlpZiAoZmJfbW9kaWZpZXIgIT0gRFJNX0ZPUk1BVF9NT0RfTk9ORSkgewo+ID4gPiAgCQl1bnNp Z25lZCBpbnQgdGlsZV9zaXplLCB0aWxlX3dpZHRoLCB0aWxlX2hlaWdodDsKPiA+ID4gLQkJdW5z aWduZWQgaW50IHRpbGVfcm93cywgdGlsZXM7Cj4gPiA+ICsJCXVuc2lnbmVkIGludCB0aWxlX3Jv d3MsIHRpbGVzLCBwaXRjaF90aWxlczsKPiA+ID4gIAo+ID4gPiAgCQl0aWxlX3NpemUgPSBpbnRl bF90aWxlX3NpemUoZGV2X3ByaXYpOwo+ID4gPiAtCQl0aWxlX3dpZHRoID0gaW50ZWxfdGlsZV93 aWR0aChkZXZfcHJpdiwgZmJfbW9kaWZpZXIsIGNwcCk7Cj4gPiA+IC0JCXRpbGVfaGVpZ2h0ID0g dGlsZV9zaXplIC8gdGlsZV93aWR0aDsKPiA+ID4gKwkJaW50ZWxfdGlsZV9kaW1zKGRldl9wcml2 LCAmdGlsZV93aWR0aCwgJnRpbGVfaGVpZ2h0LAo+ID4gPiArCQkJCWZiX21vZGlmaWVyLCBjcHAp Owo+ID4gPiArCj4gPiA+ICsJCWlmIChpbnRlbF9yb3RhdGlvbl85MF9vcl8yNzAocm90YXRpb24p KSB7Cj4gPiA+ICsJCQlwaXRjaF90aWxlcyA9IHBpdGNoIC8gdGlsZV9oZWlnaHQ7Cj4gPiA+ICsJ CQlzd2FwKHRpbGVfd2lkdGgsIHRpbGVfaGVpZ2h0KTsKPiA+ID4gKwkJfSBlbHNlIHsKPiA+ID4g KwkJCXBpdGNoX3RpbGVzID0gcGl0Y2ggLyAodGlsZV93aWR0aCAqIGNwcCk7Cj4gPiA+ICsJCX0K PiA+ID4gIAo+ID4gPiAgCQl0aWxlX3Jvd3MgPSAqeSAvIHRpbGVfaGVpZ2h0Owo+ID4gPiAgCQkq eSAlPSB0aWxlX2hlaWdodDsKPiA+ID4gIAo+ID4gPiAtCQl0aWxlcyA9ICp4IC8gKHRpbGVfd2lk dGgvY3BwKTsKPiA+ID4gLQkJKnggJT0gdGlsZV93aWR0aC9jcHA7Cj4gPiA+ICsJCXRpbGVzID0g KnggLyB0aWxlX3dpZHRoOwo+ID4gPiArCQkqeCAlPSB0aWxlX3dpZHRoOwo+ID4gPiAgCj4gPiA+ IC0JCXJldHVybiB0aWxlX3Jvd3MgKiBwaXRjaCAqIHRpbGVfaGVpZ2h0ICsgdGlsZXMgKiB0aWxl X3NpemU7Cj4gPiA+ICsJCXJldHVybiAodGlsZV9yb3dzICogcGl0Y2hfdGlsZXMgKyB0aWxlcykg KiB0aWxlX3NpemU7Cj4gPiA+ICAJfSBlbHNlIHsKPiA+ID4gIAkJdW5zaWduZWQgaW50IGFsaWdu bWVudCA9IGludGVsX2xpbmVhcl9hbGlnbm1lbnQoZGV2X3ByaXYpIC0gMTsKPiA+ID4gIAkJdW5z aWduZWQgaW50IG9mZnNldDsKPiA+ID4gQEAgLTI3MDksNiArMjczNSw3IEBAIHN0YXRpYyB2b2lk IGk5eHhfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcHJpbWFyeSwKPiA+ ID4gIAl1MzIgbGluZWFyX29mZnNldDsKPiA+ID4gIAl1MzIgZHNwY250cjsKPiA+ID4gIAlpOTE1 X3JlZ190IHJlZyA9IERTUENOVFIocGxhbmUpOwo+ID4gPiArCXVuc2lnbmVkIGludCByb3RhdGlv biA9IHBsYW5lX3N0YXRlLT5iYXNlLnJvdGF0aW9uOwo+ID4gPiAgCWludCBjcHAgPSBkcm1fZm9y bWF0X3BsYW5lX2NwcChmYi0+cGl4ZWxfZm9ybWF0LCAwKTsKPiA+ID4gIAlpbnQgeCA9IHBsYW5l X3N0YXRlLT5zcmMueDEgPj4gMTY7Cj4gPiA+ICAJaW50IHkgPSBwbGFuZV9zdGF0ZS0+c3JjLnkx ID4+IDE2Owo+ID4gPiBAQCAtMjc3NSwxMyArMjgwMiwxMyBAQCBzdGF0aWMgdm9pZCBpOXh4X3Vw ZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnByaW1hcnksCj4gPiA+ICAJCWlu dGVsX2NydGMtPmRzcGFkZHJfb2Zmc2V0ID0KPiA+ID4gIAkJCWludGVsX2NvbXB1dGVfdGlsZV9v ZmZzZXQoZGV2X3ByaXYsICZ4LCAmeSwKPiA+ID4gIAkJCQkJCSAgZmItPm1vZGlmaWVyWzBdLCBj cHAsCj4gPiA+IC0JCQkJCQkgIGZiLT5waXRjaGVzWzBdKTsKPiA+ID4gKwkJCQkJCSAgZmItPnBp dGNoZXNbMF0sIHJvdGF0aW9uKTsKPiA+ID4gIAkJbGluZWFyX29mZnNldCAtPSBpbnRlbF9jcnRj LT5kc3BhZGRyX29mZnNldDsKPiA+ID4gIAl9IGVsc2Ugewo+ID4gPiAgCQlpbnRlbF9jcnRjLT5k c3BhZGRyX29mZnNldCA9IGxpbmVhcl9vZmZzZXQ7Cj4gPiA+ICAJfQo+ID4gPiAgCj4gPiA+IC0J aWYgKHBsYW5lX3N0YXRlLT5iYXNlLnJvdGF0aW9uID09IEJJVChEUk1fUk9UQVRFXzE4MCkpIHsK PiA+ID4gKwlpZiAocm90YXRpb24gPT0gQklUKERSTV9ST1RBVEVfMTgwKSkgewo+ID4gPiAgCQlk c3BjbnRyIHw9IERJU1BQTEFORV9ST1RBVEVfMTgwOwo+ID4gPiAgCj4gPiA+ICAJCXggKz0gKGNy dGNfc3RhdGUtPnBpcGVfc3JjX3cgLSAxKTsKPiA+ID4gQEAgLTI4MzksNiArMjg2Niw3IEBAIHN0 YXRpYyB2b2lkIGlyb25sYWtlX3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUg KnByaW1hcnksCj4gPiA+ICAJdTMyIGxpbmVhcl9vZmZzZXQ7Cj4gPiA+ICAJdTMyIGRzcGNudHI7 Cj4gPiA+ICAJaTkxNV9yZWdfdCByZWcgPSBEU1BDTlRSKHBsYW5lKTsKPiA+ID4gKwl1bnNpZ25l ZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbjsKPiA+ID4gIAlpbnQg Y3BwID0gZHJtX2Zvcm1hdF9wbGFuZV9jcHAoZmItPnBpeGVsX2Zvcm1hdCwgMCk7Cj4gPiA+ICAJ aW50IHggPSBwbGFuZV9zdGF0ZS0+c3JjLngxID4+IDE2Owo+ID4gPiAgCWludCB5ID0gcGxhbmVf c3RhdGUtPnNyYy55MSA+PiAxNjsKPiA+ID4gQEAgLTI4ODIsOSArMjkxMCw5IEBAIHN0YXRpYyB2 b2lkIGlyb25sYWtlX3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnByaW1h cnksCj4gPiA+ICAJaW50ZWxfY3J0Yy0+ZHNwYWRkcl9vZmZzZXQgPQo+ID4gPiAgCQlpbnRlbF9j b21wdXRlX3RpbGVfb2Zmc2V0KGRldl9wcml2LCAmeCwgJnksCj4gPiA+ICAJCQkJCSAgZmItPm1v ZGlmaWVyWzBdLCBjcHAsCj4gPiA+IC0JCQkJCSAgZmItPnBpdGNoZXNbMF0pOwo+ID4gPiArCQkJ CQkgIGZiLT5waXRjaGVzWzBdLCByb3RhdGlvbik7Cj4gPiA+ICAJbGluZWFyX29mZnNldCAtPSBp bnRlbF9jcnRjLT5kc3BhZGRyX29mZnNldDsKPiA+ID4gLQlpZiAocGxhbmVfc3RhdGUtPmJhc2Uu cm90YXRpb24gPT0gQklUKERSTV9ST1RBVEVfMTgwKSkgewo+ID4gPiArCWlmIChyb3RhdGlvbiA9 PSBCSVQoRFJNX1JPVEFURV8xODApKSB7Cj4gPiA+ICAJCWRzcGNudHIgfD0gRElTUFBMQU5FX1JP VEFURV8xODA7Cj4gPiA+ICAKPiA+ID4gIAkJaWYgKCFJU19IQVNXRUxMKGRldikgJiYgIUlTX0JS T0FEV0VMTChkZXYpKSB7Cj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiA+IGluZGV4 IGY2MjAwMjNlZDEzNC4uMjIzNjkzZGJmZTdjIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcnYuaAo+ID4gPiBAQCAtMTE3Niw3ICsxMTc2LDggQEAgdTMyIGludGVsX2NvbXB1dGVf dGlsZV9vZmZzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gPiAgCQkJ ICAgICAgaW50ICp4LCBpbnQgKnksCj4gPiA+ICAJCQkgICAgICB1aW50NjRfdCBmYl9tb2RpZmll ciwKPiA+ID4gIAkJCSAgICAgIHVuc2lnbmVkIGludCBjcHAsCj4gPiA+IC0JCQkgICAgICB1bnNp Z25lZCBpbnQgcGl0Y2gpOwo+ID4gPiArCQkJICAgICAgdW5zaWduZWQgaW50IHBpdGNoLAo+ID4g PiArCQkJICAgICAgdW5zaWduZWQgaW50IHJvdGF0aW9uKTsKPiA+ID4gIHZvaWQgaW50ZWxfcHJl cGFyZV9yZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiA+ID4gIHZvaWQgaW50ZWxfZmlu aXNoX3Jlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ID4gPiAgdm9pZCBoc3dfZW5hYmxl X3BjOChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ID4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9zcHJpdGUuYwo+ID4gPiBpbmRleCBhMjU4MmM0NTViMzYuLjdkYzJiOGIyYTRh YyAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMK PiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPiA+ID4gQEAg LTE5Myw3ICsxOTMsNyBAQCBza2xfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKmRybV9w bGFuZSwKPiA+ID4gIAljb25zdCBzdHJ1Y3QgZHJtX2ludGVsX3Nwcml0ZV9jb2xvcmtleSAqa2V5 ID0gJnBsYW5lX3N0YXRlLT5ja2V5Owo+ID4gPiAgCXUzMiBzdXJmX2FkZHI7Cj4gPiA+ICAJdTMy IHRpbGVfaGVpZ2h0LCBwbGFuZV9vZmZzZXQsIHBsYW5lX3NpemU7Cj4gPiA+IC0JdW5zaWduZWQg aW50IHJvdGF0aW9uOwo+ID4gPiArCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRl LT5iYXNlLnJvdGF0aW9uOwo+ID4gPiAgCWludCB4X29mZnNldCwgeV9vZmZzZXQ7Cj4gPiA+ICAJ aW50IGNydGNfeCA9IHBsYW5lX3N0YXRlLT5kc3QueDE7Cj4gPiA+ICAJaW50IGNydGNfeSA9IHBs YW5lX3N0YXRlLT5kc3QueTE7Cj4gPiA+IEBAIC0yMTMsNyArMjEzLDYgQEAgc2tsX3VwZGF0ZV9w bGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpkcm1fcGxhbmUsCj4gPiA+ICAJcGxhbmVfY3RsIHw9IHNr bF9wbGFuZV9jdGxfZm9ybWF0KGZiLT5waXhlbF9mb3JtYXQpOwo+ID4gPiAgCXBsYW5lX2N0bCB8 PSBza2xfcGxhbmVfY3RsX3RpbGluZyhmYi0+bW9kaWZpZXJbMF0pOwo+ID4gPiAgCj4gPiA+IC0J cm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbjsKPiA+ID4gIAlwbGFuZV9jdGwg fD0gc2tsX3BsYW5lX2N0bF9yb3RhdGlvbihyb3RhdGlvbik7Cj4gPiA+ICAKPiA+ID4gIAlzdHJp ZGVfZGl2ID0gaW50ZWxfZmJfc3RyaWRlX2FsaWdubWVudChkZXZfcHJpdiwgZmItPm1vZGlmaWVy WzBdLAo+ID4gPiBAQCAtMzUxLDYgKzM1MCw3IEBAIHZsdl91cGRhdGVfcGxhbmUoc3RydWN0IGRy bV9wbGFuZSAqZHBsYW5lLAo+ID4gPiAgCWludCBwbGFuZSA9IGludGVsX3BsYW5lLT5wbGFuZTsK PiA+ID4gIAl1MzIgc3ByY3RsOwo+ID4gPiAgCXUzMiBzcHJzdXJmX29mZnNldCwgbGluZWFyX29m ZnNldDsKPiA+ID4gKwl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBkcGxhbmUtPnN0YXRlLT5yb3Rh dGlvbjsKPiA+ID4gIAlpbnQgY3BwID0gZHJtX2Zvcm1hdF9wbGFuZV9jcHAoZmItPnBpeGVsX2Zv cm1hdCwgMCk7Cj4gPiA+ICAJY29uc3Qgc3RydWN0IGRybV9pbnRlbF9zcHJpdGVfY29sb3JrZXkg KmtleSA9ICZwbGFuZV9zdGF0ZS0+Y2tleTsKPiA+ID4gIAlpbnQgY3J0Y194ID0gcGxhbmVfc3Rh dGUtPmRzdC54MTsKPiA+ID4gQEAgLTQyNSwxMCArNDI1LDEwIEBAIHZsdl91cGRhdGVfcGxhbmUo c3RydWN0IGRybV9wbGFuZSAqZHBsYW5lLAo+ID4gPiAgCWxpbmVhcl9vZmZzZXQgPSB5ICogZmIt PnBpdGNoZXNbMF0gKyB4ICogY3BwOwo+ID4gPiAgCXNwcnN1cmZfb2Zmc2V0ID0gaW50ZWxfY29t cHV0ZV90aWxlX29mZnNldChkZXZfcHJpdiwgJngsICZ5LAo+ID4gPiAgCQkJCQkJICAgZmItPm1v ZGlmaWVyWzBdLCBjcHAsCj4gPiA+IC0JCQkJCQkgICBmYi0+cGl0Y2hlc1swXSk7Cj4gPiA+ICsJ CQkJCQkgICBmYi0+cGl0Y2hlc1swXSwgcm90YXRpb24pOwo+ID4gPiAgCWxpbmVhcl9vZmZzZXQg LT0gc3Byc3VyZl9vZmZzZXQ7Cj4gPiA+ICAKPiA+ID4gLQlpZiAocGxhbmVfc3RhdGUtPmJhc2Uu cm90YXRpb24gPT0gQklUKERSTV9ST1RBVEVfMTgwKSkgewo+ID4gPiArCWlmIChyb3RhdGlvbiA9 PSBCSVQoRFJNX1JPVEFURV8xODApKSB7Cj4gPiA+ICAJCXNwcmN0bCB8PSBTUF9ST1RBVEVfMTgw Owo+ID4gPiAgCj4gPiA+ICAJCXggKz0gc3JjX3c7Cj4gPiA+IEBAIC00OTMsNiArNDkzLDcgQEAg aXZiX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiA+ID4gIAllbnVtIHBp cGUgcGlwZSA9IGludGVsX3BsYW5lLT5waXBlOwo+ID4gPiAgCXUzMiBzcHJjdGwsIHNwcnNjYWxl ID0gMDsKPiA+ID4gIAl1MzIgc3Byc3VyZl9vZmZzZXQsIGxpbmVhcl9vZmZzZXQ7Cj4gPiA+ICsJ dW5zaWduZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmJhc2Uucm90YXRpb247Cj4gPiA+ ICAJaW50IGNwcCA9IGRybV9mb3JtYXRfcGxhbmVfY3BwKGZiLT5waXhlbF9mb3JtYXQsIDApOwo+ ID4gPiAgCWNvbnN0IHN0cnVjdCBkcm1faW50ZWxfc3ByaXRlX2NvbG9ya2V5ICprZXkgPSAmcGxh bmVfc3RhdGUtPmNrZXk7Cj4gPiA+ICAJaW50IGNydGNfeCA9IHBsYW5lX3N0YXRlLT5kc3QueDE7 Cj4gPiA+IEBAIC01NTgsMTAgKzU1OSwxMCBAQCBpdmJfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1f cGxhbmUgKnBsYW5lLAo+ID4gPiAgCWxpbmVhcl9vZmZzZXQgPSB5ICogZmItPnBpdGNoZXNbMF0g KyB4ICogY3BwOwo+ID4gPiAgCXNwcnN1cmZfb2Zmc2V0ID0gaW50ZWxfY29tcHV0ZV90aWxlX29m ZnNldChkZXZfcHJpdiwgJngsICZ5LAo+ID4gPiAgCQkJCQkJICAgZmItPm1vZGlmaWVyWzBdLCBj cHAsCj4gPiA+IC0JCQkJCQkgICBmYi0+cGl0Y2hlc1swXSk7Cj4gPiA+ICsJCQkJCQkgICBmYi0+ cGl0Y2hlc1swXSwgcm90YXRpb24pOwo+ID4gPiAgCWxpbmVhcl9vZmZzZXQgLT0gc3Byc3VyZl9v ZmZzZXQ7Cj4gPiA+ICAKPiA+ID4gLQlpZiAocGxhbmVfc3RhdGUtPmJhc2Uucm90YXRpb24gPT0g QklUKERSTV9ST1RBVEVfMTgwKSkgewo+ID4gPiArCWlmIChyb3RhdGlvbiA9PSBCSVQoRFJNX1JP VEFURV8xODApKSB7Cj4gPiA+ICAJCXNwcmN0bCB8PSBTUFJJVEVfUk9UQVRFXzE4MDsKPiA+ID4g IAo+ID4gPiAgCQkvKiBIU1cgYW5kIEJEVyBkb2VzIHRoaXMgYXV0b21hZ2ljYWxseSBpbiBoYXJk d2FyZSAqLwo+ID4gPiBAQCAtNjM0LDYgKzYzNSw3IEBAIGlsa191cGRhdGVfcGxhbmUoc3RydWN0 IGRybV9wbGFuZSAqcGxhbmUsCj4gPiA+ICAJaW50IHBpcGUgPSBpbnRlbF9wbGFuZS0+cGlwZTsK PiA+ID4gIAl1MzIgZHZzY250ciwgZHZzc2NhbGU7Cj4gPiA+ICAJdTMyIGR2c3N1cmZfb2Zmc2V0 LCBsaW5lYXJfb2Zmc2V0Owo+ID4gPiArCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0 YXRlLT5iYXNlLnJvdGF0aW9uOwo+ID4gPiAgCWludCBjcHAgPSBkcm1fZm9ybWF0X3BsYW5lX2Nw cChmYi0+cGl4ZWxfZm9ybWF0LCAwKTsKPiA+ID4gIAljb25zdCBzdHJ1Y3QgZHJtX2ludGVsX3Nw cml0ZV9jb2xvcmtleSAqa2V5ID0gJnBsYW5lX3N0YXRlLT5ja2V5Owo+ID4gPiAgCWludCBjcnRj X3ggPSBwbGFuZV9zdGF0ZS0+ZHN0LngxOwo+ID4gPiBAQCAtNjk1LDEwICs2OTcsMTAgQEAgaWxr X3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiA+ID4gIAlsaW5lYXJfb2Zm c2V0ID0geSAqIGZiLT5waXRjaGVzWzBdICsgeCAqIGNwcDsKPiA+ID4gIAlkdnNzdXJmX29mZnNl dCA9IGludGVsX2NvbXB1dGVfdGlsZV9vZmZzZXQoZGV2X3ByaXYsICZ4LCAmeSwKPiA+ID4gIAkJ CQkJCSAgIGZiLT5tb2RpZmllclswXSwgY3BwLAo+ID4gPiAtCQkJCQkJICAgZmItPnBpdGNoZXNb MF0pOwo+ID4gPiArCQkJCQkJICAgZmItPnBpdGNoZXNbMF0sIHJvdGF0aW9uKTsKPiA+ID4gIAls aW5lYXJfb2Zmc2V0IC09IGR2c3N1cmZfb2Zmc2V0Owo+ID4gPiAgCj4gPiA+IC0JaWYgKHBsYW5l X3N0YXRlLT5iYXNlLnJvdGF0aW9uID09IEJJVChEUk1fUk9UQVRFXzE4MCkpIHsKPiA+ID4gKwlp ZiAocm90YXRpb24gPT0gQklUKERSTV9ST1RBVEVfMTgwKSkgewo+ID4gPiAgCQlkdnNjbnRyIHw9 IERWU19ST1RBVEVfMTgwOwo+ID4gPiAgCj4gPiA+ICAJCXggKz0gc3JjX3c7Cj4gPiA+IC0tIAo+ ID4gPiAyLjQuMTAKPiA+ID4gCj4gPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCj4gPiA+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiA+ID4gSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ID4gPiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cj4gPiAKPiA+IC0tIAo+ID4gRGFuaWVsIFZl dHRlcgo+ID4gU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCj4gPiBodHRwOi8v YmxvZy5mZndsbC5jaAo+IAo+IC0tIAo+IFZpbGxlIFN5cmrDpGzDpAo+IEludGVsIE9UQwoKLS0g CkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6 Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeAo=