From: Rusty Russell <rusty@rustcorp.com.au>
To: Jason Baron <jbaron@redhat.com>, Thomas Renninger <trenn@suse.de>
Cc: Jim Cromie <jim.cromie@gmail.com>, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 18/25] dynamic_debug: Introduce global fake module param module.ddebug
Date: Wed, 07 Mar 2012 11:00:56 +1030 [thread overview]
Message-ID: <87eht5xnen.fsf@rustcorp.com.au> (raw)
In-Reply-To: <20120306144754.GA2421@redhat.com>
On Tue, 6 Mar 2012 09:47:54 -0500, Jason Baron <jbaron@redhat.com> wrote:
> On Tue, Mar 06, 2012 at 10:02:56AM +0100, Thomas Renninger wrote:
> > On Monday, March 05, 2012 06:22:06 PM Jim Cromie wrote:
> > > 2012/3/5 Thomas Renninger <trenn@suse.de>:
> > ...
> > > I have reworked 18-25 on top of linux-next, and have been
> > > casually boot testing it on my i586 based soekris, also for
> > > several weeks.
> > >
> > > I have some misgivings about trivial things I added to params.c
> > > (primarily pr-debugs in init-level), and about a few other details,
> > > but I guess I should just write up an explanation and send it out.
> > Seeing the stuff in linux-next soon would be great.
Agreed. OK, here's a partial review.
Patch 1: init: add a pr_info, pr_debug to initcall-levels
> add a pr_info to print current level of initcall,
> add a pr_debug and a counter to initcall_level() to indicate
Meh. We have an initcall_debug flag. Let's use it please.
Patch 2: params: add a pr-debug to parse_one's min/max level
No, this is a great deal of spew for little purpose.
Patch 3: params: parse_one's pr_debug("They are equal! ...") isnt informative
Actually, callback address is informative, since it's kernel devs who
are debugging this. But as they can add it, we should just drop this
patch, or remove the line altogether.
[PATCH 04/15] params: add 3rd arg to option handler callback
This is fine, I'll take this as is.
[PATCH 05/15] dynamic_debug: make dynamic-debug work during module initialization:
> +static inline int ddebug_dyndbg_param_cb(char *param, char *val,
> + const char *modname)
> +{
> + if (strstr(param, "dyndbg"))
> + pr_warn("dyndbg supported only in "
> + "CONFIG_DYNAMIC_DEBUG builds\n");
> + return 0; /* allow unknown options */
> +}
No, this breaks unknown module params! Please split into two callbacks:
check_for_dyndebug()
check_for_module_dyndebug()
The latter may be in module.c and call a common helper, depends how neat it
is.
> + char *param, *modname;
> +
> + param = strstr(fqparam, "dyndbg");
> + if (!param) {
> + pr_debug("%s: skip %s\n", doing, fqparam);
> + return 0; /* param is unknown, ignore it (for boot) */
> + }
> + if (param > fqparam) {
> + /* fqparam has module prefix, split it in 2 */
> + *(param-1) = '\0';
> + modname = fqparam;
> + }
> + else
> + modname = doing;
> +
> + if (verbose)
> + pr_info("module: %s %s=\"%s\"\n", modname, param, val);
> +
> + ddebug_exec_queries(val ? val : "+p");
> + return 0; /* query failure shouldnt stop module load */
Please don't hack-parse, this accepts all kinds of invalid crap.
Your wildcard patch is even worse. A sane option is:
"dyndbg[=...]" on boot line turns dyndbg for everything.
"<modname>.dyndbg[=...]" on boot line turns on dyndbg for
that module.
"dyndbg[=...]" on module line turns dyndbg for that module.
Something like:
const char *modname = NULL;
char *sep;
sep = strchr(fqparam, '.');
if (sep) {
*sep = '\0';
modname = fqparam;
fqparam = sep + 1;
}
...
[PATCH 07/15] dynamic_debug: add modname arg to exec_query callchain
This looks sane.
[PATCH 08/15] dynamic_debug: allow *.dyndbg=+p in boot args
No, just make it "dyndbg=+p", as above.
[PATCH 09/15] dynamic_debug: protect "dyndbg" fake module param name at compile-time
BUILD_BUG_DECL is redundant, you should use BUILD_BUG_ZERO. But that
insists on a constant expression, so you'd need a new variant. Probably
easiest to drop this one. If someone calls their parameter dyndbg they
probably mean exactly what they say.
[PATCH 11/15] dyndbg: init at core level, not arch
Please say why.
[PATCH 14/15] dyndbg: replace if (verbose) pr_info with macro vpr_info
> #define pr_fmt(fmt) KBUILD_MODNAME ":%s: " fmt, __func__
> +#define vpr_info(fmt, ...) if (verbose) { pr_info(fmt, ##__VA_ARGS__); }
This is a bear trap waiting to happen. Please do { } while(0) wrap!
Thanks,
Rusty.
--
How could I marry someone with more hair than me? http://baldalex.org
prev parent reply other threads:[~2012-03-07 0:48 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-30 19:56 [patch 00/25] dynamic-debug during module initialization jim.cromie
2011-11-30 19:56 ` [PATCH 01/25] kernel/module.c: fix compile err, warnings under ifdef DEBUGP jim.cromie
2011-11-30 19:56 ` [PATCH 02/25] dynamic_debug: fix whitespace complaints from scripts/cleanfile jim.cromie
2011-11-30 19:56 ` [PATCH 03/25] dynamic_debug: drop enabled field from struct _ddebug, use _DPRINTK_FLAGS_PRINT jim.cromie
2011-11-30 19:56 ` [PATCH 04/25] dynamic_debug: make dynamic-debug supersede DEBUG ccflag jim.cromie
2011-11-30 22:03 ` Jason Baron
2011-11-30 22:16 ` Joe Perches
2011-12-01 0:26 ` Jim Cromie
2011-11-30 19:56 ` [PATCH 05/25] dynamic_debug: change verbosity at runtime jim.cromie
2011-11-30 19:56 ` [PATCH 06/25] dynamic_debug: replace strcpy with strlcpy, in ddebug_setup_query() jim.cromie
2011-11-30 19:56 ` [PATCH 07/25] dynamic_debug: pr_err() call should not depend upon verbosity jim.cromie
2011-11-30 19:56 ` [PATCH 08/25] dynamic_debug: drop explicit !=NULL checks jim.cromie
2011-11-30 19:56 ` [PATCH 09/25] dynamic_debug: describe_flags with '=[pmflt_]*' jim.cromie
2011-11-30 19:56 ` [PATCH 10/25] dynamic_debug: tighten up error checking on debug queries jim.cromie
2011-11-30 19:56 ` [PATCH 11/25] dynamic_debug: early return if _ddebug table is empty jim.cromie
2011-11-30 19:56 ` [PATCH 12/25] dynamic_debug: reduce lineno field to a saner 18 bits jim.cromie
2011-11-30 19:56 ` [PATCH 13/25] dynamic_debug: chop off comments in ddebug_tokenize jim.cromie
2011-11-30 19:56 ` [PATCH 14/25] dynamic_debug: enlarge command/query write buffer jim.cromie
2011-11-30 19:56 ` [PATCH 15/25] dynamic_debug: add trim_prefix() to provide source-root relative paths jim.cromie
2011-11-30 19:56 ` [PATCH 16/25] dynamic_debug: factor vpr_info_dq out of ddebug_parse_query jim.cromie
2011-11-30 19:56 ` [PATCH 17/25] dynamic_debug: process multiple debug-queries on a line jim.cromie
2011-11-30 19:56 ` [PATCH 18/25] dynamic_debug: Introduce global fake module param module.ddebug jim.cromie
2011-12-01 2:19 ` Rusty Russell
2011-12-01 8:15 ` Jim Cromie
2011-12-02 0:50 ` Rusty Russell
2011-11-30 19:56 ` [PATCH 19/25] pnp: if CONFIG_DYNAMIC_DEBUG, use pnp.ddebug instead of pnp.debug jim.cromie
2011-12-01 11:15 ` Thomas Renninger
2011-12-05 5:42 ` Jim Cromie
2011-12-05 14:47 ` Thomas Renninger
2011-12-05 19:15 ` Jim Cromie
2011-12-05 21:44 ` Thomas Renninger
2011-11-30 19:56 ` [PATCH 20/25] dynamic_debug: rename ddebug param to dyndbg, plus minor tweaks jim.cromie
2011-11-30 19:56 ` [PATCH 21/25] dynamic_debug: handle $module.dyndbg="+mfp" boot-line args jim.cromie
2011-11-30 19:56 ` [PATCH 22/25] dynamic_debug: add modname arg to exec_query callchain jim.cromie
2011-11-30 19:56 ` [PATCH 23/25] dynamic_debug: allow wildcard modname in boot-line query jim.cromie
2011-11-30 19:56 ` [PATCH 24/25] kernel/module: replace DEBUGP with pr_debug jim.cromie
2011-11-30 19:56 ` [PATCH 25/25] dynamic_debug: protect "dyndbg" fake module param name at compile-time jim.cromie
2011-12-01 21:20 ` [patch 00/25] dynamic-debug during module initialization Jason Baron
2011-12-03 15:56 ` Jim Cromie
[not found] ` <201203051614.29457.trenn@suse.de>
[not found] ` <CAJfuBxw=kL5j2VNxXLqiY3ftY3n7MQnY5SkfB09Nscyw8Fh9Zw@mail.gmail.com>
[not found] ` <201203061002.57810.trenn@suse.de>
[not found] ` <20120306144754.GA2421@redhat.com>
2012-03-07 0:30 ` Rusty Russell [this message]
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=87eht5xnen.fsf@rustcorp.com.au \
--to=rusty@rustcorp.com.au \
--cc=jbaron@redhat.com \
--cc=jim.cromie@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=trenn@suse.de \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox