Re: [PATCH RFC 02/14] perf/ring_buffer: stop using PG_private as AUX page high-order marker

Usama Arif <[email protected]>
Newsgroups org.kvack.linux-mm,org.kernel.vger.linux-kernel,org.kernel.vger.linux-perf-users
Message-ID <[email protected]>
On Fri, 31 Jul 2026 22:13:25 -0400 Zi Yan <[email protected]> wrote:

> A high-order AUX page sets PG_private on its first page and stores the
> order in first_page->private. Stop using PG_private and check
> first_page->private for AUX page order only ring buffer and its users.
> 

nit: only "in the" ring buffer?

> It prepares for a future commit that remove PG_private.
> 
> No functional change intended.
> 
> Assisted-by: Claude:claude-opus-4-8
> Assisted-by: Codex:gpt-5
> Signed-off-by: Zi Yan <[email protected]>
> To: Peter Zijlstra <[email protected]>
> To: Ingo Molnar <[email protected]>
> To: Arnaldo Carvalho de Melo <[email protected]>
> To: Namhyung Kim <[email protected]>
> To: Thomas Gleixner <[email protected]>
> To: Borislav Petkov <[email protected]>
> To: Dave Hansen <[email protected]>
> To: [email protected]
> Cc: Mark Rutland <[email protected]>
> Cc: Alexander Shishkin <[email protected]>
> Cc: Jiri Olsa <[email protected]>
> Cc: Ian Rogers <[email protected]>
> Cc: Adrian Hunter <[email protected]>
> Cc: James Clark <[email protected]>
> Cc: "H. Peter Anvin" <[email protected]>
> Cc: [email protected]
> Cc: [email protected]
> ---
>  arch/x86/events/intel/bts.c | 3 ---
>  arch/x86/events/intel/pt.c  | 6 ++----
>  kernel/events/ring_buffer.c | 7 +++----
>  3 files changed, 5 insertions(+), 11 deletions(-)
> 
> diff --git a/arch/x86/events/intel/bts.c b/arch/x86/events/intel/bts.c
> index cbac54cb3a9ec..5849392cf26d5 100644
> --- a/arch/x86/events/intel/bts.c
> +++ b/arch/x86/events/intel/bts.c
> @@ -66,9 +66,6 @@ static struct pmu bts_pmu;
>  
>  static int buf_nr_pages(struct page *page)
>  {
> -	if (!PagePrivate(page))
> -		return 1;
> -


For order 0, 1 << 0 is 1, which is exactly what the !PagePrivate(page) so LGTM.

The commit message probably needs more text but everything else looks good.

Feel free to add

Acked-by: Usama Arif <[email protected]>


>  	return 1 << page_private(page);
>  }
>  
> diff --git a/arch/x86/events/intel/pt.c b/arch/x86/events/intel/pt.c
> index b5726b50e77db..29d8b4a3560cd 100644
> --- a/arch/x86/events/intel/pt.c
> +++ b/arch/x86/events/intel/pt.c
> @@ -774,8 +774,7 @@ static int topa_insert_pages(struct pt_buffer *buf, int cpu, gfp_t gfp)
>  	struct page *p;
>  
>  	p = virt_to_page(buf->data_pages[buf->nr_pages]);
> -	if (PagePrivate(p))
> -		order = page_private(p);
> +	order = page_private(p);
>  
>  	if (topa_table_full(topa)) {
>  		topa = topa_alloc(cpu, gfp);
> @@ -1289,8 +1288,7 @@ static int pt_buffer_try_single(struct pt_buffer *buf, int nr_pages)
>  	if (!intel_pt_validate_hw_cap(PT_CAP_single_range_output))
>  		goto out;
>  
> -	if (PagePrivate(p))
> -		order = page_private(p);
> +	order = page_private(p);
>  
>  	if (1 << order != nr_pages)
>  		goto out;
> diff --git a/kernel/events/ring_buffer.c b/kernel/events/ring_buffer.c
> index 9fe92161715e0..061b5cb222266 100644
> --- a/kernel/events/ring_buffer.c
> +++ b/kernel/events/ring_buffer.c
> @@ -630,11 +630,10 @@ static struct page *rb_alloc_aux_page(int node, int order)
>  		/*
>  		 * Communicate the allocation size to the driver:
>  		 * if we managed to secure a high-order allocation,
> -		 * set its first page's private to this order;
> -		 * !PagePrivate(page) means it's just a normal page.
> +		 * set its first page's private to this order, otherwise page's
> +		 * private remains zero.
>  		 */
>  		split_page(page, order);
> -		SetPagePrivate(page);
>  		set_page_private(page, order);
>  	}
>  
> @@ -645,7 +644,7 @@ static void rb_free_aux_page(struct perf_buffer *rb, int idx)
>  {
>  	struct page *page = virt_to_page(rb->aux_pages[idx]);
>  
> -	ClearPagePrivate(page);
> +	set_page_private(page, 0);
>  	__free_page(page);
>  }
>  
> 
> -- 
> 2.53.0
> 
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.