summary refs log tree commit diff
path: root/vm_control
diff options
context:
space:
mode:
authorJingkui Wang <jkwang@google.com>2019-03-08 20:41:57 -0800
committerchrome-bot <chrome-bot@chromium.org>2019-03-17 21:33:08 -0700
commit100e6e48ad292406fb6f0a7eeb85465850bc28c7 (patch)
tree30f59fcb07b7cbee649a07390cd2397cfb65c463 /vm_control
parentc324429b467d530fbeadef1fc9b527bb23ce1632 (diff)
downloadcrosvm-100e6e48ad292406fb6f0a7eeb85465850bc28c7.tar
crosvm-100e6e48ad292406fb6f0a7eeb85465850bc28c7.tar.gz
crosvm-100e6e48ad292406fb6f0a7eeb85465850bc28c7.tar.bz2
crosvm-100e6e48ad292406fb6f0a7eeb85465850bc28c7.tar.lz
crosvm-100e6e48ad292406fb6f0a7eeb85465850bc28c7.tar.xz
crosvm-100e6e48ad292406fb6f0a7eeb85465850bc28c7.tar.zst
crosvm-100e6e48ad292406fb6f0a7eeb85465850bc28c7.zip
implement xhci and add it to pci bus
Implement xhci controller, setup seccomp filters and add xhci to pci
bus.

CQ-DEPEND=CL:1512761
BUG=chromium:831850
TEST=local build
Change-Id: I5c05452ece66e99d3a670e259e095fca616e835d
Reviewed-on: https://chromium-review.googlesource.com/1512762
Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Tested-by: Jingkui Wang <jkwang@google.com>
Reviewed-by: Jingkui Wang <jkwang@google.com>
Diffstat (limited to 'vm_control')
-rw-r--r--vm_control/src/lib.rs15
1 files changed, 13 insertions, 2 deletions
diff --git a/vm_control/src/lib.rs b/vm_control/src/lib.rs
index ee24b61..c6115ad 100644
--- a/vm_control/src/lib.rs
+++ b/vm_control/src/lib.rs
@@ -220,6 +220,7 @@ impl VmRequest {
         run_mode: &mut Option<VmRunMode>,
         balloon_host_socket: &UnixSeqpacket,
         disk_host_sockets: &[MsgSocket<VmRequest, VmResponse>],
+        usb_control_socket: &UsbControlSocket,
     ) -> VmResponse {
         match *self {
             VmRequest::Exit => {
@@ -316,8 +317,18 @@ impl VmRequest {
                 }
             }
             VmRequest::UsbCommand(ref cmd) => {
-                error!("not implemented yet");
-                VmResponse::Ok
+                let res = usb_control_socket.send(cmd);
+                if let Err(e) = res {
+                    error!("fail to send command to usb control socket: {}", e);
+                    return VmResponse::Err(SysError::new(EIO));
+                }
+                match usb_control_socket.recv() {
+                    Ok(response) => VmResponse::UsbResponse(response),
+                    Err(e) => {
+                        error!("fail to recv command from usb control socket: {}", e);
+                        return VmResponse::Err(SysError::new(EIO));
+                    }
+                }
             }
         }
     }