On Mon, Jun 6, 2016 at 12:31 PM, Dan Williams <dan.j.willi...@intel.com> wrote: > On Mon, Jun 6, 2016 at 12:25 PM, Linda Knippers <linda.knipp...@hpe.com> > wrote: >> On 6/4/2016 4:52 PM, Dan Williams wrote: >>> There are scenarios where we need a middle ground between disabling all >>> manual bind/unbind attempts (via driver->suppress_bind_attrs) and >>> allowing unbind at any userspace-determined time. Pinning modules takes >>> away one vector for unwanted out-of-sequence device_release_driver() >>> invocations, this new mechanism (via device->suppress_unbind_attr) takes >>> away another. >>> >>> The first user of this mechanism is the libnvdimm sub-system where >>> manual dimm disabling should be prevented while the dimm is active in >>> any region. Note that there is a 1:N dimm-to-region relationship which >>> is why this is implemented as a disable count rather than a flag. This >>> forces userspace to disable regions before dimms when manually shutting >>> down a bus topology. >> >> How is this related to deprecating pcommit? > > We need guarantees that the flush hint mappings are valid for the > duration of a pmem namespace being enabled. I am going to move the > mapping of the flush hint region from per-dimm to per-region. However > since multiple regions may reference the same dimm the mapping needs > to be reference counted and shared across regions. This will be > similar to the arrangement we have for BLK-regions that share a > control region mapping.
The usage of the word "region" is multiplexed too many times above. per-region => per PMEM-region-device / BLK-region-device flush hint region => per-dimm flush hint address range control region => address range where block window mmio control registers reside