x86, reboot: Add EFI and CF9 reboot methods into the default list
authorLi, Aubrey <aubrey.li@linux.intel.com>
Sun, 2 Mar 2014 10:39:02 +0000 (18:39 +0800)
committerH. Peter Anvin <hpa@linux.intel.com>
Wed, 5 Mar 2014 23:27:07 +0000 (15:27 -0800)
commita4f1987e4c5489a3877eaa7451a68d28c5a3f664
tree2b070852d455b9efe3de06a9340009f0c62232fa
parent0414855fdc4a40da05221fc6062cccbc0c30f169
x86, reboot: Add EFI and CF9 reboot methods into the default list

Reboot is the last service linux OS provides to the end user. We are
supposed to make this function more robust than today. This patch adds
all of the known reboot methods into the default attempt list. The
machines requiring reboot=efi or reboot=p or reboot=bios get a chance
to reboot automatically now.

If there is a new reboot method emerged, we are supposed to add it to
the default list as well, instead of adding the endless dmidecode entry.

If one method required is in the default list in this patch but the
machine reboot still hangs, that means some methods ahead of the
required method cause the system hangs, then reboot the machine by
passing reboot= arguments and submit the reboot dmidecode table quirk.

We are supposed to remove the reboot dmidecode table from the kernel,
but to be safe, we keep it. This patch prevents us from adding more.
If you happened to have a machine listed in the reboot dmidecode
table and this patch makes reboot work on your machine, please submit
a patch to remove the quirk.

The default reboot order with this patch is now:

    ACPI > KBD > ACPI > KBD > EFI > CF9_COND > BIOS

Because BIOS and TRIPLE are mutually exclusive (either will either
work or hang the machine) that method is not included.

[ hpa: as with any changes to the reboot order, this patch will have
  to be monitored carefully for regressions. ]

Signed-off-by: Aubrey Li <aubrey.li@intel.com>
Acked-by: Matthew Garrett <mjg59@srcf.ucam.org>
Link: http://lkml.kernel.org/r/53130A46.1010801@linux.intel.com
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
arch/x86/kernel/reboot.c