[PATCH 6/6] mm/migrate: export whether or not node is toptier in sysf

From: Davidlohr Bueso
Date: Sun Apr 17 2022 - 00:21:41 EST




This allows userspace to know if the node is considered fast
memory (with CPUs attached to it). While this can be already
derived without a new file, this helps further encapsulate the
concept.

Signed-off-by: Davidlohr Bueso <dave@xxxxxxxxxxxx>
---
Resending, just noticed this oatch was never posted.

Documentation/ABI/stable/sysfs-devices-node | 6 ++++++
drivers/base/node.c | 13 +++++++++++++
2 files changed, 19 insertions(+)

diff --git a/Documentation/ABI/stable/sysfs-devices-node b/Documentation/ABI/stable/sysfs-devices-node
index f620c6ae013c..1c21c3985535 100644
--- a/Documentation/ABI/stable/sysfs-devices-node
+++ b/Documentation/ABI/stable/sysfs-devices-node
@@ -198,3 +198,9 @@ Date: April 2022
Contact: Davidlohr Bueso <dave@xxxxxxxxxxxx>
Description:
Shows nodes within the next tier of slower memory below this node.
+
+What: /sys/devices/system/node/nodeX/memory_toptier
+Date: April 2022
+Contact: Davidlohr Bueso <dave@xxxxxxxxxxxx>
+Description:
+ Node is attached to fast memory or not.
diff --git a/drivers/base/node.c b/drivers/base/node.c
index ab4bae777535..b9de5b0360f2 100644
--- a/drivers/base/node.c
+++ b/drivers/base/node.c
@@ -598,12 +598,25 @@ static ssize_t node_read_demotion_path(struct device *dev,
}
static DEVICE_ATTR(demotion_path, 0444, node_read_demotion_path, NULL);

+static ssize_t node_read_memory_toptier(struct device *dev,
+ struct device_attribute *attr, char *buf)
+{
+ int nid = dev->id;
+ int len = 0;
+
+ len += sysfs_emit_at(buf, len, "%d\n", !!node_is_toptier(nid));
+
+ return len;
+}
+static DEVICE_ATTR(memory_toptier, 0444, node_read_memory_toptier, NULL);
+
static struct attribute *node_dev_attrs[] = {
&dev_attr_meminfo.attr,
&dev_attr_numastat.attr,
&dev_attr_distance.attr,
&dev_attr_vmstat.attr,
&dev_attr_demotion_path.attr,
+ &dev_attr_memory_toptier.attr,
NULL
};

--
2.26.2