[PATCH] vmi: sched clock paravirt op fix
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:Zachary Amsden <zach@vmware.com> Signed-off-by:
Andrew Morton <akpm@linux-foundation.org> Signed-off-by:
Linus Torvalds <torvalds@linux-foundation.org>
Showing
- arch/i386/kernel/paravirt.c 2 additions, 0 deletionsarch/i386/kernel/paravirt.c
- arch/i386/kernel/tsc.c 2 additions, 4 deletionsarch/i386/kernel/tsc.c
- arch/i386/kernel/vmi.c 1 addition, 1 deletionarch/i386/kernel/vmi.c
- arch/i386/kernel/vmitime.c 1 addition, 1 deletionarch/i386/kernel/vmitime.c
- include/asm-i386/paravirt.h 3 additions, 0 deletionsinclude/asm-i386/paravirt.h
- include/asm-i386/time.h 0 additions, 1 deletioninclude/asm-i386/time.h
- include/asm-i386/timer.h 7 additions, 1 deletioninclude/asm-i386/timer.h
- include/asm-i386/vmi_time.h 1 addition, 1 deletioninclude/asm-i386/vmi_time.h
Loading
Please register or sign in to comment