[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <Zn8hzwIEtvBFjdkk@linux.dev>
Date: Fri, 28 Jun 2024 20:49:19 +0000
From: Oliver Upton <oliver.upton@...ux.dev>
To: Sebastian Ene <sebastianene@...gle.com>
Cc: akpm@...ux-foundation.org, alexghiti@...osinc.com, ankita@...dia.com,
ardb@...nel.org, catalin.marinas@....com,
christophe.leroy@...roup.eu, james.morse@....com,
vdonnefort@...gle.com, mark.rutland@....com, maz@...nel.org,
rananta@...gle.com, ryan.roberts@....com, shahuang@...hat.com,
suzuki.poulose@....com, will@...nel.org, yuzenghui@...wei.com,
kvmarm@...ts.linux.dev, linux-arm-kernel@...ts.infradead.org,
linux-kernel@...r.kernel.org, kernel-team@...roid.com
Subject: Re: [PATCH v7 6/6] KVM: arm64: Expose guest stage-2 pagetable config
to debugfs
On Fri, Jun 21, 2024 at 12:32:30PM +0000, Sebastian Ene wrote:
> Make the start level and the IPA bits properties available in the
> virtual machine debugfs directory. Make sure that the KVM structure
> doesn't disappear behind our back and keep a reference to the KVM struct
> while these files are opened.
>
> Signed-off-by: Sebastian Ene <sebastianene@...gle.com>
> ---
> arch/arm64/kvm/ptdump.c | 50 +++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 50 insertions(+)
>
> diff --git a/arch/arm64/kvm/ptdump.c b/arch/arm64/kvm/ptdump.c
> index cc1d4fdddc6e..17649e3cbc8f 100644
> --- a/arch/arm64/kvm/ptdump.c
> +++ b/arch/arm64/kvm/ptdump.c
> @@ -215,8 +215,58 @@ static const struct file_operations kvm_ptdump_guest_fops = {
> .release = kvm_ptdump_guest_close,
> };
>
> +static int kvm_pgtable_debugfs_show(struct seq_file *m, void *unused)
> +{
> + const struct file *file = m->file;
> + struct kvm_pgtable *pgtable = m->private;
> +
> + if (!strcmp(file_dentry(file)->d_iname, "ipa_range"))
> + seq_printf(m, "%2u\n", pgtable->ia_bits);
> + else if (!strcmp(file_dentry(file)->d_iname, "stage2_levels"))
> + seq_printf(m, "%1d\n", pgtable->start_level);
The name of the file suggests sounds like this is the number of page
table levels instead of the starting level of the walk.
So instead:
seq_printf(m, "%1d\n",
KVM_PGTABLE_LAST_LEVEL - pgtable->start_level + 1);
> + return 0;
> +}
> +
> +static int kvm_pgtable_debugfs_open(struct inode *m, struct file *file)
> +{
> + struct kvm *kvm = m->i_private;
> + struct kvm_s2_mmu *mmu;
> + struct kvm_pgtable *pgtable;
> + int ret;
> +
> + if (!kvm_get_kvm_safe(kvm))
> + return -ENOENT;
> +
> + mmu = &kvm->arch.mmu;
> + pgtable = mmu->pgt;
nitpick: pgtable = &kvm->arch.mmu.pgt
--
Thanks,
Oliver
Powered by blists - more mailing lists