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 CD4D7C021BB for ; Tue, 25 Feb 2025 14:25:58 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4EAB66B0082; Tue, 25 Feb 2025 09:25:58 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 49A666B0085; Tue, 25 Feb 2025 09:25:58 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 33A8A6B0088; Tue, 25 Feb 2025 09:25:58 -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 14F9A6B0082 for ; Tue, 25 Feb 2025 09:25:58 -0500 (EST) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id B8614B1D5B for ; Tue, 25 Feb 2025 14:25:57 +0000 (UTC) X-FDA: 83158691154.16.97B2429 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by imf24.hostedemail.com (Postfix) with ESMTP id 41BC718001A for ; Tue, 25 Feb 2025 14:25:55 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=jtRnHEGo; spf=pass (imf24.hostedemail.com: domain of agordeev@linux.ibm.com designates 148.163.156.1 as permitted sender) smtp.mailfrom=agordeev@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=1740493555; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=wvxAuSGVB9Fk2YXlPJPH6TjtzJg78Cc3kmQfhG3Xd3w=; b=vUSxuqn5TOAKydlW1b2MAYa7q6mR0kjjaN4BB6EZse48jaL/Y2b6u9Ykf06JIsjur+QXOL BAd6+dPGYmtnz9U2n0ewozGY+Ob39YSMekeQZYSmRMbkZ2LRmARQXDR1i6zMSkqPDCRztp ASjOtYuVI5mrLvHl6gQZppAzNlywL0c= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=jtRnHEGo; spf=pass (imf24.hostedemail.com: domain of agordeev@linux.ibm.com designates 148.163.156.1 as permitted sender) smtp.mailfrom=agordeev@linux.ibm.com; dmarc=pass (policy=none) header.from=ibm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740493555; a=rsa-sha256; cv=none; b=wbeZ50Gwt6HmzDheEiSp019vCQfFOYXLtXrglphOjvUHLdKnUaD57RTte+g8W1uZPNDfYR XKodlp0Jri8Es9uIZmRmPsEfygLxCTkE9NV60Pg77zI64jhZIS2NocHGaYSD/+fXTDxle1 j4s+pV0zcDPV7L7Y+QjkkkkQ1Mm2qSE= Received: from pps.filterd (m0356517.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 51PDjZh8022623; Tue, 25 Feb 2025 14:25:28 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-type:date:from:in-reply-to:message-id:mime-version :references:subject:to; s=pp1; bh=wvxAuSGVB9Fk2YXlPJPH6TjtzJg78C c3kmQfhG3Xd3w=; b=jtRnHEGoTj6EJFDmINcSULObNgdDWy6ro0FozVsnHV2eQY qLzh3kD5Gvxo6yw46CKSxwRFyQ36iYBUqO7oMWPZQDRR9TTe5T+KNL8Eip5mALGq btHuDCFdZUGq55vDaJfVRKzmRSoTG95jnw54s96zu6DhhQcjl9QDxBjp1ZNa6vVN iojCsFCYV+KZk5okWrwZu+W5tTcKhzwpULwrsQiLYw6D9dDcUmOwRygFnKGz1LUs aHbu0SbWV8efEIHqcKNpaTRBCMCtawK3r3UlfmjODC1upfAneRoBMy2EpT5OiE2d fVJgkfEquORT1c29LFkakg/OIDLsMHs+bjbIh+Jg== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4511wabtb5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 25 Feb 2025 14:25:27 +0000 (GMT) Received: from m0356517.ppops.net (m0356517.ppops.net [127.0.0.1]) by pps.reinject (8.18.0.8/8.18.0.8) with ESMTP id 51PEPOoh025571; Tue, 25 Feb 2025 14:25:26 GMT Received: from ppma12.dal12v.mail.ibm.com (dc.9e.1632.ip4.static.sl-reverse.com [50.22.158.220]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4511wabtb0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 25 Feb 2025 14:25:26 +0000 (GMT) Received: from pps.filterd (ppma12.dal12v.mail.ibm.com [127.0.0.1]) by ppma12.dal12v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 51PCtwCK012457; Tue, 25 Feb 2025 14:25:25 GMT Received: from smtprelay04.fra02v.mail.ibm.com ([9.218.2.228]) by ppma12.dal12v.mail.ibm.com (PPS) with ESMTPS id 44yrwsnjmr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 25 Feb 2025 14:25:25 +0000 Received: from smtpav07.fra02v.mail.ibm.com (smtpav07.fra02v.mail.ibm.com [10.20.54.106]) by smtprelay04.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 51PEPLDs31261438 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 25 Feb 2025 14:25:22 GMT Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id D28C52004E; Tue, 25 Feb 2025 14:25:21 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id D253A2004D; Tue, 25 Feb 2025 14:25:20 +0000 (GMT) Received: from li-008a6a4c-3549-11b2-a85c-c5cc2836eea2.ibm.com (unknown [9.155.204.135]) by smtpav07.fra02v.mail.ibm.com (Postfix) with ESMTPS; Tue, 25 Feb 2025 14:25:20 +0000 (GMT) Date: Tue, 25 Feb 2025 15:25:19 +0100 From: Alexander Gordeev To: Ryan Roberts Cc: Catalin Marinas , Will Deacon , Huacai Chen , WANG Xuerui , Thomas Bogendoerfer , "James E.J. Bottomley" , Helge Deller , Madhavan Srinivasan , Michael Ellerman , Nicholas Piggin , Christophe Leroy , Naveen N Rao , Paul Walmsley , Palmer Dabbelt , Albert Ou , Heiko Carstens , Vasily Gorbik , Christian Borntraeger , Sven Schnelle , Gerald Schaefer , "David S. Miller" , Andreas Larsson , Arnd Bergmann , Muchun Song , Andrew Morton , Uladzislau Rezki , Christoph Hellwig , David Hildenbrand , "Matthew Wilcox (Oracle)" , Mark Rutland , Anshuman Khandual , Dev Jain , Kevin Brodsky , Alexandre Ghiti , linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org Subject: Re: [PATCH v2 1/4] mm: hugetlb: Add huge page size param to huge_ptep_get_and_clear() Message-ID: References: <20250217140419.1702389-1-ryan.roberts@arm.com> <20250217140419.1702389-2-ryan.roberts@arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20250217140419.1702389-2-ryan.roberts@arm.com> X-TM-AS-GCONF: 00 X-Proofpoint-GUID: hRWfN18hEO2fPQP9rHHQq1sJOqEpDKtg X-Proofpoint-ORIG-GUID: fwGWLQmJP9EGxhfU0y0PNHJe6OP6pufb X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-02-25_04,2025-02-25_03,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxlogscore=824 mlxscore=0 malwarescore=0 spamscore=0 impostorscore=0 lowpriorityscore=0 priorityscore=1501 bulkscore=0 suspectscore=0 phishscore=0 clxscore=1011 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2502250096 X-Rspamd-Queue-Id: 41BC718001A X-Stat-Signature: 4yykongw5pu4by45q83q6ti8e45ajkw3 X-Rspam-User: X-Rspamd-Server: rspam01 X-HE-Tag: 1740493555-279313 X-HE-Meta: U2FsdGVkX1/AVhPRGmlJMkJgMsTtEWQC9d9Ye9WPSXI1Bt2TGHCegDL1Uu3K+6zUVupUgIGJQkLvV0+t8+uc0603fzcVcxBlu5UI/vb8w/mt2r0ZU3SX0ur46ktstk1hp4MLonczBvGwBh7RErrvDYzwfF2Zr5ZvSMUmPLOMXlFPbzvJrjTm7JkFAl+D7/Ah6U+pEtdj0UdtW3dqGn7pltNO/Cyhi8SW+s9k2dFWgqfiQHreGE92HiD9ujuSLzLGTbCI+YyPM8cb164bbfZjeOcQBmUw6xUQ7ELpwf3NXoSiIboj6Edaft//2TtTrausy2k1dssnoPm2zkDGIX+vb4pxwRTxR+/vtHXw7cflT/SrVGc/Q/AU90uLfPcWOSjm1i0lKOdaL/YXsfgm7493tb8DTv0kWlgvYXTN4HhrPxj/lQDsxoL1cdNk2Fo/J1gKHpqHqN4Z3v/yyUQFpW0NyDEl4DsYIug5MJG68r6rwkIDpXCVqBzQHFalxg4iaxdMidhWsgDfRoHX4hVIzMCFVLAuBGRj/KGXXjIrOW2mWQSwVi4my9Cy+w+Fi6qrRG8nXwNA9E2uKconzz6tiFBrfwsrJszuvF33/o0i92FRoF4xHGoPUlTadFIaHPImGPP2PBWlFGrC0ftcf65piJlsGr8yX7fKovb0iKWs24o4xTqpE+VNaY0Ek7fZy2iZBgabBbph+IBAq4egjKmGbpbVaVGTvXDL3KE8fr/kdmDNLtCNoQuaPdMc/ixWVAOh/XOxbzsBij/z9tyWzWiIitnMtlzk8TB8A0r8OOlOHgQeJdHUg5FRdMxHhHGtDlAeXQj8lnS7VMEkanyCH5Evk3yZneoN+yxIhc8oyOac4zOFc6fUbYccw+TAPFdCc3riGsbheb1fF4U2oSeNK7ARJYMLay2t7nFfNyvUh6HQoLNOlRIK5gBrqTQD6obbYJE8CByujrI6QLSnfJqY2OCpNFL zQr/Z1/t JKRSZDQk6Lzd9tQtdChdf/e9n47OPibobtn5TYSDtyDiC/JQelP76yO2E5/66rRwXF5OFG/cfTde9qiMesnPMf/nmEFQkNMEfkyirZn+NuJtEE4A0UA8Kh2Uw+w5hcDhg87jgozt5GavX0Oqe5NruHLKABajjGMuBGAEjAJg9Nszy7MWSbxLYJ1gBXfgCa61cF6SoEJU4nLaybqxVWLDPEX6haTk4Td4CMqX+wOv8xf5eWt5fO9N5pLop1YSoTIzP96FIoBAOWS7Ze57Myo+5wqDreXsijJ2kx8s6FVT2lgRjDl382w0lczFRfZ/1zFjmweHS45MmAD8qaY0mcuTkDHkwOj4JB/W+ISLk/QIa1n1OUF6oOeY4Ph7s5Udq2Dznc2QO4NVa7Tc2CImSDf856JwAv18RIkQT/G9dmEGZ1d/WJxYC354BshHsvpkTlQUr4o9DEowq9gUqiMSaZCmZmJm/f5TxhmQunjkM 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 Mon, Feb 17, 2025 at 02:04:14PM +0000, Ryan Roberts wrote: Hi Ryan, > In order to fix a bug, arm64 needs to be told the size of the huge page > for which the huge_pte is being set in huge_ptep_get_and_clear(). > Provide for this by adding an `unsigned long sz` parameter to the > function. This follows the same pattern as huge_pte_clear() and > set_huge_pte_at(). > > This commit makes the required interface modifications to the core mm as > well as all arches that implement this function (arm64, loongarch, mips, > parisc, powerpc, riscv, s390, sparc). The actual arm64 bug will be fixed > in a separate commit. > > Cc: stable@vger.kernel.org > Fixes: 66b3923a1a0f ("arm64: hugetlb: add support for PTE contiguous bit") > Signed-off-by: Ryan Roberts > --- ... > diff --git a/arch/s390/include/asm/hugetlb.h b/arch/s390/include/asm/hugetlb.h > index 7c52acaf9f82..420c74306779 100644 > --- a/arch/s390/include/asm/hugetlb.h > +++ b/arch/s390/include/asm/hugetlb.h > @@ -26,7 +26,11 @@ void __set_huge_pte_at(struct mm_struct *mm, unsigned long addr, > pte_t huge_ptep_get(struct mm_struct *mm, unsigned long addr, pte_t *ptep); > > #define __HAVE_ARCH_HUGE_PTEP_GET_AND_CLEAR > -pte_t huge_ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep); > +pte_t huge_ptep_get_and_clear(struct mm_struct *mm, > + unsigned long addr, pte_t *ptep, > + unsigned long sz); Please, format parameters similarily to set_huge_pte_at() few lines above. > +pte_t __huge_ptep_get_and_clear(struct mm_struct *mm, > + unsigned long addr, pte_t *ptep); The formatting is broken, but please see below. > static inline void arch_clear_hugetlb_flags(struct folio *folio) > { > @@ -48,7 +52,7 @@ static inline void huge_pte_clear(struct mm_struct *mm, unsigned long addr, > static inline pte_t huge_ptep_clear_flush(struct vm_area_struct *vma, > unsigned long address, pte_t *ptep) > { > - return huge_ptep_get_and_clear(vma->vm_mm, address, ptep); > + return __huge_ptep_get_and_clear(vma->vm_mm, address, ptep); > } > > #define __HAVE_ARCH_HUGE_PTEP_SET_ACCESS_FLAGS > @@ -59,7 +63,7 @@ static inline int huge_ptep_set_access_flags(struct vm_area_struct *vma, > int changed = !pte_same(huge_ptep_get(vma->vm_mm, addr, ptep), pte); > > if (changed) { > - huge_ptep_get_and_clear(vma->vm_mm, addr, ptep); > + __huge_ptep_get_and_clear(vma->vm_mm, addr, ptep); > __set_huge_pte_at(vma->vm_mm, addr, ptep, pte); > } > return changed; > @@ -69,7 +73,7 @@ static inline int huge_ptep_set_access_flags(struct vm_area_struct *vma, > static inline void huge_ptep_set_wrprotect(struct mm_struct *mm, > unsigned long addr, pte_t *ptep) > { > - pte_t pte = huge_ptep_get_and_clear(mm, addr, ptep); > + pte_t pte = __huge_ptep_get_and_clear(mm, addr, ptep); > > __set_huge_pte_at(mm, addr, ptep, pte_wrprotect(pte)); > } > diff --git a/arch/s390/mm/hugetlbpage.c b/arch/s390/mm/hugetlbpage.c > index d9ce199953de..52ee8e854195 100644 > --- a/arch/s390/mm/hugetlbpage.c > +++ b/arch/s390/mm/hugetlbpage.c > @@ -188,8 +188,8 @@ pte_t huge_ptep_get(struct mm_struct *mm, unsigned long addr, pte_t *ptep) > return __rste_to_pte(pte_val(*ptep)); > } > > -pte_t huge_ptep_get_and_clear(struct mm_struct *mm, > - unsigned long addr, pte_t *ptep) > +pte_t __huge_ptep_get_and_clear(struct mm_struct *mm, > + unsigned long addr, pte_t *ptep) > { > pte_t pte = huge_ptep_get(mm, addr, ptep); > pmd_t *pmdp = (pmd_t *) ptep; > @@ -202,6 +202,12 @@ pte_t huge_ptep_get_and_clear(struct mm_struct *mm, > return pte; > } > > +pte_t huge_ptep_get_and_clear(struct mm_struct *mm, > + unsigned long addr, pte_t *ptep, unsigned long sz) > +{ > + return __huge_ptep_get_and_clear(mm, addr, ptep); > +} Is there a reason why this is not a header inline, as other callers of __huge_ptep_get_and_clear()? > pte_t *huge_pte_alloc(struct mm_struct *mm, struct vm_area_struct *vma, > unsigned long addr, unsigned long sz) > { ... Thanks!