1. 30 11月, 2015 4 次提交
  2. 19 11月, 2015 1 次提交
  3. 29 10月, 2015 2 次提交
  4. 14 10月, 2015 1 次提交
  5. 13 10月, 2015 3 次提交
  6. 16 9月, 2015 2 次提交
  7. 07 8月, 2015 1 次提交
  8. 04 8月, 2015 1 次提交
  9. 03 8月, 2015 1 次提交
  10. 30 7月, 2015 1 次提交
    • C
      KVM: s390: Fix hang VCPU hang/loop regression · 586b7ccd
      Christian Borntraeger 提交于
      commit 785dbef4 ("KVM: s390: optimize round trip time in request
      handling") introduced a regression. This regression was seen with
      CPU hotplug in the guest and switching between 1 or 2 CPUs. This will
      set/reset the IBS control via synced request.
      
      Whenever we make a synced request, we first set the vcpu->requests
      bit and then block the vcpu. The handler, on the other hand, unblocks
      itself, processes vcpu->requests (by clearing them) and unblocks itself
      once again.
      
      Now, if the requester sleeps between setting of vcpu->requests and
      blocking, the handler will clear the vcpu->requests bit and try to
      unblock itself (although no bit is set). When the requester wakes up,
      it blocks the VCPU and we have a blocked VCPU without requests.
      
      Solution is to always unset the block bit.
      Signed-off-by: NChristian Borntraeger <borntraeger@de.ibm.com>
      Reviewed-by: NDavid Hildenbrand <dahi@linux.vnet.ibm.com>
      Fixes: 785dbef4 ("KVM: s390: optimize round trip time in request handling")
      586b7ccd
  11. 29 7月, 2015 7 次提交
  12. 27 7月, 2015 1 次提交
  13. 22 7月, 2015 2 次提交
    • H
      s390/kernel: lazy restore fpu registers · 9977e886
      Hendrik Brueckner 提交于
      Improve the save and restore behavior of FPU register contents to use the
      vector extension within the kernel.
      
      The kernel does not use floating-point or vector registers and, therefore,
      saving and restoring the FPU register contents are performed for handling
      signals or switching processes only.  To prepare for using vector
      instructions and vector registers within the kernel, enhance the save
      behavior and implement a lazy restore at return to user space from a
      system call or interrupt.
      
      To implement the lazy restore, the save_fpu_regs() sets a CPU information
      flag, CIF_FPU, to indicate that the FPU registers must be restored.
      Saving and setting CIF_FPU is performed in an atomic fashion to be
      interrupt-safe.  When the kernel wants to use the vector extension or
      wants to change the FPU register state for a task during signal handling,
      the save_fpu_regs() must be called first.  The CIF_FPU flag is also set at
      process switch.  At return to user space, the FPU state is restored.  In
      particular, the FPU state includes the floating-point or vector register
      contents, as well as, vector-enablement and floating-point control.  The
      FPU state restore and clearing CIF_FPU is also performed in an atomic
      fashion.
      
      For KVM, the restore of the FPU register state is performed when restoring
      the general-purpose guest registers before the SIE instructions is started.
      Because the path towards the SIE instruction is interruptible, the CIF_FPU
      flag must be checked again right before going into SIE.  If set, the guest
      registers must be reloaded again by re-entering the outer SIE loop.  This
      is the same behavior as if the SIE critical section is interrupted.
      Signed-off-by: NHendrik Brueckner <brueckner@linux.vnet.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      9977e886
    • H
      s390/kvm: validate the floating-point control before restoring it · 96b2d7a8
      Hendrik Brueckner 提交于
      The kvm_arch_vcpu_load() does not validate whether the floating-point
      control (FPC) is valid.  Further, the return code of the restore is not
      checked too.  If the FPC is invalid, the restore fails and the host FPC
      value might remain.  The correct behavior would be to clear the FPC if it
      is not valid.  Hence, validate the FPC value and, optionally, reset the
      value before restoring it.
      Reviewed-by: NDavid Hildenbrand <dahi@linux.vnet.ibm.com>
      Signed-off-by: NHendrik Brueckner <brueckner@linux.vnet.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      96b2d7a8
  14. 02 6月, 2015 2 次提交
  15. 28 5月, 2015 1 次提交
  16. 26 5月, 2015 2 次提交
  17. 13 5月, 2015 1 次提交
  18. 08 5月, 2015 5 次提交
  19. 07 5月, 2015 1 次提交
    • C
      KVM: provide irq_unsafe kvm_guest_{enter|exit} · 0097d12e
      Christian Borntraeger 提交于
      Several kvm architectures disable interrupts before kvm_guest_enter.
      kvm_guest_enter then uses local_irq_save/restore to disable interrupts
      again or for the first time. Lets provide underscore versions of
      kvm_guest_{enter|exit} that assume being called locked.
      kvm_guest_enter now disables interrupts for the full function and
      thus we can remove the check for preemptible.
      
      This patch then adopts s390/kvm to use local_irq_disable/enable calls
      which are slighty cheaper that local_irq_save/restore and call these
      new functions.
      Signed-off-by: NChristian Borntraeger <borntraeger@de.ibm.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      0097d12e
  20. 15 4月, 2015 1 次提交