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 24446C021B2 for ; Tue, 25 Feb 2025 15:43:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AC85B6B0092; Tue, 25 Feb 2025 10:43:14 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id A78246B0095; Tue, 25 Feb 2025 10:43:14 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 967506B0096; Tue, 25 Feb 2025 10:43:14 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 716E06B0092 for ; Tue, 25 Feb 2025 10:43:14 -0500 (EST) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 21F50141884 for ; Tue, 25 Feb 2025 15:43:14 +0000 (UTC) X-FDA: 83158885908.13.BE969DC Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf09.hostedemail.com (Postfix) with ESMTP id 2C73B14001B for ; Tue, 25 Feb 2025 15:43:11 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=arm.com; spf=pass (imf09.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1740498192; 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=PMSevmP25jDlHbCmAt/SAJg02V/QK2/1dPbCM298kg0=; b=4QsCLP1tFjzh5WDpRLaz/i+oNqmSRgS5CUW6PzzrN7zy1L9CDVM6Jhxjo5xUzsRH3hvFb+ dPTgy18Eu5Gk5zWQpegKN01EjQZ6wY6pcDSm9J/h+b7IEhRVGiFvDYWb25lohW/HERWW3s Yx5iXxANEoeYoqBj9UHNfIW4vhP7RkQ= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=arm.com; spf=pass (imf09.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740498192; a=rsa-sha256; cv=none; b=1dYGW3wEiSDQwrOLmNL5u6UBTR55Cluo2LLbs23EGB+q22h+djJXOxaZbf7fmhU3Ljkn2A Ow0HbZpXVXgB6Tb3e6KsmTZkHvyrz/gZZcUOmINLhTPI3BwsIUgtco6URW0d5btC+nvO3a AmpE/0uMAOAdy28K4tddCE/fM0RytD4= 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 6A0CD1BCB; Tue, 25 Feb 2025 07:43:27 -0800 (PST) Received: from [10.1.27.154] (XHFQ2J9959.cambridge.arm.com [10.1.27.154]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id BF7D43F5A1; Tue, 25 Feb 2025 07:43:05 -0800 (PST) Message-ID: <290f858c-07d4-4690-998c-2aefac664d7b@arm.com> Date: Tue, 25 Feb 2025 15:43:04 +0000 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 1/4] mm: hugetlb: Add huge page size param to huge_ptep_get_and_clear() Content-Language: en-GB To: Alexander Gordeev 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 References: <20250217140419.1702389-1-ryan.roberts@arm.com> <20250217140419.1702389-2-ryan.roberts@arm.com> From: Ryan Roberts In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspam-User: X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 2C73B14001B X-Stat-Signature: o838jdf65aoq95xq54rb7apndzkxbs6f X-HE-Tag: 1740498191-84312 X-HE-Meta: U2FsdGVkX18BSXhT5nsfj7i3rGccbeyp4hAwOdKn75zLfq3nW9zu08JAydbr9K6S3kCNK0b8n5oP+573oJQD0+cVT8XAb57X53K2rZ/n/6AfmkvcGR8zE1GM4HrmuKuJzCezw5CiwMekI7O299Wu4R1T6+6RcUZrwSTpszitabKeE69kvid+bGFvGPrqSugEPBl7V5KEgr2D9gVo17eL5XW2J0oQ+IRrOXmJsHWGkqKNawcM3hTjDPJ8lp/i0FDjfis4a7Jy9n0laO6pmYTdCYBtehA+sUseEGKXcel3xU8lvaO6qhuiIkKPWul8/odeGSBxKVD8qZMm7qAssUC+Ngw6ItGZy6p0uWWA1K5K+XoVXSme4qsSkG0MHdf2rye5OlBXN2VT5tCPz3feAouziI63wLmCrbG501mz1XI0cx5myXJqmnl+e5dbpRxR9GhA4tsj5U9e5OPuXuP6dMqNOVC8Hm1zM0SXwh4RxijQBhn6I8LXgAza0fWybwjTRbOP8tIpeJdTNZEHTO/Zou09kg3HECOiRd60A0VtCdrNco+ESsSHse0iZOb6IyuEJagCyT0vc5XdluEj+W2zQHSF9yt0kQ6Y4Od+PB7SFwWB1kXc6xEZPUOsYd+cMEwRXJl+q8ePtFEEFOX2LIJ0CduhL5Vt5qBt/UJrZCeCBE2vF4ocwxc75+MlHNOrZxRNyl1D1X4J9gmHTqCOu9ze7PX3zptaFDUUZTQVJLoEnjf2GbKkFVtEQu16PL/uAH7IcRbpJeWhVk+sJeqA9L2szXQFKTzNMkna1lcZMxYnjUdhSxh9aYlIDklCXLzZlVfsCar9HbZ0J0YCgRPqFG1fuJp6kpv2dBHOSwGYWvdRsGh8Swwz1oQI01VGOlcHWsll8MLvdZRpOoX5MDGCXDx4mcEPlbKZwuwH99acIlO+oJW8cRdJYmyXFQWQJyl9ZytPah+3uKHnTyDV0Rf5jrg5s4F ciipEbZM nCwe2uwCm2hIQGN/bE4XHlL22PjXJ92djlqCCvrobd+g/KIGtDeeYxNOsyVSPGuJ2bXEKCZmsN7ug6ACjxXeA26/hGjxMqpySElnAW3z0HLRu91sEtq/Ml+drdwWPmbSOGwFN/UNUAdghHemf3bepmHkMxfXRyUPv3CPWKHwCaDvksECka9n7QXugx0ED7QZTwu4gsfJyCVLLefM90l1p+fJeqRb4hS7Hhaq2gvHBCJCSYqdnLd8rxt4se+SfCBfd9g1h9iYC72mFD+uuwtVFhOQWNg== 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 25/02/2025 14:25, Alexander Gordeev wrote: > 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. Appologies. I've fixed this for the next version. > >> +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. Formatting fixed here too. > >> 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()? I was trying to make the change as uninvasive as possible, so didn't want to change the linkage in case I accidentally broke something. Happy to make this an inline in the header though, if you prefer? Thanks, Ryan > >> pte_t *huge_pte_alloc(struct mm_struct *mm, struct vm_area_struct *vma, >> unsigned long addr, unsigned long sz) >> { > ... > > Thanks!