namespace: Restrict slave mountspace so Dalvik apps can mount system-wide volumes (Variant 2)

--> version without remounting on /mnt/shell/emulated !!!

Android 4.2 implements multi-user storage using per-process mount
namespaces.  Everything under "/" (the entire filesystem hierarchy) is
marked as a recursive-slave mountspace for all zygote instances.  This is
done so that user-storage sandbox mounts under /storage/emulated are hidden
from other apps and users.

Unfortunately this means that any Dalvik app (actually, any program whose
clone/fork ancestry includes a Dalvik zygote, which is everything except
services spawned directly from init) cannot mount system-wide volumes.
Thus, apps like CifsManager are effectively broken in Android 4.2, since
its cifs mounts are only visible to the CifsManager app itself.  All other
apps see empty mountpoints instead of the mounted volume.  Furthermore,
Linux provides no provision for a process to "escape" a recursive-slave
mountspace in versions prior to Linux 3.8 (setns syscall).

Here, we restrict rootfs-slave calls to /storage (and, due to a possible
kernel bug, /mnt/shell/emulated) so that Dalvik apps can mount system-wide
volumes elsewhere (with appropriate permission, as in earlier versions of
Android), while retaining full multi-user storage compatibility.  It is
made available as a kernel-based workaround for instances where libdvm can
not be modified.

This change requires that a tmpfs volume is mounted as /storage in init.rc.
If this volume is unavailable, then we falls back to the previous behavior
of marking the entire filesystem hierarchy as slave.

*** Do not commit to CyanogenMod Project kernels, as a similar workaround
    for this problem is patched in Zygote/Dalvik/libdvm instead.  ***
Block : Add Zen Scheduler
Enable and set default to ZEN
mmc/core: disable crc to improve performance
kexec: Implement 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>

Ported from https://gist.github.com/Tasssadar/7833796

Conflicts:
	arch/arm/mach-msm/oppo/board-8974-oppo.c
Defconfig : enable kexec patch
msm8974pro: CPU overclocking to 2.88 GHz

credits for original implementation to anarkia1976
Defconfig : Enable frequency min/max settings
qpnp-charger: Charge level interface

Conflicts:
	arch/arm/mach-msm/Makefile
Activate charge level interface
clock-krait-8974: Expose PVS level via sysfs
boeffla_defconfig: Activate expose pvs level via sysfs
needed by kexec
msm8974pro: Increase cpu voltags for OC frequencies by 25 mV
fs: update cifs to kernel version 3.4.103