BIOS Tests
|
Last
updated on May 26, 1999
|
MPS Version 1.4 Compliance Test
APM 1.2 Test
Millennium
PnP BIOS
Unreported I/O
MPS Version 1.4 Compliance Test
Type |
Automatic |
Operating system |
Windows 2000 (RC3 or later) |
Log filename |
mpstest.log |
Processing time |
Less than a minute, typically 20-30 seconds |
Status |
Required for systems with an APM compliant BIOS. |
Included in these HCTs: |
8.x and 9.x |
This tool tests the BIOS MPS data structures for compliance with MPS Version 1.4. MPSTEST.EXE will run from the command prompt.
This tool does not test the hardware for compliance with MPS Version 1.4.
Algorithm
- Search a) first kilobyte of extended BIOS data area (whose segment address is found at 40:0Eh), b) last kilobyte of base memory (639k-640k or 511k-512k) c) BIOS segment F000:0000h-F000:FFFFh for multiprocessor floating pointer structure (MPFPS). The signature '_MP_' (4 bytes) can identify the structure.
- If MPFPS is not found, fail the machine and quit.
- Read MPFPS. Get the physical address pointer of Multiprocessor Configuration Table (MPCT).
- Read MPCT. Read extended configuration table if it is present. Log MPFPS, MPCT & extended configuration table.
- Check if the supported specification revision is 1.4. If not, log fail.
- Verify that the checksum of MPFPS is 0. If not, log fail.
- If MP Feature Info. Byte is non-zero, then one of the default configurations is used. Display a warning "Default MP configuration may not necessarily work". Then quit.
- Verify MPCT also supports version 1.4. If not, log fail.
- Verify MPCT checksum is 0. If not, log fail.
- Verify that at least one processor is designated for booting. The CPU FLAGS byte bit 1 in the processor entry field can check this. If not, log fail.
- Verify that local APIC Ids begin with zero. If not, log fail.
- Verify that all APIC (local and I/O) Ids are unique. If not, log fail.
- Verify that I/O Interrupt Assignment entries in MPCT don't have the same source bus ids and identical source bus irqs. If yes, log fail.
- If there are more than 120 interrupt sources in I/O interrupt entries and if the current HAL is halmps.dll (look at the registry to confirm this), then display a warning "Windows NT® does not support more than 120 interrupt sources".
- Verify that all the PCI devices using an IRQ (IntPin register is non-zero) have an I/O Interrupt Assignment entry and their source bus irq correctly reflects their PCI device number and IntPin register. This information is found in appendix D.3 of Multiprocessor Specification, Version 1.4, May 1997.
- If there is a PCI-to-XXX bridge device, then verify that bus hierarchy descriptor entry for XXX bus correctly reflects its parent bus id. If not, log fail.
- If there is no PCI-to-XXX bridge device and if there is more than one I/O bus (say n), then verify that the chipset used is a 'n' root bus chipset. If not, log fail. (We need chipset specs. From different vendors to do this)
APM 1.2 Test
Type |
Interactive |
Operating system |
Windows 95 & 98 |
Log filename |
apmtest.log |
Processing time |
Approximately 10 minutes |
Status |
Required |
Included in these HCTs: |
8.x and 9.x |
These tests verify the system
properly supports the APM 1.2 specification. This test will fail when run in
ACPI mode. This failure is allowed.
Servers are not required to have
APM, but if APM is implemented it must be tested.
- Get Capabilities: Tests that
the system reports the correct capabilities structure.
- CPU Idle: Tests that CPU
polling does not affect system performance or cause erratic behavior.
- Set Power State (Display):
Verifies systems display can be independently power managed. See notes below.
- Get Power Status (Battery):
Verifies the OS can determine battery power status via APM.
- Get Power Status (AC Power):
Verifies the OS can determine AC power status via APM.
- Battery Polling: Verifies the
OS can properly poll the battery.
- Power Status Change Notification:
Verifies APM notifies the OS when a battery to AC or AC to battery power change event
occurs.
- Standby and Suspend: Tests
that the system supports both standby and suspend power states.
- Resume on Ring: Verifies
incoming calls to the system's modem will wake the machine from both standby and
suspend. If the system ships with a modem, resume on ring support is required.
- Disable and Disengage:
Verifies power management functions can be disabled by the OS.
- Resume Timer: Verifies system
supports resume timers for automatic system wake-up.
- Disable Timer Based Requests:
Verifies resume timers can be disabled by the OS.
- Restore Power-On Defaults:
Verifies APM configuration can be reset.
- Set Power State (Off):
Verifies system supports auto-power off when OS is shutdown.
Parameters
None.
Issues
APM test will replace Vpowerd.vxd with a test version of Vpowerd.vxd. If your test system does not work properly with Vpowerd.vxd, you can replace it with the original driver by deleting Vpowerd.vxd, and replacing it with Vpowerd.eak, and renaming it Vpowerd.vxd.
Type |
Interactive |
Operating system |
Windows NT® 4.0, Windows® 2000, Windows 95 & 98 |
Log filename |
millen.log |
Processing time |
Approximately 3 minutes |
Status |
Required |
Parameters |
None |
Included in these HCTs: |
8.x and 9.x |
This test verifies the system
BIOS and RTC can properly handle the transition from the year 1999 to 2000.
The test sets the date to 12/31/99 11:59:00 PM and powers down the system. After one minute, the machine should be
powered back up. As time changes to 12:00 AM with power off, some BIOS and RTC combinations incorrectly change the year
to 1900. Repeating this cycle the test also checks that the BIOS recognizes February 29, 2000 as a valid date and also
checks that the system can properly handle the year 2036.
Type |
Automatic |
Operating system |
Windows 95 & 98 |
Log filename |
b-test.log |
Processing time |
Approximately 30 minutes |
Status |
Required |
Included in these HCTs: |
7.x, 8.x, 9.x |
This test checks the
implementation layer into the Plug and Play BIOS configuration layer.
- Tests the implementation of Plug and
Play BIOS function 0 (get number of Devnodes).
- Tests the implementation of Plug and
Play BIOS function 1 (get Devnode).
- Verifies the ordering of Devnode
information returned by function 1, including Devnode size, ordering of resource
tags, correctly ending dependent resource information, and in general, verifying Windows
98 is correctly able to parse the Devnode information.
- Tests the implementation of Plug and
Play BIOS function 2 (Set Devnode).
- Verifies the BIOS returns the correct
codes for different BIOS settings. For example, a Devnode marked as NOT_STATIC cannot
return SUCCESS for function 2 calls, in which the static bit is set. Conversely, a Devnode
marked as STATIC cannot return NOT_SET_STATIC in those same calls.
- Tests the Docking information
interface for systems which support docking, or that the BIOS returns UNSUPPORTED if the
system does not support docking.
- Verifies the BIOS returns UNSUPPORTED
for the reserved functions.
- Tests that the system correctly
implements NVRAM, or that the BIOS passes it off to ESCD.
- Tests that the system correctly
implements ESCD functions: Get_ESCD_INFO, Read_ESCD and Write_ESCD.
- Verifies the BIOS's header is
correct, and that there are separate entry points for both real mode and protected mode.
Note: Microsoft reserves Device IDs with the
prefix "PnP". This test will continue to be updated with the latest IDs.
If you suspect the test is incorrectly failing a valid Plug and Play ID between kit
releases, see the latest PC 99 Design Guide, and any subsequent Windows Logo Program FAQs
at http://www.microsoft.com/hwdev/PC98.htm
for an up-to-date listing of valid Plug and Play IDs.
Type |
Automatic |
Operating system |
Windows 2000 (RC3 or later) |
Log filenames |
Win9x:iostomp.log, WinNT:istompnt.log |
Processing time |
Approximately 30 minutes |
Status |
Required |
Included in these HCTs: |
8.x and 9.x |
This test verifies any I/O
location that decodes a read or write is actually claimed by some device on the system.
The test expects that if there is NO device at an I/O location, a read on that location
will return 0xFF. This test does not interfere with any I/O locations claimed by device
enumeration. Failures in this test can have many causes:
- I/O Aliases - repeating failures
on a 10 or 12 bit alias indicates a device that is not 16-bit decode.
- Failures near a claimed range
indicate a device using more resources than the Devnode claims, the Devnode must be
changed to claim the entire range. This is common for LPT ports in standard mode.
- High I/O ranges - can be caused
by some of the pins on a chipset not being wired to the board. These resources must be
claimed in a motherboard resources Devnode.