Please note that attributes that are shared between devices are stored in
the directory pointed to by the symlink device/.
For example, the real path of the attribute /sys/class/cxl/afu0.0s/irqs_max is
/sys/class/cxl/afu0.0s/device/irqs_max, i.e. /sys/class/cxl/afu0.0/irqs_max.


Slave contexts (eg. /sys/class/cxl/afu0.0s):

What:           /sys/class/cxl/<afu>/afu_err_buf
Date:           September 2014
Contact:        linuxppc-dev@lists.ozlabs.org
Description:    read only
                AFU Error Buffer contents. The contents of this file are
		application specific and depends on the AFU being used.
		Applications interacting with the AFU can use this attribute
		to know about the current error condition and take appropriate
		action like logging the event etc.


What:           /sys/class/cxl/<afu>/irqs_max
Date:           September 2014
Contact:        linuxppc-dev@lists.ozlabs.org
Description:    read/write
                Decimal value of maximum number of interrupts that can be
                requested by userspace.  The default on probe is the maximum
                that hardware can support (eg. 2037). Write values will limit
                userspace applications to that many userspace interrupts. Must
                be >= irqs_min.
Users:		https://github.com/ibm-capi/libcxl

What:           /sys/class/cxl/<afu>/irqs_min
Date:           September 2014
Contact:        linuxppc-dev@lists.ozlabs.org
Description:    read only
                Decimal value of the minimum number of interrupts that
                userspace must request on a CXL_START_WORK ioctl. Userspace may
                omit the num_interrupts field in the START_WORK IOCTL to get
                this minimum automatically.
Users:		https://github.com/ibm-capi/libcxl

What:           /sys/class/cxl/<afu>/mmio_size
Date:           September 2014
Contact:        linuxppc-dev@lists.ozlabs.org
Description:    read only
                Decimal value of the size of the MMIO space that may be mmapped
                by userspace.
Users:		https://github.com/ibm-capi/libcxl

What:           /sys/class/cxl/<afu>/modes_supported
Date:           September 2014
Contact:        linuxppc-dev@lists.ozlabs.org
Description:    read only
                List of the modes this AFU supports. One per line.
                Valid entries are: "dedicated_process" and "afu_directed"
Users:		https://github.com/ibm-capi/libcxl

What:           /sys/class/cxl/<afu>/mode
Date:           September 2014
Contact:        linuxppc-dev@lists.ozlabs.org
Description:    read/write
                The current mode the AFU is using. Will be one of the modes
                given in modes_supported. Writing will change the mode
                provided that no user contexts are attached.
Users:		https://github.com/ibm-capi/libcxl


What:           /sys/class/cxl/<afu>/prefault_mode
Date:           September 2014
Contact:        linuxppc-dev@lists.ozlabs.org
Description:    read/write
                Set the mode for prefaulting in segments into the segment table
                when performing the START_WORK ioctl. Only applicable when
                running under hashed page table mmu.
                Possible values:

                =======================  ======================================
		none			 No prefaulting (default)
		work_element_descriptor  Treat the work element
					 descriptor as an effective address and
					 prefault what it points to.
                all			 all segments process calling
					 START_WORK maps.
                =======================  ======================================

Users:		https://github.com/ibm-capi/libcxl

What:           /sys/class/cxl/<afu>/reset
Date:           September 2014
Contact:        linuxppc-dev@lists.ozlabs.org
Description:    write only
                Writing 1 here will reset the AFU provided there are not
                contexts active on the AFU.
Users:		https://github.com/ibm-capi/libcxl

What:           /sys/class/cxl/<afu>/api_version
Date:           September 2014
Contact:        linuxppc-dev@lists.ozlabs.org
Description:    read only
                Decimal value of the current version of the kernel/user API.
Users:		https://github.com/ibm-capi/libcxl

What:           /sys/class/cxl/<afu>/api_version_compatible
Date:           September 2014
Contact:        linuxppc-dev@lists.ozlabs.org
Description:    read only
                Decimal value of the lowest version of the userspace API
                this kernel supports.
Users:		https://github.com/ibm-capi/libcxl


AFU configuration records (eg. /sys/class/cxl/afu0.0/cr0):

An AFU may optionally export one or more PCIe like configuration records, known
as AFU configuration records, which will show up here (if present).

What:           /sys/class/cxl/<afu>/cr<config num>/vendor
Date:           February 2015
Contact:        linuxppc-dev@lists.ozlabs.org
Description:    read only
		Hexadecimal value of the vendor ID found in this AFU
		configuration record.
Users:		https://github.com/ibm-capi/libcxl

What:           /sys/class/cxl/<afu>/cr<config num>/device
Date:           February 2015
Contact:        linuxppc-dev@lists.ozlabs.org
Description:    read only
		Hexadecimal value of the device ID found in this AFU
		configuration record.
Users:		https://github.com/ibm-capi/libcxl

