[PATCH v3 06/11] powerpc/ptdump: rename "struct pgtable_level" to "struct ptdump_pglevel"
Lorenzo Stoakes
lorenzo.stoakes at oracle.com
Wed Aug 13 04:54:58 AEST 2025
On Tue, Aug 12, 2025 at 08:39:36PM +0200, Christophe Leroy wrote:
> Hi Lorenzo,
>
> Le 12/08/2025 à 20:23, Lorenzo Stoakes a écrit :
> > On Mon, Aug 11, 2025 at 01:26:26PM +0200, David Hildenbrand wrote:
> > > We want to make use of "pgtable_level" for an enum in core-mm. Other
> > > architectures seem to call "struct pgtable_level" either:
> > > * "struct pg_level" when not exposed in a header (riscv, arm)
> > > * "struct ptdump_pg_level" when expose in a header (arm64)
> > >
> > > So let's follow what arm64 does.
> > >
> > > Signed-off-by: David Hildenbrand <david at redhat.com>
> >
> > This LGTM, but I'm super confused what these are for, they don't seem to be
> > used anywhere? Maybe I'm missing some macro madness, but it seems like dead
> > code anyway?
>
> pg_level[] are used several times in arch/powerpc/mm/ptdump/ptdump.c, for
> instance here:
>
> static void note_page_update_state(struct pg_state *st, unsigned long addr,
> int level, u64 val)
> {
> u64 flag = level >= 0 ? val & pg_level[level].mask : 0;
> u64 pa = val & PTE_RPN_MASK;
>
> st->level = level;
> st->current_flags = flag;
> st->start_address = addr;
> st->start_pa = pa;
>
> while (addr >= st->marker[1].start_address) {
> st->marker++;
> pt_dump_seq_printf(st->seq, "---[ %s ]---\n", st->marker->name);
> }
> }
>
Ahhhh ok so you're _always_ happening to reference a field in the global value,
thereby not referencing the _type_ anywhere but referencing fields of the
global.
Thanks, that clears that up! :)
More information about the Linuxppc-dev
mailing list