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 4FDD9C25B67 for ; Thu, 26 Oct 2023 12:30:58 +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-Type: Content-Transfer-Encoding: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=GrZScPT9Kyf/w+RGGFosrEPWWxTq9FPLTy6F+DJs9H8=; b=kiZHFRhwFFB5/w T+PycIoM3JHayRBy5sFwQDXtgEMgPt588RFm+TCk0H0H6UBkx+JbKUIos5Pd19vIFob2cByfSplRV 6cydrdfdyc+d+gc3qUSnJlmzS++47CMC2Ex3ME5dh3OsN7b08zcT/B43V4HrZAf2Ay6S/Kj8+75GC e/cJPHjpWOvvK9w7foXHHFYTu7g3rd2rWSbHlU+MHEjme9JCHqq18ROHjOQ6z4DwNMaG8FPzh/hnH tDBAszOraISSYWz87dP6OqFK1wBuIq4+R/zJLPVC53Ux0skQpYWAshU7BE45mG4uP/q7UUd6LVXEP Al2w0yro7LbsWx4O0NRA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qvzVJ-00ERTr-1H; Thu, 26 Oct 2023 12:30:25 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qvzVF-00ERSl-0Z for linux-arm-kernel@lists.infradead.org; Thu, 26 Oct 2023 12:30:23 +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 3C0D52F4; Thu, 26 Oct 2023 05:30:55 -0700 (PDT) Received: from [10.1.196.40] (e121345-lin.cambridge.arm.com [10.1.196.40]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 5C4EA3F738; Thu, 26 Oct 2023 05:30:12 -0700 (PDT) Message-ID: <1457b22f-8327-4bd0-8d18-1cc7ec31a3e4@arm.com> Date: Thu, 26 Oct 2023 13:30:00 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] arm64: mm: drop tlb flush operation when clearing the access bit To: Anshuman Khandual , Barry Song <21cnbao@gmail.com> Cc: Baolin Wang , catalin.marinas@arm.com, will@kernel.org, akpm@linux-foundation.org, v-songbaohua@oppo.com, yuzhao@google.com, linux-mm@kvack.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org References: <2f55f62b-cae2-4eee-8572-1b662a170880@arm.com> Content-Language: en-GB From: Robin Murphy In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231026_053021_334230_6CEE401A X-CRM114-Status: GOOD ( 28.39 ) 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gMjYvMTAvMjAyMyA3OjAxIGFtLCBBbnNodW1hbiBLaGFuZHVhbCB3cm90ZToKPiAKPiAKPiBP biAxMC8yNi8yMyAxMToyNCwgQmFycnkgU29uZyB3cm90ZToKPj4gT24gVGh1LCBPY3QgMjYsIDIw MjMgYXQgMTI6NTXigK9QTSBBbnNodW1hbiBLaGFuZHVhbAo+PiA8YW5zaHVtYW4ua2hhbmR1YWxA YXJtLmNvbT4gd3JvdGU6Cj4+Pgo+Pj4KPj4+Cj4+PiBPbiAxMC8yNC8yMyAxODoyNiwgQmFvbGlu IFdhbmcgd3JvdGU6Cj4+Pj4gTm93IHB0ZXBfY2xlYXJfZmx1c2hfeW91bmcoKSBpcyBvbmx5IGNh bGxlZCBieSBmb2xpb19yZWZlcmVuY2VkKCkgdG8KPj4+PiBjaGVjayBpZiB0aGUgZm9saW8gd2Fz IHJlZmVyZW5jZWQsIGFuZCBub3cgaXQgd2lsbCBjYWxsIGEgdGxiIGZsdXNoIG9uCj4+Pj4gQVJN NjQgYXJjaGl0ZWN0dXJlLiBIb3dldmVyIHRoZSB0bGIgZmx1c2ggY2FuIGJlIGV4cGVuc2l2ZSBv biBBUk02NAo+Pj4+IHNlcnZlcnMsIGVzcGVjaWFsbHkgZm9yIHRoZSBzeXN0ZW1zIHdpdGggYSBs YXJnZSBDUFUgbnVtYmVycy4KPj4+Cj4+PiBUTEIgZmx1c2ggd291bGQgYmUgZXhwZW5zaXZlIG9u ICphbnkqIHBsYXRmb3JtIHdpdGggbGFyZ2UgQ1BVIG51bWJlcnMgPwo+Pj4KPj4+Pgo+Pj4+IFNp bWlsYXIgdG8gdGhlIHg4NiBhcmNoaXRlY3R1cmUsIGJlbG93IGNvbW1lbnRzIGFsc28gYXBwbHkg ZXF1YWxseSB0bwo+Pj4+IEFSTTY0IGFyY2hpdGVjdHVyZS4gU28gd2UgY2FuIGRyb3AgdGhlIHRs YiBmbHVzaCBvcGVyYXRpb24gaW4KPj4+PiBwdGVwX2NsZWFyX2ZsdXNoX3lvdW5nKCkgb24gQVJN NjQgYXJjaGl0ZWN0dXJlIHRvIGltcHJvdmUgdGhlIHBlcmZvcm1hbmNlLgo+Pj4+ICIKPj4+PiAv KiBDbGVhcmluZyB0aGUgYWNjZXNzZWQgYml0IHdpdGhvdXQgYSBUTEIgZmx1c2gKPj4+PiAgICog ZG9lc24ndCBjYXVzZSBkYXRhIGNvcnJ1cHRpb24uIFsgSXQgY291bGQgY2F1c2UgaW5jb3JyZWN0 Cj4+Pj4gICAqIHBhZ2UgYWdpbmcgYW5kIHRoZSAobWlzdGFrZW4pIHJlY2xhaW0gb2YgaG90IHBh Z2VzLCBidXQgdGhlCj4+Pj4gICAqIGNoYW5jZSBvZiB0aGF0IHNob3VsZCBiZSByZWxhdGl2ZWx5 IGxvdy4gXQo+Pj4+ICAgKgo+Pj4+ICAgKiBTbyBhcyBhIHBlcmZvcm1hbmNlIG9wdGltaXphdGlv biBkb24ndCBmbHVzaCB0aGUgVExCIHdoZW4KPj4+PiAgICogY2xlYXJpbmcgdGhlIGFjY2Vzc2Vk IGJpdCwgaXQgd2lsbCBldmVudHVhbGx5IGJlIGZsdXNoZWQgYnkKPj4+PiAgICogYSBjb250ZXh0 IHN3aXRjaCBvciBhIFZNIG9wZXJhdGlvbiBhbnl3YXkuIFsgSW4gdGhlIHJhcmUKPj4+PiAgICog ZXZlbnQgb2YgaXQgbm90IGdldHRpbmcgZmx1c2hlZCBmb3IgYSBsb25nIHRpbWUgdGhlIGRlbGF5 Cj4+Pj4gICAqIHNob3VsZG4ndCByZWFsbHkgbWF0dGVyIGJlY2F1c2UgdGhlcmUncyBubyByZWFs IG1lbW9yeQo+Pj4+ICAgKiBwcmVzc3VyZSBmb3Igc3dhcG91dCB0byByZWFjdCB0by4gXQo+Pj4+ ICAgKi8KPj4+Cj4+PiBJZiBhbHdheXMgdHJ1ZSwgdGhpcyBzb3VuZHMgZ2VuZXJpYyBlbm91Z2gg Zm9yIGFsbCBwbGF0Zm9ybXMsIHdoeSBvbmx5Cj4+PiB4ODYgYW5kIGFybTY0ID8KPj4+Cj4+Pj4g Igo+Pj4+IFJ1bm5pbmcgdGhlIHRocHNjYWxlIHRvIHNob3cgc29tZSBvYnZpb3VzIGltcHJvdmVt ZW50cyBmb3IgY29tcGFjdGlvbgo+Pj4+IGxhdGVuY3kgd2l0aCB0aGlzIHBhdGNoOgo+Pj4+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgICAgICAgICAgICAgICAgICAgcGF0Y2hl ZAo+Pj4+IEFtZWFuICAgICBmYXVsdC1ib3RoLTEgICAgICAxMDkzLjE5ICggICAwLjAwJSkgICAg IDEwODQuNTcgKiAgIDAuNzklKgo+Pj4+IEFtZWFuICAgICBmYXVsdC1ib3RoLTMgICAgICAyNTY2 LjIyICggICAwLjAwJSkgICAgIDIyMjguNDUgKiAgMTMuMTYlKgo+Pj4+IEFtZWFuICAgICBmYXVs dC1ib3RoLTUgICAgICAzNTkxLjIyICggICAwLjAwJSkgICAgIDMxNDYuNzMgKiAgMTIuMzglKgo+ Pj4+IEFtZWFuICAgICBmYXVsdC1ib3RoLTcgICAgICA0MTU3LjI2ICggICAwLjAwJSkgICAgIDQx MTMuNjcgKiAgIDEuMDUlKgo+Pj4+IEFtZWFuICAgICBmYXVsdC1ib3RoLTEyICAgICA2MTg0Ljc5 ICggICAwLjAwJSkgICAgIDUyMTguNzAgKiAgMTUuNjIlKgo+Pj4+IEFtZWFuICAgICBmYXVsdC1i b3RoLTE4ICAgICA5MTAzLjcwICggICAwLjAwJSkgICAgIDc3MzkuNzEgKiAgMTQuOTglKgo+Pj4+ IEFtZWFuICAgICBmYXVsdC1ib3RoLTI0ICAgIDEyMzQxLjczICggICAwLjAwJSkgICAgMTA2ODQu MjMgKiAgMTMuNDMlKgo+Pj4+IEFtZWFuICAgICBmYXVsdC1ib3RoLTMwICAgIDE1NTE5LjAwICgg ICAwLjAwJSkgICAgMTM2OTUuMTQgKiAgMTEuNzUlKgo+Pj4+IEFtZWFuICAgICBmYXVsdC1ib3Ro LTMyICAgIDE2MTg5LjE1ICggICAwLjAwJSkgICAgMTQzNjUuNzMgKiAgMTEuMjYlKgo+Pj4+ICAg ICAgICAgICAgICAgICAgICAgICAgIGJhc2UgICAgICAgcGF0Y2hlZAo+Pj4+IER1cmF0aW9uIFVz ZXIgICAgICAgICAxNjcuNzggICAgICAxNjEuMDMKPj4+PiBEdXJhdGlvbiBTeXN0ZW0gICAgICAx ODM2LjY2ICAgICAxNjczLjAxCj4+Pj4gRHVyYXRpb24gRWxhcHNlZCAgICAgMjA3NC41OCAgICAg MjA1OS43NQo+Pj4KPj4+IENvdWxkIHlvdSBwbGVhc2UgcG9pbnQgdG8gdGhlIHRlc3QgcmVwbyB5 b3UgYXJlIHJ1bm5pbmcgPwo+Pj4KPj4+Pgo+Pj4+IEJhcnJ5IFNvbmcgc3VibWl0dGVkIGEgc2lt aWxhciBwYXRjaCBbMV0gYmVmb3JlLCB0aGF0IHJlcGxhY2VzIHRoZQo+Pj4+IHB0ZXBfY2xlYXJf Zmx1c2hfeW91bmdfbm90aWZ5KCkgd2l0aCBwdGVwX2NsZWFyX3lvdW5nX25vdGlmeSgpIGluCj4+ Pj4gZm9saW9fcmVmZXJlbmNlZF9vbmUoKS4gSG93ZXZlciwgSSdtIG5vdCBzdXJlIGlmIHJlbW92 aW5nIHRoZSB0bGIgZmx1c2gKPj4+PiBvcGVyYXRpb24gaXMgYXBwbGljYWJsZSB0byBldmVyeSBh cmNoaXRlY3R1cmUgaW4ga2VybmVsLCBzbyBkcm9wcGluZwo+Pj4+IHRoZSB0bGIgZmx1c2ggZm9y IEFSTTY0IHNlZW1zIGEgc2Vuc2libGUgY2hhbmdlLgo+Pj4KPj4+IFRoZSByZWFzb25pbmcgcHJv dmlkZWQgaGVyZSBzb3VuZHMgZ2VuZXJpYyB3aGVuIHRydWUsIGhlbmNlIHRoZXJlIHNlZW1zCj4+ PiB0byBiZSBubyBqdXN0aWZpY2F0aW9uIHRvIGtlZXAgaXQgbGltaXRlZCBqdXN0IGZvciBhcm02 NCBhbmQgeDg2LiBBbHNvCj4+PiB3aGF0IGFib3V0IHBtZHBfY2xlYXJfZmx1c2hfeW91bmdfbm90 aWZ5KCkgd2hlbiBUSFAgaXMgZW5hYmxlZC4gU2hvdWxkCj4+PiB0aGF0IGFsc28gbm90IGRvIGEg VExCIGZsdXNoIGFmdGVyIGNsZWFyaW5nIGFjY2VzcyBiaXQgPyBBbHRob3VnaCBhcm02NAo+Pj4g ZG9lcyBub3QgZW5hYmxlIF9fSEFWRV9BUkNIX1BNRFBfQ0xFQVJfWU9VTkdfRkxVU0gsIHJhdGhl ciBkZXBlbmRzIG9uCj4+PiB0aGUgZ2VuZXJpYyBwbWRwX2NsZWFyX2ZsdXNoX3lvdW5nKCkgd2hp Y2ggYWxzbyBkb2VzIGEgVExCIGZsdXNoIHZpYQo+Pj4gZmx1c2hfcG1kX3RsYl9yYW5nZSgpIHdo aWxlIGNsZWFyaW5nIHRoZSBhY2Nlc3MgYml0Lgo+Pj4KPj4+Pgo+Pj4+IE5vdGU6IEkgYW0gb2th eSBmb3IgYm90aCBhcHByb2FjaCwgaWYgc29tZW9uZSBjYW4gaGVscCB0byBlbnN1cmUgdGhhdAo+ Pj4+IGFsbCBhcmNoaXRlY3R1cmVzIGRvIG5vdCBuZWVkIHRoZSB0bGIgZmx1c2ggd2hlbiBjbGVh cmluZyB0aGUgYWNjZXNzZWQKPj4+PiBiaXQsIHRoZW4gSSBhbHNvIHRoaW5rIEJhcnJ5J3MgcGF0 Y2ggaXMgYmV0dGVyIChob3BlIEJhcnJ5IGNhbiByZXNlbmQKPj4+PiBoaXMgcGF0Y2gpLgo+Pj4K Pj4+IFRoaXMgcGFyYWdyYXBoIGJlbG9uZ3MgYWZ0ZXIgdGhlICctLS0tJyBiZWxvdyBhbmQgbm90 IHBhcnQgb2YgdGhlIGNvbW1pdAo+Pj4gbWVzc2FnZS4KPj4+Cj4+Pj4KPj4+PiBbMV0gaHR0cHM6 Ly9sb3JlLmtlcm5lbC5vcmcvbGttbC8yMDIyMDYxNzA3MDU1NS4zNDQzNjgtMS0yMWNuYmFvQGdt YWlsLmNvbS8KPj4+PiBTaWduZWQtb2ZmLWJ5OiBCYW9saW4gV2FuZyA8YmFvbGluLndhbmdAbGlu dXguYWxpYmFiYS5jb20+Cj4+Pj4gLS0tCj4+Pj4gICBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL3Bn dGFibGUuaCB8IDMxICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KPj4+PiAgIDEgZmls ZSBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKPj4+Pgo+Pj4+IGRp ZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaCBiL2FyY2gvYXJtNjQv aW5jbHVkZS9hc20vcGd0YWJsZS5oCj4+Pj4gaW5kZXggMGJkMThkZTlmZDk3Li4yOTc5ZDc5NmJh OWQgMTAwNjQ0Cj4+Pj4gLS0tIGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgKPj4+ PiArKysgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaAo+Pj4+IEBAIC05MDUsMjEg KzkwNSwyMiBAQCBzdGF0aWMgaW5saW5lIGludCBwdGVwX3Rlc3RfYW5kX2NsZWFyX3lvdW5nKHN0 cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAo+Pj4+ICAgc3RhdGljIGlubGluZSBpbnQgcHRlcF9j bGVhcl9mbHVzaF95b3VuZyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKPj4+PiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBhZGRyZXNzLCBw dGVfdCAqcHRlcCkKPj4+PiAgIHsKPj4+PiAtICAgICBpbnQgeW91bmcgPSBwdGVwX3Rlc3RfYW5k X2NsZWFyX3lvdW5nKHZtYSwgYWRkcmVzcywgcHRlcCk7Cj4+Pj4gLQo+Pj4+IC0gICAgIGlmICh5 b3VuZykgewo+Pj4+IC0gICAgICAgICAgICAgLyoKPj4+PiAtICAgICAgICAgICAgICAqIFdlIGNh biBlbGlkZSB0aGUgdHJhaWxpbmcgRFNCIGhlcmUgc2luY2UgdGhlIHdvcnN0IHRoYXQgY2FuCj4+ Pj4gLSAgICAgICAgICAgICAgKiBoYXBwZW4gaXMgdGhhdCBhIENQVSBjb250aW51ZXMgdG8gdXNl IHRoZSB5b3VuZyBlbnRyeSBpbiBpdHMKPj4+PiAtICAgICAgICAgICAgICAqIFRMQiBhbmQgd2Ug bWlzdGFrZW5seSByZWNsYWltIHRoZSBhc3NvY2lhdGVkIHBhZ2UuIFRoZQo+Pj4+IC0gICAgICAg ICAgICAgICogd2luZG93IGZvciBzdWNoIGFuIGV2ZW50IGlzIGJvdW5kZWQgYnkgdGhlIG5leHQK Pj4+PiAtICAgICAgICAgICAgICAqIGNvbnRleHQtc3dpdGNoLCB3aGljaCBwcm92aWRlcyBhIERT QiB0byBjb21wbGV0ZSB0aGUgVExCCj4+Pj4gLSAgICAgICAgICAgICAgKiBpbnZhbGlkYXRpb24u Cj4+Pj4gLSAgICAgICAgICAgICAgKi8KPj4+PiAtICAgICAgICAgICAgIGZsdXNoX3RsYl9wYWdl X25vc3luYyh2bWEsIGFkZHJlc3MpOwo+Pj4+IC0gICAgIH0KPj4+PiAtCj4+Pj4gLSAgICAgcmV0 dXJuIHlvdW5nOwo+Pj4+ICsgICAgIC8qCj4+Pj4gKyAgICAgICogVGhpcyBjb21tZW50IGlzIGJv cnJvd2VkIGZyb20geDg2LCBidXQgYXBwbGllcyBlcXVhbGx5IHRvIEFSTTY0Ogo+Pj4+ICsgICAg ICAqCj4+Pj4gKyAgICAgICogQ2xlYXJpbmcgdGhlIGFjY2Vzc2VkIGJpdCB3aXRob3V0IGEgVExC IGZsdXNoIGRvZXNuJ3QgY2F1c2UKPj4+PiArICAgICAgKiBkYXRhIGNvcnJ1cHRpb24uIFsgSXQg Y291bGQgY2F1c2UgaW5jb3JyZWN0IHBhZ2UgYWdpbmcgYW5kCj4+Pj4gKyAgICAgICogdGhlICht aXN0YWtlbikgcmVjbGFpbSBvZiBob3QgcGFnZXMsIGJ1dCB0aGUgY2hhbmNlIG9mIHRoYXQKPj4+ PiArICAgICAgKiBzaG91bGQgYmUgcmVsYXRpdmVseSBsb3cuIF0KPj4+PiArICAgICAgKgo+Pj4+ ICsgICAgICAqIFNvIGFzIGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIGRvbid0IGZsdXNoIHRo ZSBUTEIgd2hlbgo+Pj4+ICsgICAgICAqIGNsZWFyaW5nIHRoZSBhY2Nlc3NlZCBiaXQsIGl0IHdp bGwgZXZlbnR1YWxseSBiZSBmbHVzaGVkIGJ5Cj4+Pj4gKyAgICAgICogYSBjb250ZXh0IHN3aXRj aCBvciBhIFZNIG9wZXJhdGlvbiBhbnl3YXkuIFsgSW4gdGhlIHJhcmUKPj4+PiArICAgICAgKiBl dmVudCBvZiBpdCBub3QgZ2V0dGluZyBmbHVzaGVkIGZvciBhIGxvbmcgdGltZSB0aGUgZGVsYXkK Pj4+PiArICAgICAgKiBzaG91bGRuJ3QgcmVhbGx5IG1hdHRlciBiZWNhdXNlIHRoZXJlJ3Mgbm8g cmVhbCBtZW1vcnkKPj4+PiArICAgICAgKiBwcmVzc3VyZSBmb3Igc3dhcG91dCB0byByZWFjdCB0 by4gXQo+Pj4+ICsgICAgICAqLwo+Pj4+ICsgICAgIHJldHVybiBwdGVwX3Rlc3RfYW5kX2NsZWFy X3lvdW5nKHZtYSwgYWRkcmVzcywgcHRlcCk7Cj4+Pj4gICB9Cj4+Pj4KPj4+PiAgICNpZmRlZiBD T05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UKPj4+Cj4+PiBUaGVyZSBhcmUgdGhyZWUgZGlzdGlu Y3QgY29uY2VybnMgaGVyZQo+Pj4KPj4+IDEpIFdoYXQgYXJlIHRoZSBjaGFuY2VzIG9mIHRoaXMg bWlzbGVhZGluZyBleGlzdGluZyBob3QgcGFnZSByZWNsYWltIHByb2Nlc3MKPj4+IDIpIEhvdyBz ZWNvbmRhcnkgTU1VIHN1Y2ggYXMgU01NVSBhZGFwdCB0byBjaGFuZ2UgaW4gbWFwcGluZ3Mgd2l0 aG91dCBhIGZsdXNoCj4+PiAzKSBDb3VsZCB0aGlzIGJyZWFrIHRoZSBhcmNoaXRlY3R1cmUgcnVs ZSByZXF1aXJpbmcgYSBUTEIgZmx1c2ggYWZ0ZXIgYWNjZXNzCj4+PiAgICAgYml0IGNsZWFyIG9u IGEgcGFnZSB0YWJsZSBlbnRyeQo+Pgo+PiBJbiB0ZXJtcyBvZiBhbGwgb2YgYWJvdmUgY29uY2Vy bnMsICB0aG91Z2ggMiBpcyBkaWZmZXJlbnQsIHdoaWNoIGlzIGFuCj4+IGlzc3VlIGJldHdlZW4K Pj4gY3B1IGFuZCBub24tY3B1LAo+PiBpIGZlZWwga2VybmVsIGhhcyBhY3R1YWxseSBkcm9wcGVk IHRsYiBmbHVzaCBhdCBsZWFzdCBmb3IgbWdscnUsIHRoZXJlCj4+IGlzIG5vIGZsdXNoIGluCj4+ IGxydV9nZW5fbG9va19hcm91bmQoKSwKPj4KPj4gc3RhdGljIGJvb2wgZm9saW9fcmVmZXJlbmNl ZF9vbmUoc3RydWN0IGZvbGlvICpmb2xpbywKPj4gICAgICAgICAgICAgICAgICBzdHJ1Y3Qgdm1f YXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLCB2b2lkICphcmcpCj4+IHsK Pj4gICAgICAgICAgLi4uCj4+Cj4+ICAgICAgICAgICAgICAgICAgaWYgKHB2bXcucHRlKSB7Cj4+ ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobHJ1X2dlbl9lbmFibGVkKCkgJiYKPj4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwdGVfeW91bmcocHRlcF9nZXQocHZtdy5wdGUpKSkg ewo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBscnVfZ2VuX2xvb2tfYXJvdW5k KCZwdm13KTsKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlZCsr Owo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgfQo+Pgo+PiAgICAgICAgICAgICAgICAgICAg ICAgICAgaWYgKHB0ZXBfY2xlYXJfZmx1c2hfeW91bmdfbm90aWZ5KHZtYSwgYWRkcmVzcywKPj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB2bXcucHRl KSkKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlZCsrOwo+PiAg ICAgICAgICAgICAgICAgIH0KPj4KPj4gICAgICAgICAgcmV0dXJuIHRydWU7Cj4+IH0KPj4KPj4g YW5kIHNvIGlzIGluIHdhbGtfcHRlX3JhbmdlKCkgb2Ygdm1zY2FuLiAgbGludXggaGFzIGJlZW4g c3Vydml2aW5nIHdpdGgKPj4gYWxsIGFib3ZlIGNvbmNlcm5zIGZvciBhIHdoaWxlLCBiZWxpZXZp bmcgaXQgb3Igbm90IDotKQo+IAo+IEFsdGhvdWdoIHRoZSBmaXJzdCB0d28gY29uY2VybnMgY291 bGQgYmUgd29ya2VkIHVwb24gaW4gdGhlIFNXLCBrZXJuZWwgc3Vydml2aW5nCj4gYWZ0ZXIgYnJl YWtpbmcgYXJjaCBydWxlcyBleHBsaWNpdGx5IGlzIG5vdCBhIGNvcnJlY3Qgc3RhdGUgdG8gYmUg aW4gSU1ITy4KCkFGQUlDUyBpdCdzIG5vdCBicmVha2luZyBhbnkgcnVsZXMgYXMgc3VjaC4gSW5k ZWVkIHRoZSBhcmNoaXRlY3R1cmUgCnJlcXVpcmVzIGEgVExCSSB0byBlbnN1cmUgdGhhdCB0aGUg YWNjZXNzIGZsYWcgdXBkYXRlIGlzIG9ic2VydmVkIGJ5IHRoZSAKQ1BVLCBidXQgd2hhdCdzIGJl aW5nIHByb3Bvc2VkIGhlcmUgaXMgcmVsYXhpbmcgTGludXgncyBvd24gZXhwZWN0YXRpb25zIAp0 byBzYXkgYWN0dWFsbHkgd2UgZG9uJ3QgbWluZCBpZiB0aGUgQ1BVICpkb2Vzbid0KiBvYnNlcnZl IHRoZSB1cGRhdGUgCnN0cmFpZ2h0IGF3YXkuCgpUaGFua3MsClJvYmluLgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWls aW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0 cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=