diff mbox series

[v2,06/14] KVM: arm64: Consolidate idreg callbacks

Message ID 20250220134907.554085-7-maz@kernel.org (mailing list archive)
State New
Headers show
Series KVM: arm64: NV userspace ABI | expand

Commit Message

Marc Zyngier Feb. 20, 2025, 1:48 p.m. UTC
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@kernel.org>
---
 arch/arm64/kvm/sys_regs.c | 28 ++++++++++------------------
 1 file changed, 10 insertions(+), 18 deletions(-)

Comments

Ganapatrao Kulkarni Feb. 20, 2025, 3:43 p.m. UTC | #1
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@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@os.amperecomputing.com>
diff mbox series

Patch

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,				\
 }