1 // SPDX-License-Identifier: GPL-2.0 2 #include <string.h> 3 #include <stdio.h> 4 #include <sys/types.h> 5 #include <dirent.h> 6 #include <fcntl.h> 7 #include <linux/stddef.h> 8 #include <linux/perf_event.h> 9 #include <linux/zalloc.h> 10 #include <api/fs/fs.h> 11 #include <errno.h> 12 13 #include "../../../util/intel-pt.h" 14 #include "../../../util/intel-bts.h" 15 #include "../../../util/pmu.h" 16 #include "../../../util/fncache.h" 17 #include "../../../util/pmus.h" 18 #include "mem-events.h" 19 #include "env.h" 20 21 void perf_pmu__arch_init(struct perf_pmu *pmu __maybe_unused) 22 { 23 #ifdef HAVE_AUXTRACE_SUPPORT 24 if (!strcmp(pmu->name, INTEL_PT_PMU_NAME)) { 25 pmu->auxtrace = true; 26 pmu->selectable = true; 27 pmu->perf_event_attr_init_default = intel_pt_pmu_default_config; 28 } 29 if (!strcmp(pmu->name, INTEL_BTS_PMU_NAME)) { 30 pmu->auxtrace = true; 31 pmu->selectable = true; 32 } 33 #endif 34 35 if (x86__is_amd_cpu()) { 36 if (!strcmp(pmu->name, "ibs_op")) 37 pmu->mem_events = perf_mem_events_amd; 38 } else if (pmu->is_core) { 39 if (perf_pmu__have_event(pmu, "mem-loads-aux")) 40 pmu->mem_events = perf_mem_events_intel_aux; 41 else 42 pmu->mem_events = perf_mem_events_intel; 43 } 44 } 45