• Dan Williams's avatar
    device-dax: introduce 'seed' devices · 0f3da14a
    Dan Williams authored
    Add a seed device concept for dynamic dax regions to be able to split the
    region amongst multiple sub-instances.  The seed device, similar to
    libnvdimm seed devices, is a device that starts with zero capacity
    allocated and unbound to a driver.  In contrast to libnvdimm seed devices
    explicit 'create' and 'delete' interfaces are added to the region to
    trigger seeds to be created and unused devices to be reclaimed.  The
    explicit create and delete replaces implicit create as a side effect of
    probe and implicit delete when writing 0 to the size that libnvdimm
    implements.
    
    Delete can be performed on any 0-sized and idle device.  This avoids the
    gymnastics of needing to move device_unregister() to its own async
    context.  Specifically, it avoids the deadlock of deleting a device via
    one of its own attributes.  It is also less surprising to userspace which
    never sees an extra device it did not request.
    
    For now just add the device creation, teardown, and ->probe() prevention.
    A later patch will arrange for the 'dax/size' attribute to be writable to
    allocate capacity from the region.
    Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Cc: Vishal Verma <vishal.l.verma@intel.com>
    Cc: Brice Goglin <Brice.Goglin@inria.fr>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: Dave Jiang <dave.jiang@intel.com>
    Cc: David Hildenbrand <david@redhat.com>
    Cc: Ira Weiny <ira.weiny@intel.com>
    Cc: Jia He <justin.he@arm.com>
    Cc: Joao Martins <joao.m.martins@oracle.com>
    Cc: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Cc: Ard Biesheuvel <ardb@kernel.org>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Ben Skeggs <bskeggs@redhat.com>
    Cc: Bjorn Helgaas <bhelgaas@google.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Daniel Vetter <daniel@ffwll.ch>
    Cc: David Airlie <airlied@linux.ie>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Hulk Robot <hulkci@huawei.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Jason Gunthorpe <jgg@mellanox.com>
    Cc: Jason Yan <yanaijie@huawei.com>
    Cc: Jeff Moyer <jmoyer@redhat.com>
    Cc: "Jérôme Glisse" <jglisse@redhat.com>
    Cc: Juergen Gross <jgross@suse.com>
    Cc: kernel test robot <lkp@intel.com>
    Cc: Michael Ellerman <mpe@ellerman.id.au>
    Cc: Mike Rapoport <rppt@linux.ibm.com>
    Cc: Paul Mackerras <paulus@ozlabs.org>
    Cc: Pavel Tatashin <pasha.tatashin@soleen.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
    Cc: Randy Dunlap <rdunlap@infradead.org>
    Cc: Stefano Stabellini <sstabellini@kernel.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Tom Lendacky <thomas.lendacky@amd.com>
    Cc: Vivek Goyal <vgoyal@redhat.com>
    Cc: Wei Yang <richard.weiyang@linux.alibaba.com>
    Cc: Will Deacon <will@kernel.org>
    Link: https://lkml.kernel.org/r/159643101583.4062302.12255093902950754962.stgit@dwillia2-desk3.amr.corp.intel.com
    Link: https://lkml.kernel.org/r/160106113873.30709.15168756050631539431.stgit@dwillia2-desk3.amr.corp.intel.comSigned-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    0f3da14a
dax-private.h 2 KB