mbox series

[GIT,PULL] arm64: updates for 4.19

Message ID 20180814113633.GE28664@arm.com (mailing list archive)
State New, archived
Headers show
Series [GIT,PULL] arm64: updates for 4.19 | expand

Pull-request

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

Message

Will Deacon Aug. 14, 2018, 11:36 a.m. UTC
Hi Linus,

Please pull these arm64 updates for 4.19. Details in the tag, but please be
aware that we've pulled in the x86/mm branch from -tip so that we can make
use of the core ioremap changes which allow us to put down huge mappings
in the vmalloc area without screwing up the TLB. Much of the positive
diffstat is because of the rseq selftest for arm64.

There is a trivial conflict in arch/arm64/Makefile with your tree, since
we effectively rewrote a fix that was merged in -rc5 [96f95a17c1cf]. The
correct resolution is therefore to prefer the code using ld-option, which
is what we have here. We also ran into a couple of trivial conflicts that
were resolved in -next with the KVM and EFI trees.

Cheers,

Will

--->8

The following changes since commit 5e0fb5df2ee871b841f96f9cb6a7f2784e96aa4e:

  x86/mm: Add TLB purge to free pmd/pte page interfaces (2018-07-04 21:37:09 +0200)

are available in the git repository at:

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

for you to fetch changes up to 3c4d9137eefecf273a520d392071ffc9df0a9a7a:

  arm64: alternative: Use true and false for boolean values (2018-08-08 11:20:54 +0100)

----------------------------------------------------------------
arm64 updates for 4.19

A bunch of good stuff in here:

- Wire up support for qspinlock, replacing our trusty ticket lock code

- Add an IPI to flush_icache_range() to ensure that stale instructions
  fetched into the pipeline are discarded along with the I-cache lines

- Support for the GCC "stackleak" plugin

- Support for restartable sequences, plus an arm64 port for the selftest

- Kexec/kdump support on systems booting with ACPI

- Rewrite of our syscall entry code in C, which allows us to zero the
  GPRs on entry from userspace

- Support for chained PMU counters, allowing 64-bit event counters to be
  constructed on current CPUs

- Ensure scheduler topology information is kept up-to-date with CPU
  hotplug events

- Re-enable support for huge vmalloc/IO mappings now that the core code
  has the correct hooks to use break-before-make sequences

- Miscellaneous, non-critical fixes and cleanups

----------------------------------------------------------------
AKASHI Takahiro (3):
      drivers: acpi: add dependency of EFI for arm64
      efi/arm: map UEFI memory map even w/o runtime services enabled
      arm64: acpi: fix alignment fault in accessing ACPI

Ard Biesheuvel (2):
      efi/arm: preserve early mapping of UEFI memory map longer for BGRT
      arm64: drop unused kernel_neon_begin_partial() macro

Arnd Bergmann (2):
      arm64: make flatmem depend on !NUMA
      arm64: fix ACPI dependencies

Ben Hutchings (1):
      arm64: mm: Export __sync_icache_dcache() for xen-privcmd

Bhupesh Sharma (1):
      arm64, kaslr: export offset in VMCOREINFO ELF notes

Chintan Pandya (2):
      arm64: tlbflush: Introduce __flush_tlb_kernel_pgtable
      arm64: Implement page table free interfaces

Dave Kleikamp (1):
      arm64: kexec: machine_kexec should call __flush_icache_range

Gustavo A. R. Silva (1):
      arm64: alternative: Use true and false for boolean values

James Morse (1):
      arm64: export memblock_reserve()d regions via /proc/iomem

Kees Cook (1):
      perf/arm-cci: Remove VLA usage

Laura Abbott (3):
      arm64: Add stack information to on_accessible_stack
      arm64: Add support for STACKLEAK gcc plugin
      efi/libstub: Only disable stackleak plugin for arm64

Lorenzo Pieralisi (1):
      arm64: numa: rework ACPI NUMA initialization

Mark Rutland (30):
      arm64: kexec: always reset to EL2 if present
      arm64: add PSR_AA32_* definitions
      arm64: don't zero DIT on signal return
      arm64: compat: map SPSR_ELx<->PSR for signals
      arm64: ptrace: map SPSR_ELx<->PSR for compat tasks
      arm64: use PSR_AA32 definitions
      kvm/arm: use PSR_AA32 definitions
      arm64: remove unused COMPAT_PSR definitions
      arm64: consistently use unsigned long for thread flags
      arm64: move SCTLR_EL{1,2} assertions to <asm/sysreg.h>
      arm64: kill config_sctlr_el1()
      arm64: kill change_cpacr()
      arm64: move sve_user_{enable,disable} to <asm/fpsimd.h>
      arm64: remove sigreturn wrappers
      arm64: introduce syscall_fn_t
      arm64: convert raw syscall invocation to C
      arm64: convert syscall trace logic to C
      arm64: convert native/compat syscall entry to C
      arm64: don't restore GPRs when context tracking
      arm64: don't reload GPRs after apply_ssbd
      arm64: zero GPRs upon entry from EL0
      arm64: drop alignment from syscall tables
      kernel: add ksys_personality()
      kernel: add kcompat_sys_{f,}statfs64()
      arm64: remove in-kernel call to sys_personality()
      arm64: use {COMPAT,}SYSCALL_DEFINE0 for sigreturn
      arm64: use SYSCALL_DEFINE6() for mmap
      arm64: convert compat wrappers to C
      arm64: implement syscall wrappers
      arm64: fix possible spectre-v1 write in ptrace_hbp_set_event()

Michael O'Farrell (1):
      arm64: perf: Add cap_user_time aarch64

Mikulas Patocka (1):
      arm64: fix infinite stacktrace

Nikunj Kela (1):
      arm64: add ARM64-specific support for flatmem

Olof Johansson (1):
      arm64: build with baremetal linker target instead of Linux when available

Peng Donglin (1):
      ARM64: dump: Convert to use DEFINE_SHOW_ATTRIBUTE macro

Shaokun Zhang (1):
      drivers/perf: hisi: update the sccl_id/ccl_id when MT is supported

Stefan Agner (1):
      arm: perf: prevent unbind/bind via sysfs

Sudeep Holla (8):
      arm64: topology: refactor reset_cpu_topology to add support for removing topology
      arm64: numa: separate out updates to percpu nodeid and NUMA node cpumap
      arm64: topology: add support to remove cpu topology sibling masks
      arm64: topology: restrict updating siblings_masks to online cpus only
      arm64: smp: remove cpu and numa topology information when hotplugging out CPU
      arm64: topology: rename llc_siblings to align with other struct members
      arm64: topology: re-introduce numa mask check for scheduler MC selection
      drivers/perf: arm-ccn: Use devm_ioremap_resource() to map memory

Suzuki K Poulose (9):
      arm64: Fix mismatched cache line size detection
      arm64: Handle mismatched cache type
      arm_pmu: Clean up maximum period handling
      arm_pmu: Change API to support 64bit counter values
      arm_pmu: Add support for 64bit event counters
      arm_pmu: Tidy up clear_event_idx call backs
      arm64: perf: Clean up armv8pmu_select_counter
      arm64: perf: Disable PMU while processing counter overflows
      arm64: perf: Add support for chaining event counters

