[lkml]   [2009]   [Mar]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    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    [W:0.022 / U:4.016 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site