uhid backport
abb-codec: Squashed commit of all ABBamp audio changes

This squashed commit consists of the following commits from cocafe:

abb-codec: ABBamp audio v2.0b
Audio control module for ST-Ericsson AB850x codec

Credit:
Aditya Patange (Adi_Pat@xda)

abb-codec: ABBamp audio v2.1b
ShortCir configuration
Enable HsOscEn
Earpiece Digital Gain
ClassD HighPass Gain
ClassD White Gain

abb-codec: ABBamp audio v2.3b
Add mic2(phone,not HSmic) gain.
Optimize volume tables

Next:
Might add ANC stuff
And HSmic gain

abb-codec: ABBamp audio 2.4
Enable HsPullDown
Disable HsGainFade
Disable HsShortcir

Simple sysfs entry inputs: (enable/disable -> on/off)

abb-codec: optimize anagain3 store
Signed-off-by: cocafe <cocafehj@gmail.com>

abb-codec: Format messages style
I like to make everything neat.

Signed-off-by: cocafe <cocafehj@gmail.com>

abb-codec: Fix typo
Signed-off-by: cocafe <cocafehj@gmail.com>

abb-codec: Adjust MIC booster level +15dB -> +6dB
Too noisy with +15dB.

Signed-off-by: cocafe <cocafehj@gmail.com>

abb-codec: ABBamp 2.4.5
Normally, we use "mute all sound" in system settings to disable all sound.

But the earpiece is also disabled, when a call comes, it will take us several seconds to enable sound in settings.

So I add a interface to disable speaker ONLY.

I think it's for me at least.

What's more, this update edits some messages and fixed some bugs.

Check the previous commits.

Signed-off-by: cocafe <cocafehj@gmail.com>

abb-codec: ABBamp 2.4.6
Fixed code style
Restores HS controls after Mic1 PM down

Signed-off-by: cocafe <cocafehj@gmail.com>
ABBamp: Updates from cocore

Courtesy @cocafe
abb-code/ABBamp: Optimize sysfs interfaces for high level API

As Rox required.

Signed-off-by: cocafe <cocafehj@gmail.com>
snd_usb: Fix sysfs conflicts

