No description
Find a file
David Dai e9426a6ace aarch64: devices: Add a virtual cpufreq device
Introduce support for a virtual CPU frequency device
to improve guest task placement behaviour along with performance
and power usage of workloads within VMs[1]. This device adds MMIO regions
that enables the guest to:

- Query for the frequency of the physical CPU that the current
vCPU is affined to.
- Send frequency requests that can be used as hint for the
host to schedule vCPU threads and choose physical CPU frequency.

Add a config option "--virt-cpufreq" that enables the virtual cpu device
and populates the frequencies of vCPUs through devicetree, which can
be used by a guest kernel cpufreq driver[2].

[1] https://lore.kernel.org/all/20230330224348.1006691-1-davidai@google.com/
[2] https://android-review.git.corp.google.com/c/kernel/common/+/2239182

Bug: None
Test: ./tools/presubmit
Change-Id: I03983c5e4a3fa288ca19504aa093ad1f7f9f7e51
Signed-off-by: David Dai <davidai@google.com>
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4504738
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
2023-05-11 21:13:57 +00:00
.cargo Include riscv toolchain in dev container 2023-05-04 15:21:31 +00:00
.config tools/run_tests2: Prepare for CI usage 2023-02-09 00:09:02 +00:00
.devcontainer dev_container: Always run as root inside container 2023-04-25 21:33:42 +00:00
.github Cleanup: Remove old, deprecated and no longer used files 2022-09-20 21:05:57 +00:00
.vscode Document feature flags and introduce new feature sets 2022-10-14 20:31:19 +00:00
aarch64 aarch64: devices: Add a virtual cpufreq device 2023-05-11 21:13:57 +00:00
acpi_tables acpi: aml: make the BufferData public 2023-05-05 22:26:02 +00:00
anti_tamper kiwi: clean anti_tamper and metrics related code 2023-01-04 00:08:27 +00:00
arch aarch64: devices: Add a virtual cpufreq device 2023-05-11 21:13:57 +00:00
argh_helpers Update all copyright headers to match new style 2022-09-13 18:41:29 +00:00
audio_util tree-wide: apply nightly rustfmt 2023-03-27 21:30:45 +00:00
base aarch64: devices: Add a virtual cpufreq device 2023-05-11 21:13:57 +00:00
bit_field bit_field: suppress clippy cast warnings 2023-04-10 23:41:28 +00:00
broker_ipc Fix remaining Chrome/Chromium OS instances 2023-01-03 22:14:30 +00:00
common crosvm: Remove unneeded cros_asyncv2 directory. 2023-05-08 07:22:23 +00:00
crash_report metrics: Add missing process types 2023-02-22 20:01:38 +00:00
cros_async cros_async: delete run_one 2023-05-11 03:36:08 +00:00
cros_fdt crosvm: fdt: Add option to dump generated devicetree blob 2023-03-16 18:16:28 +00:00
cros_tracing cros_tracing: add perfetto support. 2023-05-11 18:21:04 +00:00
cros_tracing_types Upstream cros_tracing_types. 2023-05-11 18:08:00 +00:00
crosvm-fuzz crosvm-fuzz: Skip fuzzing if descriptor chain is invalid 2023-05-11 20:11:32 +00:00
crosvm_cli crosvm_cli: implement exit_context() for Option 2023-03-28 20:13:06 +00:00
crosvm_control crosvm_control: add swap status/trim command support 2023-05-08 01:37:43 +00:00
crosvm_plugin Cargo.toml: upgrade protobuf 2.x -> 3.x 2023-04-28 19:32:01 +00:00
devices aarch64: devices: Add a virtual cpufreq device 2023-05-11 21:13:57 +00:00
disk Cargo.toml: upgrade protobuf 2.x -> 3.x 2023-04-28 19:32:01 +00:00
docs/book aarch64: devices: Add a virtual cpufreq device 2023-05-11 21:13:57 +00:00
e2e_tests tests: Add riscv imports where needed 2023-05-03 16:50:25 +00:00
fuse base: add casts for support on Android 2023-04-28 00:59:45 +00:00
gpu_display gpu_display: pass error logging callback and remove syslog() 2023-05-10 19:56:16 +00:00
hypervisor hypervisor: kvm: verify get_all_msrs gets all the MSRs 2023-05-10 18:38:24 +00:00
infra Roll recipe dependencies (trivial). 2023-05-11 18:43:51 +00:00
io_uring tools/presubmit: Add doctests 2023-04-26 00:09:33 +00:00
jail seccomp: allow kcmp in video_device on x86-64 2023-05-11 17:09:01 +00:00
kernel_cmdline Rust 1.65: Fix clippy derive_partial_eq_without_eq lints 2022-12-01 01:32:30 +00:00
kernel_loader tree-wide: remove unnecessary casts 2023-04-17 23:43:59 +00:00
kvm kvm: tests - limit irqfd tests to supported arch 2023-05-03 16:50:25 +00:00
kvm_sys kvm_sys: finish KVM_SYSTEM_EVENT_S2IDLE removal 2023-05-09 18:17:17 +00:00
libcras_stub devices: snd: Use PCM device client_type and stream_type for CRAS 2023-03-02 06:22:40 +00:00
linux_input_sys crosvm: Convert DataInit to zerocopy 10/n 2023-03-24 18:12:38 +00:00
logo README: Use PNG logo image 2021-10-29 01:56:23 +00:00
media Fix cargo doc warnings from Rust 1.68 2023-04-28 17:22:01 +00:00
metrics Cargo.toml: upgrade protobuf 2.x -> 3.x 2023-04-28 19:32:01 +00:00
net_sys Fix remaining Chrome/Chromium OS instances 2023-01-03 22:14:30 +00:00
net_util net_util/win_audio: Do not use cfg conditional compilation in build.rs 2023-05-09 20:27:26 +00:00
perfetto Upstream the perfetto crate. 2023-05-11 18:12:36 +00:00
power_monitor Cargo.toml: upgrade protobuf 2.x -> 3.x 2023-04-28 19:32:01 +00:00
prebuilts prebuilds/testvm: Retry downloads 2023-03-09 23:04:20 +00:00
proto_build_tools Cargo.toml: upgrade protobuf 2.x -> 3.x 2023-04-28 19:32:01 +00:00
protos Cargo.toml: upgrade protobuf 2.x -> 3.x 2023-04-28 19:32:01 +00:00
qcow_utils qcow_utils: Enable disk/qcow feature 2023-05-11 16:30:19 +00:00
resources resource: system_allocator: introduce GPE allocator 2023-02-06 22:02:37 +00:00
riscv64 devices: Introduce virt PMC device support allowing to notify about s2idle 2023-05-05 22:26:02 +00:00
rutabaga_gfx rutabaga_gfx: more cross-platform support 2023-05-08 20:35:37 +00:00
sandbox vhost-user: snd: Implement Windows broker & device setup 2023-02-28 21:34:01 +00:00
serde_keyvalue Fix remaining Chrome/Chromium OS instances 2023-01-03 22:14:30 +00:00
src aarch64: devices: Add a virtual cpufreq device 2023-05-11 21:13:57 +00:00
swap crosvm_control: add swap status/trim command support 2023-05-08 01:37:43 +00:00
system_api Cargo.toml: upgrade protobuf 2.x -> 3.x 2023-04-28 19:32:01 +00:00
tests Enable parallel execution of plugin and e2e tests 2023-01-26 20:38:57 +00:00
third_party Update bitflags dependency to 2.2.1. 2023-04-27 17:22:36 +00:00
tools dev_container: Remove argh import 2023-05-04 19:40:36 +00:00
tpm2 Add conditional compilation for unix-only crates 2023-01-19 21:21:59 +00:00
tpm2-sys Uprev the libtpm2 to 96017dcdb110 2023-03-07 04:05:49 +00:00
tube_transporter crosvm: Uprev rust toolchain and dev container 2023-02-08 20:26:30 +00:00
usb_sys Fix remaining Chrome/Chromium OS instances 2023-01-03 22:14:30 +00:00
usb_util devices: usb: Set the PORT SPEED field in the PORTSC register to a correct value 2023-04-05 07:44:42 +00:00
vfio_sys bindgen: update kernel bindings to Linux 6.1 2023-02-23 21:31:44 +00:00
vhost tree-wide: remove unnecessary casts 2023-04-17 23:43:59 +00:00
virtio_sys bindgen: update kernel bindings to Linux 6.1 2023-02-23 21:31:44 +00:00
vm_control crosvm_control: add swap status/trim command support 2023-05-08 01:37:43 +00:00
vm_memory Update bitflags dependency to 2.2.1. 2023-04-27 17:22:36 +00:00
win_audio net_util/win_audio: Do not use cfg conditional compilation in build.rs 2023-05-09 20:27:26 +00:00
win_util win_util: remove build.rs script 2023-04-26 18:25:31 +00:00
x86_64 aarch64: devices: Add a virtual cpufreq device 2023-05-11 21:13:57 +00:00
.dockerignore add docker supported builds and tests 2019-05-15 13:36:19 -07:00
.envrc Automatically register tools/ on PATH 2023-03-03 00:33:15 +00:00
.gitignore Automatically register tools/ on PATH 2023-03-03 00:33:15 +00:00
.gitmodules health-check: Add infra checks 2022-08-18 00:17:04 +00:00
.rustfmt.toml rustfmt, win_util: update to 2021 edition 2022-05-31 23:35:02 +00:00
ARCHITECTURE.md jail: create jail crate from jail_helpers.rs 2023-02-14 00:24:55 +00:00
Cargo.lock cros_tracing: add perfetto support. 2023-05-11 18:21:04 +00:00
Cargo.toml Upstream the perfetto crate. 2023-05-11 18:12:36 +00:00
CONTRIBUTING.md docs: Fix gerrit account hook install guide 2023-05-10 09:31:38 +00:00
DIR_METADATA DIR_METADATA: Add public buganizer component 2022-09-21 17:43:59 +00:00
LICENSE Update all copyright headers to match new style 2022-09-13 18:41:29 +00:00
mypy.ini Add python configs for consistency between IDE and CI 2022-08-16 18:33:23 +00:00
OWNERS OWNERS: Add takayas@ to OWNERS 2023-04-24 11:15:25 +00:00
OWNERS_COUNCIL Require council review for changes to Cargo.lock 2022-12-01 18:50:48 +00:00
PRESUBMIT.cfg Cleanup: Remove old, deprecated and no longer used files 2022-09-20 21:05:57 +00:00
pyproject.toml Add python configs for consistency between IDE and CI 2022-08-16 18:33:23 +00:00
README.chromeos.md crosvm: update book and doc links to crosvm.dev 2022-07-29 22:54:01 +00:00
README.md Fix remaining Chrome/Chromium OS instances 2023-01-03 22:14:30 +00:00
rust-toolchain rust-toolchain: Add llvm-tools-preview 2023-02-10 20:47:41 +00:00

crosvm - The ChromeOS 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 ChromeOS 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 ChromeOS devices.

Logo