* [RFC/PATCH-mm] i8042: activate panic blink only in X
@ 2006-09-03 3:20 Dmitry Torokhov
2006-09-03 13:20 ` Grant Coady
2006-09-04 14:58 ` Andi Kleen
0 siblings, 2 replies; 7+ messages in thread
From: Dmitry Torokhov @ 2006-09-03 3:20 UTC (permalink / raw)
To: LKML; +Cc: Andrew Morton, Grant Coady
Hi,
Here is an attempt to make panicblink only active in X so there is a
chance of keyboard still working after panic in text console. Any reason
why is should not be done this way?
--
Dmitry
Input: i8042 - blink keyboard LEDs during panic only when in X
This gives keyboard a chance to work in text console so user
can attempt to exctract more useful data form crashed box
(for example some backtraces from SysRq)
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
---
drivers/input/serio/i8042.c | 10 ++++++++++
1 files changed, 10 insertions(+)
Index: work/drivers/input/serio/i8042.c
===================================================================
--- work.orig/drivers/input/serio/i8042.c
+++ work/drivers/input/serio/i8042.c
@@ -20,6 +20,7 @@
#include <linux/err.h>
#include <linux/rcupdate.h>
#include <linux/platform_device.h>
+#include <linux/vt_kern.h>
#include <asm/io.h>
@@ -831,6 +832,15 @@ static long i8042_panic_blink(long count
static char led;
/*
+ * Only blink while in X because it messes up scrollback in console
+ * preventing users to see the entire oops.
+ */
+#ifdef CONFIG_HW_CONSOLE
+ if (vc_cons[fg_console].d->vc_mode != KD_GRAPHICS)
+ return 0;
+#endif
+
+ /*
* We expect frequency to be about 1/2s. KDB uses about 1s.
* Make sure they are different.
*/
--
VGER BF report: H 0.00257812
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [RFC/PATCH-mm] i8042: activate panic blink only in X
2006-09-03 3:20 [RFC/PATCH-mm] i8042: activate panic blink only in X Dmitry Torokhov
@ 2006-09-03 13:20 ` Grant Coady
2006-09-04 14:58 ` Andi Kleen
1 sibling, 0 replies; 7+ messages in thread
From: Grant Coady @ 2006-09-03 13:20 UTC (permalink / raw)
To: Dmitry Torokhov; +Cc: LKML, Andrew Morton, Grant Coady
On Sat, 2 Sep 2006 23:20:36 -0400, Dmitry Torokhov <dtor@insightbb.com> wrote:
>To: LKML <linux-kernel@vger.kernel.org>
>Subject: [RFC/PATCH-mm] i8042: activate panic blink only in X
>From: Dmitry Torokhov <dtor@insightbb.com>
>Date: Sat, 2 Sep 2006 23:20:36 -0400
>Cc: Andrew Morton <akpm@osdl.org>, Grant Coady <gcoady.lk@gmail.com>
>
>Hi,
>
>Here is an attempt to make panicblink only active in X so there is a
>chance of keyboard still working after panic in text console. Any reason
>why is should not be done this way?
>
Works as expected here on console, I cannot test the X function.
Grant.
--
VGER BF report: U 0.480126
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [RFC/PATCH-mm] i8042: activate panic blink only in X
2006-09-03 3:20 [RFC/PATCH-mm] i8042: activate panic blink only in X Dmitry Torokhov
2006-09-03 13:20 ` Grant Coady
@ 2006-09-04 14:58 ` Andi Kleen
2006-09-04 22:29 ` Grant Coady
1 sibling, 1 reply; 7+ messages in thread
From: Andi Kleen @ 2006-09-04 14:58 UTC (permalink / raw)
To: Dmitry Torokhov; +Cc: Andrew Morton, Grant Coady, linux-kernel
Dmitry Torokhov <dtor@insightbb.com> writes:
> Hi,
>
> Here is an attempt to make panicblink only active in X so there is a
> chance of keyboard still working after panic in text console. Any reason
> why is should not be done this way?
>
Looks good to me.
Of course it would be even better to fix the panic stuff to not disrupt scrollback,
but short of that it's a good idea.
-Andi (original panic blink author)
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [RFC/PATCH-mm] i8042: activate panic blink only in X
2006-09-04 14:58 ` Andi Kleen
@ 2006-09-04 22:29 ` Grant Coady
2006-09-04 23:03 ` Andreas Mohr
2006-09-21 4:07 ` Dmitry Torokhov
0 siblings, 2 replies; 7+ messages in thread
From: Grant Coady @ 2006-09-04 22:29 UTC (permalink / raw)
To: Andi Kleen; +Cc: Dmitry Torokhov, Andrew Morton, linux-kernel
On 04 Sep 2006 16:58:33 +0200, Andi Kleen <ak@suse.de> wrote:
>Dmitry Torokhov <dtor@insightbb.com> writes:
>
>> Hi,
>>
>> Here is an attempt to make panicblink only active in X so there is a
>> chance of keyboard still working after panic in text console. Any reason
>> why is should not be done this way?
>>
>
>Looks good to me.
>
>Of course it would be even better to fix the panic stuff to not disrupt scrollback,
>but short of that it's a good idea.
>
>-Andi (original panic blink author)
I'd like to have panic blink and also be able to Shft-Up to previous
console screens.
If possible, kill the console blank timer too? (dunno if you have).
Example: Oops screen on 2.4 recently I paged up to where the fault
started, the screen blanker kicked in while I was hand copying info
and wiped previous screens :( Caused significant delay in working
out what the issue was (slackware-10.2 2.4.33.1 glibc nptl boo-boo).
Is it safe / easy to do on oops/panic?
Grant.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [RFC/PATCH-mm] i8042: activate panic blink only in X
2006-09-04 22:29 ` Grant Coady
@ 2006-09-04 23:03 ` Andreas Mohr
2006-09-05 0:16 ` Grant Coady
2006-09-21 4:07 ` Dmitry Torokhov
1 sibling, 1 reply; 7+ messages in thread
From: Andreas Mohr @ 2006-09-04 23:03 UTC (permalink / raw)
To: Grant Coady; +Cc: Andi Kleen, Dmitry Torokhov, Andrew Morton, linux-kernel
Hi,
On Tue, Sep 05, 2006 at 08:29:09AM +1000, Grant Coady wrote:
> If possible, kill the console blank timer too? (dunno if you have).
>
> Example: Oops screen on 2.4 recently I paged up to where the fault
> started, the screen blanker kicked in while I was hand copying info
> and wiped previous screens :( Caused significant delay in working
> out what the issue was (slackware-10.2 2.4.33.1 glibc nptl boo-boo).
>
> Is it safe / easy to do on oops/panic?
It should be as easy as e.g. doing a
int system_oopsed __read_mostly = 0;
if (!system_oopsed)
blank();
in the timer handler as opposed to painfully deregistering the whole handler
in the critical system state after an OOPS.
A funny side effect is that this way even improves system stability
after OOPS, since the blanking (which doesn't happen then)
might bomb, too ;)
Andreas Mohr
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [RFC/PATCH-mm] i8042: activate panic blink only in X
2006-09-04 23:03 ` Andreas Mohr
@ 2006-09-05 0:16 ` Grant Coady
0 siblings, 0 replies; 7+ messages in thread
From: Grant Coady @ 2006-09-05 0:16 UTC (permalink / raw)
To: Andreas Mohr; +Cc: Andi Kleen, Dmitry Torokhov, Andrew Morton, linux-kernel
On Tue, 5 Sep 2006 01:03:58 +0200, Andreas Mohr <andi@rhlx01.fht-esslingen.de> wrote:
>Hi,
>
>On Tue, Sep 05, 2006 at 08:29:09AM +1000, Grant Coady wrote:
>> If possible, kill the console blank timer too? (dunno if you have).
>>
>> Example: Oops screen on 2.4 recently I paged up to where the fault
>> started, the screen blanker kicked in while I was hand copying info
>> and wiped previous screens :( Caused significant delay in working
>> out what the issue was (slackware-10.2 2.4.33.1 glibc nptl boo-boo).
>>
>> Is it safe / easy to do on oops/panic?
>
>It should be as easy as e.g. doing a
>
>int system_oopsed __read_mostly = 0;
Can't see where to set this one, from the kernel/panic.c notifier chain?
>if (!system_oopsed)
> blank();
drivers/char/vt.c:
...
static void blank_screen_t(unsigned long dummy)
{
if (unlikely(!keventd_up())) {
mod_timer(&console_timer, jiffies + blankinterval);
return;
}
blank_timer_expired = 1;
schedule_work(&console_work);
}
Looks like the place to stop the screen blanker, that's as far as I'm game
to travel.
Hooking the panic notifier chain looks too scary for this little black duck ;)
Grant.
>
>in the timer handler as opposed to painfully deregistering the whole handler
>in the critical system state after an OOPS.
>A funny side effect is that this way even improves system stability
>after OOPS, since the blanking (which doesn't happen then)
>might bomb, too ;)
>
>Andreas Mohr
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [RFC/PATCH-mm] i8042: activate panic blink only in X
2006-09-04 22:29 ` Grant Coady
2006-09-04 23:03 ` Andreas Mohr
@ 2006-09-21 4:07 ` Dmitry Torokhov
1 sibling, 0 replies; 7+ messages in thread
From: Dmitry Torokhov @ 2006-09-21 4:07 UTC (permalink / raw)
To: Grant Coady; +Cc: Andi Kleen, Andrew Morton, linux-kernel
On Monday 04 September 2006 18:29, Grant Coady wrote:
> On 04 Sep 2006 16:58:33 +0200, Andi Kleen <ak@suse.de> wrote:
>
> >Dmitry Torokhov <dtor@insightbb.com> writes:
> >
> >> Hi,
> >>
> >> Here is an attempt to make panicblink only active in X so there is a
> >> chance of keyboard still working after panic in text console. Any reason
> >> why is should not be done this way?
> >>
> >
> >Looks good to me.
> >
> >Of course it would be even better to fix the panic stuff to not disrupt scrollback,
> >but short of that it's a good idea.
> >
> >-Andi (original panic blink author)
>
> I'd like to have panic blink and also be able to Shft-Up to previous
> console screens.
Ok, so here is my attempt at keeping panic blink in console whithout
atkbd bitching at us about ACKs/NAKs. Console scrollback still does
not work for me, most likely because it needs scheduler to run, but
SysRq seems to be working well.
Please try it and tell meif it works for you. Thanks!
--
Dmitry
Subject: i8042 - supress ACK/NAKs when blinking during panic
Input: i8042 - supress ACK/NAKs when blinking during panic
This allows using SysRq and not fill logs with complaints from atkbd.
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
---
drivers/input/serio/i8042.c | 13 +++++++++++--
1 files changed, 11 insertions(+), 2 deletions(-)
Index: work/drivers/input/serio/i8042.c
===================================================================
--- work.orig/drivers/input/serio/i8042.c
+++ work/drivers/input/serio/i8042.c
@@ -106,6 +106,7 @@ static unsigned char i8042_ctr;
static unsigned char i8042_mux_present;
static unsigned char i8042_kbd_irq_registered;
static unsigned char i8042_aux_irq_registered;
+static unsigned char i8042_suppress_kbd_ack;
static struct platform_device *i8042_platform_device;
static irqreturn_t i8042_interrupt(int irq, void *dev_id, struct pt_regs *regs);
@@ -316,7 +317,7 @@ static irqreturn_t i8042_interrupt(int i
unsigned char str, data;
unsigned int dfl;
unsigned int port_no;
- int ret;
+ int ret = 1;
spin_lock_irqsave(&i8042_lock, flags);
str = i8042_read_status();
@@ -378,10 +379,16 @@ static irqreturn_t i8042_interrupt(int i
dfl & SERIO_PARITY ? ", bad parity" : "",
dfl & SERIO_TIMEOUT ? ", timeout" : "");
+ if (unlikely(i8042_suppress_kbd_ack))
+ if (port_no == I8042_KBD_PORT_NO &&
+ (data == 0xfa || data == 0xfe)) {
+ i8042_suppress_kbd_ack = 0;
+ goto out;
+ }
+
if (likely(port->exists))
serio_interrupt(port->serio, data, dfl, regs);
- ret = 1;
out:
return IRQ_RETVAL(ret);
}
@@ -842,11 +849,13 @@ static long i8042_panic_blink(long count
led ^= 0x01 | 0x04;
while (i8042_read_status() & I8042_STR_IBF)
DELAY;
+ i8042_suppress_kbd_ack = 1;
i8042_write_data(0xed); /* set leds */
DELAY;
while (i8042_read_status() & I8042_STR_IBF)
DELAY;
DELAY;
+ i8042_suppress_kbd_ack = 1;
i8042_write_data(led);
DELAY;
last_blink = count;
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2006-09-21 4:07 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-09-03 3:20 [RFC/PATCH-mm] i8042: activate panic blink only in X Dmitry Torokhov
2006-09-03 13:20 ` Grant Coady
2006-09-04 14:58 ` Andi Kleen
2006-09-04 22:29 ` Grant Coady
2006-09-04 23:03 ` Andreas Mohr
2006-09-05 0:16 ` Grant Coady
2006-09-21 4:07 ` Dmitry Torokhov
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox