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.