mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-22 20:58:22 +00:00
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:
parent
7aa0addc42
commit
e464ad085e
1 changed files with 8 additions and 17 deletions
|
@ -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--;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue