> The endless " <IRQ> " is as below:
> ...
> [   82.215244,0]  <IRQ>
> [   82.215399,0]  <IRQ>
> [   82.215554,0]  <IRQ>
> [   82.215710,0]  <IRQ>
> [   82.215865,0]  <IRQ>
> [   82.216022,0]  <IRQ>
> [   82.216178,0]  <IRQ>
> [   82.216333,0]  <IRQ>
> [   82.216488,0]  <IRQ>
> [   82.216643,0]  <IRQ>
> [   82.216798,0]  <IRQ>
> [   82.216953,0]  <IRQ>
> ...
> 
Anyone can give some help for the above logs? It is the real case we meet on 
our x86_32 platform.
I checked the code, the tons of " <IRQ> " should be printed from the below code 
in dumpstack_32.c:
[if (ops->stack(data, "IRQ") < 0)] will print " <IRQ> ", as for the endless 
printing, it should be for(;;) is not
broken, so I guess in this case context->previous_esp == context.

But from code review, previous_esp is just set at hardirq. No possible this 
case happening.
Who can give help? Thanks.

void dump_trace(struct task_struct *task, struct pt_regs *regs,
                unsigned long *stack, unsigned long bp,
                const struct stacktrace_ops *ops, void *data)
{
        for (;;) {
                struct thread_info *context;

                context = (struct thread_info *)
                        ((unsigned long)stack & (~(THREAD_SIZE - 1)));
                bp = ops->walk_stack(context, stack, bp, ops, data, NULL, 
&graph);

                stack = (unsigned long *)context->previous_esp;
                if (!stack)
                        break;
                if (ops->stack(data, "IRQ") < 0) == > Here printing the " <IRQ> 
"
                        break;
                touch_nmi_watchdog();
        }
}

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to