kvm_pmuRegular
4.4: Absent ⚠️
4.8: Absent ⚠️
4.10: Absent ⚠️
4.13: Absent ⚠️
4.15: Absent ⚠️
4.18: Absent ⚠️
5.0: Absent ⚠️
5.3: Absent ⚠️
5.4: Absent ⚠️
5.8: Absent ⚠️
5.11: ✅struct kvm_pmu {
unsigned int nr_arch_gp_counters;
unsigned int nr_arch_fixed_counters;
unsigned int available_event_types;
u64 fixed_ctr_ctrl;
u64 global_ctrl;
u64 global_status;
u64 global_ovf_ctrl;
u64 counter_bitmask[2];
u64 global_ctrl_mask;
u64 global_ovf_ctrl_mask;
u64 reserved_bits;
u8 version;
struct kvm_pmc gp_counters[32];
struct kvm_pmc fixed_counters[4];
struct irq_work irq_work;
long unsigned int reprogram_pmi[1];
long unsigned int all_valid_pmc_idx[1];
long unsigned int pmc_in_use[1];
bool need_cleanup;
u8 event_count;
};
5.13: ✅struct kvm_pmu {
unsigned int nr_arch_gp_counters;
unsigned int nr_arch_fixed_counters;
unsigned int available_event_types;
u64 fixed_ctr_ctrl;
u64 global_ctrl;
u64 global_status;
u64 global_ovf_ctrl;
u64 counter_bitmask[2];
u64 global_ctrl_mask;
u64 global_ovf_ctrl_mask;
u64 reserved_bits;
u8 version;
struct kvm_pmc gp_counters[32];
struct kvm_pmc fixed_counters[4];
struct irq_work irq_work;
long unsigned int reprogram_pmi[1];
long unsigned int all_valid_pmc_idx[1];
long unsigned int pmc_in_use[1];
bool need_cleanup;
u8 event_count;
};
5.15: ✅struct kvm_pmu {
unsigned int nr_arch_gp_counters;
unsigned int nr_arch_fixed_counters;
unsigned int available_event_types;
u64 fixed_ctr_ctrl;
u64 global_ctrl;
u64 global_status;
u64 global_ovf_ctrl;
u64 counter_bitmask[2];
u64 global_ctrl_mask;
u64 global_ovf_ctrl_mask;
u64 reserved_bits;
u8 version;
struct kvm_pmc gp_counters[32];
struct kvm_pmc fixed_counters[4];
struct irq_work irq_work;
long unsigned int reprogram_pmi[1];
long unsigned int all_valid_pmc_idx[1];
long unsigned int pmc_in_use[1];
bool need_cleanup;
u8 event_count;
};
5.19: ✅struct kvm_pmu {
unsigned int nr_arch_gp_counters;
unsigned int nr_arch_fixed_counters;
unsigned int available_event_types;
u64 fixed_ctr_ctrl;
u64 fixed_ctr_ctrl_mask;
u64 global_ctrl;
u64 global_status;
u64 counter_bitmask[2];
u64 global_ctrl_mask;
u64 global_ovf_ctrl_mask;
u64 reserved_bits;
u64 raw_event_mask;
u8 version;
struct kvm_pmc gp_counters[32];
struct kvm_pmc fixed_counters[3];
struct irq_work irq_work;
long unsigned int reprogram_pmi[1];
long unsigned int all_valid_pmc_idx[1];
long unsigned int pmc_in_use[1];
bool need_cleanup;
u8 event_count;
};
6.2: ✅struct kvm_pmu {
unsigned int nr_arch_gp_counters;
unsigned int nr_arch_fixed_counters;
unsigned int available_event_types;
u64 fixed_ctr_ctrl;
u64 fixed_ctr_ctrl_mask;
u64 global_ctrl;
u64 global_status;
u64 counter_bitmask[2];
u64 global_ctrl_mask;
u64 global_ovf_ctrl_mask;
u64 reserved_bits;
u64 raw_event_mask;
u8 version;
struct kvm_pmc gp_counters[8];
struct kvm_pmc fixed_counters[3];
struct irq_work irq_work;
long unsigned int reprogram_pmi[1];
atomic64_t __reprogram_pmi;
long unsigned int all_valid_pmc_idx[1];
long unsigned int pmc_in_use[1];
u64 ds_area;
u64 pebs_enable;
u64 pebs_enable_mask;
u64 pebs_data_cfg;
u64 pebs_data_cfg_mask;
u64 host_cross_mapped_mask;
bool need_cleanup;
u8 event_count;
};
6.5: ✅struct kvm_pmu {
u8 version;
unsigned int nr_arch_gp_counters;
unsigned int nr_arch_fixed_counters;
unsigned int available_event_types;
u64 fixed_ctr_ctrl;
u64 fixed_ctr_ctrl_mask;
u64 global_ctrl;
u64 global_status;
u64 counter_bitmask[2];
u64 global_ctrl_mask;
u64 global_status_mask;
u64 reserved_bits;
u64 raw_event_mask;
struct kvm_pmc gp_counters[8];
struct kvm_pmc fixed_counters[3];
struct irq_work irq_work;
long unsigned int reprogram_pmi[1];
atomic64_t __reprogram_pmi;
long unsigned int all_valid_pmc_idx[1];
long unsigned int pmc_in_use[1];
u64 ds_area;
u64 pebs_enable;
u64 pebs_enable_mask;
u64 pebs_data_cfg;
u64 pebs_data_cfg_mask;
u64 host_cross_mapped_mask;
bool need_cleanup;
u8 event_count;
};
6.8: ✅struct kvm_pmu {
u8 version;
unsigned int nr_arch_gp_counters;
unsigned int nr_arch_fixed_counters;
unsigned int available_event_types;
u64 fixed_ctr_ctrl;
u64 fixed_ctr_ctrl_mask;
u64 global_ctrl;
u64 global_status;
u64 counter_bitmask[2];
u64 global_ctrl_mask;
u64 global_status_mask;
u64 reserved_bits;
u64 raw_event_mask;
struct kvm_pmc gp_counters[8];
struct kvm_pmc fixed_counters[3];
long unsigned int reprogram_pmi[1];
atomic64_t __reprogram_pmi;
long unsigned int all_valid_pmc_idx[1];
long unsigned int pmc_in_use[1];
u64 ds_area;
u64 pebs_enable;
u64 pebs_enable_mask;
u64 pebs_data_cfg;
u64 pebs_data_cfg_mask;
u64 host_cross_mapped_mask;
bool need_cleanup;
u8 event_count;
};
arm64: ✅struct kvm_pmu {
int irq_num;
struct kvm_pmc pmc[32];
long unsigned int chained[1];
bool ready;
bool created;
bool irq_level;
};
armhf: Absent ⚠️
ppc64el: Absent ⚠️
riscv64: Absent ⚠️
aws: Absent ⚠️
azure: Absent ⚠️
gcp: Absent ⚠️
lowlatency: Absent ⚠️
Regular
5.11 and 5.13 ✅
5.13 and 5.15 ✅
5.15 and 5.19 ⚠️u64 fixed_ctr_ctrl_mask
u64 raw_event_mask
u64 global_ovf_ctrl
struct kvm_pmc fixed_counters[4] ➡️ struct kvm_pmc fixed_counters[3]
5.19 and 6.2 ⚠️atomic64_t __reprogram_pmi
u64 ds_area
u64 pebs_enable
u64 pebs_enable_mask
u64 pebs_data_cfg
u64 pebs_data_cfg_mask
u64 host_cross_mapped_mask
struct kvm_pmc gp_counters[32] ➡️ struct kvm_pmc gp_counters[8]
6.2 and 6.5 ⚠️u64 global_status_mask
u64 global_ovf_ctrl_mask
6.5 and 6.8 ⚠️struct irq_work irq_work