Re: ehci dynamic debug problem

Johannes Stezenbach
2012-04-13T17:41:24Z

On Fri, Apr 13, 2012 at 11:19:37AM -0400, Alan Stern wrote:
> On Fri, 13 Apr 2012, Johannes Stezenbach wrote:
>
> > On Fri, Apr 13, 2012 at 10:35:59AM -0400, Alan Stern wrote:
> > > On Fri, 13 Apr 2012, Johannes Stezenbach wrote:
> > > >
> > > > Does dynamic debug offer an "is the message two lines below enabled" test?
> > > > Simply changing the "#ifdef DEBUG" for dbg_port_buf()
> > > > to "#if defined(DEBUG) || defined(CONFIG_DYNAMIC_DEBUG)"
> > > > is probably not acceptable due to the overhead of dbg_port_buf()?
> > >
> > > I don't understand your question. Doesn't dbg_port_buf need to be
> > > defined whenever dynamic debugging is enabled?
> > >
> > > Alternatively, the definition of dbg_port_buf (and related routines) in
> > > the !defined(DEBUG) case could be changed; you could add
> > >
> > > buf[0] = 0;
> > >
> > > That way you wouldn't get garbage out, although you wouldn't get
> > > anything useful either.
> >
> > The ideal solution I'm looking for gives useful output
> > when dynamic debugging is enabled for ehci, but does no
> > useless string formatting when CONFIG_DYNAMIC_DEBUG is y
> > but the dynamic debug for ehci is disabled.
>
> But there is no such thing as dynamic debug for ehci, is there?
> There's a separate dynamic debug setting for each dev_dbg statement.
> So your ideal solution makes no sense.

When CONFIG_DYNAMIC_DEBUG=y but ehci debug is disabled
in /sys/kernel/debug/dynamic_debug/control, then
dbg_port() calls dbg_port_buf() which would
format the string, then calls ehci_dbg() which
calls dev_dbg() which discards it.

Does it make sense now?

Thanks,
Johannes