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