Source-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: CVS commit: src/usr.sbin/acpitools/acpidump
joerg%britannica.bec.de@localhost said:
> > "acpidump: RSDT entry 6 is corrupt"
> I get the same. Haven't looked at it, but the kernel complains about a
> broken checksum as well during boot here.
Ah yes, I see that in the kernel too. The table in question
is "TCPA", and that leads to the explanation: I have that
disabled in the BIOS setup. If I boot with TPM enabled, there
is no kernel warning, and "acpidump" succeeds.
Obviously, invalidation of the checksum is a common way to disable
optional acpi tables. It doesn't seem to be incompatible with
the ACPI spec at least.
I'd suggest something like the appended patch.
best regards
Matthias
-------------------------------------------------------------------
-------------------------------------------------------------------
Forschungszentrum Juelich GmbH
52425 Juelich
Sitz der Gesellschaft: Juelich
Eingetragen im Handelsregister des Amtsgerichts Dueren Nr. HR B 3498
Vorsitzende des Aufsichtsrats: MinDir'in Baerbel Brumme-Bothe
Geschaeftsfuehrung: Prof. Dr. Achim Bachem (Vorsitzender),
Dr. Ulrich Krafft (stellv. Vorsitzender), Prof. Dr. Harald Bolt,
Dr. Sebastian M. Schmidt
-------------------------------------------------------------------
-------------------------------------------------------------------
#
# old_revision [23ab652144c58ca48019ea7067fd0207ce3edac3]
#
# patch "usr.sbin/acpitools/acpidump/acpi.c"
# from [ce13f6508466c3aca9025dddea4039120f428b07]
# to [344178697aa50de63abdc8a029f6ee215b16dc41]
#
============================================================
--- usr.sbin/acpitools/acpidump/acpi.c ce13f6508466c3aca9025dddea4039120f428b07
+++ usr.sbin/acpitools/acpidump/acpi.c 344178697aa50de63abdc8a029f6ee215b16dc41
@@ -126,7 +126,7 @@ acpi_handle_facp(struct FACPbody *facp)
acpi_print_facp(facp);
dsdp = (struct ACPIsdt *) acpi_map_sdt(facp->dsdt_ptr);
if (acpi_checksum(dsdp, dsdp->len))
- errx(1, "DSDT is corrupt\n");
+ errx(1, "DSDT is corrupt");
acpi_handle_dsdt(dsdp);
aml_dump(dsdp);
}
@@ -355,8 +355,10 @@ acpi_handle_rsdt(struct ACPIsdt *rsdp)
acpi_print_rsdt(rsdp);
for (i = 0; i < entries; i++) {
sdp = (struct ACPIsdt *) acpi_map_sdt(rsdp->body[i]);
- if (acpi_checksum(sdp, sdp->len))
- errx(1, "RSDT entry %d is corrupt\n", i);
+ if (acpi_checksum(sdp, sdp->len)) {
+ warnx("RSDT entry %d: bad checksum", i);
+ continue;
+ }
if (!memcmp(sdp->signature, "FACP", 4)) {
acpi_handle_facp((struct FACPbody *) sdp->body);
} else {
Home |
Main Index |
Thread Index |
Old Index