[GIT PULL] arm64 updates

From: Catalin Marinas
Date: Wed Mar 13 2024 - 12:00:50 EST


Hi Linus,

Please pull the arm64 updates below for 6.9-rc1. The major features are
support for LPA2 (52-bit VA/PA with 4K and 16K pages), the dpISA
extension and Rust enabled on arm64. The changes are mostly contained
within the usual arch/arm64/, drivers/perf, the arm64 Documentation and
kselftests. The exception is the Rust support which touches some generic
build files.

There are two last-minute reverts: enabling CPUMASK_OFFSTACK on arm64
seems to have caused some issue with the cpufreq/opp drivers (still
debugging); the other is SCTLR_EL1.WXN hardening on arm64, the feature
is no longer applicable with permissions indirection, so the approach
needs revisiting.

So far there's a single conflict with your tree in rust/Makefile:

------------------------8<-----------------------------
diff --cc rust/Makefile
index a78fcf4004b0,fe045dbc701e..1eaefc34f4b7
--- a/rust/Makefile
+++ b/rust/Makefile
@@@ -434,8 -435,11 +435,11 @@@ $(obj)/core.o: private skip_clippy =
$(obj)/core.o: private skip_flags = -Dunreachable_pub
$(obj)/core.o: private rustc_objcopy = $(foreach sym,$(redirect-intrinsics),--redefine-sym $(sym)=__rust$(sym))
$(obj)/core.o: private rustc_target_flags = $(core-cfgs)
- $(obj)/core.o: $(RUST_LIB_SRC)/core/src/lib.rs scripts/target.json FORCE
+ $(obj)/core.o: $(RUST_LIB_SRC)/core/src/lib.rs FORCE
- $(call if_changed_dep,rustc_library)
+ +$(call if_changed_dep,rustc_library)
+ ifneq ($(or $(CONFIG_X86_64),$(CONFIG_LOONGARCH)),)
+ $(obj)/core.o: scripts/target.json
+ endif

$(obj)/compiler_builtins.o: private rustc_objcopy = -w -W '__*'
$(obj)/compiler_builtins.o: $(src)/compiler_builtins.rs $(obj)/core.o FORCE
------------------------8<-----------------------------

I'll expect one or two more conflicts with the KVM tree when that gets
pulled in but the resolutions in -next are correct.

Thanks.

The following changes since commit 54be6c6c5ae8e0d93a6c4641cb7528eb0b6ba478:

Linux 6.8-rc3 (2024-02-04 12:20:36 +0000)

are available in the Git repository at:

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

for you to fetch changes up to 1ef21fcd6a50f011680dbbd678c1bea8e3f67ab9:

Revert "mm: add arch hook to validate mmap() prot flags" (2024-03-13 10:59:38 +0000)

----------------------------------------------------------------
arm64 updates for 6.9:

* Reorganise the arm64 kernel VA space and add support for LPA2 (at
stage 1, KVM stage 2 was merged earlier) - 52-bit VA/PA address range
with 4KB and 16KB pages

* Enable Rust on arm64

* Support for the 2023 dpISA extensions (data processing ISA), host only

* arm64 perf updates:

- StarFive's StarLink (integrates one or more CPU cores with a shared
L3 memory system) PMU support

- Enable HiSilicon Erratum 162700402 quirk for HIP09

- Several updates for the HiSilicon PCIe PMU driver

- Arm CoreSight PMU support

- Convert all drivers under drivers/perf/ to use .remove_new()

* Miscellaneous:

- Don't enable workarounds for "rare" errata by default

- Clean up the DAIF flags handling for EL0 returns (in preparation for
NMI support)

- Kselftest update for ptrace()

- Update some of the sysreg field definitions

- Slight improvement in the code generation for inline asm I/O
accessors to permit offset addressing

- kretprobes: acquire regs via a BRK exception (previously done via a
trampoline handler)

- SVE/SME cleanups, comment updates

- Allow CALL_OPS+CC_OPTIMIZE_FOR_SIZE with clang (previously disabled
due to gcc silently ignoring -falign-functions=N)

