3.4.73

Signed-off-by: kecinzer <kecinzer@gmail.com>

Conflicts:
	Makefile

Conflicts:
	fs/nfsd/nfssvc.c
	net/compat.c
	net/rose/af_rose.c
	net/socket.c
3.4.74

Signed-off-by: kecinzer <kecinzer@gmail.com>

Conflicts:
	Documentation/i2c/busses/i2c-i801
	drivers/i2c/busses/Kconfig
	drivers/i2c/busses/i2c-i801.c
3.4.75

Signed-off-by: kecinzer <kecinzer@gmail.com>

Conflicts:
	arch/x86/platform/efi/efi.c
	drivers/gpu/drm/radeon/si.c
	drivers/usb/core/hub.c
	drivers/usb/serial/option.c
3.4.76

Signed-off-by: kecinzer <kecinzer@gmail.com>

Conflicts:
	drivers/gpu/drm/drm_edid.c
	drivers/gpu/drm/radeon/ni.c
	fs/gfs2/aops.c
	include/drm/drm_pciids.h
3.4.77

Signed-off-by: kecinzer <kecinzer@gmail.com>
3.4.78

Signed-off-by: kecinzer <kecinzer@gmail.com>

Conflicts:
	arch/x86/kernel/cpu/perf_event_amd_ibs.c

Conflicts:
	arch/x86/kernel/cpu/perf_event_amd_ibs.c
3.4.79

Signed-off-by: kecinzer <kecinzer@gmail.com>

Conflicts:
	drivers/net/wireless/b43/b43.h
	drivers/net/wireless/b43/main.c
	fs/btrfs/extent-tree.c
	mm/hugetlb.c
3.4.80

This patch is different from francos hammerhead one because of CAF audio patches!

Signed-off-by: kecinzer <kecinzer@gmail.com>

Conflicts:
	drivers/iommu/intel-iommu.c
	kernel/time/timekeeping.c
3.4.81

Signed-off-by: kecinzer <kecinzer@gmail.com>

Conflicts:
	kernel/trace/ftrace.c
	mm/page_alloc.c
3.4.82

Signed-off-by: kecinzer <kecinzer@gmail.com>

Conflicts:
	drivers/usb/storage/unusual_cypress.h
3.4.83

Signed-off-by: kecinzer <kecinzer@gmail.com>

Conflicts:
	drivers/net/usb/asix.c
	drivers/net/usb/qmi_wwan.c
	drivers/net/wireless/rtlwifi/base.c
	drivers/net/xen-netback/netback.c
	drivers/usb/serial/ftdi_sio.c
	drivers/usb/serial/ftdi_sio_ids.h
	fs/fuse/inode.c
enable KERNEL_MODE_NEON in defconfig
ARM: crypto: add NEON accelerated XOR implementation

Add a source file xor-neon.c (which is really just the reference
C implementation passed through the GCC vectorizer) and hook it
up to the XOR framework.

Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Acked-by: Nicolas Pitre <nico@linaro.org>

Conflicts:
	arch/arm/lib/Makefile
	arch/arm/lib/xor-neon.c
ARM: 7835/2: fix modular build of xor_blocks() with NEON enabled

Commit 0195659 introduced a NEON accelerated version of the xor_blocks()
function, but it needs the changes in this patch to allow it to be built
as a module rather than statically into the kernel.

This patch creates a separate module xor-neon.ko which exports the NEON
inner xor_blocks() functions depended upon by the regular xor.ko if it
is built with CONFIG_KERNEL_MODE_NEON=y

Reported-by: Josh Boyer <jwboyer@fedoraproject.org>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
ARM: add support for bit sliced AES using NEON instructions

Bit sliced AES gives around 45% speedup on Cortex-A15 for encryption
and around 25% for decryption. This implementation of the AES algorithm
does not rely on any lookup tables so it is believed to be invulnerable
to cache timing attacks.

This algorithm processes up to 8 blocks in parallel in constant time. This
means that it is not usable by chaining modes that are strictly sequential
in nature, such as CBC encryption. CBC decryption, however, can benefit from
this implementation and runs about 25% faster. The other chaining modes
implemented in this module, XTS and CTR, can execute fully in parallel in
both directions.

The core code has been adopted from the OpenSSL project (in collaboration
with the original author, on cc). For ease of maintenance, this version is
identical to the upstream OpenSSL code, i.e., all modifications that were
required to make it suitable for inclusion into the kernel have been made
upstream. The original can be found here:

    http://git.openssl.org/gitweb/?p=openssl.git;a=commit;h=6f6a6130

Note to integrators:
While this implementation is significantly faster than the existing table
based ones (generic or ARM asm), especially in CTR mode, the effects on
power efficiency are unclear as of yet. This code does fundamentally more
work, by calculating values that the table based code obtains by a simple
lookup; only by doing all of that work in a SIMD fashion, it manages to
perform better.

Cc: Andy Polyakov <appro@openssl.org>
Acked-by: Nicolas Pitre <nico@linaro.org>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>

Conflicts:
	arch/arm/crypto/Makefile
crypto: create generic version of ablk_helper

Create a generic version of ablk_helper so it can be reused
by other architectures.

Acked-by: Jussi Kivilinna <jussi.kivilinna@iki.fi>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>

Conflicts:
	crypto/Kconfig
	crypto/Makefile
ARM: move AES typedefs and function prototypes to separate header

Put the struct definitions for AES keys and the asm function prototypes in a
separate header and export the asm functions from the module.
This allows other drivers to use them directly.

Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
ARM: pull in <asm/simd.h> from asm-generic

Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
ARM: 7626/1: arm/crypto: Make asm SHA-1 and AES code Thumb-2 compatible

This patch fixes aes-armv4.S and sha1-armv4-large.S to work
natively in Thumb.  This allows ARM/Thumb interworking workarounds
to be removed.

I also take the opportunity to convert some explicit assembler
directives for exported functions to the standard
ENTRY()/ENDPROC().

For the code itself:

  * In sha1_block_data_order, use of TEQ with sp is deprecated in
    ARMv7 and not supported in Thumb.  For the branches back to
    .L_00_15 and .L_40_59, the TEQ is converted to a CMP, under the
    assumption that clobbering the C flag here will not cause
    incorrect behaviour.

    For the first branch back to .L_20_39_or_60_79 the C flag is
    important, so sp is moved temporarily into another register so
    that TEQ can be used for the comparison.

  * In the AES code, most forms of register-indexed addressing with
    shifts and rotates are not permitted for loads and stores in
    Thumb, so the address calculation is done using a separate
    instruction for the Thumb case.

The resulting code is unlikely to be optimally scheduled, but it
should not have a large impact given the overall size of the code.
I haven't run any benchmarks.

Signed-off-by: Dave Martin <dave.martin@linaro.org>
Tested-by: David McCullough <ucdevel@gmail.com> (ARM only)
Acked-by: David McCullough <ucdevel@gmail.com>
Acked-by: Nicolas Pitre <nico@linaro.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
ARM: 7837/3: fix Thumb-2 bug in AES assembler code

Patch 638591c enabled building the AES assembler code in Thumb2 mode.
However, this code used arithmetic involving PC rather than adr{l}
instructions to generate PC-relative references to the lookup tables,
and this needs to take into account the different PC offset when
running in Thumb mode.

Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Acked-by: Nicolas Pitre <nico@linaro.org>
Cc: stable@vger.kernel.org
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>