From: Arvind Sankar <nivedita@alum.mit.edu>
To: Ard Biesheuvel <ardb@kernel.org>
Cc: linux-efi@vger.kernel.org, x86@kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH 1/5] x86/boot/compressed/32: Save the output address instead of recalculating it
Date: Sun, 1 Mar 2020 18:05:33 -0500 [thread overview]
Message-ID: <20200301230537.2247550-2-nivedita@alum.mit.edu> (raw)
In-Reply-To: <20200301230537.2247550-1-nivedita@alum.mit.edu>
In preparation for being able to decompress starting at a different
address than startup_32, save the calculated output address instead of
recalculating it later.
We now keep track of three addresses:
%edx: startup_32 as we were loaded by bootloader
%ebx: new location of compressed kernel
%ebp: start of decompression buffer
Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu>
---
arch/x86/boot/compressed/head_32.S | 25 ++++++++++++-------------
1 file changed, 12 insertions(+), 13 deletions(-)
diff --git a/arch/x86/boot/compressed/head_32.S b/arch/x86/boot/compressed/head_32.S
index 46bbe7ab4adf..894182500606 100644
--- a/arch/x86/boot/compressed/head_32.S
+++ b/arch/x86/boot/compressed/head_32.S
@@ -75,11 +75,11 @@ SYM_FUNC_START(startup_32)
*/
leal (BP_scratch+4)(%esi), %esp
call 1f
-1: popl %ebp
- subl $1b, %ebp
+1: popl %edx
+ subl $1b, %edx
/* Load new GDT */
- leal gdt(%ebp), %eax
+ leal gdt(%edx), %eax
movl %eax, 2(%eax)
lgdt (%eax)
@@ -92,13 +92,14 @@ SYM_FUNC_START(startup_32)
movl %eax, %ss
/*
- * %ebp contains the address we are loaded at by the boot loader and %ebx
+ * %edx contains the address we are loaded at by the boot loader and %ebx
* contains the address where we should move the kernel image temporarily
- * for safe in-place decompression.
+ * for safe in-place decompression. %ebp contains the address that the kernel
+ * will be decompressed to.
*/
#ifdef CONFIG_RELOCATABLE
- movl %ebp, %ebx
+ movl %edx, %ebx
movl BP_kernel_alignment(%esi), %eax
decl %eax
addl %eax, %ebx
@@ -110,10 +111,10 @@ SYM_FUNC_START(startup_32)
movl $LOAD_PHYSICAL_ADDR, %ebx
1:
+ movl %ebx, %ebp // Save the output address for later
/* Target address to relocate to for decompression */
- movl BP_init_size(%esi), %eax
- subl $_end, %eax
- addl %eax, %ebx
+ addl BP_init_size(%esi), %ebx
+ subl $_end, %ebx
/* Set up the stack */
leal boot_stack_end(%ebx), %esp
@@ -127,7 +128,7 @@ SYM_FUNC_START(startup_32)
* where decompression in place becomes safe.
*/
pushl %esi
- leal (_bss-4)(%ebp), %esi
+ leal (_bss-4)(%edx), %esi
leal (_bss-4)(%ebx), %edi
movl $(_bss - startup_32), %ecx
shrl $2, %ecx
@@ -196,9 +197,7 @@ SYM_FUNC_START_LOCAL_NOALIGN(.Lrelocated)
/* push arguments for extract_kernel: */
pushl $z_output_len /* decompressed length, end of relocs */
- leal _end(%ebx), %eax
- subl BP_init_size(%esi), %eax
- pushl %eax /* output address */
+ pushl %ebp /* output address */
pushl $z_input_len /* input_len */
leal input_data(%ebx), %eax
--
2.24.1
next prev parent reply other threads:[~2020-03-01 23:05 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-01 23:05 [PATCH 0/5] Minimize the need to move the kernel in the EFI stub Arvind Sankar
2020-03-01 23:05 ` Arvind Sankar [this message]
2020-03-03 19:10 ` [PATCH 1/5] x86/boot/compressed/32: Save the output address instead of recalculating it Ard Biesheuvel
2020-03-01 23:05 ` [PATCH 2/5] efi/x86: Decompress at start of PE image load address Arvind Sankar
2020-03-03 6:28 ` Mika Penttilä
2020-03-03 13:45 ` Arvind Sankar
2020-03-03 19:08 ` Ard Biesheuvel
2020-03-01 23:05 ` [PATCH 3/5] efi/x86: Add kernel preferred address to PE header Arvind Sankar
2020-03-03 19:11 ` Ard Biesheuvel
2020-03-01 23:05 ` [PATCH 4/5] efi/x86: Remove extra headroom for setup block Arvind Sankar
2020-03-02 4:21 ` Mika Penttilä
2020-03-03 4:14 ` Arvind Sankar
2020-03-01 23:05 ` [PATCH 5/5] efi/x86: Don't relocate the kernel unless necessary Arvind Sankar
2020-03-03 19:15 ` Ard Biesheuvel
2020-03-03 22:12 ` [PATCH v2 0/5] Minimize the need to move the kernel in the EFI stub Arvind Sankar
2020-03-03 22:12 ` [PATCH v2 1/5] x86/boot/compressed/32: Save the output address instead of recalculating it Arvind Sankar
2020-03-03 22:12 ` [PATCH v2 2/5] efi/x86: Decompress at start of PE image load address Arvind Sankar
2020-03-03 22:12 ` [PATCH v2 3/5] efi/x86: Add kernel preferred address to PE header Arvind Sankar
2020-03-03 22:12 ` [PATCH v2 4/5] efi/x86: Remove extra headroom for setup block Arvind Sankar
2020-05-11 17:01 ` Mike Lothian
2020-05-11 18:36 ` Arvind Sankar
2020-05-11 21:13 ` Ard Biesheuvel
2020-05-11 22:53 ` Arvind Sankar
2020-05-11 22:58 ` [PATCH] x86/boot: Mark global variables as static Arvind Sankar
2020-05-11 23:12 ` Mike Lothian
2020-05-12 11:05 ` Ard Biesheuvel
2020-05-22 18:30 ` [tip: efi/urgent] " tip-bot2 for Arvind Sankar
2020-03-03 22:12 ` [PATCH v2 5/5] efi/x86: Don't relocate the kernel unless necessary Arvind Sankar
2020-03-03 23:08 ` Ard Biesheuvel
2020-03-03 23:34 ` Arvind Sankar
2020-03-04 7:30 ` Ard Biesheuvel
2020-03-03 22:26 ` [PATCH v2 0/5] Minimize the need to move the kernel in the EFI stub Ard Biesheuvel
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=20200301230537.2247550-2-nivedita@alum.mit.edu \
--to=nivedita@alum.mit.edu \
--cc=ardb@kernel.org \
--cc=linux-efi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=x86@kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.