bits-786 released with these changes:

  • Automatically configure and use a serial console if listed in the ACPI Serial Port Console Redirect (SPCR) table.

    This makes the serial console Just Work on many Intel BIOSes, including those used in many emulated Simics systems, avoiding the need to manually add serial configuration to one of the GRUB configuration files. In addition, this makes it relatively easy to use a serial console with BITS in KVM, by supplying a manually constructed SPCR with -acpitable.

  • Workaround a bug in syslinux 5 that prevented it from booting BITS.

    syslinux 5 through at least 5.10-pre2 fails to boot GRUB's lnxboot.img or any other Linux-kernel-like image that has 0 bytes of protected mode code. Work around this by concatenating lnxboot.img and core.img rather than loading the latter as an initrd.

  • Add decode and display for many more ACPI tables and MADT subtables:

    • Decode and display the DMAR, HPET, MADT, MCFG, MSCT, SLIT, SPCR, SRAT, and WDDT.
    • Decode several previously unhandled MADT subtables: I/O APIC, Interrupt Source Override, Non-maskable Interrupt Source (NMI), Local APIC NMI, and Local x2APIC NMI.
    • For several ACPI structures with enable/disable bits, support printing only enabled fields, to provide more relevant output with BIOSes that disable unused structures rather than omitting them.
  • Fix GRUB's handling of the pager environment variable, to always enable the pager when setting pager=1 and disable it otherwise, rather than incrementing and decrementing an internal variable. The existing behavior required two "set pager=0" to turn off after two "set pager=1", and effectively enabled the pager when running an unmatched "set pager=0" (since -1 is non-zero) and disabled it with a subsequent "set pager=1".

  • Work around a bug in the Simics local APIC timer implementation

    In some Simics implementations of the local APIC timer, the current count would not stop at 0 in one-shot mode, but would instead wrap around to 0xFFFFFFFF and keep counting down. Detect and work around that by also stopping when current count > initial count.

    Without the workaround, the timers used during the INIT/SIPI sequence would not detect completion unless they happened to see the point where the timer passed through 0.

  • Update to ACPICA version 20130214.

  • acpi: Handle processors encoded as Device objects rather than Processor objects; required for systems with more than 255 processors.

  • When testing the _PSS, fail more gracefully if it doesn't exist at all

  • Handle systems with up to 384 CPUs (increased from 256).

  • Increase preallocated log file size to 512k