Comment 15 for bug 146924

Revision history for this message
Bart Verwilst (verwilst) wrote : Re: Xen guest suspend causes clock to stop

Essentially this is just a copy of a mail i sent to xen-users:

Well, i've found this link earlier: http://lists.xensource.com/archives/html/xen-devel/2006-03/msg00442.html , but it seems the code has changed quite a bit since then..
Big parts of the patch seem integrated already though..
For example:

Current patch, in use in the running kernel:

+ if ((blocked > 0) && (delta_cpu > 0)) {
+ delta_cpu -= blocked;
+ if (unlikely(delta_cpu < 0))
+ blocked += delta_cpu; /* clamp local-time progress */
+ do_div(blocked, NS_PER_TICK);
+ per_cpu(processed_blocked_time, cpu) += blocked * NS_PER_TICK;
+ per_cpu(processed_system_time, cpu) += blocked * NS_PER_TICK;

Patch on the link provided above:

        if (stolen > 0) {
                delta_cpu -= stolen;
+ if (unlikely(delta_cpu < 0)) {
+ stolen += delta_cpu;
+ delta_cpu = blocked = 0;
+ }
                do_div(stolen, NS_PER_TICK);
                per_cpu(processed_stolen_time, cpu) += stolen * NS_PER_TICK;
                per_cpu(processed_system_time, cpu) += stolen * NS_PER_TICK;

As you can see, quite different.. "delta_cpu = blocked = 0;" is missing, but might be handled with the rest of the changes in the new code..

Another possibility is that this only applies for i386 (i'm running on x86_64.. )..
I've looked into the patch, and it seems to only patch file arch/i386/kernel/time-xen.c .
There isn't a x86_64 equivalent.. ( arch/x86_64/kernel/time-xen.c doesn't exist ) Is this normal? Could this be the cause?