Implement Kexec Hardboot patch

"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>

Vojtech Bocek <vbocek@gmail.com>:
I've ported it to Xperia Z1 and Z Ultra, it is based of a hammerhead
port by Tasssadar, based on a mako/grouper port, which is
based of Asus TF201 patch ported by Jens Andersen
<jens.andersen@gmail.com>

Original Tasssadar info:
Hammerhead is the first device I've ported this patch to which uses
device tree binary instead of atags. It is also rather picky - its
bootloader erases first 128MB of RAM on reboot, so following hacks had
to be applied:
* Copy dtb to location passed in r2 before jumping to kexecd' kernel,
the kernel would just freeze when I left dtb above 128MB of RAM.
* Copy kexecd' kernel to location in the first 128MB before jumping to
it,
the decompressor operates very slowly if the kernel is above the cached
area, copying it lower and decompressing it afterwards is much faster.

Same as my mako/flo patches, the guest kernel does not require any
modifications, kexec-hardboot is equivalent to standard kexec.

To support dtb, following commit was backported from the mainline:
commit 4cabd1d
Author: Matthew Leach <matthew.leach@arm.com>
Date:   Fri Sep 21 18:56:02 2012 +0100

ARM: 7539/1: kexec: scan for dtb magic in segments

This patch allows a dtb to be passed to a new kernel using the kexec
mechinism.

When loading segments from userspace, scan each segment's first four
bytes for the dtb magic. If this is found set the kexec_boot_atags
parameter to the relocate_kernel code to the phyical address of this
segment.

and fixes of this commit:
c564df4
2456f44

ayysir <dresadd09691@gmail.com>:
kexec: use mem_text_write_kernel_word to set reboot_code_buffer args
in order to avoid protection faults (writes to read-only
kernel memory) when CONFIG_STRICT_MEMORY_RWX is enabled.

Signed-off-by: Vojtech Bocek <vbocek@gmail.com>
Fix Kexec hardboot patch

Conflicts:
	arch/arm/mach-msm/board-8974.c
Update kexec memory reservation part
Make things go sirius

Conflicts:
	arch/arm/configs/cm_shinano_sirius_defconfig
Fix compilation errors
Update board-8974 with ifdefs from OnePlus One