Merge tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64...
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 8 Jul 2019 16:54:55 +0000 (09:54 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 8 Jul 2019 16:54:55 +0000 (09:54 -0700)
Pull arm64 updates from Catalin Marinas:

 - arm64 support for syscall emulation via PTRACE_SYSEMU{,_SINGLESTEP}

 - Wire up VM_FLUSH_RESET_PERMS for arm64, allowing the core code to
   manage the permissions of executable vmalloc regions more strictly

 - Slight performance improvement by keeping softirqs enabled while
   touching the FPSIMD/SVE state (kernel_neon_begin/end)

 - Expose a couple of ARMv8.5 features to user (HWCAP): CondM (new
   XAFLAG and AXFLAG instructions for floating point comparison flags
   manipulation) and FRINT (rounding floating point numbers to integers)

 - Re-instate ARM64_PSEUDO_NMI support which was previously marked as
   BROKEN due to some bugs (now fixed)

 - Improve parking of stopped CPUs and implement an arm64-specific
   panic_smp_self_stop() to avoid warning on not being able to stop
   secondary CPUs during panic

 - perf: enable the ARM Statistical Profiling Extensions (SPE) on ACPI
   platforms

 - perf: DDR performance monitor support for iMX8QXP

 - cache_line_size() can now be set from DT or ACPI/PPTT if provided to
   cope with a system cache info not exposed via the CPUID registers

 - Avoid warning on hardware cache line size greater than
   ARCH_DMA_MINALIGN if the system is fully coherent

 - arm64 do_page_fault() and hugetlb cleanups

 - Refactor set_pte_at() to avoid redundant READ_ONCE(*ptep)

 - Ignore ACPI 5.1 FADTs reported as 5.0 (infer from the
   'arm_boot_flags' introduced in 5.1)

 - CONFIG_RANDOMIZE_BASE now enabled in defconfig

 - Allow the selection of ARM64_MODULE_PLTS, currently only done via
   RANDOMIZE_BASE (and an erratum workaround), allowing modules to spill
   over into the vmalloc area

 - Make ZONE_DMA32 configurable

* tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux: (54 commits)
  perf: arm_spe: Enable ACPI/Platform automatic module loading
  arm_pmu: acpi: spe: Add initial MADT/SPE probing
  ACPI/PPTT: Add function to return ACPI 6.3 Identical tokens
  ACPI/PPTT: Modify node flag detection to find last IDENTICAL
  x86/entry: Simplify _TIF_SYSCALL_EMU handling
  arm64: rename dump_instr as dump_kernel_instr
  arm64/mm: Drop [PTE|PMD]_TYPE_FAULT
  arm64: Implement panic_smp_self_stop()
  arm64: Improve parking of stopped CPUs
  arm64: Expose FRINT capabilities to userspace
  arm64: Expose ARMv8.5 CondM capability to userspace
  arm64: defconfig: enable CONFIG_RANDOMIZE_BASE
  arm64: ARM64_MODULES_PLTS must depend on MODULES
  arm64: bpf: do not allocate executable memory
  arm64/kprobes: set VM_FLUSH_RESET_PERMS on kprobe instruction pages
  arm64/mm: wire up CONFIG_ARCH_HAS_SET_DIRECT_MAP
  arm64: module: create module allocations without exec permissions
  arm64: Allow user selection of ARM64_MODULE_PLTS
  acpi/arm64: ignore 5.1 FADTs that are reported as 5.0
  arm64: Allow selecting Pseudo-NMI again
  ...

46 files changed:
1  2 
MAINTAINERS
arch/arm64/configs/defconfig
arch/arm64/include/asm/acpi.h
arch/arm64/include/asm/arch_gicv3.h
arch/arm64/include/asm/cache.h
arch/arm64/include/asm/cacheflush.h
arch/arm64/include/asm/cpufeature.h
arch/arm64/include/asm/daifflags.h
arch/arm64/include/asm/fpsimd.h
arch/arm64/include/asm/hwcap.h
arch/arm64/include/asm/irqflags.h
arch/arm64/include/asm/kvm_host.h
arch/arm64/include/asm/pgtable-hwdef.h
arch/arm64/include/asm/pgtable-prot.h
arch/arm64/include/asm/pgtable.h
arch/arm64/include/asm/ptrace.h
arch/arm64/include/asm/simd.h
arch/arm64/include/asm/sysreg.h
arch/arm64/include/asm/thread_info.h
arch/arm64/include/uapi/asm/ptrace.h
arch/arm64/kernel/acpi.c
arch/arm64/kernel/cacheinfo.c
arch/arm64/kernel/cpufeature.c
arch/arm64/kernel/cpuinfo.c
arch/arm64/kernel/entry.S
arch/arm64/kernel/fpsimd.c
arch/arm64/kernel/irq.c
arch/arm64/kernel/module.c
arch/arm64/kernel/process.c
arch/arm64/kernel/ptrace.c
arch/arm64/kernel/smp.c
arch/arm64/kernel/traps.c
arch/arm64/kvm/hyp/switch.c
arch/arm64/mm/dma-mapping.c
arch/arm64/mm/fault.c
arch/arm64/mm/init.c
arch/arm64/mm/mmu.c
arch/arm64/mm/pageattr.c
arch/arm64/net/bpf_jit_comp.c
arch/x86/entry/common.c
drivers/irqchip/irq-gic-v3.c
drivers/perf/arm_pmu_acpi.c
drivers/perf/arm_spe_pmu.c
include/linux/perf/arm_pmu.h
kernel/ptrace.c
mm/vmalloc.c

diff --cc MAINTAINERS
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 2372e97db29cc8e4867396305fb55cfab4f4208f,c285d1ce7186c501ad3eb3b844829f8d357a8f1f..180b34ec59650a9bcbca37ae4c7fbba373251e09
@@@ -64,7 -75,8 +64,8 @@@ void arch_release_task_struct(struct ta
   *  TIF_SYSCALL_TRACE - syscall trace active
   *  TIF_SYSCALL_TRACEPOINT - syscall tracepoint for ftrace
   *  TIF_SYSCALL_AUDIT - syscall auditing
 - *  TIF_SECOMP                - syscall secure computing
 + *  TIF_SECCOMP               - syscall secure computing
+  *  TIF_SYSCALL_EMU     - syscall emulation active
   *  TIF_SIGPENDING    - signal pending
   *  TIF_NEED_RESCHED  - rescheduling necessary
   *  TIF_NOTIFY_RESUME - callback before returning to user
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 71530e080ecc6e1b828a50d362728ff82c694194,5b5936b7868c4dd09cbd0aec012666cec74373cd..46e643e307082c0fee4129724ea74e9a98c99201
@@@ -29,12 -39,9 +29,12 @@@ void *module_alloc(unsigned long size
        if (IS_ENABLED(CONFIG_ARM64_MODULE_PLTS))
                gfp_mask |= __GFP_NOWARN;
  
 +      if (IS_ENABLED(CONFIG_KASAN))
 +              /* don't exceed the static module region - see below */
 +              module_alloc_end = MODULES_END;
 +
        p = __vmalloc_node_range(size, MODULE_ALIGN, module_alloc_base,
-                               module_alloc_end, gfp_mask, PAGE_KERNEL_EXEC, 0,
 -                              module_alloc_base + MODULES_VSIZE,
 -                              gfp_mask, PAGE_KERNEL, 0,
++                              module_alloc_end, gfp_mask, PAGE_KERNEL, 0,
                                NUMA_NO_NODE, __builtin_return_address(0));
  
        if (!p && IS_ENABLED(CONFIG_ARM64_MODULE_PLTS) &&
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc kernel/ptrace.c
Simple merge
diff --cc mm/vmalloc.c
index 0f76cca32a1ce2508bb42caf518d3d966f6550cd,6bd7b515995c057552ca23811143f8db7609495f..030a544e66020fb6af8b0719b551c5848a55aead
@@@ -2123,22 -2123,11 +2123,11 @@@ static inline void set_area_direct_map(
  /* Handle removing and resetting vm mappings related to the vm_struct. */
  static void vm_remove_mappings(struct vm_struct *area, int deallocate_pages)
  {
 -      unsigned long addr = (unsigned long)area->addr;
        unsigned long start = ULONG_MAX, end = 0;
        int flush_reset = area->flags & VM_FLUSH_RESET_PERMS;
 +      int flush_dmap = 0;
        int i;
  
-       /*
-        * The below block can be removed when all architectures that have
-        * direct map permissions also have set_direct_map_() implementations.
-        * This is concerned with resetting the direct map any an vm alias with
-        * execute permissions, without leaving a RW+X window.
-        */
-       if (flush_reset && !IS_ENABLED(CONFIG_ARCH_HAS_SET_DIRECT_MAP)) {
-               set_memory_nx((unsigned long)area->addr, area->nr_pages);
-               set_memory_rw((unsigned long)area->addr, area->nr_pages);
-       }
        remove_vm_area(area->addr);
  
        /* If this is not VM_FLUSH_RESET_PERMS memory, no need for the below. */