:: commit 68a2b833abd2c858dcd604e29565aa6831765b47

mintsuki <mintsuki@protonmail.com> — 2022-08-12 21:33

parents: 4373718213

multiboot2: Fix bug where old ACPI tag would not get passed if RSDP rev == 0

diff --git a/common/lib/acpi.c b/common/lib/acpi.c
index 7c564623..301e99dd 100644
--- a/common/lib/acpi.c
+++ b/common/lib/acpi.c
@@ -43,7 +43,7 @@ void *acpi_get_rsdp_v1(void) {
     // revision, return it.
     struct rsdp *rsdp = acpi_get_rsdp();
 
-    if (rsdp != NULL && rsdp->rev == 1)
+    if (rsdp != NULL && rsdp->rev < 2)
         return rsdp;
 
     return NULL;
diff --git a/test/multiboot2.c b/test/multiboot2.c
index fbfef24f..ef522285 100644
--- a/test/multiboot2.c
+++ b/test/multiboot2.c
@@ -45,6 +45,20 @@ void multiboot2_main(uint32_t magic, struct multiboot_info* mb_info_addr) {
                 break;
             }
 
+            case MULTIBOOT_TAG_TYPE_ACPI_OLD: {
+                struct multiboot_tag_old_acpi *old_acpi = (struct multiboot_tag_old_acpi *)tag;
+                e9_printf("\t acpi_old:");
+                e9_printf("\t\t rsdp=%s", old_acpi->rsdp);
+                break;
+            }
+
+            case MULTIBOOT_TAG_TYPE_ACPI_NEW: {
+                struct multiboot_tag_new_acpi *new_acpi = (struct multiboot_tag_new_acpi *)tag;
+                e9_printf("\t acpi_new:");
+                e9_printf("\t\t rsdp=%s", new_acpi->rsdp);
+                break;
+            }
+
             case MULTIBOOT_TAG_TYPE_MODULE: {
                 struct multiboot_tag_module *module = (struct multiboot_tag_module *)tag;
                 e9_printf("\t module:");
tab: 248 wrap: offon