From: Ross Lagerwall <ross.lagerwall@citrix.com> To: grub-devel@gnu.org Cc: xen-devel@lists.xenproject.org, Andrew Cooper <andrew.cooper3@citrix.com>, Daniel Kiper <daniel.kiper@oracle.com>, Ross Lagerwall <ross.lagerwall@citrix.com> Subject: [PATCH 5/7] multiboot2: Add support for 64-bit entry addresses Date: Wed, 13 Mar 2024 15:07:46 +0000 [thread overview] Message-ID: <20240313150748.791236-6-ross.lagerwall@citrix.com> (raw) In-Reply-To: <20240313150748.791236-1-ross.lagerwall@citrix.com> Add support for entry addresses that may be either 32 bits or 64 bits in size. This may be necessary if the binary is built with an entry address above 4G. Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com> --- grub-core/loader/multiboot_mbi2.c | 10 ++++++++-- include/multiboot2.h | 6 +++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/grub-core/loader/multiboot_mbi2.c b/grub-core/loader/multiboot_mbi2.c index 3ec96e2f29b9..c268aa614284 100644 --- a/grub-core/loader/multiboot_mbi2.c +++ b/grub-core/loader/multiboot_mbi2.c @@ -205,13 +205,19 @@ grub_multiboot2_load (grub_file_t file, const char *filename) case MULTIBOOT_HEADER_TAG_ENTRY_ADDRESS: entry_specified = 1; - entry = ((struct multiboot_header_tag_entry_address *) tag)->entry_addr; + if ((tag->size - sizeof(struct multiboot_header_tag)) == sizeof(multiboot_uint64_t)) + entry = ((struct multiboot_header_tag_entry_address *) tag)->entry_addr64; + else + entry = ((struct multiboot_header_tag_entry_address *) tag)->entry_addr32; break; case MULTIBOOT_HEADER_TAG_ENTRY_ADDRESS_EFI64: #if defined (GRUB_MACHINE_EFI) && defined (__x86_64__) efi_entry_specified = 1; - efi_entry = ((struct multiboot_header_tag_entry_address *) tag)->entry_addr; + if ((tag->size - sizeof(struct multiboot_header_tag)) == sizeof(multiboot_uint64_t)) + efi_entry = ((struct multiboot_header_tag_entry_address *) tag)->entry_addr64; + else + efi_entry = ((struct multiboot_header_tag_entry_address *) tag)->entry_addr32; #endif break; diff --git a/include/multiboot2.h b/include/multiboot2.h index f4377bf7b394..e4798bfef937 100644 --- a/include/multiboot2.h +++ b/include/multiboot2.h @@ -140,7 +140,11 @@ struct multiboot_header_tag_entry_address multiboot_uint16_t type; multiboot_uint16_t flags; multiboot_uint32_t size; - multiboot_uint32_t entry_addr; + union + { + multiboot_uint32_t entry_addr32; + multiboot_uint64_t entry_addr64; + }; }; struct multiboot_header_tag_console_flags -- 2.43.0
WARNING: multiple messages have this Message-ID (diff)
From: Ross Lagerwall via Grub-devel <grub-devel@gnu.org> To: grub-devel@gnu.org Cc: Ross Lagerwall <ross.lagerwall@citrix.com>, xen-devel@lists.xenproject.org, Andrew Cooper <andrew.cooper3@citrix.com>, Daniel Kiper <daniel.kiper@oracle.com> Subject: [PATCH 5/7] multiboot2: Add support for 64-bit entry addresses Date: Wed, 13 Mar 2024 15:07:46 +0000 [thread overview] Message-ID: <20240313150748.791236-6-ross.lagerwall@citrix.com> (raw) In-Reply-To: <20240313150748.791236-1-ross.lagerwall@citrix.com> Add support for entry addresses that may be either 32 bits or 64 bits in size. This may be necessary if the binary is built with an entry address above 4G. Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com> --- grub-core/loader/multiboot_mbi2.c | 10 ++++++++-- include/multiboot2.h | 6 +++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/grub-core/loader/multiboot_mbi2.c b/grub-core/loader/multiboot_mbi2.c index 3ec96e2f29b9..c268aa614284 100644 --- a/grub-core/loader/multiboot_mbi2.c +++ b/grub-core/loader/multiboot_mbi2.c @@ -205,13 +205,19 @@ grub_multiboot2_load (grub_file_t file, const char *filename) case MULTIBOOT_HEADER_TAG_ENTRY_ADDRESS: entry_specified = 1; - entry = ((struct multiboot_header_tag_entry_address *) tag)->entry_addr; + if ((tag->size - sizeof(struct multiboot_header_tag)) == sizeof(multiboot_uint64_t)) + entry = ((struct multiboot_header_tag_entry_address *) tag)->entry_addr64; + else + entry = ((struct multiboot_header_tag_entry_address *) tag)->entry_addr32; break; case MULTIBOOT_HEADER_TAG_ENTRY_ADDRESS_EFI64: #if defined (GRUB_MACHINE_EFI) && defined (__x86_64__) efi_entry_specified = 1; - efi_entry = ((struct multiboot_header_tag_entry_address *) tag)->entry_addr; + if ((tag->size - sizeof(struct multiboot_header_tag)) == sizeof(multiboot_uint64_t)) + efi_entry = ((struct multiboot_header_tag_entry_address *) tag)->entry_addr64; + else + efi_entry = ((struct multiboot_header_tag_entry_address *) tag)->entry_addr32; #endif break; diff --git a/include/multiboot2.h b/include/multiboot2.h index f4377bf7b394..e4798bfef937 100644 --- a/include/multiboot2.h +++ b/include/multiboot2.h @@ -140,7 +140,11 @@ struct multiboot_header_tag_entry_address multiboot_uint16_t type; multiboot_uint16_t flags; multiboot_uint32_t size; - multiboot_uint32_t entry_addr; + union + { + multiboot_uint32_t entry_addr32; + multiboot_uint64_t entry_addr64; + }; }; struct multiboot_header_tag_console_flags -- 2.43.0 _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel
next prev parent reply other threads:[~2024-03-13 15:06 UTC|newest] Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top 2024-03-13 15:07 [PATCH 0/7] GRUB: Supporting Secure Boot of xen.gz Ross Lagerwall 2024-03-13 15:07 ` Ross Lagerwall via Grub-devel 2024-03-13 15:07 ` [PATCH 1/7] multiboot2: Add load type header and support for the PE binary type Ross Lagerwall 2024-03-13 15:07 ` Ross Lagerwall via Grub-devel 2024-03-14 7:24 ` Jan Beulich 2024-03-14 7:24 ` Jan Beulich via Grub-devel 2024-03-14 8:12 ` Damien Zammit via Grub-devel 2024-03-14 8:12 ` Damien Zammit 2024-03-14 8:49 ` Vladimir 'phcoder' Serbinenko 2024-03-14 9:30 ` Ross Lagerwall 2024-03-14 9:30 ` Ross Lagerwall via Grub-devel 2024-03-14 13:37 ` Jan Beulich 2024-03-14 13:37 ` Jan Beulich via Grub-devel 2024-03-14 14:24 ` Ross Lagerwall 2024-03-14 14:24 ` Ross Lagerwall via Grub-devel 2024-03-14 14:33 ` Jan Beulich 2024-03-14 14:33 ` Jan Beulich via Grub-devel 2024-03-19 12:12 ` Roger Pau Monné 2024-03-19 12:12 ` Roger Pau Monné via Grub-devel 2024-03-19 13:18 ` Roger Pau Monné 2024-03-19 13:18 ` Roger Pau Monné via Grub-devel 2024-03-19 14:46 ` Ross Lagerwall 2024-03-19 14:46 ` Ross Lagerwall via Grub-devel 2024-03-20 11:04 ` Roger Pau Monné 2024-03-20 11:04 ` Roger Pau Monné via Grub-devel 2024-03-13 15:07 ` [PATCH 2/7] multiboot2: Allow 64-bit entry tags Ross Lagerwall 2024-03-13 15:07 ` Ross Lagerwall via Grub-devel 2024-03-19 10:07 ` Roger Pau Monné 2024-03-19 10:07 ` Roger Pau Monné via Grub-devel 2024-03-28 15:05 ` Ross Lagerwall 2024-03-28 15:05 ` Ross Lagerwall via Grub-devel 2024-03-28 15:41 ` Roger Pau Monné 2024-03-28 15:41 ` Roger Pau Monné via Grub-devel 2024-03-13 15:07 ` [PATCH 3/7] multiboot2: Add support for the load type header tag Ross Lagerwall 2024-03-13 15:07 ` Ross Lagerwall via Grub-devel 2024-03-15 7:30 ` Vladimir 'phcoder' Serbinenko 2024-03-15 7:30 ` Vladimir 'phcoder' Serbinenko 2024-03-28 14:58 ` Ross Lagerwall 2024-03-28 14:58 ` Ross Lagerwall via Grub-devel 2024-03-13 15:07 ` [PATCH 4/7] multiboot2: Add PE load support Ross Lagerwall 2024-03-13 15:07 ` Ross Lagerwall via Grub-devel 2024-03-13 15:07 ` Ross Lagerwall [this message] 2024-03-13 15:07 ` [PATCH 5/7] multiboot2: Add support for 64-bit entry addresses Ross Lagerwall via Grub-devel 2024-03-13 15:07 ` [PATCH 6/7] efi: Allow loading multiboot modules without verification Ross Lagerwall 2024-03-13 15:07 ` Ross Lagerwall via Grub-devel 2024-03-13 15:07 ` [PATCH 7/7] verifiers: Verify after decompression Ross Lagerwall 2024-03-13 15:07 ` Ross Lagerwall via Grub-devel 2024-03-15 3:50 ` Michael Chang 2024-03-15 3:50 ` Michael Chang via Grub-devel 2024-03-15 7:25 ` Vladimir 'phcoder' Serbinenko 2024-03-28 14:55 ` Ross Lagerwall via Grub-devel
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=20240313150748.791236-6-ross.lagerwall@citrix.com \ --to=ross.lagerwall@citrix.com \ --cc=andrew.cooper3@citrix.com \ --cc=daniel.kiper@oracle.com \ --cc=grub-devel@gnu.org \ --cc=xen-devel@lists.xenproject.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: linkBe 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.