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