Re: rtmutex assert failure (was [Patch] restore the RCU callback...)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 8/26/06, hui Bill Huey <[email protected]> wrote:

Stop using icecream or anything that might to any kind of binary object
caching or header analysis to minimize compiles during the build. Make sure
you're really cleaning the entire kernel directory before each build. Make
sure it'a full build for starters.

Yes.

Throw a #error in the __put_task_struct_inline(), not the alternative
__put_task_struct(). It should bark at compile time and fail to compile
kernel/fork.c

added

#ifdef CONFIG_PREEMPT_RT
void __put_task_struct_inline(struct task_struct *tsk)
   #error Boo, you can't do this.

then

[rcrocomb@spanky test_2.6.17-rt8]$ make clean ; make -j4 > /dev/null
 CLEAN   /home/rcrocomb/kernel/test_2.6.17-rt8
 CLEAN   arch/x86_64/ia32
 CLEAN   init
 CLEAN   usr
 CLEAN   .tmp_versions
kernel/fork.c:134:6: error: #error Boo, you can't do this.
make[1]: *** [kernel/fork.o] Error 1

The function __put_task_struct() should never show up a stack trace
EVER. That function has been rename under all things CONFIG_PREEMPT_RT
under my addendum patches. That's why I'm starting to think it's your
build environment or you're miss applying the patches.

from sched.h:

static inline void put_task_struct(struct task_struct *t)
{
       if (atomic_dec_and_test(&t->usage))
               __put_task_struct(t);
}

but is it used?

[rcrocomb@spanky test_2.6.17-rt8]$ find ./ -name \*.c -print0 | xargs
-0 grep -l "put_task_struct(" | wc -l
30

Yes it is.   Also, beginning at line 292 in what I call t6.diff (the
most recent URL, I believe):

+#ifdef CONFIG_PREEMPT_RT
.
.
.

+
+/*
+ * We dont want to do complex work from the scheduler with preemption
+ * disabled, therefore we delay the work to a per-CPU worker thread.
+ */
+void fastcall __put_task_struct(struct task_struct *task)
+{
+       struct list_head *head;
+
+       head = &get_cpu_var(delayed_put_task_struct_list);
+       list_add_tail(&task->delayed_drop, head);
+
+       _wake_cpu_desched_task();
+
+       put_cpu_var(delayed_put_task_struct_list);
+}
+#endif
+

So I think you're mistaken.  Patch is applied like this:

[rcrocomb@spanky test_2.6.17-rt8]$ patch -p0 < ../patches/t6.diff
patching file arch/x86_64/kernel/smp.c
patching file arch/x86_64/mm/numa.c
patching file fs/jbd/journal.c
patching file include/linux/hardirq.h
patching file include/linux/init_task.h
patching file include/linux/sched.h
patching file include/linux/seqlock.h
Hunk #1 succeeded at 1 with fuzz 1.
patching file kernel/exit.c
patching file kernel/fork.c
patching file kernel/panic.c
patching file kernel/printk.c
patching file kernel/rtmutex.c
patching file kernel/sched.c


Note that I've posted the sysrq stuff at:

http://66.93.162.249/~rcrocomb/2.6.16-rt8/

Sorry about screwing up your name: I turned 'hui' into your last name somehow.

--
Robert Crocombe
[email protected]
-
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/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux