fix: Retrieve tileIndex using gt_id

Related-To: NEO-11104
Signed-off-by: Jitendra Sharma <jitendra.sharma@intel.com>
This commit is contained in:
Jitendra Sharma 2025-01-16 16:13:34 +00:00 committed by Compute-Runtime-Automation
parent 4dd1c80362
commit 06ea5944bd
3 changed files with 13 additions and 7 deletions

View File

@ -362,9 +362,8 @@ void DebugSessionLinuxXe::handleEvent(NEO::EuDebugEvent *event) {
static_cast<uint32_t>(execQueuePlacements->numPlacements));
UNRECOVERABLE_IF(execQueuePlacements->numPlacements == 0);
auto engine = reinterpret_cast<NEO::EngineClassInstance *>(&(execQueuePlacements->instances[0]));
NEO::EngineClassInstance engineClassInstance = {engine->engineClass, engine->engineInstance};
auto tileIndex = DrmHelper::getEngineTileIndex(connectedDevice, engineClassInstance);
auto engine = reinterpret_cast<NEO::XeEngineClassInstance *>(&(execQueuePlacements->instances[0]));
auto tileIndex = engine->gtId;
auto &vmToTile = clientHandleToConnection[execQueuePlacements->clientHandle]->vmToTile;
if (vmToTile.find(execQueuePlacements->vmHandle) != vmToTile.end()) {

View File

@ -2871,7 +2871,7 @@ TEST_F(DebugApiLinuxTestXe, GivenExecQueuePlacementEventWhenHandlingThenVmToTile
EXPECT_NE(session->clientHandleToConnection[client1.clientHandle]->vmToTile.end(),
session->clientHandleToConnection[client1.clientHandle]->vmToTile.find(vmHandle));
EXPECT_EQ(0u, session->clientHandleToConnection[client1.clientHandle]->vmToTile[vmHandle]);
EXPECT_EQ(1u, session->clientHandleToConnection[client1.clientHandle]->vmToTile[vmHandle]);
}
TEST_F(DebugApiLinuxTestXe, GivenMultipleExecQueuePlacementEventForSameVmHandleWithDifferentTileIndexWhenHandlingThenErrorReported) {
@ -2909,7 +2909,7 @@ TEST_F(DebugApiLinuxTestXe, GivenMultipleExecQueuePlacementEventForSameVmHandleW
auto engineClassInstance = reinterpret_cast<drm_xe_engine_class_instance *>(&(execQueuePlacements->instances[0]));
engineClassInstance[0].engine_class = 0;
engineClassInstance[0].engine_instance = 1;
engineClassInstance[0].gt_id = 1;
engineClassInstance[0].gt_id = 0;
::testing::internal::CaptureStderr();
session->handleEvent(&execQueuePlacements->base);

View File

@ -60,8 +60,8 @@ struct EuDebugEventExecQueuePlacements {
uint64_t vmHandle;
uint64_t execQueueHandle;
uint64_t lrcHandle;
uint64_t numPlacements;
uint64_t pad;
uint32_t numPlacements;
uint32_t pad;
uint64_t instances[];
};
@ -160,6 +160,13 @@ struct DebugMetadataDestroy {
uint32_t metadataId;
};
struct XeEngineClassInstance {
uint16_t engineClass;
uint16_t engineInstance;
uint16_t gtId;
uint16_t pad;
};
struct XeUserExtension {
uint64_t nextExtension;
uint32_t name;