No description
Find a file
Xiong Zhang db749f37d6 vfio-pci: Emulate msix mask all bit
msix vector table is stored in mmio, its contents is saved and restored by pci bus
dirver during device PM. With vfio-pci device, msix is virtualized and guest pci
bus driver could maintain virtualized msix vector table. But vfio-pci device maybe
poweroff and the physical msix vector table will be lost, crosvm couldn't maintain
physical msix vector table during vfio-pci device suspend and resume.

kernel vfio-pci set msix message for each enabled vector which is specified in
VFIO_DEVICE_SET_IRQS() ioctl, this commit use this to restore physical msix vector
table during vfio-pci device's resume.

__pci_restore_msix_state() is called during device resume, this function set enable
and maskall bit first, then restore msix vetor table, finally set enable bit and
clear maskall bit.

so when enable and maskall bit is set, virtualized msix could be disabled. When enable
is set and maskall is cleared, vituallized msix will be enabled through
VFIO_DEVICE_SET_IRQS() ioctl, and kernel restores vfio-pci device's physical msix table.

BUG=b:185084350
TEST=verify vfio-pci device's suspend and resume function in vm, this device should have
msix capability like TBT controller.

Change-Id: I0a9e91874a9d1ec4b0bb9ff655b83a293daa6865
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3291758
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
2021-11-23 19:10:13 +00:00
.cargo cleanup: Fix previously disabled clippy checks 2021-11-12 23:23:48 +00:00
.devcontainer Add new dev container and install-deps scripts 2021-10-15 22:12:02 +00:00
.github github: Don't use 80-char rule in pull_request_template 2021-10-29 16:19:21 +00:00
aarch64 devices:pcie: Add PcieRootPort into hotplug bus 2021-11-19 22:10:08 +00:00
acpi_tables Enable clippy on more workspace crates 2021-11-15 23:55:42 +00:00
arch devices:pcie: Add PcieRootPort into hotplug bus 2021-11-19 22:10:08 +00:00
bin Deprecate old dev tooling scripts 2021-11-02 22:23:03 +00:00
bit_field crosvm: fix needless_borrow clippy warning 2021-08-25 23:02:23 +00:00
ci/kokoro dev_container: Preserve container between calls 2021-11-19 20:09:39 +00:00
common audio_streams: Introduce SharedMemory trait for base::SharedMemory 2021-11-18 08:45:14 +00:00
crosvm-fuzz Refactoring: Move various general purpose crates to common/ 2021-10-29 22:31:43 +00:00
crosvm_plugin Refactoring: Move various general purpose crates to common/ 2021-10-29 22:31:43 +00:00
devices vfio-pci: Emulate msix mask all bit 2021-11-23 19:10:13 +00:00
disk Handle qcow image backed by a composite disk 2021-11-11 11:08:48 +00:00
docs/book ./tools/presubmit: Parallel execution and use dev container 2021-11-19 20:09:40 +00:00
fuse enumn: switch to upstream crates.io version 2021-11-15 21:03:25 +00:00
gpu_display cleanup: Fix previously disabled clippy checks 2021-11-12 23:23:48 +00:00
hypervisor Enable clippy on more workspace crates 2021-11-15 23:55:42 +00:00
integration_tests Enable clippy on more workspace crates 2021-11-15 23:55:42 +00:00
kernel_cmdline kernel_cmdline: convert to ThisError and sort 2021-09-02 21:00:23 +00:00
kernel_loader Enable clippy on more workspace crates 2021-11-15 23:55:42 +00:00
kvm aarch64: Provide the maximum supported IPA size as the machine type 2021-11-01 14:24:27 +00:00
kvm_sys Refactoring: Move various general purpose crates to common/ 2021-10-29 22:31:43 +00:00
libcras_stub Integrate audio_streams into crosvm, add stub libcras implementation 2021-07-29 05:59:42 +00:00
libcrosvm_control Enable clippy on more workspace crates 2021-11-15 23:55:42 +00:00
libvda enumn: switch to upstream crates.io version 2021-11-15 21:03:25 +00:00
linux_input_sys Refactoring: Move various general purpose crates to common/ 2021-10-29 22:31:43 +00:00
logo README: Use PNG logo image 2021-10-29 01:56:23 +00:00
net_sys Refactoring: Move various general purpose crates to common/ 2021-10-29 22:31:43 +00:00
net_util Refactoring: Move various general purpose crates to common/ 2021-10-29 22:31:43 +00:00
power_monitor Refactoring: Move various general purpose crates to common/ 2021-10-29 22:31:43 +00:00
protos Remove trunks proto from crosvm build 2021-07-31 03:01:21 +00:00
qcow_utils Enable clippy on more workspace crates 2021-11-15 23:55:42 +00:00
resources resources: Release pci slot when vfio pci device is removed 2021-11-19 22:10:15 +00:00
rutabaga_gfx Enable clippy on more workspace crates 2021-11-15 23:55:42 +00:00
seccomp seccomp: Add statx to video_device.policy for glibc 2021-11-19 04:18:27 +00:00
src resources: Release pci slot when vfio pci device is removed 2021-11-19 22:10:15 +00:00
system_api_stub system_api_stub: use 2018 edition of Rust 2021-09-09 06:42:46 +00:00
tests tests/plugins: replace rand_ish use with a counter 2021-07-21 23:28:27 +00:00
third_party third_party/minijail: update to latest ToT 2021-11-18 08:44:34 +00:00
tools dev_container: Improve support for podman 2021-11-23 08:41:17 +00:00
tpm2 crosvm: add license blurb to all files 2019-04-24 15:51:38 -07:00
tpm2-sys Uprev all submodules 2021-10-19 19:12:53 +00:00
usb_sys Refactoring: Move various general purpose crates to common/ 2021-10-29 22:31:43 +00:00
usb_util Enable clippy on more workspace crates 2021-11-15 23:55:42 +00:00
vfio_sys Refactoring: Move various general purpose crates to common/ 2021-10-29 22:31:43 +00:00
vhost devices: vhost: Allow vhost-vsock fd from command-line 2021-11-18 15:19:29 +00:00
virtio_sys Refactoring: Move various general purpose crates to common/ 2021-10-29 22:31:43 +00:00
vm_control devices:vfio-pci: Handle vfio pci device bar reallocation 2021-11-19 22:10:09 +00:00
vm_memory vm_memory: Allow File-backing MemoryRegion 2021-11-18 08:45:19 +00:00
x86_64 devices:pcie: Add PcieRootPort into hotplug bus 2021-11-19 22:10:08 +00:00
.dockerignore add docker supported builds and tests 2019-05-15 13:36:19 -07:00
.gitignore Add test runner ./tools/run_tests 2021-10-15 22:12:03 +00:00
.gitmodules Switch to submodules based workflow 2021-08-05 18:32:32 +00:00
.rustfmt.toml rustfmt.toml: Use 2018 edition 2021-02-10 11:54:06 +00:00
ARCHITECTURE.md ARCHITECTURE: Update code map 2021-09-30 11:44:32 +00:00
Cargo.toml enumn: switch to upstream crates.io version 2021-11-15 21:03:25 +00:00
CONTRIBUTING.md CONTRIBUTING: Add more instruction on use of mdbook command 2021-11-01 15:32:26 +00:00
LICENSE add LICENSE and README 2017-04-17 14:06:21 -07:00
navbar.md navbar: Update navbar contents 2021-10-29 01:56:24 +00:00
OWNERS OWNERS: Remove tjeznach 2021-10-26 16:58:37 +00:00
README.md crosvm: Sprinkle notes on API search. 2021-11-08 07:21:20 +00:00
run_tests Deprecate old dev tooling scripts 2021-11-02 22:23:03 +00:00
rust-toolchain Uprev to rust 1.55.0 2021-10-19 19:12:52 +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