Messages in this thread | | | Date | Thu, 27 Jan 2000 16:21:31 +0100 | From | Manfred Spraul <> | Subject | Alpha: tlb flush functions must not schedule()! |
| |
I'm optimizing the tlb flush code for i386, and I noticed a potential lock-up on Alpha:
try_to_swap_out() is called with current->mm->page_table_lock (that's a spinlock) acquired, and that function calls flush_tlb_page().
On Alpha SMP, flush_tlb_page() calls smp_call_function(), and that function uses pointer_lock() for synchronization. pointer_lock() calls schedule() --> lock-up.
I haven't checked the other SMP capable architectures.
The tlb flush functions are never called from interrupt or bottom half handlers, ie a normal spinlock() instead of pointer_lock() should fix the problem.
-- Manfred
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |