mpcheck

Revision 1 as of 2011-08-22 12:31:53

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:

00014 mpcheck         Check MultiProcessor Tables.
00015 mpcheck         ---------------------------------------------------------
00016 mpcheck         Test 1 of 9: Check MP header.
00017 mpcheck         PASSED: Test 1, MP header looks sane.
00018 mpcheck         
00019 mpcheck         Test 2 of 9: Check MP CPU entries.
00020 mpcheck         PASSED: Test 2, All 2 CPU entries look sane.
00021 mpcheck         
00022 mpcheck         Test 3 of 9: Check MP Bus entries.
00023 mpcheck         PASSED: Test 3, All 5 Bus Entries looked sane.
00024 mpcheck         
00025 mpcheck         Test 4 of 9: Check MP IO APIC entries.
00026 mpcheck         PASSED: Test 4, All 1 IO APIC Entries look sane.
00027 mpcheck         
00028 mpcheck         Test 5 of 9: Check MP IO Interrupt entries.
00029 mpcheck         PASSED: Test 5, All 35 IO Interrupt Entries look sane.
00030 mpcheck         
00031 mpcheck         Test 6 of 9: Check MP Local Interrupt entries.
00032 mpcheck         PASSED: Test 6, All 2 Local Interrupt Entries look sane.
00033 mpcheck         
00034 mpcheck         Test 7 of 9: Check MP System Address entries.
00035 mpcheck         PASSED: Test 7, All 7 System Address Space Mapping Entries
00036 mpcheck         looks sane.
00037 mpcheck         
00038 mpcheck         Test 8 of 9: Check MP Bus Hierarchy entries.
00039 mpcheck         PASSED: Test 8, All 1 Bus Hierarchy Entries look sane.
00040 mpcheck         
00041 mpcheck         Test 9 of 9: Check MP Compatible Bus Address Space
00042 mpcheck         entries.
00043 mpcheck         PASSED: Test 9, All 2 Compatible Bus Address Space Entries
00044 mpcheck         look sane.

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.