[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] Re: Large system boot problems

On 12/2/08 16:34, "Bill Burns" <bburns@xxxxxxxxxx> wrote:

> Making this one line change, as in the attached patch
> yields a properly working dom0. Tested on both a small
> memory and large memory system.

It's not really correct though. The idea of the calibration algorithm is to
find a multiplier d(system_time)/d(tsc) which we can use to calculate
system_time deltas from tsc deltas by a simple multiplication.

The tsc_shift is effectively the exponent part of a custom floating-point
format (that mantissa part being calibration_mul_frac). The idea is to shift
tsc_elapsed such that stime_elapsed/tsc_elapsed yields a fraction between
0.5 and 1, and therefore maximises significant bits in the mantissa
representation which has an implicit leading radix point.

*So*, the upshot of all this is that when we shift stime_elapsed and
tsc_elapsed together, we do not change the value of
d(delta_stime)/d(delta_tsc) and so of course the exponent of that value
(tsc_shift) does not change.

Put another way, you've perturbed the system and coincidentally made the bug
go into hiding. But it's not really fixed and, in fact, your patch is simply
broken from an algorithmic point of view.

 -- Keir

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.