feature(debugger): Force GRF count to 128

System Routine changes for implementing large-grf debugging
will result in GRF count of 256 being reported for kernels
in all GRF modes. Applications using L0 Debug API do not
yet have a way to determine actual GRF count for kernel.

This commit is a temporary adjustment to avoid breaking debug
API users after new system routine is enabled.

This problem will be fully solved in follow up patch with switch to
zetDebugGetThreadRegisterSetProperties

Related-to: NEO-7370

Signed-off-by: Brandon Yates <brandon.yates@intel.com>
This commit is contained in:
Brandon Yates
2023-06-23 17:04:19 +00:00
committed by Compute-Runtime-Automation
parent 5bfcb07b49
commit bef89a3a7c
4 changed files with 50 additions and 29 deletions

View File

@@ -1192,6 +1192,7 @@ ze_result_t DebugSession::getRegisterSetProperties(Device *device, uint32_t *pCo
auto parseRegsetDesc = [&](const SIP::regset_desc &regsetDesc, zet_debug_regset_type_intel_gpu_t regsetType) {
if (regsetDesc.num) {
if (totalRegsetNum < *pCount) {
uint16_t num = (regsetType == ZET_DEBUG_REGSET_TYPE_GRF_INTEL_GPU) ? 128 : regsetDesc.num;
zet_debug_regset_properties_t regsetProps = {
ZET_STRUCTURE_TYPE_DEBUG_REGSET_PROPERTIES,
nullptr,
@@ -1199,7 +1200,7 @@ ze_result_t DebugSession::getRegisterSetProperties(Device *device, uint32_t *pCo
0,
DebugSessionImp::typeToRegsetFlags(regsetType),
0,
regsetDesc.num,
num,
regsetDesc.bits,
regsetDesc.bytes,
};

View File

@@ -318,6 +318,21 @@ TEST_F(DebugApiTest, givenNonZeroCountAndNullRegsetPointerWhenGetRegisterSetProp
EXPECT_EQ(ZE_RESULT_ERROR_INVALID_NULL_POINTER, zetDebugGetRegisterSetProperties(device->toHandle(), &count, nullptr));
}
TEST_F(DebugApiTest, givenSIPHeaderGRFCountNotEqualTo128ThenGetRegisterSetPropertiesReturns128) {
mockBuiltins = new MockBuiltins();
mockBuiltins->stateSaveAreaHeader = MockSipData::createStateSaveAreaHeader(2, 256);
neoDevice->executionEnvironment->rootDeviceEnvironments[0]->builtins.reset(mockBuiltins);
uint32_t count = 0;
EXPECT_EQ(ZE_RESULT_SUCCESS, zetDebugGetRegisterSetProperties(device->toHandle(), &count, nullptr));
EXPECT_EQ(12u, count);
std::vector<zet_debug_regset_properties_t> regsetProps(count);
EXPECT_EQ(ZE_RESULT_SUCCESS, zetDebugGetRegisterSetProperties(device->toHandle(), &count, regsetProps.data()));
EXPECT_EQ(12u, count);
EXPECT_EQ(128u, regsetProps[0].count);
}
TEST_F(DebugApiTest, givenGetRegisterSetPropertiesCalledCorrectPropertiesReturned) {
uint32_t count = 0;
EXPECT_EQ(ZE_RESULT_SUCCESS, zetDebugGetRegisterSetProperties(device->toHandle(), &count, nullptr));

View File

@@ -29,6 +29,10 @@ void clearUseFlags() {
}
std::vector<char> createStateSaveAreaHeader(uint32_t version) {
return createStateSaveAreaHeader(version, 128);
}
std::vector<char> createStateSaveAreaHeader(uint32_t version, uint16_t grfNum) {
SIP::StateSaveAreaHeader stateSaveAreaHeader = {
{
// versionHeader
@@ -53,7 +57,7 @@ std::vector<char> createStateSaveAreaHeader(uint32_t version) {
0, // slm_bank_size
0, // slm_bank_valid
4740, // sr_magic_offset
{0, 128, 256, 32}, // grf
{0, grfNum, 256, 32}, // grf
{4096, 1, 256, 32}, // addr
{4128, 2, 32, 4}, // flag
{4156, 1, 32, 4}, // emask
@@ -96,7 +100,7 @@ std::vector<char> createStateSaveAreaHeader(uint32_t version) {
0, // slm_bank_size
0, // slm_bank_valid
4740, // sr_magic_offset
{0, 128, 256, 32}, // grf
{0, grfNum, 256, 32}, // grf
{4096, 1, 256, 32}, // addr
{4128, 2, 32, 4}, // flag
{4156, 1, 32, 4}, // emask

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2018-2021 Intel Corporation
* Copyright (C) 2018-2023 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@@ -47,5 +47,6 @@ extern bool useMockSip;
void clearUseFlags();
std::vector<char> createStateSaveAreaHeader(uint32_t version);
std::vector<char> createStateSaveAreaHeader(uint32_t version, uint16_t grfNum);
} // namespace MockSipData
} // namespace NEO