hw/loongarch: Init efi_boot_memmap table

The efi_system_table adds a efi_boot_memmap configuration table.

Signed-off-by: Song Gao <gaosong@loongson.cn>
Reviewed-by: Bibo Mao <maobibo@loongson.cn>
Message-Id: <20240426091551.2397867-7-gaosong@loongson.cn>
This commit is contained in:
Song Gao 2024-04-26 17:15:40 +08:00
parent 4216baa90d
commit 252b8e6899
4 changed files with 79 additions and 9 deletions

View file

@ -21,6 +21,15 @@ typedef struct {
uint8_t b[16];
} efi_guid_t QEMU_ALIGNED(8);
#define EFI_GUID(a, b, c, d...) (efi_guid_t){ { \
(a) & 0xff, ((a) >> 8) & 0xff, ((a) >> 16) & 0xff, ((a) >> 24) & 0xff, \
(b) & 0xff, ((b) >> 8) & 0xff, \
(c) & 0xff, ((c) >> 8) & 0xff, d } }
#define LINUX_EFI_BOOT_MEMMAP_GUID \
EFI_GUID(0x800f683f, 0xd08b, 0x423a, 0xa2, 0x93, \
0x96, 0x5c, 0x3c, 0x6f, 0xe2, 0xb4)
struct efi_config_table {
efi_guid_t guid;
uint64_t *ptr;
@ -56,6 +65,24 @@ struct efi_system_table {
struct efi_configuration_table *tables;
};
typedef struct {
uint32_t type;
uint32_t pad;
uint64_t phys_addr;
uint64_t virt_addr;
uint64_t num_pages;
uint64_t attribute;
} efi_memory_desc_t;
struct efi_boot_memmap {
uint64_t map_size;
uint64_t desc_size;
uint32_t desc_ver;
uint64_t map_key;
uint64_t buff_size;
efi_memory_desc_t map[32];
};
struct loongarch_boot_info {
uint64_t ram_size;
const char *kernel_filename;

View file

@ -35,6 +35,16 @@
#define COMMAND_LINE_SIZE 512
extern struct memmap_entry *memmap_table;
extern unsigned memmap_entries;
struct memmap_entry {
uint64_t address;
uint64_t length;
uint32_t type;
uint32_t reserved;
};
struct LoongArchMachineState {
/*< private >*/
MachineState parent_obj;