aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-02-10Merge "UPSTREAM: rutabaga_gfx: use as to perform type conversion"android-t-preview-2android-t-preview-1android-t-beta-3android-t-preview-1Treehugger Robot
2022-02-09UPSTREAM: rutabaga_gfx: use as to perform type conversionKaiyi Li
On Windows os_handle is of type void*, can't use Into::into to cast to i64. Use as i64 instead. Test: launch_cvd Link: https://crrev.com/c/3448217 Change-Id: I7fe44dbadf5214ff9bfd81482f5b598091a8f692
2022-02-08Merge changes from topic "rutabaga_gfx_os_handle_type"android-s-v2-beta-3android-s-qpr3-beta-1android-s-v2-beta-3android-s-qpr3-beta-1Kaiyi Li
* changes: rutabaga_gfx: change os_handle type rutabaga_gfx: stream_renderer_create_blob and related functions rutabaga_gfx: get component from context type
2022-02-08Exclude cros_async tests from host unit test run.Andrew Walbran
https://r.android.com/1975268 attempted to do this but would be lost the next time cargo2android.py is run. Adding the option to cargo2android.json will make it stick. Bug: 218105368 Bug: 218218997 Test: Ran cargo2android.py Change-Id: I629feb8f454fd1ad2e02559d6fdbfeebeba35a91
2022-02-07rutabaga_gfx: change os_handle typeKaiyi Li
Windows HANDLE is defined as void* which is incompatible with current os_handle type i32. Change that to i64. TEST=launch_cvd --gpu_mode=gfxstream BUG=b:217977329 Change-Id: I78c6c4c0d7573773ed530d8987b932438222144f
2022-02-07rutabaga_gfx: stream_renderer_create_blob and related functionsGurchetan Singh
This CL adds stream_renderer_create_blob and export_blob support. BUG=b:208516032 TEST=run gfxstream Change-Id: I312e266df04e0291ecefce05d3a63c527e6d87af Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3429702 Reviewed-by: Dennis Kempin <denniskempin@google.com> Auto-Submit: Gurchetan Singh <gurchetansingh@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Commit-Queue: Gurchetan Singh <gurchetansingh@chromium.org>
2022-02-07rutabaga_gfx: get component from context typeGurchetan Singh
The component type information is useful from time to time. BUG=b:208516032 TEST=run gfxstream Change-Id: I16be012064f2c764f021ae52c09c2371f2a29ccc Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3429701 Reviewed-by: Kaiyi Li <kaiyili@google.com> Auto-Submit: Gurchetan Singh <gurchetansingh@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Reviewed-by: Dennis Kempin <denniskempin@google.com> Commit-Queue: Dennis Kempin <denniskempin@google.com>
2022-02-07Disable cros_async tests on hostAlistair Delva
These tests are buggy unless run on kernels with all the necessary io_uring fixes. Until these tests are stabilized upstream, disable them for host TEST_MAPPING. Bug: 218105368 Bug: 218218997 Change-Id: I5da18616bf58ce9a1b6ad7039602e0edbf69d004
2022-01-28Merge remote-tracking branch 'aosp/upstream-main' into master.Andrew Walbran
Bug: 211704107 Bug: 215517095 Change-Id: I8a4fb850353725c2431e217c91106085d44a6e6e
2022-01-28Check KVM_CAP_ARM_PROTECTED_VM after creating a protected VM.Andrew Walbran
This should have been updated with the pKVM ABI change in https://crrev.com/c/3330204, as protected mode is now selected when creating the VM, and pVM firmmware is optional. BUG=b:209794844 Change-Id: I2850b4c2ef523a15b8215df070eb9da066a67cb5 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3420330 Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Commit-Queue: Andrew Walbran <qwandor@google.com>
2022-01-28Handle errors and crashes in VM differently to clean shutdown.Andrew Walbran
BUG=b:211704107 TEST=tools/dev_container tools/run_tests TEST=tools/dev_container tools/run_tests --target=vm:aarch64 Change-Id: I383be89becefe300d9dc94b7d67d35269c628a39 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3412772 Reviewed-by: Dmitry Torokhov <dtor@chromium.org> Auto-Submit: Andrew Walbran <qwandor@google.com> Tested-by: kokoro <noreply+kokoro@google.com> Commit-Queue: Andrew Walbran <qwandor@google.com>
2022-01-28Distinguish reboot from shutdown on aarch64 too.Andrew Walbran
BUG=b:211704107 TEST=Ran VMs with Android vm tool on Oriole Change-Id: I3525cb03ab325ac35aea8f318faa4ebab8250b83 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3395416 Reviewed-by: Dmitry Torokhov <dtor@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Commit-Queue: Andrew Walbran <qwandor@google.com>
2022-01-28Pass HypervisorCap by value rather than reference.Andrew Walbran
It's a simple enum, so it should be Copy. TEST=tools/dev_container tools/run_tests TEST=tools/dev_container tools/run_tests --target=vm:aarch64 Change-Id: Ieeacedb10fa6a93d6cdd9878097c66aa936f8e30 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3420329 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Commit-Queue: Andrew Walbran <qwandor@google.com>
2022-01-28crosvm: add external balloon socketDavid Stevens
Add socket to allow external process to directly control the balloon device via the balloon_control API. When the option is used, the vm control socket cannot control the balloon. BUG=b:213962590 TEST=manual testing with crrev.com/c/3394436 Change-Id: I3feea811e39a5b09afcc44420fc644935fdc6ebf Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3394441 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Commit-Queue: David Stevens <stevensd@chromium.org>
2022-01-28balloon_control: expose rust API for balloonDavid Stevens
Add a crate containing an API for controlling the balloon. This is done by reusing the API between the control socket and the balloon device. BUG=b:213962590 TEST=compiles Change-Id: I5d89d5ebee55162d28ba45ca2c49b7083561b916 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3394440 Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Commit-Queue: David Stevens <stevensd@chromium.org>
2022-01-28devices: fix compile warnings in testsAlexandre Courbot
Fix a few compilation warnings in our tests: * The PCI device had an unused argument without a leading underscore in the name ; * The virtio queue is dereferencing null pointers, which is UB albeit technically ok in this case (bindgen generates similar tests too [1]). [1] https://github.com/rust-lang/rust-bindgen/issues/1651 BUG=None TEST=cargo test in devices/ does not show these warnings anymore. Change-Id: Id272b5381f80bb72d96839a5a6da8bb0c644502d Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3418623 Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Reviewed-by: Dennis Kempin <denniskempin@google.com> Commit-Queue: Alexandre Courbot <acourbot@chromium.org>
2022-01-28merge-into-chromeos: Exclude dry runs from previous merge commitsDennis Kempin
Otherwise we end up with this: https://crrev.com/c/3422185 BUG=None TEST=None Change-Id: I8abd0e3f4465e9ae2ae34630dde5a3b15e190b09 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3421734 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com>
2022-01-28x86_64: mptables bad irq0 entryColin Downs-Razouk
crosvm seems to be adding an extra mptable entry for irq0 that points to a non-existent ioapic (with apic_id=0 where the ioapic's id is not 0). The bad irq0 and valid irq0 entries are the first two listed when using apic=debug and show_lapic=all kernel params: ``` [ 0.756044] Int: type 0, pol 0, trig 0, bus 01, IRQ 00, APIC ID 0, APIC INT 00 [ 0.764474] Int: type 0, pol 0, trig 0, bus 01, IRQ 00, APIC ID 5, APIC INT 00 ``` If the bad irq0 entry exists, and if check_timer is called in io_apic.c in the kernel, it can cause an invalid opcode exception in some kernels, seemingly because it ends up calling find_irq_entry(-1, -1, 0) which does a -1 index on the static "ioapics" struct in io_apic.c. It seems like a kernel bug that such an index could happen, but this also seems like a bad entry in mptables. A similar irq entry exists in kvmtool, but it it's a local interrupt. If this entry is adjusted to match then the invalid opcode kernel panic stops. BUG=b:211912415 TEST=ran linux image, booted fine Change-Id: I125dd2458f86de65553577b8d1c4d1366d778de9 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3405332 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Commit-Queue: Colin Downs-Razouk <colindr@google.com>
2022-01-28Upstream windows build/test scriptVikram Auradkar
The patch also adds files to skip building and testing crates on windows. When we run ``` tools/windows/build_test.py --skip_file_name .windows_build_test_skip ``` the build/test succeeds without actually doing anything as build/test for all crates is skipped by creating '.windows_build_test_skip'. Bug: 213170957 Test: Ran script on downstream repo Change-Id: Iebd2cea463ee722be4feaed88229e1fb5e9fd6c5 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3417918 Reviewed-by: Dennis Kempin <denniskempin@google.com> Tested-by: kokoro <noreply+kokoro@google.com> Commit-Queue: Vikram Auradkar <auradkar@google.com>
2022-01-27OWNERS: Add crosvm-botDennis Kempin
This should allow the bot to submit dry-runs to the CQ. BUG=chromium:1290646 TEST=None Change-Id: I44fc74c94129e7d136a161c1ba11445d7bf675c1 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3421730 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com>
2022-01-27docs: Use mdformat to format markdown filesDennis Kempin
The tool is added to ./tools/fmt which will be called during ./tools/presubmit as well as by Kokoro during testing. This requires a new dev container version to bundle the mdformat tool in the container. Note: mdformat does not have any IDE integrations, but the prettier plugin with prose-wrap enabled and a line length of 100 provides almost identical results. BUG=None TEST=./tools/fmt --check Change-Id: I0ae5659eff8555df7c85c70e62095a1e116b98da Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3416098 Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org> Reviewed-by: Alexandre Courbot <acourbot@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Commit-Queue: Dennis Kempin <denniskempin@google.com>
2022-01-27Reorganize usage doc and add example usageDennis Kempin
BUG=b:214104901 TEST=mdbook serve Change-Id: I7039493212912cb698f74967abef228df278f4c7 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3399872 Reviewed-by: Alexandre Courbot <acourbot@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Commit-Queue: Dennis Kempin <denniskempin@google.com>
2022-01-27crosvm: Add support to pass vcpu-cgroup-path to crosvmVineeth Pillai
The latency reduces to 50-100ms max from over 1 second, when we overload the system. BUG=b:208138181 TEST=run stress-ng inside and outside VM. Change-Id: I10a22807b47a1ed2dd181c2ddcc995eebef7f652 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3383936 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Commit-Queue: Vineeth Pillai <vineethrp@google.com>
2022-01-27crosvm: allow --stub-pci-device multifunction againDaniel Verkamp
The previous multifunction change removed this option entirely, but that makes the transition difficult, since the caller and crosvm need to be updated simultaneously. To make the changeover simpler, allow the multifunction option but make it do nothing, since the PCI root code will already do the right thing. BUG=b:210795995 TEST=Run crosvm with --stub-pci-device with multifunction enabled Change-Id: I5d378001d495ec54bd4c1869de796ba6a418f43a Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3421006 Reviewed-by: Dennis Kempin <denniskempin@google.com> Tested-by: kokoro <noreply+kokoro@google.com> Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
2022-01-27merge-into-chromeos: Set Bot-Commit+1 as wellDennis Kempin
This is an experiment to figure out the permissions needed by crosvm-bot. See https://crbug.com/1289780 for details. BUG=chromium:1289780 TEST=None Change-Id: Ic202532ceaa2b0d86f51c8670137bde2d8f16868 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3419296 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com>
2022-01-27crosvm: add param to limit initial memoryDavid Stevens
Add an init-mem parameter that limits how much memory the VM can use on startup. If set, the balloon is inflated on startup to (mem - init-mem). BUG=b:213962590 TEST=set param and verify balloon inflates on startup Change-Id: I920bf9cfa26081ee544219406f8cf9827ff84bfa Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3394439 Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Commit-Queue: David Stevens <stevensd@chromium.org>
2022-01-27Disable virtio balloon device for protected VMs.Andrew Walbran
It is not compatible with pKVM and leads to RCU stalls on the host due to the virtio_balloon thread getting stuck. BUG=b:215517095 Change-Id: Ibd1c9db53bfa001e07ba6399ff50e9073476017d Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3412776 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Commit-Queue: Andrew Walbran <qwandor@google.com>
2022-01-27crosvm: Minimal change for manatee memory mapping.Junichi Uekawa
Do not map RAM to where the coreboot regions are. Shift boot time GDT and IDT a bit to make way for coreboot region at 0..fff. BUG=b:188011323 TEST=boot volteer-manatee TEST=tast run rammus-arc-r arc.Boot.vm # ARCVM still boots. TEST=tast run rammus-arc-r crostini.Basic.bullseye_stable volteer-manatee memory map: after: localhost ~ # dmesg | grep e820 [ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable [ 0.000000] BIOS-e820: [mem 0x0000000000200000-0x00000000cfffffff] usable [ 0.000000] BIOS-e820: [mem 0x00000000f4000000-0x00000000f7ffffff] reserved [ 0.000000] BIOS-e820: [mem 0x0000000100000000-0x00000003f05fffff] usable before: localhost ~ # dmesg | grep e820 [ 0.000000] BIOS-e820: [mem 0x0000000000001000-0x000000000009fbff] usable [ 0.000000] BIOS-e820: [mem 0x0000000000200000-0x000000005fffffff] usable [ 0.000000] BIOS-e820: [mem 0x00000000f4000000-0x00000000f7ffffff] reserved [ 0.000000] BIOS-e820: [mem 0x0000000100000000-0x0000000460600fff] usable Change-Id: Ifa19988c444d79dc81eb77c59e5b5434abf883fb Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3405402 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Commit-Queue: Junichi Uekawa <uekawa@chromium.org>
2022-01-27crosvm: Use MB and GB across the file.Junichi Uekawa
BUG=None TEST=build Change-Id: Ibd101c10ccc9425c389bbf3d43a1d44e3ebea7f6 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3405401 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Commit-Queue: Junichi Uekawa <uekawa@chromium.org>
2022-01-27devices: gpu: control lifetime of render server jailDmitry Torokhov
Rearrange the code that creates devices and starts the VM so that the jail object is not destroyed while VM is running and also make sure we kill the process when vm stops. BUG=b:177267762 TEST=./tools/presubmit Change-Id: Id35791e7264a52e34d2ddfac86425ad4b3c2d059 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3416101 Reviewed-by: Chia-I Wu <olv@google.com> Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Commit-Queue: Dmitry Torokhov <dtor@chromium.org>
2022-01-26plugin: switch to using resize_with() when initializing per-VCPU statesDmitry Torokhov
Now that resize_with() has stabilized and is available in version of Rust we are using we can switch to it instead of implementing the same by hand. BUG=None TEST=./tools/presubmit Change-Id: I08b418ad898ecbc52c63bd7a47f6470af30c8a66 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3417961 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Commit-Queue: Dmitry Torokhov <dtor@chromium.org>
2022-01-26merge-into-chromeos: Create a dry run merge as wellDennis Kempin
The dry run merge is re-created every day and automatically set to CQ+1. This allows us to check for bad crosvm changes while we submit parts of the merge chain. BUG=b:215741244 TEST=./tools/ci/simulate merge-into-chromeos.sh Change-Id: I0773a99f9858962e9f25bebff1b233d455d33cdd Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3417508 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com>
2022-01-26sys_util: add more features to UnixSeqpacketDavid Stevens
Add an accept_with_timeout method to UnixSeqpacket and implement a few basic traits for UnixSeqpacket. BUG=b:213962590 TEST=cargo test Change-Id: I1b8461e54aac2be31604213b252c15ce2195e33a Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3394438 Reviewed-by: Alexandre Courbot <acourbot@chromium.org> Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Commit-Queue: David Stevens <stevensd@chromium.org>
2022-01-26Add generalized file-backed mapping functionalityMattias Nissler
This is a generalization of the existing --direct-mmio option with the following improvements: * Memory is mapped directly into the guest namespace rather than handled via MMIO exits. * The --file-backed-mapping option can be specified multiple times to set up mappings backed by different files. * Command line option format is extensible, allowing to add further parameters in the future as needed. * O_SYNC mapping is configurable from the command line, making this useful for mapping both MMIO regions and regular system memory into the VM. One limitation that this new implementation brings is that mappings need to be page-aligned (which isn't the case for --direct-mmio). I'm not aware of existing users that require fine-granular file-backed MMIO mappings though, so this is hopefully OK. The existing --direct-mmio option code is left untouched, but will be removed later after converting over existing usage. BUG=b:184815519, b:188011323 TEST=unit tests for command line parsing, manual test to specify --file-backed-mapping and observe that the backing file content is accessible from the guest. Change-Id: I86aee74d2032caaf9130569203d5749994a4413d Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3328602 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Reviewed-by: Junichi Uekawa <uekawa@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Commit-Queue: Mattias Nissler <mnissler@chromium.org>
2022-01-26virtio: video: decoder: fix computed picture plane sizeAlexandre Courbot
The picture buffer size was computed from the size of the visible rectangle, which is potentially incorrect: if the origin of the visible rectangle is not (0, 0) then the buffer is going to be larger. Fix this by using the provided coded width and height, which correspond to the actual size of the buffer and not just its visible area. BUG=b:161774071 TEST=Android Youtube decodes properly on zork-arc-r. Change-Id: I80e15248f41d6202190456d2ab61f8f50d3b6ebb Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3412457 Reviewed-by: Chih-Yu Huang <akahuang@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org> Reviewed-by: David Staessens <dstaessens@chromium.org> Commit-Queue: Alexandre Courbot <acourbot@chromium.org>
2022-01-26crosvm: Merge README.chromeos to CONTRIBUTING.Junichi Uekawa
Docs are scattered around, and README.chromeos isn't markdown. Merge to CONTRIBUTING doc and update the relevant parts. Rename to README.chromeos.md and make it point to the other doc. BUG=None TEST=read it. Change-Id: Ib1df58e1a7c48d6faad71faffc9527da5f3218be Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3405403 Reviewed-by: Dennis Kempin <denniskempin@google.com> Tested-by: kokoro <noreply+kokoro@google.com> Commit-Queue: Junichi Uekawa <uekawa@chromium.org>
2022-01-26plugin: switch to using anyhow for error reportingDmitry Torokhov
Switching to anyhow allows us to get rid of the unwieldy error enum in places where we do not care about error codes. BUG=None TEST=./tools/presubmit and run Parallels VM on CrOS Change-Id: I4b9636801a7daa1d1289ce1bc4f9a92d47efaeb0 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3416093 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Commit-Queue: Dmitry Torokhov <dtor@chromium.org>
2022-01-26Teach create_base_minijail() to set up remount modeDmitry Torokhov
Instead of having to adjust this after the fact, let's teach create_base_minijail() handle this request. BUG=None TEST=./tools/presubmit Change-Id: Iabfd583f1d198c243d7d073785066a343ceac94e Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3416094 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Commit-Queue: Dmitry Torokhov <dtor@chromium.org>
2022-01-25Docs: remove --global from git configDennis Kempin
This causes problems with repo and should only be set on the crosvm repo. BUG=None TEST=None Change-Id: Id63a60f9ccebf3f7785a1473d15d6a9f88f8cdd0 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3414497 Reviewed-by: Dmitry Torokhov <dtor@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com>
2022-01-25Make vscode devcontainer usableDennis Kempin
The container was pretty much untested. Now that vscode supports dev containers via SSH I got to test this properly. This provides a workable dev environment out of the box. ./tools/presubmit passes and common extensions for rust, python and bash are added. BUG=None TEST=Open in vscode, re-open in dev container. Run ./tools/presubmit Change-Id: I542f3d26c29c4051000e6ec8b81d77d297bcad7d Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3402447 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Commit-Queue: Dennis Kempin <denniskempin@google.com>
2022-01-25x86: pass host's processor brand string to guestsDmitry Torokhov
Let's pass host's processor brand string to guests, so that lscpu and /proc/cpuinfo do not fall back to printing numeric model numbers but rather print vendor string, such as: Intel(R) Core(TM) i3-10110U CPU @ 2.10GHz or AMD Ryzen 3 3250C 15W with Radeon Graphics BUG=None TEST=boot zork and hatch, examine lscpu in crostini Change-Id: I7cd3ccd4a6328695cc180ee4c13d19d2e48f3def Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3410647 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Commit-Queue: Dmitry Torokhov <dtor@chromium.org>
2022-01-22coiommu: add unpin_gen_threshold parameter optimize the LRU unpinChuanxiao Dong
The pages which are frequently used by the VM are likely not to be unpinned. So an optimization is to skip the unpin scan for those pages in the LRU unpin policy. The unpin_gen_threshold defines a threshold number that, if a page cannot be unpinned in a period of (unpin_gen_threshold* unpin_interval) seconds, then this page will be marked as inactive. Those inactive pages will be scanned every (unpin_gen_threshold* unpin_interval) seconds if there is no enough active pages to unpin. BUG=b:188481989 TEST=Boot a VM with coiommu lru unpin policy + pass through devices. Change-Id: Ie020173097b6f4f925cafc121a802243ef65f165 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3292941 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Reviewed-by: David Stevens <stevensd@chromium.org>
2022-01-22coiommu: add two new commands to park and unpark unpinChuanxiao Dong
Unpin is handled indepently with the coiommu frontend driver. To support the DTT shrinker happened in coiommu, it needs a way to park the unpin thread for a while in case unpin is also accessing the DTT. When the shrink is done, frontend can unpark to make unpin thread work again. BUG=b:188481989 TEST=Boot a VM with coiommu lru unpin policy + pass through devices. In VM, use command #echo 2 > /proc/sys/vm/drop_caches to trigger shrink. Change-Id: Icea6aee6424f09339b549eb2735c73551a87a505 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3292940 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com>
2022-01-22coiommu: add deactivate command supportChuanxiao Dong
Deactivate command is used when the CoIOMMU driver in the guest is failed to probe, or CoIOMMU device is removed by the guest. But these are not expected to happen. Once this happened, the guest won't be functional as all the pass-through devices on top of CoIOMMU will not work. So in the backend side, just panic when receive such command. BUG=b:188481989 TEST=Boot a VM with coiommu and remove it in the guest. Change-Id: I912c71d80e6cbd02bf7edc6bfb30ef11051dc490 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3292939 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Reviewed-by: David Stevens <stevensd@chromium.org>
2022-01-22coiommu: expose policy parameter to allow user to set through cmdlineChuanxiao Dong
Add a crosvm parameter to allow user to sepcify the coiommu unpin policy. Besides unpin the pages when balloon inflate, coiommu also supports to periodically unpin with a LRU policy. The usage is like this: "--coiommu unpin_policy=lru,unpin_interval=10,unpin_limit=8192" which means to use LRU unpin policy with unpin interval is 10 seconds and the unpin count limit for each cycle is 8192 pages. Without specify the parameter, coiommu will use the default configuration which is to turn off the periodically unpin. BUG=b:188481989 TEST=Boot a VM with coiommu lru unpin policy + pass through devices. Change-Id: I10414cc6b2520b804685450dfd1560cfe49455a7 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3292938 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Reviewed-by: David Stevens <stevensd@chromium.org>
2022-01-22coiommu: add LRU unpin policyChuanxiao Dong
LRU unpin policy is an internal unpin policy which is triggered by a timer. This policy can be used when there is no external balloon unpin request. BUG=b:188481989 TEST=Boot a VM with coiommu enabled + pass through devices. Change-Id: Icb6e19073cb668fa954aec97e02be77f1b8f6a04 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3292937 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Reviewed-by: David Stevens <stevensd@chromium.org>
2022-01-22balloon: create balloon with tube for unpinning requestChuanxiao Dong
Put the VFIO pass-through devices and coIOMMU creating earlier than the virtio device so that when creating virtio-balloon it can use the tube from coIOMMU to send the unpining request when processing the inflate. BUG=b:188481989 TEST=Boot a VM with Network device pass through w/ coiommu, and do the iperf test. Then perform balloon inflate/deflate. Change-Id: If3ff9b3b0293ce49a39498a18feae1d697523f92 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3292936 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Reviewed-by: David Stevens <stevensd@chromium.org>
2022-01-22Set rlimit if virtio IOMMU or coIOMMU is usedChuanxiao Dong
vIOMMU will dynamically pin VM's memory and in the extreme case they might pin the entire VM's memory. RLIMIT_MEMLOCK will control how much memory can be pinned by the process. So set the RLIMIT_MEMLOCK to be allow pinning the entire VM's memory in the extreme case. BUG=b:188481989 TEST=Boot a VM with Network device pass through w/ coiommu, and perform the iperf test. Change-Id: Ibceaa274646d5a0afac183d30c8df75c44c92775 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3292935 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Reviewed-by: David Stevens <stevensd@chromium.org>
2022-01-22coiommu: enable coiommuChuanxiao Dong
Coiommu can be enabled through the command line. E.g. To enable coiommu for a VFIO pass-through device: --vfio=/sys/bus/pci/devices/0000:00:02.0,iommu=coiommu BUG=b:188481989 TEST=Boot a VM with a VFIO pass through device w/ coiommu TEST=Boot a VM with a VFIO pass through device w/o coiommu Change-Id: Ica6145d7bc6a4c398f0fc10899f8ee24138615c4 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3292934 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Reviewed-by: David Stevens <stevensd@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com>
2022-01-22balloon: add a tube for sending unpin requestChuanxiao Dong
When balloon to do inflate to release some memory to hypervisor, such memory should also be unpinned by the component(e.g. coiommu) which has pinned these memory. This tube will be used by balloon to send the unpin request to the components(e.g. coiommu) to do the unpin before releasing the memory. BUG=b:188481989 TEST=Boot a VM and check balloon inflate/deflate Change-Id: I06aa8bd8c11deeac9f133adbefa6442cf1b722de Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3292932 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Reviewed-by: David Stevens <stevensd@chromium.org>