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 DD474CA5FDD for ; Fri, 2 Oct 2026 19:31:07 +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:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=of4VsijMJiRNXLPIxYFAlbLmCHs7xw9DnrMWJ74AZDc=; b=aQpyyk3lTPqUzF qToKxRQRrFTJLRA7ISDPUrot5pHkziYlDT9SeWjovFAXSsEVU45IjQA8WgGyu0/UqbzWx5Dr1cCqm RpJtBJrpQ+aBeoT7k5JSQ26ElmGpnvjtfg8HlURL9plOEk6heF+eOw7Emy0Hn0U467pBpAg9VRTbk rqGnJL7mvX7hd1L4J5exuCScE64H/qaVohrSq1LGuHoef2BLJ2l5DscjYdfuvgLJFj6pv8ofVMmrs MnTnqYaEI60mHCAsg/b0mlNnt5SxUydGlObUKu8ID6+qjmepl8M+uwCa+FYwsUG6GWhHrihO90Uwg uJDIMbbbO5i+P33f2tYQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1xCiy0-0000000COr7-23Ep; Fri, 02 Oct 2026 19:30:48 +0000 Received: from tor.source.kernel.org ([2600:3c04:e001:324:0:1991:8:25]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1xCixz-0000000COqZ-21qV; Fri, 02 Oct 2026 19:30:47 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id 8CF3360D77; Fri, 2 Oct 2026 19:30:46 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 748A01F000FF; Fri, 2 Oct 2026 19:30:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1790969446; bh=ekKUYOby3c2j+NEGwfq/n/16hDsQN2mSgzvQPgHiWWI=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=d2r2hK5kCljTlCYwbBufk/wivX4jkvPY5GtMgJLcUIUGT4ktspgfRBivcG57guSh0 hmkWr9NCuIzN8DuY1j8dpdZ4MIgpfoMkhqfwhFne9TUTm7tvkDIkyqcyp6gifsaedU mNrCV965QKAOpjo5mT0u9456Q2feFcLsrcpn4yK2t79qy6ksjZH9IjiJABakb9YbL5 heJGGdWiGwwTNHAPJgbj/idVxDZSAeMzL3J8SODqqJovLo/2+7RpFWIqHOSOxNi79y Uw9DHbuSk9BoX3hzMhPL2bfOom2XjyLWZ7KwO9IQVaU87sthIFLqZfHTTSxGRCaWc8 PWPWsigErZcDg== From: Barry Song To: willy@infradead.org Cc: agordeev@linux.ibm.com, akpm@linux-foundation.org, alex@ghiti.fr, aou@eecs.berkeley.edu, baohua@kernel.org, borntraeger@linux.ibm.com, bp@alien8.de, catalin.marinas@arm.com, chenhuacai@kernel.org, chleroy@kernel.org, dave.hansen@linux.intel.com, david@kernel.org, gerald.schaefer@linux.ibm.com, gor@linux.ibm.com, hca@linux.ibm.com, hpa@zytor.com, kernel@xen0n.name, liam@infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, linux@armlinux.org.uk, linuxppc-dev@lists.ozlabs.org, ljs@kernel.org, loongarch@lists.linux.dev, luto@kernel.org, maddy@linux.ibm.com, mark.rutland@arm.com, mhocko@suse.com, mingo@redhat.com, mpe@ellerman.id.au, npiggin@gmail.com, palmer@dabbelt.com, peterz@infradead.org, pjw@kernel.org, rppt@kernel.org, shakeel.butt@linux.dev, surenb@google.com, svens@linux.ibm.com, tglx@kernel.org, vbabka@kernel.org, will@kernel.org, x86@kernel.org, zhanghongru06@gmail.com, zhanghongru@xiaomi.com, zhaonanzhe@xiaomi.com Subject: Re: [PATCH v6] mm: retry page faults once under the per-VMA lock Date: Sat, 3 Oct 2026 03:30:34 +0800 Message-Id: <20261002193034.86218-1-baohua@kernel.org> X-Mailer: git-send-email 2.39.3 (Apple Git-146) In-Reply-To: References: MIME-Version: 1.0 X-BeenThere: linux-riscv@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-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org T24gRnJpLCBPY3QgMiwgMjAyNiBhdCA1OjEy4oCvQU0gTWF0dGhldyBXaWxjb3ggPHdpbGx5QGlu ZnJhZGVhZC5vcmc+IHdyb3RlOgo+Cj4gT24gTW9uLCBTZXAgMjgsIDIwMjYgYXQgMTA6NDg6NDFB TSArMDgwMCwgQmFycnkgU29uZyB3cm90ZToKPiA+IE9uIE1vbiwgU2VwIDI4LCAyMDI2IGF0IDY6 NTXigK9BTSBNYXR0aGV3IFdpbGNveCA8d2lsbHlAaW5mcmFkZWFkLm9yZz4gd3JvdGU6Cj4gPiA+ IFNvIHdoaWxlIGRvaW5nIG15IHNsaWRlcywgSSByZWFsaXNlZCB0aGF0IHdoYXQgd2UgbmVlZCB0 byBhdm9pZCBkb2luZwo+ID4gPiBpcyAoYSkgc2xlZXBpbmcgd2hpbGUgaG9sZGluZyB0aGUgbW1h cF9sb2NrIChiKSByZXR1cm5pbmcgUkVUUlkgd2hpbGUKPiA+ID4gaG9sZGluZyB0aGUgVk1BIGxv Y2sKPiA+ID4KPiA+ID4gQW5kIHRoYXQgdHVybnMgb3V0IHRvIGJlIGFzIHNpbXBsZSBhcyB0aGlz IHBhdGNoOgo+ID4gPgo+ID4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbS5oIGIvaW5j bHVkZS9saW51eC9tbS5oCj4gPiA+IGluZGV4IGRkMDljNDM4ZmEyMy4uOTRlZDIzMzNmOGQ4IDEw MDY0NAo+ID4gPiAtLS0gYS9pbmNsdWRlL2xpbnV4L21tLmgKPiA+ID4gKysrIGIvaW5jbHVkZS9s aW51eC9tbS5oCj4gPiA+IEBAIC03MjMsNiArNzIzLDggQEAgZW51bSB7Cj4gPiA+IMKgICovCj4g PiA+IMKgc3RhdGljIGlubGluZSBib29sIGZhdWx0X2ZsYWdfYWxsb3dfcmV0cnlfZmlyc3QoZW51 bSBmYXVsdF9mbGFnIGZsYWdzKQo+ID4gPiDCoHsKPiA+ID4gKyDCoCDCoCDCoCBpZiAoZmxhZ3Mg JiBGQVVMVF9GTEFHX1ZNQV9MT0NLKQo+ID4gPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVy biBmYWxzZTsKPiA+ID4gwqAgwqAgwqAgwqAgcmV0dXJuIChmbGFncyAmIEZBVUxUX0ZMQUdfQUxM T1dfUkVUUlkpICYmCj4gPiA+IMKgIMKgIMKgIMKgIMKgIMKgICghKGZsYWdzICYgRkFVTFRfRkxB R19UUklFRCkpOwo+ID4gPiDCoH0KPiA+ID4KPiA+ID4gT0ssIHRoaXMgaXMgYSBoYWNrLiDCoFRo ZSBmdW5jdGlvbiBpcyBzcGVjdGFjdWxhcmx5IGJhZGx5IG5hbWVkLCBhbmQKPiA+ID4gbmVlZHMg dG8gYmUgcmVuYW1lZCBiZWZvcmUgYSBwYXRjaCBjYW4gZ28gdXBzdHJlYW0uIMKgQnV0IHRoaXMg c2hvdWxkCj4gPiA+IGZpeCB0aGUgY29udGVudGlvbiBvbiBtbWFwX2xvY2suCj4gPgo+ID4gVGhh bmtzIGZvciB5b3VyIHN1Z2dlc3Rpb24uCj4gPiBUaGlzIGlzIGV4YWN0bHkgd2hhdCB3ZSBkaWQg aW4gQW5kcm9pZCBDb21tb24gS2VybmVsIGJlZm9yZSB3ZSBoYWQKPiA+IExvcmVuem8ncyBwcm9w b3NhbCAoYnlwYXNzaW5nIGBmYXVsdF9mbGFnX2FsbG93X3JldHJ5X2ZpcnN0KClgKToKPiA+Cj4g PiBodHRwczovL2FuZHJvaWQuZ29vZ2xlc291cmNlLmNvbS9rZXJuZWwvY29tbW9uLysvMWI5YjA0 NWE1ODYyNDVjYzFjMjliMjc0N2M2NTg2MjM0YzdmNWJhZCU1RSUyMS8jRjIKPgo+IExvb2tzIGxp a2UgdGhhdCBvbmUgZGlkbid0IGNvdmVyIF9fZm9saW9fbG9ja19vcl9yZXRyeSgpLCBidXQgdGhh dAo+IGRvZXNuJ3QgaW52YWxpZGF0ZSB5b3VyIHBvaW50LgpZZXAuIGBfX2ZvbGlvX2xvY2tfb3Jf cmV0cnkoKWAgd2lsbCBtYWtlIHRoZSBzYW1lIHRoaW5nIHRydWUgZm9yIGFub24KVk1Bcywgc28g d2UgaW50ZW50aW9uYWxseSBtYWRlIHRoZSBob29rIHZhbGlkIG9ubHkgZm9yIGZpbGUgVk1Bcy5P bmx5IHRvdWNoaW5nIHRoZSBmaWxlIHJldHJ5IHBhdGggc2VlbXMgdG8gaW52b2x2ZSBsZXNzIFZN QQpjb250ZW50aW9uLgoKPgo+ID4gTm90ZSB0aGF0IExvcmVuem8ncyBwcm9wb3NhbCBhdm9pZHMg bW1hcF9sb2NrIGNvbnRlbnRpb24gd2l0aG91dAo+ID4gaW50cm9kdWNpbmcgYW55IG5ldyBWTUEg bG9jayBjb250ZW50aW9uLiBJdCBhbHNvIGRvZXNuJ3QgcmVxdWlyZSBhIG5ldwo+ID4gZmxhZyB0 aGF0IHdvdWxkIGJyZWFrIEtNSS4gU28gdGhpcyBpcyBjbGVhcmx5IHRoZSBwcmVmZXJyZWQgYXBw cm9hY2guCj4KPiBCdXQgaXQgZG9lcyByZXRyeSBtdWx0aXBsZSB0aW1lcyBpbiBjYXNlcyB3aGVy ZSB3ZSBrbm93IHRoZSBmYXVsdAo+IHdpbGwgYWx3YXlzIGZhaWwgKGVnIHRoZSBmYXVsdCBpcyBv biBhIGRldmljZS1wcml2YXRlIFZNQSkKPgpSaWdodCBub3csIHRoZXNlIG1pZ2h0IHJlcXVpcmUg YSBzaW5nbGUgZXh0cmEgcmV0cnkgZm9yIGRldmljZS1wcml2YXRlCmFuZCBgX192bWZfYW5vbl9w cmVwYXJlKClgIGNhc2VzLiBUaGUgY29tbWl0IGxvZyBhbHNvIG1lbnRpb25zIHRoaXMuCgoiU29t ZSBmYXVsdHMgbWF5CnJldHJ5IHVubmVjZXNzYXJpbHksIGZvciBleGFtcGxlLCB0aG9zZSBpbiBf X3ZtZl9hbm9uX3ByZXBhcmUoKSBvcgpkZXZpY2UtcHJpdmF0ZSBmYXVsdCBoYW5kbGluZywgd2hp Y2ggcmVxdWlyZSB0aGUgbW1hcF9sb2NrLiBIb3dldmVyLAp0aGVzZSBjYXNlcyBhcmUgZXhwZWN0 ZWQgdG8gYmUgaW5mcmVxdWVudCBhbmQgb25seSBhZGQgb25lIGNoZWFwCnBlci1WTUEgbG9jayBh dHRlbXB0LiIKCklmIHdlIGRvIHdhbnQgdG8gcmVtb3ZlIHRoZSBleHRyYSBWTUEgbG9jayBhdHRl bXB0LCB3ZSBtaWdodCBzdGlsbApuZWVkIGFuIGFkZGl0aW9uYWwgZmxhZyBzdWNoIGFzIFZNX0ZB VUxUX05FRURfTU1BUF9MT0NLOgoKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvbW0vZmF1bHQuYyBi L2FyY2gvYXJtNjQvbW0vZmF1bHQuYwppbmRleCAyY2VjZjZiYTZkZjcuLjI4MjFlM2JkNzQ2MiAx MDA2NDQKLS0tIGEvYXJjaC9hcm02NC9tbS9mYXVsdC5jCisrKyBiL2FyY2gvYXJtNjQvbW0vZmF1 bHQuYwpAQCAtNjIwLDYgKzYyMCw3IEBAIHN0YXRpYyBpbnQgX19rcHJvYmVzIGRvX3BhZ2VfZmF1 bHQodW5zaWduZWQgbG9uZyBmYXIsIHVuc2lnbmVkIGxvbmcgZXNyLAogCXN0cnVjdCB2bV9hcmVh X3N0cnVjdCAqdm1hOwogCWludCBzaV9jb2RlOwogCWludCBwa2V5ID0gLTE7CisJYm9vbCB2bWFf bG9ja19yZXRyaWVkID0gZmFsc2U7CiAKIAlpZiAoa3Byb2JlX3BhZ2VfZmF1bHQocmVncywgZXNy KSkKIAkJcmV0dXJuIDA7CkBAIC02ODgsNiArNjg5LDcgQEAgc3RhdGljIGludCBfX2twcm9iZXMg ZG9fcGFnZV9mYXVsdCh1bnNpZ25lZCBsb25nIGZhciwgdW5zaWduZWQgbG9uZyBlc3IsCiAJaWYg KCEobW1fZmxhZ3MgJiBGQVVMVF9GTEFHX1VTRVIpKQogCQlnb3RvIGxvY2tfbW1hcDsKIAorbG9j a192bWE6CiAJdm1hID0gbG9ja192bWFfdW5kZXJfcmN1KG1tLCBhZGRyKTsKIAlpZiAoIXZtYSkK IAkJZ290byBsb2NrX21tYXA7CkBAIC03MzQsNiArNzM2LDEyIEBAIHN0YXRpYyBpbnQgX19rcHJv YmVzIGRvX3BhZ2VfZmF1bHQodW5zaWduZWQgbG9uZyBmYXIsIHVuc2lnbmVkIGxvbmcgZXNyLAog CQkJZ290byBub19jb250ZXh0OwogCQlyZXR1cm4gMDsKIAl9CisKKwlpZiAoIXZtYV9sb2NrX3Jl dHJpZWQgJiYgIShmYXVsdCAmIFZNX0ZBVUxUX05FRURfTU1BUF9MT0NLKSkgeworCQl2bWFfbG9j a19yZXRyaWVkID0gdHJ1ZTsKKwkJZ290byBsb2NrX3ZtYTsKKwl9CisKIGxvY2tfbW1hcDoKIAog cmV0cnk6CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmggYi9pbmNsdWRlL2xp bnV4L21tX3R5cGVzLmgKaW5kZXggNjE0MTE2MGVjNjUyLi5iYWFkYWI1OThkOTggMTAwNjQ0Ci0t LSBhL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaAorKysgYi9pbmNsdWRlL2xpbnV4L21tX3R5cGVz LmgKQEAgLTE3MzQsMTAgKzE3MzQsMTEgQEAgZW51bSB2bV9mYXVsdF9yZWFzb24gewogCVZNX0ZB VUxUX05PUEFHRSAgICAgICAgID0gKF9fZm9yY2Ugdm1fZmF1bHRfdCkweDAwMDEwMCwKIAlWTV9G QVVMVF9MT0NLRUQgICAgICAgICA9IChfX2ZvcmNlIHZtX2ZhdWx0X3QpMHgwMDAyMDAsCiAJVk1f RkFVTFRfUkVUUlkgICAgICAgICAgPSAoX19mb3JjZSB2bV9mYXVsdF90KTB4MDAwNDAwLAotCVZN X0ZBVUxUX0ZBTExCQUNLICAgICAgID0gKF9fZm9yY2Ugdm1fZmF1bHRfdCkweDAwMDgwMCwKLQlW TV9GQVVMVF9ET05FX0NPVyAgICAgICA9IChfX2ZvcmNlIHZtX2ZhdWx0X3QpMHgwMDEwMDAsCi0J Vk1fRkFVTFRfTkVFRERTWU5DICAgICAgPSAoX19mb3JjZSB2bV9mYXVsdF90KTB4MDAyMDAwLAot CVZNX0ZBVUxUX0NPTVBMRVRFRCAgICAgID0gKF9fZm9yY2Ugdm1fZmF1bHRfdCkweDAwNDAwMCwK KwlWTV9GQVVMVF9ORUVEX01NQVBfTE9DSyAgICAgPSAoX19mb3JjZSB2bV9mYXVsdF90KTB4MDAw ODAwLAorCVZNX0ZBVUxUX0ZBTExCQUNLICAgICAgID0gKF9fZm9yY2Ugdm1fZmF1bHRfdCkweDAw MTAwMCwKKwlWTV9GQVVMVF9ET05FX0NPVyAgICAgICA9IChfX2ZvcmNlIHZtX2ZhdWx0X3QpMHgw MDIwMDAsCisJVk1fRkFVTFRfTkVFRERTWU5DICAgICAgPSAoX19mb3JjZSB2bV9mYXVsdF90KTB4 MDA0MDAwLAorCVZNX0ZBVUxUX0NPTVBMRVRFRCAgICAgID0gKF9fZm9yY2Ugdm1fZmF1bHRfdCkw eDAwODAwMCwKIAlWTV9GQVVMVF9ISU5ERVhfTUFTSyAgICA9IChfX2ZvcmNlIHZtX2ZhdWx0X3Qp MHgwZjAwMDAsCiB9OwogCmRpZmYgLS1naXQgYS9tbS9odWdlX21lbW9yeS5jIGIvbW0vaHVnZV9t ZW1vcnkuYwppbmRleCBkZGM2MzFhMzg4YjkuLjY0ZTA4YzYxNTNjZiAxMDA2NDQKLS0tIGEvbW0v aHVnZV9tZW1vcnkuYworKysgYi9tbS9odWdlX21lbW9yeS5jCkBAIC0xNDgwLDcgKzE0ODAsNyBA QCB2bV9mYXVsdF90IGRvX2h1Z2VfcG1kX2RldmljZV9wcml2YXRlKHN0cnVjdCB2bV9mYXVsdCAq dm1mKQogCiAJaWYgKHZtZi0+ZmxhZ3MgJiBGQVVMVF9GTEFHX1ZNQV9MT0NLKSB7CiAJCXZtYV9l bmRfcmVhZCh2bWEpOwotCQlyZXR1cm4gVk1fRkFVTFRfUkVUUlk7CisJCXJldHVybiBWTV9GQVVM VF9SRVRSWSB8IFZNX0ZBVUxUX05FRURfTU1BUF9MT0NLOwogCX0KIAogCXB0bCA9IHBtZF9sb2Nr KHZtYS0+dm1fbW0sIHZtZi0+cG1kKTsKZGlmZiAtLWdpdCBhL21tL21lbW9yeS5jIGIvbW0vbWVt b3J5LmMKaW5kZXggMWY4M2EyNmY4NzMzLi44OWM4YzhhNTJjMTYgMTAwNjQ0Ci0tLSBhL21tL21l bW9yeS5jCisrKyBiL21tL21lbW9yeS5jCkBAIC0zOTgwLDcgKzM5ODAsNyBAQCB2bV9mYXVsdF90 IF9fdm1mX2Fub25fcHJlcGFyZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZikKIAkJcmV0dXJuIDA7CiAJ aWYgKHZtZi0+ZmxhZ3MgJiBGQVVMVF9GTEFHX1ZNQV9MT0NLKSB7CiAJCWlmICghbW1hcF9yZWFk X3RyeWxvY2sodm1hLT52bV9tbSkpCi0JCQlyZXR1cm4gVk1fRkFVTFRfUkVUUlk7CisJCQlyZXR1 cm4gVk1fRkFVTFRfUkVUUlkgfCBWTV9GQVVMVF9ORUVEX01NQVBfTE9DSzsKIAl9CiAJaWYgKF9f YW5vbl92bWFfcHJlcGFyZSh2bWEpKQogCQlyZXQgPSBWTV9GQVVMVF9PT007CkBAIC00OTM3LDcg KzQ5MzcsNyBAQCB2bV9mYXVsdF90IGRvX3N3YXBfcGFnZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZikK IAkJCQkgKiB1bmRlciBWTUEgbG9jay4KIAkJCQkgKi8KIAkJCQl2bWFfZW5kX3JlYWQodm1hKTsK LQkJCQlyZXQgPSBWTV9GQVVMVF9SRVRSWTsKKwkJCQlyZXQgPSBWTV9GQVVMVF9SRVRSWSB8IFZN X0ZBVUxUX05FRURfTU1BUF9MT0NLOwogCQkJCWdvdG8gb3V0OwogCQkJfQogCi0tIAoyLjM5LjMg KEFwcGxlIEdpdC0xNDYpCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KbGludXgtcmlzY3YgbWFpbGluZyBsaXN0CmxpbnV4LXJpc2N2QGxpc3RzLmluZnJh ZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51 eC1yaXNjdgo= 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]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 68012CA5FE6 for ; Fri, 2 Oct 2026 19:30:55 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6A52F6B0095; Fri, 2 Oct 2026 15:30:49 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 67BD96B0096; Fri, 2 Oct 2026 15:30:49 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 569BE6B0098; Fri, 2 Oct 2026 15:30:49 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 22B366B0095 for ; Fri, 2 Oct 2026 15:30:49 -0400 (EDT) Received: from smtpin09.hostedemail.com (lb01a-stub [10.200.18.249]) by unirelay03.hostedemail.com (Postfix) with ESMTP id ADB0DA0822 for ; Fri, 2 Oct 2026 19:30:48 +0000 (UTC) X-FDA: 85278678576.09.0856567 Received: from tor.source.kernel.org (tor.source.kernel.org [172.105.4.254]) by imf18.hostedemail.com (Postfix) with ESMTP id F3F671C0010 for ; Fri, 2 Oct 2026 19:30:46 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20260515 header.b=d2r2hK5k; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf18.hostedemail.com: domain of baohua@kernel.org designates 172.105.4.254 as permitted sender) smtp.mailfrom=baohua@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1790969447; 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=ekKUYOby3c2j+NEGwfq/n/16hDsQN2mSgzvQPgHiWWI=; b=VQ/MPajuL5DQp6kFIvwQfrLVY+lbD2lSHW21YH5NAZCSlyfzdCkGsA6mThSY6wBU5ts2+j 4rIRygyBQqeEnHacdu5o7TvoQhrOA5zSLxuqbreBdCVCub9k0pG1E12hvqBfoVvJvIZLzj ckS5KKCNwZUb1hWZjn8RBcNaZbfrKEI= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20260515 header.b=d2r2hK5k; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf18.hostedemail.com: domain of baohua@kernel.org designates 172.105.4.254 as permitted sender) smtp.mailfrom=baohua@kernel.org ARC-Seal: i=1; a=rsa-sha256; d=hostedemail.com; s=arc-20220608; cv=none; t=1790969447; b=VMHLZbfeG/5nJzQOKNuOAExVzhVuj+mYnlodzLQzxTR2i4gSVt/xaAfUb19WZWprwxpf7V b2Tk9274rBQUv2eafNuRtIPaU9/pQvuhIp3I/Azy2+ql/iTiK8LWpVePoto4gzy7b2y9/S 4c5I6wje9t4QdkQpvC2NluDhDkABJNk= Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id 8CF3360D77; Fri, 2 Oct 2026 19:30:46 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 748A01F000FF; Fri, 2 Oct 2026 19:30:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1790969446; bh=ekKUYOby3c2j+NEGwfq/n/16hDsQN2mSgzvQPgHiWWI=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=d2r2hK5kCljTlCYwbBufk/wivX4jkvPY5GtMgJLcUIUGT4ktspgfRBivcG57guSh0 hmkWr9NCuIzN8DuY1j8dpdZ4MIgpfoMkhqfwhFne9TUTm7tvkDIkyqcyp6gifsaedU mNrCV965QKAOpjo5mT0u9456Q2feFcLsrcpn4yK2t79qy6ksjZH9IjiJABakb9YbL5 heJGGdWiGwwTNHAPJgbj/idVxDZSAeMzL3J8SODqqJovLo/2+7RpFWIqHOSOxNi79y Uw9DHbuSk9BoX3hzMhPL2bfOom2XjyLWZ7KwO9IQVaU87sthIFLqZfHTTSxGRCaWc8 PWPWsigErZcDg== From: Barry Song To: willy@infradead.org Cc: agordeev@linux.ibm.com, akpm@linux-foundation.org, alex@ghiti.fr, aou@eecs.berkeley.edu, baohua@kernel.org, borntraeger@linux.ibm.com, bp@alien8.de, catalin.marinas@arm.com, chenhuacai@kernel.org, chleroy@kernel.org, dave.hansen@linux.intel.com, david@kernel.org, gerald.schaefer@linux.ibm.com, gor@linux.ibm.com, hca@linux.ibm.com, hpa@zytor.com, kernel@xen0n.name, liam@infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, linux@armlinux.org.uk, linuxppc-dev@lists.ozlabs.org, ljs@kernel.org, loongarch@lists.linux.dev, luto@kernel.org, maddy@linux.ibm.com, mark.rutland@arm.com, mhocko@suse.com, mingo@redhat.com, mpe@ellerman.id.au, npiggin@gmail.com, palmer@dabbelt.com, peterz@infradead.org, pjw@kernel.org, rppt@kernel.org, shakeel.butt@linux.dev, surenb@google.com, svens@linux.ibm.com, tglx@kernel.org, vbabka@kernel.org, will@kernel.org, x86@kernel.org, zhanghongru06@gmail.com, zhanghongru@xiaomi.com, zhaonanzhe@xiaomi.com Subject: Re: [PATCH v6] mm: retry page faults once under the per-VMA lock Date: Sat, 3 Oct 2026 03:30:34 +0800 Message-Id: <20261002193034.86218-1-baohua@kernel.org> X-Mailer: git-send-email 2.39.3 (Apple Git-146) In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Stat-Signature: 3dehgcho47qauigqcobbra85mjfeepue X-Rspamd-Server: rspam11 X-Rspamd-Queue-Id: F3F671C0010 X-HE-Tag: 1790969446-61307 X-HE-Meta: U2FsdGVkX1/trGbd5pFs0ilppx1pho9qA2sJTE1DLMDHO9oAom7APzW57aWjgbNNL9uPBa2S6huvbazzckgZc6C0zEdM9yI7xvD/6e8foTqStb1L6n9popriffUYPqIw7lUrViLiBumi9IqVl3KAvfzgmp8phAus0PMD6XLW1f1tGRyL64Jkq62aofQn8u/Xbb8xrfvn5RXG59azdpKqW83lQFc0BJqjP6UuwpCaXAvGUCAI24JrCQ2ToyShKxp/d68sELq+E7IITIxb4kapfaPqNygl61fTx5JkOg3pJlG49MoDTcrD+onRWSsx9xsw4clpq28DW8/4PR5hfT2/4S/m/ORC2fMNbCybPA2TJjgMakE0RhGaIpcktifBJszI3j/NK+nGtLJbyUVtRrEGEGPv8aa8MY88MoOA4Q6tHTLr5KMVqN9IQS35+iiQ7jnfuxCD9QBCC3/0H/nAZza8EcU6S5BhCAt/iirf4G5u9INOAhUblhQHLK8VqEctFloxMxzWYLgLF3wCVef2xIlv+aHhNjRl3GLLZndulfLjkwnsYWlHgJGgrQC/WQNcBH170AoxY5V3kSybcaJk4qPpbsjfIfS4Ac3l3GM1C2UvOyTZd4hRRbQNQGdCezbAHABQODk/nEjY7dqvQcT1JioF2It366EHkxUSh1DWvqMuaGMWfr/T+yszVVegzbRPjY7HDUxxw1SqIEtMLiNB+1L6wZ8Wf8at1sPWIqnDXO48X/X9rCMI2uIj/L30lms/pcQKbwQ9BpGIrcbP31N4p6mWS5Wy70iL6BCCA1tS0gyk5z5VIrHiAbiSdSOUX1msJpFrQcOglP/Zn7KucRPD5a/PJ9NfR6Qt4ZLguwTC0R9PRwwP8Jh2jqQpV97PZiV6jSx3KTU1qcJpaEYcfdUlu+QsNiaWuULOrbBeSTE07SYALpmvlFdHdhFbvaFf2Xo3lhkOVjk55LWrr2KvPWXa5dm fBoJ0U2u HJom/e6sfCET0XjEIZIMLt1xCewhwq7nWIoOazfWcm0Lm6WJw/NQGeaQSyJ2LjNglyckUlotn7wx0BR1/HISfgHehK7Qeatl/GYFeEb82D5dX88BA7D4PvmlgYNKe7NS1wI2MIppAaYQGN1wYJhBShAjpYl70Ab6depmkf1mbMUrFW5JF774yWJFtGpdCeBOKGvgBONSwRXAbDhgBaZwZIgF01WlBlr45doFmVN6oRiKuoVNwx55X1cMPhEj9EobgCQjnwHEs84/NGE+r5BzcBUaFKYA4Ohm3/4Ly+j7UJEesx/JPhYu3qES3NlO38FaznhcGzdofpeZQ32YsaXnbEWdVinew/tPH6QdhiOw/grQRHZc= Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Fri, Oct 2, 2026 at 5:12 AM Matthew Wilcox wrote: > > On Mon, Sep 28, 2026 at 10:48:41AM +0800, Barry Song wrote: > > On Mon, Sep 28, 2026 at 6:55 AM Matthew Wilcox wrote: > > > So while doing my slides, I realised that what we need to avoid doing > > > is (a) sleeping while holding the mmap_lock (b) returning RETRY while > > > holding the VMA lock > > > > > > And that turns out to be as simple as this patch: > > > > > > diff --git a/include/linux/mm.h b/include/linux/mm.h > > > index dd09c438fa23..94ed2333f8d8 100644 > > > --- a/include/linux/mm.h > > > +++ b/include/linux/mm.h > > > @@ -723,6 +723,8 @@ enum { > > >   */ > > >  static inline bool fault_flag_allow_retry_first(enum fault_flag flags) > > >  { > > > +       if (flags & FAULT_FLAG_VMA_LOCK) > > > +               return false; > > >         return (flags & FAULT_FLAG_ALLOW_RETRY) && > > >             (!(flags & FAULT_FLAG_TRIED)); > > >  } > > > > > > OK, this is a hack.  The function is spectacularly badly named, and > > > needs to be renamed before a patch can go upstream.  But this should > > > fix the contention on mmap_lock. > > > > Thanks for your suggestion. > > This is exactly what we did in Android Common Kernel before we had > > Lorenzo's proposal (bypassing `fault_flag_allow_retry_first()`): > > > > https://android.googlesource.com/kernel/common/+/1b9b045a586245cc1c29b2747c6586234c7f5bad%5E%21/#F2 > > Looks like that one didn't cover __folio_lock_or_retry(), but that > doesn't invalidate your point. Yep. `__folio_lock_or_retry()` will make the same thing true for anon VMAs, so we intentionally made the hook valid only for file VMAs.Only touching the file retry path seems to involve less VMA contention. > > > Note that Lorenzo's proposal avoids mmap_lock contention without > > introducing any new VMA lock contention. It also doesn't require a new > > flag that would break KMI. So this is clearly the preferred approach. > > But it does retry multiple times in cases where we know the fault > will always fail (eg the fault is on a device-private VMA) > Right now, these might require a single extra retry for device-private and `__vmf_anon_prepare()` cases. The commit log also mentions this. "Some faults may retry unnecessarily, for example, those in __vmf_anon_prepare() or device-private fault handling, which require the mmap_lock. However, these cases are expected to be infrequent and only add one cheap per-VMA lock attempt." If we do want to remove the extra VMA lock attempt, we might still need an additional flag such as VM_FAULT_NEED_MMAP_LOCK: diff --git a/arch/arm64/mm/fault.c b/arch/arm64/mm/fault.c index 2cecf6ba6df7..2821e3bd7462 100644 --- a/arch/arm64/mm/fault.c +++ b/arch/arm64/mm/fault.c @@ -620,6 +620,7 @@ static int __kprobes do_page_fault(unsigned long far, unsigned long esr, struct vm_area_struct *vma; int si_code; int pkey = -1; + bool vma_lock_retried = false; if (kprobe_page_fault(regs, esr)) return 0; @@ -688,6 +689,7 @@ static int __kprobes do_page_fault(unsigned long far, unsigned long esr, if (!(mm_flags & FAULT_FLAG_USER)) goto lock_mmap; +lock_vma: vma = lock_vma_under_rcu(mm, addr); if (!vma) goto lock_mmap; @@ -734,6 +736,12 @@ static int __kprobes do_page_fault(unsigned long far, unsigned long esr, goto no_context; return 0; } + + if (!vma_lock_retried && !(fault & VM_FAULT_NEED_MMAP_LOCK)) { + vma_lock_retried = true; + goto lock_vma; + } + lock_mmap: retry: diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index 6141160ec652..baadab598d98 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h @@ -1734,10 +1734,11 @@ enum vm_fault_reason { VM_FAULT_NOPAGE = (__force vm_fault_t)0x000100, VM_FAULT_LOCKED = (__force vm_fault_t)0x000200, VM_FAULT_RETRY = (__force vm_fault_t)0x000400, - VM_FAULT_FALLBACK = (__force vm_fault_t)0x000800, - VM_FAULT_DONE_COW = (__force vm_fault_t)0x001000, - VM_FAULT_NEEDDSYNC = (__force vm_fault_t)0x002000, - VM_FAULT_COMPLETED = (__force vm_fault_t)0x004000, + VM_FAULT_NEED_MMAP_LOCK = (__force vm_fault_t)0x000800, + VM_FAULT_FALLBACK = (__force vm_fault_t)0x001000, + VM_FAULT_DONE_COW = (__force vm_fault_t)0x002000, + VM_FAULT_NEEDDSYNC = (__force vm_fault_t)0x004000, + VM_FAULT_COMPLETED = (__force vm_fault_t)0x008000, VM_FAULT_HINDEX_MASK = (__force vm_fault_t)0x0f0000, }; diff --git a/mm/huge_memory.c b/mm/huge_memory.c index ddc631a388b9..64e08c6153cf 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -1480,7 +1480,7 @@ vm_fault_t do_huge_pmd_device_private(struct vm_fault *vmf) if (vmf->flags & FAULT_FLAG_VMA_LOCK) { vma_end_read(vma); - return VM_FAULT_RETRY; + return VM_FAULT_RETRY | VM_FAULT_NEED_MMAP_LOCK; } ptl = pmd_lock(vma->vm_mm, vmf->pmd); diff --git a/mm/memory.c b/mm/memory.c index 1f83a26f8733..89c8c8a52c16 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -3980,7 +3980,7 @@ vm_fault_t __vmf_anon_prepare(struct vm_fault *vmf) return 0; if (vmf->flags & FAULT_FLAG_VMA_LOCK) { if (!mmap_read_trylock(vma->vm_mm)) - return VM_FAULT_RETRY; + return VM_FAULT_RETRY | VM_FAULT_NEED_MMAP_LOCK; } if (__anon_vma_prepare(vma)) ret = VM_FAULT_OOM; @@ -4937,7 +4937,7 @@ vm_fault_t do_swap_page(struct vm_fault *vmf) * under VMA lock. */ vma_end_read(vma); - ret = VM_FAULT_RETRY; + ret = VM_FAULT_RETRY | VM_FAULT_NEED_MMAP_LOCK; goto out; } -- 2.39.3 (Apple Git-146)