Philippe Gerum wrote: > On Sat, 2007-02-10 at 14:20 +0100, Jan Kiszka wrote: > >> Jan Kiszka wrote: >> >>> Jan Kiszka wrote: >>> >>> >>>> Philippe, >>>> >>>> have you had to adopt any tracer-related code while switching to 2.6.20? >>>> The same .config that worked fine for 2.6.19 doesn't boot here on >>>> 2.6.20. The kernel hangs during or after decompression. Disabling the >>>> tracer resolves this. >>>> >>>> >>> I had a look at latest -rt and found some new change (which turned out >>> to be a hack). Playing with it, I understood its motivation (avoid >>> instrumentation of the decompressor). Here comes a cleaner variant for >>> 2.6.20 (all archs). Tracer boots fine again. :) >>> >> ^^^^^^^^^ >> Strike that, I lost the overview for a while. It remains an i386 issue. >> >> > > The tracer still has a problem when booting 2.6.20 here (UP, LAPIC, > static Xenomai build, default configuration for both Xeno and the > pipeline+tracer, your latest patch against boot/compressed/Makefile > applied). > > __ipipe_trace seems to be called before the trace log has been setup, > hence the box jumps out of the window upon an invalid data reference > when storing some mcount data. Enabling the VMALLOC log option clears > the issue. > CONFIG_REGPARM passed away. It became default in fact. The following patch removes the remainders from the tracer:
---
arch/i386/kernel/entry.S | 11 -----------
arch/i386/kernel/mcount.S | 13 +------------
2 files changed, 1 insertion(+), 23 deletions(-)
Index: linux-2.6.20/arch/i386/kernel/entry.S
===================================================================
--- linux-2.6.20.orig/arch/i386/kernel/entry.S
+++ linux-2.6.20/arch/i386/kernel/entry.S
@@ -105,25 +105,14 @@ VM_MASK = 0x00020000
jnz restore_nocheck_notrace
#ifdef CONFIG_IPIPE_TRACE_IRQSOFF
-# ifdef CONFIG_REGPARM
-# define LOAD_ARG
-# define REMOVE_ARG
-# else /* !CONFIG_REGPARM */
-# define LOAD_ARG pushl %eax
-# define REMOVE_ARG addl $4, %esp
-# endif /* CONFIG_REGPARM */
# define IPIPE_TRACE_IRQ_ENTER \
lea PT_EIP-4(%esp), %ebp; \
movl PT_ORIG_EAX(%esp), %eax; \
- LOAD_ARG; \
call ipipe_trace_begin; \
- REMOVE_ARG
# define IPIPE_TRACE_IRQ_EXIT \
pushl %eax; \
movl PT_ORIG_EAX+4(%esp), %eax; \
- LOAD_ARG; \
call ipipe_trace_end; \
- REMOVE_ARG; \
popl %eax
#else /* !CONFIG_IPIPE_TRACE_IRQSOFF */
#define IPIPE_TRACE_IRQ_ENTER
Index: linux-2.6.20/arch/i386/kernel/mcount.S
===================================================================
--- linux-2.6.20.orig/arch/i386/kernel/mcount.S
+++ linux-2.6.20/arch/i386/kernel/mcount.S
@@ -1,7 +1,7 @@
/*
* linux/arch/i386/mcount.S
*
- * Copyright (C) 2005 Jan Kiszka
+ * Copyright (C) 2005, 2007 Jan Kiszka
*/
.globl mcount
@@ -17,23 +17,12 @@ mcount:
pushl %edx
pushl $0 # no additional value (v)
-#ifdef CONFIG_REGPARM
movl (%ebp),%eax
movl 0x4(%ebp),%edx # __CALLER_ADDR0
movl 0x4(%eax),%ecx # __CALLER_ADDR1
movl $0,%eax # IPIPE_TRACE_FUNC
call __ipipe_trace
popl %eax
-#else /* !CONFIG_REGPARM */
- movl (%ebp),%eax
- movl 0x4(%eax),%eax
- pushl %eax # __CALLER_ADDR1
- movl 0x4(%ebp),%eax
- pushl %eax # __CALLER_ADDR0
- pushl $0 # IPIPE_TRACE_FUNC
- call __ipipe_trace
- addl $0x10,%esp
-#endif /* CONFIG_REGPARM */
popl %edx
popl %ecx
Looking at the tracer enable code made me wonder why it didn't look like
it should do. Some patch obviously dropped on the floor:
https://mail.gna.org/public/adeos-main/2006-12/msg00037.html
Please apply now as well.
Jan
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Adeos-main mailing list [email protected] https://mail.gna.org/listinfo/adeos-main
