Re: [PATCH v5 21/25] arm64/mm: Implement new [get_and_]clear_full_ptes() batch APIs
From: Mark Rutland <mark.rutland@arm.com>
Date: 2024-02-13 16:53:08
Also in:
linux-arm-kernel, linux-mm, lkml
From: Mark Rutland <mark.rutland@arm.com>
Date: 2024-02-13 16:53:08
Also in:
linux-arm-kernel, linux-mm, lkml
On Tue, Feb 13, 2024 at 04:48:50PM +0000, Ryan Roberts wrote:
On 13/02/2024 16:43, Mark Rutland wrote:quoted
On Fri, Feb 02, 2024 at 08:07:52AM +0000, Ryan Roberts wrote:
quoted
quoted
+static inline void __clear_full_ptes(struct mm_struct *mm, unsigned long addr, + pte_t *ptep, unsigned int nr, int full) +{ + for (;;) { + __ptep_get_and_clear(mm, addr, ptep); + if (--nr == 0) + break; + ptep++; + addr += PAGE_SIZE; + } +}The loop construct is a bit odd; can't this be:I found it a little odd at first, but its avoiding the ptep and addr increments the last time through the loop. Its the preferred pattern for these functions in core-mm. See default set_ptes(), wrprotect_ptes(), clear_full_ptes() in include/linux/pgtable.h. So I'd prefer to leave it as is so that we match them. What do you think?
That's fair enough; it I'm happy with it as-is. Mark.