Merge remote-tracking branch 'torvalds/master' into perf/core
[linux-2.6-microblaze.git] / tools / perf / util / intel-pt-decoder / intel-pt-decoder.h
index d9e62a7..714c475 100644 (file)
@@ -11,6 +11,8 @@
 #include <stddef.h>
 #include <stdbool.h>
 
+#include <linux/rbtree.h>
+
 #include "intel-pt-insn-decoder.h"
 
 #define INTEL_PT_IN_TX         (1 << 0)
@@ -199,6 +201,14 @@ struct intel_pt_blk_items {
        bool is_32_bit;
 };
 
+struct intel_pt_vmcs_info {
+       struct rb_node rb_node;
+       uint64_t vmcs;
+       uint64_t tsc_offset;
+       bool reliable;
+       bool error_printed;
+};
+
 struct intel_pt_state {
        enum intel_pt_sample_type type;
        bool from_nr;
@@ -244,9 +254,13 @@ struct intel_pt_params {
                         uint64_t max_insn_cnt, void *data);
        bool (*pgd_ip)(uint64_t ip, void *data);
        int (*lookahead)(void *data, intel_pt_lookahead_cb_t cb, void *cb_data);
+       struct intel_pt_vmcs_info *(*findnew_vmcs_info)(void *data, uint64_t vmcs);
        void *data;
        bool return_compression;
        bool branch_enable;
+       bool vm_time_correlation;
+       bool vm_tm_corr_dry_run;
+       uint64_t first_timestamp;
        uint64_t ctl;
        uint64_t period;
        enum intel_pt_period_type period_type;
@@ -269,8 +283,12 @@ int intel_pt_fast_forward(struct intel_pt_decoder *decoder, uint64_t timestamp);
 
 unsigned char *intel_pt_find_overlap(unsigned char *buf_a, size_t len_a,
                                     unsigned char *buf_b, size_t len_b,
-                                    bool have_tsc, bool *consecutive);
+                                    bool have_tsc, bool *consecutive,
+                                    bool ooo_tsc);
 
 int intel_pt__strerror(int code, char *buf, size_t buflen);
 
+void intel_pt_set_first_timestamp(struct intel_pt_decoder *decoder,
+                                 uint64_t first_timestamp);
+
 #endif