Hi,
i've created my own bootloader and running it from a floppy image in a VM. The code repeatedly reads the TSC value and print it if the difference is larger than 100000 (about 0.05[ms] on my setup).
About 8 times a second i see a jump in the tsc, with delays up to 2[ms].
Any idea what the source of this is?
(TSC is running at 2GHz, and i've added the monitor_control.virtual_rdtsc = FALSE setting.
Main loop of the code i used:
while (i < 100000)
{
x = __rdtsc();
y = __rdtsc();
x1 = x & 0xffffffff;
x2 = (x >> 32) & 0xffffffff;
if (((y - x) > 100000))
{
printf("TSC jump: %d %08x:%08x %d\n", i, x2, x1, y - x);
i++;
}
}
Output:
TSC jump: 459 0011c215:dccfe2f6 4494498
TSC jump: 460 0011c216:1dc73574 1367202
TSC jump: 461 0011c216:1f293756 1606266
TSC jump: 462 0011c216:23bd161a 1438158
TSC jump: 463 0011c216:5f57e018 3988266