From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v2 08/13] drm/i915: Clean up skl+ vs. icl+ watermark computation Date: Wed, 21 Nov 2018 21:05:33 +0200 Message-ID: <20181121190533.GL9144@intel.com> References: <20181114210729.16185-1-ville.syrjala@linux.intel.com> <20181114210729.16185-9-ville.syrjala@linux.intel.com> <20181120224434.GP32505@mdroper-desk.amr.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9AC566E350 for ; Wed, 21 Nov 2018 19:05:36 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20181120224434.GP32505@mdroper-desk.amr.corp.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Matt Roper Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBOb3YgMjAsIDIwMTggYXQgMDI6NDQ6MzRQTSAtMDgwMCwgTWF0dCBSb3BlciB3cm90 ZToKPiBPbiBXZWQsIE5vdiAxNCwgMjAxOCBhdCAxMTowNzoyNFBNICswMjAwLCBWaWxsZSBTeXJq YWxhIHdyb3RlOgo+ID4gRnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4 LmludGVsLmNvbT4KPiA+IAo+ID4gTWFrZSBhIGNsZWFuZXIgc3BsaXQgYmV0d2VlbiB0aGUgc2ts KyBhbmQgaWNsKyB3YXlzIG9mIGNvbXB1dGluZwo+ID4gd2F0ZXJtYXJrcy4gVGhpcyB3YXkgc2ts X2J1aWxkX3BpcGVfd20oKSBkb2Vzbid0IGhhdmUgdG8ga25vdyBhbnkKPiA+IG9mIHRoZSBncml0 dHkgZGV0YWlscyBvZiBpY2wrIG1hc3Rlci9zbGF2ZSBwbGFuZXMuCj4gPiAKPiA+IFdlIGNhbiBh bHNvIHNpbXBsaWZ5IGEgYnVuY2ggb2YgdGhlIGxvd2VyIGxldmVsIGNvZGUgYnkgcHVsbGluZwo+ ID4gdGhlIHBsYW5lIHZpc2liaWxpdHkgY2hlY2tzIGEgYml0IGhpZ2hlciB1cC4KPiA+IAo+ID4g Q2M6IE1hdHQgUm9wZXIgPG1hdHRoZXcuZC5yb3BlckBpbnRlbC5jb20+Cj4gPiBTaWduZWQtb2Zm LWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+ID4g LS0tCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyB8IDE5MiArKysrKysrKysr KysrKysrKy0tLS0tLS0tLS0tLS0tLQo+ID4gIDEgZmlsZSBjaGFuZ2VkLCAxMDMgaW5zZXJ0aW9u cygrKSwgODkgZGVsZXRpb25zKC0pCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+ID4g aW5kZXggNTljOTFlYzExYzYwLi5hNzQzZTA4OWFiN2QgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9wbS5jCj4gPiBAQCAtNDU5MSw5ICs0NTkxLDYgQEAgc2tsX2NvbXB1dGVfcGxhbmVfd21f cGFyYW1zKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ICAJCXRv X2ludGVsX2F0b21pY19zdGF0ZShjc3RhdGUtPmJhc2Uuc3RhdGUpOwo+ID4gIAlib29sIGFwcGx5 X21lbW9yeV9id193YSA9IHNrbF9uZWVkc19tZW1vcnlfYndfd2Eoc3RhdGUpOwo+ID4gIAo+ID4g LQlpZiAoIWludGVsX3dtX3BsYW5lX3Zpc2libGUoY3N0YXRlLCBpbnRlbF9wc3RhdGUpKQo+ID4g LQkJcmV0dXJuIDA7Cj4gPiAtCj4gPiAgCS8qIG9ubHkgTlYxMiBmb3JtYXQgaGFzIHR3byBwbGFu ZXMgKi8KPiA+ICAJaWYgKHBsYW5lX2lkID09IDEgJiYgZmItPmZvcm1hdC0+Zm9ybWF0ICE9IERS TV9GT1JNQVRfTlYxMikgewo+ID4gIAkJRFJNX0RFQlVHX0tNUygiTm9uIE5WMTIgZm9ybWF0IGhh dmUgc2luZ2xlIHBsYW5lXG4iKTsKPiA+IEBAIC00NzA3LDkgKzQ3MDQsNiBAQCBzdGF0aWMgaW50 IHNrbF9jb21wdXRlX3BsYW5lX3dtKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKPiA+ICAJaWYgKGxhdGVuY3kgPT0gMCkKPiA+ICAJCXJldHVybiBsZXZlbCA9PSAwID8g LUVJTlZBTCA6IDA7Cj4gPiAgCj4gPiAtCWlmICghaW50ZWxfd21fcGxhbmVfdmlzaWJsZShjc3Rh dGUsIGludGVsX3BzdGF0ZSkpCj4gPiAtCQlyZXR1cm4gMDsKPiA+IC0KPiA+ICAJLyogRGlzcGxh eSBXQSAjMTE0MToga2JsLGNmbCAqLwo+ID4gIAlpZiAoKElTX0tBQllMQUtFKGRldl9wcml2KSB8 fCBJU19DT0ZGRUVMQUtFKGRldl9wcml2KSB8fAo+ID4gIAkgICAgSVNfQ05MX1JFVklEKGRldl9w cml2LCBDTkxfUkVWSURfQTAsIENOTF9SRVZJRF9CMCkpICYmCj4gPiBAQCAtNDgzMiwyMSArNDgy NiwxNiBAQCBzdGF0aWMgaW50IHNrbF9jb21wdXRlX3BsYW5lX3dtKGNvbnN0IHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ICAKPiA+ICBzdGF0aWMgaW50Cj4gPiAgc2tsX2Nv bXB1dGVfd21fbGV2ZWxzKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK PiA+IC0JCSAgICAgIHN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKmRkYiwKPiA+ICAJCSAgICAg IGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCj4gPiAgCQkgICAgICBjb25z dCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKmludGVsX3BzdGF0ZSwKPiA+ICAJCSAgICAgIHVp bnQxNl90IGRkYl9ibG9ja3MsCj4gPiAgCQkgICAgICBjb25zdCBzdHJ1Y3Qgc2tsX3dtX3BhcmFt cyAqd21fcGFyYW1zLAo+ID4gLQkJICAgICAgc3RydWN0IHNrbF9wbGFuZV93bSAqd20sCj4gPiAg CQkgICAgICBzdHJ1Y3Qgc2tsX3dtX2xldmVsICpsZXZlbHMpCj4gPiAgewo+ID4gIAlpbnQgbGV2 ZWwsIG1heF9sZXZlbCA9IGlsa193bV9tYXhfbGV2ZWwoZGV2X3ByaXYpOwo+ID4gIAlzdHJ1Y3Qg c2tsX3dtX2xldmVsICpyZXN1bHRfcHJldiA9ICZsZXZlbHNbMF07Cj4gPiAgCWludCByZXQ7Cj4g PiAgCj4gPiAtCWlmIChXQVJOX09OKCFpbnRlbF9wc3RhdGUtPmJhc2UuZmIpKQo+ID4gLQkJcmV0 dXJuIC1FSU5WQUw7Cj4gPiAtCj4gPiAgCWZvciAobGV2ZWwgPSAwOyBsZXZlbCA8PSBtYXhfbGV2 ZWw7IGxldmVsKyspIHsKPiA+ICAJCXN0cnVjdCBza2xfd21fbGV2ZWwgKnJlc3VsdCA9ICZsZXZl bHNbbGV2ZWxdOwo+ID4gIAo+ID4gQEAgLTQ4NjQsOSArNDg1Myw2IEBAIHNrbF9jb21wdXRlX3dt X2xldmVscyhjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiAgCQly ZXN1bHRfcHJldiA9IHJlc3VsdDsKPiA+ICAJfQo+ID4gIAo+ID4gLQlpZiAoaW50ZWxfcHN0YXRl LT5iYXNlLmZiLT5mb3JtYXQtPmZvcm1hdCA9PSBEUk1fRk9STUFUX05WMTIpCj4gPiAtCQl3bS0+ aXNfcGxhbmFyID0gdHJ1ZTsKPiA+IC0KPiA+ICAJcmV0dXJuIDA7Cj4gPiAgfQo+ID4gIAo+ID4g QEAgLTQ5MDQsOSArNDg5MCw2IEBAIHN0YXRpYyB2b2lkIHNrbF9jb21wdXRlX3RyYW5zaXRpb25f d20oY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKPiA+ICAJY29uc3QgdWlu dDE2X3QgdHJhbnNfYW1vdW50ID0gMTA7IC8qIFRoaXMgaXMgY29uZmlndXJhYmxlIGFtb3VudCAq Lwo+ID4gIAl1aW50MTZfdCB3bTBfc2VsX3Jlc19iLCB0cmFuc19vZmZzZXRfYiwgcmVzX2Jsb2Nr czsKPiA+ICAKPiA+IC0JaWYgKCFjc3RhdGUtPmJhc2UuYWN0aXZlKQo+ID4gLQkJcmV0dXJuOwo+ ID4gLQo+ID4gIAkvKiBUcmFuc2l0aW9uIFdNIGFyZSBub3QgcmVjb21tZW5kZWQgYnkgSFcgdGVh bSBmb3IgR0VOOSAqLwo+ID4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8PSA5KQo+ID4gIAkJ cmV0dXJuOwo+ID4gQEAgLTQ5NTUsOTcgKzQ5MzgsMTM0IEBAIHN0YXRpYyB2b2lkIHNrbF9jb21w dXRlX3RyYW5zaXRpb25fd20oY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwK PiA+ICAJfQo+ID4gIH0KPiA+ICAKPiA+IC1zdGF0aWMgaW50IF9fc2tsX2J1aWxkX3BsYW5lX3dt X3NpbmdsZShzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpkZGIsCj4gPiAtCQkJCSAgICAgICBz dHJ1Y3Qgc2tsX3BpcGVfd20gKnBpcGVfd20sCj4gPiAtCQkJCSAgICAgICBlbnVtIHBsYW5lX2lk IHBsYW5lX2lkLAo+ID4gLQkJCQkgICAgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNzdGF0ZSwKPiA+IC0JCQkJICAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAq cHN0YXRlLAo+ID4gLQkJCQkgICAgICAgaW50IGNvbG9yX3BsYW5lKQo+ID4gLXsKPiA+IC0Jc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwc3RhdGUtPmJhc2UucGxh bmUtPmRldik7Cj4gPiAtCXN0cnVjdCBza2xfcGxhbmVfd20gKndtID0gJnBpcGVfd20tPnBsYW5l c1twbGFuZV9pZF07Cj4gPiAtCWVudW0gcGlwZSBwaXBlID0gdG9faW50ZWxfcGxhbmUocHN0YXRl LT5iYXNlLnBsYW5lKS0+cGlwZTsKPiA+IC0Jc3RydWN0IHNrbF93bV9wYXJhbXMgd21fcGFyYW1z Owo+ID4gLQl1aW50MTZfdCBkZGJfYmxvY2tzID0gc2tsX2RkYl9lbnRyeV9zaXplKCZkZGItPnBs YW5lW3BpcGVdW3BsYW5lX2lkXSk7Cj4gPiAtCWludCByZXQ7Cj4gPiAtCj4gPiAtCXJldCA9IHNr bF9jb21wdXRlX3BsYW5lX3dtX3BhcmFtcyhkZXZfcHJpdiwgY3N0YXRlLCBwc3RhdGUsCj4gPiAt CQkJCQkgICZ3bV9wYXJhbXMsIGNvbG9yX3BsYW5lKTsKPiA+IC0JaWYgKHJldCkKPiA+IC0JCXJl dHVybiByZXQ7Cj4gPiAtCj4gPiAtCXJldCA9IHNrbF9jb21wdXRlX3dtX2xldmVscyhkZXZfcHJp diwgZGRiLCBjc3RhdGUsIHBzdGF0ZSwKPiA+IC0JCQkJICAgIGRkYl9ibG9ja3MsICZ3bV9wYXJh bXMsIHdtLCB3bS0+d20pOwo+ID4gLQo+ID4gLQlpZiAocmV0KQo+ID4gLQkJcmV0dXJuIHJldDsK PiA+IC0KPiA+IC0Jc2tsX2NvbXB1dGVfdHJhbnNpdGlvbl93bShjc3RhdGUsICZ3bV9wYXJhbXMs IHdtLCBkZGJfYmxvY2tzKTsKPiA+IC0KPiA+IC0JcmV0dXJuIDA7Cj4gPiAtfQo+ID4gLQo+ID4g IHN0YXRpYyBpbnQgc2tsX2J1aWxkX3BsYW5lX3dtX3NpbmdsZShzdHJ1Y3Qgc2tsX2RkYl9hbGxv Y2F0aW9uICpkZGIsCj4gPiAtCQkJCSAgICAgc3RydWN0IHNrbF9waXBlX3dtICpwaXBlX3dtLAo+ ID4gLQkJCQkgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCj4gPiAt CQkJCSAgICAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwc3RhdGUpCj4gPiArCQkJ CSAgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gPiArCQkJCSAgICAg Y29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSwKPiA+ICsJCQkJICAg ICBlbnVtIHBsYW5lX2lkIHBsYW5lX2lkLCBpbnQgY29sb3JfcGxhbmUpCj4gPiAgewo+ID4gLQll bnVtIHBsYW5lX2lkIHBsYW5lX2lkID0gdG9faW50ZWxfcGxhbmUocHN0YXRlLT5iYXNlLnBsYW5l KS0+aWQ7Cj4gPiAtCj4gPiAtCXJldHVybiBfX3NrbF9idWlsZF9wbGFuZV93bV9zaW5nbGUoZGRi LCBwaXBlX3dtLCBwbGFuZV9pZCwgY3N0YXRlLCBwc3RhdGUsIDApOwo+ID4gLX0KPiA+IC0KPiA+ IC1zdGF0aWMgaW50IHNrbF9idWlsZF9wbGFuZV93bV9wbGFuYXIoc3RydWN0IHNrbF9kZGJfYWxs b2NhdGlvbiAqZGRiLAo+ID4gLQkJCQkgICAgIHN0cnVjdCBza2xfcGlwZV93bSAqcGlwZV93bSwK PiA+IC0JCQkJICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAo+ID4g LQkJCQkgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcHN0YXRlKQo+ID4gLXsK PiA+IC0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBzdGF0ZS0+ YmFzZS5wbGFuZSk7Cj4gPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9w bGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7Cj4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KTsKPiA+IC0JZW51bSBwbGFu ZV9pZCBwbGFuZV9pZCA9IHBsYW5lLT5pZDsKPiA+IC0Jc3RydWN0IHNrbF9wbGFuZV93bSAqd20g PSAmcGlwZV93bS0+cGxhbmVzW3BsYW5lX2lkXTsKPiA+ICsJc3RydWN0IHNrbF9wbGFuZV93bSAq d20gPSAmY3J0Y19zdGF0ZS0+d20uc2tsLm9wdGltYWwucGxhbmVzW3BsYW5lX2lkXTsKPiA+ICAJ c3RydWN0IHNrbF93bV9wYXJhbXMgd21fcGFyYW1zOwo+ID4gIAllbnVtIHBpcGUgcGlwZSA9IHBs YW5lLT5waXBlOwo+ID4gIAl1aW50MTZfdCBkZGJfYmxvY2tzID0gc2tsX2RkYl9lbnRyeV9zaXpl KCZkZGItPnBsYW5lW3BpcGVdW3BsYW5lX2lkXSk7Cj4gPiAgCWludCByZXQ7Cj4gPiAgCj4gPiAt CXJldCA9IF9fc2tsX2J1aWxkX3BsYW5lX3dtX3NpbmdsZShkZGIsIHBpcGVfd20sIHBsYW5lX2lk LCBjc3RhdGUsIHBzdGF0ZSwgMCk7Cj4gPiArCXJldCA9IHNrbF9jb21wdXRlX3BsYW5lX3dtX3Bh cmFtcyhkZXZfcHJpdiwgY3J0Y19zdGF0ZSwgcGxhbmVfc3RhdGUsCj4gPiArCQkJCQkgICZ3bV9w YXJhbXMsIGNvbG9yX3BsYW5lKTsKPiA+ICAJaWYgKHJldCkKPiA+ICAJCXJldHVybiByZXQ7Cj4g PiAgCj4gPiArCXJldCA9IHNrbF9jb21wdXRlX3dtX2xldmVscyhkZXZfcHJpdiwgY3J0Y19zdGF0 ZSwgcGxhbmVfc3RhdGUsCj4gPiArCQkJCSAgICBkZGJfYmxvY2tzLCAmd21fcGFyYW1zLCB3bS0+ d20pOwo+ID4gKwlpZiAocmV0KQo+ID4gKwkJcmV0dXJuIHJldDsKPiA+ICsKPiA+ICsJc2tsX2Nv bXB1dGVfdHJhbnNpdGlvbl93bShjcnRjX3N0YXRlLCAmd21fcGFyYW1zLCB3bSwgZGRiX2Jsb2Nr cyk7Cj4gPiArCj4gPiArCXJldHVybiAwOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgaW50IHNr bF9idWlsZF9wbGFuZV93bV91dihzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpkZGIsCj4gPiAr CQkJCSBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiA+ICsJCQkJIGNvbnN0 IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUsCj4gPiArCQkJCSBlbnVtIHBs YW5lX2lkIHBsYW5lX2lkKQo+ID4gK3sKPiA+ICsJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9 IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKPiA+ICsJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwo+ID4g KwlzdHJ1Y3Qgc2tsX3BsYW5lX3dtICp3bSA9ICZjcnRjX3N0YXRlLT53bS5za2wub3B0aW1hbC5w bGFuZXNbcGxhbmVfaWRdOwo+ID4gKwlzdHJ1Y3Qgc2tsX3dtX3BhcmFtcyB3bV9wYXJhbXM7Cj4g PiArCWVudW0gcGlwZSBwaXBlID0gcGxhbmUtPnBpcGU7Cj4gPiArCXVpbnQxNl90IGRkYl9ibG9j a3MgPSBza2xfZGRiX2VudHJ5X3NpemUoJmRkYi0+dXZfcGxhbmVbcGlwZV1bcGxhbmVfaWRdKTsK PiA+ICsJaW50IHJldDsKPiA+ICsKPiA+ICsJd20tPmlzX3BsYW5hciA9IHRydWU7Cj4gPiArCj4g PiAgCS8qIHV2IHBsYW5lIHdhdGVybWFya3MgbXVzdCBhbHNvIGJlIHZhbGlkYXRlZCBmb3IgTlYx Mi9QbGFuYXIgKi8KPiA+IC0JZGRiX2Jsb2NrcyA9IHNrbF9kZGJfZW50cnlfc2l6ZSgmZGRiLT51 dl9wbGFuZVtwaXBlXVtwbGFuZV9pZF0pOwo+ID4gKwlyZXQgPSBza2xfY29tcHV0ZV9wbGFuZV93 bV9wYXJhbXMoZGV2X3ByaXYsIGNydGNfc3RhdGUsIHBsYW5lX3N0YXRlLAo+ID4gKwkJCQkJICAm d21fcGFyYW1zLCAxKTsKPiA+ICsJaWYgKHJldCkKPiA+ICsJCXJldHVybiByZXQ7Cj4gPiAgCj4g PiAtCXJldCA9IHNrbF9jb21wdXRlX3BsYW5lX3dtX3BhcmFtcyhkZXZfcHJpdiwgY3N0YXRlLCBw c3RhdGUsICZ3bV9wYXJhbXMsIDEpOwo+ID4gKwlyZXQgPSBza2xfY29tcHV0ZV93bV9sZXZlbHMo ZGV2X3ByaXYsIGNydGNfc3RhdGUsIHBsYW5lX3N0YXRlLAo+ID4gKwkJCQkgICAgZGRiX2Jsb2Nr cywgJndtX3BhcmFtcywgd20tPnV2X3dtKTsKPiA+ICAJaWYgKHJldCkKPiA+ICAJCXJldHVybiBy ZXQ7Cj4gPiAgCj4gPiAtCXJldHVybiBza2xfY29tcHV0ZV93bV9sZXZlbHMoZGV2X3ByaXYsIGRk YiwgY3N0YXRlLCBwc3RhdGUsCj4gPiAtCQkJCSAgICAgZGRiX2Jsb2NrcywgJndtX3BhcmFtcywg d20sIHdtLT51dl93bSk7Cj4gPiArCXJldHVybiAwOwo+ID4gIH0KPiA+ICAKPiA+IC1zdGF0aWMg aW50IGljbF9idWlsZF9wbGFuZV93bV9wbGFuYXIoc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAq ZGRiLAo+ID4gLQkJCQkgICAgIHN0cnVjdCBza2xfcGlwZV93bSAqcGlwZV93bSwKPiA+IC0JCQkJ ICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAo+ID4gLQkJCQkgICAg IGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcHN0YXRlKQo+ID4gK3N0YXRpYyBpbnQg c2tsX2J1aWxkX3BsYW5lX3dtKHN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKmRkYiwKPiA+ICsJ CQkgICAgICBzdHJ1Y3Qgc2tsX3BpcGVfd20gKnBpcGVfd20sCj4gPiArCQkJICAgICAgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gPiArCQkJICAgICAgY29uc3Qgc3RydWN0 IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiA+ICB7Cj4gPiArCXN0cnVjdCBpbnRl bF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7 Cj4gPiArCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJh c2UuZmI7Cj4gPiArCWVudW0gcGxhbmVfaWQgcGxhbmVfaWQgPSBwbGFuZS0+aWQ7Cj4gPiAgCWlu dCByZXQ7Cj4gPiAtCWVudW0gcGxhbmVfaWQgeV9wbGFuZV9pZCA9IHBzdGF0ZS0+bGlua2VkX3Bs YW5lLT5pZDsKPiA+IC0JZW51bSBwbGFuZV9pZCB1dl9wbGFuZV9pZCA9IHRvX2ludGVsX3BsYW5l KHBzdGF0ZS0+YmFzZS5wbGFuZSktPmlkOwo+ID4gIAo+ID4gLQlyZXQgPSBfX3NrbF9idWlsZF9w bGFuZV93bV9zaW5nbGUoZGRiLCBwaXBlX3dtLCB5X3BsYW5lX2lkLAo+ID4gLQkJCQkJICBjc3Rh dGUsIHBzdGF0ZSwgMCk7Cj4gPiArCWlmICghaW50ZWxfd21fcGxhbmVfdmlzaWJsZShjcnRjX3N0 YXRlLCBwbGFuZV9zdGF0ZSkpCj4gPiArCQlyZXR1cm4gMDsKPiA+ICsKPiA+ICsJcmV0ID0gc2ts X2J1aWxkX3BsYW5lX3dtX3NpbmdsZShkZGIsIGNydGNfc3RhdGUsIHBsYW5lX3N0YXRlLAo+ID4g KwkJCQkJcGxhbmVfaWQsIDApOwo+ID4gIAlpZiAocmV0KQo+ID4gIAkJcmV0dXJuIHJldDsKPiA+ ICAKPiA+IC0JcmV0dXJuIF9fc2tsX2J1aWxkX3BsYW5lX3dtX3NpbmdsZShkZGIsIHBpcGVfd20s IHV2X3BsYW5lX2lkLAo+ID4gLQkJCQkJICAgY3N0YXRlLCBwc3RhdGUsIDEpOwo+ID4gKwlpZiAo ZmItPmZvcm1hdC0+aXNfeXV2ICYmIGZiLT5mb3JtYXQtPm51bV9wbGFuZXMgPiAxKSB7Cj4gPiAr CQlyZXQgPSBza2xfYnVpbGRfcGxhbmVfd21fdXYoZGRiLCBjcnRjX3N0YXRlLCBwbGFuZV9zdGF0 ZSwKPiA+ICsJCQkJCSAgICBwbGFuZV9pZCk7Cj4gPiArCQlpZiAocmV0KQo+ID4gKwkJCXJldHVy biByZXQ7Cj4gPiArCX0KPiA+ICsKPiA+ICsJcmV0dXJuIDA7Cj4gPiArfQo+ID4gKwo+ID4gK3N0 YXRpYyBpbnQgaWNsX2J1aWxkX3BsYW5lX3dtKHN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKmRk YiwKPiA+ICsJCQkgICAgICBzdHJ1Y3Qgc2tsX3BpcGVfd20gKnBpcGVfd20sCj4gPiArCQkJICAg ICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gPiArCQkJICAgICAgY29u c3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiA+ICt7Cj4gPiArCWVu dW0gcGxhbmVfaWQgcGxhbmVfaWQgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5w bGFuZSktPmlkOwo+ID4gKwlpbnQgcmV0Owo+ID4gKwo+ID4gKwkvKiBXYXRlcm1hcmtzIGNhbGN1 bGF0ZWQgaW4gbWFzdGVyICovCj4gPiArCWlmIChwbGFuZV9zdGF0ZS0+c2xhdmUpCj4gPiArCQly ZXR1cm4gMDsKPiA+ICsKPiA+ICsJaWYgKHBsYW5lX3N0YXRlLT5saW5rZWRfcGxhbmUpIHsKPiA+ ICsJCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2Uu ZmI7Cj4gPiArCQllbnVtIHBsYW5lX2lkIHlfcGxhbmVfaWQgPSBwbGFuZV9zdGF0ZS0+bGlua2Vk X3BsYW5lLT5pZDsKPiA+ICsKPiA+ICsJCVdBUk5fT04oIWZiLT5mb3JtYXQtPmlzX3l1diB8fAo+ ID4gKwkJCWZiLT5mb3JtYXQtPm51bV9wbGFuZXMgPT0gMSk7Cj4gPiArCj4gPiArCQlyZXQgPSBz a2xfYnVpbGRfcGxhbmVfd21fc2luZ2xlKGRkYiwgY3J0Y19zdGF0ZSwgcGxhbmVfc3RhdGUsCj4g PiArCQkJCQkJeV9wbGFuZV9pZCwgMCk7Cj4gPiArCQlpZiAocmV0KQo+ID4gKwkJCXJldHVybiBy ZXQ7Cj4gPiArCj4gPiArCQlyZXQgPSBza2xfYnVpbGRfcGxhbmVfd21fc2luZ2xlKGRkYiwgY3J0 Y19zdGF0ZSwgcGxhbmVfc3RhdGUsCj4gPiArCQkJCQkJcGxhbmVfaWQsIDEpOwo+ID4gKwkJaWYg KHJldCkKPiA+ICsJCQlyZXR1cm4gcmV0Owo+ID4gKwl9IGVsc2UgaWYgKGludGVsX3dtX3BsYW5l X3Zpc2libGUoY3J0Y19zdGF0ZSwgcGxhbmVfc3RhdGUpKSB7Cj4gCj4gSXNuJ3QgYSB2aXNpYmls aXR5IHRlc3QgYWxzbyByZWxldmFudCB0byB0aGUgbnYxMiAobWFzdGVyIHBsYW5lKSBjYXNlCj4g YWJvdmU/ICBJIGRvbid0IHVuZGVyc3RhbmQgd2h5IHdlJ2Qgb25seSB0ZXN0IGl0IGZvciByZ2Ig cGxhbmVzLgoKbGlua2VkX3BsYW5lIT1OVUxMIGltcGxpZXMgdGhhdCB0aGUgcGxhbmUgaXMgdmlz aWJsZSAoc2VlIAppY2xfY2hlY2tfbnYxMl9wbGFuZXMoKSkuIEkgc2hvdWxkIHByb2JhYmx5IGFk ZCBhbm90aGVyIFdBUk5fT04oKSBmb3IKdGhhdC4KCj4gCj4gCj4gTWF0dAo+IAo+ID4gKwkJcmV0 ID0gc2tsX2J1aWxkX3BsYW5lX3dtX3NpbmdsZShkZGIsIGNydGNfc3RhdGUsIHBsYW5lX3N0YXRl LAo+ID4gKwkJCQkJCXBsYW5lX2lkLCAwKTsKPiA+ICsJCWlmIChyZXQpCj4gPiArCQkJcmV0dXJu IHJldDsKPiA+ICsJfQo+ID4gKwo+ID4gKwlyZXR1cm4gMDsKPiA+ICB9Cj4gPiAgCj4gPiAgc3Rh dGljIGludCBza2xfYnVpbGRfcGlwZV93bShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRl LAo+ID4gIAkJCSAgICAgc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAqZGRiLAo+ID4gIAkJCSAg ICAgc3RydWN0IHNrbF9waXBlX3dtICpwaXBlX3dtKQo+ID4gIHsKPiA+ICsJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjc3RhdGUtPmJhc2UuY3J0Yy0+ZGV2KTsK PiA+ICAJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlID0gJmNzdGF0ZS0+YmFzZTsK PiA+ICAJc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7Cj4gPiAgCWNvbnN0IHN0cnVjdCBkcm1fcGxh bmVfc3RhdGUgKnBzdGF0ZTsKPiA+IEBAIC01MDYxLDE4ICs1MDgxLDEyIEBAIHN0YXRpYyBpbnQg c2tsX2J1aWxkX3BpcGVfd20oc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKPiA+ICAJ CWNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqaW50ZWxfcHN0YXRlID0KPiA+ICAJCQkJ CQl0b19pbnRlbF9wbGFuZV9zdGF0ZShwc3RhdGUpOwo+ID4gIAo+ID4gLQkJLyogV2F0ZXJtYXJr cyBjYWxjdWxhdGVkIGluIG1hc3RlciAqLwo+ID4gLQkJaWYgKGludGVsX3BzdGF0ZS0+c2xhdmUp Cj4gPiAtCQkJY29udGludWU7Cj4gPiAtCj4gPiAtCQlpZiAoaW50ZWxfcHN0YXRlLT5saW5rZWRf cGxhbmUpCj4gPiAtCQkJcmV0ID0gaWNsX2J1aWxkX3BsYW5lX3dtX3BsYW5hcihkZGIsIHBpcGVf d20sIGNzdGF0ZSwgaW50ZWxfcHN0YXRlKTsKPiA+IC0JCWVsc2UgaWYgKGludGVsX3BzdGF0ZS0+ YmFzZS5mYiAmJgo+ID4gLQkJCSBpbnRlbF9wc3RhdGUtPmJhc2UuZmItPmZvcm1hdC0+Zm9ybWF0 ID09IERSTV9GT1JNQVRfTlYxMikKPiA+IC0JCQlyZXQgPSBza2xfYnVpbGRfcGxhbmVfd21fcGxh bmFyKGRkYiwgcGlwZV93bSwgY3N0YXRlLCBpbnRlbF9wc3RhdGUpOwo+ID4gKwkJaWYgKElOVEVM X0dFTihkZXZfcHJpdikgPj0gMTEpCj4gPiArCQkJcmV0ID0gaWNsX2J1aWxkX3BsYW5lX3dtKGRk YiwgcGlwZV93bSwKPiA+ICsJCQkJCQkgY3N0YXRlLCBpbnRlbF9wc3RhdGUpOwo+ID4gIAkJZWxz ZQo+ID4gLQkJCXJldCA9IHNrbF9idWlsZF9wbGFuZV93bV9zaW5nbGUoZGRiLCBwaXBlX3dtLCBj c3RhdGUsIGludGVsX3BzdGF0ZSk7Cj4gPiAtCj4gPiArCQkJcmV0ID0gc2tsX2J1aWxkX3BsYW5l X3dtKGRkYiwgcGlwZV93bSwKPiA+ICsJCQkJCQkgY3N0YXRlLCBpbnRlbF9wc3RhdGUpOwo+ID4g IAkJaWYgKHJldCkKPiA+ICAJCQlyZXR1cm4gcmV0Owo+ID4gIAl9Cj4gPiAtLSAKPiA+IDIuMTgu MQo+ID4gCj4gCj4gLS0gCj4gTWF0dCBSb3Blcgo+IEdyYXBoaWNzIFNvZnR3YXJlIEVuZ2luZWVy Cj4gSW9URyBQbGF0Zm9ybSBFbmFibGluZyAmIERldmVsb3BtZW50Cj4gSW50ZWwgQ29ycG9yYXRp b24KPiAoOTE2KSAzNTYtMjc5NQoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbApfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBs aXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK