add queue snapshot test

adds api and test to get newly create queue snapshot per ptraced process.

Change-Id: Ife97123a5b930e837ccaa386801145ef23c2cc2c
Signed-off-by: Jonathan Kim <Jonathan.Kim@amd.com>


[ROCm/ROCR-Runtime commit: 8b01a1c4c5]
This commit is contained in:
Jonathan Kim
2019-08-29 00:21:52 -04:00
committed by Jonathan Kim
parent 8feaf7585f
commit efef21f4ff
5 changed files with 112 additions and 6 deletions
@@ -24,6 +24,7 @@
#include "KFDDBGTest.hpp"
#include <sys/ptrace.h>
#include <poll.h>
#include "linux/kfd_ioctl.h"
#include "KFDQMTest.hpp"
#include "PM4Queue.hpp"
#include "PM4Packet.hpp"
@@ -439,7 +440,7 @@ TEST_F(KFDDBGTest, BasicDebuggerQueryQueueStatus) {
ASSERT_GE(defaultGPUNode, 0) << "failed to get default GPU Node";
if(!checkDebugVersion(0, 2)) {
if (!checkDebugVersion(0, 2)) {
LOG() << "Test disabled due to debug API version mismatch";
goto exit;
}
@@ -510,13 +511,40 @@ TEST_F(KFDDBGTest, BasicDebuggerQueryQueueStatus) {
ASSERT_EQ(IsNew, true);
ASSERT_EQ(EventReceived, HSA_DEBUG_EVENT_TYPE_TRAP);
// suspend queue, query suspended queue and clear pending event
// suspend queue, get snapshot, query suspended queue
// and clear pending event
ASSERT_SUCCESS(hsaKmtQueueSuspend(INVALID_PID, 1, queueIds, 10, 0));
syncStatus = dispatch->SyncWithStatus(suspendTimeout);
ASSERT_NE(syncStatus, HSAKMT_STATUS_SUCCESS);
ASSERT_NE(iter[0], result[0]);
struct kfd_queue_snapshot_entry qssBuf[1] = {};
HSAuint32 QssEntries = 0;
// get only number of queues and don't update the snapshot buffer
ASSERT_SUCCESS(hsaKmtGetQueueSnapshot(INVALID_NODEID, INVALID_PID,
false,
reinterpret_cast<void *>(qssBuf),
&QssEntries));
ASSERT_EQ(QssEntries, 1);
ASSERT_EQ(qssBuf[0].ctx_save_restore_address, 0);
ASSERT_EQ(qssBuf[0].ring_base_address, 0);
ASSERT_EQ(qssBuf[0].ring_size, 0);
// update the snapshot buffer
QssEntries = 1;
ASSERT_SUCCESS(hsaKmtGetQueueSnapshot(INVALID_NODEID, INVALID_PID,
false,
reinterpret_cast<void *>(qssBuf),
&QssEntries));
ASSERT_EQ(QssEntries, 1);
ASSERT_NE(qssBuf[0].ctx_save_restore_address, 0);
ASSERT_NE(qssBuf[0].ring_base_address, 0);
ASSERT_NE(qssBuf[0].ring_size, 0);
ASSERT_SUCCESS(hsaKmtQueryDebugEvent(defaultGPUNode, INVALID_PID,
&qid, true, &EventReceived,
&IsSuspended, &IsNew));
@@ -593,7 +621,7 @@ TEST_F(KFDDBGTest, BasicDebuggerQueryVMFaultQueueStatus) {
ASSERT_GE(defaultGPUNode, 0) << "failed to get default GPU Node";
if(!checkDebugVersion(0, 2)) {
if (!checkDebugVersion(0, 2)) {
LOG() << "Test disabled due to debug API version mismatch";
goto exit;
}