• Zachary Amsden's avatar
    KVM: Improve TSC offset matching · 5d3cb0f6
    Zachary Amsden authored
    There are a few improvements that can be made to the TSC offset
    matching code.  First, we don't need to call the 128-bit multiply
    (especially on a constant number), the code works much nicer to
    do computation in nanosecond units.
    
    Second, the way everything is setup with software TSC rate scaling,
    we currently have per-cpu rates.  Obviously this isn't too desirable
    to use in practice, but if for some reason we do change the rate of
    all VCPUs at runtime, then reset the TSCs, we will only want to
    match offsets for VCPUs running at the same rate.
    
    Finally, for the case where we have an unstable host TSC, but
    rate scaling is being done in hardware, we should call the platform
    code to compute the TSC offset, so the math is reorganized to recompute
    the base instead, then transform the base into an offset using the
    existing API.
    
    [avi: fix 64-bit division on i386]
    Signed-off-by: default avatarZachary Amsden <zamsden@gmail.com>
    Signed-off-by: default avatarMarcelo Tosatti <mtosatti@redhat.com>
    
    KVM: Fix 64-bit division in kvm_write_tsc()
    
    Breaks i386 build.
    Signed-off-by: default avatarAvi Kivity <avi@redhat.com>
    5d3cb0f6
x86.c 158 KB