[PATCH v2 06/14] KVM: arm64: Consolidate idreg callbacks
Ganapatrao Kulkarni
gankulkarni at os.amperecomputing.com
Thu Feb 20 07:43:55 PST 2025
On 20-02-2025 07:18 pm, Marc Zyngier wrote:
> Most of the ID_DESC() users use the same callbacks, with only a few
> overrides. Consolidate the common callbacks in a macro, and consistently
> use it everywhere.
>
> Whilst we're at it, give ID_UNALLOCATED() a .name string, so that we can
> easily decode traces.
>
> Signed-off-by: Marc Zyngier <maz at kernel.org>
> ---
> arch/arm64/kvm/sys_regs.c | 28 ++++++++++------------------
> 1 file changed, 10 insertions(+), 18 deletions(-)
>
> diff --git a/arch/arm64/kvm/sys_regs.c b/arch/arm64/kvm/sys_regs.c
> index 9f10dbd26e348..678213dc15513 100644
> --- a/arch/arm64/kvm/sys_regs.c
> +++ b/arch/arm64/kvm/sys_regs.c
> @@ -2267,35 +2267,33 @@ static bool bad_redir_trap(struct kvm_vcpu *vcpu,
> * from userspace.
> */
>
> +#define ID_DESC_DEFAULT_CALLBACKS \
> + .access = access_id_reg, \
> + .get_user = get_id_reg, \
> + .set_user = set_id_reg, \
> + .visibility = id_visibility, \
> + .reset = kvm_read_sanitised_id_reg
> +
> #define ID_DESC(name) \
> SYS_DESC(SYS_##name), \
> - .access = access_id_reg, \
> - .get_user = get_id_reg \
> + ID_DESC_DEFAULT_CALLBACKS
>
> /* sys_reg_desc initialiser for known cpufeature ID registers */
> #define ID_SANITISED(name) { \
> ID_DESC(name), \
> - .set_user = set_id_reg, \
> - .visibility = id_visibility, \
> - .reset = kvm_read_sanitised_id_reg, \
> .val = 0, \
> }
>
> /* sys_reg_desc initialiser for known cpufeature ID registers */
> #define AA32_ID_SANITISED(name) { \
> ID_DESC(name), \
> - .set_user = set_id_reg, \
> .visibility = aa32_id_visibility, \
> - .reset = kvm_read_sanitised_id_reg, \
> .val = 0, \
> }
>
> /* sys_reg_desc initialiser for writable ID registers */
> #define ID_WRITABLE(name, mask) { \
> ID_DESC(name), \
> - .set_user = set_id_reg, \
> - .visibility = id_visibility, \
> - .reset = kvm_read_sanitised_id_reg, \
> .val = mask, \
> }
>
> @@ -2303,8 +2301,6 @@ static bool bad_redir_trap(struct kvm_vcpu *vcpu,
> #define ID_FILTERED(sysreg, name, mask) { \
> ID_DESC(sysreg), \
> .set_user = set_##name, \
> - .visibility = id_visibility, \
> - .reset = kvm_read_sanitised_id_reg, \
> .val = (mask), \
> }
>
> @@ -2314,12 +2310,10 @@ static bool bad_redir_trap(struct kvm_vcpu *vcpu,
> * (1 <= crm < 8, 0 <= Op2 < 8).
> */
> #define ID_UNALLOCATED(crm, op2) { \
> + .name = "S3_0_0_" #crm "_" #op2, \
> Op0(3), Op1(0), CRn(0), CRm(crm), Op2(op2), \
> - .access = access_id_reg, \
> - .get_user = get_id_reg, \
> - .set_user = set_id_reg, \
> + ID_DESC_DEFAULT_CALLBACKS, \
> .visibility = raz_visibility, \
> - .reset = kvm_read_sanitised_id_reg, \
> .val = 0, \
> }
>
> @@ -2330,9 +2324,7 @@ static bool bad_redir_trap(struct kvm_vcpu *vcpu,
> */
> #define ID_HIDDEN(name) { \
> ID_DESC(name), \
> - .set_user = set_id_reg, \
> .visibility = raz_visibility, \
> - .reset = kvm_read_sanitised_id_reg, \
> .val = 0, \
> }
>
Reviewed-by: Ganapatrao Kulkarni <gankulkarni at os.amperecomputing.com>
--
Thanks,
Ganapat/GK
More information about the linux-arm-kernel
mailing list