device-dax: introduce 'seed' devices
[platform/kernel/linux-rpi.git] / drivers / dax / dax-private.h
index 99b1273..b81a149 100644 (file)
@@ -7,6 +7,7 @@
 
 #include <linux/device.h>
 #include <linux/cdev.h>
+#include <linux/idr.h>
 
 /* private routines between core files */
 struct dax_device;
@@ -22,7 +23,10 @@ void dax_bus_exit(void);
  * @kref: to pin while other agents have a need to do lookups
  * @dev: parent device backing this region
  * @align: allocation and mapping alignment for child dax devices
+ * @ida: instance id allocator
  * @res: resource tree to track instance allocations
+ * @seed: allow userspace to find the first unbound seed device
+ * @youngest: allow userspace to find the most recently created device
  */
 struct dax_region {
        int id;
@@ -30,7 +34,10 @@ struct dax_region {
        struct kref kref;
        struct device *dev;
        unsigned int align;
+       struct ida ida;
        struct resource res;
+       struct device *seed;
+       struct device *youngest;
 };
 
 /**
@@ -39,6 +46,7 @@ struct dax_region {
  * @region - parent region
  * @dax_dev - core dax functionality
  * @target_node: effective numa node if dev_dax memory range is onlined
+ * @id: ida allocated id
  * @dev - device core
  * @pgmap - pgmap for memmap setup / lifetime (driver owned)
  * @range: resource range for the instance
@@ -47,6 +55,7 @@ struct dev_dax {
        struct dax_region *region;
        struct dax_device *dax_dev;
        int target_node;
+       int id;
        struct device dev;
        struct dev_pagemap *pgmap;
        struct range range;