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 EC030C4167B for ; Wed, 29 Nov 2023 12:44: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: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=2xSyeADXN0smvoL/D6YWEqpH12hpVzc5av3vZ9U7/o4=; b=ghYiPkFT7K8W5t 0+j6NY0h/t4ReKG7vIXHNvHZIqmY5praDgbN3mr3yDwrbVgY8xiNHbohnSxw4cEb4JEKqf77FR5f+ fkZznD5jH9EIZ6GyeTbs/iEM9aYVdffmLvdeoDzDT9vRToZSVv49IKoZp2KoYjV+9ezDEuUCZNh0q 9HuIYQ6MXrpCj2QQxzH9OF2XLVbLQf+gmAIRf+IqvzYATHxGPtMvROLDu7Dm3A5EWXrJ1eGB4u3E0 dYCYuWRT/qKDmoq2kizBdxeQFcUzdjmHfOiBbypym1048y95eFYK2py3hUCo58jG3W51WDvnTMhlO 7x/o5shPk6HopDjbsiug==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1r8Jur-008NEC-1h; Wed, 29 Nov 2023 12:43:45 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1r8Juo-008NDb-1D for linux-arm-kernel@lists.infradead.org; Wed, 29 Nov 2023 12:43:44 +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 86DDF2F4; Wed, 29 Nov 2023 04:44:28 -0800 (PST) Received: from [10.57.70.211] (unknown [10.57.70.211]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id CD1843F5A1; Wed, 29 Nov 2023 04:43:37 -0800 (PST) Message-ID: <34da1e06-74da-4e45-b0b5-9c93d64eb64e@arm.com> Date: Wed, 29 Nov 2023 12:43:35 +0000 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 14/14] arm64/mm: Add ptep_get_and_clear_full() to optimize process teardown Content-Language: en-GB To: Barry Song <21cnbao@gmail.com> Cc: akpm@linux-foundation.org, andreyknvl@gmail.com, anshuman.khandual@arm.com, ardb@kernel.org, catalin.marinas@arm.com, david@redhat.com, dvyukov@google.com, glider@google.com, james.morse@arm.com, jhubbard@nvidia.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, mark.rutland@arm.com, maz@kernel.org, oliver.upton@linux.dev, ryabinin.a.a@gmail.com, suzuki.poulose@arm.com, vincenzo.frascino@arm.com, wangkefeng.wang@huawei.com, will@kernel.org, willy@infradead.org, yuzenghui@huawei.com, yuzhao@google.com, ziy@nvidia.com References: <20231115163018.1303287-15-ryan.roberts@arm.com> <20231128081742.39204-1-v-songbaohua@oppo.com> <207de995-6d48-41ea-8373-2f9caad9b9c3@arm.com> From: Ryan Roberts In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231129_044342_512088_AC1CDACD X-CRM114-Status: GOOD ( 52.95 ) 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 T24gMjgvMTEvMjAyMyAyMDoyMywgQmFycnkgU29uZyB3cm90ZToKPiBPbiBXZWQsIE5vdiAyOSwg MjAyMyBhdCAxMjo0OeKAr0FNIFJ5YW4gUm9iZXJ0cyA8cnlhbi5yb2JlcnRzQGFybS5jb20+IHdy b3RlOgo+Pgo+PiBPbiAyOC8xMS8yMDIzIDA4OjE3LCBCYXJyeSBTb25nIHdyb3RlOgo+Pj4+ICtw dGVfdCBjb250cHRlX3B0ZXBfZ2V0X2FuZF9jbGVhcl9mdWxsKHN0cnVjdCBtbV9zdHJ1Y3QgKm1t LAo+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25n IGFkZHIsIHB0ZV90ICpwdGVwKQo+Pj4+ICt7Cj4+Pj4gKyAgICAvKgo+Pj4+ICsgICAgICogV2hl biBkb2luZyBhIGZ1bGwgYWRkcmVzcyBzcGFjZSB0ZWFyZG93biwgd2UgY2FuIGF2b2lkIHVuZm9s ZGluZyB0aGUKPj4+PiArICAgICAqIGNvbnRpZ3VvdXMgcmFuZ2UsIGFuZCB0aGVyZWZvcmUgYXZv aWQgdGhlIGFzc29jaWF0ZWQgdGxiaS4gSW5zdGVhZCwKPj4+PiArICAgICAqIGp1c3QgZ2V0IGFu ZCBjbGVhciB0aGUgcHRlLiBUaGUgY2FsbGVyIGlzIHByb21pc2luZyB0byBjYWxsIHVzIGZvcgo+ Pj4+ICsgICAgICogZXZlcnkgcHRlLCBzbyBldmVyeSBwdGUgaW4gdGhlIHJhbmdlIHdpbGwgYmUg Y2xlYXJlZCBieSB0aGUgdGltZSB0aGUKPj4+PiArICAgICAqIHRsYmkgaXMgaXNzdWVkLgo+Pj4+ ICsgICAgICoKPj4+PiArICAgICAqIFRoaXMgYXBwcm9hY2ggaXMgbm90IHBlcmZlY3QgdGhvdWdo LCBhcyBmb3IgdGhlIGR1cmF0aW9uIGJldHdlZW4KPj4+PiArICAgICAqIHJldHVybmluZyBmcm9t IHRoZSBmaXJzdCBjYWxsIHRvIHB0ZXBfZ2V0X2FuZF9jbGVhcl9mdWxsKCkgYW5kIG1ha2luZwo+ Pj4+ICsgICAgICogdGhlIGZpbmFsIGNhbGwsIHRoZSBjb250cHRlIGJsb2NrIGluIGFuIGludGVy bWVkaWF0ZSBzdGF0ZSwgd2hlcmUKPj4+PiArICAgICAqIHNvbWUgcHRlcyBhcmUgY2xlYXJlZCBh bmQgb3RoZXJzIGFyZSBzdGlsbCBzZXQgd2l0aCB0aGUgUFRFX0NPTlQgYml0Lgo+Pj4+ICsgICAg ICogSWYgYW55IG90aGVyIEFQSXMgYXJlIGNhbGxlZCBmb3IgdGhlIHB0ZXMgaW4gdGhlIGNvbnRw dGUgYmxvY2sgZHVyaW5nCj4+Pj4gKyAgICAgKiB0aGF0IHRpbWUsIHdlIGhhdmUgdG8gYmUgdmVy eSBjYXJlZnVsLiBUaGUgY29yZSBjb2RlIGN1cnJlbnRseQo+Pj4+ICsgICAgICogaW50ZXJsZWF2 ZXMgY2FsbHMgdG8gcHRlcF9nZXRfYW5kX2NsZWFyX2Z1bGwoKSB3aXRoIHB0ZXBfZ2V0KCkgYW5k IHNvCj4+Pj4gKyAgICAgKiBwdGVwX2dldCgpIG11c3QgYmUgY2FyZWZ1bCB0byBpZ25vcmUgdGhl IGNsZWFyZWQgZW50cmllcyB3aGVuCj4+Pj4gKyAgICAgKiBhY2N1bXVsYXRpbmcgdGhlIGFjY2Vz cyBhbmQgZGlydHkgYml0cyAtIHRoZSBzYW1lIGdvZXMgZm9yCj4+Pj4gKyAgICAgKiBwdGVwX2dl dF9sb2NrbGVzcygpLiBUaGUgb25seSBvdGhlciBjYWxscyB3ZSBtaWdodCByZXNvbmFibHkgZXhw ZWN0Cj4+Pj4gKyAgICAgKiBhcmUgdG8gc2V0IG1hcmtlcnMgaW4gdGhlIHByZXZpb3VzbHkgY2xl YXJlZCBwdGVzLiAoV2Ugc2hvdWxkbid0IHNlZQo+Pj4+ICsgICAgICogdmFsaWQgZW50cmllcyBi ZWluZyBzZXQgdW50aWwgYWZ0ZXIgdGhlIHRsYmksIGF0IHdoaWNoIHBvaW50IHdlIGFyZQo+Pj4+ ICsgICAgICogbm8gbG9uZ2VyIGluIHRoZSBpbnRlcm1lZGlhdGUgc3RhdGUpLiBTaW5jZSBtYXJr ZXJzIGFyZSBub3QgdmFsaWQsCj4+Pj4gKyAgICAgKiB0aGlzIGlzIHNhZmU7IHNldF9wdGVzKCkg d2lsbCBzZWUgdGhlIG9sZCwgaW52YWxpZCBlbnRyeSBhbmQgd2lsbCBub3QKPj4+PiArICAgICAq IGF0dGVtcHQgdG8gdW5mb2xkLiBBbmQgdGhlIG5ldyBwdGUgaXMgYWxzbyBpbnZhbGlkIHNvIGl0 IHdvbid0Cj4+Pj4gKyAgICAgKiBhdHRlbXB0IHRvIGZvbGQuIFdlIHNob3VsZG4ndCBzZWUgdGhp cyBmb3IgdGhlICdmdWxsJyBjYXNlIGFueXdheS4KPj4+PiArICAgICAqCj4+Pj4gKyAgICAgKiBU aGUgbGFzdCByZW1haW5pbmcgaXNzdWUgaXMgcmV0dXJuaW5nIHRoZSBhY2Nlc3MvZGlydHkgYml0 cy4gVGhhdAo+Pj4+ICsgICAgICogaW5mbyBjb3VsZCBiZSBwcmVzZW50IGluIGFueSBvZiB0aGUg cHRlcyBpbiB0aGUgY29udHB0ZSBibG9jay4KPj4+PiArICAgICAqIHB0ZXBfZ2V0KCkgd2lsbCBn YXRoZXIgdGhvc2UgYml0cyBmcm9tIGFjcm9zcyB0aGUgY29udHB0ZSBibG9jay4gV2UKPj4+PiAr ICAgICAqIGRvbid0IGJvdGhlciBkb2luZyB0aGF0IGhlcmUsIGJlY2F1c2Ugd2Uga25vdyB0aGF0 IHRoZSBpbmZvcm1hdGlvbiBpcwo+Pj4+ICsgICAgICogdXNlZCBieSB0aGUgY29yZS1tbSB0byBt YXJrIHRoZSB1bmRlcmx5aW5nIGZvbGlvIGFzIGFjY2Vzc2VkL2RpcnR5Lgo+Pj4+ICsgICAgICog QW5kIHNpbmNlIHRoZSBzYW1lIGZvbGlvIG11c3QgYmUgdW5kZXJwaW5uaW5nIHRoZSB3aG9sZSBi bG9jayAodGhhdAo+Pj4+ICsgICAgICogd2FzIGEgcmVxdWlyZW1lbnQgZm9yIGZvbGRpbmcgaW4g dGhlIGZpcnN0IHBsYWNlKSwgdGhhdCBpbmZvcm1hdGlvbgo+Pj4+ICsgICAgICogd2lsbCBtYWtl IGl0IHRvIHRoZSBmb2xpbyBldmVudHVhbGx5IG9uY2UgYWxsIHRoZSBwdGVzIGhhdmUgYmVlbgo+ Pj4+ICsgICAgICogY2xlYXJlZC4gVGhpcyBhcHByb2FjaCBtZWFucyB3ZSBkb24ndCBoYXZlIHRv IHBsYXkgZ2FtZXMgd2l0aAo+Pj4+ICsgICAgICogYWNjdW11bGF0aW5nIGFuZCBzdG9yaW5nIHRo ZSBiaXRzLiBJdCBkb2VzIG1lYW4gdGhhdCBhbnkgaW50ZXJsZWF2ZWQKPj4+PiArICAgICAqIGNh bGxzIHRvIHB0ZXBfZ2V0KCkgbWF5IGxhY2sgY29ycmVjdCBhY2Nlc3MvZGlydHkgaW5mb3JtYXRp b24gaWYgd2UKPj4+PiArICAgICAqIGhhdmUgYWxyZWFkeSBjbGVhcmVkIHRoZSBwdGUgdGhhdCBo YXBwZW5lZCB0byBzdG9yZSBpdC4gVGhlIGNvcmUgY29kZQo+Pj4+ICsgICAgICogZG9lcyBub3Qg cmVseSBvbiB0aGlzIHRob3VnaC4KPj4+Cj4+PiBldmVuIHdpdGhvdXQgYW55IG90aGVyIHRocmVh ZHMgcnVubmluZyBhbmQgdG91Y2hpbmcgdGhvc2UgUFRFcywgdGhpcyB3b24ndCBzdXJ2aXZlCj4+ PiBvbiBzb21lIGhhcmR3YXJlLiB3ZSBleHBvc2UgaW5jb25zaXN0ZW50IENPTlRQVEVzIHRvIGhh cmR3YXJlLCB0aGlzIG1pZ2h0IHJlc3VsdAo+Pgo+PiBObyB0aGF0J3Mgbm90IHRoZSBjYXNlOyBp ZiB5b3UgcmVhZCB0aGUgQXJtIEFSTSwgdGhlIHBhZ2UgdGFibGUgaXMgb25seQo+PiBjb25zaWRl cmVkICJtaXNncm9ncmFtbWVkIiB3aGVuICp2YWxpZCogZW50cmllcyB3aXRoaW4gdGhlIHNhbWUg Y29udHB0ZSBibG9jawo+PiBoYXZlIGRpZmZlcmVudCB2YWx1ZXMgZm9yIHRoZSBjb250aWd1b3Vz IGJpdC4gV2UgYXJlIGNsZWFyaW5nIHRoZSBwdGVzIHRvIHplcm8KPj4gaGVyZSwgd2hpY2ggaXMg YW4gKmludmFsaWQqIGVudHJ5LiBTbyBpZiB0aGUgVExCIGVudHJ5IHNvbWVob3cgZ2V0cyBpbnZh bGlkYXRlZAo+PiAoZWl0aGVyIGR1ZSB0byBleHBsaWNpdCB0bGJpIGFzIHlvdSBwb2ludCBvdXQg YmVsb3csIG9yIGR1ZSB0byBhIGNvbmN1cnJlbnQgVExCCj4+IG1pc3Mgd2hpY2ggc2VsZWN0cyBv dXIgZW50cnkgZm9yIHJlbW92YWwgdG8gbWFrZSBzcGFjZSBmb3IgdGhlIG5ldyBpbmNvbW1pbmcK Pj4gZW50cnkpLCB0aGVuIGl0IGdldHMgYW4gYWNjZXNzIHJlcXVlc3QgZm9yIGFuIGFkZHJlc3Mg aW4gb3VyIHBhcnRpYWxseSBjbGVhcmVkCj4+IGNvbnRwdGUgYmxvY2sgdGhlIGFkZHJlc3Mgd2ls bCBlaXRoZXIgYmU6Cj4+Cj4+IEEpIGFuIGFkZHJlc3MgZm9yIGEgcHRlIGVudHJ5IHdlIGhhdmUg YWxyZWFkeSBjbGVhcmVkLCBzbyBpdHMgaW52YWxpZCBhbmQgaXQKPj4gd2lsbCBmYXVsdCAoYW5k IGdldCBzZXJpYWxpemVkIGJlaGluZCB0aGUgUFRMKS4KPj4KPj4gb3IKPj4KPj4gQikgYW4gYWRk cmVzcyBmb3IgYSBwdGUgZW50cnkgd2UgaGF2ZW4ndCB5ZXQgY2xlYXJlZCwgc28gaXQgd2lsbCBy ZWZvcm0gYSBUTEIKPj4gZW50cnkgZm9yIHRoZSBjb250cHRlIGJsb2NrLiBCdXQgdGhhdCdzIG9r IGJlY2F1c2UgdGhlIG1lbW9yeSBzdGlsbCBleGlzdHMKPj4gYmVjYXVzZSB3ZSBoYXZlbid0IHll dCBmaW5pc2hlZCBjbGVhcmluZyB0aGUgcGFnZSB0YWJsZSBhbmQgaGF2ZSBub3QgeWV0IGlzc3Vl ZAo+PiB0aGUgZmluYWwgdGxiaS4KPj4KPj4KPj4+IGluIGNyYXNoZWQgZmlybXdhcmUgZXZlbiBp biB0cnVzdHpvbmUsIHN0cmFuZ2UmdW5rbm93biBmYXVsdHMgdG8gdHJ1c3R6b25lIHdlIGhhdmUK Pj4+IHNlZW4gb24gUXVhbGNvbW0sIGJ1dCBmb3IgTVRLLCBpdCBzZWVtcyBmaW5lLiB3aGVuIHlv dSBkbyB0bGJpIG9uIGEgcGFydCBvZiBQVEVzCj4+PiB3aXRoIGRyb3BwZWQgQ09OVCBidXQgc3Rp bGwgc29tZSBvdGhlciBQVEVzIGhhdmUgQ09OVCwgd2UgbWFrZSBoYXJkd2FyZSB0b3RhbGx5Cj4+ PiBjb25mdXNlZC4KPj4KPj4gSSBzdXNwZWN0IHRoaXMgaXMgYmVjYXVzZSBpbiB5b3VyIGNhc2Ug eW91IGFyZSAibWlzcHJvZ3JhbW1pbmciIHRoZSBjb250cHRlCj4+IGJsb2NrOyB0aGVyZSBhcmUg KnZhbGlkKiBwdGUgZW50cmllcyB3aXRoaW4gdGhlIGJsb2NrIHRoYXQgZGlzYWdyZWUgYWJvdXQg dGhlCj4+IGNvbnRpZ3VvdXMgYml0IG9yIGFib3V0IHZhcmlvdXMgb3RoZXIgZmllbGRzLiBJbiB0 aGlzIGNhc2Ugc29tZSBIVyBUTEIgZGVzaWducwo+PiBjYW4gZG8gd2VpcmQgdGhpbmdzLiBJIHN1 c3BlY3QgaW4geW91ciBjYXNlLCB0aGF0J3MgcmVzdWx0aW5nIGluIGFjY2Vzc2luZyBiYWQKPj4g bWVtb3J5IHNwYWNlIGFuZCBjYXVzaW5nIGFuIFNFcnJvciwgd2hpY2ggaXMgdHJhcHBlZCBieSBF TDMsIGFuZCB0aGUgRlcgaXMKPj4gcHJvYmFibHkganVzdCBwYW5pY2tpbmcgYXQgdGhhdCBwb2lu dC4KPiAKPiB5b3UgYXJlIHByb2JhYmx5IHJpZ2h0LiBhcyB3ZSBtZXQgdGhlIFNFcnJvciwgd2Ug YmVjYW1lIHZlcnkgdmVyeQo+IGNhdXRpb3VzLiBzbyBhbnl0aW1lCj4gd2hlbiB3ZSBmbHVzaCB0 bGIgZm9yIGEgQ09OVFBURSwgd2Ugc3RyaWN0bHkgZG8gaXQgYnkKPiAxLiBzZXQgYWxsIDE2IHB0 ZXMgdG8gemVybwo+IDIuIGZsdXNoIHRoZSB3aG9sZSAxNiBwdGVzCgpCdXQgbXkgcG9pbnQgaXMg dGhhdCB0aGlzIHNlcXVlbmNlIGRvZXNuJ3QgZ3VhcnJhbnRlZSB0aGF0IHRoZSBUTEIgZG9lc24n dCByZWFkCnRoZSBwYWdlIHRhYmxlIGhhbGYgd2F5IHRocm91Z2ggdGhlIFNXIGNsZWFyaW5nIHRo ZSAxNiBlbnRyaWVzOyBhIFRMQiBlbnRyeSBjYW4KYmUgZWplY3RlZCBmb3Igb3RoZXIgcmVhc29u cyB0aGFuIGp1c3QgaXNzdWluZyBhIFRMQkkuIFNvIGluIHRoYXQgY2FzZSB0aGVzZSAyCmZsb3dz IGNhbiBiZSBlcXVpdmFsZW50LiBJdHMgdGhlIGZhY3QgdGhhdCB3ZSBhcmUgdW5zZXR0aW5nIHRo ZSB2YWxpZCBiaXQgd2hlbgpjbGVhcmluZyBlYWNoIHB0ZSB0aGF0IGd1YXJhbnRlZXMgdGhpcyB0 byBiZSBzYWZlLgoKPiAKPiBpbiB5b3VyIGNhc2UsIGl0IGNhbiBiZToKPiAxLiBzZXQgcHRlMCB0 byB6ZXJvCj4gMi4gZmx1c2ggcHRlMAo+IAo+IFRCSCwgaSBoYXZlIG5ldmVyIHRyaWVkIHRoaXMu IGJ1dCBpdCBtaWdodCBiZSBzYWZlIGFjY29yZGluZyB0byB5b3VyCj4gZGVzY3JpcHRpb24uCj4g Cj4+Cj4+Pgo+Pj4gemFwX3B0ZV9yYW5nZSgpIGhhcyBhIGZvcmNlX2ZsdXNoIHdoZW4gdGxiYmF0 Y2ggaXMgZnVsbDoKPj4+Cj4+PiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodW5saWtlbHko X190bGJfcmVtb3ZlX3BhZ2UodGxiLCBwYWdlLCBkZWxheV9ybWFwKSkpIHsKPj4+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZm9yY2VfZmx1c2ggPSAxOwo+Pj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBhZGRyICs9IFBBR0VfU0laRTsKPj4+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4+PiAgICAgICAgICAgICAgICAgICAgICAgICB9Cj4+ Pgo+Pj4gdGhpcyBtZWFucyB5b3UgY2FuIGV4cG9zZSBwYXJ0aWFsIHRsYmkvZmx1c2ggZGlyZWN0 bHkgdG8gaGFyZHdhcmUgd2hpbGUgc29tZQo+Pj4gb3RoZXIgUFRFcyBhcmUgc3RpbGwgQ09OVC4K Pj4KPj4gWWVzLCBidXQgdGhhdCdzIGFsc28gcG9zc2libGUgZXZlbiBpZiB3ZSBoYXZlIGEgdGln aHQgbG9vcCB0aGF0IGNsZWFycyBkb3duIHRoZQo+PiBjb250cHRlIGJsb2NrOyB0aGVyZSBjb3Vs ZCBzdGlsbCBiZSBhbm90aGVyIGNvcmUgdGhhdCBpc3N1ZXMgYSB0bGJpIHdoaWxlIHlvdSdyZQo+ PiBoYWxmd2F5IHRocm91Z2ggdGhhdCBsb29wLCBvciB0aGUgSFcgY291bGQgaGFwcGVuIHRvIGV2 aWN0IGR1ZSB0byBUTEIgcHJlc3N1cmUKPj4gYXQgYW55IHRpbWUuIFRoZSBwb2ludCBpcywgaXQn cyBzYWZlIGlmIHlvdSBhcmUgY2xlYXJpbmcgdGhlIHB0ZSB0byBhbiAqaW52YWxpZCoKPj4gZW50 cnkuCj4+Cj4+Pgo+Pj4gb24gdGhlIG90aGVyIGhhbmQsIGNvbnRwdGVfcHRlcF9nZXRfYW5kX2Ns ZWFyX2Z1bGwoKSBkb2Vzbid0IG5lZWQgdG8gZGVwZW5kCj4+PiBvbiBmdWxsbW0sIGFzIGxvbmcg YXMgemFwIHJhbmdlIGNvdmVycyBhIGxhcmdlIGZvbGlvLCB3ZSBjYW4gZmx1c2ggdGxiaSBmb3IK Pj4+IHRob3NlIENPTlRQVEVzIGFsbCB0b2dldGhlciBpbiB5b3VyIGNvbnRwdGVfcHRlcF9nZXRf YW5kX2NsZWFyX2Z1bGwoKSByYXRoZXIKPj4+IHRoYW4gY2xlYXJpbmcgb25lIFBURS4KPj4+Cj4+ PiBPdXIgYXBwcm9hY2ggaW4gWzFdIGlzIHdlIGRvIGEgZmx1c2ggZm9yIGFsbCBDT05UUFRFcyBh bmQgZ28gZGlyZWN0bHkgdG8gdGhlIGVuZAo+Pj4gb2YgdGhlIGxhcmdlIGZvbGlvOgo+Pj4KPj4+ ICNpZmRlZiBDT05GSUdfQ09OVF9QVEVfSFVHRVBBR0UKPj4+ICAgICAgICAgICAgICAgICAgICAg ICBpZiAocHRlX2NvbnQocHRlbnQpKSB7Cj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBsb25nIG5leHQgPSBwdGVfY29udF9hZGRyX2VuZChhZGRyLCBlbmQpOwo+Pj4K Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXh0IC0gYWRkciAhPSBIUEFH RV9DT05UX1BURV9TSVpFKSB7Cj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF9fc3BsaXRfaHVnZV9jb250X3B0ZSh2bWEsIHB0ZSwgYWRkciwgZmFsc2UsIE5VTEwsIHB0 bCk7Cj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qCj4+PiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEFmdGVyIHNwbGl0dGluZyBjb250 LXB0ZQo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB3ZSBuZWVk IHRvIHByb2Nlc3MgcHRlIGFnYWluLgo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKi8KPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290 byBhZ2Fpbl9wdGU7Cj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewo+ Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250X3B0ZV9odWdlX3B0 ZXBfZ2V0X2FuZF9jbGVhcihtbSwgYWRkciwgcHRlKTsKPj4+Cj4+PiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRsYl9yZW1vdmVfY29udF9wdGVfdGxiX2VudHJ5KHRsYiwg cHRlLCBhZGRyKTsKPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg KHVubGlrZWx5KCFwYWdlKSkKPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb250aW51ZTsKPj4+Cj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGlmIChpc19odWdlX3plcm9fcGFnZShwYWdlKSkgewo+Pj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRsYl9yZW1vdmVfcGFnZV9zaXplKHRs YiwgcGFnZSwgSFBBR0VfQ09OVF9QVEVfU0laRSk7Cj4+PiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZ290byBjb250X25leHQ7Cj4+PiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIH0KPj4+Cj4+PiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJzc1ttbV9jb3VudGVyKHBhZ2UpXSAtPSBIUEFHRV9DT05UX1BURV9O UjsKPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZV9yZW1vdmVf cm1hcChwYWdlLCB0cnVlKTsKPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaWYgKHVubGlrZWx5KHBhZ2VfbWFwY291bnQocGFnZSkgPCAwKSkKPj4+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludF9iYWRfcHRlKHZtYSwgYWRk ciwgcHRlbnQsIHBhZ2UpOwo+Pj4KPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdGxiX3JlbW92ZV9wYWdlX3NpemUodGxiLCBwYWdlLCBIUEFHRV9DT05UX1BURV9TSVpF KTsKPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KPj4+IGNvbnRfbmV4dDoKPj4+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICJkbyB3aGlsZSgpIiB3aWxsIGRvICJw dGUrKyIgYW5kICJhZGRyICsgUEFHRV9TSVpFIiAqLwo+Pj4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcHRlICs9IChuZXh0IC0gUEFHRV9TSVpFIC0gKGFkZHIgJiBQQUdFX01BU0spKS9Q QUdFX1NJWkU7Cj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyID0gbmV4dCAt IFBBR0VfU0laRTsKPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ Pj4gICAgICAgICAgICAgICAgICAgICAgIH0KPj4+ICNlbmRpZgo+Pj4KPj4+IHRoaXMgaXMgb3Vy ICJmdWxsIiBjb3VudGVycGFydCwgd2hpY2ggY2xlYXJfZmx1c2ggQ09OVF9QVEVTIHBhZ2VzIGRp cmVjdGx5LCBhbmQKPj4+IGl0IG5ldmVyIHJlcXVpcmVzIHRsYi0+ZnVsbG1tIGF0IGFsbC4KPj4K Pj4gWWVzLCBidXQgeW91IGFyZSBiZW5lZml0dGluZyBmcm9tIHRoZSBmYWN0IHRoYXQgY29udHB0 ZSBpcyBleHBvc2VkIHRvIGNvcmUtbW0KPj4gYW5kIGl0IGlzIHNwZWNpYWwtY2FzaW5nIHRoZW0g YXQgdGhpcyBsZXZlbC4gSSdtIHRyeWluZyB0byBhdm9pZCB0aGF0Lgo+IAo+IEkgYW0gdGhpbmtp bmcgd2UgY2FuIGV2ZW4gZG8gdGhpcyB3aGlsZSB3ZSBkb24ndCBleHBvc2UgQ09OVFBURS4KPiBp ZiB6YXBfcHRlX3JhbmdlIG1lZXRzIGEgbGFyZ2UgZm9saW8gYW5kIHRoZSB6YXBfcmFuZ2UgY292 ZXJzIHRoZSB3aG9sZQo+IGZvbGlvLCB3ZSBjYW4gZmx1c2ggYWxsIHB0ZXMgaW4gdGhpcyBmb2xp byBhbmQganVtcCB0byB0aGUgZW5kIG9mIHRoaXMgZm9saW8/Cj4gaSBtZWFuCj4gCj4gaWYgKGZv bGlvIGhlYWQgJiYgcmFuZ2VfZW5kID4gZm9saW9fZW5kKSB7Cj4gICAgICAgICAgbnIgPSBmb2xp b19ucl9wYWdlKGZvbGlvKTsKPiAgICAgICAgICBmdWxsX2ZsdXNoX25yX3B0ZXMoKQo+ICAgICAg ICAgIHB0ZSArPSBuciAtMTsKPiAgICAgICAgICBhZGRyICs9IChuciAtIDEpICogYmFzZXBhZ2Ug c2l6ZQo+IH0KCkp1c3QgYmVjYXVzZSB5b3UgZm91bmQgYSBwdGUgdGhhdCBtYXBzIGEgcGFnZSBm cm9tIGEgbGFyZ2UgZm9saW8sIHRoYXQgZG9lc24ndAptZWFuIHRoYXQgYWxsIHBhZ2VzIGZyb20g dGhlIGZvbGlvIGFyZSBtYXBwZWQsIGFuZCBpdCBkb2Vzbid0IG1lYW4gdGhleSBhcmUKbWFwcGVk IGNvbnRpZ3VvdXNseS4gV2UgaGF2ZSB0byBkZWFsIHdpdGggcGFydGlhbCBtdW5tYXAoKSwgcGFy dGlhbCBtcmVtYXAoKQpldGMuIFdlIGNvdWxkIHNwbGl0IGluIHRoZXNlIGNhc2VzIChhbmQgaW4g ZnV0dXJlIGl0IG1pZ2h0IGJlIHNlbnNpYmxlIHRvIHRyeSksCmJ1dCB0aGF0IGNhbiBmYWlsIChk dWUgdG8gR1VQKS4gU28gd2Ugc3RpbGwgaGF2ZSB0byBoYW5kbGUgdGhlIGNvcm5lciBjYXNlLgoK QnV0IEkgY2FuIGltYWdpbmUgZG9pbmcgYSBiYXRjaGVkIHZlcnNpb24gb2YgcHRlcF9nZXRfYW5k X2NsZWFyKCksIGxpa2UgSSBkaWQKZm9yIHB0ZXBfc2V0X3dycHJvdGVjdHMoKS4gQW5kIEkgdGhp bmsgdGhpcyB3b3VsZCBiZSBhbiBpbXByb3ZlbWVudC4KClRoZSByZWFzb24gSSBoYXZlbid0IGRv bmUgdGhhdCBzbyBmYXIsIGlzIGJlY2F1c2UgcHRlcF9nZXRfYW5kX2NsZWFyKCkgcmV0dXJucwp0 aGUgcHRlIHZhbHVlIHdoZW4gaXQgd2FzIGNsZWFyZWQgYW5kIHRoYXQncyBoYXJkIHRvIGRvIGlm IGJhdGNoaW5nIGR1ZSB0byB0aGUKc3RvcmFnZSByZXF1aXJlbWVudC4gQnV0IHBlcmhhcHMgeW91 IGNvdWxkIGp1c3QgcmV0dXJuIHRoZSBsb2dpY2FsIE9SIG9mIHRoZQpkaXJ0eSBhbmQgeW91bmcg Yml0cyBhY3Jvc3MgYWxsIHB0ZXMgaW4gdGhlIGJhdGNoLiBUaGUgY2FsbGVyIHNob3VsZCBiZSBh YmxlIHRvCnJlY29uc3RpdHV0ZSB0aGUgcmVzdCBpZiBpdCBuZWVkcyBpdD8KCldoYXQgZG8geW91 IHRoaW5rPwoKPiAKPiB6YXBfcHRlX3JhbmdlIGlzIHRoZSBtb3N0IGZyZXF1ZW50IGJlaGF2aW91 ciBmcm9tIHVzZXJzcGFjZSBsaWJjIGhlYXAKPiBhcyBpIGV4cGxhaW5lZAo+IGJlZm9yZS4gbGli YyBjYW4gY2FsbCBtYWR2aXNlKERPTlRORUVEKSB0aGUgbW9zdCBvZnRlbi4gSXQgaXMgY3J1Y2lh bAo+IHRvIHBlcmZvcm1hbmNlLgo+IAo+IGFuZCB0aGlzIHdheSBjYW4gYWxzbyBoZWxwIGRyb3Ag eW91ciBmdWxsIHZlcnNpb24gYnkgbW92aW5nIHRvIGZ1bGwKPiBmbHVzaGluZyB0aGUgd2hvbGUK PiBsYXJnZSBmb2xpb3M/IGFuZCB3ZSBkb24ndCBuZWVkIHRvIGRlcGVuZCBvbiBmdWxsbW0gYW55 IG1vcmU/Cj4gCj4+Cj4+IEkgZG9uJ3QgdGhpbmsgdGhlcmUgaXMgYW55IGNvcnJlY3RuZXNzIGlz c3VlIGhlcmUuIEJ1dCB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aAo+PiBmcmFnaWxpdHksIGFzIHJh aXNlZCBieSBBbGlzdGFpci4gSSBoYXZlIHNvbWUgaWRlYXMgb24gcG90ZW50aWFsbHkgaG93IHRv IHNvbHZlCj4+IHRoYXQuIEknbSBnb2luZyB0byB0cnkgdG8gd29yayBvbiBpdCB0aGlzIGFmdGVy bm9vbiBhbmQgd2lsbCBwb3N0IGlmIEkgZ2V0IHNvbWUKPj4gY29uZmlkZW5jZSB0aGF0IGl0IGlz IGEgcmVhbCBzb2x1dGlvbi4KPj4KPj4gVGhhbmtzLAo+PiBSeWFuCj4+Cj4+Pgo+Pj4gc3RhdGlj IGlubGluZSBwdGVfdCBfX2NvbnRfcHRlX2h1Z2VfcHRlcF9nZXRfYW5kX2NsZWFyX2ZsdXNoKHN0 cnVjdCBtbV9zdHJ1Y3QgKm1tLAo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGxvbmcgYWRkciwKPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwdGVfdCAqcHRlcCwKPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBib29sIGZsdXNoKQo+Pj4gewo+Pj4gICAgICAgcHRlX3Qgb3JpZ19wdGUgPSBwdGVwX2dl dChwdGVwKTsKPj4+Cj4+PiAgICAgICBDSFBfQlVHX09OKCFwdGVfY29udChvcmlnX3B0ZSkpOwo+ Pj4gICAgICAgQ0hQX0JVR19PTighSVNfQUxJR05FRChhZGRyLCBIUEFHRV9DT05UX1BURV9TSVpF KSk7Cj4+PiAgICAgICBDSFBfQlVHX09OKCFJU19BTElHTkVEKHB0ZV9wZm4ob3JpZ19wdGUpLCBI UEFHRV9DT05UX1BURV9OUikpOwo+Pj4KPj4+ICAgICAgIHJldHVybiBnZXRfY2xlYXJfZmx1c2go bW0sIGFkZHIsIHB0ZXAsIFBBR0VfU0laRSwgQ09OVF9QVEVTLCBmbHVzaCk7Cj4+PiB9Cj4+Pgo+ Pj4gWzFdIGh0dHBzOi8vZ2l0aHViLmNvbS9PbmVQbHVzT1NTL2FuZHJvaWRfa2VybmVsX29uZXBs dXNfc204NTUwL2Jsb2Ivb25lcGx1cy9zbTg1NTBfdV8xNC4wLjBfb25lcGx1czExL21tL21lbW9y eS5jI0wxNTM5Cj4+Pgo+Pj4+ICsgICAgICovCj4+Pj4gKwo+Pj4+ICsgICAgcmV0dXJuIF9fcHRl cF9nZXRfYW5kX2NsZWFyKG1tLCBhZGRyLCBwdGVwKTsKPj4+PiArfQo+Pj4+ICtFWFBPUlRfU1lN Qk9MKGNvbnRwdGVfcHRlcF9nZXRfYW5kX2NsZWFyX2Z1bGwpOwo+Pj4+ICsKPj4+Cj4gCj4gVGhh bmtzCj4gQmFycnkKPiAKPj4KCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVs QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9s aXN0aW5mby9saW51eC1hcm0ta2VybmVsCg== 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 7CB9FC46CA3 for ; Wed, 29 Nov 2023 12:43:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D6F746B03D0; Wed, 29 Nov 2023 07:43:44 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id D1F7F6B03D1; Wed, 29 Nov 2023 07:43:44 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BE8FD6B03D2; Wed, 29 Nov 2023 07:43:44 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id AB5076B03D0 for ; Wed, 29 Nov 2023 07:43:44 -0500 (EST) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 7F1E7C03AC for ; Wed, 29 Nov 2023 12:43:44 +0000 (UTC) X-FDA: 81510958368.17.A68C914 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf24.hostedemail.com (Postfix) with ESMTP id 80A1E180019 for ; Wed, 29 Nov 2023 12:43:42 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=none; spf=pass (imf24.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com; dmarc=pass (policy=none) header.from=arm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1701261822; 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; bh=UPNTZclh20d3a2TRpEElTnCXqtfYePpzJGoYfRoIu18=; b=K93EMNEQNdF64RjUJKSfaBLP89PTP071e8XHI/t1MXhkAIl0dgbSYDY4tgMp3YaM29RqZ9 //ybaZ4yg4SeOKeIFRqNVwRrVNAMR2sMrY4vgcaFSpFFXW9+o8qUce/Vh6SnQEHN92HmJ3 e5fr7Mzhyr7rKM3CUR8DJq1VjKWNQa4= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1701261822; a=rsa-sha256; cv=none; b=TelRoYVNhB5yZZuTAutSkhvX46AP6nmO5APej88Jv4iAJCWsswe3e3369S6uTJFmY21ezE nhlb/llWblJvcISn3hzdsMgT3V8qfxHuuMrcrC8FR0VJwmIMT0jq86ZS2WUgApa316iu+K jl4NPR5eg0xELDrXrPAWWDFfTn2OKpc= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=none; spf=pass (imf24.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com; dmarc=pass (policy=none) header.from=arm.com 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 86DDF2F4; Wed, 29 Nov 2023 04:44:28 -0800 (PST) Received: from [10.57.70.211] (unknown [10.57.70.211]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id CD1843F5A1; Wed, 29 Nov 2023 04:43:37 -0800 (PST) Message-ID: <34da1e06-74da-4e45-b0b5-9c93d64eb64e@arm.com> Date: Wed, 29 Nov 2023 12:43:35 +0000 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 14/14] arm64/mm: Add ptep_get_and_clear_full() to optimize process teardown Content-Language: en-GB To: Barry Song <21cnbao@gmail.com> Cc: akpm@linux-foundation.org, andreyknvl@gmail.com, anshuman.khandual@arm.com, ardb@kernel.org, catalin.marinas@arm.com, david@redhat.com, dvyukov@google.com, glider@google.com, james.morse@arm.com, jhubbard@nvidia.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, mark.rutland@arm.com, maz@kernel.org, oliver.upton@linux.dev, ryabinin.a.a@gmail.com, suzuki.poulose@arm.com, vincenzo.frascino@arm.com, wangkefeng.wang@huawei.com, will@kernel.org, willy@infradead.org, yuzenghui@huawei.com, yuzhao@google.com, ziy@nvidia.com References: <20231115163018.1303287-15-ryan.roberts@arm.com> <20231128081742.39204-1-v-songbaohua@oppo.com> <207de995-6d48-41ea-8373-2f9caad9b9c3@arm.com> From: Ryan Roberts In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 80A1E180019 X-Rspam-User: X-Rspamd-Server: rspam11 X-Stat-Signature: ha8xh881ibtbxkf81sfa7umezy5mt67c X-HE-Tag: 1701261822-482875 X-HE-Meta: U2FsdGVkX19NJKquLPEj9SdP5L+ETmZRUdTJdOG0TaUXpVM3+aPmLI+nRxqPh/Y95+WADpUD73A76ELBvPUq3/4PIW3P0oqSo8to6lxFhZTQo+1Tgu+IpY712/fAYb8aMQyit0V9hgBGTThsZqIxmZaonFwg2T+/9hm27HnJzTt2JULj09IWfLR49TPAH/+S4ZYYvkxGy2hHzwx7JYffW3ZQabFkvMLyZZAErWUJhKY9nvQZJzPSAA0yxtUn2MxG/ZbDqxAeH643tsAevg+xXxfLFQHRSk+oN4EX34S1zZzrg5GAoQnCqy1D2zPR/1XnN78OO3xmRhDS4FgVDBRdZss5/LOQz/OM2bYhkDihVsazaqb99n7Is5edthCSTZLg58sw5TTcRqvOdHfRCdGTU8RKzM6u0mNzj3TQaSDNSr44gpR1k3kFZh6RAi3g+fyHx8ixPMJ+2vw7GpJ47lwnKoF3A5vyGt1igpmfIk1xpj2cdrShJRK16JlbPyC4EBOOyKl3R1eGKtuPY17KWxY+bY9zfVijHyD/L0dX4M9PYjlvfHF4MZpqS3kGXfZtJWJ6/7dzk81jpw1A4EyvadWBvbKdIeH1UuTgPHtoGh/CW9lgaCUmn5YBdKYWJhh706R39AIv0bFFOIvMj0J/x7enZgtVEv8qQ3muVJGYoICPW8nc6eqezhcO21Nr4pKQR12JhdakIKoFhabr19b/YGCmRygdSc5lwUq8WCLiNmn3QPsNlBC4of2ax+KhZPZ3h7g5iR9b8o11cEj5AFwbvVhKjy6c4aNsQ8B9d4w/b1pRFpyDV7yVgI5p42rVIA0koP83BS0aMqzPrfCPsfvN6F81ZjKP/ioIlb+LLn1Z1eOEOUmqUzz9InYt/IgBzbL0gtsAG7e3S9uYdUcpvPHg3ZQba5FgZVwfPK0AFO6/JTZOBkP+i4tkY1uIYPxTlP0elBV7CcfXd1nqASBGrIIFhiK u1EfT5Ne E6t+GROItHSgtaNVD/VrKk+l2WVrqoBSEjGp9J3u1otkInfivKwSY5QaIPyZJD3zJLx+M/wgrCFvH31x1f0M0DcrzSGp8b2lmrluJZoEOH9gZuKQ3adq5CSIiVg1Yt+UsAyY+fZYErQb1ZfQiyL85QiTFW/IqeqJVOAVyT8LNsZNaTRQkeF6gJFZgamGqRXJOyyfp4SZCiQu6B1NHLB8lWKTvDmV8TZRecDxhHPTHeRHayCRz70L1M3zvx43e1QlGIQ6mUCd0m9gqMaaMpSHUJePO+hMCbMCXf5xiYMLvtjunl2xA/uJUbcJP/xGffk4zZ5n4f4inEirJ/H7yaynW80GTBm5x2Gk14aY6 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: List-Subscribe: List-Unsubscribe: On 28/11/2023 20:23, Barry Song wrote: > On Wed, Nov 29, 2023 at 12:49 AM Ryan Roberts wrote: >> >> On 28/11/2023 08:17, Barry Song wrote: >>>> +pte_t contpte_ptep_get_and_clear_full(struct mm_struct *mm, >>>> + unsigned long addr, pte_t *ptep) >>>> +{ >>>> + /* >>>> + * When doing a full address space teardown, we can avoid unfolding the >>>> + * contiguous range, and therefore avoid the associated tlbi. Instead, >>>> + * just get and clear the pte. The caller is promising to call us for >>>> + * every pte, so every pte in the range will be cleared by the time the >>>> + * tlbi is issued. >>>> + * >>>> + * This approach is not perfect though, as for the duration between >>>> + * returning from the first call to ptep_get_and_clear_full() and making >>>> + * the final call, the contpte block in an intermediate state, where >>>> + * some ptes are cleared and others are still set with the PTE_CONT bit. >>>> + * If any other APIs are called for the ptes in the contpte block during >>>> + * that time, we have to be very careful. The core code currently >>>> + * interleaves calls to ptep_get_and_clear_full() with ptep_get() and so >>>> + * ptep_get() must be careful to ignore the cleared entries when >>>> + * accumulating the access and dirty bits - the same goes for >>>> + * ptep_get_lockless(). The only other calls we might resonably expect >>>> + * are to set markers in the previously cleared ptes. (We shouldn't see >>>> + * valid entries being set until after the tlbi, at which point we are >>>> + * no longer in the intermediate state). Since markers are not valid, >>>> + * this is safe; set_ptes() will see the old, invalid entry and will not >>>> + * attempt to unfold. And the new pte is also invalid so it won't >>>> + * attempt to fold. We shouldn't see this for the 'full' case anyway. >>>> + * >>>> + * The last remaining issue is returning the access/dirty bits. That >>>> + * info could be present in any of the ptes in the contpte block. >>>> + * ptep_get() will gather those bits from across the contpte block. We >>>> + * don't bother doing that here, because we know that the information is >>>> + * used by the core-mm to mark the underlying folio as accessed/dirty. >>>> + * And since the same folio must be underpinning the whole block (that >>>> + * was a requirement for folding in the first place), that information >>>> + * will make it to the folio eventually once all the ptes have been >>>> + * cleared. This approach means we don't have to play games with >>>> + * accumulating and storing the bits. It does mean that any interleaved >>>> + * calls to ptep_get() may lack correct access/dirty information if we >>>> + * have already cleared the pte that happened to store it. The core code >>>> + * does not rely on this though. >>> >>> even without any other threads running and touching those PTEs, this won't survive >>> on some hardware. we expose inconsistent CONTPTEs to hardware, this might result >> >> No that's not the case; if you read the Arm ARM, the page table is only >> considered "misgrogrammed" when *valid* entries within the same contpte block >> have different values for the contiguous bit. We are clearing the ptes to zero >> here, which is an *invalid* entry. So if the TLB entry somehow gets invalidated >> (either due to explicit tlbi as you point out below, or due to a concurrent TLB >> miss which selects our entry for removal to make space for the new incomming >> entry), then it gets an access request for an address in our partially cleared >> contpte block the address will either be: >> >> A) an address for a pte entry we have already cleared, so its invalid and it >> will fault (and get serialized behind the PTL). >> >> or >> >> B) an address for a pte entry we haven't yet cleared, so it will reform a TLB >> entry for the contpte block. But that's ok because the memory still exists >> because we haven't yet finished clearing the page table and have not yet issued >> the final tlbi. >> >> >>> in crashed firmware even in trustzone, strange&unknown faults to trustzone we have >>> seen on Qualcomm, but for MTK, it seems fine. when you do tlbi on a part of PTEs >>> with dropped CONT but still some other PTEs have CONT, we make hardware totally >>> confused. >> >> I suspect this is because in your case you are "misprogramming" the contpte >> block; there are *valid* pte entries within the block that disagree about the >> contiguous bit or about various other fields. In this case some HW TLB designs >> can do weird things. I suspect in your case, that's resulting in accessing bad >> memory space and causing an SError, which is trapped by EL3, and the FW is >> probably just panicking at that point. > > you are probably right. as we met the SError, we became very very > cautious. so anytime > when we flush tlb for a CONTPTE, we strictly do it by > 1. set all 16 ptes to zero > 2. flush the whole 16 ptes But my point is that this sequence doesn't guarrantee that the TLB doesn't read the page table half way through the SW clearing the 16 entries; a TLB entry can be ejected for other reasons than just issuing a TLBI. So in that case these 2 flows can be equivalent. Its the fact that we are unsetting the valid bit when clearing each pte that guarantees this to be safe. > > in your case, it can be: > 1. set pte0 to zero > 2. flush pte0 > > TBH, i have never tried this. but it might be safe according to your > description. > >> >>> >>> zap_pte_range() has a force_flush when tlbbatch is full: >>> >>> if (unlikely(__tlb_remove_page(tlb, page, delay_rmap))) { >>> force_flush = 1; >>> addr += PAGE_SIZE; >>> break; >>> } >>> >>> this means you can expose partial tlbi/flush directly to hardware while some >>> other PTEs are still CONT. >> >> Yes, but that's also possible even if we have a tight loop that clears down the >> contpte block; there could still be another core that issues a tlbi while you're >> halfway through that loop, or the HW could happen to evict due to TLB pressure >> at any time. The point is, it's safe if you are clearing the pte to an *invalid* >> entry. >> >>> >>> on the other hand, contpte_ptep_get_and_clear_full() doesn't need to depend >>> on fullmm, as long as zap range covers a large folio, we can flush tlbi for >>> those CONTPTEs all together in your contpte_ptep_get_and_clear_full() rather >>> than clearing one PTE. >>> >>> Our approach in [1] is we do a flush for all CONTPTEs and go directly to the end >>> of the large folio: >>> >>> #ifdef CONFIG_CONT_PTE_HUGEPAGE >>> if (pte_cont(ptent)) { >>> unsigned long next = pte_cont_addr_end(addr, end); >>> >>> if (next - addr != HPAGE_CONT_PTE_SIZE) { >>> __split_huge_cont_pte(vma, pte, addr, false, NULL, ptl); >>> /* >>> * After splitting cont-pte >>> * we need to process pte again. >>> */ >>> goto again_pte; >>> } else { >>> cont_pte_huge_ptep_get_and_clear(mm, addr, pte); >>> >>> tlb_remove_cont_pte_tlb_entry(tlb, pte, addr); >>> if (unlikely(!page)) >>> continue; >>> >>> if (is_huge_zero_page(page)) { >>> tlb_remove_page_size(tlb, page, HPAGE_CONT_PTE_SIZE); >>> goto cont_next; >>> } >>> >>> rss[mm_counter(page)] -= HPAGE_CONT_PTE_NR; >>> page_remove_rmap(page, true); >>> if (unlikely(page_mapcount(page) < 0)) >>> print_bad_pte(vma, addr, ptent, page); >>> >>> tlb_remove_page_size(tlb, page, HPAGE_CONT_PTE_SIZE); >>> } >>> cont_next: >>> /* "do while()" will do "pte++" and "addr + PAGE_SIZE" */ >>> pte += (next - PAGE_SIZE - (addr & PAGE_MASK))/PAGE_SIZE; >>> addr = next - PAGE_SIZE; >>> continue; >>> } >>> #endif >>> >>> this is our "full" counterpart, which clear_flush CONT_PTES pages directly, and >>> it never requires tlb->fullmm at all. >> >> Yes, but you are benefitting from the fact that contpte is exposed to core-mm >> and it is special-casing them at this level. I'm trying to avoid that. > > I am thinking we can even do this while we don't expose CONTPTE. > if zap_pte_range meets a large folio and the zap_range covers the whole > folio, we can flush all ptes in this folio and jump to the end of this folio? > i mean > > if (folio head && range_end > folio_end) { > nr = folio_nr_page(folio); > full_flush_nr_ptes() > pte += nr -1; > addr += (nr - 1) * basepage size > } Just because you found a pte that maps a page from a large folio, that doesn't mean that all pages from the folio are mapped, and it doesn't mean they are mapped contiguously. We have to deal with partial munmap(), partial mremap() etc. We could split in these cases (and in future it might be sensible to try), but that can fail (due to GUP). So we still have to handle the corner case. But I can imagine doing a batched version of ptep_get_and_clear(), like I did for ptep_set_wrprotects(). And I think this would be an improvement. The reason I haven't done that so far, is because ptep_get_and_clear() returns the pte value when it was cleared and that's hard to do if batching due to the storage requirement. But perhaps you could just return the logical OR of the dirty and young bits across all ptes in the batch. The caller should be able to reconstitute the rest if it needs it? What do you think? > > zap_pte_range is the most frequent behaviour from userspace libc heap > as i explained > before. libc can call madvise(DONTNEED) the most often. It is crucial > to performance. > > and this way can also help drop your full version by moving to full > flushing the whole > large folios? and we don't need to depend on fullmm any more? > >> >> I don't think there is any correctness issue here. But there is a problem with >> fragility, as raised by Alistair. I have some ideas on potentially how to solve >> that. I'm going to try to work on it this afternoon and will post if I get some >> confidence that it is a real solution. >> >> Thanks, >> Ryan >> >>> >>> static inline pte_t __cont_pte_huge_ptep_get_and_clear_flush(struct mm_struct *mm, >>> unsigned long addr, >>> pte_t *ptep, >>> bool flush) >>> { >>> pte_t orig_pte = ptep_get(ptep); >>> >>> CHP_BUG_ON(!pte_cont(orig_pte)); >>> CHP_BUG_ON(!IS_ALIGNED(addr, HPAGE_CONT_PTE_SIZE)); >>> CHP_BUG_ON(!IS_ALIGNED(pte_pfn(orig_pte), HPAGE_CONT_PTE_NR)); >>> >>> return get_clear_flush(mm, addr, ptep, PAGE_SIZE, CONT_PTES, flush); >>> } >>> >>> [1] https://github.com/OnePlusOSS/android_kernel_oneplus_sm8550/blob/oneplus/sm8550_u_14.0.0_oneplus11/mm/memory.c#L1539 >>> >>>> + */ >>>> + >>>> + return __ptep_get_and_clear(mm, addr, ptep); >>>> +} >>>> +EXPORT_SYMBOL(contpte_ptep_get_and_clear_full); >>>> + >>> > > Thanks > Barry > >>