Bläddra i källkod

[POWERPC] Export flat device tree via debugfs for debugging

If DEBUG is turned on in prom.c, export the flat device tree via debugfs.
This has been handy on several occasions.

To look at it:
 # mount -t debugfs none /sys/kernel/debug
 # od -a /sys/kernel/debug/powerpc/flat-device-tree
 and/or
 # dtc -fI dtb /sys/kernel/debug/powerpc/flat-device-tree -O dts

Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Michael Ellerman 19 år sedan
förälder
incheckning
7a4571ae55
1 ändrade filer med 25 tillägg och 0 borttagningar
  1. 25 0
      arch/powerpc/kernel/prom.c

+ 25 - 0
arch/powerpc/kernel/prom.c

@@ -30,6 +30,7 @@
 #include <linux/bitops.h>
 #include <linux/bitops.h>
 #include <linux/module.h>
 #include <linux/module.h>
 #include <linux/kexec.h>
 #include <linux/kexec.h>
+#include <linux/debugfs.h>
 
 
 #include <asm/prom.h>
 #include <asm/prom.h>
 #include <asm/rtas.h>
 #include <asm/rtas.h>
@@ -2148,3 +2149,27 @@ struct device_node *of_get_cpu_node(int cpu, unsigned int *thread)
 	}
 	}
 	return NULL;
 	return NULL;
 }
 }
+
+#ifdef DEBUG
+static struct debugfs_blob_wrapper flat_dt_blob;
+
+static int __init export_flat_device_tree(void)
+{
+	struct dentry *d;
+
+	d = debugfs_create_dir("powerpc", NULL);
+	if (!d)
+		return 1;
+
+	flat_dt_blob.data = initial_boot_params;
+	flat_dt_blob.size = initial_boot_params->totalsize;
+
+	d = debugfs_create_blob("flat-device-tree", S_IFREG | S_IRUSR,
+				d, &flat_dt_blob);
+	if (!d)
+		return 1;
+
+	return 0;
+}
+__initcall(export_flat_device_tree);
+#endif