• John Hubbard's avatar
    mm: devmap: refactor 1-based refcounting for ZONE_DEVICE pages · 07d80269
    John Hubbard authored
    An upcoming patch changes and complicates the refcounting and especially
    the "put page" aspects of it.  In order to keep everything clean,
    refactor the devmap page release routines:
    
    * Rename put_devmap_managed_page() to page_is_devmap_managed(), and
      limit the functionality to "read only": return a bool, with no side
      effects.
    
    * Add a new routine, put_devmap_managed_page(), to handle decrementing
      the refcount for ZONE_DEVICE pages.
    
    * Change callers (just release_pages() and put_page()) to check
      page_is_devmap_managed() before calling the new
      put_devmap_managed_page() routine.  This is a performance point:
      put_page() is a hot path, so we need to avoid non- inline function calls
      where possible.
    
    * Rename __put_devmap_managed_page() to free_devmap_managed_page(), and
      limit the functionality to unconditionally freeing a devmap page.
    
    This is originally based on a separate patch by Ira Weiny, which applied
    to an early version of the put_user_page() experiments.  Since then,
    Jérôme Glisse suggested the refactoring described above.
    
    Link: http://lkml.kernel.org/r/20200107224558.2362728-5-jhubbard@nvidia.comSigned-off-by: default avatarIra Weiny <ira.weiny@intel.com>
    Signed-off-by: default avatarJohn Hubbard <jhubbard@nvidia.com>
    Suggested-by: default avatarJérôme Glisse <jglisse@redhat.com>
    Reviewed-by: default avatarDan Williams <dan.j.williams@intel.com>
    Reviewed-by: default avatarJan Kara <jack@suse.cz>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Kirill A. Shutemov <kirill@shutemov.name>
    Cc: Alex Williamson <alex.williamson@redhat.com>
    Cc: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
    Cc: Björn Töpel <bjorn.topel@intel.com>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Cc: Jason Gunthorpe <jgg@mellanox.com>
    Cc: Jason Gunthorpe <jgg@ziepe.ca>
    Cc: Jens Axboe <axboe@kernel.dk>
    Cc: Jonathan Corbet <corbet@lwn.net>
    Cc: Leon Romanovsky <leonro@mellanox.com>
    Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
    Cc: Mike Rapoport <rppt@linux.ibm.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    07d80269
memremap.c 12 KB