summaryrefslogtreecommitdiffstats
path: root/usr.sbin/acpi
diff options
context:
space:
mode:
authornjl <njl@FreeBSD.org>2004-08-18 05:56:07 +0000
committernjl <njl@FreeBSD.org>2004-08-18 05:56:07 +0000
commit0b7bb0599c106a36c7104aa0ec6dd37bc04c2cc4 (patch)
treea324ff2115f585cb22bbf13f25c1ddb6ab9e7915 /usr.sbin/acpi
parent83f40b77118f347c889bb89248e44d7770168482 (diff)
downloadFreeBSD-src-0b7bb0599c106a36c7104aa0ec6dd37bc04c2cc4.zip
FreeBSD-src-0b7bb0599c106a36c7104aa0ec6dd37bc04c2cc4.tar.gz
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
Diffstat (limited to 'usr.sbin/acpi')
-rw-r--r--usr.sbin/acpi/acpidump/acpi.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/usr.sbin/acpi/acpidump/acpi.c b/usr.sbin/acpi/acpidump/acpi.c
index e22aad4..af8ea27 100644
--- a/usr.sbin/acpi/acpidump/acpi.c
+++ b/usr.sbin/acpi/acpidump/acpi.c
@@ -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))
OpenPOWER on IntegriCloud