• Dave Martin's avatar
    KVM: arm64/sve: Simplify KVM_REG_ARM64_SVE_VLS array sizing · 4bd774e5
    Dave Martin authored
    A complicated DIV_ROUND_UP() expression is currently written out
    explicitly in multiple places in order to specify the size of the
    bitmap exchanged with userspace to represent the value of the
    KVM_REG_ARM64_SVE_VLS pseudo-register.
    
    Userspace currently has no direct way to work this out either: for
    documentation purposes, the size is just quoted as 8 u64s.
    
    To make this more intuitive, this patch replaces these with a
    single define, which is also exported to userspace as
    KVM_ARM64_SVE_VLS_WORDS.
    
    Since the number of words in a bitmap is just the index of the last
    word used + 1, this patch expresses the bound that way instead.
    This should make it clearer what is being expressed.
    
    For userspace convenience, the minimum and maximum possible vector
    lengths relevant to the KVM ABI are exposed to UAPI as
    KVM_ARM64_SVE_VQ_MIN, KVM_ARM64_SVE_VQ_MAX.  Since the only direct
    use for these at present is manipulation of KVM_REG_ARM64_SVE_VLS,
    no corresponding _VL_ macros are defined.  They could be added
    later if a need arises.
    
    Since use of DIV_ROUND_UP() was the only reason for including
    <linux/kernel.h> in guest.c, this patch also removes that #include.
    Suggested-by: default avatarAndrew Jones <drjones@redhat.com>
    Signed-off-by: default avatarDave Martin <Dave.Martin@arm.com>
    Reviewed-by: default avatarAndrew Jones <drjones@redhat.com>
    Signed-off-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
    4bd774e5
guest.c 21.5 KB