This is the first `cargo test` which uses a linux kernel binary in
testing crosvm's major functionality. To get that binary, the test tries
various sources which may be influenced by the enviroment. If need be,
the chromiumos kernel is downloaded via git, configured, and built so
that crosvm can use it. The resulting binary is cached so that other
tests which need it can run much quicker.
TEST=cargo test -- boot
BUG=None
Cq-Depend: chromium:1867729
Change-Id: I123441d358ef886e0d7369eaa4ebd87373026d99
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1742924
Reviewed-by: Stephen Barber <smbarber@chromium.org>
Tested-by: Zach Reizner <zachr@chromium.org>
Commit-Queue: Zach Reizner <zachr@chromium.org>
Auto-Submit: Zach Reizner <zachr@chromium.org>
Use immediate exit when avaialable to improve performance.
BUG=None
TEST=Local build and test.
Change-Id: I5a4fb3dc310f3b2969113f6d57290099f84a0187
Signed-off-by: Matt Delco <delco@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1847861
Reviewed-by: Zach Reizner <zachr@chromium.org>
If the immediate exit feature is available then we use use it to improve
performance.
BUG=None
TEST=Local build and test.
Change-Id: I368ae7a711de72955777cd434450789e9a10616c
Signed-off-by: Matt Delco <delco@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1847860
Reviewed-by: Zach Reizner <zachr@chromium.org>
The straightforward API is for use by the vcpu loop, while the API based
on thread-local state is intended for use by a signal handler.
BUG=None
TEST=Local compile and test.
Change-Id: I2e01bba11687b664418d113fc5faa480524b093a
Signed-off-by: Matt Delco <delco@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1847859
Reviewed-by: Zach Reizner <zachr@chromium.org>
The `next_avail` field is a Wrapping<u16> but we pull out the underlying
u16 when calculating the descriptor index address offset in Queue::pop
and only convert the result to a u64 after applying all the operations.
This can cause a u16 overflow if the queue size is the max
allowed (2^15). Instead, convert to a u64 immediately after calculating
the index so that the rest of the operations are carried out as u64s and
will not overflow.
BUG=chromium:1018319
TEST=`cros_fuzz reproduce` and unit tests
Change-Id: I49743e239e2a407498d862c5137930f3f0cdf72a
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1884404
Reviewed-by: Dylan Reid <dgreid@chromium.org>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
Auto-Submit: Chirantan Ekbote <chirantan@chromium.org>
Use the "at" variants of the read/write functions in the block device.
This reduces the number of syscalls on the host per I/O to one
(pread64/pwrite64) rather than two (lseek + read/write).
The CompositeDiskFile implementation is also updated in this commit,
since it's both a producer and consumer of DiskFile, and it isn't
trivial to update it in a separate commit without breaking compilation.
BUG=None
TEST=Start Crostini on kevin, banon, and nami
Change-Id: I031e7e87cd6c99504db8c56b1725ea51c1e27a53
Signed-off-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1845948
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Stephen Barber <smbarber@chromium.org>
Rather than using self.current_offset in the internal read_cb and
write_cb helper functions, make them take the starting offset as a
parameter, and move the current_offset update to the callers.
This will allow the read_cb and write_cb functions to be used in
implementing the FileReadWriteAtVolatile trait.
BUG=None
TEST=cargo test -p qcow
Change-Id: Ifa60f6fea27050d0a88f2c00e77e62d4e36b809f
Signed-off-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1845945
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Dylan Reid <dgreid@chromium.org>
Improve the virtqueue_fuzzer's performance by reducing the maximum queue
size as well as the size of the guest memory. Zeroing out 256MB of
memory on every iteration was slowing things down quite a bit and we
don't actually need that much memory to fuzz the virtqueue code.
Additionally, refactor the fuzzer to use the virtqueue structs from the
virtio spec to fill out the guest memory. This should give us more
targeted fuzzing compared to the previous implementation, while also
removing cases where the fuzzer would spin for thousands of iterations
without making any progress.
BUG=chromium:1018267
TEST=`cros_fuzz reproduce` and also run the fuzzer manually
Change-Id: Ibf71aa83c31f16b7f58b23045a0919f7f6824c77
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1886533
Tested-by: Chirantan Ekbote <chirantan@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Stephen Barber <smbarber@chromium.org>
Commit-Queue: Sean Abraham <seanabraham@chromium.org>
Auto-Submit: Chirantan Ekbote <chirantan@chromium.org>
When vfio device msi is enabled, use VmIrqRequest->AllocateOneMsi() to
allocate one gsi for a msi vector, and link gsi with irqfd through
vm->register_irqfd, use VmIrqRequest->AddMsiRoute() to add msi routing
info into kvm route table.
BUG=chromium:992270
TEST=none
Change-Id: I5e2d2347e5e26f0ef6e12554dae4b12934b65e82
Signed-off-by: Xiong Zhang <xiong.y.zhang@intel.corp-partner.google.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1581146
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
This eliminates the boilerplate for catching panics and creating a Rust
slice from the fuzzer input data.
BUG=None
TEST=`USE='asan fuzzer' emerge-nami crosvm`
Change-Id: I49666a344b02e3333ad6823bfa7dace08b66b290
Signed-off-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1879495
Reviewed-by: Dylan Reid <dgreid@chromium.org>
Replace the copy_{to,from} calls for VolatileSlice with
ptr::copy_nonoverlapping. The copy_{to,from} implementations were doing
a volatile read/write per byte, which is significantly slower than just
using a memcpy.
Using copy_nonoverlapping should be safe here as that's how this was
implemented before the refactor.
BUG=chromium:1014999
TEST=unit tests
Change-Id: Iad29e76056ff3064a5fe7e816b517b4ac75eaaef
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1866894
Commit-Queue: Chirantan Ekbote <chirantan@chromium.org>
Tested-by: Chirantan Ekbote <chirantan@chromium.org>
Reviewed-by: Stephen Barber <smbarber@chromium.org>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
When hw reports it could support INTX, this patch enable it by passing
irqfd into vfio kernel.
Then once hw intx happens, the vfio kernel irq handler receives and
handles it, the handler will trigger irqfd and kvm injects the interrupt
into guest.
BUG=chromium:992270
TEST=None
Change-Id: I8b200174a91183b7324b0044fde13b44c751d4d7
Signed-off-by: Xiong Zhang <xiong.y.zhang@intel.corp-partner.google.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1813457
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
The multikey module provides a BTreeMap implementation that can use one
of 2 different kinds of keys to look up a value. This is needed by the
virtio-fs server since it needs to be able to look up keys either by u64
or by a (ino_t, dev_t) pair.
BUG=b:136127316
TEST=`tast run vm.VirtioFs`
Change-Id: I3a22331e7a15b2316c31ac803bf2813a14bf948f
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1837025
Auto-Submit: Chirantan Ekbote <chirantan@chromium.org>
Reviewed-by: Stephen Barber <smbarber@chromium.org>
Tested-by: Chirantan Ekbote <chirantan@chromium.org>
Commit-Queue: Chirantan Ekbote <chirantan@chromium.org>
Add a `Server` type that links the FUSE protocol with the virtio
transport. It parses messages sent on the virtio queue and then calls
the appropriate method of the `Filesystem` trait.
BUG=b:136128319
TEST=`tast run vm.VirtioFs`
Change-Id: I7d6fb521f6c620efe1bdb4fa0fa8fb8c42a82f45
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1757242
Auto-Submit: Chirantan Ekbote <chirantan@chromium.org>
Reviewed-by: Stephen Barber <smbarber@chromium.org>
Commit-Queue: Chirantan Ekbote <chirantan@chromium.org>
Tested-by: Chirantan Ekbote <chirantan@chromium.org>
Add the `Filesystem` trait, which is the main interface between the
transport and the actual file system implementation.
BUG=b:136128319
TEST=`tast run vm.VirtioFs`
Change-Id: Ic8bc9e231652020501e10ad0be810a9f66e90b8e
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1757241
Auto-Submit: Chirantan Ekbote <chirantan@chromium.org>
Reviewed-by: Stephen Barber <smbarber@chromium.org>
Tested-by: Chirantan Ekbote <chirantan@chromium.org>
Commit-Queue: Chirantan Ekbote <chirantan@chromium.org>
The code to inject interrupt to the guest can be generic to all
virtio devices. This patch:
- move those guest interrupt related fields out of Worker structure and
put in a separate file, making the worker code cleaner.
- remove redandant functions across virtio devices: signal_used_queue(),
signal_config_changed(), etc.
BUG=chromium:854765
TEST=sanity test on eve and Linux
TEST=cargo test -p devices
Change-Id: I8e9f760f2057f192fdc74d16a59fea2e6b08c194
Signed-off-by: Zide Chen <zide.chen@intel.corp-partner.google.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1869553
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Tested-by: Daniel Verkamp <dverkamp@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
- signal_used_queue(): trigger MSI-X interrupts to the guest if MSI-X is
enabled, otherwise trigger INTx interrupts
- enable MSI-X on vhost-net: allocate one vhost_interrupt for every
MSI-X vector.
Performance wise, fio random R/W test on eve pixelbook:
INTx MSI-X delta
fio write 8.13MiB/s 9.79MiB/s +1.66MiB/s (+20%)
fio read 24.35MiB/s 29.3MiB/s +4.95MiB/s (+20%)
For networking performance (TCP stream), test results on eve pixelbook:
INTx MSI-X delta
iperf3 5.93Gbits/s 6.57Gbits/s +0.64Gbits/s (+10.7%)
iperf3 -R 5.68Gbits/s 7.37Gbits/s +1.30Gbits/s (+22.8%)
iperf test results on VM launched from Ubuntu host (client sends only):
INTx MSI-X delta
virtio-net 9.53Gbits/s 11.4 Gbits/s +1.87Gbits/s (+19.5%)
vhost 28.34Gbits/s 44.43Gbits/s +16.09Gbits/s (+56.7%)
BUG=chromium:854765
TEST=cargo test -p devices
TEST=tested virtio-net and block on Linux VM and eve pixelbook
Change-Id: Ic4952a094327e6b977f446def8209ea2f796878c
Signed-off-by: Xiong Zhang <xiong.y.zhang@intel.corp-partner.google.com>
Signed-off-by: Zide Chen <zide.chen@intel.corp-partner.google.com>
Signed-off-by: Sainath Grandhi <sainath.grandhi@intel.corp-partner.google.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1828340
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Tested-by: Daniel Verkamp <dverkamp@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
https://crrev.com/c/1856586 uses a new audio_streams interface but did
not update the revision used in kokoro/docker builds to match. Update
it to fix the crosvm kokoro builder.
BUG=None
TEST=docker/wrapped_smoke_test.sh
Change-Id: I12fda23861aad4b5a12eda79298ac507382188a5
Signed-off-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1876831
Reviewed-by: Fletcher Woodruff <fletcherw@chromium.org>
Reviewed-by: Stephen Barber <smbarber@chromium.org>
Move the check for length overflow that was in available_bytes() into
Reader::new() and Writer::new(). This simplifies callers, since they
can assume that once a valid Reader or Writer has been constructed,
available_bytes() cannot fail. Since we are walking the descriptor
chain during new() anyway, this extra check should be essentially free.
BUG=None
TEST=cargo test -p devices descriptor_utils
Change-Id: Ibeb1defd3728e7b71356650094b0885f3419ed47
Signed-off-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1873142
Reviewed-by: Dylan Reid <dgreid@chromium.org>
Reviewed-by: Zach Reizner <zachr@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Commit-Queue: Stephen Barber <smbarber@chromium.org>
Allocate per device VmMsi msg_socket for communication between virtio
devices and main VM process, which owns the KVM fd and issues ioctl to
KVM for KVM_IRQFD and KVM_SET_GSI_ROUTING.
BUG=chromium:854765
TEST=None
Change-Id: Ie1c81534912eaab7fbf05b5edef7dca343db301c
Signed-off-by: Xiong Zhang <xiong.y.zhang@intel.corp-partner.google.com>
Signed-off-by: Zide Chen <zide.chen@intel.corp-partner.google.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1828339
Tested-by: Daniel Verkamp <dverkamp@chromium.org>
Commit-Queue: Stephen Barber <smbarber@chromium.org>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
- add a new field "vector" to struct Queue, which represents the entry
number to the MSI-X Table. This can be used to find out the desired irqfd
to inject MSI-X interrupts to the guest.
- enable MSI-X when MSI-X Enable bit of the Message Control word is
being set: allocate irqfd per MSI-X vector; register the irqfd to KVM;
update GSI routing to KVM.
- update GSI routing if the Message Data or Message Addr of individual
MSI-X table Entry is being changed in run time.
BUG=chromium:854765
TEST=cargo test -p devices
Change-Id: I81533999ab6cd9ec5f111b256caf34077a4a7d1a
Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
Signed-off-by: Xiong Zhang <xiong.y.zhang@intel.corp-partner.google.com>
Signed-off-by: Zide Chen <zide.chen@intel.corp-partner.google.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1828338
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Tested-by: Daniel Verkamp <dverkamp@chromium.org>
Commit-Queue: Stephen Barber <smbarber@chromium.org>
The MsixConfig struct is responsible for all the operations of MSI-X
Capability Structure and MSI-X Table.
A msix_config object is created for each virtio device.
BUG=chromium:854765
TEST=cargo test -p devices
Change-Id: Ide7c34d335d49a201f20b0a4307bcda97d1d61b7
Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
Signed-off-by: Xiong Zhang <xiong.y.zhang@intel.corp-partner.google.com>
Signed-off-by: Zide Chen <zide.chen@intel.corp-partner.google.com>
Signed-off-by: Sainath Grandhi <sainath.grandhi@intel.corp-partner.google.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1828337
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Tested-by: Daniel Verkamp <dverkamp@chromium.org>
Commit-Queue: Stephen Barber <smbarber@chromium.org>
The MSI-X feature is ported from Cloud-hypervisor commit 69e27288a2e.
(https://github.com/intel/cloud-hypervisor.git)
In this commit:
- add a new "msix" module to the pci crate.
- implement the MSI-X Capability Structure.
- implement per virtio device msix_vectors() function which represents the
supported MSI-X vector for this device.
BUG=chromium:854765
TEST=launch Crosvm on eve and Linux
TEST=cargo test -p devices
TEST=./bin/clippy
TEST=./build_test.py --x86_64-sysroot /build/eve
Change-Id: I5498b15a3bf115e34764e6610407b3ba204dae7f
Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
Signed-off-by: Zide Chen <zide.chen@intel.corp-partner.google.com>
Signed-off-by: Sainath Grandhi <sainath.grandhi@intel.corp-partner.google.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1873356
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Commit-Queue: Stephen Barber <smbarber@chromium.org>
This looks like it's copied from the qcow fuzzer, and it doesn't apply
to the block fuzzer. The actual behavior of the block fuzzer is
correctly described by the comment later in the file.
BUG=None
TEST=`USE='asan fuzzer' emerge-nami crosvm`
Change-Id: I9ccd6deba44af8b8df471ee0078ace385696151f
Signed-off-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1853698
Reviewed-by: Dylan Reid <dgreid@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
In the case of 1) an IO exit & callout to plugin, then 2) a pause
request by another thread, the vcpu thread will eagerly check for a
pause request and might cause another callout to the plugin for the
pause. We haven't yet run KVM again for it to emulate the completion of
the IO. It's probably less risky to call back into KVM again and let it
finish the emulation before we callout to the plugin to make other
potential state changes to the VM. This change also reduces the
overhead of the non-pause case by not checking for a pause request on
each VM exit.
The tradeoff is that a pause request might take longer, but these are
(or should be) relatively rare so it's better to slow these down (and be
more conserative/sane about the state of the VM when pause is reported)
in favor of making the non-pause VM exits faster.
BUG=None
TEST=Local build and run of "build_test".
Change-Id: I38609eccd9a2196835f99de5ea84a586928fab30
Signed-off-by: Matt Delco <delco@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1863725
Reviewed-by: Zach Reizner <zachr@chromium.org>
Adds ability to set the immediate exit bit and ask kvm if it's
supported.
BUG=None
TEST=local compile and test
Change-Id: I5c58a5920ebda13267efeb079c0bb671f83464ee
Signed-off-by: Matt Delco <delco@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1847857
Reviewed-by: Zach Reizner <zachr@chromium.org>
There was a rename of the signal handler function for rt
signals. This renames the plugin use to be consistent with the
non-plugin case.
BUG=None.
TEST=Local compile.
Change-Id: I5bf2e19754183022dbfe31fd1fdeceb83e07c18a
Signed-off-by: Matt Delco <delco@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1846680
Reviewed-by: Zach Reizner <zachr@chromium.org>
Drop the copy of vec_with_array_field now that it is available in a
common location.
BUG=None
TEST=cargo build
Change-Id: Ia272803737a4cb3e4e84213c48aa8e28c17bab2c
Signed-off-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1865680
Reviewed-by: Stephen Barber <smbarber@chromium.org>
This code was left behind when BackedBuffer was removed.
BUG=none
TEST=compile
Change-Id: I450a98af8a2cbea1f86e4fd825f054f7853f7a18
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1847538
Reviewed-by: Zach Reizner <zachr@chromium.org>
Tested-by: David Stevens <stevensd@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Commit-Queue: David Stevens <stevensd@chromium.org>
If a plugin makes a set call on vcpu registers then we
can improve performance by deferring the IPC and instead
conbining the request with the next resume call.
BUG=None
TEST=build and run.
Change-Id: I4eb54a3f6eb30c98971aa2f099e3ea5899767eed
Signed-off-by: Matt Delco <delco@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1825262
Reviewed-by: Zach Reizner <zachr@chromium.org>
The resume response was deleted in a earlier change. This change
removes the message type from the proto file and adjusts crosvm
so it can still build after this removal.
BUG=None
TEST=build and run.
Change-Id: I27d36a51b1e7eb59258d23da38199b86d7cb3659
Signed-off-by: Matt Delco <delco@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1825260
Reviewed-by: Zach Reizner <zachr@chromium.org>
Reviewed-by: Dylan Reid <dgreid@chromium.org>
The consume function in both the read and write methods should consume
all the VolatileSlices that are given to it rather than just the first
one. The previous implementation was not wrong, just inefficient. This
should fix that.
Also add a test to make sure that this doesn't regress in the future.
BUG=none
TEST=unit tests
Change-Id: I02ec22269cdd6cdc329dd62367b99352a4dc1245
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1865271
Tested-by: Chirantan Ekbote <chirantan@chromium.org>
Commit-Queue: Chirantan Ekbote <chirantan@chromium.org>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-by: Stephen Barber <smbarber@chromium.org>
It's quite costly to inject virtual interrupt to the guest, especially
in INTx case.
To reduce the number of interrupts, in process_rx(), we don't have to
inject interrupt on every frame, but wait until process_rx() finishes
processing all frames.
On eve, iperf3 gets ~15% improvement, "iperf3 -R" gets ~30% improvement.
BUG=chromium:854765
TEST=iperf3 on eve and Linux
Change-Id: Ie0560d8f42235d2371addb6de34c5f93d11a405f
Signed-off-by: Zide Chen <zide.chen@intel.corp-partner.google.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1865021
Reviewed-by: Stephen Barber <smbarber@chromium.org>
Commit-Queue: Stephen Barber <smbarber@chromium.org>
Tested-by: Stephen Barber <smbarber@chromium.org>
The audio_streams interface now supports specifying a sample format.
Update call sites to indicate that the desired format is S16LE.
BUG=chromium:1010667
TEST=aplay within vm
Cq-Depend: chromium:1856646
Change-Id: Ib69ff9b39196905f0f429eaf771f6f92901bfc71
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1856586
Reviewed-by: Dylan Reid <dgreid@chromium.org>
Tested-by: Fletcher Woodruff <fletcherw@chromium.org>
Commit-Queue: Fletcher Woodruff <fletcherw@chromium.org>
This is the latest version of rust-protobuf at the moment, and it
includes fixes so that the generated code no longer triggers rustc
warnings about missing `dyn` specifiers on trait objects.
Note that Cargo.lock is unused in normal Chrome OS builds; this only
affects other environments like running `cargo build` directly.
This change was generated using:
cargo update -p protobuf -p protoc-rust --precise 2.8.1
BUG=chromium:1015571
TEST=cargo check --features=plugin
Change-Id: Id1ea387be70ef81ae62b6d39f99d85d48c938d58
Signed-off-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1869552
Reviewed-by: Zach Reizner <zachr@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Fixes warnings during test build:
<stdin>: In function 'main':
<stdin>:52:17: warning: implicit declaration of function 'strerror'
[-Wimplicit-function-declaration]
<stdin>:70:9: warning: implicit declaration of function 'memcmp'
[-Wimplicit-function-declaration]
BUG=None
TEST=docker/wrapped_smoke_test.sh
Change-Id: Ibec87db4ca289bec9b1a2c7080fdefebb6e86158
Signed-off-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1863822
Reviewed-by: Zach Reizner <zachr@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
The DRM repository was added to checkout_commits.env without a
corresponding addition in upgrade_checkout_commits.sh. Add it and
upgrade all repositories.
BUG=None
TEST=docker/build_crosvm_base.sh && docker/wrapped_smoke_test.sh
Change-Id: Iee7ae7005284cb3b7d0e8e8c983d4ef381781f8e
Signed-off-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1863821
Reviewed-by: Zach Reizner <zachr@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
This simplifies our formatting script so that it does not need any of
the Cargo metadata to run; the new version just finds all Rust files
(*.rs) and runs `rustfmt` on them individually.
BUG=None
TEST=bin/fmt
TEST=bin/fmt --check
Change-Id: I45aaee497d4f1dfcc03b3e2c5c2f27feb974dc80
Signed-off-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1865371
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Dylan Reid <dgreid@chromium.org>
Reviewed-by: Zach Reizner <zachr@chromium.org>
Rather than using `use ::vhost::...` to disambiguate the imports, remove
the conflicting `use virtio_sys::vhost` and add `virtio_sys::` to each
location that used `vhost::...` previously.
The `use ::vhost::...` syntax confuses rustfmt when run directly on
these two files, causing it to rewrite the imports into something that
doesn't actually compile.
BUG=None
TEST=rustfmt --check devices/src/virtio/vhost/net.rs
TEST=rustfmt --check devices/src/virtio/vhost/vsock.rs
Change-Id: I8483f5327a1e2b3ae4887f0b3cef20a917d7410e
Signed-off-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1865370
Reviewed-by: Dylan Reid <dgreid@chromium.org>
Reviewed-by: Stephen Barber <smbarber@chromium.org>
The new USB descriptor parsing code is a nice candidate for a fuzzer,
since it takes an arbitrary stream of bytes as input and parses it.
BUG=chromium:987833
TEST=`USE='asan fuzzer' emerge-nami crosvm`
Cq-Depend: chromium:1863465
Change-Id: I3bbdbf081e9a9dd590c781467f8bd44fa1dcab64
Signed-off-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1862117
Reviewed-by: Zach Reizner <zachr@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
This just removes a few extraneous blank lines that the new rustfmt
doesn't like.
BUG=None
TEST=bin/fmt --check
Change-Id: I4482f873bdfe19f2f73f86cfdd99d6cce873593c
Signed-off-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1863000
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Stephen Barber <smbarber@chromium.org>
Reviewed-by: Zach Reizner <zachr@chromium.org>
Reviewed-by: Dylan Reid <dgreid@chromium.org>
Drop the dependency on libusb and reimplement the host USB backend using
usb_sys to wrap the Linux usbdevfs ioctls.
This allows sandboxing to work without any dependency on libusb patches,
and it gives us the flexibility to modify and update the USB backend
without depending on an external third-party library.
BUG=chromium:987833
TEST=`adb logcat` on nami with Nexus 5 attached
TEST=deploy app to phone with Android Studio
TEST=Run EdgeTPU USB accelerator demo (including DFU mode transition)
Cq-Depend: chromium:1773695
Change-Id: I4321c2b6142caac15f48f197795a37d59d268831
Signed-off-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1783601
Reviewed-by: Zach Reizner <zachr@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>