No description
Find a file
Noah Gold 4ea25d1e33 x86_64: add TSC leaf synthesis.
There have been two evolutions of providing the TSC cpuid leaf
(aka 0x15) to the guest.

a) For CrosVM on Windows, we have been providing the leaf
   unconditionally.  Furthermore, we've not been using the
   exact host leaf; instead, we calibrate the TSC frequency
   and provide that value in the leaf. This was done because
   the actual cpuid leaf values are not as accurate as
   we needed them to be to drive a guest clocksource.

b) In CrosVM mainline, 4080aaf9b3
   introduced the flag enable_pnp / enable_pnp_data, and
   provides the exact host 0x15 leaf to the guest if the
   flag is enabled.

This CL adds a new hypervisor capability (CalibratedTscLeafRequired) to control
whether or not the calibrated TSC leaf should be used, in addition to a new CLI
option to force it on hypervisors where it isn't enabled by default. The new
option is `--force_calibrated_tsc_leaf`.

BUG=b:213152505
TEST=builds upstream, battletested downstream on WHPX.

Change-Id: I611422808a9e10578c0ddcbd211ae902f937685f
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3698993
Commit-Queue: Noah Gold <nkgold@google.com>
Reviewed-by: Junichi Uekawa <uekawa@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
2022-06-28 02:23:55 +00:00
.cargo Run some win64 tests with wine as part of presubmit 2022-04-06 19:45:49 +00:00
.devcontainer Make vscode devcontainer usable 2022-01-25 21:30:49 +00:00
.github Reland "github: Minimize dependencies for document generation" 2022-04-12 22:30:10 +00:00
aarch64 x86_64: add TSC leaf synthesis. 2022-06-28 02:23:55 +00:00
acpi_tables doc: add a top-level comment to all crates 2022-05-06 20:46:57 +00:00
arch x86_64: add TSC leaf synthesis. 2022-06-28 02:23:55 +00:00
argh_helpers crosvm: move run command to argh 2022-06-13 23:55:20 +00:00
base vm_control: use Protection in mapping requests 2022-06-27 00:51:20 +00:00
bin Deprecate old dev tooling scripts 2021-11-02 22:23:03 +00:00
bit_field crosvm: migrate to Rust 2021 edition 2022-03-09 01:16:03 +00:00
broker_ipc broker_ipc: fix child process logging init order. 2022-06-23 17:04:27 +00:00
ci/kokoro ci: kokoro: Add presubmit configs for x86_64-direct 2022-06-23 22:04:33 +00:00
common common/sync: Bump the version to 0.1.99. 2022-06-21 18:02:52 +00:00
cros_async cros_async: add async_from_local() 2022-06-08 02:29:19 +00:00
crosvm-fuzz devices: virtio: convert Interrupt to use IrqLevelEvent 2022-04-06 18:54:41 +00:00
crosvm_control crosvm_control: Add shared and unevictable memory to BalloonStats 2022-06-23 03:10:51 +00:00
crosvm_plugin Rust 1.60 clippy fixes 2022-04-11 20:40:36 +00:00
devices virtio: Enable build and tests for some virtio mods 2022-06-28 00:46:27 +00:00
disk disk: upstream windows support 2022-05-19 18:25:30 +00:00
docs/book crosvm: Add documentation for crosvm_control 2022-06-24 04:55:42 +00:00
fuse doc: add a top-level comment to all crates 2022-05-06 20:46:57 +00:00
gpu_display devices: enable tests 2022-06-23 00:26:06 +00:00
hypervisor x86_64: add TSC leaf synthesis. 2022-06-28 02:23:55 +00:00
infra infra: Add crosvm_windows builder 2022-06-23 22:23:54 +00:00
integration_tests tools: Add crosvm-direct support for run_tests 2022-06-22 21:51:53 +00:00
io_uring base: remove WatchingEvents in favor of EventType 2022-06-06 17:07:33 +00:00
kernel_cmdline crosvm: migrate to Rust 2021 edition 2022-03-09 01:16:03 +00:00
kernel_loader kernel_loader: load ELF kernels at the right paddr 2022-06-23 22:30:37 +00:00
kvm base: clarify SharedMemory API 2022-06-01 03:55:47 +00:00
kvm_sys crosvm: Enable windows tests for a few crates 2022-06-07 14:37:43 +00:00
libcras_stub crosvm: migrate to Rust 2021 edition 2022-03-09 01:16:03 +00:00
linux_input_sys doc: add a top-level comment to all crates 2022-05-06 20:46:57 +00:00
logo README: Use PNG logo image 2021-10-29 01:56:23 +00:00
media virtio: video: decoder: add ffmpeg-based software decoder backend 2022-06-07 11:44:21 +00:00
metrics crosvm: replace lazy_static with once_cell 2022-06-21 23:40:55 +00:00
net_sys doc: add a top-level comment to all crates 2022-05-06 20:46:57 +00:00
net_util Use 4-space indent in cfg_if treewide 2022-06-07 17:36:51 +00:00
power_monitor crosvm: build/test few more crates on windows 2022-06-22 00:48:23 +00:00
protos doc: add a top-level comment to all crates 2022-05-06 20:46:57 +00:00
qcow_utils doc: add a top-level comment to all crates 2022-05-06 20:46:57 +00:00
resources resources: introduce AddressRange type 2022-06-16 20:29:26 +00:00
rutabaga_gfx rutabaga_gfx: Upstream cross_domain.rs 2022-06-13 17:34:42 +00:00
seccomp seccomp: add arm policy for Goldfish battery 2022-06-27 13:32:27 +00:00
serde_keyvalue serde_keyvalue: parse hex, octal, and binary nums 2022-06-02 22:03:20 +00:00
src x86_64: add TSC leaf synthesis. 2022-06-28 02:23:55 +00:00
system_api_stub crosvm: migrate to Rust 2021 edition 2022-03-09 01:16:03 +00:00
tests crosvm: replace lazy_static with once_cell 2022-06-21 23:40:55 +00:00
third_party devices: vhost-user: handler: make run_with_listener() generic 2022-06-08 02:29:21 +00:00
tools tools: Set host as default target 2022-06-27 18:19:07 +00:00
tpm2 doc: add a top-level comment to all crates 2022-05-06 20:46:57 +00:00
tpm2-sys doc: add a top-level comment to all crates 2022-05-06 20:46:57 +00:00
tracing tracing: Add noop tracing 2022-06-16 21:13:55 +00:00
tube_transporter tube_transporter: Upstream this Window's specific crate 2022-04-20 01:24:35 +00:00
usb_sys doc: add a top-level comment to all crates 2022-05-06 20:46:57 +00:00
usb_util doc: add a top-level comment to all crates 2022-05-06 20:46:57 +00:00
vfio_sys Revert "direct_irq: Add support for host wakeup capable IRQs" 2022-05-19 14:28:46 +00:00
vhost crosvm: enable windows tests for vhost crate 2022-06-07 20:46:28 +00:00
virtio_sys virtio: create a DeviceType wrapper enum 2022-05-10 21:00:07 +00:00
vm_control vm_control: use Protection in mapping requests 2022-06-27 00:51:20 +00:00
vm_memory crosvm: Enable vm_memory tests on windows 2022-06-07 16:31:38 +00:00
win_audio win_audio: Upstream Window's audio crate 2022-06-10 19:04:05 +00:00
win_util crosvm: replace lazy_static with once_cell 2022-06-21 23:40:55 +00:00
x86_64 x86_64: add TSC leaf synthesis. 2022-06-28 02:23:55 +00:00
.dockerignore
.gitignore infra: Initial setup of linux pre/post-submit builders 2022-05-24 23:13:13 +00:00
.gitmodules Switch to submodules based workflow 2021-08-05 18:32:32 +00:00
.rustfmt.toml rustfmt, win_util: update to 2021 edition 2022-05-31 23:35:02 +00:00
ARCHITECTURE.md base: replace PollToken with EventToken tree-wide 2022-06-02 22:30:38 +00:00
Cargo.toml crosvm: replace lazy_static with once_cell 2022-06-21 23:40:55 +00:00
CONTRIBUTING.md Add documentation for ChromeOS workflows 2022-04-18 19:05:49 +00:00
LICENSE
navbar.md docs: Use mdformat to format markdown files 2022-01-27 21:29:11 +00:00
OWNERS Adding Vikram to crosvm OWNERS 2022-06-06 17:20:10 +00:00
PRESUBMIT.cfg Add check_cq_depend to PRESUBMIT 2022-05-18 18:54:34 +00:00
README.chromeos.md Add documentation for ChromeOS workflows 2022-04-18 19:05:49 +00:00
README.md Add new email lists to README.md and book 2022-06-13 19:39:11 +00:00
run_tests Deprecate old dev tooling scripts 2021-11-02 22:23:03 +00:00
rust-toolchain Upgrade rust toolchain version to 1.58.1 2022-02-04 02:20:36 +00:00
setup_cros_cargo.sh Deprecate old dev tooling scripts 2021-11-02 22:23:03 +00:00
test_all Deprecate old dev tooling scripts 2021-11-02 22:23:03 +00:00
unblocked_terms.txt

crosvm - The Chrome OS Virtual Machine Monitor

crosvm is a virtual machine monitor (VMM) based on Linuxs KVM hypervisor, with a focus on simplicity, security, and speed. crosvm is intended to run Linux guests, originally as a security boundary for running native applications on the Chrome OS platform. Compared to QEMU, crosvm doesnt emulate architectures or real hardware, instead concentrating on paravirtualized devices, such as the virtio standard.

crosvm is currently used to run Linux/Android guests on Chrome OS devices.

Logo