All of lore.kernel.org
 help / color / mirror / Atom feed
From: "David Hildenbrand (Arm)" <david@kernel.org>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: "David S. Miller" <davem@davemloft.net>,
	Andreas Larsson <andreas@gaisler.com>,
	Lorenzo Stoakes <ljs@kernel.org>,
	"Liam R. Howlett" <liam@infradead.org>,
	Vlastimil Babka <vbabka@kernel.org>,
	Mike Rapoport <rppt@kernel.org>,
	Suren Baghdasaryan <surenb@google.com>,
	Michal Hocko <mhocko@suse.com>, Jann Horn <jannh@google.com>,
	Peter Zijlstra <peterz@infradead.org>,
	"Oscar Salvador (SUSE)" <osalvador@kernel.org>,
	sparclinux@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-mm@kvack.org
Subject: Re: [PATCH v2 2/3] mm: drop pte_clear_not_present_full()
Date: Mon, 29 Jun 2026 19:43:53 +0200	[thread overview]
Message-ID: <fd1b4199-ebbc-420b-afe4-3bea4b9149fc@kernel.org> (raw)
In-Reply-To: <20260629102215.09605f0e9ef66c5f58fe0932@linux-foundation.org>

On 6/29/26 19:22, Andrew Morton wrote:
> On Mon, 29 Jun 2026 15:49:48 +0200 "David Hildenbrand (Arm)" <david@kernel.org> 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?

"nr_pages" are not modified in the function, so the compile does not complain.
See below.


A private build bot barked at me after v1 for

	arm-linux-gnueabi-gcc
	openrisc-allnoconfig
	um-allmodconfig

For example:

https://lore.kernel.org/all/202606121420.Wke8Ipgx-lkp@intel.com/

All errors (new ones prefixed by >>):

   In file included from include/linux/kasan.h:38,
                    from include/linux/slab.h:264,
                    from lib/test_bitops.c:12:
   include/linux/pgtable.h: In function 'clear_not_present_full_ptes':
>> include/linux/pgtable.h:974:31: error: parameter 'addr' set but not used
[-Werror=unused-but-set-parameter=]
     974 |                 unsigned long addr, pte_t *ptep, unsigned int nr, int
full)
         |                 ~~~~~~~~~~~~~~^~~~
   cc1: all warnings being treated as errors


The problem is that addr is updated (written) in the function but never read.
This becomes visible once pte_clear() is a macro instead of a function.

	arch/arm/include/asm/pgtable.h:#define pte_clear(mm,addr,ptep)
set_pte_ext(ptep, __pte(0), 0)


"(void) addr" silences bots. An alternative would be to find all such macros and
convert them into (assuming inline function is non-trivial)

#define pte_clear(mm,addr,ptep)  ((void)addr, set_pte_ext(ptep, __pte(0), 0))

Something I wanted to avoid for this simple patch here that just removes one
function indirection.

-- 
Cheers,

David

  reply	other threads:[~2026-06-29 17:43 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-06-29 13:49 [PATCH v2 0/3] mm: cleanup clear_not_present_full_ptes() David Hildenbrand (Arm)
2026-06-29 13:49 ` [PATCH v2 1/3] sparc/mm: drop custom pte_clear_not_present_full() David Hildenbrand (Arm)
2026-06-30 12:03   ` Lance Yang
2026-06-29 13:49 ` [PATCH v2 2/3] mm: drop pte_clear_not_present_full() David Hildenbrand (Arm)
2026-06-29 17:22   ` Andrew Morton
2026-06-29 17:43     ` David Hildenbrand (Arm) [this message]
2026-06-29 21:08       ` Andrew Morton
2026-06-30 12:38   ` Lance Yang
2026-06-29 13:49 ` [PATCH v2 3/3] mm: cleanup clear_not_present_full_ptes() and rename to clear_non_present_ptes() David Hildenbrand (Arm)
2026-06-30 13:05   ` Lance Yang
2026-06-30 13:47     ` David Hildenbrand (Arm)

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=fd1b4199-ebbc-420b-afe4-3bea4b9149fc@kernel.org \
    --to=david@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=andreas@gaisler.com \
    --cc=davem@davemloft.net \
    --cc=jannh@google.com \
    --cc=liam@infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=ljs@kernel.org \
    --cc=mhocko@suse.com \
    --cc=osalvador@kernel.org \
    --cc=peterz@infradead.org \
    --cc=rppt@kernel.org \
    --cc=sparclinux@vger.kernel.org \
    --cc=surenb@google.com \
    --cc=vbabka@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.