Add pointer attributes API

Add two pointer attributes APIs:
hsaKmtQueryPointerInfo - allow the user to query the memory information
    using a pointer. This pointer can point to any address inside the
    range known to HSA.
hsaKmtSetMemoryUserData - allow the user to attach data to a pointer to
    add memory tracking information. This pointer must match the start
    address of a memory allocation or registration.
TODO: This patch implements support on dGPU. Needs to add APU.

Change-Id: I4711809274248434901f0794f50ebfa13a7371a8


[ROCm/ROCR-Runtime commit: 51e4d27c37]
This commit is contained in:
Amber Lin
2016-09-01 23:25:42 -04:00
förälder cba37c251c
incheckning 8a1cef5fbb
6 ändrade filer med 294 tillägg och 40 borttagningar
+26 -2
Visa fil
@@ -133,7 +133,8 @@ hsaKmtAllocMemory(
}
if (gpu_id == 0 && !MemFlags.ui32.Scratch) {
*MemoryAddress = fmm_allocate_host(SizeInBytes, MemFlags);
*MemoryAddress = fmm_allocate_host(PreferredNode, SizeInBytes,
MemFlags);
if (*MemoryAddress == NULL)
return HSAKMT_STATUS_ERROR;
@@ -161,7 +162,8 @@ hsaKmtAllocMemory(
/* Backwards compatibility hack: Allocate system memory if app
* asks for paged memory from a GPU node. */
if (gpu_id && !MemFlags.ui32.NonPaged && !MemFlags.ui32.Scratch) {
*MemoryAddress = fmm_allocate_host(SizeInBytes, MemFlags);
*MemoryAddress = fmm_allocate_host(PreferredNode, SizeInBytes,
MemFlags);
if (*MemoryAddress == NULL)
return HSAKMT_STATUS_ERROR;
@@ -422,3 +424,25 @@ hsaKmtGetTileConfig(
return HSAKMT_STATUS_SUCCESS;
}
HSAKMT_STATUS
HSAKMTAPI
hsaKmtQueryPointerInfo(
const void *Pointer, /* IN */
HsaPointerInfo *PointerInfo /* OUT */
)
{
if (!PointerInfo)
return HSAKMT_STATUS_INVALID_PARAMETER;
return fmm_get_mem_info(Pointer, PointerInfo);
}
HSAKMT_STATUS
HSAKMTAPI
hsaKmtSetMemoryUserData(
const void *Pointer, /* IN */
void *UserData /* IN */
)
{
return fmm_set_mem_user_data(Pointer, UserData);
}