| From: Vishal Verma <vishal.l.verma@intel.com> |
| Subject: Documentatiion/ABI: add ABI documentation for sys-bus-dax |
| Date: Wed, 24 Jan 2024 12:03:48 -0800 |
| |
| Add the missing sysfs ABI documentation for the device DAX subsystem. |
| Various ABI attributes under this have been present since v5.1, and more |
| have been added over time. In preparation for adding a new attribute, |
| add this file with the historical details. |
| |
| Link: https://lkml.kernel.org/r/20240124-vv-dax_abi-v7-3-20d16cb8d23d@intel.com |
| Signed-off-by: Vishal Verma <vishal.l.verma@intel.com> |
| Cc: Dan Williams <dan.j.williams@intel.com> |
| Cc: Dave Hansen <dave.hansen@linux.intel.com> |
| Cc: Dave Jiang <dave.jiang@intel.com> |
| Cc: David Hildenbrand <david@redhat.com> |
| Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| Cc: Huang Ying <ying.huang@intel.com> |
| Cc: Jonathan Cameron <Jonathan.Cameron@huawei.com> |
| Cc: Li Zhijian <lizhijian@fujitsu.com> |
| Cc: Matthew Wilcox (Oracle) <willy@infradead.org> |
| Cc: Michal Hocko <mhocko@suse.com> |
| Cc: Oscar Salvador <osalvador@suse.de> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| --- |
| |
| Documentation/ABI/testing/sysfs-bus-dax | 136 ++++++++++++++++++++++ |
| 1 file changed, 136 insertions(+) |
| |
| --- /dev/null |
| +++ a/Documentation/ABI/testing/sysfs-bus-dax |
| @@ -0,0 +1,136 @@ |
| +What: /sys/bus/dax/devices/daxX.Y/align |
| +Date: October, 2020 |
| +KernelVersion: v5.10 |
| +Contact: nvdimm@lists.linux.dev |
| +Description: |
| + (RW) Provides a way to specify an alignment for a dax device. |
| + Values allowed are constrained by the physical address ranges |
| + that back the dax device, and also by arch requirements. |
| + |
| +What: /sys/bus/dax/devices/daxX.Y/mapping |
| +Date: October, 2020 |
| +KernelVersion: v5.10 |
| +Contact: nvdimm@lists.linux.dev |
| +Description: |
| + (WO) Provides a way to allocate a mapping range under a dax |
| + device. Specified in the format <start>-<end>. |
| + |
| +What: /sys/bus/dax/devices/daxX.Y/mapping[0..N]/start |
| +What: /sys/bus/dax/devices/daxX.Y/mapping[0..N]/end |
| +What: /sys/bus/dax/devices/daxX.Y/mapping[0..N]/page_offset |
| +Date: October, 2020 |
| +KernelVersion: v5.10 |
| +Contact: nvdimm@lists.linux.dev |
| +Description: |
| + (RO) A dax device may have multiple constituent discontiguous |
| + address ranges. These are represented by the different |
| + 'mappingX' subdirectories. The 'start' attribute indicates the |
| + start physical address for the given range. The 'end' attribute |
| + indicates the end physical address for the given range. The |
| + 'page_offset' attribute indicates the offset of the current |
| + range in the dax device. |
| + |
| +What: /sys/bus/dax/devices/daxX.Y/resource |
| +Date: June, 2019 |
| +KernelVersion: v5.3 |
| +Contact: nvdimm@lists.linux.dev |
| +Description: |
| + (RO) The resource attribute indicates the starting physical |
| + address of a dax device. In case of a device with multiple |
| + constituent ranges, it indicates the starting address of the |
| + first range. |
| + |
| +What: /sys/bus/dax/devices/daxX.Y/size |
| +Date: October, 2020 |
| +KernelVersion: v5.10 |
| +Contact: nvdimm@lists.linux.dev |
| +Description: |
| + (RW) The size attribute indicates the total size of a dax |
| + device. For creating subdivided dax devices, or for resizing |
| + an existing device, the new size can be written to this as |
| + part of the reconfiguration process. |
| + |
| +What: /sys/bus/dax/devices/daxX.Y/numa_node |
| +Date: November, 2019 |
| +KernelVersion: v5.5 |
| +Contact: nvdimm@lists.linux.dev |
| +Description: |
| + (RO) If NUMA is enabled and the platform has affinitized the |
| + backing device for this dax device, emit the CPU node |
| + affinity for this device. |
| + |
| +What: /sys/bus/dax/devices/daxX.Y/target_node |
| +Date: February, 2019 |
| +KernelVersion: v5.1 |
| +Contact: nvdimm@lists.linux.dev |
| +Description: |
| + (RO) The target-node attribute is the Linux numa-node that a |
| + device-dax instance may create when it is online. Prior to |
| + being online the device's 'numa_node' property reflects the |
| + closest online cpu node which is the typical expectation of a |
| + device 'numa_node'. Once it is online it becomes its own |
| + distinct numa node. |
| + |
| +What: $(readlink -f /sys/bus/dax/devices/daxX.Y)/../dax_region/available_size |
| +Date: October, 2020 |
| +KernelVersion: v5.10 |
| +Contact: nvdimm@lists.linux.dev |
| +Description: |
| + (RO) The available_size attribute tracks available dax region |
| + capacity. This only applies to volatile hmem devices, not pmem |
| + devices, since pmem devices are defined by nvdimm namespace |
| + boundaries. |
| + |
| +What: $(readlink -f /sys/bus/dax/devices/daxX.Y)/../dax_region/size |
| +Date: July, 2017 |
| +KernelVersion: v5.1 |
| +Contact: nvdimm@lists.linux.dev |
| +Description: |
| + (RO) The size attribute indicates the size of a given dax region |
| + in bytes. |
| + |
| +What: $(readlink -f /sys/bus/dax/devices/daxX.Y)/../dax_region/align |
| +Date: October, 2020 |
| +KernelVersion: v5.10 |
| +Contact: nvdimm@lists.linux.dev |
| +Description: |
| + (RO) The align attribute indicates alignment of the dax region. |
| + Changes on align may not always be valid, when say certain |
| + mappings were created with 2M and then we switch to 1G. This |
| + validates all ranges against the new value being attempted, post |
| + resizing. |
| + |
| +What: $(readlink -f /sys/bus/dax/devices/daxX.Y)/../dax_region/seed |
| +Date: October, 2020 |
| +KernelVersion: v5.10 |
| +Contact: nvdimm@lists.linux.dev |
| +Description: |
| + (RO) The seed device is a 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. |
| + |
| +What: $(readlink -f /sys/bus/dax/devices/daxX.Y)/../dax_region/create |
| +Date: October, 2020 |
| +KernelVersion: v5.10 |
| +Contact: nvdimm@lists.linux.dev |
| +Description: |
| + (RW) The create interface to the dax region provides a way to |
| + create a new unconfigured dax device under the given region, which |
| + can then be configured (with a size etc.) and then probed. |
| + |
| +What: $(readlink -f /sys/bus/dax/devices/daxX.Y)/../dax_region/delete |
| +Date: October, 2020 |
| +KernelVersion: v5.10 |
| +Contact: nvdimm@lists.linux.dev |
| +Description: |
| + (WO) The delete interface for a dax region provides for deletion |
| + of any 0-sized and idle dax devices. |
| + |
| +What: $(readlink -f /sys/bus/dax/devices/daxX.Y)/../dax_region/id |
| +Date: July, 2017 |
| +KernelVersion: v5.1 |
| +Contact: nvdimm@lists.linux.dev |
| +Description: |
| + (RO) The id attribute indicates the region id of a dax region. |
| _ |