feature: Before resuming the thread unlock them

Related-To: NEO-7988
Signed-off-by: Jitendra Sharma <jitendra.sharma@intel.com>
This commit is contained in:
Jitendra Sharma
2024-09-20 20:41:29 +00:00
committed by Compute-Runtime-Automation
parent 3fa5504a5d
commit ac52a2ff5b
8 changed files with 54 additions and 12 deletions

View File

@@ -718,7 +718,6 @@ int DebugSessionLinuxXe::threadControlResume(const std::vector<EuThread::ThreadI
euControl.client_handle = clientHandle;
euControl.bitmask_size = 0;
euControl.bitmask_ptr = 0;
euControl.cmd = DRM_XE_EUDEBUG_EU_CONTROL_CMD_RESUME;
std::unique_ptr<uint8_t[]> bitmask;
size_t bitmaskSize = 0;
@@ -733,15 +732,23 @@ int DebugSessionLinuxXe::threadControlResume(const std::vector<EuThread::ThreadI
euControl.exec_queue_handle = execQueueHandle;
euControl.lrc_handle = lrcHandle;
euControlRetVal = ioctl(DRM_XE_EUDEBUG_IOCTL_EU_CONTROL, &euControl);
if (euControlRetVal != 0) {
PRINT_DEBUGGER_ERROR_LOG("DRM_XE_EUDEBUG_IOCTL_EU_CONTROL failed: retCode: %d errno = %d command = %d, execQueueHandle = %llu lrcHandle = %llu\n",
euControlRetVal, errno, static_cast<uint32_t>(euControl.cmd), static_cast<uint64_t>(euControl.exec_queue_handle),
static_cast<uint64_t>(euControl.lrc_handle));
} else {
PRINT_DEBUGGER_INFO_LOG("DRM_XE_EUDEBUG_IOCTL_EU_CONTROL: seqno = %llu command = %u\n", static_cast<uint64_t>(euControl.seqno), static_cast<uint32_t>(euControl.cmd));
auto invokeIoctl = [&](int cmd) {
euControl.cmd = cmd;
euControlRetVal = ioctl(DRM_XE_EUDEBUG_IOCTL_EU_CONTROL, &euControl);
if (euControlRetVal != 0) {
PRINT_DEBUGGER_ERROR_LOG("DRM_XE_EUDEBUG_IOCTL_EU_CONTROL failed: retCode: %d errno = %d command = %d, execQueueHandle = %llu lrcHandle = %llu\n",
euControlRetVal, errno, static_cast<uint32_t>(euControl.cmd), static_cast<uint64_t>(euControl.exec_queue_handle),
static_cast<uint64_t>(euControl.lrc_handle));
} else {
PRINT_DEBUGGER_INFO_LOG("DRM_XE_EUDEBUG_IOCTL_EU_CONTROL: seqno = %llu command = %u\n", static_cast<uint64_t>(euControl.seqno), static_cast<uint32_t>(euControl.cmd));
}
};
if (l0GfxCoreHelper.threadResumeRequiresUnlock()) {
invokeIoctl(getEuControlCmdUnlock());
}
invokeIoctl(DRM_XE_EUDEBUG_EU_CONTROL_CMD_RESUME);
return euControlRetVal;
}