From: "tip-bot2 for Ard Biesheuvel" <tip-bot2@linutronix.de>
To: linux-tip-commits@vger.kernel.org
Cc: Ard Biesheuvel <ardb@kernel.org>, Ingo Molnar <mingo@kernel.org>,
x86@kernel.org, linux-kernel@vger.kernel.org
Subject: [tip: x86/boot] x86/boot: Define setup size in linker script
Date: Fri, 15 Sep 2023 09:37:46 -0000 [thread overview]
Message-ID: <169477066609.27769.6739184359715822628.tip-bot2@tip-bot2> (raw)
In-Reply-To: <20230912090051.4014114-27-ardb@google.com>
The following commit has been merged into the x86/boot branch of tip:
Commit-ID: 988b52b207a9fe74c3699bda8c2256714926b94b
Gitweb: https://git.kernel.org/tip/988b52b207a9fe74c3699bda8c2256714926b94b
Author: Ard Biesheuvel <ardb@kernel.org>
AuthorDate: Tue, 12 Sep 2023 09:01:01
Committer: Ingo Molnar <mingo@kernel.org>
CommitterDate: Fri, 15 Sep 2023 11:18:42 +02:00
x86/boot: Define setup size in linker script
The setup block contains the real mode startup code that is used when
booting from a legacy BIOS, along with the boot_params/setup_data that
is used by legacy x86 bootloaders to pass the command line and initial
ramdisk parameters, among other things.
The setup block also contains the PE/COFF header of the entire combined
image, which includes the compressed kernel image, the decompressor and
the EFI stub.
This PE header describes the layout of the executable image in memory,
and currently, the fact that the setup block precedes it makes it rather
fiddly to get the right values into the right place in the final image.
Let's make things a bit easier by defining the setup_size in the linker
script so it can be referenced from the asm code directly, rather than
having to rely on the build tool to calculate it. For the time being,
add 64 bytes of fixed padding for the .reloc and .compat sections - this
will be removed in a subsequent patch after the PE/COFF header has been
reorganized.
This change has no impact on the resulting bzImage binary when
configured with CONFIG_EFI_MIXED=y.
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Link: https://lore.kernel.org/r/20230912090051.4014114-27-ardb@google.com
---
| 2 +-
arch/x86/boot/setup.ld | 4 ++++
arch/x86/boot/tools/build.c | 6 ------
3 files changed, 5 insertions(+), 7 deletions(-)
--git a/arch/x86/boot/header.S b/arch/x86/boot/header.S
index 6059f87..36011b2 100644
--- a/arch/x86/boot/header.S
+++ b/arch/x86/boot/header.S
@@ -231,7 +231,7 @@ sentinel: .byte 0xff, 0xff /* Used to detect broken loaders */
.globl hdr
hdr:
-setup_sects: .byte 0 /* Filled in by build.c */
+ .byte setup_sects - 1
root_flags: .word ROOT_RDONLY
syssize: .long 0 /* Filled in by build.c */
ram_size: .word 0 /* Obsolete */
diff --git a/arch/x86/boot/setup.ld b/arch/x86/boot/setup.ld
index b11c45b..f125f17 100644
--- a/arch/x86/boot/setup.ld
+++ b/arch/x86/boot/setup.ld
@@ -39,6 +39,10 @@ SECTIONS
.signature : {
setup_sig = .;
LONG(0x5a5aaa55)
+
+ /* Reserve some extra space for the reloc and compat sections */
+ setup_size = ABSOLUTE(ALIGN(. + 64, 512));
+ setup_sects = ABSOLUTE(setup_size / 512);
}
diff --git a/arch/x86/boot/tools/build.c b/arch/x86/boot/tools/build.c
index 10b0207..bcbae88 100644
--- a/arch/x86/boot/tools/build.c
+++ b/arch/x86/boot/tools/build.c
@@ -48,12 +48,7 @@ typedef unsigned int u32;
u8 buf[SETUP_SECT_MAX*512];
#define PECOFF_RELOC_RESERVE 0x20
-
-#ifdef CONFIG_EFI_MIXED
#define PECOFF_COMPAT_RESERVE 0x20
-#else
-#define PECOFF_COMPAT_RESERVE 0x0
-#endif
static unsigned long efi32_stub_entry;
static unsigned long efi64_stub_entry;
@@ -413,7 +408,6 @@ int main(int argc, char ** argv)
#endif
/* Patch the setup code with the appropriate size parameters */
- buf[0x1f1] = setup_sectors-1;
put_unaligned_le32(sys_size, &buf[0x1f4]);
update_pecoff_text(setup_sectors * 512, i + (sys_size * 16));
next prev parent reply other threads:[~2023-09-15 9:38 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-12 9:00 [PATCH v2 00/15] x86/boot: Rework PE header generation Ard Biesheuvel
2023-09-12 9:00 ` [PATCH v2 01/15] x86/efi: Drop EFI stub .bss from .data section Ard Biesheuvel
2023-09-15 9:37 ` [tip: x86/boot] " tip-bot2 for Ard Biesheuvel
2023-09-12 9:00 ` [PATCH v2 02/15] x86/efi: Disregard setup header of loaded image Ard Biesheuvel
2023-09-15 9:37 ` [tip: x86/boot] " tip-bot2 for Ard Biesheuvel
2023-09-12 9:00 ` [PATCH v2 03/15] x86/efi: Drop alignment flags from PE section headers Ard Biesheuvel
2023-09-15 9:37 ` [tip: x86/boot] " tip-bot2 for Ard Biesheuvel
2023-09-12 9:00 ` [PATCH v2 04/15] x86/boot: Remove the 'bugger off' message Ard Biesheuvel
2023-09-15 9:37 ` [tip: x86/boot] " tip-bot2 for Ard Biesheuvel
2023-09-12 9:00 ` [PATCH v2 05/15] x86/boot: Omit compression buffer from PE/COFF image memory footprint Ard Biesheuvel
2023-09-15 9:37 ` [tip: x86/boot] " tip-bot2 for Ard Biesheuvel
2023-09-12 9:00 ` [PATCH v2 06/15] x86/boot: Drop redundant code setting the root device Ard Biesheuvel
2023-09-15 9:37 ` [tip: x86/boot] " tip-bot2 for Ard Biesheuvel
2023-09-12 9:00 ` [PATCH v2 07/15] x86/boot: Grab kernel_info offset from zoffset header directly Ard Biesheuvel
2023-09-12 9:00 ` [PATCH v2 08/15] x86/boot: Drop references to startup_64 Ard Biesheuvel
2023-09-15 9:15 ` Ingo Molnar
2023-09-15 13:48 ` Ard Biesheuvel
2023-09-15 15:40 ` Ingo Molnar
2023-09-15 15:45 ` Ingo Molnar
2023-09-15 15:48 ` Ard Biesheuvel
2023-09-15 9:37 ` [tip: x86/boot] " tip-bot2 for Ard Biesheuvel
2023-09-12 9:01 ` [PATCH v2 09/15] x86/boot: Set EFI handover offset directly in header asm Ard Biesheuvel
2023-09-12 9:01 ` [PATCH v2 10/15] x86/boot: Define setup size in linker script Ard Biesheuvel
2023-09-15 9:37 ` tip-bot2 for Ard Biesheuvel [this message]
2023-09-12 9:01 ` [PATCH v2 11/15] x86/boot: Derive file size from _edata symbol Ard Biesheuvel
2023-09-12 9:01 ` [PATCH v2 12/15] x86/boot: Construct PE/COFF .text section from assembler Ard Biesheuvel
2023-09-12 9:01 ` [PATCH v2 13/15] x86/boot: Drop PE/COFF .reloc section Ard Biesheuvel
2023-09-12 9:01 ` [PATCH v2 14/15] x86/boot: Split off PE/COFF .data section Ard Biesheuvel
2023-09-12 9:01 ` [PATCH v2 15/15] x86/boot: Increase section and file alignment to 4k/512 Ard Biesheuvel
2023-09-15 9:22 ` [PATCH v2 00/15] x86/boot: Rework PE header generation Ingo Molnar
2023-09-15 11:30 ` Ingo Molnar
2023-09-15 13:21 ` Ard Biesheuvel
2023-09-15 13:28 ` Ard Biesheuvel
2023-09-16 9:10 ` Ingo Molnar
2023-09-16 19:14 ` Ard Biesheuvel
2023-09-17 17:50 ` Ingo Molnar
2023-10-03 2:02 ` Jan Hendrik Farr
2023-10-23 11:22 ` Ard Biesheuvel
2023-10-23 17:35 ` Jan Hendrik Farr
2023-10-24 8:21 ` Dave Young
2023-10-24 8:31 ` Dave Young
2023-09-15 17:16 [PATCH v3 3/8] x86/boot: Define setup size in linker script Ard Biesheuvel
2023-09-17 18:12 ` [tip: x86/boot] " tip-bot2 for 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=169477066609.27769.6739184359715822628.tip-bot2@tip-bot2 \
--to=tip-bot2@linutronix.de \
--cc=ardb@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=mingo@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®