Messages in this thread | | | Date | Fri, 07 Nov 2014 17:27:48 +0000 | From | Daniel Thompson <> | Subject | Re: [PATCH v2 3.18-rc3] kdb: Avoid printing KERN_ levels to consoles |
| |
On 07/11/14 17:16, Joe Perches wrote: > On Fri, 2014-11-07 at 16:50 +0000, Daniel Thompson wrote: >> On 07/11/14 16:04, Joe Perches wrote: >>> why insert KERN_INFO? >> >> vkdb_printf() and printk() can appear either way round in a stack >> trace. Each is capable of calling the other and a flag (kdb_trap_printk) >> is used to prevent mutual recursion. > > I see. > >> A complete solution would require a means to know whether vkdb_printf() >> were entered directly or from printk(). A flag passed to vkdb_printf() >> would achieve this. I'll take a look. > > That bit seems pretty simple and sensible. > > I don't know this code at all but would it be better if > the kdb_trap_printk accesses were converted to atomic_<foo>? > > Might this bit in vkdb_printf: > > saved_trap_printk = kdb_trap_printk; > kdb_trap_printk = 0; > > be better atomic_xchg? > > and the kdb_trap_printk++ bits as atomic_inc, etc...
At present I don't think it would make any difference. All of this code is single threaded; interrupts are masked and all other cores are quiesced and held in a loop as part of the debugger entry protocol.
If a full asynchronous mode were ever added to kdb, meaning the ability to run some some commands without halting all the other cores, then we'd have to review quite a lot of code, including this bit. However in that case I think that flags like kdb_trap_printk might actually end up as per_cpu variables rather than atomics.
| |