mbox series

[v3,00/26] KVM/arm64: VM configuration enforcement

Message ID 20240205103431.1104133-1-maz@kernel.org (mailing list archive)
Headers show
Series KVM/arm64: VM configuration enforcement | expand

Message

Marc Zyngier Feb. 5, 2024, 10:34 a.m. UTC
This is the third version of this configurationm enforcement series
after some heroic reviewing from Joey (again) and Suzuki. Many thanks
to both.

I think I have taken most of the feedback into account, but please
shout if I have ignored something.

* From v2: [2]

  - Fix totally broken handling of negative features by delegating the
    work that requires a functionnal brain to other people

  - Fix handling of HCR_ENSCXT as RES0 instead of RES1 (and its
    consequences...)

  - Add handling of VTTBR_EL2.CNP being RES0

  - Add a snapshot of all RES0/RES1 fields so that we can catch them
    being changed behind our backs

  - Various cleanups

* From v1: [1]
  - Fix embarrassing crash with FEAT_MOPS

  - Better error handling in the FGT code

  - Added/Fixed comments

  - Simplified the __vcpu_sys_reg() macro

  - Fixed FEAT_PIR handling

  - Folded in Oliver's PMU rework

[1] https://lore.kernel.org/all/20240122201852.262057-1-maz@kernel.org
[2] https://lore.kernel.org/all/20240130204533.693853-1-maz@kernel.org

Marc Zyngier (26):
  arm64: sysreg: Add missing ID_AA64ISAR[13]_EL1 fields and variants
  KVM: arm64: Add feature checking helpers
  KVM: arm64: nv: Add sanitising to VNCR-backed sysregs
  KVM: arm64: nv: Add sanitising to EL2 configuration registers
  KVM: arm64: nv: Add sanitising to VNCR-backed FGT sysregs
  KVM: arm64: nv: Add sanitising to VNCR-backed HCRX_EL2
  KVM: arm64: nv: Drop sanitised_sys_reg() helper
  KVM: arm64: Unify HDFG[WR]TR_GROUP FGT identifiers
  KVM: arm64: nv: Correctly handle negative polarity FGTs
  KVM: arm64: nv: Turn encoding ranges into discrete XArray stores
  KVM: arm64: Drop the requirement for XARRAY_MULTI
  KVM: arm64: nv: Move system instructions to their own sys_reg_desc
    array
  KVM: arm64: Always populate the trap configuration xarray
  KVM: arm64: Register AArch64 system register entries with the sysreg
    xarray
  KVM: arm64: Use the xarray as the primary sysreg/sysinsn walker
  KVM: arm64: Rename __check_nv_sr_forward() to triage_sysreg_trap()
  KVM: arm64: Add Fine-Grained UNDEF tracking information
  KVM: arm64: Propagate and handle Fine-Grained UNDEF bits
  KVM: arm64: Move existing feature disabling over to FGU infrastructure
  KVM: arm64: Streamline save/restore of HFG[RW]TR_EL2
  KVM: arm64: Make TLBI OS/Range UNDEF if not advertised to the guest
  KVM: arm64: Make PIR{,E0}_EL1 UNDEF if S1PIE is not advertised to the
    guest
  KVM: arm64: Make AMU sysreg UNDEF if FEAT_AMU is not advertised to the
    guest
  KVM: arm64: Make FEAT_MOPS UNDEF if not advertised to the guest
  KVM: arm64: Snapshot all non-zero RES0/RES1 sysreg fields for later
    checking
  KVM: arm64: Add debugfs file for guest's ID registers

 arch/arm64/include/asm/kvm_arm.h           |   4 +-
 arch/arm64/include/asm/kvm_host.h          |  98 +++++++-
 arch/arm64/include/asm/kvm_nested.h        |   1 -
 arch/arm64/kvm/Kconfig                     |   1 -
 arch/arm64/kvm/arm.c                       |   7 +
 arch/arm64/kvm/check-res-bits.h            | 121 ++++++++++
 arch/arm64/kvm/emulate-nested.c            | 231 +++++++++++++-----
 arch/arm64/kvm/hyp/include/hyp/switch.h    | 130 +++++-----
 arch/arm64/kvm/hyp/include/hyp/sysreg-sr.h |  24 +-
 arch/arm64/kvm/nested.c                    | 267 ++++++++++++++++++++-
 arch/arm64/kvm/pmu-emul.c                  |  11 +-
 arch/arm64/kvm/sys_regs.c                  | 238 +++++++++++++++---
 arch/arm64/kvm/sys_regs.h                  |   2 +
 arch/arm64/tools/sysreg                    |   8 +-
 include/kvm/arm_pmu.h                      |  11 -
 15 files changed, 973 insertions(+), 181 deletions(-)
 create mode 100644 arch/arm64/kvm/check-res-bits.h

Comments

Oliver Upton Feb. 12, 2024, 8:40 p.m. UTC | #1
Hey Marc,

On Mon, Feb 05, 2024 at 10:34:05AM +0000, Marc Zyngier wrote:
> This is the third version of this configurationm enforcement series
> after some heroic reviewing from Joey (again) and Suzuki. Many thanks
> to both.
> 
> I think I have taken most of the feedback into account, but please
> shout if I have ignored something.

Want to make sure intentions are abundantly clear on this series, as
there's been a decent amount of attention from folks on managing VM
features.

At the very least I plan on taking the first two patches for 6.9 so we
have the groundwork to enable new feature work. I'd like to get more
eyes on the tail end of the series. I'm going to catch up on the work I
need to do for this merge window (including posting my own crap!) then
come back to reviewing this afterwards.