kfdtest: add kfdtest cases for VA-only, VRAM-only allocated VRAM.

Alloc vram by kfd, then map by GEM api to GPU VM and map to CPU VM.

Signed-off-by: Xiaogang Chen<Xiaogang.Chen@amd.com>
Change-Id: Ib5b2f35662cd5473f622f6ffc9b62925fe57ae42
This commit is contained in:
Xiaogang Chen
2022-10-31 19:51:42 -05:00
gecommit door Xiaogang Chen
bovenliggende 0138487aa4
commit 108c0e5f92
@@ -2889,3 +2889,51 @@ TEST_F(KFDMemoryTest, ExportDMABufTest) {
TEST_END
}
TEST_F(KFDMemoryTest, VA_VRAM_Only_AllocTest) {
TEST_REQUIRE_ENV_CAPABILITIES(ENVCAPS_64BITLINUX);
TEST_START(TESTPROFILE_RUNALL);
if (m_VersionInfo.KernelInterfaceMinorVersion < 12) {
LOG() << "Skipping test, requires KFD ioctl version 1.12 or newer" << std::endl;
return;
}
HSAuint32 defaultGPUNode = m_NodeInfo.HsaDefaultGPUNode();
ASSERT_GE(defaultGPUNode, 0) << "failed to get default GPU Node";
HsaMemFlags memFlags = m_MemoryFlags;
memFlags.ui32.NonPaged = 1;
memFlags.ui32.HostAccess = 0;
HsaMemMapFlags mapFlags = {0};
HSAuint32 *buf;
/*alloc va without vram alloc*/
memFlags.ui32.OnlyAddress = 1;
ASSERT_SUCCESS(hsaKmtAllocMemory(defaultGPUNode, PAGE_SIZE, memFlags,
reinterpret_cast<void**>(&buf)));
/*mapping VA allocated by kfd api would fail*/
ASSERT_EQ(HSAKMT_STATUS_ERROR, hsaKmtMapMemoryToGPU(buf, PAGE_SIZE, NULL));
ASSERT_EQ(HSAKMT_STATUS_INVALID_PARAMETER, hsaKmtMapMemoryToGPUNodes(buf, PAGE_SIZE, NULL,
mapFlags, 1, reinterpret_cast<HSAuint32 *>(&defaultGPUNode)));
ASSERT_SUCCESS(hsaKmtFreeMemory(buf, PAGE_SIZE));
/*alloc vram without va assigned*/
memFlags.ui32.OnlyAddress = 0;
memFlags.ui32.NoAddress = 1;
ASSERT_SUCCESS(hsaKmtAllocMemory(defaultGPUNode, PAGE_SIZE, memFlags,
reinterpret_cast<void**>(&buf)));
/*mapping handle allocated by kfd API would fail*/
ASSERT_EQ(HSAKMT_STATUS_ERROR, hsaKmtMapMemoryToGPU(buf, PAGE_SIZE, NULL));
ASSERT_EQ(HSAKMT_STATUS_INVALID_PARAMETER, hsaKmtMapMemoryToGPUNodes(buf, PAGE_SIZE, NULL,
mapFlags, 1, reinterpret_cast<HSAuint32 *>(&defaultGPUNode)));
ASSERT_SUCCESS(hsaKmtFreeMemory(buf, PAGE_SIZE));
TEST_END
}