devices: virtio: fs: Avoid allocating shared memory on ARM
Avoid allocating shared memory on ARM where DAX is unsupported.
BUG=b:147341783
TEST=tast run <kukui> vm.Virtiofs
Change-Id: I347acc2243ed08ac25c4a83309e6d2957dd473ab
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/2599565
Tested-by: Keiichi Watanabe <keiichiw@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Chirantan Ekbote <chirantan@chromium.org>
Commit-Queue: Keiichi Watanabe <keiichiw@chromium.org>
diff --git a/devices/src/virtio/fs/mod.rs b/devices/src/virtio/fs/mod.rs
index a7a3deb..7ec90cb 100644
--- a/devices/src/virtio/fs/mod.rs
+++ b/devices/src/virtio/fs/mod.rs
@@ -241,22 +241,28 @@
let server = Arc::new(Server::new(fs));
let irq = Arc::new(interrupt);
let socket = self.socket.take().expect("missing mapping socket");
+ let mut slot = 0;
- // Create the shared memory region now before we start processing requests.
- let request = FsMappingRequest::AllocateSharedMemoryRegion(
- self.pci_bar.as_ref().cloned().expect("No pci_bar"),
- );
- socket
- .send(&request)
- .expect("failed to send allocation message");
- let slot = match socket.recv() {
- Ok(VmResponse::RegisterMemory { pfn: _, slot }) => slot,
- Ok(VmResponse::Err(e)) => panic!("failed to allocate shared memory region: {}", e),
- r => panic!(
- "unexpected response to allocate shared memory region: {:?}",
- r
- ),
- };
+ // Set up shared memory for DAX.
+ // TODO(b/176129399): Remove cfg! once DAX is supported on ARM.
+ if cfg!(any(target_arch = "x86", target_arch = "x86_64")) {
+ // Create the shared memory region now before we start processing requests.
+ let request = FsMappingRequest::AllocateSharedMemoryRegion(
+ self.pci_bar.as_ref().cloned().expect("No pci_bar"),
+ );
+ socket
+ .send(&request)
+ .expect("failed to send allocation message");
+ slot = match socket.recv() {
+ Ok(VmResponse::RegisterMemory { pfn: _, slot }) => slot,
+ Ok(VmResponse::Err(e)) => panic!("failed to allocate shared memory region: {}", e),
+ r => panic!(
+ "unexpected response to allocate shared memory region: {:?}",
+ r
+ ),
+ };
+ }
+
let socket = Arc::new(Mutex::new(socket));
let mut watch_resample_event = true;
for (idx, (queue, evt)) in queues.into_iter().zip(queue_evts.into_iter()).enumerate() {