diff --git a/sycl/plugins/level_zero/pi_level_zero.cpp b/sycl/plugins/level_zero/pi_level_zero.cpp index a04fd1924d945..4178daad46771 100644 --- a/sycl/plugins/level_zero/pi_level_zero.cpp +++ b/sycl/plugins/level_zero/pi_level_zero.cpp @@ -5921,7 +5921,9 @@ pi_result _pi_queue::synchronize() { return PI_SUCCESS; // For in-order queue just wait for the last command. - if (isInOrderQueue()) { + // If event is discarded then it can be in reset state or underlying level + // zero handle can have device scope, so we can't synchronize the last event. + if (isInOrderQueue() && !LastCommandEvent->IsDiscarded) { ZE_CALL(zeHostSynchronize, (LastCommandEvent->ZeEvent)); } else { // Otherwise sync all L0 queues/immediate command-lists.