]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
Merge branch kvm-arm64/resx into kvmarm-master/next
authorMarc Zyngier <maz@kernel.org>
Thu, 5 Feb 2026 09:17:48 +0000 (09:17 +0000)
committerMarc Zyngier <maz@kernel.org>
Thu, 5 Feb 2026 09:17:48 +0000 (09:17 +0000)
* kvm-arm64/resx:
  : .
  : Add infrastructure to deal with the full gamut of RESx bits
  : for NV. As a result, it is now possible to have the expected
  : semantics for some bits such as SCTLR_EL2.SPAN.
  : .
  KVM: arm64: Add debugfs file dumping computed RESx values
  KVM: arm64: Add sanitisation to SCTLR_EL2
  KVM: arm64: Remove all traces of HCR_EL2.MIOCNCE
  KVM: arm64: Remove all traces of FEAT_TME
  KVM: arm64: Simplify handling of full register invalid constraint
  KVM: arm64: Get rid of FIXED_VALUE altogether
  KVM: arm64: Simplify handling of HCR_EL2.E2H RESx
  KVM: arm64: Move RESx into individual register descriptors
  KVM: arm64: Add RES1_WHEN_E2Hx constraints as configuration flags
  KVM: arm64: Add REQUIRES_E2H1 constraint as configuration flags
  KVM: arm64: Simplify FIXED_VALUE handling
  KVM: arm64: Convert HCR_EL2.RW to AS_RES1
  KVM: arm64: Correctly handle SCTLR_EL1 RES1 bits for unsupported features
  KVM: arm64: Allow RES1 bits to be inferred from configuration
  KVM: arm64: Inherit RESx bits from FGT register descriptors
  KVM: arm64: Extend unified RESx handling to runtime sanitisation
  KVM: arm64: Introduce data structure tracking both RES0 and RES1 bits
  KVM: arm64: Introduce standalone FGU computing primitive
  KVM: arm64: Remove duplicate configuration for SCTLR_EL1.{EE,E0E}
  arm64: Convert SCTLR_EL2 to sysreg infrastructure

Signed-off-by: Marc Zyngier <maz@kernel.org>
1  2 
arch/arm64/include/asm/kvm_host.h
arch/arm64/include/asm/sysreg.h
arch/arm64/kvm/emulate-nested.c
arch/arm64/kvm/sys_regs.c
arch/arm64/tools/sysreg

Simple merge
Simple merge
Simple merge
index 95c467c090ba5bdad86dae5947e70fcdc5efdbc4,d33c39ea8fadd000ad1280111701f612052e9a2f..a7cd0badc20cc9f3ec53ca4245a18095e35e63e8
@@@ -5056,10 -5090,80 +5056,78 @@@ static const struct seq_operations idre
  
  DEFINE_SEQ_ATTRIBUTE(idregs_debug);
  
+ static const struct sys_reg_desc *sr_resx_find(struct kvm *kvm, loff_t pos)
+ {
+       unsigned long i, sr_idx = 0;
+       for (i = 0; i < ARRAY_SIZE(sys_reg_descs); i++) {
+               const struct sys_reg_desc *r = &sys_reg_descs[i];
+               if (r->reg < __SANITISED_REG_START__)
+                       continue;
+               if (sr_idx++ == pos)
+                       return r;
+       }
+       return NULL;
+ }
+ static void *sr_resx_start(struct seq_file *s, loff_t *pos)
+ {
+       struct kvm *kvm = s->private;
+       if (!kvm->arch.sysreg_masks)
+               return NULL;
+       return (void *)sr_resx_find(kvm, *pos);
+ }
+ static void *sr_resx_next(struct seq_file *s, void *v, loff_t *pos)
+ {
+       struct kvm *kvm = s->private;
+       (*pos)++;
+       return (void *)sr_resx_find(kvm, *pos);
+ }
+ static void sr_resx_stop(struct seq_file *s, void *v)
+ {
+ }
+ static int sr_resx_show(struct seq_file *s, void *v)
+ {
+       const struct sys_reg_desc *desc = v;
+       struct kvm *kvm = s->private;
+       struct resx resx;
+       if (!desc)
+               return 0;
+       resx = kvm_get_sysreg_resx(kvm, desc->reg);
+       seq_printf(s, "%20s:\tRES0:%016llx\tRES1:%016llx\n",
+                  desc->name, resx.res0, resx.res1);
+       return 0;
+ }
+ static const struct seq_operations sr_resx_sops = {
+       .start  = sr_resx_start,
+       .next   = sr_resx_next,
+       .stop   = sr_resx_stop,
+       .show   = sr_resx_show,
+ };
+ DEFINE_SEQ_ATTRIBUTE(sr_resx);
  void kvm_sys_regs_create_debugfs(struct kvm *kvm)
  {
 -      kvm->arch.idreg_debugfs_iter = ~0;
 -
        debugfs_create_file("idregs", 0444, kvm->debugfs_dentry, kvm,
                            &idregs_debug_fops);
+       debugfs_create_file("resx", 0444, kvm->debugfs_dentry, kvm,
+                           &sr_resx_fops);
  }
  
  static void reset_vm_ftr_id_reg(struct kvm_vcpu *vcpu, const struct sys_reg_desc *reg)
Simple merge