Re: [PATCH v2 2/3] mm: drop pte_clear_not_present_full()

From: Andrew Morton

Date: Mon Jun 29 2026 - 13:22:21 EST


On Mon, 29 Jun 2026 15:49:48 +0200 "David Hildenbrand (Arm)" <david@xxxxxxxxxx> wrote:

> In general, there is no good reason to do anything special when clearing
> non-present PTEs.
>
> In theory, HW that does have to invalidate TLBs for non-present PTEs could
> benefit from a "full" parameter, but fortunately
> pte_clear_not_present_full() is not wired up anymore ... and there would
> have to be something very convincing for us to care about that to re-add
> it.
>
> So, let's just use pte_clear() directly now. To avoid the compiler
> complaining on some configs about unused "addr" parameter, silence that
> here.

Wait, which configs do that?

> @@ -1022,8 +1007,10 @@ static inline void pte_clear_not_present_full(struct mm_struct *mm,
> static inline void clear_not_present_full_ptes(struct mm_struct *mm,
> unsigned long addr, pte_t *ptep, unsigned int nr, int full)
> {
> + (void)addr;
> +

We heavily rely on this warning not happening.

eg, one of thousands:

static inline bool page_range_contiguous(const struct page *page,
unsigned long nr_pages)
{
return true;
}

So... what's happening here?