This patch introduces the intermediate IPIPE_APIC_TIMER_FREQ API, that
can be used by I-pipe users to obtain the accurate APIC timer frequency
as Linux calibrated it. This API is scheduled to be removed with
x86-ipipe for kernel 2.6.24. ipipe_request_tickdev is meant to be used then.

Note that a similar patch can be cooked up for 2.6.20-i386 if desired.

Jan
---
 arch/x86_64/kernel/apic.c  |    3 +++
 arch/x86_64/kernel/ipipe.c |    1 +
 include/asm-x86_64/ipipe.h |    4 ++++
 3 files changed, 8 insertions(+)

Index: linux-2.6.23.1-xeno_64/arch/x86_64/kernel/apic.c
===================================================================
--- linux-2.6.23.1-xeno_64.orig/arch/x86_64/kernel/apic.c
+++ linux-2.6.23.1-xeno_64/arch/x86_64/kernel/apic.c
@@ -872,6 +872,9 @@ static int __init calibrate_APIC_clock(v
 
 	printk(KERN_INFO "Detected %d.%03d MHz APIC timer.\n",
 		result / 1000 / 1000, result / 1000 % 1000);
+#ifdef CONFIG_IPIPE
+	__ipipe_apic_timer_freq = result;
+#endif
 
 	return result * APIC_DIVISOR / HZ;
 }
Index: linux-2.6.23.1-xeno_64/arch/x86_64/kernel/ipipe.c
===================================================================
--- linux-2.6.23.1-xeno_64.orig/arch/x86_64/kernel/ipipe.c
+++ linux-2.6.23.1-xeno_64/arch/x86_64/kernel/ipipe.c
@@ -47,6 +47,7 @@
 asmlinkage void preempt_schedule_irq(void);
 
 int __ipipe_tick_irq;		/* =0: 8254 */
+unsigned long __ipipe_apic_timer_freq;
 
 DEFINE_PER_CPU(struct pt_regs, __ipipe_tick_regs);
 
Index: linux-2.6.23.1-xeno_64/include/asm-x86_64/ipipe.h
===================================================================
--- linux-2.6.23.1-xeno_64.orig/include/asm-x86_64/ipipe.h
+++ linux-2.6.23.1-xeno_64/include/asm-x86_64/ipipe.h
@@ -84,6 +84,10 @@ extern unsigned cpu_khz;
 #define ipipe_tsc2ns(t)	(((t) * 1000UL) / (ipipe_cpu_freq() / 1000000UL))
 #define ipipe_tsc2us(t)	((t) / (ipipe_cpu_freq() / 1000000UL))
 
+/* Intermediat interface, will be removed in 2.6.24 in favour of ipipe_request_tickdev */
+extern unsigned long __ipipe_apic_timer_freq;
+#define IPIPE_APIC_TIMER_FREQ		__ipipe_apic_timer_freq
+
 /* Private interface -- Internal use only */
 
 #define __ipipe_check_platform()	do { } while(0)

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core

Reply via email to