linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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

  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).