Skip to contentSkip to conversation

tty/serial/pmac_zilog: Fix "nobody cared" IRQ message

PATCH In review Larry Finger 3 participants 5 messages Apr 28, 2012 – Apr 30, 2012

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

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
Index: wireless-testing/drivers/tty/serial/pmac_zilog.c
===================================================================
@@ -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);
#1 lore raw
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 #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
---

Index: wireless-testing/drivers/tty/serial/pmac_zilog.c
===================================================================
--- wireless-testing.orig/drivers/tty/serial/pmac_zilog.c 2012-04-28
15:51:38.843723074 -0500
+++ wireless-testing/drivers/tty/serial/pmac_zilog.c 2012-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 -2
 			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");

Ditto.

drivers/tty/serial/pmac_zilog.c line 500

Quoted 3 lines
drivers/tty/serial/pmac_zilog.c +0 -0
 			goto skip_b;
 		}
 		write_zsreg(uap_b, R0, RES_H_IUS);

Regards,
Gabriel

#2 lore raw
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

#3 lore raw
In reply to Larry Finger
Quoted 7 lines · Larry Finger

Index: wireless-testing/drivers/tty/serial/pmac_zilog.c
===================================================================
--- wireless-testing.orig/drivers/tty/serial/pmac_zilog.c 2012-04-28
15:51:38.843723074 -0500
+++ wireless-testing/drivers/tty/serial/pmac_zilog.c 2012-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);
#4 lore raw
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.c 2012-04-28
15:51:38.843723074 -0500
+++ wireless-testing/drivers/tty/serial/pmac_zilog.c 2012-04-28
18:34:34.053900600 -0500

Patch 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