Will Deacon (19):
      drivers/perf: Initialise return value in armpmu_request_irqs()
      arm64: barrier: Implement smp_cond_load_relaxed
      arm64: locking: Replace ticket lock implementation with qspinlock
      arm64: kconfig: Ensure spinlock fastpaths are inlined if !PREEMPT
      arm64: IPI each CPU after invalidating the I-cache for kernel mappings
      arm64: insn: Don't fallback on nosync path for general insn patching
      Merge branch 'x86/mm' of git://git.kernel.org/.../tip/tip into aarch64/for-next/core
      arm64: errata: Don't define type field twice for arm64_errata[] entries
      arm64: mm: Export __flush_icache_range() to modules
      MAINTAINERS: arm64: Remove boot/dts/ directory from arm64 entry
      arm64: rseq: Implement backend rseq calls and select HAVE_RSEQ
      asm-generic: unistd.h: Wire up sys_rseq
      Revert "arm64: fix infinite stacktrace"
      arm64: Drop asmlinkage qualifier from syscall_trace_{enter,exit}
      rseq/selftests: Add support for arm64
      Merge branch 'for-next/perf' of git://git.kernel.org/.../will/linux into aarch64/for-next/core
      arm64: svc: Ensure hardirq tracing is updated before return
      arm64: sdei: Mark sdei stack helper functions as static
      arm64: kexec: Add comment to explain use of __flush_icache_range()

 MAINTAINERS                               |   1 +
 arch/arm/include/asm/kvm_emulate.h        |  14 +-
 arch/arm/kernel/perf_event_v6.c           |  14 +-
 arch/arm/kernel/perf_event_v7.c           |  15 +-
 arch/arm/kernel/perf_event_xscale.c       |  18 +-
 arch/arm64/Kconfig                        |  18 +
 arch/arm64/Makefile                       |   9 +-
 arch/arm64/include/asm/Kbuild             |   1 +
 arch/arm64/include/asm/acpi.h             |  29 +-
 arch/arm64/include/asm/barrier.h          |  13 +
 arch/arm64/include/asm/cache.h            |   4 +
 arch/arm64/include/asm/cacheflush.h       |  27 +-
 arch/arm64/include/asm/cpucaps.h          |   3 +-
 arch/arm64/include/asm/fpsimd.h           |  17 +-
 arch/arm64/include/asm/insn.h             |   2 -
 arch/arm64/include/asm/kvm_emulate.h      |  10 +-
 arch/arm64/include/asm/neon.h             |   7 -
 arch/arm64/include/asm/numa.h             |   4 +
 arch/arm64/include/asm/processor.h        |  21 +-
 arch/arm64/include/asm/ptrace.h           |  79 ++--
 arch/arm64/include/asm/sdei.h             |   9 +-
 arch/arm64/include/asm/spinlock.h         | 117 +-----
 arch/arm64/include/asm/spinlock_types.h   |  17 +-
 arch/arm64/include/asm/stacktrace.h       |  73 +++-
 arch/arm64/include/asm/syscall.h          |   8 +-
 arch/arm64/include/asm/syscall_wrapper.h  |  80 ++++
 arch/arm64/include/asm/sysreg.h           |  30 +-
 arch/arm64/include/asm/tlbflush.h         |   7 +
 arch/arm64/include/asm/topology.h         |   4 +-
 arch/arm64/include/asm/unistd.h           |   2 +-
 arch/arm64/include/asm/unistd32.h         |  28 +-
 arch/arm64/kernel/Makefile                |   5 +-
 arch/arm64/kernel/acpi.c                  |  11 +-
 arch/arm64/kernel/acpi_numa.c             |  88 +++--
 arch/arm64/kernel/alternative.c           |   4 +-
 arch/arm64/kernel/armv8_deprecated.c      |  32 +-
 arch/arm64/kernel/cpu-reset.h             |   9 +-
 arch/arm64/kernel/cpu_errata.c            |  30 +-
 arch/arm64/kernel/cpufeature.c            |   4 +-
 arch/arm64/kernel/entry.S                 | 160 ++------
 arch/arm64/kernel/entry32.S               | 121 ------
 arch/arm64/kernel/fpsimd.c                |  19 -
 arch/arm64/kernel/insn.c                  |  70 +---
 arch/arm64/kernel/machine_kexec.c         |  15 +-
 arch/arm64/kernel/perf_event.c            | 281 +++++++++++---
 arch/arm64/kernel/process.c               |  42 ++-
 arch/arm64/kernel/ptrace.c                |  61 +--
 arch/arm64/kernel/sdei.c                  |  48 ++-
 arch/arm64/kernel/setup.c                 |  38 ++
 arch/arm64/kernel/signal.c                |   8 +-
 arch/arm64/kernel/signal32.c              |  24 +-
 arch/arm64/kernel/smp.c                   |  44 ++-
 arch/arm64/kernel/stacktrace.c            |   2 +-
 arch/arm64/kernel/sys.c                   |  29 +-
 arch/arm64/kernel/sys32.c                 | 135 ++++++-
 arch/arm64/kernel/syscall.c               | 139 +++++++
 arch/arm64/kernel/topology.c              |  58 ++-
 arch/arm64/kernel/traps.c                 |  18 +-
 arch/arm64/kvm/guest.c                    |  14 +-
 arch/arm64/kvm/hyp/Makefile               |   3 +-
 arch/arm64/kvm/hyp/vgic-v2-cpuif-proxy.c  |   2 +-
 arch/arm64/kvm/regmap.c                   |  22 +-
 arch/arm64/kvm/reset.c                    |   4 +-
 arch/arm64/mm/cache.S                     |   4 +-
 arch/arm64/mm/fault.c                     |   2 +-
 arch/arm64/mm/flush.c                     |   3 +-
 arch/arm64/mm/mmu.c                       |  48 ++-
 arch/arm64/mm/numa.c                      |  29 +-
 arch/arm64/mm/ptdump_debugfs.c            |  13 +-
 arch/ia64/Kconfig                         |   1 +
 arch/x86/Kconfig                          |   1 +
 drivers/acpi/Kconfig                      |   8 +-
 drivers/firmware/efi/arm-init.c           |   1 -
 drivers/firmware/efi/arm-runtime.c        |  18 +-
 drivers/firmware/efi/libstub/Makefile     |   7 +-
 drivers/perf/arm-cci.c                    |  38 +-
 drivers/perf/arm-ccn.c                    |  14 +-
 drivers/perf/arm_pmu.c                    |  38 +-
 drivers/perf/arm_pmu_platform.c           |   2 +-
 drivers/perf/hisilicon/hisi_uncore_pmu.c  |  12 +-
 fs/statfs.c                               |  14 +-
 include/linux/compat.h                    |  11 +
 include/linux/perf/arm_pmu.h              |  11 +-
 include/linux/syscalls.h                  |  11 +
 include/uapi/asm-generic/unistd.h         |   4 +-
 kernel/events/core.c                      |   4 +-
 scripts/Kbuild.include                    |   4 +-
 tools/testing/selftests/rseq/param_test.c |  20 +
 tools/testing/selftests/rseq/rseq-arm64.h | 594 ++++++++++++++++++++++++++++++
 tools/testing/selftests/rseq/rseq.h       |   2 +
 virt/kvm/arm/aarch32.c                    |  20 +-
 91 files changed, 2154 insertions(+), 1001 deletions(-)
 create mode 100644 arch/arm64/include/asm/syscall_wrapper.h
 delete mode 100644 arch/arm64/kernel/entry32.S
 create mode 100644 arch/arm64/kernel/syscall.c
 create mode 100644 tools/testing/selftests/rseq/rseq-arm64.h

