}
 __setup("kstack=", kstack_setup);
 
-void show_stack(struct task_struct *task, unsigned long *sp)
+void show_stack_loglvl(struct task_struct *task, unsigned long *sp,
+                      const char *loglvl)
 {
        unsigned long words_to_show;
        u32 fp = (u32) sp;
        if (kstack_depth_to_print && (words_to_show > kstack_depth_to_print))
                words_to_show = kstack_depth_to_print;
 
-       pr_info("Kernel Stack:\n");
+       printk("%sKernel Stack:\n", loglvl);
 
        /*
         * Make the first line an 'odd' size if necessary to get
                        words_to_show -= line1_words;
                }
        }
-       print_hex_dump(KERN_INFO, "", DUMP_PREFIX_ADDRESS, 32, 4, (void *)fp,
+       print_hex_dump(loglvl, "", DUMP_PREFIX_ADDRESS, 32, 4, (void *)fp,
                       words_to_show << 2, 0);
-       pr_info("\n\nCall Trace:\n");
-       microblaze_unwind(task, NULL, KERN_INFO);
-       pr_info("\n");
+       printk("%s\n\nCall Trace:\n", loglvl);
+       microblaze_unwind(task, NULL, loglvl);
+       printk("%s\n", loglvl);
 
        if (!task)
                task = current;
 
        debug_show_held_locks(task);
 }
+
+void show_stack(struct task_struct *task, unsigned long *sp)
+{
+       show_stack_loglvl(task, sp, KERN_INFO);
+}