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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 39A7EC001B0 for ; Fri, 14 Jul 2023 18:00:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:From:References:Cc:To: Subject:MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=mN2aShmXqt6idneYMFZTPUr+SDGw/flMsMf0SUYA8PM=; b=3eG97cNS2AVpo1 Z8aCzZut5kqB9Wle0BH06A44cwghWx3hkbokm5n0yt3c9mFqcW4GTP9nLvTwfNBjz1VRGFSd+qefu 1ONQRDohxPVWFX3FzXNNclfuYRGblHhsgojnZxNTZWivGga26m5JRIwwGBgJNpfw4GRkG3L4a23WV Wi4FPcriFYQbw5/WlAGju6/pH9h/wEwhx+h7wrmKt4pLHKgMQjEswbRqo/ev5iDUxrVoCKLbR0NqU z+YAvXaaCCb1LrySGAOh0cb4JIxB/YGwuJhLnQfd5Ncf+RFCB3DPbtOktTPT5A47aOEaqwUlYFxY2 C1f98S66fcvH87L1zV/A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qKN59-006uiQ-1Y; Fri, 14 Jul 2023 17:59:55 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qKN55-006uh8-1R for linux-arm-kernel@lists.infradead.org; Fri, 14 Jul 2023 17:59:53 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 7CC451570; Fri, 14 Jul 2023 11:00:29 -0700 (PDT) Received: from [10.57.76.27] (unknown [10.57.76.27]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 93F7F3F67D; Fri, 14 Jul 2023 10:59:44 -0700 (PDT) Message-ID: <432490d1-8d1e-1742-295a-d6e60a054ab6@arm.com> Date: Fri, 14 Jul 2023 18:59:42 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Subject: Re: [PATCH v3 3/4] mm: FLEXIBLE_THP for improved performance To: Yu Zhao Cc: Andrew Morton , Matthew Wilcox , "Kirill A. Shutemov" , Yin Fengwei , David Hildenbrand , Catalin Marinas , Will Deacon , Anshuman Khandual , Yang Shi , "Huang, Ying" , Zi Yan , Luis Chamberlain , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org References: <20230714160407.4142030-1-ryan.roberts@arm.com> <20230714161733.4144503-3-ryan.roberts@arm.com> From: Ryan Roberts In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230714_105951_600127_FFCEEADD X-CRM114-Status: GOOD ( 44.61 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gMTQvMDcvMjAyMyAxODoxNywgWXUgWmhhbyB3cm90ZToKPiBPbiBGcmksIEp1bCAxNCwgMjAy MyBhdCAxMDoxN+KAr0FNIFJ5YW4gUm9iZXJ0cyA8cnlhbi5yb2JlcnRzQGFybS5jb20+IHdyb3Rl Ogo+Pgo+PiBJbnRyb2R1Y2UgRkxFWElCTEVfVEhQIGZlYXR1cmUsIHdoaWNoIGFsbG93cyBhbm9u eW1vdXMgbWVtb3J5IHRvIGJlCj4+IGFsbG9jYXRlZCBpbiBsYXJnZSBmb2xpb3Mgb2YgYSBkZXRl cm1pbmVkIG9yZGVyLiBBbGwgcGFnZXMgb2YgdGhlIGxhcmdlCj4+IGZvbGlvIGFyZSBwdGUtbWFw cGVkIGR1cmluZyB0aGUgc2FtZSBwYWdlIGZhdWx0LCBzaWduaWZpY2FudGx5IHJlZHVjaW5nCj4+ IHRoZSBudW1iZXIgb2YgcGFnZSBmYXVsdHMuIFRoZSBudW1iZXIgb2YgcGVyLXBhZ2Ugb3BlcmF0 aW9ucyAoZS5nLiByZWYKPj4gY291bnRpbmcsIHJtYXAgbWFuYWdlbWVudCBscnUgbGlzdCBtYW5h Z2VtZW50KSBhcmUgYWxzbyBzaWduaWZpY2FudGx5Cj4+IHJlZHVjZWQgc2luY2UgdGhvc2Ugb3Bz IG5vdyBiZWNvbWUgcGVyLWZvbGlvLgo+Pgo+PiBUaGUgbmV3IGJlaGF2aW91ciBpcyBoaWRkZW4g YmVoaW5kIHRoZSBuZXcgRkxFWElCTEVfVEhQIEtjb25maWcsIHdoaWNoCj4+IGRlZmF1bHRzIHRv IGRpc2FibGVkIGZvciBub3c7IFRoZSBsb25nIHRlcm0gYWltIGlzIGZvciB0aGlzIHRvIGRlZmF1 dCB0bwo+PiBlbmFibGVkLCBidXQgdGhlcmUgYXJlIHNvbWUgcmlza3MgYXJvdW5kIGludGVybmFs IGZyYWdtZW50YXRpb24gdGhhdAo+PiBuZWVkIHRvIGJlIGJldHRlciB1bmRlcnN0b29kIGZpcnN0 Lgo+Pgo+PiBXaGVuIGVuYWJsZWQsIHRoZSBmb2xpbyBvcmRlciBpcyBkZXRlcm1pbmVkIGFzIHN1 Y2g6IEZvciBhIHZtYSwgcHJvY2Vzcwo+PiBvciBzeXN0ZW0gdGhhdCBoYXMgZXhwbGljaXRseSBk aXNhYmxlZCBUSFAsIHdlIGNvbnRpbnVlIHRvIGFsbG9jYXRlCj4+IG9yZGVyLTAuIFRIUCBpcyBt b3N0IGxpa2VseSBkaXNhYmxlZCB0byBhdm9pZCBhbnkgcG9zc2libGUgaW50ZXJuYWwKPj4gZnJh Z21lbnRhdGlvbiBzbyB3ZSBob25vdXIgdGhhdCByZXF1ZXN0Lgo+Pgo+PiBPdGhlcndpc2UsIHRo ZSByZXR1cm4gdmFsdWUgb2YgYXJjaF93YW50c19wdGVfb3JkZXIoKSBpcyB1c2VkLiBGb3Igdm1h cwo+PiB0aGF0IGhhdmUgbm90IGV4cGxpY2l0bHkgb3B0ZWQtaW4gdG8gdXNlIHRyYW5zcGFyZW50 IGh1Z2VwYWdlcyAoZS5nLgo+PiB3aGVyZSB0aHA9bWFkdmlzZSBhbmQgdGhlIHZtYSBkb2VzIG5v dCBoYXZlIE1BRFZfSFVHRVBBR0UpLCB0aGVuCj4+IGFyY2hfd2FudHNfcHRlX29yZGVyKCkgaXMg bGltaXRlZCBieSB0aGUgbmV3IGNtZGxpbmUgcGFyYW1ldGVyLAo+PiBgZmxleHRocF91bmhpbnRl ZF9tYXhgLiBUaGlzIGFsbG93cyBmb3IgYSBwZXJmb3JtYW5jZSBib29zdCB3aXRob3V0Cj4+IHJl cXVpcmluZyBhbnkgZXhwbGljaXQgb3B0LWluIGZyb20gdGhlIHdvcmtsb2FkIHdoaWxlIGFsbG93 aW5nIHRoZQo+PiBzeXNhZG1pbiB0byB0dW5lIGJldHdlZW4gcGVyZm9ybWFuY2UgYW5kIGludGVy bmFsIGZyYWdtZW50YXRpb24uCj4+Cj4+IGFyY2hfd2FudHNfcHRlX29yZGVyKCkgY2FuIGJlIG92 ZXJyaWRkZW4gYnkgdGhlIGFyY2hpdGVjdHVyZSBpZiBkZXNpcmVkLgo+PiBTb21lIGFyY2hpdGVj dHVyZXMgKGUuZy4gYXJtNjQpIGNhbiBjb2Fsc2VjZSBUTEIgZW50cmllcyBpZiBhIGNvbnRpZ3Vv dXMKPj4gc2V0IG9mIHB0ZXMgbWFwIHBoeXNpY2FsbHkgY29udGlnaW91cywgbmF0dXJhbGx5IGFs aWduZWQgbWVtb3J5LCBzbyB0aGlzCj4+IG1lY2hhbmlzbSBhbGxvd3MgdGhlIGFyY2hpdGVjdHVy ZSB0byBvcHRpbWl6ZSBhcyByZXF1aXJlZC4KPj4KPj4gSWYgdGhlIHByZWZlcnJlZCBvcmRlciBj YW4ndCBiZSB1c2VkIChlLmcuIGJlY2F1c2UgdGhlIGZvbGlvIHdvdWxkCj4+IGJyZWFjaCB0aGUg Ym91bmRzIG9mIHRoZSB2bWEsIG9yIGJlY2F1c2UgcHRlcyBpbiB0aGUgcmVnaW9uIGFyZSBhbHJl YWR5Cj4+IG1hcHBlZCkgdGhlbiB3ZSBmYWxsIGJhY2sgdG8gYSBzdWl0YWJsZSBsb3dlciBvcmRl cjsgZmlyc3QKPj4gUEFHRV9BTExPQ19DT1NUTFlfT1JERVIsIHRoZW4gb3JkZXItMC4KPj4KPj4g U2lnbmVkLW9mZi1ieTogUnlhbiBSb2JlcnRzIDxyeWFuLnJvYmVydHNAYXJtLmNvbT4KPj4gLS0t Cj4+ICAuLi4vYWRtaW4tZ3VpZGUva2VybmVsLXBhcmFtZXRlcnMudHh0ICAgICAgICAgfCAgMTAg Kwo+PiAgbW0vS2NvbmZpZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEw ICsKPj4gIG1tL21lbW9yeS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE4 NyArKysrKysrKysrKysrKysrLS0KPj4gIDMgZmlsZXMgY2hhbmdlZCwgMTkwIGluc2VydGlvbnMo KyksIDE3IGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hZG1p bi1ndWlkZS9rZXJuZWwtcGFyYW1ldGVycy50eHQgYi9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRl L2tlcm5lbC1wYXJhbWV0ZXJzLnR4dAo+PiBpbmRleCBhMTQ1Nzk5NWZkNDEuLjQwNWQ2MjRlMjE5 MSAxMDA2NDQKPj4gLS0tIGEvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1l dGVycy50eHQKPj4gKysrIGIvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZXJuZWwtcGFyYW1l dGVycy50eHQKPj4gQEAgLTE0OTcsNiArMTQ5NywxNiBAQAo+PiAgICAgICAgICAgICAgICAgICAg ICAgICBTZWUgRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9zeXNjdGwvbmV0LnJzdCBmb3IKPj4g ICAgICAgICAgICAgICAgICAgICAgICAgZmJfdHVubmVsc19vbmx5X2Zvcl9pbml0X25zCj4+Cj4+ ICsgICAgICAgZmxleHRocF91bmhpbnRlZF9tYXg9Cj4+ICsgICAgICAgICAgICAgICAgICAgICAg IFtLTkxdIFJlcXVpcmVzIENPTkZJR19GTEVYSUJMRV9USFAgZW5hYmxlZC4gVGhlIG1heGltdW0K Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgZm9saW8gc2l6ZSB0aGF0IHdpbGwgYmUgYWxsb2Nh dGVkIGZvciBhbiBhbm9ueW1vdXMgdm1hCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHRoYXQg aGFzIG5laXRoZXIgZXhwbGljaXRseSBvcHRlZCBpbiBub3Igb3V0IG9mIHVzaW5nCj4+ICsgICAg ICAgICAgICAgICAgICAgICAgIHRyYW5zcGFyZW50IGh1Z2VwYWdlcy4gVGhlIHNpemUgbXVzdCBi ZSBhIHBvd2VyLW9mLTIgaW4KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgdGhlIHJhbmdlIFtQ QUdFX1NJWkUsIFBNRF9TSVpFKS4gQSBsYXJnZXIgc2l6ZSBpbXByb3Zlcwo+PiArICAgICAgICAg ICAgICAgICAgICAgICBwZXJmb3JtYW5jZSBieSByZWR1Y2luZyBwYWdlIGZhdWx0cywgd2hpbGUg YSBzbWFsbGVyCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHNpemUgcmVkdWNlcyBpbnRlcm5h bCBmcmFnbWVudGF0aW9uLiBEZWZhdWx0OiBtYXgoNjRLLAo+PiArICAgICAgICAgICAgICAgICAg ICAgICBQQUdFX1NJWkUpLiBGb3JtYXQ6IHNpemVbS01HXS4KPj4gKwo+IAo+IExldCdzIHNwbGl0 IHRoaXMgcGFyYW1ldGVyIGludG8gYSBzZXBhcmF0ZSBwYXRjaC4KCkhhIC0gSSBoYWQgaXQgYXMg YSBzZXBhcmF0ZSBwYXRjaCBvcmlnaW5hbGx5LCBidXQgdGhvdWdodCB5b3UnZCBhc2sgZm9yIGl0 IHRvIGJlCmEgc2luZ2xlIHBhdGNoIHNvIHNxdWFzaGVkIGl0IDstKS4gSSBjYW4gc2VwYXJhdGUg aXQgYWdhaW4sIG5vIHByb2JsZW0uCgo+IAo+IEFuZCBJJ20gZ29pbmcgdG8gYXNrIG1hbnkgcXVl c3Rpb25zIGFib3V0IGl0IChJIGNhbiBsaXZlIHdpdGggYSBzeXNjdGwKPiBwYXJhbWV0ZXIgYnV0 IHRoaXMgYm9vdCBwYXJhbWV0ZXIgaXMgdW5hY2NlcHRhYmxlIHRvIG1lKS4KClBsZWFzZSBkby4g SG9wZWZ1bGx5IHRoZSB0aHJlYWQgd2l0aCBEYXZpZEggYWdhaW5zdCB2MiBnaXZlcyB0aGUgcmF0 aW9uYWxlLiBDYXJlCnRvIGVsYWJvcmF0ZSBvbiB3aHkgaXRzIHVuYWNjZXB0YWJsZT8KCj4gCj4+ IGRpZmYgLS1naXQgYS9tbS9tZW1vcnkuYyBiL21tL21lbW9yeS5jCj4+IGluZGV4IDAxZjM5ZTgx NDRlZi4uZThiYzcyOWVmYjlkIDEwMDY0NAo+PiAtLS0gYS9tbS9tZW1vcnkuYwo+PiArKysgYi9t bS9tZW1vcnkuYwo+PiBAQCAtNDA1MCw2ICs0MDUwLDE0OCBAQCB2bV9mYXVsdF90IGRvX3N3YXBf cGFnZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZikKPj4gICAgICAgICByZXR1cm4gcmV0Owo+PiAgfQo+ Pgo+PiArc3RhdGljIGJvb2wgdm1mX3B0ZV9yYW5nZV9jaGFuZ2VkKHN0cnVjdCB2bV9mYXVsdCAq dm1mLCBpbnQgbnJfcGFnZXMpCj4+ICt7Cj4+ICsgICAgICAgaW50IGk7Cj4+ICsKPj4gKyAgICAg ICBpZiAobnJfcGFnZXMgPT0gMSkKPj4gKyAgICAgICAgICAgICAgIHJldHVybiB2bWZfcHRlX2No YW5nZWQodm1mKTsKPj4gKwo+PiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBucl9wYWdlczsgaSsr KSB7Cj4+ICsgICAgICAgICAgICAgICBpZiAoIXB0ZV9ub25lKHB0ZXBfZ2V0X2xvY2tsZXNzKHZt Zi0+cHRlICsgaSkpKQo+PiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKPj4g KyAgICAgICB9Cj4+ICsKPj4gKyAgICAgICByZXR1cm4gZmFsc2U7Cj4+ICt9Cj4+ICsKPj4gKyNp ZmRlZiBDT05GSUdfRkxFWElCTEVfVEhQCj4+ICtzdGF0aWMgaW50IGZsZXh0aHBfdW5oaW50ZWRf bWF4X29yZGVyID0KPj4gKyAgICAgICAgICAgICAgIGlsb2cyKFNaXzY0SyA+IFBBR0VfU0laRSA/ IFNaXzY0SyA6IFBBR0VfU0laRSkgLSBQQUdFX1NISUZUOwo+PiArCj4+ICtzdGF0aWMgaW50IF9f aW5pdCBwYXJzZV9mbGV4dGhwX3VuaGludGVkX21heChjaGFyICpzKQo+PiArewo+PiArICAgICAg IHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplID0gbWVtcGFyc2UocywgTlVMTCk7Cj4+ICsKPj4gKyAg ICAgICBpZiAoIWlzX3Bvd2VyX29mXzIoc2l6ZSkgfHwgc2l6ZSA8IFBBR0VfU0laRSB8fCBzaXpl ID4gUE1EX1NJWkUpIHsKPj4gKyAgICAgICAgICAgICAgIHByX3dhcm4oImZsZXh0aHA6IGZsZXh0 aHBfdW5oaW50ZWRfbWF4PSVzIG11c3QgYmUgcG93ZXItb2YtMiBiZXR3ZWVuIFBBR0VfU0laRSAo JWx1KSBhbmQgUE1EX1NJWkUgKCVsdSksIGlnbm9yaW5nXG4iLAo+PiArICAgICAgICAgICAgICAg ICAgICAgICBzLCBQQUdFX1NJWkUsIFBNRF9TSVpFKTsKPj4gKyAgICAgICAgICAgICAgIHJldHVy biAxOwo+PiArICAgICAgIH0KPj4gKwo+PiArICAgICAgIGZsZXh0aHBfdW5oaW50ZWRfbWF4X29y ZGVyID0gaWxvZzIoc2l6ZSkgLSBQQUdFX1NISUZUOwo+PiArCj4+ICsgICAgICAgLyogVEhQIG1h Y2hpbmVyeSByZXF1aXJlcyBhdCBsZWFzdCAzIHN0cnVjdCBwYWdlcyBmb3IgbWV0YSBkYXRhLiAq Lwo+PiArICAgICAgIGlmIChmbGV4dGhwX3VuaGludGVkX21heF9vcmRlciA9PSAxKQo+PiArICAg ICAgICAgICAgICAgZmxleHRocF91bmhpbnRlZF9tYXhfb3JkZXItLTsKPj4gKwo+PiArICAgICAg IHJldHVybiAxOwo+PiArfQo+PiArCj4+ICtfX3NldHVwKCJmbGV4dGhwX3VuaGludGVkX21heD0i LCBwYXJzZV9mbGV4dGhwX3VuaGludGVkX21heCk7Cj4+ICsKPj4gK3N0YXRpYyBpbnQgYW5vbl9m b2xpb19vcmRlcihzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkKPj4gK3sKPj4gKyAgICAgICBp bnQgb3JkZXI7Cj4+ICsKPj4gKyAgICAgICAvKgo+PiArICAgICAgICAqIElmIFRIUCBpcyBleHBs aWNpdGx5IGRpc2FibGVkIGZvciBlaXRoZXIgdGhlIHZtYSwgdGhlIHByb2Nlc3Mgb3IgdGhlCj4+ ICsgICAgICAgICogc3lzdGVtLCB0aGVuIHRoaXMgaXMgdmVyeSBsaWtlbHkgaW50ZW5kZWQgdG8g bGltaXQgaW50ZXJuYWwKPj4gKyAgICAgICAgKiBmcmFnbWVudGF0aW9uOyBpbiB0aGlzIGNhc2Us IGRvbid0IGF0dGVtcHQgdG8gYWxsb2NhdGUgYSBsYXJnZQo+PiArICAgICAgICAqIGFub255bW91 cyBmb2xpby4KPj4gKyAgICAgICAgKgo+PiArICAgICAgICAqIEVsc2UsIGlmIHRoZSB2bWEgaXMg ZWxpZ2libGUgZm9yIHRocCwgYWxsb2NhdGUgYSBsYXJnZSBmb2xpbyBvZiB0aGUKPj4gKyAgICAg ICAgKiBzaXplIHByZWZlcnJlZCBieSB0aGUgYXJjaC4gT3IgaWYgdGhlIGFyY2ggcmVxdWVzdGVk IGEgdmVyeSBzbWFsbAo+PiArICAgICAgICAqIHNpemUgb3IgZGlkbid0IHJlcXVlc3QgYSBzaXpl LCB0aGVuIHVzZSBQQUdFX0FMTE9DX0NPU1RMWV9PUkRFUiwKPj4gKyAgICAgICAgKiB3aGljaCBz dGlsbCBtZWV0cyB0aGUgYXJjaCdzIHJlcXVpcmVtZW50cyBidXQgbWVhbnMgd2Ugc3RpbGwgdGFr ZQo+PiArICAgICAgICAqIGFkdmFudGFnZSBvZiBTVyBvcHRpbWl6YXRpb25zIChlLmcuIGZld2Vy IHBhZ2UgZmF1bHRzKS4KPj4gKyAgICAgICAgKgo+PiArICAgICAgICAqIEZpbmFsbHkgaWYgdGhw IGlzIGVuYWJsZWQgYnV0IHRoZSB2bWEgaXNuJ3QgZWxpZ2libGUsIHRha2UgdGhlCj4+ICsgICAg ICAgICogYXJjaC1wcmVmZXJyZWQgc2l6ZSBhbmQgbGltaXQgaXQgdG8gdGhlIGZsZXh0aHBfdW5o aW50ZWRfbWF4IGNtZGxpbmUKPj4gKyAgICAgICAgKiBwYXJhbWV0ZXIuIFRoaXMgYWxsb3dzIGEg c3lzYWRtaW4gdG8gdHVuZSBwZXJmb3JtYW5jZSB2cyBpbnRlcm5hbAo+PiArICAgICAgICAqIGZy YWdtZW50YXRpb24uCj4+ICsgICAgICAgICovCj4+ICsKPj4gKyAgICAgICBpZiAoKHZtYS0+dm1f ZmxhZ3MgJiBWTV9OT0hVR0VQQUdFKSB8fAo+PiArICAgICAgICAgICB0ZXN0X2JpdChNTUZfRElT QUJMRV9USFAsICZ2bWEtPnZtX21tLT5mbGFncykgfHwKPj4gKyAgICAgICAgICAgIWh1Z2VwYWdl X2ZsYWdzX2VuYWJsZWQoKSkKPj4gKyAgICAgICAgICAgICAgIG9yZGVyID0gMDsKPj4gKyAgICAg ICBlbHNlIHsKPj4gKyAgICAgICAgICAgICAgIG9yZGVyID0gbWF4KGFyY2hfd2FudHNfcHRlX29y ZGVyKCksIFBBR0VfQUxMT0NfQ09TVExZX09SREVSKTsKPj4gKwo+PiArICAgICAgICAgICAgICAg aWYgKCFodWdlcGFnZV92bWFfY2hlY2sodm1hLCB2bWEtPnZtX2ZsYWdzLCBmYWxzZSwgdHJ1ZSwg dHJ1ZSkpCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyID0gbWluKG9yZGVyLCBmbGV4 dGhwX3VuaGludGVkX21heF9vcmRlcik7Cj4+ICsgICAgICAgfQo+PiArCj4+ICsgICAgICAgcmV0 dXJuIG9yZGVyOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IGFsbG9jX2Fub25fZm9saW8oc3Ry dWN0IHZtX2ZhdWx0ICp2bWYsIHN0cnVjdCBmb2xpbyAqKmZvbGlvKQo+PiArewo+PiArICAgICAg IGludCBpOwo+PiArICAgICAgIGdmcF90IGdmcDsKPj4gKyAgICAgICBwdGVfdCAqcHRlOwo+PiAr ICAgICAgIHVuc2lnbmVkIGxvbmcgYWRkcjsKPj4gKyAgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1 Y3QgKnZtYSA9IHZtZi0+dm1hOwo+PiArICAgICAgIGludCBwcmVmZXIgPSBhbm9uX2ZvbGlvX29y ZGVyKHZtYSk7Cj4+ICsgICAgICAgaW50IG9yZGVyc1tdID0gewo+PiArICAgICAgICAgICAgICAg cHJlZmVyLAo+PiArICAgICAgICAgICAgICAgcHJlZmVyID4gUEFHRV9BTExPQ19DT1NUTFlfT1JE RVIgPyBQQUdFX0FMTE9DX0NPU1RMWV9PUkRFUiA6IDAsCj4+ICsgICAgICAgICAgICAgICAwLAo+ PiArICAgICAgIH07Cj4+ICsKPj4gKyAgICAgICAqZm9saW8gPSBOVUxMOwo+PiArCj4+ICsgICAg ICAgaWYgKHZtZl9vcmlnX3B0ZV91ZmZkX3dwKHZtZikpCj4+ICsgICAgICAgICAgICAgICBnb3Rv IGZhbGxiYWNrOwo+PiArCj4+ICsgICAgICAgZm9yIChpID0gMDsgb3JkZXJzW2ldOyBpKyspIHsK Pj4gKyAgICAgICAgICAgICAgIGFkZHIgPSBBTElHTl9ET1dOKHZtZi0+YWRkcmVzcywgUEFHRV9T SVpFIDw8IG9yZGVyc1tpXSk7Cj4+ICsgICAgICAgICAgICAgICBpZiAoYWRkciA+PSB2bWEtPnZt X3N0YXJ0ICYmCj4+ICsgICAgICAgICAgICAgICAgICAgYWRkciArIChQQUdFX1NJWkUgPDwgb3Jk ZXJzW2ldKSA8PSB2bWEtPnZtX2VuZCkKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7 Cj4+ICsgICAgICAgfQo+PiArCj4+ICsgICAgICAgaWYgKCFvcmRlcnNbaV0pCj4+ICsgICAgICAg ICAgICAgICBnb3RvIGZhbGxiYWNrOwo+PiArCj4+ICsgICAgICAgcHRlID0gcHRlX29mZnNldF9t YXAodm1mLT5wbWQsIHZtZi0+YWRkcmVzcyAmIFBNRF9NQVNLKTsKPj4gKyAgICAgICBpZiAoIXB0 ZSkKPj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUFHQUlOOwo+IAo+IEl0IHdvdWxkIGJlIGEg YnVnIGlmIHRoaXMgaGFwcGVucy4gU28gcHJvYmFibHkgLUVJTlZBTD8KCk5vdCBzdXJlIHdoYXQg eW91IG1lYW4/IEh1Z2ggRGlja2lucycgc2VyaWVzIHRoYXQgd2VudCBpbnRvIHY2LjUtcmMxIG1h a2VzIGl0CnBvc3NpYmxlIGZvciBwdGVfb2Zmc2V0X21hcCgpIHRvIGZhaWwgKGlmIEkgdW5kZXJz dG9vZCBjb3JyZWN0bHkpIGFuZCB3ZSBoYXZlIHRvCmhhbmRsZSB0aGlzLiBUaGUgaW50ZW50IGlz IHRoYXQgd2Ugd2lsbCByZXR1cm4gZnJvbSB0aGUgZmF1bHQgd2l0aG91dCBtYWtpbmcgYW55CmNo YW5nZSwgdGhlbiB3ZSB3aWxsIHJlZmF1bHQgYW5kIHRyeSBhZ2Fpbi4KCj4gCj4+ICsKPj4gKyAg ICAgICBmb3IgKDsgb3JkZXJzW2ldOyBpKyspIHsKPj4gKyAgICAgICAgICAgICAgIGFkZHIgPSBB TElHTl9ET1dOKHZtZi0+YWRkcmVzcywgUEFHRV9TSVpFIDw8IG9yZGVyc1tpXSk7Cj4+ICsgICAg ICAgICAgICAgICB2bWYtPnB0ZSA9IHB0ZSArIHB0ZV9pbmRleChhZGRyKTsKPj4gKyAgICAgICAg ICAgICAgIGlmICghdm1mX3B0ZV9yYW5nZV9jaGFuZ2VkKHZtZiwgMSA8PCBvcmRlcnNbaV0pKQo+ PiArICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPj4gKyAgICAgICB9Cj4+ICsKPj4gKyAg ICAgICB2bWYtPnB0ZSA9IE5VTEw7Cj4+ICsgICAgICAgcHRlX3VubWFwKHB0ZSk7Cj4+ICsKPj4g KyAgICAgICBnZnAgPSB2bWFfdGhwX2dmcF9tYXNrKHZtYSk7Cj4+ICsKPj4gKyAgICAgICBmb3Ig KDsgb3JkZXJzW2ldOyBpKyspIHsKPj4gKyAgICAgICAgICAgICAgIGFkZHIgPSBBTElHTl9ET1dO KHZtZi0+YWRkcmVzcywgUEFHRV9TSVpFIDw8IG9yZGVyc1tpXSk7Cj4+ICsgICAgICAgICAgICAg ICAqZm9saW8gPSB2bWFfYWxsb2NfZm9saW8oZ2ZwLCBvcmRlcnNbaV0sIHZtYSwgYWRkciwgdHJ1 ZSk7Cj4+ICsgICAgICAgICAgICAgICBpZiAoKmZvbGlvKSB7Cj4+ICsgICAgICAgICAgICAgICAg ICAgICAgIGNsZWFyX2h1Z2VfcGFnZSgmKCpmb2xpbyktPnBhZ2UsIGFkZHIsIDEgPDwgb3JkZXJz W2ldKTsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4+ICsgICAgICAgICAg ICAgICB9Cj4+ICsgICAgICAgfQo+PiArCj4+ICtmYWxsYmFjazoKPj4gKyAgICAgICAqZm9saW8g PSB2bWFfYWxsb2NfemVyb2VkX21vdmFibGVfZm9saW8odm1hLCB2bWYtPmFkZHJlc3MpOwo+PiAr ICAgICAgIHJldHVybiAqZm9saW8gPyAwIDogLUVOT01FTTsKPj4gK30KPj4gKyNlbHNlCj4+ICtz dGF0aWMgaW5saW5lIGludCBhbGxvY19hbm9uX2ZvbGlvKHN0cnVjdCB2bV9mYXVsdCAqdm1mLCBz dHJ1Y3QgZm9saW8gKipmb2xpbykKPiAKPiBEcm9wICJpbmxpbmUiIChpdCBkb2Vzbid0IGRvIGFu eXRoaW5nIGluIC5jKS4KClRoZXJlIGFyZSAzOCBpbnN0YW5jZXMgb2YgaW5saW5lIGluIG1lbW9y eS5jIGFsb25lLCBzbyBsb29rcyBsaWtlIGEgd2VsbCB1c2VkCmNvbnZlbnRpb24sIGV2ZW4gaWYg dGhlIGNvbXBpbGVyIG1heSBjaG9vc2UgdG8gaWdub3JlLiBQZXJoYXBzIHlvdSBjYW4gZWR1Y2F0 ZQptZTsgd2hhdCdzIHRoZSBiZW5lZml0IG9mIGRyb3BwaW5nIGl0PwoKPiAKPiBUaGUgcmVzdCBs b29rcyBnb29kIHRvIG1lLgoKR3JlYXQgLSBqdXN0IGluY2FzZSBpdCB3YXNuJ3Qgb2J2aW91cywg SSBkZWNpZGVkIG5vdCB0byBvdmVyd3JpdGUgdm1mLT5hZGRyZXNzCndpdGggdGhlIGFsaWduZWQg dmVyc2lvbiwgYXMgeW91IHN1Z2dlc3RlZCwgZm9yIDIgcmVhc29uczsgMSkgYWRkcmVzcyBpcyBj b25zdAppbiB0aGUgc3RydWN0LCBzbyB3b3VsZCBoYXZlIGhhZCB0byBjaGFuZ2UgdGhhdC4gMikg dGhlcmUgaXMgYSB1ZmZkIHBhdGggdGhhdApjYW4gYmUgdGFrZW4gYWZ0ZXIgdGhlIHZtZi0+YWRk cmVzcyBmaXh1cCB3b3VsZCBoYXZlIG9jY3VyZWQgYW5kIHRoZSBwYXRoCmNvbnN1bWVzIHRoYXQg bWVtYmVyLCBzbyBpdCB3b3VsZCBoYXZlIGhhZCB0byBiZSB1bi1maXhlZC11cCBtYWtpbmcgaXQg bW9yZQptZXNzeSB0aGFuIHRoZSB3YXkgSSBvcHRlZCBmb3IuCgpUaGFua3MgZm9yIHRoZSBxdWlj ayByZXZpZXcgYXMgYWx3YXlzIQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJu ZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK