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