----------------------------------------------------------------
Anshuman Khandual (4):
arm64/sysreg: Add register fields for ID_AA64DFR1_EL1
arm64/sysreg: Update ID_DFR0_EL1 register fields
arm64/sysreg: Update ID_AA64DFR0_EL1 register
arm64/hw_breakpoint: Directly use ESR_ELx_WNR for an watchpoint exception

Ard Biesheuvel (53):
arm64: mm: Move PCI I/O emulation region above the vmemmap region
arm64: mm: Move fixmap region above vmemmap region
arm64: ptdump: Allow all region boundaries to be defined at boot time
arm64: ptdump: Discover start of vmemmap region at runtime
arm64: vmemmap: Avoid base2 order of struct page size to dimension region
arm64: mm: Reclaim unused vmemmap region for vmalloc use
arm64: kaslr: Adjust randomization range dynamically
arm64: kernel: Manage absolute relocations in code built under pi/
arm64: kernel: Don't rely on objcopy to make code under pi/ __init
arm64: head: move relocation handling to C code
arm64: idreg-override: Move to early mini C runtime
arm64: kernel: Remove early fdt remap code
arm64: head: Clear BSS and the kernel page tables in one go
arm64: Move feature overrides into the BSS section
arm64: head: Run feature override detection before mapping the kernel
arm64: head: move dynamic shadow call stack patching into early C runtime
arm64: cpufeature: Add helper to test for CPU feature overrides
arm64: kaslr: Use feature override instead of parsing the cmdline again
arm64: idreg-override: Create a pseudo feature for rodata=off
arm64: Add helpers to probe local CPU for PAC and BTI support
arm64: head: allocate more pages for the kernel mapping
arm64: head: move memstart_offset_seed handling to C code
arm64: mm: Make kaslr_requires_kpti() a static inline
arm64: mmu: Make __cpu_replace_ttbr1() out of line
arm64: head: Move early kernel mapping routines into C code
arm64: mm: Use 48-bit virtual addressing for the permanent ID map
arm64: pgtable: Decouple PGDIR size macros from PGD/PUD/PMD levels
arm64: kernel: Create initial ID map from C code
arm64: mm: avoid fixmap for early swapper_pg_dir updates
arm64: mm: omit redundant remap of kernel image
arm64: Revert "mm: provide idmap pointer to cpu_replace_ttbr1()"
arm64: mm: Handle LVA support as a CPU feature
arm64: mm: Add feature override support for LVA
arm64: Avoid #define'ing PTE_MAYBE_NG to 0x0 for asm use
arm64: Add ESR decoding for exceptions involving translation level -1
arm64: mm: Wire up TCR.DS bit to PTE shareability fields
arm64: mm: Add LPA2 support to phys<->pte conversion routines
arm64: mm: Add definitions to support 5 levels of paging
arm64: mm: add LPA2 and 5 level paging support to G-to-nG conversion
arm64: Enable LPA2 at boot if supported by the system
arm64: mm: Add 5 level paging support to fixmap and swapper handling
arm64: kasan: Reduce minimum shadow alignment and enable 5 level paging
arm64: mm: Add support for folding PUDs at runtime
arm64: ptdump: Disregard unaddressable VA space
arm64: ptdump: Deal with translation levels folded at runtime
arm64: kvm: avoid CONFIG_PGTABLE_LEVELS for runtime levels
arm64: Enable 52-bit virtual addressing for 4k and 16k granule configs
arm64: defconfig: Enable LPA2 support
mm: add arch hook to validate mmap() prot flags
arm64: mm: add support for WXN memory translation attribute
arm64: mm: Make PUD folding check in set_pud() a runtime check
arm64/mm: Use generic __pud_free() helper in pud_free() implementation
arm64/mm: Avoid ID mapping of kpti flag if it is no longer needed

Bartosz Golaszewski (1):
arm64: gitignore: ignore relacheck

