mirror of
https://github.com/xen-project/xen.git
synced 2026-10-30 03:00:05 +01:00
x86/viridian: drop a wrong invalid value from reference TSC implementation
The only invalid value mentioned in Hyper-V TLFS 5.0c is 0. Michael Kelley confirmed that 0xFFFFFFFF was never used [0]. [0] https://lists.xen.org/archives/html/xen-devel/2019-12/msg01564.html Signed-off-by: Wei Liu <liuwe@microsoft.com> Reviewed-by: Paul Durrant <paul@xen.org>
This commit is contained in:
1 parent
9520876662
commit
c9d9b5f4c9
1 file changed
+4
-12
@@ -45,14 +45,9 @@ static void update_reference_tsc(const struct domain *d, bool initialize)
|
||||
if ( !host_tsc_is_safe() || d->arch.vtsc )
|
||||
{
|
||||
/*
|
||||
* The specification states that valid values of TscSequence range
|
||||
* from 0 to 0xFFFFFFFE. The value 0xFFFFFFFF is used to indicate
|
||||
* this mechanism is no longer a reliable source of time and that
|
||||
* the VM should fall back to a different source.
|
||||
*
|
||||
* Server 2012 (6.2 kernel) and 2012 R2 (6.3 kernel) actually
|
||||
* violate the spec. and rely on a value of 0 to indicate that this
|
||||
* enlightenment should no longer be used.
|
||||
* The value 0 is used to indicate this mechanism is no longer a
|
||||
* reliable source of time and that the VM should fall back to a
|
||||
* different source.
|
||||
*/
|
||||
p->tsc_sequence = 0;
|
||||
|
||||
@@ -77,10 +72,7 @@ static void update_reference_tsc(const struct domain *d, bool initialize)
|
||||
smp_wmb();
|
||||
|
||||
seq = p->tsc_sequence + 1;
|
||||
if ( seq == 0xFFFFFFFF || seq == 0 ) /* Avoid both 'invalid' values */
|
||||
seq = 1;
|
||||
|
||||
p->tsc_sequence = seq;
|
||||
p->tsc_sequence = seq ? seq : 1; /* Avoid 'invalid' value 0 */
|
||||
}
|
||||
|
||||
static uint64_t trc_val(const struct domain *d, int64_t offset)
|
||||
|
||||