All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jiri Slaby <jirislaby@gmail.com>
To: Eric Fox <efox@einsteinindustries.com>
Cc: <linux-kernel@vger.kernel.org>
Subject: [PATCH 1/1] Char: isicom, fix card locking
Date: Wed,  6 Dec 2006 15:23:08 +0100 (CET)	[thread overview]
Message-ID: <762111721879732035@fi.muni.cz> (raw)
In-Reply-To: <1165363148-XGI7ZY4B0EPYUYH@www.vabmail.com>

Eric Fox wrote:
> Here is what i was able to capture from a terminal logged in to the machine
> with the ISI board:
> 
> strace setserial -g /dev/ttyM0
> execve("/bin/setserial", ["setserial", "-g", "/dev/ttyM0"], [/* 17 vars
> */]) = 0
> uname({sys="Linux", node="dialin-0.vab.com", ...}) = 0
> brk(0)                                  = 0x804d000
> access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or
> directory)
> open("/etc/ld.so.cache", O_RDONLY)      = 3
> fstat64(3, {st_mode=S_IFREG|0644, st_size=19713, ...}) = 0
> old_mmap(NULL, 19713, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f05000
> close(3)                                = 0
> open("/lib/tls/libc.so.6", O_RDONLY)    = 3
> read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\320\36"..., 512) =
> 512
> fstat64(3, {st_mode=S_IFREG|0755, st_size=1454802, ...}) = 0
> old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
> 0) = 0xb7f04000
> old_mmap(0x39d000, 1223900, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE,
> 3, 0) = 0x39d000
> old_mmap(0x4c2000, 16384, PROT_READ|PROT_WRITE,
> MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x124000) = 0x4c2000
> old_mmap(0x4c6000, 7388, PROT_READ|PROT_WRITE,
> MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x4c6000
> close(3)                                = 0
> old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
> 0) = 0xb7f03000
> mprotect(0x4c2000, 4096, PROT_READ)     = 0
> mprotect(0x399000, 4096, PROT_READ)     = 0
> set_thread_area({entry_number:-1 -> 6, base_addr:0xb7f036c0, limit:1048575,
> seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1,
> seg_not_present:0, useable:1}) = 0
> munmap(0xb7f05000, 19713)               = 0
> open("/dev/ttyM0", O_RDWR|O_NONBLOCK
> 
> 
> And, here is what I captured using minicom from another machine connected
> to the serial port console of the machine with the ISI board (minicom.cap):
> 
> strace setserial -g /dev/ttyM0
> execve("/bin/setserial", ["setserial", "-g", "/dev/ttyM0"], [/* 17 vars
> */]) = 0
> uname({sys="Linux", node="dialin-0.vab.com", ...BUG: soft lockup detected
> on CPU#1!
>  [<c01041a3>] dump_trace+0x6b/0x1ab
>  [<c010436a>] show_trace_log_lvl+0x17/0x2b
>  [<c037ddb1>] __func__.5+0x84c/0x497af
> DWARF2 unwinder stuck at __func__.5+0x84c/0x497af
> 
> Leftover inexact backtrace:
> 
>  [<c010438d>] show_trace+0xf/0x11
>  [<c010446c>] dump_stack+0x13/0x15
>  [<c0138dca>] softlockup_tick+0xa1/0xaf
>  [<c0124bc2>] update_process_times+0x39/0x5c
>  [<c0111219>] smp_apic_timer_interrupt+0x8a/0xa2
>  [<c0103f0b>] apic_timer_interrupt+0x1f/0x24
>  [<c0365437>] _spin_lock_irqsave+0x16/0x27
>  [<f882407e>] lock_card_at_interrupt+0x17/0x47 [isicom]
>  [<f88241ca>] isicom_tx+0x64/0xe9 [isicom]
>  [<f8824166>] isicom_tx+0x0/0xe9 [isicom]
>  [<c0124d00>] run_timer_softirq+0x112/0x15c
>  [<c0120bd1>] __do_softirq+0x5e/0xba
>  [<c0120c5b>] do_softirq+0x2e/0x32
>  [<c011121e>] smp_apic_timer_interrupt+0x8f/0xa2
>  [<c0103f0b>] apic_timer_interrupt+0x1f/0x24
>  [<c0101973>] mwait_idle_with_hints+0x34/0x38
>  [<c0101983>] mwait_idle+0xc/0x1b
>  [<c010183f>] cpu_idle+0x66/0x7b
>  =======================
> BUG: soft lockup detected on CPU#1!
>  [<c01041a3>] dump_trace+0x6b/0x1ab
>  [<c010436a>] show_trace_log_lvl+0x17/0x2b
>  [<c037ddb1>] __func__.5+0x84c/0x497af
> DWARF2 unwinder stuck at __func__.5+0x84c/0x497af
> 
> 
> Hope some of this will help.

Certainly, it did, could you test the attached patch?

--
isicom, fix card locking

Somebody omitted spin_unlock in interrupt handler and hence card causes
dead-lock. Add two unlocks, before returning from handler, if the lock was
acquired before.
Thanks Eric Fox <efox@einsteinindustries.com> for pointing this out.

Signed-off-by: Jiri Slaby <jirislaby@gmail.com>

---
commit 09a4c63d32367a615fc42a2e8455e5fd37f9c3ed
tree 2c2a050cbc551021d09a581d5cc16fd6a7934c69
parent e62438630ca37539c8cc1553710bbfaa3cf960a7
author Jiri Slaby <jirislaby@gmail.com> Wed, 06 Dec 2006 15:13:18 +0100
committer Jiri Slaby <jirislaby@gmail.com> Wed, 06 Dec 2006 15:18:43 +0100

 drivers/char/isicom.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/drivers/char/isicom.c b/drivers/char/isicom.c
index 58c955e..c55b359 100644
--- a/drivers/char/isicom.c
+++ b/drivers/char/isicom.c
@@ -592,6 +592,7 @@ static irqreturn_t isicom_interrupt(int 
 			ClearInterrupt(base);
 		else
 			outw(0x0000, base+0x04); /* enable interrupts */
+		spin_unlock(&card->card_lock);
 		return IRQ_HANDLED;
 	}
 
@@ -712,6 +713,7 @@ static irqreturn_t isicom_interrupt(int 
 		ClearInterrupt(base);
 	else
 		outw(0x0000, base+0x04); /* enable interrupts */
+	spin_unlock(&card->card_lock);
 
 	return IRQ_HANDLED;
 }

       reply	other threads:[~2006-12-06 14:23 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1165363148-XGI7ZY4B0EPYUYH@www.vabmail.com>
2006-12-06 14:23 ` Jiri Slaby [this message]
     [not found] <1165451982-AXRLGS2HCEVCUY1@www.vabmail.com>
2006-12-07  1:25 ` [PATCH 1/1] Char: isicom, fix card locking Jiri Slaby
2006-12-07 16:49   ` Jiri Slaby

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=762111721879732035@fi.muni.cz \
    --to=jirislaby@gmail.com \
    --cc=efox@einsteinindustries.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.