1 /*
2 * SPDX-License-Identifier: GPL-2.0-or-later
3 *
4 * pass hardware information to uefi
5 *
6 * see OvmfPkg/Library/HardwareInfoLib/ in edk2
7 */
8
9 #include "qemu/osdep.h"
10
11 #include "hw/nvram/fw_cfg.h"
12 #include "hw/uefi/hardware-info.h"
13
14 static void *blob;
15 static uint64_t blobsize;
16
hardware_info_register(HARDWARE_INFO_TYPE type,void * info,uint64_t infosize)17 void hardware_info_register(HARDWARE_INFO_TYPE type, void *info, uint64_t infosize)
18 {
19 HARDWARE_INFO_HEADER hdr = {
20 .type.value = cpu_to_le64(type),
21 .size = cpu_to_le64(infosize),
22 };
23
24 blob = g_realloc(blob, blobsize + sizeof(hdr) + infosize);
25 memcpy(blob + blobsize, &hdr, sizeof(hdr));
26 blobsize += sizeof(hdr);
27 memcpy(blob + blobsize, info, infosize);
28 blobsize += infosize;
29
30 fw_cfg_modify_file(fw_cfg_find(), "etc/hardware-info", blob, blobsize);
31 }
32