Skip to content

Commit f344d90

Browse files
dreamliner787-9midnightveil
authored andcommitted
manual: document must have CPU features for x86
This is useful for users of Microkit to check that their environment support all the required features by the kernel. Rather than getting a nasty error at boot time. Signed-off-by: Bill Nguyen <bill.nguyen@unsw.edu.au>
1 parent 5a719bb commit f344d90

2 files changed

Lines changed: 55 additions & 0 deletions

File tree

.linkcheck-ignore.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
urls:
22
- "https://developer.arm.com/downloads/*"
33
- "https://cdrdv2.intel.com/*"
4+
- "https://cdrdv2-public.intel.com/*"

docs/manual.md

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1729,6 +1729,21 @@ qemu-system-x86_64: Cannot load x86-64 image, give a 32bit one.
17291729
To obtain a bootable ISO image, a Multiboot 2-compliant bootloader must be used. Please refer to your
17301730
bootloader's documentations.
17311731

1732+
### Required CPU features
1733+
1734+
The `x86_64_generic` platform's kernel configuration requires these features from your CPU:
1735+
1736+
| Name | cpuinfo feature flag |
1737+
|----------------------------|----------------------|
1738+
| Page Table Attribute (PAT) | pat |
1739+
| XSAVE | xsave |
1740+
| x87 state | fpu |
1741+
| SSE state | sse |
1742+
| Huge Page | pdpe1gb |
1743+
| fsgsbase | fsgsbase |
1744+
1745+
To check if your CPU supports a specific feature, boot into Linux and run a command like `grep pdpe1gb /proc/cpuinfo`.
1746+
17321747
## x86-64 generic (with VT-x) {#x86_64_generic_vtx}
17331748

17341749
This board supports x86-64 platforms with generic microarchitecture and virtualisation.
@@ -1750,6 +1765,45 @@ vt-x: not supported
17501765
Consider using the non VT-x configuration: [x86-64 generic](#x86_64_generic), or switch to a x86 emulator that
17511766
emulates Intel VT-x, such as [Bochs](https://bochs.sourceforge.io/).
17521767

1768+
### Required CPU features
1769+
1770+
The `x86_64_generic_vtx` kernel configuration requires these features from your CPU in addition to
1771+
`x86_64_generic`'s requirements:
1772+
1773+
| Name | cpuinfo feature flag |
1774+
|----------------------------------|----------------------|
1775+
| Virtual Machine Extensions (VMX) | vmx |
1776+
1777+
In addition to the CPU feature flags above, the kernel also requires these Intel VT-x features from your CPU:
1778+
1779+
| Name | Intel SDM section reference |
1780+
|----------------------------------|-----------------------------|
1781+
| Enable VMX outside SMX operation | Table 7-1, Vol. 2D pg. 7-1 |
1782+
| External-interrupt exiting | A.3.1, Vol. 3D pg. A-3 |
1783+
| NMI Exiting | A.3.1, Vol. 3D pg. A-3 |
1784+
| Virtual NMIs | A.3.1, Vol. 3D pg. A-3 |
1785+
| Use I/O bitmaps | A.3.2, Vol. 3D pg. A-3 |
1786+
| Use MSR bitmaps | A.3.2, Vol. 3D pg. A-3 |
1787+
| Activate secondary controls | A.3.2, Vol. 3D pg. A-3 |
1788+
| Enable Extended Page Table (EPT) | A.3.3, Vol. 3D pg. A-4 |
1789+
| Save debug controls | A.4.1, Vol. 3D pg. A-5 |
1790+
| Host address-space size | A.4.1, Vol. 3D pg. A-5 |
1791+
| Save guest IA32_PAT on exit | A.4.1, Vol. 3D pg. A-5 |
1792+
| Load host IA32_PAT on exit | A.4.1, Vol. 3D pg. A-5 |
1793+
| Save guest IA32_EFER on exit | A.4.1, Vol. 3D pg. A-5 |
1794+
| Load host IA32_EFER on exit | A.4.1, Vol. 3D pg. A-5 |
1795+
| IA-32e mode guest | A.5, Vol. 3D pg. A-5 |
1796+
| Write-back (WB) for EPT map | A.10, Vol. 3D pg. A-8 |
1797+
| 2-Mbyte page map for EPT | A.10, Vol. 3D pg. A-8 |
1798+
1799+
These VT-x features are not exposed via Linux's `/proc/cpuinfo` and can only be checked by reading specific MSRs
1800+
from the CPU. Please see "Appendix A VMX CAPABILITY REPORTING FACILITY" in the
1801+
[Intel SDM June 2026](https://cdrdv2-public.intel.com/922475/325462-092-sdm-vol-1-2abcd-3abcd-4.pdf) for more details.
1802+
If your CPU does not support all of these features then the kernel will not boot.
1803+
1804+
Note that if the "Enable VMX outside SMX operation" bit is not set then the kernel expects that the Lock bit
1805+
(bit 0) of IA32_FEATURE_CONTROL to be unset.
1806+
17531807
## ZCU102 {#zcu102}
17541808

17551809
The ZCU102 can run on a physical board or on an appropriate QEMU based emulator.

0 commit comments

Comments
 (0)