aboutsummaryrefslogtreecommitdiff
path: root/Cargo.toml
AgeCommit message (Collapse)Author
2024-05-31UPSTREAM: Implement virtio-snd aaudio stream to support audio in androidMu-Le Lee
This change introduces feature audio_aaudio on top of the support of virtio-snd-multiple-backend. The android_audio uses the Android AAudio NDK library to play audio. A libaaudio_stub is provided for building and testing on non-android environment. Bug=b:325930215 Test=Play Youtube video on panther Test=./tools/dev_container Test=cargo build Test=cargo build -F audio_aaudio,libaaudio_stub Test=./tools/run_tests Test=./tools/presubmit Change-Id: I7c275433bf94d4a347720ce0ffa9127ffcb66a1e Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/5556704 Reviewed-by: Jiyong Park <jiyong@google.com> Reviewed-by: Frederick Mayle <fmayle@google.com> Auto-Submit: Mu-Le Lee <mulelee@google.com> Commit-Queue: Mu-Le Lee <mulelee@google.com> Reviewed-by: Chih-Yang Hsia <paulhsia@chromium.org>
2024-04-12cros_async: Blocking tokio executor for linuxA. Cody Schuffelen
This is selectable with a new ExecutorKind. Rather than using the common_executor backend, it uses tokio as the backend. Bug: b/320603688 Test: tools/presubmit Test: cargo build --features=cros_async/tokio --target=x86_64-unknown-linux-gnu Change-Id: Ibf65b17077048f4ed1cce07fa985787b1eb1b6a3 Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/5174966 Commit-Queue: Cody Schuffelen <schuffelen@google.com> Reviewed-by: Frederick Mayle <fmayle@google.com>
2024-04-09metrics: Remove downstream metrics dependenciesDavid Stevens
Add a metrics_event package instead of relying on metric events provided out of a vendor/ crate. The new API defines the same events as the existing vendor API, except it removes any dependencies on downstream details. To allow downstream projects to define their own events, the new API adds a vendor metrics_event package to support downstream-only event types. BUG=b:332466813 TEST=./tools/dev_container ./tools/presubmit all Change-Id: I766ad6ca2a0a437bb487e27fb84a4984f66c9770 Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/5400361 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Reviewed-by: Noah Gold <nkgold@google.com> Reviewed-by: Dennis Kempin <denniskempin@google.com> Commit-Queue: David Stevens <stevensd@chromium.org>
2024-03-26gpu_display: add Android display backendJason Macnak
This change introduces two features: * android_display and * android_display_stub The android_display feature adds a new GPU display backend for Android which emits the display output to an Android surface. The surface is not created by the backend itself, but by an external entity (ex: Android app) by creating a SurfaceView. This allows us to display a VM anywhere the app is shown. The owner of the surface (the app) is expected to share the surface with the new backend by calling an AIDL method that the backend will implement. The AIDL service implementing the method will be registered to the service manager using the name set via the cmdline option --android-display-service NAME. This CL however doesn't include the implementation of the AIDL service because upstream crosvm doesn't support building an AIDL service and Android-specific libraries like libnativewindow. Instead, the android_display_stub feature provides a no-op stub for the AIDL service, so that we can at least build the rest of the new display backend. TEST=cargo build TEST=cargo build -F android_display,android_display_stub TEST=./tools/run_tests TEST=./tools/run_tests -F android_display,android_display_stub TEST=./tools/presubmit Bug: 325929966 Change-Id: I24f672beaa4a28253f150306a64df34f4962361e Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/5390926 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Commit-Queue: Jiyong Park <jiyong@google.com>
2024-03-13tree-wide: replace data_model::zerocopy_from_*()Daniel Verkamp
Use zerocopy functions directly instead. This is a step toward replacing our data_model crate with standard crates.io functionality where possible. BUG=b:312312646 TEST=tools/dev_container tools/presubmit Change-Id: I9717edce6fe2b4ca53ad9043db61de2e9bc55b78 Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/5046345 Reviewed-by: Dennis Kempin <denniskempin@google.com> Commit-Queue: Daniel Verkamp <dverkamp@chromium.org> Reviewed-by: Noah Gold <nkgold@google.com>
2024-03-13virtio/pvclock: Support Linux hostsHikaru Nishida
BUG=b:295256641 TEST=cargo build -F pvclock TEST=cargo test -p devices -F pvclock -- pvclock TEST=cargo test -p e2e_tests -- suspend TEST=tools/dev_container tools/presubmit all TEST=crrev/c/5151637 Change-Id: I57fe8ece5a205decb36ef7863d8e5c4f4f4c6bde Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4576848 Commit-Queue: Hikaru Nishida <hikalium@chromium.org> Reviewed-by: David Stevens <stevensd@chromium.org>
2024-03-12Use PvClockState struct for storing serializable part at runtimeHikaru Nishida
Create and use PvClockState struct. Before this CL, PvClockSnapshot had been created by hand because of Arc is used for total_suspend_ns. However, it can be serialized when rc feature is enabled for serde crate so enable it and share the common struct to make the code clean. c.f. https://docs.rs/serde/latest/serde/trait.Serialize.html#impl-Serialize-for-Arc%3CT%3E BUG=None TEST=cargo build -F pvclock TEST=cargo test -p devices -F pvclock -- pvclock TEST=cargo test -p e2e_tests -- pvclock Change-Id: I28ef9a3a4b2bf757397ce0be5a0c36bc72bc1489 Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/5312036 Reviewed-by: David Stevens <stevensd@chromium.org> Commit-Queue: Hikaru Nishida <hikalium@chromium.org>
2024-03-07crypto: add generic crate for snapshot encryption.Noah Gold
The generic portion contains only interfaces, but no actual encryption code. It will be used by an upcoming snapshot encryption option. BUG=b:286345300 TEST=n/a (intended to always panic) Change-Id: I54e8d4753a5584ffe7e9f0df5c31636ad34a905d Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/5350786 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Commit-Queue: Noah Gold <nkgold@google.com> Reviewed-by: Dennis Kempin <denniskempin@google.com>
2024-03-04gpu_display: new vulkan displayKaiyi Li
This is a new display path for creating vulkan-based surfaces. Test: build Change-Id: I28e3b455ed265b615c4f8fe7c6ac28e2da81ec2e Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/5214569 Reviewed-by: Dennis Kempin <denniskempin@google.com> Reviewed-by: Ryan Neph <ryanneph@google.com>
2024-02-23tube_transporter: remove from exclude and fix clippy issuesDaniel Verkamp
Change-Id: I834476fe3ac906309962355ae622466682222b7a Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/5321576 Reviewed-by: Vikram Auradkar <auradkar@google.com> Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
2024-02-23win_audio: remove from exclude and fix clippy warningsDaniel Verkamp
This seems to build fine upstream, so re-enable it to ensure it does not get broken accidentally. Change-Id: I1fcb5678ce33edb24d1aa047fa405b1d27100206 Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/5321440 Reviewed-by: Vikram Auradkar <auradkar@google.com> Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
2024-02-23win_util: remove from exclude and fix clippy checksDaniel Verkamp
Change-Id: Ibfe05312db8c44dbc7f515b10b830c1e75e96852 Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/5321575 Reviewed-by: Vikram Auradkar <auradkar@google.com> Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
2024-02-23Cargo.toml: remove deprecated "chromeos" featureDaniel Verkamp
This has been replaced by individual feature flags, which are enabled by the downstream ChromeOS chromeos-base/crosvm package. BUG=b:244618505 TEST=tools/dev_container tools/presubmit TEST=emerge-$BOARD chromeos-base/crosvm Change-Id: I9f540d947ef8050335e5f8ca3e33ebbbf32a1836 Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/5311522 Reviewed-by: Dennis Kempin <denniskempin@google.com> Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
2024-02-16linux: remove memfd panic handlerDaniel Verkamp
This is only intended to be used on the downstream ChromeOS version of crosvm, so we should really be patching it there rather than carrying this code in upstream crosvm. The crosvm version of the memfd panic handler will be replaced with the version from libchromeos-rs. BUG=b:325081271 BUG=b:309651697 Change-Id: I0587bacd103a3f2471d2ac7227903df6cd7e0028 Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/5293235 Commit-Queue: Daniel Verkamp <dverkamp@chromium.org> Reviewed-by: Dennis Kempin <denniskempin@google.com>
2024-02-08Cargo.toml: add vulkano as top-level featureRyan Neph
Hook rutabaga_gfx/vulkano into a new top-level feature of the same name, so that it can be detected for conditional compilation of gpu device creation details. Also moves the `vulkano` dependency out of windows-specific list and into generic list for all platforms. (Note: the existing rutabaga_gfx/Cargo.toml hacks must still be locally applied and rust-toolchain channel must be manually set to 1.70 or greater to successfully build with --feature=vulkano) BUG=b:246334944 BUG=b:244591751 Test=tools/dev_container tools/presubmit Change-Id: Ic1938f3d8599de1414539abf5a4b57a9fe1764dd Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/5264226 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Commit-Queue: Ryan Neph <ryanneph@google.com>
2024-01-26Cargo.toml: add noncoherent-dma feature flagStanislaw Kardach
Add a top level noncoherent-dma feature flag as well as its counterparts in devices and hypervisor modules. This flag enables the MemCacheType::CacheNonCoherent handling, ensuring that behavior introduced in the previous commit can be selectively enabled. BUG=b:316337317 TEST=emerge-rex chromeos-base/crosvm TEST=USE=crosvm-noncoherent-dma emerge-rex chromeos-base/crosvm Change-Id: I13f50547b21ce804c5fa4b8f6328931f558b717e Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/5237126 Reviewed-by: Frederick Mayle <fmayle@google.com> Reviewed-by: Zhenyu Z Wang <zhenyuw@linux.intel.com> Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Commit-Queue: Stanisław Kardach <skardach@google.com>
2024-01-10Cargo.toml: Move pci-hotplug flag to all-defaultWang Ningyuan
The pci-hotplug compile time flag is enabled for all architectures to keep vm-control API consistency. Moving the flag to all-default ensures test coverage for compliation of crosvm and vm-control. This CL also contains fixes required to enable the tests. BUG=b:243767476 BUG=b:293801301 TEST=./tools/dev_container cargo build --target aarch64-unknown-linux-gnu TEST=./tools/dev_container ./tools/presubmit Change-Id: I99df55eaeb89d26dd9ce5175417eb4e154c28a9b Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/5179895 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org> Commit-Queue: Ningyuan Wang <ningyuan@google.com>
2024-01-04Upgrade gdbstub and gdbstub_arch.Ludovic Barman
gdbstub 0.6.3 -> 0.7.0 gdbstub_arch 0.2.4 -> 0.3.0 There is small change in API, see src/crosvm/gdb.rs. `read_addrs` now returns a `usize` instead of a `()`. This change is needed to submit this AOSP topic: https://android-review.git.corp.google.com/c/platform/external/crosvm/+/2879249 BUG=b:286979636 TEST=tools/presubmit --all Change-Id: I124d65e673c5943070c2bb5e39e3a7e5506e5528 Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/5146447 Commit-Queue: Frederick Mayle <fmayle@google.com> Reviewed-by: Vikram Auradkar <auradkar@google.com> Reviewed-by: Dennis Kempin <denniskempin@google.com>
2023-12-15rutabaga_gfx: Remove virgl_renderer_next feature flagDmitry Osipenko
Crosvm enables unstable virglrenderer features based on the pkgconfig flags. The virgl_renderer_next build flag isn't used anymore, remove it. BUG=none TEST=none Suggested-by: Gurchetan Singh <gurchetansingh@chromium.org> Change-Id: I96ba36a9a8c1af9a252e8dcbe664cbf1597543a6 Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com> Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/5077248 Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org> Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Reviewed-by: Ryan Neph <ryanneph@google.com> Reviewed-by: Dennis Kempin <denniskempin@google.com> Commit-Queue: Ryan Neph <ryanneph@google.com>
2023-11-16crosvm: Add more release build profilesZihan Chen
Add codegen-units=1 build profile to further reduce binary size and potentially improve performance. tools/build_release is updated to allow choice of build profiles. To keep binary size measurement trend consistent, release build recipe is running with chromeos profile. crosvm size of different profiles at current cl: relase profile (w/o strip symbols) 24192680, chromeos profile (strip symbols from release) 15088272, lto profile (fat lto & strip symbols) 14326144, largecodegen profile (codegen-units=1 w/ fat lto) 13764896 TEST=./tools/build_release --profile largecodegen BUG=b:181105093 Change-Id: I057ddfce3e78aa4dfe6b4810f4bcb1f13b954bb4 Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/5027712 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Auto-Submit: Zihan Chen <zihanchen@google.com> Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
2023-11-13smbios: add support for setting UUID in SysInfoMike Gerow
TEST=booted test kernel, ensured uuid is correctly returned at /sys/class/dmi/id/product_uuid. BUG=b:249382713 Change-Id: I444adebcea4b374b8c2744afba32cad5ff794ce0 Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/5010881 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Reviewed-by: Dennis Kempin <denniskempin@google.com> Commit-Queue: Mike Gerow <gerow@google.com>
2023-10-11Replace #[cfg(unix)] with #[cfg(any(target_os = "android", target_os = ↵A. Cody Schuffelen
"linux"))] Updates are made to source and documentation. This more accurately represents the currently supported platforms of Android/Linux and Windows, without unexpectedly including other unix-like operating systems. Command to reproduce: $ find . -type f -not -path '*/\.git/*' | xargs -I {} sed -i 's/cfg(unix)/cfg(any(target_os = "android", target_os = "linux"))/g' {} $ cargo fmt md files manually updated to fix line lengths. Renaming `unix` modules to `linux` will be done in a later CL. Test: ./tools/dev_container ./tools/presubmit Bug: b/298269162 Change-Id: I42c1bf0abf80b9a0df25551613910293217c7295 Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4909059 Commit-Queue: Cody Schuffelen <schuffelen@google.com> Reviewed-by: Frederick Mayle <fmayle@google.com> Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Reviewed-by: Noah Gold <nkgold@google.com>
2023-10-10crosvm: Remove DataInitZihan Chen
DataInit type is finally completely eliminated from crosvm. No traces, not even in comments, were left. BUG=b:300969352 BUG=b:204409584 Change-Id: I79742f8e06b90afd53fab338d9052b25ae0af84e Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4878508 Reviewed-by: Frederick Mayle <fmayle@google.com> Commit-Queue: Frederick Mayle <fmayle@google.com> Auto-Submit: Zihan Chen <zihanchen@google.com> Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
2023-10-09Cargo.toml: remove chromeos from base and devicesDaniel Verkamp
This feature does nothing in the base and devices crates, so remove it. The remaining features enabled by chromeos are still needed until they are enabled explicitly in the crosvm ebuild, so they aren't removed yet. BUG=b:244618505 TEST=emerge-brya crosvm Change-Id: I4fec40fb7ceb4eeff75266a66f19c0f142b9195a Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4873792 Commit-Queue: Daniel Verkamp <dverkamp@chromium.org> Reviewed-by: Dennis Kempin <denniskempin@google.com>
2023-10-02devices: remove --software-tpm supportDaniel Verkamp
The software TPM backed by the libtpm2 simulator was only used for testing; now that we have the vTPM proxy device, the software TPM is no longer needed. This also allows removal of the tpm2 submodule (tpm2-sys/libtpm2). BUG=b:300673042 TEST=tools/dev_container tools/presubmit Change-Id: I3feb5f715f9f12f832450df712c0f63ed7b4fb13 Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4875221 Reviewed-by: Dennis Kempin <denniskempin@google.com> Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
2023-09-12Cargo.toml: introduce net featureDaniel Verkamp
This commit just adds the feature but intentionally does not use it yet. For downstream projects (e.g. the ChromeOS crosvm ebuild) that use --no-default-features and enable individual features manually, those projects will need to add the net feature to their build scripts in order to keep network functionality. Once that is done, then we can make the net feature actually control whether the net device is built. Change-Id: I47e405ac295eef933f5d83ec3a4a490028da231b Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4823132 Reviewed-by: Dennis Kempin <denniskempin@google.com> Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
2023-09-05Remove virtio-vhost-user (VVU) supportDaniel Verkamp
This code is unused and untested, while simultaneously making the rest of the virtio device code more complex. Remove it. BUG=b:276993009 TEST=tools/dev_container tools/presubmit Change-Id: I9d44f92419c6912d1735043404d4f64efc95bba4 Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4676076 Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org> Commit-Queue: Daniel Verkamp <dverkamp@chromium.org> Reviewed-by: Frederick Mayle <fmayle@google.com> Reviewed-by: Junichi Uekawa <uekawa@chromium.org>
2023-08-28Add --no-default-features build to linux buildersDennis Kempin
This will be run by default by CI builders, but not locally as it invalidates the build cache. BUG=b:260607247 TEST=dev_container presubmit --no-delta all Change-Id: I75f3d97bda6881a343364875e53e529a39ff168a Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4818791 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Commit-Queue: Dennis Kempin <denniskempin@google.com>
2023-08-28qcow_utils: remove unused libraryDaniel Verkamp
This is not used by vm_concierge after https://crrev.com/c/4781331 and there are no other users that I can find, so remove the unused code. BUG=b:296117425 TEST=emerge-brya crosvm vm_host_tools Change-Id: Icd81a977fdfa856522a9cf0ab91d1e5291a5c4e2 Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4808256 Reviewed-by: Dennis Kempin <denniskempin@google.com> Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
2023-08-14Replace internal p9 with crates.io versioDennis Kempin
The code is being moved to https://github.com/google/rust-p9 and published via crates.io BUG=b:293164618 TEST=presubmit Change-Id: Iee96cdff8bae6f9ae4faa59dfc80d2132ed31822 Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4735191 Commit-Queue: Dennis Kempin <denniskempin@google.com> Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
2023-07-27crosvm: virtio-net device hotplugWang Ningyuan
This CL implements PCI hotplug feature for virtio-net device. The feature is controlled by pci-hotplug feature flag and pci-hotplug-slots runtime flag. No behavior change to crosvm unless pci-hotplug-slots flag is set to a nonzero value. BUG=b:243767476 TEST=tools/presubmit TEST=e2e_test::tap_hotplug for TAP device hotplug and removal TEST=manual test for TAP device hotplug and removal with swap Change-Id: I5a60314293ef8a27981d7b550a61822491c254bb Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4473610 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Reviewed-by: Shin Kawamura <kawasin@google.com> Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org> Commit-Queue: Ningyuan Wang <ningyuan@google.com> Reviewed-by: Dennis Kempin <denniskempin@google.com> Reviewed-by: Jason Iman <jasongustaman@chromium.org>
2023-07-26Move audio_streams_conformance test to workspaceDennis Kempin
This will ensure the binary is compiled in upstream CI. The new location will require an updated ebuild file and needs to be synchronized via Cq-Depend during the ChromeOS merge process. BUG=b:293164205 TEST=presubmit Change-Id: I51f4d8b8e606b64f124bf2801c1e4701d00eed85 Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4718765 Reviewed-by: Judy Hsiao <judyhsiao@google.com> Commit-Queue: Dennis Kempin <denniskempin@google.com>
2023-07-25Remove all remaining --features=direct codeDaniel Verkamp
BUG=b:279663365 TEST=tools/dev_container tools/presubmit Change-Id: Iaa0b8176a54982044137b112039bf04f1e183c4e Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4713506 Reviewed-by: Junichi Uekawa <uekawa@chromium.org> Reviewed-by: Grzegorz Jaszczyk <jaszczyk@google.com> Commit-Queue: Daniel Verkamp <dverkamp@chromium.org> Reviewed-by: Dmytro Maluka <dmy@semihalf.com>
2023-07-24devices: pci: Hotplug compatible PCI traitWang Ningyuan
CL introduces HotPluggable, additional requirements for a PciDevice to be configured in a hotplug context. VirtioPciDevice is currently the only supported type. TEST=tools/presubmit BUG=b:243767476 Change-Id: I0e8a6c6fbd430216874b54d7b577f04cd4bae5fd Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4615383 Reviewed-by: Chih-Yu Huang <akahuang@chromium.org> Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Reviewed-by: Ryuichiro Chiba <chibar@chromium.org> Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
2023-06-09crash_report: refactor product specific codeVikram Auradkar
BUG=b:286107739 TEST=none Change-Id: I8aa0dd5335a6d85566a75afc2fc1245380dd6dcd Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4605997 Commit-Queue: Vikram Auradkar <auradkar@google.com> Reviewed-by: Noah Gold <nkgold@google.com>
2023-06-09anti_tamper: refactor generic codeVikram Auradkar
Moves generic anti-tamper into its own crate under '/vendor/generic/anti_tamper' BUG=b:286107739 TEST=none Change-Id: I47045ce9ffe690340cd1ba749bdb692bbd624f92 Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4605893 Reviewed-by: Noah Gold <nkgold@google.com> Commit-Queue: Vikram Auradkar <auradkar@google.com>
2023-05-22balloon: use protos for registered eventsmaciek swiech
since the RegisteredEvent model is effectively an external API, switch to using protobuf as a more formal/stable means of communicating messages. also introduces exporting the registered_events.proto file as part of crosvm_control build, alongside the currently existing header file. this patch also introduces feature-gating for registered_events and protos so as not to bring in too many third party dependencies for a base build. BUG=b/278117550 TEST=run bzImage locally TEST=sidecar program available at https://x20.corp.google.com/users/dr/drmasquatch/socket-pinger-proto Change-Id: I5d91d87f7807effc125352caf5c75eee2593f70d Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4521604 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Commit-Queue: maciek swiech <drmasquatch@google.com>
2023-05-17video: decoder: vaapi: switch to external cros-codecsAlexandre Courbot
Use the version of cros-codecs publishes on crates.io and adapt the code to be able to use it. This results in a few simplifications as e.g. frame ordering is guaranteed by cros-codecs and we don't need to handle it anymore. BUG=b:262824148 TEST=ffmpeg -codec:v vp9_v4l2m2m -i Big_Buck_Bunny_720_10s_1MB.webm Big_Buck_Bunny-%03d.png TEST=cargo test --features "video-decoder,vaapi,ffmpeg" -p devices -- --include-ignored test_decode_h264 Change-Id: Ib694afe8206a4d85b307efaaf3f6669dfe4e18bb Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4518093 Auto-Submit: Alexandre Courbot <acourbot@chromium.org> Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org> Reviewed-by: Dennis Kempin <denniskempin@google.com> Commit-Queue: Alexandre Courbot <acourbot@chromium.org>
2023-05-16fuzz: Move fuzzers to standard `cargo fuzz` locationDennis Kempin
This simplifies `cargo fuzz` usage. Fuzzers can be built with `cargo fuzz build` without any other arguments. BUG=b:279217867 TEST=`cargo fuzz build` Change-Id: I11b8a8ba4c2b3e2d1a42973699e4d9c3920635b6 Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4540001 Commit-Queue: Dennis Kempin <denniskempin@google.com> Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
2023-05-16fuzz: Move cros-fuzz into crosvm-fuzzDennis Kempin
We no longer need to share cros-fuzz with ChromeOS. So we can consolidate our fuzzing code and reorganize it to work well with `cargo fuzz`. BUG=b:279217867 TEST=cargo +nightly fuzz build --fuzz-dir=crosvm-fuzz -O Change-Id: I75653961c6cbf251af9e54f894d6f20ea1218b53 Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4539922 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
2023-05-12swap: make swap/enable not defaultShintaro Kawamura
"enable" feature in swap crate was set as default to run unit/integration tests of the crate. https://crrev.com/c/4486546 However missing `default-features = false` at non-root Cargo.toml cause other crates (e.g. x86_64) installing userfaultfd always. This makes the swap/enable non-default. CQ still runs unit/integration tests of the swap crate on aarch64 and x86_64. BUG=b:281935498 TEST=cargo test -p swap --features=swap/enable Change-Id: I57436c3cb8cbdfac04c3145cc599261b89cf4e0e Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4518090 Commit-Queue: Shin Kawamura <kawasin@google.com> Reviewed-by: Dennis Kempin <denniskempin@google.com>
2023-05-11Upstream the perfetto crate.Noah Gold
This is a step towards upstreaming Perfetto support (adding the Perfetto Rust wrappers). These wrappers won't compile until we have the Perfetto source & libraries in place. BUG=b:277138899 TEST=n/a Change-Id: Ic9cc86285383b114cecf7cfe574b3e2511d7afeb Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4428221 Reviewed-by: Steven Moreland <smoreland@google.com> Reviewed-by: Morg <morg@chromium.org> Reviewed-by: Dennis Kempin <denniskempin@google.com> Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org> Commit-Queue: Noah Gold <nkgold@google.com>
2023-05-09Switch to current cargo resolverDennis Kempin
We originally held this back when switching to the 2021 edition of rust as it was causing issues in downstream projects. If this is still an issue, I would recommend not merging this change downstream. BUG=b:223855233 TEST=CQ Change-Id: I4a3eb99ee34f4495dd42cd0dea0f4864002519c3 Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4517945 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Reviewed-by: Vikram Auradkar <auradkar@google.com> Commit-Queue: Dennis Kempin <denniskempin@google.com>
2023-05-04crosvm: enable gdb feature on all architecturesDaniel Verkamp
Remove the architecture-specific requirements from the gdb config checks. This enables gdb across every supported target_arch without having to manually add new architectures to each cfg check. For the specific case of target_arch = "arm", this patch will newly enable gdb support. The gdbstub protocol will still send aarch64 state, matching the guest. This stubs out enough riscv64 gdb functions and types to make `cargo build --features=gdb` compile, but gdb support will not be functional on that architecture without additional work. Change-Id: I63b079b7a3dca4aec2c13c775c0ccb8850625884 Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4506285 Commit-Queue: Daniel Verkamp <dverkamp@chromium.org> Reviewed-by: Dennis Kempin <denniskempin@google.com> Reviewed-by: Dylan Reid <dgreid@rivosinc.com>
2023-05-04swap: expose Status interface to all variantsShintaro Kawamura
Status does not depend on any swap related feature. Exposing Status to all variants is easy to implement swap status FFI at crosvm_control. The new "swap/enable" feature switches the actual vmm-swap functionality to be compiled. The feature is enabled by default on "swap" crate but disabled on the root package for test dependency. Vmm-swap feature is enabled by `--features=swap` flag on cargo build as before. swap/src/controller.rs is copied from swap/src/lib.rs. BUG=b:265386761 TEST=tools/dev_container tools/run_tests2 Change-Id: Ifc2539a62d0f594fd5bbb41623c735ea2621f7b6 Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4486546 Reviewed-by: Dennis Kempin <denniskempin@google.com> Commit-Queue: Shin Kawamura <kawasin@google.com> Reviewed-by: David Stevens <stevensd@chromium.org>
2023-05-03tools: Add riscv platformDylan Reid
Allow running riscv unit tests only. This required filtering out some workspace projects that can't yet build on riscv because the backing packages aren't installed. Aside from that and passing the new `--no-default-features` flag to `run_tests`, this is mostly copy/paste of aarch64 support. TEST=./tools/run_tests -p riscv64 --no-default-features TEST=./tools/presubmit unit_tests Change-Id: If0f74f1bb6eb42e1fe24ad31f4c1aa06f7822f8c Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4500729 Commit-Queue: Dennis Kempin <denniskempin@google.com> Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
2023-04-28Cargo.toml: upgrade protobuf 2.x -> 3.xDaniel Verkamp
system_api bindings have been regenerated with protobuf 3.2; this should be okay to land before the full ChromeOS system_api migration, since crosvm always uses its own copy of the bindings rather than the ones provided by the dev-rust/system_api package. The protoc-rust crate is replaced with protobuf_codegen in 3.x. BUG=b:277243607 BUG=b:279834784 TEST=tools/dev_container tools/presubmit Change-Id: I6aad45ded2639d7506a7238800584bebab196455 Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4405309 Reviewed-by: Dennis Kempin <denniskempin@google.com> Commit-Queue: Daniel Verkamp <dverkamp@chromium.org> Reviewed-by: Noah Gold <nkgold@google.com>
2023-04-26Add riscv target to main crosvm buildDylan Reid
Allows running crosvm on riscv64 devices. Tested on a qemu host with `-machine virt,aia=aplic-imsic,aia-guests=4` Change-Id: I9b369718bcb438f043e3342f1866c56fc4983304 Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4460941 Reviewed-by: Dennis Kempin <denniskempin@google.com> Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
2023-04-21Update argh to 0.1.10Alexandre Courbot
We want support for #[switch] on Option<bool> in order to support specifying several configuration files. This feature has been merged in 0.1.10. BUG=b:218223240 TEST=cargo build Change-Id: I4f1a2474f797907fbd180b0ebe67d87ea7920b46 Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4414501 Commit-Queue: Alexandre Courbot <acourbot@chromium.org> Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Reviewed-by: Dennis Kempin <denniskempin@google.com>
2023-04-17Cargo.toml: remove crosvm-direct binaryDaniel Verkamp
Remove the extra [[bin]] from Cargo.toml, as it is no longer used by the chromeos-base/crosvm ebuild. The "direct" feature is kept for now, since some of the functionality behind that flag may still be useful (and should be moved to separate features rather than "direct" eventually). BUG=b:276993009 TEST=cargo build TEST=tools/dev_container tools/presubmit Change-Id: I78269d94913a216ebfb7f22ddc58d9cfdb6a6791 Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4436629 Reviewed-by: Dennis Kempin <denniskempin@google.com> Reviewed-by: Junichi Uekawa <uekawa@chromium.org> Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>