summaryrefslogtreecommitdiffstats
path: root/lib/memregion.c
diff options
context:
space:
mode:
authorDan Williams <dan.j.williams@intel.com>2019-11-06 17:43:31 -0800
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2019-11-07 15:44:29 +0100
commit33dd70752cd76f4d883a165a674f13121a4155ed (patch)
treefd7d361649e73adafe59ade9db9429a1be4e0516 /lib/memregion.c
parent199c8471761273b7e287914cee968ddf21dfbfe0 (diff)
downloadlinux-33dd70752cd76f4d883a165a674f13121a4155ed.tar.bz2
lib: Uplevel the pmem "region" ida to a global allocator
In preparation for handling platform differentiated memory types beyond persistent memory, uplevel the "region" identifier to a global number space. This enables a device-dax instance to be registered to any memory type with guaranteed unique names. Signed-off-by: Dan Williams <dan.j.williams@intel.com> Acked-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'lib/memregion.c')
-rw-r--r--lib/memregion.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/lib/memregion.c b/lib/memregion.c
new file mode 100644
index 000000000000..77c85b5251da
--- /dev/null
+++ b/lib/memregion.c
@@ -0,0 +1,18 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/* identifiers for device / performance-differentiated memory regions */
+#include <linux/idr.h>
+#include <linux/types.h>
+
+static DEFINE_IDA(memregion_ids);
+
+int memregion_alloc(gfp_t gfp)
+{
+ return ida_alloc(&memregion_ids, gfp);
+}
+EXPORT_SYMBOL(memregion_alloc);
+
+void memregion_free(int id)
+{
+ ida_free(&memregion_ids, id);
+}
+EXPORT_SYMBOL(memregion_free);