From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id C439EC636D7 for ; Wed, 15 Feb 2023 18:13:11 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 6EE6610E291; Wed, 15 Feb 2023 18:13:08 +0000 (UTC) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 42ADB10E28D; Wed, 15 Feb 2023 18:13:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1676484786; x=1708020786; h=message-id:subject:from:to:cc:date:in-reply-to: references:content-transfer-encoding:mime-version; bh=3/cPhdT6ZLM+AFSRXuWlg3JCk5U4thFrSIr+whh6c3I=; b=n8m6AxjWgo4PVY8SxEgdtuMkGKSOqQpHTs+Jawysq7dMZMzDErLQqwgX ur6XPl49hyvwydO0tH4+Ue7vEcZnvcZukr7PKMxCjw8xlXhP/JH504tMW ZP8aQx43Oxw8As/RL6pJjRg8IG293zChyRtFtShMmVLLLH7PuxnfTUy8T N29k/0n9RtrCmUf8F/b2QIHlU7BZbD5diX1CecnLN0IDt2SzguFVruR67 bTLjIQo2gzOyQz8Vo3SHfSKS+m6iQ1yyoVLsEh7d5tdy/OLcDmBWeB6y4 uaPv6kZqXerWau4KKZXd4h94IrNcHtIdDX/FoKcKjNrYzCGlaLB19GtEh w==; X-IronPort-AV: E=McAfee;i="6500,9779,10622"; a="329221098" X-IronPort-AV: E=Sophos;i="5.97,300,1669104000"; d="scan'208";a="329221098" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Feb 2023 10:12:50 -0800 X-IronPort-AV: E=McAfee;i="6500,9779,10622"; a="619605644" X-IronPort-AV: E=Sophos;i="5.97,300,1669104000"; d="scan'208";a="619605644" Received: from auliel-mobl1.ger.corp.intel.com (HELO [10.249.254.14]) ([10.249.254.14]) by orsmga003-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Feb 2023 10:12:46 -0800 Message-ID: <81f935b26890642f48793c7b7c5685e445bfe0f2.camel@linux.intel.com> From: Thomas =?ISO-8859-1?Q?Hellstr=F6m?= To: Christian =?ISO-8859-1?Q?K=F6nig?= , dri-devel@lists.freedesktop.org Date: Wed, 15 Feb 2023 19:12:43 +0100 In-Reply-To: References: <20230215161405.187368-1-thomas.hellstrom@linux.intel.com> <20230215161405.187368-8-thomas.hellstrom@linux.intel.com> Organization: Intel Sweden AB, Registration Number: 556189-6027 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 User-Agent: Evolution 3.44.4 (3.44.4-2.fc36) MIME-Version: 1.0 Subject: Re: [Intel-gfx] [RFC PATCH 07/16] drm/ttm: Reduce the number of used allocation orders for TTM pages X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Miaohe Lin , David Hildenbrand , NeilBrown , Daniel Vetter , intel-gfx@lists.freedesktop.org, Peter Xu , linux-mm@kvack.org, Dave Hansen , linux-graphics-maintainer@vmware.com, "Matthew Wilcox \(Oracle\)" , Johannes Weiner , Dave Airlie , Andrew Morton , Matthew Auld Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" T24gV2VkLCAyMDIzLTAyLTE1IGF0IDE4OjQyICswMTAwLCBDaHJpc3RpYW4gS8O2bmlnIHdyb3Rl Ogo+IEFtIDE1LjAyLjIzIHVtIDE3OjEzIHNjaHJpZWIgVGhvbWFzIEhlbGxzdHLDtm06Cj4gPiBX aGVuIHN3YXBwaW5nIG91dCwgd2Ugd2lsbCBzcGxpdCBtdWx0aS1vcmRlciBwYWdlcyBib3RoIGlu IG9yZGVyIHRvCj4gPiBtb3ZlIHRoZW0gdG8gdGhlIHN3YXAtY2FjaGUgYW5kIHRvIGJlIGFibGUg dG8gcmV0dXJuIG1lbW9yeSB0byB0aGUKPiA+IHN3YXAgY2FjaGUgYXMgc29vbiBhcyBwb3NzaWJs ZSBvbiBhIHBhZ2UtYnktcGFnZSBiYXNpcy4KPiA+IEJ5IHJlZHVjaW5nIHRoZSBwYWdlIG1heCBv cmRlciB0byB0aGUgc3lzdGVtIFBNRCBzaXplLCB3ZSBjYW4gYmUKPiA+IG5pY2VyCj4gPiB0byB0 aGUgc3lzdGVtIGFuZCBhdm9pZCBzcGxpdHRpbmcgZ2lnYW50aWMgcGFnZXMuCj4gCj4gCj4gPiBP biB0b3Agb2YgdGhpcyB3ZSBhbHNvCj4gPiBpbmNsdWRlIHRoZSA2NEsgcGFnZSBzaXplIGluIHRo ZSBwYWdlIHNpemVzIHRyaWVkLCBzaW5jZSB0aGF0Cj4gPiBhcHBlYXJzIHRvCj4gPiBiZSBhIGNv bW1vbiBzaXplIGZvciBHUFUgYXBwbGljYXRpb25zLgo+IAo+IFBsZWFzZSBjb21wbGV0ZWx5IGRy b3AgdGhhdC7CoApZb3UgbWVhbiB0aGUgNjRLIHBhZ2Ugc2l6ZSwgb3IgdGhlIHdob2xlIHBhdGNo PwoKPiBUaGlzIGlzIGp1c3Qgbm9uc2Vuc2Ugc3BpbGxpbmcgaW4gZnJvbSB0aGUgCj4gV2luZG93 cyBkcml2ZXJzLgoKQWdyZWVkLCBidXQgSUlSQyBvbiB0aGUgbGFzdCBSRkMgeW91IGFza2VkIG1l IG5vdCB0byBkcm9wIHRoZSA2NEsKcGFnZXMsIHNvIHRoYXQncyB3aHkgdGhleSBhcmUgaGVyZS4g SSBjYW4gcmVtb3ZlIHRoZW0gaWYgbmVlZGVkLgoKVGhlIG9ubHkgcmVhc29uIGZvciBrZWVwaW5n IHRoZW0gZnJvbSBhIHBlcmZvcm1hbmNlIHBvaW50IG9mIHZpZXcgaXMKYmV0dGVyIGVmZmljaWVu Y3kgb24gR1BVcyB3aXRoIDY0SyBwYWdlIHNpemUgaWYgbm90IHVzaW5nIGEgY29hbGVzY2luZwpJ T01NVSBmb3IgZG1hLW1hcHBpbmcuCgpMZXQgbWUga25vdyB3aGF0IHlvdSB0aGluayBpcyBiZXN0 IGFuZCBJJ2xsIGFkanVzdCBhY2NvcmRpbmdseS4KCi9UaG9tYXMKCgo+IAo+IENocmlzdGlhbi4K PiAKPiA+IAo+ID4gTG9va2luZyBmb3J3YXJkIHRvIHdoZW4gd2UgbWlnaHQgYmUgYWJsZSB0byBz d2FwIG91dCBQTUQgc2l6ZQo+ID4gZm9saW9zCj4gPiB3aXRob3V0IHNwbGl0dGluZywgdGhpcyB3 aWxsIGFsc28gYmUgYSBiZW5lZml0Lgo+ID4gCj4gPiBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgSGVs bHN0csO2bSA8dGhvbWFzLmhlbGxzdHJvbUBsaW51eC5pbnRlbC5jb20+Cj4gPiAtLS0KPiA+IMKg IGRyaXZlcnMvZ3B1L2RybS90dG0vdHRtX3Bvb2wuYyB8IDU4ICsrKysrKysrKysrKysrKysrKysr KysrKysrLS0tCj4gPiAtLS0tLQo+ID4gwqAgMSBmaWxlIGNoYW5nZWQsIDQ1IGluc2VydGlvbnMo KyksIDEzIGRlbGV0aW9ucygtKQo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L3R0bS90dG1fcG9vbC5jCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX3Bvb2wuYwo+ID4g aW5kZXggMWNjNzU5MWE5NTQyLi44Nzg3ZmI2YTIxOGIgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vdHRtL3R0bV9wb29sLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRt X3Bvb2wuYwo+ID4gQEAgLTMxLDYgKzMxLDggQEAKPiA+IMKgwqAgKiBjYXVzZSB0aGV5IGFyZSBy YXRoZXIgc2xvdyBjb21wYXJlZCB0byBhbGxvY19wYWdlcyttYXAuCj4gPiDCoMKgICovCj4gPiDC oCAKPiA+ICsjZGVmaW5lIHByX2ZtdChmbXQpICJbVFRNIFBPT0xdICIgZm10Cj4gPiArCj4gPiDC oCAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gPiDCoCAjaW5jbHVkZSA8bGludXgvZG1hLW1h cHBpbmcuaD4KPiA+IMKgICNpbmNsdWRlIDxsaW51eC9kZWJ1Z2ZzLmg+Cj4gPiBAQCAtNDcsNiAr NDksMTggQEAKPiA+IMKgIAo+ID4gwqAgI2luY2x1ZGUgInR0bV9tb2R1bGUuaCIKPiA+IMKgIAo+ ID4gKyNkZWZpbmUgVFRNX01BWF9PUkRFUiAoUE1EX1NISUZUIC0gUEFHRV9TSElGVCkKPiA+ICsj ZGVmaW5lIFRUTV82NEtfT1JERVIgKDE2IC0gUEFHRV9TSElGVCkKPiA+ICsjaWYgKFRUTV9NQVhf T1JERVIgPCBUVE1fNjRLX09SREVSKQo+ID4gKyN1bmRlZiBUVE1fTUFYX09SREVSCj4gPiArI2Rl ZmluZSBUVE1fTUFYX09SREVSIFRUTV82NEtfT1JERVIKPiA+ICsjZW5kaWYKPiA+ICsjaWYgKChN QVhfT1JERVIgLSAxKSA8IFRUTV9NQVhfT1JERVIpCj4gPiArI3VuZGVmIFRUTV9NQVhfT1JERVIK PiA+ICsjZGVmaW5lIFRUTV9NQVhfT1JERVIgKE1BWF9PUkRFUiAtIDEpCj4gPiArI2VuZGlmCj4g PiArI2RlZmluZSBUVE1fRElNX09SREVSIChUVE1fTUFYX09SREVSICsgMSkKPiA+ICsKPiA+IMKg IC8qKgo+ID4gwqDCoCAqIHN0cnVjdCB0dG1fcG9vbF9kbWEgLSBIZWxwZXIgb2JqZWN0IGZvciBj b2hlcmVudCBETUEgbWFwcGluZ3MKPiA+IMKgwqAgKgo+ID4gQEAgLTY1LDE2ICs3OSwxOCBAQCBt b2R1bGVfcGFyYW0ocGFnZV9wb29sX3NpemUsIHVsb25nLCAwNjQ0KTsKPiA+IMKgIAo+ID4gwqAg c3RhdGljIGF0b21pY19sb25nX3QgYWxsb2NhdGVkX3BhZ2VzOwo+ID4gwqAgCj4gPiAtc3RhdGlj IHN0cnVjdCB0dG1fcG9vbF90eXBlIGdsb2JhbF93cml0ZV9jb21iaW5lZFtNQVhfT1JERVJdOwo+ ID4gLXN0YXRpYyBzdHJ1Y3QgdHRtX3Bvb2xfdHlwZSBnbG9iYWxfdW5jYWNoZWRbTUFYX09SREVS XTsKPiA+ICtzdGF0aWMgc3RydWN0IHR0bV9wb29sX3R5cGUgZ2xvYmFsX3dyaXRlX2NvbWJpbmVk W1RUTV9ESU1fT1JERVJdOwo+ID4gK3N0YXRpYyBzdHJ1Y3QgdHRtX3Bvb2xfdHlwZSBnbG9iYWxf dW5jYWNoZWRbVFRNX0RJTV9PUkRFUl07Cj4gPiDCoCAKPiA+IC1zdGF0aWMgc3RydWN0IHR0bV9w b29sX3R5cGUKPiA+IGdsb2JhbF9kbWEzMl93cml0ZV9jb21iaW5lZFtNQVhfT1JERVJdOwo+ID4g LXN0YXRpYyBzdHJ1Y3QgdHRtX3Bvb2xfdHlwZSBnbG9iYWxfZG1hMzJfdW5jYWNoZWRbTUFYX09S REVSXTsKPiA+ICtzdGF0aWMgc3RydWN0IHR0bV9wb29sX3R5cGUKPiA+IGdsb2JhbF9kbWEzMl93 cml0ZV9jb21iaW5lZFtUVE1fRElNX09SREVSXTsKPiA+ICtzdGF0aWMgc3RydWN0IHR0bV9wb29s X3R5cGUgZ2xvYmFsX2RtYTMyX3VuY2FjaGVkW1RUTV9ESU1fT1JERVJdOwo+ID4gwqAgCj4gPiDC oCBzdGF0aWMgc3BpbmxvY2tfdCBzaHJpbmtlcl9sb2NrOwo+ID4gwqAgc3RhdGljIHN0cnVjdCBs aXN0X2hlYWQgc2hyaW5rZXJfbGlzdDsKPiA+IMKgIHN0YXRpYyBzdHJ1Y3Qgc2hyaW5rZXIgbW1f c2hyaW5rZXI7Cj4gPiDCoCAKPiA+ICtzdGF0aWMgdW5zaWduZWQgaW50IHR0bV9wb29sX29yZGVy c1tdID0ge1RUTV9NQVhfT1JERVIsIDAsIDB9Owo+ID4gKwo+ID4gwqAgLyogQWxsb2NhdGUgcGFn ZXMgb2Ygc2l6ZSAxIDw8IG9yZGVyIHdpdGggdGhlIGdpdmVuIGdmcF9mbGFncyAqLwo+ID4gwqAg c3RhdGljIHN0cnVjdCBwYWdlICp0dG1fcG9vbF9hbGxvY19wYWdlKHN0cnVjdCB0dG1fcG9vbCAq cG9vbCwKPiA+IGdmcF90IGdmcF9mbGFncywKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdW5z aWduZWQgaW50IG9yZGVyKQo+ID4gQEAgLTQwMCw2ICs0MTYsMTcgQEAgc3RhdGljIHZvaWQgX190 dG1fcG9vbF9mcmVlKHN0cnVjdCB0dG1fcG9vbAo+ID4gKnBvb2wsIHN0cnVjdCB0dG1fdHQgKnR0 LAo+ID4gwqDCoMKgwqDCoMKgwqDCoH0KPiA+IMKgIH0KPiA+IMKgIAo+ID4gK3N0YXRpYyB1bnNp Z25lZCBpbnQgdHRtX3Bvb2xfc2VsZWN0X29yZGVyKHVuc2lnbmVkIGludCBvcmRlciwKPiA+IHBn b2ZmX3QgbnVtX3BhZ2VzKQo+ID4gK3sKPiA+ICvCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGludCAq Y3VyX29yZGVyID0gdHRtX3Bvb2xfb3JkZXJzOwo+ID4gKwo+ID4gK8KgwqDCoMKgwqDCoMKgb3Jk ZXIgPSBtaW5fdCh1bnNpZ25lZCBpbnQsIF9fZmxzKG51bV9wYWdlcyksIG9yZGVyKTsKPiA+ICvC oMKgwqDCoMKgwqDCoHdoaWxlIChvcmRlciA8ICpjdXJfb3JkZXIpCj4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgKytjdXJfb3JkZXI7Cj4gPiArCj4gPiArwqDCoMKgwqDCoMKgwqBy ZXR1cm4gKmN1cl9vcmRlcjsKPiA+ICt9Cj4gPiArCj4gPiDCoCAvKioKPiA+IMKgwqAgKiB0dG1f cG9vbF9hbGxvYyAtIEZpbGwgYSB0dG1fdHQgb2JqZWN0Cj4gPiDCoMKgICoKPiA+IEBAIC00Mzks OSArNDY2LDggQEAgaW50IHR0bV9wb29sX2FsbG9jKHN0cnVjdCB0dG1fcG9vbCAqcG9vbCwKPiA+ IHN0cnVjdCB0dG1fdHQgKnR0LAo+ID4gwqDCoMKgwqDCoMKgwqDCoGVsc2UKPiA+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ2ZwX2ZsYWdzIHw9IEdGUF9ISUdIVVNFUjsKPiA+IMKg IAo+ID4gLcKgwqDCoMKgwqDCoMKgZm9yIChvcmRlciA9IG1pbl90KHVuc2lnbmVkIGludCwgTUFY X09SREVSIC0gMSwKPiA+IF9fZmxzKG51bV9wYWdlcykpOwo+ID4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgbnVtX3BhZ2VzOwo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgb3JkZXIgPSBtaW5f dCh1bnNpZ25lZCBpbnQsIG9yZGVyLCBfX2ZscyhudW1fcGFnZXMpKSkKPiA+IHsKPiA+ICvCoMKg wqDCoMKgwqDCoG9yZGVyID0gdHRtX3Bvb2xfc2VsZWN0X29yZGVyKHR0bV9wb29sX29yZGVyc1sw XSwKPiA+IG51bV9wYWdlcyk7Cj4gPiArwqDCoMKgwqDCoMKgwqBmb3IgKDsgbnVtX3BhZ2VzOyBv cmRlciA9IHR0bV9wb29sX3NlbGVjdF9vcmRlcihvcmRlciwKPiA+IG51bV9wYWdlcykpIHsKPiA+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHR0bV9wb29sX3R5cGUgKnB0 Owo+ID4gwqAgCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHBhZ2VfY2FjaGlu ZyA9IHR0LT5jYWNoaW5nOwo+ID4gQEAgLTU1OCw3ICs1ODQsNyBAQCB2b2lkIHR0bV9wb29sX2lu aXQoc3RydWN0IHR0bV9wb29sICpwb29sLAo+ID4gc3RydWN0IGRldmljZSAqZGV2LAo+ID4gwqAg Cj4gPiDCoMKgwqDCoMKgwqDCoMKgaWYgKHVzZV9kbWFfYWxsb2MpIHsKPiA+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgZm9yIChpID0gMDsgaSA8IFRUTV9OVU1fQ0FDSElOR19UWVBF UzsgKytpKQo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBmb3IgKGogPSAwOyBqIDwgTUFYX09SREVSOyArK2opCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZvciAoaiA9IDA7IGogPCBUVE1fRElNX09SREVS OyArK2opCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgdHRtX3Bvb2xfdHlwZV9pbml0KCZwb29sLQo+ID4gPmNhY2hpbmdb aV0ub3JkZXJzW2pdLAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBwb29sLCBpLCBqKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiBAQCAtNTc4LDcgKzYw NCw3IEBAIHZvaWQgdHRtX3Bvb2xfZmluaShzdHJ1Y3QgdHRtX3Bvb2wgKnBvb2wpCj4gPiDCoCAK PiA+IMKgwqDCoMKgwqDCoMKgwqBpZiAocG9vbC0+dXNlX2RtYV9hbGxvYykgewo+ID4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmb3IgKGkgPSAwOyBpIDwgVFRNX05VTV9DQUNISU5H X1RZUEVTOyArK2kpCj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGZvciAoaiA9IDA7IGogPCBNQVhfT1JERVI7ICsraikKPiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZm9yIChqID0gMDsgaiA8IFRUTV9ESU1f T1JERVI7ICsraikKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0dG1fcG9vbF90eXBlX2ZpbmkoJnBvb2wtCj4gPiA+Y2Fj aGluZ1tpXS5vcmRlcnNbal0pOwo+ID4gwqDCoMKgwqDCoMKgwqDCoH0KPiA+IMKgIAo+ID4gQEAg LTYzMiw3ICs2NTgsNyBAQCBzdGF0aWMgdm9pZCB0dG1fcG9vbF9kZWJ1Z2ZzX2hlYWRlcihzdHJ1 Y3QKPiA+IHNlcV9maWxlICptKQo+ID4gwqDCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGludCBpOwo+ ID4gwqAgCj4gPiDCoMKgwqDCoMKgwqDCoMKgc2VxX3B1dHMobSwgIlx0ICIpOwo+ID4gLcKgwqDC oMKgwqDCoMKgZm9yIChpID0gMDsgaSA8IE1BWF9PUkRFUjsgKytpKQo+ID4gK8KgwqDCoMKgwqDC oMKgZm9yIChpID0gMDsgaSA8IFRUTV9ESU1fT1JERVI7ICsraSkKPiA+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgc2VxX3ByaW50ZihtLCAiIC0tLSUydS0tLSIsIGkpOwo+ID4gwqDC oMKgwqDCoMKgwqDCoHNlcV9wdXRzKG0sICJcbiIpOwo+ID4gwqAgfQo+ID4gQEAgLTY0Myw3ICs2 NjksNyBAQCBzdGF0aWMgdm9pZCB0dG1fcG9vbF9kZWJ1Z2ZzX29yZGVycyhzdHJ1Y3QKPiA+IHR0 bV9wb29sX3R5cGUgKnB0LAo+ID4gwqAgewo+ID4gwqDCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGlu dCBpOwo+ID4gwqAgCj4gPiAtwqDCoMKgwqDCoMKgwqBmb3IgKGkgPSAwOyBpIDwgTUFYX09SREVS OyArK2kpCj4gPiArwqDCoMKgwqDCoMKgwqBmb3IgKGkgPSAwOyBpIDwgVFRNX0RJTV9PUkRFUjsg KytpKQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzZXFfcHJpbnRmKG0sICIg JTh1IiwgdHRtX3Bvb2xfdHlwZV9jb3VudCgmcHRbaV0pKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqBz ZXFfcHV0cyhtLCAiXG4iKTsKPiA+IMKgIH0KPiA+IEBAIC03NDksMTAgKzc3NSwxNiBAQCBpbnQg dHRtX3Bvb2xfbWdyX2luaXQodW5zaWduZWQgbG9uZwo+ID4gbnVtX3BhZ2VzKQo+ID4gwqDCoMKg wqDCoMKgwqDCoGlmICghcGFnZV9wb29sX3NpemUpCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHBhZ2VfcG9vbF9zaXplID0gbnVtX3BhZ2VzOwo+ID4gwqAgCj4gPiArwqDCoMKg wqDCoMKgwqBpZiAoVFRNXzY0S19PUkRFUiA8IFRUTV9NQVhfT1JERVIpCj4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgdHRtX3Bvb2xfb3JkZXJzWzFdID0gVFRNXzY0S19PUkRFUjsK PiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDCoHByX2RlYnVnKCJVc2VkIG9yZGVycyBhcmUgJXUgJXUg JXVcbiIsIHR0bV9wb29sX29yZGVyc1swXSwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgdHRtX3Bvb2xfb3JkZXJzWzFdLCB0dG1fcG9vbF9vcmRlcnNbMl0pOwo+ID4gKwo+ID4g wqDCoMKgwqDCoMKgwqDCoHNwaW5fbG9ja19pbml0KCZzaHJpbmtlcl9sb2NrKTsKPiA+IMKgwqDC oMKgwqDCoMKgwqBJTklUX0xJU1RfSEVBRCgmc2hyaW5rZXJfbGlzdCk7Cj4gPiDCoCAKPiA+IC3C oMKgwqDCoMKgwqDCoGZvciAoaSA9IDA7IGkgPCBNQVhfT1JERVI7ICsraSkgewo+ID4gK8KgwqDC oMKgwqDCoMKgZm9yIChpID0gMDsgaSA8IFRUTV9ESU1fT1JERVI7ICsraSkgewo+ID4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0dG1fcG9vbF90eXBlX2luaXQoJmdsb2JhbF93cml0 ZV9jb21iaW5lZFtpXSwgTlVMTCwKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHR0bV93cml0ZV9jb21iaW5lZCwg aSk7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHR0bV9wb29sX3R5cGVfaW5p dCgmZ2xvYmFsX3VuY2FjaGVkW2ldLCBOVUxMLAo+ID4gdHRtX3VuY2FjaGVkLCBpKTsKPiA+IEBA IC03ODUsNyArODE3LDcgQEAgdm9pZCB0dG1fcG9vbF9tZ3JfZmluaSh2b2lkKQo+ID4gwqAgewo+ ID4gwqDCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGludCBpOwo+ID4gwqAgCj4gPiAtwqDCoMKgwqDC oMKgwqBmb3IgKGkgPSAwOyBpIDwgTUFYX09SREVSOyArK2kpIHsKPiA+ICvCoMKgwqDCoMKgwqDC oGZvciAoaSA9IDA7IGkgPCBUVE1fRElNX09SREVSOyArK2kpIHsKPiA+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgdHRtX3Bvb2xfdHlwZV9maW5pKCZnbG9iYWxfd3JpdGVfY29tYmlu ZWRbaV0pOwo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0dG1fcG9vbF90eXBl X2ZpbmkoJmdsb2JhbF91bmNhY2hlZFtpXSk7Cj4gPiDCoCAKPiAKCg==