struct kvm_fw_event { /* Current value of the event */
u64 value;
/* Event monitoring status */ bool started;
};
/* Per virtual pmu counter data */ struct kvm_pmc {
u8 idx; struct perf_event *perf_event;
u64 counter_val; union sbi_pmu_ctr_info cinfo; /* Event monitoring status */ bool started; /* Monitoring event ID */ unsignedlong event_idx; struct kvm_vcpu *vcpu;
};
/* PMU data structure per vcpu */ struct kvm_pmu { struct kvm_pmc pmc[RISCV_KVM_MAX_COUNTERS]; struct kvm_fw_event fw_event[RISCV_KVM_MAX_FW_CTRS]; /* Number of the virtual firmware counters available */ int num_fw_ctrs; /* Number of the virtual hardware counters available */ int num_hw_ctrs; /* A flag to indicate that pmu initialization is done */ bool init_done; /* Bit map of all the virtual counter used */
DECLARE_BITMAP(pmc_in_use, RISCV_KVM_MAX_COUNTERS); /* Bit map of all the virtual counter overflown */
DECLARE_BITMAP(pmc_overflown, RISCV_KVM_MAX_COUNTERS); /* The address of the counter snapshot area (guest physical address) */
gpa_t snapshot_addr; /* The actual data of the snapshot */ struct riscv_pmu_snapshot_data *sdata;
};
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.