Hi Ingo, I've seen lots of complaining about the yield BUG produced by kstopmachine, and since I'm now starting to test this on an SMP machine, I'm seeing it too. So I've looked further into this, and here's what I've found. The kstopmachine creates one thread per CPU to run on each CPU. It sets this thread to the lowest RT priority and then spins on yield, each thread expects to be on its designated CPU and spin until all threads check in (all threads are on their expected CPU). The yield is only to allow one of the other threads (of same priority) to migrate to their expected CPU if it started on the wrong CPU. So the use of yield here is actually correct! So for this special case, I've included a patch here (attached) to allow for a call of yield when it is actually OK for a RT task to call yield. It's called rt_yield. Take a look and see what you think. I patched this against 45-01 since that's what I'm currently working with. -- Steve On Fri, 2005-04-15 at 18:24 -0700, William Weston wrote: > On Fri, 15 Apr 2005, Ingo Molnar wrote: [...] > > With 2.6.12-rc2-V0.7.44-03, the P4/HT box has been stable all day. I'm > seeing another BUG on boot, not kprobes related this time: > > Freeing unused kernel memory: 192k freed > logips2pp: Detected unknown logitech mouse model 86 > input: ImExPS/2 Logitech Explorer Mouse on isa0060/serio1 > BUG: kstopmachine:1054 RT task yield()-ing! > [] dump_stack+0x23/0x25 (20) > [] yield+0x67/0x69 (20) > [] stop_machine+0xa4/0x15e (40) > [] do_stop+0x15/0x77 (20) > [] kthread+0xab/0xd3 (48) > [] kernel_thread_helper+0x5/0xb (563617812) > --------------------------- > | preempt count: 00000001 ] > | 1-level deep critical section nesting: > ---------------------------------------- > .. [] .... print_traces+0x1b/0x52 > .....[] .. ( <= dump_stack+0x23/0x25)