Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 16 Jul 2002 14:47:57 -0400 (EDT)
From:      Andrew Gallatin <gallatin@cs.duke.edu>
To:        John Baldwin <jhb@FreeBSD.org>
Cc:        current@FreeBSD.org, Andrew Kolchoogin <andrew@snark.rinet.ru>
Subject:   Re: VOP_GETATTR panic on Alpha
Message-ID:  <15668.27229.270084.969951@grasshopper.cs.duke.edu>
In-Reply-To: <XFMail.20020716142622.jhb@FreeBSD.org>
References:  <15668.23528.719956.574605@grasshopper.cs.duke.edu> <XFMail.20020716142622.jhb@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help

John Baldwin writes:
 > > 
 > > We need to somehow let only interrupt threads and the panic'ed process
 > > run after a panic.  I have no idea how to do this in a clean,
 > > low-impact way.
 > 
 > It's probably preemption.  However, the problem may be that you can't
 > switch to the ithread if you just turn preemption on for panics because
 > the ithread may already be on the run queue, thus why your earlier patch
 > may not have worked.  Try to see if it works ok if you turn on preemption
 > fully by making the second arg to ithread_schedule() be !cold.  FWIW, I
 > only have problems with preemption on alphas if I use SMP.

I think its more than this.  I tried unconditionally enabling
premption, and I see no improvement.  After a panic, it "wedges", and
I see this :

db> c

syncing disks... 
done
Uptime: 4m26s

[halt sent]
Stopped at      siointr1+0x198: br      zero,siointr1+0x330
<zero=0x0>
db> tr
siointr1() at siointr1+0x198
siointr() at siointr+0x40
isa_handle_fast_intr() at isa_handle_fast_intr+0x24
alpha_dispatch_intr() at alpha_dispatch_intr+0xd0
interrupt() at interrupt+0x110
XentInt() at XentInt+0x28
--- interrupt (from ipl 0) ---
critical_exit() at critical_exit+0x20
_mtx_unlock_spin_flags() at _mtx_unlock_spin_flags+0xc4
msleep() at msleep+0x2b0
buf_daemon() at buf_daemon+0x1f4
fork_exit() at fork_exit+0xe0
exception_return() at exception_return
--- root of call graph ---


So its still stuck in msleep.   How is it supposed to get back to
the panic'ed thread if a system thread wakes up and is not allowed to
go back to sleep???

Drew

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?15668.27229.270084.969951>