@@ -203,6 +203,19 @@ Description:
Interleave Capable" bit and the "AA14to12 Interleave Capable" bits
are set.
+What: /sys/bus/cxl/devices/endpointX/interleave_cap
+ /sys/bus/cxl/devices/portX/interleave_cap
+Date: Aug, 2020
+KernelVersion: v6.1
+Contact: linux-cxl@vger.kernel.org
+Description:
+ (RO) Interleave capability mask from the HDM decoder attached to the
+ port. Each bit in the mask represents the number of interleave ways
+ the decoder supports. For CXL devices designed from CXL spec rev2.0 or
+ earlier, 1, 2, 4, and 8 interleave ways are supported. With CXL spec
+ v3.0 or later, the capability register (CXL spec rev3 8.2.4.19.1)
+ indicates 3, 6, and 12 ways supported or 16 ways supported.
+
What: /sys/bus/cxl/devices/decoderX.Y/mode
Date: May, 2022
KernelVersion: v5.20
@@ -132,8 +132,18 @@ static ssize_t interleave_mask_show(struct device *dev,
}
static DEVICE_ATTR_RO(interleave_mask);
+static ssize_t interleave_cap_show(struct device *dev, struct device_attribute *attr,
+ char *buf)
+{
+ struct cxl_hdm *cxlhdm = dev_get_drvdata(dev);
+
+ return sysfs_emit(buf, "%#lx\n", cxlhdm->interleave_cap);
+}
+static DEVICE_ATTR_RO(interleave_cap);
+
static struct attribute *cxl_port_info_attributes[] = {
&dev_attr_interleave_mask.attr,
+ &dev_attr_interleave_cap.attr,
NULL
};