TDX: Support VTL0 IOMMU posted interrupts + interrupt relay
Has dependency on OHCL kernel and Hype-V changes
Can you rebase this change onto the latest main so I can review again?
Can you rebase this change onto the latest main so I can review again?
Done
⚠️ Unsafe Code Detected
This PR modifies files containing unsafe Rust code. Extra scrutiny is required during review.
For more on why we check whole files, instead of just diffs, check out the Rustonomicon
When do we unwind/unmap the interrupts? What does the guest do and what do we do in response?
When do we unwind/unmap the interrupts? What does the guest do and what do we do in response?
The guest can only issue retarget calls, and no unmapping calls. Mapping and unmapping is owned by root partition during power on and shutdown respectively. So there is no specific unmapping done for the redirected vector mapping.
And if we get more than one retarget call for the same vector targeting same processor, the kernel ensures there is no duplicate mapping and should return the previously mapped vector. Tagging @ricardon confirm kernel behavior.
FYI i filed #2434 to track the test gap once we can update runners.
Results from local testing shows expected results. Test config: 256VP, 512GB memory, NVMe DDA drive attached to VTL0
Guest build: Windows (29493 rs_prerelease), Linux (Ubuntu 24.04) FIO (linux) & Diskspd (Windows), random read, queue depth 64, thread count = 256
chose the very large thread count so that it forces nvme submission & completion queues on processors to be used in VTL0 and that way we can test all the proxy interrupt redirection mappings created in VTL2
Backported to release/1.7.2511 in #2451