|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] x86, cpuidle: remove assertion on X86_FEATURE_TSC_RELIABLE
x86, cpuidle: remove assertion on X86_FEATURE_TSC_RELIABLE
23228:1329d99b4f16 disables deep cstate to avoid restoring tsc when
tsc msr is not writtable on some old platform, which however also
adds an assertion on X86_FEATURE_TSC_RELIABLE in cstate_restore_tsc.
The two don't match as tsc writtable-ness has nothing to do with
whether it's reliable. As long as Xen can use tsc as the time source
and it's writable, it should be OK to continue using deep cstate
with tsc save/restore.
Also mark tsc as reliable for X86_FEATURE_CONSTANT_TSC.
Without this fix, one of our platform hits the assertion which
only has constant tsc feature.
Signed-off-by: Kevin Tian <kevin.tian@xxxxxxxxx>
diff -r 0c446850d85e xen/arch/x86/cpu/intel.c
--- a/xen/arch/x86/cpu/intel.c Wed May 11 12:58:04 2011 +0100
+++ b/xen/arch/x86/cpu/intel.c Fri May 13 10:01:20 2011 +0800
@@ -221,8 +221,10 @@
if (c->x86 == 6)
set_bit(X86_FEATURE_P3, c->x86_capability);
if ((c->x86 == 0xf && c->x86_model >= 0x03) ||
- (c->x86 == 0x6 && c->x86_model >= 0x0e))
+ (c->x86 == 0x6 && c->x86_model >= 0x0e)) {
set_bit(X86_FEATURE_CONSTANT_TSC, c->x86_capability);
+ set_bit(X86_FEATURE_TSC_RELIABLE, c->x86_capability);
+ }
if (cpuid_edx(0x80000007) & (1u<<8)) {
set_bit(X86_FEATURE_CONSTANT_TSC, c->x86_capability);
set_bit(X86_FEATURE_NONSTOP_TSC, c->x86_capability);
diff -r 0c446850d85e xen/arch/x86/time.c
--- a/xen/arch/x86/time.c Wed May 11 12:58:04 2011 +0100
+++ b/xen/arch/x86/time.c Fri May 13 10:01:20 2011 +0800
@@ -686,8 +686,6 @@
if ( boot_cpu_has(X86_FEATURE_NONSTOP_TSC) )
return;
- ASSERT(boot_cpu_has(X86_FEATURE_TSC_RELIABLE));
-
write_tsc(stime2tsc(read_platform_stime()));
}
Attachment:
20100513_cpuidle_tsc_reliable.patch _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |