Add new entry point to scan the device tree at boot in a guest,
looking for CAPI devices.

Co-authored-by: Christophe Lombard <clomb...@linux.vnet.ibm.com>
Signed-off-by: Frederic Barrat <fbar...@linux.vnet.ibm.com>
Signed-off-by: Christophe Lombard <clomb...@linux.vnet.ibm.com>
Acked-by: Ian Munsie <imun...@au1.ibm.com>
---
 drivers/misc/cxl/base.c | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/drivers/misc/cxl/base.c b/drivers/misc/cxl/base.c
index 957f4dd..9b90ec6 100644
--- a/drivers/misc/cxl/base.c
+++ b/drivers/misc/cxl/base.c
@@ -11,6 +11,7 @@
 #include <linux/rcupdate.h>
 #include <asm/errno.h>
 #include <misc/cxl-base.h>
+#include <linux/of_platform.h>
 #include "cxl.h"
 
 /* protected by rcu */
@@ -91,3 +92,27 @@ int cxl_update_properties(struct device_node *dn,
        return of_update_property(dn, new_prop);
 }
 EXPORT_SYMBOL_GPL(cxl_update_properties);
+
+static int __init cxl_base_init(void)
+{
+       struct device_node *np = NULL;
+       struct platform_device *dev;
+       int count = 0;
+
+       /*
+        * Scan for compatible devices in guest only
+        */
+       if (cpu_has_feature(CPU_FTR_HVMODE))
+               return 0;
+
+       while ((np = of_find_compatible_node(np, NULL,
+                                    "ibm,coherent-platform-facility"))) {
+               dev = of_platform_device_create(np, NULL, NULL);
+               if (dev)
+                       count++;
+       }
+       pr_devel("Found %d cxl device(s)\n", count);
+       return 0;
+}
+
+module_init(cxl_base_init);
-- 
1.9.1

_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to