Skip to content

Commit e9ac007

Browse files
authored
Merge pull request #504 from vinser52/svinogra_ipc_fix
Cleanup IPC handle impl in L0 provider
2 parents da06c84 + 3c02d72 commit e9ac007

File tree

1 file changed

+10
-23
lines changed

1 file changed

+10
-23
lines changed

src/provider/provider_level_zero.c

Lines changed: 10 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -283,18 +283,11 @@ static umf_result_t ze_memory_provider_allocation_split(void *provider,
283283
return UMF_RESULT_ERROR_NOT_SUPPORTED;
284284
}
285285

286-
struct ipc_data_t {
287-
ze_ipc_mem_handle_t ze_ipc_handle;
288-
ze_memory_type_t memory_type;
289-
//TODO: do we need size?
290-
size_t size;
291-
};
292-
293286
static umf_result_t ze_memory_provider_get_ipc_handle_size(void *provider,
294287
size_t *size) {
295288
(void)provider;
296289
ASSERT(size != NULL);
297-
*size = sizeof(struct ipc_data_t);
290+
*size = sizeof(ze_ipc_mem_handle_t);
298291
return UMF_RESULT_SUCCESS;
299292
}
300293

@@ -304,24 +297,19 @@ static umf_result_t ze_memory_provider_get_ipc_handle(void *provider,
304297
void *providerIpcData) {
305298
ASSERT(ptr != NULL);
306299
ASSERT(providerIpcData != NULL);
300+
(void)size;
307301
ze_result_t ze_result;
308-
ze_ipc_mem_handle_t ze_ipc_handle = {0};
309-
struct ipc_data_t *ipc_data = (struct ipc_data_t *)providerIpcData;
302+
ze_ipc_mem_handle_t *ze_ipc_handle = (ze_ipc_mem_handle_t *)providerIpcData;
310303
struct ze_memory_provider_t *ze_provider =
311304
(struct ze_memory_provider_t *)provider;
312305

313306
ze_result =
314-
g_ze_ops.zeMemGetIpcHandle(ze_provider->context, ptr, &ze_ipc_handle);
307+
g_ze_ops.zeMemGetIpcHandle(ze_provider->context, ptr, ze_ipc_handle);
315308
if (ze_result != ZE_RESULT_SUCCESS) {
316309
LOG_ERR("zeMemGetIpcHandle() failed.");
317310
return UMF_RESULT_ERROR_MEMORY_PROVIDER_SPECIFIC;
318311
}
319312

320-
memcpy(&(ipc_data->ze_ipc_handle), &ze_ipc_handle,
321-
sizeof(ze_ipc_mem_handle_t));
322-
ipc_data->memory_type = ze_provider->memory_type;
323-
ipc_data->size = size;
324-
325313
return UMF_RESULT_SUCCESS;
326314
}
327315

@@ -332,7 +320,7 @@ static umf_result_t ze_memory_provider_put_ipc_handle(void *provider,
332320
ze_result_t ze_result;
333321
struct ze_memory_provider_t *ze_provider =
334322
(struct ze_memory_provider_t *)provider;
335-
struct ipc_data_t *ipc_data = (struct ipc_data_t *)providerIpcData;
323+
ze_ipc_mem_handle_t *ze_ipc_handle = (ze_ipc_mem_handle_t *)providerIpcData;
336324

337325
if (g_ze_ops.zeMemPutIpcHandle == NULL) {
338326
// g_ze_ops.zeMemPutIpcHandle can be NULL because it was introduced
@@ -341,8 +329,8 @@ static umf_result_t ze_memory_provider_put_ipc_handle(void *provider,
341329
return UMF_RESULT_SUCCESS;
342330
}
343331

344-
ze_result = g_ze_ops.zeMemPutIpcHandle(ze_provider->context,
345-
ipc_data->ze_ipc_handle);
332+
ze_result =
333+
g_ze_ops.zeMemPutIpcHandle(ze_provider->context, *ze_ipc_handle);
346334
if (ze_result != ZE_RESULT_SUCCESS) {
347335
LOG_ERR("zeMemPutIpcHandle() failed.");
348336
return UMF_RESULT_ERROR_MEMORY_PROVIDER_SPECIFIC;
@@ -357,13 +345,12 @@ static umf_result_t ze_memory_provider_open_ipc_handle(void *provider,
357345
ASSERT(providerIpcData != NULL);
358346
ASSERT(ptr != NULL);
359347
ze_result_t ze_result;
360-
struct ipc_data_t *ipc_data = (struct ipc_data_t *)providerIpcData;
348+
ze_ipc_mem_handle_t *ze_ipc_handle = (ze_ipc_mem_handle_t *)providerIpcData;
361349
struct ze_memory_provider_t *ze_provider =
362350
(struct ze_memory_provider_t *)provider;
363351

364-
ze_result =
365-
g_ze_ops.zeMemOpenIpcHandle(ze_provider->context, ze_provider->device,
366-
ipc_data->ze_ipc_handle, 0, ptr);
352+
ze_result = g_ze_ops.zeMemOpenIpcHandle(
353+
ze_provider->context, ze_provider->device, *ze_ipc_handle, 0, ptr);
367354
if (ze_result != ZE_RESULT_SUCCESS) {
368355
LOG_ERR("zeMemOpenIpcHandle() failed.");
369356
return UMF_RESULT_ERROR_MEMORY_PROVIDER_SPECIFIC;

0 commit comments

Comments
 (0)