[GIT PULL] arm64 patches for 3.16

From: Catalin Marinas
Date: Fri Jun 06 2014 - 10:01:04 EST


Hi Linus,

Please pull the arm64 patches below for 3.16. In addition, there are
core ftrace patches required for arm64 support which were pulled from
branch provided by Steve Rostedt (https://lkml.org/lkml/2014/5/27/289)
so they'll go into mainline either via the arm64 or the ftrace tree.

There are a couple merge conflicts with tip/arm64-efi and sched patches
already merged into your next branch. The conflict resolution is below
but please let me know if you prefer a different pull request with
tip/arm64-efi merged into my tree (TIF_POLLING_NRFLAG removal vs
TIF_SYSCALL_* addition and support for identity memory mapping
conflicting with pgprot clean-up).

The following changes since commit d6d211db37e75de2ddc3a4f979038c40df7cc79c:

Linux 3.15-rc5 (2014-05-09 13:10:52 -0700)

are available in the git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux tags/arm64-upstream

for you to fetch changes up to 9358d755bd5cba8965ea79f2a446e689323409f9:

arm64: kernel: initialize broadcast hrtimer based clock event device (2014-05-30 17:48:13 +0100)

----------------------------------------------------------------
- Optimised assembly string/memory routines (based on the AArch64 Cortex
Strings library contributed to glibc but re-licensed under GPLv2)
- Optimised crypto algorithms making use of the ARMv8 crypto extensions
(together with kernel API for using FPSIMD instructions in interrupt
context)
- Ftrace support
- CPU topology parsing from DT
- ESR_EL1 (Exception Syndrome Register) exposed to user space signal
handlers for SIGSEGV/SIGBUS (useful to emulation tools like Qemu)
- 1GB section linear mapping if applicable
- Barriers usage clean-up
- Default pgprot clean-up

-------- Conflict resolution -----------------------

diff --cc arch/arm64/include/asm/thread_info.h
index 7b8e3a2a00fb,9c086c63f911..e40b6d06d515
--- a/arch/arm64/include/asm/thread_info.h
+++ b/arch/arm64/include/asm/thread_info.h
@@@ -99,7 -103,12 +102,11 @@@ static inline struct thread_info *curre
#define TIF_SIGPENDING 0
#define TIF_NEED_RESCHED 1
#define TIF_NOTIFY_RESUME 2 /* callback before returning to user */
+ #define TIF_FOREIGN_FPSTATE 3 /* CPU's FP state is not current's */
#define TIF_SYSCALL_TRACE 8
+ #define TIF_SYSCALL_AUDIT 9
+ #define TIF_SYSCALL_TRACEPOINT 10
+ #define TIF_SECCOMP 11
-#define TIF_POLLING_NRFLAG 16
#define TIF_MEMDIE 18 /* is terminating due to OOM killer */
#define TIF_FREEZE 19
#define TIF_RESTORE_SIGMASK 20
diff --cc arch/arm64/mm/mmu.c
index 4a829a210bb6,3a729de96f15..c43f1dd19489
--- a/arch/arm64/mm/mmu.c
+++ b/arch/arm64/mm/mmu.c
@@@ -192,17 -158,6 +160,16 @@@ static void __init alloc_init_pmd(pud_
{
pmd_t *pmd;
unsigned long next;
+ pmdval_t prot_sect;
+ pgprot_t prot_pte;
+
+ if (map_io) {
- prot_sect = PMD_TYPE_SECT | PMD_SECT_AF |
- PMD_ATTRINDX(MT_DEVICE_nGnRE);
++ prot_sect = PROT_SECT_DEVICE_nGnRE;
+ prot_pte = __pgprot(PROT_DEVICE_nGnRE);
+ } else {
- prot_sect = prot_sect_kernel;
++ prot_sect = PROT_SECT_NORMAL_EXEC;
+ prot_pte = PAGE_KERNEL_EXEC;
+ }

/*
* Check for initial section mappings in the pgd/pud and remove them.
@@@ -242,7 -195,30 +209,30 @@@ static void __init alloc_init_pud(pgd_

do {
next = pud_addr_end(addr, end);
- alloc_init_pmd(pud, addr, next, phys, map_io);
+
+ /*
+ * For 4K granule only, attempt to put down a 1GB block
+ */
- if ((PAGE_SHIFT == 12) &&
++ if (!map_io && (PAGE_SHIFT == 12) &&
+ ((addr | next | phys) & ~PUD_MASK) == 0) {
+ pud_t old_pud = *pud;
+ set_pud(pud, __pud(phys | PROT_SECT_NORMAL_EXEC));
+
+ /*
+ * If we have an old value for a pud, it will
+ * be pointing to a pmd table that we no longer
+ * need (from swapper_pg_dir).
+ *
+ * Look up the old pmd table and free it.
+ */
+ if (!pud_none(old_pud)) {
+ phys_addr_t table = __pa(pmd_offset(&old_pud, 0));
+ memblock_free(table, PAGE_SIZE);
+ flush_tlb_all();
+ }
+ } else {
- alloc_init_pmd(pud, addr, next, phys);
++ alloc_init_pmd(pud, addr, next, phys, map_io);
+ }
phys += next - addr;
} while (pud++, addr = next, addr != end);
}


----------------------------------------------------------------
AKASHI Takahiro (12):
arm64: make a single hook to syscall_trace() for all syscall features
arm64: split syscall_trace() into separate functions for enter/exit
arm64: Add regs_return_value() in syscall.h
arm64: is_compat_task is defined both in asm/compat.h and linux/compat.h
ftrace: Make CALLER_ADDRx macros more generic
arm64: add __ASSEMBLY__ in asm/insn.h
arm64: Add 'notrace' attribute to unwind_frame() for ftrace
ftrace: Add arm64 support to recordmcount
arm64: Add ftrace support
arm64: ftrace: Add dynamic ftrace support
arm64: ftrace: Add CALLER_ADDRx macros
arm64: ftrace: Add system call tracepoint

Ard Biesheuvel (11):
asm-generic: allow generic unaligned access if the arch supports it
arm64: add abstractions for FPSIMD state manipulation
arm64: defer reloading a task's FPSIMD state to userland resume
arm64: add support for kernel mode NEON in interrupt context
arm64/crypto: SHA-1 using ARMv8 Crypto Extensions
arm64/crypto: SHA-224/SHA-256 using ARMv8 Crypto Extensions
arm64/crypto: GHASH secure hash using ARMv8 Crypto Extensions
arm64/crypto: AES using ARMv8 Crypto Extensions
arm64/crypto: AES in CCM mode using ARMv8 Crypto Extensions
arm64: pull in <asm/simd.h> from asm-generic
arm64/crypto: AES-ECB/CBC/CTR/XTS using ARMv8 NEON and Crypto Extensions

Arun KS (2):
arm64: Fix machine_shutdown() definition
arm64: Fix deadlock scenario with smp_send_stop()

Bjorn Helgaas (1):
arm64: Make atomic64_t() return "long", not "long long"

Catalin Marinas (9):
arm64: Implement cache_line_size() based on CTR_EL0.CWG
arm64: Remove boot thread synchronisation for spin-table release method
arm64: Provide read/write fault information in compat signal handlers
arm64: Remove the aux_context structure
arm64: Expose ESR_EL1 information to user when SIGSEGV/SIGBUS
arm64: Introduce execute-only page access permissions
arm64: Clean up the default pgprot setting
Merge tag 'for-3.16' of git://git.linaro.org/people/ard.biesheuvel/linux-arm into upstream
Revert "arm64: Introduce execute-only page access permissions"

Geoff Levand (1):
arm64: Fix linker script entry point

Larry Bassel (1):
arm64: Support arch_irq_work_raise() via self IPIs

Lorenzo Pieralisi (1):
arm64: kernel: initialize broadcast hrtimer based clock event device

Mark Brown (2):
arm64: topology: Initialise default topology state immediately
arm64: topology: Add support for topology DT bindings

Steve Capper (2):
arm64: mm: Create gigabyte kernel logical mappings where possible
arm64: mm: Optimise tlb flush logic where we have >4K granule

Will Deacon (10):
arm64: xchg: prevent warning if return value is unused
arm64: barriers: make use of barrier options with explicit barriers
arm64: barriers: wire up new barrier options
arm64: barriers: use barrier() instead of smp_mb() when !SMP
arm64: head: fix cache flushing and barriers in set_cpu_boot_mode_flag
arm64: kvm: use inner-shareable barriers for inner-shareable maintenance
arm64: mm: use inner-shareable barriers for inner-shareable maintenance
arm64: debug: avoid accessing mdscr_el1 on fault paths where possible
arm64: defconfig: enable a few more common/useful options in defconfig
Merge branch 'ftrace/arm64' of git://git.kernel.org/.../rostedt/linux-trace into for-next/core

Zi Shen Lim (1):
arm64: sched: Remove unused mc_capable() and smt_capable()

zhichang.yuan (6):
arm64: lib: Implement optimized memcpy routine
arm64: lib: Implement optimized memmove routine
arm64: lib: Implement optimized memset routine
arm64: lib: Implement optimized memcmp routine
arm64: lib: Implement optimized string compare routines
arm64: lib: Implement optimized string length routines

arch/arm/include/asm/ftrace.h | 10 +-
arch/arm64/Kconfig | 12 +
arch/arm64/Makefile | 1 +
arch/arm64/configs/defconfig | 36 ++-
arch/arm64/crypto/Kconfig | 53 +++
arch/arm64/crypto/Makefile | 38 +++
arch/arm64/crypto/aes-ce-ccm-core.S | 222 +++++++++++++
arch/arm64/crypto/aes-ce-ccm-glue.c | 297 +++++++++++++++++
arch/arm64/crypto/aes-ce-cipher.c | 155 +++++++++
arch/arm64/crypto/aes-ce.S | 133 ++++++++
arch/arm64/crypto/aes-glue.c | 446 ++++++++++++++++++++++++++
arch/arm64/crypto/aes-modes.S | 532 +++++++++++++++++++++++++++++++
arch/arm64/crypto/aes-neon.S | 382 ++++++++++++++++++++++
arch/arm64/crypto/ghash-ce-core.S | 95 ++++++
arch/arm64/crypto/ghash-ce-glue.c | 155 +++++++++
arch/arm64/crypto/sha1-ce-core.S | 153 +++++++++
arch/arm64/crypto/sha1-ce-glue.c | 174 ++++++++++
arch/arm64/crypto/sha2-ce-core.S | 156 +++++++++
arch/arm64/crypto/sha2-ce-glue.c | 255 +++++++++++++++
arch/arm64/include/asm/Kbuild | 1 +
arch/arm64/include/asm/assembler.h | 23 +-
arch/arm64/include/asm/atomic.h | 2 +-
arch/arm64/include/asm/barrier.h | 20 +-
arch/arm64/include/asm/cache.h | 13 +-
arch/arm64/include/asm/cacheflush.h | 4 +-
arch/arm64/include/asm/cachetype.h | 11 +
arch/arm64/include/asm/cmpxchg.h | 7 +-
arch/arm64/include/asm/compat.h | 5 -
arch/arm64/include/asm/esr.h | 6 +-
arch/arm64/include/asm/fpsimd.h | 23 ++
arch/arm64/include/asm/fpsimdmacros.h | 35 ++
arch/arm64/include/asm/ftrace.h | 59 ++++
arch/arm64/include/asm/hardirq.h | 2 +-
arch/arm64/include/asm/insn.h | 2 +
arch/arm64/include/asm/io.h | 8 -
arch/arm64/include/asm/neon.h | 6 +-
arch/arm64/include/asm/pgtable-hwdef.h | 2 +
arch/arm64/include/asm/pgtable.h | 107 ++++---
arch/arm64/include/asm/processor.h | 1 +
arch/arm64/include/asm/ptrace.h | 5 +
arch/arm64/include/asm/sigcontext.h | 31 --
arch/arm64/include/asm/string.h | 15 +
arch/arm64/include/asm/syscall.h | 1 +
arch/arm64/include/asm/thread_info.h | 17 +-
arch/arm64/include/asm/tlbflush.h | 44 ++-
arch/arm64/include/asm/topology.h | 3 -
arch/arm64/include/asm/unistd.h | 2 +
arch/arm64/include/uapi/asm/sigcontext.h | 7 +
arch/arm64/kernel/Makefile | 7 +-
arch/arm64/kernel/arm64ksyms.c | 9 +
arch/arm64/kernel/entry-fpsimd.S | 24 ++
arch/arm64/kernel/entry-ftrace.S | 218 +++++++++++++
arch/arm64/kernel/entry.S | 90 ++----
arch/arm64/kernel/fpsimd.c | 186 +++++++++--
arch/arm64/kernel/ftrace.c | 176 ++++++++++
arch/arm64/kernel/head.S | 8 +-
arch/arm64/kernel/hw_breakpoint.c | 2 +-
arch/arm64/kernel/process.c | 49 ++-
arch/arm64/kernel/ptrace.c | 62 ++--
arch/arm64/kernel/return_address.c | 55 ++++
arch/arm64/kernel/setup.c | 16 +-
arch/arm64/kernel/signal.c | 52 ++-
arch/arm64/kernel/signal32.c | 16 +-
arch/arm64/kernel/smp.c | 19 ++
arch/arm64/kernel/smp_spin_table.c | 39 +--
arch/arm64/kernel/stacktrace.c | 2 +-
arch/arm64/kernel/time.c | 3 +
arch/arm64/kernel/topology.c | 212 +++++++++++-
arch/arm64/kernel/traps.c | 7 +-
arch/arm64/kernel/vmlinux.lds.S | 2 +-
arch/arm64/kvm/hyp.S | 12 +-
arch/arm64/kvm/sys_regs.c | 4 +-
arch/arm64/lib/Makefile | 1 +
arch/arm64/lib/memcmp.S | 258 +++++++++++++++
arch/arm64/lib/memcpy.S | 192 +++++++++--
arch/arm64/lib/memmove.S | 190 +++++++++--
arch/arm64/lib/memset.S | 207 ++++++++++--
arch/arm64/lib/strcmp.S | 234 ++++++++++++++
arch/arm64/lib/strlen.S | 126 ++++++++
arch/arm64/lib/strncmp.S | 310 ++++++++++++++++++
arch/arm64/lib/strnlen.S | 171 ++++++++++
arch/arm64/mm/Makefile | 2 +-
arch/arm64/mm/cache.S | 6 +-
arch/arm64/mm/dma-mapping.c | 2 +-
arch/arm64/mm/fault.c | 8 +-
arch/arm64/mm/mmu.c | 64 ++--
arch/arm64/mm/proc.S | 2 +-
arch/arm64/mm/tlb.S | 71 -----
arch/blackfin/include/asm/ftrace.h | 11 +-
arch/parisc/include/asm/ftrace.h | 10 +-
arch/sh/include/asm/ftrace.h | 10 +-
arch/xtensa/include/asm/ftrace.h | 14 +-
include/asm-generic/unaligned.h | 21 +-
include/linux/ftrace.h | 34 +-
scripts/recordmcount.c | 7 +
scripts/recordmcount.pl | 5 +
96 files changed, 6390 insertions(+), 603 deletions(-)
create mode 100644 arch/arm64/crypto/Kconfig
create mode 100644 arch/arm64/crypto/Makefile
create mode 100644 arch/arm64/crypto/aes-ce-ccm-core.S
create mode 100644 arch/arm64/crypto/aes-ce-ccm-glue.c
create mode 100644 arch/arm64/crypto/aes-ce-cipher.c
create mode 100644 arch/arm64/crypto/aes-ce.S
create mode 100644 arch/arm64/crypto/aes-glue.c
create mode 100644 arch/arm64/crypto/aes-modes.S
create mode 100644 arch/arm64/crypto/aes-neon.S
create mode 100644 arch/arm64/crypto/ghash-ce-core.S
create mode 100644 arch/arm64/crypto/ghash-ce-glue.c
create mode 100644 arch/arm64/crypto/sha1-ce-core.S
create mode 100644 arch/arm64/crypto/sha1-ce-glue.c
create mode 100644 arch/arm64/crypto/sha2-ce-core.S
create mode 100644 arch/arm64/crypto/sha2-ce-glue.c
create mode 100644 arch/arm64/include/asm/ftrace.h
delete mode 100644 arch/arm64/include/asm/sigcontext.h
create mode 100644 arch/arm64/kernel/entry-ftrace.S
create mode 100644 arch/arm64/kernel/ftrace.c
create mode 100644 arch/arm64/kernel/return_address.c
create mode 100644 arch/arm64/lib/memcmp.S
create mode 100644 arch/arm64/lib/strcmp.S
create mode 100644 arch/arm64/lib/strlen.S
create mode 100644 arch/arm64/lib/strncmp.S
create mode 100644 arch/arm64/lib/strnlen.S
delete mode 100644 arch/arm64/mm/tlb.S

--
Catalin
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/