No description
Find a file
Daniel Verkamp 9846f3f040 devices: refactor IRQ assignment API
Split the IRQ allocation into two PciDevice functions:
1. Ask the device if it has a preferred IRQ (used for PCI passthrough
   with VFIO where we want the IRQ and pin assignment to match the
   host).
2. Inform the device which IRQ it has been assigned (and providing the
   interrupt event object).

This moves the decision of which pin to use into the generate_pci_root
function in arch, which means we will know the pin before assigning an
IRQ. This will be used to ensure that pin <-> IRQ number assignments are
consistent within each device in a following change.

While the API is changing, also take the opportunity to clone the IRQ
event on the caller side so that each individual device does not need to
do it.

BUG=b:3834424
TEST=Boot x86_64 Linux in crosvm

Change-Id: Ia61c108143a5bc1862e0f345c912bc0724209a72
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3840306
Reviewed-by: Dmitry Torokhov <dtor@chromium.org>
Reviewed-by: Noah Gold <nkgold@google.com>
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
Tested-by: Daniel Verkamp <dverkamp@chromium.org>
2022-08-20 00:51:16 +00:00
.cargo health-check: Add check for newline at ends of files 2022-08-18 00:17:04 +00:00
.devcontainer tools: enable search feature for mdbook 2022-07-29 21:16:21 +00:00
.github github: update contributing link 2022-07-29 22:54:01 +00:00
.vscode Add rust-analyzer config to .vscode/settings.json 2022-08-16 23:08:35 +00:00
aarch64 VcpuRegAArch64: Parametrize X0-X30 as X(u8) 2022-08-18 12:57:45 +00:00
acpi_tables Reformat imports 2022-07-28 00:15:50 +00:00
anti_tamper crosvm: upstream windows src 2022-07-19 20:58:59 +00:00
arch devices: refactor IRQ assignment API 2022-08-20 00:51:16 +00:00
argh_helpers crosvm: resync crosvm windows 2022-07-29 20:56:41 +00:00
base base: linux: store syslog fd in a OnceCell 2022-08-20 00:43:56 +00:00
bin Deprecate old dev tooling scripts 2021-11-02 22:23:03 +00:00
bit_field Remove redundant {self} imports 2022-08-01 21:27:54 +00:00
broker_ipc Reformat imports 2022-07-28 00:15:50 +00:00
ci/kokoro ci: skip choco checksum 2022-07-13 17:21:48 +00:00
common data_model: add read_from_prefix() function 2022-08-16 18:43:03 +00:00
cros_async cros_async: fix doc test failing 2022-08-16 02:09:32 +00:00
crosvm-fuzz Reformat imports 2022-07-28 00:15:50 +00:00
crosvm_control crosvm: update book and doc links to crosvm.dev 2022-07-29 22:54:01 +00:00
crosvm_plugin Remove redundant {self} imports 2022-08-01 21:27:54 +00:00
devices devices: refactor IRQ assignment API 2022-08-20 00:51:16 +00:00
disk Remove redundant {self} imports 2022-08-01 21:27:54 +00:00
docs/book Allocate more RAM for pVM firmware. 2022-08-17 09:54:33 +00:00
fuse Remove redundant {self} imports 2022-08-01 21:27:54 +00:00
gpu_display gpu_display: rework build.rs for cross compilation 2022-08-19 22:43:07 +00:00
hypervisor hypervisor: kvm: aarch64: Support any KVM_GET_ONE_REG target 2022-08-18 12:57:45 +00:00
infra infra: Fix coverage uploads 2022-08-19 22:11:55 +00:00
integration_tests integration_tests: Add virtio-blk test 2022-08-19 13:40:35 +00:00
io_uring Reformat imports 2022-07-28 00:15:50 +00:00
kernel_cmdline Reformat imports 2022-07-28 00:15:50 +00:00
kernel_loader Reformat imports 2022-07-28 00:15:50 +00:00
kvm Reformat imports 2022-07-28 00:15:50 +00:00
kvm_sys Reformat imports 2022-07-28 00:15:50 +00:00
libcras_stub crosvm: migrate to Rust 2021 edition 2022-03-09 01:16:03 +00:00
linux_input_sys Revert "x display: ST event emulation for MT events" 2022-08-09 00:11:50 +00:00
logo README: Use PNG logo image 2021-10-29 01:56:23 +00:00
media media: ffmpeg: Fix doc comment on AvBuffer::into_raw. 2022-08-19 13:31:46 +00:00
metrics health-check: Add check for newline at ends of files 2022-08-18 00:17:04 +00:00
net_sys Reformat imports 2022-07-28 00:15:50 +00:00
net_util devices & src: add startup info logs. 2022-08-19 22:24:46 +00:00
power_monitor Reformat imports 2022-07-28 00:15:50 +00:00
protos Remove redundant {self} imports 2022-08-01 21:27:54 +00:00
qcow_utils Remove redundant {self} imports 2022-08-01 21:27:54 +00:00
resources resources: optimize region coalescing 2022-08-03 02:09:50 +00:00
rutabaga_gfx rutabaga_gfx: Support for cached mappings on msm 2022-08-18 20:33:55 +00:00
seccomp health-check: Add check for newline at ends of files 2022-08-18 00:17:04 +00:00
serde_keyvalue Remove redundant {self} imports 2022-08-01 21:27:54 +00:00
src devices & src: add startup info logs. 2022-08-19 22:24:46 +00:00
system_api_stub crosvm: migrate to Rust 2021 edition 2022-03-09 01:16:03 +00:00
tests Reformat imports 2022-07-28 00:15:50 +00:00
third_party health-check: Add infra checks 2022-08-18 00:17:04 +00:00
tools tools/run_tests: Add --cov option 2022-08-19 18:05:35 +00:00
tpm2 Reformat imports 2022-07-28 00:15:50 +00:00
tpm2-sys tpm2-sys: build libtpm2 with -Wno-error 2022-07-28 00:26:00 +00:00
tracing health-check: Add check for newline at ends of files 2022-08-18 00:17:04 +00:00
tube_transporter Remove redundant {self} imports 2022-08-01 21:27:54 +00:00
usb_sys Reformat imports 2022-07-28 00:15:50 +00:00
usb_util Remove redundant {self} imports 2022-08-01 21:27:54 +00:00
vfio_sys direct_irq: support forwarding of ACPI fixed events 2022-08-09 09:24:31 +00:00
vhost Reformat imports 2022-07-28 00:15:50 +00:00
virtio_sys Reformat imports 2022-07-28 00:15:50 +00:00
vm_control devices: vvu: proxy vring call eventfds with kvm 2022-08-17 01:58:22 +00:00
vm_memory Remove redundant {self} imports 2022-08-01 21:27:54 +00:00
win_audio health-check: Add check for newline at ends of files 2022-08-18 00:17:04 +00:00
win_util Reformat imports 2022-07-28 00:15:50 +00:00
x86_64 x86_64: Fix incorrect _OSC in DSDT 2022-08-15 19:34:12 +00:00
.dockerignore add docker supported builds and tests 2019-05-15 13:36:19 -07:00
.gitignore Add python configs for consistency between IDE and CI 2022-08-16 18:33:23 +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 arch: allocate reserved PCI addresses first 2022-08-01 18:57:44 +00:00
Cargo.lock Add Cargo.lock files to version control again 2022-08-15 19:38:44 +00:00
Cargo.toml Revert "crosvm: Embed seccomp filters into binary" 2022-08-05 07:20:52 +00:00
CONTRIBUTING.md contributing: fix "uploaad" typo 2022-08-01 23:30:44 +00:00
LICENSE add LICENSE and README 2017-04-17 14:06:21 -07:00
mypy.ini Add python configs for consistency between IDE and CI 2022-08-16 18:33:23 +00:00
navbar.md crosvm: update book and doc links to crosvm.dev 2022-07-29 22:54:01 +00:00
OWNERS Add rizhang@ to OWNERS 2022-08-17 01:14:13 +00:00
PRESUBMIT.cfg Switch main crosvm repo 2022-07-14 17:58:26 +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 crosvm: update book and doc links to crosvm.dev 2022-07-29 22:54:01 +00:00
run_tests Deprecate old dev tooling scripts 2021-11-02 22:23:03 +00:00
rust-toolchain rust-toolchain: update to 1.60.0 2022-07-28 17:46:00 +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 unblocked_terms.txt: clean up trivial cases 2021-04-26 20:32:38 +00:00

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