When one entry in the RSDT is corrupted, just skip it instead of bailing out.
This gets us the info we need on systems which have proprietary tables that don't match the standard. For instance, an AMI system has a table of type "OEMB" with an invalid checksum. Tested by: Maxim Maximov <mcsi_at_mcsi.pp.ru> MFC after: 1 day
This commit is contained in:
parent
64f3d62cda
commit
5cf6d493ab
@ -670,8 +670,11 @@ acpi_handle_rsdt(struct ACPIsdt *rsdp)
|
||||
}
|
||||
|
||||
sdp = (struct ACPIsdt *)acpi_map_sdt(addr);
|
||||
if (acpi_checksum(sdp, sdp->len))
|
||||
errx(1, "RSDT entry %d is corrupt", i);
|
||||
if (acpi_checksum(sdp, sdp->len)) {
|
||||
warnx("RSDT entry %d (sig %.4s) is corrupt", i,
|
||||
sdp->signature);
|
||||
continue;
|
||||
}
|
||||
if (!memcmp(sdp->signature, "FACP", 4))
|
||||
acpi_handle_fadt(sdp);
|
||||
else if (!memcmp(sdp->signature, "APIC", 4))
|
||||
|
Loading…
x
Reference in New Issue
Block a user