Messages in this thread | | | Date | Fri, 6 Jun 2014 15:00:37 +0100 | From | Catalin Marinas <> | Subject | [GIT PULL] arm64 patches for 3.16 |
| |
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
| |