lkml.org 
[lkml]   [2009]   [Mar]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: Question about x86/mm/gup.c's use of disabled interrupts
Jeremy Fitzhardinge wrote:
>>> Disabling the interrupt will prevent the tlb flush IPI from coming
>>> in and flushing this cpu's tlb, but I don't see how it will prevent
>>> some other cpu from actually updating the pte in the pagetable,
>>> which is what we're concerned about here.
>>
>> The thread that cleared the pte holds the pte lock and is now waiting
>> for the IPI. The thread that wants to update the pte will wait for
>> the pte lock, thus also waits on the IPI and gup_fast()'s
>> local_irq_enable(). I think.
>
> But hasn't it already done the pte update at that point?
>
> (I think this conversation really is moot because the kernel never
> does P->P pte updates any more; its always P->N->P.)

I thought you were concerned about cpu 0 doing a gup_fast(), cpu 1 doing
P->N, and cpu 2 doing N->P. In this case cpu 2 is waiting on the pte lock.

>>> Is this the only reason to disable interrupts?
>>
>> Another comment says it also prevents pagetable teardown.
>
> We could take a reference to the mm to get the same effect, no?
>

Won't stop munmap().

--
I have a truly marvellous patch that fixes the bug which this
signature is too narrow to contain.



\
 
 \ /
  Last update: 2009-03-18 22:43    [from the cache]
©2003-2011 Jasper Spaans