2023-10-27 18:19:58

by Catalin Marinas

[permalink] [raw]
Subject: [GIT PULL] arm64 updates for 6.7

Hi Linus,

Here's the main arm64 pull request for 6.7. No major architecture
features this time around, just some new HWCAP definitions, support for
the Ampere SoC PMUs and a few fixes/cleanups. The bulk of the changes is
reworking of the CPU capability checking code (cpus_have_cap() etc).
Thanks.

The following changes since commit 6465e260f48790807eef06b583b38ca9789b6072:

Linux 6.6-rc3 (2023-09-24 14:31:13 -0700)

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 14dcf78a6c042dd9421b11485b394c6273568bca:

Merge branch 'for-next/cpus_have_const_cap' into for-next/core (2023-10-26 17:10:18 +0100)

----------------------------------------------------------------
arm64 updates for 6.7:

* Major refactoring of the CPU capability detection logic resulting in
the removal of the cpus_have_const_cap() function and migrating the
code to "alternative" branches where possible

* Backtrace/kgdb: use IPIs and pseudo-NMI

* Perf and PMU:

- Add support for Ampere SoC PMUs

- Multi-DTC improvements for larger CMN configurations with multiple
Debug & Trace Controllers

- Rework the Arm CoreSight PMU driver to allow separate registration of
vendor backend modules

- Fixes: add missing MODULE_DEVICE_TABLE to the amlogic perf
driver; use device_get_match_data() in the xgene driver; fix NULL
pointer dereference in the hisi driver caused by calling
cpuhp_state_remove_instance(); use-after-free in the hisi driver

* HWCAP updates:

- FEAT_SVE_B16B16 (BFloat16)

- FEAT_LRCPC3 (release consistency model)

- FEAT_LSE128 (128-bit atomic instructions)

* SVE: remove a couple of pseudo registers from the cpufeature code.
There is logic in place already to detect mismatched SVE features

* Miscellaneous:

- Reduce the default swiotlb size (currently 64MB) if no ZONE_DMA
bouncing is needed. The buffer is still required for small kmalloc()
buffers

- Fix module PLT counting with !RANDOMIZE_BASE

- Restrict CPU_BIG_ENDIAN to LLVM IAS 15.x or newer move
synchronisation code out of the set_ptes() loop

- More compact cpufeature displaying enabled cores

- Kselftest updates for the new CPU features

----------------------------------------------------------------
Andre Przywara (1):
clocksource/drivers/arm_arch_timer: limit XGene-1 workaround

Anshuman Khandual (2):
drivers: perf: arm_pmuv3: Read PMMIR_EL1 unconditionally
drivers: perf: arm_pmuv3: Drop some unused arguments from armv8_pmu_init()

Besar Wicaksono (1):
perf: arm_cspmu: Separate Arm and vendor module

Catalin Marinas (7):
arm64: swiotlb: Reduce the default size if no ZONE_DMA bouncing needed
arm64: Mark the 'addr' argument to set_ptes() and __set_pte_at() as unused
Merge branches 'for-next/sve-remove-pseudo-regs', 'for-next/backtrace-ipi', 'for-next/kselftest', 'for-next/misc' and 'for-next/cpufeat-display-cores', remote-tracking branch 'arm64/for-next/perf' into for-next/core
Merge branch 'for-next/feat_sve_b16b16' into for-next/core
Merge branch 'for-next/feat_lrcpc3' into for-next/core
Merge branch 'for-next/feat_lse128' into for-next/core
Merge branch 'for-next/cpus_have_const_cap' into for-next/core

Douglas Anderson (7):
irqchip/gic-v3: Enable support for SGIs to act as NMIs
arm64: idle: Tag the arm64 idle functions as __cpuidle
arm64: smp: Add arch support for backtrace using pseudo-NMI
arm64: smp: IPI_CPU_STOP and IPI_CPU_CRASH_STOP should try for NMI
arm64: kgdb: Implement kgdb_roundup_cpus() to enable pseudo-NMI roundup
arm64: smp: Mark IPI globals as __ro_after_init
arm64: smp: Don't directly call arch_smp_send_reschedule() for wakeup

