kfdtest: Add create SDMA queue by target engine
KFD supports SDMA queue creation by target engine. Enable this for testing.
このコミットが含まれているのは:
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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__
|
||||
新しいイシューから参照
ユーザーをブロックする