kfdtest: Add create SDMA queue by target engine

KFD supports SDMA queue creation by target engine.
Enable this for testing.
このコミットが含まれているのは:
Jonathan Kim
2025-01-30 13:18:54 -05:00
committed by Kim, Jonathan
コミット 9e57ce48e8
3個のファイルの変更58行の追加8行の削除
+19 -8
ファイルの表示
@@ -56,14 +56,25 @@ HSAKMT_STATUS BaseQueue::Create(unsigned int NodeId, unsigned int size, HSAuint6
m_Resources.Queue_write_ptr_aql = &pointers[1];
}
status = hsaKmtCreateQueue(NodeId,
type,
DEFAULT_QUEUE_PERCENTAGE,
DEFAULT_PRIORITY,
m_QueueBuf->As<unsigned int*>(),
m_QueueBuf->Size(),
NULL,
&m_Resources);
if (type == HSA_QUEUE_SDMA_BY_ENG_ID)
status = hsaKmtCreateQueueExt(NodeId,
type,
DEFAULT_QUEUE_PERCENTAGE,
DEFAULT_PRIORITY,
m_SdmaEngineId,
m_QueueBuf->As<unsigned int*>(),
m_QueueBuf->Size(),
NULL,
&m_Resources);
else
status = hsaKmtCreateQueue(NodeId,
type,
DEFAULT_QUEUE_PERCENTAGE,
DEFAULT_PRIORITY,
m_QueueBuf->As<unsigned int*>(),
m_QueueBuf->Size(),
NULL,
&m_Resources);
if (status != HSAKMT_STATUS_SUCCESS) {
return status;
+2
ファイルの表示
@@ -88,6 +88,7 @@ class BaseQueue {
virtual _HSA_QUEUE_TYPE GetQueueType() = 0;
unsigned int GetNodeId() { return m_Node; }
unsigned int GetFamilyId() { return m_FamilyId; }
int GetSDMAEngineId() { return m_SdmaEngineId; }
protected:
static const unsigned int CMD_NOP_TYPE_2 = 0x80000000;
@@ -100,6 +101,7 @@ class BaseQueue {
HsaMemoryBuffer *m_QueueBuf;
unsigned int m_Node;
unsigned int m_FamilyId;
int m_SdmaEngineId;
// @return Write pointer modulo queue size in dwords
virtual unsigned int Wptr() = 0;
+37
ファイルの表示
@@ -0,0 +1,37 @@
/*
* Copyright (C) 2025 Advanced Micro Devices, Inc. All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*
*/
#ifndef __KFD_SDMA_QUEUE_BY_ENG_ID__H__
#define __KFD_SDMA_QUEUE_BY_ENG_ID__H__
#include "SDMAQueue.hpp"
class SDMAQueueByEngId : public SDMAQueue {
public:
SDMAQueueByEngId(int engineId) {CMD_NOP = 0; m_SdmaEngineId = engineId;}
virtual ~SDMAQueueByEngId(void) {}
protected:
virtual _HSA_QUEUE_TYPE GetQueueType() { return HSA_QUEUE_SDMA_BY_ENG_ID; }
};
#endif // __KFD_SDMA_QUEUE_BY_ENG_ID__H__