[PATCH 20/20] KVM: arm64: Add debugfs file dumping computed RESx values
Fuad Tabba
tabba at google.com
Mon Feb 2 01:57:14 PST 2026
...
>
> Yes please. We might as well do the right thing, and I can fold that
> into my current series with you as a co-author.
>
> Thanks,
Here you go.
Cheers,
/fuad
---
arch/arm64/include/asm/kvm_host.h | 1 -
arch/arm64/kvm/sys_regs.c | 42 +++++--------------------------
2 files changed, 6 insertions(+), 37 deletions(-)
diff --git a/arch/arm64/include/asm/kvm_host.h b/arch/arm64/include/asm/kvm_host.h
index 54072f6ec9d4..c82b071ade2a 100644
--- a/arch/arm64/include/asm/kvm_host.h
+++ b/arch/arm64/include/asm/kvm_host.h
@@ -375,7 +375,6 @@ struct kvm_arch {
/* Iterator for idreg debugfs */
u8 idreg_debugfs_iter;
- u16 sr_resx_iter;
/* Hypercall features firmware registers' descriptor */
struct kvm_smccc_features smccc_feat;
diff --git a/arch/arm64/kvm/sys_regs.c b/arch/arm64/kvm/sys_regs.c
index f3f92b489b58..d33c39ea8fad 100644
--- a/arch/arm64/kvm/sys_regs.c
+++ b/arch/arm64/kvm/sys_regs.c
@@ -5090,7 +5090,7 @@ static const struct seq_operations idregs_debug_sops = {
DEFINE_SEQ_ATTRIBUTE(idregs_debug);
-static const struct sys_reg_desc *sr_resx_find(struct kvm *kvm, u16 pos)
+static const struct sys_reg_desc *sr_resx_find(struct kvm *kvm, loff_t pos)
{
unsigned long i, sr_idx = 0;
@@ -5100,10 +5100,8 @@ static const struct sys_reg_desc *sr_resx_find(struct kvm *kvm, u16 pos)
if (r->reg < __SANITISED_REG_START__)
continue;
- if (sr_idx == pos)
+ if (sr_idx++ == pos)
return r;
-
- sr_idx++;
}
return NULL;
@@ -5112,22 +5110,11 @@ static const struct sys_reg_desc *sr_resx_find(struct kvm *kvm, u16 pos)
static void *sr_resx_start(struct seq_file *s, loff_t *pos)
{
struct kvm *kvm = s->private;
- u16 *iter;
-
- guard(mutex)(&kvm->arch.config_lock);
if (!kvm->arch.sysreg_masks)
return NULL;
- iter = &kvm->arch.sr_resx_iter;
- if (*iter != (u16)~0)
- return ERR_PTR(-EBUSY);
-
- *iter = *pos;
- if (!sr_resx_find(kvm, *iter))
- iter = NULL;
-
- return iter;
+ return (void *)sr_resx_find(kvm, *pos);
}
static void *sr_resx_next(struct seq_file *s, void *v, loff_t *pos)
@@ -5136,36 +5123,20 @@ static void *sr_resx_next(struct seq_file *s, void *v, loff_t *pos)
(*pos)++;
- if (sr_resx_find(kvm, kvm->arch.sr_resx_iter + 1)) {
- kvm->arch.sr_resx_iter++;
-
- return &kvm->arch.sr_resx_iter;
- }
-
- return NULL;
+ return (void *)sr_resx_find(kvm, *pos);
}
static void sr_resx_stop(struct seq_file *s, void *v)
{
- struct kvm *kvm = s->private;
-
- if (IS_ERR(v))
- return;
-
- guard(mutex)(&kvm->arch.config_lock);
-
- kvm->arch.sr_resx_iter = ~0;
}
static int sr_resx_show(struct seq_file *s, void *v)
{
- const struct sys_reg_desc *desc;
+ const struct sys_reg_desc *desc = v;
struct kvm *kvm = s->private;
struct resx resx;
- desc = sr_resx_find(kvm, kvm->arch.sr_resx_iter);
-
- if (!desc->name)
+ if (!desc)
return 0;
resx = kvm_get_sysreg_resx(kvm, desc->reg);
@@ -5188,7 +5159,6 @@ DEFINE_SEQ_ATTRIBUTE(sr_resx);
void kvm_sys_regs_create_debugfs(struct kvm *kvm)
{
kvm->arch.idreg_debugfs_iter = ~0;
- kvm->arch.sr_resx_iter = ~0;
debugfs_create_file("idregs", 0444, kvm->debugfs_dentry, kvm,
&idregs_debug_fops);
--
2.53.0.rc1.225.gd81095ad13-goog
More information about the linux-arm-kernel
mailing list