summary refs log tree commit diff
diff options
context:
space:
mode:
authorDavid Riley <davidriley@chromium.org>2019-01-28 16:59:18 -0800
committerchrome-bot <chrome-bot@chromium.org>2019-01-31 18:18:44 -0800
commitfccfc05f672cf746ea309d0b220ea9ceeac1f758 (patch)
treed154ab1c16be88f281e828d4dd92582fecfaffb4
parentcc86d7d723f241e7982f95940b0e3d152561ada0 (diff)
downloadcrosvm-fccfc05f672cf746ea309d0b220ea9ceeac1f758.tar
crosvm-fccfc05f672cf746ea309d0b220ea9ceeac1f758.tar.gz
crosvm-fccfc05f672cf746ea309d0b220ea9ceeac1f758.tar.bz2
crosvm-fccfc05f672cf746ea309d0b220ea9ceeac1f758.tar.lz
crosvm-fccfc05f672cf746ea309d0b220ea9ceeac1f758.tar.xz
crosvm-fccfc05f672cf746ea309d0b220ea9ceeac1f758.tar.zst
crosvm-fccfc05f672cf746ea309d0b220ea9ceeac1f758.zip
devices: gpu: dup stdout to stderr to allow virglrenderer logging
By default virglrenderer logs to stderr with VREND_DEBUG.  dup stdout
which is logged via logger to stderr so that virglrenderer logs can be
seen.

BUG=chromium:925590
TEST=cat /var/log/messages

Change-Id: I3e1a5056dab9cfd895867b1835b421b144ee536b
Reviewed-on: https://chromium-review.googlesource.com/1441352
Commit-Ready: David Riley <davidriley@chromium.org>
Tested-by: David Riley <davidriley@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Zach Reizner <zachr@chromium.org>
-rw-r--r--devices/src/virtio/gpu/mod.rs9
-rw-r--r--seccomp/x86_64/gpu_device.policy1
2 files changed, 9 insertions, 1 deletions
diff --git a/devices/src/virtio/gpu/mod.rs b/devices/src/virtio/gpu/mod.rs
index 16a9bc3..8da15f5 100644
--- a/devices/src/virtio/gpu/mod.rs
+++ b/devices/src/virtio/gpu/mod.rs
@@ -23,7 +23,7 @@ use std::time::Duration;
 
 use data_model::*;
 
-use sys_util::{EventFd, GuestAddress, GuestMemory, PollContext, PollToken};
+use sys_util::{Error, EventFd, GuestAddress, GuestMemory, PollContext, PollToken};
 
 use self::gpu_buffer::Device;
 use self::gpu_display::*;
@@ -772,6 +772,13 @@ impl VirtioDevice for Gpu {
                         }
                     };
 
+                    if cfg!(debug_assertions) {
+                        let ret = unsafe { libc::dup2(libc::STDOUT_FILENO, libc::STDERR_FILENO) };
+                        if ret == -1 {
+                            warn!("unable to dup2 stdout to stderr: {}", Error::last());
+                        }
+                    }
+
                     let renderer = match Renderer::init() {
                         Ok(r) => r,
                         Err(e) => {
diff --git a/seccomp/x86_64/gpu_device.policy b/seccomp/x86_64/gpu_device.policy
index a5a37ba..8e184fb 100644
--- a/seccomp/x86_64/gpu_device.policy
+++ b/seccomp/x86_64/gpu_device.policy
@@ -59,3 +59,4 @@ fcntl: arg1 == F_DUPFD_CLOEXEC
 lstat: 1
 # Allow PR_SET_NAME only.
 prctl: arg0 == 15
+dup2: 1