[PATCH v2 0/4] KVM: arm64: vcpu sysreg accessor rework

Miguel Luis miguel.luis at oracle.com
Wed Jun 4 03:47:57 PDT 2025


Hi Marc,

> On 3 Jun 2025, at 07:08, Marc Zyngier <maz at kernel.org> wrote:
> 
> This series tries to bring some sanity to the way the RESx masks
> are applied when accessing the in-memory view of the guest's
> system registers.
> 
> Currently, we have *one* accessor (__vcpu_sys_reg()) that can either
> be used as a rvalue or lvalue while that applies the RESx masks behind
> the scenes. This works fine when used as a rvalue.
> 
> However, when used as a lvalue, it does the wrong thing, as it only
> sanitises the value we're about to overwrite. This is pointless work
> and potentially hides bugs.
> 
> I propose that we move to a set of store-specific accessors (for
> assignments and RMW) instead of the lvalue hack, ensuring that the
> assigned value is the one that gets sanitised. This then allows the 
> legacy accessor to be converted to rvalue-only.
> 
> Given the level of churn this introduces, I'd like this to land very
> early in the cycle. Either before 6.16-rc2, or early in 6.17.
> 

For the series:
Reviewed-by: Miguel Luis <miguel.luis at oracle.com>

nit: the rmw accessor implies an implicit assignment which could be specified
within its macro instead but it's fine by me.

Thanks
Miguel

> * From v1 [1]
> 
>  - rebased to kvmarm-fixes-6.16-1
> 
> [1] https://lore.kernel.org/all/20250113183524.1378778-1-maz@kernel.org/
> 
> Marc Zyngier (4):
>  KVM: arm64: Add assignment-specific sysreg accessor
>  KVM: arm64: Add RMW specific sysreg accessor
>  KVM: arm64: Don't use __vcpu_sys_reg() to get the address of a sysreg
>  KVM: arm64: Make __vcpu_sys_reg() a pure rvalue operand
> 
> arch/arm64/include/asm/kvm_host.h          | 31 +++++++++--
> arch/arm64/kvm/arch_timer.c                | 18 +++----
> arch/arm64/kvm/debug.c                     |  4 +-
> arch/arm64/kvm/fpsimd.c                    |  4 +-
> arch/arm64/kvm/hyp/exception.c             |  4 +-
> arch/arm64/kvm/hyp/include/hyp/switch.h    |  4 +-
> arch/arm64/kvm/hyp/include/hyp/sysreg-sr.h |  6 +--
> arch/arm64/kvm/hyp/nvhe/hyp-main.c         |  4 +-
> arch/arm64/kvm/hyp/vhe/switch.c            |  4 +-
> arch/arm64/kvm/hyp/vhe/sysreg-sr.c         | 48 ++++++++---------
> arch/arm64/kvm/nested.c                    |  2 +-
> arch/arm64/kvm/pmu-emul.c                  | 24 ++++-----
> arch/arm64/kvm/sys_regs.c                  | 60 +++++++++++-----------
> arch/arm64/kvm/sys_regs.h                  |  4 +-
> arch/arm64/kvm/vgic/vgic-v3-nested.c       | 10 ++--
> 15 files changed, 125 insertions(+), 102 deletions(-)
> 
> -- 
> 2.39.2
> 
> 




More information about the linux-arm-kernel mailing list