summary refs log tree commit diff
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2020-03-13 23:32:33 +0000
committerAlyssa Ross <hi@alyssa.is>2020-06-15 09:36:42 +0000
commit812263927a9fbcca6cf94563685efa310a734dbe (patch)
tree9c5b058963c284ef532061f09bce565f32294548
parent23dd7efca023fcb3c1e90486a48c1cb24f7f9951 (diff)
downloadcrosvm-812263927a9fbcca6cf94563685efa310a734dbe.tar
crosvm-812263927a9fbcca6cf94563685efa310a734dbe.tar.gz
crosvm-812263927a9fbcca6cf94563685efa310a734dbe.tar.bz2
crosvm-812263927a9fbcca6cf94563685efa310a734dbe.tar.lz
crosvm-812263927a9fbcca6cf94563685efa310a734dbe.tar.xz
crosvm-812263927a9fbcca6cf94563685efa310a734dbe.tar.zst
crosvm-812263927a9fbcca6cf94563685efa310a734dbe.zip
ack_features
-rw-r--r--devices/src/virtio/controller.rs12
-rw-r--r--src/wl.rs2
2 files changed, 8 insertions, 6 deletions
diff --git a/devices/src/virtio/controller.rs b/devices/src/virtio/controller.rs
index 04cde10..374d11c 100644
--- a/devices/src/virtio/controller.rs
+++ b/devices/src/virtio/controller.rs
@@ -52,6 +52,9 @@ pub enum MsgOnSocketRequest {
         // resource_bridge: Option<ResourceRequestSocket>,
         memory_params: MemoryParams,
     },
+
+    AckFeatures(u64),
+
     Activate {
         shm: MaybeOwnedFd<SharedMemory>,
         interrupt: MaybeOwnedFd<UnixSeqpacket>,
@@ -61,6 +64,7 @@ pub enum MsgOnSocketRequest {
         in_queue_evt: MaybeOwnedFd<EventFd>,
         out_queue_evt: MaybeOwnedFd<EventFd>,
     },
+
     Kill,
 }
 
@@ -217,7 +221,6 @@ impl Worker {
 pub struct Controller {
     kill_evt: Option<EventFd>,
     worker_thread: Option<thread::JoinHandle<()>>,
-    use_transition_flags: bool,
     socket: Arc<Socket>,
 }
 
@@ -239,7 +242,6 @@ impl Controller {
         Ok(Controller {
             kill_evt: None,
             worker_thread: None,
-            use_transition_flags: false,
             socket: Arc::new(socket),
         })
     }
@@ -284,8 +286,8 @@ impl VirtioDevice for Controller {
     }
 
     fn ack_features(&mut self, value: u64) {
-        if value & (1 << VIRTIO_WL_F_TRANS_FLAGS) != 0 {
-            self.use_transition_flags = true;
+        if let Err(e) = self.socket.send(MsgOnSocketRequest::AckFeatures(value)) {
+            error!("failed to send AckFeatures: {}", e);
         }
     }
 
@@ -318,8 +320,6 @@ impl VirtioDevice for Controller {
         };
         self.kill_evt = Some(self_kill_evt);
 
-        let use_transition_flags = self.use_transition_flags;
-
         let (ours, theirs) = UnixSeqpacket::pair().expect("pair failed");
 
         if let Err(e) = self.socket.send(MsgOnSocketRequest::Activate {
diff --git a/src/wl.rs b/src/wl.rs
index 0598b4a..08d69f8 100644
--- a/src/wl.rs
+++ b/src/wl.rs
@@ -66,6 +66,8 @@ fn main() {
                 break;
             }
 
+            Ok(MsgOnSocket(MsgOnSocketRequest::AckFeatures(value))) => wl.ack_features(value),
+
             Ok(Bincode(BincodeRequest::WriteConfig { offset, ref data })) => {
                 wl.write_config(offset, data)
             }