[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