]> www.infradead.org Git - users/jedix/linux-maple.git/commit
libnvdimm, nfit: add interleave-set state-tracking infrastructure
authorDan Williams <dan.j.williams@intel.com>
Fri, 1 May 2015 17:11:27 +0000 (13:11 -0400)
committerDan Duval <dan.duval@oracle.com>
Tue, 11 Oct 2016 18:36:34 +0000 (14:36 -0400)
commit1a6ad1c978c54dae19c2d40303e8258ab9255d59
tree9221c1e7071b06d71ed27f9f452d1f4484d44aff
parent5921c21dc14edcd29de3c9c94ec2ef51445a99f8
libnvdimm, nfit: add interleave-set state-tracking infrastructure

Orabug: 22913653

On platforms that have firmware support for reading/writing per-dimm
label space, a portion of the dimm may be accessible via an interleave
set PMEM mapping in addition to the dimm's BLK (block-data-window
aperture(s)) interface.  A label, stored in a "configuration data
region" on the dimm, disambiguates which dimm addresses are accessed
through which exclusive interface.

Add infrastructure that allows the kernel to block modifications to a
label in the set while any member dimm is active.  Note that this is
meant only for enforcing "no modifications of active labels" via the
coarse ioctl command.  Adding/deleting namespaces from an active
interleave set is always possible via sysfs.

Another aspect of tracking interleave sets is tracking their integrity
when DIMMs in a set are physically re-ordered.  For this purpose we
generate an "interleave-set cookie" that can be recorded in a label and
validated against the current configuration.  It is the bus provider
implementation's responsibility to calculate the interleave set cookie
and attach it to a given region.

Cc: Neil Brown <neilb@suse.de>
Cc: <linux-acpi@vger.kernel.org>
Cc: Greg KH <gregkh@linuxfoundation.org>
Cc: Robert Moore <robert.moore@intel.com>
Cc: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Acked-by: Christoph Hellwig <hch@lst.de>
Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
(cherry picked from commit eaf961536e1622ad21247ac8d44acd48ba65566e)
Signed-off-by: Dan Duval <dan.duval@oracle.com>
drivers/acpi/nfit.c
drivers/nvdimm/bus.c
drivers/nvdimm/core.c
drivers/nvdimm/dimm_devs.c
drivers/nvdimm/nd-core.h
drivers/nvdimm/nd.h
drivers/nvdimm/region_devs.c
include/linux/libnvdimm.h