lkml.org 
[lkml]   [2000]   [Jan]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectAlpha: 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/

\
 
 \ /
  Last update: 2005-03-22 13:56    [W:0.038 / U:0.304 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site