Skip to content

Commit fab4416

Browse files
committed
Update: Adding tests for flashing GFX, OptionROM firmwares
Related-To: VLCLJ-2532 Signed-off-by: Alle, Kalyan <[email protected]>
1 parent b12e62f commit fab4416

File tree

1 file changed

+133
-0
lines changed

1 file changed

+133
-0
lines changed

conformance_tests/sysman/test_sysman_firmware/src/test_sysman_firmware.cpp

Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,4 +303,137 @@ LZT_TEST_F(
303303
}
304304
}
305305

306+
LZT_TEST_F(
307+
FIRMWARE_TEST,
308+
GivenValidFirmwareHandleWhenFlashingGfxFirmwareThenExpectFirmwareFlashingSuccess) {
309+
auto fwDirEnv = getenv("ZE_LZT_FIRMWARE_DIRECTORY");
310+
if (nullptr == fwDirEnv) {
311+
LOG_INFO << "Skipping test as ZE_LZT_FIRMWARE_DIRECTORY not set";
312+
GTEST_SKIP();
313+
}
314+
std::vector<char> testFwImage;
315+
std::string fwDir(fwDirEnv);
316+
317+
for (auto device : devices) {
318+
uint32_t count = 0;
319+
auto firmware_handles = lzt::get_firmware_handles(device, count);
320+
if (count == 0) {
321+
FAIL() << "No handles found: "
322+
<< _ze_result_t(ZE_RESULT_ERROR_UNSUPPORTED_FEATURE);
323+
}
324+
325+
for (auto firmware_handle : firmware_handles) {
326+
ASSERT_NE(nullptr, firmware_handle);
327+
auto propFw = lzt::get_firmware_properties(firmware_handle);
328+
329+
if (propFw.canControl == true &&
330+
std::string(reinterpret_cast<char *>(propFw.name)) == "GFX") {
331+
std::string fwName(reinterpret_cast<char *>(propFw.name));
332+
std::string fwToLoad = fwDir + "/" + fwName + ".bin";
333+
LOG_INFO << "Firmware Name: " << fwName;
334+
LOG_INFO << "Firmware Path: " << fwToLoad;
335+
std::ifstream inFileStream(fwToLoad, std::ios::binary | std::ios::ate);
336+
if (!inFileStream.is_open()) {
337+
LOG_INFO << "Skipping test as firmware image not found";
338+
GTEST_SKIP();
339+
}
340+
testFwImage.resize(inFileStream.tellg());
341+
inFileStream.seekg(0, inFileStream.beg);
342+
inFileStream.read(testFwImage.data(), testFwImage.size());
343+
lzt::flash_firmware(firmware_handle,
344+
static_cast<void *>(testFwImage.data()),
345+
testFwImage.size());
346+
}
347+
}
348+
}
349+
}
350+
351+
LZT_TEST_F(
352+
FIRMWARE_TEST,
353+
GivenValidFirmwareHandleWhenFlashingOptionRomDataThenExpectFirmwareFlashingSuccess) {
354+
auto fwDirEnv = getenv("ZE_LZT_FIRMWARE_DIRECTORY");
355+
if (nullptr == fwDirEnv) {
356+
LOG_INFO << "Skipping test as ZE_LZT_FIRMWARE_DIRECTORY not set";
357+
GTEST_SKIP();
358+
}
359+
std::vector<char> testFwImage;
360+
std::string fwDir(fwDirEnv);
361+
362+
for (auto device : devices) {
363+
uint32_t count = 0;
364+
auto firmware_handles = lzt::get_firmware_handles(device, count);
365+
if (count == 0) {
366+
FAIL() << "No handles found: "
367+
<< _ze_result_t(ZE_RESULT_ERROR_UNSUPPORTED_FEATURE);
368+
}
369+
370+
for (auto firmware_handle : firmware_handles) {
371+
ASSERT_NE(nullptr, firmware_handle);
372+
auto propFw = lzt::get_firmware_properties(firmware_handle);
373+
if (propFw.canControl == true &&
374+
std::string(reinterpret_cast<char *>(propFw.name)) == "OptionROM") {
375+
std::string fwName(reinterpret_cast<char *>(propFw.name));
376+
std::string fwToLoad = fwDir + "/" + fwName + ".bin";
377+
LOG_INFO << "Firmware Name: " << fwName;
378+
LOG_INFO << "Firmware Path: " << fwToLoad;
379+
std::ifstream inFileStream(fwToLoad, std::ios::binary | std::ios::ate);
380+
if (!inFileStream.is_open()) {
381+
LOG_INFO << "Skipping test as firmware image not found";
382+
GTEST_SKIP();
383+
}
384+
testFwImage.resize(inFileStream.tellg());
385+
inFileStream.seekg(0, inFileStream.beg);
386+
inFileStream.read(testFwImage.data(), testFwImage.size());
387+
lzt::flash_firmware(firmware_handle,
388+
static_cast<void *>(testFwImage.data()),
389+
testFwImage.size());
390+
}
391+
}
392+
}
393+
}
394+
395+
LZT_TEST_F(
396+
FIRMWARE_TEST,
397+
GivenValidFirmwareHandleWhenFlashingOptionRomCodeThenExpectFirmwareFlashingSuccess) {
398+
auto fwDirEnv = getenv("ZE_LZT_FIRMWARE_DIRECTORY");
399+
if (nullptr == fwDirEnv) {
400+
LOG_INFO << "Skipping test as ZE_LZT_FIRMWARE_DIRECTORY not set";
401+
GTEST_SKIP();
402+
}
403+
std::vector<char> testFwImage;
404+
std::string fwDir(fwDirEnv);
405+
406+
for (auto device : devices) {
407+
uint32_t count = 0;
408+
auto firmware_handles = lzt::get_firmware_handles(device, count);
409+
if (count == 0) {
410+
FAIL() << "No handles found: "
411+
<< _ze_result_t(ZE_RESULT_ERROR_UNSUPPORTED_FEATURE);
412+
}
413+
for (auto firmware_handle : firmware_handles) {
414+
ASSERT_NE(nullptr, firmware_handle);
415+
auto propFw = lzt::get_firmware_properties(firmware_handle);
416+
if (propFw.canControl == true &&
417+
std::string(reinterpret_cast<char *>(propFw.name)) == "OptionROM") {
418+
std::string fwName(reinterpret_cast<char *>(propFw.name));
419+
std::string fwToLoad = fwDir + "/" + fwName + ".bin";
420+
LOG_INFO << "Firmware Name: " << fwName;
421+
LOG_INFO << "Firmware Path: " << fwToLoad;
422+
std::ifstream inFileStream(fwToLoad, std::ios::binary | std::ios::ate);
423+
if (!inFileStream.is_open()) {
424+
LOG_INFO << "Skipping test as firmware image not found";
425+
GTEST_SKIP();
426+
}
427+
testFwImage.resize(inFileStream.tellg());
428+
inFileStream.seekg(0, inFileStream.beg);
429+
inFileStream.read(testFwImage.data(), testFwImage.size());
430+
lzt::flash_firmware(firmware_handle,
431+
static_cast<void *>(testFwImage.data()),
432+
testFwImage.size());
433+
track_firmware_flash(firmware_handle);
434+
}
435+
}
436+
}
437+
}
438+
306439
} // namespace

0 commit comments

Comments
 (0)