All of lore.kernel.org
 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 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.