From 9d98d7479df957aa865e7f9d735b9e0f4e989a3b Mon Sep 17 00:00:00 2001 From: Amber Lin Date: Thu, 24 Apr 2025 13:09:25 -0400 Subject: [PATCH] kfdtest: Skip SVMEvict with xnack=0 Random driver deadlock on svm_range_evict_svm_bo_worker() is obeserved on NPS2/DPX mode. It's seen with xnack off and happens more often on the partition with less VRAM because of TMR. Temporarily skip SVM Evict tests on Family AV when xnack is disabled. Signed-off-by: Amber Lin [ROCm/ROCR-Runtime commit: 5e28208cec19178c03335e057a97f1f9a5911f8a] --- .../tests/kfdtest/src/KFDSVMEvictTest.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/projects/rocr-runtime/libhsakmt/tests/kfdtest/src/KFDSVMEvictTest.cpp b/projects/rocr-runtime/libhsakmt/tests/kfdtest/src/KFDSVMEvictTest.cpp index 5c592351ed..3f6daf2978 100644 --- a/projects/rocr-runtime/libhsakmt/tests/kfdtest/src/KFDSVMEvictTest.cpp +++ b/projects/rocr-runtime/libhsakmt/tests/kfdtest/src/KFDSVMEvictTest.cpp @@ -236,6 +236,13 @@ TEST_P(KFDSVMEvictTest, BasicTest) { if (!SVMAPISupported()) return; + HSAint32 xnack_enable = 0; + EXPECT_SUCCESS(hsaKmtGetXNACKMode(&xnack_enable)); + if (!xnack_enable) { + LOG() << std::hex << "Test is skipped with xnack off" << std::endl; + return; + } + HSAuint32 defaultGPUNode = m_NodeInfo.HsaDefaultGPUNode(); ASSERT_GE(defaultGPUNode, 0) << "failed to get default GPU Node"; HSAuint64 vramBufSize = ALLOCATE_BUF_SIZE_MB * 1024 * 1024; @@ -303,6 +310,13 @@ TEST_P(KFDSVMEvictTest, QueueTest) { if (!SVMAPISupported()) return; + HSAint32 xnack_enable = 0; + EXPECT_SUCCESS(hsaKmtGetXNACKMode(&xnack_enable)); + if (!xnack_enable) { + LOG() << std::hex << "Test is skipped with xnack off" << std::endl; + return; + } + HSAuint32 defaultGPUNode = m_NodeInfo.HsaDefaultGPUNode(); ASSERT_GE(defaultGPUNode, 0) << "failed to get default GPU Node"; unsigned int count = MAX_WAVEFRONTS; @@ -338,8 +352,6 @@ TEST_P(KFDSVMEvictTest, QueueTest) { LOG() << "Found VRAM of " << std::dec << (vramSize >> 20) << "MB." << std::endl; } - HSAint32 xnack_enable = 0; - EXPECT_SUCCESS(hsaKmtGetXNACKMode(&xnack_enable)); HSAuint64 vramBufSize = GetBufferSize(vramSize, count, xnack_enable); if (vramBufSize == 0) { LOG() << "Not enough system memory, skipping the test" << std::endl;