From d319660838b3ef25235fc28e259b67dbe0f38730 Mon Sep 17 00:00:00 2001 From: Yifan Zhang Date: Thu, 23 Feb 2023 14:08:21 +0800 Subject: [PATCH] =?UTF-8?q?kfdtest:=20Using=20non-paged=20memory=20allocat?= =?UTF-8?q?ion=20for=20wptr=20on=20devices=20that=C2=A0have=20MES=20schedu?= =?UTF-8?q?ler?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Starting with GFX11, wptr BOs must be mapped to GART for MES to determine work on unmapped queues for usermode queue oversubscription (no aggregated doorbell) Change-Id: I10e30fdc2bec587cef9427faa4874957988c34b3 Signed-off-by: Yifan Zhang --- tests/kfdtest/src/KFDQMTest.cpp | 2 +- tests/kfdtest/src/KFDTestUtil.cpp | 4 ++-- tests/kfdtest/src/KFDTestUtil.hpp | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/kfdtest/src/KFDQMTest.cpp b/tests/kfdtest/src/KFDQMTest.cpp index 2f156ad23b..ee01300e4c 100644 --- a/tests/kfdtest/src/KFDQMTest.cpp +++ b/tests/kfdtest/src/KFDQMTest.cpp @@ -1174,7 +1174,7 @@ TEST_F(KFDQMTest, CreateAqlCpQueue) { int defaultGPUNode = m_NodeInfo.HsaDefaultGPUNode(); ASSERT_GE(defaultGPUNode, 0) << "failed to get default GPU Node"; - HsaMemoryBuffer pointers(PAGE_SIZE, defaultGPUNode); + HsaMemoryBuffer pointers(PAGE_SIZE, defaultGPUNode, /*zero*/true, /*local*/false, /*exec*/false, /*isScratch */false, /* isReadOnly */false, /* isUncached */false, /* NonPaged */g_baseTest->NeedNonPagedWptr(defaultGPUNode)); ASSERT_SUCCESS(queue.Create(defaultGPUNode, PAGE_SIZE, pointers.As())); diff --git a/tests/kfdtest/src/KFDTestUtil.cpp b/tests/kfdtest/src/KFDTestUtil.cpp index 98c90f7b19..d02804eb09 100644 --- a/tests/kfdtest/src/KFDTestUtil.cpp +++ b/tests/kfdtest/src/KFDTestUtil.cpp @@ -255,7 +255,7 @@ HSAuint64 GetSystemTickCountInMicroSec() { const HsaMemoryBuffer HsaMemoryBuffer::Null; HsaMemoryBuffer::HsaMemoryBuffer(HSAuint64 size, unsigned int node, bool zero, bool isLocal, bool isExec, - bool isScratch, bool isReadOnly, bool isUncached) + bool isScratch, bool isReadOnly, bool isUncached, bool NonPaged) :m_Size(size), m_pUser(NULL), m_pBuf(NULL), @@ -279,7 +279,7 @@ HsaMemoryBuffer::HsaMemoryBuffer(HSAuint64 size, unsigned int node, bool zero, b EXPECT_EQ(isUncached, 0) << "Uncached flag is relevant only for system or host memory"; } else { m_Flags.ui32.HostAccess = 1; - m_Flags.ui32.NonPaged = 0; + m_Flags.ui32.NonPaged = NonPaged ? 1 : 0; m_Flags.ui32.CoarseGrain = 0; m_Flags.ui32.NoNUMABind = 1; m_Flags.ui32.Uncached = isUncached; diff --git a/tests/kfdtest/src/KFDTestUtil.hpp b/tests/kfdtest/src/KFDTestUtil.hpp index 756b024e90..534a74a456 100644 --- a/tests/kfdtest/src/KFDTestUtil.hpp +++ b/tests/kfdtest/src/KFDTestUtil.hpp @@ -68,7 +68,7 @@ class HsaMemoryBuffer { public: HsaMemoryBuffer(HSAuint64 size, unsigned int node, bool zero = true, bool isLocal = false, - bool isExec = false, bool isScratch = false, bool isReadOnly = false, bool isUncached = false); + bool isExec = false, bool isScratch = false, bool isReadOnly = false, bool isUncached = false, bool NonPaged = false); HsaMemoryBuffer(void *addr, HSAuint64 size); template RetType As() {