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);