• Avi Kivity's avatar
    KVM: x86 shared msr infrastructure · 18863bdd
    Avi Kivity authored
    The various syscall-related MSRs are fairly expensive to switch.  Currently
    we switch them on every vcpu preemption, which is far too often:
    
    - if we're switching to a kernel thread (idle task, threaded interrupt,
      kernel-mode virtio server (vhost-net), for example) and back, then
      there's no need to switch those MSRs since kernel threasd won't
      be exiting to userspace.
    
    - if we're switching to another guest running an identical OS, most likely
      those MSRs will have the same value, so there's little point in reloading
      them.
    
    - if we're running the same OS on the guest and host, the MSRs will have
      identical values and reloading is unnecessary.
    
    This patch uses the new user return notifiers to implement last-minute
    switching, and checks the msr values to avoid unnecessary reloading.
    Signed-off-by: default avatarAvi Kivity <avi@redhat.com>
    18863bdd
kvm_host.h 21.9 KB