summaryrefslogtreecommitdiff
path: root/Documentation/soc/intel/fit.md
diff options
context:
space:
mode:
authorPatrick Rudolph <patrick.rudolph@9elements.com>2019-04-15 16:17:59 +0200
committerPatrick Rudolph <siro@das-labor.org>2019-04-30 08:18:57 +0000
commit345d202d662fae57ab7a13432f213cd4109e5e3c (patch)
treef836cd16b6228914a28b69e4a5485ade7fea4ce7 /Documentation/soc/intel/fit.md
parent46c5807d29a1fae542d22c82f6c07955f0296f78 (diff)
downloadcoreboot-345d202d662fae57ab7a13432f213cd4109e5e3c.tar.xz
Documentation: Add FIT
Describe the Firmware Interface Table and reference useful documentation. Change-Id: I00abc1fd13be7b48d56ba8cb65d2542ed07f9017 Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/32325 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
Diffstat (limited to 'Documentation/soc/intel/fit.md')
-rw-r--r--Documentation/soc/intel/fit.md60
1 files changed, 60 insertions, 0 deletions
diff --git a/Documentation/soc/intel/fit.md b/Documentation/soc/intel/fit.md
new file mode 100644
index 0000000000..8b638f0433
--- /dev/null
+++ b/Documentation/soc/intel/fit.md
@@ -0,0 +1,60 @@
+# Intel Firmware Interface Table
+
+The FIT allows to run code before the actual IA32 reset vector is executed
+by the CPU. The FIT resides in the BIOS region (usually near the reset vector)
+and is pointed to by the FIT pointer residing at `0xFFFFFFC0`.
+
+## Table layout
+The table consists of blocks each 16 bytes in size.
+The first is called *FIT header* the other are called *FIT entry*.
+
+![FIT in x86 memory map][fit]
+
+[fit]: fit.svg
+
+## Fit types
+
+Each entry has a *type* that give the other bits in the entry a different
+meaning. The following types are known:
+
+```eval_rst
++-----------+------------------------------------------------------------------+
+| no. | Description |
++===========+==================================================================+
+| 0x0 | HEADER. |
++-----------+------------------------------------------------------------------+
+| 0x1 | MICROCODE. |
++-----------+------------------------------------------------------------------+
+| 0x2 | STARTUP_ACM. |
++-----------+------------------------------------------------------------------+
+| 0x7 | BIOS_STARTUP_MODULE. |
++-----------+------------------------------------------------------------------+
+| 0x8 | TPM_POLICY. |
++-----------+------------------------------------------------------------------+
+| 0x9 | BIOS_POLICY. |
++-----------+------------------------------------------------------------------+
+| 0xa | TXT_POLICY. |
++-----------+------------------------------------------------------------------+
+| 0xb | KEY_MANIFEST. |
++-----------+------------------------------------------------------------------+
+| 0xc | BOOT_POLICY_MANIFEST. |
++-----------+------------------------------------------------------------------+
+| 0x10 | CSE_SECURE_BOOT. |
++-----------+------------------------------------------------------------------+
+| 0x2d | TXTSX_POLICY. |
++-----------+------------------------------------------------------------------+
+| 0x2f | JMP_DEBUG_POLICY. |
++-----------+------------------------------------------------------------------+
+| 0x7f | SKIP. |
++-----------+------------------------------------------------------------------+
+```
+
+## Usage in coreboot
+
+The most common usage of FIT is to use *Type1* to update microcode before
+execution of the IA32 reset vector happens.
+
+## References
+
+* [Intel TXT LAB handout](https://downloadmirror.intel.com/18931/eng/Intel%20TXT%20LAB%20Handout.pdf)
+* [FIT bios specification](https://www.intel.com/content/dam/www/public/us/en/documents/guides/fit-bios-specification.pdf)