new file mode 100644
@@ -0,0 +1,11 @@
+What: /sys/kernel/debug/cxl/memX/qtg_map
+Date: Mar, 2023
+KernelVersion: v6.4
+Contact: linux-cxl@vger.kernel.org
+Description:
+ (RO) Entries of all Device Physical Address (DPA) ranges
+ provided by the device Coherent Device Attributes Table (CDAT)
+ Device Scoped Memory Affinity Structure (DSMAS) entries with
+ the matching QoS Throttling Group (QTG) id calculated from the
+ latency and bandwidth of the CXL path from the memory device
+ to the CPU.
@@ -45,6 +45,22 @@ static int cxl_mem_dpa_show(struct seq_file *file, void *data)
return 0;
}
+static int cxl_mem_qtg_show(struct seq_file *file, void *data)
+{
+ struct device *dev = file->private;
+ struct cxl_memdev *cxlmd = to_cxl_memdev(dev);
+ struct cxl_dev_state *cxlds = cxlmd->cxlds;
+ struct qos_prop_entry *qos;
+
+ list_for_each_entry(qos, &cxlds->qos_list, list) {
+ seq_printf(file, "%08llx-%08llx : QTG ID %u\n",
+ qos->dpa_range.start, qos->dpa_range.end,
+ qos->qtg_id);
+ }
+
+ return 0;
+}
+
static int devm_cxl_add_endpoint(struct device *host, struct cxl_memdev *cxlmd,
struct cxl_dport *parent_dport)
{
@@ -117,6 +133,7 @@ static int cxl_mem_probe(struct device *dev)
dentry = cxl_debugfs_create_dir(dev_name(dev));
debugfs_create_devm_seqfile(dev, "dpamem", dentry, cxl_mem_dpa_show);
+ debugfs_create_devm_seqfile(dev, "qtgmap", dentry, cxl_mem_qtg_show);
rc = devm_add_action_or_reset(dev, remove_debugfs, dentry);
if (rc)
return rc;
Add debugfs output to /sys/kernel/debug/cxl/memX/qtgmap The debugfs attribute will dump out all the DSMAS ranges and the associated QTG ID exported by the CXL device CDAT. Suggested-by: Dan Williams <dan.j.williams@intel.com> Signed-off-by: Dave Jiang <dave.jiang@intel.com> --- v4: - Use cxlds->qos_list instead of the stray cxlmd->qos_list --- Documentation/ABI/testing/debugfs-cxl | 11 +++++++++++ drivers/cxl/mem.c | 17 +++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 Documentation/ABI/testing/debugfs-cxl