Skip to content

Commit a9aa472

Browse files
SysMan: close igsc context in destructor
igsc context is intialized by the device init call to igsc library. When resources are freed, the context needs to be closed explicitly by sysman to force igsc library to free and release the context within the igsc library. Related-To:LOCI-2695 Signed-off-by: T J Vivek Vilvaraj <[email protected]>
1 parent bb77165 commit a9aa472

File tree

2 files changed

+7
-0
lines changed

2 files changed

+7
-0
lines changed

level_zero/tools/source/sysman/linux/firmware_util/firmware_util_imp.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ const std::string fwImageOpromInit = "igsc_image_oprom_init";
2020
const std::string fwImageOpromType = "igsc_image_oprom_type";
2121
const std::string fwDeviceOpromUpdate = "igsc_device_oprom_update";
2222
const std::string fwDeviceOpromVersion = "igsc_device_oprom_version";
23+
const std::string fwDeviceClose = "igsc_device_close";
2324

2425
pIgscDeviceInitByDevice deviceInitByDevice;
2526
pIgscDeviceGetDeviceInfo deviceGetDeviceInfo;
@@ -32,6 +33,7 @@ pIgscImageOpromInit imageOpromInit;
3233
pIgscImageOpromType imageOpromType;
3334
pIgscDeviceOpromUpdate deviceOpromUpdate;
3435
pIgscDeviceOpromVersion deviceOpromVersion;
36+
pIgscDeviceClose deviceClose;
3537

3638
template <class T>
3739
bool FirmwareUtilImp::getSymbolAddr(const std::string name, T &proc) {
@@ -52,6 +54,7 @@ bool FirmwareUtilImp::loadEntryPoints() {
5254
ok = ok && getSymbolAddr(fwImageOpromType, imageOpromType);
5355
ok = ok && getSymbolAddr(fwDeviceOpromUpdate, deviceOpromUpdate);
5456
ok = ok && getSymbolAddr(fwDeviceOpromVersion, deviceOpromVersion);
57+
ok = ok && getSymbolAddr(fwDeviceClose, deviceClose);
5558
return ok;
5659
}
5760

@@ -177,6 +180,7 @@ FirmwareUtilImp::FirmwareUtilImp(const std::string &pciBDF) {
177180
};
178181

179182
FirmwareUtilImp::~FirmwareUtilImp() {
183+
deviceClose(&fwDeviceHandle);
180184
if (nullptr != libraryHandle) {
181185
delete libraryHandle;
182186
libraryHandle = nullptr;

level_zero/tools/source/sysman/linux/firmware_util/firmware_util_imp.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ typedef int (*pIgscDeviceOpromVersion)(struct igsc_device_handle *handle,
4646
uint32_t opromType,
4747
struct igsc_oprom_version *version);
4848

49+
typedef int (*pIgscDeviceClose)(struct igsc_device_handle *handle);
50+
4951
extern pIgscDeviceInitByDevice deviceInitByDevice;
5052
extern pIgscDeviceGetDeviceInfo deviceGetDeviceInfo;
5153
extern pIgscDeviceFwVersion deviceGetFwVersion;
@@ -57,6 +59,7 @@ extern pIgscImageOpromInit imageOpromInit;
5759
extern pIgscImageOpromType imageOpromType;
5860
extern pIgscDeviceOpromUpdate deviceOpromUpdate;
5961
extern pIgscDeviceOpromVersion deviceOpromVersion;
62+
extern pIgscDeviceClose deviceClose;
6063

6164
class FirmwareUtilImp : public FirmwareUtil, NEO::NonCopyableOrMovableClass {
6265
public:

0 commit comments

Comments
 (0)