xref: /aosp_15_r20/external/coreboot/Documentation/soc/intel/fit.md (revision b9411a12aaaa7e1e6a6fb7c5e057f44ee179a49c)
1# Intel Firmware Interface Table
2
3The FIT allows to run code before the actual IA32 reset vector is executed
4by the CPU. The FIT resides in the BIOS region (usually near the reset vector)
5and is pointed to by the FIT pointer residing at `0xFFFFFFC0`.
6
7## Table layout
8The table consists of blocks each 16 bytes in size.
9The first is called *FIT header* the other are called *FIT entry*.
10
11![FIT in x86 memory map][fit]
12
13[fit]: fit.svg
14
15## Fit types
16
17Each entry has a *type* that give the other bits in the entry a different
18meaning. The following types are known:
19
20```{eval-rst}
21+-----------+------------------------------------------------------------------+
22| no.       | Description                                                      |
23+===========+==================================================================+
24|       0x0 | HEADER.                                                          |
25+-----------+------------------------------------------------------------------+
26|       0x1 | MICROCODE.                                                       |
27+-----------+------------------------------------------------------------------+
28|       0x2 | STARTUP_ACM.                                                     |
29+-----------+------------------------------------------------------------------+
30|       0x7 | BIOS_STARTUP_MODULE.                                             |
31+-----------+------------------------------------------------------------------+
32|       0x8 | TPM_POLICY.                                                      |
33+-----------+------------------------------------------------------------------+
34|       0x9 | BIOS_POLICY.                                                     |
35+-----------+------------------------------------------------------------------+
36|       0xa | TXT_POLICY.                                                      |
37+-----------+------------------------------------------------------------------+
38|       0xb | KEY_MANIFEST.                                                    |
39+-----------+------------------------------------------------------------------+
40|       0xc | BOOT_POLICY_MANIFEST.                                            |
41+-----------+------------------------------------------------------------------+
42|      0x10 | CSE_SECURE_BOOT.                                                 |
43+-----------+------------------------------------------------------------------+
44|      0x2d | TXTSX_POLICY.                                                    |
45+-----------+------------------------------------------------------------------+
46|      0x2f | JMP_DEBUG_POLICY.                                                |
47+-----------+------------------------------------------------------------------+
48|      0x7f | SKIP.                                                            |
49+-----------+------------------------------------------------------------------+
50```
51
52## Usage in coreboot
53
54The most common usage of FIT is to use *Type1* to update microcode before
55execution of the IA32 reset vector happens.
56
57## References
58
59```{toctree}
60:maxdepth: 1
61
62Intel TXT LAB handout <https://downloadmirror.intel.com/18931/eng/Intel%20TXT%20LAB%20Handout.pdf>
63FIT BIOS specification <https://www.intel.com/content/dam/www/public/us/en/documents/guides/fit-bios-specification.pdf>
64```
65