Revision: 965 Author: teawater Date: Mon Mar 12 06:54:29 2012 Log: Add new debug switch GTP_DEBUG_V (just for developer). http://code.google.com/p/kgtp/source/detail?r=965 Modified: /trunk/UPDATE /trunk/gtp.c /trunk/gtp_for_review.patch /trunk/gtp_rb.c ======================================= --- /trunk/UPDATE Sat Mar 10 20:47:12 2012 +++ /trunk/UPDATE Mon Mar 12 06:54:29 2012 @@ -11,6 +11,8 @@ * Fix bug about access $current_task_pid. +* Add new debug switch GTP_DEBUG_V (just for developer). + *** 20120224 * https://lkml.org/lkml/2012/2/26/127 ======================================= --- /trunk/gtp.c Sun Mar 11 04:19:36 2012 +++ /trunk/gtp.c Mon Mar 12 06:54:29 2012 @@ -204,6 +204,8 @@ #define GTP_DEBUG KERN_WARNING #endif +/* #define GTP_DEBUG_V */ + #define GTP_RW_MAX 16384 #define GTP_RW_BUFP_MAX (GTP_RW_MAX - 4 - gtp_rw_size) @@ -1278,38 +1280,38 @@ gtp_regs2ascii(struct pt_regs *regs, char *buf) { #ifdef CONFIG_X86_32 -#ifdef GTP_DEBUG - printk(GTP_DEBUG "gtp_regs2ascii: ax = 0x%x\n", +#ifdef GTP_DEBUG_V + printk(GTP_DEBUG_V "gtp_regs2ascii: ax = 0x%x\n", (unsigned int) regs->ax); - printk(GTP_DEBUG "gtp_regs2ascii: cx = 0x%x\n", + printk(GTP_DEBUG_V "gtp_regs2ascii: cx = 0x%x\n", (unsigned int) regs->cx); - printk(GTP_DEBUG "gtp_regs2ascii: dx = 0x%x\n", + printk(GTP_DEBUG_V "gtp_regs2ascii: dx = 0x%x\n", (unsigned int) regs->dx); - printk(GTP_DEBUG "gtp_regs2ascii: bx = 0x%x\n", + printk(GTP_DEBUG_V "gtp_regs2ascii: bx = 0x%x\n", (unsigned int) regs->bx); - printk(GTP_DEBUG "gtp_regs2ascii: sp = 0x%x\n", + printk(GTP_DEBUG_V "gtp_regs2ascii: sp = 0x%x\n", (unsigned int) regs->sp); - printk(GTP_DEBUG "gtp_regs2ascii: bp = 0x%x\n", + printk(GTP_DEBUG_V "gtp_regs2ascii: bp = 0x%x\n", (unsigned int) regs->bp); - printk(GTP_DEBUG "gtp_regs2ascii: si = 0x%x\n", + printk(GTP_DEBUG_V "gtp_regs2ascii: si = 0x%x\n", (unsigned int) regs->si); - printk(GTP_DEBUG "gtp_regs2ascii: di = 0x%x\n", + printk(GTP_DEBUG_V "gtp_regs2ascii: di = 0x%x\n", (unsigned int) regs->di); - printk(GTP_DEBUG "gtp_regs2ascii: ip = 0x%x\n", + printk(GTP_DEBUG_V "gtp_regs2ascii: ip = 0x%x\n", (unsigned int) regs->ip); - printk(GTP_DEBUG "gtp_regs2ascii: flags = 0x%x\n", + printk(GTP_DEBUG_V "gtp_regs2ascii: flags = 0x%x\n", (unsigned int) regs->flags); - printk(GTP_DEBUG "gtp_regs2ascii: cs = 0x%x\n", + printk(GTP_DEBUG_V "gtp_regs2ascii: cs = 0x%x\n", (unsigned int) regs->cs); - printk(GTP_DEBUG "gtp_regs2ascii: ss = 0x%x\n", + printk(GTP_DEBUG_V "gtp_regs2ascii: ss = 0x%x\n", (unsigned int) regs->ss); - printk(GTP_DEBUG "gtp_regs2ascii: ds = 0x%x\n", + printk(GTP_DEBUG_V "gtp_regs2ascii: ds = 0x%x\n", (unsigned int) regs->ds); - printk(GTP_DEBUG "gtp_regs2ascii: es = 0x%x\n", + printk(GTP_DEBUG_V "gtp_regs2ascii: es = 0x%x\n", (unsigned int) regs->es); - printk(GTP_DEBUG "gtp_regs2ascii: fs = 0x%x\n", + printk(GTP_DEBUG_V "gtp_regs2ascii: fs = 0x%x\n", (unsigned int) regs->fs); - printk(GTP_DEBUG "gtp_regs2ascii: gs = 0x%x\n", + printk(GTP_DEBUG_V "gtp_regs2ascii: gs = 0x%x\n", (unsigned int) regs->gs); #endif #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,24)) @@ -1382,27 +1384,27 @@ buf += 8; #endif #else -#ifdef GTP_DEBUG - printk(GTP_DEBUG "gtp_regs2ascii: ax = 0x%lx\n", regs->ax); - printk(GTP_DEBUG "gtp_regs2ascii: bx = 0x%lx\n", regs->bx); - printk(GTP_DEBUG "gtp_regs2ascii: cx = 0x%lx\n", regs->cx); - printk(GTP_DEBUG "gtp_regs2ascii: dx = 0x%lx\n", regs->dx); - printk(GTP_DEBUG "gtp_regs2ascii: si = 0x%lx\n", regs->si); - printk(GTP_DEBUG "gtp_regs2ascii: di = 0x%lx\n", regs->di); - printk(GTP_DEBUG "gtp_regs2ascii: bp = 0x%lx\n", regs->bp); - printk(GTP_DEBUG "gtp_regs2ascii: sp = 0x%lx\n", regs->sp); - printk(GTP_DEBUG "gtp_regs2ascii: r8 = 0x%lx\n", regs->r8); - printk(GTP_DEBUG "gtp_regs2ascii: r9 = 0x%lx\n", regs->r9); - printk(GTP_DEBUG "gtp_regs2ascii: r10 = 0x%lx\n", regs->r10); - printk(GTP_DEBUG "gtp_regs2ascii: r11 = 0x%lx\n", regs->r11); - printk(GTP_DEBUG "gtp_regs2ascii: r12 = 0x%lx\n", regs->r12); - printk(GTP_DEBUG "gtp_regs2ascii: r13 = 0x%lx\n", regs->r13); - printk(GTP_DEBUG "gtp_regs2ascii: r14 = 0x%lx\n", regs->r14); - printk(GTP_DEBUG "gtp_regs2ascii: r15 = 0x%lx\n", regs->r15); - printk(GTP_DEBUG "gtp_regs2ascii: ip = 0x%lx\n", regs->ip); - printk(GTP_DEBUG "gtp_regs2ascii: flags = 0x%lx\n", regs->flags); - printk(GTP_DEBUG "gtp_regs2ascii: cs = 0x%lx\n", regs->cs); - printk(GTP_DEBUG "gtp_regs2ascii: ss = 0x%lx\n", regs->ss); +#ifdef GTP_DEBUG_V + printk(GTP_DEBUG_V "gtp_regs2ascii: ax = 0x%lx\n", regs->ax); + printk(GTP_DEBUG_V "gtp_regs2ascii: bx = 0x%lx\n", regs->bx); + printk(GTP_DEBUG_V "gtp_regs2ascii: cx = 0x%lx\n", regs->cx); + printk(GTP_DEBUG_V "gtp_regs2ascii: dx = 0x%lx\n", regs->dx); + printk(GTP_DEBUG_V "gtp_regs2ascii: si = 0x%lx\n", regs->si); + printk(GTP_DEBUG_V "gtp_regs2ascii: di = 0x%lx\n", regs->di); + printk(GTP_DEBUG_V "gtp_regs2ascii: bp = 0x%lx\n", regs->bp); + printk(GTP_DEBUG_V "gtp_regs2ascii: sp = 0x%lx\n", regs->sp); + printk(GTP_DEBUG_V "gtp_regs2ascii: r8 = 0x%lx\n", regs->r8); + printk(GTP_DEBUG_V "gtp_regs2ascii: r9 = 0x%lx\n", regs->r9); + printk(GTP_DEBUG_V "gtp_regs2ascii: r10 = 0x%lx\n", regs->r10); + printk(GTP_DEBUG_V "gtp_regs2ascii: r11 = 0x%lx\n", regs->r11); + printk(GTP_DEBUG_V "gtp_regs2ascii: r12 = 0x%lx\n", regs->r12); + printk(GTP_DEBUG_V "gtp_regs2ascii: r13 = 0x%lx\n", regs->r13); + printk(GTP_DEBUG_V "gtp_regs2ascii: r14 = 0x%lx\n", regs->r14); + printk(GTP_DEBUG_V "gtp_regs2ascii: r15 = 0x%lx\n", regs->r15); + printk(GTP_DEBUG_V "gtp_regs2ascii: ip = 0x%lx\n", regs->ip); + printk(GTP_DEBUG_V "gtp_regs2ascii: flags = 0x%lx\n", regs->flags); + printk(GTP_DEBUG_V "gtp_regs2ascii: cs = 0x%lx\n", regs->cs); + printk(GTP_DEBUG_V "gtp_regs2ascii: ss = 0x%lx\n", regs->ss); #endif #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,24)) sprintf(buf, "%016lx", (unsigned long) swab64(regs->ax)); @@ -1481,38 +1483,38 @@ gtp_regs2bin(struct pt_regs *regs, char *buf) { #ifdef CONFIG_X86_32 -#ifdef GTP_DEBUG - printk(GTP_DEBUG "gtp_regs2ascii: ax = 0x%x\n", +#ifdef GTP_DEBUG_V + printk(GTP_DEBUG_V "gtp_regs2ascii: ax = 0x%x\n", (unsigned int) regs->ax); - printk(GTP_DEBUG "gtp_regs2ascii: cx = 0x%x\n", + printk(GTP_DEBUG_V "gtp_regs2ascii: cx = 0x%x\n", (unsigned int) regs->cx); - printk(GTP_DEBUG "gtp_regs2ascii: dx = 0x%x\n", + printk(GTP_DEBUG_V "gtp_regs2ascii: dx = 0x%x\n", (unsigned int) regs->dx); - printk(GTP_DEBUG "gtp_regs2ascii: bx = 0x%x\n", + printk(GTP_DEBUG_V "gtp_regs2ascii: bx = 0x%x\n", (unsigned int) regs->bx); - printk(GTP_DEBUG "gtp_regs2ascii: sp = 0x%x\n", + printk(GTP_DEBUG_V "gtp_regs2ascii: sp = 0x%x\n", (unsigned int) regs->sp); - printk(GTP_DEBUG "gtp_regs2ascii: bp = 0x%x\n", + printk(GTP_DEBUG_V "gtp_regs2ascii: bp = 0x%x\n", (unsigned int) regs->bp); - printk(GTP_DEBUG "gtp_regs2ascii: si = 0x%x\n", + printk(GTP_DEBUG_V "gtp_regs2ascii: si = 0x%x\n", (unsigned int) regs->si); - printk(GTP_DEBUG "gtp_regs2ascii: di = 0x%x\n", + printk(GTP_DEBUG_V "gtp_regs2ascii: di = 0x%x\n", (unsigned int) regs->di); - printk(GTP_DEBUG "gtp_regs2ascii: ip = 0x%x\n", + printk(GTP_DEBUG_V "gtp_regs2ascii: ip = 0x%x\n", (unsigned int) regs->ip); - printk(GTP_DEBUG "gtp_regs2ascii: flags = 0x%x\n", + printk(GTP_DEBUG_V "gtp_regs2ascii: flags = 0x%x\n", (unsigned int) regs->flags); - printk(GTP_DEBUG "gtp_regs2ascii: cs = 0x%x\n", + printk(GTP_DEBUG_V "gtp_regs2ascii: cs = 0x%x\n", (unsigned int) regs->cs); - printk(GTP_DEBUG "gtp_regs2ascii: ss = 0x%x\n", + printk(GTP_DEBUG_V "gtp_regs2ascii: ss = 0x%x\n", (unsigned int) regs->ss); - printk(GTP_DEBUG "gtp_regs2ascii: ds = 0x%x\n", + printk(GTP_DEBUG_V "gtp_regs2ascii: ds = 0x%x\n", (unsigned int) regs->ds); - printk(GTP_DEBUG "gtp_regs2ascii: es = 0x%x\n", + printk(GTP_DEBUG_V "gtp_regs2ascii: es = 0x%x\n", (unsigned int) regs->es); - printk(GTP_DEBUG "gtp_regs2ascii: fs = 0x%x\n", + printk(GTP_DEBUG_V "gtp_regs2ascii: fs = 0x%x\n", (unsigned int) regs->fs); - printk(GTP_DEBUG "gtp_regs2ascii: gs = 0x%x\n", + printk(GTP_DEBUG_V "gtp_regs2ascii: gs = 0x%x\n", (unsigned int) regs->gs); #endif #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,24)) @@ -1585,27 +1587,27 @@ buf += 4; #endif #else -#ifdef GTP_DEBUG - printk(GTP_DEBUG "gtp_regs2ascii: ax = 0x%lx\n", regs->ax); - printk(GTP_DEBUG "gtp_regs2ascii: bx = 0x%lx\n", regs->bx); - printk(GTP_DEBUG "gtp_regs2ascii: cx = 0x%lx\n", regs->cx); - printk(GTP_DEBUG "gtp_regs2ascii: dx = 0x%lx\n", regs->dx); - printk(GTP_DEBUG "gtp_regs2ascii: si = 0x%lx\n", regs->si); - printk(GTP_DEBUG "gtp_regs2ascii: di = 0x%lx\n", regs->di); - printk(GTP_DEBUG "gtp_regs2ascii: bp = 0x%lx\n", regs->bp); - printk(GTP_DEBUG "gtp_regs2ascii: sp = 0x%lx\n", regs->sp); - printk(GTP_DEBUG "gtp_regs2ascii: r8 = 0x%lx\n", regs->r8); - printk(GTP_DEBUG "gtp_regs2ascii: r9 = 0x%lx\n", regs->r9); - printk(GTP_DEBUG "gtp_regs2ascii: r10 = 0x%lx\n", regs->r10); - printk(GTP_DEBUG "gtp_regs2ascii: r11 = 0x%lx\n", regs->r11); - printk(GTP_DEBUG "gtp_regs2ascii: r12 = 0x%lx\n", regs->r12); - printk(GTP_DEBUG "gtp_regs2ascii: r13 = 0x%lx\n", regs->r13); - printk(GTP_DEBUG "gtp_regs2ascii: r14 = 0x%lx\n", regs->r14); - printk(GTP_DEBUG "gtp_regs2ascii: r15 = 0x%lx\n", regs->r15); - printk(GTP_DEBUG "gtp_regs2ascii: ip = 0x%lx\n", regs->ip); - printk(GTP_DEBUG "gtp_regs2ascii: flags = 0x%lx\n", regs->flags); - printk(GTP_DEBUG "gtp_regs2ascii: cs = 0x%lx\n", regs->cs); - printk(GTP_DEBUG "gtp_regs2ascii: ss = 0x%lx\n", regs->ss); +#ifdef GTP_DEBUG_V + printk(GTP_DEBUG_V "gtp_regs2ascii: ax = 0x%lx\n", regs->ax); + printk(GTP_DEBUG_V "gtp_regs2ascii: bx = 0x%lx\n", regs->bx); + printk(GTP_DEBUG_V "gtp_regs2ascii: cx = 0x%lx\n", regs->cx); + printk(GTP_DEBUG_V "gtp_regs2ascii: dx = 0x%lx\n", regs->dx); + printk(GTP_DEBUG_V "gtp_regs2ascii: si = 0x%lx\n", regs->si); + printk(GTP_DEBUG_V "gtp_regs2ascii: di = 0x%lx\n", regs->di); + printk(GTP_DEBUG_V "gtp_regs2ascii: bp = 0x%lx\n", regs->bp); + printk(GTP_DEBUG_V "gtp_regs2ascii: sp = 0x%lx\n", regs->sp); + printk(GTP_DEBUG_V "gtp_regs2ascii: r8 = 0x%lx\n", regs->r8); + printk(GTP_DEBUG_V "gtp_regs2ascii: r9 = 0x%lx\n", regs->r9); + printk(GTP_DEBUG_V "gtp_regs2ascii: r10 = 0x%lx\n", regs->r10); + printk(GTP_DEBUG_V "gtp_regs2ascii: r11 = 0x%lx\n", regs->r11); + printk(GTP_DEBUG_V "gtp_regs2ascii: r12 = 0x%lx\n", regs->r12); + printk(GTP_DEBUG_V "gtp_regs2ascii: r13 = 0x%lx\n", regs->r13); + printk(GTP_DEBUG_V "gtp_regs2ascii: r14 = 0x%lx\n", regs->r14); + printk(GTP_DEBUG_V "gtp_regs2ascii: r15 = 0x%lx\n", regs->r15); + printk(GTP_DEBUG_V "gtp_regs2ascii: ip = 0x%lx\n", regs->ip); + printk(GTP_DEBUG_V "gtp_regs2ascii: flags = 0x%lx\n", regs->flags); + printk(GTP_DEBUG_V "gtp_regs2ascii: cs = 0x%lx\n", regs->cs); + printk(GTP_DEBUG_V "gtp_regs2ascii: ss = 0x%lx\n", regs->ss); #endif #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,24)) memcpy(buf, ®s->ax, 8); @@ -1725,22 +1727,22 @@ static void gtp_regs2ascii(struct pt_regs *regs, char *buf) { -#ifdef GTP_DEBUG +#ifdef GTP_DEBUG_V { int i; for (i = 0; i < 32; i++) - printk(GTP_DEBUG "gtp_gdbrsp_g: r%d = 0x%lx\n", i, + printk(GTP_DEBUG_V "gtp_gdbrsp_g: r%d = 0x%lx\n", i, regs->regs[i]); } - printk(GTP_DEBUG "gtp_gdbrsp_g: status = 0x%lx\n", + printk(GTP_DEBUG_V "gtp_gdbrsp_g: status = 0x%lx\n", regs->cp0_status); - printk(GTP_DEBUG "gtp_gdbrsp_g: lo = 0x%lx\n", regs->lo); - printk(GTP_DEBUG "gtp_gdbrsp_g: hi = 0x%lx\n", regs->hi); - printk(GTP_DEBUG "gtp_gdbrsp_g: badvaddr = 0x%lx\n", + printk(GTP_DEBUG_V "gtp_gdbrsp_g: lo = 0x%lx\n", regs->lo); + printk(GTP_DEBUG_V "gtp_gdbrsp_g: hi = 0x%lx\n", regs->hi); + printk(GTP_DEBUG_V "gtp_gdbrsp_g: badvaddr = 0x%lx\n", regs->cp0_badvaddr); - printk(GTP_DEBUG "gtp_gdbrsp_g: cause = 0x%lx\n", regs->cp0_cause); - printk(GTP_DEBUG "gtp_gdbrsp_g: pc = 0x%lx\n", regs->cp0_epc); + printk(GTP_DEBUG_V "gtp_gdbrsp_g: cause = 0x%lx\n", regs->cp0_cause); + printk(GTP_DEBUG_V "gtp_gdbrsp_g: pc = 0x%lx\n", regs->cp0_epc); #endif #ifdef CONFIG_32BIT @@ -1796,22 +1798,22 @@ static void gtp_regs2bin(struct pt_regs *regs, char *buf) { -#ifdef GTP_DEBUG +#ifdef GTP_DEBUG_V { int i; for (i = 0; i < 32; i++) - printk(GTP_DEBUG "gtp_gdbrsp_g: r%d = 0x%lx\n", i, + printk(GTP_DEBUG_V "gtp_gdbrsp_g: r%d = 0x%lx\n", i, regs->regs[i]); } - printk(GTP_DEBUG "gtp_gdbrsp_g: status = 0x%lx\n", + printk(GTP_DEBUG_V "gtp_gdbrsp_g: status = 0x%lx\n", regs->cp0_status); - printk(GTP_DEBUG "gtp_gdbrsp_g: lo = 0x%lx\n", regs->lo); - printk(GTP_DEBUG "gtp_gdbrsp_g: hi = 0x%lx\n", regs->hi); - printk(GTP_DEBUG "gtp_gdbrsp_g: badvaddr = 0x%lx\n", + printk(GTP_DEBUG_V "gtp_gdbrsp_g: lo = 0x%lx\n", regs->lo); + printk(GTP_DEBUG_V "gtp_gdbrsp_g: hi = 0x%lx\n", regs->hi); + printk(GTP_DEBUG_V "gtp_gdbrsp_g: badvaddr = 0x%lx\n", regs->cp0_badvaddr); - printk(GTP_DEBUG "gtp_gdbrsp_g: cause = 0x%lx\n", regs->cp0_cause); - printk(GTP_DEBUG "gtp_gdbrsp_g: pc = 0x%lx\n", regs->cp0_epc); + printk(GTP_DEBUG_V "gtp_gdbrsp_g: cause = 0x%lx\n", regs->cp0_cause); + printk(GTP_DEBUG_V "gtp_gdbrsp_g: pc = 0x%lx\n", regs->cp0_epc); #endif #ifdef CONFIG_32BIT @@ -1867,8 +1869,8 @@ int i; for (i = 0; i < 16; i++) { -#ifdef GTP_DEBUG - printk(GTP_DEBUG "gtp_gdbrsp_g: r%d = 0x%lx\n", +#ifdef GTP_DEBUG_V + printk(GTP_DEBUG_V "gtp_gdbrsp_g: r%d = 0x%lx\n", i, regs->uregs[i]); #endif sprintf(buf, "%08lx", (unsigned long) SWAB(regs->uregs[i])); @@ -1879,8 +1881,8 @@ memset(buf, '0', 200); buf += 200; -#ifdef GTP_DEBUG - printk(GTP_DEBUG "gtp_gdbrsp_g: cpsr = 0x%lx\n", regs->uregs[16]); +#ifdef GTP_DEBUG_V + printk(GTP_DEBUG_V "gtp_gdbrsp_g: cpsr = 0x%lx\n", regs->uregs[16]); #endif sprintf(buf, "%08lx", (unsigned long) SWAB(regs->uregs[16])); @@ -1894,8 +1896,8 @@ int i; for (i = 0; i < 16; i++) { -#ifdef GTP_DEBUG - printk(GTP_DEBUG "gtp_gdbrsp_g: r%d = 0x%lx\n", +#ifdef GTP_DEBUG_V + printk(GTP_DEBUG_V "gtp_gdbrsp_g: r%d = 0x%lx\n", i, regs->uregs[i]); #endif memcpy(buf, ®s->uregs[i], 4); @@ -1906,8 +1908,8 @@ memset(buf, '\0', 100); buf += 100; -#ifdef GTP_DEBUG - printk(GTP_DEBUG "gtp_gdbrsp_g: cpsr = 0x%lx\n", regs->uregs[16]); +#ifdef GTP_DEBUG_V + printk(GTP_DEBUG_V "gtp_gdbrsp_g: cpsr = 0x%lx\n", regs->uregs[16]); #endif memcpy(buf, ®s->uregs[16], 4); buf += 4; @@ -2437,8 +2439,8 @@ fm->size = size; tmp += sizeof(struct gtp_frame_mem); -#ifdef GTP_DEBUG - printk(GTP_DEBUG "gtp_action_memory_read: id:%d addr:%p %p %u\n", +#ifdef GTP_DEBUG_V + printk(GTP_DEBUG_V "gtp_action_memory_read: id:%d addr:%p %p %u\n", (int)gts->tpe->num, (void *)(CORE_ADDR)gts->tpe->addr, (void *)addr, (unsigned int)size); #endif @@ -2540,8 +2542,8 @@ { struct gtp_var *ret; -#ifdef GTP_DEBUG - printk(GTP_DEBUG "gtp_gtp_var_array_find: num:%u %u %u\n", +#ifdef GTP_DEBUG_V + printk(GTP_DEBUG_V "gtp_gtp_var_array_find: num:%u %u %u\n", gtp_var_head, gtp_var_tail, num); #endif @@ -2832,8 +2834,8 @@ spin_lock(>p_var_lock); while (1) { -#ifdef GTP_DEBUG - printk(GTP_DEBUG "gtp_parse_x: cmd %x\n", ebuf[pc]); +#ifdef GTP_DEBUG_V + printk(GTP_DEBUG_V "gtp_parse_x: cmd %x\n", ebuf[pc]); #endif switch (ebuf[pc++]) { @@ -3428,8 +3430,8 @@ { struct action *ae; -#ifdef GTP_DEBUG - printk(GTP_DEBUG "gtp_handler: tracepoint %d %p\n", +#ifdef GTP_DEBUG_V + printk(GTP_DEBUG_V "gtp_handler: tracepoint %d %p\n", (int)gts->tpe->num, (void *)(CORE_ADDR)gts->tpe->addr); #endif @@ -3520,8 +3522,8 @@ add_preempt_count(HARDIRQ_OFFSET); tasklet_schedule(>s->tpe->tasklet); sub_preempt_count(HARDIRQ_OFFSET); -#ifdef GTP_DEBUG - printk(GTP_DEBUG "gtp_handler: tracepoint %d %p stop.\n", +#ifdef GTP_DEBUG_V + printk(GTP_DEBUG_V "gtp_handler: tracepoint %d %p stop.\n", (int)gts->tpe->num, (void *)(CORE_ADDR)gts->tpe->addr); #endif return; @@ -4424,8 +4426,8 @@ reswitch: while (pc < ae->u.exp.size) { -#ifdef GTP_DEBUG - printk(GTP_DEBUG "gtp_check_x_simple: cmd %x\n", ebuf[pc]); +#ifdef GTP_DEBUG_V + printk(GTP_DEBUG_V "gtp_check_x_simple: cmd %x\n", ebuf[pc]); #endif switch (ebuf[pc++]) { /* add */ @@ -4763,6 +4765,15 @@ goto release_out; out: +#ifdef GTP_DEBUG + printk(GTP_DEBUG "sp_max = %d\n", sp_max); +#endif + if (sp_max >= STACK_MAX) { + printk(KERN_WARNING "gtp_check_x_simple: stack overflow, " + "current %d, max %d.\n", + sp_max, STACK_MAX); + goto release_out; + } if (glist) { pc = glist->ip; sp = glist->sp; @@ -4771,12 +4782,6 @@ kfree(gtmp); goto reswitch; } - if (sp_max >= STACK_MAX) { - printk(KERN_WARNING "gtp_check_x_simple: stack overflow, " - "current %d, max %d.\n", - sp_max, STACK_MAX); - goto release_out; - } ret = 0; #ifdef GTP_DEBUG printk(GTP_DEBUG "gtp_check_x_simple: Code is OK. sp_max is %d.\n", ======================================= --- /trunk/gtp_for_review.patch Sun Mar 11 04:19:36 2012 +++ /trunk/gtp_for_review.patch Mon Mar 12 06:54:29 2012 @@ -8,17 +8,15 @@ kernel/events/core.c | 14 lib/Kconfig.debug | 10 lib/Makefile | 4- lib/gtp.c | 8666 +++++++++++++++++++++++++++++++++++++++
- lib/gtp_rb.c | 495 +++ lib/gtp.c | 8867 +++++++++++++++++++++++++++++++++++++++
+ lib/gtp_rb.c | 498 ++ scripts/gtp/add-ons/pe.py | 729 +++ scripts/gtp/getgtprsp.pl | 137 scripts/gtp/getmod.py | 132 - 14 files changed, 12006 insertions(+), 2 deletions(-) - -Index: linux/Documentation/gtp/howto.txt -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux/Documentation/gtp/howto.txt 2012-03-11 18:32:05.037712658 +0800 + 14 files changed, 12210 insertions(+), 2 deletions(-) + +--- /dev/null ++++ b/Documentation/gtp/howto.txt @@ -0,0 +1,1519 @@ + Linux Kernel GDB tracepoint module (KGTP) + ========================================= @@ -1539,10 +1537,8 @@ +---------------------------------------------------- +This way is better to work with python to parse Kernel. +I will introduce them in example. -Index: linux/Documentation/gtp/quickstart.txt -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000-+++ linux/Documentation/gtp/quickstart.txt 2012-03-11 18:32:05.037712658 +0800
+--- /dev/null ++++ b/Documentation/gtp/quickstart.txt @@ -0,0 +1,250 @@ + Linux Kernel GDB tracepoint module (KGTP) quick start + ===================================================== @@ -1794,10 +1790,8 @@ + +Now, you can begin to rock and roll your Linux kernel with KGTP and GDB. +Please go to HOWTO to get more message about howto use KGTP. -Index: linux/arch/arm/include/asm/gtp.h -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux/arch/arm/include/asm/gtp.h 2012-03-11 18:32:05.047712661 +0800 +--- /dev/null ++++ b/arch/arm/include/asm/gtp.h @@ -0,0 +1,13 @@ +#ifndef _ASM_ARM_GTP_H_ +#define _ASM_ARM_GTP_H_ @@ -1812,10 +1806,8 @@ +#define GTP_REG_BIN_SIZE 168 + +#endif -Index: linux/arch/mips/include/asm/gtp.h -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux/arch/mips/include/asm/gtp.h 2012-03-11 18:32:05.047712661 +0800 +--- /dev/null ++++ b/arch/mips/include/asm/gtp.h @@ -0,0 +1,18 @@ +#ifndef _ASM_MIPS_GTP_H_ +#define _ASM_MIPS_GTP_H_ @@ -1835,10 +1827,8 @@ +#endif + +#endif -Index: linux/arch/x86/include/asm/gtp.h -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux/arch/x86/include/asm/gtp.h 2012-03-11 18:32:05.047712661 +0800 +--- /dev/null ++++ b/arch/x86/include/asm/gtp.h @@ -0,0 +1,18 @@ +#ifndef _ASM_X86_GTP_H_ +#define _ASM_X86_GTP_H_ @@ -1858,11 +1848,9 @@ +#endif + +#endif -Index: linux/include/linux/perf_event.h -===================================================================---- linux.orig/include/linux/perf_event.h 2012-03-06 16:42:02.557693303 +0800
-+++ linux/include/linux/perf_event.h 2012-03-11 18:32:05.057712663 +0800 -@@ -1146,9 +1146,12 @@ +--- a/include/linux/perf_event.h ++++ b/include/linux/perf_event.h +@@ -1146,9 +1146,12 @@ extern void perf_output_copy(struct perf const void *buf, unsigned int len); extern int perf_swevent_get_recursion_context(void); extern void perf_swevent_put_recursion_context(int rctx); @@ -1875,11 +1863,9 @@ #else static inline void perf_event_task_sched_in(struct task_struct *prev, -Index: linux/kernel/events/core.c -=================================================================== ---- linux.orig/kernel/events/core.c 2012-03-06 16:41:37.997693395 +0800 -+++ linux/kernel/events/core.c 2012-03-11 18:32:05.077712660 +0800 -@@ -1235,7 +1235,7 @@ +--- a/kernel/events/core.c ++++ b/kernel/events/core.c +@@ -1235,7 +1235,7 @@ retry: /* * Cross CPU call to disable a performance event */ @@ -1888,7 +1874,7 @@ { struct perf_event *event = info; struct perf_event_context *ctx = event->ctx; -@@ -1272,6 +1272,7 @@ +@@ -1272,6 +1272,7 @@ static int __perf_event_disable(void *in return 0; } @@ -1896,7 +1882,7 @@ /* * Disable a event. -@@ -1683,7 +1684,7 @@ +@@ -1683,7 +1684,7 @@ static void __perf_event_mark_enabled(st /* * Cross CPU call to enable a performance event */ @@ -1905,7 +1891,7 @@ { struct perf_event *event = info; struct perf_event_context *ctx = event->ctx; -@@ -1747,6 +1748,7 @@ +@@ -1747,6 +1748,7 @@ unlock: return 0; } @@ -1913,7 +1899,7 @@ /* * Enable a event. -@@ -3065,6 +3067,14 @@ +@@ -3065,6 +3067,14 @@ static void perf_event_reset(struct perf perf_event_update_userpage(event); } @@ -1928,11 +1914,9 @@ /* * Holding the top-level event's child_mutex means that any * descendant process that has inherited this event will block -Index: linux/lib/Kconfig.debug -=================================================================== ---- linux.orig/lib/Kconfig.debug 2012-03-06 16:42:06.587693289 +0800 -+++ linux/lib/Kconfig.debug 2012-03-11 18:32:05.087712658 +0800 -@@ -1268,6 +1268,16 @@ +--- a/lib/Kconfig.debug ++++ b/lib/Kconfig.debug +@@ -1268,6 +1268,16 @@ config ASYNC_RAID6_TEST If unsure, say N. @@ -1949,11 +1933,9 @@ source "samples/Kconfig" source "lib/Kconfig.kgdb" -Index: linux/lib/Makefile -=================================================================== ---- linux.orig/lib/Makefile 2012-03-06 16:42:06.597693289 +0800 -+++ linux/lib/Makefile 2012-03-11 18:32:05.107712660 +0800 -@@ -123,6 +123,8 @@ +--- a/lib/Makefile ++++ b/lib/Makefile +@@ -123,6 +123,8 @@ obj-$(CONFIG_SIGNATURE) += digsig.o obj-$(CONFIG_CLZ_TAB) += clz_tab.o @@ -1962,17 +1944,15 @@ hostprogs-y := gen_crc32table clean-files := crc32table.h -@@ -133,3 +135,5 @@ +@@ -133,3 +135,5 @@ quiet_cmd_crc32 = GEN $@ $(obj)/crc32table.h: $(obj)/gen_crc32table $(call cmd,crc32) + +gtp.o: gtp_rb.c -Index: linux/lib/gtp.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux/lib/gtp.c 2012-03-11 19:03:33.137719710 +0800 -@@ -0,0 +1,8862 @@ +--- /dev/null ++++ b/lib/gtp.c +@@ -0,0 +1,8867 @@ +/* + * Kernel GDB tracepoint module. + * @@ -2030,6 +2010,8 @@ +#define GTP_DEBUG KERN_WARNING +#endif + ++/* #define GTP_DEBUG_V */ ++ +#define GTP_RW_MAX 16384 +#define GTP_RW_BUFP_MAX (GTP_RW_MAX - 4 - gtp_rw_size) + @@ -2924,38 +2906,38 @@ +gtp_regs2ascii(struct pt_regs *regs, char *buf) +{ +#ifdef CONFIG_X86_32 -+#ifdef GTP_DEBUG -+ printk(GTP_DEBUG "gtp_regs2ascii: ax = 0x%x\n", ++#ifdef GTP_DEBUG_V ++ printk(GTP_DEBUG_V "gtp_regs2ascii: ax = 0x%x\n", + (unsigned int) regs->ax); -+ printk(GTP_DEBUG "gtp_regs2ascii: cx = 0x%x\n", ++ printk(GTP_DEBUG_V "gtp_regs2ascii: cx = 0x%x\n", + (unsigned int) regs->cx); -+ printk(GTP_DEBUG "gtp_regs2ascii: dx = 0x%x\n", ++ printk(GTP_DEBUG_V "gtp_regs2ascii: dx = 0x%x\n", + (unsigned int) regs->dx); -+ printk(GTP_DEBUG "gtp_regs2ascii: bx = 0x%x\n", ++ printk(GTP_DEBUG_V "gtp_regs2ascii: bx = 0x%x\n", + (unsigned int) regs->bx); -+ printk(GTP_DEBUG "gtp_regs2ascii: sp = 0x%x\n", ++ printk(GTP_DEBUG_V "gtp_regs2ascii: sp = 0x%x\n", + (unsigned int) regs->sp); -+ printk(GTP_DEBUG "gtp_regs2ascii: bp = 0x%x\n", ++ printk(GTP_DEBUG_V "gtp_regs2ascii: bp = 0x%x\n", + (unsigned int) regs->bp); -+ printk(GTP_DEBUG "gtp_regs2ascii: si = 0x%x\n", ++ printk(GTP_DEBUG_V "gtp_regs2ascii: si = 0x%x\n", + (unsigned int) regs->si); -+ printk(GTP_DEBUG "gtp_regs2ascii: di = 0x%x\n", ++ printk(GTP_DEBUG_V "gtp_regs2ascii: di = 0x%x\n", + (unsigned int) regs->di); -+ printk(GTP_DEBUG "gtp_regs2ascii: ip = 0x%x\n", ++ printk(GTP_DEBUG_V "gtp_regs2ascii: ip = 0x%x\n", + (unsigned int) regs->ip); -+ printk(GTP_DEBUG "gtp_regs2ascii: flags = 0x%x\n", ++ printk(GTP_DEBUG_V "gtp_regs2ascii: flags = 0x%x\n", + (unsigned int) regs->flags); -+ printk(GTP_DEBUG "gtp_regs2ascii: cs = 0x%x\n", ++ printk(GTP_DEBUG_V "gtp_regs2ascii: cs = 0x%x\n", + (unsigned int) regs->cs); -+ printk(GTP_DEBUG "gtp_regs2ascii: ss = 0x%x\n", ++ printk(GTP_DEBUG_V "gtp_regs2ascii: ss = 0x%x\n", + (unsigned int) regs->ss); -+ printk(GTP_DEBUG "gtp_regs2ascii: ds = 0x%x\n", ++ printk(GTP_DEBUG_V "gtp_regs2ascii: ds = 0x%x\n", + (unsigned int) regs->ds); -+ printk(GTP_DEBUG "gtp_regs2ascii: es = 0x%x\n", ++ printk(GTP_DEBUG_V "gtp_regs2ascii: es = 0x%x\n", + (unsigned int) regs->es); -+ printk(GTP_DEBUG "gtp_regs2ascii: fs = 0x%x\n", ++ printk(GTP_DEBUG_V "gtp_regs2ascii: fs = 0x%x\n", + (unsigned int) regs->fs); -+ printk(GTP_DEBUG "gtp_regs2ascii: gs = 0x%x\n", ++ printk(GTP_DEBUG_V "gtp_regs2ascii: gs = 0x%x\n", + (unsigned int) regs->gs); +#endif + sprintf(buf, "%08x", (unsigned int) swab32(regs->ax)); @@ -2991,27 +2973,27 @@ + sprintf(buf, "%08x", (unsigned int) swab32(regs->gs)); + buf += 8; +#else -+#ifdef GTP_DEBUG -+ printk(GTP_DEBUG "gtp_regs2ascii: ax = 0x%lx\n", regs->ax); -+ printk(GTP_DEBUG "gtp_regs2ascii: bx = 0x%lx\n", regs->bx); -+ printk(GTP_DEBUG "gtp_regs2ascii: cx = 0x%lx\n", regs->cx); -+ printk(GTP_DEBUG "gtp_regs2ascii: dx = 0x%lx\n", regs->dx); -+ printk(GTP_DEBUG "gtp_regs2ascii: si = 0x%lx\n", regs->si); -+ printk(GTP_DEBUG "gtp_regs2ascii: di = 0x%lx\n", regs->di); -+ printk(GTP_DEBUG "gtp_regs2ascii: bp = 0x%lx\n", regs->bp); -+ printk(GTP_DEBUG "gtp_regs2ascii: sp = 0x%lx\n", regs->sp); -+ printk(GTP_DEBUG "gtp_regs2ascii: r8 = 0x%lx\n", regs->r8); -+ printk(GTP_DEBUG "gtp_regs2ascii: r9 = 0x%lx\n", regs->r9); -+ printk(GTP_DEBUG "gtp_regs2ascii: r10 = 0x%lx\n", regs->r10); -+ printk(GTP_DEBUG "gtp_regs2ascii: r11 = 0x%lx\n", regs->r11); -+ printk(GTP_DEBUG "gtp_regs2ascii: r12 = 0x%lx\n", regs->r12); -+ printk(GTP_DEBUG "gtp_regs2ascii: r13 = 0x%lx\n", regs->r13); -+ printk(GTP_DEBUG "gtp_regs2ascii: r14 = 0x%lx\n", regs->r14); -+ printk(GTP_DEBUG "gtp_regs2ascii: r15 = 0x%lx\n", regs->r15); -+ printk(GTP_DEBUG "gtp_regs2ascii: ip = 0x%lx\n", regs->ip); -+ printk(GTP_DEBUG "gtp_regs2ascii: flags = 0x%lx\n", regs->flags); -+ printk(GTP_DEBUG "gtp_regs2ascii: cs = 0x%lx\n", regs->cs); -+ printk(GTP_DEBUG "gtp_regs2ascii: ss = 0x%lx\n", regs->ss); ++#ifdef GTP_DEBUG_V ++ printk(GTP_DEBUG_V "gtp_regs2ascii: ax = 0x%lx\n", regs->ax); ++ printk(GTP_DEBUG_V "gtp_regs2ascii: bx = 0x%lx\n", regs->bx); ++ printk(GTP_DEBUG_V "gtp_regs2ascii: cx = 0x%lx\n", regs->cx); ++ printk(GTP_DEBUG_V "gtp_regs2ascii: dx = 0x%lx\n", regs->dx); ++ printk(GTP_DEBUG_V "gtp_regs2ascii: si = 0x%lx\n", regs->si); ++ printk(GTP_DEBUG_V "gtp_regs2ascii: di = 0x%lx\n", regs->di); ++ printk(GTP_DEBUG_V "gtp_regs2ascii: bp = 0x%lx\n", regs->bp); ++ printk(GTP_DEBUG_V "gtp_regs2ascii: sp = 0x%lx\n", regs->sp); ++ printk(GTP_DEBUG_V "gtp_regs2ascii: r8 = 0x%lx\n", regs->r8); ++ printk(GTP_DEBUG_V "gtp_regs2ascii: r9 = 0x%lx\n", regs->r9); ++ printk(GTP_DEBUG_V "gtp_regs2ascii: r10 = 0x%lx\n", regs->r10); ++ printk(GTP_DEBUG_V "gtp_regs2ascii: r11 = 0x%lx\n", regs->r11); ++ printk(GTP_DEBUG_V "gtp_regs2ascii: r12 = 0x%lx\n", regs->r12); ++ printk(GTP_DEBUG_V "gtp_regs2ascii: r13 = 0x%lx\n", regs->r13); ++ printk(GTP_DEBUG_V "gtp_regs2ascii: r14 = 0x%lx\n", regs->r14); ++ printk(GTP_DEBUG_V "gtp_regs2ascii: r15 = 0x%lx\n", regs->r15); ++ printk(GTP_DEBUG_V "gtp_regs2ascii: ip = 0x%lx\n", regs->ip); ++ printk(GTP_DEBUG_V "gtp_regs2ascii: flags = 0x%lx\n", regs->flags); ++ printk(GTP_DEBUG_V "gtp_regs2ascii: cs = 0x%lx\n", regs->cs); ++ printk(GTP_DEBUG_V "gtp_regs2ascii: ss = 0x%lx\n", regs->ss); +#endif + sprintf(buf, "%016lx", (unsigned long) swab64(regs->ax)); + buf += 16; @@ -3063,38 +3045,38 @@ +gtp_regs2bin(struct pt_regs *regs, char *buf) +{ +#ifdef CONFIG_X86_32 -+#ifdef GTP_DEBUG -+ printk(GTP_DEBUG "gtp_regs2ascii: ax = 0x%x\n", ++#ifdef GTP_DEBUG_V_V ++ printk(GTP_DEBUG_V_V "gtp_regs2ascii: ax = 0x%x\n", + (unsigned int) regs->ax); -+ printk(GTP_DEBUG "gtp_regs2ascii: cx = 0x%x\n", ++ printk(GTP_DEBUG_V_V "gtp_regs2ascii: cx = 0x%x\n", + (unsigned int) regs->cx); -+ printk(GTP_DEBUG "gtp_regs2ascii: dx = 0x%x\n", ++ printk(GTP_DEBUG_V_V "gtp_regs2ascii: dx = 0x%x\n", + (unsigned int) regs->dx); -+ printk(GTP_DEBUG "gtp_regs2ascii: bx = 0x%x\n", ++ printk(GTP_DEBUG_V_V "gtp_regs2ascii: bx = 0x%x\n", + (unsigned int) regs->bx); -+ printk(GTP_DEBUG "gtp_regs2ascii: sp = 0x%x\n", ++ printk(GTP_DEBUG_V_V "gtp_regs2ascii: sp = 0x%x\n", + (unsigned int) regs->sp); -+ printk(GTP_DEBUG "gtp_regs2ascii: bp = 0x%x\n", ++ printk(GTP_DEBUG_V_V "gtp_regs2ascii: bp = 0x%x\n", + (unsigned int) regs->bp); -+ printk(GTP_DEBUG "gtp_regs2ascii: si = 0x%x\n", ++ printk(GTP_DEBUG_V_V "gtp_regs2ascii: si = 0x%x\n", + (unsigned int) regs->si); -+ printk(GTP_DEBUG "gtp_regs2ascii: di = 0x%x\n", ++ printk(GTP_DEBUG_V_V "gtp_regs2ascii: di = 0x%x\n", + (unsigned int) regs->di); -+ printk(GTP_DEBUG "gtp_regs2ascii: ip = 0x%x\n", ++ printk(GTP_DEBUG_V_V "gtp_regs2ascii: ip = 0x%x\n", + (unsigned int) regs->ip); -+ printk(GTP_DEBUG "gtp_regs2ascii: flags = 0x%x\n", ++ printk(GTP_DEBUG_V_V "gtp_regs2ascii: flags = 0x%x\n", + (unsigned int) regs->flags); -+ printk(GTP_DEBUG "gtp_regs2ascii: cs = 0x%x\n", ++ printk(GTP_DEBUG_V_V "gtp_regs2ascii: cs = 0x%x\n", + (unsigned int) regs->cs); -+ printk(GTP_DEBUG "gtp_regs2ascii: ss = 0x%x\n", ++ printk(GTP_DEBUG_V_V "gtp_regs2ascii: ss = 0x%x\n", + (unsigned int) regs->ss); -+ printk(GTP_DEBUG "gtp_regs2ascii: ds = 0x%x\n", ++ printk(GTP_DEBUG_V_V "gtp_regs2ascii: ds = 0x%x\n", + (unsigned int) regs->ds); -+ printk(GTP_DEBUG "gtp_regs2ascii: es = 0x%x\n", ++ printk(GTP_DEBUG_V_V "gtp_regs2ascii: es = 0x%x\n", + (unsigned int) regs->es); -+ printk(GTP_DEBUG "gtp_regs2ascii: fs = 0x%x\n", ++ printk(GTP_DEBUG_V_V "gtp_regs2ascii: fs = 0x%x\n", + (unsigned int) regs->fs); -+ printk(GTP_DEBUG "gtp_regs2ascii: gs = 0x%x\n", ++ printk(GTP_DEBUG_V_V "gtp_regs2ascii: gs = 0x%x\n", + (unsigned int) regs->gs); +#endif + memcpy(buf, ®s->ax, 4); @@ -3130,27 +3112,27 @@ + memcpy(buf, ®s->gs, 4); + buf += 4; +#else -+#ifdef GTP_DEBUG -+ printk(GTP_DEBUG "gtp_regs2ascii: ax = 0x%lx\n", regs->ax); -+ printk(GTP_DEBUG "gtp_regs2ascii: bx = 0x%lx\n", regs->bx); -+ printk(GTP_DEBUG "gtp_regs2ascii: cx = 0x%lx\n", regs->cx); -+ printk(GTP_DEBUG "gtp_regs2ascii: dx = 0x%lx\n", regs->dx); -+ printk(GTP_DEBUG "gtp_regs2ascii: si = 0x%lx\n", regs->si); -+ printk(GTP_DEBUG "gtp_regs2ascii: di = 0x%lx\n", regs->di); -+ printk(GTP_DEBUG "gtp_regs2ascii: bp = 0x%lx\n", regs->bp); -+ printk(GTP_DEBUG "gtp_regs2ascii: sp = 0x%lx\n", regs->sp); -+ printk(GTP_DEBUG "gtp_regs2ascii: r8 = 0x%lx\n", regs->r8); -+ printk(GTP_DEBUG "gtp_regs2ascii: r9 = 0x%lx\n", regs->r9); -+ printk(GTP_DEBUG "gtp_regs2ascii: r10 = 0x%lx\n", regs->r10); -+ printk(GTP_DEBUG "gtp_regs2ascii: r11 = 0x%lx\n", regs->r11); -+ printk(GTP_DEBUG "gtp_regs2ascii: r12 = 0x%lx\n", regs->r12); -+ printk(GTP_DEBUG "gtp_regs2ascii: r13 = 0x%lx\n", regs->r13); -+ printk(GTP_DEBUG "gtp_regs2ascii: r14 = 0x%lx\n", regs->r14); -+ printk(GTP_DEBUG "gtp_regs2ascii: r15 = 0x%lx\n", regs->r15); -+ printk(GTP_DEBUG "gtp_regs2ascii: ip = 0x%lx\n", regs->ip); -+ printk(GTP_DEBUG "gtp_regs2ascii: flags = 0x%lx\n", regs->flags); -+ printk(GTP_DEBUG "gtp_regs2ascii: cs = 0x%lx\n", regs->cs); -+ printk(GTP_DEBUG "gtp_regs2ascii: ss = 0x%lx\n", regs->ss); ++#ifdef GTP_DEBUG_V ++ printk(GTP_DEBUG_V "gtp_regs2ascii: ax = 0x%lx\n", regs->ax); ++ printk(GTP_DEBUG_V "gtp_regs2ascii: bx = 0x%lx\n", regs->bx); ++ printk(GTP_DEBUG_V "gtp_regs2ascii: cx = 0x%lx\n", regs->cx); ++ printk(GTP_DEBUG_V "gtp_regs2ascii: dx = 0x%lx\n", regs->dx); ++ printk(GTP_DEBUG_V "gtp_regs2ascii: si = 0x%lx\n", regs->si); ++ printk(GTP_DEBUG_V "gtp_regs2ascii: di = 0x%lx\n", regs->di); ++ printk(GTP_DEBUG_V "gtp_regs2ascii: bp = 0x%lx\n", regs->bp); ++ printk(GTP_DEBUG_V "gtp_regs2ascii: sp = 0x%lx\n", regs->sp); ++ printk(GTP_DEBUG_V "gtp_regs2ascii: r8 = 0x%lx\n", regs->r8); ++ printk(GTP_DEBUG_V "gtp_regs2ascii: r9 = 0x%lx\n", regs->r9); ++ printk(GTP_DEBUG_V "gtp_regs2ascii: r10 = 0x%lx\n", regs->r10); ++ printk(GTP_DEBUG_V "gtp_regs2ascii: r11 = 0x%lx\n", regs->r11); ++ printk(GTP_DEBUG_V "gtp_regs2ascii: r12 = 0x%lx\n", regs->r12); ++ printk(GTP_DEBUG_V "gtp_regs2ascii: r13 = 0x%lx\n", regs->r13); ++ printk(GTP_DEBUG_V "gtp_regs2ascii: r14 = 0x%lx\n", regs->r14); ++ printk(GTP_DEBUG_V "gtp_regs2ascii: r15 = 0x%lx\n", regs->r15); ++ printk(GTP_DEBUG_V "gtp_regs2ascii: ip = 0x%lx\n", regs->ip); ++ printk(GTP_DEBUG_V "gtp_regs2ascii: flags = 0x%lx\n", regs->flags); ++ printk(GTP_DEBUG_V "gtp_regs2ascii: cs = 0x%lx\n", regs->cs); ++ printk(GTP_DEBUG_V "gtp_regs2ascii: ss = 0x%lx\n", regs->ss); +#endif + memcpy(buf, ®s->ax, 8); + buf += 8; @@ -3244,22 +3226,22 @@ +static void +gtp_regs2ascii(struct pt_regs *regs, char *buf) +{ -+#ifdef GTP_DEBUG ++#ifdef GTP_DEBUG_V + { + int i; + + for (i = 0; i < 32; i++) -+ printk(GTP_DEBUG "gtp_gdbrsp_g: r%d = 0x%lx\n", i, ++ printk(GTP_DEBUG_V "gtp_gdbrsp_g: r%d = 0x%lx\n", i, + regs->regs[i]); + } -+ printk(GTP_DEBUG "gtp_gdbrsp_g: status = 0x%lx\n", ++ printk(GTP_DEBUG_V "gtp_gdbrsp_g: status = 0x%lx\n", + regs->cp0_status); -+ printk(GTP_DEBUG "gtp_gdbrsp_g: lo = 0x%lx\n", regs->lo); -+ printk(GTP_DEBUG "gtp_gdbrsp_g: hi = 0x%lx\n", regs->hi); -+ printk(GTP_DEBUG "gtp_gdbrsp_g: badvaddr = 0x%lx\n", ++ printk(GTP_DEBUG_V "gtp_gdbrsp_g: lo = 0x%lx\n", regs->lo); ++ printk(GTP_DEBUG_V "gtp_gdbrsp_g: hi = 0x%lx\n", regs->hi); ++ printk(GTP_DEBUG_V "gtp_gdbrsp_g: badvaddr = 0x%lx\n", + regs->cp0_badvaddr); -+ printk(GTP_DEBUG "gtp_gdbrsp_g: cause = 0x%lx\n", regs->cp0_cause); -+ printk(GTP_DEBUG "gtp_gdbrsp_g: pc = 0x%lx\n", regs->cp0_epc); ++ printk(GTP_DEBUG_V "gtp_gdbrsp_g: cause = 0x%lx\n", regs->cp0_cause); ++ printk(GTP_DEBUG_V "gtp_gdbrsp_g: pc = 0x%lx\n", regs->cp0_epc); +#endif + +#ifdef CONFIG_32BIT @@ -3315,22 +3297,22 @@ +static void +gtp_regs2bin(struct pt_regs *regs, char *buf) +{ -+#ifdef GTP_DEBUG ++#ifdef GTP_DEBUG_V + { + int i; + + for (i = 0; i < 32; i++) -+ printk(GTP_DEBUG "gtp_gdbrsp_g: r%d = 0x%lx\n", i, ++ printk(GTP_DEBUG_V "gtp_gdbrsp_g: r%d = 0x%lx\n", i, + regs->regs[i]); + } -+ printk(GTP_DEBUG "gtp_gdbrsp_g: status = 0x%lx\n", ++ printk(GTP_DEBUG_V "gtp_gdbrsp_g: status = 0x%lx\n", + regs->cp0_status); -+ printk(GTP_DEBUG "gtp_gdbrsp_g: lo = 0x%lx\n", regs->lo); -+ printk(GTP_DEBUG "gtp_gdbrsp_g: hi = 0x%lx\n", regs->hi); -+ printk(GTP_DEBUG "gtp_gdbrsp_g: badvaddr = 0x%lx\n", ++ printk(GTP_DEBUG_V "gtp_gdbrsp_g: lo = 0x%lx\n", regs->lo); ++ printk(GTP_DEBUG_V "gtp_gdbrsp_g: hi = 0x%lx\n", regs->hi); ++ printk(GTP_DEBUG_V "gtp_gdbrsp_g: badvaddr = 0x%lx\n", + regs->cp0_badvaddr); -+ printk(GTP_DEBUG "gtp_gdbrsp_g: cause = 0x%lx\n", regs->cp0_cause); -+ printk(GTP_DEBUG "gtp_gdbrsp_g: pc = 0x%lx\n", regs->cp0_epc); ++ printk(GTP_DEBUG_V "gtp_gdbrsp_g: cause = 0x%lx\n", regs->cp0_cause); ++ printk(GTP_DEBUG_V "gtp_gdbrsp_g: pc = 0x%lx\n", regs->cp0_epc); +#endif + +#ifdef CONFIG_32BIT @@ -3386,8 +3368,8 @@ + int i; + + for (i = 0; i < 16; i++) { -+#ifdef GTP_DEBUG -+ printk(GTP_DEBUG "gtp_gdbrsp_g: r%d = 0x%lx\n", ++#ifdef GTP_DEBUG_V ++ printk(GTP_DEBUG_V "gtp_gdbrsp_g: r%d = 0x%lx\n", + i, regs->uregs[i]); +#endif + sprintf(buf, "%08lx", (unsigned long) SWAB(regs->uregs[i])); @@ -3398,8 +3380,8 @@ + memset(buf, '0', 200); + buf += 200; + -+#ifdef GTP_DEBUG -+ printk(GTP_DEBUG "gtp_gdbrsp_g: cpsr = 0x%lx\n", regs->uregs[16]); ++#ifdef GTP_DEBUG_V ++ printk(GTP_DEBUG_V "gtp_gdbrsp_g: cpsr = 0x%lx\n", regs->uregs[16]); +#endif + sprintf(buf, "%08lx", + (unsigned long) SWAB(regs->uregs[16])); @@ -3413,8 +3395,8 @@ + int i; + + for (i = 0; i < 16; i++) { -+#ifdef GTP_DEBUG -+ printk(GTP_DEBUG "gtp_gdbrsp_g: r%d = 0x%lx\n", ++#ifdef GTP_DEBUG_V ++ printk(GTP_DEBUG_V "gtp_gdbrsp_g: r%d = 0x%lx\n", + i, regs->uregs[i]); +#endif + memcpy(buf, ®s->uregs[i], 4); @@ -3425,8 +3407,8 @@ + memset(buf, '\0', 100); + buf += 100; + -+#ifdef GTP_DEBUG -+ printk(GTP_DEBUG "gtp_gdbrsp_g: cpsr = 0x%lx\n", regs->uregs[16]); ++#ifdef GTP_DEBUG_V ++ printk(GTP_DEBUG_V "gtp_gdbrsp_g: cpsr = 0x%lx\n", regs->uregs[16]); +#endif + memcpy(buf, ®s->uregs[16], 4); + buf += 4; @@ -3939,8 +3921,8 @@ + fm->size = size; + tmp += sizeof(struct gtp_frame_mem); + -+#ifdef GTP_DEBUG -+ printk(GTP_DEBUG "gtp_action_memory_read: id:%d addr:%p %p %u\n", ++#ifdef GTP_DEBUG_V ++ printk(GTP_DEBUG_V "gtp_action_memory_read: id:%d addr:%p %p %u\n", + (int)gts->tpe->num, (void *)(CORE_ADDR)gts->tpe->addr, + (void *)addr, (unsigned int)size); +#endif @@ -4038,8 +4020,8 @@ +{ + struct gtp_var *ret; + -+#ifdef GTP_DEBUG -+ printk(GTP_DEBUG "gtp_gtp_var_array_find: num:%u %u %u\n", ++#ifdef GTP_DEBUG_V ++ printk(GTP_DEBUG_V "gtp_gtp_var_array_find: num:%u %u %u\n", + gtp_var_head, gtp_var_tail, num); +#endif + @@ -4277,8 +4259,8 @@ + spin_lock(>p_var_lock); + + while (1) { -+#ifdef GTP_DEBUG -+ printk(GTP_DEBUG "gtp_parse_x: cmd %x\n", ebuf[pc]); ++#ifdef GTP_DEBUG_V ++ printk(GTP_DEBUG_V "gtp_parse_x: cmd %x\n", ebuf[pc]); +#endif + + switch (ebuf[pc++]) { @@ -4873,8 +4855,8 @@ +{ + struct action *ae; + -+#ifdef GTP_DEBUG -+ printk(GTP_DEBUG "gtp_handler: tracepoint %d %p\n", ++#ifdef GTP_DEBUG_V ++ printk(GTP_DEBUG_V "gtp_handler: tracepoint %d %p\n", + (int)gts->tpe->num, (void *)(CORE_ADDR)gts->tpe->addr); +#endif + @@ -4965,8 +4947,8 @@ + add_preempt_count(HARDIRQ_OFFSET); + tasklet_schedule(>s->tpe->tasklet); + sub_preempt_count(HARDIRQ_OFFSET); -+#ifdef GTP_DEBUG -+ printk(GTP_DEBUG "gtp_handler: tracepoint %d %p stop.\n", ++#ifdef GTP_DEBUG_V ++ printk(GTP_DEBUG_V "gtp_handler: tracepoint %d %p stop.\n", + (int)gts->tpe->num, (void *)(CORE_ADDR)gts->tpe->addr); +#endif + return; @@ -5846,8 +5828,8 @@ + +reswitch: + while (pc < ae->u.exp.size) { -+#ifdef GTP_DEBUG -+ printk(GTP_DEBUG "gtp_check_x_simple: cmd %x\n", ebuf[pc]); ++#ifdef GTP_DEBUG_V ++ printk(GTP_DEBUG_V "gtp_check_x_simple: cmd %x\n", ebuf[pc]); +#endif + switch (ebuf[pc++]) { + /* add */ @@ -6185,6 +6167,15 @@ + goto release_out; + +out: ++#ifdef GTP_DEBUG ++ printk(GTP_DEBUG "sp_max = %d\n", sp_max); ++#endif ++ if (sp_max >= STACK_MAX) { ++ printk(KERN_WARNING "gtp_check_x_simple: stack overflow, " ++ "current %d, max %d.\n", ++ sp_max, STACK_MAX); ++ goto release_out; ++ } + if (glist) { + pc = glist->ip; + sp = glist->sp; @@ -6193,12 +6184,6 @@ + kfree(gtmp); + goto reswitch; + } -+ if (sp_max >= STACK_MAX) { -+ printk(KERN_WARNING "gtp_check_x_simple: stack overflow, " -+ "current %d, max %d.\n", -+ sp_max, STACK_MAX); -+ goto release_out; -+ } + ret = 0; +#ifdef GTP_DEBUG + printk(GTP_DEBUG "gtp_check_x_simple: Code is OK. sp_max is %d.\n", @@ -10835,11 +10820,9 @@ + +MODULE_AUTHOR("Hui Zhu <teawater@xxxxxxxxx>"); +MODULE_LICENSE("GPL"); -Index: linux/lib/gtp_rb.c -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux/lib/gtp_rb.c 2012-03-11 18:32:05.117712662 +0800 -@@ -0,0 +1,495 @@ +--- /dev/null ++++ b/lib/gtp_rb.c +@@ -0,0 +1,498 @@ +/* + * Ring buffer of kernel GDB tracepoint module. + * @@ -11029,7 +11012,10 @@ + + if (size > GTP_RB_DATA_MAX) { + printk(KERN_WARNING "gtp_rb_alloc: The size %zu is too big" -+ "for the KGTP ring buffer.\n", size); ++ "for the KGTP ring buffer. " ++ "The max size that KGTP ring buffer " ++ "support is %lu (Need sub some size for " ++ "inside structure).\n", size, GTP_RB_DATA_MAX); + return NULL; + } + @@ -11335,10 +11321,8 @@ + + GTP_RB_UNLOCK_IRQ(rb, flags); +} -Index: linux/scripts/gtp/add-ons/pe.py -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux/scripts/gtp/add-ons/pe.py 2012-03-11 18:32:05.127712661 +0800 +--- /dev/null ++++ b/scripts/gtp/add-ons/pe.py @@ -0,0 +1,729 @@ +#!/usr/bin/python + @@ -12069,10 +12053,8 @@ + else: + gtp.tstop() + exit(0) -Index: linux/scripts/gtp/getgtprsp.pl -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux/scripts/gtp/getgtprsp.pl 2012-03-11 18:32:05.127712661 +0800 +--- /dev/null ++++ b/scripts/gtp/getgtprsp.pl @@ -0,0 +1,137 @@ +#!/usr/bin/perl + @@ -12211,10 +12193,8 @@ + } + } +} -Index: linux/scripts/gtp/getmod.py -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ linux/scripts/gtp/getmod.py 2012-03-11 18:32:05.137712659 +0800 +--- /dev/null ++++ b/scripts/gtp/getmod.py @@ -0,0 +1,132 @@ +#!/usr/bin/python + ======================================= --- /trunk/gtp_rb.c Mon Feb 13 16:02:45 2012 +++ /trunk/gtp_rb.c Mon Mar 12 06:54:29 2012 @@ -187,7 +187,10 @@ if (size > GTP_RB_DATA_MAX) { printk(KERN_WARNING "gtp_rb_alloc: The size %zu is too big" - "for the KGTP ring buffer.\n", size); + "for the KGTP ring buffer. " + "The max size that KGTP ring buffer " + "support is %lu (Need sub some size for " + "inside structure).\n", size, GTP_RB_DATA_MAX); return NULL; }