Public bug reported: This report concerns changes introduced to file linux-3.2/drivers/firmware/dmi_scan.c as a result of backport of patches as described in bug #1117693, specifically: "drivers/firmware/dmi_scan.c: fetch dmi version from SMBIOS if it exists". This modification has been introduced in kernel 3.2.0-39, as of this writing the newest kernel for Ubuntu 12.04 LTS. The new logic attempts to read SMBIOS entry point structure, failing back to DMI entry point structure if SMBIOS structure is not present. However, if SMBIOS structure is present but invalid (as happens on older machines), the new logic fails to properly handle such a case (please see attached patch for details). As a result DMI information is read incorrectly, and ACPI is disabled.
Workarounds: 1. Revert to kernel 3.2.0-38, or: 2. Pass acpi=force as kernel boot parameter. # uname -a Linux time 3.2.0-39-generic-pae #62-Ubuntu SMP Wed Feb 27 22:25:11 UTC 2013 i686 i686 i386 GNU/Linux # lsb_release -rd Description: Ubuntu 12.04.2 LTS Release: 12.04 Additional notes: As benign as this issue may seem, it resulted in a routine kernel update disabling one of my servers. This machine, being past its prime, was relegated to a nightly backup duty. The machine would wake up at 3am every night, perform a backup, then set an alarm for 3:00 next day (using /sys/class/rtc/rtc0/wakealarm) and power off. After a routine update from kernel 3.2.0-38 to 3.2.0-39 the machine ceased to function: it would remain powered but shut down, and would not perform nightly backups. An investigation revealed that the machine reported its SMBIOS structure as being 32 bytes long, while SMBIOS specification requires that value to be 31. Apart from this extra byte the structure was perfectly valid, but this was enough to make validation in dmi_scan.c fail. This resulted in a string of events that disabled the machine: the code assumed that SMBIOS structure was invalid, then proceeded to read the DMI structure, but failed to do so because of the bug described here. Not having the DMI BIOS year, ACPI was disabled, and the wake alarm was not set when requested. As a result the machine did not wake up when it was supposed to, and failed to perform its main function. Patch has been tested on three machines, including the affected one. ** Affects: linux (Ubuntu) Importance: Undecided Status: New ** Tags: acpi dmi kernel smbios ** Patch added: "Patch to dmi_scan.c" https://bugs.launchpad.net/bugs/1161134/+attachment/3601908/+files/dmi_scan.c.diff -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1161134 Title: Regression: Kernel 3.2.0-39 misreads DMI on some machines, disables ACPI To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1161134/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs