Re: [PATCH] tracing: use raw spinlocks instead of spinlocks

From: Frédéric Weisbecker
Date: Wed Nov 05 2008 - 19:42:07 EST


2008/11/5 Ingo Molnar <mingo@xxxxxxx>:
>
> * Frédéric Weisbecker <fweisbec@xxxxxxxxx> wrote:
>
>> 2008/11/4 Ingo Molnar <mingo@xxxxxxx>:
>> > just make sure normal printk is totally silent. (otherwise you get
>> > double lines on the console plus no reduction in recursion risk)
>> >
>> > i usually add a return; hack to kernel/printk.c:printk(), to make sure
>> > it never executes anything. (and add a notrace to it as well) Maybe we
>> > could even make this dependent on early_printk=...,keep.
>>
>> Thanks for your help!
>>
>> I tried the earlyprintk=vga,keep and I thought that the normal printk
>> output would
>> be replaced by early_printk output but that's not the case...
>> So I replaced the content of printk by this of early_printk and it worked.
>> But it seems that after the setting of the console, the early_printk
>> doesn't work anymore.
>>
>> Should I disable something else? I haven't any console=.... parameter
>> but I guess I missed
>> something there...
>
> perhaps try a "console=tty 3" bootup - to boot into non-graphics
> initlevel 3, and to have a vga tty set up. Then comment out the
> regular printk(), to make sure it never tries to output to the regular
> tty.
>
> does earlyprintk=vga,keep work in that case?
>
>> But, I set the parameter nmi_watchdog=2 (I didn't know I had to
>> start explicitly the nmi watchdog) and at last... I had my
>> backtraces :-)
>
> heh :-)
>
>> All these backtraces were related to time function. And one of the
>> special things of the time functions is that they often manipulate
>> 64 bits numbers. Actually I totally forgot that a function could
>> return a long long, so I had to save edx register in the return
>> handler to restore it in its end because 64 bits numbers are
>> returned as a couple into eax and edx in x86-32.
>>
>> So the main problem is now solved. But it remains a last (but more
>> rare) deadlock somewhere. I don't know why at this time and the nmi
>> watchdog doesn't tell anything. So I will have to use early_printk
>> to see the last functions traced. But the problem is that it doesn't
>> print on the console...
>
> hm. Let me know if you cannot get this to work. I regularly use
> earlyprintk=serial,...,keep myself, and it works there - but i dont
> use earlyprintk=vga,keep that often.
>
> Ingo
>


Actually, I didn't need it. I just turned off the nmi watchdog and I
don't have anymore deadlock. The good news is that I have now
something that seems stable. I will have some time this week-end to
try to make a proper patch with this feature.

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