omap2: 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.

Future enhancements should include,

- #define for how far to preload, possibly defined separately for
  memcpy, copy_*_user
- Tuning for misaligned buffers
- Tuning for memmove
- Tuning for small buffers
- Understanding mechanism behind ldm/stm unroll causing some gains
  in copy_to_user

BASELINE (msm8960pro):
======================================================================
memcpy 1000MB at 5MB       : took 808850 usec, bandwidth 1236.236 MB/s
copy_to_user 1000MB at 5MB : took 810071 usec, bandwidth 1234.234 MB/s
copy_from_user 1000MB at 5M: took 942926 usec, bandwidth 1060.060 MB/s
memmove 1000GB at 5MB      : took 848588 usec, bandwidth 1178.178 MB/s
copy_to_user 1000GB at 4kB : took 847916 usec, bandwidth 1179.179 MB/s
copy_from_user 1000GB at 4k: took 935113 usec, bandwidth 1069.069 MB/s
copy_page 1000GB at 4kB    : took 779459 usec, bandwidth 1282.282 MB/s

THIS PATCH:
======================================================================
memcpy 1000MB at 5MB       : took 346223 usec, bandwidth 2888.888 MB/s
copy_to_user 1000MB at 5MB : took 348084 usec, bandwidth 2872.872 MB/s
copy_from_user 1000MB at 5M: took 348176 usec, bandwidth 2872.872 MB/s
memmove 1000GB at 5MB      : took 348267 usec, bandwidth 2871.871 MB/s
copy_to_user 1000GB at 4kB : took 377018 usec, bandwidth 2652.652 MB/s
copy_from_user 1000GB at 4k: took 371829 usec, bandwidth 2689.689 MB/s
copy_page 1000GB at 4kB    : took 383763 usec, bandwidth 2605.605 MB/s

Change-Id: I843fe77192d61ce35a81e75d76fc09f0a472e98a
Signed-off-by: Chris Fries <C.Fries@motorola.com>

Willi Ye <williye97@gmail.com>:

This is a port to tuna. I didn't notice any big improvements. Needs some
rework.

Signed-off-by: Willi Ye <williye97@gmail.com>

Conflicts:
	arch/arm/mach-omap2/Kconfig
	arch/arm/mach-omap2/Makefile
build with -03
Revert "fs: aio.c: Update to Linux 3.13-rc1"

This reverts commit c9736561dd682feed41a55204914d1b537e25ffc.
Backport AIO from Linux 3.6.x
modify the defconfig and makefile for Hybrids performance setup,including adding the graphite and lto ops,changes to the set kernel ops,removing all kernel logging,and changing the vmalloc size,also build additional tcp algos
block: Reserve only one queue tag for sync IO if only 3 tags are available

In case a device has three tags available we still reserve two of them
for sync IO. That leaves only a single tag for async IO such as
writeback from flusher thread which results in poor performance.

Allow async IO to consume two tags in case queue has three tag availabe
to get a decent async write performance.

This patch improves streaming write performance on a machine with such disk
from ~21 MB/s to ~52 MB/s. Also postmark throughput in presence of
streaming writer improves from 8 to 12 transactions per second so sync
IO doesn't seem to be harmed in presence of heavy async writer.

Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: Dan Trifan <jimsth@gmail.com>
zen from smitty:)
add more zen
FINISHING ZEN
BLOCK: ZEN I/O Sched Tuning.
block: zen: fix a bug in add_request, should use rq_is_sync
Add FIFO scheduler

Does not perform any merging or reordering -- pure FCFS.

Signed-off-by: Aaron Carroll <aaronc@gelato.unsw.edu.au>

Conflicts:
	block/Makefile

Conflicts:
	block/Makefile
Add FIFO scheduler default config

Conflicts:
	block/Kconfig.iosched
Fix FIFO compiling
block: sysfs: allow non superusers to change i/o scheduler
block: recursive merge requests
In a workload, thread 1 accesses a, a+2, ..., thread 2 accesses a+1, a+3,....
When the requests are flushed to queue, a and a+1 are merged to (a, a+1), a+2
and a+3 too to (a+2, a+3), but (a, a+1) and (a+2, a+3) aren't merged.

If we do recursive merge for such interleave access, some workloads throughput
get improvement. A recent worload I'm checking on is swap, below change
boostes the throughput around 5% ~ 10%.

Signed-off-by: Shaohua Li <shli@fusionio.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Francisco Franco <franciscofranco.1990@gmail.com>
row from 3.1- thx cod2nxp
Lots of updates to ROW scheduler and associated

Conflicts:
	include/linux/elevator.h
	include/linux/page-flags.h
	mm/page_alloc.c

Conflicts:
	mm/page_alloc.c
finishing up the row updates
 block: Add TripnDroid IO

* Thanks TripNDroid Mobile Engineering

Signed-off-by: Chester Kener <Cl3Kener@gmail.com>

Conflicts:
	block/Kconfig.iosched