Gavin Shan (1):
arm64: Remove system_uses_lse_atomics()

Hao Chen (1):
drivers/perf: hisi: use cpuhp_state_remove_instance_nocalls() for hisi_hns3_pmu uninit process

Ilkka Koskinen (5):
perf: arm_cspmu: Split 64-bit write to 32-bit writes
perf: arm_cspmu: Support implementation specific filters
perf: arm_cspmu: Support implementation specific validation
perf: arm_cspmu: ampere_cspmu: Add support for Ampere SoC PMU
docs/perf: Add ampere_cspmu to toctree to fix a build warning

James Morse (1):
arm64, irqchip/gic-v3, ACPI: Move MADT GICC enabled check into a helper

Jeremy Linton (2):
arm64: cpufeature: Display the set of cores with a feature
arm64: cpufeature: Change DBM to display enabled cores

Joey Gouly (4):
arm64: add FEAT_LRCPC3 HWCAP
selftests/arm64: add HWCAP2_LRCPC3 test
arm64: add FEAT_LSE128 HWCAP
kselftest/arm64: add FEAT_LSE128 to hwcap test

Junhao He (1):
perf: hisi: Fix use-after-free when register pmu fails

Marek Szyprowski (1):
perf/amlogic: add missing MODULE_DEVICE_TABLE

Maria Yu (1):
arm64: module: Fix PLT counting when CONFIG_RANDOMIZE_BASE=n

Mark Brown (5):
arm64/sve: Remove ZCR pseudo register from cpufeature code
arm64/sve: Remove SMCR pseudo register from cpufeature code
kselftest/arm64: Validate SVCR in streaming SVE stress test
arm64/sve: Report FEAT_SVE_B16B16 to userspace
kselftest/arm64: Verify HWCAP2_SVE_B16B16

Mark Rutland (40):
arm64: smp: Remove dedicated wakeup IPI
arm64: smp: avoid NMI IPIs with broken MediaTek FW
clocksource/drivers/arm_arch_timer: Initialize evtstrm after finalizing cpucaps
arm64/arm: xen: enlighten: Fix KPTI checks
arm64: Factor out cpucap definitions
arm64: Add cpucap_is_possible()
arm64: Add cpus_have_final_boot_cap()
arm64: Rework setup_cpu_features()
arm64: Fixup user features at boot time
arm64: Split kpti_install_ng_mappings()
arm64: kvm: Use cpus_have_final_cap() explicitly
arm64: Explicitly save/restore CPACR when probing SVE and SME
arm64: Use build-time assertions for cpucap ordering
arm64: Rename SVE/SME cpu_enable functions
arm64: Use a positive cpucap for FP/SIMD
arm64: Avoid cpus_have_const_cap() for ARM64_HAS_{ADDRESS,GENERIC}_AUTH
arm64: Avoid cpus_have_const_cap() for ARM64_HAS_ARMv8_4_TTL
arm64: Avoid cpus_have_const_cap() for ARM64_HAS_BTI
arm64: Avoid cpus_have_const_cap() for ARM64_HAS_CACHE_DIC
arm64: Avoid cpus_have_const_cap() for ARM64_HAS_CNP
arm64: Avoid cpus_have_const_cap() for ARM64_HAS_DIT
arm64: Avoid cpus_have_const_cap() for ARM64_HAS_GIC_PRIO_MASKING
arm64: Avoid cpus_have_const_cap() for ARM64_HAS_PAN
arm64: Avoid cpus_have_const_cap() for ARM64_HAS_EPAN
arm64: Avoid cpus_have_const_cap() for ARM64_HAS_RNG
arm64: Avoid cpus_have_const_cap() for ARM64_HAS_WFXT
arm64: Avoid cpus_have_const_cap() for ARM64_HAS_TLB_RANGE
arm64: Avoid cpus_have_const_cap() for ARM64_MTE
arm64: Avoid cpus_have_const_cap() for ARM64_SSBS
arm64: Avoid cpus_have_const_cap() for ARM64_SPECTRE_V2
arm64: Avoid cpus_have_const_cap() for ARM64_{SVE,SME,SME2,FA64}
arm64: Avoid cpus_have_const_cap() for ARM64_UNMAP_KERNEL_AT_EL0
arm64: Avoid cpus_have_const_cap() for ARM64_WORKAROUND_843419
arm64: Avoid cpus_have_const_cap() for ARM64_WORKAROUND_1542419
arm64: Avoid cpus_have_const_cap() for ARM64_WORKAROUND_1742098
arm64: Avoid cpus_have_const_cap() for ARM64_WORKAROUND_2645198
arm64: Avoid cpus_have_const_cap() for ARM64_WORKAROUND_CAVIUM_23154
arm64: Avoid cpus_have_const_cap() for ARM64_WORKAROUND_NVIDIA_CARMEL_CNP
arm64: Avoid cpus_have_const_cap() for ARM64_WORKAROUND_REPEAT_TLBI
arm64: Remove cpus_have_const_cap()