<4>[    1.265808] WARNING: at fs/sysfs/dir.c:455 sysfs_add_one+0x90/0xb8()
<4>[    1.265808] sysfs: cannot create duplicate filename '/devices/virtual/switch/usb_audio'
<4>[    1.265808] Modules linked in:
<4>[    1.265869] [<c08e70dc>] (unwind_backtrace+0x0/0x138) from [<c0911e88>] (warn_slowpath_common+0x4c/0x64)
<4>[    1.265869] [<c0911e88>] (warn_slowpath_common+0x4c/0x64) from [<c0911f34>] (warn_slowpath_fmt+0x30/0x40)
<4>[    1.265899] [<c0911f34>] (warn_slowpath_fmt+0x30/0x40) from [<c0a0be5c>] (sysfs_add_one+0x90/0xb8)
<4>[    1.265899] [<c0a0be5c>] (sysfs_add_one+0x90/0xb8) from [<c0a0bee4>] (create_dir+0x60/0xbc)
<4>[    1.265930] [<c0a0bee4>] (create_dir+0x60/0xbc) from [<c0a0bff0>] (sysfs_create_dir+0x84/0xf0)
<4>[    1.265930] [<c0a0bff0>] (sysfs_create_dir+0x84/0xf0) from [<c0ac2ff0>] (kobject_add_internal+0xb0/0x218)
<4>[    1.265960] [<c0ac2ff0>] (kobject_add_internal+0xb0/0x218) from [<c0ac3470>] (kobject_add+0x4c/0x94)
<4>[    1.265991] [<c0ac3470>] (kobject_add+0x4c/0x94) from [<c0b5af5c>] (device_add+0x94/0x54c)
<4>[    1.265991] [<c0b5af5c>] (device_add+0x94/0x54c) from [<c0b5b4d0>] (device_create_vargs+0xa4/0xd4)
<4>[    1.266021] [<c0b5b4d0>] (device_create_vargs+0xa4/0xd4) from [<c0b5b520>] (device_create+0x20/0x28)
<4>[    1.266021] [<c0b5b520>] (device_create+0x20/0x28) from [<c0c63108>] (switch_dev_register+0x5c/0xfc)
<4>[    1.266052] [<c0c63108>] (switch_dev_register+0x5c/0xfc) from [<c002b770>] (snd_usb_audio_init+0x3c/0x64)
<4>[    1.266082] [<c002b770>] (snd_usb_audio_init+0x3c/0x64) from [<c08da6b4>] (do_one_initcall+0x38/0x178)
<4>[    1.266082] [<c08da6b4>] (do_one_initcall+0x38/0x178) from [<c00089ac>] (kernel_init+0x90/0x13c)
<4>[    1.266113] [<c00089ac>] (kernel_init+0x90/0x13c) from [<c08e1990>] (kernel_thread_exit+0x0/0x8)
<4>[    1.266143] Board Information: UX500: 0E, cpu U8500 ES178
<4>[    1.266174] ---[ end trace 189fe1a0ae07c69e ]---
<3>[    1.266174] kobject_add_internal failed for usb_audio with -EEXIST, don't try to register things with the same name in the same directory.
<4>[    1.266204] [<c08e70dc>] (unwind_backtrace+0x0/0x138) from [<c0ac3088>] (kobject_add_internal+0x148/0x218)
<4>[    1.266204] [<c0ac3088>] (kobject_add_internal+0x148/0x218) from [<c0ac3470>] (kobject_add+0x4c/0x94)
<4>[    1.266235] [<c0ac3470>] (kobject_add+0x4c/0x94) from [<c0b5af5c>] (device_add+0x94/0x54c)
<4>[    1.266235] [<c0b5af5c>] (device_add+0x94/0x54c) from [<c0b5b4d0>] (device_create_vargs+0xa4/0xd4)
<4>[    1.266265] [<c0b5b4d0>] (device_create_vargs+0xa4/0xd4) from [<c0b5b520>] (device_create+0x20/0x28)
<4>[    1.266265] [<c0b5b520>] (device_create+0x20/0x28) from [<c0c63108>] (switch_dev_register+0x5c/0xfc)
<4>[    1.266296] [<c0c63108>] (switch_dev_register+0x5c/0xfc) from [<c002b770>] (snd_usb_audio_init+0x3c/0x64)
<4>[    1.266296] [<c002b770>] (snd_usb_audio_init+0x3c/0x64) from [<c08da6b4>] (do_one_initcall+0x38/0x178)
<4>[    1.266326] [<c08da6b4>] (do_one_initcall+0x38/0x178) from [<c00089ac>] (kernel_init+0x90/0x13c)
<4>[    1.266357] [<c00089ac>] (kernel_init+0x90/0x13c) from [<c08e1990>] (kernel_thread_exit+0x0/0x8)
<6>[    1.266632] usbcore: registered new interface driver snd-usb-audio

Conflicts:

	arch/arm/mach-ux500/android_switch.c

	/* Android switch interface */
	ux500_android_switch.name = "usb_audio";

	ret = switch_dev_register(&ux500_android_switch);

Signed-off-by: cocafe <cocafehj@gmail.com>
snd_usb: Correct device name

<6>[    1.299804] usbcore: registered new interface driver snd-usb-audio
ux500_usb: sync with CoCore
mm: kswapd inherit prio

When kswapd is awoken due to reclaim by a running task, set the priority of
kswapd to that of the calling task thus making memory reclaim cpu activity
affected by nice level.

-ck
AIO: Don't plug the I/O queue in do_io_submit() 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.

Change-Id: I7101df956473ed9fd5dcff18e473dd93b688a5c1
Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>
Cc: linux-aio@kvack.org
Cc: Chris Mason <chris.mason@oracle.com>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Jeff Moyer <jmoyer@redhat.com>
Disable Gentle Fair Sleepers
cfg80211: Fix memory leak

When a driver requests a specific regulatory domain after cfg80211 already
has one, a struct ieee80211_regdomain is leaked.

