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

Conflicts:
	arch/arm/configs/tegra_p1852_android_defconfig

Change-Id: Iddfe35c633db49ab37d067ff1666c2e68d556add
Make config option to choose hardboot restart mode (normal or recovery)

Conflicts:
	arch/arm/mach-tegra/Kconfig

Conflicts:
	arch/arm/configs/tegra_p1852_android_defconfig

Change-Id: I584d4ca25f7b6206c3d90cf56e6631a73a3746e8
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