Support PCIe Passthrough of NVMe VFs to VMs
まだ誰も着手していません。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 25/100
- issue の種類
- 機能追加
- 明瞭さ
- 説明が足りない
- 活発さ
- 停滞
- 技術スタック
- linux, rust
調査の方向性
まず、FeOS VM 管理 API とハイパーバイザー backend のエントリーポイントを特定します。issue ではソースファイルやテストは指定されていません。PCIe デバイス仕様と検証フローを定義し、その後、静的アタッチと hot-plug アタッチを runtime 全体で追跡します。完了とは、API、passthrough、boot、I/O、hot-plug、および統合テストに関して列挙された受け入れ基準を満たすことです。
索引モデルが issue の本文から書いたものです。
説明
Summary
This work item enables FeOS to attach NVMe devices, exposed to the host as PCIe Virtual Functions (VFs), directly to a FeOS-managed Virtual Machine (VM). This allows a remote NVMe device, connected via a Bluefield DPU using NVMe-oF (RoCEv2), to be used as a high-performance boot or storage drive for a VM.
The core task is to extend the VM management API and backend to support PCIe device passthrough, identifying the NVMe device by its PCIe address. The scope also includes support for dynamically attaching and detaching these devices while the VM is running (hot-plugging).
Scope
✅ In Scope
- Extend the FeOS VM API to allow specifying one or more NVMe devices via their host PCIe address during VM creation/modification.
- Implement the backend logic for PCIe passthrough of an NVMe VF to a guest VM (e.g., using IOMMU /
vfio-pci). - Ensure the guest VM can recognize and utilize the passed-through NVMe device.
- Support using the device as both a primary boot drive and a secondary storage volume.
- Support for dynamic hot-plug and hot-unplug of NVMe VFs to/from a running VM.
❌ Out of Scope
- Configuration of the Bluefield DPU or the NVMe-oF fabric itself. This issue assumes the NVMe VF is already present and visible on the FeOS host.
- Live migration of VMs with attached PCIe passthrough devices.
Responsible Areas
- FeOS VM Management
- FeOS API
Contributors
- @guvenc
- @MalteJ
Acceptance Criteria
-
API
- The VM API includes a new field (e.g.,
pci_devices) in the VM specification to accept a list of PCIe addresses. - The API validates that the provided PCIe address corresponds to an existing and available device on the host.
- The VM API includes a new field (e.g.,
-
VM Runtime (Static Attachment)
- A VM can be successfully launched with an NVMe VF passed through to it.
- The guest operating system inside the VM correctly identifies the NVMe device via its native driver.
- The VM can successfully boot from the passed-through NVMe device when configured as the primary boot disk.
- The VM can mount and perform I/O operations on the device when it is attached as secondary storage.
-
Dynamic Attachment (Hot-plug)
- A dedicated API endpoint exists to attach a PCIe device to a running VM.
- A dedicated API endpoint exists to detach a PCIe device from a running VM.
- The guest OS recognizes the newly attached NVMe device without requiring a reboot.
- The guest OS gracefully handles the removal of a detached NVMe device, provided it is not in active use.
- The VM remains stable during and after hot-plug/unplug operations.
Action Items
- Design the specific API extension for the VM model to include PCIe devices at creation time.
- Implement the necessary host-level checks (e.g., IOMMU enabled, device bound to
vfio-pcidriver). - Integrate the passthrough logic into the VM creation and startup process in the FeOS hypervisor backend.
- Add input validation for PCIe addresses in the API layer.
- Design and implement API endpoints for hot-plug and hot-unplug operations.
- Integrate hot-plug/unplug logic with the hypervisor backend.
- Create integration tests that launch a VM with a passthrough NVMe device and verify its presence and functionality within the guest.
- Add integration tests for attaching and detaching devices from a running VM.
- 主要言語
- Rust
- スター
- 24
- フォーク
- 9
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
ironcore-dev/FeOS のほかの issue
-
area/operatingsystem
難易度 3/5 1〜2日 初心者へのやさしさ 45/100
ironcore-dev/FeOS#103 ·
-
area/operatingsystem
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
ironcore-dev/FeOS#106 ·
-
Improve Host Management再び着手できるかも @friegger が 290 日前に担当しましたが、オープン中のプルリクエストはありません。 オープンarea/operatingsystem
ironcore-dev/FeOS#108 · 担当者 1 名 ·
-
area/operatingsystem
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
ironcore-dev/FeOS#109 ·
-
area/operatingsystem
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
ironcore-dev/FeOS#94 ·
ironcore-dev/FeOS の issue をすべて見る
似ている issue
-
needs triage
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
mozilla-services/syncstorage-rs#2715 ·
メンテナーはふだん 1 日以内に返信
-
難易度 1/5 1時間未満 初心者へのやさしさ 70/100
-
documentation
難易度 1/5 1時間未満 初心者へのやさしさ 82/100
physicsdolphin/nv-uefi-unlocker#53 · リアクション 4 件 ·
メンテナーはふだん 1 日以内に返信