bios_ia32: continue on invalid ACPI RSDT/XSDT table checksum

like ACPICA does by default. should help with #16055.

Change-Id: I2379d99ecda93007b0dd316b3c94eb1a36ccd7e5
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2740
Reviewed-by: Axel Dörfler <[email protected]>
This commit is contained in:
Jérôme Duval
2020-05-19 17:08:28 +00:00
committed by Axel Dörfler
parent 4d0ad37aba
commit 0ad4a233f6
+7 -11
View File
@@ -26,6 +26,7 @@
#else
# define TRACE(x) ;
#endif
#define ERROR(x...) dprintf(x)
static struct scan_spots_struct acpi_scan_spots[] = {
{ 0x0, 0x400, 0x400 - 0x0 },
@@ -135,18 +136,13 @@ acpi_check_rsdt(acpi_rsdp* rsdp)
if (rsdt != NULL) {
if (acpi_validate_rsdt(rsdt) != B_OK) {
TRACE(("acpi: rsdt failed checksum validation\n"));
mmu_free(rsdt, length);
return B_ERROR;
} else {
if (usingXsdt)
sAcpiXsdt = rsdt;
else
sAcpiRsdt = rsdt;
TRACE(("acpi: found valid %s at %p\n",
usingXsdt ? ACPI_XSDT_SIGNATURE : ACPI_RSDT_SIGNATURE,
rsdt));
ERROR("acpi: %.4s failed checksum validation\n", rsdt->signature);
}
if (usingXsdt)
sAcpiXsdt = rsdt;
else
sAcpiRsdt = rsdt;
TRACE(("acpi: found %.4s at %p\n", rsdt->signature, rsdt));
} else
return B_ERROR;