@@ -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