[PR #21] feat: complete KVM pre-fault stats #21

Open
opened 2026-10-29 14:30:11 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/kvcache-ai/firecracker/pull/21
Author: @Hygge-Gezelligheid
Created: 8/30/2026
Status: 🔄 Open

Base: v1.15.1-patch ← Head: agent/v1.15.1-patch-v2


📝 Commits (6)

  • 96ea95f release: prepare v1.15.1-patch-v2
  • 91d2509 feat: expose guest physical addresses for memory regions
  • 1881cbd chore: add aarch64 v2 candidate
  • 9f50bed chore: remove aarch64 candidate artifact
  • 9cc0a00 feat: report complete KVM pre-fault stats
  • 65ea6ce feat: expose resident memory ranges

📊 Changes

18 files changed (+525 additions, -94 deletions)

View changed files

📝 CHANGELOG.md (+10 -0)
📝 Cargo.lock (+6 -6)
📝 src/cpu-template-helper/Cargo.toml (+1 -1)
📝 src/firecracker/Cargo.toml (+1 -1)
📝 src/firecracker/src/api_server/parsed_request.rs (+40 -1)
📝 src/firecracker/swagger/firecracker.yaml (+156 -5)
📝 src/jailer/Cargo.toml (+1 -1)
📝 src/rebase-snap/Cargo.toml (+1 -1)
📝 src/seccompiler/Cargo.toml (+1 -1)
📝 src/snapshot-editor/Cargo.toml (+1 -1)
📝 src/vmm/src/lib.rs (+21 -15)
📝 src/vmm/src/persist.rs (+26 -8)
📝 src/vmm/src/rpc_interface.rs (+38 -3)
📝 src/vmm/src/vstate/memory.rs (+22 -0)
📝 src/vmm/src/vstate/prefault.rs (+130 -33)
📝 src/vmm/src/vstate/vcpu.rs (+19 -12)
📝 src/vmm/src/vstate/vm.rs (+40 -1)
📝 src/vmm/tests/integration_tests.rs (+11 -4)

📄 Description

Summary

Complete the paused-only KVM pre-fault path with synchronous, verifiable completion statistics.

  • Continue KVM_PRE_FAULT_MEMORY until every submitted range reports zero remaining bytes.
  • Return aggregate and per-vCPU-worker requested, completed, remaining, ioctl-count, and timing statistics.
  • Avoid waiting for a response from a vCPU that could not be signaled.
  • Expose the response through the Swagger API and parser models.

Validation

Passed on the AgentENV development host:

  • cargo test -p vmm vstate::prefault --lib (9 passed)
  • precise VMM integration coverage for state validation, multi-vCPU accounting, and hotpluggable-memory rejection (3 passed)
  • cargo test -p firecracker api_server::parsed_request::tests::test_put_pre_fault_memory_route --lib

cargo fmt --check could not be used as a validation signal on that host because its installed toolchain reformats unrelated baseline files.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/kvcache-ai/firecracker/pull/21 **Author:** [@Hygge-Gezelligheid](https://github.com/Hygge-Gezelligheid) **Created:** 8/30/2026 **Status:** 🔄 Open **Base:** `v1.15.1-patch` ← **Head:** `agent/v1.15.1-patch-v2` --- ### 📝 Commits (6) - [`96ea95f`](https://github.com/kvcache-ai/firecracker/commit/96ea95f0cb2d8973e0286e6736dbfbc1d2c611a8) release: prepare v1.15.1-patch-v2 - [`91d2509`](https://github.com/kvcache-ai/firecracker/commit/91d2509ad2718914254d950c002cd929a90a3a3b) feat: expose guest physical addresses for memory regions - [`1881cbd`](https://github.com/kvcache-ai/firecracker/commit/1881cbda056fe9641310b326e06b03c8e02ca934) chore: add aarch64 v2 candidate - [`9f50bed`](https://github.com/kvcache-ai/firecracker/commit/9f50bedd7286b5db8c17b67a6e12cffe9444dee7) chore: remove aarch64 candidate artifact - [`9cc0a00`](https://github.com/kvcache-ai/firecracker/commit/9cc0a009e880578aa35b89d41d8f03a332302f93) feat: report complete KVM pre-fault stats - [`65ea6ce`](https://github.com/kvcache-ai/firecracker/commit/65ea6ce7270af65a1312cba7cbb1828a79d43b7b) feat: expose resident memory ranges ### 📊 Changes **18 files changed** (+525 additions, -94 deletions) <details> <summary>View changed files</summary> 📝 `CHANGELOG.md` (+10 -0) 📝 `Cargo.lock` (+6 -6) 📝 `src/cpu-template-helper/Cargo.toml` (+1 -1) 📝 `src/firecracker/Cargo.toml` (+1 -1) 📝 `src/firecracker/src/api_server/parsed_request.rs` (+40 -1) 📝 `src/firecracker/swagger/firecracker.yaml` (+156 -5) 📝 `src/jailer/Cargo.toml` (+1 -1) 📝 `src/rebase-snap/Cargo.toml` (+1 -1) 📝 `src/seccompiler/Cargo.toml` (+1 -1) 📝 `src/snapshot-editor/Cargo.toml` (+1 -1) 📝 `src/vmm/src/lib.rs` (+21 -15) 📝 `src/vmm/src/persist.rs` (+26 -8) 📝 `src/vmm/src/rpc_interface.rs` (+38 -3) 📝 `src/vmm/src/vstate/memory.rs` (+22 -0) 📝 `src/vmm/src/vstate/prefault.rs` (+130 -33) 📝 `src/vmm/src/vstate/vcpu.rs` (+19 -12) 📝 `src/vmm/src/vstate/vm.rs` (+40 -1) 📝 `src/vmm/tests/integration_tests.rs` (+11 -4) </details> ### 📄 Description ## Summary Complete the paused-only KVM pre-fault path with synchronous, verifiable completion statistics. - Continue `KVM_PRE_FAULT_MEMORY` until every submitted range reports zero remaining bytes. - Return aggregate and per-vCPU-worker requested, completed, remaining, ioctl-count, and timing statistics. - Avoid waiting for a response from a vCPU that could not be signaled. - Expose the response through the Swagger API and parser models. ## Validation Passed on the AgentENV development host: - `cargo test -p vmm vstate::prefault --lib` (9 passed) - precise VMM integration coverage for state validation, multi-vCPU accounting, and hotpluggable-memory rejection (3 passed) - `cargo test -p firecracker api_server::parsed_request::tests::test_put_pre_fault_memory_route --lib` `cargo fmt --check` could not be used as a validation signal on that host because its installed toolchain reformats unrelated baseline files. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
Sign in to join this conversation.
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
kvcache-ai/firecracker#21
No description provided.