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
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