Catalin Marinas (5):
Merge branches 'for-next/reorg-va-space', 'for-next/rust-for-arm64', 'for-next/misc', 'for-next/daif-cleanup', 'for-next/kselftest', 'for-next/documentation', 'for-next/sysreg' and 'for-next/dpisa', remote-tracking branch 'arm64/for-next/perf' into for-next/core
Merge branch 'for-next/stage1-lpa2' into for-next/core
Revert "ARM64: Dynamically allocate cpumasks and increase supported CPUs to 512"
Revert "arm64: mm: add support for WXN memory translation attribute"
Revert "mm: add arch hook to validate mmap() prot flags"

Christoph Lameter (Ampere) (1):
ARM64: Dynamically allocate cpumasks and increase supported CPUs to 512

Dawei Li (1):
arm64: remove unneeded BUILD_BUG_ON assertion

Jamie Cunliffe (2):
rust: Refactor the build target to allow the use of builtin targets
arm64: rust: Enable Rust support for AArch64

Ji Sheng Teoh (4):
perf: starfive: Add StarLink PMU support
dt-bindings: perf: starfive: Add JH8100 StarLink PMU
docs: perf: Add description for StarFive's StarLink PMU
MAINTAINERS: Add entry for StarFive StarLink PMU

Jinjie Ruan (1):
arm64: Remove enable_daif macro

Junhao He (5):
drivers/perf: hisi: Enable HiSilicon Erratum 162700402 quirk for HIP09
drivers/perf: hisi_pcie: Check the target filter properly
drivers/perf: hisi_pcie: Relax the check on related events
drivers/perf: hisi_pcie: Merge find_related_event() and get_event_idx()
docs: perf: Update usage for target filter of hisi-pcie-pmu

Kemeng Shi (1):
arm64: make member of struct pt_regs and it's offset macro in the same order

Leonardo Bras (1):
arm64: remove unnecessary ifdefs around is_compat_task()

Liao Chang (1):
arm64: cpufeatures: Clean up temporary variable to simplify code

Marc Zyngier (1):
arm64: Use Signed/Unsigned enums for TGRAN{4,16,64} and VARange

Mark Brown (17):
kselftest/arm64: Test that ptrace takes effect in the target process
arm64/sve: Remove bitrotted comment about syscall behaviour
arm64/sme: Fix cut'n'paste in ABI document
arm64/fp: Clarify effect of setting an unsupported system VL
arm64/sme: Remove spurious 'is' in SME documentation
arm64/sve: Document that __SVE_VQ_MAX is much larger than needed
arm64/sve: Ensure that all fields in ZCR_EL1 are set to known values
arm64/sme: Ensure that all fields in SMCR_EL1 are set to known values
arm64/cpufeature: Hook new identification registers up to cpufeature
arm64/fpsimd: Enable host kernel access to FPMR
arm64/fpsimd: Support FEAT_FPMR
arm64/signal: Add FPMR signal handling
arm64/ptrace: Expose FPMR via ptrace
arm64/hwcap: Define hwcaps for 2023 DPISA features
kselftest/arm64: Handle FPMR context in generic signal frame parser
kselftest/arm64: Add basic FPMR test
kselftest/arm64: Add 2023 DPISA hwcap test coverage

Mark Rutland (5):
arm64: io: permit offset addressing
arm64: Simplify do_notify_resume() DAIF masking
arm64: Move do_notify_resume() to entry-common.c
arm64: Unmask Debug + SError in do_notify_resume()
arm64: kretprobes: acquire the regs via a BRK exception

Robin Murphy (6):
perf/arm-cmn: Improve debugfs pretty-printing for large configs
perf/arm_cspmu: Simplify initialisation
perf/arm_cspmu: Simplify attribute groups
perf/arm_cspmu: Simplify counter reset
dt-bindings/perf: Add Arm CoreSight PMU
perf/arm_cspmu: Add devicetree support

Ryo Takakura (1):
arm64: Update setup_arch() comment on interrupt masking

Stephen Boyd (1):
arm64: ftrace: Don't forbid CALL_OPS+CC_OPTIMIZE_FOR_SIZE with Clang

