• Vitaly Kuznetsov's avatar
    x86/kvm: Support Hyper-V reenlightenment · 0092e434
    Vitaly Kuznetsov authored
    When running nested KVM on Hyper-V guests its required to update
    masterclocks for all guests when L1 migrates to a host with different TSC
    frequency.
    
    Implement the procedure in the following way:
      - Pause all guests.
      - Tell the host (Hyper-V) to stop emulating TSC accesses.
      - Update the gtod copy, recompute clocks.
      - Unpause all guests.
    
    This is somewhat similar to cpufreq but there are two important differences:
     - TSC emulation can only be disabled globally (on all CPUs)
     - The new TSC frequency is not known until emulation is turned off so
       there is no way to 'prepare' for the event upfront.
    Signed-off-by: default avatarVitaly Kuznetsov <vkuznets@redhat.com>
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Acked-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    Cc: Stephen Hemminger <sthemmin@microsoft.com>
    Cc: kvm@vger.kernel.org
    Cc: Radim Krčmář <rkrcmar@redhat.com>
    Cc: Haiyang Zhang <haiyangz@microsoft.com>
    Cc: "Michael Kelley (EOSG)" <Michael.H.Kelley@microsoft.com>
    Cc: Roman Kagan <rkagan@virtuozzo.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: devel@linuxdriverproject.org
    Cc: "K. Y. Srinivasan" <kys@microsoft.com>
    Cc: Cathy Avery <cavery@redhat.com>
    Cc: Mohammed Gamal <mmorsy@redhat.com>
    Link: https://lkml.kernel.org/r/20180124132337.30138-8-vkuznets@redhat.com
    0092e434
x86.c 230 KB