diff --git a/level_zero/include/zet_intel_gpu_debug.h b/level_zero/include/zet_intel_gpu_debug.h index 489f739291..d476ce2209 100644 --- a/level_zero/include/zet_intel_gpu_debug.h +++ b/level_zero/include/zet_intel_gpu_debug.h @@ -30,6 +30,7 @@ typedef enum _zet_debug_regset_type_intel_gpu_t { ZET_DEBUG_REGSET_TYPE_MME_INTEL_GPU = 9, ///< The mme register set ZET_DEBUG_REGSET_TYPE_SP_INTEL_GPU = 10, ///< The stack pointer register set ZET_DEBUG_REGSET_TYPE_SBA_INTEL_GPU = 11, ///< The state base address register set + ZET_DEBUG_REGSET_TYPE_DBG_INTEL_GPU = 12, ///< The debug register set ZET_DEBUG_REGSET_TYPE_FORCE_UINT32 = 0x7fffffff } zet_debug_regset_type_intel_gpu_t; diff --git a/level_zero/tools/source/debug/debug_session_imp.cpp b/level_zero/tools/source/debug/debug_session_imp.cpp index dff2179bd7..ef0dc553a1 100644 --- a/level_zero/tools/source/debug/debug_session_imp.cpp +++ b/level_zero/tools/source/debug/debug_session_imp.cpp @@ -759,6 +759,8 @@ const SIP::regset_desc *DebugSessionImp::typeToRegsetDesc(uint32_t type) { return &pStateSaveAreaHeader->regHeader.mme; case ZET_DEBUG_REGSET_TYPE_SP_INTEL_GPU: return &pStateSaveAreaHeader->regHeader.sp; + case ZET_DEBUG_REGSET_TYPE_DBG_INTEL_GPU: + return &pStateSaveAreaHeader->regHeader.dbg; case ZET_DEBUG_REGSET_TYPE_SBA_INTEL_GPU: return DebugSessionImp::getSbaRegsetDesc(); default: @@ -783,6 +785,7 @@ uint32_t DebugSessionImp::typeToRegsetFlags(uint32_t type) { case ZET_DEBUG_REGSET_TYPE_CR_INTEL_GPU: case ZET_DEBUG_REGSET_TYPE_ACC_INTEL_GPU: case ZET_DEBUG_REGSET_TYPE_SP_INTEL_GPU: + case ZET_DEBUG_REGSET_TYPE_DBG_INTEL_GPU: return ZET_DEBUG_REGSET_FLAG_READABLE | ZET_DEBUG_REGSET_FLAG_WRITEABLE; case ZET_DEBUG_REGSET_TYPE_CE_INTEL_GPU: @@ -934,6 +937,8 @@ ze_result_t DebugSession::getRegisterSetProperties(Device *device, uint32_t *pCo parseRegsetDesc(*DebugSessionImp::getSbaRegsetDesc(), ZET_DEBUG_REGSET_TYPE_SBA_INTEL_GPU); + parseRegsetDesc(pStateSaveArea->regHeader.dbg, ZET_DEBUG_REGSET_TYPE_DBG_INTEL_GPU); + if (!*pCount || (*pCount > totalRegsetNum)) { *pCount = totalRegsetNum; } diff --git a/level_zero/tools/test/unit_tests/sources/debug/debug_session_tests.cpp b/level_zero/tools/test/unit_tests/sources/debug/debug_session_tests.cpp index 46b86c3ba9..d7f8d76217 100644 --- a/level_zero/tools/test/unit_tests/sources/debug/debug_session_tests.cpp +++ b/level_zero/tools/test/unit_tests/sources/debug/debug_session_tests.cpp @@ -1715,6 +1715,7 @@ TEST_F(DebugSessionRegistersAccessTest, givenTypeToRegsetDescCalledThenCorrectRe EXPECT_EQ(session->typeToRegsetDesc(ZET_DEBUG_REGSET_TYPE_ACC_INTEL_GPU), &pStateSaveAreaHeader->regHeader.acc); EXPECT_EQ(session->typeToRegsetDesc(ZET_DEBUG_REGSET_TYPE_MME_INTEL_GPU), &pStateSaveAreaHeader->regHeader.mme); EXPECT_EQ(session->typeToRegsetDesc(ZET_DEBUG_REGSET_TYPE_SP_INTEL_GPU), &pStateSaveAreaHeader->regHeader.sp); + EXPECT_EQ(session->typeToRegsetDesc(ZET_DEBUG_REGSET_TYPE_DBG_INTEL_GPU), &pStateSaveAreaHeader->regHeader.dbg); EXPECT_NE(session->typeToRegsetDesc(ZET_DEBUG_REGSET_TYPE_SBA_INTEL_GPU), nullptr); } diff --git a/level_zero/tools/test/unit_tests/sources/debug/test_debug_api.cpp b/level_zero/tools/test/unit_tests/sources/debug/test_debug_api.cpp index 95d5464b40..473925edc7 100644 --- a/level_zero/tools/test/unit_tests/sources/debug/test_debug_api.cpp +++ b/level_zero/tools/test/unit_tests/sources/debug/test_debug_api.cpp @@ -206,14 +206,14 @@ TEST_F(DebugApiTest, givenNullCountPointerWhenGetRegisterSetPropertiesCalledThen TEST_F(DebugApiTest, givenZeroCountWhenGetRegisterSetPropertiesCalledThenCorrectCountIsSet) { uint32_t count = 0; EXPECT_EQ(ZE_RESULT_SUCCESS, zetDebugGetRegisterSetProperties(device->toHandle(), &count, nullptr)); - EXPECT_EQ(10u, count); + EXPECT_EQ(11u, count); } TEST_F(DebugApiTest, givenGetRegisterSetPropertiesCalledAndExtraSpaceIsProvidedThenCorrectPropertiesReturned) { uint32_t count = 100; std::vector regsetProps(count); EXPECT_EQ(ZE_RESULT_SUCCESS, zetDebugGetRegisterSetProperties(device->toHandle(), &count, regsetProps.data())); - EXPECT_EQ(10u, count); + EXPECT_EQ(11u, count); } TEST_F(DebugApiTest, givenNoStateSaveHeaderWhenGettingRegSetPropertiesThenZeroCountIsReturned) { @@ -234,12 +234,12 @@ TEST_F(DebugApiTest, givenNonZeroCountAndNullRegsetPointerWhenGetRegisterSetProp TEST_F(DebugApiTest, givenGetRegisterSetPropertiesCalledCorrectPropertiesReturned) { uint32_t count = 0; EXPECT_EQ(ZE_RESULT_SUCCESS, zetDebugGetRegisterSetProperties(device->toHandle(), &count, nullptr)); - EXPECT_EQ(10u, count); + EXPECT_EQ(11u, count); std::vector regsetProps(count); EXPECT_EQ(ZE_RESULT_SUCCESS, zetDebugGetRegisterSetProperties(device->toHandle(), &count, regsetProps.data())); - EXPECT_EQ(10u, count); + EXPECT_EQ(11u, count); auto validateRegsetProps = [](const zet_debug_regset_properties_t ®setProps, zet_debug_regset_type_intel_gpu_t type, zet_debug_regset_flags_t flags, @@ -265,6 +265,8 @@ TEST_F(DebugApiTest, givenGetRegisterSetPropertiesCalledCorrectPropertiesReturne // MME is not present validateRegsetProps(regsetProps[8], ZET_DEBUG_REGSET_TYPE_SP_INTEL_GPU, ZET_DEBUG_REGSET_FLAG_READABLE | ZET_DEBUG_REGSET_FLAG_WRITEABLE, 1, 128, 16); validateRegsetProps(regsetProps[9], ZET_DEBUG_REGSET_TYPE_SBA_INTEL_GPU, ZET_DEBUG_REGSET_FLAG_READABLE, ZET_DEBUG_SBA_COUNT_INTEL_GPU, 64, 8); + // FC is not present + validateRegsetProps(regsetProps[10], ZET_DEBUG_REGSET_TYPE_DBG_INTEL_GPU, ZET_DEBUG_REGSET_FLAG_READABLE | ZET_DEBUG_REGSET_FLAG_WRITEABLE, 1, 32, 4); } TEST(DebugSessionTest, givenDebugSessionWhenConvertingToAndFromHandleCorrectHandleAndPointerIsReturned) {