On Tue, 2005-08-16 at 19:08 +0200, Ingo Molnar wrote: > * Ingo Molnar <[EMAIL PROTECTED]> wrote: > > > it's the raw_local_irq_save() in ___trace() that causes trouble. > > ok, i've uploaded 2.6.13-rc6-rt6, which should fix this. (i've pushed > the IRQ tracing into the raw_local_*() primitives, and kept the > __raw_local_*() primitives clean, and ___trace() is using them now) > > Does it boot for you now?
Ingo, I just compiled it and got a bunch of uninitialized variable warnings. Are you sure you want this? Here's the problem. In something like _trace_cmdline we have: static void notrace _trace_cmdline(int cpu, struct cpu_trace *tr) { unsigned long flags; raw_local_save_flags(flags); ____trace(cpu, TRACE_CMDLINE, tr, 0, 0, 0, 0, 0, flags); } Now the raw_local_save_flags is defined as: do { typecheck(unsigned long,flags); \ if (raw_irqs_disabled_flags(flags)) \ trace_irqs_off(); else trace_irqs_on(); \ __raw_local_save_flags(flags); } while (0) The test of raw_irqs_disabled_flags is checking an uninitialized variable. I haven't tried to run it yet since this just doesn't look good. I changed it for now to the following, but it still desn't make sense to me. With a local_save_flags, which doesn't disable or restore the interrupts, why bother with the trace at all? -- Steve Index: linux_realtime_ernie/include/linux/rt_irq.h =================================================================== --- linux_realtime_ernie/include/linux/rt_irq.h (revision 294) +++ linux_realtime_ernie/include/linux/rt_irq.h (working copy) @@ -26,7 +26,7 @@ # endif /* soft state does not follow the hard state */ -# define raw_local_save_flags(flags) do { typecheck(unsigned long,flags); if (raw_irqs_disabled_flags(flags)) trace_irqs_off(); else trace_irqs_on(); __raw_local_save_flags(flags); } while (0) +# define raw_local_save_flags(flags) do { typecheck(unsigned long,flags); if (raw_irqs_disabled()) trace_irqs_off(); else trace_irqs_on(); __raw_local_save_flags(flags); } while (0) # define raw_local_irq_enable() do { trace_irqs_on(); __raw_local_irq_enable(); } while (0) # define raw_local_irq_disable() do { __raw_local_irq_disable(); trace_irqs_off(); } while (0) # define raw_local_irq_save(flags) do { __raw_local_irq_save(flags); trace_irqs_off(); } while (0) - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/