[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [kpreempt-tech] Re: Oops in kernel 2.4.19-pre10-ac2-preempt



On Thu, 2002-06-20 at 10:22, William Lee Irwin III wrote:
>> That'd be great, the two places are pte_chain_lock() and pte_chain_unlock().
>> They're basically a spin_lock_bit() and spin_unlock_bit(), so they need
>> the same kind of disable preempt before the spinloop and re-enable it after
>> dropping the lock treatment as spinlocks.

On Thu, Jun 20, 2002 at 10:58:21AM -0700, Robert Love wrote:
> Here is the patch... I will put out an updated -ac patch shortly with
> this and some other bits.
> Correct?
> 	Robert Love

This is the precise fix I use/recommend.

Cheers,
Bill

> diff -urN linux-2.4.19-pre10-ac2/include/linux/mm.h linux/include/linux/mm.h
> --- linux-2.4.19-pre10-ac2/include/linux/mm.h	Thu Jun  6 11:16:03 2002
> +++ linux/include/linux/mm.h	Thu Jun 20 10:57:01 2002
> @@ -340,6 +340,7 @@
>  	 * busywait with less bus contention for a good time to
>  	 * attempt to acquire the lock bit.
>  	 */
> +	preempt_disable();
>  	while (test_and_set_bit(PG_chainlock, &page->flags)) {
>  		while (test_bit(PG_chainlock, &page->flags))
>  			cpu_relax();
> @@ -349,6 +350,7 @@
>  static inline void pte_chain_unlock(struct page *page)
>  {
>  	clear_bit(PG_chainlock, &page->flags);
> +	preempt_enable();
>  }
>  
>  /*
> 
> 
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/