From: Jason Baron <jbaron@redhat.com>
To: Johannes Stezenbach <js@sig21.net>
Cc: Alan Stern <stern@rowland.harvard.edu>,
linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org
Subject: Re: ehci dynamic debug problem
Date: Mon, 16 Apr 2012 11:54:24 -0400 [thread overview]
Message-ID: <20120416155423.GB2345@redhat.com> (raw)
In-Reply-To: <20120413190311.GA6238@sig21.net>
On Fri, Apr 13, 2012 at 09:03:11PM +0200, Johannes Stezenbach wrote:
> On Fri, Apr 13, 2012 at 02:13:58PM -0400, Alan Stern wrote:
> > On Fri, 13 Apr 2012, Johannes Stezenbach wrote:
> >
> > > > 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
> >
> > There is no such thing as ehci debug! So how can it be disabled?
> > There's only an individual setting for each line of debugging code.
> >
> > > 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?
> >
> > No. What happens if dynamic debug is enabled for one line that calls
> > dbg_port_buf() but not for another? There's no way to avoid the string
> > formatting in both lines, even though one of them discards the result.
>
> That's why I said in my initial mail:
>
> Does dynamic debug offer an "is the message two lines below enabled" test?
>
Sorry was away for a bit...
dynamic debug doesn't offer any is enabled test, its hidden from the
user. That said, in this case, you can delay the printing to the buffer
with:
diff --git a/drivers/usb/host/ehci-dbg.c b/drivers/usb/host/ehci-dbg.c
index d6d74d2..fd90ccd 100644
--- a/drivers/usb/host/ehci-dbg.c
+++ b/drivers/usb/host/ehci-dbg.c
@@ -254,7 +255,7 @@ dbg_command_buf (char *buf, unsigned len, const char *label, u32 command)
);
}
-static int
+static char *
dbg_port_buf (char *buf, unsigned len, const char *label, int port, u32 status)
{
char *sig;
@@ -267,7 +268,7 @@ dbg_port_buf (char *buf, unsigned len, const char *label, int port, u32 status)
default: sig = "?"; break;
}
- return scnprintf (buf, len,
+ scnprintf (buf, len,
"%s%sport:%d status %06x %d %s%s%s%s%s%s "
"sig=%s%s%s%s%s%s%s%s%s%s%s",
label, label [0] ? " " : "", port, status,
@@ -293,6 +294,8 @@ dbg_port_buf (char *buf, unsigned len, const char *label, int port, u32 status)
(status & PORT_PE) ? " PE" : "",
(status & PORT_CSC) ? " CSC" : "",
(status & PORT_CONNECT) ? " CONNECT" : "");
+
+ return buf;
}
#else
@@ -333,8 +336,7 @@ dbg_port_buf (char *buf, unsigned len, const char *label, int port, u32 status)
#define dbg_port(ehci, label, port, status) { \
char _buf [80]; \
- dbg_port_buf (_buf, sizeof _buf, label, port, status); \
- ehci_dbg (ehci, "%s\n", _buf); \
+ ehci_dbg (ehci, "%s\n", dbg_port_buf (_buf, sizeof _buf, label, port, status)); \
}
/*-------------------------------------------------------------------------*/
That seems to do what you want, at least with my compiler - gcc (GCC)
4.6.2 20111027 (Red Hat 4.6.2-1).
Thanks,
-Jason
next prev parent reply other threads:[~2012-04-16 15:54 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-04-13 8:56 ehci dynamic debug problem Johannes Stezenbach
2012-04-13 14:35 ` Alan Stern
2012-04-13 14:57 ` Johannes Stezenbach
2012-04-13 15:19 ` Alan Stern
2012-04-13 17:41 ` Johannes Stezenbach
2012-04-13 18:13 ` Alan Stern
2012-04-13 19:03 ` Johannes Stezenbach
2012-04-13 19:40 ` Alan Stern
2012-04-16 15:11 ` Alan Stern
2012-04-16 15:54 ` Jason Baron [this message]
2012-04-16 16:41 ` Johannes Stezenbach
2012-04-16 17:15 ` Jason Baron
2012-04-16 19:07 ` Johannes Stezenbach
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20120416155423.GB2345@redhat.com \
--to=jbaron@redhat.com \
--cc=js@sig21.net \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=stern@rowland.harvard.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.