@@ -285,8 +285,11 @@ ur_result_t ContextReleaseHelper(ur_context_handle_t Context) {
285285 if (DestroyZeContext) {
286286 auto ZeResult = ZE_CALL_NOCHECK (zeContextDestroy, (DestroyZeContext));
287287 // Gracefully handle the case that L0 was already unloaded.
288- if (ZeResult && ZeResult != ZE_RESULT_ERROR_UNINITIALIZED)
288+ if (ZeResult && ( ZeResult != ZE_RESULT_ERROR_UNINITIALIZED || ZeResult != ZE_RESULT_ERROR_UNKNOWN) )
289289 return ze2urResult (ZeResult);
290+ if ( ZeResult == ZE_RESULT_ERROR_UNKNOWN) {
291+ ZeResult = ZE_RESULT_ERROR_UNINITIALIZED;
292+ }
290293 }
291294
292295 return Result;
@@ -311,8 +314,11 @@ ur_result_t ur_context_handle_t_::finalize() {
311314 (Event->IsInteropNativeHandle && checkL0LoaderTeardown ())) {
312315 auto ZeResult = ZE_CALL_NOCHECK (zeEventDestroy, (Event->ZeEvent ));
313316 // Gracefully handle the case that L0 was already unloaded.
314- if (ZeResult && ZeResult != ZE_RESULT_ERROR_UNINITIALIZED)
317+ if (ZeResult && ( ZeResult != ZE_RESULT_ERROR_UNINITIALIZED || ZeResult != ZE_RESULT_ERROR_UNKNOWN) )
315318 return ze2urResult (ZeResult);
319+ if ( ZeResult == ZE_RESULT_ERROR_UNKNOWN) {
320+ ZeResult = ZE_RESULT_ERROR_UNINITIALIZED;
321+ }
316322 }
317323 Event->ZeEvent = nullptr ;
318324 delete Event;
@@ -326,8 +332,11 @@ ur_result_t ur_context_handle_t_::finalize() {
326332 for (auto &ZePool : ZePoolCache) {
327333 auto ZeResult = ZE_CALL_NOCHECK (zeEventPoolDestroy, (ZePool));
328334 // Gracefully handle the case that L0 was already unloaded.
329- if (ZeResult && ZeResult != ZE_RESULT_ERROR_UNINITIALIZED)
335+ if (ZeResult && ( ZeResult != ZE_RESULT_ERROR_UNINITIALIZED || ZeResult != ZE_RESULT_ERROR_UNKNOWN) )
330336 return ze2urResult (ZeResult);
337+ if ( ZeResult == ZE_RESULT_ERROR_UNKNOWN) {
338+ ZeResult = ZE_RESULT_ERROR_UNINITIALIZED;
339+ }
331340 }
332341 ZePoolCache.clear ();
333342 }
@@ -336,8 +345,11 @@ ur_result_t ur_context_handle_t_::finalize() {
336345 // Destroy the command list used for initializations
337346 auto ZeResult = ZE_CALL_NOCHECK (zeCommandListDestroy, (ZeCommandListInit));
338347 // Gracefully handle the case that L0 was already unloaded.
339- if (ZeResult && ZeResult != ZE_RESULT_ERROR_UNINITIALIZED)
348+ if (ZeResult && ( ZeResult != ZE_RESULT_ERROR_UNINITIALIZED || ZeResult != ZE_RESULT_ERROR_UNKNOWN) )
340349 return ze2urResult (ZeResult);
350+ if ( ZeResult == ZE_RESULT_ERROR_UNKNOWN) {
351+ ZeResult = ZE_RESULT_ERROR_UNINITIALIZED;
352+ }
341353
342354 std::scoped_lock<ur_mutex> Lock (ZeCommandListCacheMutex);
343355 for (auto &List : ZeComputeCommandListCache) {
@@ -346,8 +358,11 @@ ur_result_t ur_context_handle_t_::finalize() {
346358 if (ZeCommandList) {
347359 auto ZeResult = ZE_CALL_NOCHECK (zeCommandListDestroy, (ZeCommandList));
348360 // Gracefully handle the case that L0 was already unloaded.
349- if (ZeResult && ZeResult != ZE_RESULT_ERROR_UNINITIALIZED)
361+ if (ZeResult && ( ZeResult != ZE_RESULT_ERROR_UNINITIALIZED || ZeResult != ZE_RESULT_ERROR_UNKNOWN) )
350362 return ze2urResult (ZeResult);
363+ if ( ZeResult == ZE_RESULT_ERROR_UNKNOWN) {
364+ ZeResult = ZE_RESULT_ERROR_UNINITIALIZED;
365+ }
351366 }
352367 }
353368 }
@@ -357,8 +372,11 @@ ur_result_t ur_context_handle_t_::finalize() {
357372 if (ZeCommandList) {
358373 auto ZeResult = ZE_CALL_NOCHECK (zeCommandListDestroy, (ZeCommandList));
359374 // Gracefully handle the case that L0 was already unloaded.
360- if (ZeResult && ZeResult != ZE_RESULT_ERROR_UNINITIALIZED)
375+ if (ZeResult && ( ZeResult != ZE_RESULT_ERROR_UNINITIALIZED || ZeResult != ZE_RESULT_ERROR_UNKNOWN) )
361376 return ze2urResult (ZeResult);
377+ if ( ZeResult == ZE_RESULT_ERROR_UNKNOWN) {
378+ ZeResult = ZE_RESULT_ERROR_UNINITIALIZED;
379+ }
362380 }
363381 }
364382 }
0 commit comments