CMA: Initialize SizeCopied return parameter
UCX test cases are reporting uninitialized values when CMA fails. The application should ideally ignore SizeCopied when the function fails but it doesn't. This is leading to wrong diagnosis. v2: Fill in partial SizeCopied in case of failure Change-Id: I6b7e1c19a8b702ec91ca64201a3dda27bd897877 Signed-off-by: Harish Kasiviswanathan <Harish.Kasiviswanathan@amd.com>
This commit is contained in:
+11
-10
@@ -354,6 +354,7 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtProcessVMRead(HSAuint32 Pid,
|
||||
HSAuint64 RemoteMemoryArrayCount,
|
||||
HSAuint64 *SizeCopied)
|
||||
{
|
||||
int ret = HSAKMT_STATUS_SUCCESS;
|
||||
struct kfd_ioctl_cross_memory_copy_args args = {0};
|
||||
|
||||
pr_debug("[%s]\n", __func__);
|
||||
@@ -371,15 +372,13 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtProcessVMRead(HSAuint32 Pid,
|
||||
args.dst_mem_array_size = LocalMemoryArrayCount;
|
||||
args.bytes_copied = 0;
|
||||
|
||||
int err = kmtIoctl(kfd_fd, AMDKFD_IOC_CROSS_MEMORY_COPY, &args);
|
||||
|
||||
if (err)
|
||||
return HSAKMT_STATUS_ERROR;
|
||||
if (kmtIoctl(kfd_fd, AMDKFD_IOC_CROSS_MEMORY_COPY, &args))
|
||||
ret = HSAKMT_STATUS_ERROR;
|
||||
|
||||
if (SizeCopied)
|
||||
*SizeCopied = args.bytes_copied;
|
||||
|
||||
return HSAKMT_STATUS_SUCCESS;
|
||||
return ret;
|
||||
}
|
||||
|
||||
HSAKMT_STATUS HSAKMTAPI hsaKmtProcessVMWrite(HSAuint32 Pid,
|
||||
@@ -389,10 +388,14 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtProcessVMWrite(HSAuint32 Pid,
|
||||
HSAuint64 RemoteMemoryArrayCount,
|
||||
HSAuint64 *SizeCopied)
|
||||
{
|
||||
int ret = HSAKMT_STATUS_SUCCESS;
|
||||
struct kfd_ioctl_cross_memory_copy_args args = {0};
|
||||
|
||||
pr_debug("[%s]\n", __func__);
|
||||
|
||||
if (SizeCopied)
|
||||
*SizeCopied = 0;
|
||||
|
||||
if (!LocalMemoryArray || !RemoteMemoryArray ||
|
||||
LocalMemoryArrayCount == 0 || RemoteMemoryArrayCount == 0)
|
||||
return HSAKMT_STATUS_ERROR;
|
||||
@@ -406,15 +409,13 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtProcessVMWrite(HSAuint32 Pid,
|
||||
args.dst_mem_array_size = RemoteMemoryArrayCount;
|
||||
args.bytes_copied = 0;
|
||||
|
||||
int err = kmtIoctl(kfd_fd, AMDKFD_IOC_CROSS_MEMORY_COPY, &args);
|
||||
|
||||
if (err)
|
||||
return HSAKMT_STATUS_ERROR;
|
||||
if (kmtIoctl(kfd_fd, AMDKFD_IOC_CROSS_MEMORY_COPY, &args))
|
||||
ret = HSAKMT_STATUS_ERROR;
|
||||
|
||||
if (SizeCopied)
|
||||
*SizeCopied = args.bytes_copied;
|
||||
|
||||
return HSAKMT_STATUS_SUCCESS;
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user