update hsa header

Signed-off-by: Flora Cui <flora.cui@amd.com>
This commit is contained in:
Flora Cui
2025-10-23 10:09:23 +08:00
committed by Frank Min
parent b5dd613ccd
commit 1bc5af684c
4 changed files with 124 additions and 9 deletions
+6
View File
@@ -1,3 +1,9 @@
/*
* Copyright © Advanced Micro Devices, Inc., or its affiliates.
*
* SPDX-License-Identifier: MIT
*/
#ifndef HSA_RUNTIME_AMD_TOOL_EVENTS_H_
#define HSA_RUNTIME_AMD_TOOL_EVENTS_H_
+2
View File
@@ -271,6 +271,8 @@ struct AmdExtTable {
decltype(hsa_amd_signal_wait_all)* hsa_amd_signal_wait_all_fn;
decltype(hsa_amd_memory_get_preferred_copy_engine)* hsa_amd_memory_get_preferred_copy_engine_fn;
decltype(hsa_amd_portable_export_dmabuf_v2)* hsa_amd_portable_export_dmabuf_v2_fn;
decltype(hsa_amd_ais_file_write)* hsa_amd_ais_file_write_fn;
decltype(hsa_amd_ais_file_read)* hsa_amd_ais_file_read_fn;
};
// Table to export HSA Core Runtime Apis
+1 -1
View File
@@ -58,7 +58,7 @@
// Step Ids of the Api tables exported by Hsa Core Runtime
#define HSA_API_TABLE_STEP_VERSION 0x01
#define HSA_CORE_API_TABLE_STEP_VERSION 0x00
#define HSA_AMD_EXT_API_TABLE_STEP_VERSION 0x07
#define HSA_AMD_EXT_API_TABLE_STEP_VERSION 0x08
#define HSA_FINALIZER_API_TABLE_STEP_VERSION 0x00
#define HSA_IMAGE_API_TABLE_STEP_VERSION 0x01
// Rocprofiler just checks HSA_MAGE_EXT_API_TABLE_STEP_VERSION
+115 -8
View File
@@ -62,9 +62,12 @@
* - 1.9 - hsa_amd_portable_export_dmabuf_v2
* - 1.10 - hsa_amd_vmem_address_reserve: HSA_AMD_VMEM_ADDRESS_NO_REGISTER
* - 1.11 - hsa_amd_agent_info_t: HSA_AMD_AGENT_INFO_CLOCK_COUNTERS
* - 1.12 - hsa_amd_pointer_info: HSA_EXT_POINTER_TYPE_HSA_VMEM and HSA_EXT_POINTER_TYPE_RESERVED_ADDR
* - 1.13 - hsa_amd_pointer_info: Added new registered field to hsa_amd_pointer_info_t
* - 1.14 - hsa_amd_ais_file_write, hsa_amd_ais_file_read
*/
#define HSA_AMD_INTERFACE_VERSION_MAJOR 1
#define HSA_AMD_INTERFACE_VERSION_MINOR 11
#define HSA_AMD_INTERFACE_VERSION_MINOR 14
#ifdef __cplusplus
extern "C" {
@@ -1578,7 +1581,10 @@ typedef enum hsa_amd_memory_pool_flag_s {
* Allocates executable memory
*/
HSA_AMD_MEMORY_POOL_EXECUTABLE_FLAG = (1 << 2),
/**
* Allocates uncached memory
*/
HSA_AMD_MEMORY_POOL_UNCACHED_FLAG = (1 << 3),
} hsa_amd_memory_pool_flag_t;
/**
@@ -1806,8 +1812,6 @@ hsa_status_t HSA_API
*
* @retval ::HSA_STATUS_ERROR_OUT_OF_RESOURCES Agent does not have available SDMA engines.
*
* @retval ::HSA_STATUS_ERROR_INVALID_AGENT dst_agent and src_agent are the same as
* dst_agent == src_agent is generally used for shader copies.
*/
hsa_status_t HSA_API
hsa_amd_memory_copy_engine_status(hsa_agent_t dst_agent, hsa_agent_t src_agent,
@@ -1824,8 +1828,6 @@ hsa_amd_memory_copy_engine_status(hsa_agent_t dst_agent, hsa_agent_t src_agent,
*
* @retval ::HSA_STATUS_SUCCESS For mask returned
*
* @retval ::HSA_STATUS_ERROR_INVALID_AGENT dst_agent and src_agent are the same as
* dst_agent == src_agent is generally used for shader copies.
*/
hsa_status_t HSA_API
hsa_amd_memory_get_preferred_copy_engine(hsa_agent_t dst_agent, hsa_agent_t src_agent,
@@ -2362,7 +2364,11 @@ typedef enum {
/*
No backend memory but virtual address
*/
HSA_EXT_POINTER_TYPE_RESERVED_ADDR = 5
HSA_EXT_POINTER_TYPE_RESERVED_ADDR = 5,
/*
Memory was allocated with an HSA virtual memory allocator
*/
HSA_EXT_POINTER_TYPE_HSA_VMEM = 6
} hsa_amd_pointer_type_t;
/**
@@ -2417,6 +2423,13 @@ typedef struct hsa_amd_pointer_info_s {
meaningful if the type of the allocation is HSA_EXT_POINTER_TYPE_UNKNOWN.
*/
uint32_t global_flags;
/*
Set to true if this allocation was registered with the underlying driver
This field is not meaningful if the type of the allocation is
HSA_EXT_POINTER_TYPE_UNKNOWN.
*/
bool registered;
} hsa_amd_pointer_info_t;
/**
@@ -3642,12 +3655,106 @@ typedef enum {
hsa_status_t hsa_amd_queue_get_info(hsa_queue_t* queue, hsa_queue_info_attribute_t attribute,
void* value);
typedef struct hsa_amd_ais_file_handle_s {
/*
* file handle for AIS read & write. Linux will use fd.
* pad is keep the size consistent accross different platforms.
*/
union {
void* handle;
int fd;
uint8_t pad[8];
};
} hsa_amd_ais_file_handle_t;
/**
* @brief Write data from device memory to a file
*
* Writes data from device memory buffer to a file at the specified offset.
* The device memory pointer must be accessible from the host and point to
* a valid allocation.
*
* EXPERIMENTAL: AIS read and write calls are currently in experimental phase and
* APIs may be modified
*
* @param[in] handle Handle of the file to write to.
*
* @param[in] devicePtr Device memory buffer pointer containing data to write.
*
* @param[in] size Size in bytes of the data to write.
*
* @param[in] file_offset Offset in bytes into the file where data will be written.
*
* @param[in/out] size_copied Actual number of bytes copied
*
* @param[in/out] status Additional status if any
*
* @retval ::HSA_STATUS_SUCCESS The function has been executed successfully.
*
* @retval ::HSA_STATUS_ERROR_NOT_INITIALIZED The HSA runtime has not been
* initialized.
*
* @retval ::HSA_STATUS_ERROR_INVALID_ARGUMENT @p fd is invalid, @p devicePtr
* is NULL, or @p size is 0.
*
* @retval ::HSA_STATUS_ERROR_INVALID_ALLOCATION @p devicePtr does not refer to
* a valid allocation.
*
* @retval ::HSA_STATUS_ERROR An error occurred during the write operation.
*/
hsa_status_t HSA_API hsa_amd_ais_file_write(hsa_amd_ais_file_handle_t handle, void *devicePtr,
uint64_t size, int64_t file_offset,
uint64_t *size_copied, int32_t *status);
/**
* @brief Read data from a file to device memory
*
* Reads data from a file at the specified offset into a device memory buffer.
* The device memory pointer must be accessible from the host and point to
* a valid allocation.
*
* EXPERIMENTAL: AIS read and write calls are currently in experimental phase and
* APIs may be modified
* @param[in] hanlde Handle of the file to read from.
*
* @param[in] devicePtr Device memory buffer pointer to store the read data.
*
* @param[in] size Size in bytes of the data to read.
*
* @param[in] file_offset Offset in bytes into the file where data will be read from.
*
* @param[in/out] size_copied Actual number of bytes copied
*
* @param[in/out] status Additional status if any
*
* @retval ::HSA_STATUS_SUCCESS The function has been executed successfully.
*
* @retval ::HSA_STATUS_ERROR_NOT_INITIALIZED The HSA runtime has not been
* initialized.
*
* @retval ::HSA_STATUS_ERROR_INVALID_ARGUMENT @p fd is invalid, @p devicePtr
* is NULL, or @p size is 0.
*
* @retval ::HSA_STATUS_ERROR_INVALID_ALLOCATION @p devicePtr does not refer to
* a valid allocation.
*
* @retval ::HSA_STATUS_ERROR An error occurred during the read operation.
*/
hsa_status_t HSA_API hsa_amd_ais_file_read(hsa_amd_ais_file_handle_t handle, void *devicePtr,
uint64_t size, int64_t file_offset,
uint64_t *size_copied, int32_t *status);
/**
* @brief logging types
*/
typedef enum hsa_amd_log_flag_s {
/* Log AQL packets internally enqueued by HSA for Blit Kernels */
/* Log AQL packets internally enqueued by ROCr */
HSA_AMD_LOG_FLAG_BLIT_KERNEL_PKTS = 0,
HSA_AMD_LOG_FLAG_AQL = 0,
/* Log SDMA packets */
HSA_AMD_LOG_FLAG_SDMA = 1,
/* Log INFO */
HSA_AMD_LOG_FLAG_INFO = 2,
} hsa_amd_log_flag_t;
/**