• Joao Martins's avatar
    device-dax: ensure dev_dax->pgmap is valid for dynamic devices · fc65c4eb
    Joao Martins authored
    Right now, only static dax regions have a valid @pgmap pointer in its
    struct dev_dax.  Dynamic dax case however, do not.
    
    In preparation for device-dax compound devmap support, make sure that
    dev_dax pgmap field is set after it has been allocated and initialized.
    
    dynamic dax device have the @pgmap is allocated at probe() and it's
    managed by devm (contrast to static dax region which a pgmap is provided
    and dax core kfrees it).  So in addition to ensure a valid @pgmap, clear
    the pgmap when the dynamic dax device is released to avoid the same
    pgmap ranges to be re-requested across multiple region device reconfigs.
    
    Add a static_dev_dax() and use that helper in dev_dax_probe() to ensure
    the initialization differences between dynamic and static regions are
    more explicit.  While at it, consolidate the ranges initialization when
    we allocate the @pgmap for the dynamic dax region case.  Also take the
    opportunity to document the differences between static and dynamic da
    regions.
    
    Link: https://lkml.kernel.org/r/20211202204422.26777-8-joao.m.martins@oracle.comSuggested-by: default avatarDan Williams <dan.j.williams@intel.com>
    Signed-off-by: default avatarJoao Martins <joao.m.martins@oracle.com>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Dave Jiang <dave.jiang@intel.com>
    Cc: Jane Chu <jane.chu@oracle.com>
    Cc: Jason Gunthorpe <jgg@nvidia.com>
    Cc: Jason Gunthorpe <jgg@ziepe.ca>
    Cc: John Hubbard <jhubbard@nvidia.com>
    Cc: Jonathan Corbet <corbet@lwn.net>
    Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
    Cc: Mike Kravetz <mike.kravetz@oracle.com>
    Cc: Muchun Song <songmuchun@bytedance.com>
    Cc: Naoya Horiguchi <naoya.horiguchi@nec.com>
    Cc: Vishal Verma <vishal.l.verma@intel.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    fc65c4eb
bus.c 35.7 KB