Nathan Chancellor (1):
arm64: Restrict CPU_BIG_ENDIAN to GNU as or LLVM IAS 15.x or newer

Rob Herring (1):
drivers/perf: xgene: Use device_get_match_data()

Robin Murphy (3):
perf/arm-cmn: Fix DTC domain detection
perf/arm-cmn: Rework DTC counters (again)
perf/arm-cmn: Enable per-DTC counter allocation

Ryan Roberts (1):
arm64/mm: Hoist synchronization out of set_ptes() loop

Yicong Yang (2):
drivers/perf: hisi_pcie: Check the type first in pmu::event_init()
drivers/perf: hisi_pcie: Initialize event->cpu only on success

Documentation/admin-guide/perf/ampere_cspmu.rst | 29 +++
Documentation/admin-guide/perf/index.rst | 1 +
Documentation/arch/arm64/cpu-feature-registers.rst | 2 +
Documentation/arch/arm64/elf_hwcaps.rst | 9 +
arch/arm/xen/enlighten.c | 25 +-
arch/arm64/Kconfig | 2 +
arch/arm64/include/asm/Kbuild | 2 +-
arch/arm64/include/asm/alternative-macros.h | 8 +-
arch/arm64/include/asm/arch_gicv3.h | 8 +
arch/arm64/include/asm/archrandom.h | 2 +-
arch/arm64/include/asm/cacheflush.h | 2 +-
arch/arm64/include/asm/cpu.h | 6 -
arch/arm64/include/asm/cpucaps.h | 67 +++++
arch/arm64/include/asm/cpufeature.h | 98 ++++----
arch/arm64/include/asm/cputype.h | 3 +-
arch/arm64/include/asm/fpsimd.h | 36 ++-
arch/arm64/include/asm/hwcap.h | 3 +
arch/arm64/include/asm/irq.h | 3 +
arch/arm64/include/asm/irqflags.h | 20 +-
arch/arm64/include/asm/kvm_emulate.h | 4 +-
arch/arm64/include/asm/kvm_host.h | 2 +-
arch/arm64/include/asm/kvm_mmu.h | 2 +-
arch/arm64/include/asm/lse.h | 9 +-
arch/arm64/include/asm/mmu.h | 2 +-
arch/arm64/include/asm/mmu_context.h | 28 ++-
arch/arm64/include/asm/module.h | 3 +-
arch/arm64/include/asm/mte.h | 4 +-
arch/arm64/include/asm/pgtable-prot.h | 6 +-
arch/arm64/include/asm/pgtable.h | 34 ++-
arch/arm64/include/asm/smp.h | 4 +-
arch/arm64/include/asm/spectre.h | 2 +-
arch/arm64/include/asm/tlbflush.h | 7 +-
arch/arm64/include/asm/vectors.h | 2 +-
arch/arm64/include/uapi/asm/hwcap.h | 3 +
arch/arm64/kernel/acpi_parking_protocol.c | 2 +-
arch/arm64/kernel/cpu_errata.c | 17 --
arch/arm64/kernel/cpufeature.c | 272 ++++++++++-----------
arch/arm64/kernel/cpuinfo.c | 3 +
arch/arm64/kernel/efi.c | 3 +-
arch/arm64/kernel/fpsimd.c | 149 +++++------
arch/arm64/kernel/idle.c | 4 +-
arch/arm64/kernel/module-plts.c | 13 +-
arch/arm64/kernel/mte.c | 4 +-
arch/arm64/kernel/process.c | 2 +-
arch/arm64/kernel/proton-pack.c | 2 +-
arch/arm64/kernel/smp.c | 147 ++++++++---
arch/arm64/kernel/suspend.c | 13 +-
arch/arm64/kernel/sys_compat.c | 2 +-
arch/arm64/kernel/traps.c | 2 +-
arch/arm64/kernel/vdso.c | 2 +-
arch/arm64/kvm/arm.c | 10 +-
arch/arm64/kvm/guest.c | 6 +-
arch/arm64/kvm/hyp/pgtable.c | 4 +-
arch/arm64/kvm/mmu.c | 2 +-
arch/arm64/kvm/sys_regs.c | 2 +-
arch/arm64/kvm/vgic/vgic-v3.c | 2 +-
arch/arm64/lib/delay.c | 2 +-
arch/arm64/mm/fault.c | 2 +-
arch/arm64/mm/hugetlbpage.c | 3 +-
arch/arm64/mm/init.c | 11 +-
arch/arm64/mm/mmap.c | 2 +-
arch/arm64/mm/mmu.c | 3 +-
arch/arm64/mm/proc.S | 3 +-
arch/arm64/tools/Makefile | 4 +-
arch/arm64/tools/cpucaps | 2 +-
arch/arm64/tools/gen-cpucaps.awk | 6 +-
arch/arm64/tools/sysreg | 8 +-
drivers/acpi/processor_core.c | 2 +-
drivers/clocksource/arm_arch_timer.c | 36 ++-
drivers/irqchip/irq-gic-v3.c | 82 ++++---
drivers/perf/amlogic/meson_g12_ddr_pmu.c | 1 +
drivers/perf/arm-cmn.c | 154 ++++++------
drivers/perf/arm_cspmu/Kconfig | 19 +-
drivers/perf/arm_cspmu/Makefile | 8 +-
drivers/perf/arm_cspmu/ampere_cspmu.c | 272 +++++++++++++++++++++
drivers/perf/arm_cspmu/arm_cspmu.c | 201 +++++++++++----
drivers/perf/arm_cspmu/arm_cspmu.h | 32 ++-
drivers/perf/arm_cspmu/nvidia_cspmu.c | 34 ++-
drivers/perf/arm_cspmu/nvidia_cspmu.h | 17 --
drivers/perf/arm_pmuv3.c | 46 +---
drivers/perf/hisilicon/hisi_pcie_pmu.c | 9 +-
drivers/perf/hisilicon/hisi_uncore_pa_pmu.c | 4 +-
drivers/perf/hisilicon/hisi_uncore_sllc_pmu.c | 4 +-
drivers/perf/hisilicon/hns3_pmu.c | 8 +-
drivers/perf/xgene_pmu.c | 37 +--
include/linux/acpi.h | 5 +
include/linux/cpuhotplug.h | 2 +
tools/testing/selftests/arm64/abi/hwcap.c | 54 ++++
tools/testing/selftests/arm64/fp/sve-test.S | 19 ++
89 files changed, 1459 insertions(+), 734 deletions(-)
create mode 100644 Documentation/admin-guide/perf/ampere_cspmu.rst
create mode 100644 arch/arm64/include/asm/cpucaps.h
create mode 100644 drivers/perf/arm_cspmu/ampere_cspmu.c
delete mode 100644 drivers/perf/arm_cspmu/nvidia_cspmu.h

--
Catalin


2023-11-01 20:51:07

by pr-tracker-bot

[permalink] [raw]
Subject: Re: [GIT PULL] arm64 updates for 6.7

The pull request you sent on Fri, 27 Oct 2023 19:19:35 +0100:

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

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/56ec8e4cd8cbff3c96c53cd8303bba924613b5ce

Thank you!

--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html