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 9EFE8C04A6A for ; Tue, 8 Aug 2023 17:59:12 +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:Cc:To:Subject:Message-ID:Date:From: In-Reply-To:References:MIME-Version:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=neEGDNp8eWUrC8vA+FN4mCgg7IxBhIgJw8yJN+wKpWg=; b=C38A/WlYEQdyLT RPibtDBQF5tmJxMoY94mfbY4GwkU+8IjdmniRNSnBnGXYqOXWQEuVn/GDtB0K4QNrCs2+3xv6p2cy tpRyfvzD8auBoRbCH0ahcg622dRC/uHBoqpp6ulWLGqHzbmkXeH9tNbrlrRCbRasjaO8lvDjxEdqS 3oCR/FQTnaFV+8r1OEzhH/A1RQrh6e36G9hnrCyppM4nYlX+55wwdnupMxBOeOwOy6OPo7Fag2pvA ZLBjBPu3FuU49j+yjoBujEYGRUwBkrrgN2X9mJVtuhrYb8HUU/kxXQPcKuRRZL7wkt8OuSF/N5F11 6lFDaqESB6xhgTkm3KYw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qTQyh-003AWB-1N; Tue, 08 Aug 2023 17:58:43 +0000 Received: from mail-qt1-x831.google.com ([2607:f8b0:4864:20::831]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qTQyd-003AUh-0o for linux-arm-kernel@lists.infradead.org; Tue, 08 Aug 2023 17:58:41 +0000 Received: by mail-qt1-x831.google.com with SMTP id d75a77b69052e-40c72caec5cso32421cf.0 for ; Tue, 08 Aug 2023 10:58:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1691517516; x=1692122316; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=sULfjATLZ+TD4aptIsGhX/+syaJzg9nTxWAKu34TQSA=; b=s3fjHZLkMRb2MSBpxiCL0mTobiiZ9vOCNcgn7q7/fH4L1e2pTktJata1vQgyawxmM9 cmSW8vb9ri3zDmSaCvnfwjTGqpsCLKRedHnV+7CvdrPuTQVognjN38WCDLtfPWBND4FQ JPd+U9cWI2zWk/2ijRDSDnii0rZ6j2c2niJk9ZioBntaFBMo5Mi6uUZzpkVcF9KcWGtv iSl7EqATYlUX7/kc6dBUbD+eEQhsJT2a/oHVp7JFmjasH8mCE797xzE4D/kEZy7d0ISm V4eZ/5dlsdfqvXu8jnzqMZI4ko7spZn7PRGkVuYypbW2bS02Z6DbXbli4Gpf1/UiLwum Nfgw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691517516; x=1692122316; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=sULfjATLZ+TD4aptIsGhX/+syaJzg9nTxWAKu34TQSA=; b=NFFuhpLUohxQNkJlaioxPscH8f2b2iXj7MoCE4wPxRtejN4dhCeXXBj0NLHtxFUOtj EVzkWntN81Q0mWhen1E6PBBOkTBHuBdK/tFlaWr1SMLb7sFM8wHfTZwgGVASQTPKxxET VJPwpQjLAOiRmW1M4rxdrynFFu0dX0MJTCrYxZ4y0eDoP9zNpKudTyBH4kmPpS6+QuWg J0YI9uibZ1cS9Gc+8B3zULjOR6WWkCNlRAhJB2QTNR89EvrXLlE24HMD6/xm3RdEFuMw 6/ma+wgX7X2FMgNTZhkYy+mjtxPR9BF04K1cD2ZiSSUguQckfY/eUpx2Pz7f9q+hMVk1 fbAA== X-Gm-Message-State: AOJu0Yx3VJqbnRLkzSCJwoSfIHZ1hcq2RLMwDmQ4pUOdeURffRuGaI5B 6+hjwHxv2e+iXZmeoAI0xGl+c46BGNVobiFi8o6m3g== X-Google-Smtp-Source: AGHT+IGHAyIE5IxDDX8kJC1lq76Y7IY5o/icthSsZbBKvg6kg+djkgYnPea86MrYvv28PYLZxdZqNahXr/dt/2jPvxQ= X-Received: by 2002:ac8:5804:0:b0:3f8:5b2:aeed with SMTP id g4-20020ac85804000000b003f805b2aeedmr21266qtg.21.1691517515979; Tue, 08 Aug 2023 10:58:35 -0700 (PDT) MIME-Version: 1.0 References: <20230726095146.2826796-1-ryan.roberts@arm.com> <20230726095146.2826796-3-ryan.roberts@arm.com> <433fb8de-f5c0-d150-ac7b-5d73e9958e02@arm.com> <20469f02-d62d-d925-3536-d6a1f1099fda@arm.com> In-Reply-To: <20469f02-d62d-d925-3536-d6a1f1099fda@arm.com> From: Yu Zhao Date: Tue, 8 Aug 2023 11:57:59 -0600 Message-ID: Subject: Re: [PATCH v4 2/5] mm: LARGE_ANON_FOLIO for improved performance To: Ryan Roberts Cc: Andrew Morton , Matthew Wilcox , Yin Fengwei , David Hildenbrand , Catalin Marinas , Will Deacon , Anshuman Khandual , Yang Shi , "Huang, Ying" , Zi Yan , Luis Chamberlain , Itaru Kitayama , linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230808_105839_319672_5B1B244C X-CRM114-Status: GOOD ( 58.37 ) 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 T24gVHVlLCBBdWcgOCwgMjAyMyBhdCAzOjM34oCvQU0gUnlhbiBSb2JlcnRzIDxyeWFuLnJvYmVy dHNAYXJtLmNvbT4gd3JvdGU6Cj4KPiBPbiAwOC8wOC8yMDIzIDAwOjIxLCBZdSBaaGFvIHdyb3Rl Ogo+ID4gT24gTW9uLCBBdWcgNywgMjAyMyBhdCAxOjA34oCvUE0gUnlhbiBSb2JlcnRzIDxyeWFu LnJvYmVydHNAYXJtLmNvbT4gd3JvdGU6Cj4gPj4KPiA+PiBPbiAwNy8wOC8yMDIzIDA2OjI0LCBZ dSBaaGFvIHdyb3RlOgo+ID4+PiBPbiBXZWQsIEp1bCAyNiwgMjAyMyBhdCAzOjUy4oCvQU0gUnlh biBSb2JlcnRzIDxyeWFuLnJvYmVydHNAYXJtLmNvbT4gd3JvdGU6Cj4gPj4+Pgo+ID4+Pj4gSW50 cm9kdWNlIExBUkdFX0FOT05fRk9MSU8gZmVhdHVyZSwgd2hpY2ggYWxsb3dzIGFub255bW91cyBt ZW1vcnkgdG8gYmUKPiA+Pj4+IGFsbG9jYXRlZCBpbiBsYXJnZSBmb2xpb3Mgb2YgYSBkZXRlcm1p bmVkIG9yZGVyLiBBbGwgcGFnZXMgb2YgdGhlIGxhcmdlCj4gPj4+PiBmb2xpbyBhcmUgcHRlLW1h cHBlZCBkdXJpbmcgdGhlIHNhbWUgcGFnZSBmYXVsdCwgc2lnbmlmaWNhbnRseSByZWR1Y2luZwo+ ID4+Pj4gdGhlIG51bWJlciBvZiBwYWdlIGZhdWx0cy4gVGhlIG51bWJlciBvZiBwZXItcGFnZSBv cGVyYXRpb25zIChlLmcuIHJlZgo+ID4+Pj4gY291bnRpbmcsIHJtYXAgbWFuYWdlbWVudCBscnUg bGlzdCBtYW5hZ2VtZW50KSBhcmUgYWxzbyBzaWduaWZpY2FudGx5Cj4gPj4+PiByZWR1Y2VkIHNp bmNlIHRob3NlIG9wcyBub3cgYmVjb21lIHBlci1mb2xpby4KPiA+Pj4+Cj4gPj4+PiBUaGUgbmV3 IGJlaGF2aW91ciBpcyBoaWRkZW4gYmVoaW5kIHRoZSBuZXcgTEFSR0VfQU5PTl9GT0xJTyBLY29u ZmlnLAo+ID4+Pj4gd2hpY2ggZGVmYXVsdHMgdG8gZGlzYWJsZWQgZm9yIG5vdzsgVGhlIGxvbmcg dGVybSBhaW0gaXMgZm9yIHRoaXMgdG8KPiA+Pj4+IGRlZmF1dCB0byBlbmFibGVkLCBidXQgdGhl cmUgYXJlIHNvbWUgcmlza3MgYXJvdW5kIGludGVybmFsCj4gPj4+PiBmcmFnbWVudGF0aW9uIHRo YXQgbmVlZCB0byBiZSBiZXR0ZXIgdW5kZXJzdG9vZCBmaXJzdC4KPiA+Pj4+Cj4gPj4+PiBXaGVu IGVuYWJsZWQsIHRoZSBmb2xpbyBvcmRlciBpcyBkZXRlcm1pbmVkIGFzIHN1Y2g6IEZvciBhIHZt YSwgcHJvY2Vzcwo+ID4+Pj4gb3Igc3lzdGVtIHRoYXQgaGFzIGV4cGxpY2l0bHkgZGlzYWJsZWQg VEhQLCB3ZSBjb250aW51ZSB0byBhbGxvY2F0ZQo+ID4+Pj4gb3JkZXItMC4gVEhQIGlzIG1vc3Qg bGlrZWx5IGRpc2FibGVkIHRvIGF2b2lkIGFueSBwb3NzaWJsZSBpbnRlcm5hbAo+ID4+Pj4gZnJh Z21lbnRhdGlvbiBzbyB3ZSBob25vdXIgdGhhdCByZXF1ZXN0Lgo+ID4+Pj4KPiA+Pj4+IE90aGVy d2lzZSwgdGhlIHJldHVybiB2YWx1ZSBvZiBhcmNoX3dhbnRzX3B0ZV9vcmRlcigpIGlzIHVzZWQu IEZvciB2bWFzCj4gPj4+PiB0aGF0IGhhdmUgbm90IGV4cGxpY2l0bHkgb3B0ZWQtaW4gdG8gdXNl IHRyYW5zcGFyZW50IGh1Z2VwYWdlcyAoZS5nLgo+ID4+Pj4gd2hlcmUgdGhwPW1hZHZpc2UgYW5k IHRoZSB2bWEgZG9lcyBub3QgaGF2ZSBNQURWX0hVR0VQQUdFKSwgdGhlbgo+ID4+Pj4gYXJjaF93 YW50c19wdGVfb3JkZXIoKSBpcyBsaW1pdGVkIHRvIDY0SyAob3IgUEFHRV9TSVpFLCB3aGljaGV2 ZXIgaXMKPiA+Pj4+IGJpZ2dlcikuIFRoaXMgYWxsb3dzIGZvciBhIHBlcmZvcm1hbmNlIGJvb3N0 IHdpdGhvdXQgcmVxdWlyaW5nIGFueQo+ID4+Pj4gZXhwbGljaXQgb3B0LWluIGZyb20gdGhlIHdv cmtsb2FkIHdoaWxlIGxpbWl0dGluZyBpbnRlcm5hbAo+ID4+Pj4gZnJhZ21lbnRhdGlvbi4KPiA+ Pj4+Cj4gPj4+PiBJZiB0aGUgcHJlZmVycmVkIG9yZGVyIGNhbid0IGJlIHVzZWQgKGUuZy4gYmVj YXVzZSB0aGUgZm9saW8gd291bGQKPiA+Pj4+IGJyZWFjaCB0aGUgYm91bmRzIG9mIHRoZSB2bWEs IG9yIGJlY2F1c2UgcHRlcyBpbiB0aGUgcmVnaW9uIGFyZSBhbHJlYWR5Cj4gPj4+PiBtYXBwZWQp IHRoZW4gd2UgZmFsbCBiYWNrIHRvIGEgc3VpdGFibGUgbG93ZXIgb3JkZXI7IGZpcnN0Cj4gPj4+ PiBQQUdFX0FMTE9DX0NPU1RMWV9PUkRFUiwgdGhlbiBvcmRlci0wLgo+ID4+Pj4KPiA+Pj4+IGFy Y2hfd2FudHNfcHRlX29yZGVyKCkgY2FuIGJlIG92ZXJyaWRkZW4gYnkgdGhlIGFyY2hpdGVjdHVy ZSBpZiBkZXNpcmVkLgo+ID4+Pj4gU29tZSBhcmNoaXRlY3R1cmVzIChlLmcuIGFybTY0KSBjYW4g Y29hbHNlY2UgVExCIGVudHJpZXMgaWYgYSBjb250aWd1b3VzCj4gPj4+PiBzZXQgb2YgcHRlcyBt YXAgcGh5c2ljYWxseSBjb250aWdpb3VzLCBuYXR1cmFsbHkgYWxpZ25lZCBtZW1vcnksIHNvIHRo aXMKPiA+Pj4+IG1lY2hhbmlzbSBhbGxvd3MgdGhlIGFyY2hpdGVjdHVyZSB0byBvcHRpbWl6ZSBh cyByZXF1aXJlZC4KPiA+Pj4+Cj4gPj4+PiBIZXJlIHdlIGFkZCB0aGUgZGVmYXVsdCBpbXBsZW1l bnRhdGlvbiBvZiBhcmNoX3dhbnRzX3B0ZV9vcmRlcigpLCB1c2VkCj4gPj4+PiB3aGVuIHRoZSBh cmNoaXRlY3R1cmUgZG9lcyBub3QgZGVmaW5lIGl0LCB3aGljaCByZXR1cm5zIC0xLCBpbXBseWlu Zwo+ID4+Pj4gdGhhdCB0aGUgSFcgaGFzIG5vIHByZWZlcmVuY2UuIEluIHRoaXMgY2FzZSwgbW0g d2lsbCBjaG9vc2UgaXQncyBvd24KPiA+Pj4+IGRlZmF1bHQgb3JkZXIuCj4gPj4+Pgo+ID4+Pj4g U2lnbmVkLW9mZi1ieTogUnlhbiBSb2JlcnRzIDxyeWFuLnJvYmVydHNAYXJtLmNvbT4KPiA+Pj4+ IC0tLQo+ID4+Pj4gIGluY2x1ZGUvbGludXgvcGd0YWJsZS5oIHwgIDEzICsrKysKPiA+Pj4+ICBt bS9LY29uZmlnICAgICAgICAgICAgICB8ICAxMCArKysKPiA+Pj4+ICBtbS9tZW1vcnkuYyAgICAg ICAgICAgICB8IDE2NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tCj4g Pj4+PiAgMyBmaWxlcyBjaGFuZ2VkLCAxNzIgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0p Cj4gPj4+Pgo+ID4+Pj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGd0YWJsZS5oIGIvaW5j bHVkZS9saW51eC9wZ3RhYmxlLmgKPiA+Pj4+IGluZGV4IDUwNjNiNDgyZTM0Zi4uMmExZDgzNzc1 ODM3IDEwMDY0NAo+ID4+Pj4gLS0tIGEvaW5jbHVkZS9saW51eC9wZ3RhYmxlLmgKPiA+Pj4+ICsr KyBiL2luY2x1ZGUvbGludXgvcGd0YWJsZS5oCj4gPj4+PiBAQCAtMzEzLDYgKzMxMywxOSBAQCBz dGF0aWMgaW5saW5lIGJvb2wgYXJjaF9oYXNfaHdfcHRlX3lvdW5nKHZvaWQpCj4gPj4+PiAgfQo+ ID4+Pj4gICNlbmRpZgo+ID4+Pj4KPiA+Pj4+ICsjaWZuZGVmIGFyY2hfd2FudHNfcHRlX29yZGVy Cj4gPj4+PiArLyoKPiA+Pj4+ICsgKiBSZXR1cm5zIHByZWZlcnJlZCBmb2xpbyBvcmRlciBmb3Ig cHRlLW1hcHBlZCBtZW1vcnkuIE11c3QgYmUgaW4gcmFuZ2UgWzAsCj4gPj4+PiArICogUE1EX1NI SUZULVBBR0VfU0hJRlQpIGFuZCBtdXN0IG5vdCBiZSBvcmRlci0xIHNpbmNlIFRIUCByZXF1aXJl cyBsYXJnZSBmb2xpb3MKPiA+Pj4+ICsgKiB0byBiZSBhdCBsZWFzdCBvcmRlci0yLiBOZWdhdGl2 ZSB2YWx1ZSBpbXBsaWVzIHRoYXQgdGhlIEhXIGhhcyBubyBwcmVmZXJlbmNlCj4gPj4+PiArICog YW5kIG1tIHdpbGwgY2hvb3NlIGl0J3Mgb3duIGRlZmF1bHQgb3JkZXIuCj4gPj4+PiArICovCj4g Pj4+PiArc3RhdGljIGlubGluZSBpbnQgYXJjaF93YW50c19wdGVfb3JkZXIodm9pZCkKPiA+Pj4+ ICt7Cj4gPj4+PiArICAgICAgIHJldHVybiAtMTsKPiA+Pj4+ICt9Cj4gPj4+PiArI2VuZGlmCj4g Pj4+PiArCj4gPj4+PiAgI2lmbmRlZiBfX0hBVkVfQVJDSF9QVEVQX0dFVF9BTkRfQ0xFQVIKPiA+ Pj4+ICBzdGF0aWMgaW5saW5lIHB0ZV90IHB0ZXBfZ2V0X2FuZF9jbGVhcihzdHJ1Y3QgbW1fc3Ry dWN0ICptbSwKPiA+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu c2lnbmVkIGxvbmcgYWRkcmVzcywKPiA+Pj4+IGRpZmYgLS1naXQgYS9tbS9LY29uZmlnIGIvbW0v S2NvbmZpZwo+ID4+Pj4gaW5kZXggMDkxMzA0MzRlMzBkLi5mYTYxZWExNjA0NDcgMTAwNjQ0Cj4g Pj4+PiAtLS0gYS9tbS9LY29uZmlnCj4gPj4+PiArKysgYi9tbS9LY29uZmlnCj4gPj4+PiBAQCAt MTIzOCw0ICsxMjM4LDE0IEBAIGNvbmZpZyBMT0NLX01NX0FORF9GSU5EX1ZNQQo+ID4+Pj4KPiA+ Pj4+ICBzb3VyY2UgIm1tL2RhbW9uL0tjb25maWciCj4gPj4+Pgo+ID4+Pj4gK2NvbmZpZyBMQVJH RV9BTk9OX0ZPTElPCj4gPj4+PiArICAgICAgIGJvb2wgIkFsbG9jYXRlIGxhcmdlIGZvbGlvcyBm b3IgYW5vbnltb3VzIG1lbW9yeSIKPiA+Pj4+ICsgICAgICAgZGVwZW5kcyBvbiBUUkFOU1BBUkVO VF9IVUdFUEFHRQo+ID4+Pj4gKyAgICAgICBkZWZhdWx0IG4KPiA+Pj4+ICsgICAgICAgaGVscAo+ ID4+Pj4gKyAgICAgICAgIFVzZSBsYXJnZSAoYmlnZ2VyIHRoYW4gb3JkZXItMCkgZm9saW9zIHRv IGJhY2sgYW5vbnltb3VzIG1lbW9yeSB3aGVyZQo+ID4+Pj4gKyAgICAgICAgIHBvc3NpYmxlLCBl dmVuIGZvciBwdGUtbWFwcGVkIG1lbW9yeS4gVGhpcyByZWR1Y2VzIHRoZSBudW1iZXIgb2YgcGFn ZQo+ID4+Pj4gKyAgICAgICAgIGZhdWx0cywgYXMgd2VsbCBhcyBvdGhlciBwZXItcGFnZSBvdmVy aGVhZHMgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZSBmb3IKPiA+Pj4+ICsgICAgICAgICBtYW55IHdv cmtsb2Fkcy4KPiA+Pj4+ICsKPiA+Pj4+ICBlbmRtZW51Cj4gPj4+PiBkaWZmIC0tZ2l0IGEvbW0v bWVtb3J5LmMgYi9tbS9tZW1vcnkuYwo+ID4+Pj4gaW5kZXggMDFmMzllODE0NGVmLi42NGMzZjI0 MmM0OWEgMTAwNjQ0Cj4gPj4+PiAtLS0gYS9tbS9tZW1vcnkuYwo+ID4+Pj4gKysrIGIvbW0vbWVt b3J5LmMKPiA+Pj4+IEBAIC00MDUwLDYgKzQwNTAsMTI3IEBAIHZtX2ZhdWx0X3QgZG9fc3dhcF9w YWdlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKQo+ID4+Pj4gICAgICAgICByZXR1cm4gcmV0Owo+ID4+ Pj4gIH0KPiA+Pj4+Cj4gPj4+PiArc3RhdGljIGJvb2wgdm1mX3B0ZV9yYW5nZV9jaGFuZ2VkKHN0 cnVjdCB2bV9mYXVsdCAqdm1mLCBpbnQgbnJfcGFnZXMpCj4gPj4+PiArewo+ID4+Pj4gKyAgICAg ICBpbnQgaTsKPiA+Pj4+ICsKPiA+Pj4+ICsgICAgICAgaWYgKG5yX3BhZ2VzID09IDEpCj4gPj4+ PiArICAgICAgICAgICAgICAgcmV0dXJuIHZtZl9wdGVfY2hhbmdlZCh2bWYpOwo+ID4+Pj4gKwo+ ID4+Pj4gKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnJfcGFnZXM7IGkrKykgewo+ID4+Pj4gKyAg ICAgICAgICAgICAgIGlmICghcHRlX25vbmUocHRlcF9nZXRfbG9ja2xlc3Modm1mLT5wdGUgKyBp KSkpCj4gPj4+PiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKPiA+Pj4+ICsg ICAgICAgfQo+ID4+Pj4gKwo+ID4+Pj4gKyAgICAgICByZXR1cm4gZmFsc2U7Cj4gPj4+PiArfQo+ ID4+Pj4gKwo+ID4+Pj4gKyNpZmRlZiBDT05GSUdfTEFSR0VfQU5PTl9GT0xJTwo+ID4+Pj4gKyNk ZWZpbmUgQU5PTl9GT0xJT19NQVhfT1JERVJfVU5ISU5URUQgXAo+ID4+Pj4gKyAgICAgICAgICAg ICAgIChpbG9nMihtYXhfdCh1bnNpZ25lZCBsb25nLCBTWl82NEssIFBBR0VfU0laRSkpIC0gUEFH RV9TSElGVCkKPiA+Pj4+ICsKPiA+Pj4+ICtzdGF0aWMgaW50IGFub25fZm9saW9fb3JkZXIoc3Ry dWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCj4gPj4+PiArewo+ID4+Pj4gKyAgICAgICBpbnQgb3Jk ZXI7Cj4gPj4+PiArCj4gPj4+PiArICAgICAgIC8qCj4gPj4+PiArICAgICAgICAqIElmIFRIUCBp cyBleHBsaWNpdGx5IGRpc2FibGVkIGZvciBlaXRoZXIgdGhlIHZtYSwgdGhlIHByb2Nlc3Mgb3Ig dGhlCj4gPj4+PiArICAgICAgICAqIHN5c3RlbSwgdGhlbiB0aGlzIGlzIHZlcnkgbGlrZWx5IGlu dGVuZGVkIHRvIGxpbWl0IGludGVybmFsCj4gPj4+PiArICAgICAgICAqIGZyYWdtZW50YXRpb247 IGluIHRoaXMgY2FzZSwgZG9uJ3QgYXR0ZW1wdCB0byBhbGxvY2F0ZSBhIGxhcmdlCj4gPj4+PiAr ICAgICAgICAqIGFub255bW91cyBmb2xpby4KPiA+Pj4+ICsgICAgICAgICoKPiA+Pj4+ICsgICAg ICAgICogRWxzZSwgaWYgdGhlIHZtYSBpcyBlbGlnaWJsZSBmb3IgdGhwLCBhbGxvY2F0ZSBhIGxh cmdlIGZvbGlvIG9mIHRoZQo+ID4+Pj4gKyAgICAgICAgKiBzaXplIHByZWZlcnJlZCBieSB0aGUg YXJjaC4gT3IgaWYgdGhlIGFyY2ggcmVxdWVzdGVkIGEgdmVyeSBzbWFsbAo+ID4+Pj4gKyAgICAg ICAgKiBzaXplIG9yIGRpZG4ndCByZXF1ZXN0IGEgc2l6ZSwgdGhlbiB1c2UgUEFHRV9BTExPQ19D T1NUTFlfT1JERVIsCj4gPj4+PiArICAgICAgICAqIHdoaWNoIHN0aWxsIG1lZXRzIHRoZSBhcmNo J3MgcmVxdWlyZW1lbnRzIGJ1dCBtZWFucyB3ZSBzdGlsbCB0YWtlCj4gPj4+PiArICAgICAgICAq IGFkdmFudGFnZSBvZiBTVyBvcHRpbWl6YXRpb25zIChlLmcuIGZld2VyIHBhZ2UgZmF1bHRzKS4K PiA+Pj4+ICsgICAgICAgICoKPiA+Pj4+ICsgICAgICAgICogRmluYWxseSBpZiB0aHAgaXMgZW5h YmxlZCBidXQgdGhlIHZtYSBpc24ndCBlbGlnaWJsZSwgdGFrZSB0aGUKPiA+Pj4+ICsgICAgICAg ICogYXJjaC1wcmVmZXJyZWQgc2l6ZSBhbmQgbGltaXQgaXQgdG8gQU5PTl9GT0xJT19NQVhfT1JE RVJfVU5ISU5URUQuCj4gPj4+PiArICAgICAgICAqIFRoaXMgZW5zdXJlcyB3b3JrbG9hZHMgdGhh dCBoYXZlIG5vdCBleHBsaWNpdGx5IG9wdGVkLWluIHRha2UgYmVuZWZpdAo+ID4+Pj4gKyAgICAg ICAgKiB3aGlsZSBjYXBwaW5nIHRoZSBwb3RlbnRpYWwgZm9yIGludGVybmFsIGZyYWdtZW50YXRp b24uCj4gPj4+PiArICAgICAgICAqLwo+ID4+Pj4gKwo+ID4+Pj4gKyAgICAgICBpZiAoKHZtYS0+ dm1fZmxhZ3MgJiBWTV9OT0hVR0VQQUdFKSB8fAo+ID4+Pj4gKyAgICAgICAgICAgdGVzdF9iaXQo TU1GX0RJU0FCTEVfVEhQLCAmdm1hLT52bV9tbS0+ZmxhZ3MpIHx8Cj4gPj4+PiArICAgICAgICAg ICAhaHVnZXBhZ2VfZmxhZ3NfZW5hYmxlZCgpKQo+ID4+Pj4gKyAgICAgICAgICAgICAgIG9yZGVy ID0gMDsKPiA+Pj4+ICsgICAgICAgZWxzZSB7Cj4gPj4+PiArICAgICAgICAgICAgICAgb3JkZXIg PSBtYXgoYXJjaF93YW50c19wdGVfb3JkZXIoKSwgUEFHRV9BTExPQ19DT1NUTFlfT1JERVIpOwo+ ID4+Pj4gKwo+ID4+Pj4gKyAgICAgICAgICAgICAgIGlmICghaHVnZXBhZ2Vfdm1hX2NoZWNrKHZt YSwgdm1hLT52bV9mbGFncywgZmFsc2UsIHRydWUsIHRydWUpKQo+ID4+Pj4gKyAgICAgICAgICAg ICAgICAgICAgICAgb3JkZXIgPSBtaW4ob3JkZXIsIEFOT05fRk9MSU9fTUFYX09SREVSX1VOSElO VEVEKTsKPiA+Pj4+ICsgICAgICAgfQo+ID4+Pj4gKwo+ID4+Pj4gKyAgICAgICByZXR1cm4gb3Jk ZXI7Cj4gPj4+PiArfQo+ID4+Pj4gKwo+ID4+Pj4gK3N0YXRpYyBpbnQgYWxsb2NfYW5vbl9mb2xp byhzdHJ1Y3Qgdm1fZmF1bHQgKnZtZiwgc3RydWN0IGZvbGlvICoqZm9saW8pCj4gPj4+PiArewo+ ID4+Pj4gKyAgICAgICBpbnQgaTsKPiA+Pj4+ICsgICAgICAgZ2ZwX3QgZ2ZwOwo+ID4+Pj4gKyAg ICAgICBwdGVfdCAqcHRlOwo+ID4+Pj4gKyAgICAgICB1bnNpZ25lZCBsb25nIGFkZHI7Cj4gPj4+ PiArICAgICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hID0gdm1mLT52bWE7Cj4gPj4+PiAr ICAgICAgIGludCBwcmVmZXIgPSBhbm9uX2ZvbGlvX29yZGVyKHZtYSk7Cj4gPj4+PiArICAgICAg IGludCBvcmRlcnNbXSA9IHsKPiA+Pj4+ICsgICAgICAgICAgICAgICBwcmVmZXIsCj4gPj4+PiAr ICAgICAgICAgICAgICAgcHJlZmVyID4gUEFHRV9BTExPQ19DT1NUTFlfT1JERVIgPyBQQUdFX0FM TE9DX0NPU1RMWV9PUkRFUiA6IDAsCj4gPj4+PiArICAgICAgICAgICAgICAgMCwKPiA+Pj4+ICsg ICAgICAgfTsKPiA+Pj4+ICsKPiA+Pj4+ICsgICAgICAgKmZvbGlvID0gTlVMTDsKPiA+Pj4+ICsK PiA+Pj4+ICsgICAgICAgaWYgKHZtZl9vcmlnX3B0ZV91ZmZkX3dwKHZtZikpCj4gPj4+PiArICAg ICAgICAgICAgICAgZ290byBmYWxsYmFjazsKPiA+Pj4KPiA+Pj4gUGVyIHRoZSBkaXNjdXNzaW9u LCB3ZSBuZWVkIHRvIGNoZWNrIGh1Z2VwYWdlX3ZtYV9jaGVjaygpIGZvcgo+ID4+PiBjb3JyZWN0 bmVzcyBvZiBWTSBMTS4gSSdkIGp1c3QgY2hlY2sgaXQgaGVyZSBhbmQgZmFsbCBiYWNrIHRvIG9y ZGVyIDAKPiA+Pj4gaWYgdGhhdCBoZWxwZXIgcmV0dXJucyBmYWxzZS4KPiA+Pgo+ID4+IEknbSBu b3Qgc3VyZSBpZiBlaXRoZXIgeW91IGhhdmVuJ3Qgbm90aWNlZCB0aGUgbG9naWMgaW4gYW5vbl9m b2xpb19vcmRlcigpCj4gPj4gYWJvdmUsIG9yIHdoZXRoZXIgeW91IGFyZSBtYWtpbmcgdGhpcyBz dWdnZXN0aW9uIGJlY2F1c2UgeW91IGRpc2FncmVlIHdpdGggdGhlCj4gPj4gc3VidGxlIGRpZmZl cmVuY2UgaW4gbXkgbG9naWM/Cj4gPgo+ID4gVGhlIGxhdHRlciwgb3IgbW9yZSBnZW5lcmFsbHkg dGhlIHBvbGljeSB5b3UgZGVzY3JpYmVkIGVhcmxpZXIuCj4gPgo+ID4+IE15IGxvZ2ljIGlzIGRl bGliZXJhdGVseSBub3QgY2FsbGluZyBodWdlcGFnZV92bWFfY2hlY2soKSBiZWNhdXNlIHRoYXQg d291bGQKPiA+PiByZXR1cm4gZmFsc2UgZm9yIHRoZSB0aHA9bWFkdmlzZSxtbWFwPXVuaGludGVk IGNhc2UsIHdoZXJlYXMgdGhlIHBvbGljeSBJJ20KPiA+PiBpbXBsZW1lbnRpbmcgd2FudHMgdG8g YXBwbHkgTEFGIGluIHRoYXQgY2FzZS4KPiA+Pgo+ID4+Cj4gPj4gTXkgaW50ZW5kZWQgcG9saWN5 Ogo+ID4+Cj4gPj4gICAgICAgICAgICAgICAgIHwgbmV2ZXIgICAgIHwgbWFkdmlzZSAgIHwgYWx3 YXlzCj4gPj4gLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLXwtLS0tLS0tLS0tLXwtLS0tLS0t LS0tLQo+ID4+IG5vIGhpbnQgICAgICAgICB8IFMgICAgICAgICB8IExBRj5TICAgICB8IFRIUD5M QUY+Uwo+ID4+IE1BRFZfSFVHRVBBR0UgICB8IFMgICAgICAgICB8IFRIUD5MQUY+UyB8IFRIUD5M QUY+Uwo+ID4+IE1BRFZfTk9IVUdFUEFHRSB8IFMgICAgICAgICB8IFMgICAgICAgICB8IFMKPiA+ Pgo+ID4+Cj4gPj4gV2hhdCB5b3VyIHN1Z2dlc3Rpb24gd291bGQgZ2l2ZToKPiA+Pgo+ID4+ICAg ICAgICAgICAgICAgICB8IG5ldmVyICAgICB8IG1hZHZpc2UgICB8IGFsd2F5cwo+ID4+IC0tLS0t LS0tLS0tLS0tLS18LS0tLS0tLS0tLS18LS0tLS0tLS0tLS18LS0tLS0tLS0tLS0KPiA+PiBubyBo aW50ICAgICAgICAgfCBTICAgICAgICAgfCBTICAgICAgICAgfCBUSFA+TEFGPlMKPiA+PiBNQURW X0hVR0VQQUdFICAgfCBTICAgICAgICAgfCBUSFA+TEFGPlMgfCBUSFA+TEFGPlMKPiA+PiBNQURW X05PSFVHRVBBR0UgfCBTICAgICAgICAgfCBTICAgICAgICAgfCBTCj4gPgo+ID4gVGhpcyBpcyBu b3Qgd2hhdCBJJ20gc3VnZ2VzdGluZy4KPiA+Cj4gPiBMZXQgbWUgcmVpdGVyYXRlIFsxXToKPiA+ ICAgTXkgaW1wcmVzc2lvbiBpcyB3ZSBvbmx5IGFncmVlZCBvbiBvbmUgdGhpbmc6IGF0IHRoZSBj dXJyZW50IHN0YWdlLCB3ZQo+ID4gICBzaG91bGQgcmVzcGVjdCB0aGluZ3Mgd2UgYWJzb2x1dGVs eSBoYXZlIHRvLiBXZSBkaWRuJ3QgYWdyZWUgb24gd2hhdAo+ID4gICAibmV2ZXIiIG1lYW5zICgi bmV2ZXIgMk1CIiBvciAibmV2ZXIgPjRLQiIpLCBhbmQgd2UgZGlkbid0IHRvdWNoIG9uCj4gPiAg IGhvdyAiYWx3YXlzIiBzaG91bGQgYmVoYXZlIGF0IGFsbC4KPiA+Cj4gPiBBbmQgWzJdOgo+ID4g ICAoVGhhbmtzIHRvIERhdmlkLCBub3cgSSBhZ3JlZSB0aGF0KSB3ZSBoYXZlIHRvIGludGVycHJl dCBNQURWX05PSFVHRVBBR0UKPiA+ICAgYXMgbm90aGluZyA+NEtCLgo+ID4KPiA+IE15IGZpbmFs IHRha2UgWzNdOgo+ID4gICBJIGFncmVlIHRoZXNlIHBvaW50cyByZXF1aXJlIG1vcmUgZGlzY3Vz c2lvbi4gQnV0IEkgZG9uJ3QgdGhpbmsgd2UKPiA+ICAgbmVlZCB0byBjb25jbHVkZSB0aGVtIG5v dywgdW5sZXNzIHRoZXkgY2F1c2UgY29ycmVjdG5lc3MgaXNzdWVzIGxpa2UKPiA+ICAgaWdub3Jp bmcgTUFEVl9OT0hVR0VQQUdFIHdvdWxkLgo+Cj4gVGhhbmtzLCBJJ3ZlIHJlYWQgYWxsIG9mIHRo ZXNlIGNvbW1lbnRzIHByZXZpb3VzbHksIGFuZCBhcHByZWNpYXRlIHRoZSB0aW1lIHlvdQo+IGhh dmUgcHV0IGludG8gdGhlIGZlZWRiYWNrLiBJJ20gbm90IHN1cmUgSSBmdWxseSBhZ3JlZSB3aXRo IHlvdXIgcG9pbnQgdGhhdCB3ZQo+IGRvbid0IG5lZWQgdG8gY29uY2x1ZGUgb24gYSBwb2xpY3kg bm93OyBJIGNlcnRhaW5seSBkb24ndCB0aGluayB3ZSBuZWVkIHRoZQo+IHdob2xlIHRoaW5nIGlu IHBsYWNlIG9uIGRheSAxLCBidXQgSSBkbyB0aGluayB0aGF0IHdoYXRldmVyIHdlIHB1dCBpbiBz aG91bGQKPiBzdHJpdmUgdG8gYmUgYSBzdHJpY3Qgc3Vic2V0IG9mIHdoZXJlIHdlIHRoaW5rIHdl IGFyZSBnb2luZy4gRm9yIGV4YW1wbGUsIGlmIHdlCj4gcHV0IHNvbWV0aGluZyBpbiB3aXRoIG9u ZSBwb2xpY3kgKGkuZS4gIm5ldmVyIiBvbmx5IG1lYW5zICJuZXZlciAyTUIiKSB0aGVuIGZpbmQK PiBhIHByb2JsZW0gYW5kIGhhdmUgdG8gY2hhbmdlIHRoYXQgdG8gYmUgbW9yZSBjb25zZXJ2YXRp dmUsIGFyZSB3ZSByaXNraW5nIHBlcmYKPiByZWdyZXNzaW9ucyBmb3IgYW55IExBRiB1c2VycyB0 aGF0IHN0YXJ0ZWQgdXNpbmcgaXQgb24gZGF5IDE/CgpJdCdzIG5vdCB0aGF0IEkgZG9uJ3Qgd2Fu dCB0byAtLSBJIGp1c3QgZG9uJ3QgdGhpbmsgd2UgaGF2ZSBlbm91Z2gKaW5mb3JtYXRpb24gYmVm b3JlIHdlIGhhdmUgYSB3aWRlciBkZXBsb3ltZW50IFsxXSBhbmQgZ2FpbiBhIGJldHRlcgp1bmRl cnN0YW5kaW5nIG9mIHJlYWwtd29ybGQgc2NlbmFyaW9zLgoKT2YgY291cnNlIHdlIGNvdWxkIGZv cmNlIGEgY29uY2x1c2lvbiwgYSBtb3N0bHkgb3Bpbmlvbi1iYXNlZCBvbmUuIEJ1dAppdCB3b3Vs ZCBzdGlsbCBpbnZvbHZlIHByb2xvbmdlZCBkaXNjdXNzaW9ucyBhbmQgZGVsYXkgdGhpcyBzZXJp ZXMsIG9yCnJ1c2ggaW50byBkZWNpc2lvbnMgd2UgbWlnaHQgcmVncmV0IGxhdGVyLgoKWzFdIE91 ciBmbGVldHMgKHNlcnZlcnMsIGxhcHRvcHMgYW5kIHBob25lcykgc3VwcG9ydCBsYXJnZS1zY2Fs ZQpleHBlcmltZW50cyBhbmQgSSBwbGFuIHRvIHJ1biB0aGVtIG9uIGJvdGggY2xpZW50IGFuZCBz ZXJ2ZXIgZGV2aWNlcy4KCj4gPiBCdXQgSSBzaG91bGQgaGF2ZSBiZWVuIGNsZWFyIGFib3V0IHRo ZSBwYXJhbWV0ZXJzIHRvCj4gPiBodWdlcGFnZV92bWFfY2hlY2soKTogZW5mb3JjZV9zeXNmcz1m YWxzZS4KPgo+IFNvIGh1Z2VwYWdlX3ZtYV9jaGVjayguLi4sIHNtYXBzPWZhbHNlLCBpbl9wZj10 cnVlLCBlbmZvcmNlX3N5c2ZzPWZhbHNlKSB3b3VsZAo+IGdpdmUgdXM6Cj4KPiAgICAgICAgICAg ICAgICAgfCBwcmN0bC9mdyAgfCBzeXNmcyAgICAgfCBzeXNmcyAgICAgfCBzeXNmcwo+ICAgICAg ICAgICAgICAgICB8IGRpc2FibGUgICB8IG5ldmVyICAgICB8IG1hZHZpc2UgICB8IGFsd2F5cwo+ IC0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS18LS0tLS0tLS0tLS18LS0tLS0tLS0tLS18LS0t LS0tLS0tLS0KPiBubyBoaW50ICAgICAgICAgfCBTICAgICAgICAgfCBMQUY+UyAgICAgfCBMQUY+ UyAgICAgfCBUSFA+TEFGPlMKPiBNQURWX0hVR0VQQUdFICAgfCBTICAgICAgICAgfCBMQUY+UyAg ICAgfCBUSFA+TEFGPlMgfCBUSFA+TEFGPlMKPiBNQURWX05PSFVHRVBBR0UgfCBTICAgICAgICAg fCBTICAgICAgICAgfCBTICAgICAgICAgfCBTCj4KPiBXaGVyZSAicHJjdGwvZncgZGlzYWJsZSIg dHJ1bXBzIHRoZSBzeXNmcyBzZXR0aW5nLgo+Cj4gSSBjYW4gY2VydGFpbmx5IHNlZSB0aGUgYmVu ZWZpdCBvZiB0aGlzIGFwcHJvYWNoOyBpdCBnaXZlcyB1cyBhIHdheSB0byBlbmFibGUKPiBMQUYg d2hpbGUgZGlzYWJsaW5nIFRIUCAodGhwPW5ldmVyKS4gSXQgZG9lc24ndCBnaXZlIHVzIGEgd2F5 IHRvIGVuYWJsZSBUSFAKPiB3aXRob3V0IGVuYWJsaW5nIExBRiB0aG91Z2ggKHVubGVzcyB5b3Ug cmVjb21waWxlIHdpdGggTEFGIGRpc2FibGVkKS4gRG9lcwo+IGFueW9uZSBzZWUgYSBwcm9ibGVt IHdpdGggdGhpcz8KCkkgZG8gbXlzZWxmIDopCgpUaGlzIGlzIGp1c3Qgc29tZXRoaW5nIHRlbXBv cmFyeSB0byBnZXQgdGhpcyBzZXJpZXMgbGFuZGVkLiBXZSBhcmUKaGlkaW5nIGJlaGluZCBhIEtj b25maWcsIG5vdCBtYWtpbmcgYW55IEFCSSBjaGFuZ2VzLCBhbmQgbm90IGV4cG9zaW5nCnRoaXMg cG9saWN5IHRvIHVzZXJzcGFjZSAoaS5lLiwgbm90IHVwZGF0aW5nIERvY3VtZW50YXRpb24vLCBt YW4KcGFnZXMsIGV0Yy4pCgpNZWFud2hpbGUsIHdlIGNhbiBrZWVwIGRpc2N1c3NpbmcgYWxsIHRo ZSBvcGVuIHF1ZXN0aW9ucyBpbiBwYXJhbGxlbC4KCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4 LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK