From: Michael Olbrich <m.olbrich@pengutronix.de>
To: barebox@lists.infradead.org
Cc: Michael Olbrich <m.olbrich@pengutronix.de>
Subject: [PATCH 03/16] efi: improve malloc pool allocation
Date: Fri, 17 Jul 2015 21:22:36 +0200 [thread overview]
Message-ID: <1437160969-31517-4-git-send-email-m.olbrich@pengutronix.de> (raw)
In-Reply-To: <1437160969-31517-1-git-send-email-m.olbrich@pengutronix.de>
Use allocate_pages() instead of allocate_pool(). With allocate_pages() we
can specify the address. This way, any address passed to the kernel will
never exceed the lower 32 bit.
If possible, try to allocate a larger pool.
Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
---
arch/efi/efi/efi.c | 20 +++++++++++++++++---
1 file changed, 17 insertions(+), 3 deletions(-)
diff --git a/arch/efi/efi/efi.c b/arch/efi/efi/efi.c
index d351775a2868..c05d183c02fa 100644
--- a/arch/efi/efi/efi.c
+++ b/arch/efi/efi/efi.c
@@ -310,7 +310,8 @@ device_initcall(efi_init);
*/
efi_status_t efi_main(efi_handle_t image, efi_system_table_t *sys_table)
{
- void *mem;
+ efi_physical_addr_t mem;
+ size_t memsize;
efi_status_t efiret;
#ifdef DEBUG
@@ -332,8 +333,21 @@ efi_status_t efi_main(efi_handle_t image, efi_system_table_t *sys_table)
fixup_tables();
- BS->allocate_pool(efi_loaded_image->image_data_type, SZ_16M, &mem);
- mem_malloc_init(mem, mem + SZ_16M);
+ mem = 0x3fffffff;
+ for (memsize = SZ_256M; memsize >= SZ_8M; memsize /= 2) {
+ efiret = BS->allocate_pages(EFI_ALLOCATE_MAX_ADDRESS,
+ EFI_LOADER_DATA,
+ memsize/PAGE_SIZE, &mem);
+ if (!EFI_ERROR(efiret))
+ break;
+ if (efiret != EFI_OUT_OF_RESOURCES)
+ panic("failed to allocate malloc pool: %s\n",
+ efi_strerror(efiret));
+ }
+ if (EFI_ERROR(efiret))
+ panic("failed to allocate malloc pool: %s\n",
+ efi_strerror(efiret));
+ mem_malloc_init((void *)mem, (void *)mem + memsize);
efi_clocksource_init();
--
2.1.4
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
next prev parent reply other threads:[~2015-07-17 19:23 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-17 19:22 [PATCHv2 00/16] EFI updates Michael Olbrich
2015-07-17 19:22 ` [PATCH 01/16] xfuncs: add xasprintf() and xvasprintf() Michael Olbrich
2015-07-17 19:22 ` [PATCH 02/16] xfuncs: add wrapper for wchar strdup functions Michael Olbrich
2015-07-17 19:22 ` Michael Olbrich [this message]
2015-07-17 19:22 ` [PATCH 04/16] efi: refactor & improve application loading code Michael Olbrich
2015-07-17 19:22 ` [PATCH 05/16] efi: add support for initrd loading Michael Olbrich
2015-07-17 19:22 ` [PATCH 06/16] efi: add helper to get the GPT partition UUID for a device Michael Olbrich
2015-07-17 19:22 ` [PATCH 07/16] efi: export device_path_from_handle() Michael Olbrich
2015-07-17 19:22 ` [PATCH 08/16] efi: add helper functions to write EFI variables Michael Olbrich
2015-07-17 19:22 ` [PATCH 09/16] efi: write volatile EFI variables used by systemd Michael Olbrich
2015-07-17 19:22 ` [PATCH 10/16] efi: use xasprintf() when appropriate Michael Olbrich
2015-07-17 19:22 ` [PATCH 11/16] efi: use xstrdup_* " Michael Olbrich
2015-07-17 19:22 ` [PATCH 12/16] fs: " Michael Olbrich
2015-07-17 19:22 ` [PATCH 13/16] fs: efivars: " Michael Olbrich
2015-07-17 19:22 ` [PATCH 14/16] fs: efivars: add more error checking Michael Olbrich
2015-07-17 19:22 ` [PATCH 15/16] fs: efivars: read the attributes on the second get_variable() Michael Olbrich
2015-07-17 19:22 ` [PATCH 16/16] efi: use an EFI variable to save the environment Michael Olbrich
2015-07-20 5:26 ` [PATCHv2 00/16] EFI updates Sascha Hauer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1437160969-31517-4-git-send-email-m.olbrich@pengutronix.de \
--to=m.olbrich@pengutronix.de \
--cc=barebox@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox