1. 16 May, 2014 1 commit
  2. 12 May, 2014 1 commit
  3. 08 May, 2014 1 commit
    • Gabriel L. Somlo's avatar
      kvm: x86: emulate monitor and mwait instructions as nop · 87c00572
      Gabriel L. Somlo authored
      Treat monitor and mwait instructions as nop, which is architecturally
      correct (but inefficient) behavior. We do this to prevent misbehaving
      guests (e.g. OS X <= 10.7) from crashing after they fail to check for
      monitor/mwait availability via cpuid.
      
      Since mwait-based idle loops relying on these nop-emulated instructions
      would keep the host CPU pegged at 100%, do NOT advertise their presence
      via cpuid, to prevent compliant guests from using them inadvertently.
      Signed-off-by: default avatarGabriel L. Somlo <somlo@cmu.edu>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      87c00572
  4. 07 May, 2014 3 commits
  5. 06 May, 2014 8 commits
  6. 05 May, 2014 2 commits
    • Ulrich Obergfell's avatar
      KVM: x86: improve the usability of the 'kvm_pio' tracepoint · 1171903d
      Ulrich Obergfell authored
      This patch moves the 'kvm_pio' tracepoint to emulator_pio_in_emulated()
      and emulator_pio_out_emulated(), and it adds an argument (a pointer to
      the 'pio_data'). A single 8-bit or 16-bit or 32-bit data item is fetched
      from 'pio_data' (depending on 'size'), and the value is included in the
      trace record ('val'). If 'count' is greater than one, this is indicated
      by the string "(...)" in the trace output.
      Signed-off-by: default avatarUlrich Obergfell <uobergfe@redhat.com>
      Reviewed-by: default avatarXiao Guangrong <xiaoguangrong@linux.vnet.ibm.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      1171903d
    • Christian Borntraeger's avatar
      kvm/irqchip: Speed up KVM_SET_GSI_ROUTING · 719d93cd
      Christian Borntraeger authored
      When starting lots of dataplane devices the bootup takes very long on
      Christian's s390 with irqfd patches. With larger setups he is even
      able to trigger some timeouts in some components.  Turns out that the
      KVM_SET_GSI_ROUTING ioctl takes very long (strace claims up to 0.1 sec)
      when having multiple CPUs.  This is caused by the  synchronize_rcu and
      the HZ=100 of s390.  By changing the code to use a private srcu we can
      speed things up.  This patch reduces the boot time till mounting root
      from 8 to 2 seconds on my s390 guest with 100 disks.
      
      Uses of hlist_for_each_entry_rcu, hlist_add_head_rcu, hlist_del_init_rcu
      are fine because they do not have lockdep checks (hlist_for_each_entry_rcu
      uses rcu_dereference_raw rather than rcu_dereference, and write-sides
      do not do rcu lockdep at all).
      
      Note that we're hardly relying on the "sleepable" part of srcu.  We just
      want SRCU's faster detection of grace periods.
      
      Testing was done by Andrew Theurer using netperf tests STREAM, MAERTS
      and RR.  The difference between results "before" and "after" the patch
      has mean -0.2% and standard deviation 0.6%.  Using a paired t-test on the
      data points says that there is a 2.5% probability that the patch is the
      cause of the performance difference (rather than a random fluctuation).
      
      (Restricting the t-test to RR, which is the most likely to be affected,
      changes the numbers to respectively -0.3% mean, 0.7% stdev, and 8%
      probability that the numbers actually say something about the patch.
      The probability increases mostly because there are fewer data points).
      
      Cc: Marcelo Tosatti <mtosatti@redhat.com>
      Cc: Michael S. Tsirkin <mst@redhat.com>
      Tested-by: Christian Borntraeger <borntraeger@de.ibm.com> # s390
      Reviewed-by: default avatarChristian Borntraeger <borntraeger@de.ibm.com>
      Signed-off-by: default avatarChristian Borntraeger <borntraeger@de.ibm.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      719d93cd
  7. 30 Apr, 2014 1 commit
    • Paolo Bonzini's avatar
      Merge tag 'kvm-s390-20140429' of... · 57b5981c
      Paolo Bonzini authored
      Merge tag 'kvm-s390-20140429' of git://git.kernel.org/pub/scm/linux/kernel/git/kvms390/linux into kvm-next
      
      1. Guest handling fixes
      The handling of MVPG, PFMF and Test Block is fixed to better follow
      the architecture. None of these fixes is critical for any current
      Linux guests, but let's play safe.
      
      2. Optimization for single CPU guests
      We can enable the IBS facility if only one VCPU is running (!STOPPED
      state). We also enable this optimization for guest > 1 VCPU as soon
      as all but one VCPU is in stopped state. Thus will help guests that
      have tools like cpuplugd (from s390-utils) that do dynamic offline/
      online of CPUs.
      
      3. NOTES
      There is one non-s390 change in include/linux/kvm_host.h that
      introduces 2 defines for VCPU requests:
      define KVM_REQ_ENABLE_IBS        23
      define KVM_REQ_DISABLE_IBS       24
      57b5981c
  8. 29 Apr, 2014 7 commits
  9. 28 Apr, 2014 2 commits
  10. 23 Apr, 2014 9 commits
  11. 22 Apr, 2014 5 commits
    • Bandan Das's avatar
      KVM: nVMX: Advertise support for interrupt acknowledgement · e0ba1a6f
      Bandan Das authored
      Some Type 1 hypervisors such as XEN won't enable VMX without it present
      Signed-off-by: default avatarBandan Das <bsd@redhat.com>
      Signed-off-by: default avatarMarcelo Tosatti <mtosatti@redhat.com>
      e0ba1a6f
    • Bandan Das's avatar
      KVM: nVMX: Ack and write vector info to intr_info if L1 asks us to · 77b0f5d6
      Bandan Das authored
      This feature emulates the "Acknowledge interrupt on exit" behavior.
      We can safely emulate it for L1 to run L2 even if L0 itself has it
      disabled (to run L1).
      Signed-off-by: default avatarBandan Das <bsd@redhat.com>
      Signed-off-by: default avatarMarcelo Tosatti <mtosatti@redhat.com>
      77b0f5d6
    • Bandan Das's avatar
      KVM: nVMX: Don't advertise single context invalidation for invept · 4b855078
      Bandan Das authored
      For single context invalidation, we fall through to global
      invalidation in handle_invept() except for one case - when
      the operand supplied by L1 is different from what we have in
      vmcs12. However, typically hypervisors will only call invept
      for the currently loaded eptp, so the condition will
      never be true.
      Signed-off-by: default avatarBandan Das <bsd@redhat.com>
      Signed-off-by: default avatarMarcelo Tosatti <mtosatti@redhat.com>
      4b855078
    • Huw Davies's avatar
      KVM: VMX: Advance rip to after an ICEBP instruction · fd2a445a
      Huw Davies authored
      When entering an exception after an ICEBP, the saved instruction
      pointer should point to after the instruction.
      
      This fixes the bug here: https://bugs.launchpad.net/qemu/+bug/1119686Signed-off-by: default avatarHuw Davies <huw@codeweavers.com>
      Reviewed-by: default avatarJan Kiszka <jan.kiszka@siemens.com>
      Signed-off-by: default avatarMarcelo Tosatti <mtosatti@redhat.com>
      fd2a445a
    • Marcelo Tosatti's avatar
      Merge tag 'kvm-s390-20140422' of... · 63b5cf04
      Marcelo Tosatti authored
      Merge tag 'kvm-s390-20140422' of git://git.kernel.org/pub/scm/linux/kernel/git/kvms390/linux into queue
      
      Lazy storage key handling
      -------------------------
      Linux does not use the ACC and F bits of the storage key. Newer Linux
      versions also do not use the storage keys for dirty and reference
      tracking. We can optimize the guest handling for those guests for faults
      as well as page-in and page-out by simply not caring about the guest
      visible storage key. We trap guest storage key instruction to enable
      those keys only on demand.
      
      Migration bitmap
      
      Until now s390 never provided a proper dirty bitmap.  Let's provide a
      proper migration bitmap for s390. We also change the user dirty tracking
      to a fault based mechanism. This makes the host completely independent
      from the storage keys. Long term this will allow us to back guest memory
      with large pages.
      
      per-VM device attributes
      ------------------------
      To avoid the introduction of new ioctls, let's provide the
      attribute semanantic also on the VM-"device".
      
      Userspace controlled CMMA
      -------------------------
      The CMMA assist is changed from "always on" to "on if requested" via
      per-VM device attributes. In addition a callback to reset all usage
      states is provided.
      
      Proper guest DAT handling for intercepts
      ----------------------------------------
      While instructions handled by SIE take care of all addressing aspects,
      KVM/s390 currently does not care about guest address translation of
      intercepts. This worked out fine, because
      - the s390 Linux kernel has a 1:1 mapping between kernel virtual<->real
       for all pages up to memory size
      - intercepts happen only for a small amount of cases
      - all of these intercepts happen to be in the kernel text for current
        distros
      
      Of course we need to be better for other intercepts, kernel modules etc.
      We provide the infrastructure and rework all in-kernel intercepts to work
      on logical addresses (paging etc) instead of real ones. The code has
      been running internally for several months now, so it is time for going
      public.
      
      GDB support
      -----------
      We provide breakpoints, single stepping and watchpoints.
      
      Fixes/Cleanups
      --------------
      - Improve program check delivery
      - Factor out the handling of transactional memory  on program checks
      - Use the existing define __LC_PGM_TDB
      - Several cleanups in the lowcore structure
      - Documentation
      
      NOTES
      -----
      - All patches touching base s390 are either ACKed or written by the s390
        maintainers
      - One base KVM patch "KVM: add kvm_is_error_gpa() helper"
      - One patch introduces the notion of VM device attributes
      Signed-off-by: default avatarMarcelo Tosatti <mtosatti@redhat.com>
      
      Conflicts:
      	include/uapi/linux/kvm.h
      63b5cf04