]> git.baikalelectronics.ru Git - kernel.git/commit
KVM: arm64: Drop the target_table[] indirection
authorJames Morse <james.morse@arm.com>
Mon, 22 Jun 2020 11:33:13 +0000 (11:33 +0000)
committerMarc Zyngier <maz@kernel.org>
Sun, 5 Jul 2020 17:20:45 +0000 (18:20 +0100)
commit4112b35c552d86914b163bba59cbf98e187d48c3
treeeba81e25cf7fa39a93ad97e5fd6479018611ac0b
parent2e0873da09585b8a2daf9ca8c2facd15f454ec3f
KVM: arm64: Drop the target_table[] indirection

KVM for 32bit arm had a get/set target mechanism to allow for
micro-architecture differences that are visible in system registers
to be described.

KVM's user-space can query the supported targets for a CPU, and
create vCPUs for that target. The target can override the handling
of system registers to provide different reset or RES0 behaviour.
On 32bit arm this was used to provide different ACTLR reset values
for A7 and A15.

On 64bit arm, the first few CPUs out of the gate used this mechanism,
before it was deemed redundant in commit 3e5c8ee87da3 ("arm64/kvm:
Add generic v8 KVM target"). All future CPUs use the
KVM_ARM_TARGET_GENERIC_V8 target.

The 64bit target_table[] stuff exists to preserve the ABI to
user-space. As all targets registers genericv8_target_table, there
is no reason to look the target up.

Until we can merge genericv8_target_table with the main sys_regs
array, kvm_register_target_sys_reg_table() becomes
kvm_check_target_sys_reg_table(), which uses BUG_ON() in keeping
with the other callers in this file.

Signed-off-by: James Morse <james.morse@arm.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20200622113317.20477-2-james.morse@arm.com
arch/arm64/include/asm/kvm_coproc.h
arch/arm64/kvm/sys_regs.c
arch/arm64/kvm/sys_regs.h
arch/arm64/kvm/sys_regs_generic_v8.c