mirror of
https://chromium.googlesource.com/crosvm/crosvm
synced 2024-11-24 20:48:55 +00:00
f159f46153
Some MSRs are introduced in newer CPUs but are not directly supported by kernels/OSes. On creation of the VM, we are not modifying those MSRs. When we snapshot, get_all_msrs will return all available MSRs, and this would get us the newly introduced MSRs. The issue occurs when we try to set those MSRs. This has been observed in certain environments while using AOSP. Add an allowlist that contains these MSRs and only throw warnings if we try to set those MSRs. If an MSR is not in the allowlist and fails to be set, an error will be thrown. Restore MSRs 1 at a time to go over all of the list regardless of hypervisor behavior (KVM tries to restore until failure, WHPX restores multiple at the same time, HAXM restores 1 MSR at a time). BUG=b:316912197 TEST=tested in AOSP, presubmit Change-Id: If2455858c2969c50f456bfa8ba96a934c97d5a41 Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/5187926 Auto-Submit: Elie Kheirallah <khei@google.com> Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Commit-Queue: Elie Kheirallah <khei@google.com> |
||
---|---|---|
.. | ||
src | ||
tests | ||
Cargo.toml | ||
README.md |
Hypervisor Support
Multiple hypervisor backends are supported. See Advanced Usage for overriding the default backend.
Hypervisors added to crosvm must meet the following requirements:
- Hypervisor code must be buildable in crosvm upstream.
- Within reason, crosvm maintainers will ensure the hypervisor's code continues to build.
- Hypervisors are not required to be tested upstream.
- We can't require testing upstream because some hypervisors require specialized hardware.
- When not tested upstream, the hypervisor's maintainers are expected to test it downstream. If a change to crosvm breaks something downstream, then the hypervisor's maintainers are expected to supply the fix and can't expect a revert of the culprit change to be accepted upstream.
KVM
- Platforms: Linux
- Tested upstream: yes
KVM is crosvm's preferred hypervisor for Linux.
WHPX
- Platforms: Windows
- Tested upstream: no
- Contacts: vnagarnaik@google.com
HAXM
- Platforms: Windows
- Tested upstream: no
- Contacts: vnagarnaik@google.com
Android Specific
The hypervisors in this section are used as backends of the Android Virtualization Framework.
Geniezone
- Platforms: Linux, aarch64 only
- Tested upstream: no
- Contacts: fmayle@google.com, smoreland@google.com
Gunyah
- Platforms: Linux, aarch64 only
- Tested upstream: no
- Contacts: quic_eberman@quicinc.com, quic_mnalajal@quicinc.com, fmayle@google.com, smoreland@google.com