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

Andrew Morton <[email protected]> Mon, 29 Jun 2026 10:22:15 -0700
Newsgroups org.kernel.vger.sparclinux,org.kernel.vger.linux-kernel,org.kvack.linux-mm
Message-ID <[email protected]>
On Mon, 29 Jun 2026 15:49:48 +0200 "David Hildenbrand (Arm)" <[email protected]> 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?