mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-29 09:45:52 +00:00
efi: clean up efi command
* Eliminate superfluous enum value EFI_TABLE_END. * Use correct variable type for the memory type. * Check validity of memory type. * Make efi_build_mem_table static. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
This commit is contained in:
parent
0f7878b853
commit
5b94e26f1a
2 changed files with 22 additions and 18 deletions
26
cmd/efi.c
26
cmd/efi.c
|
@ -71,7 +71,19 @@ static int h_cmp_entry(const void *v1, const void *v2)
|
||||||
return diff < 0 ? -1 : diff > 0 ? 1 : 0;
|
return diff < 0 ? -1 : diff > 0 ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void *efi_build_mem_table(struct efi_entry_memmap *map, int size, bool skip_bs)
|
/**
|
||||||
|
* efi_build_mem_table() - make a sorted copy of the memory table
|
||||||
|
*
|
||||||
|
* @map: Pointer to EFI memory map table
|
||||||
|
* @size: Size of table in bytes
|
||||||
|
* @skip_bs: True to skip boot-time memory and merge it with conventional
|
||||||
|
* memory. This will significantly reduce the number of table
|
||||||
|
* entries.
|
||||||
|
* Return: pointer to the new table. It should be freed with free() by the
|
||||||
|
* caller.
|
||||||
|
*/
|
||||||
|
static void *efi_build_mem_table(struct efi_entry_memmap *map, int size,
|
||||||
|
bool skip_bs)
|
||||||
{
|
{
|
||||||
struct efi_mem_desc *desc, *end, *base, *dest, *prev;
|
struct efi_mem_desc *desc, *end, *base, *dest, *prev;
|
||||||
int count;
|
int count;
|
||||||
|
@ -92,7 +104,13 @@ void *efi_build_mem_table(struct efi_entry_memmap *map, int size, bool skip_bs)
|
||||||
end = (struct efi_mem_desc *)((ulong)base + count * map->desc_size);
|
end = (struct efi_mem_desc *)((ulong)base + count * map->desc_size);
|
||||||
for (desc = base; desc < end; desc = efi_get_next_mem_desc(map, desc)) {
|
for (desc = base; desc < end; desc = efi_get_next_mem_desc(map, desc)) {
|
||||||
bool merge = true;
|
bool merge = true;
|
||||||
int type = desc->type;
|
u32 type = desc->type;
|
||||||
|
|
||||||
|
if (type >= EFI_MAX_MEMORY_TYPE) {
|
||||||
|
printf("Memory map contains invalid entry type %u\n",
|
||||||
|
type);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (skip_bs && is_boot_services(desc->type))
|
if (skip_bs && is_boot_services(desc->type))
|
||||||
type = EFI_CONVENTIONAL_MEMORY;
|
type = EFI_CONVENTIONAL_MEMORY;
|
||||||
|
@ -119,7 +137,7 @@ void *efi_build_mem_table(struct efi_entry_memmap *map, int size, bool skip_bs)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Mark the end */
|
/* Mark the end */
|
||||||
dest->type = EFI_TABLE_END;
|
dest->type = EFI_MAX_MEMORY_TYPE;
|
||||||
|
|
||||||
return base;
|
return base;
|
||||||
}
|
}
|
||||||
|
@ -138,7 +156,7 @@ static void efi_print_mem_table(struct efi_entry_memmap *map,
|
||||||
/* Keep track of all the different attributes we have seen */
|
/* Keep track of all the different attributes we have seen */
|
||||||
attr_seen_count = 0;
|
attr_seen_count = 0;
|
||||||
addr = 0;
|
addr = 0;
|
||||||
for (upto = 0; desc->type != EFI_TABLE_END;
|
for (upto = 0; desc->type != EFI_MAX_MEMORY_TYPE;
|
||||||
upto++, desc = efi_get_next_mem_desc(map, desc)) {
|
upto++, desc = efi_get_next_mem_desc(map, desc)) {
|
||||||
const char *name;
|
const char *name;
|
||||||
u64 size;
|
u64 size;
|
||||||
|
|
|
@ -180,7 +180,6 @@ enum efi_mem_type {
|
||||||
EFI_PERSISTENT_MEMORY_TYPE,
|
EFI_PERSISTENT_MEMORY_TYPE,
|
||||||
|
|
||||||
EFI_MAX_MEMORY_TYPE,
|
EFI_MAX_MEMORY_TYPE,
|
||||||
EFI_TABLE_END, /* For efi_build_mem_table() */
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Attribute values */
|
/* Attribute values */
|
||||||
|
@ -481,17 +480,4 @@ void efi_putc(struct efi_priv *priv, const char ch);
|
||||||
*/
|
*/
|
||||||
int efi_info_get(enum efi_entry_t type, void **datap, int *sizep);
|
int efi_info_get(enum efi_entry_t type, void **datap, int *sizep);
|
||||||
|
|
||||||
/**
|
|
||||||
* efi_build_mem_table() - make a sorted copy of the memory table
|
|
||||||
*
|
|
||||||
* @map: Pointer to EFI memory map table
|
|
||||||
* @size: Size of table in bytes
|
|
||||||
* @skip_bs: True to skip boot-time memory and merge it with conventional
|
|
||||||
* memory. This will significantly reduce the number of table
|
|
||||||
* entries.
|
|
||||||
* @return pointer to the new table. It should be freed with free() by the
|
|
||||||
* caller
|
|
||||||
*/
|
|
||||||
void *efi_build_mem_table(struct efi_entry_memmap *map, int size, bool skip_bs);
|
|
||||||
|
|
||||||
#endif /* _LINUX_EFI_H */
|
#endif /* _LINUX_EFI_H */
|
||||||
|
|
Loading…
Add table
Reference in a new issue