From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v3 08/18] drm/i915: Pass 90/270 vs. 0/180 rotation info for intel_gen4_compute_page_offset() Date: Thu, 28 Jan 2016 20:51:14 +0200 Message-ID: <20160128185114.GK23290@intel.com> 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> 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 9C2E66E8D3 for ; Thu, 28 Jan 2016 10:51:17 -0800 (PST) Content-Disposition: inline In-Reply-To: <20160125173017.GF11240@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBKYW4gMjUsIDIwMTYgYXQgMDY6MzA6MTdQTSArMDEwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBXZWQsIEphbiAyMCwgMjAxNiBhdCAwOTowNToyOVBNICswMjAwLCB2aWxsZS5z eXJqYWxhQGxpbnV4LmludGVsLmNvbSB3cm90ZToKPiA+IEZyb206IFZpbGxlIFN5cmrDpGzDpCA8 dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gPiAKPiA+IFRoZSBwYWdlIGFsaWduZWQg c3VyZmFjZSBhZGRyZXNzIGNhbGN1bGF0aW9uIG5lZWRzIHRvIGtub3cgd2hpY2ggd2F5Cj4gPiB0 aGluZ3MgYXJlIHJvdGF0ZWQuIFRoZSBjb250cmFjdCBub3cgc2F5cyB0aGF0IHRoZSBjYWxsZXIg bXVzdCBwYXNzIHRoZQo+ID4gcm90YXRlIHgveSBjb29yZGluYXRlcywgYXMgd2VsbCBhcyB0aGUg dGlsZV9oZWlnaHQgYWxpZ25lZCBzdHJpZGUgaW4KPiA+IHRoZSB0aWxlX2hlaWdodCBkaXJlY3Rp b24uIFRoaXMgd2lsbCBtYWtlIGl0IGZhaXJseSBzaW1wbGUgdG8gZGVhbCB3aXRoCj4gPiA5MC8y NzAgZGVncmVlIHJvdGF0aW9uIG9uIFNLTCsgd2hlcmUgd2UgaGF2ZSB0byBkZWFsIHdpdGggdGhl IHJvdGF0ZWQKPiA+IHZpZXcgaW50byB0aGUgR1RULgo+ID4gCj4gPiB2MjogUGFzcyByb3RhdGlv biBpbnN0ZWFkIG9mIGJvb2wgZXZlbiB0aG91Z2h3ZSBvbmx5IGNhcmUgYWJvdXQgMC8xODAgdnMu IDkwLzI3MAo+ID4gdjM6IEludHJvZHVjZSBpbnRlbF90aWxlX2RpbXMoKSwgYW5kIGRvbid0IG1p eCB1cCBkaWZmZXJlbnQgdW5pdHMgc28gbXVjaAo+ID4gCj4gPiBTaWduZWQtb2ZmLWJ5OiBWaWxs ZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+ID4gUmV2aWV3ZWQt Ynk6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+ICh2MikKPiA+IC0tLQo+ ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8IDY2ICsrKysrKysrKysr KysrKysrKysrKysrKystLS0tLS0tLS0tLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rydi5oICAgICB8ICAzICstCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRl LmMgIHwgMTggKysrKystLS0tLQo+ID4gIDMgZmlsZXMgY2hhbmdlZCwgNTkgaW5zZXJ0aW9ucygr KSwgMjggZGVsZXRpb25zKC0pCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMKPiA+IGluZGV4IGNmZDUyZWE2OGUzNC4uYmRhMzIyNDAyMWIyIDEwMDY0NAo+ID4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+IEBAIC0yMjY5LDYgKzIyNjksMTggQEAgdW5z aWduZWQgaW50IGludGVsX3RpbGVfaGVpZ2h0KGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKPiA+ICAJCQlpbnRlbF90aWxlX3dpZHRoKGRldl9wcml2LCBmYl9tb2RpZmll ciwgY3BwKTsKPiA+ICB9Cj4gPiAgCj4gPiArLyogUmV0dXJuIHRoZSB0aWxlIGRpbWVuc2lvbnMg aW4gcGl4ZWwgdW5pdHMgKi8KPiA+ICtzdGF0aWMgdm9pZCBpbnRlbF90aWxlX2RpbXMoY29uc3Qg c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gKwkJCSAgICB1bnNpZ25lZCBp bnQgKnRpbGVfd2lkdGgsCj4gPiArCQkJICAgIHVuc2lnbmVkIGludCAqdGlsZV9oZWlnaHQsCj4g PiArCQkJICAgIHVpbnQ2NF90IGZiX21vZGlmaWVyLAo+ID4gKwkJCSAgICB1bnNpZ25lZCBpbnQg Y3BwKQo+ID4gK3sKPiA+ICsJKnRpbGVfd2lkdGggPSBpbnRlbF90aWxlX3dpZHRoKGRldl9wcml2 LCBmYl9tb2RpZmllciwgY3BwKTsKPiA+ICsJKnRpbGVfaGVpZ2h0ID0gaW50ZWxfdGlsZV9zaXpl KGRldl9wcml2KSAvICp0aWxlX3dpZHRoOwo+ID4gKwkqdGlsZV93aWR0aCAvPSBjcHA7Cj4gCj4g U2VlbXMgbGlrZSBteSBzdWdnZXN0aW9uIHRvIHVzZSB0aWxlX3dpZHRoIGluIGNwcCB3YXNuJ3Qg dGhhdCBhd2Vzb21lLCBhdAo+IGxlYXN0IHdlIHN0aWxsIGhhdmUgYSBiaWcgY29uZnVzaW9uIHJp Z2h0IGhlcmUuIE5vdCBzdXJlIHdoYXQgdG8gZG8sCj4gZXNwZWNpYWxseSBzaW5jZSB0aGVzZSBr aW5kIG9mIGNoYW5nZXMgYXJlIHN1cGVyLXBhaW5mdWwgdG8gcmV2aWV3LiBDb3VsZAo+IHdlIHBl cmhhcHMgZ28gYmFjayB0byB0aGUgb2xkIHZlcnNpb25zIGFuZCB1bnRhbmdsZSB0aGlzIG1lc3Mg YWZ0ZXJ3YXJkcz8KPiBJaXJjIEkndmUgZm9sbG93LXVwIHdpdGggci1iIHRhZ3MgdG8gYWxsIHBh dGNoZXMgaW4gdGhlIG9sZCBzZXJpZXMgZm9yCj4gdGhhdCBhcHByb2FjaC4KCkhtbS4gV2hhdCBk aWQgSSBkbyBkaWZmZXJlbnRseSBpbiB0aGUgb2xkIGFwcHJvYWNoIGFnYWluPyBPdGhlciB0aGFu IG5vdApoYXZpbmcgdGhlIGNvbmZ1c2lvbiBpc29sYXRlZCB0byB0aGlzIG9uZSBmdW5jdGlvbi4g T25lIHN0ZXAgZm9yd2FyZCBhbmQKdHdvIGJhY2sgZG9lbnMndCBzb3VuZCBwcm9kdWN0aXZlLiBQ bHVzIEkgaGF2ZSBzb21lIG1vcmUgcGF0Y2hlcyBvbiB0b3AKb2YgdGhpcyBvbmUgYWxyZWFkeSwg c28gbm90IHBsZWFzYW50IGF0IGFsbC4KCkFueXdheSwgdG8gYXZvaWQgbW9yZSBjb25mdXNpb24g SSBzdXBwb3NlIG9uZSB0aGluZyB0aGF0IGNvdWxkIGJlIGRvbmUKaXMgdGhpczoKLSBpbnRlbF90 aWxlX3dpZHRoCisgaW50ZWxfdGlsZV93aWR0aF9ieXRlcwoKaW50ZWxfdGlsZV9kaW1zKCkKewoJ dGlsZV93aWR0aF9ieXRlcyA9IGludGVsX3RpbGVfd2lkdGhfYnl0ZXMoKQoJKnRpbGVfaGVpZ2h0 ID0gdGlsZV9zaXplIC8gdGlsZV93aWR0aF9ieXRlczsKCSp0aWxlX3dpZHRoID0gdGlsZV93aWR0 aF9ieXRlcyAvIGNwcDsKfQoKPiAKPiBObyBpZGVhIHJlYWxseSB3aGF0IHdvdWxkIGJlIGJlc3Qg aGVyZSAuLi4KPiAtRGFuaWVsCj4gCj4gPiArfQo+ID4gKwo+ID4gIHVuc2lnbmVkIGludAo+ID4g IGludGVsX2ZiX2FsaWduX2hlaWdodChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBp bnQgaGVpZ2h0LAo+ID4gIAkJICAgICAgdWludDMyX3QgcGl4ZWxfZm9ybWF0LCB1aW50NjRfdCBm Yl9tb2RpZmllcikKPiA+IEBAIC0yMzA2LDE5ICsyMzE4LDE5IEBAIGludGVsX2ZpbGxfZmJfZ2d0 dF92aWV3KHN0cnVjdCBpOTE1X2dndHRfdmlldyAqdmlldywgc3RydWN0IGRybV9mcmFtZWJ1ZmZl ciAqZmIsCj4gPiAgCXRpbGVfc2l6ZSA9IGludGVsX3RpbGVfc2l6ZShkZXZfcHJpdik7Cj4gPiAg Cj4gPiAgCWNwcCA9IGRybV9mb3JtYXRfcGxhbmVfY3BwKGZiLT5waXhlbF9mb3JtYXQsIDApOwo+ ID4gLQl0aWxlX3dpZHRoID0gaW50ZWxfdGlsZV93aWR0aChkZXZfcHJpdiwgZmItPm1vZGlmaWVy WzBdLCBjcHApOwo+ID4gLQl0aWxlX2hlaWdodCA9IHRpbGVfc2l6ZSAvIHRpbGVfd2lkdGg7Cj4g PiArCWludGVsX3RpbGVfZGltcyhkZXZfcHJpdiwgJnRpbGVfd2lkdGgsICZ0aWxlX2hlaWdodCwK PiA+ICsJCQlmYi0+bW9kaWZpZXJbMF0sIGNwcCk7Cj4gPiAgCj4gPiAtCWluZm8tPndpZHRoX3Bh Z2VzID0gRElWX1JPVU5EX1VQKGZiLT5waXRjaGVzWzBdLCB0aWxlX3dpZHRoKTsKPiA+ICsJaW5m by0+d2lkdGhfcGFnZXMgPSBESVZfUk9VTkRfVVAoZmItPnBpdGNoZXNbMF0sIHRpbGVfd2lkdGgg KiBjcHApOwo+ID4gIAlpbmZvLT5oZWlnaHRfcGFnZXMgPSBESVZfUk9VTkRfVVAoZmItPmhlaWdo dCwgdGlsZV9oZWlnaHQpOwo+ID4gIAlpbmZvLT5zaXplID0gaW5mby0+d2lkdGhfcGFnZXMgKiBp bmZvLT5oZWlnaHRfcGFnZXMgKiB0aWxlX3NpemU7Cj4gPiAgCj4gPiAgCWlmIChpbmZvLT5waXhl bF9mb3JtYXQgPT0gRFJNX0ZPUk1BVF9OVjEyKSB7Cj4gPiAgCQljcHAgPSBkcm1fZm9ybWF0X3Bs YW5lX2NwcChmYi0+cGl4ZWxfZm9ybWF0LCAxKTsKPiA+IC0JCXRpbGVfd2lkdGggPSBpbnRlbF90 aWxlX3dpZHRoKGRldl9wcml2LCBmYi0+bW9kaWZpZXJbMV0sIGNwcCk7Cj4gPiAtCQl0aWxlX2hl aWdodCA9IHRpbGVfc2l6ZSAvIHRpbGVfd2lkdGg7Cj4gPiArCQlpbnRlbF90aWxlX2RpbXMoZGV2 X3ByaXYsICZ0aWxlX3dpZHRoLCAmdGlsZV9oZWlnaHQsCj4gPiArCQkJCWZiLT5tb2RpZmllclsx XSwgY3BwKTsKPiA+ICAKPiA+IC0JCWluZm8tPndpZHRoX3BhZ2VzX3V2ID0gRElWX1JPVU5EX1VQ KGZiLT5waXRjaGVzWzFdLCB0aWxlX3dpZHRoKTsKPiA+ICsJCWluZm8tPndpZHRoX3BhZ2VzX3V2 ID0gRElWX1JPVU5EX1VQKGZiLT5waXRjaGVzWzFdLCB0aWxlX3dpZHRoICogY3BwKTsKPiA+ICAJ CWluZm8tPmhlaWdodF9wYWdlc191diA9IERJVl9ST1VORF9VUChmYi0+aGVpZ2h0IC8gMiwgdGls ZV9oZWlnaHQpOwo+ID4gIAkJaW5mby0+c2l6ZV91diA9IGluZm8tPndpZHRoX3BhZ2VzX3V2ICog aW5mby0+aGVpZ2h0X3BhZ2VzX3V2ICogdGlsZV9zaXplOwo+ID4gIAl9Cj4gPiBAQCAtMjQ0Niwy OSArMjQ1OCw0MyBAQCBzdGF0aWMgdm9pZCBpbnRlbF91bnBpbl9mYl9vYmooc3RydWN0IGRybV9m cmFtZWJ1ZmZlciAqZmIsCj4gPiAgCWk5MTVfZ2VtX29iamVjdF91bnBpbl9mcm9tX2Rpc3BsYXlf cGxhbmUob2JqLCAmdmlldyk7Cj4gPiAgfQo+ID4gIAo+ID4gLS8qIENvbXB1dGVzIHRoZSBsaW5l YXIgb2Zmc2V0IHRvIHRoZSBiYXNlIHRpbGUgYW5kIGFkanVzdHMgeCwgeS4gYnl0ZXMgcGVyIHBp eGVsCj4gPiAtICogaXMgYXNzdW1lZCB0byBiZSBhIHBvd2VyLW9mLXR3by4gKi8KPiA+ICsvKgo+ ID4gKyAqIENvbXB1dGVzIHRoZSBsaW5lYXIgb2Zmc2V0IHRvIHRoZSBiYXNlIHRpbGUgYW5kIGFk anVzdHMKPiA+ICsgKiB4LCB5LiBieXRlcyBwZXIgcGl4ZWwgaXMgYXNzdW1lZCB0byBiZSBhIHBv d2VyLW9mLXR3by4KPiA+ICsgKgo+ID4gKyAqIEluIHRoZSA5MC8yNzAgcm90YXRlZCBjYXNlLCB4 IGFuZCB5IGFyZSBhc3N1bWVkCj4gPiArICogdG8gYmUgYWxyZWFkeSByb3RhdGVkIHRvIG1hdGNo IHRoZSByb3RhdGVkIEdUVCB2aWV3LCBhbmQKPiA+ICsgKiBwaXRjaCBpcyB0aGUgdGlsZV9oZWln aHQgYWxpZ25lZCBmcmFtZWJ1ZmZlciBoZWlnaHQuCj4gPiArICovCj4gPiAgdTMyIGludGVsX2Nv bXB1dGVfdGlsZV9vZmZzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4g IAkJCSAgICAgIGludCAqeCwgaW50ICp5LAo+ID4gIAkJCSAgICAgIHVpbnQ2NF90IGZiX21vZGlm aWVyLAo+ID4gIAkJCSAgICAgIHVuc2lnbmVkIGludCBjcHAsCj4gPiAtCQkJICAgICAgdW5zaWdu ZWQgaW50IHBpdGNoKQo+ID4gKwkJCSAgICAgIHVuc2lnbmVkIGludCBwaXRjaCwKPiA+ICsJCQkg ICAgICB1bnNpZ25lZCBpbnQgcm90YXRpb24pCj4gPiAgewo+ID4gIAlpZiAoZmJfbW9kaWZpZXIg IT0gRFJNX0ZPUk1BVF9NT0RfTk9ORSkgewo+ID4gIAkJdW5zaWduZWQgaW50IHRpbGVfc2l6ZSwg dGlsZV93aWR0aCwgdGlsZV9oZWlnaHQ7Cj4gPiAtCQl1bnNpZ25lZCBpbnQgdGlsZV9yb3dzLCB0 aWxlczsKPiA+ICsJCXVuc2lnbmVkIGludCB0aWxlX3Jvd3MsIHRpbGVzLCBwaXRjaF90aWxlczsK PiA+ICAKPiA+ICAJCXRpbGVfc2l6ZSA9IGludGVsX3RpbGVfc2l6ZShkZXZfcHJpdik7Cj4gPiAt CQl0aWxlX3dpZHRoID0gaW50ZWxfdGlsZV93aWR0aChkZXZfcHJpdiwgZmJfbW9kaWZpZXIsIGNw cCk7Cj4gPiAtCQl0aWxlX2hlaWdodCA9IHRpbGVfc2l6ZSAvIHRpbGVfd2lkdGg7Cj4gPiArCQlp bnRlbF90aWxlX2RpbXMoZGV2X3ByaXYsICZ0aWxlX3dpZHRoLCAmdGlsZV9oZWlnaHQsCj4gPiAr CQkJCWZiX21vZGlmaWVyLCBjcHApOwo+ID4gKwo+ID4gKwkJaWYgKGludGVsX3JvdGF0aW9uXzkw X29yXzI3MChyb3RhdGlvbikpIHsKPiA+ICsJCQlwaXRjaF90aWxlcyA9IHBpdGNoIC8gdGlsZV9o ZWlnaHQ7Cj4gPiArCQkJc3dhcCh0aWxlX3dpZHRoLCB0aWxlX2hlaWdodCk7Cj4gPiArCQl9IGVs c2Ugewo+ID4gKwkJCXBpdGNoX3RpbGVzID0gcGl0Y2ggLyAodGlsZV93aWR0aCAqIGNwcCk7Cj4g PiArCQl9Cj4gPiAgCj4gPiAgCQl0aWxlX3Jvd3MgPSAqeSAvIHRpbGVfaGVpZ2h0Owo+ID4gIAkJ KnkgJT0gdGlsZV9oZWlnaHQ7Cj4gPiAgCj4gPiAtCQl0aWxlcyA9ICp4IC8gKHRpbGVfd2lkdGgv Y3BwKTsKPiA+IC0JCSp4ICU9IHRpbGVfd2lkdGgvY3BwOwo+ID4gKwkJdGlsZXMgPSAqeCAvIHRp bGVfd2lkdGg7Cj4gPiArCQkqeCAlPSB0aWxlX3dpZHRoOwo+ID4gIAo+ID4gLQkJcmV0dXJuIHRp bGVfcm93cyAqIHBpdGNoICogdGlsZV9oZWlnaHQgKyB0aWxlcyAqIHRpbGVfc2l6ZTsKPiA+ICsJ CXJldHVybiAodGlsZV9yb3dzICogcGl0Y2hfdGlsZXMgKyB0aWxlcykgKiB0aWxlX3NpemU7Cj4g PiAgCX0gZWxzZSB7Cj4gPiAgCQl1bnNpZ25lZCBpbnQgYWxpZ25tZW50ID0gaW50ZWxfbGluZWFy X2FsaWdubWVudChkZXZfcHJpdikgLSAxOwo+ID4gIAkJdW5zaWduZWQgaW50IG9mZnNldDsKPiA+ IEBAIC0yNzA5LDYgKzI3MzUsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV9wcmltYXJ5X3Bs YW5lKHN0cnVjdCBkcm1fcGxhbmUgKnByaW1hcnksCj4gPiAgCXUzMiBsaW5lYXJfb2Zmc2V0Owo+ ID4gIAl1MzIgZHNwY250cjsKPiA+ICAJaTkxNV9yZWdfdCByZWcgPSBEU1BDTlRSKHBsYW5lKTsK PiA+ICsJdW5zaWduZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmJhc2Uucm90YXRpb247 Cj4gPiAgCWludCBjcHAgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChmYi0+cGl4ZWxfZm9ybWF0LCAw KTsKPiA+ICAJaW50IHggPSBwbGFuZV9zdGF0ZS0+c3JjLngxID4+IDE2Owo+ID4gIAlpbnQgeSA9 IHBsYW5lX3N0YXRlLT5zcmMueTEgPj4gMTY7Cj4gPiBAQCAtMjc3NSwxMyArMjgwMiwxMyBAQCBz dGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBy aW1hcnksCj4gPiAgCQlpbnRlbF9jcnRjLT5kc3BhZGRyX29mZnNldCA9Cj4gPiAgCQkJaW50ZWxf Y29tcHV0ZV90aWxlX29mZnNldChkZXZfcHJpdiwgJngsICZ5LAo+ID4gIAkJCQkJCSAgZmItPm1v ZGlmaWVyWzBdLCBjcHAsCj4gPiAtCQkJCQkJICBmYi0+cGl0Y2hlc1swXSk7Cj4gPiArCQkJCQkJ ICBmYi0+cGl0Y2hlc1swXSwgcm90YXRpb24pOwo+ID4gIAkJbGluZWFyX29mZnNldCAtPSBpbnRl bF9jcnRjLT5kc3BhZGRyX29mZnNldDsKPiA+ICAJfSBlbHNlIHsKPiA+ICAJCWludGVsX2NydGMt PmRzcGFkZHJfb2Zmc2V0ID0gbGluZWFyX29mZnNldDsKPiA+ICAJfQo+ID4gIAo+ID4gLQlpZiAo cGxhbmVfc3RhdGUtPmJhc2Uucm90YXRpb24gPT0gQklUKERSTV9ST1RBVEVfMTgwKSkgewo+ID4g KwlpZiAocm90YXRpb24gPT0gQklUKERSTV9ST1RBVEVfMTgwKSkgewo+ID4gIAkJZHNwY250ciB8 PSBESVNQUExBTkVfUk9UQVRFXzE4MDsKPiA+ICAKPiA+ICAJCXggKz0gKGNydGNfc3RhdGUtPnBp cGVfc3JjX3cgLSAxKTsKPiA+IEBAIC0yODM5LDYgKzI4NjYsNyBAQCBzdGF0aWMgdm9pZCBpcm9u bGFrZV91cGRhdGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5LAo+ID4g IAl1MzIgbGluZWFyX29mZnNldDsKPiA+ICAJdTMyIGRzcGNudHI7Cj4gPiAgCWk5MTVfcmVnX3Qg cmVnID0gRFNQQ05UUihwbGFuZSk7Cj4gPiArCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5l X3N0YXRlLT5iYXNlLnJvdGF0aW9uOwo+ID4gIAlpbnQgY3BwID0gZHJtX2Zvcm1hdF9wbGFuZV9j cHAoZmItPnBpeGVsX2Zvcm1hdCwgMCk7Cj4gPiAgCWludCB4ID0gcGxhbmVfc3RhdGUtPnNyYy54 MSA+PiAxNjsKPiA+ICAJaW50IHkgPSBwbGFuZV9zdGF0ZS0+c3JjLnkxID4+IDE2Owo+ID4gQEAg LTI4ODIsOSArMjkxMCw5IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX3VwZGF0ZV9wcmltYXJ5X3Bs YW5lKHN0cnVjdCBkcm1fcGxhbmUgKnByaW1hcnksCj4gPiAgCWludGVsX2NydGMtPmRzcGFkZHJf b2Zmc2V0ID0KPiA+ICAJCWludGVsX2NvbXB1dGVfdGlsZV9vZmZzZXQoZGV2X3ByaXYsICZ4LCAm eSwKPiA+ICAJCQkJCSAgZmItPm1vZGlmaWVyWzBdLCBjcHAsCj4gPiAtCQkJCQkgIGZiLT5waXRj aGVzWzBdKTsKPiA+ICsJCQkJCSAgZmItPnBpdGNoZXNbMF0sIHJvdGF0aW9uKTsKPiA+ICAJbGlu ZWFyX29mZnNldCAtPSBpbnRlbF9jcnRjLT5kc3BhZGRyX29mZnNldDsKPiA+IC0JaWYgKHBsYW5l X3N0YXRlLT5iYXNlLnJvdGF0aW9uID09IEJJVChEUk1fUk9UQVRFXzE4MCkpIHsKPiA+ICsJaWYg KHJvdGF0aW9uID09IEJJVChEUk1fUk9UQVRFXzE4MCkpIHsKPiA+ICAJCWRzcGNudHIgfD0gRElT UFBMQU5FX1JPVEFURV8xODA7Cj4gPiAgCj4gPiAgCQlpZiAoIUlTX0hBU1dFTEwoZGV2KSAmJiAh SVNfQlJPQURXRUxMKGRldikpIHsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiBpbmRl eCBmNjIwMDIzZWQxMzQuLjIyMzY5M2RiZmU3YyAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcnYuaAo+ID4gQEAgLTExNzYsNyArMTE3Niw4IEBAIHUzMiBpbnRlbF9jb21wdXRlX3RpbGVf b2Zmc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ICAJCQkgICAgICBp bnQgKngsIGludCAqeSwKPiA+ICAJCQkgICAgICB1aW50NjRfdCBmYl9tb2RpZmllciwKPiA+ICAJ CQkgICAgICB1bnNpZ25lZCBpbnQgY3BwLAo+ID4gLQkJCSAgICAgIHVuc2lnbmVkIGludCBwaXRj aCk7Cj4gPiArCQkJICAgICAgdW5zaWduZWQgaW50IHBpdGNoLAo+ID4gKwkJCSAgICAgIHVuc2ln bmVkIGludCByb3RhdGlvbik7Cj4gPiAgdm9pZCBpbnRlbF9wcmVwYXJlX3Jlc2V0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpOwo+ID4gIHZvaWQgaW50ZWxfZmluaXNoX3Jlc2V0KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpOwo+ID4gIHZvaWQgaHN3X2VuYWJsZV9wYzgoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KTsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9zcHJpdGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gPiBp bmRleCBhMjU4MmM0NTViMzYuLjdkYzJiOGIyYTRhYyAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9zcHJpdGUuYwo+ID4gQEAgLTE5Myw3ICsxOTMsNyBAQCBza2xfdXBkYXRlX3BsYW5l KHN0cnVjdCBkcm1fcGxhbmUgKmRybV9wbGFuZSwKPiA+ICAJY29uc3Qgc3RydWN0IGRybV9pbnRl bF9zcHJpdGVfY29sb3JrZXkgKmtleSA9ICZwbGFuZV9zdGF0ZS0+Y2tleTsKPiA+ICAJdTMyIHN1 cmZfYWRkcjsKPiA+ICAJdTMyIHRpbGVfaGVpZ2h0LCBwbGFuZV9vZmZzZXQsIHBsYW5lX3NpemU7 Cj4gPiAtCXVuc2lnbmVkIGludCByb3RhdGlvbjsKPiA+ICsJdW5zaWduZWQgaW50IHJvdGF0aW9u ID0gcGxhbmVfc3RhdGUtPmJhc2Uucm90YXRpb247Cj4gPiAgCWludCB4X29mZnNldCwgeV9vZmZz ZXQ7Cj4gPiAgCWludCBjcnRjX3ggPSBwbGFuZV9zdGF0ZS0+ZHN0LngxOwo+ID4gIAlpbnQgY3J0 Y195ID0gcGxhbmVfc3RhdGUtPmRzdC55MTsKPiA+IEBAIC0yMTMsNyArMjEzLDYgQEAgc2tsX3Vw ZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpkcm1fcGxhbmUsCj4gPiAgCXBsYW5lX2N0bCB8 PSBza2xfcGxhbmVfY3RsX2Zvcm1hdChmYi0+cGl4ZWxfZm9ybWF0KTsKPiA+ICAJcGxhbmVfY3Rs IHw9IHNrbF9wbGFuZV9jdGxfdGlsaW5nKGZiLT5tb2RpZmllclswXSk7Cj4gPiAgCj4gPiAtCXJv dGF0aW9uID0gcGxhbmVfc3RhdGUtPmJhc2Uucm90YXRpb247Cj4gPiAgCXBsYW5lX2N0bCB8PSBz a2xfcGxhbmVfY3RsX3JvdGF0aW9uKHJvdGF0aW9uKTsKPiA+ICAKPiA+ICAJc3RyaWRlX2RpdiA9 IGludGVsX2ZiX3N0cmlkZV9hbGlnbm1lbnQoZGV2X3ByaXYsIGZiLT5tb2RpZmllclswXSwKPiA+ IEBAIC0zNTEsNiArMzUwLDcgQEAgdmx2X3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpk cGxhbmUsCj4gPiAgCWludCBwbGFuZSA9IGludGVsX3BsYW5lLT5wbGFuZTsKPiA+ICAJdTMyIHNw cmN0bDsKPiA+ICAJdTMyIHNwcnN1cmZfb2Zmc2V0LCBsaW5lYXJfb2Zmc2V0Owo+ID4gKwl1bnNp Z25lZCBpbnQgcm90YXRpb24gPSBkcGxhbmUtPnN0YXRlLT5yb3RhdGlvbjsKPiA+ICAJaW50IGNw cCA9IGRybV9mb3JtYXRfcGxhbmVfY3BwKGZiLT5waXhlbF9mb3JtYXQsIDApOwo+ID4gIAljb25z dCBzdHJ1Y3QgZHJtX2ludGVsX3Nwcml0ZV9jb2xvcmtleSAqa2V5ID0gJnBsYW5lX3N0YXRlLT5j a2V5Owo+ID4gIAlpbnQgY3J0Y194ID0gcGxhbmVfc3RhdGUtPmRzdC54MTsKPiA+IEBAIC00MjUs MTAgKzQyNSwxMCBAQCB2bHZfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKmRwbGFuZSwK PiA+ICAJbGluZWFyX29mZnNldCA9IHkgKiBmYi0+cGl0Y2hlc1swXSArIHggKiBjcHA7Cj4gPiAg CXNwcnN1cmZfb2Zmc2V0ID0gaW50ZWxfY29tcHV0ZV90aWxlX29mZnNldChkZXZfcHJpdiwgJngs ICZ5LAo+ID4gIAkJCQkJCSAgIGZiLT5tb2RpZmllclswXSwgY3BwLAo+ID4gLQkJCQkJCSAgIGZi LT5waXRjaGVzWzBdKTsKPiA+ICsJCQkJCQkgICBmYi0+cGl0Y2hlc1swXSwgcm90YXRpb24pOwo+ ID4gIAlsaW5lYXJfb2Zmc2V0IC09IHNwcnN1cmZfb2Zmc2V0Owo+ID4gIAo+ID4gLQlpZiAocGxh bmVfc3RhdGUtPmJhc2Uucm90YXRpb24gPT0gQklUKERSTV9ST1RBVEVfMTgwKSkgewo+ID4gKwlp ZiAocm90YXRpb24gPT0gQklUKERSTV9ST1RBVEVfMTgwKSkgewo+ID4gIAkJc3ByY3RsIHw9IFNQ X1JPVEFURV8xODA7Cj4gPiAgCj4gPiAgCQl4ICs9IHNyY193Owo+ID4gQEAgLTQ5Myw2ICs0OTMs NyBAQCBpdmJfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ID4gIAllbnVt IHBpcGUgcGlwZSA9IGludGVsX3BsYW5lLT5waXBlOwo+ID4gIAl1MzIgc3ByY3RsLCBzcHJzY2Fs ZSA9IDA7Cj4gPiAgCXUzMiBzcHJzdXJmX29mZnNldCwgbGluZWFyX29mZnNldDsKPiA+ICsJdW5z aWduZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmJhc2Uucm90YXRpb247Cj4gPiAgCWlu dCBjcHAgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChmYi0+cGl4ZWxfZm9ybWF0LCAwKTsKPiA+ICAJ Y29uc3Qgc3RydWN0IGRybV9pbnRlbF9zcHJpdGVfY29sb3JrZXkgKmtleSA9ICZwbGFuZV9zdGF0 ZS0+Y2tleTsKPiA+ICAJaW50IGNydGNfeCA9IHBsYW5lX3N0YXRlLT5kc3QueDE7Cj4gPiBAQCAt NTU4LDEwICs1NTksMTAgQEAgaXZiX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu ZSwKPiA+ICAJbGluZWFyX29mZnNldCA9IHkgKiBmYi0+cGl0Y2hlc1swXSArIHggKiBjcHA7Cj4g PiAgCXNwcnN1cmZfb2Zmc2V0ID0gaW50ZWxfY29tcHV0ZV90aWxlX29mZnNldChkZXZfcHJpdiwg JngsICZ5LAo+ID4gIAkJCQkJCSAgIGZiLT5tb2RpZmllclswXSwgY3BwLAo+ID4gLQkJCQkJCSAg IGZiLT5waXRjaGVzWzBdKTsKPiA+ICsJCQkJCQkgICBmYi0+cGl0Y2hlc1swXSwgcm90YXRpb24p Owo+ID4gIAlsaW5lYXJfb2Zmc2V0IC09IHNwcnN1cmZfb2Zmc2V0Owo+ID4gIAo+ID4gLQlpZiAo cGxhbmVfc3RhdGUtPmJhc2Uucm90YXRpb24gPT0gQklUKERSTV9ST1RBVEVfMTgwKSkgewo+ID4g KwlpZiAocm90YXRpb24gPT0gQklUKERSTV9ST1RBVEVfMTgwKSkgewo+ID4gIAkJc3ByY3RsIHw9 IFNQUklURV9ST1RBVEVfMTgwOwo+ID4gIAo+ID4gIAkJLyogSFNXIGFuZCBCRFcgZG9lcyB0aGlz IGF1dG9tYWdpY2FsbHkgaW4gaGFyZHdhcmUgKi8KPiA+IEBAIC02MzQsNiArNjM1LDcgQEAgaWxr X3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiA+ICAJaW50IHBpcGUgPSBp bnRlbF9wbGFuZS0+cGlwZTsKPiA+ICAJdTMyIGR2c2NudHIsIGR2c3NjYWxlOwo+ID4gIAl1MzIg ZHZzc3VyZl9vZmZzZXQsIGxpbmVhcl9vZmZzZXQ7Cj4gPiArCXVuc2lnbmVkIGludCByb3RhdGlv biA9IHBsYW5lX3N0YXRlLT5iYXNlLnJvdGF0aW9uOwo+ID4gIAlpbnQgY3BwID0gZHJtX2Zvcm1h dF9wbGFuZV9jcHAoZmItPnBpeGVsX2Zvcm1hdCwgMCk7Cj4gPiAgCWNvbnN0IHN0cnVjdCBkcm1f aW50ZWxfc3ByaXRlX2NvbG9ya2V5ICprZXkgPSAmcGxhbmVfc3RhdGUtPmNrZXk7Cj4gPiAgCWlu dCBjcnRjX3ggPSBwbGFuZV9zdGF0ZS0+ZHN0LngxOwo+ID4gQEAgLTY5NSwxMCArNjk3LDEwIEBA IGlsa191cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gPiAgCWxpbmVhcl9v ZmZzZXQgPSB5ICogZmItPnBpdGNoZXNbMF0gKyB4ICogY3BwOwo+ID4gIAlkdnNzdXJmX29mZnNl dCA9IGludGVsX2NvbXB1dGVfdGlsZV9vZmZzZXQoZGV2X3ByaXYsICZ4LCAmeSwKPiA+ICAJCQkJ CQkgICBmYi0+bW9kaWZpZXJbMF0sIGNwcCwKPiA+IC0JCQkJCQkgICBmYi0+cGl0Y2hlc1swXSk7 Cj4gPiArCQkJCQkJICAgZmItPnBpdGNoZXNbMF0sIHJvdGF0aW9uKTsKPiA+ICAJbGluZWFyX29m ZnNldCAtPSBkdnNzdXJmX29mZnNldDsKPiA+ICAKPiA+IC0JaWYgKHBsYW5lX3N0YXRlLT5iYXNl LnJvdGF0aW9uID09IEJJVChEUk1fUk9UQVRFXzE4MCkpIHsKPiA+ICsJaWYgKHJvdGF0aW9uID09 IEJJVChEUk1fUk9UQVRFXzE4MCkpIHsKPiA+ICAJCWR2c2NudHIgfD0gRFZTX1JPVEFURV8xODA7 Cj4gPiAgCj4gPiAgCQl4ICs9IHNyY193Owo+ID4gLS0gCj4gPiAyLjQuMTAKPiA+IAo+ID4gX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiA+IEludGVsLWdm eCBtYWlsaW5nIGxpc3QKPiA+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiA+IGh0 dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKPiAK PiAtLSAKPiBEYW5pZWwgVmV0dGVyCj4gU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0 aW9uCj4gaHR0cDovL2Jsb2cuZmZ3bGwuY2gKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RD Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==