From: Sebastian Ene <sebastianene@google.com>
To: Will Deacon <will@kernel.org>
Cc: akpm@linux-foundation.org, alexghiti@rivosinc.com,
ankita@nvidia.com, ardb@kernel.org, catalin.marinas@arm.com,
christophe.leroy@csgroup.eu, james.morse@arm.com,
vdonnefort@google.com, mark.rutland@arm.com, maz@kernel.org,
oliver.upton@linux.dev, rananta@google.com, ryan.roberts@arm.com,
shahuang@redhat.com, suzuki.poulose@arm.com,
yuzenghui@huawei.com, kvmarm@lists.linux.dev,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, kernel-team@android.com
Subject: Re: [PATCH v7 3/6] arm64: ptdump: Use the mask from the state structure
Date: Fri, 19 Jul 2024 13:27:23 +0000 [thread overview]
Message-ID: <Zpppu5DBmb7MLDXD@google.com> (raw)
In-Reply-To: <20240705111229.GB9231@willie-the-truck>
On Fri, Jul 05, 2024 at 12:12:29PM +0100, Will Deacon wrote:
> On Fri, Jun 21, 2024 at 12:32:27PM +0000, Sebastian Ene wrote:
> > Printing the descriptor attributes requires accessing a mask which has a
> > different set of attributes for stage-2. In preparation for adding support
> > for the stage-2 pagetables dumping, use the mask from the local context
> > and not from the globally defined pg_level array. Store a pointer to
> > the pg_level array in the ptdump state structure. This will allow us to
> > extract the mask which is wrapped in the pg_level array and use it for
> > descriptor parsing in the note_page.
> >
> > Signed-off-by: Sebastian Ene <sebastianene@google.com>
> > ---
> > arch/arm64/include/asm/ptdump.h | 1 +
> > arch/arm64/mm/ptdump.c | 13 ++++++++-----
> > 2 files changed, 9 insertions(+), 5 deletions(-)
> >
> > diff --git a/arch/arm64/include/asm/ptdump.h b/arch/arm64/include/asm/ptdump.h
> > index c550b2afcab7..a4125d8d5a32 100644
> > --- a/arch/arm64/include/asm/ptdump.h
> > +++ b/arch/arm64/include/asm/ptdump.h
> > @@ -44,6 +44,7 @@ struct pg_level {
> > */
> > struct pg_state {
> > struct ptdump_state ptdump;
> > + struct pg_level *pg_level;
> > struct seq_file *seq;
> > const struct addr_marker *marker;
> > const struct mm_struct *mm;
> > diff --git a/arch/arm64/mm/ptdump.c b/arch/arm64/mm/ptdump.c
> > index e370b7a945de..9637a6415ea7 100644
> > --- a/arch/arm64/mm/ptdump.c
> > +++ b/arch/arm64/mm/ptdump.c
> > @@ -192,6 +192,7 @@ void note_page(struct ptdump_state *pt_st, unsigned long addr, int level,
> > u64 val)
> > {
> > struct pg_state *st = container_of(pt_st, struct pg_state, ptdump);
> > + struct pg_level *pg_info = st->pg_level;
> > static const char units[] = "KMGTPE";
> > u64 prot = 0;
> >
> > @@ -201,7 +202,7 @@ void note_page(struct ptdump_state *pt_st, unsigned long addr, int level,
> > level = 0;
> >
> > if (level >= 0)
> > - prot = val & pg_level[level].mask;
> > + prot = val & pg_info[level].mask;
>
> If you rename the existing 'pg_level' array to something like
> 'kernel_pg_levels' then I think your local 'pg_info' variable can be
> called 'pg_level' and this line doesn't need to change.
>
This is a good ideea, thanks. I applied your suggestion
> >
> > if (st->level == -1) {
> > st->level = level;
> > @@ -227,10 +228,10 @@ void note_page(struct ptdump_state *pt_st, unsigned long addr, int level,
> > unit++;
> > }
> > pt_dump_seq_printf(st->seq, "%9lu%c %s", delta, *unit,
> > - pg_level[st->level].name);
> > - if (st->current_prot && pg_level[st->level].bits)
> > - dump_prot(st, pg_level[st->level].bits,
> > - pg_level[st->level].num);
> > + pg_info[st->level].name);
> > + if (st->current_prot && pg_info[st->level].bits)
> > + dump_prot(st, pg_info[st->level].bits,
> > + pg_info[st->level].num);
>
> I think this could then stay as-is too.
>
> > pt_dump_seq_puts(st->seq, "\n");
> >
> > if (addr >= st->marker[1].start_address) {
> > @@ -262,6 +263,7 @@ void ptdump_walk(struct seq_file *s, struct ptdump_info *info)
> > .seq = s,
> > .marker = info->markers,
> > .mm = info->mm,
> > + .pg_level = &pg_level[0],
>
> Can't this just be '.pg_level = kernel_pg_levels'?
>
> Will
Seb
next prev parent reply other threads:[~2024-07-19 13:27 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-21 12:32 [PATCH v7 0/6] arm64: ptdump: View the second stage page-tables Sebastian Ene
2024-06-21 12:32 ` [PATCH v7 1/6] KVM: arm64: Move pagetable definitions to common header Sebastian Ene
2024-06-21 12:32 ` [PATCH v7 2/6] arm64: ptdump: Expose the attribute parsing functionality Sebastian Ene
2024-07-05 11:07 ` Will Deacon
2024-07-19 11:44 ` Sebastian Ene
2024-06-21 12:32 ` [PATCH v7 3/6] arm64: ptdump: Use the mask from the state structure Sebastian Ene
2024-07-05 11:12 ` Will Deacon
2024-07-19 13:27 ` Sebastian Ene [this message]
2024-06-21 12:32 ` [PATCH v7 4/6] KVM: arm64: Register ptdump with debugfs on guest creation Sebastian Ene
2024-06-21 12:32 ` [PATCH v7 5/6] KVM: arm64: Initialize the ptdump parser with stage-2 attributes Sebastian Ene
2024-06-28 21:18 ` Oliver Upton
2024-07-01 14:17 ` Sebastian Ene
2024-07-08 19:47 ` Oliver Upton
2024-07-19 14:01 ` Sebastian Ene
2024-07-01 8:42 ` Vincent Donnefort
2024-07-01 14:18 ` Sebastian Ene
2024-07-16 9:59 ` Vincent Donnefort
2024-07-19 14:09 ` Sebastian Ene
2024-07-19 14:36 ` Vincent Donnefort
2024-07-19 16:27 ` Sebastian Ene
2024-06-21 12:32 ` [PATCH v7 6/6] KVM: arm64: Expose guest stage-2 pagetable config to debugfs Sebastian Ene
2024-06-28 20:49 ` Oliver Upton
2024-07-01 14:10 ` Sebastian Ene
2024-06-28 21:25 ` [PATCH v7 0/6] arm64: ptdump: View the second stage page-tables Oliver Upton
2024-07-01 14:22 ` Sebastian Ene
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=Zpppu5DBmb7MLDXD@google.com \
--to=sebastianene@google.com \
--cc=akpm@linux-foundation.org \
--cc=alexghiti@rivosinc.com \
--cc=ankita@nvidia.com \
--cc=ardb@kernel.org \
--cc=catalin.marinas@arm.com \
--cc=christophe.leroy@csgroup.eu \
--cc=james.morse@arm.com \
--cc=kernel-team@android.com \
--cc=kvmarm@lists.linux.dev \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=maz@kernel.org \
--cc=oliver.upton@linux.dev \
--cc=rananta@google.com \
--cc=ryan.roberts@arm.com \
--cc=shahuang@redhat.com \
--cc=suzuki.poulose@arm.com \
--cc=vdonnefort@google.com \
--cc=will@kernel.org \
--cc=yuzenghui@huawei.com \
/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.