printk(KERN_INFO a); \
                touch_nmi_watchdog();   \
        } while (0)
+#define eprintk(a...) do { \
+               printk(KERN_ERR a); \
+               WARN_ON(1); \
+       } while (0)
 #define MAX_CONFIG_LEN         40
 
 static const char hexchars[] = "0123456789abcdef";
 /* -1 = init not run yet, 0 = unconfigured, 1 = configured. */
 static int configured          = -1;
 
+#ifdef CONFIG_KGDB_TESTS_BOOT_STRING
+static char config[MAX_CONFIG_LEN] = CONFIG_KGDB_TESTS_BOOT_STRING;
+#else
 static char config[MAX_CONFIG_LEN];
+#endif
 static struct kparam_string kps = {
        .string                 = config,
        .maxlen                 = MAX_CONFIG_LEN,
 #endif
        if (strcmp(arg, "silent") &&
                instruction_pointer(&kgdbts_regs) + offset != addr) {
-               printk(KERN_ERR "kgdbts: BP mismatch %lx expected %lx\n",
+               eprintk("kgdbts: BP mismatch %lx expected %lx\n",
                           instruction_pointer(&kgdbts_regs) + offset, addr);
                return 1;
        }
        v2printk("Singlestep stopped at IP: %lx\n",
                   instruction_pointer(&kgdbts_regs));
        if (instruction_pointer(&kgdbts_regs) == addr) {
-               printk(KERN_ERR "kgdbts: SingleStep failed at %lx\n",
+               eprintk("kgdbts: SingleStep failed at %lx\n",
                           instruction_pointer(&kgdbts_regs));
                return 1;
        }
                break_helper("z0", 0, sstep_addr);
                break;
        default:
-               printk(KERN_ERR "kgdbts: ERROR failed sstep get emulation\n");
+               eprintk("kgdbts: ERROR failed sstep get emulation\n");
        }
        sstep_state++;
 }
                break;
        case 2:
                if (strncmp(put_str, "$OK", 3)) {
-                       printk(KERN_ERR "kgdbts: failed sstep break set\n");
+                       eprintk("kgdbts: failed sstep break set\n");
                        return 1;
                }
                break;
        case 3:
                if (strncmp(put_str, "$T0", 3)) {
-                       printk(KERN_ERR "kgdbts: failed continue sstep\n");
+                       eprintk("kgdbts: failed continue sstep\n");
                        return 1;
                }
                break;
        case 4:
                if (strncmp(put_str, "$OK", 3)) {
-                       printk(KERN_ERR "kgdbts: failed sstep break unset\n");
+                       eprintk("kgdbts: failed sstep break unset\n");
                        return 1;
                }
                /* Single step is complete so continue on! */
                sstep_state = 0;
                return 0;
        default:
-               printk(KERN_ERR "kgdbts: ERROR failed sstep put emulation\n");
+               eprintk("kgdbts: ERROR failed sstep put emulation\n");
        }
 
        /* Continue on the same test line until emulation is complete */
                }
 
                if (get_buf[get_buf_cnt] == '\0') {
-                       printk(KERN_ERR
-                          "kgdbts: ERROR GET: end of buffer on '%s' at %i\n",
+                       eprintk("kgdbts: ERROR GET: EOB on '%s' at %i\n",
                           ts.name, ts.idx);
                        get_buf_cnt = 0;
                        fill_get_buf("D");
         */
        if (ts.tst[ts.idx].get[0] == '\0' &&
                ts.tst[ts.idx].put[0] == '\0') {
-               printk(KERN_ERR "kgdbts: ERROR: beyond end of test on"
+               eprintk("kgdbts: ERROR: beyond end of test on"
                           " '%s' line %i\n", ts.name, ts.idx);
                return 0;
        }
 
        if (put_buf_cnt >= BUFMAX) {
-               printk(KERN_ERR "kgdbts: ERROR: put buffer overflow on"
+               eprintk("kgdbts: ERROR: put buffer overflow on"
                           " '%s' line %i\n", ts.name, ts.idx);
                put_buf_cnt = 0;
                return 0;
                v2printk("put%i: %s\n", ts.idx, put_buf);
                /* Trigger check here */
                if (ts.validate_put && ts.validate_put(put_buf)) {
-                       printk(KERN_ERR "kgdbts: ERROR PUT: end of test "
+                       eprintk("kgdbts: ERROR PUT: end of test "
                           "buffer on '%s' line %i expected %s got %s\n",
                           ts.name, ts.idx, ts.tst[ts.idx].put, put_buf);
                }
        if (test_complete)
                return;
 
-       printk(KERN_ERR "kgdbts: ERROR %s test failed\n", ts.name);
+       eprintk("kgdbts: ERROR %s test failed\n", ts.name);
 }
 
 static void run_hw_break_test(int is_write_test)
        hw_break_val_access();
        if (is_write_test) {
                if (test_complete == 2)
-                       printk(KERN_ERR "kgdbts: ERROR %s broke on access\n",
+                       eprintk("kgdbts: ERROR %s broke on access\n",
                                ts.name);
                hw_break_val_write();
        }
        if (test_complete == 1)
                return;
 
-       printk(KERN_ERR "kgdbts: ERROR %s test failed\n", ts.name);
+       eprintk("kgdbts: ERROR %s test failed\n", ts.name);
 }
 
 static void run_nmi_sleep_test(int nmi_sleep)
        touch_nmi_watchdog();
        local_irq_restore(flags);
        if (test_complete != 2)
-               printk(KERN_ERR "kgdbts: ERROR nmi_test did not hit nmi\n");
+               eprintk("kgdbts: ERROR nmi_test did not hit nmi\n");
        kgdb_breakpoint();
        if (test_complete == 1)
                return;
 
-       printk(KERN_ERR "kgdbts: ERROR %s test failed\n", ts.name);
+       eprintk("kgdbts: ERROR %s test failed\n", ts.name);
 }
 
 static void run_bad_read_test(void)