<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/lib/dynamic_debug.c, branch v3.6-rc1</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/lib/dynamic_debug.c?h=v3.6-rc1</id>
<link rel='self' href='https://git.amat.us/linux/atom/lib/dynamic_debug.c?h=v3.6-rc1'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2012-05-07T23:47:32Z</updated>
<entry>
<title>Revert "dynamic_debug: remove unneeded includes"</title>
<updated>2012-05-07T23:47:32Z</updated>
<author>
<name>Greg Kroah-Hartman</name>
<email>gregkh@linuxfoundation.org</email>
</author>
<published>2012-05-07T23:47:32Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=fef15d2f3d97c9858694f234af94a4ef40d86679'/>
<id>urn:sha1:fef15d2f3d97c9858694f234af94a4ef40d86679</id>
<content type='text'>
This reverts commit 04db6e5fddca55186b6a74339a62c800150648bc.

Odds are, we really don't want to revert all of these, and need to be
more careful in the future to make sure we don't break the build of
other arches.

Reported-by: Stephen Rothwell &lt;sfr@canb.auug.org.au&gt;
Cc: Jim Cromie &lt;jim.cromie@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>dynamic_debug: remove unneeded includes</title>
<updated>2012-05-05T00:25:46Z</updated>
<author>
<name>Jim Cromie</name>
<email>jim.cromie@gmail.com</email>
</author>
<published>2012-05-03T17:57:39Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=04db6e5fddca55186b6a74339a62c800150648bc'/>
<id>urn:sha1:04db6e5fddca55186b6a74339a62c800150648bc</id>
<content type='text'>
These arent currently needed, so drop them.  Some will probably get
re-added when static-branches are added, but include loops prevent
that at present.

Signed-off-by: Jim Cromie &lt;jim.cromie@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>dynamic_debug: init with early_initcall, not arch_initcall</title>
<updated>2012-04-30T20:26:31Z</updated>
<author>
<name>Jim Cromie</name>
<email>jim.cromie@gmail.com</email>
</author>
<published>2012-04-27T20:30:42Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=3ec5652ab70f6e9a888d9e5f67c858af354323b3'/>
<id>urn:sha1:3ec5652ab70f6e9a888d9e5f67c858af354323b3</id>
<content type='text'>
1- Call dynamic_debug_init() from early_initcall, not arch_initcall.
2- Call dynamic_debug_init_debugfs() from fs_initcall, not module_init.

RFC: This works for me on a 64 bit desktop and a i586 SBC, but is
untested on other arches.  I presume there is or was a reason
original code used arch_initcall, maybe the constraints have changed.

This makes facility available as soon as possible.

2nd change has a downside when dynamic_debug.verbose=1; all the
vpr_info()s called in the proc-fs code are activated, causing
voluminous output from dmesg.  TBD: Im unsure of this explanation, but
the output is there.  This could be fixed by changing those callsites
to v2pr_info(if verbose &gt; 1).

1st change is still not early enough to enable pr_debugs in
kernel/params, so parsing of boot-args isnt logged.  The reparse of
those args is however visible after params.dyndbg="+p" is processed.

Signed-off-by: Jim Cromie &lt;jim.cromie@gmail.com&gt;
Acked-by: Jason Baron &lt;jbaron@redhat.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>dynamic_debug: add modname arg to exec_query callchain</title>
<updated>2012-04-30T20:25:39Z</updated>
<author>
<name>Jim Cromie</name>
<email>jim.cromie@gmail.com</email>
</author>
<published>2012-04-27T20:30:40Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=8e59b5cfb9a6f43753236b554d785e8efca62db7'/>
<id>urn:sha1:8e59b5cfb9a6f43753236b554d785e8efca62db7</id>
<content type='text'>
Pass module name into ddebug_exec_queries(), ddebug_exec_query(), and
ddebug_parse_query() as separate parameter.  In ddebug_parse_query(),
the module name is added into the query struct before the query-string
is parsed.  This allows the query-string to be shorter:

instead of:
   $modname.dyndbg="module $modname +fp"
do this:
   $modname.dyndbg="+fp"

