• Vivek Kasireddy's avatar
    mm/gup: introduce unpin_folio/unpin_folios helpers · 6cc04054
    Vivek Kasireddy authored
    Patch series "mm/gup: Introduce memfd_pin_folios() for pinning memfd
    folios", v16.
    
    Currently, some drivers (e.g, Udmabuf) that want to longterm-pin the
    pages/folios associated with a memfd, do so by simply taking a reference
    on them.  This is not desirable because the pages/folios may reside in
    Movable zone or CMA block.
    
    Therefore, having drivers use memfd_pin_folios() API ensures that the
    folios are appropriately pinned via FOLL_PIN for longterm DMA.
    
    This patchset also introduces a few helpers and converts the Udmabuf
    driver to use folios and memfd_pin_folios() API to longterm-pin the folios
    for DMA.  Two new Udmabuf selftests are also included to test the driver
    and the new API.
    
    
    This patch (of 9):
    
    These helpers are the folio versions of unpin_user_page/unpin_user_pages. 
    They are currently only useful for unpinning folios pinned by
    memfd_pin_folios() or other associated routines.  However, they could find
    new uses in the future, when more and more folio-only helpers are added to
    GUP.
    
    We should probably sanity check the folio as part of unpin similar to how
    it is done in unpin_user_page/unpin_user_pages but we cannot cleanly do
    that at the moment without also checking the subpage.  Therefore, sanity
    checking needs to be added to these routines once we have a way to
    determine if any given folio is anon-exclusive (via a per folio
    AnonExclusive flag).
    
    Link: https://lkml.kernel.org/r/20240624063952.1572359-1-vivek.kasireddy@intel.com
    Link: https://lkml.kernel.org/r/20240624063952.1572359-2-vivek.kasireddy@intel.comSigned-off-by: default avatarVivek Kasireddy <vivek.kasireddy@intel.com>
    Suggested-by: default avatarDavid Hildenbrand <david@redhat.com>
    Reviewed-by: default avatarDavid Hildenbrand <david@redhat.com>
    Acked-by: default avatarDave Airlie <airlied@redhat.com>
    Acked-by: default avatarGerd Hoffmann <kraxel@redhat.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: Christoph Hellwig <hch@infradead.org>
    Cc: Jason Gunthorpe <jgg@nvidia.com>
    Cc: Peter Xu <peterx@redhat.com>
    Cc: Christoph Hellwig <hch@infradead.org>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: Dongwon Kim <dongwon.kim@intel.com>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Junxiao Chang <junxiao.chang@intel.com>
    Cc: Oscar Salvador <osalvador@suse.de>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Mike Kravetz <mike.kravetz@oracle.com>
    Cc: Shuah Khan <shuah@kernel.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    6cc04054
gup.c 105 KB