mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-08 10:13:56 -06:00
Add support for etc/hardware-info fw_cfg file
edk2 looks for the etc/hardware-info fw_cfg file to discover hardware which can not easily be found in other ways. Entries consist of a header with hardware type and entry size (HARDWARE_INFO_HEADER), followed by the actual hardware description (which is type specific). The file can have multiple entries. This patch adds the infrastructure to add entries to the file and an entry struct for simple devices (HARDWARE_INFO_SIMPLE_DEVICE) which have an mmio address only. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Message-ID: <20250225163031.1409078-2-kraxel@redhat.com>
This commit is contained in:
parent
661c2e1ab2
commit
8d127aa866
3 changed files with 67 additions and 0 deletions
31
hw/uefi/hardware-info.c
Normal file
31
hw/uefi/hardware-info.c
Normal file
|
@ -0,0 +1,31 @@
|
|||
/*
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*
|
||||
* pass hardware information to uefi
|
||||
*
|
||||
* see OvmfPkg/Library/HardwareInfoLib/ in edk2
|
||||
*/
|
||||
|
||||
#include "qemu/osdep.h"
|
||||
|
||||
#include "hw/nvram/fw_cfg.h"
|
||||
#include "hw/uefi/hardware-info.h"
|
||||
|
||||
static void *blob;
|
||||
static uint64_t blobsize;
|
||||
|
||||
void hardware_info_register(HARDWARE_INFO_TYPE type, void *info, uint64_t infosize)
|
||||
{
|
||||
HARDWARE_INFO_HEADER hdr = {
|
||||
.type.value = cpu_to_le64(type),
|
||||
.size = cpu_to_le64(infosize),
|
||||
};
|
||||
|
||||
blob = g_realloc(blob, blobsize + sizeof(hdr) + infosize);
|
||||
memcpy(blob + blobsize, &hdr, sizeof(hdr));
|
||||
blobsize += sizeof(hdr);
|
||||
memcpy(blob + blobsize, info, infosize);
|
||||
blobsize += infosize;
|
||||
|
||||
fw_cfg_modify_file(fw_cfg_find(), "etc/hardware-info", blob, blobsize);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue