Crosvm book don't have a documentation for how to run and use the virtio-fs.
Add a fs chapter under device, and upload a runnable example.
BUG=b:235067443
TEST=mdbook build docs/book
Change-Id: I8ef1ceb9d4cfc5f9a2e8afa2416d1f3ba69691b4
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4535500
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
Reviewed-by: Takaya Saeki <takayas@chromium.org>
Commit-Queue: Yuan Yao <yuanyaogoog@chromium.org>
Now, crosvm can be built for two operating systems; linux and windows,
so put these sections for the two OS on the same level.
BUG=none
TEST=mdbook build
Change-Id: I66a4d37ca40c3af0fa2289605301954ce991a06a
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4537377
Commit-Queue: Keiichi Watanabe <keiichiw@chromium.org>
Reviewed-by: Dennis Kempin <denniskempin@google.com>
Crovm's doc mentions the naming limitation of virtio-fs root mount.
However, kernels 5.15 or later no longer require that naming limitation.
This change updates the information about the limitation.
BUG=None
TEST=mdbook build docks/book
Change-Id: I5c87bb3f92fa3fa3e56b395d1bc1fca9f5026183
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4541965
Commit-Queue: Takaya Saeki <takayas@chromium.org>
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
Having a style guide section separately so people will be able to find
it more easily.
BUG=b:281972799
TEST=mdbook build
Change-Id: I3af92a3c4abe65226c7cdf1028d30e906e0952ed
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4537376
Reviewed-by: Dennis Kempin <denniskempin@google.com>
Commit-Queue: Keiichi Watanabe <keiichiw@chromium.org>
Currently, if a user follows the crosvm's running crosvm section, one
will encounter errors executing the sample codes in tools/examples. We
want the examples codes to run without extra manual operation. Also,
there is a wrong link in the documentation.
Add disable-sandbox option in example_simple, which prevents jail
creation error. Fix a document link in 3.1.Example Usage section to show
the correct source.
BUG=b:281951944
TEST=tools/examples/example_network tools/examples/example_simple
Change-Id: I6383112acdb7c9c5f22f39da872756ab278d1309
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4518099
Commit-Queue: Yuan Yao <yuanyaogoog@chromium.org>
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
Reviewed-by: Takaya Saeki <takayas@chromium.org>
Introduce support for a virtual CPU frequency device
to improve guest task placement behaviour along with performance
and power usage of workloads within VMs[1]. This device adds MMIO regions
that enables the guest to:
- Query for the frequency of the physical CPU that the current
vCPU is affined to.
- Send frequency requests that can be used as hint for the
host to schedule vCPU threads and choose physical CPU frequency.
Add a config option "--virt-cpufreq" that enables the virtual cpu device
and populates the frequencies of vCPUs through devicetree, which can
be used by a guest kernel cpufreq driver[2].
[1] https://lore.kernel.org/all/20230330224348.1006691-1-davidai@google.com/
[2] https://android-review.git.corp.google.com/c/kernel/common/+/2239182
Bug: None
Test: ./tools/presubmit
Change-Id: I03983c5e4a3fa288ca19504aa093ad1f7f9f7e51
Signed-off-by: David Dai <davidai@google.com>
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4504738
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
At present, the Testing section sits before Running crosvm section which
will confuse readers.
Swap the order of Testing section and Running crosvm section in
SUMMARY.md makes documentation clearer to readers.
BUG=b:281780797
TEST=mdbook build docs/book
Change-Id: I33d78b9eb456bd5ef529e1d3de607e7ec519dac2
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4520797
Commit-Queue: Yuan Yao <yuanyaogoog@chromium.org>
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
Adds an invocation to run doctests to the health_checks builder.
To make this not run by default on every `tools/presubmit`
invocation, this CL splits default_health_checks out of the
health_checks group.
BUG=b:242635135
TEST=tools/presubmit health_checks
Change-Id: Ic850c461eb79e81c4b8118fc3182614fac907569
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4476090
Reviewed-by: Zihan Chen <zihanchen@google.com>
Commit-Queue: Dennis Kempin <denniskempin@google.com>
Allow the `cfg` field of RunCommand to be used in configuration files,
providing a mechanism for configuration inclusion.
Configurations are merged in the following order: first the included
files by order of specification (recursively), then the parent file,
then finally the other command-line arguments.
BUG=b:218223240
TEST=booted a VM with a configuration file that included another one and
confirmed both settings were applied.
Change-Id: I0c1e1b12b7c329510d450069e2e9de5b52af7734
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4414504
Reviewed-by: Dennis Kempin <denniskempin@google.com>
Commit-Queue: Alexandre Courbot <acourbot@chromium.org>
Now that RunCommands can be merged several times without ambiguity,
allow the `--cfg` argument to be used several times, allowing to augment
a base configuration with others. Configurations are merged in their
order or specification, with the other command-line arguments being
merged last.
BUG=b:218223240
TEST=added test passes, booted a VM while specifying `--cfg` several
times.
Change-Id: I94d4f02e403db0203a2757e78a5932805c6d8387
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4414503
Reviewed-by: Dennis Kempin <denniskempin@google.com>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Commit-Queue: Alexandre Courbot <acourbot@chromium.org>
Add Podman as an option in building crosvm.
Have `Example Usage` point to `Custom Kernel/Rootfs` for preparing a
custom kernel/rootfs, instead of building crosvm.
BUG=N/A
TEST=mdbook build && check the html page
Change-Id: I920526c01140439c416e929d4711ae996bb0831e
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4455448
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Auto-Submit: Elie Kheirallah <khei@google.com>
Commit-Queue: Elie Kheirallah <khei@google.com>
Reviewed-by: Dennis Kempin <denniskempin@google.com>
Add a `--vsock` command-line option that is designed to replace the
`--cid`, `--vhost-vsock-device` and `--vhost-vsock-fd` parameters into a
single one. This parameter can be used on Windows as well as Linux, and
on the latter users can also specify the vhost-vsock device to use.
This parameter is the preferred way to add vsock devices, and thus is
also enabled for configuration files. Also update the book's
instructions in lockstep.
BUG=b:255223604
TEST=run crosvm with `--vsock cid=42` option and ensure the guest device
is working using socat to communicate with the host.
Change-Id: I9515922415e5a55289a9e21d5f2f247a30fadc74
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4253292
Commit-Queue: Alexandre Courbot <acourbot@chromium.org>
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
The dev_container no longer has a --reset flag and instead uses --clean.
Updates docs to reflect this.
BUG=b:273389824
TEST=cq
Change-Id: Ic8bdf1900a19e525d1150ebc623ab9d6bd2eec09
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4337296
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
Reviewed-by: Dennis Kempin <denniskempin@google.com>
Commit-Queue: Kameron Lutes <kalutes@chromium.org>
The seccomp policies are located in the `jail` crate now. Fix the
include path.
BUG=None
TEST=mdbook build
Change-Id: I40049248c83c060c98925b61991d6a83c379b9c3
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4335147
Reviewed-by: Shin Kawamura <kawasin@google.com>
Commit-Queue: Shin Kawamura <kawasin@google.com>
Auto-Submit: Daniel Verkamp <dverkamp@chromium.org>
Tooling has changed and the book was outdated.
BUG=None
TEST=presubmit
Change-Id: Ieb15dacbc234549411ab9351bb53a4ee9b25b035
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4278705
Commit-Queue: Dennis Kempin <denniskempin@google.com>
Reviewed-by: Frederick Mayle <fmayle@google.com>
Original commit message:
> docs: book: fix memory layout source links and line numbers
>
> The crosvm-upstream repository in the ChromiumOS git host was removed,
> so use crosvm instead.
>
> BUG=None
> TEST=mdbook build # and click through links
This reverts commit 935ad063c6.
BUG=None
TEST=mdbook build
Change-Id: Ifc1e308f6a23148ea4aa3fbd49c64e87c8a732e5
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4277063
Reviewed-by: Shin Kawamura <kawasin@google.com>
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
The issue that caused the revert has been fixed by commit 64065f6b213a
("cros_fdt: remove max_size from FdtWriter::finish()"). The FDT was
padded to a size larger than the available setup_data space on x86-64,
which caused startup to fail any time the --android-fstab option was
used.
Original commit message:
> This moves the setup_data out of the way of the bzImage decompression
> stub, so it won't get overwritten.
>
> Fixes a regression with some kernel configurations introduced in commit
> 5bedfa3408 ("x86_64: add SETUP_RNG_SEED setup_data entry"), which
> unconditionally adds a setup_data entry.
>
> BUG=b:268397895
> TEST=boot x86-64 bzImage in crosvm that previously failed
> TEST=cargo test -p x86_64
This reverts commit a0d14ce819.
BUG=b:268397895
TEST=Start ARCVM on x86-64
TEST=Start Crostini on arm
Change-Id: I41f14578673ea00d1453841dd7cb2438a0a13355
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4277062
Reviewed-by: Shin Kawamura <kawasin@google.com>
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
This reverts commit e5aec1e53d.
Reason for revert: The android fstab which is capped limited up to `X86_64_FDT_MAX_SIZE` exceeds the `SETUP_DATA_END` at least on an octopus DUT.
Original change's description:
> x86_64: place setup_data immediately after cmdline
>
> This moves the setup_data out of the way of the bzImage decompression
> stub, so it won't get overwritten.
>
> Fixes a regression with some kernel configurations introduced in commit
> 5bedfa3408 ("x86_64: add SETUP_RNG_SEED setup_data entry"), which
> unconditionally adds a setup_data entry.
>
> BUG=b:268397895
> TEST=boot x86-64 bzImage in crosvm that previously failed
> TEST=cargo test -p x86_64
>
> Change-Id: Ie5efc19d607aad16c1ca80bcdd2fb62933dd73e1
> Fixes: 5bedfa3408 ("x86_64: add SETUP_RNG_SEED setup_data entry")
> Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4233967
> Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
> Reviewed-by: Dmitrii Osipenko <dmitry.osipenko@collabora.corp-partner.google.com>
> Reviewed-by: Zihan Chen <zihanchen@google.com>
Bug: b:268397895
Change-Id: Ie430caa38b745cb1d5e69ac644a2c76813069221
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4272810
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
Commit-Queue: Keiichi Watanabe <keiichiw@chromium.org>
The crosvm-upstream repository in the ChromiumOS git host was removed,
so use crosvm instead.
BUG=None
TEST=mdbook build # and click through links
Change-Id: Ib35d930505c1a3381ce4f4fc53f54d626c810d1e
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4233968
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-by: Zihan Chen <zihanchen@google.com>
This moves the setup_data out of the way of the bzImage decompression
stub, so it won't get overwritten.
Fixes a regression with some kernel configurations introduced in commit
5bedfa3408 ("x86_64: add SETUP_RNG_SEED setup_data entry"), which
unconditionally adds a setup_data entry.
BUG=b:268397895
TEST=boot x86-64 bzImage in crosvm that previously failed
TEST=cargo test -p x86_64
Change-Id: Ie5efc19d607aad16c1ca80bcdd2fb62933dd73e1
Fixes: 5bedfa3408 ("x86_64: add SETUP_RNG_SEED setup_data entry")
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4233967
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-by: Dmitrii Osipenko <dmitry.osipenko@collabora.corp-partner.google.com>
Reviewed-by: Zihan Chen <zihanchen@google.com>
This is the limit used by Linux kernels since the 2.6 era, as reported
in the bzImage header as well as the COMMAND_LINE_SIZE definition in
setup.h.
The previous allocation of almost 2 MB was excessive and would have
also overlapped the memory region used for ACPI tables had a long
enough command line been provided.
We will use the area freed up by this change for the setup_data in the
next change.
BUG=b:268397895
TEST=boot x86-64 bzImage in crosvm
Change-Id: I3b5a3771549c3352e609a9685f591be38ae9fa63
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4233966
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-by: Zihan Chen <zihanchen@google.com>
Adds a new hypervisor capability that causes crosvm to statically
allocate the location of the swiotlb buffer.
This will be used by the gunyah hypervisor.
BUG=b:244630071,b:232360323
Change-Id: Ia2f379bb6f2fa89167ddc73d65ec1b8c5494bdf6
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4197001
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-by: Vikram Auradkar <auradkar@google.com>
Commit-Queue: Frederick Mayle <fmayle@google.com>
cross-compilation requires additional configuration that depends
heavily on the host platform. Unfortunately cargo cannot be
configured on a per host platform basis so this has to be done
manually.
Most developers are just using native compilation (and using
the containers for everything else). So we can slim our
install-deps scripts a bit.
To verify the updated install scripts, this change includes
containers to simulate a fresh developer workstation that
can be used to verify out of the box workflows.
BUG=b:262829206
BUG=b:265995780
BUG=b:265842137
TEST=tools/contrib/minimal_container/test-all.sh and CQ
Change-Id: I0e803d0224306e5351728e2c80fcbcd8260d029d
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4179290
Reviewed-by: Zihan Chen <zihanchen@google.com>
Commit-Queue: Dennis Kempin <denniskempin@google.com>
The guide is WIP and doesn't contain instructions to test and run
crosvm on windows.
BUG=b:264555939
TEST=none
Change-Id: Iedc9099ec458757c4cc92be536dc64ec4e6e4929
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4149728
Reviewed-by: Dennis Kempin <denniskempin@google.com>
Commit-Queue: Vikram Auradkar <auradkar@google.com>
Update the vhost-user docs to recommend the new and improved
`crosvm devices` subcommand rather than `crosvm device`.
BUG=None
TEST=run the commands
Change-Id: I3ed5d2408cb217116603033eeb551df515eaf8ef
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4160471
Reviewed-by: Alexandre Courbot <acourbot@chromium.org>
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
The features.md file in the book duplicates the feature descriptions
originating in Cargo.toml and generated in the cargo doc output by
document-features. Remove the (outdated) features.md descriptions and
replace the content with a link to the cargo doc feature list.
BUG=None
TEST=tools/cargo-doc
TEST=cd docs/book; mdbook build
Change-Id: I54f1873e2396363e7703dd0209589443ae8fb984
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4133829
Reviewed-by: Dennis Kempin <denniskempin@google.com>
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
These should be written as ChromeOS and ChromiumOS (without the space)
to match the updated branding. The copyright headers were already
migrated to the new style (https://crrev.com/c/3894243), but there were
some more instances left over.
BUG=None
TEST=tools/cargo-doc
Change-Id: I8c76aea2eb33b2e370ab71ee9b5cc0a4cfd00585
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4129934
Reviewed-by: Dennis Kempin <denniskempin@google.com>
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
bzImage is the cannonical way of loading a kernel image, and is simpler
overall. Update the book to refer to the bzImage instead of vmlinux.
BUG=None
TEST=mdbook build
Change-Id: I6309fe9b45e233b84a375c9a413c46dfdec05675
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4091565
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-by: Dennis Kempin <denniskempin@google.com>
Commit-Queue: Alexandre Courbot <acourbot@chromium.org>
Document the format and rules for specifying command-line options, and
add a section on how configuration files can also be used.
BUG=b:218223240
TEST=mdbook build
Change-Id: Ieec40315b7ae8212c6a5b60280440abc9a5e92e6
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4040820
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
Commit-Queue: Alexandre Courbot <acourbot@chromium.org>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Footnote was escaped in last version, now deps contain all mdformat
plugins required to support markdown extensions supported in mdbook
TEST=./tools/health-check, mdbook build docs/book/ --dest-dir ../target
generates html with correct footnote
Change-Id: I0047a7174cf241c5510a84d30349ba64790f5830
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4029524
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
Auto-Submit: Zihan Chen <zihanchen@google.com>
Commit-Queue: Zihan Chen <zihanchen@google.com>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Now that we have refactored our tests to be split into unit tests
and integration tests, let's document this.
BUG=None
TEST=None
Change-Id: Ibd12de70d3b201dd964efc1ccd6cb6a6a37c887a
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4024068
Commit-Queue: Zihan Chen <zihanchen@google.com>
Reviewed-by: David Stevens <stevensd@chromium.org>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-by: Zihan Chen <zihanchen@google.com>
There is no reason to leave an 8 MB gap at the beginning of guest
memory; shift the kernel load address down to the very beginning of
RAM. This accomodates alternate ELF kernels that want to be loaded at
address 0 as well.
BUG=b:254601048
TEST=boot crostini on arm
Change-Id: Iaa58efc5b20046732ef0f75b3c779134a3ee454b
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4015002
Reviewed-by: Alexandre Courbot <acourbot@chromium.org>
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
Update mentions to the deprecated `--disk`, `--rwdisk`, `--root`,
`--rwroot` to use the new `--disk`, and to the obsolete network
parameters to use the new `--net` argument.
BUG=b:218223240
BUG=b:246224081
TEST=`mdbook build` in `docs/book` passes.
Change-Id: I942a9e03980a3477d4b87332f5b4cfdfebba814f
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3996046
Auto-Submit: Alexandre Courbot <acourbot@chromium.org>
Reviewed-by: Dennis Kempin <denniskempin@google.com>
Commit-Queue: Dennis Kempin <denniskempin@google.com>
The seccomp policy files are no longer needed at runtime since they are
embedded in the crosvm binary.
BUG=b:235858187
TEST=mdbook build docs/book
Change-Id: Ib8220bce01a21bd3b4a1ef749468e12b18377a62
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3999176
Reviewed-by: Dennis Kempin <denniskempin@google.com>
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
It's not necessary to build 3D rendering support to run the
cross-domain context type.
Default implementations are added for some hypercalls, since
the guest kernel may still think it's running a KMS display.
That adds log-spam if errors are present.
BUG=b:173630595
TEST=Run weston terminal in the guest
Change-Id: I8155cf9d9867a329927b7dd4bb22c385510966a2
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3961536
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Commit-Queue: Gurchetan Singh <gurchetansingh@chromium.org>
The pVM firmware memory region is allocated before
AARCH64_PHYS_MEM_START, but several parts of the code were assuming that
all memory was contiguous and after that.
BUG=b:244553205
TEST=Patched into AOSP and ran some VMs.
Change-Id: I8caefc9cae79c98ea62ee02a506b1b485d3f09a6
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3921604
Reviewed-by: Pierre-Clément Tosi <ptosi@google.com>
Commit-Queue: Andrew Walbran <qwandor@google.com>
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
Reviewed-by: Jiyong Park <jiyong@google.com>
Use the enum to document the exit code and refer from the rustdoc.
BUG=b:251305451
TEST=mdbook build and observe
Change-Id: Ie75fc40a8301151266af112f275e331f1a49c769
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3935671
Commit-Queue: Junichi Uekawa <uekawa@chromium.org>
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
The FFmpeg backend is a software emulated video encoder device backend.
It can be used for testing, for developing guest kernel changes and
more.
The backend roughly mirrors how the FFmpeg decoder backend is
implemented right now, with the notable difference that it does not use
swscale as the de-facto input format is NV12 or YUV420 and the guest can
likely provide buffers in that format.
BUG=b:239897269
TEST=See testing instructions in the updated book document.
Change-Id: Iae9928bdad86729f890e738acfa58e21573a115b
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3920263
Reviewed-by: Alexandre Courbot <acourbot@chromium.org>
Commit-Queue: Alexandre Courbot <acourbot@chromium.org>
Seccomp policy files will now pre-compile to bpf bytecode for
target architecture and embedded in the crosvm binary when not
built for chrome os.
When minijail is not checked out in crosvm tree as a submodule,
MINIJAIL_DIR environment variable needs to be specified for the
policy compiler to run.
Integration tests are now sandbox enabled for better coverage.
TEST=all tests passed, vm runs fine with sandbox on and no separate
policy files present. cros deploy & crostini still works.
BUG=b:235858187
FIXED=b:226975168
Change-Id: Ieaba4b3d7160ccb342a297ebc374894d19a8dc4d
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3824062
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Tested-by: Zihan Chen <zihanchen@google.com>
Commit-Queue: Zihan Chen <zihanchen@google.com>
Ffmpeg can now reliably be used in the guest to decode VP8 or VP9
streams, so update the instructions to showcase this.
BUG=b:235067555
TEST=mdbook build
Change-Id: If3af1797d8bc686167292e3859d6a4f08bfe2b41
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3841483
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
Reviewed-by: Tatsuyuki Ishi <ishitatsuyuki@google.com>
Commit-Queue: Alexandre Courbot <acourbot@chromium.org>
Tested-by: Alexandre Courbot <acourbot@chromium.org>
We would like 2 MiB for runtime data as well as the 2 MiB image.
TEST=tools/dev_container tools/run_tests --target=vm:aarch64
Change-Id: I0c0cba35bfc6cf6d8c54afd7df8bd929726e2053
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3827214
Commit-Queue: Andrew Walbran <qwandor@google.com>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Tested-by: Andrew Walbran <qwandor@google.com>
This reverts commit a78f92cdb2.
Reason for revert: doesn't build on Chrome OS
Original change's description:
> crosvm: Embed seccomp filters into binary
>
> Seccomp policy files will now pre-compile to bpf bytecode for
> target architecture and embedded in the crosvm binary.
> When minijail is not checked out in crosvm tree as a submodule,
> MINIJAIL_DIR environment variable needs to be specified for the
> policy compiler to run.
>
> TEST=all tests passed, vm runs fine with sandbox on and no separate
> policy files present.
> BUG=b:235858187
>
> Change-Id: Ia801966df0a8adfdc4a80f5899e33121fe45e5f9
> Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3774318
> Reviewed-by: Dennis Kempin <denniskempin@google.com>
> Commit-Queue: Zihan Chen <zihanchen@google.com>
> Tested-by: Zihan Chen <zihanchen@google.com>
Bug: b:235858187
Change-Id: Ia81e43185d5f16bd061b6d0290befb4642c44548
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3813056
Tested-by: Junichi Uekawa <uekawa@chromium.org>
Commit-Queue: Junichi Uekawa <uekawa@chromium.org>
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Seccomp policy files will now pre-compile to bpf bytecode for
target architecture and embedded in the crosvm binary.
When minijail is not checked out in crosvm tree as a submodule,
MINIJAIL_DIR environment variable needs to be specified for the
policy compiler to run.
TEST=all tests passed, vm runs fine with sandbox on and no separate
policy files present.
BUG=b:235858187
Change-Id: Ia801966df0a8adfdc4a80f5899e33121fe45e5f9
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3774318
Reviewed-by: Dennis Kempin <denniskempin@google.com>
Commit-Queue: Zihan Chen <zihanchen@google.com>
Tested-by: Zihan Chen <zihanchen@google.com>
The current documentation of VVU page did not include some important
information to reproduce the example such as the configuration of the
device guest kernel, or the requirement of setting the memory size of
sibling VM smaller than the device VM.
Add these information in the caveats section.
BUG=b:240398088
TEST=mdbook build
Change-Id: Ic391cd8099412b46acb52f49683cd702bfd54197
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3790664
Tested-by: Keita Suzuki <suzukikeita@google.com>
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
Reviewed-by: Morg <morg@chromium.org>
Commit-Queue: Keita Suzuki <suzukikeita@google.com>
Reflecting the new repository, supported workflows
and code submission process.
BUG=b:239255196
TEST=None
Change-Id: I52d7130ec3d72ea5ef8748875cae029f0b1f701b
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3780864
Auto-Submit: Dennis Kempin <denniskempin@google.com>
Tested-by: Dennis Kempin <denniskempin@google.com>
Commit-Queue: Dennis Kempin <denniskempin@google.com>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
This adds a new dt node identified by "qemu,vm-watchdog". The watchdog
is instantiated per-cpu and each instance has the following layout
described in this document:
https://docs.google.com/document/d/1DYmk2roxlwHZsOfcJi8xDMdWOHAmomvs2SDh7KPud3Y/edit?resourcekey=0-oSNabc-t040a1q0K4cyI8Q#heading=h.4hbqud2zl941
The watchdog uses an internal clock which is driven by the
timerfd at regular intervals. When the internal clock expires, a counter
value is decremented. When the counter register reaches value "0",
the watchdog expires. To prevent 'watchdog expiration', regular pet
events should be sent from the guest kernel driver.
BUG=b:213422094
Signed-off-by: Sebastian Ene <sebastianene@google.com>
Change-Id: Ic8c0488ffdfed1a43b6deb34b72d37f46e5e18a2
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3768290
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
This updates all references to chromiumos/platform/crosvm to
crosvm/crosvm.
It will also switch ./tools/cl to upload to the new main repository.
BUG=None
TEST=None
Change-Id: I1f71e5d5de2300e57ace1315cb4553f68533d576
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3760903
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Tested-by: Dennis Kempin <denniskempin@google.com>
Fix a few typos in the instructions to start a VVU device.
BUG=b:196186396
TEST=Copy/paste the new instructions and make sure the device starts and
works.
Change-Id: I0726185fc9d7026a7d7d81a5678fb81350cac113
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3744908
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Junichi Uekawa <uekawa@chromium.org>
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
Commit-Queue: Keiichi Watanabe <keiichiw@chromium.org>
It is not the task of crosvm, which is usually unprivileged process, to
mess up with the system configuration, so it should simply expect that
VVU devices are already bound to vfio-pci driver and stop trying to do
it itself.
BUG=b:196186396
TEST=Boot redrix-manatee, start crostini.
Change-Id: Icb777cf66fd54bd74d656821fb76587c7ee70ca3
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3712552
Commit-Queue: Dmitry Torokhov <dtor@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
Reviewed-by: David Stevens <stevensd@chromium.org>
Now that the ffmpeg decoder backend has been merged, anyone can try the
virtio-video device. Add a page on the book explaining how to do so.
BUG=b:235067555
TEST=mdbook build
Change-Id: I984b4953580274015900a80a378cab9c3eb7b2ac
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3708389
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
Commit-Queue: Alexandre Courbot <acourbot@chromium.org>
This CL will introduce a new TpmBackend called VTpmProxy.
This proxy will bridge the VM tpm device and the vtpm daemon on
ChromeOS.
BUG=b:227283268
TEST=Build OK.
Change-Id: Ibfbfdddbaca2af1d066920bb62918d88b0943d59
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3696292
Commit-Queue: Yi Chou <yich@google.com>
Reviewed-by: Chih-Yang Hsia <paulhsia@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Leo Lai <cylai@google.com>
We are going to use separate policy files per device for the following scenarios:
1) Regular in-VMM virtio device,
2) Virtio device over vhost-user,
3) Virtio device over Vvu.
Each of these scenarios require slightly different policies as a jailed
device process needs to allow not only the system calls necessary for
the device to function, but also those required by the virtio transport
in use.
This CL adds a README.md file to the seccomp directory that details the
naming and policy inclusion rules, and updates the serial, xhci and
coiommu policies to follow the naming scheme.
Vhost-user and VVU policy files will be added along with support for
jailing devices when they are in use.
BUG=b:217480043
TEST=serial device works with `crosvm run`.
Change-Id: I6d454aa6e05d00691fe3346e822ed1fc7b24aed8
Signed-off-by: Alexandre Courbot <acourbot@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3706490
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Due to the way we allow arguments to be specified I was not able to
reuse Config structure for cmdline arguments. (eg we allow multiple ways
to specify same config)
There is still some usage of arguments mod that we need to cleanup
later.
Change-Id: Ia0c12d508d0a10d17f58944de71276e5984d69ee
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3684144
Auto-Submit: Anton Romanov <romanton@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Commit-Queue: Anton Romanov <romanton@google.com>
Replace the source code links with the documentation pages for the
devices that have them.
BUG=None
TEST=mdbook build docs/book
TEST=Verify that devices/index.html links to the right pages
Change-Id: Ie7e61adec9326466b2e1236fed4e768c2d5d3dd9
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3691975
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
BUG=None
TEST=mdbook build # test that rustup ref becomes a clickable link
Change-Id: Ieea42a363130ca42cea6db9133e2a8de94a1d275
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3691970
Reviewed-by: Dennis Kempin <denniskempin@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
To explain use of various devices, let's have a separate chapter.
BUG=none
TEST=mdbook build
Change-Id: I0fe9926f9e6b97731a3a19d7b5f59b0eb2d1cf73
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3607792
Reviewed-by: Alexandre Courbot <acourbot@chromium.org>
Commit-Queue: Keiichi Watanabe <keiichiw@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
chromeos branch is a stable base to work on, but patches need to land on
the main branch. For uploading to that directory, it's always necessary
to rebase onto that branch.
BUG=b:227535695
TEST=rebase_for_review && repo upload --cbr .
Change-Id: I5f41e52f91adf15ade84ae09f6b34dcdbe733d23
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3565627
Commit-Queue: Junichi Uekawa <uekawa@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Dennis Kempin <denniskempin@google.com>
This leaves the region between 0x4000_0000 and the start of RAM free of
MMIO, which simplifies the stage 1 page table mappings needed by the
guest, and makes room for the pVM firmware allocation to be expanded.
TEST=tools/dev_container tools/run_tests --target=vm:aarch64
Change-Id: Ibae73a946cadd16e6f03559d23cc256f4b9d3f3d
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3627454
Commit-Queue: Andrew Walbran <qwandor@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>
Auto-Submit: Andrew Walbran <qwandor@google.com>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Our original code sample was missing some elements in the use statements
that clarified how modules were organized with sys.
BUG=none
TEST=n/a
Change-Id: I62d6a294218fa7c9c5853dbefc6550de763e7c8e
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3614852
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Commit-Queue: Noah Gold <nkgold@google.com>
Reviewed-by: Vikram Auradkar <auradkar@google.com>
This change consolidates some of the spread out information about
what ChromeOS developers need to know about crosvms differences to
other ChromeOS projects.
I created a new directory since I would expect a similar guide for
AOSP eventually.
This also adds more documentation on some of the process changes
suggested in go/crosvm-merge-improvements to improve the
stability of the merge process.
BUG=b:227475914
TEST=None
Change-Id: I08111ecd5a937fde22c7d97f342c1cf02f49b02e
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3561886
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
ChromeOS moved to using split config, so update the build steps for a
custom kernel to reflect the new procedure.
BUG=b:228107412
TEST=Follow the custom kernel rootfs steps with the new config steps
Change-Id: Ib8f7d8748897fb6b907d0da4c25e2cccba1c5954
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3570172
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Commit-Queue: Kameron Lutes <kalutes@chromium.org>
It is now relatively easy to build and run sommelier against a regular
Linux guest, and doing so enables the powerful feature of being able to
show guest Wayland clients on a compositor running on the host. Document
the process for those interested in doing it.
BUG=None
TEST=mdbook serve
TEST=./tools/fmt --check
Change-Id: I45b99243481ee66c1e88e597669a219a4e5b9376
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3531694
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
Reviewed-by: Dennis Kempin <denniskempin@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>
Commit-Queue: Alexandre Courbot <acourbot@chromium.org>
Update links still pointing to master, update to point to HEAD
BUG=b:224796805
TEST=navigate to updated link and/or N/A
Change-Id: I1777c32e4e455cfeb95cf82c944d1adbca350767
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3525743
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
Commit-Queue: Keiichi Watanabe <keiichiw@chromium.org>
Use https://github.com/Michael-F-Bryan/mdbook-linkcheck to check broken
links. Since this is added as a target in book.toml, the check will run
while `mdbook build`.
BUG=none
TEST=Run `mdbook build`
Change-Id: I7615953f9428c2f8a7a4ec456bb6ae92ede55c68
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3423291
Reviewed-by: Dennis Kempin <denniskempin@google.com>
Reviewed-by: Alexandre Courbot <acourbot@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Commit-Queue: Keiichi Watanabe <keiichiw@chromium.org>
* Remove leading `$`s so that readers can copy and pastes commands more
easily.
* Use `sh` instead of `bash` because `bash` is for scripts rather than
command line interfaces.
These rules are ones used in mdBook's instruction.
https://github.com/rust-lang/mdBook/tree/master/guide/src/guide
BUG=none
TEST=mdbook build
Change-Id: I3b35fa2c7b20ef10e3da78a47f41a1603744daf0
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3423292
Reviewed-by: Dennis Kempin <denniskempin@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>
Commit-Queue: Keiichi Watanabe <keiichiw@chromium.org>
Auto-Submit: Keiichi Watanabe <keiichiw@chromium.org>
At nearly 4k loc its harder to maintain. This change only moves some
things around without changing any code. Input on symbol visibility is
welcome - in reality it doesn't really matter if symb is
pub/pub(super)/pub(crate) as mods themselves are private to linux mod.
I plan to invest more into splitting things apart if possible
(especially the main loop) but its a start
TEST=./tools/presubmit
BUG=n/a
Change-Id: I2792dd0acdb5627f1c9b5d0fb998c976c6fe5e15
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3422266
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Noah Gold <nkgold@google.com>
Reviewed-by: Anton Romanov <romanton@google.com>
Commit-Queue: Anton Romanov <romanton@google.com>
Auto-Submit: Anton Romanov <romanton@google.com>
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>
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>