File Index
Files and directories
Sign in
FILE

pmu.c

File preview with syntax highlighting.

linux-6.19.14/tools/perf/arch/arm/util/pmu.c C
 1// SPDX-License-Identifier: GPL-2.0
 2/*
 3 * Copyright(C) 2015 Linaro Limited. All rights reserved.
 4 * Author: Mathieu Poirier <mathieu.poirier@linaro.org>
 5 */
 6
 7#include <string.h>
 8#include <linux/coresight-pmu.h>
 9#include <linux/perf_event.h>
10#include <linux/string.h>
11
12#include "arm-spe.h"
13#include "hisi-ptt.h"
14#include "../../../util/cpumap.h"
15#include "../../../util/pmu.h"
16#include "../../../util/cs-etm.h"
17#include "../../arm64/util/mem-events.h"
18
19void perf_pmu__arch_init(struct perf_pmu *pmu)
20{
21	struct perf_cpu_map *intersect, *online = cpu_map__online();
22
23	if (!strcmp(pmu->name, CORESIGHT_ETM_PMU_NAME)) {
24		/* add ETM default config here */
25		pmu->auxtrace = true;
26		pmu->selectable = true;
27		pmu->perf_event_attr_init_default = cs_etm_get_default_config;
28#if defined(__aarch64__)
29	} else if (strstarts(pmu->name, ARM_SPE_PMU_NAME)) {
30		pmu->auxtrace = true;
31		pmu->selectable = true;
32		pmu->is_uncore = false;
33		pmu->perf_event_attr_init_default = arm_spe_pmu_default_config;
34		if (strstarts(pmu->name, "arm_spe_"))
35			pmu->mem_events = perf_mem_events_arm;
36	} else if (strstarts(pmu->name, HISI_PTT_PMU_NAME)) {
37		pmu->auxtrace = true;
38		pmu->selectable = true;
39#endif
40	}
41	/* Workaround some ARM PMU's failing to correctly set CPU maps for online processors. */
42	intersect = perf_cpu_map__intersect(online, pmu->cpus);
43	perf_cpu_map__put(online);
44	perf_cpu_map__put(pmu->cpus);
45	pmu->cpus = intersect;
46}
~/ Read-only file preview.