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