[GIT PULL] arm64 updates for 5.4

From: Will Deacon
Date: Fri Sep 13 2019 - 06:24:31 EST


Hi Linus,

Here is the arm64 pull for 5.4 in anticipation of the merge window opening
next week. Although there isn't tonnes of code in terms of line count,
there are a fair few headline features which I've noted both in the tag
and also in the merge commits when I pulled everything together.

The part I'm most pleased with is that we had 35 contributors this time
around, which feels like a big jump from the usual small group of core
arm64 arch developers. Hopefully they all enjoyed it so much that they'll
continue to contribute, but we'll see.

The pull should be straightforward, but it's probably worth highlighting
the following:

* We've pulled in a branch from the risc-v folks which moves our CPU
topology code out to where it can be shared with others.

* There are a few small changes outside of the files we usually touch
(e.g. char/random.c) but these have all been reviewed/acked by the
relevant maintainers.

* There are a couple of very trivial conflicts in linux-next; one is in
arch/Kconfig with the Power tree where you can take both hunks, and the
other is the removal of our asm/dma-mapping.h file by Christoph where
you can just remove the file/ignore our change.

* I've renewed the expiry date on my pgp key, so you may need to refetch
from the kernel.org keys repository.

Cheers,

Will

--->8

The following changes since commit e21a712a9685488f5ce80495b37b9fdbe96c230d:

