From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joonas Lahtinen Subject: Re: [PATCH 5/7] drm/i915/skl: Support secondary (rotated) frame buffer mapping Date: Thu, 19 Mar 2015 15:02:03 +0200 Message-ID: <1426770123.3473.29.camel@jlahtine-mobl1> References: <1426607117-10626-1-git-send-email-tvrtko.ursulin@linux.intel.com> <1426607117-10626-6-git-send-email-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 B12A46EA5A for ; Thu, 19 Mar 2015 06:02:05 -0700 (PDT) In-Reply-To: <1426607117-10626-6-git-send-email-tvrtko.ursulin@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tvrtko Ursulin Cc: Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gdGksIDIwMTUtMDMtMTcgYXQgMTU6NDUgKzAwMDAsIFR2cnRrbyBVcnN1bGluIHdyb3RlOgo+ IEZyb206IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Cj4gCj4gOTAv MjcwIHJvdGF0ZWQgc2Nhbm91dCBuZWVkcyBhIHJvdGF0ZWQgR1RUIHZpZXcgb2YgdGhlIGZyYW1l YnVmZmVyLgo+IAo+IFRoaXMgaXMgcHV0IGluIGEgc2VwYXJhdGUgVk1BIHdpdGggYSBkZWRpY2F0 ZWQgZ2d0dCB2aWV3IGFuZCB3aXJlZCBzdWNoIHRoYXQKPiBpdCBpcyBjcmVhdGVkIHdoZW4gYSBm cmFtZWJ1ZmZlciBpcyBwaW5uZWQgdG8gYSA5MC8yNzAgcm90YXRlZCBwbGFuZS4KPiAKPiBSb3Rh dGlvbiBpcyBvbmx5IHBvc3NpYmxlIHdpdGggWWIvWWYgYnVmZmVycyBhbmQgZXJyb3IgaXMgcHJv cGFnYXRlZCB0bwo+IHVzZXIgc3BhY2UgaW4gY2FzZSBvZiBhIG1pc21hdGNoLgo+IAo+IFNwZWNp YWwgcm90YXRlZCBwYWdlIHZpZXcgaXMgY29uc3RydWN0ZWQgYXQgdGhlIFZNQSBjcmVhdGlvbiB0 aW1lIGJ5Cj4gYm9ycm93aW5nIHRoZSBETUEgYWRkcmVzc2VzIGZyb20gb2JqLT5wYWdlcy4KPiAK PiB2MjoKPiAgICAgKiBEbyBub3QgYm90aGVyIHdpdGggcGFnZXMgZm9yIHJvdGF0ZWQgc2cgbGlz dCwganVzdCBwb3B1bGF0ZSB0aGUgRE1BCj4gICAgICAgYWRkcmVzc2VzLiAoRGFuaWVsIFZldHRl cikKPiAgICAgKiBDaGVja3BhdGNoIGNsZWFudXAuCj4gCj4gdjM6Cj4gICAgICogUmViYXNlZCBv biB0b3Agb2YgbmV3IHBsYW5lIGhhbmRsaW5nIChjcmVhdGUgcm90YXRlZCBtYXBwaW5nIHdoZW4K PiAgICAgICBzZXR0aW5nIHRoZSByb3RhdGlvbiBwcm9wZXJ0eSkuCj4gICAgICogVW5waW4gcm90 YXRlZCBWTUEgb24gdW5waW5uaW5nIGZyb20gZGlzcGxheSBwbGFuZS4KPiAgICAgKiBTaW1wbGlm eSByb3RhdGlvbiBjaGVjayB1c2luZyBiaXR3aXNlIEFORC4gKENocmlzIFdpbHNvbikKPiAKPiB2 NDoKPiAgICAgKiBGaXggdW5waW5uaW5nIG9mIG9wdGlvbmFsIHJvdGF0ZWQgbWFwcGluZyBzbyBp dCBpcyByZWFsbHkgY29uc2lkZXJlZAo+ICAgICAgIHRvIGJlIG9wdGlvbmFsLgo+IAo+IHY1Ogo+ ICAgICogUmViYXNlZCBmb3IgZmIgbW9kaWZpZXIgY2hhbmdlcy4KPiAgICAqIFJlYmFzZWQgZm9y IGF0b21pYyBjb21taXQuCj4gICAgKiBPbmx5IHBpbiBuZWVkZWQgdmlldyBmb3IgZGlzcGxheS4g KFZpbGxlIFN5cmrDpGzDpCwgRGFuaWVsIFZldHRlcikKPiAKPiB2NjoKPiAgICAqIFJlYmFzZWQg YWZ0ZXIgcHJlcGFyYXRvcnkgd29yayBoYXMgYmVlbiBleHRyYWN0ZWQgb3V0LiAoRGFuaWVsIFZl dHRlcikKPiAKPiB2NzoKPiAgICAqIFNsaWdodGx5IHNpbXBsaWZpZWQgdGlsaW5nIGdlb21ldHJ5 IGNhbGN1bGF0aW9uLgo+ICAgICogTW92ZWQgcm90YXRlZCBHR1RUIHZpZXcgaW1wbGVtZW50YXRp b24gaW50byBpOTE1X2dlbV9ndHQuYyAoRGFuaWVsIFZldHRlcikKPiAKPiB2ODoKPiAgICAqIERv IG5vdCB1c2UgaTkxNV9nZW1fb2JqX3NpemUgdG8gZ2V0IG9iamVjdCBzaXplIHNpbmNlIHRoYXQg YWN0dWFsbHkKPiAgICAgIHJldHVybnMgdGhlIHNpemUgb2YgYW4gVk1BIHdoaWNoIG1heSBub3Qg ZXhpc3QuCj4gICAgKiBSZWJhc2VkIGZvciBnZ3R0IHZpZXcgY2hhbmdlcy4KPiAKPiBGb3I6IFZJ Wi00NzI2Cj4gU2lnbmVkLW9mZi1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGlu dGVsLmNvbT4KPiBSZXZpZXdlZC1ieTogTWljaGVsIFRoaWVycnkgPG1pY2hlbC50aGllcnJ5QGlu dGVsLmNvbT4gKHY0KQo+IENjOiBKb29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51 eC5pbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5j ICB8IDExMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaCAgfCAgMTIgKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAgMjkgKysrKysrKystCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oICAgICB8ICAgNCArKwo+ICA0IGZpbGVzIGNoYW5nZWQsIDE1NCBpbnNl cnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0 dC5jCj4gaW5kZXggZjFiOWVhNi4uNTM4MWViZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2d0dC5jCj4gQEAgLTI0MTMsMTUgKzI0MTMsMTE5IEBAIGk5MTVfZ2VtX29ial9sb29rdXBf b3JfY3JlYXRlX2dndHRfdm1hKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gIAo+ ICB9Cj4gIAo+ICtzdGF0aWMKPiArdm9pZCByb3RhdGVfcGFnZXMoZG1hX2FkZHJfdCAqaW4sIHVu c2lnbmVkIGludCB3aWR0aCwgdW5zaWduZWQgaW50IGhlaWdodCwKPiArCQkgIHN0cnVjdCBzZ190 YWJsZSAqc3QpCj4gK3sKPiArCXVuc2lnbmVkIGludCBjb2x1bW4sIHJvdzsKPiArCXVuc2lnbmVk IGludCBzcmNfaWR4Owo+ICsJc3RydWN0IHNjYXR0ZXJsaXN0ICpzZyA9IHN0LT5zZ2w7Cj4gKwo+ ICsJc3QtPm5lbnRzID0gMDsKPiArCj4gKwlmb3IgKGNvbHVtbiA9IDA7IGNvbHVtbiA8IHdpZHRo OyBjb2x1bW4rKykgewo+ICsJCXNyY19pZHggPSB3aWR0aCAqIChoZWlnaHQgLSAxKSArIGNvbHVt bjsKPiArCQlmb3IgKHJvdyA9IDA7IHJvdyA8IGhlaWdodDsgcm93KyspIHsKPiArCQkJc3QtPm5l bnRzKys7Cj4gKwkJCS8qIFdlIGRvbid0IG5lZWQgdGhlIHBhZ2VzLCBidXQgbmVlZCB0byBpbml0 aWFsaXplCj4gKwkJCSAqIHRoZSBlbnRyaWVzIHNvIHRoZSBzZyBsaXN0IGNhbiBiZSBoYXBwaWx5 IHRyYXZlcnNlZC4KPiArCQkJICogVGhlIG9ubHkgdGhpbmcgd2UgbmVlZCBhcmUgRE1BIGFkZHJl c3Nlcy4KPiArCQkJICovCj4gKwkJCXNnX3NldF9wYWdlKHNnLCBOVUxMLCBQQUdFX1NJWkUsIDAp Owo+ICsJCQlzZ19kbWFfYWRkcmVzcyhzZykgPSBpbltzcmNfaWR4XTsKPiArCQkJc2dfZG1hX2xl bihzZykgPSBQQUdFX1NJWkU7Cj4gKwkJCXNnID0gc2dfbmV4dChzZyk7Cj4gKwkJCXNyY19pZHgg LT0gd2lkdGg7Cj4gKwkJfQo+ICsJfQo+ICt9Cj4gKwo+ICtzdGF0aWMKPiArc3RydWN0IHNnX3Rh YmxlICppbnRlbF9yb3RhdGVfZmJfb2JqX3BhZ2VzKHN0cnVjdCBpOTE1X2dndHRfdmlldyAqZ2d0 dF92aWV3LAo+ICsJCQkJCSAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gK3sK PiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBvYmotPmJhc2UuZGV2Owo+ICsJc3RydWN0IGlu dGVsX3JvdGF0aW9uX2luZm8gKnJvdF9pbmZvID0gJmdndHRfdmlldy0+cm90YXRpb25faW5mbzsK PiArCXVuc2lnbmVkIGxvbmcgc2l6ZSwgcGFnZXMsIHJvdF9wYWdlczsKPiArCXN0cnVjdCBzZ19w YWdlX2l0ZXIgc2dfaXRlcjsKPiArCXVuc2lnbmVkIGxvbmcgaTsKPiArCWRtYV9hZGRyX3QgKnBh Z2VfYWRkcl9saXN0Owo+ICsJc3RydWN0IHNnX3RhYmxlICpzdDsKPiArCXVuc2lnbmVkIGludCB0 aWxlX3BpdGNoLCB0aWxlX2hlaWdodDsKPiArCXVuc2lnbmVkIGludCB3aWR0aF9wYWdlcywgaGVp Z2h0X3BhZ2VzOwo+ICsJaW50IHJldCA9IEVOT01FTTsKPiArCj4gKwlwYWdlcyA9IG9iai0+YmFz ZS5zaXplIC8gUEFHRV9TSVpFOwo+ICsKPiArCS8qIENhbGN1bGF0ZSB0aWxpbmcgZ2VvbWV0cnku ICovCj4gKwl0aWxlX2hlaWdodCA9IGludGVsX3RpbGVfaGVpZ2h0KGRldiwgcm90X2luZm8tPnBp eGVsX2Zvcm1hdCwKPiArCQkJCQlyb3RfaW5mby0+ZmJfbW9kaWZpZXIpOwo+ICsJdGlsZV9waXRj aCA9IFBBR0VfU0laRSAvIHRpbGVfaGVpZ2h0Owo+ICsJd2lkdGhfcGFnZXMgPSBESVZfUk9VTkRf VVAocm90X2luZm8tPnBpdGNoLCB0aWxlX3BpdGNoKTsKPiArCWhlaWdodF9wYWdlcyA9IERJVl9S T1VORF9VUChyb3RfaW5mby0+aGVpZ2h0LCB0aWxlX2hlaWdodCk7Cj4gKwlyb3RfcGFnZXMgPSB3 aWR0aF9wYWdlcyAqIGhlaWdodF9wYWdlczsKPiArCXNpemUgPSByb3RfcGFnZXMgKiBQQUdFX1NJ WkU7Cj4gKwo+ICsJLyogQWxsb2NhdGUgYSB0ZW1wb3JhcnkgbGlzdCBvZiBzb3VyY2UgcGFnZXMg Zm9yIHJhbmRvbSBhY2Nlc3MuICovCj4gKwlwYWdlX2FkZHJfbGlzdCA9IGRybV9tYWxsb2NfYWIo cGFnZXMsIHNpemVvZihkbWFfYWRkcl90KSk7Cj4gKwlpZiAoIXBhZ2VfYWRkcl9saXN0KQo+ICsJ CXJldHVybiBFUlJfUFRSKHJldCk7Cj4gKwo+ICsJLyogQWxsb2NhdGUgdGFyZ2V0IFNHIGxpc3Qu ICovCj4gKwlzdCA9IGttYWxsb2Moc2l6ZW9mKCpzdCksIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFz dCkKPiArCQlnb3RvIGVycl9zdF9hbGxvYzsKPiArCj4gKwlyZXQgPSBzZ19hbGxvY190YWJsZShz dCwgcm90X3BhZ2VzLCBHRlBfS0VSTkVMKTsKPiArCWlmIChyZXQpCj4gKwkJZ290byBlcnJfc2df YWxsb2M7Cj4gKwo+ICsJLyogUG9wdWxhdGUgc291cmNlIHBhZ2UgbGlzdCBmcm9tIHRoZSBvYmpl Y3QuICovCj4gKwlpID0gMDsKPiArCWZvcl9lYWNoX3NnX3BhZ2Uob2JqLT5wYWdlcy0+c2dsLCAm c2dfaXRlciwgb2JqLT5wYWdlcy0+bmVudHMsIDApIHsKPiArCQlwYWdlX2FkZHJfbGlzdFtpXSA9 IHNnX3BhZ2VfaXRlcl9kbWFfYWRkcmVzcygmc2dfaXRlcik7Cj4gKwkJaSsrOwo+ICsJfQo+ICsK PiArCS8qIFJvdGF0ZSB0aGUgcGFnZXMuICovCj4gKwlyb3RhdGVfcGFnZXMocGFnZV9hZGRyX2xp c3QsIHdpZHRoX3BhZ2VzLCBoZWlnaHRfcGFnZXMsIHN0KTsKPiArCj4gKwlEUk1fREVCVUdfS01T KAo+ICsJCSAgICAgICJDcmVhdGVkIHJvdGF0ZWQgcGFnZSBtYXBwaW5nIGZvciBvYmplY3Qgc2l6 ZSAlbHUgKHBpdGNoPSV1LCBoZWlnaHQ9JXUsIHBpeGVsX2Zvcm1hdD0weCV4LCAldXgldSB0aWxl cywgJWx1IHBhZ2VzKS5cbiIsCj4gKwkJICAgICAgc2l6ZSwgcm90X2luZm8tPnBpdGNoLCByb3Rf aW5mby0+aGVpZ2h0LAo+ICsJCSAgICAgIHJvdF9pbmZvLT5waXhlbF9mb3JtYXQsIHdpZHRoX3Bh Z2VzLCBoZWlnaHRfcGFnZXMsCj4gKwkJICAgICAgcm90X3BhZ2VzKTsKPiArCj4gKwlkcm1fZnJl ZV9sYXJnZShwYWdlX2FkZHJfbGlzdCk7Cj4gKwo+ICsJcmV0dXJuIHN0Owo+ICsKPiArZXJyX3Nn X2FsbG9jOgo+ICsJa2ZyZWUoc3QpOwo+ICtlcnJfc3RfYWxsb2M6Cj4gKwlkcm1fZnJlZV9sYXJn ZShwYWdlX2FkZHJfbGlzdCk7Cj4gKwo+ICsJRFJNX0RFQlVHX0tNUygKPiArCQkgICAgICAiRmFp bGVkIHRvIGNyZWF0ZSByb3RhdGVkIG1hcHBpbmcgZm9yIG9iamVjdCBzaXplICVsdSEgKCVkKSAo cGl0Y2g9JXUsIGhlaWdodD0ldSwgcGl4ZWxfZm9ybWF0PTB4JXgsICV1eCV1IHRpbGVzLCAlbHUg cGFnZXMpXG4iLAo+ICsJCSAgICAgIHNpemUsIHJldCwgcm90X2luZm8tPnBpdGNoLCByb3RfaW5m by0+aGVpZ2h0LAo+ICsJCSAgICAgIHJvdF9pbmZvLT5waXhlbF9mb3JtYXQsIHdpZHRoX3BhZ2Vz LCBoZWlnaHRfcGFnZXMsCj4gKwkJICAgICAgcm90X3BhZ2VzKTsKPiArCXJldHVybiBFUlJfUFRS KHJldCk7Cj4gK30KPiAgCj4gIHN0YXRpYyBpbmxpbmUKPiAgaW50IGk5MTVfZ2V0X2dndHRfdm1h X3BhZ2VzKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQoKU2FtZSByYW50IGFib3V0IGZ1bmN0aW9uIHNp Z25hdHVyZXMgYXMgb24gZWFybGllciBwYXRjaCwgcHV0IGFsbCBvbiB0aGUKc2FtZSBsaW5lIGxp a2UgbW9zdCBvZiBuZXcgdGhlIGNvZGUgaGFzIGl0LgoKPiAgewo+ICsJaW50IHJldCA9IDA7Cj4g Kwo+ICAJaWYgKHZtYS0+Z2d0dF92aWV3LnBhZ2VzKQo+ICAJCXJldHVybiAwOwo+ICAKPiAgCWlm ICh2bWEtPmdndHRfdmlldy50eXBlID09IEk5MTVfR0dUVF9WSUVXX05PUk1BTCkKPiAgCQl2bWEt PmdndHRfdmlldy5wYWdlcyA9IHZtYS0+b2JqLT5wYWdlczsKPiArCWVsc2UgaWYgKHZtYS0+Z2d0 dF92aWV3LnR5cGUgPT0gSTkxNV9HR1RUX1ZJRVdfUk9UQVRFRCkKPiArCQl2bWEtPmdndHRfdmll dy5wYWdlcyA9Cj4gKwkJCWludGVsX3JvdGF0ZV9mYl9vYmpfcGFnZXMoJnZtYS0+Z2d0dF92aWV3 LCB2bWEtPm9iaik7Cj4gIAllbHNlCj4gIAkJV0FSTl9PTkNFKDEsICJHR1RUIHZpZXcgJXUgbm90 IGltcGxlbWVudGVkIVxuIiwKPiAgCQkJICB2bWEtPmdndHRfdmlldy50eXBlKTsKPiBAQCAtMjQy OSwxMCArMjUzMywxNSBAQCBpbnQgaTkxNV9nZXRfZ2d0dF92bWFfcGFnZXMoc3RydWN0IGk5MTVf dm1hICp2bWEpCj4gIAlpZiAoIXZtYS0+Z2d0dF92aWV3LnBhZ2VzKSB7Cj4gIAkJRFJNX0VSUk9S KCJGYWlsZWQgdG8gZ2V0IHBhZ2VzIGZvciBHR1RUIHZpZXcgdHlwZSAldSFcbiIsCj4gIAkJCSAg dm1hLT5nZ3R0X3ZpZXcudHlwZSk7Cj4gLQkJcmV0dXJuIC1FSU5WQUw7Cj4gKwkJcmV0ID0gLUVJ TlZBTDsKPiArCX0gZWxzZSBpZiAoSVNfRVJSKHZtYS0+Z2d0dF92aWV3LnBhZ2VzKSkgewo+ICsJ CXJldCA9IFBUUl9FUlIodm1hLT5nZ3R0X3ZpZXcucGFnZXMpOwo+ICsJCXZtYS0+Z2d0dF92aWV3 LnBhZ2VzID0gTlVMTDsKPiArCQlEUk1fRVJST1IoIkZhaWxlZCB0byBnZXQgcGFnZXMgZm9yIFZN QSB2aWV3IHR5cGUgJXUgKCVkKSFcbiIsCj4gKwkJCSAgdm1hLT5nZ3R0X3ZpZXcudHlwZSwgcmV0 KTsKPiAgCX0KPiAgCj4gLQlyZXR1cm4gMDsKPiArCXJldHVybiByZXQ7Cj4gIH0KPiAgCj4gIC8q Kgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCj4gaW5kZXggYzllOTNmNS4uYTYxZThk ZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCj4gQEAgLTExMSwxMiArMTEx LDI0IEBAIHR5cGVkZWYgZ2VuOF9ndHRfcHRlX3QgZ2VuOF9wcGd0dF9wZGVfdDsKPiAgCj4gIGVu dW0gaTkxNV9nZ3R0X3ZpZXdfdHlwZSB7Cj4gIAlJOTE1X0dHVFRfVklFV19OT1JNQUwgPSAwLAo+ ICsJSTkxNV9HR1RUX1ZJRVdfUk9UQVRFRAo+ICt9Owo+ICsKPiArc3RydWN0IGludGVsX3JvdGF0 aW9uX2luZm8gewo+ICsJdW5zaWduZWQgaW50IGhlaWdodDsKPiArCXVuc2lnbmVkIGludCBwaXRj aDsKPiArCXVpbnQzMl90IHBpeGVsX2Zvcm1hdDsKPiArCXVpbnQ2NF90IGZiX21vZGlmaWVyOwo+ ICB9Owo+ICAKPiAgc3RydWN0IGk5MTVfZ2d0dF92aWV3IHsKPiAgCWVudW0gaTkxNV9nZ3R0X3Zp ZXdfdHlwZSB0eXBlOwo+ICAKPiAgCXN0cnVjdCBzZ190YWJsZSAqcGFnZXM7Cj4gKwo+ICsJdW5p b24gewo+ICsJCXN0cnVjdCBpbnRlbF9yb3RhdGlvbl9pbmZvIHJvdGF0aW9uX2luZm87Cj4gKwl9 OwoKSW4gcHJlcGFyYXRpb24gZm9yIHRoZSBtZW1jbXAgd2F5IG9mIGNvbXBhcmluZyB2aWV3cywg SSB3b3VsZCBtb3ZlIHRoaXMKYmUgYmVmb3JlIHRoZSB2YXJpYWJsZSBzdHJ1Y3QgcGFydHMgKG5h bWVseSBzZ190YWJsZSAqcGFnZXMpLCBhbmQgYWxzbwp3cmFwIGl0IG9uY2UgbW9yZSBzbyB0aGUg cmVzdWx0IHdvdWxkIGJlIGxpa2UgdGhpczoKCltzbmlwXQplbnVtIGk5MTVfZ2d0dF92aWV3X3R5 cGUgdHlwZTsKCnVuaW9uIHsKCXN0cnVjdCB7CgkJc3RydWN0IGludGVsX3JvdGF0aW9uX2luZm8g aW5mbzsKCX0gcm90YXRlZDsKCXN0cnVjdCB7CgkJLi4uCgl9IHBhcnRpYWw7Cn07CgovLyBwcml2 YXRlIGJpdHMgZ28gaGVyZSwgdG8gYmUgd3JhcHBlZCBpbiB0aGVpciBzdHJ1Y3Qgd2l0aCB2aWV3 Ci8vIHR5cGUgY29tcGFyaW5nIHBhdGNoZXMKCnN0cnVjdCBzZ190YWJsZSAqcGFnZXM7Cltzbmlw XQoKVGhhdCB3YXkgaXQncyBjbGVhciB3aGljaCB2aWV3IG93bnMgd2hhdC4KCj4gIH07Cj4gIAo+ ICBleHRlcm4gY29uc3Qgc3RydWN0IGk5MTVfZ2d0dF92aWV3IGk5MTVfZ2d0dF92aWV3X25vcm1h bDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gaW5kZXggZmUxMWU5OS4uYzJj M2E3NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBAQCAtMjE5NCw3 ICsyMTk0LDcgQEAgc3RhdGljIGJvb2wgbmVlZF92dGRfd2Eoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKPiAgCXJldHVybiBmYWxzZTsKPiAgfQo+ICAKPiAtc3RhdGljIHVuc2lnbmVkIGludAo+ICt1 bnNpZ25lZCBpbnQKPiAgaW50ZWxfdGlsZV9oZWlnaHQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg dWludDMyX3QgcGl4ZWxfZm9ybWF0LAo+ICAJCSAgdWludDY0X3QgZmJfZm9ybWF0X21vZGlmaWVy KQo+ICB7Cj4gQEAgLTIyNTQsOSArMjI1NCwzNCBAQCBpbnQgaW50ZWxfZmlsbF9mYl9nZ3R0X3Zp ZXcoc3RydWN0IGk5MTVfZ2d0dF92aWV3ICp2aWV3LAo+ICAJCQkgICAgc3RydWN0IGRybV9mcmFt ZWJ1ZmZlciAqZmIsCj4gIAkJCSAgICBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFu ZV9zdGF0ZSkKPiAgewo+ICsJc3RydWN0IGludGVsX3JvdGF0aW9uX2luZm8gKmluZm8gPSAmdmll dy0+cm90YXRpb25faW5mbzsKPiArCXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcg cm90YXRlZF92aWV3ID0KPiArCQkJCXsgLnR5cGUgPSBJOTE1X0dHVFRfVklFV19ST1RBVEVEIH07 Cj4gKwo+ICAJKnZpZXcgPSBpOTE1X2dndHRfdmlld19ub3JtYWw7Cj4gIAo+IC0JcmV0dXJuIDA7 Cj4gKwlpZiAoIXBsYW5lX3N0YXRlKQo+ICsJCXJldHVybiAwOwo+ICsKPiArCWlmICghKHBsYW5l X3N0YXRlLT5yb3RhdGlvbiAmCj4gKwkgICAgKEJJVChEUk1fUk9UQVRFXzkwKSB8IEJJVChEUk1f Uk9UQVRFXzI3MCkpKSkKPiArCQlyZXR1cm4gMDsKClNob3VsZCB0aGUgcm90YXRpb24gY2hlY2tp bmcgaGVscGVyIGludHJvZHVjZWQgaW4gcHJldmlvdXMgcGF0Y2ggYmUgdXNlZApoZXJlIHRvbz8K Cj4gKwo+ICsJKnZpZXcgPSByb3RhdGVkX3ZpZXc7Cj4gKwo+ICsJaW5mby0+aGVpZ2h0ID0gZmIt PmhlaWdodDsKPiArCWluZm8tPnBpeGVsX2Zvcm1hdCA9IGZiLT5waXhlbF9mb3JtYXQ7Cj4gKwlp bmZvLT5waXRjaCA9IGZiLT5waXRjaGVzWzBdOwo+ICsJaW5mby0+ZmJfbW9kaWZpZXIgPSBmYi0+ bW9kaWZpZXJbMF07Cj4gKwo+ICsJaWYgKCEoaW5mby0+ZmJfbW9kaWZpZXIgPT0gSTkxNV9GT1JN QVRfTU9EX1lfVElMRUQgfHwKPiArCSAgICAgIGluZm8tPmZiX21vZGlmaWVyID09IEk5MTVfRk9S TUFUX01PRF9ZZl9USUxFRCkpIHsKPiArCQlEUk1fREVCVUdfS01TKAo+ICsJCQkgICAgICAiWSBv ciBZZiB0aWxpbmcgaXMgbmVlZGVkIGZvciA5MC8yNzAgcm90YXRpb24hXG4iKTsKPiArCQlyZXR1 cm4gLUVJTlZBTDsKPiArCX0KPiArCj4gKwlyZXR1cm4gMTsKPiAgfQo+ICAKPiAgaW50Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBpbmRleCAzNzIxODc4Li41M2ExMzcyIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBAQCAtOTg3LDYgKzk4NywxMCBAQCBpbnQgaW50ZWxfcGxh bmVfYXRvbWljX3NldF9wcm9wZXJ0eShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgCQkJCSAg ICBzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wZXJ0eSwKPiAgCQkJCSAgICB1aW50NjRfdCB2YWwp Owo+ICAKPiArdW5zaWduZWQgaW50Cj4gK2ludGVsX3RpbGVfaGVpZ2h0KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHVpbnQzMl90IHBpeGVsX2Zvcm1hdCwKPiArCQkgIHVpbnQ2NF90IGZiX2Zvcm1h dF9tb2RpZmllcik7Cj4gKwo+ICAvKiBzaGFyZWQgZHBsbCBmdW5jdGlvbnMgKi8KPiAgc3RydWN0 IGludGVsX3NoYXJlZF9kcGxsICppbnRlbF9jcnRjX3RvX3NoYXJlZF9kcGxsKHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjKTsKPiAgdm9pZCBhc3NlcnRfc2hhcmVkX2RwbGwoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aW50ZWwtZ2Z4Cg==