• Haggai Eran's avatar
    IB/core: Properly handle registration of on-demand paging MRs after dereg · 4fc701ea
    Haggai Eran authored
    When the last on-demand paging MR is released the notifier count is
    left non-zero so that concurrent page faults will have to abort. If a
    new MR is then registered, the counter is reset. However, the decision
    is made to put the new MR in the list waiting for the notifier count
    to reach zero, before the counter is reset. An invalidation or another
    MR registration can release the MR to handle page faults, but without
    such an event the MR can wait forever.
    
    The patch fixes this issue by adding a check whether the MR is the
    first on-demand paging MR when deciding whether it is ready to handle
    page faults. If it is the first MR, we know that there are no mmu
    notifiers running in parallel to the registration.
    
    Fixes: 882214e2 ("IB/core: Implement support for MMU notifiers regarding on demand paging regions")
    Signed-off-by: default avatarHaggai Eran <haggaie@mellanox.com>
    Signed-off-by: default avatarShachar Raindel <raindel@mellanox.com>
    Signed-off-by: default avatarRoland Dreier <roland@purestorage.com>
    4fc701ea
umem_odp.c 20 KB