:: commit c8cdc9e05125fadca8ab0740387e8d4b33ad52c8

Mintsuki <mintsuki@protonmail.com> — 2025-03-31 00:32

parents: 87c1d05c87

protos/multiboot2: Panic if EFI64 entry is required, else ignore it

diff --git a/common/protos/multiboot2.c b/common/protos/multiboot2.c
index 5f291878..e74d6ea5 100644
--- a/common/protos/multiboot2.c
+++ b/common/protos/multiboot2.c
@@ -147,17 +147,19 @@ noreturn void multiboot2_load(char *config, char* cmdline) {
                         case MULTIBOOT_TAG_TYPE_MMAP:
                         case MULTIBOOT_TAG_TYPE_SMBIOS:
                         case MULTIBOOT_TAG_TYPE_BASIC_MEMINFO:
+                            break;
                         #if defined (UEFI)
-                            case MULTIBOOT_TAG_TYPE_EFI_MMAP:
-                            #if defined (__i386__)
-                                case MULTIBOOT_TAG_TYPE_EFI32:
-                                case MULTIBOOT_TAG_TYPE_EFI32_IH:
-                            #elif defined (__x86_64__)
-                                case MULTIBOOT_TAG_TYPE_EFI64:
-                                case MULTIBOOT_TAG_TYPE_EFI64_IH:
-                            #endif
-                        #endif
+                        case MULTIBOOT_TAG_TYPE_EFI_MMAP:
+                            break;
+                        case MULTIBOOT_TAG_TYPE_EFI32:
+                        case MULTIBOOT_TAG_TYPE_EFI32_IH:
+                        case MULTIBOOT_TAG_TYPE_EFI64:
+                        case MULTIBOOT_TAG_TYPE_EFI64_IH:
+                            if (is_required) {
+                                panic(true, "multiboot2: EFI entry point tag handling is required but Limine does not support it");
+                            }
                             break;
+                        #endif
                         case MULTIBOOT_TAG_TYPE_FRAMEBUFFER:
                         #if defined (UEFI)
                             is_framebuffer_required = is_required;
@@ -214,9 +216,7 @@ noreturn void multiboot2_load(char *config, char* cmdline) {
                 break;
             }
             case MULTIBOOT_HEADER_TAG_ENTRY_ADDRESS_EFI64: {
-                if (entry_point == 0xffffffff /* no alternative entry */) {
-                    panic(true, "multiboot2: required EFI AMD64 entry tag is unsupported and no alternative entry was found\n");
-                }
+                // Ignore EFI64 entry address tag as we do not support it.
                 break;
             }
 
tab: 248 wrap: offon