This patch is based on 2.6.35-rc5 + this patchset I posted recently:
[patch 0/3] Dynamic Debug providing early boot debug messages via boot parameter
It would be great to see these getting merged into 2.6.36...
Thanks,
Thomas
-----
Dynamic Debug: Introduce global fake module param module.ddebug
Dynamic Debug allows enabling of pr_debug or KERN_DEBUG messages at runtime.
This is controlled via /sys/kernel/debug/dynamic_debug/control.
One major drawback is that the whole initialization of a module cannot be
tracked, because ddebug is only aware of debug strings of loaded modules.
But this is the most interesting part...
This patch introduces a fake module parameter module.ddebug(not shown in
/sys/module/*/parameters, thus it does not use any resources/memory).
If a module gets ddebug passed as a module parameter (e.g. via module.ddebug
kernel boot param or via "modprobe module ddebug"), all debug strings of this
module get activated by issuing "module module_name +p" internally
(not via sysfs) when the module gets loaded.
Possible enhancements for the future if ddebug might get extended with
further flags:
module.ddebug=flags
Then module.ddebug="p" would be the same as module.ddebug, but if there
is a "x" ddebug flag added, one could pass:
module.ddebug="xp"
which would result in such a dynamic debug query:
module module_name +xp
One not handled side-effect of this patch:
Modules must not use "ddebug" module parameter or it will get ignored.
I tried to find a compile time check, but I could not see how that
is possible. Possibly a run-time check or at least documentation (where?)
should get added, that "ddebug" must not get used as a module parameter.
Tested with:
options hp-wmi ddebug
in modprobe.conf.local
-> works and pr_debug messages issued at module initialization time show
up. Also "p" flag gets set for the whole hp-wmi module debug strings:
grep hp-wmi ...and this time with some Documentation added...
Please use this patch instead of my first post.
Thanks,
Thomas
----------
Dynamic Debug: Introduce global fake module param module.ddebug
Dynamic Debug allows enabling of pr_debug or KERN_DEBUG messages at runtime.
This is controlled via /sys/kernel/debug/dynamic_debug/control.
One major drawback is that the whole initialization of a module cannot be
tracked, because ddebug is only aware of debug strings of loaded modules.
But this is the most interesting part...
This patch introduces a fake module parameter module.ddebug(not shown in
/sys/module/*/parameters, thus it does not use any resources/memory).
If a module passes ddebug as a module parameter (e.g. via module.ddebug
kernel boot param or via "modprobe module ddebug"), all debug strings of this
module get activated by issuing "module module_name +p" internally
(not via sysfs) when the module gets loaded.
Possible enhancements for the future if ddebug might get extended with
further flags:
module.ddebug=flags
Then module.ddebug="p" would be the same as module.ddebug, but if there
is a "x" ddebug flag added, one could pass:
module.ddebug="xp"
which would result in such a dynamic debug query:
module module_name +xp
One not handled side-effect of this patch:
Modules must not use "ddebug" module parameter or it will get ignored.
I tried to find a compile time check, but I could not see how that
is possible. Possibly a run-time check or at least documentation (where?)
should get added, that "ddebug" must not get used as a module parameter.
Tested with:
options hp-wmi ddebug
in modprobe.conf
-> works and pr_debug messages issued at module initialization time show
up. Also "p" flag gets set for the whole hp-wmi module:
grep hp-wmi /sys/../dynamic_debug/control
Signed-off-by: Thomas Renninger <trenn@suse.de>
---
Documentation/dynamic-debug-howto.txt | 28 +++++++++++++++++++++++++++-
include/linux/dynamic_debug.h | 5 +++++
...patch looks pretty good to me. I'm not sure how we reserve the 'ddebug' keyword. However, I think its probably ok, if we mention it in 'kernel-parameters.txt' and in the dynamic debug documentation. Also, ddebug could show up in /sys/module/$(modulename}/parameters/ , but this can probably be done in a followup patch. Also, if 'ddebug' alone is set on the kernel command line, i'd like to see us enable all debug statements. We could implement this by adding a special 'meta' module to the control file which is just has a module name of of 'All' or something like that. This could also be done in a subsequent patch. We also need to at least remove the 'dynamic_printk' doc from kernel-parameters.txt. thanks, -Jason --
I added some documentation to the dynamic debug docu file and posted
the patch again (as a reply on my initial post, should be the same mail
This was intentional.
At the time /sys is available one can also use
/sys/kernel/debug/dynamic_debug/control
echo "module my_module_to_debug +p"
>/sys/kernel/debug/dynamic_debug/control
would exactly do the same as /sys/module/$(modulename}/parameters
The advantage of not having it, is it saves quite some resources, in
fact it uses none.
Otherwise every module would have an addtional parameter added with a
Is there a single query which could do it?
If not, possibly a keyword like file/module called "all" could be added.
Don't know about this one.
So, I have your acked-by for this one?
Let's get this pushed into a tree, with some luck it still could make it
into 2.6.36? The other three have been taken by Pekka? He said something
about taking them, but I haven't received any confirmation.
Ah no, he acked-by them only.
As these are rather general ones, which tree should they go through,
possibly Andrew could take them?
I can resubmit, if someone could tell me a list/maintainer that fits
best, so that they really make it in...
Thanks,
Thomas
--
ok. that makes sense. I would make the all mode apply to all future right, originally Greg KH, pulled these into his tree. Greg, can you take a look at pulling these into your tree? So it would be this patch, and the thread: Subject: [patch 0/3] Dynamic Debug providing early boot debug messages via boot parameter thanks, -Jason --
Ok, I'll queue this up in my tree after the 2.6.36-rc1 merge is over. Can someone resend them to me so I don't loose them? thanks, greg k-h --
It's too late for .36 as none of this has been tested in linux-next yet. How about for .37? thanks, greg k-h --
No problem. I send you a clean patchset tomorrow.
I have one additional idea I'll try to build in:
Complain if a module uses ddebug as module parameter at module
insertion time that this is a reserved keyword/param that must not be used.
I'll leave out lkml, Andrew and Pekka (I thought they could queue these).
Thanks everybody,
Thomas
--
