Hi, I work for Montavista (Cavium Inc) as a Technical Lead . I want to push some of the kernel patches to rt community (2.6.32 kernel 2.6.33 rt patch) , so that It will go to the main line These patches are reviewed and approved by our system Architect. I request you to include in the main line . These issue was reported by our customer CISCO. Problem Description: In some cases the task state of a task is set incorrectly, resulting in a hung task. Root Cause: Trying to claim the BKL while PREEMPT_ACTIVE is set will result in __schedule returning immediately in __mutex_lock_common(). This means the task state will not be set to running by the wakeup, and it also means that the kernel will just sit there and spin waiting for the mutex, which is bad. This occurs in __cond_resched, which calls schedule() with PREEMPT_ACTIVE set. The other places that call schedule() with PREEMPT_ACTIVE set have special code that plays with the BKL. How Solved: To fix this, moved releasing and reclaiming the BKL to outside setting the PREEMPT_ACTIVE bit. I request you to include the above patch to the main line . If any questions please contact me at sshaiju@xxxxxxxxxx (shaiju_sada@xxxxxxxxx) Regards, Shaiju.
Attachment:
5913-Fix-BKL-problems-leading-to-bad-task-state.patch
Description: Binary data