Omitting "module $modname" from the query string is actually required
for $modname.dyndbg rules; the set-only-once check added in a previous
patch will throw an error if its added again.  ddebug_query="..." has
no $modname associated with it, so the query string may include it.

This also fixes redundant "module $modname" otherwise needed to handle
multiple queries per string:

   $modname.dyndbg="func foo +fp; func bar +fp"

Signed-off-by: Jim Cromie &lt;jim.cromie@gmail.com&gt;
Acked-by: Jason Baron &lt;jbaron@redhat.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>dynamic_debug: print ram usage by ddebug tables if verbose</title>
<updated>2012-04-30T20:25:39Z</updated>
<author>
<name>Jim Cromie</name>
<email>jim.cromie@gmail.com</email>
</author>
<published>2012-04-27T20:30:39Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=4107692760db8160a65347f7bb2fa7fa7bf9b0d1'/>
<id>urn:sha1:4107692760db8160a65347f7bb2fa7fa7bf9b0d1</id>
<content type='text'>
Print ram usage of dynamic-debug tables and verbose section so user
knows cost of enabling CONFIG_DYNAMIC_DEBUG.  This only counts the
size of the _ddebug tables for builtins and the __verbose section that
they refer to, not those used in loadable modules.

Signed-off-by: Jim Cromie &lt;jim.cromie@gmail.com&gt;
Acked-by: Jason Baron &lt;jbaron@redhat.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>dynamic_debug: simplify dynamic_debug_init error exit</title>
<updated>2012-04-30T20:25:39Z</updated>
<author>
<name>Jim Cromie</name>
<email>jim.cromie@gmail.com</email>
</author>
<published>2012-04-27T20:30:38Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=af442399fcf378a21ffe924b182f6d9ee70001ca'/>
<id>urn:sha1:af442399fcf378a21ffe924b182f6d9ee70001ca</id>
<content type='text'>
We dont want errors while parsing ddebug_query to unload ddebug
tables, so set success after tables are loaded, and return 0 after
query parsing is done.

Simplify error handling code since its no longer used for success,
and change goto label to out_err to clarify this.

Signed-off-by: Jim Cromie &lt;jim.cromie@gmail.com&gt;
Acked-by: Jason Baron &lt;jbaron@redhat.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>dynamic_debug: combine parse_args callbacks together</title>
<updated>2012-04-30T20:24:34Z</updated>
<author>
<name>Jim Cromie</name>
<email>jim.cromie@gmail.com</email>
</author>
<published>2012-04-27T20:30:37Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=6ab676e96422f33a873006096f928feeded7ce3b'/>
<id>urn:sha1:6ab676e96422f33a873006096f928feeded7ce3b</id>
<content type='text'>
Refactor ddebug_dyndbg_boot_param_cb and ddebug_dyndbg_module_param_cb
into a common helper function, and call it from both.  The handling of
foo.dyndbg is unneeded by the latter, but harmless.

The 2 callers differ only by pr_info and the return code they pass to
the helper for when an unknown param is handled.  I could slightly
reduce dmesg clutter by putting the vpr_info in the common helper,
after the return on_err, but that loses __func__ context, is overly
silent on module_cb unknown param errors, and the clutter is only when
dynamic_debug.verbose=1 anyway.

Signed-off-by: Jim Cromie &lt;jim.cromie@gmail.com&gt;
Acked-by: Jason Baron &lt;jbaron@redhat.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>dynamic_debug: deprecate ddebug_query, suggest dyndbg instead</title>
<updated>2012-04-30T20:24:34Z</updated>
<author>
<name>Jim Cromie</name>
<email>jim.cromie@gmail.com</email>
</author>
<published>2012-04-27T20:30:36Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=f0b919d967284313be4a767ba92ab5a88cb27410'/>
<id>urn:sha1:f0b919d967284313be4a767ba92ab5a88cb27410</id>
<content type='text'>
With ddebug_dyndbg_boot_params_cb() handling bare dyndbg params, we
dont need ddebug_query param anymore.  Add a warning when processing
ddebug_query= param that it is deprecated, and to change it to dyndbg=

