[LITMUS^RT] call for testing 3.10

Daniel Bristot de Oliveira danielbristot at gmail.com
Fri Jul 19 19:44:14 CEST 2013


On Thu, Jul 18, 2013 at 6:11 PM, Björn Brandenburg <bbb at mpi-sws.org> wrote:

>
> On Jul 18, 2013, at 10:51 PM, Daniel Bristot de Oliveira <
> danielbristot at gmail.com> wrote:
>
> I'm on a Ms in automation engineering at UFSC - Brazil, working with real
> time Linux, but, my works fits better on PREEMPT_RT, then I'm using it. I
> already have made tests with Litmus RT, but I'm not a Litmus RT expert. I'm
> interested to help.
>
> At my work (I work on a company too, where I use the PREEMPT_RT too) I
> have a Xeon E5620 @ 2.40GHz at my desk, where I compile the rebased-3.8.13.
>
> I used the make localmodconfig, the config file is here:
> http://www.bristot.eti.br/files/litmus/3_8_13/config, and I build the
> kernel as is on the git.
>
> I got just one compilation problem:
>
>   CC      kernel/sched/core.o
> kernel/sched/core.c: In function ‘ttwu_queue’:
> kernel/sched/core.c:1417:2: error: implicit declaration of function
> ‘is_realtime’ [-Werror=implicit-function-declaration]
> kernel/sched/core.c: In function ‘finish_task_switch’:
> kernel/sched/core.c:1871:32: error: ‘NO_CPU’ undeclared (first use in this
> function)
> kernel/sched/core.c:1871:32: note: each undeclared identifier is reported
> only once for each function it appears in
> kernel/sched/core.c: In function ‘__schedule’:
> kernel/sched/core.c:3051:2: error: implicit declaration of function
> ‘srp_ceiling_block’ [-Werror=implicit-function-declaration]
> kernel/sched/core.c: In function ‘__sched_setscheduler’:
> kernel/sched/core.c:3952:3: error: implicit declaration of function
> ‘litmus_admit_task’ [-Werror=implicit-function-declaration]
> kernel/sched/core.c:4014:3: error: implicit declaration of function
> ‘litmus_exit_task’ [-Werror=implicit-function-declaration]
> kernel/sched/core.c:4021:50: error: ‘NO_CPU’ undeclared (first use in this
> function)
> cc1: some warnings being treated as errors
> make[2]: *** [kernel/sched/core.o] Error 1
> make[1]: *** [kernel/sched] Error 2
> make: *** [kernel] Error 2
> [root at localhost litmus-rt-preempt_rt]#
>
>
> that I fixed with this:
>
> diff --git a/kernel/sched/core.c b/kernel/sched/core.c
> index 2a6de74..c36d86d 100644
> --- a/kernel/sched/core.c
> +++ b/kernel/sched/core.c
> @@ -89,6 +89,7 @@
>  #include <litmus/trace.h>
>  #include <litmus/sched_trace.h>
>  #include <litmus/sched_plugin.h>
> +#include <litmus/litmus.h>
>
>  void litmus_tick(struct rq*, struct task_struct*);
>
> the system is running, what's the next step? compile with PREEMPT_RT?
>
>
> Hi Daniel,
>
> welcome! Thanks for joining the effort. With the running system, the next
> step would be to compile liblitmus (from the port-3.10 branch), pick a
> plugin with setsched, and run 'runtests', which runs the liblitmus test
> suite.
>

Thanks :)

I'm in a meeting, away from my desk, and from Xeon too. But I build the
LITMUS rebased-3.8.13 on a VM (KVM) on my notebook and run the test:

[root at localhost liblitmus]# ./setsched GSN-EDF
[root at localhost liblitmus]# ./runtests
** LITMUS^RT test suite.
** Running tests for GSN-EDF.
** Testing: reject invalid rt_task pointers... ok.
** Testing: reject invalid rt_task values... ok.
** Testing: reject job control for non-rt tasks... ok.
** Testing: children of RT tasks are not automatically RT tasks... ok.
** Testing: tasks have write access to /dev/litmus/ctrl mappings... ok.
** Testing: admission control handles suspended tasks correctly... ok.
** Testing: admission control handles running tasks correctly... ok.
** Testing: FMLP no nesting allowed...
!! TEST FAILURE od = open_fmlp_sem(fd, 0) -> -1, Invalid argument
   at tests/nesting.c:18 (test_lock_fmlp_nesting)
   in task PID=729
