summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2010-03-19 12:43:18 +0000
committerjhb <jhb@FreeBSD.org>2010-03-19 12:43:18 +0000
commitb77ce56b4b268aa69fb0da457c93610b254ce7d8 (patch)
treedb0349601c0b443d361feb07a3c565e5f62c3d43
parent373381fc28b4eee880064ddab5523adfba099ecf (diff)
downloadFreeBSD-src-b77ce56b4b268aa69fb0da457c93610b254ce7d8.zip
FreeBSD-src-b77ce56b4b268aa69fb0da457c93610b254ce7d8.tar.gz
Use the same policy for rejecting / not-reject ACPI tables with incorrect
checksums as the base acpi(4) driver. This fixes a problem where the MADT parser would reject the MADT table during early boot causing the MP Table to be, but then the acpi(4) driver would attach and use non-SMP interrupt routing. Tested by: Alastair Hogge agh of coolrhaug com MFC after: 1 week
-rw-r--r--sys/amd64/acpica/acpi_machdep.c2
-rw-r--r--sys/i386/acpica/acpi_machdep.c2
2 files changed, 4 insertions, 0 deletions
diff --git a/sys/amd64/acpica/acpi_machdep.c b/sys/amd64/acpica/acpi_machdep.c
index 7e7a01a..8c66696 100644
--- a/sys/amd64/acpica/acpi_machdep.c
+++ b/sys/amd64/acpica/acpi_machdep.c
@@ -627,8 +627,10 @@ map_table(vm_paddr_t pa, int offset, const char *sig)
if (ACPI_FAILURE(AcpiTbChecksum(table, length))) {
if (bootverbose)
printf("ACPI: Failed checksum for table %s\n", sig);
+#if (ACPI_CHECKSUM_ABORT)
table_unmap(table, length);
return (NULL);
+#endif
}
return (table);
}
diff --git a/sys/i386/acpica/acpi_machdep.c b/sys/i386/acpica/acpi_machdep.c
index ae23178..7ea57d9 100644
--- a/sys/i386/acpica/acpi_machdep.c
+++ b/sys/i386/acpica/acpi_machdep.c
@@ -641,8 +641,10 @@ map_table(vm_paddr_t pa, int offset, const char *sig)
if (ACPI_FAILURE(AcpiTbChecksum(table, length))) {
if (bootverbose)
printf("ACPI: Failed checksum for table %s\n", sig);
+#if (ACPI_CHECKSUM_ABORT)
table_unmap(table, length);
return (NULL);
+#endif
}
return (table);
}
OpenPOWER on IntegriCloud