| /kernel/linux/linux-6.6/Documentation/devicetree/bindings/perf/ |
| D | spe-pmu.yaml | 1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 3 --- 4 $id: http://devicetree.org/schemas/perf/spe-pmu.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 7 title: ARMv8.2 Statistical Profiling Extension (SPE) Performance Monitor Units (PMU) 10 - Will Deacon <will@kernel.org> 14 performance sample data using an in-memory trace buffer. 18 const: arm,statistical-profiling-extension-v1 23 The PPI to signal SPE events. For heterogeneous systems where SPE is only 24 supported on a subset of the CPUs, please consult the arm,gic-v3 binding [all …]
|
| /kernel/linux/linux-5.10/drivers/perf/ |
| D | arm_pmu_acpi.c | 1 // SPDX-License-Identifier: GPL-2.0-only 28 gsi = gicc->performance_interrupt; in arm_pmu_acpi_register_irq() 31 * Per the ACPI spec, the MADT cannot describe a PMU that doesn't in arm_pmu_acpi_register_irq() 40 if (gicc->flags & ACPI_MADT_PERFORMANCE_IRQ_MODE) in arm_pmu_acpi_register_irq() 66 gsi = gicc->performance_interrupt; in arm_pmu_acpi_unregister_irq() 81 .id = -1, 87 * For lack of a better place, hook the normal PMU MADT walk 88 * and create a SPE device if we detect a recent MADT with 99 * For now, we only support homogeneous ACPI/SPE machines. in arm_spe_acpi_register_device() 105 if (gicc->header.length < ACPI_MADT_GICC_SPE) in arm_spe_acpi_register_device() [all …]
|
| /kernel/linux/linux-5.10/Documentation/devicetree/bindings/arm/ |
| D | spe-pmu.txt | 1 * ARMv8.2 Statistical Profiling Extension (SPE) Performance Monitor Units (PMU) 4 performance sample data using an in-memory trace buffer. 6 ** SPE Required properties: 8 - compatible : should be one of: 9 "arm,statistical-profiling-extension-v1" 11 - interrupts : Exactly 1 PPI must be listed. For heterogeneous systems where 12 SPE is only supported on a subset of the CPUs, please consult 13 the arm,gic-v3 binding for details on describing a PPI partition. 17 spe-pmu { 18 compatible = "arm,statistical-profiling-extension-v1";
|
| /kernel/linux/linux-6.6/tools/perf/Documentation/ |
| D | perf-arm-spe.txt | 1 perf-arm-spe(1) 5 ---- 6 perf-arm-spe - Support for Arm Statistical Profiling Extension within Perf tools 9 -------- 11 'perf record' -e arm_spe// 14 ----------- 16 The SPE (Statistical Profiling Extension) feature provides accurate attribution of latencies and 17 events down to individual instructions. Rather than being interrupt-driven, it picks an 32 This is chosen from a sample population, for SPE this is an IMPLEMENTATION DEFINED choice of all 33 architectural instructions or all micro-ops. Sampling happens at a programmable interval. The [all …]
|
| D | perf-c2c.txt | 1 perf-c2c(1) 5 ---- 6 perf-c2c - Shared Data C2C/HITM Analyzer. 9 -------- 12 'perf c2c record' [<options>] \-- [<record command options>] <command> 16 ----------- 24 with thresholding feature. On AMD, the tool uses IBS op pmu (due to hardware 25 limitations, perf c2c is not supported on Zen3 cpus). On Arm64 it uses SPE to 27 required. See linkperf:perf-arm-spe[1] for a setup guide. Due to the 28 statistical nature of Arm SPE sampling, not every memory operation will be [all …]
|
| /kernel/linux/linux-5.10/tools/perf/arch/arm/util/ |
| D | pmu.c | 1 // SPDX-License-Identifier: GPL-2.0 8 #include <linux/coresight-pmu.h> 12 #include "arm-spe.h" 13 #include "../../util/pmu.h" 16 *perf_pmu__get_default_config(struct perf_pmu *pmu __maybe_unused) in perf_pmu__get_default_config() 19 if (!strcmp(pmu->name, CORESIGHT_ETM_PMU_NAME)) { in perf_pmu__get_default_config() 21 pmu->selectable = true; in perf_pmu__get_default_config() 23 } else if (strstarts(pmu->name, ARM_SPE_PMU_NAME)) { in perf_pmu__get_default_config() 24 return arm_spe_pmu_default_config(pmu); in perf_pmu__get_default_config()
|
| D | auxtrace.c | 1 // SPDX-License-Identifier: GPL-2.0 8 #include <linux/coresight-pmu.h> 14 #include "../../util/pmu.h" 15 #include "cs-etm.h" 16 #include "arm-spe.h" 28 *err = -ENOMEM; in find_all_arm_spe_pmus() 36 *err = -ENOMEM; in find_all_arm_spe_pmus() 44 arm_spe_pmus[*nr_spes]->type, in find_all_arm_spe_pmus() 45 arm_spe_pmus[*nr_spes]->name); in find_all_arm_spe_pmus() 72 evsel->core.attr.type == cs_etm_pmu->type) in auxtrace_record__init() [all …]
|
| /kernel/linux/linux-6.6/tools/perf/arch/arm/util/ |
| D | pmu.c | 1 // SPDX-License-Identifier: GPL-2.0 8 #include <linux/coresight-pmu.h> 12 #include "arm-spe.h" 13 #include "hisi-ptt.h" 14 #include "../../../util/pmu.h" 15 #include "../../../util/cs-etm.h" 18 *perf_pmu__get_default_config(struct perf_pmu *pmu __maybe_unused) in perf_pmu__get_default_config() 21 if (!strcmp(pmu->name, CORESIGHT_ETM_PMU_NAME)) { in perf_pmu__get_default_config() 23 pmu->selectable = true; in perf_pmu__get_default_config() 24 return cs_etm_get_default_config(pmu); in perf_pmu__get_default_config() [all …]
|
| /kernel/linux/linux-5.10/tools/perf/arch/arm64/util/ |
| D | arm-spe.c | 1 // SPDX-License-Identifier: GPL-2.0 3 * Arm Statistical Profiling Extensions (SPE) support 4 * Copyright (c) 2017-2018, Arm Ltd. 20 #include "../../../util/pmu.h" 24 #include "../../../util/arm-spe.h" 49 struct perf_pmu *arm_spe_pmu = sper->arm_spe_pmu; in arm_spe_info_fill() 52 return -EINVAL; in arm_spe_info_fill() 54 if (!session->evlist->core.nr_mmaps) in arm_spe_info_fill() 55 return -EINVAL; in arm_spe_info_fill() 57 auxtrace_info->type = PERF_AUXTRACE_ARM_SPE; in arm_spe_info_fill() [all …]
|
| D | Build | 1 perf-y += header.o 2 perf-y += perf_regs.o 3 perf-y += tsc.o 4 perf-$(CONFIG_DWARF) += dwarf-regs.o 5 perf-$(CONFIG_LOCAL_LIBUNWIND) += unwind-libunwind.o 6 perf-$(CONFIG_LIBDW_DWARF_UNWIND) += unwind-libdw.o 8 perf-$(CONFIG_AUXTRACE) += ../../arm/util/pmu.o \ 10 ../../arm/util/cs-etm.o \ 11 arm-spe.o
|
| /kernel/linux/linux-6.6/arch/arm64/kvm/hyp/nvhe/ |
| D | switch.c | 1 // SPDX-License-Identifier: GPL-2.0-only 3 * Copyright (C) 2015 - ARM Ltd 8 #include <hyp/sysreg-sr.h> 10 #include <linux/arm-smccc.h> 26 #include <asm/debug-monitors.h> 32 /* Non-VHE specific context */ 107 struct kvm_cpu_context *ctxt = &vcpu->arch.ctxt; in __activate_traps() 146 write_sysreg(this_cpu_ptr(&kvm_init_params)->hcr_el2, hcr_el2); in __deactivate_traps() 152 /* Save VGICv3 state on non-VHE systems */ 156 __vgic_v3_save_state(&vcpu->arch.vgic_cpu.vgic_v3); in __hyp_vgic_save_state() [all …]
|
| /kernel/linux/linux-5.10/arch/arm64/kvm/hyp/nvhe/ |
| D | switch.c | 1 // SPDX-License-Identifier: GPL-2.0-only 3 * Copyright (C) 2015 - ARM Ltd 8 #include <hyp/sysreg-sr.h> 10 #include <linux/arm-smccc.h> 26 #include <asm/debug-monitors.h> 30 /* Non-VHE specific context */ 53 struct kvm_cpu_context *ctxt = &vcpu->arch.ctxt; in __activate_traps() 109 /* Save VGICv3 state on non-VHE systems */ 113 __vgic_v3_save_state(&vcpu->arch.vgic_cpu.vgic_v3); in __hyp_vgic_save_state() 114 __vgic_v3_deactivate_traps(&vcpu->arch.vgic_cpu.vgic_v3); in __hyp_vgic_save_state() [all …]
|
| /kernel/linux/linux-5.10/arch/powerpc/platforms/ |
| D | Kconfig.cputype | 1 # SPDX-License-Identifier: GPL-2.0 8 bool "64-bit kernel" 11 This option selects whether a 32-bit or a 64-bit kernel 292 This option enables kernel support for larger than 32-bit physical 297 is platform-dependent. 312 any affect on a non-altivec cpu (it does, however add code to the 328 VSX (P7 and above), but does not have any affect on a non-VSX 337 config SPE config 338 bool "SPE Support" 343 Extensions (SPE) to the PowerPC processor. The kernel currently [all …]
|
| /kernel/linux/linux-6.6/drivers/perf/ |
| D | arm_pmu_acpi.c | 1 // SPDX-License-Identifier: GPL-2.0-only 29 gsi = gicc->performance_interrupt; in arm_pmu_acpi_register_irq() 32 * Per the ACPI spec, the MADT cannot describe a PMU that doesn't in arm_pmu_acpi_register_irq() 41 if (gicc->flags & ACPI_MADT_PERFORMANCE_IRQ_MODE) in arm_pmu_acpi_register_irq() 67 gsi = gicc->performance_interrupt; in arm_pmu_acpi_unregister_irq() 83 if (pdev->num_resources != 1) in arm_acpi_register_pmu_device() 84 return -ENXIO; in arm_acpi_register_pmu_device() 86 if (pdev->resource[0].flags != IORESOURCE_IRQ) in arm_acpi_register_pmu_device() 87 return -ENXIO; in arm_acpi_register_pmu_device() 97 if (gicc->header.length < len) in arm_acpi_register_pmu_device() [all …]
|
| /kernel/linux/linux-6.6/tools/perf/arch/arm64/util/ |
| D | Build | 1 perf-y += header.o 2 perf-y += machine.o 3 perf-y += perf_regs.o 4 perf-y += tsc.o 5 perf-y += pmu.o 6 perf-$(CONFIG_LIBTRACEEVENT) += kvm-stat.o 7 perf-$(CONFIG_DWARF) += dwarf-regs.o 8 perf-$(CONFIG_LOCAL_LIBUNWIND) += unwind-libunwind.o 9 perf-$(CONFIG_LIBDW_DWARF_UNWIND) += unwind-libdw.o 11 perf-$(CONFIG_AUXTRACE) += ../../arm/util/pmu.o \ [all …]
|
| D | arm-spe.c | 1 // SPDX-License-Identifier: GPL-2.0 3 * Arm Statistical Profiling Extensions (SPE) support 4 * Copyright (c) 2017-2018, Arm Ltd. 21 #include "../../../util/pmu.h" 25 #include "../../../util/arm-spe.h" 53 struct perf_pmu *arm_spe_pmu = sper->arm_spe_pmu; in arm_spe_info_fill() 56 return -EINVAL; in arm_spe_info_fill() 58 if (!session->evlist->core.nr_mmaps) in arm_spe_info_fill() 59 return -EINVAL; in arm_spe_info_fill() 61 auxtrace_info->type = PERF_AUXTRACE_ARM_SPE; in arm_spe_info_fill() [all …]
|
| /kernel/linux/linux-6.6/arch/powerpc/platforms/ |
| D | Kconfig.cputype | 1 # SPDX-License-Identifier: GPL-2.0 7 bool "64-bit kernel" 10 This option selects whether a 32-bit or a 64-bit kernel 282 default "-mtune=power10" if $(cc-option,-mtune=power10) 283 default "-mtune=power9" if $(cc-option,-mtune=power9) 284 default "-mtune=power8" if $(cc-option,-mtune=power8) 366 This option enables kernel support for larger than 32-bit physical 371 is platform-dependent. 387 any affect on a non-altivec cpu (it does, however add code to the 403 VSX (P7 and above), but does not have any affect on a non-VSX [all …]
|
| /kernel/linux/linux-6.6/tools/perf/util/ |
| D | Build | 4 perf-y += arm64-frame-pointer-unwind-support.o 5 perf-y += addr_location.o 6 perf-y += annotate.o 7 perf-y += block-info.o 8 perf-y += block-range.o 9 perf-y += build-id.o 10 perf-y += cacheline.o 11 perf-y += config.o 12 perf-y += copyfile.o 13 perf-y += ctype.o [all …]
|
| D | arm-spe.c | 1 // SPDX-License-Identifier: GPL-2.0 3 * Arm Statistical Profiling Extensions (SPE) support 4 * Copyright (c) 2017-2018, Arm Ltd. 28 #include "thread-stack.h" 31 #include "util/synthetic-events.h" 33 #include "arm-spe.h" 34 #include "arm-spe-decoder/arm-spe-decoder.h" 35 #include "arm-spe-decoder/arm-spe-pkt-decoder.h" 86 struct arm_spe *spe; member 103 static void arm_spe_dump(struct arm_spe *spe __maybe_unused, in arm_spe_dump() [all …]
|
| /kernel/linux/linux-5.10/include/linux/perf/ |
| D | arm_pmu.h | 1 /* SPDX-License-Identifier: GPL-2.0-only */ 3 * linux/arch/arm/include/asm/pmu.h 20 * The ARMv7 CPU PMU supports up to 32 event counters. 25 * ARM PMU hw_event flags 35 [0 ... PERF_COUNT_HW_MAX - 1] = HW_OP_UNSUPPORTED 38 [0 ... C(MAX) - 1] = { \ 39 [0 ... C(OP_MAX) - 1] = { \ 40 [0 ... C(RESULT_MAX) - 1] = CACHE_OP_UNSUPPORTED, \ 44 /* The events for a given PMU register set. */ 47 * The events that are active on the PMU for the given index. [all …]
|
| /kernel/linux/linux-6.6/include/linux/perf/ |
| D | arm_pmu.h | 1 /* SPDX-License-Identifier: GPL-2.0-only */ 3 * linux/arch/arm/include/asm/pmu.h 20 * The ARMv7 CPU PMU supports up to 32 event counters. 25 * ARM PMU hw_event flags 40 [0 ... PERF_COUNT_HW_MAX - 1] = HW_OP_UNSUPPORTED 43 [0 ... C(MAX) - 1] = { \ 44 [0 ... C(OP_MAX) - 1] = { \ 45 [0 ... C(RESULT_MAX) - 1] = CACHE_OP_UNSUPPORTED, \ 49 /* The events for a given PMU register set. */ 52 * The events that are active on the PMU for the given index. [all …]
|
| /kernel/linux/linux-5.10/arch/powerpc/include/asm/ |
| D | cell-regs.h | 1 /* SPDX-License-Identifier: GPL-2.0 */ 6 * on-chip system devices (memory controller, IO controller, etc...) 19 #include <asm/cell-pmu.h> 43 u8 spe[8]; member 50 u32 spe; member 61 u8 pad_0x0010_0x00a8 [0x00a8 - 0x0010]; /* 0x0010 */ 65 u8 pad_0x00b0_0x0100 [0x0100 - 0x00b0]; /* 0x00b0 */ 73 u8 pad_0x0128_0x0400 [0x0400 - 0x0128]; /* 0x0128 */ 83 u8 pad_0x0480_0x0800 [0x0800 - 0x0480]; /* 0x0480 */ 111 u8 pad_0x0898_0x0c00 [0x0c00 - 0x0898]; /* 0x0898 */ [all …]
|
| /kernel/linux/linux-6.6/arch/powerpc/include/asm/ |
| D | cell-regs.h | 1 /* SPDX-License-Identifier: GPL-2.0 */ 6 * on-chip system devices (memory controller, IO controller, etc...) 19 #include <asm/cell-pmu.h> 43 u8 spe[8]; member 50 u32 spe; member 61 u8 pad_0x0010_0x00a8 [0x00a8 - 0x0010]; /* 0x0010 */ 65 u8 pad_0x00b0_0x0100 [0x0100 - 0x00b0]; /* 0x00b0 */ 73 u8 pad_0x0128_0x0400 [0x0400 - 0x0128]; /* 0x0128 */ 83 u8 pad_0x0480_0x0800 [0x0800 - 0x0480]; /* 0x0480 */ 111 u8 pad_0x0898_0x0c00 [0x0c00 - 0x0898]; /* 0x0898 */ [all …]
|
| /kernel/linux/linux-5.10/tools/perf/util/ |
| D | Build | 1 perf-y += annotate.o 2 perf-y += block-info.o 3 perf-y += block-range.o 4 perf-y += build-id.o 5 perf-y += cacheline.o 6 perf-y += config.o 7 perf-y += copyfile.o 8 perf-y += ctype.o 9 perf-y += db-export.o 10 perf-y += env.o [all …]
|
| D | arm-spe.c | 1 // SPDX-License-Identifier: GPL-2.0 3 * Arm Statistical Profiling Extensions (SPE) support 4 * Copyright (c) 2017-2018, Arm Ltd. 28 #include "thread-stack.h" 30 #include "util/synthetic-events.h" 32 #include "arm-spe.h" 33 #include "arm-spe-decoder/arm-spe-decoder.h" 34 #include "arm-spe-decoder/arm-spe-pkt-decoder.h" 73 struct arm_spe *spe; member 89 static void arm_spe_dump(struct arm_spe *spe __maybe_unused, in arm_spe_dump() [all …]
|