mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-30 18:37:46 +08:00
feature(debugger): Discard stale ATT events
Related-to: NEO-10922 Signed-off-by: Brandon Yates <brandon.yates@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
e9b81037a9
commit
80a5d6255e
@@ -126,6 +126,9 @@ void DebugSessionLinuxXe::readInternalEventsAsync() {
|
||||
|
||||
if (result == ZE_RESULT_SUCCESS) {
|
||||
std::lock_guard<std::mutex> lock(internalEventThreadMutex);
|
||||
if (event->type == DRM_XE_EUDEBUG_EVENT_EU_ATTENTION) {
|
||||
newestAttSeqNo.store(event->seqno);
|
||||
}
|
||||
|
||||
auto memory = std::make_unique<uint64_t[]>(maxEventSize / sizeof(uint64_t));
|
||||
memcpy(memory.get(), event, maxEventSize);
|
||||
@@ -253,7 +256,11 @@ void DebugSessionLinuxXe::handleEvent(drm_xe_eudebug_event *event) {
|
||||
PRINT_DEBUGGER_INFO_LOG("DRM_XE_EUDEBUG_IOCTL_READ_EVENT type: DRM_XE_EUDEBUG_EVENT_EU_ATTENTION client_handle = %llu flags = %llu bitmask_size = %lu exec_queue_handle = %llu lrc_handle = %llu\n",
|
||||
(uint64_t)attention->client_handle, (uint64_t)attention->flags,
|
||||
(uint32_t)attention->bitmask_size, uint64_t(attention->exec_queue_handle), uint64_t(attention->lrc_handle));
|
||||
handleAttentionEvent(attention);
|
||||
if (attention->base.seqno < newestAttSeqNo.load()) {
|
||||
PRINT_DEBUGGER_INFO_LOG("Dropping stale ATT event seqno=%llu\n", (uint64_t)attention->base.seqno);
|
||||
} else {
|
||||
handleAttentionEvent(attention);
|
||||
}
|
||||
} break;
|
||||
|
||||
case DRM_XE_EUDEBUG_EVENT_VM_BIND: {
|
||||
|
||||
@@ -67,7 +67,7 @@ struct DebugSessionLinuxXe : DebugSessionLinux {
|
||||
int threadControlInterruptAll(drm_xe_eudebug_eu_control &euControl);
|
||||
int threadControlResume(const std::vector<EuThread::ThreadId> &threads, drm_xe_eudebug_eu_control &euControl);
|
||||
int threadControlStopped(drm_xe_eudebug_eu_control &euControl, std::unique_ptr<uint8_t[]> &bitmaskOut, size_t &bitmaskSizeOut);
|
||||
void handleAttentionEvent(drm_xe_eudebug_event_eu_attention *attention);
|
||||
MOCKABLE_VIRTUAL void handleAttentionEvent(drm_xe_eudebug_event_eu_attention *attention);
|
||||
void handleMetadataEvent(drm_xe_eudebug_event_metadata *pMetaData);
|
||||
bool handleMetadataOpEvent(drm_xe_eudebug_event_vm_bind_op_metadata *vmBindOpMetadata);
|
||||
void updateContextAndLrcHandlesForThreadsWithAttention(EuThread::ThreadId threadId, AttentionEventFields &attention) override;
|
||||
@@ -158,6 +158,7 @@ struct DebugSessionLinuxXe : DebugSessionLinux {
|
||||
ze_result_t readEventImp(drm_xe_eudebug_event *drmDebugEvent);
|
||||
int ioctl(unsigned long request, void *arg);
|
||||
std::atomic<bool> processEntryEventGenerated = false;
|
||||
std::atomic<uint64_t> newestAttSeqNo = 0;
|
||||
};
|
||||
|
||||
} // namespace L0
|
||||
|
||||
Reference in New Issue
Block a user