Releases: firecracker-microvm/firecracker
Releases · firecracker-microvm/firecracker
Firecracker v1.14.0
Added
- #5463: Added support for
virtio-pmemdevices. See documentation for more information. - #5534: Added support for memory hot-plugging through the
virtio-memdevice. See documentation for more information. - #5491: Added support for
virtio-balloonfree page reporting and hinting. Free page reporting is a developer preview not for production feature. See documentation for more information.
Changed
- #4028: Firecracker now creates the log and metrics files if they do not exist, simplifying the launch of Firecracker by removing a manual step.
- #5516: Balloon stats now supports guest kernel >= 6.12, adding metrics on guest OOM kills, memory allocation stalls, and memory scan/reclaim info.
- #5526: Specify IA32_MTRRdefType MSR on VM boot to allow it to set page attributes for memory regions.
Removed
- #5439: Removed the
rx_partial_writes,tx_partial_reads,sync_response_fails,sync_vmm_send_timeout_count,deprecated_cmd_line_api_calls,log_failsanddevice_eventsmetrics, as they were never incremented.
Fixed
- #5418: Fixed typo in Swagger definition of
MmdsConfig, where the propertyimds_compatwas spelled asimds_comat. This caused auto-generated clients to create bad requests. - #5447: Fixed Intel AMX enabling for kernels that support dynamic XSTATE features for userspace applications but not for KVM guests (e.g. kernel versions >= 5.16 and < 5.17).
- #5485: Fixed a bug causing a read/write from an iovec to be duplicated when receiving an error on an iovec other than the first. This caused a data corruption issue in the vsock device starting from guest kernel 6.17.
- #5494: Fixed a watchdog soft lockup bug on microVMs restored from snapshots by calling KVM_KVMCLOCK_CTRL ioctl before resuming.
- #5538: Fixed a cache coherency issue on non-FWB aarch64 platforms by adding
dma-coherentproperty to virtio-mmio nodes in the FDT.
Firecracker v1.13.1
Fixed
- #5418: Fixed typo in Swagger definition of
MmdsConfig, where the propertyimds_compatwas spelled asimds_comat. This caused auto-generated client to create bad requests.
Firecracker v1.13.0
Added
- #5139: Added support for PVTime. This is used to support steal time on ARM machines.
- #5175: Allow including a custom cpu template directly in the json configuration file passed to
--config-fileunder thecpu_configkey. - #5274: Allow taking diff snapshots even if dirty page tracking is disabled, by using
mincore(2)to overapproximate the set of dirty pages. Only works if swap is disabled. - #5290: Extended MMDS to support the EC2 IMDS-compatible session token headers (i.e. "X-aws-ec2-metadata-token" and "X-aws-ec2-metadata-token-ttl-seconds") alongside the MMDS-specific ones.
- #5290: Added
mmds.rx_invalid_tokenandmmds.rx_no_tokenmetrics to track the number of GET requests that were rejected due to token validation failures in MMDS version 2. These metrics also count requests that would be rejected in MMDS version 2 when MMDS version 1 is configured. They helps users assess readiness for migrating to MMDS version 2. - #5310: Added an optional
imds_compatfield (default to false if not provided) to PUT requests to/mmds/configto enforce MMDS to always respond plain text contents in the IMDS format regardless of theAcceptheader in requests. Users need to regenerate snapshots. - #5364: Added PCI support in Firecracker. PCI support is optional. Users can enable it passing the
--enable-pciflag when launching the Firecracker process. When Firecracker process is launched with PCI support, it will create all VirtIO devices using a PCI VirtIO transport. If not enabled, Firecracker will use the MMIO transport instead.
Changed
- #5165: Changed Firecracker snapshot feature from developer preview to generally available. Incremental snapshots remain in developer preview.
- #5282: Updated jailer to no longer require the executable file name to contain
firecracker. - #5290: Changed MMDS to validate the value of "X-metadata-token-ttl-seconds" header only if it is a PUT request to /latest/api/token, as in EC2 IMDS.
- #5290: Changed MMDS version 1 to support the session oriented method as in version 2, allowing easier migration to version 2. Note that MMDS version 1 accepts a GET request even with no token or an invalid token so that existing workloads continue to work.
Deprecated
- #5274: Deprecated the
enable_diff_snapshotsparameter of the/snapshot/loadAPI. Usetrack_dirty_pagesinstead.
Removed
- #5411: Removed official support for Intel Skylake instances. Firecracker will continue to work on those instances, but we will no longer perform automated testing on them.
Fixed
- #5222: Fixed network and rng devices locking up on hosts with non 4K pages.
- #5226: Fixed MMDS to set
Content-Typeheader correctly (i.e.Content-Type: text/plainfor IMDS-formatted or error responses andContent-Type: application/jsonfor JSON-formatted responses). - #5260: Fixed a bug allowing the block device to starve all other devices when backed by a sufficiently slow drive.
- #4207: Fixed GSI numbering on aarch64 to correctly allow up to 96 devices being attached simultaneously.
- #5290: Fixed MMDS to reject PUT requests containing
X-Forwarded-Forheader regardless of its casing (e.g.x-forwarded-for). - #5328: Fixed MMDS to set the token TTL header (i.e. "X-metadata-token-ttl-seconds" or "X-aws-ec2-metadata-token-ttl-seconds") in the response to "PUT /latest/api/token", as EC2 IMDS does.
Firecracker v1.12.1
Fixed
- #5277: Fixed a bug allowing the block device to starve all other devices when backed by a sufficiently slow drive.
Firecracker v1.12.0
Added
- #5048: Added support for PVH boot mode. This is used when an x86 kernel provides the appropriate ELF Note to indicate that PVH boot mode is supported. Linux kernels newer than 5.0 compiled with
CONFIG_PVH=yset this ELF Note, as do FreeBSD kernels. - #5065 Added support for Intel AMX (Advanced Matrix Extensions). To be able to take and restore a snapshot of Intel AMX state,
Xsaveis used instead ofkvm_xsave, so users need to regenerate snapshots. - #4731: Added support for modifying the host TAP device name during snapshot restore.
- #5146: Added Intel Sapphire Rapids as a supported and tested platform for Firecracker.
- #5148: Added ARM Graviton4 as a supported and tested platform for Firecracker.
Changed
- #5118: Cleared WAITPKG CPUID bit in CPUID normalization. The feature enables a guest to put a physical processor into an idle state, which is undesirable in a FaaS environment since that is what the host wants to decide.
- #5142: Clarified what CPU models are supported by each existing CPU template. Firecracker exits with an error if a CPU template is used on an unsupported CPU model.
Deprecated
- #4948: Deprecated the
page_size_kibfield in the UFFD handshake, and replaced it with apage_sizefield. Thepage_size_kibfield is misnamed, as the value Firecracker sets it to is actually the page size in bytes, not KiB. It will be removed in Firecracker 2.0.
Fixed
- #5074 Fix the
SendCtrlAltDelcommand not working for ACPI-enabled guest kernels, by dropping the i8042.nopnp argument from the default kernel command line Firecracker constructs. - #5122: Keep the UFFD Unix domain socket open to prevent the race condition between the guest memory mappings message and the shutdown event that was sometimes causing arrival of an empty message on the UFFD handler side.
- #5143: Fixed to report
process_startup_time_usandprocess_startup_time_cpu_usmetrics forapi_serverright after the API server starts, while previously reported before applying seccomp filter and starting the API server. Users may observe a bit longer startup time metrics.
Firecracker v1.11.0
Added
- #4987: Reset physical counter register (
CNTPCT_EL0) on VM startup. This avoids VM reading the host physical counter value. This is only possible on 6.4 and newer kernels. For older kernels physical counter will still be passed to the guest unmodified. See more info here - #5088: Added AMD Genoa as a supported and tested platform for Firecracker.
Changed
- #4913: Removed unnecessary fields (
max_connectionsandmax_pending_resets) from the snapshot format, bumping the snapshot version to 5.0.0. Users need to regenerate snapshots. - #4926: Replace underlying implementation for seccompiler from in house one in favor of
libseccompwhich produces smaller and more optimized BPF code.
Fixed
- #4921: Fixed swagger
CpuConfigdefinition to include missing aarch64-specific fields. - #4916: Fixed
IovDequeimplementation to work with any host page size. This fixes virtio-net device on non 4K host kernels. - #4991: Fixed
mem_size_mibandtrack_dirty_pagesbeing mandatory for allPATCH /machine-configrequests. Now, they can be omitted which leaves these parts of the machine configuration unchanged. - #5007: Fixed watchdog softlockup warning on x86_64 guests when a vCPU is paused during GDB debugging.
- #5021 If a balloon device is inflated post UFFD-backed snapshot restore, Firecracker now causes
removeUFFD messages to be sent to the UFFD handler. Previously, no such message would be sent. - #5034: Fix an integer underflow in the jailer when computing the value it passes to Firecracker's
--parent-cpu-time-usvalues, which caused development builds of Firecracker to crash (but production builds were unaffected as underflows do not panic in release mode). - #5045: Fixed an issue where firecracker intermittently receives SIGHUP when using jailer with
--new-pid-nsbut without--daemonize. - #4995: Firecracker no longer overwrites CPUID leaf 0x80000000 when running AMD hardware, meaning the guest can now discover a greater range of CPUID leaves in the extended function range (this range is host kernel dependent).
- #5046: Retry KVM_CREATE_VM on EINTR that occasionally happen on heavily loaded hosts to improve reliability of microVM creation.
- #5052: Build the empty seccomp policy as default for debug builds to avoid crashes on syscalls introduced by debug assertions from Rust 1.80.0.
Firecracker v1.10.1
Changed
- #4907: Bump snapshot version to 4.0.0. Ensure Firecracker v1.10.1 is incompatible with snapshots from other releases.
Firecracker v1.10.0
Added
- #4834: Add
VIRTIO_NET_F_RX_MRGBUFsupport to thevirtio-netdevice. When this feature is negotiated, guestvirtio-netdriver can perform more efficient memory management which in turn improves RX and TX performance. - #4460: Add a call to
KVM_KVMCLOCK_CTRLafter pausing vCPUs on x86_64 architectures. This ioctl sets a flag in the KVM state of the vCPU indicating that it has been paused by the host userspace. In guests that use kvmclock, the soft lockup watchdog checks this flag. If it is set, it won't trigger the lockup condition. Calling the ioctl for guests that don't use kvmclock will fail. These failures are not fatal. We log the failure and increase thevcpu.kvmclock_ctrl_failsmetric. - #4869: Added support for Aarch64 systems which feature CPU caches with a number of sets higher than
u16::MAX. - #4797, #4854: Added GDB debugging support for a microVM guest kernel. Please see our GDB debugging documentation for more information.
Changed
- #4844: Upgrade
virtio-netdevice to usereadvsyscall to avoid unnecessary memory copies on RX path, increasing the RX performance.
Removed
- #4804: Drop Support for guest kernel 4.14. Linux 4.14 reached end-of-life in January 2024 The minimum supported guest kernel now is 5.10.
Fixed
- #4796: Fixed Vsock not notifying guest about
TRANSPORT_RESET_EVENTevent after snapshot restore. This resulted in guest waiting indefinitely on a connection which was reset during snapshot creation. - #4790: v1.9.0 was missing most of the debugging information in the debuginfo file, due to a change in the Cargo defaults. This has been corrected.
- #4826: Add missing configuration of tap offload features when restoring from a snapshot. Setting the features was previously moved from net device creation to device activation time, but it was not reflected in the restore path. This was leading to inability to connect to the restored VM if the offload features were used.
Firecracker v1.9.1
Fixed
- #4824: Add missing configuration of tap offload features when restoring from a snapshot. Setting the features was previously moved from net device creation to device activation time, but it was not reflected in the restore path. This was leading to inability to connect to the restored VM if the offload features were used.
- #4829: v1.9.0 was missing most of the debugging information in the debuginfo file, due to a change in the Cargo defaults. This has been corrected.
Firecracker v1.9.0
Added
- #4687: Added VMGenID support for microVMs running on ARM hosts with 6.1 guest kernels. Support for VMGenID via DeviceTree bindings exists only on mainline 6.10 Linux onwards. Users of Firecracker will need to backport the relevant patches on top of their 6.1 kernels to make use of the feature.
- #4732, #4733, #4741, #4746: Added official support for 6.1 microVM guest kernels.
Changed
Deprecated
- Support for guest kernel 4.14 is now deprecated. We will completely remove 4.14 support with Firecracker version v1.10
Removed
- #4689: Drop support for host kernel 4.14. Linux 4.14 reached end-of-life in January 2024. The minimum supported kernel now is 5.10. Guest kernel 4.14 is still supported.
Fixed
- 4680: Fixed an issue (#4659) where the virtio-net device implementation would always assume the guest accepts all VirtIO features the device offers. This is always true with the Linux guest kernels we are testing but other kernels, like FreeBSD make different assumptions. This PR fixes the emulation code to set the TAP features based on the features accepted by the guest.