Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ae8e9060 authored by Roy Franz's avatar Roy Franz Committed by Matt Fleming
Browse files

efi: use efi_get_memory_map() to get final map for x86



Replace the open-coded memory map getting with the
efi_get_memory_map() that is now general enough to use.

Signed-off-by: default avatarRoy Franz <roy.franz@linaro.org>
Signed-off-by: default avatarMatt Fleming <matt.fleming@intel.com>
parent 1c089c65
Loading
Loading
Loading
Loading
+5 −17
Original line number Diff line number Diff line
@@ -527,25 +527,12 @@ static efi_status_t exit_boot(struct boot_params *boot_params,
	u8 nr_entries;
	int i;

	size = sizeof(*mem_map) * 32;

again:
	size += sizeof(*mem_map) * 2;
	_size = size;
	status = efi_low_alloc(sys_table, size, 1, (unsigned long *)&mem_map);
	if (status != EFI_SUCCESS)
		return status;

get_map:
	status = efi_call_phys5(sys_table->boottime->get_memory_map, &size,
				mem_map, &key, &desc_size, &desc_version);
	if (status == EFI_BUFFER_TOO_SMALL) {
		efi_free(sys_table, _size, (unsigned long)mem_map);
		goto again;
	}
	status = efi_get_memory_map(sys_table, &mem_map, &size, &desc_size,
				    &desc_version, &key);

	if (status != EFI_SUCCESS)
		goto free_mem_map;
		return status;

	memcpy(&efi->efi_loader_signature, EFI_LOADER_SIGNATURE, sizeof(__u32));
	efi->efi_systab = (unsigned long)sys_table;
@@ -574,6 +561,7 @@ get_map:
			goto free_mem_map;

		called_exit = true;
		efi_call_phys1(sys_table->boottime->free_pool, mem_map);
		goto get_map;
	}

@@ -642,7 +630,7 @@ get_map:
	return EFI_SUCCESS;

free_mem_map:
	efi_free(sys_table, _size, (unsigned long)mem_map);
	efi_call_phys1(sys_table->boottime->free_pool, mem_map);
	return status;
}