diff --git a/.pick_status.json b/.pick_status.json index e8d74927b6b..5ac1b532141 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -2916,7 +2916,7 @@ "description": "intel/perf: Fix OA report accumulation on Gfx12+.", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "because_sha": "3c513250255d6ad031b8574ed7bb54a1e1ccdeef" }, { diff --git a/src/intel/perf/intel_perf_query.c b/src/intel/perf/intel_perf_query.c index cff3138f577..65fadc026a9 100644 --- a/src/intel/perf/intel_perf_query.c +++ b/src/intel/perf/intel_perf_query.c @@ -48,19 +48,6 @@ #define ALIGN(x, y) (((x) + (y)-1) & ~((y)-1)) -/* Align to 64bytes, requirement for OA report write address. */ -#define TOTAL_QUERY_DATA_SIZE \ - ALIGN(256 /* OA report */ + \ - 4 /* freq register */ + \ - 8 + 8 /* perf counter 1 & 2 */, \ - 64) - - -static uint32_t field_offset(bool end, uint32_t offset) -{ - return (end ? TOTAL_QUERY_DATA_SIZE : 0) + offset; -} - #define MAP_READ (1 << 0) #define MAP_WRITE (1 << 1) @@ -1089,8 +1076,8 @@ read_oa_samples_for_query(struct intel_perf_context *perf_ctx, if (query->oa.map == NULL) query->oa.map = perf_cfg->vtbl.bo_map(perf_ctx->ctx, query->oa.bo, MAP_READ); - start = last = query->oa.map + field_offset(false, 0); - end = query->oa.map + field_offset(true, 0); + start = last = query->oa.map; + end = query->oa.map + perf_ctx->perf->query_layout.size; if (start[0] != query->oa.begin_report_id) { DBG("Spurious start report id=%"PRIu32"\n", start[0]); @@ -1280,8 +1267,8 @@ accumulate_oa_reports(struct intel_perf_context *perf_ctx, assert(query->oa.map != NULL); - start = last = query->oa.map + field_offset(false, 0); - end = query->oa.map + field_offset(true, 0); + start = last = query->oa.map; + end = query->oa.map + perf_ctx->perf->query_layout.size; if (start[0] != query->oa.begin_report_id) { DBG("Spurious start report id=%"PRIu32"\n", start[0]);