mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-03 14:55:24 +08:00
l0_feature: Use L0 Loader teardown callback
Related-To: LOCI-4174 - Call zelSetDriverTeardown during L0 Driver teardown to prevent users from calling into destroyed functions and encountering crashes during teardown. Signed-off-by: Neil R Spruit <neil.r.spruit@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
ac7a5376f2
commit
d31b950b9a
38
level_zero/core/source/global_teardown.cpp
Normal file
38
level_zero/core/source/global_teardown.cpp
Normal file
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
* Copyright (C) 2023 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#include "level_zero/core/source/global_teardown.h"
|
||||
|
||||
#include "shared/source/os_interface/os_library.h"
|
||||
|
||||
#include "level_zero/core/source/driver/driver_handle_imp.h"
|
||||
#include "level_zero/sysman/source/sysman_driver_handle_imp.h"
|
||||
|
||||
namespace L0 {
|
||||
|
||||
ze_result_t loaderDriverTeardown(std::string loaderLibraryName) {
|
||||
std::unique_ptr<NEO::OsLibrary> loaderLibrary = std::unique_ptr<NEO::OsLibrary>{NEO::OsLibrary::load(loaderLibraryName.c_str())};
|
||||
if (loaderLibrary) {
|
||||
zelSetDriverTeardown_fn setDriverTeardown = reinterpret_cast<zelSetDriverTeardown_fn>(loaderLibrary->getProcAddress("zelSetDriverTeardown"));
|
||||
if (setDriverTeardown) {
|
||||
return setDriverTeardown();
|
||||
}
|
||||
}
|
||||
return ZE_RESULT_ERROR_DEPENDENCY_UNAVAILABLE;
|
||||
}
|
||||
|
||||
void globalDriverTeardown() {
|
||||
if (GlobalDriver != nullptr) {
|
||||
delete GlobalDriver;
|
||||
GlobalDriver = nullptr;
|
||||
}
|
||||
if (Sysman::GlobalSysmanDriver != nullptr) {
|
||||
delete Sysman::GlobalSysmanDriver;
|
||||
Sysman::GlobalSysmanDriver = nullptr;
|
||||
}
|
||||
}
|
||||
} // namespace L0
|
||||
Reference in New Issue
Block a user