All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Mr. Berkley Shands" <bshands@exegy.com>
To: linux-kernel@vger.kernel.org
Cc: Dave Lloyd <dlloyd@exegy.com>
Subject: 2.6.17 x86_64 regression - reboot fails due to deadlock
Date: Thu, 06 Jul 2006 11:18:10 -0500	[thread overview]
Message-ID: <44AD37C2.50601@exegy.com> (raw)

With a SuperMicro H8DC8 (nvidia chipset), Dual Opteron 285's, 16GB, 
Centos 4.3 -

Under 2.6.16 both the tyan 2895 and the supermicro H8DC8 both will 
reboot corectly,
in kernel/sys.c machine_restart() gets called. But with the changes to 
sys.c under 2.6.17,
a new path is introduced, calling void kernel_restart_prepare(char *cmd)
which calls blocking_notifier_call_chain(&reboot_notifier_list, 
SYS_RESTART, cmd); (line 588)
Which looks at the first element of the notifier list, and blocks 
forever. But ONLY on the supermicro.
The tyan, a very similar motherboard does not deadlock. It returns and 
still calls machine_restart().
So neither reboot nor "shutdown -fh now" actually get to the bios calls.

on the supermicro, (linux-2.6.17/kernel/sys.c)

static int __kprobes notifier_call_chain(struct notifier_block **nl,
                unsigned long val, void *v)
{
        int ret = NOTIFY_DONE;
        struct notifier_block *nb;

        nb = rcu_dereference(*nl);
        while (nb) {
                ret = nb->notifier_call(nb, val, v);         /* this is 
the deadlock for the first entry */
                if ((ret & NOTIFY_STOP_MASK) == NOTIFY_STOP_MASK)
                        break;
                nb = rcu_dereference(nb->next);
        }
        return ret;
}

I see that 2.6.18 reworks this code further.

If I want to hurt myself really, really badly, disabling the call to 
blocking_notifier_call_chain(&reboot_notifier_list,...
restores the reboot/power off functions.

In kdb, the system sits idle awaiting something to schedule, but nothing 
will schedule since there is
a deadlock on the supermicro. Any clues as to how to find which notifier 
is deadlocked?

berkley





             reply	other threads:[~2006-07-06 16:17 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-07-06 16:18 Mr. Berkley Shands [this message]
2006-07-06 16:23 ` 2.6.17 x86_64 regression - reboot fails due to deadlock Arjan van de Ven
2006-07-07  0:24 ` Andrew Morton

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=44AD37C2.50601@exegy.com \
    --to=bshands@exegy.com \
    --cc=dlloyd@exegy.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.