summary refs log tree commit diff
path: root/src/linux.rs
diff options
context:
space:
mode:
authorDylan Reid <dgreid@chromium.org>2017-12-06 18:20:09 -0800
committerchrome-bot <chrome-bot@chromium.org>2018-01-02 23:36:26 -0800
commitd44320488fd2db344b6b1fd156c22fdf90b82fe2 (patch)
tree1ee593b0efa66a7f5dff11f47df98bc307598fd6 /src/linux.rs
parent4aa86930edecf6b7842b9403dbea153ba8101e00 (diff)
downloadcrosvm-d44320488fd2db344b6b1fd156c22fdf90b82fe2.tar
crosvm-d44320488fd2db344b6b1fd156c22fdf90b82fe2.tar.gz
crosvm-d44320488fd2db344b6b1fd156c22fdf90b82fe2.tar.bz2
crosvm-d44320488fd2db344b6b1fd156c22fdf90b82fe2.tar.lz
crosvm-d44320488fd2db344b6b1fd156c22fdf90b82fe2.tar.xz
crosvm-d44320488fd2db344b6b1fd156c22fdf90b82fe2.tar.zst
crosvm-d44320488fd2db344b6b1fd156c22fdf90b82fe2.zip
main: Add inflate/deflate interface for balloon
Change-Id: I0fc63abbed8db303c7d283ce392fd47777b60d19
Reviewed-on: https://chromium-review.googlesource.com/818207
Commit-Ready: Dylan Reid <dgreid@chromium.org>
Tested-by: Dylan Reid <dgreid@chromium.org>
Reviewed-by: Zach Reizner <zachr@chromium.org>
Diffstat (limited to 'src/linux.rs')
-rw-r--r--src/linux.rs20
1 files changed, 13 insertions, 7 deletions
diff --git a/src/linux.rs b/src/linux.rs
index c57f6b3..c5c7001 100644
--- a/src/linux.rs
+++ b/src/linux.rs
@@ -253,7 +253,7 @@ pub fn run_config(cfg: Config) -> Result<()> {
     device_manager.register_mmio(rng_box, rng_jail, &mut cmdline)
         .map_err(Error::RegisterRng)?;
 
-    let (_, balloon_device_socket) = UnixDatagram::pair().map_err(Error::Socket)?;
+    let (balloon_host_socket, balloon_device_socket) = UnixDatagram::pair().map_err(Error::Socket)?;
     let balloon_box = Box::new(devices::virtio::Balloon::new(balloon_device_socket)
                                    .map_err(Error::BalloonDeviceNew)?);
     let balloon_jail = if cfg.multiprocess {
@@ -387,7 +387,8 @@ pub fn run_config(cfg: Config) -> Result<()> {
             cfg.vcpu_count.unwrap_or(1),
             guest_mem,
             &device_manager.bus,
-            control_sockets)
+            control_sockets,
+            balloon_host_socket)
 }
 
 fn run_kvm(requests: Vec<VmRequest>,
@@ -396,7 +397,8 @@ fn run_kvm(requests: Vec<VmRequest>,
            vcpu_count: u32,
            guest_mem: GuestMemory,
            mmio_bus: &devices::Bus,
-           control_sockets: Vec<UnlinkUnixDatagram>)
+           control_sockets: Vec<UnlinkUnixDatagram>,
+           balloon_host_socket: UnixDatagram)
            -> Result<()> {
     let kvm = Kvm::new().map_err(Error::Kvm)?;
     let kernel_start_addr = GuestAddress(KERNEL_START_OFFSET);
@@ -414,7 +416,8 @@ fn run_kvm(requests: Vec<VmRequest>,
     let mut next_dev_pfn = BASE_DEV_MEMORY_PFN;
     for request in requests {
         let mut running = false;
-        if let VmResponse::Err(e) = request.execute(&mut vm, &mut next_dev_pfn, &mut running) {
+        if let VmResponse::Err(e) = request.execute(&mut vm, &mut next_dev_pfn,
+                                                    &mut running, &balloon_host_socket) {
             return Err(Error::Vm(e));
         }
         if !running {
@@ -573,7 +576,8 @@ fn run_kvm(requests: Vec<VmRequest>,
                 exit_evt,
                 sigchld_fd,
                 kill_signaled,
-                vcpu_handles)
+                vcpu_handles,
+                balloon_host_socket)
 }
 
 fn run_control(mut vm: Vm,
@@ -583,7 +587,8 @@ fn run_control(mut vm: Vm,
                exit_evt: EventFd,
                sigchld_fd: SignalFd,
                kill_signaled: Arc<AtomicBool>,
-               vcpu_handles: Vec<JoinHandle<()>>)
+               vcpu_handles: Vec<JoinHandle<()>>,
+               balloon_host_socket: UnixDatagram)
                -> Result<()> {
     const MAX_VM_FD_RECV: usize = 1;
 
@@ -665,7 +670,8 @@ fn run_control(mut vm: Vm,
                         Ok(request) => {
                             let mut running = true;
                             let response =
-                                request.execute(&mut vm, &mut next_dev_pfn, &mut running);
+                                request.execute(&mut vm, &mut next_dev_pfn,
+                                                &mut running, &balloon_host_socket);
                             if let Err(e) = response.send(&mut scm, socket.as_ref()) {
                                 error!("failed to send VmResponse: {:?}", e);
                             }