From 5d6ce43cf96310da4a4997e315e76b5734c50c50 Mon Sep 17 00:00:00 2001 From: "Dunajski, Bartosz" Date: Fri, 16 Feb 2024 18:42:09 +0000 Subject: [PATCH] fix: return correct device address for standalone CB Event Related-To: NEO-8145 Signed-off-by: Dunajski, Bartosz --- .../api/driver_experimental/public/zex_event.cpp | 11 ++--------- .../sources/cmdlist/test_in_order_cmdlist.cpp | 11 ++++++++--- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/level_zero/api/driver_experimental/public/zex_event.cpp b/level_zero/api/driver_experimental/public/zex_event.cpp index 1109a7744b..90bc740d57 100644 --- a/level_zero/api/driver_experimental/public/zex_event.cpp +++ b/level_zero/api/driver_experimental/public/zex_event.cpp @@ -19,19 +19,12 @@ ZE_APIEXPORT ze_result_t ZE_APICALL zexEventGetDeviceAddress(ze_event_handle_t event, uint64_t *completionValue, uint64_t *address) { auto eventObj = Event::fromHandle(event); - if (!eventObj || !eventObj->isCounterBased() || !completionValue || !address) { + if (!eventObj || !eventObj->isCounterBased() || !eventObj->getInOrderExecInfo() || !completionValue || !address) { return ZE_RESULT_ERROR_INVALID_ARGUMENT; } *completionValue = eventObj->getInOrderExecSignalValueWithSubmissionCounter(); - - auto deviceAlloc = eventObj->getInOrderExecDataAllocation(); - - if (deviceAlloc) { - *address = deviceAlloc->getGpuAddress() + eventObj->getInOrderAllocationOffset(); - } else { - *address = 0; - } + *address = eventObj->getInOrderExecInfo()->getBaseDeviceAddress() + eventObj->getInOrderAllocationOffset(); return ZE_RESULT_SUCCESS; } diff --git a/level_zero/core/test/unit_tests/sources/cmdlist/test_in_order_cmdlist.cpp b/level_zero/core/test/unit_tests/sources/cmdlist/test_in_order_cmdlist.cpp index d4bcf5c799..7eb5a4b897 100644 --- a/level_zero/core/test/unit_tests/sources/cmdlist/test_in_order_cmdlist.cpp +++ b/level_zero/core/test/unit_tests/sources/cmdlist/test_in_order_cmdlist.cpp @@ -3585,6 +3585,13 @@ HWTEST2_F(InOrderCmdListTests, givenCorrectInputParamsWhenCreatingCbEventThenRet EXPECT_EQ(hostAddress, eventObj->getInOrderExecInfo()->getBaseHostAddress()); EXPECT_EQ(castToUint64(gpuAddress), eventObj->getInOrderExecInfo()->getBaseDeviceAddress()); + uint64_t addresss = 0; + uint64_t value = 0; + zexEventGetDeviceAddress(handle, &value, &addresss); + + EXPECT_EQ(addresss, eventObj->getInOrderExecInfo()->getBaseDeviceAddress()); + EXPECT_EQ(value, counterValue); + zeEventDestroy(handle); } @@ -3700,9 +3707,7 @@ HWTEST2_F(InOrderCmdListTests, givenCounterBasedEventWhenAskingForEventAddressAn auto eventHandle = events[0]->toHandle(); - EXPECT_EQ(ZE_RESULT_SUCCESS, zexEventGetDeviceAddress(eventHandle, &counterValue, &address)); - EXPECT_EQ(0u, counterValue); - EXPECT_EQ(0u, address); + EXPECT_EQ(ZE_RESULT_ERROR_INVALID_ARGUMENT, zexEventGetDeviceAddress(eventHandle, &counterValue, &address)); cmdList->appendLaunchKernel(kernel->toHandle(), groupCount, nullptr, 0, nullptr, launchParams, false); cmdList->appendLaunchKernel(kernel->toHandle(), groupCount, eventHandle, 0, nullptr, launchParams, false);