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 kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id E86E1C636CC for ; Wed, 15 Feb 2023 18:13:10 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 72CFC6B0078; Wed, 15 Feb 2023 13:13:10 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 6DDC76B007B; Wed, 15 Feb 2023 13:13:10 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5A5066B007D; Wed, 15 Feb 2023 13:13:10 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 4AE926B0078 for ; Wed, 15 Feb 2023 13:13:10 -0500 (EST) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id EA7ED4018A for ; Wed, 15 Feb 2023 18:13:09 +0000 (UTC) X-FDA: 80470322898.12.F75FE14 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by imf21.hostedemail.com (Postfix) with ESMTP id 4A9121C001C for ; Wed, 15 Feb 2023 18:13:06 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=bok83Ioa; spf=none (imf21.hostedemail.com: domain of thomas.hellstrom@linux.intel.com has no SPF policy when checking 192.55.52.93) smtp.mailfrom=thomas.hellstrom@linux.intel.com; dmarc=pass (policy=none) header.from=intel.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1676484788; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=3/cPhdT6ZLM+AFSRXuWlg3JCk5U4thFrSIr+whh6c3I=; b=H82OTI83dzYnwChzijd3Flq2kV4O1xzpX7khgXAf1TaW50STI1vM8DhbdRJgwqOAmcCvIe rgT8MErdCxwoY6BaDkeT3E2Fmj1VFZo9FZjP4g8OUgnOLTx7QdqRRDM/nBHh/mEOKmEfTX 19jl2un1k0wsP/cs1+e/zvPCfDxNfJA= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=bok83Ioa; spf=none (imf21.hostedemail.com: domain of thomas.hellstrom@linux.intel.com has no SPF policy when checking 192.55.52.93) smtp.mailfrom=thomas.hellstrom@linux.intel.com; dmarc=pass (policy=none) header.from=intel.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1676484788; a=rsa-sha256; cv=none; b=M3+VBXEOl1p0JgbtcDW7N5hedV9qRCP9TX5bvK31iaJhuhWwku7rXEn8A7Eb6+cQRPFj9z 2SFaKrNM1ITj/meytsxSa7mE2n6S5bKIOnw2cslQDT2V0QWurijByxDhIfjKQ+KqMr6vG/ 178qJF9yQBCIkA4NpOeW5PXuHN5nKBw= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1676484787; x=1708020787; h=message-id:subject:from:to:cc:date:in-reply-to: references:content-transfer-encoding:mime-version; bh=3/cPhdT6ZLM+AFSRXuWlg3JCk5U4thFrSIr+whh6c3I=; b=bok83IoaK99K6wgwXUSLvHGzPpIsclB7fiHlDP9DSDAk37Q0vDQs4w5n TjzxCnz4u9aIVp/EIPz3dGTlWKGwmqVqF1ZSRRMrgK+UoTcs2C7dUqB44 lSDa0Y3x8CsBsgMz99ayrxw9l6+6DuQFVMHGeY651iB4eQucCIdPtiqoH aJMImu6nmVlTuRoGKA/pVUfArA/bQkWMDjM69Ma2bJnBPDD1FBzMqWS47 JXY3vPZktjd4gXrl6D0i4No1wkhs9Qs+WfjqvP54XA3ruBqcLmM65GQ1r 7CYb13kkRnVwhjDGNmQ+JhJq2I9KrB/8bd775TBkfsYgjK7bkXiJC/H14 Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10622"; a="329221097" X-IronPort-AV: E=Sophos;i="5.97,300,1669104000"; d="scan'208";a="329221097" 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> Subject: Re: [RFC PATCH 07/16] drm/ttm: Reduce the number of used allocation orders for TTM pages From: Thomas =?ISO-8859-1?Q?Hellstr=F6m?= To: Christian =?ISO-8859-1?Q?K=F6nig?= , dri-devel@lists.freedesktop.org Cc: Andrew Morton , "Matthew Wilcox (Oracle)" , Miaohe Lin , David Hildenbrand , Johannes Weiner , Peter Xu , NeilBrown , Daniel Vetter , Dave Airlie , Dave Hansen , Matthew Auld , linux-graphics-maintainer@vmware.com, linux-mm@kvack.org, intel-gfx@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 X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 4A9121C001C X-Rspam-User: X-Stat-Signature: 7f33sqox4s57wqz4nwrkm8ccwpghk7gk X-HE-Tag: 1676484786-988539 X-HE-Meta: U2FsdGVkX1/QQf+cGcA2ncbmEbV1qyt+6alXmRupV6zFSJ/FBAVOit0ilXMiFfxq/iY6q0UcmHD+MrGaVz5dlDtevjRgKvrWZpKHVphHHKZJ+clR9npQxk/CfKtH7AbzVvLQUfhxVrVCZlk1NZl+SjzARBewsyppMTofAw5vobe+5n5cPZ+gyWOuD3Dme19MZA6d+ZC2sErPHU1bzYB99qCJiGPerOdgZHjH57tJiyiLnDF913k4OMMYRArPbJPlDC+7vDb3FhvpZ990oNbc6fJ53XBiN50/TW7AudfYnSNGN6A7GuIQaVQgxMkEHIB83rijng2Yfo2Qp4F1dXTg55MyAmWam/KTAJmZff4GpIp5DGdSOIO1z41m82NlXSdGP7flEI+LrhAYKN3SPX7uSY4/px6ge3528XfL8Q/Qv24k96yJ7TjEU696q78QD1btjNq85radYUT6kKrkxoPOwWDY7Ch1nkTajXxWHvFKAPpkBBp3Nxt5ayClbnaWSJPl2bNBFXemvjYzA3uniOE7kRn8Sud6PxCeol3S7K+RFNtGCQzzj26Q9CRCeyVJ0bgmhQ+yrR88vQS6HNiritjb/a6ZXKFOEJRUkH2ye6tWB1cXrQIUjj03ujLH5NlbxbdYnH/cIJYlHgAJZmWoouRQOYc7GA9pcgtQv+V8Rjrs5Qlv6qcE+MXyZA+CMVyAtpZ8upic7XcD+1YePHEZmZmcwVe5YWF58kGcX1WawGqwdpr3BIEITQM+NY0AAP/V1nMNsvOXglhTBlphjIkb/af1hyTABlki/9pChAy6QxRFxcdtptGTlrXXiRvjW3E95pJf3tyRAYTnrB9ezJ+u1vlk3z3yYQH2eoRKMIZPR1jK1V0jgO004eYq8oW15D7nQhpZGYizQmSVLNEKXJ8A5LRj9xOCvU+zdileCtFE52qduVmEtgUE2BhvlsxOXq1gUNE0l98vMYtCL7cRsQpNyyl PoMcRnQu r2zXcQhqHkvDl+zNjqk9gpcZEUwwauu3k0LyJL8GxMl6iFyouzVggqhAxUY8WRChiXLMZKl/5agKIQIPrwQETG1G8htlVdBhzk6LxHwJNnBFYNzZaGmyZZq9Irl5Ao2Hw+QBOcCpxApluHEVVNamv9jmetEJE8krSSG4QZpYr8RB7lcbuRtP3mlVYaRCU6bQCA1PrHqy/5lZOE2nqPue8glg08nK3h6x2iQDoyuDLUIt3U7qZBFACpVZ3XNeuNrDMozQOtQb6tnd6ZZI= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: 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==