#include <xen/xencons.h>
#endif
-#ifdef CONFIG_VT_CONSOLE
-#define KDB_BLINK_LED 1
-#else
#undef KDB_BLINK_LED
-#endif
#ifdef CONFIG_KDB_USB
struct kdb_usb_exchange kdb_usb_infos;
printk(KERN_EMERG "------------[ cut here ]------------\n");
#ifdef CONFIG_DEBUG_BUGVERBOSE
do {
+ unsigned char ljmp;
unsigned short line;
char *file;
char c;
- if (__get_user(line, (unsigned short __user *)(eip + 2)))
+ if (__get_user(ljmp, (unsigned char __user *)(eip + 2)))
+ break;
+ if (ljmp == 0xea) {
+ if (__get_user(line, (unsigned short __user *)(eip + 7)))
+ break;
+ if (__get_user(file, (char * __user *)(eip + 3)))
+ break;
+ } else {
+ if (__get_user(line, (unsigned short __user *)(eip + 2)))
+ break;
+ if (__get_user(file, (char * __user *)(eip + 4)))
+ break;
+ }
+ if ((unsigned long)file < PAGE_OFFSET || __get_user(c, file))
break;
- if (__get_user(file, (char * __user *)(eip + 4)) ||
- (unsigned long)file < PAGE_OFFSET || __get_user(c, file))
- file = "<bad filename>";
printk(KERN_EMERG "kernel BUG at %s:%d!\n", file, line);
return;
#include <xen/xencons.h>
#endif
-#ifdef CONFIG_VT_CONSOLE
-#define KDB_BLINK_LED 1
-#else
#undef KDB_BLINK_LED
-#endif
#ifdef CONFIG_KDB_USB
struct kdb_usb_exchange kdb_usb_infos;
{
int i, diag;
for (i = 0; kdb_cmds[i]; ++i) {
- if (!defcmd_in_progress)
- kdb_printf("kdb_cmd[%d]: %s", i, kdb_cmds[i]);
+ if (!defcmd_in_progress) {
+ /* Use printk as kdb_printf writes to all consoles bypassing loglevel
+ * checks, and we don't want this stuff appearing in the console at boot
+ * time unless something goes wrong
+ */
+ printk(KERN_DEBUG "kdb_cmd[%d]: %s", i, kdb_cmds[i]);
+ }
diag = kdb_parse(kdb_cmds[i], NULL);
if (diag)
- kdb_printf("command failed, kdb diag %d\n", diag);
+ kdb_printf("kdb_cmd[%d]: command %s failed, kdb diag %d", i, kdb_cmds[i], diag);
}
if (defcmd_in_progress) {
kdb_printf("Incomplete 'defcmd' set, forcing endefcmd\n");