diff --git a/libs/avb/Android.bp b/libs/avb/Android.bp
deleted file mode 100644
index a2d9e1a..0000000
--- a/libs/avb/Android.bp
+++ /dev/null
@@ -1,55 +0,0 @@
-package {
-    default_applicable_licenses: ["Android-Apache-2.0"],
-}
-
-rust_defaults {
-    name: "libavb_bindgen.defaults",
-    wrapper_src: "bindgen/avb.h",
-    crate_name: "avb_bindgen",
-    edition: "2021",
-    visibility: ["//packages/modules/Virtualization:__subpackages__"],
-    source_stem: "bindings",
-    bindgen_flags: [
-        "--constified-enum-module AvbDescriptorTag",
-        "--default-enum-style rust",
-        "--allowlist-type=AvbDescriptorTag",
-        "--allowlist-function=.*",
-        "--allowlist-var=AVB.*",
-        "--use-core",
-        "--raw-line=#![no_std]",
-        "--ctypes-prefix=core::ffi",
-    ],
-    cflags: ["-DBORINGSSL_NO_CXX"],
-}
-
-rust_bindgen {
-    name: "libavb_bindgen",
-    defaults: ["libavb_bindgen.defaults"],
-    host_supported: true,
-    static_libs: [
-        "libavb",
-    ],
-    shared_libs: [
-        "libcrypto",
-    ],
-}
-
-rust_bindgen {
-    name: "libavb_bindgen_nostd",
-    defaults: ["libavb_bindgen.defaults"],
-    static_libs: [
-        "libavb_baremetal",
-        "libcrypto_baremetal",
-    ],
-}
-
-rust_test {
-    name: "libavb_bindgen_test",
-    srcs: [":libavb_bindgen"],
-    crate_name: "avb_bindgen_test",
-    edition: "2021",
-    test_suites: ["general-tests"],
-    auto_gen_config: true,
-    clippy_lints: "none",
-    lints: "none",
-}
diff --git a/libs/avb/TEST_MAPPING b/libs/avb/TEST_MAPPING
deleted file mode 100644
index 57de6b3..0000000
--- a/libs/avb/TEST_MAPPING
+++ /dev/null
@@ -1,9 +0,0 @@
-// When adding or removing tests here, don't forget to amend _all_modules list in
-// wireless/android/busytown/ath_config/configs/prod/avf/tests.gcl
-{
-  "avf-presubmit" : [
-    {
-      "name" : "libavb_bindgen_test"
-    }
-  ]
-}
diff --git a/libs/avb/bindgen/avb.h b/libs/avb/bindgen/avb.h
deleted file mode 100644
index b3d5385..0000000
--- a/libs/avb/bindgen/avb.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#pragma once
-
-#include <libavb/libavb.h>
diff --git a/microdroid_manager/src/main.rs b/microdroid_manager/src/main.rs
index a48d540..5a5b34a 100644
--- a/microdroid_manager/src/main.rs
+++ b/microdroid_manager/src/main.rs
@@ -341,7 +341,9 @@
     let mut file = match File::open(path) {
         Ok(dp) => dp,
         Err(e) => {
-            info!("{e:?}. Assumes <0>");
+            info!(
+                "Assumes that debug policy is disabled because failed to read debug policy ({e:?})"
+            );
             return Ok(Some(false));
         }
     };
diff --git a/rialto/Android.bp b/rialto/Android.bp
index 33c24eb..55423ea 100644
--- a/rialto/Android.bp
+++ b/rialto/Android.bp
@@ -16,6 +16,7 @@
         "liblibfdt",
         "liblog_rust_nostd",
         "libservice_vm_comm_nostd",
+        "libtinyvec_nostd",
         "libvirtio_drivers",
         "libvmbase",
     ],
diff --git a/rialto/src/communication.rs b/rialto/src/communication.rs
index 858ccfb..ee4ecdb 100644
--- a/rialto/src/communication.rs
+++ b/rialto/src/communication.rs
@@ -17,9 +17,11 @@
 use crate::error::Result;
 use ciborium_io::{Read, Write};
 use core::hint::spin_loop;
+use core::mem;
 use core::result;
 use log::info;
 use service_vm_comm::{Request, Response};
+use tinyvec::ArrayVec;
 use virtio_drivers::{
     self,
     device::socket::{
@@ -29,10 +31,13 @@
     Hal,
 };
 
+const WRITE_BUF_CAPACITY: usize = 512;
+
 pub struct VsockStream<H: Hal, T: Transport> {
     connection_manager: VsockConnectionManager<H, T>,
     /// Peer address. The same port is used on rialto and peer for convenience.
     peer_addr: VsockAddr,
+    write_buf: ArrayVec<[u8; WRITE_BUF_CAPACITY]>,
 }
 
 impl<H: Hal, T: Transport> VsockStream<H, T> {
@@ -43,6 +48,7 @@
         let mut vsock_stream = Self {
             connection_manager: VsockConnectionManager::new(socket_device_driver),
             peer_addr,
+            write_buf: ArrayVec::default(),
         };
         vsock_stream.connect()?;
         Ok(vsock_stream)
@@ -176,12 +182,25 @@
     type Error = virtio_drivers::Error;
 
     fn write_all(&mut self, data: &[u8]) -> result::Result<(), Self::Error> {
-        self.wait_for_send(data)
+        if data.len() >= self.write_buf.capacity() - self.write_buf.len() {
+            self.flush()?;
+            if data.len() >= self.write_buf.capacity() {
+                self.wait_for_send(data)?;
+                return Ok(());
+            }
+        }
+        self.write_buf.extend_from_slice(data);
+        Ok(())
     }
 
     fn flush(&mut self) -> result::Result<(), Self::Error> {
-        // TODO(b/293411448): Optimize the data sending by saving the data to write
-        // in a local buffer and then flushing only when the buffer is full.
+        if !self.write_buf.is_empty() {
+            // We need to take the memory from self.write_buf to a temporary
+            // buffer to avoid borrowing `*self` as mutable and immutable on
+            // the same time in `self.wait_for_send(&self.write_buf)`.
+            let buffer = mem::take(&mut self.write_buf);
+            self.wait_for_send(&buffer)?;
+        }
         Ok(())
     }
 }
diff --git a/rialto/src/main.rs b/rialto/src/main.rs
index a8338ca..42d39c4 100644
--- a/rialto/src/main.rs
+++ b/rialto/src/main.rs
@@ -26,6 +26,7 @@
 
 use crate::communication::VsockStream;
 use crate::error::{Error, Result};
+use ciborium_io::Write;
 use core::num::NonZeroUsize;
 use core::slice;
 use fdtpci::PciInfo;
@@ -141,6 +142,7 @@
     let mut vsock_stream = VsockStream::new(socket_device, host_addr())?;
     let response = requests::process_request(vsock_stream.read_request()?);
     vsock_stream.write_response(&response)?;
+    vsock_stream.flush()?;
     vsock_stream.shutdown()?;
 
     Ok(())
