• Paul Mackerras's avatar
    KVM: PPC: Book3S HV: Streamline guest entry and exit · 6af27c84
    Paul Mackerras authored
    On entry to the guest, secondary threads now wait for the primary to
    switch the MMU after loading up most of their state, rather than before.
    This means that the secondary threads get into the guest sooner, in the
    common case where the secondary threads get to kvmppc_hv_entry before
    the primary thread.
    
    On exit, the first thread out increments the exit count and interrupts
    the other threads (to get them out of the guest) before saving most
    of its state, rather than after.  That means that the other threads
    exit sooner and means that the first thread doesn't spend so much
    time waiting for the other threads at the point where the MMU gets
    switched back to the host.
    
    This pulls out the code that increments the exit count and interrupts
    other threads into a separate function, kvmhv_commence_exit().
    This also makes sure that r12 and vcpu->arch.trap are set correctly
    in some corner cases.
    
    Statistics from /sys/kernel/debug/kvm/vm*/vcpu*/timings show the
    improvement.  Aggregating across vcpus for a guest with 32 vcpus,
    8 threads/vcore, running on a POWER8, gives this before the change:
    
     rm_entry:     avg 4537.3ns (222 - 48444, 1068878 samples)
      rm_exit:     avg 4787.6ns (152 - 165490, 1010717 samples)
      rm_intr:     avg 1673.6ns (12 - 341304, 3818691 samples)
    
    and this after the change:
    
     rm_entry:     avg 3427.7ns (232 - 68150, 1118921 samples)
      rm_exit:     avg 4716.0ns (12 - 150720, 1119477 samples)
      rm_intr:     avg 1614.8ns (12 - 522436, 3850432 samples)
    
    showing a substantial reduction in the time spent per guest entry in
    the real-mode guest entry code, and smaller reductions in the real
    mode guest exit and interrupt handling times.  (The test was to start
    the guest and boot Fedora 20 big-endian to the login prompt.)
    Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
    Signed-off-by: default avatarAlexander Graf <agraf@suse.de>
    6af27c84
book3s_hv_rmhandlers.S 62 KB