From 169673a4354250271d6ea838097276bb278244ca Mon Sep 17 00:00:00 2001 From: Daniel Phillips Date: Thu, 9 Jun 2022 14:57:40 -0700 Subject: [PATCH] kfdtest: Add thunk test for KFD memory availability ioctl Signed-off-by: Daniel Phillips Change-Id: Ic4c1ffefdc3570718a1fce4e53ca5f1ebde8c479 --- tests/kfdtest/src/KFDMemoryTest.cpp | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/tests/kfdtest/src/KFDMemoryTest.cpp b/tests/kfdtest/src/KFDMemoryTest.cpp index 8c6449ceb7..2bcc7524f5 100644 --- a/tests/kfdtest/src/KFDMemoryTest.cpp +++ b/tests/kfdtest/src/KFDMemoryTest.cpp @@ -249,6 +249,31 @@ TEST_F(KFDMemoryTest, MemoryAlloc) { TEST_END } +// Basic test for hsaKmtAllocMemory +TEST_F(KFDMemoryTest, MemoryAllocAll) { + TEST_START(TESTPROFILE_RUNALL) + + int defaultGPUNode = m_NodeInfo.HsaDefaultGPUNode(); + HsaMemFlags memFlags = {0}; + memFlags.ui32.NonPaged = 1; // sys mem vs vram + HSAuint64 available; + void *object = NULL; + int shrink = 21, success = HSAKMT_STATUS_NO_MEMORY; + + EXPECT_SUCCESS(hsaKmtAvailableMemory(defaultGPUNode, &available)); + LOG() << "Available: " << available << " bytes" << std::endl; + for (int i = 0; i < available >> shrink; i++) { + HSAuint64 size = available - ((HSAuint64)i << shrink); + if (hsaKmtAllocMemory(defaultGPUNode, size, memFlags, &object) == HSAKMT_STATUS_SUCCESS) { + LOG() << "Allocated: " << size << " bytes" << std::endl; + success = hsaKmtFreeMemory(object, available); + break; + } + } + EXPECT_SUCCESS(success); + TEST_END +} + TEST_F(KFDMemoryTest, AccessPPRMem) { TEST_START(TESTPROFILE_RUNALL)