#define pr_fmt(fmt) …
#include "uncore.h"
#include "uncore_discovery.h"
static struct rb_root discovery_tables = …;
static int num_discovered_types[UNCORE_ACCESS_MAX];
static bool has_generic_discovery_table(void)
{ … }
static int logical_die_id;
static int get_device_die_id(struct pci_dev *dev)
{ … }
#define __node_2_type(cur) …
static inline int __type_cmp(const void *key, const struct rb_node *b)
{ … }
static inline struct intel_uncore_discovery_type *
search_uncore_discovery_type(u16 type_id)
{ … }
static inline bool __type_less(struct rb_node *a, const struct rb_node *b)
{ … }
static struct intel_uncore_discovery_type *
add_uncore_discovery_type(struct uncore_unit_discovery *unit)
{ … }
static struct intel_uncore_discovery_type *
get_uncore_discovery_type(struct uncore_unit_discovery *unit)
{ … }
static inline int pmu_idx_cmp(const void *key, const struct rb_node *b)
{ … }
static struct intel_uncore_discovery_unit *
intel_uncore_find_discovery_unit(struct rb_root *units, int die,
unsigned int pmu_idx)
{ … }
int intel_uncore_find_discovery_unit_id(struct rb_root *units, int die,
unsigned int pmu_idx)
{ … }
static inline bool unit_less(struct rb_node *a, const struct rb_node *b)
{ … }
static inline struct intel_uncore_discovery_unit *
uncore_find_unit(struct rb_root *root, unsigned int id)
{ … }
void uncore_find_add_unit(struct intel_uncore_discovery_unit *node,
struct rb_root *root, u16 *num_units)
{ … }
static void
uncore_insert_box_info(struct uncore_unit_discovery *unit,
int die)
{ … }
static bool
uncore_ignore_unit(struct uncore_unit_discovery *unit, int *ignore)
{ … }
static int parse_discovery_table(struct pci_dev *dev, int die,
u32 bar_offset, bool *parsed,
int *ignore)
{ … }
bool intel_uncore_has_discovery_tables(int *ignore)
{ … }
void intel_uncore_clear_discovery_tables(void)
{ … }
DEFINE_UNCORE_FORMAT_ATTR(…);
DEFINE_UNCORE_FORMAT_ATTR(…);
DEFINE_UNCORE_FORMAT_ATTR(…);
DEFINE_UNCORE_FORMAT_ATTR(…);
DEFINE_UNCORE_FORMAT_ATTR(…);
static struct attribute *generic_uncore_formats_attr[] = …;
static const struct attribute_group generic_uncore_format_group = …;
static u64 intel_generic_uncore_box_ctl(struct intel_uncore_box *box)
{ … }
void intel_generic_uncore_msr_init_box(struct intel_uncore_box *box)
{ … }
void intel_generic_uncore_msr_disable_box(struct intel_uncore_box *box)
{ … }
void intel_generic_uncore_msr_enable_box(struct intel_uncore_box *box)
{ … }
static void intel_generic_uncore_msr_enable_event(struct intel_uncore_box *box,
struct perf_event *event)
{ … }
static void intel_generic_uncore_msr_disable_event(struct intel_uncore_box *box,
struct perf_event *event)
{ … }
static struct intel_uncore_ops generic_uncore_msr_ops = …;
bool intel_generic_uncore_assign_hw_event(struct perf_event *event,
struct intel_uncore_box *box)
{ … }
static inline int intel_pci_uncore_box_ctl(struct intel_uncore_box *box)
{ … }
void intel_generic_uncore_pci_init_box(struct intel_uncore_box *box)
{ … }
void intel_generic_uncore_pci_disable_box(struct intel_uncore_box *box)
{ … }
void intel_generic_uncore_pci_enable_box(struct intel_uncore_box *box)
{ … }
static void intel_generic_uncore_pci_enable_event(struct intel_uncore_box *box,
struct perf_event *event)
{ … }
void intel_generic_uncore_pci_disable_event(struct intel_uncore_box *box,
struct perf_event *event)
{ … }
u64 intel_generic_uncore_pci_read_counter(struct intel_uncore_box *box,
struct perf_event *event)
{ … }
static struct intel_uncore_ops generic_uncore_pci_ops = …;
#define UNCORE_GENERIC_MMIO_SIZE …
void intel_generic_uncore_mmio_init_box(struct intel_uncore_box *box)
{ … }
void intel_generic_uncore_mmio_disable_box(struct intel_uncore_box *box)
{ … }
void intel_generic_uncore_mmio_enable_box(struct intel_uncore_box *box)
{ … }
void intel_generic_uncore_mmio_enable_event(struct intel_uncore_box *box,
struct perf_event *event)
{ … }
void intel_generic_uncore_mmio_disable_event(struct intel_uncore_box *box,
struct perf_event *event)
{ … }
static struct intel_uncore_ops generic_uncore_mmio_ops = …;
static bool uncore_update_uncore_type(enum uncore_access_type type_id,
struct intel_uncore_type *uncore,
struct intel_uncore_discovery_type *type)
{ … }
struct intel_uncore_type **
intel_uncore_generic_init_uncores(enum uncore_access_type type_id, int num_extra)
{ … }
void intel_uncore_generic_uncore_cpu_init(void)
{ … }
int intel_uncore_generic_uncore_pci_init(void)
{ … }
void intel_uncore_generic_uncore_mmio_init(void)
{ … }