[GIT PULL] arm64: updates for 4.15

Will Deacon will.deacon at arm.com
Tue Nov 14 12:11:33 PST 2017


Hi Linus,

Please pull the following arm64 updates for 4.15. As per usual, there is a
summary in the tag, but the big highlight is support for the Scalable Vector
Extension (SVE) which required extensive ABI work to ensure we don't break
existing applications by blowing away their signal stack with the rather large
new vector context (<= 2 kbit per vector register). There's further work to
be done optimising things like exception return, but the ABI is solid now.

Much of the line count comes from some new PMU drivers we have, but they're
pretty self-contained and I suspect we'll have more of them in future.

Finally, there are a few small conflicts that have been addressed in -next, but
I've also included my resolution below [1].

Cheers,

Will

[1]:

diff --cc arch/arm64/Kconfig
index 6205f52,df296b7..e6fa0f5
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
@@@ -21,25 -21,8 +21,25 @@@ config ARM6
  	select ARCH_HAS_STRICT_KERNEL_RWX
  	select ARCH_HAS_STRICT_MODULE_RWX
  	select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
- 	select ARCH_HAVE_NMI_SAFE_CMPXCHG if ACPI_APEI_SEA
+ 	select ARCH_HAVE_NMI_SAFE_CMPXCHG
 +	select ARCH_INLINE_READ_LOCK if !PREEMPT
 +	select ARCH_INLINE_READ_LOCK_BH if !PREEMPT
 +	select ARCH_INLINE_READ_LOCK_IRQ if !PREEMPT
 +	select ARCH_INLINE_READ_LOCK_IRQSAVE if !PREEMPT
 +	select ARCH_INLINE_READ_UNLOCK if !PREEMPT
 +	select ARCH_INLINE_READ_UNLOCK_BH if !PREEMPT
 +	select ARCH_INLINE_READ_UNLOCK_IRQ if !PREEMPT
 +	select ARCH_INLINE_READ_UNLOCK_IRQRESTORE if !PREEMPT
 +	select ARCH_INLINE_WRITE_LOCK if !PREEMPT
 +	select ARCH_INLINE_WRITE_LOCK_BH if !PREEMPT
 +	select ARCH_INLINE_WRITE_LOCK_IRQ if !PREEMPT
 +	select ARCH_INLINE_WRITE_LOCK_IRQSAVE if !PREEMPT
 +	select ARCH_INLINE_WRITE_UNLOCK if !PREEMPT
 +	select ARCH_INLINE_WRITE_UNLOCK_BH if !PREEMPT
 +	select ARCH_INLINE_WRITE_UNLOCK_IRQ if !PREEMPT
 +	select ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE if !PREEMPT
  	select ARCH_USE_CMPXCHG_LOCKREF
 +	select ARCH_USE_QUEUED_RWLOCKS
  	select ARCH_SUPPORTS_MEMORY_FAILURE
  	select ARCH_SUPPORTS_ATOMIC_RMW
  	select ARCH_SUPPORTS_NUMA_BALANCING
diff --cc arch/arm64/kernel/fpsimd.c
index 5d547de,931fd8d..143b3e7
--- a/arch/arm64/kernel/fpsimd.c
+++ b/arch/arm64/kernel/fpsimd.c
@@@ -442,6 -1296,6 +1296,6 @@@ static int __init fpsimd_init(void
  	if (!(elf_hwcap & HWCAP_ASIMD))
  		pr_notice("Advanced SIMD is not implemented\n");
  
- 	return 0;
+ 	return sve_sysctl_init();
  }
 -late_initcall(fpsimd_init);
 +core_initcall(fpsimd_init);
diff --cc drivers/acpi/arm64/iort.c
index de56394,7dc964f..95255ec
--- a/drivers/acpi/arm64/iort.c
+++ b/drivers/acpi/arm64/iort.c
@@@ -1215,7 -1326,7 +1357,8 @@@ static void __init iort_init_platform_d
  	struct acpi_table_iort *iort;
  	struct fwnode_handle *fwnode;
  	int i, ret;
 +	bool acs_enabled = false;
