Date: Tue, 31 Jul 2012 21:51:19 +0100 From: Attilio Rao <attilio@freebsd.org> To: John Baldwin <jhb@freebsd.org> Cc: freebsd-stable@freebsd.org Subject: Re: [stable 9] panic on reboot: ipmi_wd_event() Message-ID: <CAJ-FndC3pyfJNJBZMZEW9WGs7yA=xeAD2vMyuEeJjELcLOVbOA@mail.gmail.com> In-Reply-To: <201207311634.24169.jhb@freebsd.org> References: <1342742294.2656.24.camel@powernoodle.corp.yahoo.com> <201207311634.24169.jhb@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On 7/31/12, John Baldwin <jhb@freebsd.org> wrote: > On Thursday, July 19, 2012 7:58:14 pm Sean Bruno wrote: >> Working on the Dell R420 today, got most of it working, even the >> broadcom ethernet cards! However, I get the following when I reboot the >> system: >> >> Syncing disks, vnodes remaining...4 Sleeping thread (tid 100107, pid 9) >> owns a non-sleepable lock >> KDB: stack backtrace of thread 100107: >> sched_switch() at sched_switch+0x19f >> mi_switch() at mi_switch+0x208 >> sleepq_switch() at sleepq_switch+0xfc >> sleepq_wait() at sleepq_wait+0x4d >> _sleep() at _sleep+0x3f6 >> ipmi_submit_driver_request() at ipmi_submit_driver_request+0x97 >> ipmi_set_watchdog() at ipmi_set_watchdog+0xb1 >> ipmi_wd_event() at ipmi_wd_event+0x8f >> kern_do_pat() at kern_do_pat+0x10f >> sched_sync() at sched_sync+0x1ea >> fork_exit() at fork_exit+0x135 >> fork_trampoline() at fork_trampoline+0xe > > Hmmm, the watchdog pat should probably happen without holding locks if > possible. This is related to the IPMI watchdog being special and wanting > to schedule a thread to work. The watchdog pat without the locks is not easy to do because we register the watchdog callbacks in eventhandlers, which are indeed locked (and you may also end up racing against watchdog detach, if you don't use any lock at all). There is a similar issue when you enter DDB o coredump, for example but this is someway collateral due to the "after-panic" nature of the situation. We should seriously looking into requirements for watchdog patting and possibly DDB entering situations, outline correct semantics to follow and refactor code to follow them. Attilio -- Peace can only be achieved by understanding - A. Einstein
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-FndC3pyfJNJBZMZEW9WGs7yA=xeAD2vMyuEeJjELcLOVbOA>