Asynchronous I/O latency to a solid-state disk greatly increased

between the 2.6.32 and 3.0 kernels. By removing the plug from
do_io_submit(), we observed a 34% improvement in the I/O latency.

Unfortunately, at this level, we don't know if the request is to
a rotating disk or not.
Added Fast Random generator support (frandom)
Dynamic read-ahead support
Lowered Swappiness
Added BLX (Battery Life eXtender) Credits to Ezeekel

Also, fixed 100% battery notification after charger unplugged
Added SIO and V(R) I/O schedulers
OC/UV and VDD sysfs interface
Added 5 new CPU Governors

BRAZILIANWAX
SMARTASSV2
LULZACTIVE
HYPER
INTERACTIVEX
Credits to Christopher83 for optimizations on Lulzactive and Hyper CPU Governors
Optimized SLUB memory allocator
Added dynamic fsync v1.1 (Credits faux123)
Disabled GENTLE FAIR SLEEPERS for better UI performance
New optimized LMK values
tmpfs: fix mempolicy object leaks

This patch fixes several mempolicy leaks in the tmpfs mount logic.
These leaks are slow - on the order of one object leaked per mount
attempt.

Leak 1 (umount doesn't free mpol allocated in mount):
    while true; do
        mount -t tmpfs -o mpol=interleave,size=100M nodev /mnt
        umount /mnt
    done

Leak 2 (errors parsing remount options will leak mpol):
    mount -t tmpfs -o size=100M nodev /mnt
    while true; do
        mount -o remount,mpol=interleave,size=x /mnt 2> /dev/null
    done
    umount /mnt

Leak 3 (multiple mpol per mount leak mpol):
    while true; do
        mount -t tmpfs -o mpol=interleave,mpol=interleave,size=100M nodev /mnt
        umount /mnt
    done

This patch fixes all of the above.  I could have broken the patch into
three pieces but is seemed easier to review as one.

Signed-off-by: Greg Thelen <gthelen@google.com>
modified for Mako kernel from LKML reference

Signed-off-by: faux123 <reioux@gmail.com>
Use glibc for lib/memcopy and lib/string

The glibc version can be in some cases 10 times faster than the kernel version
also, the old perfromance of memcpy and memmove of general version is very inefficient,
using glibc version improves them
Some Makefile updates
input: Phantom Key Presses filtering

Attempt to workaround a well known hardware bug of some Samsung devices.
Pratically, the high activity of the radio hardware, in particular the antenna, could cause interference on Melfas chip, which is located very close to the antenna.
This interference could induce bad interrupts that are seen by the chip as possible HOME, MENU or BACK key presses.
These phantom key presses are happening expecially in 2G mode.

The solution includes a new device module (phantom_kp_filter), which also allow the filtering parameters customization, and various changes to cypress-touchkey and pmic8xxx-keypad modules.

-- Phantom MENU and BACK key presses --

The solution can be divided into two parts:
- Validity check of the interrupt _3_TOUCH_INT checking for a predefined (and customizable) times that the corresponding value is 0, in fact, in the case of interference, the value can be 1, then you can decide whether or not to ignore the key press interrupt
- Validity check of the key pressed event, ignoring the possible events of key down and up on different keys (eg. MENU key down -> BACK key up), or too rapid wrong key presses

The problem and the possible workarounds are described by Electric Bill on this XDA forum thread:
http://forum.xda-developers.com/showthread.php?t=1551580

The code changes are also based on these commits made by CyanogenMod Team:
- https://github.com/CyanogenMod/android_kernel_samsung_aries/commit/4afad77c61c7cb54cce293034cdb07a928f22d20
- https://github.com/CyanogenMod/android_kernel_samsung_aries/commit/cb8fa22cba177709848321e8100ee60ee1684530

-- Phantom HOME key presses --

The solution can be divided into two parts:
- Validity check of the incoming key state, ignoring the key press if the status is not changed
- The key press states are temporarly collected inside a bit array and reported with a small delayed time, if there are too many interrupts, they could be related to radio interference, so the collected key states won't be reported to avoid phantom key presses

-- Module sysfs interface --

The new device module allow to show the number of ignored key press and to customize the filtering parameters by means of a sysfs interface, at the following system path:
/sys/class/misc/phantom_kp_filter

- home_enabled: the enabled status of the phantom HOME key presses filtering (0 = disabled, 1 = enabled)
- home_allowed_irqs: show/edit the allowed max number of incoming interrupts to consider a HOME key press as valid (from 1 to 32)
- home_report_wait: show/edit the wait time in ms before report the collected HOME key presses (from 5 to 25 ms)
- home_ignored_kp: show the ignored possible phantom HOME key presses
- menuback_enabled: show/edit the enabled status of the phantom MENU and BACK key presses filtering (0 = disabled, 1 = enabled)
- menuback_interrupt_checks: show/edit the interrupt checks number to be performed for the incoming MENU and BACK key presses (from 1 to 10)
- menuback_first_err_wait: show/edit the time in ms to wait after the first error on MENU or BACK keys if there are many invalid key errors in rapid sequence (from 50 to 1000 ms)
- menuback_last_err_wait: show/edit the time in ms to wait after the last error on MENU or BACK keys if there are many invalid key errors in rapid sequence (from 50 to 1000 ms)
- menuback_ignored_kp: show the ignored possible phantom MENU and BACK key presses
- version: show the module version
input: Changed the default max allowed irqs value for phantom HOME key presses filtering (from 2 to 4 allowed irqs)