[GIT PULL] arm64 updates for 5.12

From: Will Deacon
Date: Mon Feb 15 2021 - 09:25:46 EST


Hi Linus,

Please pull these arm64 updates for 5.12. There's a summary in the tag
and we've only had a couple of trivial conflicts reported in -next, so
it should be plain sailing.

In terms of the diffstat, a couple of things stand out:

- The faultaround patches to initialise prefaulted PTEs as 'old'
bring in a bunch of changes to mm/, largely due to the rework from
Kirill.

- We have a change to drivers/char/random.c to avoid calling
arch_get_random_seed_long() from add_interrupt_randomness(). We
didn't have any luck getting a response from Ted on this [1], but
since we need this change in order to enable the firmware-backed
TRNG service, I've ended up including it here.

Cheers,

Will

[1] https://lore.kernel.org/linux-arm-kernel/CAMj1kXH2N_e722TiSU6_uUs_arjkBipwUnfD8=xj1etKE11DRQ@xxxxxxxxxxxxxx/

--->8

The following changes since commit 19c329f6808995b142b3966301f217c831e7cf31:

Linux 5.11-rc4 (2021-01-17 16:37:05 -0800)

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 1ffa9763828cf73a4d4eaa04c29a4a89fb0708c7:

Merge branch 'for-next/vdso' into for-next/core (2021-02-12 15:17:42 +0000)

----------------------------------------------------------------
arm64 updates for 5.12

- vDSO build improvements including support for building with BSD.

- Cleanup to the AMU support code and initialisation rework to support
cpufreq drivers built as modules.

- Removal of synthetic frame record from exception stack when entering
the kernel from EL0.

- Add support for the TRNG firmware call introduced by Arm spec
DEN0098.

- Cleanup and refactoring across the board.

- Avoid calling arch_get_random_seed_long() from
add_interrupt_randomness()

- Perf and PMU updates including support for Cortex-A78 and the v8.3
SPE extensions.

- Significant steps along the road to leaving the MMU enabled during
kexec relocation.

- Faultaround changes to initialise prefaulted PTEs as 'old' when
hardware access-flag updates are supported, which drastically
improves vmscan performance.

