x86: Implement reset_cpu() correctly for modern CPUs
authorSimon Glass <sjg@chromium.org>
Wed, 29 Apr 2015 02:11:29 +0000 (20:11 -0600)
committerSimon Glass <sjg@chromium.org>
Thu, 30 Apr 2015 03:02:31 +0000 (21:02 -0600)
commitff6a8f3c06eab0f0afb65d5e5925eee9860f0add
tree365c5606944eb9a1c9ae4bfd8e1f79e138257241
parent87f4cd3a308b0bcffd8f9b5e7121fdb086c080f5
x86: Implement reset_cpu() correctly for modern CPUs

The existing code is pretty ancient and is unreliable on modern hardware.
Generally it will hang.

We can use port 0xcf9 to initiate reset on more modern hardware (say in the
last 10 years). Update the reset_cpu() function to do this, and add a new
'full reset' function to perform a full power cycle.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
arch/x86/cpu/cpu.c
arch/x86/include/asm/processor.h