Intel x86 Port 80h POST codes

During the Power-On Self Test (POST), the BIOS sends POST codes to I/O port 0×80. If the POST fails, the last POST code generated is left at port 80h. This code can be used to find out why the error occurred.

Typical Port 80h POST sequence
Port 80h code values typically increase during the boot process. The early codes are for subsystems closer to the processor and the later codes are for peripherals. Generally, the order of initialization is Processor -> Memory -> Buses -> Output/Input Devices -> Boot Devices. The sequence of POST is system-specific.

POST Code      Description
21   –  Initializing a chipset component
22   –  Reading SPD from memory DIMMs
23   –  Detecting presence of memory DIMMs
25   –  Configuring memory
28   –  Testing memory
34   –  Loading recovery capsule
E4   –  Entered DXE phase
12   –  Starting Application processor initialization
13   –  SMM initialization
50   –  Enumerating PCI busses
51   –  Allocating resourced to PCI bus
92   –  Detecting the presence of the keyboard
90   –  Resetting keyboard
94   –  Clearing keyboard input buffer
95   –  Keyboard Self Test
EB   –  Calling Video BIOS
58   –  Resetting USB bus
5A   –  Resetting PATA/SATA bus and all devices
92   –  Detecting the presence of the keyboard
90   –  Resetting keyboard
94   –  Clearing keyboard input buffer
5A   –  Resetting PATA/SATA bus and all devices
28   –  Testing memory
90   –  Resetting keyboard
94   –  Clearing keyboard input buffer
E7   –  Waiting for user input
01   –  INT 19
00   –  Ready to boot

Port 80h POST code ranges
Range   –   Category/Subsystem
00 – 0F  Debug codes: Can be used by any PEIM/driver for debug
10 – 1F  Host Processors
20 – 2F  Memory/Chipset
30 – 3F  Recovery
40 – 4F  Reserved for future use
50 – 5F  I/O Busses: PCI, USB, ISA, ATA, etc.
60 – 6F  Not currently used
70 – 7F  Output Devices: All output consoles
80 – 8F  Reserved for future use (new output console codes)
90 – 9F  Input devices: Keyboard/Mouse
A0 – AF  Reserved for future use (new input console codes)
B0 – BF  Boot Devices: Includes fixed media and removable media.
C0 – CF  Reserved for future use
D0 – DF  Boot device selection
E0 – FF E0 – EE   Miscellaneous codes
F0 – FF: FF  processor exception