- CPU errata updates for Cortex-A76 (#1463225) and Cortex-A55
(#1024718)

- Preparatory work for yielding the vector unit at a finer granularity
in the crypto code, which in turn will one day allow us to defer
softirq processing when it is in use.

- Support for overriding CPU ID register fields on the command-line.

----------------------------------------------------------------
Andre Przywara (2):
firmware: smccc: Introduce SMCCC TRNG framework
arm64: Add support for SMCCC TRNG entropy source

Anshuman Khandual (1):
arm64/mm: Add warning for outside range requests in vmemmap_populate()

Ard Biesheuvel (3):
firmware: smccc: Add SMCCC TRNG function call IDs
random: avoid arch_get_random_seed_long() when collecting IRQ randomness
arm64: assembler: add cond_yield macro

Geert Uytterhoeven (1):
mm/nommu: Fix return type of filemap_map_pages()

Hailong Liu (1):
arm64/ptdump:display the Linear Mapping start marker

James Morse (2):
arm64: mm: Always update TCR_EL1 from __cpu_set_tcr_t0sz()
arm64: trans_pgd: hibernate: idmap the single page that holds the copy page routines

Joey Gouly (2):
arm64: vmlinux.ld.S: add assertion for reserved_pg_dir offset
arm64: vmlinux.ld.S: add assertion for tramp_pg_dir offset

John Millikin (1):
arm64: Support running gen_vdso_offsets.sh with BSD userland.

Keno Fischer (1):
arm64: ptrace: Fix missing return in hw breakpoint code

Kirill A. Shutemov (1):
mm: Cleanup faultaround and finish_fault() codepaths

Marc Zyngier (22):
arm64: Drop workaround for broken 'S' constraint with GCC 4.9
arm64: Fix labels in el2_setup macros
arm64: Fix outdated TCR setup comment
arm64: Turn the MMU-on sequence into a macro
arm64: Provide an 'upgrade to VHE' stub hypercall
arm64: Initialise as nVHE before switching to VHE
arm64: Drop early setting of MDSCR_EL2.TPMS
arm64: Move VHE-specific SPE setup to mutate_to_vhe()
arm64: Simplify init_el2_state to be non-VHE only
arm64: Move SCTLR_EL1 initialisation to EL-agnostic code
arm64: cpufeature: Add global feature override facility
arm64: cpufeature: Use IDreg override in __read_sysreg_by_encoding()
arm64: Extract early FDT mapping from kaslr_early_init()
arm64: cpufeature: Add an early command-line cpufeature override facility
arm64: Allow ID_AA64MMFR1_EL1.VH to be overridden from the command line
arm64: Honor VHE being disabled from the command-line
arm64: Add an aliasing facility for the idreg override
arm64: Make kvm-arm.mode={nvhe, protected} an alias of id_aa64mmfr1.vh=0
KVM: arm64: Document HVC_VHE_RESTART stub hypercall
arm64: Move "nokaslr" over to the early cpufeature infrastructure
arm64: cpufeatures: Allow disabling of BTI from the command-line
arm64: cpufeatures: Allow disabling of Pointer Auth from the command-line

Mark Rutland (2):
arm64: remove EL0 exception frame record
arm64: entry: consolidate Cortex-A76 erratum 1463225 workaround

Masahiro Yamada (1):
arm64: do not descend to vdso directories twice

Miaohe Lin (1):
mm/arm64: Correct obsolete comment in do_page_fault()

Nathan Chancellor (1):
arm64: Make CPU_BIG_ENDIAN depend on ld.bfd or ld.lld 13.0.0+

Pavel Tatashin (11):
arm64: kexec: make dtb_mem always enabled
arm64: hibernate: variable pudp is used instead of pd4dp
arm64: hibernate: move page handling function to new trans_pgd.c
arm64: trans_pgd: make trans_pgd_map_page generic
arm64: trans_pgd: pass allocator trans_pgd_create_copy
arm64: trans_pgd: pass NULL instead of init_mm to *_populate functions
arm64: kexec: move relocation function setup
arm64: kexec: call kexec_image_info only once
arm64: kexec: arm64_relocate_new_kernel clean-ups and optimizations
arm64: kexec: arm64_relocate_new_kernel don't use x0 as temp
arm64: hibernate: add __force attribute to gfp_t casting

Qi Liu (2):
drivers/perf: Prevent forced unbinding of ARM_DMC620_PMU drivers
drivers/perf: Replace spin_lock_irqsave to spin_lock

Quentin Perret (1):
KVM: arm64: Move __hyp_set_vectors out of .hyp.text

Rikard Falkeborn (5):
perf: qcom: Constify static struct attribute_group
perf/imx_ddr: Constify static struct attribute_group
perf: hisi: Constify static struct attribute_group
perf: Constify static struct attribute_group
arm64: perf: Constify static attribute_group structs

Robin Murphy (2):
perf/arm-cmn: Fix PMU instance naming
perf/arm-cmn: Move IRQs when migrating context

Seiya Wang (2):
arm64: perf: add support for Cortex-A78
dt-bindings: arm: add Cortex-A78 binding

Shaokun Zhang (2):
arm64: mm: Remove unused header file
arm64: cacheflush: Remove stale comment

Srinivas Ramana (1):
arm64: Defer enabling pointer authentication on boot core

Sudarshan Rajagopalan (1):
arm64/sparsemem: reduce SECTION_SIZE_BITS

Suzuki K Poulose (1):
arm64: Extend workaround for erratum 1024718 to all versions of Cortex-A55

Viresh Kumar (3):
arm64: topology: Avoid the have_policy check
arm64: topology: Reorder init_amu_fie() a bit
arm64: topology: Make AMUs work with modular cpufreq drivers

Wei Li (1):
drivers/perf: Add support for ARMv8.3-SPE

Will Deacon (23):
mm: Allow architectures to request 'old' entries when prefaulting
arm64: mm: Implement arch_wants_old_prefaulted_pte()
mm: Move immutable fields of 'struct vm_fault' into anonymous struct
mm: Pass 'address' to map to do_set_pte() and drop FAULT_FLAG_PREFAULT
mm: Avoid modifying vmf.address in __collapse_huge_page_swapin()
mm: Use static initialisers for immutable fields of 'struct vm_fault'
mm: Mark anonymous struct field of 'struct vm_fault' as 'const'
arm64: Include linux/io.h in mm/mmap.c
mm: filemap: Fix microblaze build failure with 'mmu_defconfig'
Merge branch 'for-next/cosmetic' into for-next/core
Merge branch 'for-next/cpufeature' into for-next/core
Merge branch 'for-next/crypto' into for-next/core
Merge branch 'for-next/errata' into for-next/core
Merge branch 'for-next/faultaround' into for-next/core
Merge branch 'for-next/kexec' into for-next/core
Merge branch 'for-next/misc' into for-next/core
Merge branch 'for-next/perf' into for-next/core
Merge branch 'for-next/random' into for-next/core
Merge branch 'for-next/rng' into for-next/core
Merge branch 'for-next/selftests' into for-next/core
Merge branch 'for-next/stacktrace' into for-next/core
Merge branch 'for-next/topology' into for-next/core
Merge branch 'for-next/vdso' into for-next/core

YANG LI (1):
arm64: mte: style: Simplify bool comparison

Zhiyuan Dai (1):
arm64: improve whitespace

Documentation/admin-guide/kernel-parameters.txt | 9 +
Documentation/admin-guide/perf/arm-cmn.rst | 2 +-
Documentation/devicetree/bindings/arm/pmu.yaml | 1 +
Documentation/virt/kvm/arm/hyp-abi.rst | 9 +
arch/arm/include/asm/archrandom.h | 10 +
arch/arm64/Kconfig | 11 +-
arch/arm64/Makefile | 10 +-
arch/arm64/include/asm/archrandom.h | 82 +++++-
arch/arm64/include/asm/asm-uaccess.h | 4 +-
arch/arm64/include/asm/assembler.h | 33 +++
arch/arm64/include/asm/cacheflush.h | 5 -
arch/arm64/include/asm/cpufeature.h | 11 +
arch/arm64/include/asm/el2_setup.h | 60 ++--
arch/arm64/include/asm/kexec.h | 5 +-
arch/arm64/include/asm/kvm_asm.h | 8 +-
arch/arm64/include/asm/memory.h | 12 +
arch/arm64/include/asm/mmu_context.h | 7 +-
arch/arm64/include/asm/pgtable.h | 12 +-
arch/arm64/include/asm/pointer_auth.h | 10 +
arch/arm64/include/asm/setup.h | 11 +
arch/arm64/include/asm/sparsemem.h | 23 +-
arch/arm64/include/asm/stackprotector.h | 1 +
arch/arm64/include/asm/sysreg.h | 9 +-
arch/arm64/include/asm/trans_pgd.h | 39 +++
arch/arm64/include/asm/uaccess.h | 2 +-
arch/arm64/include/asm/virt.h | 7 +-
arch/arm64/kernel/Makefile | 7 +-
arch/arm64/kernel/alternative.c | 2 +-
arch/arm64/kernel/asm-offsets.c | 3 +
arch/arm64/kernel/cpu_errata.c | 2 -
arch/arm64/kernel/cpufeature.c | 75 ++++-
arch/arm64/kernel/entry-common.c | 54 +++-
arch/arm64/kernel/entry.S | 14 +-
arch/arm64/kernel/head.S | 75 +----
arch/arm64/kernel/hibernate.c | 271 ++---------------
arch/arm64/kernel/hyp-stub.S | 115 +++++++-
arch/arm64/kernel/idreg-override.c | 216 ++++++++++++++
arch/arm64/kernel/kaslr.c | 43 +--
arch/arm64/kernel/machine_kexec.c | 57 ++--
arch/arm64/kernel/module-plts.c | 2 +-
arch/arm64/kernel/perf_event.c | 15 +-
arch/arm64/kernel/process.c | 4 +-
arch/arm64/kernel/ptrace.c | 1 +
arch/arm64/kernel/relocate_kernel.S | 48 +--
arch/arm64/kernel/setup.c | 15 +
arch/arm64/kernel/sleep.S | 1 +
arch/arm64/kernel/stacktrace.c | 13 +-
arch/arm64/kernel/syscall.c | 30 --
arch/arm64/kernel/topology.c | 115 ++++----
arch/arm64/kernel/traps.c | 2 +-
arch/arm64/kernel/{vdso/vdso.S => vdso-wrap.S} | 0
arch/arm64/kernel/vdso/Makefile | 1 -
arch/arm64/kernel/vdso/gen_vdso_offsets.sh | 2 +-
arch/arm64/kernel/{vdso32/vdso.S => vdso32-wrap.S} | 0
arch/arm64/kernel/vdso32/Makefile | 1 -
arch/arm64/kernel/vmlinux.lds.S | 8 +
arch/arm64/kvm/arm.c | 3 +
arch/arm64/kvm/hyp/nvhe/hyp-init.S | 2 +-
arch/arm64/mm/Makefile | 1 +
arch/arm64/mm/fault.c | 34 +--
arch/arm64/mm/mmap.c | 15 +-
arch/arm64/mm/mmu.c | 4 +-
arch/arm64/mm/proc.S | 16 +-
arch/arm64/mm/ptdump.c | 1 +
arch/arm64/mm/trans_pgd.c | 324 +++++++++++++++++++++
drivers/char/random.c | 15 +-
drivers/firmware/smccc/smccc.c | 6 +
drivers/perf/arm-cci.c | 7 +-
drivers/perf/arm-cmn.c | 19 +-
drivers/perf/arm_dmc620_pmu.c | 5 +-
drivers/perf/arm_pmu.c | 2 +-
drivers/perf/arm_smmuv3_pmu.c | 8 +-
drivers/perf/arm_spe_pmu.c | 23 +-
drivers/perf/fsl_imx8_ddr_perf.c | 10 +-
drivers/perf/hisilicon/hisi_uncore_ddrc_pmu.c | 2 +-
drivers/perf/hisilicon/hisi_uncore_hha_pmu.c | 2 +-
drivers/perf/hisilicon/hisi_uncore_l3c_pmu.c | 2 +-
drivers/perf/qcom_l2_pmu.c | 6 +-
drivers/perf/qcom_l3_pmu.c | 6 +-
drivers/perf/xgene_pmu.c | 5 +-
fs/xfs/xfs_file.c | 6 +-
include/linux/arm-smccc.h | 31 ++
include/linux/mm.h | 25 +-
include/linux/pgtable.h | 11 +
mm/filemap.c | 179 +++++++++---
mm/khugepaged.c | 37 ++-
mm/memory.c | 223 +++++---------
mm/nommu.c | 3 +-
mm/shmem.c | 6 +-
mm/swapfile.c | 11 +-
.../selftests/arm64/mte/check_buffer_fill.c | 2 +-
91 files changed, 1652 insertions(+), 985 deletions(-)
create mode 100644 arch/arm/include/asm/archrandom.h
create mode 100644 arch/arm64/include/asm/setup.h
create mode 100644 arch/arm64/include/asm/trans_pgd.h
create mode 100644 arch/arm64/kernel/idreg-override.c
rename arch/arm64/kernel/{vdso/vdso.S => vdso-wrap.S} (100%)
rename arch/arm64/kernel/{vdso32/vdso.S => vdso32-wrap.S} (100%)
create mode 100644 arch/arm64/mm/trans_pgd.c