hardware-info.c 789 B

12345678910111213141516171819202122232425262728293031
  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. #include "qemu/osdep.h"
  9. #include "hw/nvram/fw_cfg.h"
  10. #include "hw/uefi/hardware-info.h"
  11. static void *blob;
  12. static uint64_t blobsize;
  13. void hardware_info_register(HARDWARE_INFO_TYPE type, void *info, uint64_t infosize)
  14. {
  15. HARDWARE_INFO_HEADER hdr = {
  16. .type.value = cpu_to_le64(type),
  17. .size = cpu_to_le64(infosize),
  18. };
  19. blob = g_realloc(blob, blobsize + sizeof(hdr) + infosize);
  20. memcpy(blob + blobsize, &hdr, sizeof(hdr));
  21. blobsize += sizeof(hdr);
  22. memcpy(blob + blobsize, info, infosize);
  23. blobsize += infosize;
  24. fw_cfg_modify_file(fw_cfg_find(), "etc/hardware-info", blob, blobsize);
  25. }