tty/serial/pmac_zilog: Fix "nobody cared" IRQ message
Subsystems (2)
PATCH 1/1 tty/serial/pmac_zilog: Fix "nobody cared" IRQ message
Following commit a79dd5a titled "tty/serial/pmac_zilog: Fix suspend & resume", my Powerbook G4 Titanium showed the following stack dump:
[ 36.878225] irq 23: nobody cared (try booting with the "irqpoll" option) [ 36.878251] Call Trace: [ 36.878291] [dfff3f00] [c000984c] show_stack+0x7c/0x194 (unreliable) [ 36.878322] [dfff3f40] [c00a6868] __report_bad_irq+0x44/0xf4 [ 36.878339] [dfff3f60] [c00a6b04] note_interrupt+0x1ec/0x2ac [ 36.878356] [dfff3f80] [c00a48d0] handle_irq_event_percpu+0x250/0x2b8 [ 36.878372] [dfff3fd0] [c00a496c] handle_irq_event+0x34/0x54 [ 36.878389] [dfff3fe0] [c00a753c] handle_fasteoi_irq+0xb4/0x124 [ 36.878412] [dfff3ff0] [c000f5bc] call_handle_irq+0x18/0x28 [ 36.878428] [deef1f10] [c000719c] do_IRQ+0x114/0x1cc [ 36.878446] [deef1f40] [c0015868] ret_from_except+0x0/0x1c [ 36.878484] --- Exception: 501 at 0xf497610 [ 36.878489] LR = 0xfdc3dd0 [ 36.878497] handlers: [ 36.878510] [<c02b7424>] pmz_interrupt [ 36.878520] Disabling IRQ #23
From an E-mail exchange about this problem, Andreas Schwab noticed a typo that resulted in the wrong condition being tested.
The patch also corrects 2 typos that incorrectly report why an error branch is being taken.
---
Ben,
Any changes you wish to make in the commit message are OK with me.
Larry
---
drivers/tty/serial/pmac_zilog.c +3 -3
@@ -469,7 +469,7 @@ tty =NULL ;if (r3 & (CHAEXT | CHATxIP | CHARxIP)) {if (!ZS_IS_OPEN (uap_a)) { -pmz_debug ("ChanA interrupt while open !\n" ); +pmz_debug ("ChanA interrupt while not open !\n" ); goto skip_a; }write_zsreg (uap_a,R0 ,RES_H_IUS );
@@ -493,8 +493,8 @@spin_lock (&uap_b->port.lock); tty =NULL ;if (r3 & (CHBEXT | CHBTxIP | CHBRxIP)) { -if (!ZS_IS_OPEN (uap_a)) { -pmz_debug ("ChanB interrupt while open !\n" ); +if (!ZS_IS_OPEN (uap_b)) { +pmz_debug ("ChanB interrupt while not open !\n" ); goto skip_b; }write_zsreg (uap_b,R0 ,RES_H_IUS );
Quoted 43 lines · Larry Finger
Following commit a79dd5a titled "tty/serial/pmac_zilog: Fix suspend & resume", my Powerbook G4 Titanium showed the following stack dump:
[ 36.878225] irq 23: nobody cared (try booting with the "irqpoll" option) [ 36.878251] Call Trace: [ 36.878291] [dfff3f00] [c000984c] show_stack+0x7c/0x194 (unreliable) [ 36.878322] [dfff3f40] [c00a6868] __report_bad_irq+0x44/0xf4 [ 36.878339] [dfff3f60] [c00a6b04] note_interrupt+0x1ec/0x2ac [ 36.878356] [dfff3f80] [c00a48d0] handle_irq_event_percpu+0x250/0x2b8 [ 36.878372] [dfff3fd0] [c00a496c] handle_irq_event+0x34/0x54 [ 36.878389] [dfff3fe0] [c00a753c] handle_fasteoi_irq+0xb4/0x124 [ 36.878412] [dfff3ff0] [c000f5bc] call_handle_irq+0x18/0x28 [ 36.878428] [deef1f10] [c000719c] do_IRQ+0x114/0x1cc [ 36.878446] [deef1f40] [c0015868] ret_from_except+0x0/0x1c [ 36.878484] --- Exception: 501 at 0xf497610 [ 36.878489] LR = 0xfdc3dd0 [ 36.878497] handlers: [ 36.878510] [<c02b7424>] pmz_interrupt [ 36.878520] Disabling IRQ #23From an E-mail exchange about this problem, Andreas Schwab noticed a typo that resulted in the wrong condition being tested.
The patch also corrects 2 typos that incorrectly report why an error branch is being taken.
Signed-off-by Larry Finger <[email protected]>---
Ben,
Any changes you wish to make in the commit message are OK with me.
Larry
---Index:
wireless-testing/drivers/tty/serial/pmac_zilog.c
===================================================================
---wireless-testing.orig/drivers/tty/serial/pmac_zilog.c2012-04-28
15:51:38.843723074 -0500
+++wireless-testing/drivers/tty/serial/pmac_zilog.c2012-04-28
18:34:34.053900600 -0500
drivers/tty/serial/pmac_zilog.c line 472
Quoted 5 lines
drivers/tty/serial/pmac_zilog.c +1
-1@@ -469,7 +469,7 @@ tty =NULL ;if (r3 & (CHAEXT | CHATxIP | CHARxIP)) {if (!ZS_IS_OPEN (uap_a)) { -pmz_debug ("ChanA interrupt while open !\n" ); +pmz_debug ("ChanA interrupt while not open !\n" );
Hmm, I'm not a native english speaker, but I have the feeling that it would be more grammatically correct to use "opened" instead of "open".
Of course if the message never triggers, it's less of concern :-)
drivers/tty/serial/pmac_zilog.c line 497
Quoted 11 lines
drivers/tty/serial/pmac_zilog.c +2
-2goto skip_a; }write_zsreg (uap_a,R0 ,RES_H_IUS );@@ -493,8 +493,8 @@spin_lock (&uap_b->port.lock); tty =NULL ;if (r3 & (CHBEXT | CHBTxIP | CHBRxIP)) { -if (!ZS_IS_OPEN (uap_a)) { -pmz_debug ("ChanB interrupt while open !\n" ); +if (!ZS_IS_OPEN (uap_b)) { +pmz_debug ("ChanB interrupt while not open !\n" );
Ditto.
drivers/tty/serial/pmac_zilog.c line 500
Quoted 3 lines
drivers/tty/serial/pmac_zilog.c +0
-0goto skip_b; }write_zsreg (uap_b,R0 ,RES_H_IUS );
Regards,
Gabriel
Quoted 6 lines · Gabriel Paubert
On Sat, Apr 28, 2012 at 06:53:49PM -0500, Larry Finger wrote:
Hmm, I'm not a native english speaker, but I have the feeling that it would be more grammatically correct to use "opened" instead of "open".
Of course if the message never triggers, it's less of concern :-)
English is my native language, but that might not help. :)
I would say "the device has not been opened", but "it is not open". More generally, to me "opened" denotes past tense, and "open" is used in the present.
Even with the other bug, the message never triggered as I did not have debugging enabled. Given the relative rarity of PPC-based boxes running Linux, the message may never print.
Thanks for the comment.
Larry
Quoted 7 lines · Larry Finger
Index:
wireless-testing/drivers/tty/serial/pmac_zilog.c
===================================================================
---wireless-testing.orig/drivers/tty/serial/pmac_zilog.c2012-04-28
15:51:38.843723074 -0500
+++wireless-testing/drivers/tty/serial/pmac_zilog.c2012-04-28
18:34:34.053900600 -0500
Patch seems to be wrapped... I'll apply manually this time around but check your mailer settings :-)
Cheers,
Ben.
Quoted 20 lines
drivers/tty/serial/pmac_zilog.c +3
-3@@ -469,7 +469,7 @@ tty =NULL ;if (r3 & (CHAEXT | CHATxIP | CHARxIP)) {if (!ZS_IS_OPEN (uap_a)) { -pmz_debug ("ChanA interrupt while open !\n" ); +pmz_debug ("ChanA interrupt while not open !\n" ); goto skip_a; }write_zsreg (uap_a,R0 ,RES_H_IUS );@@ -493,8 +493,8 @@spin_lock (&uap_b->port.lock); tty =NULL ;if (r3 & (CHBEXT | CHBTxIP | CHBRxIP)) { -if (!ZS_IS_OPEN (uap_a)) { -pmz_debug ("ChanB interrupt while open !\n" ); +if (!ZS_IS_OPEN (uap_b)) { +pmz_debug ("ChanB interrupt while not open !\n" ); goto skip_b; }write_zsreg (uap_b,R0 ,RES_H_IUS );
Quoted 12 lines · Benjamin Herrenschmidt
Quoted 7 lines · Larry Finger
Index:
wireless-testing/drivers/tty/serial/pmac_zilog.c
===================================================================
---wireless-testing.orig/drivers/tty/serial/pmac_zilog.c2012-04-28
15:51:38.843723074 -0500
+++wireless-testing/drivers/tty/serial/pmac_zilog.c2012-04-28
18:34:34.053900600 -0500Patch seems to be wrapped... I'll apply manually this time around but check your mailer settings :-)
Sorry about that. I don't usually send patches that way, and forgot to check for wrapping.
Larry