kvm_pmu
Regular
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