mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
perf/ring_buffer: stop using PG_private as AUX page high-order marker
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 in the ring buffer and its users. This is fine because page->private is 0 for order-0 AUX pages, matching the page order. It prepares for a future commit that remove PG_private. No functional change intended. Link: https://lore.kernel.org/20260920-remove-pg_private-v5-2-bb68b6a21869@nvidia.com Signed-off-by: Zi Yan <ziy@nvidia.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Acked-by: Usama Arif <usama.arif@linux.dev> Acked-by: David Hildenbrand (Arm) <david@kernel.org> Assisted-by: LLM Cc: Peter Zijlstra <peterz@infradead.org> Cc: Ingo Molnar <mingo@redhat.com> Cc: Arnaldo Carvalho de Melo <acme@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Thomas Gleixner <tglx@kernel.org> Cc: Borislav Petkov <bp@alien8.de> Cc: Dave Hansen <dave.hansen@linux.intel.com> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Ian Rogers <irogers@google.com> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: James Clark <james.clark@linaro.org> Cc: "H. Peter Anvin" <hpa@zytor.com>
This commit is contained in:
parent
c315da11e3
commit
a0319334a9
|
|
@ -66,9 +66,6 @@ static struct pmu bts_pmu;
|
|||
|
||||
static int buf_nr_pages(struct page *page)
|
||||
{
|
||||
if (!PagePrivate(page))
|
||||
return 1;
|
||||
|
||||
return 1 << page_private(page);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -781,8 +781,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);
|
||||
|
|
@ -1296,8 +1295,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;
|
||||
|
|
|
|||
|
|
@ -635,11 +635,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);
|
||||
}
|
||||
|
||||
|
|
@ -650,7 +649,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);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user