Uwe Kleine-König (18):
perf: alibaba_uncore_drw: Convert to platform remove callback returning void
perf: amlogic: Convert to platform remove callback returning void
perf: arm-cci: Convert to platform remove callback returning void
perf: arm-ccn: Convert to platform remove callback returning void
perf: arm-cmn: Convert to platform remove callback returning void
perf: arm_cspmu: Convert to platform remove callback returning void
perf: arm_dmc620: Convert to platform remove callback returning void
perf: arm_dsu: Convert to platform remove callback returning void
perf: arm_smmuv3: Convert to platform remove callback returning void
perf: arm_spe: Convert to platform remove callback returning void
perf: fsl_imx8_ddr: Convert to platform remove callback returning void
perf: fsl_imx9_ddr: Convert to platform remove callback returning void
perf: hisilicon: Convert to platform remove callback returning void
perf: marvell_cn10k_ddr: Convert to platform remove callback returning void
perf: marvell_cn10k_tad: Convert to platform remove callback returning void
perf: qcom_l2: Convert to platform remove callback returning void
perf: thunderx2: Convert to platform remove callback returning void
perf: xgene: Convert to platform remove callback returning void

Will Deacon (2):
arm64: errata: Don't enable workarounds for "rare" errata by default
perf: starfive: Only allow COMPILE_TEST for 64-bit architectures

Yicong Yang (5):
drivers/perf: hisi_pcie: Rename hisi_pcie_pmu_{config,clear}_filter()
drivers/perf: hisi_pcie: Introduce hisi_pcie_pmu_get_event_ctrl_val()
drivers/perf: hisi_pcie: Fix incorrect counting under metric mode
drivers/perf: hisi_pcie: Add more events for counting TLP bandwidth
docs: perf: Fix build warning of hisi-pcie-pmu.rst

