x86_pmu
Regular
4.4
: ✅struct x86_pmu {
const char *name;
int version;
int (*handle_irq)(struct pt_regs *);
void (*disable_all)();
void (*enable_all)(int);
void (*enable)(struct perf_event *);
void (*disable)(struct perf_event *);
int (*hw_config)(struct perf_event *);
int (*schedule_events)(struct cpu_hw_events *, int, int *);
unsigned int eventsel;
unsigned int perfctr;
int (*addr_offset)(int, bool);
int (*rdpmc_index)(int);
u64 (*event_map)(int);
int max_events;
int num_counters;
int num_counters_fixed;
int cntval_bits;
u64 cntval_mask;
long unsigned int events_maskl;
long unsigned int events_mask[1];
int events_mask_len;
int apic;
u64 max_period;
struct event_constraint * (*get_event_constraints)(struct cpu_hw_events *, int, struct perf_event *);
void (*put_event_constraints)(struct cpu_hw_events *, struct perf_event *);
void (*start_scheduling)(struct cpu_hw_events *);
void (*commit_scheduling)(struct cpu_hw_events *, int, int);
void (*stop_scheduling)(struct cpu_hw_events *);
struct event_constraint *event_constraints;
struct x86_pmu_quirk *quirks;
int perfctr_second_write;
bool late_ack;
unsigned int (*limit_period)(struct perf_event *, unsigned int);
int attr_rdpmc_broken;
int attr_rdpmc;
struct attribute **format_attrs;
struct attribute **event_attrs;
ssize_t (*events_sysfs_show)(char *, u64);
struct attribute **cpu_events;
int (*cpu_prepare)(int);
void (*cpu_starting)(int);
void (*cpu_dying)(int);
void (*cpu_dead)(int);
void (*check_microcode)();
void (*sched_task)(struct perf_event_context *, bool);
u64 intel_ctrl;
union perf_capabilities intel_cap;
unsigned int bts;
unsigned int bts_active;
unsigned int pebs;
unsigned int pebs_active;
unsigned int pebs_broken;
int pebs_record_size;
int pebs_buffer_size;
void (*drain_pebs)(struct pt_regs *);
struct event_constraint *pebs_constraints;
void (*pebs_aliases)(struct perf_event *);
int max_pebs_events;
long unsigned int free_running_flags;
long unsigned int lbr_tos;
long unsigned int lbr_from;
long unsigned int lbr_to;
int lbr_nr;
u64 lbr_sel_mask;
const int *lbr_sel_map;
bool lbr_double_abort;
atomic_t lbr_exclusive[3];
struct extra_reg *extra_regs;
unsigned int flags;
struct perf_guest_switch_msr * (*guest_get_msrs)(int *);
};
4.8
: ✅struct x86_pmu {
const char *name;
int version;
int (*handle_irq)(struct pt_regs *);
void (*disable_all)();
void (*enable_all)(int);
void (*enable)(struct perf_event *);
void (*disable)(struct perf_event *);
int (*hw_config)(struct perf_event *);
int (*schedule_events)(struct cpu_hw_events *, int, int *);
unsigned int eventsel;
unsigned int perfctr;
int (*addr_offset)(int, bool);
int (*rdpmc_index)(int);
u64 (*event_map)(int);
int max_events;
int num_counters;
int num_counters_fixed;
int cntval_bits;
u64 cntval_mask;
long unsigned int events_maskl;
long unsigned int events_mask[1];
int events_mask_len;
int apic;
u64 max_period;
struct event_constraint * (*get_event_constraints)(struct cpu_hw_events *, int, struct perf_event *);
void (*put_event_constraints)(struct cpu_hw_events *, struct perf_event *);
void (*start_scheduling)(struct cpu_hw_events *);
void (*commit_scheduling)(struct cpu_hw_events *, int, int);
void (*stop_scheduling)(struct cpu_hw_events *);
struct event_constraint *event_constraints;
struct x86_pmu_quirk *quirks;
int perfctr_second_write;
bool late_ack;
unsigned int (*limit_period)(struct perf_event *, unsigned int);
int attr_rdpmc_broken;
int attr_rdpmc;
struct attribute **format_attrs;
struct attribute **event_attrs;
ssize_t (*events_sysfs_show)(char *, u64);
struct attribute **cpu_events;
int (*cpu_prepare)(int);
void (*cpu_starting)(int);
void (*cpu_dying)(int);
void (*cpu_dead)(int);
void (*check_microcode)();
void (*sched_task)(struct perf_event_context *, bool);
u64 intel_ctrl;
union perf_capabilities intel_cap;
unsigned int bts;
unsigned int bts_active;
unsigned int pebs;
unsigned int pebs_active;
unsigned int pebs_broken;
unsigned int pebs_prec_dist;
int pebs_record_size;
int pebs_buffer_size;
void (*drain_pebs)(struct pt_regs *);
struct event_constraint *pebs_constraints;
void (*pebs_aliases)(struct perf_event *);
int max_pebs_events;
long unsigned int free_running_flags;
long unsigned int lbr_tos;
long unsigned int lbr_from;
long unsigned int lbr_to;
int lbr_nr;
u64 lbr_sel_mask;
const int *lbr_sel_map;
bool lbr_double_abort;
bool lbr_pt_coexist;
atomic_t lbr_exclusive[3];
unsigned int amd_nb_constraints;
struct extra_reg *extra_regs;
unsigned int flags;
struct perf_guest_switch_msr * (*guest_get_msrs)(int *);
};
4.10
: ✅struct x86_pmu {
const char *name;
int version;
int (*handle_irq)(struct pt_regs *);
void (*disable_all)();
void (*enable_all)(int);
void (*enable)(struct perf_event *);
void (*disable)(struct perf_event *);
void (*add)(struct perf_event *);
void (*del)(struct perf_event *);
int (*hw_config)(struct perf_event *);
int (*schedule_events)(struct cpu_hw_events *, int, int *);
unsigned int eventsel;
unsigned int perfctr;
int (*addr_offset)(int, bool);
int (*rdpmc_index)(int);
u64 (*event_map)(int);
int max_events;
int num_counters;
int num_counters_fixed;
int cntval_bits;
u64 cntval_mask;
long unsigned int events_maskl;
long unsigned int events_mask[1];
int events_mask_len;
int apic;
u64 max_period;
struct event_constraint * (*get_event_constraints)(struct cpu_hw_events *, int, struct perf_event *);
void (*put_event_constraints)(struct cpu_hw_events *, struct perf_event *);
void (*start_scheduling)(struct cpu_hw_events *);
void (*commit_scheduling)(struct cpu_hw_events *, int, int);
void (*stop_scheduling)(struct cpu_hw_events *);
struct event_constraint *event_constraints;
struct x86_pmu_quirk *quirks;
int perfctr_second_write;
bool late_ack;
unsigned int (*limit_period)(struct perf_event *, unsigned int);
int attr_rdpmc_broken;
int attr_rdpmc;
struct attribute **format_attrs;
struct attribute **event_attrs;
ssize_t (*events_sysfs_show)(char *, u64);
struct attribute **cpu_events;
int (*cpu_prepare)(int);
void (*cpu_starting)(int);
void (*cpu_dying)(int);
void (*cpu_dead)(int);
void (*check_microcode)();
void (*sched_task)(struct perf_event_context *, bool);
u64 intel_ctrl;
union perf_capabilities intel_cap;
unsigned int bts;
unsigned int bts_active;
unsigned int pebs;
unsigned int pebs_active;
unsigned int pebs_broken;
unsigned int pebs_prec_dist;
int pebs_record_size;
int pebs_buffer_size;
void (*drain_pebs)(struct pt_regs *);
struct event_constraint *pebs_constraints;
void (*pebs_aliases)(struct perf_event *);
int max_pebs_events;
long unsigned int free_running_flags;
long unsigned int lbr_tos;
long unsigned int lbr_from;
long unsigned int lbr_to;
int lbr_nr;
u64 lbr_sel_mask;
const int *lbr_sel_map;
bool lbr_double_abort;
bool lbr_pt_coexist;
atomic_t lbr_exclusive[3];
unsigned int amd_nb_constraints;
struct extra_reg *extra_regs;
unsigned int flags;
struct perf_guest_switch_msr * (*guest_get_msrs)(int *);
};
4.13
: ✅struct x86_pmu {
const char *name;
int version;
int (*handle_irq)(struct pt_regs *);
void (*disable_all)();
void (*enable_all)(int);
void (*enable)(struct perf_event *);
void (*disable)(struct perf_event *);
void (*add)(struct perf_event *);
void (*del)(struct perf_event *);
int (*hw_config)(struct perf_event *);
int (*schedule_events)(struct cpu_hw_events *, int, int *);
unsigned int eventsel;
unsigned int perfctr;
int (*addr_offset)(int, bool);
int (*rdpmc_index)(int);
u64 (*event_map)(int);
int max_events;
int num_counters;
int num_counters_fixed;
int cntval_bits;
u64 cntval_mask;
long unsigned int events_maskl;
long unsigned int events_mask[1];
int events_mask_len;
int apic;
u64 max_period;
struct event_constraint * (*get_event_constraints)(struct cpu_hw_events *, int, struct perf_event *);
void (*put_event_constraints)(struct cpu_hw_events *, struct perf_event *);
void (*start_scheduling)(struct cpu_hw_events *);
void (*commit_scheduling)(struct cpu_hw_events *, int, int);
void (*stop_scheduling)(struct cpu_hw_events *);
struct event_constraint *event_constraints;
struct x86_pmu_quirk *quirks;
int perfctr_second_write;
bool late_ack;
unsigned int (*limit_period)(struct perf_event *, unsigned int);
int attr_rdpmc_broken;
int attr_rdpmc;
struct attribute **format_attrs;
struct attribute **event_attrs;
ssize_t (*events_sysfs_show)(char *, u64);
struct attribute **cpu_events;
long unsigned int attr_freeze_on_smi;
struct attribute **attrs;
int (*cpu_prepare)(int);
void (*cpu_starting)(int);
void (*cpu_dying)(int);
void (*cpu_dead)(int);
void (*check_microcode)();
void (*sched_task)(struct perf_event_context *, bool);
u64 intel_ctrl;
union perf_capabilities intel_cap;
unsigned int bts;
unsigned int bts_active;
unsigned int pebs;
unsigned int pebs_active;
unsigned int pebs_broken;
unsigned int pebs_prec_dist;
unsigned int pebs_no_tlb;
int pebs_record_size;
int pebs_buffer_size;
void (*drain_pebs)(struct pt_regs *);
struct event_constraint *pebs_constraints;
void (*pebs_aliases)(struct perf_event *);
int max_pebs_events;
long unsigned int free_running_flags;
long unsigned int lbr_tos;
long unsigned int lbr_from;
long unsigned int lbr_to;
int lbr_nr;
u64 lbr_sel_mask;
const int *lbr_sel_map;
bool lbr_double_abort;
bool lbr_pt_coexist;
atomic_t lbr_exclusive[3];
unsigned int amd_nb_constraints;
struct extra_reg *extra_regs;
unsigned int flags;
struct perf_guest_switch_msr * (*guest_get_msrs)(int *);
};
4.15
: ✅struct x86_pmu {
const char *name;
int version;
int (*handle_irq)(struct pt_regs *);
void (*disable_all)();
void (*enable_all)(int);
void (*enable)(struct perf_event *);
void (*disable)(struct perf_event *);
void (*add)(struct perf_event *);
void (*del)(struct perf_event *);
int (*hw_config)(struct perf_event *);
int (*schedule_events)(struct cpu_hw_events *, int, int *);
unsigned int eventsel;
unsigned int perfctr;
int (*addr_offset)(int, bool);
int (*rdpmc_index)(int);
u64 (*event_map)(int);
int max_events;
int num_counters;
int num_counters_fixed;
int cntval_bits;
u64 cntval_mask;
long unsigned int events_maskl;
long unsigned int events_mask[1];
int events_mask_len;
int apic;
u64 max_period;
struct event_constraint * (*get_event_constraints)(struct cpu_hw_events *, int, struct perf_event *);
void (*put_event_constraints)(struct cpu_hw_events *, struct perf_event *);
void (*start_scheduling)(struct cpu_hw_events *);
void (*commit_scheduling)(struct cpu_hw_events *, int, int);
void (*stop_scheduling)(struct cpu_hw_events *);
struct event_constraint *event_constraints;
struct x86_pmu_quirk *quirks;
int perfctr_second_write;
bool late_ack;
unsigned int (*limit_period)(struct perf_event *, unsigned int);
int attr_rdpmc_broken;
int attr_rdpmc;
struct attribute **format_attrs;
struct attribute **event_attrs;
struct attribute **caps_attrs;
ssize_t (*events_sysfs_show)(char *, u64);
struct attribute **cpu_events;
long unsigned int attr_freeze_on_smi;
struct attribute **attrs;
int (*cpu_prepare)(int);
void (*cpu_starting)(int);
void (*cpu_dying)(int);
void (*cpu_dead)(int);
void (*check_microcode)();
void (*sched_task)(struct perf_event_context *, bool);
u64 intel_ctrl;
union perf_capabilities intel_cap;
unsigned int bts;
unsigned int bts_active;
unsigned int pebs;
unsigned int pebs_active;
unsigned int pebs_broken;
unsigned int pebs_prec_dist;
unsigned int pebs_no_tlb;
int pebs_record_size;
int pebs_buffer_size;
void (*drain_pebs)(struct pt_regs *);
struct event_constraint *pebs_constraints;
void (*pebs_aliases)(struct perf_event *);
int max_pebs_events;
long unsigned int free_running_flags;
long unsigned int lbr_tos;
long unsigned int lbr_from;
long unsigned int lbr_to;
int lbr_nr;
u64 lbr_sel_mask;
const int *lbr_sel_map;
bool lbr_double_abort;
bool lbr_pt_coexist;
atomic_t lbr_exclusive[3];
unsigned int amd_nb_constraints;
struct extra_reg *extra_regs;
unsigned int flags;
struct perf_guest_switch_msr * (*guest_get_msrs)(int *);
};
4.18
: ✅struct x86_pmu {
const char *name;
int version;
int (*handle_irq)(struct pt_regs *);
void (*disable_all)();
void (*enable_all)(int);
void (*enable)(struct perf_event *);
void (*disable)(struct perf_event *);
void (*add)(struct perf_event *);
void (*del)(struct perf_event *);
void (*read)(struct perf_event *);
int (*hw_config)(struct perf_event *);
int (*schedule_events)(struct cpu_hw_events *, int, int *);
unsigned int eventsel;
unsigned int perfctr;
int (*addr_offset)(int, bool);
int (*rdpmc_index)(int);
u64 (*event_map)(int);
int max_events;
int num_counters;
int num_counters_fixed;
int cntval_bits;
u64 cntval_mask;
long unsigned int events_maskl;
long unsigned int events_mask[1];
int events_mask_len;
int apic;
u64 max_period;
struct event_constraint * (*get_event_constraints)(struct cpu_hw_events *, int, struct perf_event *);
void (*put_event_constraints)(struct cpu_hw_events *, struct perf_event *);
void (*start_scheduling)(struct cpu_hw_events *);
void (*commit_scheduling)(struct cpu_hw_events *, int, int);
void (*stop_scheduling)(struct cpu_hw_events *);
struct event_constraint *event_constraints;
struct x86_pmu_quirk *quirks;
int perfctr_second_write;
bool late_ack;
u64 (*limit_period)(struct perf_event *, u64);
int attr_rdpmc_broken;
int attr_rdpmc;
struct attribute **format_attrs;
struct attribute **event_attrs;
struct attribute **caps_attrs;
ssize_t (*events_sysfs_show)(char *, u64);
struct attribute **cpu_events;
long unsigned int attr_freeze_on_smi;
struct attribute **attrs;
int (*cpu_prepare)(int);
void (*cpu_starting)(int);
void (*cpu_dying)(int);
void (*cpu_dead)(int);
void (*check_microcode)();
void (*sched_task)(struct perf_event_context *, bool);
u64 intel_ctrl;
union perf_capabilities intel_cap;
unsigned int bts;
unsigned int bts_active;
unsigned int pebs;
unsigned int pebs_active;
unsigned int pebs_broken;
unsigned int pebs_prec_dist;
unsigned int pebs_no_tlb;
int pebs_record_size;
int pebs_buffer_size;
void (*drain_pebs)(struct pt_regs *);
struct event_constraint *pebs_constraints;
void (*pebs_aliases)(struct perf_event *);
int max_pebs_events;
long unsigned int large_pebs_flags;
long unsigned int lbr_tos;
long unsigned int lbr_from;
long unsigned int lbr_to;
int lbr_nr;
u64 lbr_sel_mask;
const int *lbr_sel_map;
bool lbr_double_abort;
bool lbr_pt_coexist;
atomic_t lbr_exclusive[3];
unsigned int amd_nb_constraints;
struct extra_reg *extra_regs;
unsigned int flags;
struct perf_guest_switch_msr * (*guest_get_msrs)(int *);
};
5.0
: ✅struct x86_pmu {
const char *name;
int version;
int (*handle_irq)(struct pt_regs *);
void (*disable_all)();
void (*enable_all)(int);
void (*enable)(struct perf_event *);
void (*disable)(struct perf_event *);
void (*add)(struct perf_event *);
void (*del)(struct perf_event *);
void (*read)(struct perf_event *);
int (*hw_config)(struct perf_event *);
int (*schedule_events)(struct cpu_hw_events *, int, int *);
unsigned int eventsel;
unsigned int perfctr;
int (*addr_offset)(int, bool);
int (*rdpmc_index)(int);
u64 (*event_map)(int);
int max_events;
int num_counters;
int num_counters_fixed;
int cntval_bits;
u64 cntval_mask;
long unsigned int events_maskl;
long unsigned int events_mask[1];
int events_mask_len;
int apic;
u64 max_period;
struct event_constraint * (*get_event_constraints)(struct cpu_hw_events *, int, struct perf_event *);
void (*put_event_constraints)(struct cpu_hw_events *, struct perf_event *);
void (*start_scheduling)(struct cpu_hw_events *);
void (*commit_scheduling)(struct cpu_hw_events *, int, int);
void (*stop_scheduling)(struct cpu_hw_events *);
struct event_constraint *event_constraints;
struct x86_pmu_quirk *quirks;
int perfctr_second_write;
u64 (*limit_period)(struct perf_event *, u64);
unsigned int late_ack;
unsigned int counter_freezing;
int attr_rdpmc_broken;
int attr_rdpmc;
struct attribute **format_attrs;
struct attribute **event_attrs;
struct attribute **caps_attrs;
ssize_t (*events_sysfs_show)(char *, u64);
struct attribute **cpu_events;
long unsigned int attr_freeze_on_smi;
struct attribute **attrs;
int (*cpu_prepare)(int);
void (*cpu_starting)(int);
void (*cpu_dying)(int);
void (*cpu_dead)(int);
void (*check_microcode)();
void (*sched_task)(struct perf_event_context *, bool);
u64 intel_ctrl;
union perf_capabilities intel_cap;
unsigned int bts;
unsigned int bts_active;
unsigned int pebs;
unsigned int pebs_active;
unsigned int pebs_broken;
unsigned int pebs_prec_dist;
unsigned int pebs_no_tlb;
int pebs_record_size;
int pebs_buffer_size;
void (*drain_pebs)(struct pt_regs *);
struct event_constraint *pebs_constraints;
void (*pebs_aliases)(struct perf_event *);
int max_pebs_events;
long unsigned int large_pebs_flags;
long unsigned int lbr_tos;
long unsigned int lbr_from;
long unsigned int lbr_to;
int lbr_nr;
u64 lbr_sel_mask;
const int *lbr_sel_map;
bool lbr_double_abort;
bool lbr_pt_coexist;
atomic_t lbr_exclusive[3];
unsigned int amd_nb_constraints;
struct extra_reg *extra_regs;
unsigned int flags;
struct perf_guest_switch_msr * (*guest_get_msrs)(int *);
int (*check_period)(struct perf_event *, u64);
};
5.3
: ✅struct x86_pmu {
const char *name;
int version;
int (*handle_irq)(struct pt_regs *);
void (*disable_all)();
void (*enable_all)(int);
void (*enable)(struct perf_event *);
void (*disable)(struct perf_event *);
void (*add)(struct perf_event *);
void (*del)(struct perf_event *);
void (*read)(struct perf_event *);
int (*hw_config)(struct perf_event *);
int (*schedule_events)(struct cpu_hw_events *, int, int *);
unsigned int eventsel;
unsigned int perfctr;
int (*addr_offset)(int, bool);
int (*rdpmc_index)(int);
u64 (*event_map)(int);
int max_events;
int num_counters;
int num_counters_fixed;
int cntval_bits;
u64 cntval_mask;
long unsigned int events_maskl;
long unsigned int events_mask[1];
int events_mask_len;
int apic;
u64 max_period;
struct event_constraint * (*get_event_constraints)(struct cpu_hw_events *, int, struct perf_event *);
void (*put_event_constraints)(struct cpu_hw_events *, struct perf_event *);
void (*start_scheduling)(struct cpu_hw_events *);
void (*commit_scheduling)(struct cpu_hw_events *, int, int);
void (*stop_scheduling)(struct cpu_hw_events *);
struct event_constraint *event_constraints;
struct x86_pmu_quirk *quirks;
int perfctr_second_write;
u64 (*limit_period)(struct perf_event *, u64);
unsigned int late_ack;
unsigned int counter_freezing;
int attr_rdpmc_broken;
int attr_rdpmc;
struct attribute **format_attrs;
ssize_t (*events_sysfs_show)(char *, u64);
const struct attribute_group **attr_update;
long unsigned int attr_freeze_on_smi;
int (*cpu_prepare)(int);
void (*cpu_starting)(int);
void (*cpu_dying)(int);
void (*cpu_dead)(int);
void (*check_microcode)();
void (*sched_task)(struct perf_event_context *, bool);
u64 intel_ctrl;
union perf_capabilities intel_cap;
unsigned int bts;
unsigned int bts_active;
unsigned int pebs;
unsigned int pebs_active;
unsigned int pebs_broken;
unsigned int pebs_prec_dist;
unsigned int pebs_no_tlb;
unsigned int pebs_no_isolation;
int pebs_record_size;
int pebs_buffer_size;
int max_pebs_events;
void (*drain_pebs)(struct pt_regs *);
struct event_constraint *pebs_constraints;
void (*pebs_aliases)(struct perf_event *);
long unsigned int large_pebs_flags;
u64 rtm_abort_event;
long unsigned int lbr_tos;
long unsigned int lbr_from;
long unsigned int lbr_to;
int lbr_nr;
u64 lbr_sel_mask;
const int *lbr_sel_map;
bool lbr_double_abort;
bool lbr_pt_coexist;
atomic_t lbr_exclusive[3];
unsigned int amd_nb_constraints;
struct extra_reg *extra_regs;
unsigned int flags;
struct perf_guest_switch_msr * (*guest_get_msrs)(int *);
int (*check_period)(struct perf_event *, u64);
};
5.4
: ✅struct x86_pmu {
const char *name;
int version;
int (*handle_irq)(struct pt_regs *);
void (*disable_all)();
void (*enable_all)(int);
void (*enable)(struct perf_event *);
void (*disable)(struct perf_event *);
void (*add)(struct perf_event *);
void (*del)(struct perf_event *);
void (*read)(struct perf_event *);
int (*hw_config)(struct perf_event *);
int (*schedule_events)(struct cpu_hw_events *, int, int *);
unsigned int eventsel;
unsigned int perfctr;
int (*addr_offset)(int, bool);
int (*rdpmc_index)(int);
u64 (*event_map)(int);
int max_events;
int num_counters;
int num_counters_fixed;
int cntval_bits;
u64 cntval_mask;
long unsigned int events_maskl;
long unsigned int events_mask[1];
int events_mask_len;
int apic;
u64 max_period;
struct event_constraint * (*get_event_constraints)(struct cpu_hw_events *, int, struct perf_event *);
void (*put_event_constraints)(struct cpu_hw_events *, struct perf_event *);
void (*start_scheduling)(struct cpu_hw_events *);
void (*commit_scheduling)(struct cpu_hw_events *, int, int);
void (*stop_scheduling)(struct cpu_hw_events *);
struct event_constraint *event_constraints;
struct x86_pmu_quirk *quirks;
int perfctr_second_write;
u64 (*limit_period)(struct perf_event *, u64);
unsigned int late_ack;
unsigned int counter_freezing;
int attr_rdpmc_broken;
int attr_rdpmc;
struct attribute **format_attrs;
ssize_t (*events_sysfs_show)(char *, u64);
const struct attribute_group **attr_update;
long unsigned int attr_freeze_on_smi;
int (*cpu_prepare)(int);
void (*cpu_starting)(int);
void (*cpu_dying)(int);
void (*cpu_dead)(int);
void (*check_microcode)();
void (*sched_task)(struct perf_event_context *, bool);
u64 intel_ctrl;
union perf_capabilities intel_cap;
unsigned int bts;
unsigned int bts_active;
unsigned int pebs;
unsigned int pebs_active;
unsigned int pebs_broken;
unsigned int pebs_prec_dist;
unsigned int pebs_no_tlb;
unsigned int pebs_no_isolation;
int pebs_record_size;
int pebs_buffer_size;
int max_pebs_events;
void (*drain_pebs)(struct pt_regs *);
struct event_constraint *pebs_constraints;
void (*pebs_aliases)(struct perf_event *);
long unsigned int large_pebs_flags;
u64 rtm_abort_event;
long unsigned int lbr_tos;
long unsigned int lbr_from;
long unsigned int lbr_to;
int lbr_nr;
u64 lbr_sel_mask;
const int *lbr_sel_map;
bool lbr_double_abort;
bool lbr_pt_coexist;
atomic_t lbr_exclusive[3];
unsigned int amd_nb_constraints;
u64 perf_ctr_pair_en;
struct extra_reg *extra_regs;
unsigned int flags;
struct perf_guest_switch_msr * (*guest_get_msrs)(int *);
int (*check_period)(struct perf_event *, u64);
int (*aux_output_match)(struct perf_event *);
};
5.8
: ✅struct x86_pmu {
const char *name;
int version;
int (*handle_irq)(struct pt_regs *);
void (*disable_all)();
void (*enable_all)(int);
void (*enable)(struct perf_event *);
void (*disable)(struct perf_event *);
void (*add)(struct perf_event *);
void (*del)(struct perf_event *);
void (*read)(struct perf_event *);
int (*hw_config)(struct perf_event *);
int (*schedule_events)(struct cpu_hw_events *, int, int *);
unsigned int eventsel;
unsigned int perfctr;
int (*addr_offset)(int, bool);
int (*rdpmc_index)(int);
u64 (*event_map)(int);
int max_events;
int num_counters;
int num_counters_fixed;
int cntval_bits;
u64 cntval_mask;
long unsigned int events_maskl;
long unsigned int events_mask[1];
int events_mask_len;
int apic;
u64 max_period;
struct event_constraint * (*get_event_constraints)(struct cpu_hw_events *, int, struct perf_event *);
void (*put_event_constraints)(struct cpu_hw_events *, struct perf_event *);
void (*start_scheduling)(struct cpu_hw_events *);
void (*commit_scheduling)(struct cpu_hw_events *, int, int);
void (*stop_scheduling)(struct cpu_hw_events *);
struct event_constraint *event_constraints;
struct x86_pmu_quirk *quirks;
int perfctr_second_write;
u64 (*limit_period)(struct perf_event *, u64);
unsigned int late_ack;
unsigned int enabled_ack;
unsigned int counter_freezing;
int attr_rdpmc_broken;
int attr_rdpmc;
struct attribute **format_attrs;
ssize_t (*events_sysfs_show)(char *, u64);
const struct attribute_group **attr_update;
long unsigned int attr_freeze_on_smi;
int (*cpu_prepare)(int);
void (*cpu_starting)(int);
void (*cpu_dying)(int);
void (*cpu_dead)(int);
void (*check_microcode)();
void (*sched_task)(struct perf_event_context *, bool);
u64 intel_ctrl;
union perf_capabilities intel_cap;
unsigned int bts;
unsigned int bts_active;
unsigned int pebs;
unsigned int pebs_active;
unsigned int pebs_broken;
unsigned int pebs_prec_dist;
unsigned int pebs_no_tlb;
unsigned int pebs_no_isolation;
int pebs_record_size;
int pebs_buffer_size;
int max_pebs_events;
void (*drain_pebs)(struct pt_regs *);
struct event_constraint *pebs_constraints;
void (*pebs_aliases)(struct perf_event *);
long unsigned int large_pebs_flags;
u64 rtm_abort_event;
long unsigned int lbr_tos;
long unsigned int lbr_from;
long unsigned int lbr_to;
int lbr_nr;
u64 lbr_sel_mask;
const int *lbr_sel_map;
bool lbr_double_abort;
bool lbr_pt_coexist;
atomic_t lbr_exclusive[3];
void (*swap_task_ctx)(struct perf_event_context *, struct perf_event_context *);
unsigned int amd_nb_constraints;
u64 perf_ctr_pair_en;
struct extra_reg *extra_regs;
unsigned int flags;
struct perf_guest_switch_msr * (*guest_get_msrs)(int *);
int (*check_period)(struct perf_event *, u64);
int (*aux_output_match)(struct perf_event *);
};
5.11
: ✅struct x86_pmu {
const char *name;
int version;
int (*handle_irq)(struct pt_regs *);
void (*disable_all)();
void (*enable_all)(int);
void (*enable)(struct perf_event *);
void (*disable)(struct perf_event *);
void (*add)(struct perf_event *);
void (*del)(struct perf_event *);
void (*read)(struct perf_event *);
int (*hw_config)(struct perf_event *);
int (*schedule_events)(struct cpu_hw_events *, int, int *);
unsigned int eventsel;
unsigned int perfctr;
int (*addr_offset)(int, bool);
int (*rdpmc_index)(int);
u64 (*event_map)(int);
int max_events;
int num_counters;
int num_counters_fixed;
int cntval_bits;
u64 cntval_mask;
long unsigned int events_maskl;
long unsigned int events_mask[1];
int events_mask_len;
int apic;
u64 max_period;
struct event_constraint * (*get_event_constraints)(struct cpu_hw_events *, int, struct perf_event *);
void (*put_event_constraints)(struct cpu_hw_events *, struct perf_event *);
void (*start_scheduling)(struct cpu_hw_events *);
void (*commit_scheduling)(struct cpu_hw_events *, int, int);
void (*stop_scheduling)(struct cpu_hw_events *);
struct event_constraint *event_constraints;
struct x86_pmu_quirk *quirks;
int perfctr_second_write;
u64 (*limit_period)(struct perf_event *, u64);
unsigned int late_ack;
unsigned int enabled_ack;
unsigned int counter_freezing;
int attr_rdpmc_broken;
int attr_rdpmc;
struct attribute **format_attrs;
ssize_t (*events_sysfs_show)(char *, u64);
const struct attribute_group **attr_update;
long unsigned int attr_freeze_on_smi;
int (*cpu_prepare)(int);
void (*cpu_starting)(int);
void (*cpu_dying)(int);
void (*cpu_dead)(int);
void (*check_microcode)();
void (*sched_task)(struct perf_event_context *, bool);
u64 intel_ctrl;
union perf_capabilities intel_cap;
unsigned int bts;
unsigned int bts_active;
unsigned int pebs;
unsigned int pebs_active;
unsigned int pebs_broken;
unsigned int pebs_prec_dist;
unsigned int pebs_no_tlb;
unsigned int pebs_no_isolation;
int pebs_record_size;
int pebs_buffer_size;
int max_pebs_events;
void (*drain_pebs)(struct pt_regs *, struct perf_sample_data *);
struct event_constraint *pebs_constraints;
void (*pebs_aliases)(struct perf_event *);
long unsigned int large_pebs_flags;
u64 rtm_abort_event;
unsigned int lbr_tos;
unsigned int lbr_from;
unsigned int lbr_to;
unsigned int lbr_info;
unsigned int lbr_nr;
u64 lbr_sel_mask;
u64 lbr_ctl_mask;
const int *lbr_sel_map;
int *lbr_ctl_map;
bool lbr_double_abort;
bool lbr_pt_coexist;
unsigned int lbr_depth_mask;
unsigned int lbr_deep_c_reset;
unsigned int lbr_lip;
unsigned int lbr_cpl;
unsigned int lbr_filter;
unsigned int lbr_call_stack;
unsigned int lbr_mispred;
unsigned int lbr_timed_lbr;
unsigned int lbr_br_type;
void (*lbr_reset)();
void (*lbr_read)(struct cpu_hw_events *);
void (*lbr_save)(void *);
void (*lbr_restore)(void *);
atomic_t lbr_exclusive[3];
u64 (*update_topdown_event)(struct perf_event *);
int (*set_topdown_event_period)(struct perf_event *);
void (*swap_task_ctx)(struct perf_event_context *, struct perf_event_context *);
unsigned int amd_nb_constraints;
u64 perf_ctr_pair_en;
struct extra_reg *extra_regs;
unsigned int flags;
struct perf_guest_switch_msr * (*guest_get_msrs)(int *);
int (*check_period)(struct perf_event *, u64);
int (*aux_output_match)(struct perf_event *);
};
5.13
: ✅struct x86_pmu {
const char *name;
int version;
int (*handle_irq)(struct pt_regs *);
void (*disable_all)();
void (*enable_all)(int);
void (*enable)(struct perf_event *);
void (*disable)(struct perf_event *);
void (*add)(struct perf_event *);
void (*del)(struct perf_event *);
void (*read)(struct perf_event *);
int (*hw_config)(struct perf_event *);
int (*schedule_events)(struct cpu_hw_events *, int, int *);
unsigned int eventsel;
unsigned int perfctr;
int (*addr_offset)(int, bool);
int (*rdpmc_index)(int);
u64 (*event_map)(int);
int max_events;
int num_counters;
int num_counters_fixed;
int cntval_bits;
u64 cntval_mask;
long unsigned int events_maskl;
long unsigned int events_mask[1];
int events_mask_len;
int apic;
u64 max_period;
struct event_constraint * (*get_event_constraints)(struct cpu_hw_events *, int, struct perf_event *);
void (*put_event_constraints)(struct cpu_hw_events *, struct perf_event *);
void (*start_scheduling)(struct cpu_hw_events *);
void (*commit_scheduling)(struct cpu_hw_events *, int, int);
void (*stop_scheduling)(struct cpu_hw_events *);
struct event_constraint *event_constraints;
struct x86_pmu_quirk *quirks;
int perfctr_second_write;
u64 (*limit_period)(struct perf_event *, u64);
unsigned int late_ack;
unsigned int mid_ack;
unsigned int enabled_ack;
int attr_rdpmc_broken;
int attr_rdpmc;
struct attribute **format_attrs;
ssize_t (*events_sysfs_show)(char *, u64);
const struct attribute_group **attr_update;
long unsigned int attr_freeze_on_smi;
int (*cpu_prepare)(int);
void (*cpu_starting)(int);
void (*cpu_dying)(int);
void (*cpu_dead)(int);
void (*check_microcode)();
void (*sched_task)(struct perf_event_context *, bool);
u64 intel_ctrl;
union perf_capabilities intel_cap;
unsigned int bts;
unsigned int bts_active;
unsigned int pebs;
unsigned int pebs_active;
unsigned int pebs_broken;
unsigned int pebs_prec_dist;
unsigned int pebs_no_tlb;
unsigned int pebs_no_isolation;
unsigned int pebs_block;
int pebs_record_size;
int pebs_buffer_size;
int max_pebs_events;
void (*drain_pebs)(struct pt_regs *, struct perf_sample_data *);
struct event_constraint *pebs_constraints;
void (*pebs_aliases)(struct perf_event *);
long unsigned int large_pebs_flags;
u64 rtm_abort_event;
unsigned int lbr_tos;
unsigned int lbr_from;
unsigned int lbr_to;
unsigned int lbr_info;
unsigned int lbr_nr;
u64 lbr_sel_mask;
u64 lbr_ctl_mask;
const int *lbr_sel_map;
int *lbr_ctl_map;
bool lbr_double_abort;
bool lbr_pt_coexist;
unsigned int lbr_depth_mask;
unsigned int lbr_deep_c_reset;
unsigned int lbr_lip;
unsigned int lbr_cpl;
unsigned int lbr_filter;
unsigned int lbr_call_stack;
unsigned int lbr_mispred;
unsigned int lbr_timed_lbr;
unsigned int lbr_br_type;
void (*lbr_reset)();
void (*lbr_read)(struct cpu_hw_events *);
void (*lbr_save)(void *);
void (*lbr_restore)(void *);
atomic_t lbr_exclusive[3];
int num_topdown_events;
u64 (*update_topdown_event)(struct perf_event *);
int (*set_topdown_event_period)(struct perf_event *);
void (*swap_task_ctx)(struct perf_event_context *, struct perf_event_context *);
unsigned int amd_nb_constraints;
u64 perf_ctr_pair_en;
struct extra_reg *extra_regs;
unsigned int flags;
struct perf_guest_switch_msr * (*guest_get_msrs)(int *);
int (*check_period)(struct perf_event *, u64);
int (*aux_output_match)(struct perf_event *);
int (*filter_match)(struct perf_event *);
int num_hybrid_pmus;
struct x86_hybrid_pmu *hybrid_pmu;
u8 (*get_hybrid_cpu_type)();
};
5.15
: ✅struct x86_pmu {
const char *name;
int version;
int (*handle_irq)(struct pt_regs *);
void (*disable_all)();
void (*enable_all)(int);
void (*enable)(struct perf_event *);
void (*disable)(struct perf_event *);
void (*add)(struct perf_event *);
void (*del)(struct perf_event *);
void (*read)(struct perf_event *);
int (*hw_config)(struct perf_event *);
int (*schedule_events)(struct cpu_hw_events *, int, int *);
unsigned int eventsel;
unsigned int perfctr;
int (*addr_offset)(int, bool);
int (*rdpmc_index)(int);
u64 (*event_map)(int);
int max_events;
int num_counters;
int num_counters_fixed;
int cntval_bits;
u64 cntval_mask;
long unsigned int events_maskl;
long unsigned int events_mask[1];
int events_mask_len;
int apic;
u64 max_period;
struct event_constraint * (*get_event_constraints)(struct cpu_hw_events *, int, struct perf_event *);
void (*put_event_constraints)(struct cpu_hw_events *, struct perf_event *);
void (*start_scheduling)(struct cpu_hw_events *);
void (*commit_scheduling)(struct cpu_hw_events *, int, int);
void (*stop_scheduling)(struct cpu_hw_events *);
struct event_constraint *event_constraints;
struct x86_pmu_quirk *quirks;
int perfctr_second_write;
u64 (*limit_period)(struct perf_event *, u64);
unsigned int late_ack;
unsigned int mid_ack;
unsigned int enabled_ack;
int attr_rdpmc_broken;
int attr_rdpmc;
struct attribute **format_attrs;
ssize_t (*events_sysfs_show)(char *, u64);
const struct attribute_group **attr_update;
long unsigned int attr_freeze_on_smi;
int (*cpu_prepare)(int);
void (*cpu_starting)(int);
void (*cpu_dying)(int);
void (*cpu_dead)(int);
void (*check_microcode)();
void (*sched_task)(struct perf_event_context *, bool);
u64 intel_ctrl;
union perf_capabilities intel_cap;
unsigned int bts;
unsigned int bts_active;
unsigned int pebs;
unsigned int pebs_active;
unsigned int pebs_broken;
unsigned int pebs_prec_dist;
unsigned int pebs_no_tlb;
unsigned int pebs_no_isolation;
unsigned int pebs_block;
int pebs_record_size;
int pebs_buffer_size;
int max_pebs_events;
void (*drain_pebs)(struct pt_regs *, struct perf_sample_data *);
struct event_constraint *pebs_constraints;
void (*pebs_aliases)(struct perf_event *);
long unsigned int large_pebs_flags;
u64 rtm_abort_event;
unsigned int lbr_tos;
unsigned int lbr_from;
unsigned int lbr_to;
unsigned int lbr_info;
unsigned int lbr_nr;
u64 lbr_sel_mask;
u64 lbr_ctl_mask;
const int *lbr_sel_map;
int *lbr_ctl_map;
bool lbr_double_abort;
bool lbr_pt_coexist;
unsigned int lbr_depth_mask;
unsigned int lbr_deep_c_reset;
unsigned int lbr_lip;
unsigned int lbr_cpl;
unsigned int lbr_filter;
unsigned int lbr_call_stack;
unsigned int lbr_mispred;
unsigned int lbr_timed_lbr;
unsigned int lbr_br_type;
void (*lbr_reset)();
void (*lbr_read)(struct cpu_hw_events *);
void (*lbr_save)(void *);
void (*lbr_restore)(void *);
atomic_t lbr_exclusive[3];
int num_topdown_events;
u64 (*update_topdown_event)(struct perf_event *);
int (*set_topdown_event_period)(struct perf_event *);
void (*swap_task_ctx)(struct perf_event_context *, struct perf_event_context *);
unsigned int amd_nb_constraints;
u64 perf_ctr_pair_en;
struct extra_reg *extra_regs;
unsigned int flags;
struct perf_guest_switch_msr * (*guest_get_msrs)(int *);
int (*check_period)(struct perf_event *, u64);
int (*aux_output_match)(struct perf_event *);
int (*filter_match)(struct perf_event *);
int num_hybrid_pmus;
struct x86_hybrid_pmu *hybrid_pmu;
u8 (*get_hybrid_cpu_type)();
};
5.19
: ✅struct x86_pmu {
const char *name;
int version;
int (*handle_irq)(struct pt_regs *);
void (*disable_all)();
void (*enable_all)(int);
void (*enable)(struct perf_event *);
void (*disable)(struct perf_event *);
void (*assign)(struct perf_event *, int);
void (*add)(struct perf_event *);
void (*del)(struct perf_event *);
void (*read)(struct perf_event *);
int (*hw_config)(struct perf_event *);
int (*schedule_events)(struct cpu_hw_events *, int, int *);
unsigned int eventsel;
unsigned int perfctr;
int (*addr_offset)(int, bool);
int (*rdpmc_index)(int);
u64 (*event_map)(int);
int max_events;
int num_counters;
int num_counters_fixed;
int cntval_bits;
u64 cntval_mask;
long unsigned int events_maskl;
long unsigned int events_mask[1];
int events_mask_len;
int apic;
u64 max_period;
struct event_constraint * (*get_event_constraints)(struct cpu_hw_events *, int, struct perf_event *);
void (*put_event_constraints)(struct cpu_hw_events *, struct perf_event *);
void (*start_scheduling)(struct cpu_hw_events *);
void (*commit_scheduling)(struct cpu_hw_events *, int, int);
void (*stop_scheduling)(struct cpu_hw_events *);
struct event_constraint *event_constraints;
struct x86_pmu_quirk *quirks;
int perfctr_second_write;
u64 (*limit_period)(struct perf_event *, u64);
unsigned int late_ack;
unsigned int mid_ack;
unsigned int enabled_ack;
int attr_rdpmc_broken;
int attr_rdpmc;
struct attribute **format_attrs;
ssize_t (*events_sysfs_show)(char *, u64);
const struct attribute_group **attr_update;
long unsigned int attr_freeze_on_smi;
int (*cpu_prepare)(int);
void (*cpu_starting)(int);
void (*cpu_dying)(int);
void (*cpu_dead)(int);
void (*check_microcode)();
void (*sched_task)(struct perf_event_context *, bool);
u64 intel_ctrl;
union perf_capabilities intel_cap;
unsigned int bts;
unsigned int bts_active;
unsigned int pebs;
unsigned int pebs_active;
unsigned int pebs_broken;
unsigned int pebs_prec_dist;
unsigned int pebs_no_tlb;
unsigned int pebs_no_isolation;
unsigned int pebs_block;
int pebs_record_size;
int pebs_buffer_size;
int max_pebs_events;
void (*drain_pebs)(struct pt_regs *, struct perf_sample_data *);
struct event_constraint *pebs_constraints;
void (*pebs_aliases)(struct perf_event *);
u64 (*pebs_latency_data)(struct perf_event *, u64);
long unsigned int large_pebs_flags;
u64 rtm_abort_event;
unsigned int lbr_tos;
unsigned int lbr_from;
unsigned int lbr_to;
unsigned int lbr_info;
unsigned int lbr_nr;
u64 lbr_sel_mask;
u64 lbr_ctl_mask;
const int *lbr_sel_map;
int *lbr_ctl_map;
bool lbr_double_abort;
bool lbr_pt_coexist;
unsigned int lbr_has_info;
unsigned int lbr_has_tsx;
unsigned int lbr_from_flags;
unsigned int lbr_to_cycles;
unsigned int lbr_depth_mask;
unsigned int lbr_deep_c_reset;
unsigned int lbr_lip;
unsigned int lbr_cpl;
unsigned int lbr_filter;
unsigned int lbr_call_stack;
unsigned int lbr_mispred;
unsigned int lbr_timed_lbr;
unsigned int lbr_br_type;
void (*lbr_reset)();
void (*lbr_read)(struct cpu_hw_events *);
void (*lbr_save)(void *);
void (*lbr_restore)(void *);
atomic_t lbr_exclusive[3];
int num_topdown_events;
u64 (*update_topdown_event)(struct perf_event *);
int (*set_topdown_event_period)(struct perf_event *);
void (*swap_task_ctx)(struct perf_event_context *, struct perf_event_context *);
unsigned int amd_nb_constraints;
u64 perf_ctr_pair_en;
struct extra_reg *extra_regs;
unsigned int flags;
struct perf_guest_switch_msr * (*guest_get_msrs)(int *);
int (*check_period)(struct perf_event *, u64);
int (*aux_output_match)(struct perf_event *);
int (*filter_match)(struct perf_event *);
int num_hybrid_pmus;
struct x86_hybrid_pmu *hybrid_pmu;
u8 (*get_hybrid_cpu_type)();
};
6.2
: ✅struct x86_pmu {
const char *name;
int version;
int (*handle_irq)(struct pt_regs *);
void (*disable_all)();
void (*enable_all)(int);
void (*enable)(struct perf_event *);
void (*disable)(struct perf_event *);
void (*assign)(struct perf_event *, int);
void (*add)(struct perf_event *);
void (*del)(struct perf_event *);
void (*read)(struct perf_event *);
int (*set_period)(struct perf_event *);
u64 (*update)(struct perf_event *);
int (*hw_config)(struct perf_event *);
int (*schedule_events)(struct cpu_hw_events *, int, int *);
unsigned int eventsel;
unsigned int perfctr;
int (*addr_offset)(int, bool);
int (*rdpmc_index)(int);
u64 (*event_map)(int);
int max_events;
int num_counters;
int num_counters_fixed;
int cntval_bits;
u64 cntval_mask;
long unsigned int events_maskl;
long unsigned int events_mask[1];
int events_mask_len;
int apic;
u64 max_period;
struct event_constraint * (*get_event_constraints)(struct cpu_hw_events *, int, struct perf_event *);
void (*put_event_constraints)(struct cpu_hw_events *, struct perf_event *);
void (*start_scheduling)(struct cpu_hw_events *);
void (*commit_scheduling)(struct cpu_hw_events *, int, int);
void (*stop_scheduling)(struct cpu_hw_events *);
struct event_constraint *event_constraints;
struct x86_pmu_quirk *quirks;
void (*limit_period)(struct perf_event *, s64 *);
unsigned int late_ack;
unsigned int mid_ack;
unsigned int enabled_ack;
int attr_rdpmc_broken;
int attr_rdpmc;
struct attribute **format_attrs;
ssize_t (*events_sysfs_show)(char *, u64);
const struct attribute_group **attr_update;
long unsigned int attr_freeze_on_smi;
int (*cpu_prepare)(int);
void (*cpu_starting)(int);
void (*cpu_dying)(int);
void (*cpu_dead)(int);
void (*check_microcode)();
void (*sched_task)(struct perf_event_pmu_context *, bool);
u64 intel_ctrl;
union perf_capabilities intel_cap;
unsigned int bts;
unsigned int bts_active;
unsigned int pebs;
unsigned int pebs_active;
unsigned int pebs_broken;
unsigned int pebs_prec_dist;
unsigned int pebs_no_tlb;
unsigned int pebs_no_isolation;
unsigned int pebs_block;
unsigned int pebs_ept;
int pebs_record_size;
int pebs_buffer_size;
int max_pebs_events;
void (*drain_pebs)(struct pt_regs *, struct perf_sample_data *);
struct event_constraint *pebs_constraints;
void (*pebs_aliases)(struct perf_event *);
u64 (*pebs_latency_data)(struct perf_event *, u64);
long unsigned int large_pebs_flags;
u64 rtm_abort_event;
u64 pebs_capable;
unsigned int lbr_tos;
unsigned int lbr_from;
unsigned int lbr_to;
unsigned int lbr_info;
unsigned int lbr_nr;
u64 lbr_sel_mask;
u64 lbr_ctl_mask;
const int *lbr_sel_map;
int *lbr_ctl_map;
bool lbr_double_abort;
bool lbr_pt_coexist;
unsigned int lbr_has_info;
unsigned int lbr_has_tsx;
unsigned int lbr_from_flags;
unsigned int lbr_to_cycles;
unsigned int lbr_depth_mask;
unsigned int lbr_deep_c_reset;
unsigned int lbr_lip;
unsigned int lbr_cpl;
unsigned int lbr_filter;
unsigned int lbr_call_stack;
unsigned int lbr_mispred;
unsigned int lbr_timed_lbr;
unsigned int lbr_br_type;
void (*lbr_reset)();
void (*lbr_read)(struct cpu_hw_events *);
void (*lbr_save)(void *);
void (*lbr_restore)(void *);
atomic_t lbr_exclusive[3];
int num_topdown_events;
void (*swap_task_ctx)(struct perf_event_pmu_context *, struct perf_event_pmu_context *);
unsigned int amd_nb_constraints;
u64 perf_ctr_pair_en;
struct extra_reg *extra_regs;
unsigned int flags;
struct perf_guest_switch_msr * (*guest_get_msrs)(int *, void *);
int (*check_period)(struct perf_event *, u64);
int (*aux_output_match)(struct perf_event *);
void (*filter)(struct pmu *, int, bool *);
int num_hybrid_pmus;
struct x86_hybrid_pmu *hybrid_pmu;
u8 (*get_hybrid_cpu_type)();
};
6.5
: ✅struct x86_pmu {
const char *name;
int version;
int (*handle_irq)(struct pt_regs *);
void (*disable_all)();
void (*enable_all)(int);
void (*enable)(struct perf_event *);
void (*disable)(struct perf_event *);
void (*assign)(struct perf_event *, int);
void (*add)(struct perf_event *);
void (*del)(struct perf_event *);
void (*read)(struct perf_event *);
int (*set_period)(struct perf_event *);
u64 (*update)(struct perf_event *);
int (*hw_config)(struct perf_event *);
int (*schedule_events)(struct cpu_hw_events *, int, int *);
unsigned int eventsel;
unsigned int perfctr;
int (*addr_offset)(int, bool);
int (*rdpmc_index)(int);
u64 (*event_map)(int);
int max_events;
int num_counters;
int num_counters_fixed;
int cntval_bits;
u64 cntval_mask;
long unsigned int events_maskl;
long unsigned int events_mask[1];
int events_mask_len;
int apic;
u64 max_period;
struct event_constraint * (*get_event_constraints)(struct cpu_hw_events *, int, struct perf_event *);
void (*put_event_constraints)(struct cpu_hw_events *, struct perf_event *);
void (*start_scheduling)(struct cpu_hw_events *);
void (*commit_scheduling)(struct cpu_hw_events *, int, int);
void (*stop_scheduling)(struct cpu_hw_events *);
struct event_constraint *event_constraints;
struct x86_pmu_quirk *quirks;
void (*limit_period)(struct perf_event *, s64 *);
unsigned int late_ack;
unsigned int mid_ack;
unsigned int enabled_ack;
int attr_rdpmc_broken;
int attr_rdpmc;
struct attribute **format_attrs;
ssize_t (*events_sysfs_show)(char *, u64);
const struct attribute_group **attr_update;
long unsigned int attr_freeze_on_smi;
int (*cpu_prepare)(int);
void (*cpu_starting)(int);
void (*cpu_dying)(int);
void (*cpu_dead)(int);
void (*check_microcode)();
void (*sched_task)(struct perf_event_pmu_context *, bool);
u64 intel_ctrl;
union perf_capabilities intel_cap;
unsigned int bts;
unsigned int bts_active;
unsigned int pebs;
unsigned int pebs_active;
unsigned int pebs_broken;
unsigned int pebs_prec_dist;
unsigned int pebs_no_tlb;
unsigned int pebs_no_isolation;
unsigned int pebs_block;
unsigned int pebs_ept;
int pebs_record_size;
int pebs_buffer_size;
int max_pebs_events;
void (*drain_pebs)(struct pt_regs *, struct perf_sample_data *);
struct event_constraint *pebs_constraints;
void (*pebs_aliases)(struct perf_event *);
u64 (*pebs_latency_data)(struct perf_event *, u64);
long unsigned int large_pebs_flags;
u64 rtm_abort_event;
u64 pebs_capable;
unsigned int lbr_tos;
unsigned int lbr_from;
unsigned int lbr_to;
unsigned int lbr_info;
unsigned int lbr_nr;
u64 lbr_sel_mask;
u64 lbr_ctl_mask;
const int *lbr_sel_map;
int *lbr_ctl_map;
bool lbr_double_abort;
bool lbr_pt_coexist;
unsigned int lbr_has_info;
unsigned int lbr_has_tsx;
unsigned int lbr_from_flags;
unsigned int lbr_to_cycles;
unsigned int lbr_depth_mask;
unsigned int lbr_deep_c_reset;
unsigned int lbr_lip;
unsigned int lbr_cpl;
unsigned int lbr_filter;
unsigned int lbr_call_stack;
unsigned int lbr_mispred;
unsigned int lbr_timed_lbr;
unsigned int lbr_br_type;
void (*lbr_reset)();
void (*lbr_read)(struct cpu_hw_events *);
void (*lbr_save)(void *);
void (*lbr_restore)(void *);
atomic_t lbr_exclusive[3];
int num_topdown_events;
void (*swap_task_ctx)(struct perf_event_pmu_context *, struct perf_event_pmu_context *);
unsigned int amd_nb_constraints;
u64 perf_ctr_pair_en;
struct extra_reg *extra_regs;
unsigned int flags;
struct perf_guest_switch_msr * (*guest_get_msrs)(int *, void *);
int (*check_period)(struct perf_event *, u64);
int (*aux_output_match)(struct perf_event *);
void (*filter)(struct pmu *, int, bool *);
int num_hybrid_pmus;
struct x86_hybrid_pmu *hybrid_pmu;
u8 (*get_hybrid_cpu_type)();
};
6.8
: ✅struct x86_pmu {
const char *name;
int version;
int (*handle_irq)(struct pt_regs *);
void (*disable_all)();
void (*enable_all)(int);
void (*enable)(struct perf_event *);
void (*disable)(struct perf_event *);
void (*assign)(struct perf_event *, int);
void (*add)(struct perf_event *);
void (*del)(struct perf_event *);
void (*read)(struct perf_event *);
int (*set_period)(struct perf_event *);
u64 (*update)(struct perf_event *);
int (*hw_config)(struct perf_event *);
int (*schedule_events)(struct cpu_hw_events *, int, int *);
unsigned int eventsel;
unsigned int perfctr;
int (*addr_offset)(int, bool);
int (*rdpmc_index)(int);
u64 (*event_map)(int);
int max_events;
int num_counters;
int num_counters_fixed;
int cntval_bits;
u64 cntval_mask;
long unsigned int events_maskl;
long unsigned int events_mask[1];
int events_mask_len;
int apic;
u64 max_period;
struct event_constraint * (*get_event_constraints)(struct cpu_hw_events *, int, struct perf_event *);
void (*put_event_constraints)(struct cpu_hw_events *, struct perf_event *);
void (*start_scheduling)(struct cpu_hw_events *);
void (*commit_scheduling)(struct cpu_hw_events *, int, int);
void (*stop_scheduling)(struct cpu_hw_events *);
struct event_constraint *event_constraints;
struct x86_pmu_quirk *quirks;
void (*limit_period)(struct perf_event *, s64 *);
unsigned int late_ack;
unsigned int mid_ack;
unsigned int enabled_ack;
int attr_rdpmc_broken;
int attr_rdpmc;
struct attribute **format_attrs;
ssize_t (*events_sysfs_show)(char *, u64);
const struct attribute_group **attr_update;
long unsigned int attr_freeze_on_smi;
int (*cpu_prepare)(int);
void (*cpu_starting)(int);
void (*cpu_dying)(int);
void (*cpu_dead)(int);
void (*check_microcode)();
void (*sched_task)(struct perf_event_pmu_context *, bool);
u64 intel_ctrl;
union perf_capabilities intel_cap;
unsigned int bts;
unsigned int bts_active;
unsigned int pebs;
unsigned int pebs_active;
unsigned int pebs_broken;
unsigned int pebs_prec_dist;
unsigned int pebs_no_tlb;
unsigned int pebs_no_isolation;
unsigned int pebs_block;
unsigned int pebs_ept;
int pebs_record_size;
int pebs_buffer_size;
int max_pebs_events;
void (*drain_pebs)(struct pt_regs *, struct perf_sample_data *);
struct event_constraint *pebs_constraints;
void (*pebs_aliases)(struct perf_event *);
u64 (*pebs_latency_data)(struct perf_event *, u64);
long unsigned int large_pebs_flags;
u64 rtm_abort_event;
u64 pebs_capable;
unsigned int lbr_tos;
unsigned int lbr_from;
unsigned int lbr_to;
unsigned int lbr_info;
unsigned int lbr_nr;
u64 lbr_sel_mask;
u64 lbr_ctl_mask;
const int *lbr_sel_map;
int *lbr_ctl_map;
bool lbr_double_abort;
bool lbr_pt_coexist;
unsigned int lbr_has_info;
unsigned int lbr_has_tsx;
unsigned int lbr_from_flags;
unsigned int lbr_to_cycles;
unsigned int lbr_depth_mask;
unsigned int lbr_deep_c_reset;
unsigned int lbr_lip;
unsigned int lbr_cpl;
unsigned int lbr_filter;
unsigned int lbr_call_stack;
unsigned int lbr_mispred;
unsigned int lbr_timed_lbr;
unsigned int lbr_br_type;
unsigned int lbr_counters;
void (*lbr_reset)();
void (*lbr_read)(struct cpu_hw_events *);
void (*lbr_save)(void *);
void (*lbr_restore)(void *);
atomic_t lbr_exclusive[3];
int num_topdown_events;
void (*swap_task_ctx)(struct perf_event_pmu_context *, struct perf_event_pmu_context *);
unsigned int amd_nb_constraints;
u64 perf_ctr_pair_en;
struct extra_reg *extra_regs;
unsigned int flags;
struct perf_guest_switch_msr * (*guest_get_msrs)(int *, void *);
int (*check_period)(struct perf_event *, u64);
int (*aux_output_match)(struct perf_event *);
void (*filter)(struct pmu *, int, bool *);
int num_hybrid_pmus;
struct x86_hybrid_pmu *hybrid_pmu;
enum hybrid_cpu_type (*get_hybrid_cpu_type)();
};
arm64
: Absent ⚠️
armhf
: Absent ⚠️
ppc64el
: Absent ⚠️
riscv64
: Absent ⚠️
aws
: ✅struct x86_pmu {
const char *name;
int version;
int (*handle_irq)(struct pt_regs *);
void (*disable_all)();
void (*enable_all)(int);
void (*enable)(struct perf_event *);
void (*disable)(struct perf_event *);
void (*add)(struct perf_event *);
void (*del)(struct perf_event *);
void (*read)(struct perf_event *);
int (*hw_config)(struct perf_event *);
int (*schedule_events)(struct cpu_hw_events *, int, int *);
unsigned int eventsel;
unsigned int perfctr;
int (*addr_offset)(int, bool);
int (*rdpmc_index)(int);
u64 (*event_map)(int);
int max_events;
int num_counters;
int num_counters_fixed;
int cntval_bits;
u64 cntval_mask;
long unsigned int events_maskl;
long unsigned int events_mask[1];
int events_mask_len;
int apic;
u64 max_period;
struct event_constraint * (*get_event_constraints)(struct cpu_hw_events *, int, struct perf_event *);
void (*put_event_constraints)(struct cpu_hw_events *, struct perf_event *);
void (*start_scheduling)(struct cpu_hw_events *);
void (*commit_scheduling)(struct cpu_hw_events *, int, int);
void (*stop_scheduling)(struct cpu_hw_events *);
struct event_constraint *event_constraints;
struct x86_pmu_quirk *quirks;
int perfctr_second_write;
u64 (*limit_period)(struct perf_event *, u64);
unsigned int late_ack;
unsigned int counter_freezing;
int attr_rdpmc_broken;
int attr_rdpmc;
struct attribute **format_attrs;
ssize_t (*events_sysfs_show)(char *, u64);
const struct attribute_group **attr_update;
long unsigned int attr_freeze_on_smi;
int (*cpu_prepare)(int);
void (*cpu_starting)(int);
void (*cpu_dying)(int);
void (*cpu_dead)(int);
void (*check_microcode)();
void (*sched_task)(struct perf_event_context *, bool);
u64 intel_ctrl;
union perf_capabilities intel_cap;
unsigned int bts;
unsigned int bts_active;
unsigned int pebs;
unsigned int pebs_active;
unsigned int pebs_broken;
unsigned int pebs_prec_dist;
unsigned int pebs_no_tlb;
unsigned int pebs_no_isolation;
int pebs_record_size;
int pebs_buffer_size;
int max_pebs_events;
void (*drain_pebs)(struct pt_regs *);
struct event_constraint *pebs_constraints;
void (*pebs_aliases)(struct perf_event *);
long unsigned int large_pebs_flags;
u64 rtm_abort_event;
long unsigned int lbr_tos;
long unsigned int lbr_from;
long unsigned int lbr_to;
int lbr_nr;
u64 lbr_sel_mask;
const int *lbr_sel_map;
bool lbr_double_abort;
bool lbr_pt_coexist;
atomic_t lbr_exclusive[3];
unsigned int amd_nb_constraints;
u64 perf_ctr_pair_en;
struct extra_reg *extra_regs;
unsigned int flags;
struct perf_guest_switch_msr * (*guest_get_msrs)(int *);
int (*check_period)(struct perf_event *, u64);
int (*aux_output_match)(struct perf_event *);
};
azure
: ✅struct x86_pmu {
const char *name;
int version;
int (*handle_irq)(struct pt_regs *);
void (*disable_all)();
void (*enable_all)(int);
void (*enable)(struct perf_event *);
void (*disable)(struct perf_event *);
void (*add)(struct perf_event *);
void (*del)(struct perf_event *);
void (*read)(struct perf_event *);
int (*hw_config)(struct perf_event *);
int (*schedule_events)(struct cpu_hw_events *, int, int *);
unsigned int eventsel;
unsigned int perfctr;
int (*addr_offset)(int, bool);
int (*rdpmc_index)(int);
u64 (*event_map)(int);
int max_events;
int num_counters;
int num_counters_fixed;
int cntval_bits;
u64 cntval_mask;
long unsigned int events_maskl;
long unsigned int events_mask[1];
int events_mask_len;
int apic;
u64 max_period;
struct event_constraint * (*get_event_constraints)(struct cpu_hw_events *, int, struct perf_event *);
void (*put_event_constraints)(struct cpu_hw_events *, struct perf_event *);
void (*start_scheduling)(struct cpu_hw_events *);
void (*commit_scheduling)(struct cpu_hw_events *, int, int);
void (*stop_scheduling)(struct cpu_hw_events *);
struct event_constraint *event_constraints;
struct x86_pmu_quirk *quirks;
int perfctr_second_write;
u64 (*limit_period)(struct perf_event *, u64);
unsigned int late_ack;
unsigned int counter_freezing;
int attr_rdpmc_broken;
int attr_rdpmc;
struct attribute **format_attrs;
ssize_t (*events_sysfs_show)(char *, u64);
const struct attribute_group **attr_update;
long unsigned int attr_freeze_on_smi;
int (*cpu_prepare)(int);
void (*cpu_starting)(int);
void (*cpu_dying)(int);
void (*cpu_dead)(int);
void (*check_microcode)();
void (*sched_task)(struct perf_event_context *, bool);
u64 intel_ctrl;
union perf_capabilities intel_cap;
unsigned int bts;
unsigned int bts_active;
unsigned int pebs;
unsigned int pebs_active;
unsigned int pebs_broken;
unsigned int pebs_prec_dist;
unsigned int pebs_no_tlb;
unsigned int pebs_no_isolation;
int pebs_record_size;
int pebs_buffer_size;
int max_pebs_events;
void (*drain_pebs)(struct pt_regs *);
struct event_constraint *pebs_constraints;
void (*pebs_aliases)(struct perf_event *);
long unsigned int large_pebs_flags;
u64 rtm_abort_event;
long unsigned int lbr_tos;
long unsigned int lbr_from;
long unsigned int lbr_to;
int lbr_nr;
u64 lbr_sel_mask;
const int *lbr_sel_map;
bool lbr_double_abort;
bool lbr_pt_coexist;
atomic_t lbr_exclusive[3];
unsigned int amd_nb_constraints;
u64 perf_ctr_pair_en;
struct extra_reg *extra_regs;
unsigned int flags;
struct perf_guest_switch_msr * (*guest_get_msrs)(int *);
int (*check_period)(struct perf_event *, u64);
int (*aux_output_match)(struct perf_event *);
};
gcp
: ✅struct x86_pmu {
const char *name;
int version;
int (*handle_irq)(struct pt_regs *);
void (*disable_all)();
void (*enable_all)(int);
void (*enable)(struct perf_event *);
void (*disable)(struct perf_event *);
void (*add)(struct perf_event *);
void (*del)(struct perf_event *);
void (*read)(struct perf_event *);
int (*hw_config)(struct perf_event *);
int (*schedule_events)(struct cpu_hw_events *, int, int *);
unsigned int eventsel;
unsigned int perfctr;
int (*addr_offset)(int, bool);
int (*rdpmc_index)(int);
u64 (*event_map)(int);
int max_events;
int num_counters;
int num_counters_fixed;
int cntval_bits;
u64 cntval_mask;
long unsigned int events_maskl;
long unsigned int events_mask[1];
int events_mask_len;
int apic;
u64 max_period;
struct event_constraint * (*get_event_constraints)(struct cpu_hw_events *, int, struct perf_event *);
void (*put_event_constraints)(struct cpu_hw_events *, struct perf_event *);
void (*start_scheduling)(struct cpu_hw_events *);
void (*commit_scheduling)(struct cpu_hw_events *, int, int);
void (*stop_scheduling)(struct cpu_hw_events *);
struct event_constraint *event_constraints;
struct x86_pmu_quirk *quirks;
int perfctr_second_write;
u64 (*limit_period)(struct perf_event *, u64);
unsigned int late_ack;
unsigned int counter_freezing;
int attr_rdpmc_broken;
int attr_rdpmc;
struct attribute **format_attrs;
ssize_t (*events_sysfs_show)(char *, u64);
const struct attribute_group **attr_update;
long unsigned int attr_freeze_on_smi;
int (*cpu_prepare)(int);
void (*cpu_starting)(int);
void (*cpu_dying)(int);
void (*cpu_dead)(int);
void (*check_microcode)();
void (*sched_task)(struct perf_event_context *, bool);
u64 intel_ctrl;
union perf_capabilities intel_cap;
unsigned int bts;
unsigned int bts_active;
unsigned int pebs;
unsigned int pebs_active;
unsigned int pebs_broken;
unsigned int pebs_prec_dist;
unsigned int pebs_no_tlb;
unsigned int pebs_no_isolation;
int pebs_record_size;
int pebs_buffer_size;
int max_pebs_events;
void (*drain_pebs)(struct pt_regs *);
struct event_constraint *pebs_constraints;
void (*pebs_aliases)(struct perf_event *);
long unsigned int large_pebs_flags;
u64 rtm_abort_event;
long unsigned int lbr_tos;
long unsigned int lbr_from;
long unsigned int lbr_to;
int lbr_nr;
u64 lbr_sel_mask;
const int *lbr_sel_map;
bool lbr_double_abort;
bool lbr_pt_coexist;
atomic_t lbr_exclusive[3];
unsigned int amd_nb_constraints;
u64 perf_ctr_pair_en;
struct extra_reg *extra_regs;
unsigned int flags;
struct perf_guest_switch_msr * (*guest_get_msrs)(int *);
int (*check_period)(struct perf_event *, u64);
int (*aux_output_match)(struct perf_event *);
};
lowlatency
: ✅struct x86_pmu {
const char *name;
int version;
int (*handle_irq)(struct pt_regs *);
void (*disable_all)();
void (*enable_all)(int);
void (*enable)(struct perf_event *);
void (*disable)(struct perf_event *);
void (*add)(struct perf_event *);
void (*del)(struct perf_event *);
void (*read)(struct perf_event *);
int (*hw_config)(struct perf_event *);
int (*schedule_events)(struct cpu_hw_events *, int, int *);
unsigned int eventsel;
unsigned int perfctr;
int (*addr_offset)(int, bool);
int (*rdpmc_index)(int);
u64 (*event_map)(int);
int max_events;
int num_counters;
int num_counters_fixed;
int cntval_bits;
u64 cntval_mask;
long unsigned int events_maskl;
long unsigned int events_mask[1];
int events_mask_len;
int apic;
u64 max_period;
struct event_constraint * (*get_event_constraints)(struct cpu_hw_events *, int, struct perf_event *);
void (*put_event_constraints)(struct cpu_hw_events *, struct perf_event *);
void (*start_scheduling)(struct cpu_hw_events *);
void (*commit_scheduling)(struct cpu_hw_events *, int, int);
void (*stop_scheduling)(struct cpu_hw_events *);
struct event_constraint *event_constraints;
struct x86_pmu_quirk *quirks;
int perfctr_second_write;
u64 (*limit_period)(struct perf_event *, u64);
unsigned int late_ack;
unsigned int counter_freezing;
int attr_rdpmc_broken;
int attr_rdpmc;
struct attribute **format_attrs;
ssize_t (*events_sysfs_show)(char *, u64);
const struct attribute_group **attr_update;
long unsigned int attr_freeze_on_smi;
int (*cpu_prepare)(int);
void (*cpu_starting)(int);
void (*cpu_dying)(int);
void (*cpu_dead)(int);
void (*check_microcode)();
void (*sched_task)(struct perf_event_context *, bool);
u64 intel_ctrl;
union perf_capabilities intel_cap;
unsigned int bts;
unsigned int bts_active;
unsigned int pebs;
unsigned int pebs_active;
unsigned int pebs_broken;
unsigned int pebs_prec_dist;
unsigned int pebs_no_tlb;
unsigned int pebs_no_isolation;
int pebs_record_size;
int pebs_buffer_size;
int max_pebs_events;
void (*drain_pebs)(struct pt_regs *);
struct event_constraint *pebs_constraints;
void (*pebs_aliases)(struct perf_event *);
long unsigned int large_pebs_flags;
u64 rtm_abort_event;
long unsigned int lbr_tos;
long unsigned int lbr_from;
long unsigned int lbr_to;
int lbr_nr;
u64 lbr_sel_mask;
const int *lbr_sel_map;
bool lbr_double_abort;
bool lbr_pt_coexist;
atomic_t lbr_exclusive[3];
unsigned int amd_nb_constraints;
u64 perf_ctr_pair_en;
struct extra_reg *extra_regs;
unsigned int flags;
struct perf_guest_switch_msr * (*guest_get_msrs)(int *);
int (*check_period)(struct perf_event *, u64);
int (*aux_output_match)(struct perf_event *);
};
Regular
4.4
and 4.8
⚠️unsigned int pebs_prec_dist
bool lbr_pt_coexist
unsigned int amd_nb_constraints
4.8
and 4.10
⚠️void (*add)(struct perf_event *)
void (*del)(struct perf_event *)
4.10
and 4.13
⚠️long unsigned int attr_freeze_on_smi
struct attribute **attrs
unsigned int pebs_no_tlb
4.13
and 4.15
⚠️struct attribute **caps_attrs
4.15
and 4.18
⚠️void (*read)(struct perf_event *)
long unsigned int large_pebs_flags
long unsigned int free_running_flags
unsigned int (*limit_period)(struct perf_event *, unsigned int)
➡️ u64 (*limit_period)(struct perf_event *, u64)
4.18
and 5.0
⚠️unsigned int counter_freezing
int (*check_period)(struct perf_event *, u64)
bool late_ack
➡️ unsigned int late_ack
5.0
and 5.3
⚠️const struct attribute_group **attr_update
unsigned int pebs_no_isolation
u64 rtm_abort_event
struct attribute **event_attrs
struct attribute **caps_attrs
struct attribute **cpu_events
struct attribute **attrs
5.3
and 5.4
⚠️u64 perf_ctr_pair_en
int (*aux_output_match)(struct perf_event *)
5.4
and 5.8
⚠️unsigned int enabled_ack
void (*swap_task_ctx)(struct perf_event_context *, struct perf_event_context *)
5.8
and 5.11
⚠️unsigned int lbr_info
u64 lbr_ctl_mask
int *lbr_ctl_map
unsigned int lbr_depth_mask
unsigned int lbr_deep_c_reset
unsigned int lbr_lip
unsigned int lbr_cpl
unsigned int lbr_filter
unsigned int lbr_call_stack
unsigned int lbr_mispred
unsigned int lbr_timed_lbr
unsigned int lbr_br_type
void (*lbr_reset)()
void (*lbr_read)(struct cpu_hw_events *)
void (*lbr_save)(void *)
void (*lbr_restore)(void *)
u64 (*update_topdown_event)(struct perf_event *)
int (*set_topdown_event_period)(struct perf_event *)
void (*drain_pebs)(struct pt_regs *)
➡️ void (*drain_pebs)(struct pt_regs *, struct perf_sample_data *)
long unsigned int lbr_tos
➡️ unsigned int lbr_tos
long unsigned int lbr_from
➡️ unsigned int lbr_from
long unsigned int lbr_to
➡️ unsigned int lbr_to
int lbr_nr
➡️ unsigned int lbr_nr
5.11
and 5.13
⚠️unsigned int mid_ack
unsigned int pebs_block
int num_topdown_events
int (*filter_match)(struct perf_event *)
int num_hybrid_pmus
struct x86_hybrid_pmu *hybrid_pmu
u8 (*get_hybrid_cpu_type)()
unsigned int counter_freezing
5.13
and 5.15
✅
5.15
and 5.19
⚠️void (*assign)(struct perf_event *, int)
u64 (*pebs_latency_data)(struct perf_event *, u64)
unsigned int lbr_has_info
unsigned int lbr_has_tsx
unsigned int lbr_from_flags
unsigned int lbr_to_cycles
5.19
and 6.2
⚠️int (*set_period)(struct perf_event *)
u64 (*update)(struct perf_event *)
unsigned int pebs_ept
u64 pebs_capable
void (*filter)(struct pmu *, int, bool *)
int perfctr_second_write
u64 (*update_topdown_event)(struct perf_event *)
int (*set_topdown_event_period)(struct perf_event *)
int (*filter_match)(struct perf_event *)
u64 (*limit_period)(struct perf_event *, u64)
➡️ void (*limit_period)(struct perf_event *, s64 *)
void (*sched_task)(struct perf_event_context *, bool)
➡️ void (*sched_task)(struct perf_event_pmu_context *, bool)
void (*swap_task_ctx)(struct perf_event_context *, struct perf_event_context *)
➡️ void (*swap_task_ctx)(struct perf_event_pmu_context *, struct perf_event_pmu_context *)
struct perf_guest_switch_msr * (*guest_get_msrs)(int *)
➡️ struct perf_guest_switch_msr * (*guest_get_msrs)(int *, void *)
6.2
and 6.5
✅
6.5
and 6.8
⚠️unsigned int lbr_counters
u8 (*get_hybrid_cpu_type)()
➡️ enum hybrid_cpu_type (*get_hybrid_cpu_type)()
generic
and aws
✅
generic
and azure
✅
generic
and gcp
✅
generic
and lowlatency
✅