crypto: add lz4 Cryptographic API

Add support for lz4 and lz4hc compression algorithm using the lib/lz4/*
codebase.

[akpm@linux-foundation.org: fix warnings]
Signed-off-by: Chanho Min <chanho.min@lge.com>
Cc: "Darrick J. Wong" <djwong@us.ibm.com>
Cc: Bob Pearson <rpearson@systemfabricworks.com>
Cc: Richard Weinberger <richard@nod.at>
Cc: Herbert Xu <herbert@gondor.hengli.com.au>
Cc: Yann Collet <yann.collet.73@gmail.com>
Cc: Kyungsik Lee <kyungsik.lee@lge.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
lib/decompress_unlz4.c: always set an error return code on failures

"ret", being set to -1 early on, gets cleared by the first invocation of
lz4_decompress()/lz4_decompress_unknownoutputsize(), and hence subsequent
failures wouldn't be noticed by the caller without setting it back to -1
right after those calls.

Reported-by: Matthew Daley <mattjd@gmail.com>
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Cc: Kyungsik Lee <kyungsik.lee@lge.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
arm: Makefile: optimise for size when using lz4

Change-Id: I06b00c71bf397391dad178c0d45089e74f22718d
Signed-off-by: Zhao Wei Liew <zhaoweiliew@gmail.com>
cpufreq: Introduce new relation for freq selection

Introduce CPUFREQ_RELATION_C for frequency selection.
It selects the frequency with the minimum euclidean distance
to target. In case of equal distance between 2 frequencies,
it will select the greater freq.

Signed-off-by: Stratos Karafotis <stratosk@semaphore.gr>
cpufreq: interactive: use the new cpufreq relation

this selects the closest frequency to the new_freq instead of the lowest frequency at or above it, resulting in fairer scaling judgments.

Signed-off-by: Zhao Wei Liew <zhaoweiliew@gmail.com>
cpufreq: interactive: import all the caf, personal, etc. changes

Signed-off-by: Zhao Wei Liew <zhaoweiliew@gmail.com>
cpufreq: interactive: tune for better battery savings

since the new frequency calculation is so sensitive to load changes, the tunables don't have to be so conservative. lower dat minimum sampling time by half! increase dat timer rate!

Signed-off-by: Zhao Wei Liew <zhaoweiliew@gmail.com>
phone_svn: Sync driver

Signed-off-by: cocafe <cocafehj@gmail.com>
cpufreq: interactive: revert back to cputime64_t

Signed-off-by: Zhao Wei Liew <zhaoweiliew@gmail.com>
cpufreq: interactive: add early suspend hotplugging

Signed-off-by: Zhao Wei Liew <zhaoweiliew@gmail.com>
[SCSI] Remove scsi_wait_scan module

scsi_wait_scan was introduced with asynchronous host scanning as a hack
for distributions that weren't using proper udev based wait for root to
appear in their initramfs scripts.  In 2.6.30 Commit

c751085943362143f84346d274e0011419c84202
Author: Rafael J. Wysocki <rjw@sisk.pl>
Date:   Sun Apr 12 20:06:56 2009 +0200

    PM/Hibernate: Wait for SCSI devices scan to complete during resume

Actually broke scsi_wait_scan because it renders
scsi_complete_async_scans() a nop for modular SCSI if you include
scsi_scans.h (which this module does).

The lack of bug reports is sufficient proof that this module is no
longer used.

Cc: Jeff Mahoney <jeffm@suse.de>
Cc: Dave Jones <davej@redhat.com>
Cc: maximilian attems <max@stro.at>
Signed-off-by: James Bottomley <JBottomley@Parallels.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
cpufreq: interactive: eliminate dead band effect in low load

the old frequency calculation algorithm that calculates frequency directly proportional to load will result in a dead band effect in low load. at loads near 0, the new frequency calculated is always below min freq, thus causing the min freq to be selected every time. this new algorithm will select the frequencies linearly, such that the min load will result in min freq and so on.

Change-Id: Icd6193f2517542384049c3e6211dc71fc23b60c0
Signed-off-by: Zhao Wei Liew <zhaoweiliew@gmail.com>
cpufreq: interactive: use cputime64_t

u64 arrays aren't implemented yet
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>
cpufreq: Break out early when frequency equals target_freq

Many drivers keep frequencies in frequency table in ascending
or descending order. When governor tries to change to policy->min
or policy->max respectively then the cpufreq_frequency_table_target
could return on first iteration. This will save some iteration cycles.

So, break out early when a frequency in cpufreq_frequency_table
equals to target one.

Testing this during kernel compilation using ondemand governor
with a frequency table in ascending order, the
cpufreq_frequency_table_target returned early on the first
iteration at about 30% of times called.

Change-Id: Iea687ce8006d622d1a951561087b856b50ba05c2
Signed-off-by: Stratos Karafotis <stratosk@semaphore.gr>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
ARM: 7928/1: kconfig: select HAVE_EFFICIENT_UNALIGNED_ACCESS for CPUv6+ && MMU

Modern ARM CPUs can perform efficient unaligned memory accesses in
hardware and this feature is relied up on by code such as the dcache
word-at-a-time name hashing.

This patch selects HAVE_EFFICIENT_UNALIGNED_ACCESS for these cores and
reworks the kconfig select logic for DCACHE_WORD_ACCESS to use the new
symbol.

Change-Id: I2d6474e99fec6aa940cc2f3d2cd2e6a0c4ca636a
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
ARM: kconfig: don't select HAVE_EFFICIENT_UNALIGNED_ACCESS if is janice

if i'm not wrong, janice cannot boot on gcc 4.7+ with this

Signed-off-by: Zhao Wei Liew <zhaoweiliew@gmail.com>
LiveOPP: Enable 100MHz by default

Lower power consumption
Author: @cocafe