unwind: Add dump_stack test

Signed-off-by: Jiri Olsa <jolsa@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
diff --git a/kernel/dwarf_unwind/unwind.c b/kernel/dwarf_unwind/unwind.c
index b64e1a2..af64b7b 100644
--- a/kernel/dwarf_unwind/unwind.c
+++ b/kernel/dwarf_unwind/unwind.c
@@ -342,3 +342,45 @@
 
 	return ret;
 }
+
+static ssize_t
+test_write(struct file *filp, const char __user *ubuf,
+	   size_t cnt, loff_t *ppos)
+{
+	printk("Testing dwarf unwind from process context.\n");
+
+	if (dwarf_unwind_debug) {
+		printk("Dwarf unwind debug enabled: ");
+
+		if (dwarf_unwind_debug & DU_DEBUG_READ)
+			printk("read ");
+		if (dwarf_unwind_debug & DU_DEBUG_FRAMES)
+			printk("frames ");
+		if (dwarf_unwind_debug & DU_DEBUG_EH_FRAMES)
+			printk("eh-frames ");
+		if (dwarf_unwind_debug & DU_DEBUG_CFI)
+			printk("cfi ");
+		if (dwarf_unwind_debug & DU_DEBUG_EXPR)
+			printk("expr");
+
+		printk("\n");
+	}
+
+	dump_stack();
+	return cnt;
+}
+
+static const struct file_operations test_fops = {
+	.write = test_write,
+};
+
+static int __init unwind_init_test(void)
+{
+	if (!debugfs_create_file("unwind_test", 0644, NULL, NULL,
+				 &test_fops))
+		return -ENOMEM;
+
+	return 0;
+}
+
+late_initcall(unwind_init_test);