[PATCH] x86/tsc: enable APB timer based calibration

From: Jacob Pan
Date: Wed Jul 15 2009 - 17:20:02 EST


for platform that do not have PIT, we can use APB timer (if available)
to calibrate TSC by counting the two. APB timer frequency is known to
the system by SFI table provided by FW.

Signed-off-by: Jacob Pan <jacob.jun.pan@xxxxxxxxx>
---
arch/x86/kernel/tsc.c | 11 +++++++++++
1 files changed, 11 insertions(+), 0 deletions(-)

diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c
index 6e1a368..8b38a9d 100644
--- a/arch/x86/kernel/tsc.c
+++ b/arch/x86/kernel/tsc.c
@@ -18,6 +18,9 @@
#include <asm/delay.h>
#include <asm/hypervisor.h>

+#include <asm/platform_feature.h>
+#include <asm/apb_timer.h>
+
unsigned int __read_mostly cpu_khz; /* TSC clocks / usec, not used here */
EXPORT_SYMBOL(cpu_khz);

@@ -394,6 +397,14 @@ unsigned long native_calibrate_tsc(void)
return hv_tsc_khz;
}

+ /* first check if apb timer exist and is usable */
+ if (platform_has(X86_PLATFORM_FEATURE_APBT)) {
+ local_irq_save(flags);
+ fast_calibrate = apbt_quick_calibrate();
+ local_irq_restore(flags);
+ if (fast_calibrate)
+ return fast_calibrate;
+ }
local_irq_save(flags);
fast_calibrate = quick_pit_calibrate();
local_irq_restore(flags);
--
1.5.6.5

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/