mpcheck

Revision 2 as of 2013-02-25 13:03:20

Clear message

Firmware Test Suite - mpcheck test

This test sanity checks any existing Multi Processor tables against the the MultiProcessor Specification. The MultiProcessor Specification describes enhancements to both operating systems and firmware allowing them to work with x86 processors in a multi-processor system.

Typical output from the mpcheck test is as follows:

Check MultiProcessor Tables.
--------------------------------------------------------------------------------
Test 1 of 9: Check MP header.
PASSED: Test 1, MP header looks sane.

Test 2 of 9: Check MP CPU entries.
PASSED: Test 2, All 4 CPU entries look sane.

Test 3 of 9: Check MP Bus entries.
PASSED: Test 3, All 4 Bus Entries looked sane.

Test 4 of 9: Check MP IO APIC entries.
PASSED: Test 4, All 1 IO APIC Entries look sane.

Test 5 of 9: Check MP IO Interrupt entries.
PASSED: Test 5, All 65 IO Interrupt Entries look sane.

Test 6 of 9: Check MP Local Interrupt entries.
PASSED: Test 6, All 2 Local Interrupt Entries look sane.

Test 7 of 9: Check MP System Address entries.
PASSED: Test 7, All 3 System Address Space Mapping Entries looks sane.

Test 8 of 9: Check MP Bus Hierarchy entries.
PASSED: Test 8, All 1 Bus Hierarchy Entries look sane.

Test 9 of 9: Check MP Compatible Bus Address Space entries.
PASSED: Test 9, All 2 Compatible Bus Address Space Entries look sane.

================================================================================
9 passed, 0 failed, 0 warnings, 0 aborted, 0 skipped, 0 info only.
================================================================================

Example:

sudo fwts mpcheck - 

..runs the mpcheck test on your machine and dumps the output to stdout.

Explanation of test results

Certain test results may require a little more explanation. This section will try and give some context to specific test failures.

Error ID

Explanation

MPCPUEntryLAPICId

The first Local APIC ID was not zero.

MPCPUEntryLAPICId

The Local APIC ID of a CPU entry was not the expected value. Local APIC IDs should be enumerated sequentially according to the specification.

MPCPUEntryLAPICVersion

The Local APIC CPU entry did not have the expected version number.

MPCPUEntryBootCPU

A CPU entry that isn't the first one has been flagged as the boot CPU. Only the first CPU should be the boot CPU.

MPCPUEntryUsable

Not CPU entries were flagged as boot CPUs. There must be at least one boot CPU.

MPBusEntryBusType

A MultiProcessor bus entry has an unrecognised bus type.

MPBusEntryLAPICId

A bus entry has a non-zero local APIC ID and hence does not conform to the specification.

MPBusEntryBusId

A bus entry has an invalid bus ID.

MPIOAPICNullAddr

An IO APIC entry has an invalid (NULL) address. It must be defined.

MPIOAPICId

An IO APIC entry as an invalid APIC ID.

MPIOAPICIdSeries

An IO APIC entry has an APIC ID that does not follow the previous IO APIC entry APIC ID.

MPIOAPICEnabled

Non of the IO APIC entries were marked as enabled.

MPIOIRQType

An IO Interrupt entry does not have a type in the range 0x00..0x03.

MPIOAPICId

An IO Interrupt entry has a destination IO APIC ID which refers to an IO APIC that has not been defined.

MPLocalIRQType

A Local Interrupt entry does not have a type in the range 0x00..0x03.

MPLocalIRQDestIRQAPIDId

A Local Interrupt entry has a destination IO APIC ID which refers to an IO APIC that has not been defined.

MPSysAddrSpaceBusId

A System Address Space Mapping entry has a bus ID that is not defined in any of the Bus Entries.

MPSysAddrSpaceType

A System Address Space Mapping entry has an incorrect address type. It should be in the range 0x00..0x03.

MPSysAddrSpaceAddrLength

A System Address Space Mapping entry has a zero sized Address Length.

MPBusHieraracyLength

A Bus Hierarchy entry has an incorrect length.

MPBusHierarchyParents

A Bus Hierarchy entry did not have any parents that connected to a top level Bus entry.

MPCompatBusLength

A Compatible Bus Address Space entry had an invalid length.

MPCompatBusRangeList

A Compatible Bus Address Space entry had an invalid range list. The value should be 0x00 or 0x01.

MPHeaderSig

The MultiProcessor table header signature was incorrect.

MPHeaderRevision

The MultiProcessor table header revision was not 0x01 or 0x04.

MPHeaderLAPICAddrNull

The MultiProcessor table header Local APIC address was NULL.