diff options
author | Lionel Landwerlin <lionel.g.landwerlin@intel.com> | 2019-12-03 16:08:12 +0200 |
---|---|---|
committer | Lionel Landwerlin <lionel.g.landwerlin@intel.com> | 2019-12-04 09:21:15 +0000 |
commit | acea59dbf8056b46444c820115d86c42d0411686 (patch) | |
tree | 1eb8bd3f806e4de2117d770fee60ee33f391d2ce | |
parent | a7bbebcfb9b06de640f093bf801c39ff01d6016b (diff) | |
download | mesa-acea59dbf8056b46444c820115d86c42d0411686.tar.gz |
intel/perf: fix invalid hw_id in query results
Accumulation happens between 2 reports, it can be between a start/end
report from another context. So only consider updating the hw_id of
the results when it's not already valid and that we have a valid value
to put in there.
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Fixes: 41b54b5faf ("i965: move OA accumulation code to intel/perf")
Reviewed-by: Mark Janes <mark.a.janes@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
-rw-r--r-- | src/intel/perf/gen_perf.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/intel/perf/gen_perf.c b/src/intel/perf/gen_perf.c index a466645b308..7e3847d073d 100644 --- a/src/intel/perf/gen_perf.c +++ b/src/intel/perf/gen_perf.c @@ -71,6 +71,8 @@ #define MAP_READ (1 << 0) #define MAP_WRITE (1 << 1) +#define OA_REPORT_INVALID_CTX_ID (0xffffffff) + /** * Periodic OA samples are read() into these buffer structures via the * i915 perf kernel interface and appended to the @@ -1142,7 +1144,9 @@ gen_perf_query_result_accumulate(struct gen_perf_query_result *result, { int i, idx = 0; - result->hw_id = start[2]; + if (result->hw_id == OA_REPORT_INVALID_CTX_ID && + start[2] != OA_REPORT_INVALID_CTX_ID) + result->hw_id = start[2]; result->reports_accumulated++; switch (query->oa_format) { @@ -1180,7 +1184,7 @@ void gen_perf_query_result_clear(struct gen_perf_query_result *result) { memset(result, 0, sizeof(*result)); - result->hw_id = 0xffffffff; /* invalid */ + result->hw_id = OA_REPORT_INVALID_CTX_ID; /* invalid */ } static void |