Add support for kexec-hardboot

"Allows hard booting (i.e., with a full hardware reboot) to a kernel
previously loaded in memory by kexec.  This works around the problem of
soft-booted kernel hangs due to improper device shutdown and/or
reinitialization."
More info in /arch/arm/Kconfig.

Original author: Mike Kasick <mike@kasick.org>
These patches are ported from Asus TF201, to which it
was ported by Jens Andersen <jens.andersen@gmail.com>.

Conflicts:
	arch/arm/boot/compressed/misc.c
Make config option to choose hardboot restart mode (normal or recovery)

Conflicts:
	arch/arm/mach-tegra/Kconfig
Kexec-hardboot: Copy atags for guest kernel in the host before jumping

* This removes the need to patch the guest kernel
Backport arch/arm/kernel/atags.c from 3.10 (for kexec-hardboot)

* There is a bug in older kernels, causing kexec-tools binary to
  only read first 1024 bytes from /proc/atags. I guess the bug is
  somewhere in /fs/proc/, since I don't think the callback in atags.c
  does something wrong. It might affect all procfs files using that
  old read callback instead of fops. Doesn't matter though, since it
  was accidentally fixed when 3.10 removed it.

* This has no particular effect on grouper, because the atags are
  organized "just right" (most important tags are near beginning,
  the ones at the end are some useless nvidia-specific tags), but
  it might be very hard to track down on a device where it causes
  problems.

Signed-off-by: Vojtech Bocek <vbocek@gmail.com>
Kexec-hardboot: speed-up atags copying in host kernel

* _now_ I know atags are always at least 32b aligned
kexec-HB support for X3