]> git.baikalelectronics.ru Git - kernel.git/commit
KVM: arm64/sve: Clean up UAPI register ID definitions
authorDave Martin <Dave.Martin@arm.com>
Fri, 5 Apr 2019 16:17:08 +0000 (17:17 +0100)
committerMarc Zyngier <marc.zyngier@arm.com>
Thu, 18 Apr 2019 16:14:01 +0000 (17:14 +0100)
commitea54dd39bdca8a38443b43cfbb06e1fd3eb98429
treefa30f040fca83f35d6e98e1b8a776e66543e05ea
parente543f470b0971f89f8edd16b7e0876b7eaa4e14b
KVM: arm64/sve: Clean up UAPI register ID definitions

Currently, the SVE register ID macros are not all defined in the
same way, and advertise the fact that FFR maps onto the nonexistent
predicate register P16.  This is really just for kernel
convenience, and may lead userspace into bad habits.

Instead, this patch masks the ID macro arguments so that
architecturally invalid register numbers will not be passed through
any more, and uses a literal KVM_REG_ARM64_SVE_FFR_BASE macro to
define KVM_REG_ARM64_SVE_FFR(), similarly to the way the _ZREG()
and _PREG() macros are defined.

Rather than plugging in magic numbers for the number of Z- and P-
registers and the maximum possible number of register slices, this
patch provides definitions for those too.  Userspace is going to
need them in any case, and it makes sense for them to come from
<uapi/asm/kvm.h>.

sve_reg_to_region() uses convenience constants that are defined in
a different way, and also makes use of the fact that the FFR IDs
are really contiguous with the P15 IDs, so this patch retains the
existing convenience constants in guest.c, supplemented with a
couple of sanity checks to check for consistency with the UAPI
header.

Fixes: f2f076318a7d ("KVM: arm64/sve: Add SVE support to register access ioctl interface")
Suggested-by: Andrew Jones <drjones@redhat.com>
Signed-off-by: Dave Martin <Dave.Martin@arm.com>
Reviewed-by: Andrew Jones <drjones@redhat.com>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
arch/arm64/include/uapi/asm/kvm.h
arch/arm64/kvm/guest.c