diff options
author | David Riley <davidriley@chromium.org> | 2019-01-28 11:25:10 -0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2019-01-30 01:25:56 -0800 |
commit | d48445eae05629371e25409fede29fcaf3fe5631 (patch) | |
tree | 8f6ee9ff17000ced9fa2a378f94150cc8e6c56f7 | |
parent | f7797d15b492046df49670c166b175fa28e7ed8b (diff) | |
download | crosvm-d48445eae05629371e25409fede29fcaf3fe5631.tar crosvm-d48445eae05629371e25409fede29fcaf3fe5631.tar.gz crosvm-d48445eae05629371e25409fede29fcaf3fe5631.tar.bz2 crosvm-d48445eae05629371e25409fede29fcaf3fe5631.tar.lz crosvm-d48445eae05629371e25409fede29fcaf3fe5631.tar.xz crosvm-d48445eae05629371e25409fede29fcaf3fe5631.tar.zst crosvm-d48445eae05629371e25409fede29fcaf3fe5631.zip |
devices: gpu: name gpu thread
BUG=chromium:925590 TEST=pstree Change-Id: I2f591894db2a40a812f1720e1fc8422049d85902 Reviewed-on: https://chromium-review.googlesource.com/1440031 Commit-Ready: David Riley <davidriley@chromium.org> Tested-by: David Riley <davidriley@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Reviewed-by: David Riley <davidriley@chromium.org>
-rw-r--r-- | devices/src/virtio/gpu/mod.rs | 102 | ||||
-rw-r--r-- | seccomp/x86_64/gpu_device.policy | 2 |
2 files changed, 57 insertions, 47 deletions
diff --git a/devices/src/virtio/gpu/mod.rs b/devices/src/virtio/gpu/mod.rs index 6974e08..43681b3 100644 --- a/devices/src/virtio/gpu/mod.rs +++ b/devices/src/virtio/gpu/mod.rs @@ -18,7 +18,7 @@ use std::path::{Path, PathBuf}; use std::rc::Rc; use std::sync::atomic::{AtomicUsize, Ordering}; use std::sync::Arc; -use std::thread::spawn; +use std::thread; use std::time::Duration; use data_model::*; @@ -737,55 +737,63 @@ impl VirtioDevice for Gpu { let cursor_queue = queues.remove(0); let cursor_evt = queue_evts.remove(0); let socket_path = self.wayland_socket_path.clone(); - spawn(move || { - const UNDESIRED_CARDS: &[&str] = &["vgem", "pvr"]; - let drm_card = match gpu_buffer::rendernode::open_device(UNDESIRED_CARDS) { - Ok(f) => f, - Err(e) => { - error!("failed to open card: {:?}", e); - return; - } - }; + let worker_result = + thread::Builder::new() + .name("virtio_gpu".to_string()) + .spawn(move || { + const UNDESIRED_CARDS: &[&str] = &["vgem", "pvr"]; + let drm_card = match gpu_buffer::rendernode::open_device(UNDESIRED_CARDS) { + Ok(f) => f, + Err(e) => { + error!("failed to open card: {:?}", e); + return; + } + }; - let device = match Device::new(drm_card) { - Ok(d) => d, - Err(()) => { - error!("failed to open device"); - return; - } - }; + let device = match Device::new(drm_card) { + Ok(d) => d, + Err(()) => { + error!("failed to open device"); + return; + } + }; - let display = match GpuDisplay::new(socket_path) { - Ok(c) => c, - Err(e) => { - error!("failed to open display: {:?}", e); - return; - } - }; + let display = match GpuDisplay::new(socket_path) { + Ok(c) => c, + Err(e) => { + error!("failed to open display: {:?}", e); + return; + } + }; - let renderer = match Renderer::init() { - Ok(r) => r, - Err(e) => { - error!("failed to initialize gpu renderer: {}", e); - return; - } - }; + let renderer = match Renderer::init() { + Ok(r) => r, + Err(e) => { + error!("failed to initialize gpu renderer: {}", e); + return; + } + }; + + Worker { + exit_evt, + mem, + interrupt_evt, + interrupt_resample_evt, + interrupt_status, + ctrl_queue, + ctrl_evt, + cursor_queue, + cursor_evt, + resource_bridge, + kill_evt, + state: Frontend::new(Backend::new(device, display, renderer)), + } + .run() + }); - Worker { - exit_evt, - mem, - interrupt_evt, - interrupt_resample_evt, - interrupt_status, - ctrl_queue, - ctrl_evt, - cursor_queue, - cursor_evt, - resource_bridge, - kill_evt, - state: Frontend::new(Backend::new(device, display, renderer)), - } - .run() - }); + if let Err(e) = worker_result { + error!("failed to spawn virtio_gpu worker: {}", e); + return; + } } } diff --git a/seccomp/x86_64/gpu_device.policy b/seccomp/x86_64/gpu_device.policy index 60b2d33..a5a37ba 100644 --- a/seccomp/x86_64/gpu_device.policy +++ b/seccomp/x86_64/gpu_device.policy @@ -57,3 +57,5 @@ memfd_create: arg1 == 3 ftruncate: 1 fcntl: arg1 == F_DUPFD_CLOEXEC lstat: 1 +# Allow PR_SET_NAME only. +prctl: arg0 == 15 |