Documentation/admin-guide/perf/hisi-pcie-pmu.rst | 32 +-
Documentation/admin-guide/perf/index.rst | 1 +
.../admin-guide/perf/starfive_starlink_pmu.rst | 46 +
Documentation/arch/arm64/elf_hwcaps.rst | 49 +
Documentation/arch/arm64/silicon-errata.rst | 5 +-
Documentation/arch/arm64/sme.rst | 11 +-
Documentation/arch/arm64/sve.rst | 10 +-
.../bindings/perf/arm,coresight-pmu.yaml | 39 +
.../perf/starfive,jh8100-starlink-pmu.yaml | 46 +
Documentation/rust/arch-support.rst | 1 +
MAINTAINERS | 7 +
Makefile | 1 -
arch/arm64/Kconfig | 55 +-
arch/arm64/Makefile | 4 +
arch/arm64/configs/defconfig | 1 -
arch/arm64/include/asm/archrandom.h | 2 -
arch/arm64/include/asm/assembler.h | 59 +-
arch/arm64/include/asm/brk-imm.h | 2 +
arch/arm64/include/asm/cpu.h | 3 +
arch/arm64/include/asm/cpufeature.h | 113 ++
arch/arm64/include/asm/elf.h | 10 +-
arch/arm64/include/asm/esr.h | 13 +-
arch/arm64/include/asm/exception.h | 2 +-
arch/arm64/include/asm/fixmap.h | 2 +-
arch/arm64/include/asm/fpsimd.h | 4 +-
arch/arm64/include/asm/hw_breakpoint.h | 1 -
arch/arm64/include/asm/hwcap.h | 15 +
arch/arm64/include/asm/io.h | 12 +-
arch/arm64/include/asm/kasan.h | 2 -
arch/arm64/include/asm/kernel-pgtable.h | 103 +-
arch/arm64/include/asm/kvm_arm.h | 2 +-
arch/arm64/include/asm/kvm_emulate.h | 10 +-
arch/arm64/include/asm/kvm_host.h | 1 +
arch/arm64/include/asm/memory.h | 31 +-
arch/arm64/include/asm/mmu.h | 40 +-
arch/arm64/include/asm/mmu_context.h | 53 +-
arch/arm64/include/asm/pgalloc.h | 52 +-
arch/arm64/include/asm/pgtable-hwdef.h | 33 +-
arch/arm64/include/asm/pgtable-prot.h | 20 +-
arch/arm64/include/asm/pgtable-types.h | 6 +
arch/arm64/include/asm/pgtable.h | 237 ++-
arch/arm64/include/asm/processor.h | 4 +
arch/arm64/include/asm/scs.h | 36 +-
arch/arm64/include/asm/setup.h | 3 -
arch/arm64/include/asm/tlb.h | 3 +
arch/arm64/include/uapi/asm/hwcap.h | 15 +
arch/arm64/include/uapi/asm/sigcontext.h | 8 +
arch/arm64/include/uapi/asm/sve_context.h | 11 +
arch/arm64/kernel/Makefile | 13 +-
arch/arm64/kernel/asm-offsets.c | 2 +-
arch/arm64/kernel/cpufeature.c | 182 ++-
arch/arm64/kernel/cpuinfo.c | 18 +
arch/arm64/kernel/entry-common.c | 36 +-
arch/arm64/kernel/fpsimd.c | 18 +
arch/arm64/kernel/head.S | 463 +-----
arch/arm64/kernel/hw_breakpoint.c | 3 +-
arch/arm64/kernel/image-vars.h | 35 +
arch/arm64/kernel/kaslr.c | 4 +-
arch/arm64/kernel/module.c | 2 +-
arch/arm64/kernel/pi/.gitignore | 3 +
arch/arm64/kernel/pi/Makefile | 27 +-
arch/arm64/kernel/{ => pi}/idreg-override.c | 78 +-
arch/arm64/kernel/pi/kaslr_early.c | 82 +-
arch/arm64/kernel/pi/map_kernel.c | 253 ++++
arch/arm64/kernel/pi/map_range.c | 105 ++
arch/arm64/kernel/{ => pi}/patch-scs.c | 36 +-
arch/arm64/kernel/pi/pi.h | 36 +
arch/arm64/kernel/pi/relacheck.c | 130 ++
arch/arm64/kernel/pi/relocate.c | 64 +
arch/arm64/kernel/probes/kprobes.c | 21 +-
arch/arm64/kernel/probes/kprobes_trampoline.S | 78 +-
arch/arm64/kernel/process.c | 3 -
arch/arm64/kernel/ptrace.c | 50 +-
arch/arm64/kernel/setup.c | 27 +-
arch/arm64/kernel/signal.c | 98 +-
arch/arm64/kernel/sleep.S | 3 -
arch/arm64/kernel/syscall.c | 5 +-
arch/arm64/kernel/vmlinux.lds.S | 17 +-
arch/arm64/kvm/fpsimd.c | 1 +
arch/arm64/kvm/mmu.c | 17 +-
arch/arm64/mm/fault.c | 30 +-
arch/arm64/mm/fixmap.c | 39 +-
arch/arm64/mm/init.c | 2 +-
arch/arm64/mm/kasan_init.c | 165 ++-
arch/arm64/mm/mmap.c | 4 +
arch/arm64/mm/mmu.c | 255 ++--
arch/arm64/mm/pgd.c | 17 +-
arch/arm64/mm/proc.S | 116 +-
arch/arm64/mm/ptdump.c | 77 +-
arch/arm64/tools/cpucaps | 2 +
arch/arm64/tools/sysreg | 43 +-
arch/loongarch/Makefile | 1 +
arch/x86/Makefile | 1 +
drivers/perf/Kconfig | 9 +
drivers/perf/Makefile | 1 +
drivers/perf/alibaba_uncore_drw_pmu.c | 6 +-
drivers/perf/amlogic/meson_g12_ddr_pmu.c | 6 +-
drivers/perf/arm-cci.c | 8 +-
drivers/perf/arm-ccn.c | 6 +-
drivers/perf/arm-cmn.c | 14 +-
drivers/perf/arm_cspmu/arm_cspmu.c | 159 ++-
drivers/perf/arm_cspmu/arm_cspmu.h | 1 +
drivers/perf/arm_cspmu/nvidia_cspmu.c | 6 -
drivers/perf/arm_dmc620_pmu.c | 6 +-
drivers/perf/arm_dsu_pmu.c | 6 +-
drivers/perf/arm_smmuv3_pmu.c | 6 +-
drivers/perf/arm_spe_pmu.c | 5 +-
drivers/perf/fsl_imx8_ddr_perf.c | 5 +-
drivers/perf/fsl_imx9_ddr_perf.c | 6 +-
drivers/perf/hisilicon/hisi_pcie_pmu.c | 102 +-
drivers/perf/hisilicon/hisi_uncore_cpa_pmu.c | 5 +-
drivers/perf/hisilicon/hisi_uncore_ddrc_pmu.c | 5 +-
drivers/perf/hisilicon/hisi_uncore_hha_pmu.c | 5 +-
drivers/perf/hisilicon/hisi_uncore_l3c_pmu.c | 5 +-
drivers/perf/hisilicon/hisi_uncore_pa_pmu.c | 5 +-
drivers/perf/hisilicon/hisi_uncore_sllc_pmu.c | 5 +-
drivers/perf/hisilicon/hisi_uncore_uc_pmu.c | 42 +-
drivers/perf/marvell_cn10k_ddr_pmu.c | 5 +-
drivers/perf/marvell_cn10k_tad_pmu.c | 6 +-
drivers/perf/qcom_l2_pmu.c | 5 +-
drivers/perf/starfive_starlink_pmu.c | 642 +++++++++
drivers/perf/thunderx2_pmu.c | 5 +-
drivers/perf/xgene_pmu.c | 6 +-
include/uapi/linux/elf.h | 1 +
rust/Makefile | 6 +-
scripts/Makefile | 4 +-
scripts/generate_rust_target.rs | 4 +-
tools/testing/selftests/arm64/abi/hwcap.c | 217 +++
tools/testing/selftests/arm64/fp/.gitignore | 1 +
tools/testing/selftests/arm64/fp/Makefile | 5 +-
tools/testing/selftests/arm64/fp/fp-ptrace-asm.S | 279 ++++
tools/testing/selftests/arm64/fp/fp-ptrace.c | 1503 ++++++++++++++++++++
tools/testing/selftests/arm64/fp/fp-ptrace.h | 13 +
tools/testing/selftests/arm64/signal/.gitignore | 1 +
.../arm64/signal/testcases/fpmr_siginfo.c | 82 ++
.../selftests/arm64/signal/testcases/testcases.c | 8 +
.../selftests/arm64/signal/testcases/testcases.h | 1 +
137 files changed, 5513 insertions(+), 1583 deletions(-)
create mode 100644 Documentation/admin-guide/perf/starfive_starlink_pmu.rst
create mode 100644 Documentation/devicetree/bindings/perf/arm,coresight-pmu.yaml
create mode 100644 Documentation/devicetree/bindings/perf/starfive,jh8100-starlink-pmu.yaml
create mode 100644 arch/arm64/kernel/pi/.gitignore
rename arch/arm64/kernel/{ => pi}/idreg-override.c (84%)
create mode 100644 arch/arm64/kernel/pi/map_kernel.c
create mode 100644 arch/arm64/kernel/pi/map_range.c
rename arch/arm64/kernel/{ => pi}/patch-scs.c (89%)
create mode 100644 arch/arm64/kernel/pi/pi.h
create mode 100644 arch/arm64/kernel/pi/relacheck.c
create mode 100644 arch/arm64/kernel/pi/relocate.c
create mode 100644 drivers/perf/starfive_starlink_pmu.c
create mode 100644 tools/testing/selftests/arm64/fp/fp-ptrace-asm.S
create mode 100644 tools/testing/selftests/arm64/fp/fp-ptrace.c
create mode 100644 tools/testing/selftests/arm64/fp/fp-ptrace.h
create mode 100644 tools/testing/selftests/arm64/signal/testcases/fpmr_siginfo.c