auto data = event->add_extra_data();
data->set_name("stall_reason");
- snprintf(buf, sizeof(buf), "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s : %s",
+ snprintf(buf, sizeof(buf), "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s : %s",
(payload->flags & INTEL_DS_DEPTH_CACHE_FLUSH_BIT) ? "+depth_flush" : "",
(payload->flags & INTEL_DS_DATA_CACHE_FLUSH_BIT) ? "+dc_flush" : "",
(payload->flags & INTEL_DS_HDC_PIPELINE_FLUSH_BIT) ? "+hdc_flush" : "",
(payload->flags & INTEL_DS_HDC_PIPELINE_FLUSH_BIT) ? "+hdc_flush" : "",
(payload->flags & INTEL_DS_CS_STALL_BIT) ? "+cs_stall" : "",
(payload->flags & INTEL_DS_UNTYPED_DATAPORT_CACHE_FLUSH_BIT) ? "+udp_flush" : "",
+ (payload->flags & INTEL_DS_END_OF_PIPE_BIT) ? "+eop" : "",
payload->reason ? payload->reason : "unknown");
assert(strlen(buf) > 0);
INTEL_DS_CS_STALL_BIT = BITFIELD_BIT(12),
INTEL_DS_UNTYPED_DATAPORT_CACHE_FLUSH_BIT = BITFIELD_BIT(13),
INTEL_DS_PSS_STALL_SYNC_BIT = BITFIELD_BIT(14),
+ INTEL_DS_END_OF_PIPE_BIT = BITFIELD_BIT(15),
};
/* Convert internal driver PIPE_CONTROL stall bits to intel_ds_stall_flag. */
['DEPTH_STALL', 'depth_stall'],
['CS_STALL', 'cs_stall'],
['UNTYPED_DATAPORT_CACHE_FLUSH', 'udp_flush'],
- ['PSS_STALL_SYNC', 'pss_stall']]
+ ['PSS_STALL_SYNC', 'pss_stall'],
+ ['END_OF_PIPE', 'eop']]
begin_end_tp('stall',
tp_args=[ArgStruct(type='uint32_t', var='flags'),
{ .anv = ANV_PIPE_STALL_AT_SCOREBOARD_BIT, .ds = INTEL_DS_STALL_AT_SCOREBOARD_BIT, },
{ .anv = ANV_PIPE_UNTYPED_DATAPORT_CACHE_FLUSH_BIT, .ds = INTEL_DS_UNTYPED_DATAPORT_CACHE_FLUSH_BIT, },
{ .anv = ANV_PIPE_PSS_STALL_SYNC_BIT, .ds = INTEL_DS_PSS_STALL_SYNC_BIT, },
+ { .anv = ANV_PIPE_END_OF_PIPE_SYNC_BIT, .ds = INTEL_DS_END_OF_PIPE_BIT, },
};
enum intel_ds_stall_flag ret = 0;
return;
const bool trace_flush =
- (bits & (ANV_PIPE_FLUSH_BITS | ANV_PIPE_STALL_BITS | ANV_PIPE_INVALIDATE_BITS)) != 0;
+ (bits & (ANV_PIPE_FLUSH_BITS |
+ ANV_PIPE_STALL_BITS |
+ ANV_PIPE_INVALIDATE_BITS |
+ ANV_PIPE_END_OF_PIPE_SYNC_BIT)) != 0;
if (trace_flush)
trace_intel_begin_stall(&cmd_buffer->trace);