Change-Id: Id28fc9861b9c911a97bd242439eabca097d76258
Reported-by: Larry Finger <Larry.Finger@lwfinger.net>
Tested-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Git-commit: b7566fc363e23f0efd3fa1e1460f9421cdc0d77e
Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
[mattw@codeaurora.org: trivially backport to the msm-3.4 kernel]
Signed-off-by: Matt Wagantall <mattw@codeaurora.org>
n_tty: Fix n_tty_write crash when echoing in raw mode

The tty atomic_write_lock does not provide an exclusion guarantee for
the tty driver if the termios settings are LECHO & !OPOST.  And since
it is unexpected and not allowed to call TTY buffer helpers like
tty_insert_flip_string concurrently, this may lead to crashes when
concurrect writers call pty_write. In that case the following two
writers:
* the ECHOing from a workqueue and
* pty_write from the process
race and can overflow the corresponding TTY buffer like follows.
If we look into tty_insert_flip_string_fixed_flag, there is:
  int space = __tty_buffer_request_room(port, goal, flags);
  struct tty_buffer *tb = port->buf.tail;
  ...
  memcpy(char_buf_ptr(tb, tb->used), chars, space);
  ...
  tb->used += space;
so the race of the two can result in something like this:
              A                                B
__tty_buffer_request_room
                                  __tty_buffer_request_room
memcpy(buf(tb->used), ...)
tb->used += space;
                                  memcpy(buf(tb->used), ...) ->BOOM
B's memcpy is past the tty_buffer due to the previous A's tb->used
increment.
Since the N_TTY line discipline input processing can output
concurrently with a tty write, obtain the N_TTY ldisc output_lock to
serialize echo output with normal tty writes.  This ensures the tty
buffer helper tty_insert_flip_string is not called concurrently and
everything is fine.
Note that this is nicely reproducible by an ordinary user using
forkpty and some setup around that (raw termios + ECHO). And it is
present in kernels at least after commit
d945cb9cce20ac7143c2de8d88b187f62db99bdc (pty: Rework the pty layer to
use the normal buffering logic) in 2.6.31-rc3.
js: add more info to the commit log
js: switch to bool
js: lock unconditionally
js: lock only the tty->ops->write call
Change-Id: Ie0b03989fa8cfd6ffe40d1f770044fe7447dda05
References: CVE-2014-0196
Reported-and-tested-by: Jiri Slaby <jslaby@suse.cz>
Signed-off-by: Peter Hurley <peter@hurleysoftware.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Cc: <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Cherry-picked from git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git
branch: master
commit: 4291086
Needed some tweaks because there is no
  bddc715 2012-10-18 jslaby@suse.cz TTY: move ldisc data from tty_struct: locks

Signed-off-by: JP Abgrall <jpa@google.com>
Drivers: staging: android: Lower the max allowed RAM for logger

Lowered RAM values to get more free RAM:

LOGGER_LOG_MAIN: 2048*1024 -> 64*1024
LOGGER_LOG_EVENTS: 256*1024 -> 32*1024
LOGGER_LOG_RADIO: 1024*1024 -> 32*1024
LOGGER_LOG_SYSTEM: 256*1024 -> 64*1024
LOGGER_LOG_SF: 256*1024 -> 64*1024
ksm: Provide support to use deferred timers for scanner thread

KSM thread to scan pages is getting schedule on definite timeout.
That wakes up CPU from idle state and hence may affect the power
consumption. Provide an optional support to use deferred timer
which suites low-power use-cases.

To enable deferred timers,
$ echo 1 > /sys/kernel/mm/ksm/deferred_timer

Change-Id: I07fe199f97fe1f72f9a9e1b0b757a3ac533719e8
Signed-off-by: Chintan Pandya <cpandya@codeaurora.org>
ksm: enable deferred timer

Change-Id: I3e4745206a1333fb67e0473573cc44d78c1895c7
power/portlist: don't spam kmsg
block: limit default readahead size for small devices