Linux 5.3-rc3 (2019-08-04 18:40:12 -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 e376897f424a1c807779a2635f62eb02d7e382f9:

arm64: remove __iounmap (2019-09-04 13:12:26 +0100)

----------------------------------------------------------------
arm64 updates for 5.4:

- 52-bit virtual addressing in the kernel

- New ABI to allow tagged user pointers to be dereferenced by syscalls

- Early RNG seeding by the bootloader

- Improve robustness of SMP boot

- Fix TLB invalidation in light of recent architectural clarifications

- Support for i.MX8 DDR PMU

- Remove direct LSE instruction patching in favour of static keys

- Function error injection using kprobes

- Support for the PPTT "thread" flag introduced by ACPI 6.3

- Move PSCI idle code into proper cpuidle driver

- Relaxation of implicit I/O memory barriers

- Build with RELR relocations when toolchain supports them

- Numerous cleanups and non-critical fixes

----------------------------------------------------------------
Andrew Murray (5):
jump_label: Don't warn on __exit jump entries
arm64: Use correct ll/sc atomic constraints
arm64: atomics: avoid out-of-line ll/sc atomics
arm64: avoid using hard-coded registers for LSE atomics
arm64: atomics: Remove atomic_ll_sc compilation unit

Andrey Konovalov (3):
arm64: untag user pointers in access_ok and __uaccess_mask_ptr
selftests, arm64: add a selftest for passing tagged pointers to kernel
selftests, arm64: fix uninitialized symbol in tags_test.c

Atish Patra (4):
dt-binding: cpu-topology: Move cpu-map to a common binding.
cpu-topology: Move cpu topology code to common code.
arm: Use common cpu_topology structure and functions.
RISC-V: Parse cpu topology during boot.

Bhupesh Sharma (1):
arm64/kexec: Use consistent convention of initializing 'kxec_buf.mem' with KEXEC_BUF_MEM_UNKNOWN

Catalin Marinas (3):
arm64: Introduce prctl() options to control the tagged user addresses ABI
arm64: Tighten the PR_{SET, GET}_TAGGED_ADDR_CTRL prctl() unused arguments
arm64: Change the tagged_addr sysctl control semantics to only prevent the opt-in

Christoph Hellwig (2):
arm64: unexport set_memory_x and set_memory_nx
arm64: remove __iounmap

Chuhong Yuan (1):
arm64: Replace strncmp with str_has_prefix

Geert Uytterhoeven (1):
arm64: Move TIF_* documentation to individual definitions

Hsin-Yi Wang (4):
arm64: map FDT as RW for early_init_dt_scan()
fdt: add support for rng-seed
arm64: kexec_file: add rng-seed support
fdt: Update CRC check for rng-seed

James Morse (1):
arm64: entry: Move ct_user_exit before any other exception

Jeremy Linton (2):
ACPI/PPTT: Add support for ACPI 6.3 thread flag
arm64: topology: Use PPTT to determine if PE is a thread

Joakim Zhang (2):
perf/imx_ddr: Add support for AXI ID filtering
docs/perf: Add documentation for the i.MX8 DDR PMU

Julien Grall (1):
arm64/ptrace: Fix typoes in sve_set() comment

Julien Thierry (1):
arm64: Remove unused assembly macro

Junhua Huang (1):
arm64: mm: free the initrd reserved memblock in a aligned manner

Kees Cook (1):
arm64/efi: Move variable assignments after SECTIONS

Leo Yan (2):
error-injection: Consolidate override function definition
arm64: Add support for function error injection

Leonard Crestez (1):
perf/imx_ddr: Add MODULE_DEVICE_TABLE

Lorenzo Pieralisi (7):
ACPI/IORT: Rename arm_smmu_v3_set_proximity() 'node' local variable
ARM: cpuidle: Remove useless header include
ARM: cpuidle: Remove overzealous error logging
drivers: firmware: psci: Decouple checker from generic ARM CPUidle
ARM: psci: cpuidle: Introduce PSCI CPUidle driver
ARM: psci: cpuidle: Enable PSCI CPUidle driver
PSCI: cpuidle: Refactor CPU suspend power_state parameter handling

Mark Brown (2):
arm64: Remove unused cpucap_multi_entry_cap_cpu_enable()
arm64: Clarify when cpu_enable() is called

Mark Rutland (9):
arm64: remove pointless __KERNEL__ guards
arm64: constify icache_policy_str[]
arm64: constify aarch64_insn_encoding_class[]
arm64: constify sys64_hook instances
arm64: memory: fix flipped VA space fallout
arm64: memory: rename VA_START to PAGE_END
kasan/arm64: fix CONFIG_KASAN_SW_TAGS && KASAN_INLINE
arm64: fix fixmap copy for 16K pages and 48-bit VA
arm64: kpti: ensure patched kernel text is fetched from PoU

Masahiro Yamada (2):
arm64: remove unneeded uapi/asm/stat.h
arm64: add arch/arm64/Kbuild

Michael Ellerman (1):
powerpc/Makefile: Always pass --synthetic to nm if supported

Miles Chen (1):
arm64: mm: print hexadecimal EC value in mem_abort_decode()

Nick Desaulniers (1):
arm64: prefer __section from compiler_attributes.h

Peter Collingbourne (1):
arm64: Add support for relocating the kernel with RELR relocations

Qian Cai (1):
arm64/prefetch: fix a -Wtype-limits warning

Raphael Gault (1):
arm64: perf_event: Add missing header needed for smp_processor_id()

Robin Murphy (2):
perf/smmuv3: Validate group size
perf/smmuv3: Validate groups for global filtering

Shaokun Zhang (1):
arm64: perf: Remove unused macro

Stephen Boyd (1):
perf: Remove dev_err() usage after platform_get_irq()

Steve Capper (12):
arm64: mm: Remove bit-masking optimisations for PAGE_OFFSET and VMEMMAP_START
arm64: mm: Flip kernel VA space
arm64: kasan: Switch to using KASAN_SHADOW_OFFSET
arm64: dump: De-constify VA_START and KASAN_SHADOW_START
arm64: mm: Introduce VA_BITS_MIN
arm64: mm: Introduce vabits_actual
arm64: mm: Logic to make offset_ttbr1 conditional
arm64: mm: Separate out vmemmap
arm64: mm: Modify calculation of VMEMMAP_SIZE
arm64: mm: Introduce 52-bit Kernel VAs
arm64: mm: Remove vabits_user
docs: arm64: Add layout and 52-bit info to memory document

Sudeep Holla (4):
Documentation: DT: arm: add support for sockets defining package boundaries
base: arch_topology: update Kconfig help description
MAINTAINERS: Add an entry for generic architecture topology
arm64: smp: disable hotplug on trusted OS resident CPU

Vincenzo Frascino (3):
arm64: Define Documentation/arm64/tagged-address-abi.rst
arm64: Add tagged-address-abi.rst to index.rst
arm64: Relax Documentation/arm64/tagged-pointers.rst

Will Deacon (32):
arm64: esr: Add ESR exception class encoding for trapped ERET
arm64: sysreg: Remove unused and rotting SCTLR_ELx field definitions
arm64: io: Relax implicit barriers in default I/O accessors
init/Kconfig: Fix infinite Kconfig recursion on PPC
arm64: mm: Simplify definition of virt_addr_valid()
arm64: mm: Really fix sparse warning in untagged_addr()
Merge tag 'common/for-v5.4-rc1/cpu-topology' of git://git.kernel.org/.../riscv/linux into for-next/cpu-topology
arm64: memory: Fix virt_addr_valid() using __is_lm_address()
arm64: memory: Ensure address tag is masked in conversion macros
arm64: memory: Rewrite default page_to_virt()/virt_to_page()
arm64: memory: Simplify virt_to_page() implementation
arm64: memory: Simplify _VA_START and _PAGE_OFFSET definitions
arm64: memory: Implement __tag_set() as common function
arm64: memory: Add comments to end of non-trivial #ifdef blocks
arm64: memory: Cosmetic cleanups
Revert "init/Kconfig: Fix infinite Kconfig recursion on PPC"
arm64: smp: Increase secondary CPU boot timeout value
arm64: smp: Don't enter kernel with NULL stack pointer or task struct
arm64: smp: Treat unknown boot failures as being 'stuck in kernel'
Revert "arm64: Remove unnecessary ISBs from set_{pte,pmd,pud}"
arm64: tlb: Ensure we execute an ISB following walk cache invalidation
arm64: mm: Add ISB instruction to set_pgd()
arm64: sysreg: Add some field definitions for PAR_EL1
arm64: mm: Ignore spurious translation faults taken from the kernel
arm64: kvm: Replace hardcoded '1' with SYS_PAR_EL1_F
arm64: lse: Remove unused 'alt_lse' assembly macro
arm64: asm: Kill 'asm/atomic_arch.h'
arm64: lse: Make ARM64_LSE_ATOMICS depend on JUMP_LABEL
arm64: atomics: Undefine internal macros after use
arm64: atomics: Use K constraint when toolchain appears to support it
Merge branches 'for-next/52-bit-kva', 'for-next/cpu-topology', 'for-next/error-injection', 'for-next/perf', 'for-next/psci-cpuidle', 'for-next/rng', 'for-next/smpboot', 'for-next/tbi' and 'for-next/tlbi' into for-next/core
Merge branch 'for-next/atomics' into for-next/core

Documentation/admin-guide/perf/imx-ddr.rst | 52 +++
Documentation/arm64/index.rst | 1 +
Documentation/arm64/kasan-offsets.sh | 27 ++
Documentation/arm64/memory.rst | 123 +++++--
Documentation/arm64/tagged-address-abi.rst | 156 ++++++++
Documentation/arm64/tagged-pointers.rst | 21 +-
.../{arm/topology.txt => cpu/cpu-topology.txt} | 256 ++++++++-----
MAINTAINERS | 16 +
Makefile | 4 +
arch/Kconfig | 14 +
arch/arm/include/asm/topology.h | 20 --
arch/arm/kernel/topology.c | 60 +---
arch/arm64/Kbuild | 6 +
arch/arm64/Kconfig | 43 ++-
arch/arm64/Makefile | 23 +-
arch/arm64/include/asm/assembler.h | 28 +-
arch/arm64/include/asm/atomic.h | 99 +++++-
arch/arm64/include/asm/atomic_ll_sc.h | 217 ++++++-----
arch/arm64/include/asm/atomic_lse.h | 395 +++++++--------------
arch/arm64/include/asm/cache.h | 2 +-
arch/arm64/include/asm/cmpxchg.h | 45 ++-
arch/arm64/include/asm/compat.h | 2 -
arch/arm64/include/asm/cpu_ops.h | 3 +
arch/arm64/include/asm/cpufeature.h | 28 +-
arch/arm64/include/asm/cputype.h | 21 +-
arch/arm64/include/asm/debug-monitors.h | 3 -
arch/arm64/include/asm/dma-mapping.h | 3 -
arch/arm64/include/asm/efi.h | 4 +-
arch/arm64/include/asm/esr.h | 3 +-
arch/arm64/include/asm/exception.h | 2 +
arch/arm64/include/asm/fpsimd.h | 2 +-
arch/arm64/include/asm/futex.h | 3 -
arch/arm64/include/asm/hw_breakpoint.h | 3 -
arch/arm64/include/asm/io.h | 10 +-
arch/arm64/include/asm/irqflags.h | 5 +-
arch/arm64/include/asm/kasan.h | 11 +-
arch/arm64/include/asm/lse.h | 49 ++-
arch/arm64/include/asm/memory.h | 141 ++++----
arch/arm64/include/asm/mmu.h | 2 +-
arch/arm64/include/asm/mmu_context.h | 4 +-
arch/arm64/include/asm/pci.h | 2 -
arch/arm64/include/asm/pgtable-hwdef.h | 2 +-
arch/arm64/include/asm/pgtable.h | 23 +-
arch/arm64/include/asm/pointer_auth.h | 2 +-
arch/arm64/include/asm/proc-fns.h | 2 -
arch/arm64/include/asm/processor.h | 15 +-
arch/arm64/include/asm/ptrace.h | 5 +
arch/arm64/include/asm/signal32.h | 2 -
arch/arm64/include/asm/sysreg.h | 32 +-
arch/arm64/include/asm/thread_info.h | 29 +-
arch/arm64/include/asm/tlbflush.h | 1 +
arch/arm64/include/asm/topology.h | 23 --
arch/arm64/include/asm/uaccess.h | 12 +-
arch/arm64/include/asm/vdso.h | 4 -
arch/arm64/include/asm/vdso_datapage.h | 4 -
arch/arm64/include/uapi/asm/stat.h | 17 -
arch/arm64/kernel/cpufeature.c | 2 +-
arch/arm64/kernel/cpuidle.c | 50 ++-
arch/arm64/kernel/cpuinfo.c | 2 +-
arch/arm64/kernel/entry.S | 36 +-
arch/arm64/kernel/head.S | 116 +++++-
arch/arm64/kernel/hibernate-asm.S | 8 +-
arch/arm64/kernel/hibernate.c | 2 +-
arch/arm64/kernel/image-vars.h | 51 +++
arch/arm64/kernel/image.h | 42 ---
arch/arm64/kernel/insn.c | 2 +-
arch/arm64/kernel/kaslr.c | 11 +-
arch/arm64/kernel/kexec_image.c | 2 +-
arch/arm64/kernel/machine_kexec_file.c | 22 +-
arch/arm64/kernel/module-plts.c | 2 +-
arch/arm64/kernel/perf_event.c | 2 +-
arch/arm64/kernel/process.c | 76 ++++
arch/arm64/kernel/psci.c | 10 +-
arch/arm64/kernel/ptrace.c | 2 +-
arch/arm64/kernel/setup.c | 20 +-
arch/arm64/kernel/smp.c | 4 +-
arch/arm64/kernel/smp_spin_table.c | 2 +-
arch/arm64/kernel/topology.c | 312 +---------------
arch/arm64/kernel/traps.c | 20 +-
arch/arm64/kernel/vmlinux.lds.S | 11 +
arch/arm64/kvm/hyp/switch.c | 2 +-
arch/arm64/kvm/va_layout.c | 14 +-
arch/arm64/lib/Makefile | 21 +-
arch/arm64/lib/atomic_ll_sc.c | 3 -
arch/arm64/lib/error-inject.c | 18 +
arch/arm64/mm/dump.c | 24 +-
arch/arm64/mm/fault.c | 44 ++-
arch/arm64/mm/init.c | 35 +-
arch/arm64/mm/ioremap.c | 4 +-
arch/arm64/mm/kasan_init.c | 9 +-
arch/arm64/mm/mmu.c | 32 +-
arch/arm64/mm/numa.c | 2 +-
arch/arm64/mm/pageattr.c | 2 -
arch/arm64/mm/proc.S | 20 +-
arch/powerpc/Makefile | 2 -
arch/powerpc/include/asm/error-injection.h | 13 -
arch/riscv/Kconfig | 1 +
arch/riscv/kernel/smpboot.c | 3 +
arch/x86/include/asm/error-injection.h | 13 -
drivers/acpi/arm64/iort.c | 6 +-
drivers/acpi/pptt.c | 53 ++-
drivers/base/Kconfig | 2 +-
drivers/base/arch_topology.c | 298 ++++++++++++++++
drivers/char/Kconfig | 9 +
drivers/char/random.c | 14 +
drivers/cpuidle/Kconfig.arm | 10 +
drivers/cpuidle/Makefile | 1 +
drivers/cpuidle/cpuidle-arm.c | 13 +-
drivers/cpuidle/cpuidle-psci.c | 236 ++++++++++++
drivers/firmware/psci/psci.c | 167 +--------
drivers/firmware/psci/psci_checker.c | 16 +-
drivers/of/fdt.c | 14 +
drivers/perf/arm_smmuv3_pmu.c | 65 +++-
drivers/perf/fsl_imx8_ddr_perf.c | 75 +++-
drivers/perf/hisilicon/hisi_uncore_ddrc_pmu.c | 4 +-
drivers/perf/hisilicon/hisi_uncore_hha_pmu.c | 4 +-
drivers/perf/hisilicon/hisi_uncore_l3c_pmu.c | 4 +-
drivers/perf/qcom_l2_pmu.c | 6 +-
drivers/perf/xgene_pmu.c | 4 +-
include/asm-generic/error-injection.h | 6 +
include/linux/acpi.h | 5 +
include/linux/arch_topology.h | 26 ++
include/linux/cpuidle.h | 17 +-
include/linux/error-injection.h | 6 +-
include/linux/psci.h | 4 +-
include/linux/random.h | 1 +
include/linux/topology.h | 1 +
include/uapi/linux/prctl.h | 5 +
init/Kconfig | 3 +
kernel/jump_label.c | 4 +-
kernel/sys.c | 16 +
scripts/Makefile.kasan | 11 +-
scripts/tools-support-relr.sh | 16 +
tools/testing/selftests/arm64/.gitignore | 1 +
tools/testing/selftests/arm64/Makefile | 11 +
tools/testing/selftests/arm64/run_tags_test.sh | 12 +
tools/testing/selftests/arm64/tags_test.c | 31 ++
137 files changed, 2687 insertions(+), 1641 deletions(-)
create mode 100644 Documentation/admin-guide/perf/imx-ddr.rst
create mode 100644 Documentation/arm64/kasan-offsets.sh
create mode 100644 Documentation/arm64/tagged-address-abi.rst
rename Documentation/devicetree/bindings/{arm/topology.txt => cpu/cpu-topology.txt} (66%)
create mode 100644 arch/arm64/Kbuild
delete mode 100644 arch/arm64/include/uapi/asm/stat.h
create mode 100644 arch/arm64/kernel/image-vars.h
delete mode 100644 arch/arm64/lib/atomic_ll_sc.c
create mode 100644 arch/arm64/lib/error-inject.c
delete mode 100644 arch/powerpc/include/asm/error-injection.h
delete mode 100644 arch/x86/include/asm/error-injection.h
create mode 100644 drivers/cpuidle/cpuidle-psci.c
create mode 100755 scripts/tools-support-relr.sh
create mode 100644 tools/testing/selftests/arm64/.gitignore
create mode 100644 tools/testing/selftests/arm64/Makefile
create mode 100755 tools/testing/selftests/arm64/run_tags_test.sh
create mode 100644 tools/testing/selftests/arm64/tags_test.c