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:
committed by
Axel Dörfler
parent
4d0ad37aba
commit
0ad4a233f6
@@ -26,6 +26,7 @@
|
|||||||
#else
|
#else
|
||||||
# define TRACE(x) ;
|
# define TRACE(x) ;
|
||||||
#endif
|
#endif
|
||||||
|
#define ERROR(x...) dprintf(x)
|
||||||
|
|
||||||
static struct scan_spots_struct acpi_scan_spots[] = {
|
static struct scan_spots_struct acpi_scan_spots[] = {
|
||||||
{ 0x0, 0x400, 0x400 - 0x0 },
|
{ 0x0, 0x400, 0x400 - 0x0 },
|
||||||
@@ -135,18 +136,13 @@ acpi_check_rsdt(acpi_rsdp* rsdp)
|
|||||||
|
|
||||||
if (rsdt != NULL) {
|
if (rsdt != NULL) {
|
||||||
if (acpi_validate_rsdt(rsdt) != B_OK) {
|
if (acpi_validate_rsdt(rsdt) != B_OK) {
|
||||||
TRACE(("acpi: rsdt failed checksum validation\n"));
|
ERROR("acpi: %.4s failed checksum validation\n", rsdt->signature);
|
||||||
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));
|
|
||||||
}
|
}
|
||||||
|
if (usingXsdt)
|
||||||
|
sAcpiXsdt = rsdt;
|
||||||
|
else
|
||||||
|
sAcpiRsdt = rsdt;
|
||||||
|
TRACE(("acpi: found %.4s at %p\n", rsdt->signature, rsdt));
|
||||||
} else
|
} else
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user