mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2024-11-05 11:31:14 +00:00
de88bef429
By looking at Linux kernel boot time, we identified that a lot of time was spent registering and unregistering IRQ fds to KVM. This is not efficient and certainly not a wrong behavior from the Linux kernel, but rather a problem with the Cloud-Hypervisor's implementation of MSI-X. The way to fix this issue is by ensuring the initial conditions are correct, which means the entire MSI-X vector table must be disabled and masked. Additionally, each vector must be individually masked. With these correct conditions, Linux won't start masking interrupt vectors, and later unmask them since they will be seen as masked from the beginning. This means the OS will simply have to unmask them when needed, avoiding the extra operation. Another aspect of this patch is to prevent Cloud-Hypervisor from enabling (by registering IRQ fd) all vectors when either the global 'mask' or 'enable' bits are set. Instead, we can simply let the mask() and unmask() operations take care of it if needed. Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com> |
||
---|---|---|
.. | ||
src | ||
Cargo.toml |