• Zachary Amsden's avatar
    [PATCH] vmi: sched clock paravirt op fix · 6cb9a835
    Zachary Amsden authored
    The custom_sched_clock hook is broken.  The result from sched_clock needs to
    be in nanoseconds, not in CPU cycles.  The TSC is insufficient for this
    purpose, because TSC is poorly defined in a virtual environment, and mostly
    represents real world time instead of scheduled process time (which can be
    interrupted without notice when a virtual machine is descheduled).
    
    To make the scheduler consistent, we must expose a different nature of time,
    that is scheduled time.  So deprecate this custom_sched_clock hack and turn it
    into a paravirt-op, as it should have been all along.  This allows the tsc.c
    code which converts cycles to nanoseconds to be shared by all paravirt-ops
    backends.
    
    It is unfortunate to add a new paravirt-op, but this is a very distinct
    abstraction which is clearly different for all virtual machine
    implementations, and it gets rid of an ugly indirect function which I
    ashamedly admit I hacked in to try to get this to work earlier, and then even
    got in the wrong units.
    Signed-off-by: default avatarZachary Amsden <zach@vmware.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    6cb9a835
timer.h 481 Bytes