Linus reports a _really_ small & slow (505kB, 15kB/s) USB device,
on which blkid runs unpleasantly slow. He manages to optimize the blkid
reads down to 1kB+16kB, but still kernel read-ahead turns it into 48kB.

     lseek 0,    read 1024   => readahead 4 pages (start of file)
     lseek 1536, read 16384  => readahead 8 pages (page contiguous)

The readahead heuristics involved here are reasonable ones in general.
So it's good to fix blkid with fadvise(RANDOM), as Linus already did.

For the kernel part, Linus suggests:
  So maybe we could be less aggressive about read-ahead when the size of
  the device is small? Turning a 16kB read into a 64kB one is a big deal,
  when it's about 15% of the whole device!

This looks reasonable: smaller device tend to be slower (USB sticks as
well as micro/mobile/old hard disks).

Given that the non-rotational attribute is not always reported, we can
take disk size as a max readahead size hint. This patch uses a formula
that generates the following concrete limits:

        disk size    readahead size
     (scale by 4)      (scale by 2)
               1M                8k
               4M               16k
              16M               32k
              64M               64k
             256M              128k
        --------------------------- (*)
               1G              256k
               4G              512k
              16G             1024k
              64G             2048k
             256G             4096k
(*) Since the default readahead size is 128k, this limit only takes
effect for devices whose size is less than 256M.

The formula is determined on the following data, collected by script:

	#!/bin/sh

	# please make sure BDEV is not mounted or opened by others
	BDEV=sdb

	for rasize in 4 16 32 64 128 256 512 1024 2048 4096 8192
	do
		echo $rasize > /sys/block/$BDEV/queue/read_ahead_kb
		time dd if=/dev/$BDEV of=/dev/null bs=4k count=102400
	done
The principle is, the formula shall not limit readahead size to such a
degree that will impact some device's sequential read performance.

The Intel SSD is special in that its throughput increases steadily with
larger readahead size. However it may take years for Linux to increase
its default readahead size to 2MB, so we don't take it seriously in the
formula.

SSD 80G Intel x25-M SSDSA2M080 (reported by Li Shaohua)

	rasize	1st run		2nd run
	----------------------------------
	  4k	123 MB/s	122 MB/s
	 16k  	153 MB/s	153 MB/s
	 32k	161 MB/s	162 MB/s
	 64k	167 MB/s	168 MB/s
	128k	197 MB/s	197 MB/s
	256k	217 MB/s	217 MB/s
	512k	238 MB/s	234 MB/s
	  1M	251 MB/s	248 MB/s
	  2M	259 MB/s	257 MB/s
==>	  4M	269 MB/s	264 MB/s
	  8M	266 MB/s	266 MB/s
Note that ==> points to the readahead size that yields plateau throughput.

SSD 22G MARVELL SD88SA02 MP1F (reported by Jens Axboe)

	rasize  1st             2nd
	--------------------------------
	  4k     41 MB/s         41 MB/s
	 16k     85 MB/s         81 MB/s
	 32k    102 MB/s        109 MB/s
	 64k    125 MB/s        144 MB/s
	128k    183 MB/s        185 MB/s
	256k    216 MB/s        216 MB/s
	512k    216 MB/s        236 MB/s
	1024k   251 MB/s        252 MB/s
	  2M    258 MB/s        258 MB/s
==>       4M    266 MB/s        266 MB/s
	  8M    266 MB/s        266 MB/s
SSD 30G SanDisk SATA 5000

	  4k	29.6 MB/s	29.6 MB/s	29.6 MB/s
	 16k	52.1 MB/s	52.1 MB/s	52.1 MB/s
	 32k	61.5 MB/s	61.5 MB/s	61.5 MB/s
	 64k	67.2 MB/s	67.2 MB/s	67.1 MB/s
	128k	71.4 MB/s	71.3 MB/s	71.4 MB/s
	256k	73.4 MB/s	73.4 MB/s	73.3 MB/s
==>	512k	74.6 MB/s	74.6 MB/s	74.6 MB/s
	  1M	74.7 MB/s	74.6 MB/s	74.7 MB/s
	  2M	76.1 MB/s	74.6 MB/s	74.6 MB/s

