some ARM fixes for 2.6.29-rc7-rt1

Uwe Kleine-König
2009-03-13T01:05:04Z

Hello,

On Thu, Mar 12, 2009 at 08:17:50PM +0100, Thomas Gleixner wrote:
> We are pleased to announce the next update to our new preempt-rt
> series. It contains only one new patch:
>
> - port forward to 2.6.29-rc7
> - disable CONFIG_MAXCPUS for now (undebugged runtime bug)
> - fix CONFIG_HIGHMEM problems
> - fix netfilter problems
> - make debugobjects -rt safe
> - various build fixes
on top of 2.6.29-rc7-rc1 I did some ARM related fixes that you can find
at

git://git.pengutronix.de/git/ukl/linux-2.6.git v2.6.29-rc7-rt1-pu

The top commit currently isn't pretty as it contains several independant
fixes. Some of them are netX specific so you probably don't need them,
but they shouldn't hurt you either.

I will update this branch as I continue working in a non-fast-forward
manner. I use TopGit to manage this branch, you might want to use it,
too, if you intend to follow my work.

My status quo is:

Testing tracer sched_switch: PASSED
Testing tracer function: PASSED
Testing tracer irqsoff: .. no entries found ..FAILED!
Testing tracer preemptoff: .. no entries found ..FAILED!
Testing tracer preemptirqsoff: .. no entries found ..<4>------------[ cut here ]------------
WARNING: at /ptx/work/octopus/WORK_2_A/ukl/gsrc/linux-2.6/kernel/trace/trace.c:683 warn_slowpath+0x18/0xa0()
Modules linked in:
[<c0244d40>] (dump_stack+0x0/0x18) from [<c003787c>] (warn_slowpath+0x6c/0xa0)
[<c0037810>] (warn_slowpath+0x0/0xa0) from [<c00750d0>] (tracing_start+0x60/0xdc)
r3:ffffffff r2:00000000
r7:c074aaf0 r6:c0748a0c r5:60000013 r4:c074aac8
[<c0075070>] (tracing_start+0x0/0xdc) from [<c0076430>] (trace_selftest_startup_preemptirqsoff+0x1ac/0x1d8)
r5:c1c1a000 r4:ffffffff
[<c0076284>] (trace_selftest_startup_preemptirqsoff+0x0/0x1d8) from [<c00760c4>] (register_tracer+0x118/0x240)
[<c0075fac>] (register_tracer+0x0/0x240) from [<c000ebbc>] (init_irqsoff_tracer+0x24/0x38)
r7:c000eb98 r6:00000000 r5:c001c44c r4:c001c2b8
[<c000eb98>] (init_irqsoff_tracer+0x0/0x38) from [<c00232c4>] (__exception_text_end+0x5c/0x1a4)
[<c0023268>] (__exception_text_end+0x0/0x1a4) from [<c00085a4>] (kernel_init+0x90/0x1c0)
r8:00000000 r7:00000000 r6:00000000 r5:c001c44c r4:c001c2b8
[<c0008514>] (kernel_init+0x0/0x1c0) from [<c003aebc>] (do_exit+0x0/0x798)
r5:00000000 r4:00000000
---[ end trace da227214a82491b7 ]---
FAILED!

The warning is triggered here because tracing_start is called twice in
trace_selftest_startup_preemptirqsoff's error path[1].

I researched for some time now why the tracers doesn't pass the
self-tests, but without success. It's bed time and any hints are
welcome.

Other than that my machine boots and reports from time to time

scheduling while atomic

and

sleeping function called from invalid context at kernel/rtmutex.c:683

Both errors probably happen because some spin_locks need to be converted
to raw_spin_locks. Will look later.

I provide this uncooked state to prevent duplicate work, so please
excuse the bad code and commit history. If it upsets you, please send
patches :-)

Best regards
Uwe

[1] if trace_test_buffer sets count = 0 or returns != 0 in
kernel/trace/trace_selftest.c:440, the code flow is:

tracing_start()
goto out;

...
out:
trace->reset(tr);
tracing_start();

I think the last tracing_start is wrong, but I didn't check deeply.

--
Pengutronix e.K. | Uwe Kleine-König |
Industrial Linux Solutions | http://www.pengutronix.de/ |
--
To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html