• Eric Farman's avatar
    KVM: s390: Allocate and save/restore vector registers · 68c55750
    Eric Farman authored
    Define and allocate space for both the host and guest views of
    the vector registers for a given vcpu.  The 32 vector registers
    occupy 128 bits each (512 bytes total), but architecturally are
    paired with 512 additional bytes of reserved space for future
    expansion.
    
    The kvm_sync_regs structs containing the registers are union'ed
    with 1024 bytes of padding in the common kvm_run struct.  The
    addition of 1024 bytes of new register information clearly exceeds
    the existing union, so an expansion of that padding is required.
    
    When changing environments, we need to appropriately save and
    restore the vector registers viewed by both the host and guest,
    into and out of the sync_regs space.
    
    The floating point registers overlay the upper half of vector
    registers 0-15, so there's a bit of data duplication here that
    needs to be carefully avoided.
    Signed-off-by: default avatarEric Farman <farman@linux.vnet.ibm.com>
    Reviewed-by: default avatarThomas Huth <thuth@linux.vnet.ibm.com>
    Acked-by: default avatarChristian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: default avatarChristian Borntraeger <borntraeger@de.ibm.com>
    68c55750
kvm-s390.c 59.1 KB