Burt and Josh Triplett have created a nifty tool for validating that a BIOS has successfully configured Intel resources such as:
- power management reference code
- select ACPI tables
- SMI frequency and latency
From the website:
The Intel BIOS Implementation Test Suite (BITS) provides a bootable pre-OS environment for testing BIOSes and in particular their initialization of Intel processors, hardware, and technologies. BITS can verify your BIOS against many Intel recommendations. In addition, BITS includes Intel's official reference code as provided to BIOS, which you can use to override your BIOS's hardware initialization with a known-good configuration, and then boot an OS.
The application runs equally well on either UEFI or Legacy BIOS systems. I successfully ran the utility on both Nehalem (Legacy-based) and Sandy Bridge (UEFI-based) systems.
Setting up the tool and launching it took literally four minutes. In the download is an .ISO file. Installing the tool is simply burning the .ISO to either a CD or a USB flash drive. The INSTALL.TXT file gives the Linux dd command to accomplish this. For Windows, I used the excellent Rufus tool on a USB flash drive with the following settings:
I then was able to legacy boot to the USB flash drive which booted directly into the BITS tool. Here’s a sample run (1:58):
The BITS tool can be run via a simple text menu system, or also can be controlled via a Python scripting interface. There is a configure menu that allows the user to modify the assumptions in the tests. The verbosity of the tests can be adjusted. There is a facility for saving the test logs so they can be analyzed off-line. The source code is also available for users to download, modify, and compile themselves.
The download is free. The website has a good screenshot tour of the capabilities; more detailed documentation is found in the download. I think the tool will be a great help to BIOS developers. At a minimum it can be the start of a conversation with your Intel FAE over what constitutes the “correct” MSR settings, microcode, reference code, etc.