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() {