Alpha: tlb flush functions must not schedule()!

From: Manfred Spraul (manfreds@colorfullife.com)
Date: Thu Jan 27 2000 - 10:21:31 EST


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/



This archive was generated by hypermail 2b29 : Mon Jan 31 2000 - 21:00:18 EST