From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 2EB3F35C1A1 for ; Wed, 24 Dec 2025 13:51:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766584290; cv=none; b=OgTFsEMzQUx2n0wUJnX+MKIPDcZ+DLnM0sRa58fRUX0UJRUkwIULY4IV17WWvxOzZY+AJIKHICaL3Tiyj1z2NhWDnKmm8SJ43pKwVuHssz8GEf2nPU9/qXcOIqISw77ImGsVeDZ2x+PjPPB7KhTzds46HJrueJgngh5GH5TtlS0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766584290; c=relaxed/simple; bh=2GAgFFqyuE1X+pMZDwiPj3otUKOshRjJefUUrZQZSKo=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=ZIFpwDyPhF5Lt8VcuEuAKILGLMt20JQwdjGatVLX07YMj35qbUIWmPTSNwVGK9cDB8OXO4Zh2IJCYFW1T/K9sVSTwb9TMQCtnRwxOyQDHDuR1yTUokTc5jI9kDpuGC/4dOPDmsouZG59kKUoJDgJ1htHZ8p/jrIf1nMDYtwq6F8= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=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 3E673339; Wed, 24 Dec 2025 05:51:20 -0800 (PST) Received: from [10.57.93.190] (unknown [10.57.93.190]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id A15DB3F694; Wed, 24 Dec 2025 05:51:24 -0800 (PST) Message-ID: <6440050d-844b-4587-8531-038038d32f67@arm.com> Date: Wed, 24 Dec 2025 13:51:22 +0000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v4 2/5] arm64: mm: factor out the address and ptep alignment into a new helper Content-Language: en-GB To: Baolin Wang , akpm@linux-foundation.org, david@kernel.org, catalin.marinas@arm.com, will@kernel.org Cc: lorenzo.stoakes@oracle.com, Liam.Howlett@oracle.com, vbabka@suse.cz, rppt@kernel.org, surenb@google.com, mhocko@suse.com, riel@surriel.com, harry.yoo@oracle.com, jannh@google.com, willy@infradead.org, baohua@kernel.org, dev.jain@arm.com, linux-mm@kvack.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org References: <47e29030347c23ffce238ff5ed752da01a8cc7cb.1766455378.git.baolin.wang@linux.alibaba.com> From: Ryan Roberts In-Reply-To: <47e29030347c23ffce238ff5ed752da01a8cc7cb.1766455378.git.baolin.wang@linux.alibaba.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 23/12/2025 05:48, Baolin Wang wrote: > Factor out the contpte block's address and ptep alignment into a new helper, > and will be reused in the following patch. > > No functional changes. > > Signed-off-by: Baolin Wang LGTM: Reviewed-by: Ryan Roberts > --- > arch/arm64/mm/contpte.c | 29 +++++++++++++++++++++-------- > 1 file changed, 21 insertions(+), 8 deletions(-) > > diff --git a/arch/arm64/mm/contpte.c b/arch/arm64/mm/contpte.c > index 589bcf878938..e4ddeb46f25d 100644 > --- a/arch/arm64/mm/contpte.c > +++ b/arch/arm64/mm/contpte.c > @@ -26,6 +26,26 @@ static inline pte_t *contpte_align_down(pte_t *ptep) > return PTR_ALIGN_DOWN(ptep, sizeof(*ptep) * CONT_PTES); > } > > +static inline pte_t *contpte_align_addr_ptep(unsigned long *start, > + unsigned long *end, pte_t *ptep, > + unsigned int nr) > +{ > + /* > + * Note: caller must ensure these nr PTEs are consecutive (present) > + * PTEs that map consecutive pages of the same large folio within a > + * single VMA and a single page table. > + */ > + if (pte_cont(__ptep_get(ptep + nr - 1))) > + *end = ALIGN(*end, CONT_PTE_SIZE); > + > + if (pte_cont(__ptep_get(ptep))) { > + *start = ALIGN_DOWN(*start, CONT_PTE_SIZE); > + ptep = contpte_align_down(ptep); > + } > + > + return ptep; > +} > + > static void contpte_try_unfold_partial(struct mm_struct *mm, unsigned long addr, > pte_t *ptep, unsigned int nr) > { > @@ -569,14 +589,7 @@ void contpte_clear_young_dirty_ptes(struct vm_area_struct *vma, > unsigned long start = addr; > unsigned long end = start + nr * PAGE_SIZE; > > - if (pte_cont(__ptep_get(ptep + nr - 1))) > - end = ALIGN(end, CONT_PTE_SIZE); > - > - if (pte_cont(__ptep_get(ptep))) { > - start = ALIGN_DOWN(start, CONT_PTE_SIZE); > - ptep = contpte_align_down(ptep); > - } > - > + ptep = contpte_align_addr_ptep(&start, &end, ptep, nr); > __clear_young_dirty_ptes(vma, start, ptep, (end - start) / PAGE_SIZE, flags); > } > EXPORT_SYMBOL_GPL(contpte_clear_young_dirty_ptes);