Skip to content

Commit aabb28d

Browse files
committed
docs: add info about ACPI-related kernel configuration
Mention the kernel requirements for booting with ACPI support. Also mention how users can disable the legacy way of booting (via MPTable and command line parameters for VirtIO devices). Signed-off-by: Babis Chalios <[email protected]>
1 parent 118ab7b commit aabb28d

File tree

1 file changed

+39
-1
lines changed

1 file changed

+39
-1
lines changed

docs/kernel-policy.md

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ The configuration items that may be relevant for Firecracker are:
4747
- guest RNG - `CONFIG_RANDOM_TRUST_CPU`
4848
- use CPU RNG instructions (if present) to initialize RNG. Available for >=
4949
5.10
50+
- ACPI support - `CONFIG_ACPI` and `CONFIG_PCI`
5051

5152
There are also guest config options which are dependant on the platform on which
5253
Firecracker is run:
@@ -81,16 +82,53 @@ the minimal configuration for a guest kernel for a successful microVM boot is:
8182
- `CONFIG_VIRTIO_BLK=y`
8283
- x86_64
8384
- `CONFIG_VIRTIO_BLK=y`
84-
- `CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y`
85+
- `CONFIG_ACPI=y`
86+
- `CONFIG_PCI=y`
8587
- `CONFIG_KVM_GUEST=y`.
8688

8789
*Optional*: To enable boot logs set `CONFIG_SERIAL_8250_CONSOLE=y` and
8890
`CONFIG_PRINTK=y` in the guest kernel config.
8991

92+
##### Booting with ACPI (x86_64 only):
93+
94+
Firecracker supports booting kernels with ACPI support. The relevant
95+
configurations for the guest kernel are:
96+
97+
- `CONFIG_ACPI=y`
98+
- `CONFIG_PCI=y`
99+
100+
Please note that Firecracker does not support PCI devices. The `CONFIG_PCI`
101+
option is needed for ACPI initialization inside the guest.
102+
103+
ACPI supersedes the legacy way of booting a microVM, i.e. via MPTable and
104+
command line parameters for VirtIO devices.
105+
106+
We suggest that users disable MPTable and passing VirtIO devices via kernel
107+
command line parameters. These boot mechanisms are now deprecated. Users can
108+
disable these features by disabling the corresponding guest kernel configuration
109+
parameters:
110+
111+
- `CONFIG_X86_MPPARSE=n`
112+
- `CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=n`
113+
114+
During the deprecation period Firecracker will continue to support the legacy
115+
way of booting a microVM. Firecracker will be able to boot kernels with the
116+
following configurations:
117+
118+
- Only ACPI
119+
- Only legacy mechanisms
120+
- Both ACPI and legacy mechanisms
121+
90122
## Caveats
91123

92124
- When using a 4.14 host and a 5.10 guest, we disable the SVE extension in the
93125
guest. This is due to the introduction of the SVE extension in Graviton3,
94126
which causes the default 5.10 guest (with SVE support enabled), to crash if
95127
run with a 4.14 host which does not support SVE.
96128
- [Snapshot compatibility across kernel versions](snapshotting/snapshot-support.md#snapshot-compatibility-across-kernel-versions)
129+
- When booting with kernels that support both ACPI and legacy boot mechanisms
130+
Firecracker passes VirtIO devices to the guest twice, once through ACPI and a
131+
second time via kernel command line parameters. In these cases, the guest
132+
tries to initialize devices twice. The second time, initialization fails and
133+
the guest will emit warning messages in `dmesg`, however the devices will work
134+
correctly.

0 commit comments

Comments
 (0)