]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
EFI stub: add LoaderFirmwareInfo, LoaderFirmwareType if non-existant
authorДамјан Георгиевски <gdamjan@gmail.com>
Mon, 15 Jan 2018 17:01:04 +0000 (18:01 +0100)
committerДамјан Георгиевски <gdamjan@gmail.com>
Mon, 15 Jan 2018 17:05:39 +0000 (18:05 +0100)
bootctl previously:
```
System:
     Firmware: n/a (n/a)
```

after:
```
System:
     Firmware: UEFI 2.50 (Lenovo 0.4704)
```

src/boot/efi/stub.c

index 8066c2b8b588d991514b291fef1d49759f389cca..cf525790864f0e4a64e664070c20fe485a5e2b95 100644 (file)
@@ -111,6 +111,20 @@ EFI_STATUS efi_main(EFI_HANDLE image, EFI_SYSTEM_TABLE *sys_table) {
                 FreePool(loaded_image_path);
         }
 
+        /* if LoaderFirmwareInfo is not set, let's set it */
+        if (efivar_get_raw(&global_guid, L"LoaderFirmwareInfo", &b, &size) != EFI_SUCCESS) {
+                CHAR16 *loader_firmware_info = PoolPrint(L"%s %d.%02d", ST->FirmwareVendor, ST->FirmwareRevision >> 16, ST->FirmwareRevision & 0xffff);
+                efivar_set(L"LoaderFirmwareInfo", loader_firmware_info, FALSE);
+                FreePool(loader_firmware_info);
+        }
+        /* ditto for LoaderFirmwareType */
+        if (efivar_get_raw(&global_guid, L"LoaderFirmwareType", &b, &size) != EFI_SUCCESS) {
+                CHAR16 *loader_firmware_type = PoolPrint(L"UEFI %d.%02d", ST->Hdr.Revision >> 16, ST->Hdr.Revision & 0xffff);
+                efivar_set(L"LoaderFirmwareType", loader_firmware_type, FALSE);
+                FreePool(loader_firmware_type);
+        }
+
+
         if (szs[3] > 0)
                 graphics_splash((UINT8 *)((UINTN)loaded_image->ImageBase + addrs[3]), szs[3], NULL);