What:           /sys/class/cxl/<afu>/cr<config num>/class
Date:           February 2015
Contact:        linuxppc-dev@lists.ozlabs.org
Description:    read only
		Hexadecimal value of the class code found in this AFU
		configuration record.
Users:		https://github.com/ibm-capi/libcxl

What:           /sys/class/cxl/<afu>/cr<config num>/config
Date:           February 2015
Contact:        linuxppc-dev@lists.ozlabs.org
Description:    read only
		This binary file provides raw access to the AFU configuration
		record. The format is expected to match the either the standard
		or extended configuration space defined by the PCIe
		specification.
Users:		https://github.com/ibm-capi/libcxl



Master contexts (eg. /sys/class/cxl/afu0.0m)

What:           /sys/class/cxl/<afu>m/mmio_size
Date:           September 2014
Contact:        linuxppc-dev@lists.ozlabs.org
Description:    read only
                Decimal value of the size of the MMIO space that may be mmapped
                by userspace. This includes all slave contexts space also.
Users:		https://github.com/ibm-capi/libcxl

What:           /sys/class/cxl/<afu>m/pp_mmio_len
Date:           September 2014
Contact:        linuxppc-dev@lists.ozlabs.org
Description:    read only
                Decimal value of the Per Process MMIO space length.
Users:		https://github.com/ibm-capi/libcxl

What:           /sys/class/cxl/<afu>m/pp_mmio_off
Date:           September 2014
Contact:        linuxppc-dev@lists.ozlabs.org
Description:    read only
                (not in a guest)
                Decimal value of the Per Process MMIO space offset.
Users:		https://github.com/ibm-capi/libcxl


Card info (eg. /sys/class/cxl/card0)

What:           /sys/class/cxl/<card>/caia_version
Date:           September 2014
Contact:        linuxppc-dev@lists.ozlabs.org
Description:    read only
                Identifies the CAIA Version the card implements.
Users:		https://github.com/ibm-capi/libcxl

What:           /sys/class/cxl/<card>/psl_revision
Date:           September 2014
Contact:        linuxppc-dev@lists.ozlabs.org
Description:    read only
                Identifies the revision level of the PSL.
Users:		https://github.com/ibm-capi/libcxl

What:           /sys/class/cxl/<card>/base_image
Date:           September 2014
Contact:        linuxppc-dev@lists.ozlabs.org
Description:    read only
                (not in a guest)
                Identifies the revision level of the base image for devices
                that support loadable PSLs. For FPGAs this field identifies
                the image contained in the on-adapter flash which is loaded
                during the initial program load.
Users:		https://github.com/ibm-capi/libcxl

What:           /sys/class/cxl/<card>/image_loaded
Date:           September 2014
Contact:        linuxppc-dev@lists.ozlabs.org
Description:    read only
                (not in a guest)
                Will return "user" or "factory" depending on the image loaded
                onto the card.
Users:		https://github.com/ibm-capi/libcxl

What:           /sys/class/cxl/<card>/load_image_on_perst
Date:           December 2014
Contact:        linuxppc-dev@lists.ozlabs.org
Description:    read/write
                (not in a guest)
                Valid entries are "none", "user", and "factory".
                "none" means PERST will not cause image to be loaded to the
                card.  A power cycle is required to load the image.
                "none" could be useful for debugging because the trace arrays
                are preserved.

                "user" and "factory" means PERST will cause either the user or
                user or factory image to be loaded.
                Default is to reload on PERST whichever image the card has
                loaded.
Users:		https://github.com/ibm-capi/libcxl

What:           /sys/class/cxl/<card>/reset
Date:           October 2014
Contact:        linuxppc-dev@lists.ozlabs.org
Description:    write only
                Writing 1 will issue a PERST to card provided there are no
                contexts active on any one of the card AFUs. This may cause
                the card to reload the FPGA depending on load_image_on_perst.
                Writing -1 will do a force PERST irrespective of any active
                contexts on the card AFUs.
Users:		https://github.com/ibm-capi/libcxl

What:		/sys/class/cxl/<card>/perst_reloads_same_image
Date:		July 2015
Contact:	linuxppc-dev@lists.ozlabs.org
Description:	read/write
                (not in a guest)
		Trust that when an image is reloaded via PERST, it will not
		have changed.

		==  =================================================
		0   don't trust, the image may be different (default)
		1   trust that the image will not change.
		==  =================================================
Users:		https://github.com/ibm-capi/libcxl

What:           /sys/class/cxl/<card>/psl_timebase_synced
Date:           March 2016
Contact:        linuxppc-dev@lists.ozlabs.org
Description:    read only
                Returns 1 if the psl timebase register is synchronized
                with the core timebase register, 0 otherwise.
Users:          https://github.com/ibm-capi/libcxl

What:           /sys/class/cxl/<card>/tunneled_ops_supported
Date:           May 2018
Contact:        linuxppc-dev@lists.ozlabs.org
Description:    read only
                Returns 1 if tunneled operations are supported in capi mode,
                0 otherwise.
Users:          https://github.com/ibm-capi/libcxl
