arch: arm: lib: optimize memcpy for cortex-A15

The LDRD/STRD instruction is faster than LDM/STM on Cortex-A15.
Also optimized preload cache size for Cortex-A15.

Added USE_LDRDSTRD_OVER_LDMSTM to turn on LDRD/STRD optimization.
Added ARM_PLD_SIZE, default 32. Should set to 64 for Cortex-A15.

Bug 1185248

Signed-off-by: Chandler Zhang <chazhang@nvidia.com>
Reviewed-by: Krishna Reddy <vdumpa@nvidia.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Chet Kener <Cl3Kener@gmail.com>
turn off slim
msm: memutils: memcpy, memmove, copy_page optimization: Preload farther to take advantage of the memory bus, and assume
64-byte cache lines.  Unroll some pairs of ldm/stm as well, for
unexplainable reasons.

Conflicts:
	arch/arm/configs/m8_defconfig
	arch/arm/lib/Makefile
	arch/arm/mach-msm/Kconfig

Conflicts:
	arch/arm/configs/m7_defconfig
	arch/arm/configs/m7_stockclk_defconfig
O3 optimization
neon compiler directives #2

Conflicts:
	Makefile
compiler optimisation -O3
neon-vfp4 and -O2 level for compiller

Conflicts:
	arch/arm/mvp/commkm/Kbuild
	arch/arm/mvp/mvpkm/Kbuild
	arch/arm/mvp/pvtcpkm/Kbuild
	drivers/gpu/ion/Makefile
	drivers/gpu/ion/msm/Makefile
	drivers/gpu/msm/Makefile
fix incompatible soft and hard gcc options

Conflicts:
	arch/arm/mvp/mvpkm/Kbuild
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>

Vojtech Bocek <vbocek@gmail.com>:
  I've ported it to M7, it is based of my flo port, which is based of
  my grouper port, which is based of Asus TF201 patches ported by
  Jens Andersen <jens.andersen@gmail.com>.

  I've moved atags copying from guest to the host kernel, which means there
  is no need to patch the guest kernel, assuming the --mem-min in kexec call
  is within the first 256MB of System RAM, otherwise it will take a long time
  to load. I've also fixed /proc/atags entry, which would give the kexec-tools
  userspace binary only the first 1024 bytes of atags,
  see arch/arm/kernel/atags.c for more details.

  Other than that, memory-reservation code for the hardboot page and
  some assembler to do the watchdog reset on MSM chip are new for this device.

  M7 also needed bigger BOOT_PARAMS_SIZE, because it has more atags.
  Modified kexec-tools binary is required. See:
  https://lkml.org/lkml/2013/9/27/517
  https://github.com/Tasssadar/kexec-tools/commit/c6844e1ddb13a6b60cfefcb01c3843da97d6174c
  https://github.com/Tasssadar/kexec-tools/commit/210c3b8a4aab69778d93d08b7ff2bfd9c1146cef

Signed-off-by: Vojtech Bocek <vbocek@gmail.com>
Signed-off-by: flar2 <asegaert@gmail.com>
enable kexec_hardboot
add optimax governor

Conflicts:
	drivers/cpufreq/Kconfig
	drivers/cpufreq/Makefile

Conflicts:
	drivers/cpufreq/Makefile
enable optimax
arm:lib: Correct Neon Flags

https://github.com/engstk/hammerhead-4.4.3/commit/adcfac7bfb63e7bb9f3502cb0f2f0b2aff2619a4
KGSL: Add a simple GPU governor for Adreno xxx GPU series

initial coding for a Simple GPU governor based on my own work 2 years ago
from Sensation GB kernel commit: c1ea8f6

Signed-off-by: Paul Reioux <reioux@gmail.com>
Modified for the latest Adreno drivers

Signed-off-by: faux123 <reioux@gmail.com>
Signed-off-by: flar2 <asegaert@gmail.com>
KGSL: make simple govenor a selectable option, co-exist with ondemand

also removed some hardcoded values

Signed-off-by: Paul Reioux <reioux@gmail.com>

Conflicts:

	drivers/gpu/msm/kgsl_pwrscale_trustzone.c

Signed-off-by: faux123 <reioux@gmail.com>
Signed-off-by: flar2 <asegaert@gmail.com>
KGSL: simple governor: expose tunables to sysfs interface via module_param

Signed-off-by: Paul Reioux <reioux@gmail.com>
Signed-off-by: flar2 <asegaert@gmail.com>
KGSL: Simple Governor: fix minor logic issue

Signed-off-by: Paul Reioux <reioux@gmail.com>
Signed-off-by: flar2 <asegaert@gmail.com>
deadline: Allow 0ms deadline latency, increase the read speed

Change a timer compare from after to after-equals, thus allowing
0 timeout and making deadline schedule FIFO.

Signed-off-by: xiaobing tu <xiaobing.tu@intel.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: flar2 <asegaert@gmail.com>
enable simple gpu gov
[LINARO] workqueues: Introduce new flag WQ_POWER_EFFICIENT for power oriented workqueues

Adapted for 3.4 from lsk-v3.10

Workqueues can be performance or power-oriented. Currently, most workqueues are
bound to the CPU they were created on. This gives good performance (due to cache
effects) at the cost of potentially waking up otherwise idle cores (Idle from
scheduler's perspective. Which may or may not be physically idle) just to
process some work. To save power, we can allow the work to be rescheduled on a
core that is already awake.

Workqueues created with the WQ_UNBOUND flag will allow some power savings.
However, we don't change the default behaviour of the system.  To enable
power-saving behaviour, a new config option CONFIG_WQ_POWER_EFFICIENT needs to
be turned on. This option can also be overridden by the
workqueue.power_efficient boot parameter.

tj: Updated config description and comments.  Renamed
    CONFIG_WQ_POWER_EFFICIENT to CONFIG_WQ_POWER_EFFICIENT_DEFAULT.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Amit Kucheria <amit.kucheria@linaro.org>
Signed-off-by: Tejun Heo <tj@kernel.org>
(cherry picked from commit cee22a15052faa817e3ec8985a28154d3fabc7aa)
Signed-off-by: Mark Brown <broonie@linaro.org>
Signed-off-by: Luis Cruz <ljc2491@gmail.com>

Conflicts:
	kernel/workqueue.c

Conflicts:
	kernel/workqueue.c

Conflicts:
	include/linux/workqueue.h
	kernel/workqueue.c

Conflicts:
	include/linux/workqueue.h

Conflicts:
	kernel/workqueue.c

Conflicts:
	include/linux/workqueue.h
	kernel/workqueue.c