From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH 02/15] drm/i915/skl+: refactore WM calculation for NV12 Date: Thu, 4 Jan 2018 17:19:33 +0100 Message-ID: <243d0641-9e5e-8222-a34f-f8df0fd6dcc5@linux.intel.com> References: <1515319159-30543-1-git-send-email-vidya.srinivas@intel.com> <1515319159-30543-3-git-send-email-vidya.srinivas@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4E9B46E19F for ; Thu, 4 Jan 2018 16:19:44 +0000 (UTC) In-Reply-To: <1515319159-30543-3-git-send-email-vidya.srinivas@intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Vidya Srinivas , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T3AgMDctMDEtMTggb20gMTA6NTkgc2NocmVlZiBWaWR5YSBTcmluaXZhczoKPiBGcm9tOiBNYWhl c2ggS3VtYXIgPG1haGVzaDEua3VtYXJAaW50ZWwuY29tPgo+Cj4gQ3VycmVudCBjb2RlIGNhbGN1 bGF0ZXMgRERCIGZvciBwbGFuYXIgZm9ybWF0cyBpbiBzdWNoIGEgd2F5IHRoYXQgd2UKPiBzdG9y ZSBEREIgb2YgcGxhbmUtMCBpbiBwbGFuZSAxICYgdmljZS12ZXJzYS4KPiBJbiBvcmRlciB0byBt YWtlIHRoaXMgY2xlYW4gdGhpcyBwYXRjaCByZWZhY3RvcnMgV00vRERCIGNhbGN1bGF0aW9uIGZv cgo+IE5WMTIgcGxhbmFyIGZvcm1hdHMuCj4KPiBTaWduZWQtb2ZmLWJ5OiBNYWhlc2ggS3VtYXIg PG1haGVzaDEua3VtYXJAaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oICB8ICAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCB8 ICAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgIHwgMTIwICsrKysrKysr KysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICAzIGZpbGVzIGNoYW5nZWQsIDYyIGlu c2VydGlvbnMoKyksIDYxIGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4g aW5kZXggNTYwNDdmOC4uOTYyNzE3ZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBA IC0xNDM0LDcgKzE0MzQsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2tsX2RkYl9lbnRyeV9lcXVh bChjb25zdCBzdHJ1Y3Qgc2tsX2RkYl9lbnRyeSAqZTEsCj4gIAo+ICBzdHJ1Y3Qgc2tsX2RkYl9h bGxvY2F0aW9uIHsKPiAgCXN0cnVjdCBza2xfZGRiX2VudHJ5IHBsYW5lW0k5MTVfTUFYX1BJUEVT XVtJOTE1X01BWF9QTEFORVNdOyAvKiBwYWNrZWQvdXYgKi8KXlNob3VsZCB0aGlzIGJlIGNoYW5n ZWQgdG8gcGFja2VkL3k/Cj4gLQlzdHJ1Y3Qgc2tsX2RkYl9lbnRyeSB5X3BsYW5lW0k5MTVfTUFY X1BJUEVTXVtJOTE1X01BWF9QTEFORVNdOwo+ICsJc3RydWN0IHNrbF9kZGJfZW50cnkgdXZfcGxh bmVbSTkxNV9NQVhfUElQRVNdW0k5MTVfTUFYX1BMQU5FU107Cj4gIH07Cj4gIAo+ICBzdHJ1Y3Qg c2tsX2RkYl92YWx1ZXMgewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gaW5kZXggOWM4YWVm OS4uNWY1ZTA3MCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYu aAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gQEAgLTUxMyw2ICs1 MTMsNyBAQCBzdHJ1Y3QgaW50ZWxfcGlwZV93bSB7Cj4gIHN0cnVjdCBza2xfcGxhbmVfd20gewo+ ICAJc3RydWN0IHNrbF93bV9sZXZlbCB3bVs4XTsKPiAgCXN0cnVjdCBza2xfd21fbGV2ZWwgdHJh bnNfd207Cj4gKwlib29sIGlzX252MTI7Cj4gIH07Cj4gIAo+ICBzdHJ1Y3Qgc2tsX3BpcGVfd20g ewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+IGluZGV4IGUyNTk4Y2YuLjE1ZWRiOWEgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiBAQCAtNDAwNCw5ICs0MDA0LDkgQEAgaW50IHNrbF9j aGVja19waXBlX21heF9waXhlbF9yYXRlKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAo+ ICBzdGF0aWMgdW5zaWduZWQgaW50Cj4gIHNrbF9wbGFuZV9yZWxhdGl2ZV9kYXRhX3JhdGUoY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKPiAgCQkJICAgICBjb25zdCBzdHJ1 Y3QgZHJtX3BsYW5lX3N0YXRlICpwc3RhdGUsCj4gLQkJCSAgICAgaW50IHkpCj4gKwkJCSAgICAg Y29uc3QgaW50IHBsYW5lKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9f aW50ZWxfcGxhbmUocHN0YXRlLT5wbGFuZSk7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVs X3BsYW5lID0gdG9faW50ZWxfcGxhbmUocHN0YXRlLT5wbGFuZSk7Cj4gIAlzdHJ1Y3QgaW50ZWxf cGxhbmVfc3RhdGUgKmludGVsX3BzdGF0ZSA9IHRvX2ludGVsX3BsYW5lX3N0YXRlKHBzdGF0ZSk7 Cj4gIAl1aW50MzJfdCBkYXRhX3JhdGU7Cj4gIAl1aW50MzJfdCB3aWR0aCA9IDAsIGhlaWdodCA9 IDA7Cj4gQEAgLTQwMjAsOSArNDAyMCw5IEBAIHNrbF9wbGFuZV9yZWxhdGl2ZV9kYXRhX3JhdGUo Y29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKPiAgCWZiID0gcHN0YXRlLT5m YjsKPiAgCWZvcm1hdCA9IGZiLT5mb3JtYXQtPmZvcm1hdDsKPiAgCj4gLQlpZiAocGxhbmUtPmlk ID09IFBMQU5FX0NVUlNPUikKPiArCWlmIChpbnRlbF9wbGFuZS0+aWQgPT0gUExBTkVfQ1VSU09S KQo+ICAJCXJldHVybiAwOwo+IC0JaWYgKHkgJiYgZm9ybWF0ICE9IERSTV9GT1JNQVRfTlYxMikK PiArCWlmIChwbGFuZSA9PSAxICYmIGZvcm1hdCAhPSBEUk1fRk9STUFUX05WMTIpCj4gIAkJcmV0 dXJuIDA7Cj4gIAo+ICAJLyoKPiBAQCAtNDAzMywxOSArNDAzMywxNCBAQCBza2xfcGxhbmVfcmVs YXRpdmVfZGF0YV9yYXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCj4g IAl3aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZpbnRlbF9wc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsK PiAgCWhlaWdodCA9IGRybV9yZWN0X2hlaWdodCgmaW50ZWxfcHN0YXRlLT5iYXNlLnNyYykgPj4g MTY7Cj4gIAo+IC0JLyogZm9yIHBsYW5hciBmb3JtYXQgKi8KPiAtCWlmIChmb3JtYXQgPT0gRFJN X0ZPUk1BVF9OVjEyKSB7Cj4gLQkJaWYgKHkpICAvKiB5LXBsYW5lIGRhdGEgcmF0ZSAqLwo+IC0J CQlkYXRhX3JhdGUgPSB3aWR0aCAqIGhlaWdodCAqCj4gLQkJCQlmYi0+Zm9ybWF0LT5jcHBbMF07 Cj4gLQkJZWxzZSAgICAvKiB1di1wbGFuZSBkYXRhIHJhdGUgKi8KPiAtCQkJZGF0YV9yYXRlID0g KHdpZHRoIC8gMikgKiAoaGVpZ2h0IC8gMikgKgo+IC0JCQkJZmItPmZvcm1hdC0+Y3BwWzFdOwo+ IC0JfSBlbHNlIHsKPiAtCQkvKiBmb3IgcGFja2VkIGZvcm1hdHMgKi8KPiAtCQlkYXRhX3JhdGUg PSB3aWR0aCAqIGhlaWdodCAqIGZiLT5mb3JtYXQtPmNwcFswXTsKPiArCS8qIFVWIHBsYW5lIGRv ZXMgMS8yIHBpeGVsIHN1Yi1zYW1wbGluZyAqLwo+ICsJaWYgKHBsYW5lID09IDEgJiYgZm9ybWF0 ID09IERSTV9GT1JNQVRfTlYxMikgewo+ICsJCXdpZHRoIC89IDI7Cj4gKwkJaGVpZ2h0IC89IDI7 Cj4gIAl9Cj4gIAo+ICsJZGF0YV9yYXRlID0gd2lkdGggKiBoZWlnaHQgKiBmYi0+Zm9ybWF0LT5j cHBbcGxhbmVdOwo+ICsKPiAgCWRvd25fc2NhbGVfYW1vdW50ID0gc2tsX3BsYW5lX2Rvd25zY2Fs ZV9hbW91bnQoY3N0YXRlLCBpbnRlbF9wc3RhdGUpOwo+ICAKPiAgCXJldHVybiBtdWxfcm91bmRf dXBfdTMyX2ZpeGVkMTYoZGF0YV9yYXRlLCBkb3duX3NjYWxlX2Ftb3VudCk7Cj4gQEAgLTQwNTgs OCArNDA1Myw4IEBAIHNrbF9wbGFuZV9yZWxhdGl2ZV9kYXRhX3JhdGUoY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKPiAgICovCj4gIHN0YXRpYyB1bnNpZ25lZCBpbnQKPiAg c2tsX2dldF90b3RhbF9yZWxhdGl2ZV9kYXRhX3JhdGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmludGVsX2NzdGF0ZSwKPiAtCQkJCSB1bnNpZ25lZCAqcGxhbmVfZGF0YV9yYXRlLAo+IC0JCQkJ IHVuc2lnbmVkICpwbGFuZV95X2RhdGFfcmF0ZSkKPiArCQkJCSB1bnNpZ25lZCBpbnQgKnBsYW5l X2RhdGFfcmF0ZSwKPiArCQkJCSB1bnNpZ25lZCBpbnQgKnV2X3BsYW5lX2RhdGFfcmF0ZSkKPiAg ewo+ICAJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjc3RhdGUgPSAmaW50ZWxfY3N0YXRlLT5iYXNl Owo+ICAJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlID0gY3N0YXRlLT5zdGF0ZTsKPiBA QCAtNDA3NSwxNyArNDA3MCwxNiBAQCBza2xfZ2V0X3RvdGFsX3JlbGF0aXZlX2RhdGFfcmF0ZShz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqaW50ZWxfY3N0YXRlLAo+ICAJCWVudW0gcGxhbmVfaWQg cGxhbmVfaWQgPSB0b19pbnRlbF9wbGFuZShwbGFuZSktPmlkOwo+ICAJCXVuc2lnbmVkIGludCBy YXRlOwo+ICAKPiAtCQkvKiBwYWNrZWQvdXYgKi8KcGFja2VkL3k/Cj4gIAkJcmF0ZSA9IHNrbF9w bGFuZV9yZWxhdGl2ZV9kYXRhX3JhdGUoaW50ZWxfY3N0YXRlLAo+ICAJCQkJCQkgICAgcHN0YXRl LCAwKTsKPiAgCQlwbGFuZV9kYXRhX3JhdGVbcGxhbmVfaWRdID0gcmF0ZTsKPiAgCj4gIAkJdG90 YWxfZGF0YV9yYXRlICs9IHJhdGU7Cj4gIAo+IC0JCS8qIHktcGxhbmUgKi8KPiArCQkvKiB1di1w bGFuZSAqLwo+ICAJCXJhdGUgPSBza2xfcGxhbmVfcmVsYXRpdmVfZGF0YV9yYXRlKGludGVsX2Nz dGF0ZSwKPiAgCQkJCQkJICAgIHBzdGF0ZSwgMSk7Cj4gLQkJcGxhbmVfeV9kYXRhX3JhdGVbcGxh bmVfaWRdID0gcmF0ZTsKPiArCQl1dl9wbGFuZV9kYXRhX3JhdGVbcGxhbmVfaWRdID0gcmF0ZTsK PiAgCj4gIAkJdG90YWxfZGF0YV9yYXRlICs9IHJhdGU7Cj4gIAl9Cj4gQEAgLTQwOTQsOCArNDA4 OCw3IEBAIHNrbF9nZXRfdG90YWxfcmVsYXRpdmVfZGF0YV9yYXRlKHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICppbnRlbF9jc3RhdGUsCj4gIH0KPiAgCj4gIHN0YXRpYyB1aW50MTZfdAo+IC1za2xf ZGRiX21pbl9hbGxvYyhjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwc3RhdGUsCj4gLQkJ ICBjb25zdCBpbnQgeSkKPiArc2tsX2RkYl9taW5fYWxsb2MoY29uc3Qgc3RydWN0IGRybV9wbGFu ZV9zdGF0ZSAqcHN0YXRlLCBjb25zdCBpbnQgcGxhbmUpCj4gIHsKPiAgCXN0cnVjdCBkcm1fZnJh bWVidWZmZXIgKmZiID0gcHN0YXRlLT5mYjsKPiAgCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAq aW50ZWxfcHN0YXRlID0gdG9faW50ZWxfcGxhbmVfc3RhdGUocHN0YXRlKTsKPiBAQCAtNDEwNiw4 ICs0MDk5LDggQEAgc2tsX2RkYl9taW5fYWxsb2MoY29uc3Qgc3RydWN0IGRybV9wbGFuZV9zdGF0 ZSAqcHN0YXRlLAo+ICAJaWYgKFdBUk5fT04oIWZiKSkKPiAgCQlyZXR1cm4gMDsKPiAgCj4gLQkv KiBGb3IgcGFja2VkIGZvcm1hdHMsIG5vIHktcGxhbmUsIHJldHVybiAwICovCj4gLQlpZiAoeSAm JiBmYi0+Zm9ybWF0LT5mb3JtYXQgIT0gRFJNX0ZPUk1BVF9OVjEyKQo+ICsJLyogRm9yIHBhY2tl ZCBmb3JtYXRzLCBhbmQgdXYtcGxhbmUsIHJldHVybiAwICovCj4gKwlpZiAocGxhbmUgPT0gMSAm JiBmYi0+Zm9ybWF0LT5mb3JtYXQgIT0gRFJNX0ZPUk1BVF9OVjEyKQo+ICAJCXJldHVybiAwOwo+ ICAKPiAgCS8qIEZvciBOb24gWS10aWxlIHJldHVybiA4LWJsb2NrcyAqLwo+IEBAIC00MTI2LDE1 ICs0MTE5LDEyIEBAIHNrbF9kZGJfbWluX2FsbG9jKGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfc3Rh dGUgKnBzdGF0ZSwKPiAgCXNyY19oID0gZHJtX3JlY3RfaGVpZ2h0KCZpbnRlbF9wc3RhdGUtPmJh c2Uuc3JjKSA+PiAxNjsKPiAgCj4gIAkvKiBIYWx2ZSBVViBwbGFuZSB3aWR0aCBhbmQgaGVpZ2h0 IGZvciBOVjEyICovCj4gLQlpZiAoZmItPmZvcm1hdC0+Zm9ybWF0ID09IERSTV9GT1JNQVRfTlYx MiAmJiAheSkgewo+ICsJaWYgKHBsYW5lID09IDEpIHsKPiAgCQlzcmNfdyAvPSAyOwo+ICAJCXNy Y19oIC89IDI7Cj4gIAl9Cj4gIAo+IC0JaWYgKGZiLT5mb3JtYXQtPmZvcm1hdCA9PSBEUk1fRk9S TUFUX05WMTIgJiYgIXkpCj4gLQkJcGxhbmVfYnBwID0gZmItPmZvcm1hdC0+Y3BwWzFdOwo+IC0J ZWxzZQo+IC0JCXBsYW5lX2JwcCA9IGZiLT5mb3JtYXQtPmNwcFswXTsKPiArCXBsYW5lX2JwcCA9 IGZiLT5mb3JtYXQtPmNwcFtwbGFuZV07Cj4gIAo+ICAJaWYgKGRybV9yb3RhdGlvbl85MF9vcl8y NzAocHN0YXRlLT5yb3RhdGlvbikpIHsKPiAgCQlzd2l0Y2ggKHBsYW5lX2JwcCkgewo+IEBAIC00 MTYyLDcgKzQxNTIsNyBAQCBza2xfZGRiX21pbl9hbGxvYyhjb25zdCBzdHJ1Y3QgZHJtX3BsYW5l X3N0YXRlICpwc3RhdGUsCj4gIAo+ICBzdGF0aWMgdm9pZAo+ICBza2xfZGRiX2NhbGNfbWluKGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsIGludCBudW1fYWN0aXZlLAo+IC0J CSB1aW50MTZfdCAqbWluaW11bSwgdWludDE2X3QgKnlfbWluaW11bSkKPiArCQkgdWludDE2X3Qg Km1pbmltdW0sIHVpbnQxNl90ICp1dl9taW5pbXVtKQo+ICB7Cj4gIAljb25zdCBzdHJ1Y3QgZHJt X3BsYW5lX3N0YXRlICpwc3RhdGU7Cj4gIAlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKPiBAQCAt NDE3Nyw3ICs0MTY3LDcgQEAgc2tsX2RkYl9jYWxjX21pbihjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3N0YXRlLCBpbnQgbnVtX2FjdGl2ZSwKPiAgCQkJY29udGludWU7Cj4gIAo+ICAJ CW1pbmltdW1bcGxhbmVfaWRdID0gc2tsX2RkYl9taW5fYWxsb2MocHN0YXRlLCAwKTsKPiAtCQl5 X21pbmltdW1bcGxhbmVfaWRdID0gc2tsX2RkYl9taW5fYWxsb2MocHN0YXRlLCAxKTsKPiArCQl1 dl9taW5pbXVtW3BsYW5lX2lkXSA9IHNrbF9kZGJfbWluX2FsbG9jKHBzdGF0ZSwgMSk7Cj4gIAl9 Cj4gIAo+ICAJbWluaW11bVtQTEFORV9DVVJTT1JdID0gc2tsX2N1cnNvcl9hbGxvY2F0aW9uKG51 bV9hY3RpdmUpOwo+IEBAIC00MTk1LDE3ICs0MTg1LDE3IEBAIHNrbF9hbGxvY2F0ZV9waXBlX2Rk YihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAo+ICAJc3RydWN0IHNrbF9kZGJfZW50 cnkgKmFsbG9jID0gJmNzdGF0ZS0+d20uc2tsLmRkYjsKPiAgCXVpbnQxNl90IGFsbG9jX3NpemUs IHN0YXJ0Owo+ICAJdWludDE2X3QgbWluaW11bVtJOTE1X01BWF9QTEFORVNdID0ge307Cj4gLQl1 aW50MTZfdCB5X21pbmltdW1bSTkxNV9NQVhfUExBTkVTXSA9IHt9Owo+ICsJdWludDE2X3QgdXZf bWluaW11bVtJOTE1X01BWF9QTEFORVNdID0ge307Cj4gIAl1bnNpZ25lZCBpbnQgdG90YWxfZGF0 YV9yYXRlOwo+ICAJZW51bSBwbGFuZV9pZCBwbGFuZV9pZDsKPiAgCWludCBudW1fYWN0aXZlOwo+ IC0JdW5zaWduZWQgcGxhbmVfZGF0YV9yYXRlW0k5MTVfTUFYX1BMQU5FU10gPSB7fTsKPiAtCXVu c2lnbmVkIHBsYW5lX3lfZGF0YV9yYXRlW0k5MTVfTUFYX1BMQU5FU10gPSB7fTsKPiArCXVuc2ln bmVkIGludCBwbGFuZV9kYXRhX3JhdGVbSTkxNV9NQVhfUExBTkVTXSA9IHt9Owo+ICsJdW5zaWdu ZWQgaW50IHV2X3BsYW5lX2RhdGFfcmF0ZVtJOTE1X01BWF9QTEFORVNdID0ge307Cj4gIAl1aW50 MTZfdCB0b3RhbF9taW5fYmxvY2tzID0gMDsKPiAgCj4gIAkvKiBDbGVhciB0aGUgcGFydGl0aW9u aW5nIGZvciBkaXNhYmxlZCBwbGFuZXMuICovCj4gIAltZW1zZXQoZGRiLT5wbGFuZVtwaXBlXSwg MCwgc2l6ZW9mKGRkYi0+cGxhbmVbcGlwZV0pKTsKPiAtCW1lbXNldChkZGItPnlfcGxhbmVbcGlw ZV0sIDAsIHNpemVvZihkZGItPnlfcGxhbmVbcGlwZV0pKTsKPiArCW1lbXNldChkZGItPnV2X3Bs YW5lW3BpcGVdLCAwLCBzaXplb2YoZGRiLT51dl9wbGFuZVtwaXBlXSkpOwo+ICAKPiAgCWlmIChX QVJOX09OKCFzdGF0ZSkpCj4gIAkJcmV0dXJuIDA7Cj4gQEAgLTQyMjAsNyArNDIxMCw3IEBAIHNr bF9hbGxvY2F0ZV9waXBlX2RkYihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAo+ICAJ aWYgKGFsbG9jX3NpemUgPT0gMCkKPiAgCQlyZXR1cm4gMDsKPiAgCj4gLQlza2xfZGRiX2NhbGNf bWluKGNzdGF0ZSwgbnVtX2FjdGl2ZSwgbWluaW11bSwgeV9taW5pbXVtKTsKPiArCXNrbF9kZGJf Y2FsY19taW4oY3N0YXRlLCBudW1fYWN0aXZlLCBtaW5pbXVtLCB1dl9taW5pbXVtKTsKPiAgCj4g IAkvKgo+ICAJICogMS4gQWxsb2NhdGUgdGhlIG1pbmludW0gcmVxdWlyZWQgYmxvY2tzIGZvciBl YWNoIGFjdGl2ZSBwbGFuZQo+IEBAIC00MjMwLDcgKzQyMjAsNyBAQCBza2xfYWxsb2NhdGVfcGlw ZV9kZGIoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKPiAgCj4gIAlmb3JfZWFjaF9w bGFuZV9pZF9vbl9jcnRjKGludGVsX2NydGMsIHBsYW5lX2lkKSB7Cj4gIAkJdG90YWxfbWluX2Js b2NrcyArPSBtaW5pbXVtW3BsYW5lX2lkXTsKPiAtCQl0b3RhbF9taW5fYmxvY2tzICs9IHlfbWlu aW11bVtwbGFuZV9pZF07Cj4gKwkJdG90YWxfbWluX2Jsb2NrcyArPSB1dl9taW5pbXVtW3BsYW5l X2lkXTsKPiAgCX0KPiAgCj4gIAlpZiAodG90YWxfbWluX2Jsb2NrcyA+IGFsbG9jX3NpemUpIHsK PiBAQCAtNDI1MiwxNCArNDI0MiwxNCBAQCBza2xfYWxsb2NhdGVfcGlwZV9kZGIoc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKPiAgCSAqLwo+ICAJdG90YWxfZGF0YV9yYXRlID0gc2ts X2dldF90b3RhbF9yZWxhdGl2ZV9kYXRhX3JhdGUoY3N0YXRlLAo+ICAJCQkJCQkJICAgcGxhbmVf ZGF0YV9yYXRlLAo+IC0JCQkJCQkJICAgcGxhbmVfeV9kYXRhX3JhdGUpOwo+ICsJCQkJCQkJICAg dXZfcGxhbmVfZGF0YV9yYXRlKTsKPiAgCWlmICh0b3RhbF9kYXRhX3JhdGUgPT0gMCkKPiAgCQly ZXR1cm4gMDsKPiAgCj4gIAlzdGFydCA9IGFsbG9jLT5zdGFydDsKPiAgCWZvcl9lYWNoX3BsYW5l X2lkX29uX2NydGMoaW50ZWxfY3J0YywgcGxhbmVfaWQpIHsKPiAtCQl1bnNpZ25lZCBpbnQgZGF0 YV9yYXRlLCB5X2RhdGFfcmF0ZTsKPiAtCQl1aW50MTZfdCBwbGFuZV9ibG9ja3MsIHlfcGxhbmVf YmxvY2tzID0gMDsKPiArCQl1bnNpZ25lZCBpbnQgZGF0YV9yYXRlLCB1dl9kYXRhX3JhdGU7Cj4g KwkJdWludDE2X3QgcGxhbmVfYmxvY2tzLCB1dl9wbGFuZV9ibG9ja3M7Cj4gIAo+ICAJCWlmIChw bGFuZV9pZCA9PSBQTEFORV9DVVJTT1IpCj4gIAkJCWNvbnRpbnVlOwo+IEBAIC00MjgzLDIxICs0 MjczLDIwIEBAIHNrbF9hbGxvY2F0ZV9waXBlX2RkYihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3N0YXRlLAo+ICAKPiAgCQlzdGFydCArPSBwbGFuZV9ibG9ja3M7Cj4gIAo+IC0JCS8qCj4gLQkJ ICogYWxsb2NhdGlvbiBmb3IgeV9wbGFuZSBwYXJ0IG9mIHBsYW5hciBmb3JtYXQ6Cj4gLQkJICov Cj4gLQkJeV9kYXRhX3JhdGUgPSBwbGFuZV95X2RhdGFfcmF0ZVtwbGFuZV9pZF07Cj4gKwkJLyog QWxsb2NhdGUgRERCIGZvciBVViBwbGFuZSBmb3IgcGxhbmFyIGZvcm1hdC9OVjEyICovCj4gKwkJ dXZfZGF0YV9yYXRlID0gdXZfcGxhbmVfZGF0YV9yYXRlW3BsYW5lX2lkXTsKPiAgCj4gLQkJeV9w bGFuZV9ibG9ja3MgPSB5X21pbmltdW1bcGxhbmVfaWRdOwo+IC0JCXlfcGxhbmVfYmxvY2tzICs9 IGRpdl91NjQoKHVpbnQ2NF90KWFsbG9jX3NpemUgKiB5X2RhdGFfcmF0ZSwKPiArCQl1dl9wbGFu ZV9ibG9ja3MgPSB1dl9taW5pbXVtW3BsYW5lX2lkXTsKPiArCQl1dl9wbGFuZV9ibG9ja3MgKz0g ZGl2X3U2NCgodWludDY0X3QpYWxsb2Nfc2l6ZSAqIHV2X2RhdGFfcmF0ZSwKPiAgCQkJCQl0b3Rh bF9kYXRhX3JhdGUpOwo+ICAKPiAtCQlpZiAoeV9kYXRhX3JhdGUpIHsKPiAtCQkJZGRiLT55X3Bs YW5lW3BpcGVdW3BsYW5lX2lkXS5zdGFydCA9IHN0YXJ0Owo+IC0JCQlkZGItPnlfcGxhbmVbcGlw ZV1bcGxhbmVfaWRdLmVuZCA9IHN0YXJ0ICsgeV9wbGFuZV9ibG9ja3M7Cj4gKwkJaWYgKHV2X2Rh dGFfcmF0ZSkgewo+ICsJCQlkZGItPnV2X3BsYW5lW3BpcGVdW3BsYW5lX2lkXS5zdGFydCA9IHN0 YXJ0Owo+ICsJCQlkZGItPnV2X3BsYW5lW3BpcGVdW3BsYW5lX2lkXS5lbmQgPSBzdGFydCArCj4g KwkJCQkJCQkJdXZfcGxhbmVfYmxvY2tzOwo+ICAJCX0KPiAgCj4gLQkJc3RhcnQgKz0geV9wbGFu ZV9ibG9ja3M7Cj4gKwkJc3RhcnQgKz0gdXZfcGxhbmVfYmxvY2tzOwo+ICAJfQo+ICAKPiAgCXJl dHVybiAwOwo+IEBAIC00NDI1LDggKzQ0MTQsNyBAQCBza2xfY29tcHV0ZV9wbGFuZV93bV9wYXJh bXMoY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCXdwLT53aWR0 aCA9IGRybV9yZWN0X3dpZHRoKCZpbnRlbF9wc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsKPiAgCX0K PiAgCj4gLQl3cC0+Y3BwID0gKGZiLT5mb3JtYXQtPmZvcm1hdCA9PSBEUk1fRk9STUFUX05WMTIp ID8gZmItPmZvcm1hdC0+Y3BwWzFdIDoKPiAtCQkJCQkJCSAgICBmYi0+Zm9ybWF0LT5jcHBbMF07 Cj4gKwl3cC0+Y3BwID0gZmItPmZvcm1hdC0+Y3BwWzBdOwo+ICAJd3AtPnBsYW5lX3BpeGVsX3Jh dGUgPSBza2xfYWRqdXN0ZWRfcGxhbmVfcGl4ZWxfcmF0ZShjc3RhdGUsCj4gIAkJCQkJCQkgICAg IGludGVsX3BzdGF0ZSk7Cj4gIAo+IEBAIC00NjE4LDYgKzQ2MDYsOSBAQCBza2xfY29tcHV0ZV93 bV9sZXZlbHMoY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQly ZXR1cm4gcmV0Owo+ICAJfQo+ICAKPiArCWlmIChpbnRlbF9wc3RhdGUtPmJhc2UuZmItPmZvcm1h dC0+Zm9ybWF0ID09IERSTV9GT1JNQVRfTlYxMikKPiArCQl3bS0+aXNfbnYxMiA9IHRydWU7Cj4g Kwo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gQEAgLTQ3ODgsMTAgKzQ3NzksMTkgQEAgc3RhdGlj IHZvaWQgc2tsX3dyaXRlX3BsYW5lX3dtKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAo+ ICAJc2tsX3dyaXRlX3dtX2xldmVsKGRldl9wcml2LCBQTEFORV9XTV9UUkFOUyhwaXBlLCBwbGFu ZV9pZCksCj4gIAkJCSAgICZ3bS0+dHJhbnNfd20pOwo+ICAKPiAtCXNrbF9kZGJfZW50cnlfd3Jp dGUoZGV2X3ByaXYsIFBMQU5FX0JVRl9DRkcocGlwZSwgcGxhbmVfaWQpLAo+IC0JCQkgICAgJmRk Yi0+cGxhbmVbcGlwZV1bcGxhbmVfaWRdKTsKPiAtCXNrbF9kZGJfZW50cnlfd3JpdGUoZGV2X3By aXYsIFBMQU5FX05WMTJfQlVGX0NGRyhwaXBlLCBwbGFuZV9pZCksCj4gLQkJCSAgICAmZGRiLT55 X3BsYW5lW3BpcGVdW3BsYW5lX2lkXSk7Cj4gKwlpZiAod20tPmlzX252MTIpIHsKPiArCQlza2xf ZGRiX2VudHJ5X3dyaXRlKGRldl9wcml2LCBQTEFORV9CVUZfQ0ZHKHBpcGUsIHBsYW5lX2lkKSwK PiArCQkJCSZkZGItPnV2X3BsYW5lW3BpcGVdW3BsYW5lX2lkXSk7Cj4gKwkJc2tsX2RkYl9lbnRy eV93cml0ZShkZXZfcHJpdiwKPiArCQkJCSAgICBQTEFORV9OVjEyX0JVRl9DRkcocGlwZSwgcGxh bmVfaWQpLAo+ICsJCQkJICAgICZkZGItPnBsYW5lW3BpcGVdW3BsYW5lX2lkXSk7Cj4gKwl9IGVs c2Ugewo+ICsJCXNrbF9kZGJfZW50cnlfd3JpdGUoZGV2X3ByaXYsIFBMQU5FX0JVRl9DRkcocGlw ZSwgcGxhbmVfaWQpLAo+ICsJCQkJJmRkYi0+cGxhbmVbcGlwZV1bcGxhbmVfaWRdKTsKPiArCQlz a2xfZGRiX2VudHJ5X3dyaXRlKGRldl9wcml2LAo+ICsJCQkJICAgIFBMQU5FX05WMTJfQlVGX0NG RyhwaXBlLCBwbGFuZV9pZCksCj4gKwkJCQkgICAgJmRkYi0+dXZfcGxhbmVbcGlwZV1bcGxhbmVf aWRdKTsKCkl0J3MgcHJvYmFibHkgYmV0dGVyIHRvIGFsd2F5cyB3cml0ZSAwIGhlcmUgdG8gYXZv aWQgY29uZnVzaW9uLiA6KQpXcml0aW5nIHNvbWV0aGluZyBlbHNlIGhlcmUgaXMgcHJvYmFibHkg YSBiYWQgaWRlYS4uCgoKPiArCX0KPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgc2tsX3dyaXRlX2N1 cnNvcl93bShzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKPiBAQCAtNDkwNiw4ICs0OTA2 LDggQEAgc2tsX2RkYl9hZGRfYWZmZWN0ZWRfcGxhbmVzKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjc3RhdGUpCj4gIAo+ICAJCWlmIChza2xfZGRiX2VudHJ5X2VxdWFsKCZjdXJfZGRiLT5wbGFu ZVtwaXBlXVtwbGFuZV9pZF0sCj4gIAkJCQkJJm5ld19kZGItPnBsYW5lW3BpcGVdW3BsYW5lX2lk XSkgJiYKPiAtCQkgICAgc2tsX2RkYl9lbnRyeV9lcXVhbCgmY3VyX2RkYi0+eV9wbGFuZVtwaXBl XVtwbGFuZV9pZF0sCj4gLQkJCQkJJm5ld19kZGItPnlfcGxhbmVbcGlwZV1bcGxhbmVfaWRdKSkK PiArCQkgICAgc2tsX2RkYl9lbnRyeV9lcXVhbCgmY3VyX2RkYi0+dXZfcGxhbmVbcGlwZV1bcGxh bmVfaWRdLAo+ICsJCQkJCSZuZXdfZGRiLT51dl9wbGFuZVtwaXBlXVtwbGFuZV9pZF0pKQo+ICAJ CQljb250aW51ZTsKPiAgCj4gIAkJcGxhbmVfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9wbGFuZV9z dGF0ZShzdGF0ZSwgcGxhbmUpOwo+IEBAIC01MDAxLDggKzUwMDEsOCBAQCBza2xfY29weV93bV9m b3JfcGlwZShzdHJ1Y3Qgc2tsX2RkYl92YWx1ZXMgKmRzdCwKPiAgCQkgICAgIHN0cnVjdCBza2xf ZGRiX3ZhbHVlcyAqc3JjLAo+ICAJCSAgICAgZW51bSBwaXBlIHBpcGUpCj4gIHsKPiAtCW1lbWNw eShkc3QtPmRkYi55X3BsYW5lW3BpcGVdLCBzcmMtPmRkYi55X3BsYW5lW3BpcGVdLAo+IC0JICAg ICAgIHNpemVvZihkc3QtPmRkYi55X3BsYW5lW3BpcGVdKSk7Cj4gKwltZW1jcHkoZHN0LT5kZGIu dXZfcGxhbmVbcGlwZV0sIHNyYy0+ZGRiLnV2X3BsYW5lW3BpcGVdLAo+ICsJICAgICAgIHNpemVv Zihkc3QtPmRkYi51dl9wbGFuZVtwaXBlXSkpOwo+ICAJbWVtY3B5KGRzdC0+ZGRiLnBsYW5lW3Bp cGVdLCBzcmMtPmRkYi5wbGFuZVtwaXBlXSwKPiAgCSAgICAgICBzaXplb2YoZHN0LT5kZGIucGxh bmVbcGlwZV0pKTsKPiAgfQoKV2l0aCB0aGF0IGZpeGVkIGZvciB0aGlzIGFuZCBwYXRjaCAxOgoK UmV2aWV3ZWQtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5p bnRlbC5jb20+CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK