From: Ingo Molnar <mingo@kernel.org>
To: hpa@zytor.com, linux-kernel@vger.kernel.org,
torvalds@linux-foundation.org, mjg59@srcf.ucam.org,
aubrey.li@linux.intel.com, rostedt@goodmis.org,
tglx@linutronix.de, Borislav Petkov <bp@alien8.de>
Cc: linux-tip-commits@vger.kernel.org
Subject: Re: [tip:x86/urgent] [PATCH] x86: Try the BIOS reboot method before the PCI reboot method
Date: Mon, 14 Apr 2014 13:27:14 +0200 [thread overview]
Message-ID: <20140414112714.GC4050@gmail.com> (raw)
In-Reply-To: <tip-f042310bf8a846bcf21012ffee78d9eb562a7fa4@git.kernel.org>
* tip-bot for Ingo Molnar <tipbot@zytor.com> wrote:
> Commit-ID: f042310bf8a846bcf21012ffee78d9eb562a7fa4
> Gitweb: http://git.kernel.org/tip/f042310bf8a846bcf21012ffee78d9eb562a7fa4
> Author: Ingo Molnar <mingo@kernel.org>
> AuthorDate: Fri, 4 Apr 2014 08:41:26 +0200
> Committer: Ingo Molnar <mingo@kernel.org>
> CommitDate: Mon, 14 Apr 2014 13:13:30 +0200
>
> [PATCH] x86: Try the BIOS reboot method before the PCI reboot method
>
> Steve reported a reboot hang and bisected it back to this commit:
>
> a4f1987e4c54 x86, reboot: Add EFI and CF9 reboot methods into the default list
>
> He heroically tested all reboot methods and found the following:
>
> reboot=t # triple fault ok
> reboot=k # keyboard ctrl FAIL
> reboot=b # BIOS ok
> reboot=a # ACPI FAIL
> reboot=e # EFI FAIL [system has no EFI]
> reboot=p # PCI 0xcf9 FAIL
>
> And I think it's pretty obvious that we should only try 0xcf9 as a
> last resort - if at all.
>
> The other observation is that (on this box) we should never try
> the PCI reboot method, but close with either the 'triple fault'
> or the 'BIOS' (terminal!) reboot methods.
>
> Thirdly, CF9_COND is a total misnomer - it should be something like
> CF9_SAFE or CF9_CAREFUL, and 'CF9' should be 'CF9_FORCE' ...
>
> So this patch fixes the worst problems:
>
> - it orders the actual reboot logic to follow the reboot ordering
> pattern - it was in a pretty random order before for no good
> reason.
>
> - it fixes the CF9 misnomers and uses BOOT_CF9_FORCE and
> BOOT_CF9_SAFE flags to make the code more obvious.
>
> - it tries the BIOS reboot method before the PCI reboot method.
> (Since 'BIOS' is a terminal reboot method resulting in a hang
> if it does not work, this is essentially equivalent to removing
> the PCI reboot method from the default reboot chain.)
>
> - just for the miraculous possibility of terminal (resulting
> in hang) reboot methods of triple fault or BIOS returning
> without having done their job, there's an ordering between
> them as well.
>
> Reported-and-bisected-and-tested-by: Steven Rostedt <rostedt@goodmis.org>
> Cc: Li Aubrey <aubrey.li@linux.intel.com>
> Cc: Linus Torvalds <torvalds@linux-foundation.org>
> Cc: Matthew Garrett <mjg59@srcf.ucam.org>
> Link: http://lkml.kernel.org/r/20140404064120.GB11877@gmail.com
> Signed-off-by: Ingo Molnar <mingo@kernel.org>
So I rebased the patch Steve tested as-is and only fixed the patch
description and some comments in the code, preserving Steve's testing
status, and propagated it into x86/urgent.
I've added this description that tries to describe the new/old logic:
> + * To the best of our knowledge Windows compatible x86 hardware expects
> + * the following on reboot:
> *
> * 1) If the FADT has the ACPI reboot register flag set, try it
> * 2) If still alive, write to the keyboard controller
> * 3) If still alive, write to the ACPI reboot register again
> * 4) If still alive, write to the keyboard controller again
> * 5) If still alive, call the EFI runtime service to reboot
> + * 6) If no EFI runtime service, call the BIOS to do a reboot
> *
> + * We default to following the same pattern. We also have
> + * two other reboot methods: 'triple fault' and 'PCI', which
> + * can be triggered via the reboot= kernel boot option or
> + * via quirks.
> + *
> + * This means that this function can never return, it can misbehave
> + * by not rebooting properly and hanging.
If this is inaccurate (or undesirable, or fails to match the fine
code) then please object.
Thanks,
Ingo
next prev parent reply other threads:[~2014-04-14 11:27 UTC|newest]
Thread overview: 72+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-03 6:14 [BUG] x86: reboot doesn't reboot Steven Rostedt
[not found] ` <070BEF4AC20468458C22969097656CD91163106C@shsmsx102.ccr.corp.intel.com>
2014-04-03 6:30 ` FW: " Li, Aubrey
2014-04-03 12:09 ` Steven Rostedt
2014-04-03 13:41 ` Steven Rostedt
2014-04-03 13:45 ` Matthew Garrett
2014-04-03 14:10 ` H. Peter Anvin
2014-04-03 14:47 ` Steven Rostedt
2014-04-03 14:50 ` Matthew Garrett
2014-04-03 15:14 ` Steven Rostedt
2014-04-03 15:17 ` Steven Rostedt
2014-04-03 15:20 ` H. Peter Anvin
2014-04-03 15:21 ` H. Peter Anvin
2014-04-03 15:39 ` Steven Rostedt
2014-04-03 15:58 ` H. Peter Anvin
2014-04-03 16:13 ` Steven Rostedt
2014-04-03 23:23 ` Li, Aubrey
2014-04-03 23:40 ` Steven Rostedt
2014-04-03 23:52 ` Li, Aubrey
2014-04-04 0:12 ` H. Peter Anvin
2014-04-04 1:27 ` Li, Aubrey
2014-04-04 1:40 ` H. Peter Anvin
2014-04-04 6:13 ` Ingo Molnar
2014-04-04 12:34 ` H. Peter Anvin
2014-04-04 15:12 ` Matthew Garrett
2014-04-04 15:13 ` H. Peter Anvin
2014-04-04 15:36 ` Matthew Garrett
2014-04-04 15:39 ` H. Peter Anvin
2014-04-04 15:46 ` Matthew Garrett
2014-04-04 16:01 ` Steven Rostedt
2014-04-04 17:34 ` Ingo Molnar
2014-04-04 17:37 ` H. Peter Anvin
2014-04-04 17:44 ` Ingo Molnar
2014-04-04 18:00 ` Matthew Garrett
2014-04-04 15:38 ` Linus Torvalds
2014-04-04 15:45 ` Matthew Garrett
2014-04-04 15:54 ` Tobias Klausmann
2014-04-04 16:09 ` Linus Torvalds
2014-04-04 16:21 ` Matthew Garrett
2014-04-04 18:19 ` Linus Torvalds
2014-04-28 6:02 ` Yuhong Bao
2014-04-04 16:31 ` H. Peter Anvin
[not found] ` <cbb97256-9323-4d67-8523-061972e07ecc@email.android.com>
2014-04-04 17:01 ` H. Peter Anvin
2014-04-04 17:40 ` Ingo Molnar
2014-04-04 18:26 ` Linus Torvalds
2014-04-04 2:16 ` Steven Rostedt
2014-04-04 2:43 ` Li, Aubrey
2014-04-03 15:35 ` Steven Rostedt
2014-04-04 6:41 ` [PATCH] x86: Try the BIOS reboot method before the PCI reboot method Ingo Molnar
2014-04-04 7:53 ` [PATCH] x86: Don't do the BIOS and PCI 0xCF9 reboot methods by default Ingo Molnar
2014-04-04 7:54 ` [tip:x86/reboot] [PATCH] x86: Try the BIOS reboot method before the PCI reboot method tip-bot for Ingo Molnar
2014-04-04 8:00 ` Ingo Molnar
2014-04-04 12:37 ` H. Peter Anvin
2014-04-04 13:30 ` Steven Rostedt
2014-04-04 13:38 ` Li, Aubrey
2014-04-04 15:09 ` Adam Williamson
2014-04-04 15:13 ` Matthew Garrett
2014-04-04 15:28 ` H. Peter Anvin
2014-04-06 17:40 ` One Thousand Gnomes
2014-04-06 18:40 ` H. Peter Anvin
2014-04-07 8:00 ` Li, Aubrey
2014-04-07 21:03 ` H. Peter Anvin
2014-04-07 22:04 ` Adam Williamson
2014-04-07 22:09 ` H. Peter Anvin
2014-04-07 23:12 ` Adam Williamson
2014-04-09 20:50 ` H. Peter Anvin
2014-04-04 17:48 ` Ingo Molnar
2014-04-04 19:12 ` Linus Torvalds
2014-04-07 15:42 ` Steven Rostedt
2014-04-14 11:22 ` [tip:x86/urgent] " tip-bot for Ingo Molnar
2014-04-14 11:27 ` Ingo Molnar [this message]
2014-04-14 16:04 ` Steven Rostedt
2014-04-16 7:40 ` [tip:x86/urgent] x86: Remove the PCI reboot method from the default chain tip-bot for Ingo Molnar
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=20140414112714.GC4050@gmail.com \
--to=mingo@kernel.org \
--cc=aubrey.li@linux.intel.com \
--cc=bp@alien8.de \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=mjg59@srcf.ucam.org \
--cc=rostedt@goodmis.org \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).