• Carsten Otte's avatar
    KVM: s390: fix register setting · 7eef87dc
    Carsten Otte authored
    KVM common code does vcpu_load prior to calling our arch ioctls and
    vcpu_put after we're done here. Via the kvm_arch_vcpu_load/put
    callbacks we do load the fpu and access register state into the
    processor, which saves us moving the state on every SIE exit the
    kernel handles. However this breaks register setting from userspace,
    because of the following sequence:
    1a. vcpu load stores userspace register content
    1b. vcpu load loads guest register content
    2.  kvm_arch_vcpu_ioctl_set_fpu/sregs updates saved guest register content
    3a. vcpu put stores the guest registers and overwrites the new content
    3b. vcpu put loads the userspace register set again
    
    This patch loads the new guest register state into the cpu, so that the correct
    (new) set of guest registers will be stored in step 3a.
    Signed-off-by: default avatarCarsten Otte <cotte@de.ibm.com>
    Signed-off-by: default avatarChristian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: default avatarMarcelo Tosatti <mtosatti@redhat.com>
    7eef87dc
kvm-s390.c 19.4 KB