efi_memory: get the efi_mem_list node directly

Use the list_for_each_entry() API to get the efi_mem_list node
directly, instead of making an additional call to list_entry().

Signed-off-by: Sughosh Ganu <sughosh.ganu@linaro.org>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
This commit is contained in:
Sughosh Ganu 2024-07-30 16:41:31 +05:30 committed by Heinrich Schuchardt
parent 7aa0addc42
commit e464ad085e

View file

@ -127,7 +127,7 @@ static uint64_t desc_get_end(struct efi_mem_desc *desc)
*/ */
static void efi_mem_sort(void) static void efi_mem_sort(void)
{ {
struct list_head *lhandle; struct efi_mem_list *lmem;
struct efi_mem_list *prevmem = NULL; struct efi_mem_list *prevmem = NULL;
bool merge_again = true; bool merge_again = true;
@ -136,13 +136,11 @@ static void efi_mem_sort(void)
/* Now merge entries that can be merged */ /* Now merge entries that can be merged */
while (merge_again) { while (merge_again) {
merge_again = false; merge_again = false;
list_for_each(lhandle, &efi_mem) { list_for_each_entry(lmem, &efi_mem, link) {
struct efi_mem_list *lmem;
struct efi_mem_desc *prev; struct efi_mem_desc *prev;
struct efi_mem_desc *cur; struct efi_mem_desc *cur;
uint64_t pages; uint64_t pages;
lmem = list_entry(lhandle, struct efi_mem_list, link);
if (!prevmem) { if (!prevmem) {
prevmem = lmem; prevmem = lmem;
continue; continue;
@ -269,7 +267,7 @@ static efi_status_t efi_add_memory_map_pg(u64 start, u64 pages,
int memory_type, int memory_type,
bool overlap_only_ram) bool overlap_only_ram)
{ {
struct list_head *lhandle; struct efi_mem_list *lmem;
struct efi_mem_list *newlist; struct efi_mem_list *newlist;
bool carve_again; bool carve_again;
uint64_t carved_pages = 0; uint64_t carved_pages = 0;
@ -309,11 +307,9 @@ static efi_status_t efi_add_memory_map_pg(u64 start, u64 pages,
/* Add our new map */ /* Add our new map */
do { do {
carve_again = false; carve_again = false;
list_for_each(lhandle, &efi_mem) { list_for_each_entry(lmem, &efi_mem, link) {
struct efi_mem_list *lmem;
s64 r; s64 r;
lmem = list_entry(lhandle, struct efi_mem_list, link);
r = efi_mem_carve_out(lmem, &newlist->desc, r = efi_mem_carve_out(lmem, &newlist->desc,
overlap_only_ram); overlap_only_ram);
switch (r) { switch (r) {
@ -445,7 +441,7 @@ static efi_status_t efi_check_allocated(u64 addr, bool must_be_allocated)
*/ */
static uint64_t efi_find_free_memory(uint64_t len, uint64_t max_addr) static uint64_t efi_find_free_memory(uint64_t len, uint64_t max_addr)
{ {
struct list_head *lhandle; struct efi_mem_list *lmem;
/* /*
* Prealign input max address, so we simplify our matching * Prealign input max address, so we simplify our matching
@ -453,9 +449,7 @@ static uint64_t efi_find_free_memory(uint64_t len, uint64_t max_addr)
*/ */
max_addr &= ~EFI_PAGE_MASK; max_addr &= ~EFI_PAGE_MASK;
list_for_each(lhandle, &efi_mem) { list_for_each_entry(lmem, &efi_mem, link) {
struct efi_mem_list *lmem = list_entry(lhandle,
struct efi_mem_list, link);
struct efi_mem_desc *desc = &lmem->desc; struct efi_mem_desc *desc = &lmem->desc;
uint64_t desc_len = desc->num_pages << EFI_PAGE_SHIFT; uint64_t desc_len = desc->num_pages << EFI_PAGE_SHIFT;
uint64_t desc_end = desc->physical_start + desc_len; uint64_t desc_end = desc->physical_start + desc_len;
@ -745,7 +739,7 @@ efi_status_t efi_get_memory_map(efi_uintn_t *memory_map_size,
{ {
size_t map_entries; size_t map_entries;
efi_uintn_t map_size = 0; efi_uintn_t map_size = 0;
struct list_head *lhandle; struct efi_mem_list *lmem;
efi_uintn_t provided_map_size; efi_uintn_t provided_map_size;
if (!memory_map_size) if (!memory_map_size)
@ -774,10 +768,7 @@ efi_status_t efi_get_memory_map(efi_uintn_t *memory_map_size,
/* Copy list into array */ /* Copy list into array */
/* Return the list in ascending order */ /* Return the list in ascending order */
memory_map = &memory_map[map_entries - 1]; memory_map = &memory_map[map_entries - 1];
list_for_each(lhandle, &efi_mem) { list_for_each_entry(lmem, &efi_mem, link) {
struct efi_mem_list *lmem;
lmem = list_entry(lhandle, struct efi_mem_list, link);
*memory_map = lmem->desc; *memory_map = lmem->desc;
memory_map--; memory_map--;
} }