Alpha: tlb flush functions must not schedule()!
Manfred Spraul
manfreds en colorfullife.com
Jue Ene 27 12:30:01 CST 2000
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 en vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/
Más información sobre la lista de distribución Ayuda