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:
Harish Kasiviswanathan
2018-02-08 10:04:08 -05:00
rodzic 55bb61ff9c
commit 7de0199e99
+11 -10
Wyświetl plik
@@ -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;
}