From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sivakumar Thulasimani Subject: Re: [PATCH 10/12] drm/i915: Compute display surface offset in the plane check hook for SKL+ Date: Mon, 9 May 2016 16:00:28 +0530 Message-ID: <573066C4.8030907@intel.com> References: <1462290001-9246-1-git-send-email-ville.syrjala@linux.intel.com> <1462290001-9246-11-git-send-email-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id D395B6E123 for ; Mon, 9 May 2016 10:25:32 +0000 (UTC) In-Reply-To: <1462290001-9246-11-git-send-email-ville.syrjala@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: ville.syrjala@linux.intel.com, intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org UmV2aWV3ZWQtYnk6IFNpdmFrdW1hciBUaHVsYXNpbWFuaSA8c2l2YWt1bWFyLnRodWxhc2ltYW5p QGludGVsLmNvbT4KCk9uIFR1ZXNkYXkgMDMgTWF5IDIwMTYgMDk6MDkgUE0sIHZpbGxlLnN5cmph bGFAbGludXguaW50ZWwuY29tIHdyb3RlOgo+IEZyb206IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUu c3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4KPiBTS0wgaGFzIG5hc3R5IGxpbWl0YXRpb25zIHdp dGggdGhlIGRpc3BsYXkgc3VyZmFjZSBvZmZzZXRzOgo+ICogc291cmNlIHggb2Zmc2V0ICsgd2lk dGggbXVzdCBiZSBsZXNzIHRoYW4gdGhlIHN0cmlkZSBmb3IgWCB0aWxlZAo+ICAgIHN1cmZhY2Vz IG9yIHRoZSBkaXNwbGF5IGVuZ2luZSBmYWxscyBvdmVyCj4gKiB0aGUgc3VyZmFjZSBvZmZzZXQg cmVxdWlyZXMgbG90cyBvZiBhbGlnbm1lbnQgKDI1Nksgb3IgMU0pCj4KPiBUaGVzZSBmYWN0cyBt ZWFuIHRoYXQgd2UgY2FuJ3QganVzdCBwaWNrIGFueSBzdWl0YWJseSBhbGlnbmVkIHRpbGUKPiBi b3VuZGFyeSBhcyB0aGUgb2Zmc2V0IGFuZCBleHBlY3QgdGhlIHJlc3VsdGluZyB4IG9mZnNldCB0 byBiZSB1c2VhYmxlLgo+IFRoZSBzb2x1dGlvbiBpcyB0byBzdGFydCB3aXRoIHRoZSBjbG9zZXN0 IGJvdW5kYXJ5IGFzIGJlZm9yZSwgYnV0IHRoZW4KPiBrZWVwIHNlYXJoaW5nIGJhY2t3YXJkcyB1 bnRpbCB3ZSBmaW5kIG9uZSB0aGF0IHdvcmtzLCBvciBkb24ndC4gVGhpcwo+IG1lYW5zIHdlIG11 c3QgYmUgcHJlcGFyZWQgdG8gZmFpbCwgaGVuY2UgdGhlIHdob2xlIHN1cmZhY2Ugb2Zmc2V0Cj4g Y2FsY3VsYXRpb24gbmVlZHMgdG8gYmUgbW92ZWQgdG8gdGhlIC5jaGVja19wbGFuZSgpIGhvb2sg ZnJvbSB0aGUKPiAudXBkYXRlX3BsYW5lKCkgaG9vay4KPgo+IFdoaWxlIGF0IGl0IHdlIGNhbiBj aGVjayB0aGF0IHRoZSBzb3VyY2Ugd2lkdGgvaGVpZ2h0IGRvbid0IGV4Y2VlZAo+IG1heGltdW0g cGxhbmUgc2l6ZSBsaW1pdHMuCj4KPiBXZSdsbCBzdG9yZSB0aGUgcmVzdWx0cyBvZiB0aGUgY29t cHV0YXRpb24gaW4gdGhlIHBsYW5lIHN0YXRlIHRvIG1ha2UKPiBpdCBlYXN5IGZvciB0aGUgLnVw ZGF0ZV9wbGFuZSgpIGhvb2sgdG8gZG8gaXRzIHRoaW5nLgo+Cj4gU2lnbmVkLW9mZi1ieTogVmls bGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiAtLS0KPiAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8IDE2NCArKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2Lmgg ICAgIHwgICA1ICsrCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyAgfCAg MzMgKysrLS0tLQo+ICAgMyBmaWxlcyBjaGFuZ2VkLCAxNTEgaW5zZXJ0aW9ucygrKSwgNTEgZGVs ZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gaW5kZXggYWQ3 YzQ4NzU3YmE2Li5iM2Q3ZDMxMmU1N2MgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jCj4gQEAgLTI4NzMsNiArMjg3MywxMjAgQEAgdmFsaWRfZmI6Cj4gICAJb2JqLT5mcm9u dGJ1ZmZlcl9iaXRzIHw9IHRvX2ludGVsX3BsYW5lKHByaW1hcnkpLT5mcm9udGJ1ZmZlcl9iaXQ7 Cj4gICB9Cj4gICAKPiArc3RhdGljIGludCBza2xfbWF4X3BsYW5lX3dpZHRoKGNvbnN0IHN0cnVj dCBkcm1fZnJhbWVidWZmZXIgKmZiLCBpbnQgcGxhbmUsCj4gKwkJCSAgICAgICB1bnNpZ25lZCBp bnQgcm90YXRpb24pCj4gK3sKPiArCWludCBjcHAgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChmYi0+ cGl4ZWxfZm9ybWF0LCBwbGFuZSk7Cj4gKwo+ICsJc3dpdGNoIChmYi0+bW9kaWZpZXJbcGxhbmVd KSB7Cj4gKwljYXNlIERSTV9GT1JNQVRfTU9EX05PTkU6Cj4gKwljYXNlIEk5MTVfRk9STUFUX01P RF9YX1RJTEVEOgo+ICsJCXN3aXRjaCAoY3BwKSB7Cj4gKwkJY2FzZSA4Ogo+ICsJCQlyZXR1cm4g NDA5NjsKPiArCQljYXNlIDQ6Cj4gKwkJY2FzZSAyOgo+ICsJCWNhc2UgMToKPiArCQkJcmV0dXJu IDgxOTI7Cj4gKwkJZGVmYXVsdDoKPiArCQkJTUlTU0lOR19DQVNFKGNwcCk7Cj4gKwkJCWJyZWFr Owo+ICsJCX0KPiArCQlicmVhazsKPiArCWNhc2UgSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQ6Cj4g KwljYXNlIEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRDoKPiArCQlzd2l0Y2ggKGNwcCkgewo+ICsJ CWNhc2UgODoKPiArCQkJcmV0dXJuIDIwNDg7Cj4gKwkJY2FzZSA0Ogo+ICsJCQlyZXR1cm4gNDA5 NjsKPiArCQljYXNlIDI6Cj4gKwkJY2FzZSAxOgo+ICsJCQlyZXR1cm4gODE5MjsKPiArCQlkZWZh dWx0Ogo+ICsJCQlNSVNTSU5HX0NBU0UoY3BwKTsKPiArCQkJYnJlYWs7Cj4gKwkJfQo+ICsJCWJy ZWFrOwo+ICsJZGVmYXVsdDoKPiArCQlNSVNTSU5HX0NBU0UoZmItPm1vZGlmaWVyW3BsYW5lXSk7 Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDIwNDg7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgc2tsX2No ZWNrX21haW5fc3VyZmFjZShzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ ICt7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lLT5kZXYpOwo+ICsJY29uc3Qgc3RydWN0IGRybV9mcmFt ZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYjsKPiArCXVuc2lnbmVkIGludCByb3Rh dGlvbiA9IHBsYW5lX3N0YXRlLT5iYXNlLnJvdGF0aW9uOwo+ICsJaW50IHggPSBwbGFuZV9zdGF0 ZS0+c3JjLngxID4+IDE2Owo+ICsJaW50IHkgPSBwbGFuZV9zdGF0ZS0+c3JjLnkxID4+IDE2Owo+ ICsJaW50IHcgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnNyYykgPj4gMTY7Cj4gKwlp bnQgaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnNyYykgPj4gMTY7Cj4gKwlpbnQg bWF4X3dpZHRoID0gc2tsX21heF9wbGFuZV93aWR0aChmYiwgMCwgcm90YXRpb24pOwo+ICsJaW50 IG1heF9oZWlnaHQgPSA0MDk2Owo+ICsJdTMyIGFsaWdubWVudCwgb2Zmc2V0Owo+ICsKPiArCWlm ICh3ID4gbWF4X3dpZHRoIHx8IGggPiBtYXhfaGVpZ2h0KSB7Cj4gKwkJRFJNX0RFQlVHX0tNUygi cmVxdWVzdGVkIFkvUkdCIHNvdXJjZSBzaXplICVkeCVkIHRvbyBiaWcgKGxpbWl0ICVkeCVkKVxu IiwKPiArCQkJICAgICAgdywgaCwgbWF4X3dpZHRoLCBtYXhfaGVpZ2h0KTsKPiArCQlyZXR1cm4g LUVJTlZBTDsKPiArCX0KPiArCj4gKwlpbnRlbF9hZGRfZmJfb2Zmc2V0cygmeCwgJnksIHBsYW5l X3N0YXRlLCAwKTsKPiArCW9mZnNldCA9IGludGVsX2NvbXB1dGVfdGlsZV9vZmZzZXQoJngsICZ5 LCBwbGFuZV9zdGF0ZSwgMCk7Cj4gKwo+ICsJYWxpZ25tZW50ID0gaW50ZWxfc3VyZl9hbGlnbm1l bnQoZGV2X3ByaXYsIGZiLT5tb2RpZmllclswXSk7Cj4gKwo+ICsJLyoKPiArCSAqIFdoZW4gdXNp bmcgYW4gWC10aWxlZCBzdXJmYWNlLCB0aGUgcGxhbmUgYmxvd3MgdXAKPiArCSAqIGlmIHRoZSB4 IG9mZnNldCArIHdpZHRoIGV4Y2VlZCB0aGUgc3RyaWRlLgo+ICsJICoKPiArCSAqIFRPRE86IGxp bmVhciBhbmQgWS10aWxlZCBzZWVtIGZpbmUsIFlmIHVudGVzdGVkLAo+ICsJICovCj4gKwlpZiAo ZmItPm1vZGlmaWVyWzBdID09IEk5MTVfRk9STUFUX01PRF9YX1RJTEVEKSB7Cj4gKwkJaW50IGNw cCA9IGRybV9mb3JtYXRfcGxhbmVfY3BwKGZiLT5waXhlbF9mb3JtYXQsIDApOwo+ICsKPiArCQlm b3IgKDs7KSB7Cj4gKwkJCWlmICgoeCArIHcpICogY3BwIDw9IGZiLT5waXRjaGVzWzBdKQo+ICsJ CQkJYnJlYWs7Cj4gKwo+ICsJCQlpZiAob2Zmc2V0ID09IDApIHsKPiArCQkJCURSTV9ERUJVR19L TVMoIlVuYWJsZSB0byBmaW5kIHN1aXRhYmxlIGRpc3BsYXkgc3VyZmFjZSBvZmZzZXRcbiIpOwo+ ICsJCQkJcmV0dXJuIC1FSU5WQUw7Cj4gKwkJCX0KPiArCj4gKwkJCW9mZnNldCA9IGludGVsX2Fk anVzdF90aWxlX29mZnNldCgmeCwgJnksIHBsYW5lX3N0YXRlLCAwLAo+ICsJCQkJCQkJICBvZmZz ZXQsIG9mZnNldCAtIGFsaWdubWVudCk7Cj4gKwkJfQo+ICsJfQo+ICsKPiArCXBsYW5lX3N0YXRl LT5tYWluLm9mZnNldCA9IG9mZnNldDsKPiArCXBsYW5lX3N0YXRlLT5tYWluLnggPSB4Owo+ICsJ cGxhbmVfc3RhdGUtPm1haW4ueSA9IHk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK2lu dCBza2xfY2hlY2tfcGxhbmVfc3VyZmFjZShzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5l X3N0YXRlKQo+ICt7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5l X3N0YXRlLT5iYXNlLmZiOwo+ICsJdW5zaWduZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUt PmJhc2Uucm90YXRpb247Cj4gKwlpbnQgcmV0Owo+ICsKPiArCS8qIFJvdGF0ZSBzcmMgY29vcmRp bmF0ZXMgdG8gbWF0Y2ggcm90YXRlZCBHVFQgdmlldyAqLwo+ICsJaWYgKGludGVsX3JvdGF0aW9u XzkwX29yXzI3MChyb3RhdGlvbikpCj4gKwkJZHJtX3JlY3Rfcm90YXRlKCZwbGFuZV9zdGF0ZS0+ c3JjLAo+ICsJCQkJZmItPndpZHRoLCBmYi0+aGVpZ2h0LCBCSVQoRFJNX1JPVEFURV8yNzApKTsK PiArCj4gKwlyZXQgPSBza2xfY2hlY2tfbWFpbl9zdXJmYWNlKHBsYW5lX3N0YXRlKTsKPiArCWlm IChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAgIHN0 YXRpYyB2b2lkIGk5eHhfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcHJp bWFyeSwKPiAgIAkJCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSwKPiAgIAkJCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5l X3N0YXRlKQo+IEBAIC0zMjUyLDEwICszMzY2LDEwIEBAIHN0YXRpYyB2b2lkIHNreWxha2VfdXBk YXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gICAJdTMyIHBsYW5l X2N0bDsKPiAgIAl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+YmFzZS5yb3Rh dGlvbjsKPiAgIAl1MzIgc3RyaWRlID0gc2tsX3BsYW5lX3N0cmlkZShmYiwgMCwgcm90YXRpb24p Owo+IC0JdTMyIHN1cmZfYWRkcjsKPiArCXUzMiBzdXJmX2FkZHIgPSBwbGFuZV9zdGF0ZS0+bWFp bi5vZmZzZXQ7Cj4gICAJaW50IHNjYWxlcl9pZCA9IHBsYW5lX3N0YXRlLT5zY2FsZXJfaWQ7Cj4g LQlpbnQgc3JjX3ggPSBwbGFuZV9zdGF0ZS0+c3JjLngxID4+IDE2Owo+IC0JaW50IHNyY195ID0g cGxhbmVfc3RhdGUtPnNyYy55MSA+PiAxNjsKPiArCWludCBzcmNfeCA9IHBsYW5lX3N0YXRlLT5t YWluLng7Cj4gKwlpbnQgc3JjX3kgPSBwbGFuZV9zdGF0ZS0+bWFpbi55Owo+ICAgCWludCBzcmNf dyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+c3JjKSA+PiAxNjsKPiAgIAlpbnQgc3Jj X2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5zcmMpID4+IDE2Owo+ICAgCWludCBk c3RfeCA9IHBsYW5lX3N0YXRlLT5kc3QueDE7Cj4gQEAgLTMyNzIsMjYgKzMzODYsNiBAQCBzdGF0 aWMgdm9pZCBza3lsYWtlX3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBs YW5lLAo+ICAgCXBsYW5lX2N0bCB8PSBQTEFORV9DVExfUExBTkVfR0FNTUFfRElTQUJMRTsKPiAg IAlwbGFuZV9jdGwgfD0gc2tsX3BsYW5lX2N0bF9yb3RhdGlvbihyb3RhdGlvbik7Cj4gICAKPiAt CWlmIChpbnRlbF9yb3RhdGlvbl85MF9vcl8yNzAocm90YXRpb24pKSB7Cj4gLQkJc3RydWN0IGRy bV9yZWN0IHIgPSB7Cj4gLQkJCS54MSA9IHNyY194LAo+IC0JCQkueDIgPSBzcmNfeCArIHNyY193 LAo+IC0JCQkueTEgPSBzcmNfeSwKPiAtCQkJLnkyID0gc3JjX3kgKyBzcmNfaCwKPiAtCQl9Owo+ IC0KPiAtCQkvKiBSb3RhdGUgc3JjIGNvb3JkaW5hdGVzIHRvIG1hdGNoIHJvdGF0ZWQgR1RUIHZp ZXcgKi8KPiAtCQlkcm1fcmVjdF9yb3RhdGUoJnIsIGZiLT53aWR0aCwgZmItPmhlaWdodCwgQklU KERSTV9ST1RBVEVfMjcwKSk7Cj4gLQo+IC0JCXNyY194ID0gci54MTsKPiAtCQlzcmNfeSA9IHIu eTE7Cj4gLQkJc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcik7Cj4gLQkJc3JjX2ggPSBkcm1fcmVj dF9oZWlnaHQoJnIpOwo+IC0JfQo+IC0KPiAtCWludGVsX2FkZF9mYl9vZmZzZXRzKCZzcmNfeCwg JnNyY195LCBwbGFuZV9zdGF0ZSwgMCk7Cj4gLQlzdXJmX2FkZHIgPSBpbnRlbF9jb21wdXRlX3Rp bGVfb2Zmc2V0KCZzcmNfeCwgJnNyY195LCBwbGFuZV9zdGF0ZSwgMCk7Cj4gLQo+ICAgCS8qIFNp emVzIGFyZSAwIGJhc2VkICovCj4gICAJc3JjX3ctLTsKPiAgIAlzcmNfaC0tOwo+IEBAIC0xNDE3 MCw2ICsxNDI2NCw3IEBAIGludGVsX2NoZWNrX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9wbGFu ZSAqcGxhbmUsCj4gICAJaW50IG1pbl9zY2FsZSA9IERSTV9QTEFORV9IRUxQRVJfTk9fU0NBTElO RzsKPiAgIAlpbnQgbWF4X3NjYWxlID0gRFJNX1BMQU5FX0hFTFBFUl9OT19TQ0FMSU5HOwo+ICAg CWJvb2wgY2FuX3Bvc2l0aW9uID0gZmFsc2U7Cj4gKwlpbnQgcmV0Owo+ICAgCj4gICAJaWYgKElO VEVMX0lORk8ocGxhbmUtPmRldiktPmdlbiA+PSA5KSB7Cj4gICAJCS8qIHVzZSBzY2FsZXIgd2hl biBjb2xvcmtleSBpcyBub3QgcmVxdWlyZWQgKi8KPiBAQCAtMTQxODAsMTEgKzE0Mjc1LDI0IEBA IGludGVsX2NoZWNrX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gICAJ CWNhbl9wb3NpdGlvbiA9IHRydWU7Cj4gICAJfQo+ICAgCj4gLQlyZXR1cm4gZHJtX3BsYW5lX2hl bHBlcl9jaGVja191cGRhdGUocGxhbmUsIGNydGMsIGZiLCAmc3RhdGUtPnNyYywKPiAtCQkJCQkg ICAgICZzdGF0ZS0+ZHN0LCAmc3RhdGUtPmNsaXAsCj4gLQkJCQkJICAgICBtaW5fc2NhbGUsIG1h eF9zY2FsZSwKPiAtCQkJCQkgICAgIGNhbl9wb3NpdGlvbiwgdHJ1ZSwKPiAtCQkJCQkgICAgICZz dGF0ZS0+dmlzaWJsZSk7Cj4gKwlyZXQgPSBkcm1fcGxhbmVfaGVscGVyX2NoZWNrX3VwZGF0ZShw bGFuZSwgY3J0YywgZmIsICZzdGF0ZS0+c3JjLAo+ICsJCQkJCSAgICAmc3RhdGUtPmRzdCwgJnN0 YXRlLT5jbGlwLAo+ICsJCQkJCSAgICBtaW5fc2NhbGUsIG1heF9zY2FsZSwKPiArCQkJCQkgICAg Y2FuX3Bvc2l0aW9uLCB0cnVlLAo+ICsJCQkJCSAgICAmc3RhdGUtPnZpc2libGUpOwo+ICsJaWYg KHJldCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCWlmICghZmIpCj4gKwkJcmV0dXJuIDA7Cj4g Kwo+ICsJaWYgKElOVEVMX0lORk8ocGxhbmUtPmRldiktPmdlbiA+PSA5KSB7Cj4gKwkJcmV0ID0g c2tsX2NoZWNrX3BsYW5lX3N1cmZhY2Uoc3RhdGUpOwo+ICsJCWlmIChyZXQpCj4gKwkJCXJldHVy biByZXQ7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyB2b2lk IGludGVsX2JlZ2luX2NydGNfY29tbWl0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcnYuaAo+IGluZGV4IDc1ZTRkNTlmMWFiMy4uZmQ0NTcxZDAxMzA0IDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBAQCAtMzE4LDYgKzMxOCwxMCBAQCBzdHJ1Y3Qg aW50ZWxfcGxhbmVfc3RhdGUgewo+ICAgCXN0cnVjdCBkcm1fcmVjdCBzcmM7Cj4gICAJc3RydWN0 IGRybV9yZWN0IGRzdDsKPiAgIAlzdHJ1Y3QgZHJtX3JlY3QgY2xpcDsKPiArCXN0cnVjdCB7Cj4g KwkJdTMyIG9mZnNldDsKPiArCQlpbnQgeCwgeTsKPiArCX0gbWFpbjsKPiAgIAlib29sIHZpc2li bGU7Cj4gICAKPiAgIAkvKgo+IEBAIC0xMjg4LDYgKzEyOTIsNyBAQCB1MzIgc2tsX3BsYW5lX2N0 bF90aWxpbmcodWludDY0X3QgZmJfbW9kaWZpZXIpOwo+ICAgdTMyIHNrbF9wbGFuZV9jdGxfcm90 YXRpb24odW5zaWduZWQgaW50IHJvdGF0aW9uKTsKPiAgIHUzMiBza2xfcGxhbmVfc3RyaWRlKGNv bnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLCBpbnQgcGxhbmUsCj4gICAJCSAgICAgdW5z aWduZWQgaW50IHJvdGF0aW9uKTsKPiAraW50IHNrbF9jaGVja19wbGFuZV9zdXJmYWNlKHN0cnVj dCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpOwo+ICAgCj4gICAvKiBpbnRlbF9jc3Iu YyAqLwo+ICAgdm9pZCBpbnRlbF9jc3JfdWNvZGVfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwo+IGluZGV4IGVkNDZhODRkOTdm Ny4uMDJlODQwMTM0YWRhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3Nwcml0ZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPiBA QCAtMTkwLDE1ICsxOTAsMTUgQEAgc2tsX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpk cm1fcGxhbmUsCj4gICAJY29uc3QgaW50IHBsYW5lID0gaW50ZWxfcGxhbmUtPnBsYW5lICsgMTsK PiAgIAl1MzIgcGxhbmVfY3RsOwo+ICAgCWNvbnN0IHN0cnVjdCBkcm1faW50ZWxfc3ByaXRlX2Nv bG9ya2V5ICprZXkgPSAmcGxhbmVfc3RhdGUtPmNrZXk7Cj4gLQl1MzIgc3VyZl9hZGRyOwo+ICsJ dTMyIHN1cmZfYWRkciA9IHBsYW5lX3N0YXRlLT5tYWluLm9mZnNldDsKPiAgIAl1bnNpZ25lZCBp bnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbjsKPiAgIAl1MzIgc3RyaWRl ID0gc2tsX3BsYW5lX3N0cmlkZShmYiwgMCwgcm90YXRpb24pOwo+ICAgCWludCBjcnRjX3ggPSBw bGFuZV9zdGF0ZS0+ZHN0LngxOwo+ICAgCWludCBjcnRjX3kgPSBwbGFuZV9zdGF0ZS0+ZHN0Lnkx Owo+ICAgCXVpbnQzMl90IGNydGNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+ZHN0 KTsKPiAgIAl1aW50MzJfdCBjcnRjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5k c3QpOwo+IC0JdWludDMyX3QgeCA9IHBsYW5lX3N0YXRlLT5zcmMueDEgPj4gMTY7Cj4gLQl1aW50 MzJfdCB5ID0gcGxhbmVfc3RhdGUtPnNyYy55MSA+PiAxNjsKPiArCXVpbnQzMl90IHggPSBwbGFu ZV9zdGF0ZS0+bWFpbi54Owo+ICsJdWludDMyX3QgeSA9IHBsYW5lX3N0YXRlLT5tYWluLnk7Cj4g ICAJdWludDMyX3Qgc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnNyYykgPj4g MTY7Cj4gICAJdWludDMyX3Qgc3JjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5z cmMpID4+IDE2Owo+ICAgCWNvbnN0IHN0cnVjdCBpbnRlbF9zY2FsZXIgKnNjYWxlciA9Cj4gQEAg LTIyNCwyNiArMjI0LDYgQEAgc2tsX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpkcm1f cGxhbmUsCj4gICAJZWxzZSBpZiAoa2V5LT5mbGFncyAmIEk5MTVfU0VUX0NPTE9SS0VZX1NPVVJD RSkKPiAgIAkJcGxhbmVfY3RsIHw9IFBMQU5FX0NUTF9LRVlfRU5BQkxFX1NPVVJDRTsKPiAgIAo+ IC0JaWYgKGludGVsX3JvdGF0aW9uXzkwX29yXzI3MChyb3RhdGlvbikpIHsKPiAtCQlzdHJ1Y3Qg ZHJtX3JlY3QgciA9IHsKPiAtCQkJLngxID0geCwKPiAtCQkJLngyID0geCArIHNyY193LAo+IC0J CQkueTEgPSB5LAo+IC0JCQkueTIgPSB5ICsgc3JjX2gsCj4gLQkJfTsKPiAtCj4gLQkJLyogUm90 YXRlIHNyYyBjb29yZGluYXRlcyB0byBtYXRjaCByb3RhdGVkIEdUVCB2aWV3ICovCj4gLQkJZHJt X3JlY3Rfcm90YXRlKCZyLCBmYi0+d2lkdGgsIGZiLT5oZWlnaHQsIEJJVChEUk1fUk9UQVRFXzI3 MCkpOwo+IC0KPiAtCQl4ID0gci54MTsKPiAtCQl5ID0gci55MTsKPiAtCQlzcmNfdyA9IGRybV9y ZWN0X3dpZHRoKCZyKTsKPiAtCQlzcmNfaCA9IGRybV9yZWN0X2hlaWdodCgmcik7Cj4gLQl9Cj4g LQo+IC0JaW50ZWxfYWRkX2ZiX29mZnNldHMoJngsICZ5LCBwbGFuZV9zdGF0ZSwgMCk7Cj4gLQlz dXJmX2FkZHIgPSBpbnRlbF9jb21wdXRlX3RpbGVfb2Zmc2V0KCZ4LCAmeSwgcGxhbmVfc3RhdGUs IDApOwo+IC0KPiAgIAkvKiBTaXplcyBhcmUgMCBiYXNlZCAqLwo+ICAgCXNyY193LS07Cj4gICAJ c3JjX2gtLTsKPiBAQCAtNzU1LDYgKzczNSw3IEBAIGludGVsX2NoZWNrX3Nwcml0ZV9wbGFuZShz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgIAlpbnQgaHNjYWxlLCB2c2NhbGU7Cj4gICAJaW50 IG1heF9zY2FsZSwgbWluX3NjYWxlOwo+ICAgCWJvb2wgY2FuX3NjYWxlOwo+ICsJaW50IHJldDsK PiAgIAo+ICAgCWlmICghZmIpIHsKPiAgIAkJc3RhdGUtPnZpc2libGUgPSBmYWxzZTsKPiBAQCAt OTA5LDYgKzg5MCwxMiBAQCBpbnRlbF9jaGVja19zcHJpdGVfcGxhbmUoc3RydWN0IGRybV9wbGFu ZSAqcGxhbmUsCj4gICAJZHN0LT55MSA9IGNydGNfeTsKPiAgIAlkc3QtPnkyID0gY3J0Y195ICsg Y3J0Y19oOwo+ICAgCj4gKwlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkgewo+ICsJCXJl dCA9IHNrbF9jaGVja19wbGFuZV9zdXJmYWNlKHN0YXRlKTsKPiArCQlpZiAocmV0KQo+ICsJCQly ZXR1cm4gcmV0Owo+ICsJfQo+ICsKPiAgIAlyZXR1cm4gMDsKPiAgIH0KPiAgIAoKLS0gCnJlZ2Fy ZHMsClNpdmFrdW1hciBUaHVsYXNpbWFuaQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4Cg==