From: Crutcher Dunnavant <crutcher@datastacks.com>
To: lkml <linux-kernel@vger.kernel.org>
Subject: Re: Magic SysRq +# in 2.4.9-ac/2.4.10-pre12
Date: Fri, 21 Sep 2001 17:08:28 -0400 [thread overview]
Message-ID: <20010921170828.J8188@mueller.datastacks.com> (raw)
In-Reply-To: <3BA8C01D.79FBD7C3@osdlab.org>
In-Reply-To: <3BA8C01D.79FBD7C3@osdlab.org>; from rddunlap@osdlab.org on Wed, Sep 19, 2001 at 08:56:13AM -0700
++ 19/09/01 08:56 -0700 - Randy.Dunlap:
> (and maybe earlier...)
>
> Simple problems grow...
>
> Keith Owens has already noted one problem in sysrq.c (2.4.10-pre12).
>
> Beginning:
>
> I have an IBM model KB-9910 keyboard. When I use
> Alt+SysRQ+number (number: 0...9) on it to change the
> console loglevel, only keys 5 and 6 have the desired
> effect. I used showkey -s to view the scancodes from
> the other <number> keys, but showkey didn't display
> anything for them. Any other suggestions?
>
>
> For now, I'm just using different (non-number) keys
> to modify the loglevel.
>
> Anyway, in looking at SysRq loglevel handling in
> 2.4.9-ac (and 2.4.10-pre12), I see that it has been modified
> quite a bit. Looks extensible, which can be good.
> However, looking over it gave me several nagging questions
> and problems.
>
> 1. Was this stuff tested? How ???
>
> It always sets console_loglevel and then restores
> console_loglevel from orig_log_level, so Alt+SysRq+#
> handling is severely broken.
>
> If someone (Crutcher ?) wants to patch it, that's fine.
> If I patched it, I would just add a
> next_loglevel = -1;
> at the beginning of __handle_sysrq_nolock() and then
> let the loglevel handler(s) set next_loglevel.
> If next_loglevel != -1 at the end of __handle_sysrq_nolock(),
> set console_loglevel to next_loglevel.
I'm looking real close at this right now, and there are a couple of
problems, and a simple, but ugly solution.
The entire reason that console_loglevel is touched _after_ the call to
the second level handler is actually for the loglevel handler's
printout. I was trying to minimize change in the display, but horked it.
Here is the problem.
SysRq events use action messages which get printed by the top level
handler before calling the second level handler, the call line is:
orig_log_level = console_loglevel;
console_loglevel = 7;
printk(KERN_INFO "SysRq : ");
op_p = __sysrq_get_key_op(key);
...
printk ("%s", op_p->action_msg);
op_p->handler(key, pt_regs, kbd, tty);
...
console_loglevel = orig_log_level;
The killer here is the fact that the action message format string does
not carry a newline, allowing people to register strings which leave the
printk state open. The loglevel handler then fills in the loglevel, and
closes the printk state.
There was a time when I thought that was a good idea.
Go ahead, laugh.
Anyway, that sort of unresolved state is bad, and is the source of all
of this song and dance. I think the right answer is to force handlers to
open their own calls to printk, and to keep whats going on with the
console_loglevel and printk buffer nice and clean.
The cost is that messages like this:
SysRq : Loglevel switched to X
will have to become more like this:
SysRq : Loglevel
Loglevel switched to X
Again, appologies, and a patch is forthcoming.
--
Crutcher <crutcher@datastacks.com>
GCS d--- s+:>+:- a-- C++++$ UL++++$ L+++$>++++ !E PS+++ PE Y+ PGP+>++++
R-(+++) !tv(+++) b+(++++) G+ e>++++ h+>++ r* y+>*$
next prev parent reply other threads:[~2001-09-21 21:08 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-09-19 15:56 Magic SysRq +# in 2.4.9-ac/2.4.10-pre12 Randy.Dunlap
2001-09-19 16:30 ` Randy.Dunlap
2001-09-19 16:42 ` Alan Cox
2001-09-19 18:02 ` Randy.Dunlap
2001-09-19 17:31 ` Erik Mouw
2001-09-19 17:34 ` Randy.Dunlap
2001-09-19 17:50 ` Randy.Dunlap
2001-09-19 17:52 ` Erik Mouw
2001-09-19 20:22 ` Vojtech Pavlik
2001-09-21 20:29 ` Crutcher Dunnavant
2001-09-26 20:38 ` Pavel Machek
2001-10-03 15:08 ` Crutcher Dunnavant
2001-09-21 21:08 ` Crutcher Dunnavant [this message]
2001-09-21 21:41 ` [PATCH] Magic SysRq loglevel fix Crutcher Dunnavant
2001-09-22 1:25 ` Randy.Dunlap
2001-09-22 5:16 ` Crutcher Dunnavant
2001-09-21 21:42 ` Magic SysRq +# in 2.4.9-ac/2.4.10-pre12 Randy.Dunlap
2001-09-21 22:07 ` Crutcher Dunnavant
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=20010921170828.J8188@mueller.datastacks.com \
--to=crutcher@datastacks.com \
--cc=linux-kernel@vger.kernel.org \
/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