mirror of
https://chromium.googlesource.com/crosvm/crosvm
synced 2025-02-05 18:20:34 +00:00
401340ee7f
This patch adds support for creating udmabufs via a guest provided sg-list. Ideally, we'd create the udmabuf from a virtio-gpu guest dedicated heap, but that needs further investigation. In terms of the protocol, these following prototype items are added: BLOB_CREATE_GUEST_HANDLE: "create an udmabuf" or an OS-specific equivalent. This can be used with the guest dedicated heap or system memory. Right now, only system memory is used. We also want to associate the udmabuf with any host side metadata. For example, SET_SCANOUT_BLOB doesn't passthrough the modifiers since virtio-gpu KMS + modifiers is annoying. Simple solution: just ask the host for the modifier. This could also enable different caching types if the guest blob is mappable (for example, the MSM GPU driver currently only supports WC mappings. We might also want cached mappings for camera). Incidentals: * Add a placeholder for RESOURCE_SYNC BUG=chromium:892806, b:173630595 TEST=create a bunch of udmabufs from the guest Change-Id: I4686d9f48938f10e7c265750a931d7d2d2d9611b Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/2786291 Tested-by: Gurchetan Singh <gurchetansingh@chromium.org> Reviewed-by: Zach Reizner <zachr@chromium.org> Commit-Queue: Gurchetan Singh <gurchetansingh@chromium.org>
125 lines
3.6 KiB
TOML
125 lines
3.6 KiB
TOML
[package]
|
|
name = "crosvm"
|
|
version = "0.1.0"
|
|
authors = ["The Chromium OS Authors"]
|
|
edition = "2018"
|
|
default-run = "crosvm"
|
|
|
|
[lib]
|
|
path = "src/crosvm.rs"
|
|
|
|
[[bin]]
|
|
name = "crosvm"
|
|
path = "src/main.rs"
|
|
|
|
[[bin]]
|
|
name = "crosvm-direct"
|
|
path = "src/main.rs"
|
|
required-features = [ "direct" ]
|
|
|
|
[profile.release]
|
|
panic = 'abort'
|
|
overflow-checks = true
|
|
|
|
[workspace]
|
|
members = [
|
|
"fuzz",
|
|
"qcow_utils",
|
|
"integration_tests",
|
|
"libcrosvm_control",
|
|
]
|
|
exclude = [
|
|
"assertions",
|
|
"base",
|
|
"cros_async",
|
|
"data_model",
|
|
"rand_ish",
|
|
"sync",
|
|
"sys_util",
|
|
"syscall_defines",
|
|
"tempfile",
|
|
"vm_memory",
|
|
]
|
|
|
|
[features]
|
|
default = ["audio", "gpu"]
|
|
chromeos = ["base/chromeos"]
|
|
default-no-sandbox = []
|
|
direct = ["devices/direct"]
|
|
audio = ["devices/audio"]
|
|
gpu = ["devices/gpu"]
|
|
plugin = ["protos/plugin", "crosvm_plugin", "kvm", "kvm_sys", "protobuf"]
|
|
power-monitor-powerd = ["arch/power-monitor-powerd"]
|
|
tpm = ["devices/tpm"]
|
|
video-decoder = ["devices/video-decoder"]
|
|
video-encoder = ["devices/video-encoder"]
|
|
wl-dmabuf = ["devices/minigbm"]
|
|
x = ["devices/x"]
|
|
virgl_renderer_next = ["rutabaga_gfx/virgl_renderer_next"]
|
|
composite-disk = ["protos/composite-disk", "protobuf", "disk/composite-disk"]
|
|
virgl_renderer = ["devices/virgl_renderer"]
|
|
gfxstream = ["devices/gfxstream"]
|
|
gdb = ["gdbstub", "thiserror", "arch/gdb", "vm_control/gdb", "x86_64/gdb"]
|
|
|
|
[dependencies]
|
|
arch = { path = "arch" }
|
|
assertions = { path = "assertions" }
|
|
audio_streams = "*"
|
|
base = "*"
|
|
bit_field = { path = "bit_field" }
|
|
crosvm_plugin = { path = "crosvm_plugin", optional = true }
|
|
data_model = "*"
|
|
devices = { path = "devices" }
|
|
disk = { path = "disk" }
|
|
enumn = { path = "enumn" }
|
|
gdbstub = { version = "0.4.0", optional = true }
|
|
rutabaga_gfx = { path = "rutabaga_gfx"}
|
|
hypervisor = { path = "hypervisor" }
|
|
kernel_cmdline = { path = "kernel_cmdline" }
|
|
kernel_loader = { path = "kernel_loader" }
|
|
kvm = { path = "kvm", optional = true }
|
|
kvm_sys = { path = "kvm_sys", optional = true }
|
|
libc = "0.2.65"
|
|
libcras = "*"
|
|
minijail = "*" # provided by ebuild
|
|
net_util = { path = "net_util" }
|
|
p9 = "*"
|
|
protobuf = { version = "2.3", optional = true }
|
|
protos = { path = "protos", optional = true }
|
|
rand_ish = { path = "rand_ish" }
|
|
remain = "*"
|
|
resources = { path = "resources" }
|
|
sync = { path = "sync" }
|
|
tempfile = "*"
|
|
thiserror = { version = "1.0.20", optional = true }
|
|
vhost = { path = "vhost" }
|
|
vm_control = { path = "vm_control" }
|
|
acpi_tables = { path = "acpi_tables" }
|
|
vm_memory = { path = "vm_memory" }
|
|
|
|
[target.'cfg(target_arch = "x86_64")'.dependencies]
|
|
x86_64 = { path = "x86_64" }
|
|
|
|
[target.'cfg(any(target_arch = "aarch64", target_arch = "arm"))'.dependencies]
|
|
aarch64 = { path = "aarch64" }
|
|
|
|
[dev-dependencies]
|
|
base = "*"
|
|
|
|
[patch.crates-io]
|
|
assertions = { path = "assertions" }
|
|
audio_streams = { path = "../../third_party/adhd/audio_streams" } # ignored by ebuild
|
|
base = { path = "base" }
|
|
cros_fuzz = { path = "../../platform2/cros-fuzz" } # ignored by ebuild
|
|
data_model = { path = "data_model" }
|
|
libcras = { path = "../../third_party/adhd/cras/client/libcras" } # ignored by ebuild
|
|
libchromeos = { path = "../../platform2/libchromeos-rs" } # ignored by ebuild
|
|
libvda = { path = "../../platform2/arc/vm/libvda/rust" } # ignored by ebuild
|
|
minijail = { path = "../../aosp/external/minijail/rust/minijail" } # ignored by ebuild
|
|
p9 = { path = "../../platform2/vm_tools/p9" } # ignored by ebuild
|
|
sync = { path = "sync" }
|
|
syscall_defines = { path = "syscall_defines" }
|
|
sys_util = { path = "sys_util" }
|
|
tempfile = { path = "tempfile" }
|
|
vmm_vhost = { path = "../../third_party/rust-vmm/vhost", features = ["vhost-user-master"] } # ignored by ebuild
|
|
wire_format_derive = { path = "../../platform2/vm_tools/p9/wire_format_derive" } # ignored by ebuild
|