[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