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: Set EFI handover offset directly in header asm
Date: Sun, 17 Sep 2023 18:12:51 -0000 [thread overview]
Message-ID: <169497437194.27769.17857741013219317202.tip-bot2@tip-bot2> (raw)
In-Reply-To: <20230915171623.655440-12-ardb@google.com>
The following commit has been merged into the x86/boot branch of tip:
Commit-ID: eac956345f99dda3d68f4ae6cf7b494105e54780
Gitweb: https://git.kernel.org/tip/eac956345f99dda3d68f4ae6cf7b494105e54780
Author: Ard Biesheuvel <ardb@kernel.org>
AuthorDate: Fri, 15 Sep 2023 17:16:26
Committer: Ingo Molnar <mingo@kernel.org>
CommitterDate: Sun, 17 Sep 2023 19:48:42 +02:00
x86/boot: Set EFI handover offset directly in header asm
The offsets of the EFI handover entrypoints are available to the
assembler when constructing the header, so there is no need to set them
from the build tool afterwards.
This change has no impact on the resulting bzImage binary.
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Link: https://lore.kernel.org/r/20230915171623.655440-12-ardb@google.com
---
| 18 +++++++++++++++++-
arch/x86/boot/tools/build.c | 24 ------------------------
2 files changed, 17 insertions(+), 25 deletions(-)
--git a/arch/x86/boot/header.S b/arch/x86/boot/header.S
index 5575d0f..72744ba 100644
--- a/arch/x86/boot/header.S
+++ b/arch/x86/boot/header.S
@@ -524,8 +524,24 @@ pref_address: .quad LOAD_PHYSICAL_ADDR # preferred load addr
# define INIT_SIZE VO_INIT_SIZE
#endif
+ .macro __handover_offset
+#ifndef CONFIG_EFI_HANDOVER_PROTOCOL
+ .long 0
+#elif !defined(CONFIG_X86_64)
+ .long ZO_efi32_stub_entry
+#else
+ /* Yes, this is really how we defined it :( */
+ .long ZO_efi64_stub_entry - 0x200
+#ifdef CONFIG_EFI_MIXED
+ .if ZO_efi32_stub_entry != ZO_efi64_stub_entry - 0x200
+ .error "32-bit and 64-bit EFI entry points do not match"
+ .endif
+#endif
+#endif
+ .endm
+
init_size: .long INIT_SIZE # kernel initialization size
-handover_offset: .long 0 # Filled in by build.c
+handover_offset: __handover_offset
kernel_info_offset: .long ZO_kernel_info
# End of setup header #####################################################
diff --git a/arch/x86/boot/tools/build.c b/arch/x86/boot/tools/build.c
index 14ef13f..0694975 100644
--- a/arch/x86/boot/tools/build.c
+++ b/arch/x86/boot/tools/build.c
@@ -55,8 +55,6 @@ u8 buf[SETUP_SECT_MAX*512];
#define PECOFF_COMPAT_RESERVE 0x0
#endif
-static unsigned long efi32_stub_entry;
-static unsigned long efi64_stub_entry;
static unsigned long efi_pe_entry;
static unsigned long efi32_pe_entry;
static unsigned long _end;
@@ -265,31 +263,12 @@ static void efi_stub_defaults(void)
#endif
}
-static void efi_stub_entry_update(void)
-{
- unsigned long addr = efi32_stub_entry;
-
-#ifdef CONFIG_EFI_HANDOVER_PROTOCOL
-#ifdef CONFIG_X86_64
- /* Yes, this is really how we defined it :( */
- addr = efi64_stub_entry - 0x200;
-#endif
-
-#ifdef CONFIG_EFI_MIXED
- if (efi32_stub_entry != addr)
- die("32-bit and 64-bit EFI entry points do not match\n");
-#endif
-#endif
- put_unaligned_le32(addr, &buf[0x264]);
-}
-
#else
static inline void update_pecoff_setup_and_reloc(unsigned int size) {}
static inline void update_pecoff_text(unsigned int text_start,
unsigned int file_sz) {}
static inline void efi_stub_defaults(void) {}
-static inline void efi_stub_entry_update(void) {}
static inline int reserve_pecoff_reloc_section(int c)
{
@@ -332,8 +311,6 @@ static void parse_zoffset(char *fname)
p = (char *)buf;
while (p && *p) {
- PARSE_ZOFS(p, efi32_stub_entry);
- PARSE_ZOFS(p, efi64_stub_entry);
PARSE_ZOFS(p, efi_pe_entry);
PARSE_ZOFS(p, efi32_pe_entry);
PARSE_ZOFS(p, _end);
@@ -416,7 +393,6 @@ int main(int argc, char ** argv)
update_pecoff_text(setup_sectors * 512, i + (sys_size * 16));
- efi_stub_entry_update();
crc = partial_crc32(buf, i, crc);
if (fwrite(buf, 1, i, dest) != i)
next prev parent reply other threads:[~2023-09-17 18:13 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-15 17:16 [PATCH v3 0/8] x86/boot: Rework PE header generation Ard Biesheuvel
2023-09-15 17:16 ` [PATCH v3 1/8] x86/boot: Grab kernel_info offset from zoffset header directly Ard Biesheuvel
2023-09-17 18:12 ` [tip: x86/boot] " tip-bot2 for Ard Biesheuvel
2023-09-15 17:16 ` [PATCH v3 2/8] x86/boot: Set EFI handover offset directly in header asm Ard Biesheuvel
2023-09-17 18:12 ` tip-bot2 for Ard Biesheuvel [this message]
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
2023-09-15 17:16 ` [PATCH v3 4/8] x86/boot: Derive file size from _edata symbol Ard Biesheuvel
2023-09-17 18:12 ` [tip: x86/boot] " tip-bot2 for Ard Biesheuvel
2023-09-15 17:16 ` [PATCH v3 5/8] x86/boot: Construct PE/COFF .text section from assembler Ard Biesheuvel
2023-09-17 18:12 ` [tip: x86/boot] " tip-bot2 for Ard Biesheuvel
2023-09-15 17:16 ` [PATCH v3 6/8] x86/boot: Drop PE/COFF .reloc section Ard Biesheuvel
2023-09-17 18:12 ` [tip: x86/boot] " tip-bot2 for Ard Biesheuvel
2023-09-15 17:16 ` [PATCH v3 7/8] x86/boot: Split off PE/COFF .data section Ard Biesheuvel
2023-09-17 18:12 ` [tip: x86/boot] " tip-bot2 for Ard Biesheuvel
2023-09-15 17:16 ` [PATCH v3 8/8] x86/boot: Increase section and file alignment to 4k/512 Ard Biesheuvel
2023-09-17 18:12 ` [tip: x86/boot] " tip-bot2 for Ard Biesheuvel
2023-09-17 17:50 ` [PATCH v3 0/8] x86/boot: Rework PE header generation Ingo Molnar
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=169497437194.27769.17857741013219317202.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®