USB stick 32G Teclast CoolFlash idVendor=1307, idProduct=0165

	  4k	7.9 MB/s 	7.9 MB/s 	7.9 MB/s
	 16k	17.9 MB/s	17.9 MB/s	17.9 MB/s
	 32k	24.5 MB/s	24.5 MB/s	24.5 MB/s
	 64k	28.7 MB/s	28.7 MB/s	28.7 MB/s
	128k	28.8 MB/s	28.9 MB/s	28.9 MB/s
==>	256k	30.5 MB/s	30.5 MB/s	30.5 MB/s
	512k	30.9 MB/s	31.0 MB/s	30.9 MB/s
	  1M	31.0 MB/s	30.9 MB/s	30.9 MB/s
	  2M	30.9 MB/s	30.9 MB/s	30.9 MB/s

USB stick 4G SanDisk  Cruzer idVendor=0781, idProduct=5151

	  4k	6.4 MB/s 	6.4 MB/s 	6.4 MB/s
	 16k	13.4 MB/s	13.4 MB/s	13.2 MB/s
	 32k	17.8 MB/s	17.9 MB/s	17.8 MB/s
	 64k	21.3 MB/s	21.3 MB/s	21.2 MB/s
	128k	21.4 MB/s	21.4 MB/s	21.4 MB/s
==>	256k	23.3 MB/s	23.2 MB/s	23.2 MB/s
	512k	23.3 MB/s	23.8 MB/s	23.4 MB/s
	  1M	23.8 MB/s	23.4 MB/s	23.3 MB/s
	  2M	23.4 MB/s	23.2 MB/s	23.4 MB/s

USB stick 2G idVendor=0204, idProduct=6025 SerialNumber: 08082005000113

	  4k	6.7 MB/s 	6.9 MB/s 	6.7 MB/s
	 16k	11.7 MB/s	11.7 MB/s	11.7 MB/s
	 32k	12.4 MB/s	12.4 MB/s	12.4 MB/s
   	 64k	13.4 MB/s	13.4 MB/s	13.4 MB/s
	128k	13.4 MB/s	13.4 MB/s	13.4 MB/s
==>	256k	13.6 MB/s	13.6 MB/s	13.6 MB/s
	512k	13.7 MB/s	13.7 MB/s	13.7 MB/s
	  1M	13.7 MB/s	13.7 MB/s	13.7 MB/s
	  2M	13.7 MB/s	13.7 MB/s	13.7 MB/s

64 MB, USB full speed (collected by Clemens Ladisch)
Bus 003 Device 003: ID 08ec:0011 M-Systems Flash Disk Pioneers DiskOnKey

	4KB:    139.339 s, 376 kB/s
	16KB:   81.0427 s, 647 kB/s
	32KB:   71.8513 s, 730 kB/s
==>	64KB:   67.3872 s, 778 kB/s
	128KB:  67.5434 s, 776 kB/s
	256KB:  65.9019 s, 796 kB/s
	512KB:  66.2282 s, 792 kB/s
	1024KB: 67.4632 s, 777 kB/s
	2048KB: 69.9759 s, 749 kB/s

An unnamed SD card (Yakui):

         4k     195.873 s,  5.5 MB/s
         8k     123.425 s,  8.7 MB/s
         16k    86.6425 s, 12.4 MB/s
         32k    66.7519 s, 16.1 MB/s
==>      64k    58.5262 s, 18.3 MB/s
         128k   59.3847 s, 18.1 MB/s
         256k   59.3188 s, 18.1 MB/s
         512k   59.0218 s, 18.2 MB/s

CC: Li Shaohua <shaohua.li@intel.com>
CC: Clemens Ladisch <clemens@ladisch.de>
Acked-by: Jens Axboe <jens.axboe@oracle.com>
Acked-by: Rik van Riel <riel@redhat.com>
Tested-by: Vivek Goyal <vgoyal@redhat.com>
Tested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
block: Pick proper readahead size

...while we use *128kB* (small size) by default.

Signed-off-by: cocafe <cocafehj@gmail.com>
cpufreq: ondemand: Update driver
cpufreq: performance: Update driver