From: Marc Zyngier <maz@kernel.org>
To: Will Deacon <will@kernel.org>
Cc: Sebastian Ene <sebastianene@google.com>,
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,
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 v10 2/5] arm64: ptdump: Expose the attribute parsing functionality
Date: Tue, 10 Sep 2024 17:59:46 +0100 [thread overview]
Message-ID: <86seu778cd.wl-maz@kernel.org> (raw)
In-Reply-To: <20240910095718.GB20813@willie-the-truck>
On Tue, 10 Sep 2024 10:57:18 +0100,
Will Deacon <will@kernel.org> wrote:
>
> On Mon, Sep 09, 2024 at 12:47:18PM +0000, Sebastian Ene wrote:
> > Reuse the descriptor parsing functionality to keep the same output format
> > as the original ptdump code. In order for this to happen, move the state
> > tracking objects into a common header.
> >
> > Signed-off-by: Sebastian Ene <sebastianene@google.com>
> > ---
> > arch/arm64/include/asm/ptdump.h | 41 +++++++++++++++++++++++-
> > arch/arm64/mm/ptdump.c | 55 +++++++--------------------------
> > 2 files changed, 51 insertions(+), 45 deletions(-)
> >
> > diff --git a/arch/arm64/include/asm/ptdump.h b/arch/arm64/include/asm/ptdump.h
> > index 5b1701c76d1c..bd5d3ee3e8dc 100644
> > --- a/arch/arm64/include/asm/ptdump.h
> > +++ b/arch/arm64/include/asm/ptdump.h
> > @@ -9,6 +9,7 @@
> >
> > #include <linux/mm_types.h>
> > #include <linux/seq_file.h>
> > +#include <linux/ptdump.h>
> >
> > struct addr_marker {
> > unsigned long start_address;
> > @@ -21,14 +22,52 @@ struct ptdump_info {
> > unsigned long base_addr;
> > };
> >
> > +struct ptdump_prot_bits {
> > + u64 mask;
> > + u64 val;
> > + const char *set;
> > + const char *clear;
> > +};
> > +
> > +struct ptdump_pg_level {
> > + const struct ptdump_prot_bits *bits;
> > + char name[4];
> > + int num;
> > + u64 mask;
> > +};
> > +
> > +/*
> > + * The page dumper groups page table entries of the same type into a single
> > + * description. It uses pg_state to track the range information while
> > + * iterating over the pte entries. When the continuity is broken it then
> > + * dumps out a description of the range.
> > + */
> > +struct ptdump_pg_state {
> > + struct ptdump_state ptdump;
> > + struct seq_file *seq;
> > + const struct addr_marker *marker;
> > + const struct mm_struct *mm;
> > + unsigned long start_address;
> > + int level;
> > + u64 current_prot;
> > + bool check_wx;
> > + unsigned long wx_pages;
> > + unsigned long uxn_pages;
> > +};
> > +
> > void ptdump_walk(struct seq_file *s, struct ptdump_info *info);
> > +void note_page(struct ptdump_state *pt_st, unsigned long addr, int level,
> > + u64 val);
> > #ifdef CONFIG_PTDUMP_DEBUGFS
> > #define EFI_RUNTIME_MAP_END DEFAULT_MAP_WINDOW_64
> > void __init ptdump_debugfs_register(struct ptdump_info *info, const char *name);
> > #else
> > static inline void ptdump_debugfs_register(struct ptdump_info *info,
> > const char *name) { }
> > -#endif
> > +#endif /* CONFIG_PTDUMP_DEBUGFS */
> > +#else
> > +static inline void note_page(void *pt_st, unsigned long addr,
> > + int level, u64 val) { }
>
> nit: but why isn't 'pt_st' a pointer to 'struct ptdump_state'?
>
> Perhaps you should #include <linux/ptdump.h> before the #ifdef
> CONFIG_PTDUMP_CORE ?
Yup, that seems to do the trick. I'm folding this into the patch:
diff --git a/arch/arm64/include/asm/ptdump.h b/arch/arm64/include/asm/ptdump.h
index 71a7ed01153a4..6cf4aae052191 100644
--- a/arch/arm64/include/asm/ptdump.h
+++ b/arch/arm64/include/asm/ptdump.h
@@ -5,11 +5,12 @@
#ifndef __ASM_PTDUMP_H
#define __ASM_PTDUMP_H
+#include <linux/ptdump.h>
+
#ifdef CONFIG_PTDUMP_CORE
#include <linux/mm_types.h>
#include <linux/seq_file.h>
-#include <linux/ptdump.h>
struct addr_marker {
unsigned long start_address;
@@ -67,7 +68,7 @@ static inline void ptdump_debugfs_register(struct ptdump_info *info,
const char *name) { }
#endif /* CONFIG_PTDUMP_DEBUGFS */
#else
-static inline void note_page(void *pt_st, unsigned long addr,
+static inline void note_page(struct ptdump_state *pt_st, unsigned long addr,
int level, u64 val) { }
#endif /* CONFIG_PTDUMP_CORE */
> In any case, the meat of the patch is fine:
>
> Acked-by: Will Deacon <will@kernel.org>
Thanks,
M.
--
Without deviation from the norm, progress is not possible.
next prev parent reply other threads:[~2024-09-10 16:59 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-09 12:47 [PATCH v10 0/5] arm64: ptdump: View the second stage page-tables Sebastian Ene
2024-09-09 12:47 ` [PATCH v10 1/5] KVM: arm64: Move pagetable definitions to common header Sebastian Ene
2024-09-09 12:47 ` [PATCH v10 2/5] arm64: ptdump: Expose the attribute parsing functionality Sebastian Ene
2024-09-10 9:57 ` Will Deacon
2024-09-10 16:59 ` Marc Zyngier [this message]
2024-09-09 12:47 ` [PATCH v10 3/5] arm64: ptdump: Use the ptdump description from a local context Sebastian Ene
2024-09-10 10:03 ` Will Deacon
2024-09-09 12:47 ` [PATCH v10 4/5] arm64: ptdump: Don't override the level when operating on the stage-2 tables Sebastian Ene
2024-09-10 10:05 ` Will Deacon
2024-09-09 12:47 ` [PATCH v10 5/5] KVM: arm64: Register ptdump with debugfs on guest creation Sebastian Ene
2024-09-10 20:27 ` Marc Zyngier
2024-09-10 20:35 ` [PATCH v10 0/5] arm64: ptdump: View the second stage page-tables Marc Zyngier
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=86seu778cd.wl-maz@kernel.org \
--to=maz@kernel.org \
--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=oliver.upton@linux.dev \
--cc=rananta@google.com \
--cc=ryan.roberts@arm.com \
--cc=sebastianene@google.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.