Re: [PATCH 0/6] loglevel=pci:8,acpi:8,apic=8 support v6

Ingo Molnar
2008-09-17T09:28:18Z

(Jason Cc:-ed)

* Andrew Morton <akpm@linux-foundation.org> wrote:

> On Wed, 17 Sep 2008 01:27:41 -0700 Yinghai Lu <yhlu.kernel@gmail.com> wrote:
>
> > KERN_PCI
> > KERN_ACPI
> > v4: fix some checkpatch error and warning
> > v5: add default with DEFINE_LOGLEVE_SETUP_DEF
> > KERN_APIC
> > v6: set the default only one time
> >
> > usage:
> > in .h to have
> > #define KERN_PCI "<pci>"
> > in .c to have
> > DEFINE_LOGLEVEL_SETUP(pci, KERN_PCI, "pci:");
> > then could use
> > printk(KERN_DEBUG KERN_PCI fmt, ...);
> > and command line
> > loglevel=3,pci:8
> >
> > you can add different printk to different files of one subsys if you like
> > not just one susbsys one tag, and don't need to update kernel.h to add more tags
>
> This all looks dreadfully similar to Jason Baron's "dynamic debug v2".

yeah, but s/dreadfully/luckily

> Similar enough that we couldn't justify merging both.

agreed.

Here's the summary as i see it: Jason's "dynamic debug" mainly relies on
automatically creating a section of tags associated with each pr_debug()
callsite. The unit of filtering is the .c file - which lends itself well
to things like individual drivers but is not quite good for more generic
entities like full subsystems.

I think a better model is what hpa suggested: add string tags at the
call site and make it all a sub-case of printk, via ASCII space tags.
OTOH, a pr_debug() variant could be offered that just inserts a __FILE__
tag into the output - this would enable most of the "dynamic debug"
functionality that Jason's patch series implements IMO.

There's also a wider robustness argument why this is better: we want to
keep printk simple by default, hence doing these things via the ASCII
space is good design. "dynamic debug" does it all programmatically via
extra sections, etc., which is eventually a source of bugs and
unrobustness.

Ingo