Add a deprecation notice for v3.8 to feature-removal-schedule.txt, and
add a suggested deprecation period of 3 releases to the header.

Signed-off-by: Jim Cromie &lt;jim.cromie@gmail.com&gt;
Acked-by: Jason Baron &lt;jbaron@redhat.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>dynamic_debug: make dynamic-debug work for module initialization</title>
<updated>2012-04-30T18:31:46Z</updated>
<author>
<name>Jim Cromie</name>
<email>jim.cromie@gmail.com</email>
</author>
<published>2012-04-27T20:30:35Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=b48420c1d3019ce8d84fb8e58f4ca86b8e3655b8'/>
<id>urn:sha1:b48420c1d3019ce8d84fb8e58f4ca86b8e3655b8</id>
<content type='text'>
This introduces a fake module param $module.dyndbg.  Its based upon
Thomas Renninger's $module.ddebug boot-time debugging patch from
https://lkml.org/lkml/2010/9/15/397

The 'fake' module parameter is provided for all modules, whether or
not they need it.  It is not explicitly added to each module, but is
implemented in callbacks invoked from parse_args.

For builtin modules, dynamic_debug_init() now directly calls
parse_args(..., &amp;ddebug_dyndbg_boot_params_cb), to process the params
undeclared in the modules, just after the ddebug tables are processed.

While its slightly weird to reprocess the boot params, parse_args() is
already called repeatedly by do_initcall_levels().  More importantly,
the dyndbg queries (given in ddebug_query or dyndbg params) cannot be
activated until after the ddebug tables are ready, and reusing
parse_args is cleaner than doing an ad-hoc parse.  This reparse would
break options like inc_verbosity, but they probably should be params,
like verbosity=3.

ddebug_dyndbg_boot_params_cb() handles both bare dyndbg (aka:
ddebug_query) and module-prefixed dyndbg params, and ignores all other
parameters.  For example, the following will enable pr_debug()s in 4
builtin modules, in the order given:

  dyndbg="module params +p; module aio +p" module.dyndbg=+p pci.dyndbg

For loadable modules, parse_args() in load_module() calls
ddebug_dyndbg_module_params_cb().  This handles bare dyndbg params as
passed from modprobe, and errors on other unknown params.

Note that modprobe reads /proc/cmdline, so "modprobe foo" grabs all
foo.params, strips the "foo.", and passes these to the kernel.
ddebug_dyndbg_module_params_cb() is again called for the unknown
params; it handles dyndbg, and errors on others.  The "doing" arg
added previously contains the module name.

For non CONFIG_DYNAMIC_DEBUG builds, the stub function accepts
and ignores $module.dyndbg params, other unknowns get -ENOENT.

If no param value is given (as in pci.dyndbg example above), "+p" is
assumed, which enables all pr_debug callsites in the module.

The dyndbg fake parameter is not shown in /sys/module/*/parameters,
thus it does not use any resources.  Changes to it are made via the
control file.

Also change pr_info in ddebug_exec_queries to vpr_info,
no need to see it all the time.

Signed-off-by: Jim Cromie &lt;jim.cromie@gmail.com&gt;
CC: Thomas Renninger &lt;trenn@suse.de&gt;
CC: Rusty Russell &lt;rusty@rustcorp.com.au&gt;
Acked-by: Jason Baron &lt;jbaron@redhat.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>dynamic_debug: replace if (verbose) pr_info with macro vpr_info</title>
<updated>2012-04-30T17:35:30Z</updated>
<author>
<name>Jim Cromie</name>
<email>jim.cromie@gmail.com</email>
</author>
<published>2012-04-27T20:30:32Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=b8ccd5dee776d85e29cf139c77595b7369e294bc'/>
<id>urn:sha1:b8ccd5dee776d85e29cf139c77595b7369e294bc</id>
<content type='text'>
Use vpr_info to declutter code, reduce indenting, and change one
additional pr_info call in ddebug_exec_queries.

Signed-off-by: Jim Cromie &lt;jim.cromie@gmail.com&gt;
Acked-by: Jason Baron &lt;jbaron@redhat.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
</feed>
