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 BB927C3DA64 for ; Tue, 6 Aug 2024 13:43:09 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2B3416B008C; Tue, 6 Aug 2024 09:43:09 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 23C896B0092; Tue, 6 Aug 2024 09:43:09 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0B6AC6B0093; Tue, 6 Aug 2024 09:43:09 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id DCDB66B008C for ; Tue, 6 Aug 2024 09:43:08 -0400 (EDT) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 8FBF11C06BD for ; Tue, 6 Aug 2024 13:43:08 +0000 (UTC) X-FDA: 82421936856.27.B92A0D5 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by imf08.hostedemail.com (Postfix) with ESMTP id D132F160021 for ; Tue, 6 Aug 2024 13:43:05 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=DEW6QBmm; spf=pass (imf08.hostedemail.com: domain of imbrenda@linux.ibm.com designates 148.163.156.1 as permitted sender) smtp.mailfrom=imbrenda@linux.ibm.com; dmarc=pass (policy=none) header.from=ibm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1722951754; a=rsa-sha256; cv=none; b=5GfJl7bwnFSNCmv9G6BbEILiV9XyKYbx+dbieuVjlzkLrLi+VxTPsRDFkvjr9XDzy73bvO ct0dc3N4iO8bStyGnWZ5/iH3YIe1fBu5DRI+FV9mpxR+d+HJ0ZoF1UyaCUd8on9aX+Z2tT KTk4iUwjvUdn4JK1Zzt83xZGwofBqU8= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=DEW6QBmm; spf=pass (imf08.hostedemail.com: domain of imbrenda@linux.ibm.com designates 148.163.156.1 as permitted sender) smtp.mailfrom=imbrenda@linux.ibm.com; dmarc=pass (policy=none) header.from=ibm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1722951754; 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=ViIYKO1MfeiBQ75UOWsEMrvjkCQ9oS8o3NQEk+YD2SY=; b=IlDjZQggafcjbv7X3i7GnqWcjIONKdBtlrhOJ23NCZ1d5omT+JEobG8AXrx8w5Ytqf1Cj5 NvZVn4JgymYbbtp0I+iL29xtpezwWn96wuQjWBGlLuJSg3yfRtlaZw9Y08sSnzr3bqFYPQ 9Eqjo32KZIleAiihHwx71gDzkCip9UE= Received: from pps.filterd (m0353729.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 476DRoHH018110; Tue, 6 Aug 2024 13:42:59 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=date :from:to:cc:subject:message-id:in-reply-to:references :mime-version:content-type:content-transfer-encoding; s=pp1; bh= ViIYKO1MfeiBQ75UOWsEMrvjkCQ9oS8o3NQEk+YD2SY=; b=DEW6QBmmpr1DTyaq t/tb2eW3cW39ts4r8GQiQCZIdtWv59eyB12PC5kT0hSvwojxns5giEi8eyo3IlCS xujOA+kCrZy+/MXCCVvE+Pt29SptJH418l6+GtfXbvJpeIS2M2Go/9MKM2vHdRVU ZDIySbCU+HNsCet0n0Q0k5xG1S49u0qU9C8mNaBeEN7Se/6cEIb5mTgCpggTRNJB CyvJeHOz5YkJJnaJPwwSMvHPzed7r0oQcxyL7gzq9GTdEuvCd+phB8daoKXUAzrb EobOHbX80GNAr05M1hWI+o3X/Tt7wV0gvPPNxbxCmyjaAJwkxkud9j7urQUZmJdK cRU/Vw== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 40umqw0153-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 06 Aug 2024 13:42:59 +0000 (GMT) Received: from m0353729.ppops.net (m0353729.ppops.net [127.0.0.1]) by pps.reinject (8.18.0.8/8.18.0.8) with ESMTP id 476DgwUb013419; Tue, 6 Aug 2024 13:42:58 GMT Received: from ppma13.dal12v.mail.ibm.com (dd.9e.1632.ip4.static.sl-reverse.com [50.22.158.221]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 40umqw0151-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 06 Aug 2024 13:42:58 +0000 (GMT) Received: from pps.filterd (ppma13.dal12v.mail.ibm.com [127.0.0.1]) by ppma13.dal12v.mail.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 476D07E5006490; Tue, 6 Aug 2024 13:42:57 GMT Received: from smtprelay06.fra02v.mail.ibm.com ([9.218.2.230]) by ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 40t13mbjpt-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 06 Aug 2024 13:42:57 +0000 Received: from smtpav02.fra02v.mail.ibm.com (smtpav02.fra02v.mail.ibm.com [10.20.54.101]) by smtprelay06.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 476DgpSx18809256 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 6 Aug 2024 13:42:53 GMT Received: from smtpav02.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 9E1242004E; Tue, 6 Aug 2024 13:42:51 +0000 (GMT) Received: from smtpav02.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 5C71E20043; Tue, 6 Aug 2024 13:42:51 +0000 (GMT) Received: from p-imbrenda.boeblingen.de.ibm.com (unknown [9.152.224.66]) by smtpav02.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 6 Aug 2024 13:42:51 +0000 (GMT) Date: Tue, 6 Aug 2024 15:42:49 +0200 From: Claudio Imbrenda To: David Hildenbrand Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-doc@vger.kernel.org, kvm@vger.kernel.org, linux-s390@vger.kernel.org, linux-fsdevel@vger.kernel.org, Andrew Morton , "Matthew Wilcox (Oracle)" , Jonathan Corbet , Christian Borntraeger , Janosch Frank , Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Sven Schnelle , Gerald Schaefer Subject: Re: [PATCH v1 00/11] mm: replace follow_page() by folio_walk Message-ID: <20240806154249.7dbfe37e@p-imbrenda.boeblingen.de.ibm.com> In-Reply-To: <20240802155524.517137-1-david@redhat.com> References: <20240802155524.517137-1-david@redhat.com> Organization: IBM X-Mailer: Claws Mail 4.3.0 (GTK 3.24.43; x86_64-redhat-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-TM-AS-GCONF: 00 X-Proofpoint-GUID: UghynHGbhXTN53HNCkKi-DtAS3l2Q8wb X-Proofpoint-ORIG-GUID: _M5No_THOE1ACOCJ7EhjKWEJXSyhoXHM X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.28.16 definitions=2024-08-06_11,2024-08-06_01,2024-05-17_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 phishscore=0 malwarescore=0 bulkscore=0 suspectscore=0 mlxscore=0 adultscore=0 clxscore=1011 lowpriorityscore=0 priorityscore=1501 mlxlogscore=371 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2407110000 definitions=main-2408060093 X-Stat-Signature: aimgi3jmejeegp7ei1tkzz87admbf3d8 X-Rspamd-Queue-Id: D132F160021 X-Rspam-User: X-Rspamd-Server: rspam10 X-HE-Tag: 1722951785-4586 X-HE-Meta: U2FsdGVkX1/RIjqjmSXca2NHtg3ix9isgoXk7FwzBqutLJ/geIH4vIaRkkhCYCvijmR5Bdta7akU7WeO8gHkV1TvbnGLokkNWFFC6Yuq2WySFQijdcRA+Xe39Oxts70hnMPXDaoWzNiBmdGb4DILf6+dhZWQEyl8obLSeRGh3RIuHiDoTU3eRnVEqpPL5zC/AV46ApyuWKihLa1xG5gJipO1hutpBfuuKefv7TiHVMChL3kVfkIbr0BQa8X+EfZYHgOm9LXm/heY7GJBDCgbVWymdbpV6iuHa0LnS9S08vQZmyCz7mT5fRIJ7Tg1tzYJLvRqRfphSkzfcCC36JhDZOC8TUKVaM+TUG4z2q6jLLQd2NSsahog0cAi8zeTCaua2NjieKRvAQPMMcIfKx5P4MtP3HvveI9Zj3PHIpaTmUZ2VmHxjEoqqIzmQyodGP9pBJ/GFhQ+VZbq+BuAtscg8Hz6YKHLwk8N8Yp2LlFpPeL2AyY07Qdz4sdkMJwVEAUd6a4zhAnUldGxl+xN5wkUe7JRsBvl92WiUUgW5Ai35H9xXvR4IYmkFMTpNi1gQWe7ojG/D6HFs7AQnN2H/1W2nSSPhXM9n/Ur5r2BdaUhXXjVEpU2Lo10JavQiq7J2eK9bLtLt+wY5AbCAK82800MdycZcOIC9SldVfF0Q+p6xcLbKxKBJpIQRqBI4nLhA3MrCTYXbjhsW2+uhZVHhAxqdn9Naa3xh/V4gOlHhEhE262ekBR63dPskzASCFDQOzhuFd2NWAFY3gDe6q1TTnOL1ziWNtIxF01/ZALBiLV3qIuX4PkdRu5zF/HmorPi8uj+nv6LlTnyUtEVDA4on70m+qif2ORBco2+fWm6UT4Hva3GI7DSe4WR3/hJnj24rFVy8MudHXPTLS9ppwrjJWu1GaRdMkHSevn3yY0XrhaRKPVtVC1J7r7rts9BWhFz0imoGEAtuzsS41sVriJrF88 DB7UOt+e SDXE5dJLekHbXFTnB4kFi/8cEHL9dDFovFf9ZbL3oWtY4zdshbV0hKiorrpt+4X8UgEJq6wR03vXRIHdnhyTEb/x2pL/mGzW1F0rbcSNBY69bIvPJF9IPNQH5zgy3HljyJfAp3Y9yHSe/VzqHtnX5qDCN3kCY34ilIlTREqQHQZotO4NS38fSmqRTM0NL4vjCuwEXYn+wQqrGkhBLSN7OgmMSgLcjgWli+e2bZzpbX8Gu8/ymLPHhNy1n2DP3oByad2dY0/iS15G+pynMi1ka1zDK4kV8vTJrW3Zg11tTHTUV+w/ZR1C1IyBbzZu4etNZpjCQ/a7+Pz2o6VUqEkoI0qVLprzfnISWaOwlCs5uOU3UDHMv/wKGG+oYPw5V1K4p8z4ojUBdP32envGLopMdDxqtBcLBonHQ/a0eTigggLI5hyYvEdCK1nv4yCVIZvDYPqMHQk/EdYlGLoAmjN3YBq0tagzN3NRaXfuuGLqmCi5NJZbHusSCKorPo+/vFVLgqBUGPilvEKokWxdBnWZvngdJ76IWVY5ItCv1MJv+XxxJOqBCOgKnaeOQBmzFwMuJIPW+Yqx82gb/HhMVDEEzBgeacahs4T/u6qp7 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 Fri, 2 Aug 2024 17:55:13 +0200 David Hildenbrand wrote: > Looking into a way of moving the last folio_likely_mapped_shared() call > in add_folio_for_migration() under the PTL, I found myself removing > follow_page(). This paves the way for cleaning up all the FOLL_, follow_* > terminology to just be called "GUP" nowadays. > > The new page table walker will lookup a mapped folio and return to the > caller with the PTL held, such that the folio cannot get unmapped > concurrently. Callers can then conditionally decide whether they really > want to take a short-term folio reference or whether the can simply > unlock the PTL and be done with it. > > folio_walk is similar to page_vma_mapped_walk(), except that we don't know > the folio we want to walk to and that we are only walking to exactly one > PTE/PMD/PUD. > > folio_walk provides access to the pte/pmd/pud (and the referenced folio > page because things like KSM need that), however, as part of this series > no page table modifications are performed by users. > > We might be able to convert some other walk_page_range() users that really > only walk to one address, such as DAMON with > damon_mkold_ops/damon_young_ops. It might make sense to extend folio_walk > in the future to optionally fault in a folio (if applicable), such that we > can replace some get_user_pages() users that really only want to lookup > a single page/folio under PTL without unconditionally grabbing a folio > reference. > > I have plans to extend the approach to a range walker that will try > batching various page table entries (not just folio pages) to be a better > replace for walk_page_range() -- and users will be able to opt in which > type of page table entries they want to process -- but that will require > more work and more thoughts. > > KSM seems to work just fine (ksm_functional_tests selftests) and > move_pages seems to work (migration selftest). I tested the leaf > implementation excessively using various hugetlb sizes (64K, 2M, 32M, 1G) > on arm64 using move_pages and did some more testing on x86-64. Cross > compiled on a bunch of architectures. > > I am not able to test the s390x Secure Execution changes, unfortunately. the series looks good; we will do some tests and report back if everything is ok > > Cc: Andrew Morton > Cc: "Matthew Wilcox (Oracle)" > Cc: Jonathan Corbet > Cc: Christian Borntraeger > Cc: Janosch Frank > Cc: Claudio Imbrenda > Cc: Heiko Carstens > Cc: Vasily Gorbik > Cc: Alexander Gordeev > Cc: Sven Schnelle > Cc: Gerald Schaefer > > David Hildenbrand (11): > mm: provide vm_normal_(page|folio)_pmd() with > CONFIG_PGTABLE_HAS_HUGE_LEAVES > mm/pagewalk: introduce folio_walk_start() + folio_walk_end() > mm/migrate: convert do_pages_stat_array() from follow_page() to > folio_walk > mm/migrate: convert add_page_for_migration() from follow_page() to > folio_walk > mm/ksm: convert get_mergeable_page() from follow_page() to folio_walk > mm/ksm: convert scan_get_next_rmap_item() from follow_page() to > folio_walk > mm/huge_memory: convert split_huge_pages_pid() from follow_page() to > folio_walk > s390/uv: convert gmap_destroy_page() from follow_page() to folio_walk > s390/mm/fault: convert do_secure_storage_access() from follow_page() > to folio_walk > mm: remove follow_page() > mm/ksm: convert break_ksm() from walk_page_range_vma() to folio_walk > > Documentation/mm/transhuge.rst | 6 +- > arch/s390/kernel/uv.c | 18 ++- > arch/s390/mm/fault.c | 16 ++- > include/linux/mm.h | 3 - > include/linux/pagewalk.h | 58 ++++++++++ > mm/filemap.c | 2 +- > mm/gup.c | 24 +--- > mm/huge_memory.c | 18 +-- > mm/ksm.c | 127 +++++++++------------ > mm/memory.c | 2 +- > mm/migrate.c | 131 ++++++++++----------- > mm/nommu.c | 6 - > mm/pagewalk.c | 202 +++++++++++++++++++++++++++++++++ > 13 files changed, 413 insertions(+), 200 deletions(-) >