From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paulo Zanoni Subject: Re: [PATCH 07/11] drm/i915: move ddb_blocks to be a watermark parameter Date: Mon, 22 Oct 2018 15:29:22 -0700 Message-ID: <1540247362.2734.36.camel@intel.com> References: <20181016220133.26991-1-paulo.r.zanoni@intel.com> <20181016220133.26991-8-paulo.r.zanoni@intel.com> <20181018134104.GB9144@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 18C7A89DE1 for ; Mon, 22 Oct 2018 22:29:23 +0000 (UTC) In-Reply-To: <20181018134104.GB9144@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 =?ISO-8859-1?Q?Syrj=E4l=E4?= Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RW0gUXVpLCAyMDE4LTEwLTE4IMOgcyAxNjo0MSArMDMwMCwgVmlsbGUgU3lyasOkbMOkIGVzY3Jl dmV1Ogo+IE9uIFR1ZSwgT2N0IDE2LCAyMDE4IGF0IDAzOjAxOjI5UE0gLTA3MDAsIFBhdWxvIFph bm9uaSB3cm90ZToKPiA+IFRoZSBnb2FsIG9mIHN0cnVjdCBza2xfd21fcGFyYW1zIGlzIHRvIGNh Y2hlIGV2ZXJ5IHdhdGVybWFyawo+ID4gcGFyYW1ldGVyIHNvIHRoZSBvdGhlciBmdW5jdGlvbnMg Y2FuIGp1c3QgdXNlIHRoZW0gd2l0aG91dCB3b3JyeWluZwo+ID4gYWJvdXQgdGhlIGFwcHJvcHJp YXRlIHBsYWNlIHRvIGZldGNoIGVhY2ggcGFyYW1ldGVyIHJlcXVlc3RlZCBieQo+ID4gdGhlCj4g PiBzcGVjLCBhbmQgd2l0aG91dCBoYXZpbmcgdG8gcmVjb21wdXRlIHBhcmFtZXRlcnMgdGhhdCBh cmUgdXNlZCBpbgo+ID4gZGlmZmVyZW50IHN0ZXBzIG9mIHRoZSBjYWxjdWxhdGlvbi4KPiA+IAo+ ID4gVGhlIGRkYl9ibG9ja3MgcGFyYW1ldGVyIGlzIG9uZSB0aGF0IGlzIHVzZWQgYnkgYm90aCB0 aGUgdGhlIHBsYW5lCj4gPiB3YXRlcm1hcmtzIGFuZCB0aGUgdHJhbnNpdGlvbiB3YXRlcm1hcmtz LiBNb3ZlIGRkYl9ibG9ja3MgdG8gdGhlCj4gPiBwYXJhbWV0ZXIgc3RydWN0IHNvIHdlIGNhbiBz aW1wbGlmeSB0aGUgY29kZS4KPiA+IAo+ID4gU2lnbmVkLW9mZi1ieTogUGF1bG8gWmFub25pIDxw YXVsby5yLnphbm9uaUBpbnRlbC5jb20+Cj4gPiAtLS0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oIHwgIDEgKwo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMg fCA0NCArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQo+ID4gLS0tLS0tLS0tLS0tCj4gPiAg MiBmaWxlcyBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCAyNyBkZWxldGlvbnMoLSkKPiA+IAo+ ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+IGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4gaW5kZXggNGIxZTg0NzE2MDliLi5iMzJk NjgwZDliZjAgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o Cj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gPiBAQCAtMTI1NSw2 ICsxMjU1LDcgQEAgc3RydWN0IHNrbF93bV9wYXJhbXMgewo+ID4gIAlib29sIHJjX3N1cmZhY2U7 Cj4gPiAgCWJvb2wgaXNfcGxhbmFyOwo+ID4gIAl1aW50MzJfdCB3aWR0aDsKPiA+ICsJdWludDE2 X3QgZGRiX2Jsb2NrczsKPiA+ICAJdWludDhfdCBjcHA7Cj4gPiAgCXVpbnQzMl90IHBsYW5lX3Bp eGVsX3JhdGU7Cj4gPiAgCXVpbnQzMl90IHlfbWluX3NjYW5saW5lczsKPiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3BtLmMKPiA+IGluZGV4IGYzODhiZmE5OWE5Ny4uNDA1M2Y0YTY4NjU3IDEwMDY0 NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+ID4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+ID4gQEAgLTQ1MjIsMTEgKzQ1MjIsMTMgQEAg c3RhdGljIGludAo+ID4gIHNrbF9jb21wdXRlX3BsYW5lX3dtX3BhcmFtcyhjb25zdCBzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZQo+ID4gKmRldl9wcml2LAo+ID4gIAkJCSAgICBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3N0YXRlLAo+ID4gIAkJCSAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVf c3RhdGUKPiA+ICppbnRlbF9wc3RhdGUsCj4gPiArCQkJICAgIGNvbnN0IHN0cnVjdCBza2xfZGRi X2FsbG9jYXRpb24gKmRkYiwKPiA+ICAJCQkgICAgc3RydWN0IHNrbF93bV9wYXJhbXMgKndwLCBp bnQKPiA+IHBsYW5lX2lkKQo+ID4gIHsKPiA+ICAJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9 IHRvX2ludGVsX3BsYW5lKGludGVsX3BzdGF0ZS0KPiA+ID5iYXNlLnBsYW5lKTsKPiA+ICAJY29u c3Qgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcHN0YXRlID0gJmludGVsX3BzdGF0ZS0KPiA+ID5i YXNlOwo+ID4gIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBzdGF0ZS0+ZmI7 Cj4gPiArCWVudW0gcGlwZSBwaXBlID0gdG9faW50ZWxfY3J0Yyhjc3RhdGUtPmJhc2UuY3J0Yykt PnBpcGU7Cj4gPiAgCXVpbnQzMl90IGludGVybV9wYnBsOwo+ID4gIAlzdHJ1Y3QgaW50ZWxfYXRv bWljX3N0YXRlICpzdGF0ZSA9Cj4gPiAgCQl0b19pbnRlbF9hdG9taWNfc3RhdGUoY3N0YXRlLT5i YXNlLnN0YXRlKTsKPiA+IEBAIC00NjI0LDEzICs0NjI2LDE2IEBAIHNrbF9jb21wdXRlX3BsYW5l X3dtX3BhcmFtcyhjb25zdCBzdHJ1Y3QKPiA+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ ID4gIAl3cC0+bGluZXRpbWVfdXMgPSBmaXhlZDE2X3RvX3UzMl9yb3VuZF91cCgKPiA+ICAJCQkJ CWludGVsX2dldF9saW5ldGltZV91cyhjc3RhCj4gPiB0ZSkpOwo+ID4gIAo+ID4gKwl3cC0+ZGRi X2Jsb2NrcyA9IHBsYW5lX2lkID8KPiAKPiBVZ2guIFRoYXQgJ3BsYW5lX2lkJyByZWFsbHkgc2hv dWxkIGJlIHJlbmFtZWQgdG8gc29tZXRoaW5nIGVsc2UuCj4gJ2NvbG9yX3BsYW5lJyB3b3VsZCBi ZSB0aGUgbmV3ZmFuZ2xlZCBuYW1lIEkgc3RhcnRlZCB0byB1c2UKPiBlbHNld2hlcmUuCgpJIGNv bXBsZXRlbHkgYWdyZWU6IHRoZXJlJ3MgcGxhbmVfaWQgYW5kIHBsYW5lLT5pZCBhbmQgdGhleSBt ZWFuCmRpZmZlcmVudCB0aGluZ3MuCgpJZiB5b3UncmUgYWxyZWFkeSB1c2luZyBjb2xvcl9wbGFu ZSBJIGNhbiB0b3RhbGx5IGdvIHdpdGggaXQgc28gd2UgaGF2ZQpjb25zaXN0ZW5jeS4gQnV0LCB3 ZWxsLCBmb3IgUkdCIHBsYW5lcywgcGxhbmUgMCBkb2VzIGNvbnRhaW4gY29sb3IKaW5mb3JtYXRp b24uLi4gQnV0IGNhbiBJIHN1Z2dlc3QgdXMgdG8gdXNlICJzdWJwbGFuZSIgdGVybWlub2xvZ3kg d2hlbgp0YWxraW5nIGFib3V0IHRoZSBwbGFuZXMgb2YgYSBwbGFuZT8gV2hhdCBhYm91dCBzdWJw bGFuZV9pbmRleD8KU29tZXRoaW5nIHRoYXQgZG9lcyBub3QgdXNlIHRoZSB3b3JkICJwbGFuZSIg aXMgcHJvYmFibHkgYmV0dGVyLgoKPiAKPiBQYXRjaCBsb29rcyBnb29kIHRvIG1lLgo+IFJldmll d2VkLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+ IAo+ID4gKwkJICAgICBza2xfZGRiX2VudHJ5X3NpemUoJmRkYi0KPiA+ID51dl9wbGFuZVtwaXBl XVtwbGFuZS0+aWRdKSA6Cj4gPiArCQkgICAgIHNrbF9kZGJfZW50cnlfc2l6ZSgmZGRiLT5wbGFu ZVtwaXBlXVtwbGFuZS0KPiA+ID5pZF0pOwo+ID4gKwo+ID4gIAlyZXR1cm4gMDsKPiA+ICB9Cj4g PiAgCj4gPiAgc3RhdGljIGludCBza2xfY29tcHV0ZV9wbGFuZV93bShjb25zdCBzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZQo+ID4gKmRldl9wcml2LAo+ID4gIAkJCQlzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3N0YXRlLAo+ID4gIAkJCQljb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUKPiA+ ICppbnRlbF9wc3RhdGUsCj4gPiAtCQkJCXVpbnQxNl90IGRkYl9hbGxvY2F0aW9uLAo+ID4gIAkJ CQlpbnQgbGV2ZWwsCj4gPiAgCQkJCWNvbnN0IHN0cnVjdCBza2xfd21fcGFyYW1zICp3cCwKPiA+ ICAJCQkJY29uc3Qgc3RydWN0IHNrbF93bV9sZXZlbAo+ID4gKnJlc3VsdF9wcmV2LAo+ID4gQEAg LTQ2NzQsNyArNDY3OSw3IEBAIHN0YXRpYyBpbnQgc2tsX2NvbXB1dGVfcGxhbmVfd20oY29uc3Qg c3RydWN0Cj4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ICAJCSAgICAgd3AtPmRi dWZfYmxvY2tfc2l6ZSA8IDEpICYmCj4gPiAgCQkgICAgICh3cC0+cGxhbmVfYnl0ZXNfcGVyX2xp bmUgLyB3cC0KPiA+ID5kYnVmX2Jsb2NrX3NpemUgPCAxKSkgewo+ID4gIAkJCXNlbGVjdGVkX3Jl c3VsdCA9IG1ldGhvZDI7Cj4gPiAtCQl9IGVsc2UgaWYgKGRkYl9hbGxvY2F0aW9uID49Cj4gPiAr CQl9IGVsc2UgaWYgKHdwLT5kZGJfYmxvY2tzID49Cj4gPiAgCQkJIGZpeGVkMTZfdG9fdTMyX3Jv dW5kX3VwKHdwLQo+ID4gPnBsYW5lX2Jsb2Nrc19wZXJfbGluZSkpIHsKPiA+ICAJCQlpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA9PSA5ICYmCj4gPiAgCQkJICAgICFJU19HRU1JTklMQUtFKGRldl9w cml2KSkKPiA+IEBAIC00NzQ3LDggKzQ3NTIsOCBAQCBzdGF0aWMgaW50IHNrbF9jb21wdXRlX3Bs YW5lX3dtKGNvbnN0IHN0cnVjdAo+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiAg CX0KPiA+ICAKPiA+ICAJaWYgKChsZXZlbCA+IDAgJiYgcmVzX2xpbmVzID4gMzEpIHx8Cj4gPiAt CSAgICByZXNfYmxvY2tzID49IGRkYl9hbGxvY2F0aW9uIHx8Cj4gPiAtCSAgICBtaW5fZGlzcF9i dWZfbmVlZGVkID49IGRkYl9hbGxvY2F0aW9uKSB7Cj4gPiArCSAgICByZXNfYmxvY2tzID49IHdw LT5kZGJfYmxvY2tzIHx8Cj4gPiArCSAgICBtaW5fZGlzcF9idWZfbmVlZGVkID49IHdwLT5kZGJf YmxvY2tzKSB7Cj4gPiAgCQlyZXN1bHQtPnBsYW5lX2VuID0gZmFsc2U7Cj4gPiAgCj4gPiAgCQkv Kgo+ID4gQEAgLTQ3NjMsNyArNDc2OCw3IEBAIHN0YXRpYyBpbnQgc2tsX2NvbXB1dGVfcGxhbmVf d20oY29uc3Qgc3RydWN0Cj4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ICAJCQlE Uk1fREVCVUdfS01TKCJSZXF1ZXN0ZWQgZGlzcGxheQo+ID4gY29uZmlndXJhdGlvbiBleGNlZWRz IHN5c3RlbSB3YXRlcm1hcmsgbGltaXRhdGlvbnNcbiIpOwo+ID4gIAkJCURSTV9ERUJVR19LTVMo IltQTEFORTolZDolc10gYmxvY2tzCj4gPiByZXF1aXJlZCA9ICV1LyV1LCBsaW5lcyByZXF1aXJl ZCA9ICV1LzMxXG4iLAo+ID4gIAkJCQkgICAgICBwbGFuZS0+YmFzZS5pZCwgcGxhbmUtPm5hbWUs Cj4gPiAtCQkJCSAgICAgIHJlc19ibG9ja3MsIGRkYl9hbGxvY2F0aW9uLAo+ID4gcmVzX2xpbmVz KTsKPiA+ICsJCQkJICAgICAgcmVzX2Jsb2Nrcywgd3AtPmRkYl9ibG9ja3MsCj4gPiByZXNfbGlu ZXMpOwo+ID4gIAkJCXJldHVybiAtRUlOVkFMOwo+ID4gIAkJfQo+ID4gIAl9Cj4gPiBAQCAtNDc4 OSwyNiArNDc5NCwxNSBAQCBzdGF0aWMgaW50IHNrbF9jb21wdXRlX3BsYW5lX3dtKGNvbnN0Cj4g PiBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiAgCj4gPiAgc3RhdGljIGlu dAo+ID4gIHNrbF9jb21wdXRlX3dtX2xldmVscyhjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCj4gPiAtCQkgICAgICBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpkZGIs Cj4gPiAgCQkgICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAo+ID4gIAkJICAg ICAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlCj4gPiAqaW50ZWxfcHN0YXRlLAo+ID4g IAkJICAgICAgY29uc3Qgc3RydWN0IHNrbF93bV9wYXJhbXMgKndtX3BhcmFtcywKPiA+ICAJCSAg ICAgIHN0cnVjdCBza2xfcGxhbmVfd20gKndtLAo+ID4gIAkJICAgICAgaW50IHBsYW5lX2lkKQo+ ID4gIHsKPiA+IC0Jc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRj KGNzdGF0ZS0KPiA+ID5iYXNlLmNydGMpOwo+ID4gLQlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSA9 IGludGVsX3BzdGF0ZS0+YmFzZS5wbGFuZTsKPiA+IC0Jc3RydWN0IGludGVsX3BsYW5lICppbnRl bF9wbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lKTsKPiA+IC0JdWludDE2X3QgZGRiX2Jsb2Nr czsKPiA+IC0JZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+ID4gIAlpbnQgbGV2 ZWwsIG1heF9sZXZlbCA9IGlsa193bV9tYXhfbGV2ZWwoZGV2X3ByaXYpOwo+ID4gLQllbnVtIHBs YW5lX2lkIGludGVsX3BsYW5lX2lkID0gaW50ZWxfcGxhbmUtPmlkOwo+ID4gIAlpbnQgcmV0Owo+ ID4gIAo+ID4gLQlkZGJfYmxvY2tzID0gcGxhbmVfaWQgPwo+ID4gLQkJICAgICBza2xfZGRiX2Vu dHJ5X3NpemUoJmRkYi0KPiA+ID51dl9wbGFuZVtwaXBlXVtpbnRlbF9wbGFuZV9pZF0pIDoKPiA+ IC0JCSAgICAgc2tsX2RkYl9lbnRyeV9zaXplKCZkZGItCj4gPiA+cGxhbmVbcGlwZV1baW50ZWxf cGxhbmVfaWRdKTsKPiA+IC0KPiA+ICAJZm9yIChsZXZlbCA9IDA7IGxldmVsIDw9IG1heF9sZXZl bDsgbGV2ZWwrKykgewo+ID4gIAkJc3RydWN0IHNrbF93bV9sZXZlbCAqcmVzdWx0ID0gcGxhbmVf aWQgPyAmd20tCj4gPiA+dXZfd21bbGV2ZWxdIDoKPiA+ICAJCQkJCQkJICAmd20tCj4gPiA+d21b bGV2ZWxdOwo+ID4gQEAgLTQ4MjMsNyArNDgxNyw2IEBAIHNrbF9jb21wdXRlX3dtX2xldmVscyhj b25zdCBzdHJ1Y3QKPiA+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gIAkJcmV0ID0g c2tsX2NvbXB1dGVfcGxhbmVfd20oZGV2X3ByaXYsCj4gPiAgCQkJCQkgICBjc3RhdGUsCj4gPiAg CQkJCQkgICBpbnRlbF9wc3RhdGUsCj4gPiAtCQkJCQkgICBkZGJfYmxvY2tzLAo+ID4gIAkJCQkJ ICAgbGV2ZWwsCj4gPiAgCQkJCQkgICB3bV9wYXJhbXMsCj4gPiAgCQkJCQkgICByZXN1bHRfcHJl diwKPiA+IEBAIC00ODYzLDcgKzQ4NTYsNiBAQCBza2xfY29tcHV0ZV9saW5ldGltZV93bShzdHJ1 Y3QKPiA+IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSkKPiA+ICBzdGF0aWMgdm9pZCBza2xfY29t cHV0ZV90cmFuc2l0aW9uX3dtKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlCj4gPiAqY3N0YXRlLAo+ ID4gIAkJCQkgICAgICBzdHJ1Y3Qgc2tsX3dtX3BhcmFtcyAqd3AsCj4gPiAgCQkJCSAgICAgIHN0 cnVjdCBza2xfd21fbGV2ZWwgKndtX2wwLAo+ID4gLQkJCQkgICAgICB1aW50MTZfdCBkZGJfYWxs b2NhdGlvbiwKPiA+ICAJCQkJICAgICAgc3RydWN0IHNrbF93bV9sZXZlbAo+ID4gKnRyYW5zX3dt IC8qIG91dCAqLykKPiA+ICB7Cj4gPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjc3RhdGUt PmJhc2UuY3J0Yy0+ZGV2Owo+ID4gQEAgLTQ5MTQsNyArNDkwNiw3IEBAIHN0YXRpYyB2b2lkIHNr bF9jb21wdXRlX3RyYW5zaXRpb25fd20oc3RydWN0Cj4gPiBpbnRlbF9jcnRjX3N0YXRlICpjc3Rh dGUsCj4gPiAgCj4gPiAgCXJlc19ibG9ja3MgKz0gMTsKPiA+ICAKPiA+IC0JaWYgKHJlc19ibG9j a3MgPCBkZGJfYWxsb2NhdGlvbikgewo+ID4gKwlpZiAocmVzX2Jsb2NrcyA8IHdwLT5kZGJfYmxv Y2tzKSB7Cj4gPiAgCQl0cmFuc193bS0+cGxhbmVfcmVzX2IgPSByZXNfYmxvY2tzOwo+ID4gIAkJ dHJhbnNfd20tPnBsYW5lX2VuID0gdHJ1ZTsKPiA+ICAJCXJldHVybjsKPiA+IEBAIC00OTQ3LDM3 ICs0OTM5LDM1IEBAIHN0YXRpYyBpbnQgc2tsX2J1aWxkX3BpcGVfd20oc3RydWN0Cj4gPiBpbnRl bF9jcnRjX3N0YXRlICpjc3RhdGUsCj4gPiAgCQkJCQkJdG9faW50ZWxfcGxhbmVfc3RhCj4gPiB0 ZShwc3RhdGUpOwo+ID4gIAkJZW51bSBwbGFuZV9pZCBwbGFuZV9pZCA9IHRvX2ludGVsX3BsYW5l KHBsYW5lKS0KPiA+ID5pZDsKPiA+ICAJCXN0cnVjdCBza2xfd21fcGFyYW1zIHdtX3BhcmFtczsK PiA+IC0JCWVudW0gcGlwZSBwaXBlID0gdG9faW50ZWxfY3J0Yyhjc3RhdGUtPmJhc2UuY3J0Yykt Cj4gPiA+cGlwZTsKPiA+IC0JCXVpbnQxNl90IGRkYl9ibG9ja3M7Cj4gPiAgCj4gPiAgCQl3bSA9 ICZwaXBlX3dtLT5wbGFuZXNbcGxhbmVfaWRdOwo+ID4gLQkJZGRiX2Jsb2NrcyA9IHNrbF9kZGJf ZW50cnlfc2l6ZSgmZGRiLQo+ID4gPnBsYW5lW3BpcGVdW3BsYW5lX2lkXSk7Cj4gPiAgCj4gPiAg CQlyZXQgPSBza2xfY29tcHV0ZV9wbGFuZV93bV9wYXJhbXMoZGV2X3ByaXYsCj4gPiBjc3RhdGUs Cj4gPiAtCQkJCQkJICBpbnRlbF9wc3RhdGUsCj4gPiAmd21fcGFyYW1zLCAwKTsKPiA+ICsJCQkJ CQkgIGludGVsX3BzdGF0ZSwKPiA+IGRkYiwKPiA+ICsJCQkJCQkgICZ3bV9wYXJhbXMsIDApOwo+ ID4gIAkJaWYgKHJldCkKPiA+ICAJCQlyZXR1cm4gcmV0Owo+ID4gIAo+ID4gIAkJaWYgKCF3bV9w YXJhbXMucGxhbmVfdmlzaWJsZSkKPiA+ICAJCQljb250aW51ZTsKPiA+ICAKPiA+IC0JCXJldCA9 IHNrbF9jb21wdXRlX3dtX2xldmVscyhkZXZfcHJpdiwgZGRiLCBjc3RhdGUsCj4gPiArCQlyZXQg PSBza2xfY29tcHV0ZV93bV9sZXZlbHMoZGV2X3ByaXYsIGNzdGF0ZSwKPiA+ICAJCQkJCSAgICBp bnRlbF9wc3RhdGUsCj4gPiAmd21fcGFyYW1zLCB3bSwgMCk7Cj4gPiAgCQlpZiAocmV0KQo+ID4g IAkJCXJldHVybiByZXQ7Cj4gPiAgCj4gPiAgCQlza2xfY29tcHV0ZV90cmFuc2l0aW9uX3dtKGNz dGF0ZSwgJndtX3BhcmFtcywgJndtLQo+ID4gPndtWzBdLAo+ID4gLQkJCQkJICBkZGJfYmxvY2tz LCAmd20tCj4gPiA+dHJhbnNfd20pOwo+ID4gKwkJCQkJICAmd20tPnRyYW5zX3dtKTsKPiA+ICAK PiA+ICAJCS8qIHV2IHBsYW5lIHdhdGVybWFya3MgbXVzdCBhbHNvIGJlIHZhbGlkYXRlZCBmb3IK PiA+IE5WMTIvUGxhbmFyICovCj4gPiAgCQlpZiAod21fcGFyYW1zLmlzX3BsYW5hcikgewo+ID4g IAkJCXJldCA9Cj4gPiBza2xfY29tcHV0ZV9wbGFuZV93bV9wYXJhbXMoZGV2X3ByaXYsIGNzdGF0 ZSwKPiA+IC0JCQkJCQkJICBpbnRlbF9wcwo+ID4gdGF0ZSwKPiA+ICsJCQkJCQkJICBpbnRlbF9w cwo+ID4gdGF0ZSwgZGRiLAo+ID4gIAkJCQkJCQkgICZ3bV9wYXJhCj4gPiBtcywgMSk7Cj4gPiAg CQkJaWYgKHJldCkKPiA+ICAJCQkJcmV0dXJuIHJldDsKPiA+ICAKPiA+IC0JCQlyZXQgPSBza2xf Y29tcHV0ZV93bV9sZXZlbHMoZGV2X3ByaXYsIGRkYiwKPiA+IGNzdGF0ZSwKPiA+ICsJCQlyZXQg PSBza2xfY29tcHV0ZV93bV9sZXZlbHMoZGV2X3ByaXYsCj4gPiBjc3RhdGUsCj4gPiAgCQkJCQkJ ICAgIGludGVsX3BzdGF0ZSwKPiA+ICZ3bV9wYXJhbXMsCj4gPiAgCQkJCQkJICAgIHdtLCAxKTsK PiA+ICAJCQlpZiAocmV0KQo+ID4gLS0gCj4gPiAyLjE0LjQKPiA+IAo+ID4gX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiA+IEludGVsLWdmeCBtYWlsaW5n IGxpc3QKPiA+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiA+IGh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cj4gCj4gCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=