Messages in this thread |  | | | Date | Mon, 28 Aug 2006 11:33:59 -0700 | | From | "Robert Crocombe" <> | | Subject | Re: rtmutex assert failure (was [Patch] restore the RCU callback...) |
| |
On 8/26/06, hui Bill Huey <billh@gnuppy.monkey.org> 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 rcrocomb@gmail.com - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|  |