Sharing IOMMU PageTables with TDP in KVM
summary
KVM shares the CPU TDP as IOMMU page tables to remove duplicated GPA→HPA mappings by adding three interfaces: request_sharing, pin/unpin and page‑fault forwarding plus a root‑update notification. Implementation pins all user pages and TDP pages and requires atomic TDP updates when splitting huge pages. Prototype works functionally but slows boot: baseline 29s versus 32s with sharing (caused by 132 pre-populations); remaining work includes snoop bit handling, dirty‑tracking, nested VM support and root‑update optimizations.
AI-written summary · about
chapters (14)
- 0:00Intro
- 0:26Agenda
- 1:10Goal
- 1:53Sharing Advantages
- 2:18Sharing Prerequisites
- 3:22The Same Address Space (Cont.)
- 4:04Compatible Page Table Formats
- 4:57Sharing Handshake Sequence
- 8:11Non-conflicting Page Table Content (Cont.)
- 9:13Sharing Interfaces
- 12:02Atomic Update for TDP Entries Atomia update is required for TOP entries for pinned ranges, when
- 12:45Page & Page Table Pinning Interfaces . For sharing without 10 page fault, - Pinning of all ranges in user memslots: memslot add - Pinning a specific range extra interface
- 14:44Shared Page Table Root Update
- 17:01Bootup Performance
related talks
20mKVM-devirt: Extending KVM to a Zero-Overhead Partition Hypervisor
50mProtected KVM on Arm64: A Technical Deep Dive
27mIntel Trusted Domain Extensions (TDX) Host Kernel Support
20mHypervisor-managed Linear Address Translation
32mNotes on Taking KVM-on-KVM Nested Virtualization for a Spin
19mPASID Management in KVM
27mEvaluate Implementation Options of KVM-based Type1 (or 1.5) Hypervisor
37mEfficient and Flexible Virtual Machine Networking Through eBPF
