@@ -47,6 +47,7 @@ The configuration items that may be relevant for Firecracker are:
47
47
- guest RNG - ` CONFIG_RANDOM_TRUST_CPU `
48
48
- use CPU RNG instructions (if present) to initialize RNG. Available for >=
49
49
5.10
50
+ - ACPI support - ` CONFIG_ACPI ` and ` CONFIG_PCI `
50
51
51
52
There are also guest config options which are dependant on the platform on which
52
53
Firecracker is run:
@@ -81,16 +82,53 @@ the minimal configuration for a guest kernel for a successful microVM boot is:
81
82
- ` CONFIG_VIRTIO_BLK=y `
82
83
- x86_64
83
84
- ` CONFIG_VIRTIO_BLK=y `
84
- - ` CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y `
85
+ - ` CONFIG_ACPI=y `
86
+ - ` CONFIG_PCI=y `
85
87
- ` CONFIG_KVM_GUEST=y ` .
86
88
87
89
* Optional* : To enable boot logs set ` CONFIG_SERIAL_8250_CONSOLE=y ` and
88
90
` CONFIG_PRINTK=y ` in the guest kernel config.
89
91
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
+
90
122
## Caveats
91
123
92
124
- When using a 4.14 host and a 5.10 guest, we disable the SVE extension in the
93
125
guest. This is due to the introduction of the SVE extension in Graviton3,
94
126
which causes the default 5.10 guest (with SVE support enabled), to crash if
95
127
run with a 4.14 host which does not support SVE.
96
128
- [ 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