+ 	const struct iort_dev_config *ops;
  
  	/*
  	 * iort_table and iort both point to the start of IORT table, but
@@@ -1235,12 -1346,8 +1378,11 @@@
  			return;
  		}
  
 +		if (!acs_enabled)
 +			acs_enabled = iort_enable_acs(iort_node);
 +
- 		if ((iort_node->type == ACPI_IORT_NODE_SMMU) ||
- 			(iort_node->type == ACPI_IORT_NODE_SMMU_V3)) {
- 
+ 		ops = iort_get_dev_cfg(iort_node);
+ 		if (ops) {
  			fwnode = acpi_alloc_fwnode_static();
  			if (!fwnode)
  				return;
diff --cc drivers/perf/Makefile
index 9402dc8,4f5815d..710a013
--- a/drivers/perf/Makefile
+++ b/drivers/perf/Makefile
@@@ -1,6 -1,6 +1,7 @@@
 +# SPDX-License-Identifier: GPL-2.0
  obj-$(CONFIG_ARM_PMU) += arm_pmu.o arm_pmu_platform.o
  obj-$(CONFIG_ARM_PMU_ACPI) += arm_pmu_acpi.o
+ obj-$(CONFIG_HISI_PMU) += hisilicon/
  obj-$(CONFIG_QCOM_L2_PMU)	+= qcom_l2_pmu.o
  obj-$(CONFIG_QCOM_L3_PMU) += qcom_l3_pmu.o
  obj-$(CONFIG_XGENE_PMU) += xgene_pmu.o

--->8

The following changes since commit 9e66317d3c92ddaab330c125dfe9d06eee268aff:

  Linux 4.14-rc3 (2017-10-01 14:54:54 -0700)

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 6cfa7cc46b1a7a15d81d5389c99cfca633c12b8e:

  arm64: Make ARMV8_DEPRECATED depend on SYSCTL (2017-11-13 16:05:55 +0000)

----------------------------------------------------------------
arm64 updates for 4.15

Plenty of acronym soup here:

- Initial support for the Scalable Vector Extension (SVE)
- Improved handling for SError interrupts (required to handle RAS events)
- Enable GCC support for 128-bit integer types
- Remove kernel text addresses from backtraces and register dumps
- Use of WFE to implement long delay()s
- ACPI IORT updates from Lorenzo Pieralisi
- Perf PMU driver for the Statistical Profiling Extension (SPE)
- Perf PMU driver for Hisilicon's system PMUs
- Misc cleanups and non-critical fixes

----------------------------------------------------------------
Arvind Yadav (1):
      acpi/arm64: pr_err() strings should end with newlines

Ben Hutchings (1):
      arm64: elf.h: Correct comment about READ_IMPLIES_EXEC propagation

Catalin Marinas (1):
      arm64: Implement arch-specific pte_access_permitted()

Dave Martin (30):
      arm64: asm-bug: Renumber macro local labels to avoid clashes
      regset: Add support for dynamically sized regsets
      arm64: fpsimd: Correctly annotate exception helpers called from asm
      arm64: signal: Verify extra data is user-readable in sys_rt_sigreturn
      arm64: KVM: Hide unsupported AArch64 CPU features from guests
      arm64: efi: Add missing Kconfig dependency on KERNEL_MODE_NEON
      arm64: Port deprecated instruction emulation to new sysctl interface
      arm64: fpsimd: Simplify uses of {set,clear}_ti_thread_flag()
      arm64/sve: System register and exception syndrome definitions
      arm64/sve: Low-level SVE architectural state manipulation functions
      arm64/sve: Kconfig update and conditional compilation support
      arm64/sve: Signal frame and context structure definition
      arm64/sve: Low-level CPU setup
      arm64/sve: Core task context handling
      arm64/sve: Support vector length resetting for new processes
      arm64/sve: Signal handling support
      arm64/sve: Backend logic for setting the vector length
      arm64: cpufeature: Move sys_caps_initialised declarations
      arm64/sve: Probe SVE capabilities and usable vector lengths
      arm64/sve: Preserve SVE registers around kernel-mode NEON use
      arm64/sve: Preserve SVE registers around EFI runtime service calls
      arm64/sve: ptrace and ELF coredump support
      arm64/sve: Add prctl controls for userspace vector length management
      arm64/sve: Add sysctl to set the default vector length for new processes
      arm64/sve: KVM: Prevent guests from using SVE
      arm64/sve: KVM: Treat guest SVE use as undefined instruction execution
      arm64/sve: KVM: Hide SVE from CPU features exposed to guests
      arm64/sve: Detect SVE and activate runtime support
      arm64/sve: Add documentation
      arm64: Make ARMV8_DEPRECATED depend on SYSCTL

Hanjun Guo (3):
      ACPI/IORT: Look up IORT node through struct fwnode_handle pointer
      ACPI/IORT: Enable special index ITS group mappings for IORT nodes
      ACPI/IORT: Add SMMUv3 specific special index mapping handling

James Morse (8):
      arm64: explicitly mask all exceptions
      arm64: introduce an order for exceptions
      arm64: Move the async/fiq helpers to explicitly set process context flags
      arm64: Mask all exceptions during kernel_exit
      arm64: entry.S: Remove disable_dbg
      arm64: entry.S: convert el1_sync
      arm64: entry.S convert el0_sync
      arm64: entry.S: convert elX_irq

Jason A. Donenfeld (2):
      arm64: support __int128 on gcc 5+
      arm64: Implement __lshrti3 library function

Julien Thierry (8):
      arm_arch_timer: Expose event stream status
      arm64: use WFE for long delays
      arm64: Update fault_info table with new exception types
      irqdesc: Add function to identify percpu_devid irqs
      arm/arm64: pmu: Distinguish percpu irq and percpu_devid irq
      arm64: Use existing defines for mdscr
      arm64: Fix single stepping in kernel traps
      arm64: Fix static use of function graph

Kees Cook (1):
      arm64: Always use REFCOUNT_FULL

Lorenzo Pieralisi (4):
      ACPI/IORT: Remove leftover ACPI_IORT_SMMU_V3_PXM_VALID guard
      ACPI/IORT: Improve functions return type/storage class specifier indentation
      ACPI/IORT: Make platform devices initialization code SMMU agnostic
      ACPI/IORT: Enable SMMUv3/PMCG IORT MSI domain set-up

Mark Rutland (4):
      arm64: consistently log boot/secondary CPU IDs
      arm64: docs: describe ELF hwcaps
      arm64: consistently log ESR and page table
      arm64: vdso: fix clock_getres for 4GiB-aligned res

Mark Salyzyn (1):
      arm64: Avoid aligning normal memory pointers in __memcpy_{to,from}io

Masahiro Yamada (1):
      arm64: remove unneeded copy to init_utsname()->machine

Matthieu CASTET (1):
      dma mapping : export caller to vmallocinfo

Neil Leeder (1):
      perf: qcom_l2_pmu: add event names

Nick Desaulniers (1):
      arm64: prevent regressions in compressed kernel image size when upgrading to binutils 2.27

Shaokun Zhang (7):
      drivers/perf: arm_pmu_acpi: drop redundant acpi_disabled check
      Documentation: perf: hisi: Documentation for HiSilicon SoC PMU driver
      perf: hisi: Add support for HiSilicon SoC uncore PMU driver
      perf: hisi: Add support for HiSilicon SoC L3C PMU driver
      perf: hisi: Add support for HiSilicon SoC HHA PMU driver
      perf: hisi: Add support for HiSilicon SoC DDRC PMU driver
      arm64: MAINTAINERS: hisi: Add HiSilicon SoC PMU support

Stephen Boyd (1):
      arm64: Unconditionally support {ARCH_}HAVE_NMI{_SAFE_CMPXCHG}

Suzuki K Poulose (4):
      arm64: Expose support for optional ARMv8-A features
      arm64: Fix the feature type for ID register fields
      perf: arm_spe: Prevent module unload while the PMU is in use
      arm-ccn: perf: Prevent module unload while PMU is in use

Thomas Meyer (1):
      arm64: dma-mapping: Cocci spatch "vma_pages"

Will Deacon (14):
      arm64: mm: Remove useless and wrong comments from fault.c
      Merge tag 'acpi/iort-for-v4.15' of git://git.kernel.org/.../lpieralisi/linux into aarch64/for-next/core
      genirq: export irq_get_percpu_devid_partition to modules
      perf/core: Export AUX buffer helpers to modules
      perf/core: Add PERF_AUX_FLAG_COLLISION to report colliding samples
      arm64: sysreg: Move SPE registers and PSB into common header files
      arm64: head: Init PMSCR_EL2.{PA,PCT} when entered at EL2 without VHE
      dt-bindings: Document devicetree binding for ARM SPE
      drivers/perf: Add support for ARMv8.2 Statistical Profiling Extension
      Merge branch 'for-next/perf' into aarch64/for-next/core
      arm64: traps: Don't print stack or raw PC/LR values in backtraces
      arm64: traps: Pretty-print pstate in register dumps
      arm64: uapi: Remove PSR_Q_BIT
      arm64: Don't walk page table for user faults in do_mem_abort

Xie XiuQi (1):
      arm64: entry.S: move SError handling into a C function for future expansion

Yisheng Xie (1):
      arm64: suspend: remove useless included file

Yury Norov (2):
      arm64: move TASK_* definitions to <asm/processor.h>
      arm64: fix documentation on kernel pages mappings to HYP VA

 Documentation/arm64/cpu-feature-registers.txt     |   18 +-
 Documentation/arm64/elf_hwcaps.txt                |  160 +++
 Documentation/arm64/memory.txt                    |   10 +-
 Documentation/arm64/sve.txt                       |  508 +++++++++
 Documentation/devicetree/bindings/arm/spe-pmu.txt |   20 +
 Documentation/perf/hisi-pmu.txt                   |   53 +
 MAINTAINERS                                       |    7 +
 arch/arm/include/asm/arch_timer.h                 |    1 +
 arch/arm/include/asm/kvm_host.h                   |    3 +
 arch/arm64/Kconfig                                |   18 +-
 arch/arm64/Makefile                               |   10 +-
 arch/arm64/include/asm/arch_timer.h               |    1 +
 arch/arm64/include/asm/asm-bug.h                  |    8 +-
 arch/arm64/include/asm/assembler.h                |   51 +-
 arch/arm64/include/asm/barrier.h                  |    2 +
 arch/arm64/include/asm/cpu.h                      |    4 +
 arch/arm64/include/asm/cpucaps.h                  |    3 +-
 arch/arm64/include/asm/cpufeature.h               |   42 +
 arch/arm64/include/asm/daifflags.h                |   72 ++
 arch/arm64/include/asm/elf.h                      |    4 +-
 arch/arm64/include/asm/esr.h                      |    3 +-
 arch/arm64/include/asm/fpsimd.h                   |   71 +-
 arch/arm64/include/asm/fpsimdmacros.h             |  148 +++
 arch/arm64/include/asm/irqflags.h                 |   40 +-
 arch/arm64/include/asm/kvm_arm.h                  |    5 +-
 arch/arm64/include/asm/kvm_host.h                 |   11 +
 arch/arm64/include/asm/memory.h                   |   15 -
 arch/arm64/include/asm/pgtable.h                  |   14 +
 arch/arm64/include/asm/processor.h                |   28 +
 arch/arm64/include/asm/sysreg.h                   |  121 ++
 arch/arm64/include/asm/thread_info.h              |    5 +
 arch/arm64/include/asm/traps.h                    |    8 +
 arch/arm64/include/uapi/asm/hwcap.h               |    6 +
 arch/arm64/include/uapi/asm/ptrace.h              |  139 ++-
 arch/arm64/include/uapi/asm/sigcontext.h          |  120 +-
 arch/arm64/kernel/Makefile                        |    2 -
 arch/arm64/kernel/armv8_deprecated.c              |   23 +-
 arch/arm64/kernel/cpufeature.c                    |  204 ++--
 arch/arm64/kernel/cpuinfo.c                       |   12 +
 arch/arm64/kernel/debug-monitors.c                |    5 +-
 arch/arm64/kernel/entry-fpsimd.S                  |   17 +
 arch/arm64/kernel/entry-ftrace.S                  |   12 +-
 arch/arm64/kernel/entry.S                         |  128 ++-
 arch/arm64/kernel/fpsimd.c                        |  908 ++++++++++++++-
 arch/arm64/kernel/head.S                          |   30 +-
 arch/arm64/kernel/hibernate.c                     |    5 +-
 arch/arm64/kernel/io.c                            |   12 +-
 arch/arm64/kernel/machine_kexec.c                 |    4 +-
 arch/arm64/kernel/process.c                       |   64 +-
 arch/arm64/kernel/ptrace.c                        |  280 ++++-
 arch/arm64/kernel/setup.c                         |   15 +-
 arch/arm64/kernel/signal.c                        |  179 ++-
 arch/arm64/kernel/signal32.c                      |    2 +-
 arch/arm64/kernel/smp.c                           |   18 +-
 arch/arm64/kernel/suspend.c                       |    8 +-
 arch/arm64/kernel/traps.c                         |  109 +-
 arch/arm64/kernel/vdso/gettimeofday.S             |    2 +-
 arch/arm64/kvm/handle_exit.c                      |    8 +
 arch/arm64/kvm/hyp/debug-sr.c                     |   24 +-
 arch/arm64/kvm/hyp/switch.c                       |   12 +-
 arch/arm64/kvm/sys_regs.c                         |  292 ++++-
 arch/arm64/lib/Makefile                           |    2 +-
 arch/arm64/lib/delay.c                            |   23 +-
 arch/arm64/lib/tishift.S                          |   80 ++
 arch/arm64/mm/dma-mapping.c                       |    5 +-
 arch/arm64/mm/fault.c                             |   72 +-
 arch/arm64/mm/proc.S                              |    9 +-
 drivers/acpi/arm64/gtdt.c                         |    2 +-
 drivers/acpi/arm64/iort.c                         |  258 ++++-
 drivers/bus/arm-ccn.c                             |    1 +
 drivers/clocksource/arm_arch_timer.c              |   25 +-
 drivers/perf/Kconfig                              |   15 +
 drivers/perf/Makefile                             |    2 +
 drivers/perf/arm_pmu.c                            |   10 +-
 drivers/perf/arm_pmu_acpi.c                       |    3 -
 drivers/perf/arm_pmu_platform.c                   |    4 +-
 drivers/perf/arm_spe_pmu.c                        | 1249 +++++++++++++++++++++
 drivers/perf/hisilicon/Makefile                   |    1 +
 drivers/perf/hisilicon/hisi_uncore_ddrc_pmu.c     |  463 ++++++++
 drivers/perf/hisilicon/hisi_uncore_hha_pmu.c      |  473 ++++++++
 drivers/perf/hisilicon/hisi_uncore_l3c_pmu.c      |  463 ++++++++
 drivers/perf/hisilicon/hisi_uncore_pmu.c          |  447 ++++++++
 drivers/perf/hisilicon/hisi_uncore_pmu.h          |  102 ++
 drivers/perf/qcom_l2_pmu.c                        |   54 +
 fs/binfmt_elf.c                                   |   10 +-
 include/clocksource/arm_arch_timer.h              |   10 +-
 include/linux/acpi_iort.h                         |    4 +-
 include/linux/cpuhotplug.h                        |    3 +
 include/linux/irqdesc.h                           |    8 +
 include/linux/regset.h                            |   67 +-
 include/uapi/linux/elf.h                          |    1 +
 include/uapi/linux/perf_event.h                   |    1 +
 include/uapi/linux/prctl.h                        |    9 +
 kernel/events/ring_buffer.c                       |    4 +
 kernel/irq/irqdesc.c                              |    1 +
 kernel/sys.c                                      |   12 +
 virt/kvm/arm/arm.c                                |    3 +
 97 files changed, 7399 insertions(+), 601 deletions(-)
 create mode 100644 Documentation/arm64/elf_hwcaps.txt
 create mode 100644 Documentation/arm64/sve.txt
 create mode 100644 Documentation/devicetree/bindings/arm/spe-pmu.txt
 create mode 100644 Documentation/perf/hisi-pmu.txt
 create mode 100644 arch/arm64/include/asm/daifflags.h
 create mode 100644 arch/arm64/lib/tishift.S
 create mode 100644 drivers/perf/arm_spe_pmu.c
 create mode 100644 drivers/perf/hisilicon/Makefile
 create mode 100644 drivers/perf/hisilicon/hisi_uncore_ddrc_pmu.c
 create mode 100644 drivers/perf/hisilicon/hisi_uncore_hha_pmu.c
 create mode 100644 drivers/perf/hisilicon/hisi_uncore_l3c_pmu.c
 create mode 100644 drivers/perf/hisilicon/hisi_uncore_pmu.c
 create mode 100644 drivers/perf/hisilicon/hisi_uncore_pmu.h



More information about the linux-arm-kernel mailing list