kfdtest: Check kfd debugger version in tests
Need to check the kfd debugger version of the kernel before
calling kfd debugger tests in kfdtest. If they are out of sync,
the tests may fail.
Change-Id: I1df5e89fb1199304e6fbe8973c60b76062514c03
Signed-off-by: Philip Cox <Philip.Cox@amd.com>
[ROCm/ROCR-Runtime commit: efe3769835]
This commit is contained in:
@@ -282,6 +282,55 @@ TEST_F(KFDDBGTest, BasicAddressWatch) {
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* checkDebugVersion:
|
||||
* Inputs:
|
||||
* HSAuint32 requiredMajor
|
||||
* -- Required major version number
|
||||
* HSAuint32 requiredMinor
|
||||
* -- Required minor version number
|
||||
* Output:
|
||||
* bool:
|
||||
* i) false if major version of thunk and kernel are not the same
|
||||
* ii) false if kernel minor version is less than the required
|
||||
* version if the major version is the required version.
|
||||
* iii) false if thunk minor version is less than the required
|
||||
* version if the major version is the required version.
|
||||
* iv) false if hsaKmtGetKernelDebugTrapVersionInfo() call fails.
|
||||
* v) true otherwise.
|
||||
*
|
||||
*/
|
||||
static bool checkDebugVersion(HSAuint32 requiredMajor, HSAuint32 requiredMinor)
|
||||
{
|
||||
HSAuint32 kernelMajorNumber = 0;
|
||||
HSAuint32 kernelMinorNumber = 0;
|
||||
HSAuint32 thunkMajorNumber = 0;
|
||||
HSAuint32 thunkMinorNumber = 0;
|
||||
|
||||
hsaKmtGetThunkDebugTrapVersionInfo(&thunkMajorNumber, &thunkMinorNumber);
|
||||
|
||||
if (hsaKmtGetKernelDebugTrapVersionInfo(&kernelMajorNumber,
|
||||
&kernelMinorNumber)) {
|
||||
LOG() << "Failed to get kernel debugger version!" << std::endl;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (kernelMajorNumber != thunkMajorNumber)
|
||||
return false;
|
||||
|
||||
if (kernelMajorNumber < requiredMajor ||
|
||||
(kernelMajorNumber == requiredMajor &&
|
||||
kernelMinorNumber < requiredMinor))
|
||||
return false;
|
||||
|
||||
if (thunkMajorNumber < requiredMajor ||
|
||||
(thunkMajorNumber == requiredMajor &&
|
||||
thunkMinorNumber < requiredMinor))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
TEST_F(KFDDBGTest, BasicDebuggerSuspendResume) {
|
||||
TEST_START(TESTPROFILE_RUNALL)
|
||||
if (m_FamilyId >= FAMILY_AI && m_FamilyId <= FAMILY_AR) {
|
||||
@@ -290,6 +339,12 @@ TEST_F(KFDDBGTest, BasicDebuggerSuspendResume) {
|
||||
ASSERT_GE(defaultGPUNode, 0) << "failed to get default GPU Node";
|
||||
|
||||
HSAuint32 Flags = 0;
|
||||
|
||||
if(!checkDebugVersion(0, 2)) {
|
||||
LOG() << "Test disabled due to debug API version mismatch";
|
||||
goto exit;
|
||||
}
|
||||
|
||||
HsaMemoryBuffer isaBuffer(PAGE_SIZE, defaultGPUNode, true/*zero*/, false/*local*/, true/*exec*/);
|
||||
HsaMemoryBuffer iterateBuf(PAGE_SIZE, defaultGPUNode, true, false, false);
|
||||
HsaMemoryBuffer resultBuf(PAGE_SIZE, defaultGPUNode, true, false, false);
|
||||
@@ -367,6 +422,8 @@ TEST_F(KFDDBGTest, BasicDebuggerSuspendResume) {
|
||||
} else {
|
||||
LOG() << "Skipping test: Test not supported on family ID 0x" << m_FamilyId << "." << std::endl;
|
||||
}
|
||||
exit:
|
||||
LOG() << std::endl;
|
||||
TEST_END
|
||||
}
|
||||
|
||||
@@ -378,6 +435,11 @@ TEST_F(KFDDBGTest, BasicDebuggerQueryQueueStatus) {
|
||||
|
||||
ASSERT_GE(defaultGPUNode, 0) << "failed to get default GPU Node";
|
||||
|
||||
if(!checkDebugVersion(0, 2)) {
|
||||
LOG() << "Test disabled due to debug API version mismatch";
|
||||
goto exit;
|
||||
}
|
||||
|
||||
// enable debug trap and check poll fd creation
|
||||
ASSERT_SUCCESS(hsaKmtEnableDebugTrapWithPollFd(defaultGPUNode,
|
||||
INVALID_QUEUEID,
|
||||
@@ -476,6 +538,8 @@ TEST_F(KFDDBGTest, BasicDebuggerQueryQueueStatus) {
|
||||
LOG() << "Skipping test: Test not supported on family ID 0x"
|
||||
<< m_FamilyId << "." << std::endl;
|
||||
}
|
||||
exit:
|
||||
LOG() << std::endl;
|
||||
TEST_END
|
||||
}
|
||||
|
||||
@@ -525,6 +589,11 @@ TEST_F(KFDDBGTest, BasicDebuggerQueryVMFaultQueueStatus) {
|
||||
|
||||
ASSERT_GE(defaultGPUNode, 0) << "failed to get default GPU Node";
|
||||
|
||||
if(!checkDebugVersion(0, 2)) {
|
||||
LOG() << "Test disabled due to debug API version mismatch";
|
||||
goto exit;
|
||||
}
|
||||
|
||||
pid_t childPid = fork();
|
||||
ASSERT_GE(childPid, 0);
|
||||
|
||||
@@ -706,5 +775,7 @@ TEST_F(KFDDBGTest, BasicDebuggerQueryVMFaultQueueStatus) {
|
||||
LOG() << "Skipping test: Test not supported on family ID 0x"
|
||||
<< m_FamilyId << "." << std::endl;
|
||||
}
|
||||
exit:
|
||||
LOG() << std::endl;
|
||||
TEST_END
|
||||
}
|
||||
|
||||
Fai riferimento in un nuovo problema
Block a user