Comments

John Stultz Aug. 15, 2018, 11:55 p.m. UTC | #1
On Tue, Aug 14, 2018 at 4:36 AM, Will Deacon <will.deacon@arm.com> wrote:
>
> Please pull these arm64 updates for 4.19. Details in the tag, but please be
> aware that we've pulled in the x86/mm branch from -tip so that we can make
> use of the core ioremap changes which allow us to put down huge mappings
> in the vmalloc area without screwing up the TLB. Much of the positive
> diffstat is because of the rseq selftest for arm64.
>
> There is a trivial conflict in arch/arm64/Makefile with your tree, since
> we effectively rewrote a fix that was merged in -rc5 [96f95a17c1cf]. The
> correct resolution is therefore to prefer the code using ld-option, which
> is what we have here. We also ran into a couple of trivial conflicts that
> were resolved in -next with the KVM and EFI trees.
>

Hey Will,
  So I noticed issues booting Linus' master on the HiKey960 board I
have today (something hangs early in boot before I get any serial
output), and isolated the issue down to your branch here.

It seems to be coming from 693350a79980 ("arm64: insn: Don't fallback
on nosync path for general insn patching"), and reverting that change
resolves the issue for me.

If you have any suggestions for alternative fixes or things to try,
please let me know.

thanks
-john
Will Deacon Aug. 16, 2018, 9:14 a.m. UTC | #2
Hi John,

On Wed, Aug 15, 2018 at 04:55:15PM -0700, John Stultz wrote:
> On Tue, Aug 14, 2018 at 4:36 AM, Will Deacon <will.deacon@arm.com> wrote:
> >
> > Please pull these arm64 updates for 4.19. Details in the tag, but please be
> > aware that we've pulled in the x86/mm branch from -tip so that we can make
> > use of the core ioremap changes which allow us to put down huge mappings
> > in the vmalloc area without screwing up the TLB. Much of the positive
> > diffstat is because of the rseq selftest for arm64.
> >
> > There is a trivial conflict in arch/arm64/Makefile with your tree, since
> > we effectively rewrote a fix that was merged in -rc5 [96f95a17c1cf]. The
> > correct resolution is therefore to prefer the code using ld-option, which
> > is what we have here. We also ran into a couple of trivial conflicts that
> > were resolved in -next with the KVM and EFI trees.
> >
> 
> Hey Will,
>   So I noticed issues booting Linus' master on the HiKey960 board I
> have today (something hangs early in boot before I get any serial
> output), and isolated the issue down to your branch here.
> 
> It seems to be coming from 693350a79980 ("arm64: insn: Don't fallback
> on nosync path for general insn patching"), and reverting that change
> resolves the issue for me.
> 
> If you have any suggestions for alternative fixes or things to try,
> please let me know.

Hmm, sorry about that. It's also just been reported on linux-arm-kernel[1], and
they have a backtrace, so I'll take a look today.

Cheers,

Will

[1] http://lists.infradead.org/pipermail/linux-arm-kernel/2018-August/596961.html