* [patch 0/5] powerpc 2.6.21-rt1] latency trace support for powerpc
@ 2007-05-14 7:42 Tsutomu OWA
2007-05-14 8:15 ` [patch 1/5] powerpc 2.6.21-rt1: add mcount() and _mcount() Tsutomu OWA
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: Tsutomu OWA @ 2007-05-14 7:42 UTC (permalink / raw)
To: linuxppc-dev, linux-kernel; +Cc: mingo, tglx
Hi Ingo,
Please consider for inclusion.
This series of patches adds very basic latency trace support for powerpc.
Compile, boot and trace tested (a little) on Celleb.
Thanks in advance.
-- owa
TOSHIBA, Corprate Software Engineering Center.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [patch 1/5] powerpc 2.6.21-rt1: add mcount() and _mcount()
2007-05-14 7:42 [patch 0/5] powerpc 2.6.21-rt1] latency trace support for powerpc Tsutomu OWA
@ 2007-05-14 8:15 ` Tsutomu OWA
2007-05-14 8:16 ` [patch 2/5] powerpc 2.6.21-rt1: dummy functions and export _mcount to compile Tsutomu OWA
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Tsutomu OWA @ 2007-05-14 8:15 UTC (permalink / raw)
To: linuxppc-dev, linux-kernel; +Cc: mingo, tglx
add mcount() and _mcount() for latency trace support.
Signed-off-by: Tsutomu OWA <tsutomu.owa@toshiba.co.jp>
-- owa
diff -rup linux-2.6.21-rt1/arch/powerpc/kernel/entry_64.S rt/arch/powerpc/kernel/entry_64.S
--- linux-2.6.21-rt1/arch/powerpc/kernel/entry_64.S 2007-05-07 14:08:12.000000000 +0900
+++ rt/arch/powerpc/kernel/entry_64.S 2007-05-08 18:54:07.000000000 +0900
@@ -832,3 +832,63 @@ _GLOBAL(enter_prom)
ld r0,16(r1)
mtlr r0
blr
+
+#ifdef CONFIG_MCOUNT
+/*
+ * code almost taken from entry_32.S
+ */
+#define MCOUNT_FRAME_SIZE 32
+_GLOBAL(mcount)
+ stdu r1,-MCOUNT_FRAME_SIZE(r1)
+ mflr r3
+
+ LOAD_REG_ADDR(r5,mcount_enabled)
+ lwz r5,0(r5)
+ std r3,MCOUNT_FRAME_SIZE+16(r1)
+ cmpwi r5,0
+ beq 1f
+
+ /* r3 contains lr (eip), put parent lr (parent_eip) in r4 */
+ ld r4,MCOUNT_FRAME_SIZE(r1)
+ ld r4,16(r4)
+ bl .__trace
+ nop
+1:
+ ld r0,MCOUNT_FRAME_SIZE+16(r1)
+ mtlr r0
+ addi r1,r1,MCOUNT_FRAME_SIZE
+ blr
+
+/*
+ * Based on glibc-2.4/sysdeps/powerpc/powerpc64/ppc-mcount.S
+ *
+ * We don't need to save the parameter-passing registers as gcc takes
+ * care of that for us. Thus this function looks fairly normal.
+ * In fact, the generic code would work for us.
+ */
+_GLOBAL(_mcount)
+ /* return if we're in real mode. */
+ mfmsr r3
+ andi. r0,r3,MSR_IR|MSR_DR /* see if relocation is on? */
+ beqlr /* if not, do nothing. */
+ /* we're in translation mode. keep going. */
+ mflr r3
+ ld r11,0(r1) /* load back chain ptr */
+ stdu r1,-STACK_FRAME_OVERHEAD(r1)
+ std r3,STACK_FRAME_OVERHEAD+16(r1)
+ ld r4,16(r11) /* LR in back chain */
+ LOAD_REG_ADDR(r5,mcount_enabled)
+ lwz r5,0(r5)
+ cmpwi r5,0 /* see if mcount_enabled? */
+ beq 1f /* if disabled, then skip */
+
+ /* r3 contains lr (eip), put parent lr (parent_eip) in r4 */
+ bl .__trace
+ nop
+1:
+ ld r0,STACK_FRAME_OVERHEAD+16(r1) /* restore saved LR */
+ mtlr r0
+ addi r1,r1,STACK_FRAME_OVERHEAD
+ blr
+
+#endif /* CONFIG_MCOUNT */
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [patch 2/5] powerpc 2.6.21-rt1: dummy functions and export _mcount to compile
2007-05-14 7:42 [patch 0/5] powerpc 2.6.21-rt1] latency trace support for powerpc Tsutomu OWA
2007-05-14 8:15 ` [patch 1/5] powerpc 2.6.21-rt1: add mcount() and _mcount() Tsutomu OWA
@ 2007-05-14 8:16 ` Tsutomu OWA
2007-05-14 8:17 ` [patch 3/5] powerpc 2.6.21-rt1: mark raw_local_irq_restore() and timebase_read() as notrace Tsutomu OWA
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Tsutomu OWA @ 2007-05-14 8:16 UTC (permalink / raw)
To: linuxppc-dev, linux-kernel; +Cc: mingo, tglx
add dummy functions save_stack_trace(), early_printk() for now and
export _mcount to compile.
Signed-off-by: Tsutomu OWA <tsutomu.owa@toshiba.co.jp>
-- owa
diff -rup linux-2.6.21-rt1/arch/powerpc/kernel/setup_64.c rt/arch/powerpc/kernel/setup_64.c
--- linux-2.6.21-rt1/arch/powerpc/kernel/setup_64.c 2007-04-26 12:08:32.000000000 +0900
+++ rt/arch/powerpc/kernel/setup_64.c 2007-05-08 18:50:46.000000000 +0900
@@ -606,3 +606,22 @@ struct ppc_pci_io ppc_pci_io;
EXPORT_SYMBOL(ppc_pci_io);
#endif /* CONFIG_PPC_INDIRECT_IO */
+#ifdef CONFIG_STACKTRACE
+#include <linux/stacktrace.h>
+void notrace save_stack_trace(struct stack_trace *trace,
+ struct task_struct *task)
+{
+}
+#endif /* CONFIG_STACKTRACE */
+
+#ifdef CONFIG_EARLY_PRINTK
+void notrace early_printk(const char *fmt, ...)
+{
+ BUG();
+}
+#endif /* CONFIG_EARLY_PRINTK */
+
+#ifdef CONFIG_MCOUNT
+extern void _mcount(void);
+EXPORT_SYMBOL(_mcount);
+#endif /* CONFIG_MCOUNT */
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [patch 3/5] powerpc 2.6.21-rt1: mark raw_local_irq_restore() and timebase_read() as notrace
2007-05-14 7:42 [patch 0/5] powerpc 2.6.21-rt1] latency trace support for powerpc Tsutomu OWA
2007-05-14 8:15 ` [patch 1/5] powerpc 2.6.21-rt1: add mcount() and _mcount() Tsutomu OWA
2007-05-14 8:16 ` [patch 2/5] powerpc 2.6.21-rt1: dummy functions and export _mcount to compile Tsutomu OWA
@ 2007-05-14 8:17 ` Tsutomu OWA
2007-05-14 8:19 ` [patch 4/5] powerpc 2.6.21-rt1: rename mcount variable in xmon to xmon_mcount Tsutomu OWA
2007-05-14 8:23 ` [patch 5/5] powerpc 2.6.21-rt1] fix clocksource_timebase.shift value Tsutomu OWA
4 siblings, 0 replies; 6+ messages in thread
From: Tsutomu OWA @ 2007-05-14 8:17 UTC (permalink / raw)
To: linuxppc-dev, linux-kernel; +Cc: mingo, tglx
mark raw_local_irq_restore() and timebase_read() as notrace since
these are called from __trace().
Signed-off-by: Tsutomu OWA <tsutomu.owa@toshiba.co.jp>
-- owa
diff -rup linux-2.6.21-rt1/arch/powerpc/kernel/irq.c rt/arch/powerpc/kernel/irq.c
--- linux-2.6.21-rt1/arch/powerpc/kernel/irq.c 2007-05-07 14:08:12.000000000 +0900
+++ rt/arch/powerpc/kernel/irq.c 2007-05-07 14:05:30.000000000 +0900
@@ -111,7 +111,7 @@ static inline void set_soft_enabled(unsi
: : "r" (enable), "i" (offsetof(struct paca_struct, soft_enabled)));
}
-void raw_local_irq_restore(unsigned long en)
+void notrace raw_local_irq_restore(unsigned long en)
{
/*
* get_paca()->soft_enabled = en;
--- linux-2.6.21-rt1/arch/powerpc/kernel/time.c 2007-05-09 17:52:05.000000000 +0900
+++ rt/arch/powerpc/kernel/time.c 2007-05-09 18:03:39.000000000 +0900
@@ -923,7 +923,7 @@ void div128_by_32(u64 dividend_high, u64
#include <linux/clocksource.h>
-static cycle_t timebase_read(void)
+static cycle_t notrace timebase_read(void)
{
return (cycle_t)get_tb();
}
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [patch 4/5] powerpc 2.6.21-rt1: rename mcount variable in xmon to xmon_mcount
2007-05-14 7:42 [patch 0/5] powerpc 2.6.21-rt1] latency trace support for powerpc Tsutomu OWA
` (2 preceding siblings ...)
2007-05-14 8:17 ` [patch 3/5] powerpc 2.6.21-rt1: mark raw_local_irq_restore() and timebase_read() as notrace Tsutomu OWA
@ 2007-05-14 8:19 ` Tsutomu OWA
2007-05-14 8:23 ` [patch 5/5] powerpc 2.6.21-rt1] fix clocksource_timebase.shift value Tsutomu OWA
4 siblings, 0 replies; 6+ messages in thread
From: Tsutomu OWA @ 2007-05-14 8:19 UTC (permalink / raw)
To: linuxppc-dev, linux-kernel; +Cc: mingo, tglx
Rename variable name "mcount" in xmon to xmon_mcount, since it conflicts
with mcount() function used by latency trace function.
Signed-off-by: Tsutomu OWA <tsutomu.owa@toshiba.co.jp>
-- owa
diff -rup linux-2.6.21-rt1/arch/powerpc/xmon/xmon.c rt/arch/powerpc/xmon/xmon.c
--- linux-2.6.21-rt1/arch/powerpc/xmon/xmon.c 2007-05-07 14:08:12.000000000 +0900
+++ rt/arch/powerpc/xmon/xmon.c 2007-05-07 14:05:30.000000000 +0900
@@ -2129,7 +2129,7 @@ print_address(unsigned long addr)
static unsigned long mdest; /* destination address */
static unsigned long msrc; /* source address */
static unsigned long mval; /* byte value to set memory to */
-static unsigned long mcount; /* # bytes to affect */
+static unsigned long xmon_mcount; /* # bytes to affect */
static unsigned long mdiffs; /* max # differences to print */
void
@@ -2141,19 +2141,20 @@ memops(int cmd)
scanhex((void *)(cmd == 's'? &mval: &msrc));
if( termch != '\n' )
termch = 0;
- scanhex((void *)&mcount);
+ scanhex((void *)&xmon_mcount);
switch( cmd ){
case 'm':
- memmove((void *)mdest, (void *)msrc, mcount);
+ memmove((void *)mdest, (void *)msrc, xmon_mcount);
break;
case 's':
- memset((void *)mdest, mval, mcount);
+ memset((void *)mdest, mval, xmon_mcount);
break;
case 'd':
if( termch != '\n' )
termch = 0;
scanhex((void *)&mdiffs);
- memdiffs((unsigned char *)mdest, (unsigned char *)msrc, mcount, mdiffs);
+ memdiffs((unsigned char *)mdest, (unsigned char *)msrc,
+ xmon_mcount, mdiffs);
break;
}
}
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [patch 5/5] powerpc 2.6.21-rt1] fix clocksource_timebase.shift value
2007-05-14 7:42 [patch 0/5] powerpc 2.6.21-rt1] latency trace support for powerpc Tsutomu OWA
` (3 preceding siblings ...)
2007-05-14 8:19 ` [patch 4/5] powerpc 2.6.21-rt1: rename mcount variable in xmon to xmon_mcount Tsutomu OWA
@ 2007-05-14 8:23 ` Tsutomu OWA
4 siblings, 0 replies; 6+ messages in thread
From: Tsutomu OWA @ 2007-05-14 8:23 UTC (permalink / raw)
To: linuxppc-dev, linux-kernel; +Cc: mingo, tglx
Calculate clocksource_timebase.shift from tb_ticks_per_jiffy to get an
accurate translation, though I don't understand why current version of
clocksource_timebase.shift could be constant...
Signed-off-by: Tsutomu OWA <tsutomu.owa@toshiba.co.jp>
-- owa
--- linux-2.6.21-rt1/arch/powerpc/kernel/time.c 2007-05-09 18:05:57.000000000 +0900
+++ rt/arch/powerpc/kernel/time.c 2007-05-09 18:06:24.000000000 +0900
@@ -945,6 +945,9 @@ static int __init init_timebase_clocksou
if (__USE_RTC())
return -ENODEV;
+#ifdef CONFIG_PPC64
+ clocksource_timebase.shift = tb_ticks_per_jiffy / 1000000;
+#endif
clocksource_timebase.mult = clocksource_hz2mult(tb_ticks_per_sec,
clocksource_timebase.shift);
return clocksource_register(&clocksource_timebase);
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2007-05-14 8:23 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-05-14 7:42 [patch 0/5] powerpc 2.6.21-rt1] latency trace support for powerpc Tsutomu OWA
2007-05-14 8:15 ` [patch 1/5] powerpc 2.6.21-rt1: add mcount() and _mcount() Tsutomu OWA
2007-05-14 8:16 ` [patch 2/5] powerpc 2.6.21-rt1: dummy functions and export _mcount to compile Tsutomu OWA
2007-05-14 8:17 ` [patch 3/5] powerpc 2.6.21-rt1: mark raw_local_irq_restore() and timebase_read() as notrace Tsutomu OWA
2007-05-14 8:19 ` [patch 4/5] powerpc 2.6.21-rt1: rename mcount variable in xmon to xmon_mcount Tsutomu OWA
2007-05-14 8:23 ` [patch 5/5] powerpc 2.6.21-rt1] fix clocksource_timebase.shift value Tsutomu OWA
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®