** Testing: reject invalid object descriptors...
!! TEST FAILURE litmus_lock(3) -> -1, Function not implemented (expected:
EINVAL)
   at tests/fdso.c:34 (test_invalid_od)
   in task PID=730
** Testing: reject invalid object types... ok.
** Testing: don't inherit FDSO handles across fork...
!! TEST FAILURE od = open_fmlp_sem(fd, 0) -> -1, Invalid argument
   at tests/fdso.c:62 (test_not_inherit_od)
   in task PID=732
** Testing: don't let best-effort tasks lock FMLP semaphores...
!! TEST FAILURE od = open_fmlp_sem(fd, 0) -> -1, Invalid argument
   at tests/locks.c:16 (test_not_lock_fmlp_be)
   in task PID=733
** Testing: FMLP acquisition and release...
!! TEST FAILURE od = open_fmlp_sem(fd, 0) -> -1, Invalid argument
   at tests/locks.c:91 (test_lock_fmlp)
   in task PID=734
** Result: 8 ok, 5 failed.

Dmesg:

[  220.569011] Switching to LITMUS^RT plugin GSN-EDF.
[  226.070144] Setting up rt task parameters for process 719.
[  226.070149] Setting up rt task parameters for process 719.
[  226.072635] Setting up rt task parameters for process 720.
[  226.072638] litmus: real-time task 720 rejected because task density >
1.0
[  226.072640] Setting up rt task parameters for process 720.
[  226.072641] Setting up rt task parameters for process 720.
[  226.072642] litmus: real-time task 720 rejected because task density >
1.0
[  226.072643] Setting up rt task parameters for process -1.
[  226.072644] Setting up rt task parameters for process 720.
[  226.076256] Setting up rt task parameters for process 722.
[  226.381512] Setting up rt task parameters for process 726.
[  226.597153] Setting up rt task parameters for process 728.
[  226.700791] Setting up rt task parameters for process 729.
[  226.700810] get_inode_obj(ffff88003b7d3f28, 0, 0): couldn't find object
[  226.708555] get_inode_obj(ffff88003b7d3f28, 0, 0): couldn't find object
[  226.710410] get_inode_obj(ffff88003b7d3f28, 0, 0): couldn't find object
[  226.712909] Setting up rt task parameters for process 734.
[  226.712924] get_inode_obj(ffff88003b7d3f28, 0, 0): couldn't find object

I'll try it on xeon too.


>
> If everything works, the second step would be to build the branch that
> includes PREEMPT_RT:
>
> https://github.com/LITMUS-RT/litmus-rt/commits/rebased-3.8.13-rt14
>

> And then debug it… I assume we are breaking some PREEMPT_RT assumptions
> that will need fixing. If you have experience with PREEMPT_RT, you could
> help us out by suggesting fixes for bugs in LITMUS^RT.
>
>
I use the PREEMPT RT it at work, I work in a R&D lab, developing
telecommunication devices. On my Ms, I'm developing a new ftrace tracer
plugin, and I'm using and analyzing the kernel with PREEMPT RT.  I know how
it works, the difference between the vanilla and the Preempt RT and some
implementations, like the rt\_spinlocks.

I'm sorry, in advance, if I'm a little late in the answers, I work 44
hours/week and I'm finishing my ms degree, then, I'm a little busy... But I
really want to find time to help.



> For example, rt_domain.c calls hrtimer_cancel() while (indirectly) holding
> a run queue lock. This works fine in mainline, but causes a recursive
> locking problem in PREEMPT_RT. Once that is fixed, I'm sure there will be
> more that breaks.
>
>
If I can reproduce this on some machine here, I would like to debug, on
this kind of bugs is where the fun lives :-)


> Thanks,
> Björn
>
>
> _______________________________________________
> litmus-dev mailing list
> litmus-dev at lists.litmus-rt.org
> https://lists.litmus-rt.org/listinfo/litmus-dev
>
>


-- 
Daniel Bristot de Oliveira
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.litmus-rt.org/pipermail/litmus-dev/attachments/20130719/a83ceac7/attachment.html>


More information about the litmus-dev mailing list