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