#include <linux/module.h>
#include <linux/topology.h>
#include "arm_cspmu.h"
#define NV_PCIE_PORT_COUNT …
#define NV_PCIE_FILTER_ID_MASK …
#define NV_NVL_C2C_PORT_COUNT …
#define NV_NVL_C2C_FILTER_ID_MASK …
#define NV_CNVL_PORT_COUNT …
#define NV_CNVL_FILTER_ID_MASK …
#define NV_GENERIC_FILTER_ID_MASK …
#define NV_PRODID_MASK …
#define NV_FORMAT_NAME_GENERIC …
#define to_nv_cspmu_ctx(cspmu) …
#define NV_CSPMU_EVENT_ATTR_4_INNER(_pref, _num, _suff, _config) …
#define NV_CSPMU_EVENT_ATTR_4(_pref, _suff, _config) …
struct nv_cspmu_ctx { … };
static struct attribute *scf_pmu_event_attrs[] = …;
static struct attribute *mcf_pmu_event_attrs[] = …;
static struct attribute *generic_pmu_event_attrs[] = …;
static struct attribute *scf_pmu_format_attrs[] = …;
static struct attribute *pcie_pmu_format_attrs[] = …;
static struct attribute *nvlink_c2c_pmu_format_attrs[] = …;
static struct attribute *cnvlink_pmu_format_attrs[] = …;
static struct attribute *generic_pmu_format_attrs[] = …;
static struct attribute **
nv_cspmu_get_event_attrs(const struct arm_cspmu *cspmu)
{ … }
static struct attribute **
nv_cspmu_get_format_attrs(const struct arm_cspmu *cspmu)
{ … }
static const char *
nv_cspmu_get_name(const struct arm_cspmu *cspmu)
{ … }
static u32 nv_cspmu_event_filter(const struct perf_event *event)
{ … }
enum nv_cspmu_name_fmt { … };
struct nv_cspmu_match { … };
static const struct nv_cspmu_match nv_cspmu_match[] = …;
static char *nv_cspmu_format_name(const struct arm_cspmu *cspmu,
const struct nv_cspmu_match *match)
{ … }
static int nv_cspmu_init_ops(struct arm_cspmu *cspmu)
{ … }
static const struct arm_cspmu_impl_match nv_cspmu_param = …;
static int __init nvidia_cspmu_init(void)
{ … }
static void __exit nvidia_cspmu_exit(void)
{ … }
module_init(…) …;
module_exit(nvidia_cspmu_exit);
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;