Skip to content

Commit 57e7de2

Browse files
Marc Zyngieroupton
authored andcommitted
KVM: arm64: Consolidate idreg callbacks
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> Reviewed-by: Ganapatrao Kulkarni <gankulkarni@os.amperecomputing.com> Reviewed-by: Joey Gouly <joey.gouly@arm.com> Link: https://lore.kernel.org/r/20250220134907.554085-7-maz@kernel.org Signed-off-by: Oliver Upton <oliver.upton@linux.dev>
1 parent 2cd9542 commit 57e7de2

File tree

1 file changed

+10
-18
lines changed

1 file changed

+10
-18
lines changed

arch/arm64/kvm/sys_regs.c

Lines changed: 10 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2283,44 +2283,40 @@ static bool bad_redir_trap(struct kvm_vcpu *vcpu,
22832283
* from userspace.
22842284
*/
22852285

2286+
#define ID_DESC_DEFAULT_CALLBACKS \
2287+
.access = access_id_reg, \
2288+
.get_user = get_id_reg, \
2289+
.set_user = set_id_reg, \
2290+
.visibility = id_visibility, \
2291+
.reset = kvm_read_sanitised_id_reg
2292+
22862293
#define ID_DESC(name) \
22872294
SYS_DESC(SYS_##name), \
2288-
.access = access_id_reg, \
2289-
.get_user = get_id_reg \
2295+
ID_DESC_DEFAULT_CALLBACKS
22902296

22912297
/* sys_reg_desc initialiser for known cpufeature ID registers */
22922298
#define ID_SANITISED(name) { \
22932299
ID_DESC(name), \
2294-
.set_user = set_id_reg, \
2295-
.visibility = id_visibility, \
2296-
.reset = kvm_read_sanitised_id_reg, \
22972300
.val = 0, \
22982301
}
22992302

23002303
/* sys_reg_desc initialiser for known cpufeature ID registers */
23012304
#define AA32_ID_SANITISED(name) { \
23022305
ID_DESC(name), \
2303-
.set_user = set_id_reg, \
23042306
.visibility = aa32_id_visibility, \
2305-
.reset = kvm_read_sanitised_id_reg, \
23062307
.val = 0, \
23072308
}
23082309

23092310
/* sys_reg_desc initialiser for writable ID registers */
23102311
#define ID_WRITABLE(name, mask) { \
23112312
ID_DESC(name), \
2312-
.set_user = set_id_reg, \
2313-
.visibility = id_visibility, \
2314-
.reset = kvm_read_sanitised_id_reg, \
23152313
.val = mask, \
23162314
}
23172315

23182316
/* sys_reg_desc initialiser for cpufeature ID registers that need filtering */
23192317
#define ID_FILTERED(sysreg, name, mask) { \
23202318
ID_DESC(sysreg), \
23212319
.set_user = set_##name, \
2322-
.visibility = id_visibility, \
2323-
.reset = kvm_read_sanitised_id_reg, \
23242320
.val = (mask), \
23252321
}
23262322

@@ -2330,12 +2326,10 @@ static bool bad_redir_trap(struct kvm_vcpu *vcpu,
23302326
* (1 <= crm < 8, 0 <= Op2 < 8).
23312327
*/
23322328
#define ID_UNALLOCATED(crm, op2) { \
2329+
.name = "S3_0_0_" #crm "_" #op2, \
23332330
Op0(3), Op1(0), CRn(0), CRm(crm), Op2(op2), \
2334-
.access = access_id_reg, \
2335-
.get_user = get_id_reg, \
2336-
.set_user = set_id_reg, \
2331+
ID_DESC_DEFAULT_CALLBACKS, \
23372332
.visibility = raz_visibility, \
2338-
.reset = kvm_read_sanitised_id_reg, \
23392333
.val = 0, \
23402334
}
23412335

@@ -2346,9 +2340,7 @@ static bool bad_redir_trap(struct kvm_vcpu *vcpu,
23462340
*/
23472341
#define ID_HIDDEN(name) { \
23482342
ID_DESC(name), \
2349-
.set_user = set_id_reg, \
23502343
.visibility = raz_visibility, \
2351-
.reset = kvm_read_sanitised_id_reg, \
23522344
.val = 0, \
23532345
}
23542346

0 commit comments

Comments
 (0)